{"version":3,"file":"ai-design.umd.cjs","sources":["../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/hooks/use-shadow.ts","../src/const/ui.ts","../../../node_modules/.pnpm/react@19.2.7/node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/.pnpm/react@19.2.7/node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/.pnpm/react@19.2.7/node_modules/react/jsx-runtime.js","../src/components/icons/calendar-icon.tsx","../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.3_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-slot@1.2.5_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/ui/button.tsx","../../../node_modules/.pnpm/@radix-ui+primitive@1.1.4/node_modules/@radix-ui/primitive/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-context@1.1.4_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-context/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-id@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-id/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.3_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.5_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.12_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-portal@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-portal/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.6_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-presence/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.4_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.17_react@19.2.7/node_modules/use-callback-ref/dist/es2015/assignRef.js","../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.17_react@19.2.7/node_modules/use-callback-ref/dist/es2015/useRef.js","../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.17_react@19.2.7/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.2.17_react@19.2.7/node_modules/use-sidecar/dist/es2015/medium.js","../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.2.17_react@19.2.7/node_modules/use-sidecar/dist/es2015/exports.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/medium.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/UI.js","../../../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.17_react@19.2.7/node_modules/react-style-singleton/dist/es2015/singleton.js","../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.17_react@19.2.7/node_modules/react-style-singleton/dist/es2015/hook.js","../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.17_react@19.2.7/node_modules/react-style-singleton/dist/es2015/component.js","../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.17_react@19.2.7/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js","../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.16_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-dialog/dist/index.mjs","../src/components/ui/dialog.tsx","../../../node_modules/.pnpm/vaul@1.1.2_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/vaul/dist/index.mjs","../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/.pnpm/@floating-ui+react-dom@2.1.6_react-dom@19.2.7_react@19.2.7/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../node_modules/.pnpm/@radix-ui+react-arrow@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-use-size@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-size/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-popper@1.3.0_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-popper/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.5_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.2.9_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/ui/tooltip.tsx","../src/components/tooltip.tsx","../src/components/icon-btn.tsx","../src/components/bs-icons.tsx","../src/components/ui/drawer.tsx","../../../node_modules/.pnpm/@radix-ui+react-popover@1.1.16_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/ui/popover.tsx","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/shared/src/utils.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/check.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-right.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevrons-left.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/chevrons-right.js","../../../node_modules/.pnpm/lucide-react@0.554.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/loader-circle.js","../src/components/ui/spinner.tsx","../../../node_modules/.pnpm/@radix-ui+react-label@2.1.9_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-label/dist/index.mjs","../src/components/ui/label.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../../../node_modules/.pnpm/@radix-ui+number@1.1.2/node_modules/@radix-ui/number/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-collection@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-collection/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-direction@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-direction/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.2_@types+react@19.2.17_react@19.2.7/node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-select@2.3.0_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-select/dist/index.mjs","../src/components/ui/select.tsx","../../../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzName/index.js","../../../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzOffset/index.js","../../../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/date/mini.js","../../../node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/date/index.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructFrom.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/toDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addDays.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addMonths.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfDay.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addWeeks.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addYears.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/max.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/min.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameDay.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isDate.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isValid.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceInCalendarMonths.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/normalizeInterval.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachMonthOfInterval.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachYearOfInterval.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endOfISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-US.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDayOfYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getISOWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startOfWeekYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getWeek.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getDaysInMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isAfter.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isBefore.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isSameYear.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setMonth.js","../../../node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setYear.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/locale/en-US.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/classes/DateLib.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Button.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Chevron.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Day.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/DayButton.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/UI.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Dropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/DropdownNav.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Footer.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Month.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/MonthCaption.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/MonthGrid.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Months.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/useDayPicker.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Nav.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Option.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Root.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Select.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Week.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Weekday.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Weekdays.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/WeekNumber.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/Weeks.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/typeguards.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getComponents.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatDay.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelGrid.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelNav.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelNext.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getLabels.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/noonDateLib.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/useAnimation.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getDates.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getDays.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getMonths.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/useCalendar.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/useFocus.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/selection/useMulti.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/addToRange.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/selection/useRange.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/selection/useSingle.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/useSelection.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js","../../../node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.7/node_modules/react-day-picker/dist/esm/DayPicker.js","../src/components/ui/calendar.tsx","../../../node_modules/.pnpm/react-hook-form@7.76.0_react@19.2.7/node_modules/react-hook-form/dist/index.esm.mjs","../src/components/ui/form.tsx","../src/components/abs-fullscreen-gradient-bg.tsx","../src/components/agent-select.tsx","../src/components/agent-scroll-selector.tsx","../src/components/img-part.tsx","../src/components/attachment-part.tsx","../src/components/attachment-part-group.tsx","../src/components/ui/icons.tsx","../src/components/attachments-previewer.tsx","../src/components/base-button.tsx","../src/components/bs-entry-select/build-tree.ts","../src/components/agent-helper/search-input/index.tsx","../src/components/bs-entry-select/search-input.tsx","../src/components/bs-entry-select/entry-item.tsx","../src/components/bs-entry-select/tree-item-node.tsx","../src/components/bs-entry-select/scroll-slider.tsx","../src/components/bs-entry-select/app-group-folder.tsx","../src/components/bs-entry-select/other-app-section.tsx","../src/components/bs-entry-select/entry-popover.tsx","../src/components/bs-entry-select/bs-entry-select.tsx","../src/components/border-animation.tsx","../src/components/border-color-animation.tsx","../src/components/bot-icon.tsx","../src/components/bot-avatar-name.tsx","../src/components/card-field.tsx","../src/components/card.tsx","../src/components/icon-card.tsx","../src/components/agent-helper/agent-tag/index.tsx","../src/components/agent-helper/trigger-select/index.tsx","../../../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-collapsible/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-checkbox@1.3.4_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.12_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-radio-group@1.4.0_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-switch@1.3.0_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-switch/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-tabs@1.1.14_@types+react-dom@19.2.3_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7/node_modules/@radix-ui/react-tabs/dist/index.mjs","../src/components/ui/switch.tsx","../src/components/agent-helper/agent-helper-card/index.tsx","../src/components/agent-helper/agent-helper-card-list/index.tsx","../src/components/agent-helper/placeholder-card/index.tsx","../src/components/agent-helper/agent-entry-card/index.tsx","../src/components/icons/grids-icon.tsx","../src/components/agent-helper/agent-category-select-menu/index.tsx","../src/hooks/use-portal-container.ts","../../ai-feat-utils/dist/ai-feat-utils.js","../src/components/font-icon.tsx","../src/components/agent-helper/agent-sort-select/index.tsx","../src/components/agent-helper/form-select/index.tsx","../src/components/square-checker.tsx","../src/components/agent-helper/app-select/index.tsx","../src/components/check-card.tsx","../src/components/agent-helper/form-action-trigger-select/index.tsx","../src/components/agent-helper/flow-node-action-trigger-select/index.tsx","../src/components/agent-helper/trigger-time-source-type-select/index.tsx","../src/components/agent-helper/date-picker/utils.ts","../src/components/agent-helper/date-picker/calendar-panel.tsx","../src/components/agent-helper/date-picker/month-panel.tsx","../src/components/agent-helper/date-picker/year-panel.tsx","../src/components/agent-helper/date-picker/time-panel.tsx","../src/components/agent-helper/date-picker/footer-panel.tsx","../src/components/agent-helper/date-picker/date-picker.tsx","../src/components/agent-helper/date-picker/date-input.tsx","../src/components/agent-helper/field-select/index.tsx","../src/components/agent-helper/offset-type-select/index.tsx","../src/components/agent-helper/offset-unit-select/index.tsx","../src/components/agent-helper/offset-preference-select/index.tsx","../src/components/agent-helper/trigger-time-preference-select/index.tsx","../src/components/agent-helper/repeat-preference-type-select/index.tsx","../src/components/icons/clear-all-icon.tsx","../src/components/agent-helper/weekdays-select/index.tsx","../src/components/ui/tabs.tsx","../src/components/agent-helper/monthdays-select/index.tsx","../src/components/agent-helper/repeat-by-type-select/index.tsx","../src/components/agent-helper/repeat-preference-select/index.tsx","../src/components/agent-helper/form-divider/index.tsx","../src/components/agent-helper/relational-operator-select/index.tsx","../src/components/chat-area-header.tsx","../src/components/circle-checker.tsx","../src/components/radio-card.tsx","../src/components/collapsible-txt-msg.tsx","../src/components/confirm-dialog.tsx","../src/components/fields-design-info-table.tsx","../src/components/fields-generating-indicator.tsx","../src/components/message-content.tsx","../src/components/fake-bot-msg.tsx","../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/components/linear-gradient-color-bg-animation.tsx","../src/components/previewer-header.tsx","../src/components/fields-previewer.tsx","../src/components/fields-portal.tsx","../src/components/primary-confirm-btn.tsx","../src/components/form-info-editor.tsx","../../types/dist/chat/plugin/query.js","../../types/dist/chat/plugin/index.js","../src/components/formula-tag.tsx","../src/components/generate-animation.tsx","../src/components/line-checker.tsx","../src/components/legacy-slot.tsx","../src/components/linear-gradient-border-btn.tsx","../../../node_modules/.pnpm/marked@17.0.1/node_modules/marked/lib/marked.esm.js","../../../node_modules/.pnpm/devlop@1.1.0/node_modules/devlop/lib/default.js","../../../node_modules/.pnpm/comma-separated-tokens@2.0.3/node_modules/comma-separated-tokens/index.js","../../../node_modules/.pnpm/estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.js","../../../node_modules/.pnpm/hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/schema.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/merge.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/normalize.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/info.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/types.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/defined-info.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/create.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/aria.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/case-sensitive-transform.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/util/case-insensitive-transform.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/html.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/svg.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/xlink.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/xmlns.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/xml.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/hast-to-react.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/lib/find.js","../../../node_modules/.pnpm/property-information@7.1.0/node_modules/property-information/index.js","../../../node_modules/.pnpm/space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.js","../../../node_modules/.pnpm/inline-style-parser@0.2.7/node_modules/inline-style-parser/cjs/index.js","../../../node_modules/.pnpm/style-to-object@1.0.14/node_modules/style-to-object/cjs/index.js","../../../node_modules/.pnpm/style-to-js@1.1.21/node_modules/style-to-js/cjs/utilities.js","../../../node_modules/.pnpm/style-to-js@1.1.21/node_modules/style-to-js/cjs/index.js","../../../node_modules/.pnpm/unist-util-position@5.0.0/node_modules/unist-util-position/lib/index.js","../../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js","../../../node_modules/.pnpm/vfile-message@4.0.3/node_modules/vfile-message/lib/index.js","../../../node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.js","../../../node_modules/.pnpm/html-url-attributes@3.0.1/node_modules/html-url-attributes/lib/index.js","../../../node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/lib/index.js","../../../node_modules/.pnpm/decode-named-character-reference@1.3.0/node_modules/decode-named-character-reference/index.dom.js","../../../node_modules/.pnpm/micromark-util-chunked@2.0.1/node_modules/micromark-util-chunked/index.js","../../../node_modules/.pnpm/micromark-util-combine-extensions@2.0.1/node_modules/micromark-util-combine-extensions/index.js","../../../node_modules/.pnpm/micromark-util-decode-numeric-character-reference@2.0.2/node_modules/micromark-util-decode-numeric-character-reference/index.js","../../../node_modules/.pnpm/micromark-util-normalize-identifier@2.0.1/node_modules/micromark-util-normalize-identifier/index.js","../../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js","../../../node_modules/.pnpm/micromark-util-sanitize-uri@2.0.1/node_modules/micromark-util-sanitize-uri/index.js","../../../node_modules/.pnpm/micromark-factory-space@2.0.1/node_modules/micromark-factory-space/index.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/content.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/document.js","../../../node_modules/.pnpm/micromark-util-classify-character@2.0.1/node_modules/micromark-util-classify-character/index.js","../../../node_modules/.pnpm/micromark-util-resolve-all@2.0.1/node_modules/micromark-util-resolve-all/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/attention.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/autolink.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/blank-line.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/block-quote.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/character-escape.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/character-reference.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/code-fenced.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/code-indented.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/code-text.js","../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/lib/splice-buffer.js","../../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/content.js","../../../node_modules/.pnpm/micromark-factory-destination@2.0.1/node_modules/micromark-factory-destination/index.js","../../../node_modules/.pnpm/micromark-factory-label@2.0.1/node_modules/micromark-factory-label/index.js","../../../node_modules/.pnpm/micromark-factory-title@2.0.1/node_modules/micromark-factory-title/index.js","../../../node_modules/.pnpm/micromark-factory-whitespace@2.0.1/node_modules/micromark-factory-whitespace/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/definition.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/heading-atx.js","../../../node_modules/.pnpm/micromark-util-html-tag-name@2.0.1/node_modules/micromark-util-html-tag-name/index.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/html-flow.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/html-text.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/label-end.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/label-start-image.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/label-start-link.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/line-ending.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/thematic-break.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/list.js","../../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/setext-underline.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/flow.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/initialize/text.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/constructs.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/create-tokenizer.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/parse.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/postprocess.js","../../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/lib/preprocess.js","../../../node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/index.js","../../../node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/index.js","../../../node_modules/.pnpm/remark-parse@11.0.0/node_modules/remark-parse/lib/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/break.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/code.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/delete.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/heading.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/html.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/revert.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/image.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/link.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/list.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/root.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/strong.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../../../node_modules/.pnpm/trim-lines@3.0.1/node_modules/trim-lines/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/text.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/index.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.0/node_modules/@ungap/structured-clone/esm/types.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.0/node_modules/@ungap/structured-clone/esm/deserialize.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.0/node_modules/@ungap/structured-clone/esm/serialize.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.0/node_modules/@ungap/structured-clone/esm/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/footer.js","../../../node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.js","../../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.js","../../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/index.js","../../../node_modules/.pnpm/unist-util-visit@5.0.0/node_modules/unist-util-visit/lib/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/state.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/index.js","../../../node_modules/.pnpm/remark-rehype@11.1.2/node_modules/remark-rehype/lib/index.js","../../../node_modules/.pnpm/bail@2.0.2/node_modules/bail/index.js","../../../node_modules/.pnpm/extend@3.0.2/node_modules/extend/index.js","../../../node_modules/.pnpm/is-plain-obj@4.1.0/node_modules/is-plain-obj/index.js","../../../node_modules/.pnpm/trough@2.2.0/node_modules/trough/lib/index.js","../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minpath.browser.js","../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minproc.browser.js","../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minurl.shared.js","../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/minurl.browser.js","../../../node_modules/.pnpm/vfile@6.0.3/node_modules/vfile/lib/index.js","../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/callable-instance.js","../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js","../../../node_modules/.pnpm/react-markdown@10.1.0_@types+react@19.2.17_react@19.2.7/node_modules/react-markdown/lib/index.js","../src/components/memoized-markdown.tsx","../src/components/number-part.tsx","../src/components/option-item.tsx","../src/components/output-config-editor.tsx","../src/components/primary-entry-btn.tsx","../src/components/scroll-to-bottom-btn.tsx","../src/components/split-line.tsx","../src/components/tab-radio-group.tsx","../src/components/user-txt-msg-bubble.tsx","../src/hooks/use-resizable-width.ts","../src/hooks/use-column-appear.ts","../src/components/office-container.tsx","../src/components/warning-msg.tsx","../src/components/collapsible.tsx","../src/components/field-icon.tsx","../src/components/field-checker.tsx","../src/components/subform-fields-value-checker.tsx","../src/components/field-value-checker.tsx","../src/components/field-checker-list-msg.tsx","../src/components/agent-helper/field-value-input/icons.tsx","../src/components/agent-helper/field-value-input/inputs.tsx","../src/components/agent-helper/field-value-input/china-address-data.ts","../src/components/agent-helper/field-value-input/picker-inputs.tsx","../src/components/agent-helper/field-value-input/display.tsx","../src/components/agent-helper/field-value-input/index.tsx","../src/components/agent-helper/prompt-input/index.tsx","../src/components/agent-helper/agent-helper-main-layout/index.tsx","../src/components/agent-helper/condition-quantifier-select/index.tsx","../src/components/agent-helper/condition-trigger-description/index.tsx","../src/components/agent-helper/condition-item/index.tsx","../src/components/agent-helper/condition-group/index.tsx","../src/components/agent-helper/condition-input/index.tsx","../src/components/agent-helper/field-edit-preference-select/index.tsx","../src/components/icons/empty-table-icon.tsx","../src/components/agent-helper/table/index.tsx","../src/components/date-range-picker.tsx","../src/components/agent-helper/exec-log-filter/index.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n  // Pre-allocate for better V8 optimization\n  const combinedArray = new Array(array1.length + array2.length);\n  for (let i = 0; i < array1.length; i++) {\n    combinedArray[i] = array1[i];\n  }\n  for (let i = 0; i < array2.length; i++) {\n    combinedArray[array1.length + i] = array2[i];\n  }\n  return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n  classGroupId,\n  validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n  nextPart,\n  validators,\n  classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n  const classMap = createClassMap(config);\n  const {\n    conflictingClassGroups,\n    conflictingClassGroupModifiers\n  } = config;\n  const getClassGroupId = className => {\n    if (className.startsWith('[') && className.endsWith(']')) {\n      return getGroupIdForArbitraryProperty(className);\n    }\n    const classParts = className.split(CLASS_PART_SEPARATOR);\n    // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n    const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n    return getGroupRecursive(classParts, startIndex, classMap);\n  };\n  const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n    if (hasPostfixModifier) {\n      const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n      const baseConflicts = conflictingClassGroups[classGroupId];\n      if (modifierConflicts) {\n        if (baseConflicts) {\n          // Merge base conflicts with modifier conflicts\n          return concatArrays(baseConflicts, modifierConflicts);\n        }\n        // Only modifier conflicts\n        return modifierConflicts;\n      }\n      // Fall back to without postfix if no modifier conflicts\n      return baseConflicts || EMPTY_CONFLICTS;\n    }\n    return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n  };\n  return {\n    getClassGroupId,\n    getConflictingClassGroupIds\n  };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n  const classPathsLength = classParts.length - startIndex;\n  if (classPathsLength === 0) {\n    return classPartObject.classGroupId;\n  }\n  const currentClassPart = classParts[startIndex];\n  const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n  if (nextClassPartObject) {\n    const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n    if (result) return result;\n  }\n  const validators = classPartObject.validators;\n  if (validators === null) {\n    return undefined;\n  }\n  // Build classRest string efficiently by joining from startIndex onwards\n  const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n  const validatorsLength = validators.length;\n  for (let i = 0; i < validatorsLength; i++) {\n    const validatorObj = validators[i];\n    if (validatorObj.validator(classRest)) {\n      return validatorObj.classGroupId;\n    }\n  }\n  return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n  const content = className.slice(1, -1);\n  const colonIndex = content.indexOf(':');\n  const property = content.slice(0, colonIndex);\n  return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n  const {\n    theme,\n    classGroups\n  } = config;\n  return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n  const classMap = createClassPartObject();\n  for (const classGroupId in classGroups) {\n    const group = classGroups[classGroupId];\n    processClassesRecursively(group, classMap, classGroupId, theme);\n  }\n  return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n  const len = classGroup.length;\n  for (let i = 0; i < len; i++) {\n    const classDefinition = classGroup[i];\n    processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n  }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n  if (typeof classDefinition === 'string') {\n    processStringDefinition(classDefinition, classPartObject, classGroupId);\n    return;\n  }\n  if (typeof classDefinition === 'function') {\n    processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n    return;\n  }\n  processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n  const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n  classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n  if (isThemeGetter(classDefinition)) {\n    processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n    return;\n  }\n  if (classPartObject.validators === null) {\n    classPartObject.validators = [];\n  }\n  classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n  const entries = Object.entries(classDefinition);\n  const len = entries.length;\n  for (let i = 0; i < len; i++) {\n    const [key, value] = entries[i];\n    processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n  }\n};\nconst getPart = (classPartObject, path) => {\n  let current = classPartObject;\n  const parts = path.split(CLASS_PART_SEPARATOR);\n  const len = parts.length;\n  for (let i = 0; i < len; i++) {\n    const part = parts[i];\n    let next = current.nextPart.get(part);\n    if (!next) {\n      next = createClassPartObject();\n      current.nextPart.set(part, next);\n    }\n    current = next;\n  }\n  return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n  if (maxCacheSize < 1) {\n    return {\n      get: () => undefined,\n      set: () => {}\n    };\n  }\n  let cacheSize = 0;\n  let cache = Object.create(null);\n  let previousCache = Object.create(null);\n  const update = (key, value) => {\n    cache[key] = value;\n    cacheSize++;\n    if (cacheSize > maxCacheSize) {\n      cacheSize = 0;\n      previousCache = cache;\n      cache = Object.create(null);\n    }\n  };\n  return {\n    get(key) {\n      let value = cache[key];\n      if (value !== undefined) {\n        return value;\n      }\n      if ((value = previousCache[key]) !== undefined) {\n        update(key, value);\n        return value;\n      }\n    },\n    set(key, value) {\n      if (key in cache) {\n        cache[key] = value;\n      } else {\n        update(key, value);\n      }\n    }\n  };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n  modifiers,\n  hasImportantModifier,\n  baseClassName,\n  maybePostfixModifierPosition,\n  isExternal\n});\nconst createParseClassName = config => {\n  const {\n    prefix,\n    experimentalParseClassName\n  } = config;\n  /**\n   * Parse class name into parts.\n   *\n   * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n   * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n   */\n  let parseClassName = className => {\n    // Use simple array with push for better performance\n    const modifiers = [];\n    let bracketDepth = 0;\n    let parenDepth = 0;\n    let modifierStart = 0;\n    let postfixModifierPosition;\n    const len = className.length;\n    for (let index = 0; index < len; index++) {\n      const currentCharacter = className[index];\n      if (bracketDepth === 0 && parenDepth === 0) {\n        if (currentCharacter === MODIFIER_SEPARATOR) {\n          modifiers.push(className.slice(modifierStart, index));\n          modifierStart = index + 1;\n          continue;\n        }\n        if (currentCharacter === '/') {\n          postfixModifierPosition = index;\n          continue;\n        }\n      }\n      if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n    }\n    const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n    // Inline important modifier check\n    let baseClassName = baseClassNameWithImportantModifier;\n    let hasImportantModifier = false;\n    if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n      baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n      hasImportantModifier = true;\n    } else if (\n    /**\n     * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n     * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n     */\n    baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n      baseClassName = baseClassNameWithImportantModifier.slice(1);\n      hasImportantModifier = true;\n    }\n    const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n    return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n  };\n  if (prefix) {\n    const fullPrefix = prefix + MODIFIER_SEPARATOR;\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n  }\n  if (experimentalParseClassName) {\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => experimentalParseClassName({\n      className,\n      parseClassName: parseClassNameOriginal\n    });\n  }\n  return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n  // Pre-compute weights for all known modifiers for O(1) comparison\n  const modifierWeights = new Map();\n  // Assign weights to sensitive modifiers (highest priority, but preserve order)\n  config.orderSensitiveModifiers.forEach((mod, index) => {\n    modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n  });\n  return modifiers => {\n    const result = [];\n    let currentSegment = [];\n    // Process modifiers in one pass\n    for (let i = 0; i < modifiers.length; i++) {\n      const modifier = modifiers[i];\n      // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n      const isArbitrary = modifier[0] === '[';\n      const isOrderSensitive = modifierWeights.has(modifier);\n      if (isArbitrary || isOrderSensitive) {\n        // Sort and flush current segment alphabetically\n        if (currentSegment.length > 0) {\n          currentSegment.sort();\n          result.push(...currentSegment);\n          currentSegment = [];\n        }\n        result.push(modifier);\n      } else {\n        // Regular modifier - add to current segment for batch sorting\n        currentSegment.push(modifier);\n      }\n    }\n    // Sort and add any remaining segment items\n    if (currentSegment.length > 0) {\n      currentSegment.sort();\n      result.push(...currentSegment);\n    }\n    return result;\n  };\n};\nconst createConfigUtils = config => ({\n  cache: createLruCache(config.cacheSize),\n  parseClassName: createParseClassName(config),\n  sortModifiers: createSortModifiers(config),\n  ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n  const {\n    parseClassName,\n    getClassGroupId,\n    getConflictingClassGroupIds,\n    sortModifiers\n  } = configUtils;\n  /**\n   * Set of classGroupIds in following format:\n   * `{importantModifier}{variantModifiers}{classGroupId}`\n   * @example 'float'\n   * @example 'hover:focus:bg-color'\n   * @example 'md:!pr'\n   */\n  const classGroupsInConflict = [];\n  const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n  let result = '';\n  for (let index = classNames.length - 1; index >= 0; index -= 1) {\n    const originalClassName = classNames[index];\n    const {\n      isExternal,\n      modifiers,\n      hasImportantModifier,\n      baseClassName,\n      maybePostfixModifierPosition\n    } = parseClassName(originalClassName);\n    if (isExternal) {\n      result = originalClassName + (result.length > 0 ? ' ' + result : result);\n      continue;\n    }\n    let hasPostfixModifier = !!maybePostfixModifierPosition;\n    let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n    if (!classGroupId) {\n      if (!hasPostfixModifier) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      classGroupId = getClassGroupId(baseClassName);\n      if (!classGroupId) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      hasPostfixModifier = false;\n    }\n    // Fast path: skip sorting for empty or single modifier\n    const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n    const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n    const classId = modifierId + classGroupId;\n    if (classGroupsInConflict.indexOf(classId) > -1) {\n      // Tailwind class omitted due to conflict\n      continue;\n    }\n    classGroupsInConflict.push(classId);\n    const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n    for (let i = 0; i < conflictGroups.length; ++i) {\n      const group = conflictGroups[i];\n      classGroupsInConflict.push(modifierId + group);\n    }\n    // Tailwind class not in conflict\n    result = originalClassName + (result.length > 0 ? ' ' + result : result);\n  }\n  return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n  let index = 0;\n  let argument;\n  let resolvedValue;\n  let string = '';\n  while (index < classLists.length) {\n    if (argument = classLists[index++]) {\n      if (resolvedValue = toValue(argument)) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n};\nconst toValue = mix => {\n  // Fast path for strings\n  if (typeof mix === 'string') {\n    return mix;\n  }\n  let resolvedValue;\n  let string = '';\n  for (let k = 0; k < mix.length; k++) {\n    if (mix[k]) {\n      if (resolvedValue = toValue(mix[k])) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n  let configUtils;\n  let cacheGet;\n  let cacheSet;\n  let functionToCall;\n  const initTailwindMerge = classList => {\n    const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n    configUtils = createConfigUtils(config);\n    cacheGet = configUtils.cache.get;\n    cacheSet = configUtils.cache.set;\n    functionToCall = tailwindMerge;\n    return tailwindMerge(classList);\n  };\n  const tailwindMerge = classList => {\n    const cachedResult = cacheGet(classList);\n    if (cachedResult) {\n      return cachedResult;\n    }\n    const result = mergeClassList(classList, configUtils);\n    cacheSet(classList, result);\n    return result;\n  };\n  functionToCall = initTailwindMerge;\n  return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n  const themeGetter = theme => theme[key] || fallbackThemeArr;\n  themeGetter.isThemeGetter = true;\n  return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n  const result = arbitraryValueRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return testValue(result[2]);\n  }\n  return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n  const result = arbitraryVariableRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return shouldMatchNoLabel;\n  }\n  return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n  __proto__: null,\n  isAny,\n  isAnyNonArbitrary,\n  isArbitraryImage,\n  isArbitraryLength,\n  isArbitraryNumber,\n  isArbitraryPosition,\n  isArbitraryShadow,\n  isArbitrarySize,\n  isArbitraryValue,\n  isArbitraryVariable,\n  isArbitraryVariableFamilyName,\n  isArbitraryVariableImage,\n  isArbitraryVariableLength,\n  isArbitraryVariablePosition,\n  isArbitraryVariableShadow,\n  isArbitraryVariableSize,\n  isFraction,\n  isInteger,\n  isNumber,\n  isPercent,\n  isTshirtSize\n}, Symbol.toStringTag, {\n  value: 'Module'\n});\nconst getDefaultConfig = () => {\n  /**\n   * Theme getters for theme variable namespaces\n   * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n   */\n  /***/\n  const themeColor = fromTheme('color');\n  const themeFont = fromTheme('font');\n  const themeText = fromTheme('text');\n  const themeFontWeight = fromTheme('font-weight');\n  const themeTracking = fromTheme('tracking');\n  const themeLeading = fromTheme('leading');\n  const themeBreakpoint = fromTheme('breakpoint');\n  const themeContainer = fromTheme('container');\n  const themeSpacing = fromTheme('spacing');\n  const themeRadius = fromTheme('radius');\n  const themeShadow = fromTheme('shadow');\n  const themeInsetShadow = fromTheme('inset-shadow');\n  const themeTextShadow = fromTheme('text-shadow');\n  const themeDropShadow = fromTheme('drop-shadow');\n  const themeBlur = fromTheme('blur');\n  const themePerspective = fromTheme('perspective');\n  const themeAspect = fromTheme('aspect');\n  const themeEase = fromTheme('ease');\n  const themeAnimate = fromTheme('animate');\n  /**\n   * Helpers to avoid repeating the same scales\n   *\n   * We use functions that create a new array every time they're called instead of static arrays.\n   * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n   */\n  /***/\n  const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n  const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'left-top', 'top-right',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'right-top', 'bottom-right',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'right-bottom', 'bottom-left',\n  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n  'left-bottom'];\n  const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n  const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n  const scaleOverscroll = () => ['auto', 'contain', 'none'];\n  const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n  const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartAndEnd = () => ['auto', {\n    span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n  }, isInteger, isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n  const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n  const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n  const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n  const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n  const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n    position: [isArbitraryVariable, isArbitraryValue]\n  }];\n  const scaleBgRepeat = () => ['no-repeat', {\n    repeat: ['', 'x', 'y', 'space', 'round']\n  }];\n  const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n    size: [isArbitraryVariable, isArbitraryValue]\n  }];\n  const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n  const scaleRadius = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n  const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n  const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n  const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n  const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n  const scaleBlur = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n  const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n  return {\n    cacheSize: 500,\n    theme: {\n      animate: ['spin', 'ping', 'pulse', 'bounce'],\n      aspect: ['video'],\n      blur: [isTshirtSize],\n      breakpoint: [isTshirtSize],\n      color: [isAny],\n      container: [isTshirtSize],\n      'drop-shadow': [isTshirtSize],\n      ease: ['in', 'out', 'in-out'],\n      font: [isAnyNonArbitrary],\n      'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n      'inset-shadow': [isTshirtSize],\n      leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n      perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n      radius: [isTshirtSize],\n      shadow: [isTshirtSize],\n      spacing: ['px', isNumber],\n      text: [isTshirtSize],\n      'text-shadow': [isTshirtSize],\n      tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n    },\n    classGroups: {\n      // --------------\n      // --- Layout ---\n      // --------------\n      /**\n       * Aspect Ratio\n       * @see https://tailwindcss.com/docs/aspect-ratio\n       */\n      aspect: [{\n        aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n      }],\n      /**\n       * Container\n       * @see https://tailwindcss.com/docs/container\n       * @deprecated since Tailwind CSS v4.0.0\n       */\n      container: ['container'],\n      /**\n       * Columns\n       * @see https://tailwindcss.com/docs/columns\n       */\n      columns: [{\n        columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n      }],\n      /**\n       * Break After\n       * @see https://tailwindcss.com/docs/break-after\n       */\n      'break-after': [{\n        'break-after': scaleBreak()\n      }],\n      /**\n       * Break Before\n       * @see https://tailwindcss.com/docs/break-before\n       */\n      'break-before': [{\n        'break-before': scaleBreak()\n      }],\n      /**\n       * Break Inside\n       * @see https://tailwindcss.com/docs/break-inside\n       */\n      'break-inside': [{\n        'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n      }],\n      /**\n       * Box Decoration Break\n       * @see https://tailwindcss.com/docs/box-decoration-break\n       */\n      'box-decoration': [{\n        'box-decoration': ['slice', 'clone']\n      }],\n      /**\n       * Box Sizing\n       * @see https://tailwindcss.com/docs/box-sizing\n       */\n      box: [{\n        box: ['border', 'content']\n      }],\n      /**\n       * Display\n       * @see https://tailwindcss.com/docs/display\n       */\n      display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n      /**\n       * Screen Reader Only\n       * @see https://tailwindcss.com/docs/display#screen-reader-only\n       */\n      sr: ['sr-only', 'not-sr-only'],\n      /**\n       * Floats\n       * @see https://tailwindcss.com/docs/float\n       */\n      float: [{\n        float: ['right', 'left', 'none', 'start', 'end']\n      }],\n      /**\n       * Clear\n       * @see https://tailwindcss.com/docs/clear\n       */\n      clear: [{\n        clear: ['left', 'right', 'both', 'none', 'start', 'end']\n      }],\n      /**\n       * Isolation\n       * @see https://tailwindcss.com/docs/isolation\n       */\n      isolation: ['isolate', 'isolation-auto'],\n      /**\n       * Object Fit\n       * @see https://tailwindcss.com/docs/object-fit\n       */\n      'object-fit': [{\n        object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n      }],\n      /**\n       * Object Position\n       * @see https://tailwindcss.com/docs/object-position\n       */\n      'object-position': [{\n        object: scalePositionWithArbitrary()\n      }],\n      /**\n       * Overflow\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      overflow: [{\n        overflow: scaleOverflow()\n      }],\n      /**\n       * Overflow X\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-x': [{\n        'overflow-x': scaleOverflow()\n      }],\n      /**\n       * Overflow Y\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-y': [{\n        'overflow-y': scaleOverflow()\n      }],\n      /**\n       * Overscroll Behavior\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      overscroll: [{\n        overscroll: scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior X\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-x': [{\n        'overscroll-x': scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior Y\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-y': [{\n        'overscroll-y': scaleOverscroll()\n      }],\n      /**\n       * Position\n       * @see https://tailwindcss.com/docs/position\n       */\n      position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n      /**\n       * Top / Right / Bottom / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      inset: [{\n        inset: scaleInset()\n      }],\n      /**\n       * Right / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-x': [{\n        'inset-x': scaleInset()\n      }],\n      /**\n       * Top / Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-y': [{\n        'inset-y': scaleInset()\n      }],\n      /**\n       * Start\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      start: [{\n        start: scaleInset()\n      }],\n      /**\n       * End\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      end: [{\n        end: scaleInset()\n      }],\n      /**\n       * Top\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      top: [{\n        top: scaleInset()\n      }],\n      /**\n       * Right\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      right: [{\n        right: scaleInset()\n      }],\n      /**\n       * Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      bottom: [{\n        bottom: scaleInset()\n      }],\n      /**\n       * Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      left: [{\n        left: scaleInset()\n      }],\n      /**\n       * Visibility\n       * @see https://tailwindcss.com/docs/visibility\n       */\n      visibility: ['visible', 'invisible', 'collapse'],\n      /**\n       * Z-Index\n       * @see https://tailwindcss.com/docs/z-index\n       */\n      z: [{\n        z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------------\n      // --- Flexbox and Grid ---\n      // ------------------------\n      /**\n       * Flex Basis\n       * @see https://tailwindcss.com/docs/flex-basis\n       */\n      basis: [{\n        basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * Flex Direction\n       * @see https://tailwindcss.com/docs/flex-direction\n       */\n      'flex-direction': [{\n        flex: ['row', 'row-reverse', 'col', 'col-reverse']\n      }],\n      /**\n       * Flex Wrap\n       * @see https://tailwindcss.com/docs/flex-wrap\n       */\n      'flex-wrap': [{\n        flex: ['nowrap', 'wrap', 'wrap-reverse']\n      }],\n      /**\n       * Flex\n       * @see https://tailwindcss.com/docs/flex\n       */\n      flex: [{\n        flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n      }],\n      /**\n       * Flex Grow\n       * @see https://tailwindcss.com/docs/flex-grow\n       */\n      grow: [{\n        grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Flex Shrink\n       * @see https://tailwindcss.com/docs/flex-shrink\n       */\n      shrink: [{\n        shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Order\n       * @see https://tailwindcss.com/docs/order\n       */\n      order: [{\n        order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Grid Template Columns\n       * @see https://tailwindcss.com/docs/grid-template-columns\n       */\n      'grid-cols': [{\n        'grid-cols': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Column Start / End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start-end': [{\n        col: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Column Start\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start': [{\n        'col-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Column End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-end': [{\n        'col-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Template Rows\n       * @see https://tailwindcss.com/docs/grid-template-rows\n       */\n      'grid-rows': [{\n        'grid-rows': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Row Start / End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start-end': [{\n        row: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Row Start\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start': [{\n        'row-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Row End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-end': [{\n        'row-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Auto Flow\n       * @see https://tailwindcss.com/docs/grid-auto-flow\n       */\n      'grid-flow': [{\n        'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n      }],\n      /**\n       * Grid Auto Columns\n       * @see https://tailwindcss.com/docs/grid-auto-columns\n       */\n      'auto-cols': [{\n        'auto-cols': scaleGridAutoColsRows()\n      }],\n      /**\n       * Grid Auto Rows\n       * @see https://tailwindcss.com/docs/grid-auto-rows\n       */\n      'auto-rows': [{\n        'auto-rows': scaleGridAutoColsRows()\n      }],\n      /**\n       * Gap\n       * @see https://tailwindcss.com/docs/gap\n       */\n      gap: [{\n        gap: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Gap X\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-x': [{\n        'gap-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Gap Y\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-y': [{\n        'gap-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Justify Content\n       * @see https://tailwindcss.com/docs/justify-content\n       */\n      'justify-content': [{\n        justify: [...scaleAlignPrimaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Items\n       * @see https://tailwindcss.com/docs/justify-items\n       */\n      'justify-items': [{\n        'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Self\n       * @see https://tailwindcss.com/docs/justify-self\n       */\n      'justify-self': [{\n        'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      /**\n       * Align Content\n       * @see https://tailwindcss.com/docs/align-content\n       */\n      'align-content': [{\n        content: ['normal', ...scaleAlignPrimaryAxis()]\n      }],\n      /**\n       * Align Items\n       * @see https://tailwindcss.com/docs/align-items\n       */\n      'align-items': [{\n        items: [...scaleAlignSecondaryAxis(), {\n          baseline: ['', 'last']\n        }]\n      }],\n      /**\n       * Align Self\n       * @see https://tailwindcss.com/docs/align-self\n       */\n      'align-self': [{\n        self: ['auto', ...scaleAlignSecondaryAxis(), {\n          baseline: ['', 'last']\n        }]\n      }],\n      /**\n       * Place Content\n       * @see https://tailwindcss.com/docs/place-content\n       */\n      'place-content': [{\n        'place-content': scaleAlignPrimaryAxis()\n      }],\n      /**\n       * Place Items\n       * @see https://tailwindcss.com/docs/place-items\n       */\n      'place-items': [{\n        'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n      }],\n      /**\n       * Place Self\n       * @see https://tailwindcss.com/docs/place-self\n       */\n      'place-self': [{\n        'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      // Spacing\n      /**\n       * Padding\n       * @see https://tailwindcss.com/docs/padding\n       */\n      p: [{\n        p: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding X\n       * @see https://tailwindcss.com/docs/padding\n       */\n      px: [{\n        px: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Y\n       * @see https://tailwindcss.com/docs/padding\n       */\n      py: [{\n        py: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Start\n       * @see https://tailwindcss.com/docs/padding\n       */\n      ps: [{\n        ps: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding End\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pe: [{\n        pe: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Top\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pt: [{\n        pt: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Right\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pr: [{\n        pr: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Bottom\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pb: [{\n        pb: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Padding Left\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pl: [{\n        pl: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Margin\n       * @see https://tailwindcss.com/docs/margin\n       */\n      m: [{\n        m: scaleMargin()\n      }],\n      /**\n       * Margin X\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mx: [{\n        mx: scaleMargin()\n      }],\n      /**\n       * Margin Y\n       * @see https://tailwindcss.com/docs/margin\n       */\n      my: [{\n        my: scaleMargin()\n      }],\n      /**\n       * Margin Start\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ms: [{\n        ms: scaleMargin()\n      }],\n      /**\n       * Margin End\n       * @see https://tailwindcss.com/docs/margin\n       */\n      me: [{\n        me: scaleMargin()\n      }],\n      /**\n       * Margin Top\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mt: [{\n        mt: scaleMargin()\n      }],\n      /**\n       * Margin Right\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mr: [{\n        mr: scaleMargin()\n      }],\n      /**\n       * Margin Bottom\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mb: [{\n        mb: scaleMargin()\n      }],\n      /**\n       * Margin Left\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ml: [{\n        ml: scaleMargin()\n      }],\n      /**\n       * Space Between X\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x': [{\n        'space-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between X Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x-reverse': ['space-x-reverse'],\n      /**\n       * Space Between Y\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y': [{\n        'space-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between Y Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y-reverse': ['space-y-reverse'],\n      // --------------\n      // --- Sizing ---\n      // --------------\n      /**\n       * Size\n       * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n       */\n      size: [{\n        size: scaleSizing()\n      }],\n      /**\n       * Width\n       * @see https://tailwindcss.com/docs/width\n       */\n      w: [{\n        w: [themeContainer, 'screen', ...scaleSizing()]\n      }],\n      /**\n       * Min-Width\n       * @see https://tailwindcss.com/docs/min-width\n       */\n      'min-w': [{\n        'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Width\n       * @see https://tailwindcss.com/docs/max-width\n       */\n      'max-w': [{\n        'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        {\n          screen: [themeBreakpoint]\n        }, ...scaleSizing()]\n      }],\n      /**\n       * Height\n       * @see https://tailwindcss.com/docs/height\n       */\n      h: [{\n        h: ['screen', 'lh', ...scaleSizing()]\n      }],\n      /**\n       * Min-Height\n       * @see https://tailwindcss.com/docs/min-height\n       */\n      'min-h': [{\n        'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Height\n       * @see https://tailwindcss.com/docs/max-height\n       */\n      'max-h': [{\n        'max-h': ['screen', 'lh', ...scaleSizing()]\n      }],\n      // ------------------\n      // --- Typography ---\n      // ------------------\n      /**\n       * Font Size\n       * @see https://tailwindcss.com/docs/font-size\n       */\n      'font-size': [{\n        text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Font Smoothing\n       * @see https://tailwindcss.com/docs/font-smoothing\n       */\n      'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n      /**\n       * Font Style\n       * @see https://tailwindcss.com/docs/font-style\n       */\n      'font-style': ['italic', 'not-italic'],\n      /**\n       * Font Weight\n       * @see https://tailwindcss.com/docs/font-weight\n       */\n      'font-weight': [{\n        font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Font Stretch\n       * @see https://tailwindcss.com/docs/font-stretch\n       */\n      'font-stretch': [{\n        'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n      }],\n      /**\n       * Font Family\n       * @see https://tailwindcss.com/docs/font-family\n       */\n      'font-family': [{\n        font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n      }],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-normal': ['normal-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-ordinal': ['ordinal'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-slashed-zero': ['slashed-zero'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n      /**\n       * Letter Spacing\n       * @see https://tailwindcss.com/docs/letter-spacing\n       */\n      tracking: [{\n        tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Line Clamp\n       * @see https://tailwindcss.com/docs/line-clamp\n       */\n      'line-clamp': [{\n        'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Line Height\n       * @see https://tailwindcss.com/docs/line-height\n       */\n      leading: [{\n        leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        themeLeading, ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * List Style Image\n       * @see https://tailwindcss.com/docs/list-style-image\n       */\n      'list-image': [{\n        'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * List Style Position\n       * @see https://tailwindcss.com/docs/list-style-position\n       */\n      'list-style-position': [{\n        list: ['inside', 'outside']\n      }],\n      /**\n       * List Style Type\n       * @see https://tailwindcss.com/docs/list-style-type\n       */\n      'list-style-type': [{\n        list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Alignment\n       * @see https://tailwindcss.com/docs/text-align\n       */\n      'text-alignment': [{\n        text: ['left', 'center', 'right', 'justify', 'start', 'end']\n      }],\n      /**\n       * Placeholder Color\n       * @deprecated since Tailwind CSS v3.0.0\n       * @see https://v3.tailwindcss.com/docs/placeholder-color\n       */\n      'placeholder-color': [{\n        placeholder: scaleColor()\n      }],\n      /**\n       * Text Color\n       * @see https://tailwindcss.com/docs/text-color\n       */\n      'text-color': [{\n        text: scaleColor()\n      }],\n      /**\n       * Text Decoration\n       * @see https://tailwindcss.com/docs/text-decoration\n       */\n      'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n      /**\n       * Text Decoration Style\n       * @see https://tailwindcss.com/docs/text-decoration-style\n       */\n      'text-decoration-style': [{\n        decoration: [...scaleLineStyle(), 'wavy']\n      }],\n      /**\n       * Text Decoration Thickness\n       * @see https://tailwindcss.com/docs/text-decoration-thickness\n       */\n      'text-decoration-thickness': [{\n        decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n      }],\n      /**\n       * Text Decoration Color\n       * @see https://tailwindcss.com/docs/text-decoration-color\n       */\n      'text-decoration-color': [{\n        decoration: scaleColor()\n      }],\n      /**\n       * Text Underline Offset\n       * @see https://tailwindcss.com/docs/text-underline-offset\n       */\n      'underline-offset': [{\n        'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Transform\n       * @see https://tailwindcss.com/docs/text-transform\n       */\n      'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n      /**\n       * Text Overflow\n       * @see https://tailwindcss.com/docs/text-overflow\n       */\n      'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n      /**\n       * Text Wrap\n       * @see https://tailwindcss.com/docs/text-wrap\n       */\n      'text-wrap': [{\n        text: ['wrap', 'nowrap', 'balance', 'pretty']\n      }],\n      /**\n       * Text Indent\n       * @see https://tailwindcss.com/docs/text-indent\n       */\n      indent: [{\n        indent: scaleUnambiguousSpacing()\n      }],\n      /**\n       * Vertical Alignment\n       * @see https://tailwindcss.com/docs/vertical-align\n       */\n      'vertical-align': [{\n        align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Whitespace\n       * @see https://tailwindcss.com/docs/whitespace\n       */\n      whitespace: [{\n        whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n      }],\n      /**\n       * Word Break\n       * @see https://tailwindcss.com/docs/word-break\n       */\n      break: [{\n        break: ['normal', 'words', 'all', 'keep']\n      }],\n      /**\n       * Overflow Wrap\n       * @see https://tailwindcss.com/docs/overflow-wrap\n       */\n      wrap: [{\n        wrap: ['break-word', 'anywhere', 'normal']\n      }],\n      /**\n       * Hyphens\n       * @see https://tailwindcss.com/docs/hyphens\n       */\n      hyphens: [{\n        hyphens: ['none', 'manual', 'auto']\n      }],\n      /**\n       * Content\n       * @see https://tailwindcss.com/docs/content\n       */\n      content: [{\n        content: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -------------------\n      // --- Backgrounds ---\n      // -------------------\n      /**\n       * Background Attachment\n       * @see https://tailwindcss.com/docs/background-attachment\n       */\n      'bg-attachment': [{\n        bg: ['fixed', 'local', 'scroll']\n      }],\n      /**\n       * Background Clip\n       * @see https://tailwindcss.com/docs/background-clip\n       */\n      'bg-clip': [{\n        'bg-clip': ['border', 'padding', 'content', 'text']\n      }],\n      /**\n       * Background Origin\n       * @see https://tailwindcss.com/docs/background-origin\n       */\n      'bg-origin': [{\n        'bg-origin': ['border', 'padding', 'content']\n      }],\n      /**\n       * Background Position\n       * @see https://tailwindcss.com/docs/background-position\n       */\n      'bg-position': [{\n        bg: scaleBgPosition()\n      }],\n      /**\n       * Background Repeat\n       * @see https://tailwindcss.com/docs/background-repeat\n       */\n      'bg-repeat': [{\n        bg: scaleBgRepeat()\n      }],\n      /**\n       * Background Size\n       * @see https://tailwindcss.com/docs/background-size\n       */\n      'bg-size': [{\n        bg: scaleBgSize()\n      }],\n      /**\n       * Background Image\n       * @see https://tailwindcss.com/docs/background-image\n       */\n      'bg-image': [{\n        bg: ['none', {\n          linear: [{\n            to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n          }, isInteger, isArbitraryVariable, isArbitraryValue],\n          radial: ['', isArbitraryVariable, isArbitraryValue],\n          conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n        }, isArbitraryVariableImage, isArbitraryImage]\n      }],\n      /**\n       * Background Color\n       * @see https://tailwindcss.com/docs/background-color\n       */\n      'bg-color': [{\n        bg: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops From Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from-pos': [{\n        from: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops Via Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via-pos': [{\n        via: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops To Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to-pos': [{\n        to: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops From\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from': [{\n        from: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops Via\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via': [{\n        via: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops To\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to': [{\n        to: scaleColor()\n      }],\n      // ---------------\n      // --- Borders ---\n      // ---------------\n      /**\n       * Border Radius\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      rounded: [{\n        rounded: scaleRadius()\n      }],\n      /**\n       * Border Radius Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-s': [{\n        'rounded-s': scaleRadius()\n      }],\n      /**\n       * Border Radius End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-e': [{\n        'rounded-e': scaleRadius()\n      }],\n      /**\n       * Border Radius Top\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-t': [{\n        'rounded-t': scaleRadius()\n      }],\n      /**\n       * Border Radius Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-r': [{\n        'rounded-r': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-b': [{\n        'rounded-b': scaleRadius()\n      }],\n      /**\n       * Border Radius Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-l': [{\n        'rounded-l': scaleRadius()\n      }],\n      /**\n       * Border Radius Start Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ss': [{\n        'rounded-ss': scaleRadius()\n      }],\n      /**\n       * Border Radius Start End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-se': [{\n        'rounded-se': scaleRadius()\n      }],\n      /**\n       * Border Radius End End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ee': [{\n        'rounded-ee': scaleRadius()\n      }],\n      /**\n       * Border Radius End Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-es': [{\n        'rounded-es': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tl': [{\n        'rounded-tl': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tr': [{\n        'rounded-tr': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-br': [{\n        'rounded-br': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-bl': [{\n        'rounded-bl': scaleRadius()\n      }],\n      /**\n       * Border Width\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w': [{\n        border: scaleBorderWidth()\n      }],\n      /**\n       * Border Width X\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-x': [{\n        'border-x': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Y\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-y': [{\n        'border-y': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Start\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-s': [{\n        'border-s': scaleBorderWidth()\n      }],\n      /**\n       * Border Width End\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-e': [{\n        'border-e': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Top\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-t': [{\n        'border-t': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Right\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-r': [{\n        'border-r': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Bottom\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-b': [{\n        'border-b': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Left\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-l': [{\n        'border-l': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x': [{\n        'divide-x': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x-reverse': ['divide-x-reverse'],\n      /**\n       * Divide Width Y\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y': [{\n        'divide-y': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width Y Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y-reverse': ['divide-y-reverse'],\n      /**\n       * Border Style\n       * @see https://tailwindcss.com/docs/border-style\n       */\n      'border-style': [{\n        border: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Divide Style\n       * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n       */\n      'divide-style': [{\n        divide: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Border Color\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color': [{\n        border: scaleColor()\n      }],\n      /**\n       * Border Color X\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-x': [{\n        'border-x': scaleColor()\n      }],\n      /**\n       * Border Color Y\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-y': [{\n        'border-y': scaleColor()\n      }],\n      /**\n       * Border Color S\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-s': [{\n        'border-s': scaleColor()\n      }],\n      /**\n       * Border Color E\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-e': [{\n        'border-e': scaleColor()\n      }],\n      /**\n       * Border Color Top\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-t': [{\n        'border-t': scaleColor()\n      }],\n      /**\n       * Border Color Right\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-r': [{\n        'border-r': scaleColor()\n      }],\n      /**\n       * Border Color Bottom\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-b': [{\n        'border-b': scaleColor()\n      }],\n      /**\n       * Border Color Left\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-l': [{\n        'border-l': scaleColor()\n      }],\n      /**\n       * Divide Color\n       * @see https://tailwindcss.com/docs/divide-color\n       */\n      'divide-color': [{\n        divide: scaleColor()\n      }],\n      /**\n       * Outline Style\n       * @see https://tailwindcss.com/docs/outline-style\n       */\n      'outline-style': [{\n        outline: [...scaleLineStyle(), 'none', 'hidden']\n      }],\n      /**\n       * Outline Offset\n       * @see https://tailwindcss.com/docs/outline-offset\n       */\n      'outline-offset': [{\n        'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Outline Width\n       * @see https://tailwindcss.com/docs/outline-width\n       */\n      'outline-w': [{\n        outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Outline Color\n       * @see https://tailwindcss.com/docs/outline-color\n       */\n      'outline-color': [{\n        outline: scaleColor()\n      }],\n      // ---------------\n      // --- Effects ---\n      // ---------------\n      /**\n       * Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow\n       */\n      shadow: [{\n        shadow: [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n       */\n      'shadow-color': [{\n        shadow: scaleColor()\n      }],\n      /**\n       * Inset Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n       */\n      'inset-shadow': [{\n        'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Inset Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n       */\n      'inset-shadow-color': [{\n        'inset-shadow': scaleColor()\n      }],\n      /**\n       * Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n       */\n      'ring-w': [{\n        ring: scaleBorderWidth()\n      }],\n      /**\n       * Ring Width Inset\n       * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-w-inset': ['ring-inset'],\n      /**\n       * Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n       */\n      'ring-color': [{\n        ring: scaleColor()\n      }],\n      /**\n       * Ring Offset Width\n       * @see https://v3.tailwindcss.com/docs/ring-offset-width\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-w': [{\n        'ring-offset': [isNumber, isArbitraryLength]\n      }],\n      /**\n       * Ring Offset Color\n       * @see https://v3.tailwindcss.com/docs/ring-offset-color\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-color': [{\n        'ring-offset': scaleColor()\n      }],\n      /**\n       * Inset Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n       */\n      'inset-ring-w': [{\n        'inset-ring': scaleBorderWidth()\n      }],\n      /**\n       * Inset Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n       */\n      'inset-ring-color': [{\n        'inset-ring': scaleColor()\n      }],\n      /**\n       * Text Shadow\n       * @see https://tailwindcss.com/docs/text-shadow\n       */\n      'text-shadow': [{\n        'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Text Shadow Color\n       * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n       */\n      'text-shadow-color': [{\n        'text-shadow': scaleColor()\n      }],\n      /**\n       * Opacity\n       * @see https://tailwindcss.com/docs/opacity\n       */\n      opacity: [{\n        opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Mix Blend Mode\n       * @see https://tailwindcss.com/docs/mix-blend-mode\n       */\n      'mix-blend': [{\n        'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n      }],\n      /**\n       * Background Blend Mode\n       * @see https://tailwindcss.com/docs/background-blend-mode\n       */\n      'bg-blend': [{\n        'bg-blend': scaleBlendMode()\n      }],\n      /**\n       * Mask Clip\n       * @see https://tailwindcss.com/docs/mask-clip\n       */\n      'mask-clip': [{\n        'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n      }, 'mask-no-clip'],\n      /**\n       * Mask Composite\n       * @see https://tailwindcss.com/docs/mask-composite\n       */\n      'mask-composite': [{\n        mask: ['add', 'subtract', 'intersect', 'exclude']\n      }],\n      /**\n       * Mask Image\n       * @see https://tailwindcss.com/docs/mask-image\n       */\n      'mask-image-linear-pos': [{\n        'mask-linear': [isNumber]\n      }],\n      'mask-image-linear-from-pos': [{\n        'mask-linear-from': scaleMaskImagePosition()\n      }],\n      'mask-image-linear-to-pos': [{\n        'mask-linear-to': scaleMaskImagePosition()\n      }],\n      'mask-image-linear-from-color': [{\n        'mask-linear-from': scaleColor()\n      }],\n      'mask-image-linear-to-color': [{\n        'mask-linear-to': scaleColor()\n      }],\n      'mask-image-t-from-pos': [{\n        'mask-t-from': scaleMaskImagePosition()\n      }],\n      'mask-image-t-to-pos': [{\n        'mask-t-to': scaleMaskImagePosition()\n      }],\n      'mask-image-t-from-color': [{\n        'mask-t-from': scaleColor()\n      }],\n      'mask-image-t-to-color': [{\n        'mask-t-to': scaleColor()\n      }],\n      'mask-image-r-from-pos': [{\n        'mask-r-from': scaleMaskImagePosition()\n      }],\n      'mask-image-r-to-pos': [{\n        'mask-r-to': scaleMaskImagePosition()\n      }],\n      'mask-image-r-from-color': [{\n        'mask-r-from': scaleColor()\n      }],\n      'mask-image-r-to-color': [{\n        'mask-r-to': scaleColor()\n      }],\n      'mask-image-b-from-pos': [{\n        'mask-b-from': scaleMaskImagePosition()\n      }],\n      'mask-image-b-to-pos': [{\n        'mask-b-to': scaleMaskImagePosition()\n      }],\n      'mask-image-b-from-color': [{\n        'mask-b-from': scaleColor()\n      }],\n      'mask-image-b-to-color': [{\n        'mask-b-to': scaleColor()\n      }],\n      'mask-image-l-from-pos': [{\n        'mask-l-from': scaleMaskImagePosition()\n      }],\n      'mask-image-l-to-pos': [{\n        'mask-l-to': scaleMaskImagePosition()\n      }],\n      'mask-image-l-from-color': [{\n        'mask-l-from': scaleColor()\n      }],\n      'mask-image-l-to-color': [{\n        'mask-l-to': scaleColor()\n      }],\n      'mask-image-x-from-pos': [{\n        'mask-x-from': scaleMaskImagePosition()\n      }],\n      'mask-image-x-to-pos': [{\n        'mask-x-to': scaleMaskImagePosition()\n      }],\n      'mask-image-x-from-color': [{\n        'mask-x-from': scaleColor()\n      }],\n      'mask-image-x-to-color': [{\n        'mask-x-to': scaleColor()\n      }],\n      'mask-image-y-from-pos': [{\n        'mask-y-from': scaleMaskImagePosition()\n      }],\n      'mask-image-y-to-pos': [{\n        'mask-y-to': scaleMaskImagePosition()\n      }],\n      'mask-image-y-from-color': [{\n        'mask-y-from': scaleColor()\n      }],\n      'mask-image-y-to-color': [{\n        'mask-y-to': scaleColor()\n      }],\n      'mask-image-radial': [{\n        'mask-radial': [isArbitraryVariable, isArbitraryValue]\n      }],\n      'mask-image-radial-from-pos': [{\n        'mask-radial-from': scaleMaskImagePosition()\n      }],\n      'mask-image-radial-to-pos': [{\n        'mask-radial-to': scaleMaskImagePosition()\n      }],\n      'mask-image-radial-from-color': [{\n        'mask-radial-from': scaleColor()\n      }],\n      'mask-image-radial-to-color': [{\n        'mask-radial-to': scaleColor()\n      }],\n      'mask-image-radial-shape': [{\n        'mask-radial': ['circle', 'ellipse']\n      }],\n      'mask-image-radial-size': [{\n        'mask-radial': [{\n          closest: ['side', 'corner'],\n          farthest: ['side', 'corner']\n        }]\n      }],\n      'mask-image-radial-pos': [{\n        'mask-radial-at': scalePosition()\n      }],\n      'mask-image-conic-pos': [{\n        'mask-conic': [isNumber]\n      }],\n      'mask-image-conic-from-pos': [{\n        'mask-conic-from': scaleMaskImagePosition()\n      }],\n      'mask-image-conic-to-pos': [{\n        'mask-conic-to': scaleMaskImagePosition()\n      }],\n      'mask-image-conic-from-color': [{\n        'mask-conic-from': scaleColor()\n      }],\n      'mask-image-conic-to-color': [{\n        'mask-conic-to': scaleColor()\n      }],\n      /**\n       * Mask Mode\n       * @see https://tailwindcss.com/docs/mask-mode\n       */\n      'mask-mode': [{\n        mask: ['alpha', 'luminance', 'match']\n      }],\n      /**\n       * Mask Origin\n       * @see https://tailwindcss.com/docs/mask-origin\n       */\n      'mask-origin': [{\n        'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n      }],\n      /**\n       * Mask Position\n       * @see https://tailwindcss.com/docs/mask-position\n       */\n      'mask-position': [{\n        mask: scaleBgPosition()\n      }],\n      /**\n       * Mask Repeat\n       * @see https://tailwindcss.com/docs/mask-repeat\n       */\n      'mask-repeat': [{\n        mask: scaleBgRepeat()\n      }],\n      /**\n       * Mask Size\n       * @see https://tailwindcss.com/docs/mask-size\n       */\n      'mask-size': [{\n        mask: scaleBgSize()\n      }],\n      /**\n       * Mask Type\n       * @see https://tailwindcss.com/docs/mask-type\n       */\n      'mask-type': [{\n        'mask-type': ['alpha', 'luminance']\n      }],\n      /**\n       * Mask Image\n       * @see https://tailwindcss.com/docs/mask-image\n       */\n      'mask-image': [{\n        mask: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ---------------\n      // --- Filters ---\n      // ---------------\n      /**\n       * Filter\n       * @see https://tailwindcss.com/docs/filter\n       */\n      filter: [{\n        filter: [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Blur\n       * @see https://tailwindcss.com/docs/blur\n       */\n      blur: [{\n        blur: scaleBlur()\n      }],\n      /**\n       * Brightness\n       * @see https://tailwindcss.com/docs/brightness\n       */\n      brightness: [{\n        brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Contrast\n       * @see https://tailwindcss.com/docs/contrast\n       */\n      contrast: [{\n        contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Drop Shadow\n       * @see https://tailwindcss.com/docs/drop-shadow\n       */\n      'drop-shadow': [{\n        'drop-shadow': [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Drop Shadow Color\n       * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n       */\n      'drop-shadow-color': [{\n        'drop-shadow': scaleColor()\n      }],\n      /**\n       * Grayscale\n       * @see https://tailwindcss.com/docs/grayscale\n       */\n      grayscale: [{\n        grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Hue Rotate\n       * @see https://tailwindcss.com/docs/hue-rotate\n       */\n      'hue-rotate': [{\n        'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Invert\n       * @see https://tailwindcss.com/docs/invert\n       */\n      invert: [{\n        invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Saturate\n       * @see https://tailwindcss.com/docs/saturate\n       */\n      saturate: [{\n        saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Sepia\n       * @see https://tailwindcss.com/docs/sepia\n       */\n      sepia: [{\n        sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Filter\n       * @see https://tailwindcss.com/docs/backdrop-filter\n       */\n      'backdrop-filter': [{\n        'backdrop-filter': [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Blur\n       * @see https://tailwindcss.com/docs/backdrop-blur\n       */\n      'backdrop-blur': [{\n        'backdrop-blur': scaleBlur()\n      }],\n      /**\n       * Backdrop Brightness\n       * @see https://tailwindcss.com/docs/backdrop-brightness\n       */\n      'backdrop-brightness': [{\n        'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Contrast\n       * @see https://tailwindcss.com/docs/backdrop-contrast\n       */\n      'backdrop-contrast': [{\n        'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Grayscale\n       * @see https://tailwindcss.com/docs/backdrop-grayscale\n       */\n      'backdrop-grayscale': [{\n        'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Hue Rotate\n       * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n       */\n      'backdrop-hue-rotate': [{\n        'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Invert\n       * @see https://tailwindcss.com/docs/backdrop-invert\n       */\n      'backdrop-invert': [{\n        'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Opacity\n       * @see https://tailwindcss.com/docs/backdrop-opacity\n       */\n      'backdrop-opacity': [{\n        'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Saturate\n       * @see https://tailwindcss.com/docs/backdrop-saturate\n       */\n      'backdrop-saturate': [{\n        'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Sepia\n       * @see https://tailwindcss.com/docs/backdrop-sepia\n       */\n      'backdrop-sepia': [{\n        'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      // --------------\n      // --- Tables ---\n      // --------------\n      /**\n       * Border Collapse\n       * @see https://tailwindcss.com/docs/border-collapse\n       */\n      'border-collapse': [{\n        border: ['collapse', 'separate']\n      }],\n      /**\n       * Border Spacing\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing': [{\n        'border-spacing': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing X\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-x': [{\n        'border-spacing-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing Y\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-y': [{\n        'border-spacing-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Table Layout\n       * @see https://tailwindcss.com/docs/table-layout\n       */\n      'table-layout': [{\n        table: ['auto', 'fixed']\n      }],\n      /**\n       * Caption Side\n       * @see https://tailwindcss.com/docs/caption-side\n       */\n      caption: [{\n        caption: ['top', 'bottom']\n      }],\n      // ---------------------------------\n      // --- Transitions and Animation ---\n      // ---------------------------------\n      /**\n       * Transition Property\n       * @see https://tailwindcss.com/docs/transition-property\n       */\n      transition: [{\n        transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Behavior\n       * @see https://tailwindcss.com/docs/transition-behavior\n       */\n      'transition-behavior': [{\n        transition: ['normal', 'discrete']\n      }],\n      /**\n       * Transition Duration\n       * @see https://tailwindcss.com/docs/transition-duration\n       */\n      duration: [{\n        duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Timing Function\n       * @see https://tailwindcss.com/docs/transition-timing-function\n       */\n      ease: [{\n        ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Delay\n       * @see https://tailwindcss.com/docs/transition-delay\n       */\n      delay: [{\n        delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Animation\n       * @see https://tailwindcss.com/docs/animation\n       */\n      animate: [{\n        animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------\n      // --- Transforms ---\n      // ------------------\n      /**\n       * Backface Visibility\n       * @see https://tailwindcss.com/docs/backface-visibility\n       */\n      backface: [{\n        backface: ['hidden', 'visible']\n      }],\n      /**\n       * Perspective\n       * @see https://tailwindcss.com/docs/perspective\n       */\n      perspective: [{\n        perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Perspective Origin\n       * @see https://tailwindcss.com/docs/perspective-origin\n       */\n      'perspective-origin': [{\n        'perspective-origin': scalePositionWithArbitrary()\n      }],\n      /**\n       * Rotate\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      rotate: [{\n        rotate: scaleRotate()\n      }],\n      /**\n       * Rotate X\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-x': [{\n        'rotate-x': scaleRotate()\n      }],\n      /**\n       * Rotate Y\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-y': [{\n        'rotate-y': scaleRotate()\n      }],\n      /**\n       * Rotate Z\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-z': [{\n        'rotate-z': scaleRotate()\n      }],\n      /**\n       * Scale\n       * @see https://tailwindcss.com/docs/scale\n       */\n      scale: [{\n        scale: scaleScale()\n      }],\n      /**\n       * Scale X\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-x': [{\n        'scale-x': scaleScale()\n      }],\n      /**\n       * Scale Y\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-y': [{\n        'scale-y': scaleScale()\n      }],\n      /**\n       * Scale Z\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-z': [{\n        'scale-z': scaleScale()\n      }],\n      /**\n       * Scale 3D\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-3d': ['scale-3d'],\n      /**\n       * Skew\n       * @see https://tailwindcss.com/docs/skew\n       */\n      skew: [{\n        skew: scaleSkew()\n      }],\n      /**\n       * Skew X\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-x': [{\n        'skew-x': scaleSkew()\n      }],\n      /**\n       * Skew Y\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-y': [{\n        'skew-y': scaleSkew()\n      }],\n      /**\n       * Transform\n       * @see https://tailwindcss.com/docs/transform\n       */\n      transform: [{\n        transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n      }],\n      /**\n       * Transform Origin\n       * @see https://tailwindcss.com/docs/transform-origin\n       */\n      'transform-origin': [{\n        origin: scalePositionWithArbitrary()\n      }],\n      /**\n       * Transform Style\n       * @see https://tailwindcss.com/docs/transform-style\n       */\n      'transform-style': [{\n        transform: ['3d', 'flat']\n      }],\n      /**\n       * Translate\n       * @see https://tailwindcss.com/docs/translate\n       */\n      translate: [{\n        translate: scaleTranslate()\n      }],\n      /**\n       * Translate X\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-x': [{\n        'translate-x': scaleTranslate()\n      }],\n      /**\n       * Translate Y\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-y': [{\n        'translate-y': scaleTranslate()\n      }],\n      /**\n       * Translate Z\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-z': [{\n        'translate-z': scaleTranslate()\n      }],\n      /**\n       * Translate None\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-none': ['translate-none'],\n      // ---------------------\n      // --- Interactivity ---\n      // ---------------------\n      /**\n       * Accent Color\n       * @see https://tailwindcss.com/docs/accent-color\n       */\n      accent: [{\n        accent: scaleColor()\n      }],\n      /**\n       * Appearance\n       * @see https://tailwindcss.com/docs/appearance\n       */\n      appearance: [{\n        appearance: ['none', 'auto']\n      }],\n      /**\n       * Caret Color\n       * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n       */\n      'caret-color': [{\n        caret: scaleColor()\n      }],\n      /**\n       * Color Scheme\n       * @see https://tailwindcss.com/docs/color-scheme\n       */\n      'color-scheme': [{\n        scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n      }],\n      /**\n       * Cursor\n       * @see https://tailwindcss.com/docs/cursor\n       */\n      cursor: [{\n        cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Field Sizing\n       * @see https://tailwindcss.com/docs/field-sizing\n       */\n      'field-sizing': [{\n        'field-sizing': ['fixed', 'content']\n      }],\n      /**\n       * Pointer Events\n       * @see https://tailwindcss.com/docs/pointer-events\n       */\n      'pointer-events': [{\n        'pointer-events': ['auto', 'none']\n      }],\n      /**\n       * Resize\n       * @see https://tailwindcss.com/docs/resize\n       */\n      resize: [{\n        resize: ['none', '', 'y', 'x']\n      }],\n      /**\n       * Scroll Behavior\n       * @see https://tailwindcss.com/docs/scroll-behavior\n       */\n      'scroll-behavior': [{\n        scroll: ['auto', 'smooth']\n      }],\n      /**\n       * Scroll Margin\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-m': [{\n        'scroll-m': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin X\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mx': [{\n        'scroll-mx': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Y\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-my': [{\n        'scroll-my': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Start\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ms': [{\n        'scroll-ms': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin End\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-me': [{\n        'scroll-me': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Top\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mt': [{\n        'scroll-mt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Right\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mr': [{\n        'scroll-mr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Bottom\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mb': [{\n        'scroll-mb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Left\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ml': [{\n        'scroll-ml': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-p': [{\n        'scroll-p': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding X\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-px': [{\n        'scroll-px': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Y\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-py': [{\n        'scroll-py': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Start\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-ps': [{\n        'scroll-ps': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding End\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pe': [{\n        'scroll-pe': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Top\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pt': [{\n        'scroll-pt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Right\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pr': [{\n        'scroll-pr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Bottom\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pb': [{\n        'scroll-pb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Left\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pl': [{\n        'scroll-pl': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Snap Align\n       * @see https://tailwindcss.com/docs/scroll-snap-align\n       */\n      'snap-align': [{\n        snap: ['start', 'end', 'center', 'align-none']\n      }],\n      /**\n       * Scroll Snap Stop\n       * @see https://tailwindcss.com/docs/scroll-snap-stop\n       */\n      'snap-stop': [{\n        snap: ['normal', 'always']\n      }],\n      /**\n       * Scroll Snap Type\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-type': [{\n        snap: ['none', 'x', 'y', 'both']\n      }],\n      /**\n       * Scroll Snap Type Strictness\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-strictness': [{\n        snap: ['mandatory', 'proximity']\n      }],\n      /**\n       * Touch Action\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      touch: [{\n        touch: ['auto', 'none', 'manipulation']\n      }],\n      /**\n       * Touch Action X\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-x': [{\n        'touch-pan': ['x', 'left', 'right']\n      }],\n      /**\n       * Touch Action Y\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-y': [{\n        'touch-pan': ['y', 'up', 'down']\n      }],\n      /**\n       * Touch Action Pinch Zoom\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-pz': ['touch-pinch-zoom'],\n      /**\n       * User Select\n       * @see https://tailwindcss.com/docs/user-select\n       */\n      select: [{\n        select: ['none', 'text', 'all', 'auto']\n      }],\n      /**\n       * Will Change\n       * @see https://tailwindcss.com/docs/will-change\n       */\n      'will-change': [{\n        'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -----------\n      // --- SVG ---\n      // -----------\n      /**\n       * Fill\n       * @see https://tailwindcss.com/docs/fill\n       */\n      fill: [{\n        fill: ['none', ...scaleColor()]\n      }],\n      /**\n       * Stroke Width\n       * @see https://tailwindcss.com/docs/stroke-width\n       */\n      'stroke-w': [{\n        stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n      }],\n      /**\n       * Stroke\n       * @see https://tailwindcss.com/docs/stroke\n       */\n      stroke: [{\n        stroke: ['none', ...scaleColor()]\n      }],\n      // ---------------------\n      // --- Accessibility ---\n      // ---------------------\n      /**\n       * Forced Color Adjust\n       * @see https://tailwindcss.com/docs/forced-color-adjust\n       */\n      'forced-color-adjust': [{\n        'forced-color-adjust': ['auto', 'none']\n      }]\n    },\n    conflictingClassGroups: {\n      overflow: ['overflow-x', 'overflow-y'],\n      overscroll: ['overscroll-x', 'overscroll-y'],\n      inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n      'inset-x': ['right', 'left'],\n      'inset-y': ['top', 'bottom'],\n      flex: ['basis', 'grow', 'shrink'],\n      gap: ['gap-x', 'gap-y'],\n      p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n      px: ['pr', 'pl'],\n      py: ['pt', 'pb'],\n      m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n      mx: ['mr', 'ml'],\n      my: ['mt', 'mb'],\n      size: ['w', 'h'],\n      'font-size': ['leading'],\n      'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n      'fvn-ordinal': ['fvn-normal'],\n      'fvn-slashed-zero': ['fvn-normal'],\n      'fvn-figure': ['fvn-normal'],\n      'fvn-spacing': ['fvn-normal'],\n      'fvn-fraction': ['fvn-normal'],\n      'line-clamp': ['display', 'overflow'],\n      rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n      'rounded-s': ['rounded-ss', 'rounded-es'],\n      'rounded-e': ['rounded-se', 'rounded-ee'],\n      'rounded-t': ['rounded-tl', 'rounded-tr'],\n      'rounded-r': ['rounded-tr', 'rounded-br'],\n      'rounded-b': ['rounded-br', 'rounded-bl'],\n      'rounded-l': ['rounded-tl', 'rounded-bl'],\n      'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n      'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n      'border-w-x': ['border-w-r', 'border-w-l'],\n      'border-w-y': ['border-w-t', 'border-w-b'],\n      'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n      'border-color-x': ['border-color-r', 'border-color-l'],\n      'border-color-y': ['border-color-t', 'border-color-b'],\n      translate: ['translate-x', 'translate-y', 'translate-none'],\n      'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n      'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n      'scroll-mx': ['scroll-mr', 'scroll-ml'],\n      'scroll-my': ['scroll-mt', 'scroll-mb'],\n      'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n      'scroll-px': ['scroll-pr', 'scroll-pl'],\n      'scroll-py': ['scroll-pt', 'scroll-pb'],\n      touch: ['touch-x', 'touch-y', 'touch-pz'],\n      'touch-x': ['touch'],\n      'touch-y': ['touch'],\n      'touch-pz': ['touch']\n    },\n    conflictingClassGroupModifiers: {\n      'font-size': ['leading']\n    },\n    orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n  };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n  cacheSize,\n  prefix,\n  experimentalParseClassName,\n  extend = {},\n  override = {}\n}) => {\n  overrideProperty(baseConfig, 'cacheSize', cacheSize);\n  overrideProperty(baseConfig, 'prefix', prefix);\n  overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n  overrideConfigProperties(baseConfig.theme, override.theme);\n  overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n  overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n  mergeConfigProperties(baseConfig.theme, extend.theme);\n  mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n  mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n  return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n  if (overrideValue !== undefined) {\n    baseObject[overrideKey] = overrideValue;\n  }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n  if (overrideObject) {\n    for (const key in overrideObject) {\n      overrideProperty(baseObject, key, overrideObject[key]);\n    }\n  }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n  if (mergeObject) {\n    for (const key in mergeObject) {\n      mergeArrayProperties(baseObject, mergeObject, key);\n    }\n  }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n  const mergeValue = mergeObject[key];\n  if (mergeValue !== undefined) {\n    baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n  }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\nimport { FieldType, IAddress, ILocation, IField } from '@baishuyun/types';\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\n// 复制文本的核心函数（TypeScript 版本）\nexport async function copyTextToClipboard(text: string): Promise<boolean> {\n  // 校验输入：确保复制的文本是字符串且非空\n  if (typeof text !== 'string' || text.trim() === '') {\n    console.error('要复制的文本必须是非空字符串');\n    return false;\n  }\n\n  try {\n    // 方案1：优先使用现代浏览器的 Clipboard API（更安全、无DOM操作）\n    if (navigator.clipboard && window.isSecureContext) {\n      await navigator.clipboard.writeText(text);\n      console.log('文本复制成功（Clipboard API）');\n      return true;\n    }\n\n    // 方案2：降级使用 execCommand（兼容旧浏览器，需创建临时DOM元素）\n    // 1. 创建临时textarea元素（隐藏，避免影响页面布局）\n    const textarea = document.createElement('textarea');\n    textarea.value = text;\n    textarea.style.position = 'fixed'; // 避免滚动条偏移\n    textarea.style.left = '-9999px';\n    textarea.style.top = '-9999px';\n    document.body.appendChild(textarea);\n\n    // 2. 选中文本并执行复制\n    textarea.focus();\n    textarea.select();\n    const success = document.execCommand('copy');\n\n    // 3. 移除临时元素\n    document.body.removeChild(textarea);\n\n    if (success) {\n      console.log('文本复制成功（execCommand 降级方案）');\n      return true;\n    } else {\n      throw new Error('execCommand 复制失败');\n    }\n  } catch (error) {\n    // 捕获复制失败的异常（如用户拒绝权限、浏览器不支持等）\n    console.error('文本复制失败：', error);\n    return false;\n  }\n}\n\nfunction isOptionArray(value: unknown): value is Array<{ label: string; value: string }> {\n  if (!Array.isArray(value)) {\n    return false;\n  }\n\n  return value.every(\n    (item) =>\n      typeof item === 'object' &&\n      item !== null &&\n      'label' in item &&\n      'value' in item &&\n      typeof (item as any).label === 'string' &&\n      typeof (item as any).value === 'string'\n  );\n}\n\nexport const toHumanReadable = (value: unknown, type: FieldType): string | unknown => {\n  if (type === 'address' && typeof value === 'object') {\n    const v = value as IAddress;\n    return `${v.province} ${v.city} ${v.district} ${v.detail}`;\n  }\n\n  if (type === 'location' && typeof value === 'object') {\n    const v = value as ILocation;\n    const lnglatXY = v.lnglatXY || ['', ''];\n    return `经度: ${lnglatXY[0] || ''}, 纬度: ${lnglatXY[1] || ''}`;\n  }\n\n  if (Array.isArray(value)) {\n    return value.join(', ');\n  }\n\n  if (isOptionArray(value)) {\n    const values = value.map((item) => item.value);\n    return values.join(', ');\n  }\n\n  return value;\n};\n\nexport const isSubformFieldEqual = (f1: IField, f2: IField, widgetArrKey: string = 'value') => {\n  // 不是子表单字段，不进行比较，视为相等\n  if (f1?.widget?.type !== 'subform' || f2?.widget?.type !== 'subform') {\n    return true;\n  }\n\n  const subFields1 = (f1?.widget as any)[widgetArrKey] || [];\n  const subFields2 = (f2?.widget as any)[widgetArrKey] || [];\n\n  // 子表单字段长度不等，视为不同\n  if (subFields1.length !== subFields2.length) {\n    return false;\n  }\n\n  for (let i = 0; i < subFields1.length; i++) {\n    const subField1 = subFields1[i];\n    const subField2 = subFields2[i];\n\n    if (subField1.length !== subField2.length) {\n      return false;\n    }\n  }\n\n  return true;\n};\n","import { useState, useEffect, useRef } from 'react';\n\ninterface UseShadowOptions {\n  /** Shadow DOM挂载的根元素（默认挂到body） */\n  rootEl?: HTMLElement;\n  /** 要注入到Shadow DOM中的样式文本 */\n  style?: string;\n  /** Shadow内部容器的类名 */\n  containerClasses?: string[];\n  /** 包裹Shadow的外层元素类名 */\n  wrapperClasses?: string[];\n  /** 包裹元素的内联样式 */\n  wrapperStyle?: React.CSSProperties;\n\n  extraHtml?: string;\n\n  id: string;\n}\n\n/**\n * 通用的创建Shadow DOM的Hook\n * @param options 配置项：样式、根元素、类名等\n * @returns Shadow DOM内部的容器元素（用于React Portal挂载）\n */\nexport const useShadow = ({\n  id,\n  style = '',\n  rootEl,\n  containerClasses = [],\n  wrapperClasses = [],\n  wrapperStyle = {},\n  extraHtml = '',\n}: UseShadowOptions): { shadowContainer: HTMLElement | null; destroy: () => void } => {\n  const [shadowContainer, setShadowContainer] = useState<HTMLElement | null>(null);\n  const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n  useEffect(() => {\n    wrapperRef.current?.classList.add(...wrapperClasses);\n    shadowContainer?.classList.add(...containerClasses);\n  }, [wrapperClasses, containerClasses]);\n\n  useEffect(() => {\n    if (wrapperRef.current) {\n      Object.entries(wrapperStyle).forEach(([key, value]) => {\n        if (value !== undefined) {\n          // @ts-ignore\n          wrapperRef.current!.style[key as any] = value;\n        }\n      });\n    }\n  }, [wrapperStyle]);\n\n  useEffect(() => {\n    // Cleanup previous shadow container if it exists\n    if (wrapperRef.current && wrapperRef.current.parentNode) {\n      wrapperRef.current.parentNode.removeChild(wrapperRef.current);\n      wrapperRef.current = null;\n    }\n\n    try {\n      // 1. 创建外层包裹元素（挂载Shadow Root的载体）\n      const wrapperEl = document.createElement('div');\n      wrapperEl.classList.add(...wrapperClasses, 'wrapper');\n      // wrapperEl.style.height = '100%';\n      wrapperRef.current = wrapperEl;\n\n      // apply wrapper styles\n      Object.entries(wrapperStyle).forEach(([key, value]) => {\n        if (value !== undefined) {\n          // @ts-ignore\n          wrapperEl.style[key as any] = value;\n        }\n      });\n\n      // 2. 创建并挂载Shadow Root\n      const shadowRoot = wrapperEl.attachShadow({ mode: 'open' });\n\n      // 注入额外的HTML内容\n      if (extraHtml) {\n        shadowRoot.innerHTML = extraHtml;\n      }\n\n      // 3. 注入样式到Shadow DOM\n      if (style) {\n        const styleEl = document.createElement('style');\n        styleEl.textContent = style;\n        shadowRoot.appendChild(styleEl);\n      }\n\n      // 4. 创建Shadow内部的容器（最终挂载React Portal的元素）\n      const containerEl = document.createElement('div');\n      containerEl.classList.add(...containerClasses, 'shadow-container');\n      shadowRoot.appendChild(containerEl);\n\n      // 5. 将外层元素挂载到指定根节点\n      const mountRoot = rootEl || document.body;\n      mountRoot.appendChild(wrapperEl);\n\n      setShadowContainer(containerEl);\n    } catch (error) {\n      console.error('创建Shadow DOM失败:', error);\n      setShadowContainer(null);\n    }\n\n    // Cleanup on unmount or when rootEl changes\n    // return () => {\n    //   if (wrapperRef.current && wrapperRef.current.parentNode) {\n    //     wrapperRef.current.parentNode.removeChild(wrapperRef.current);\n    //     wrapperRef.current = null;\n    //   }\n    // };\n  }, [rootEl]); // Recreate when rootEl changes\n\n  if (shadowContainer) {\n    shadowContainer.id = id;\n  }\n\n  return {\n    shadowContainer,\n    destroy: () => {\n      if (wrapperRef.current && wrapperRef.current.parentNode) {\n        wrapperRef.current.parentNode.removeChild(wrapperRef.current);\n        wrapperRef.current = null;\n      }\n    },\n  };\n};\n","import { FormIconOption } from \"../types\";\nimport { FieldType } from \"@baishuyun/types\";\n\nexport const BotImgUrl = `\n  url(data:image/png;base64,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)\n  `;\n\nexport const WarningImgUrl = `\nurl(data:image/png;base64,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)`;\n\nexport const ChatHeaderBgImgUrl = `url(data:image/png;base64,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)`;\n\nexport const transCls = 'transition-all duration-200 ease-out';\n// Form icon data from iconfont.json (icons with name starting with \"表单\")\n\nexport const FORM_ICON_OPTIONS: FormIconOption[] = [\n  { id: 'biaodan1', code: '&#xe814;', label: '表单1', value: 25 },\n  { id: 'biaodan2', code: '&#xe81d;', label: '表单2', value: 26 },\n  { id: 'biaodan3', code: '&#xe81c;', label: '表单3', value: 27 },\n  { id: 'biaodan4', code: '&#xe81a;', label: '表单4', value: 28 },\n  { id: 'biaodan5', code: '&#xe813;', label: '表单5', value: 29 },\n  { id: 'biaodan6', code: '&#xe81b;', label: '表单6', value: 30 },\n  { id: 'biaodan7', code: '&#xe818;', label: '表单7', value: 31 },\n  { id: 'biaodan8', code: '&#xe819;', label: '表单8', value: 32 },\n  { id: 'biaodan9', code: '&#xe817;', label: '表单9', value: 33 },\n  { id: 'biaodan10', code: '&#xe816;', label: '表单10', value: 34 },\n  { id: 'biaodan11', code: '&#xe810;', label: '表单11', value: 35 },\n  { id: 'biaodan12', code: '&#xe815;', label: '表单12', value: 36 },\n  { id: 'biaodan13', code: '&#xe812;', label: '表单13', value: 37 },\n  { id: 'biaodan14', code: '&#xe811;', label: '表单14', value: 38 },\n  { id: 'biaodan15', code: '&#xe80e;', label: '表单15', value: 39 },\n  { id: 'biaodan16', code: '&#xe80f;', label: '表单16', value: 40 },\n  { id: 'biaodan17', code: '&#xe80d;', label: '表单17', value: 41 },\n  { id: 'biaodan18', code: '&#xe807;', label: '表单18', value: 42 },\n  { id: 'biaodan19', code: '&#xe80b;', label: '表单19', value: 43 },\n  { id: 'biaodan20', code: '&#xe80a;', label: '表单20', value: 44 },\n  { id: 'biaodan21', code: '&#xe80c;', label: '表单21', value: 45 },\n  { id: 'biaodan22', code: '&#xe809;', label: '表单22', value: 46 },\n  { id: 'biaodan23', code: '&#xe808;', label: '表单23', value: 47 },\n  { id: 'biaodan24', code: '&#xe805;', label: '表单24', value: 48 },\n  { id: 'biaodan25', code: '&#xe7ff;', label: '表单25', value: 49 },\n  { id: 'biaodan26', code: '&#xe803;', label: '表单26', value: 50 },\n  { id: 'biaodan27', code: '&#xe806;', label: '表单27', value: 51 },\n  { id: 'biaodan28', code: '&#xe802;', label: '表单28', value: 52 },\n  { id: 'biaodan29', code: '&#xe800;', label: '表单29', value: 53 },\n  { id: 'biaodan30', code: '&#xe804;', label: '表单30', value: 54 },\n  { id: 'biaodan31', code: '&#xe801;', label: '表单31', value: 55 },\n  { id: 'biaodan32', code: '&#xe7fe;', label: '表单32', value: 56 },\n  { id: 'biaodan33', code: '&#xe7fc;', label: '表单33', value: 57 },\n  { id: 'biaodan34', code: '&#xe7fd;', label: '表单34', value: 58 },\n  { id: 'biaodan35', code: '&#xe7fb;', label: '表单35', value: 59 },\n  { id: 'biaodan36', code: '&#xe7fa;', label: '表单36', value: 60 },\n];\n\nexport const FieldTypeNameMap: Record<FieldType, string> = {\n  text: '输入框',\n  password: '密码输入框',\n  location: '定位',\n  datetime: '日期时间选择器',\n  radiogroup: '单选框',\n  radio: '单选框',\n  combo: '下拉框',\n  address: '地址',\n  button: '按钮',\n  textarea: '多行输入框',\n  combocheck: '多选下拉框',\n  checkboxgroup: '多选框组',\n  separator: '分割线',\n  upload: '附件上传',\n  number: '数字输入框',\n  dataload: '数据加载',\n  image: '图片上传',\n  signature: '签名',\n  dept: '部门选择',\n  user: '成员选择',\n  usergroup: '成员多选',\n  deptgroup: '部门多选',\n  unknown: '未知类型',\n  sn: '流水号',\n  formula: '公式字段',\n  linkdata: '关联数据',\n  linkquery: '关联查询',\n  subform: '子表单',\n  flowState: '流程状态',\n  flowstate: '流程状态',\n};\n\nexport const FIELD_ICON_CODE_MAP: Record<FieldType, string> = {\n  address: '&#xe881;',\n  subform: '&#xe847;',\n  password: '&#xe854;',\n  button: '&#xe8e8;',\n  textarea: '&#xe84f;',\n  datetime: '&#xe849;',\n  text: '&#xe854;',\n  location: '&#xe87f;',\n  radiogroup: '&#xe853;',\n  radio: '&#xe861;',\n  combo: '&#xe84a;',\n  formula: '',\n  flowState: '',\n  flowstate: '',\n  combocheck: '&#xe84b;',\n  separator: '&#xe850;',\n  checkboxgroup: '&#xe84c;',\n  upload: '&#xe621;',\n  number: '&#xe846;',\n  image: '&#xe880;',\n  signature: '&#xe87e;',\n  user: '&#xe856;',\n  dataload: '&#xe848;',\n  linkdata: '&#xe857;',\n  linkquery: '&#xe857;',\n  usergroup: '&#xe851;',\n  dept: '&#xe84d;',\n  sn: '&#xe882;',\n  deptgroup: '&#xe852;',\n  unknown: '&#xe848;',\n};\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function getComponentNameFromType(type) {\n      if (null == type) return null;\n      if (\"function\" === typeof type)\n        return type.$$typeof === REACT_CLIENT_REFERENCE\n          ? null\n          : type.displayName || type.name || null;\n      if (\"string\" === typeof type) return type;\n      switch (type) {\n        case REACT_FRAGMENT_TYPE:\n          return \"Fragment\";\n        case REACT_PROFILER_TYPE:\n          return \"Profiler\";\n        case REACT_STRICT_MODE_TYPE:\n          return \"StrictMode\";\n        case REACT_SUSPENSE_TYPE:\n          return \"Suspense\";\n        case REACT_SUSPENSE_LIST_TYPE:\n          return \"SuspenseList\";\n        case REACT_ACTIVITY_TYPE:\n          return \"Activity\";\n      }\n      if (\"object\" === typeof type)\n        switch (\n          (\"number\" === typeof type.tag &&\n            console.error(\n              \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n            ),\n          type.$$typeof)\n        ) {\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_CONTEXT_TYPE:\n            return type.displayName || \"Context\";\n          case REACT_CONSUMER_TYPE:\n            return (type._context.displayName || \"Context\") + \".Consumer\";\n          case REACT_FORWARD_REF_TYPE:\n            var innerType = type.render;\n            type = type.displayName;\n            type ||\n              ((type = innerType.displayName || innerType.name || \"\"),\n              (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n            return type;\n          case REACT_MEMO_TYPE:\n            return (\n              (innerType = type.displayName || null),\n              null !== innerType\n                ? innerType\n                : getComponentNameFromType(type.type) || \"Memo\"\n            );\n          case REACT_LAZY_TYPE:\n            innerType = type._payload;\n            type = type._init;\n            try {\n              return getComponentNameFromType(type(innerType));\n            } catch (x) {}\n        }\n      return null;\n    }\n    function testStringCoercion(value) {\n      return \"\" + value;\n    }\n    function checkKeyStringCoercion(value) {\n      try {\n        testStringCoercion(value);\n        var JSCompiler_inline_result = !1;\n      } catch (e) {\n        JSCompiler_inline_result = !0;\n      }\n      if (JSCompiler_inline_result) {\n        JSCompiler_inline_result = console;\n        var JSCompiler_temp_const = JSCompiler_inline_result.error;\n        var JSCompiler_inline_result$jscomp$0 =\n          (\"function\" === typeof Symbol &&\n            Symbol.toStringTag &&\n            value[Symbol.toStringTag]) ||\n          value.constructor.name ||\n          \"Object\";\n        JSCompiler_temp_const.call(\n          JSCompiler_inline_result,\n          \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n          JSCompiler_inline_result$jscomp$0\n        );\n        return testStringCoercion(value);\n      }\n    }\n    function getTaskName(type) {\n      if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n      if (\n        \"object\" === typeof type &&\n        null !== type &&\n        type.$$typeof === REACT_LAZY_TYPE\n      )\n        return \"<...>\";\n      try {\n        var name = getComponentNameFromType(type);\n        return name ? \"<\" + name + \">\" : \"<...>\";\n      } catch (x) {\n        return \"<...>\";\n      }\n    }\n    function getOwner() {\n      var dispatcher = ReactSharedInternals.A;\n      return null === dispatcher ? null : dispatcher.getOwner();\n    }\n    function UnknownOwner() {\n      return Error(\"react-stack-top-frame\");\n    }\n    function hasValidKey(config) {\n      if (hasOwnProperty.call(config, \"key\")) {\n        var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n        if (getter && getter.isReactWarning) return !1;\n      }\n      return void 0 !== config.key;\n    }\n    function defineKeyPropWarningGetter(props, displayName) {\n      function warnAboutAccessingKey() {\n        specialPropKeyWarningShown ||\n          ((specialPropKeyWarningShown = !0),\n          console.error(\n            \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n            displayName\n          ));\n      }\n      warnAboutAccessingKey.isReactWarning = !0;\n      Object.defineProperty(props, \"key\", {\n        get: warnAboutAccessingKey,\n        configurable: !0\n      });\n    }\n    function elementRefGetterWithDeprecationWarning() {\n      var componentName = getComponentNameFromType(this.type);\n      didWarnAboutElementRef[componentName] ||\n        ((didWarnAboutElementRef[componentName] = !0),\n        console.error(\n          \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n        ));\n      componentName = this.props.ref;\n      return void 0 !== componentName ? componentName : null;\n    }\n    function ReactElement(type, key, props, owner, debugStack, debugTask) {\n      var refProp = props.ref;\n      type = {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key,\n        props: props,\n        _owner: owner\n      };\n      null !== (void 0 !== refProp ? refProp : null)\n        ? Object.defineProperty(type, \"ref\", {\n            enumerable: !1,\n            get: elementRefGetterWithDeprecationWarning\n          })\n        : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n      type._store = {};\n      Object.defineProperty(type._store, \"validated\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: 0\n      });\n      Object.defineProperty(type, \"_debugInfo\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: null\n      });\n      Object.defineProperty(type, \"_debugStack\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugStack\n      });\n      Object.defineProperty(type, \"_debugTask\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugTask\n      });\n      Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n      return type;\n    }\n    function jsxDEVImpl(\n      type,\n      config,\n      maybeKey,\n      isStaticChildren,\n      debugStack,\n      debugTask\n    ) {\n      var children = config.children;\n      if (void 0 !== children)\n        if (isStaticChildren)\n          if (isArrayImpl(children)) {\n            for (\n              isStaticChildren = 0;\n              isStaticChildren < children.length;\n              isStaticChildren++\n            )\n              validateChildKeys(children[isStaticChildren]);\n            Object.freeze && Object.freeze(children);\n          } else\n            console.error(\n              \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n            );\n        else validateChildKeys(children);\n      if (hasOwnProperty.call(config, \"key\")) {\n        children = getComponentNameFromType(type);\n        var keys = Object.keys(config).filter(function (k) {\n          return \"key\" !== k;\n        });\n        isStaticChildren =\n          0 < keys.length\n            ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n            : \"{key: someKey}\";\n        didWarnAboutKeySpread[children + isStaticChildren] ||\n          ((keys =\n            0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n          console.error(\n            'A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />',\n            isStaticChildren,\n            children,\n            keys,\n            children\n          ),\n          (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n      }\n      children = null;\n      void 0 !== maybeKey &&\n        (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n      hasValidKey(config) &&\n        (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n      if (\"key\" in config) {\n        maybeKey = {};\n        for (var propName in config)\n          \"key\" !== propName && (maybeKey[propName] = config[propName]);\n      } else maybeKey = config;\n      children &&\n        defineKeyPropWarningGetter(\n          maybeKey,\n          \"function\" === typeof type\n            ? type.displayName || type.name || \"Unknown\"\n            : type\n        );\n      return ReactElement(\n        type,\n        children,\n        maybeKey,\n        getOwner(),\n        debugStack,\n        debugTask\n      );\n    }\n    function validateChildKeys(node) {\n      isValidElement(node)\n        ? node._store && (node._store.validated = 1)\n        : \"object\" === typeof node &&\n          null !== node &&\n          node.$$typeof === REACT_LAZY_TYPE &&\n          (\"fulfilled\" === node._payload.status\n            ? isValidElement(node._payload.value) &&\n              node._payload.value._store &&\n              (node._payload.value._store.validated = 1)\n            : node._store && (node._store.validated = 1));\n    }\n    function isValidElement(object) {\n      return (\n        \"object\" === typeof object &&\n        null !== object &&\n        object.$$typeof === REACT_ELEMENT_TYPE\n      );\n    }\n    var React = require(\"react\"),\n      REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n      REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n      ReactSharedInternals =\n        React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n      hasOwnProperty = Object.prototype.hasOwnProperty,\n      isArrayImpl = Array.isArray,\n      createTask = console.createTask\n        ? console.createTask\n        : function () {\n            return null;\n          };\n    React = {\n      react_stack_bottom_frame: function (callStackForError) {\n        return callStackForError();\n      }\n    };\n    var specialPropKeyWarningShown;\n    var didWarnAboutElementRef = {};\n    var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n      React,\n      UnknownOwner\n    )();\n    var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n    var didWarnAboutKeySpread = {};\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.jsx = function (type, config, maybeKey) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !1,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n    exports.jsxs = function (type, config, maybeKey) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !0,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","export const CalendarIcon = ({ className }: { className?: string }) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" className={className}>\n  <path d=\"M4.396 3.383H4.576C4.846 3.383 4.95 2.993 4.95 2.723V0.569C4.95 0.299 4.815 0 4.546 0H4.366C4.096 0 3.978 0.299 3.978 0.569V2.813C3.978 2.993 4.128 3.383 4.396 3.383ZM9.322 3.383H9.5C9.77 3.383 9.89 2.993 9.89 2.723V0.569C9.89 0.299 9.783 0 9.516 0H9.335C9.066 0 8.933 0.299 8.933 0.569V2.813C8.933 2.993 9.142 3.383 9.322 3.383ZM12.147 0.971053L10.5 0.971V1.924L12.147 1.92405C12.685 1.92405 13.135 2.45405 13.135 2.99305V3.89105H0.928V2.99305C0.928 2.45505 1.378 1.92505 1.917 1.92505L3.5 1.925V0.972L2.005 0.972053C0.928 0.972053 0 2.09505 0 3.08205V11.7911C0 12.7791 0.905053 14 1.98305 14H12.2131C13.2011 14 14 12.8681 14 11.7911V3.08305C13.912 2.09605 13.224 0.973053 12.146 0.973053V0.970053L12.147 0.971053ZM13.084 11.7011C13.084 12.3291 12.7541 13.044 12.1241 13.044H1.98505C1.44705 13.044 0.959 12.3291 0.959 11.7911V4.78805H13.088V11.7001H13.086L13.084 11.7011ZM8.63004 5.94605C8.96004 5.94605 9.17804 6.34705 9.07204 6.71005L9.03904 6.80005L6.69705 11.9791C6.57005 12.2561 6.28405 12.3561 6.05705 12.2021C5.85705 12.0641 5.77005 11.7721 5.84205 11.5151L5.87705 11.4191L7.83205 7.09705H5.35005C5.12005 7.09705 4.92805 6.89505 4.88905 6.62605L4.88105 6.52205C4.88105 6.24005 5.04705 6.00505 5.26505 5.95605L5.34905 5.94705L8.63004 5.94605ZM8.5 0.972V1.924H5.43V0.972H8.502H8.5Z\" fill=\"#666666\"/>\n</svg>\n);\n","// src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction composeRefs(...refs) {\n  return (node) => {\n    let hasCleanup = false;\n    const cleanups = refs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup == \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup == \"function\") {\n            cleanup();\n          } else {\n            setRef(refs[i], null);\n          }\n        }\n      };\n    }\n  };\n}\nfunction useComposedRefs(...refs) {\n  return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n  composeRefs,\n  useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n  const Slot2 = React.forwardRef((props, forwardedRef) => {\n    let { children, ...slotProps } = props;\n    let slottableElement = null;\n    let hasSlottable = false;\n    const newChildren = [];\n    if (isLazyComponent(children) && typeof use === \"function\") {\n      children = use(children._payload);\n    }\n    React.Children.forEach(children, (maybeSlottable) => {\n      if (isSlottable(maybeSlottable)) {\n        hasSlottable = true;\n        const slottable = maybeSlottable;\n        let child = \"child\" in slottable.props ? slottable.props.child : slottable.props.children;\n        if (isLazyComponent(child) && typeof use === \"function\") {\n          child = use(child._payload);\n        }\n        slottableElement = getSlottableElementFromSlottable(slottable, child);\n        newChildren.push(slottableElement?.props?.children);\n      } else {\n        newChildren.push(maybeSlottable);\n      }\n    });\n    if (slottableElement) {\n      slottableElement = React.cloneElement(slottableElement, void 0, newChildren);\n    } else if (\n      // A `Slottable` was found but it didn't resolve to a single element (e.g.\n      // it wrapped multiple elements, text, or a render-prop `child` that\n      // wasn't an element). Don't fall back to treating the `Slottable` wrapper\n      // itself as the slot target — throw a descriptive error below instead.\n      !hasSlottable && React.Children.count(children) === 1 && React.isValidElement(children)\n    ) {\n      slottableElement = children;\n    }\n    const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0;\n    const composedRef = useComposedRefs(forwardedRef, slottableElementRef);\n    if (!slottableElement) {\n      if (children || children === 0) {\n        throw new Error(\n          hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName)\n        );\n      }\n      return children;\n    }\n    const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});\n    if (slottableElement.type !== React.Fragment) {\n      mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;\n    }\n    return React.cloneElement(slottableElement, mergedProps);\n  });\n  Slot2.displayName = `${ownerName}.Slot`;\n  return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\nvar SLOTTABLE_IDENTIFIER = Symbol.for(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n  const Slottable2 = (props) => \"child\" in props ? props.children(props.child) : props.children;\n  Slottable2.displayName = `${ownerName}.Slottable`;\n  Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n  return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nvar getSlottableElementFromSlottable = (slottable, child) => {\n  if (\"child\" in slottable.props) {\n    const child2 = slottable.props.child;\n    if (!React.isValidElement(child2)) return null;\n    return React.cloneElement(child2, void 0, slottable.props.children(child2.props.children));\n  }\n  return React.isValidElement(child) ? child : null;\n};\nfunction mergeProps(slotProps, childProps) {\n  const overrideProps = { ...childProps };\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args) => {\n          const result = childPropValue(...args);\n          slotPropValue(...args);\n          return result;\n        };\n      } else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    } else if (propName === \"style\") {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === \"className\") {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n    }\n  }\n  return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nfunction isSlottable(child) {\n  return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nfunction isLazyComponent(element) {\n  return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\nfunction isPromiseLike(value) {\n  return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nvar createSlotError = (ownerName) => {\n  return `${ownerName} failed to slot onto its children. Expected a single React element child or \\`Slottable\\`.`;\n};\nvar createSlottableError = (ownerName) => {\n  return `${ownerName} failed to slot onto its \\`Slottable\\`. Expected \\`Slottable\\` to receive a single React element child.`;\n};\nvar use = React[\" use \".trim().toString()];\nexport {\n  Slot as Root,\n  Slot,\n  Slottable,\n  createSlot,\n  createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n        var _config_compoundVariants;\n        if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n        const { variants, defaultVariants } = config;\n        const getVariantClassNames = Object.keys(variants).map((variant)=>{\n            const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n            const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n            if (variantProp === null) return null;\n            const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n            return variants[variant][variantKey];\n        });\n        const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n            let [key, value] = param;\n            if (value === undefined) {\n                return acc;\n            }\n            acc[key] = value;\n            return acc;\n        }, {});\n        const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n            let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n            return Object.entries(compoundVariantOptions).every((param)=>{\n                let [key, value] = param;\n                return Array.isArray(value) ? value.includes({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                }[key]) : ({\n                    ...defaultVariants,\n                    ...propsWithoutUndefined\n                })[key] === value;\n            }) ? [\n                ...acc,\n                cvClass,\n                cvClassName\n            ] : acc;\n        }, []);\n        return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n    };\n\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../lib/utils';\n\nconst buttonVariants = cva(\n  'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-[14px] transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-[4px]',\n  {\n    variants: {\n      variant: {\n        default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n        destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n        outline:\n          'border border-[#e0e0e0] bg-white hover:bg-[#e0e0e0] text-[#121111]',\n        secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n        ghost: 'hover:bg-accent hover:text-accent-foreground',\n        link: 'text-primary underline-offset-4 hover:underline',\n        entry: '',\n      },\n      size: {\n        default: 'h-[34px] px-4 py-2',\n        sm: 'h-8 rounded-md px-3 text-xs',\n        lg: 'h-10 rounded-md px-8',\n        icon: 'h-[24px] w-[24px]',\n        entry: 'h-[30px] px-1.5 py-0 gap-1.5',\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n      size: 'default',\n    },\n  }\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : 'button';\n    return (\n      <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />\n    );\n  }\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n  return function handleEvent(event) {\n    originalEventHandler?.(event);\n    if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n      return ourEventHandler?.(event);\n    }\n  };\n}\nfunction getOwnerWindow(element) {\n  if (!canUseDOM) {\n    throw new Error(\"Cannot access window outside of the DOM\");\n  }\n  return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n  if (!canUseDOM) {\n    throw new Error(\"Cannot access document outside of the DOM\");\n  }\n  return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n  const { activeElement } = getOwnerDocument(node);\n  if (!activeElement?.nodeName) {\n    return null;\n  }\n  if (isFrame(activeElement) && activeElement.contentDocument) {\n    return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n  }\n  if (activeDescendant) {\n    const id = activeElement.getAttribute(\"aria-activedescendant\");\n    if (id) {\n      const element = getOwnerDocument(activeElement).getElementById(id);\n      if (element) {\n        return element;\n      }\n    }\n  }\n  return activeElement;\n}\nfunction isFrame(element) {\n  return element.tagName === \"IFRAME\";\n}\nexport {\n  canUseDOM,\n  composeEventHandlers,\n  getActiveElement,\n  getOwnerDocument,\n  getOwnerWindow,\n  isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n  const Context = React.createContext(defaultContext);\n  Context.displayName = rootComponentName + \"Context\";\n  const Provider = (props) => {\n    const { children, ...context } = props;\n    const value = React.useMemo(() => context, Object.values(context));\n    return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n  };\n  Provider.displayName = rootComponentName + \"Provider\";\n  function useContext2(consumerName) {\n    const context = React.useContext(Context);\n    if (context) return context;\n    if (defaultContext !== void 0) return defaultContext;\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n  return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n  let defaultContexts = [];\n  function createContext3(rootComponentName, defaultContext) {\n    const BaseContext = React.createContext(defaultContext);\n    BaseContext.displayName = rootComponentName + \"Context\";\n    const index = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n    const Provider = (props) => {\n      const { scope, children, ...context } = props;\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const value = React.useMemo(() => context, Object.values(context));\n      return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n    };\n    Provider.displayName = rootComponentName + \"Provider\";\n    function useContext2(consumerName, scope) {\n      const Context = scope?.[scopeName]?.[index] || BaseContext;\n      const context = React.useContext(Context);\n      if (context) return context;\n      if (defaultContext !== void 0) return defaultContext;\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    return [Provider, useContext2];\n  }\n  const createScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React.createContext(defaultContext);\n    });\n    return function useScope(scope) {\n      const contexts = scope?.[scopeName] || scopeContexts;\n      return React.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n  createScope.scopeName = scopeName;\n  return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1) return baseScope;\n  const createScope = () => {\n    const scopeHooks = scopes.map((createScope2) => ({\n      useScope: createScope2(),\n      scopeName: createScope2.scopeName\n    }));\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes2, ...currentScope };\n      }, {});\n      return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\nexport {\n  createContext2 as createContext,\n  createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n  useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n  const [id, setId] = React.useState(useReactId());\n  useLayoutEffect(() => {\n    if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n  }, [deterministicId]);\n  return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n  useId\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n  prop,\n  defaultProp,\n  onChange = () => {\n  },\n  caller\n}) {\n  const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n    defaultProp,\n    onChange\n  });\n  const isControlled = prop !== void 0;\n  const value = isControlled ? prop : uncontrolledProp;\n  if (true) {\n    const isControlledRef = React.useRef(prop !== void 0);\n    React.useEffect(() => {\n      const wasControlled = isControlledRef.current;\n      if (wasControlled !== isControlled) {\n        const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n        const to = isControlled ? \"controlled\" : \"uncontrolled\";\n        console.warn(\n          `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n        );\n      }\n      isControlledRef.current = isControlled;\n    }, [isControlled, caller]);\n  }\n  const setValue = React.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n        if (value2 !== prop) {\n          onChangeRef.current?.(value2);\n        }\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, onChangeRef]\n  );\n  return [value, setValue];\n}\nfunction useUncontrolledState({\n  defaultProp,\n  onChange\n}) {\n  const [value, setValue] = React.useState(defaultProp);\n  const prevValueRef = React.useRef(value);\n  const onChangeRef = React.useRef(onChange);\n  useInsertionEffect(() => {\n    onChangeRef.current = onChange;\n  }, [onChange]);\n  React.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      onChangeRef.current?.(value);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef]);\n  return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n  const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n  const isControlled = controlledState !== void 0;\n  const onChange = useEffectEvent(onChangeProp);\n  if (true) {\n    const isControlledRef = React2.useRef(controlledState !== void 0);\n    React2.useEffect(() => {\n      const wasControlled = isControlledRef.current;\n      if (wasControlled !== isControlled) {\n        const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n        const to = isControlled ? \"controlled\" : \"uncontrolled\";\n        console.warn(\n          `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n        );\n      }\n      isControlledRef.current = isControlled;\n    }, [isControlled, caller]);\n  }\n  const args = [{ ...initialArg, state: defaultProp }];\n  if (init) {\n    args.push(init);\n  }\n  const [internalState, dispatch] = React2.useReducer(\n    (state2, action) => {\n      if (action.type === SYNC_STATE) {\n        return { ...state2, state: action.state };\n      }\n      const next = reducer(state2, action);\n      if (isControlled && !Object.is(next.state, state2.state)) {\n        onChange(next.state);\n      }\n      return next;\n    },\n    ...args\n  );\n  const uncontrolledState = internalState.state;\n  const prevValueRef = React2.useRef(uncontrolledState);\n  React2.useEffect(() => {\n    if (prevValueRef.current !== uncontrolledState) {\n      prevValueRef.current = uncontrolledState;\n      if (!isControlled) {\n        onChange(uncontrolledState);\n      }\n    }\n  }, [uncontrolledState, prevValueRef, isControlled]);\n  const state = React2.useMemo(() => {\n    const isControlled2 = controlledState !== void 0;\n    if (isControlled2) {\n      return { ...internalState, state: controlledState };\n    }\n    return internalState;\n  }, [internalState, controlledState]);\n  React2.useEffect(() => {\n    if (isControlled && !Object.is(controlledState, internalState.state)) {\n      dispatch({ type: SYNC_STATE, state: controlledState });\n    }\n  }, [controlledState, internalState.state, isControlled]);\n  return [state, dispatch];\n}\nexport {\n  useControllableState,\n  useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n  \"a\",\n  \"button\",\n  \"div\",\n  \"form\",\n  \"h2\",\n  \"h3\",\n  \"img\",\n  \"input\",\n  \"label\",\n  \"li\",\n  \"nav\",\n  \"ol\",\n  \"p\",\n  \"select\",\n  \"span\",\n  \"svg\",\n  \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n  const Slot = createSlot(`Primitive.${node}`);\n  const Node = React.forwardRef((props, forwardedRef) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp = asChild ? Slot : node;\n    if (typeof window !== \"undefined\") {\n      window[Symbol.for(\"radix-ui\")] = true;\n    }\n    return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n  });\n  Node.displayName = `Primitive.${node}`;\n  return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n  Primitive,\n  Root,\n  dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n  const callbackRef = React.useRef(callback);\n  React.useEffect(() => {\n    callbackRef.current = callback;\n  });\n  return React.useMemo(() => ((...args) => callbackRef.current?.(...args)), []);\n}\nexport {\n  useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n  const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n  React.useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.key === \"Escape\") {\n        onEscapeKeyDown(event);\n      }\n    };\n    ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n  }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n  useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n  layers: /* @__PURE__ */ new Set(),\n  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n  branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      disableOutsidePointerEvents = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      ...layerProps\n    } = props;\n    const context = React.useContext(DismissableLayerContext);\n    const [node, setNode] = React.useState(null);\n    const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n    const [, force] = React.useState({});\n    const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n    const layers = Array.from(context.layers);\n    const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n    const index = node ? layers.indexOf(node) : -1;\n    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n    const pointerDownOutside = usePointerDownOutside((event) => {\n      const target = event.target;\n      const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n      onPointerDownOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    const focusOutside = useFocusOutside((event) => {\n      const target = event.target;\n      const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (isFocusInBranch) return;\n      onFocusOutside?.(event);\n      onInteractOutside?.(event);\n      if (!event.defaultPrevented) onDismiss?.();\n    }, ownerDocument);\n    useEscapeKeydown((event) => {\n      const isHighestLayer = index === context.layers.size - 1;\n      if (!isHighestLayer) return;\n      onEscapeKeyDown?.(event);\n      if (!event.defaultPrevented && onDismiss) {\n        event.preventDefault();\n        onDismiss();\n      }\n    }, ownerDocument);\n    React.useEffect(() => {\n      if (!node) return;\n      if (disableOutsidePointerEvents) {\n        if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n          originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n          ownerDocument.body.style.pointerEvents = \"none\";\n        }\n        context.layersWithOutsidePointerEventsDisabled.add(node);\n      }\n      context.layers.add(node);\n      dispatchUpdate();\n      return () => {\n        if (disableOutsidePointerEvents) {\n          context.layersWithOutsidePointerEventsDisabled.delete(node);\n          if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n            ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n          }\n        }\n      };\n    }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n    React.useEffect(() => {\n      return () => {\n        if (!node) return;\n        context.layers.delete(node);\n        context.layersWithOutsidePointerEventsDisabled.delete(node);\n        dispatchUpdate();\n      };\n    }, [node, context]);\n    React.useEffect(() => {\n      const handleUpdate = () => force({});\n      document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n      return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        ...layerProps,\n        ref: composedRefs,\n        style: {\n          pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n          ...props.style\n        },\n        onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n        onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n        onPointerDownCapture: composeEventHandlers(\n          props.onPointerDownCapture,\n          pointerDownOutside.onPointerDownCapture\n        )\n      }\n    );\n  }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n  const context = React.useContext(DismissableLayerContext);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      context.branches.add(node);\n      return () => {\n        context.branches.delete(node);\n      };\n    }\n  }, [context.branches]);\n  return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n  const isPointerInsideReactTreeRef = React.useRef(false);\n  const handleClickRef = React.useRef(() => {\n  });\n  React.useEffect(() => {\n    const handlePointerDown = (event) => {\n      if (event.target && !isPointerInsideReactTreeRef.current) {\n        let handleAndDispatchPointerDownOutsideEvent2 = function() {\n          handleAndDispatchCustomEvent(\n            POINTER_DOWN_OUTSIDE,\n            handlePointerDownOutside,\n            eventDetail,\n            { discrete: true }\n          );\n        };\n        var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n        const eventDetail = { originalEvent: event };\n        if (event.pointerType === \"touch\") {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n          ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n        } else {\n          handleAndDispatchPointerDownOutsideEvent2();\n        }\n      } else {\n        ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n      }\n      isPointerInsideReactTreeRef.current = false;\n    };\n    const timerId = window.setTimeout(() => {\n      ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n    }, 0);\n    return () => {\n      window.clearTimeout(timerId);\n      ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n      ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n    };\n  }, [ownerDocument, handlePointerDownOutside]);\n  return {\n    // ensures we check React component tree (not just DOM tree)\n    onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n  };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n  const handleFocusOutside = useCallbackRef(onFocusOutside);\n  const isFocusInsideReactTreeRef = React.useRef(false);\n  React.useEffect(() => {\n    const handleFocus = (event) => {\n      if (event.target && !isFocusInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n        handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n          discrete: false\n        });\n      }\n    };\n    ownerDocument.addEventListener(\"focusin\", handleFocus);\n    return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n  }, [ownerDocument, handleFocusOutside]);\n  return {\n    onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n    onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n  };\n}\nfunction dispatchUpdate() {\n  const event = new CustomEvent(CONTEXT_UPDATE);\n  document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n  const target = detail.originalEvent.target;\n  const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n  if (handler) target.addEventListener(name, handler, { once: true });\n  if (discrete) {\n    dispatchDiscreteCustomEvent(target, event);\n  } else {\n    target.dispatchEvent(event);\n  }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n  Branch,\n  DismissableLayer,\n  DismissableLayerBranch,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n  const {\n    loop = false,\n    trapped = false,\n    onMountAutoFocus: onMountAutoFocusProp,\n    onUnmountAutoFocus: onUnmountAutoFocusProp,\n    ...scopeProps\n  } = props;\n  const [container, setContainer] = React.useState(null);\n  const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n  const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n  const lastFocusedElementRef = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n  const focusScope = React.useRef({\n    paused: false,\n    pause() {\n      this.paused = true;\n    },\n    resume() {\n      this.paused = false;\n    }\n  }).current;\n  React.useEffect(() => {\n    if (trapped) {\n      let handleFocusIn2 = function(event) {\n        if (focusScope.paused || !container) return;\n        const target = event.target;\n        if (container.contains(target)) {\n          lastFocusedElementRef.current = target;\n        } else {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleFocusOut2 = function(event) {\n        if (focusScope.paused || !container) return;\n        const relatedTarget = event.relatedTarget;\n        if (relatedTarget === null) return;\n        if (!container.contains(relatedTarget)) {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleMutations2 = function(mutations) {\n        const focusedElement = document.activeElement;\n        if (focusedElement !== document.body) return;\n        for (const mutation of mutations) {\n          if (mutation.removedNodes.length > 0) focus(container);\n        }\n      };\n      var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n      document.addEventListener(\"focusin\", handleFocusIn2);\n      document.addEventListener(\"focusout\", handleFocusOut2);\n      const mutationObserver = new MutationObserver(handleMutations2);\n      if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n      return () => {\n        document.removeEventListener(\"focusin\", handleFocusIn2);\n        document.removeEventListener(\"focusout\", handleFocusOut2);\n        mutationObserver.disconnect();\n      };\n    }\n  }, [trapped, container, focusScope.paused]);\n  React.useEffect(() => {\n    if (container) {\n      focusScopesStack.add(focusScope);\n      const previouslyFocusedElement = document.activeElement;\n      const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n      if (!hasFocusedCandidate) {\n        const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n        container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        container.dispatchEvent(mountEvent);\n        if (!mountEvent.defaultPrevented) {\n          focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n          if (document.activeElement === previouslyFocusedElement) {\n            focus(container);\n          }\n        }\n      }\n      return () => {\n        container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        setTimeout(() => {\n          const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n          container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          container.dispatchEvent(unmountEvent);\n          if (!unmountEvent.defaultPrevented) {\n            focus(previouslyFocusedElement ?? document.body, { select: true });\n          }\n          container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          focusScopesStack.remove(focusScope);\n        }, 0);\n      };\n    }\n  }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n  const handleKeyDown = React.useCallback(\n    (event) => {\n      if (!loop && !trapped) return;\n      if (focusScope.paused) return;\n      const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n      const focusedElement = document.activeElement;\n      if (isTabKey && focusedElement) {\n        const container2 = event.currentTarget;\n        const [first, last] = getTabbableEdges(container2);\n        const hasTabbableElementsInside = first && last;\n        if (!hasTabbableElementsInside) {\n          if (focusedElement === container2) event.preventDefault();\n        } else {\n          if (!event.shiftKey && focusedElement === last) {\n            event.preventDefault();\n            if (loop) focus(first, { select: true });\n          } else if (event.shiftKey && focusedElement === first) {\n            event.preventDefault();\n            if (loop) focus(last, { select: true });\n          }\n        }\n      }\n    },\n    [loop, trapped, focusScope.paused]\n  );\n  return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n  const previouslyFocusedElement = document.activeElement;\n  for (const candidate of candidates) {\n    focus(candidate, { select });\n    if (document.activeElement !== previouslyFocusedElement) return;\n  }\n}\nfunction getTabbableEdges(container) {\n  const candidates = getTabbableCandidates(container);\n  const first = findVisible(candidates, container);\n  const last = findVisible(candidates.reverse(), container);\n  return [first, last];\n}\nfunction getTabbableCandidates(container) {\n  const nodes = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node) => {\n      const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n      if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }\n  });\n  while (walker.nextNode()) nodes.push(walker.currentNode);\n  return nodes;\n}\nfunction findVisible(elements, container) {\n  for (const element of elements) {\n    if (!isHidden(element, { upTo: container })) return element;\n  }\n}\nfunction isHidden(node, { upTo }) {\n  if (getComputedStyle(node).visibility === \"hidden\") return true;\n  while (node) {\n    if (upTo !== void 0 && node === upTo) return false;\n    if (getComputedStyle(node).display === \"none\") return true;\n    node = node.parentElement;\n  }\n  return false;\n}\nfunction isSelectableInput(element) {\n  return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n  if (element && element.focus) {\n    const previouslyFocusedElement = document.activeElement;\n    element.focus({ preventScroll: true });\n    if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n      element.select();\n  }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n  let stack = [];\n  return {\n    add(focusScope) {\n      const activeFocusScope = stack[0];\n      if (focusScope !== activeFocusScope) {\n        activeFocusScope?.pause();\n      }\n      stack = arrayRemove(stack, focusScope);\n      stack.unshift(focusScope);\n    },\n    remove(focusScope) {\n      stack = arrayRemove(stack, focusScope);\n      stack[0]?.resume();\n    }\n  };\n}\nfunction arrayRemove(array, item) {\n  const updatedArray = [...array];\n  const index = updatedArray.indexOf(item);\n  if (index !== -1) {\n    updatedArray.splice(index, 1);\n  }\n  return updatedArray;\n}\nfunction removeLinks(items) {\n  return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n  FocusScope,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n  const { container: containerProp, ...portalProps } = props;\n  const [mounted, setMounted] = React.useState(false);\n  useLayoutEffect(() => setMounted(true), []);\n  const container = containerProp || mounted && globalThis?.document?.body;\n  return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n  Portal,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n  return React.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n  const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n  const ref = useStableComposedRefs(presence.ref, getElementRef(child));\n  const forceMount = typeof children === \"function\";\n  return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n  const [node, setNode] = React2.useState();\n  const stylesRef = React2.useRef(null);\n  const prevPresentRef = React2.useRef(present);\n  const prevAnimationNameRef = React2.useRef(\"none\");\n  const initialState = present ? \"mounted\" : \"unmounted\";\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: \"unmounted\",\n      ANIMATION_OUT: \"unmountSuspended\"\n    },\n    unmountSuspended: {\n      MOUNT: \"mounted\",\n      ANIMATION_END: \"unmounted\"\n    },\n    unmounted: {\n      MOUNT: \"mounted\"\n    }\n  });\n  React2.useEffect(() => {\n    const currentAnimationName = getAnimationName(stylesRef.current);\n    prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n  }, [state]);\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n      if (present) {\n        send(\"MOUNT\");\n      } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n        send(\"UNMOUNT\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (wasPresent && isAnimating) {\n          send(\"ANIMATION_OUT\");\n        } else {\n          send(\"UNMOUNT\");\n        }\n      }\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n  useLayoutEffect(() => {\n    if (node) {\n      let timeoutId;\n      const ownerWindow = node.ownerDocument.defaultView ?? window;\n      const handleAnimationEnd = (event) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n        if (event.target === node && isCurrentAnimation) {\n          send(\"ANIMATION_END\");\n          if (!prevPresentRef.current) {\n            const currentFillMode = node.style.animationFillMode;\n            node.style.animationFillMode = \"forwards\";\n            timeoutId = ownerWindow.setTimeout(() => {\n              if (node.style.animationFillMode === \"forwards\") {\n                node.style.animationFillMode = currentFillMode;\n              }\n            });\n          }\n        }\n      };\n      const handleAnimationStart = (event) => {\n        if (event.target === node) {\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      };\n      node.addEventListener(\"animationstart\", handleAnimationStart);\n      node.addEventListener(\"animationcancel\", handleAnimationEnd);\n      node.addEventListener(\"animationend\", handleAnimationEnd);\n      return () => {\n        ownerWindow.clearTimeout(timeoutId);\n        node.removeEventListener(\"animationstart\", handleAnimationStart);\n        node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n        node.removeEventListener(\"animationend\", handleAnimationEnd);\n      };\n    } else {\n      send(\"ANIMATION_END\");\n    }\n  }, [node, send]);\n  return {\n    isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n    ref: React2.useCallback((node2) => {\n      stylesRef.current = node2 ? getComputedStyle(node2) : null;\n      setNode(node2);\n    }, [])\n  };\n}\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    return ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction useStableComposedRefs(...refs) {\n  const refsRef = React2.useRef(refs);\n  refsRef.current = refs;\n  return React2.useCallback((node) => {\n    const currentRefs = refsRef.current;\n    let hasCleanup = false;\n    const cleanups = currentRefs.map((ref) => {\n      const cleanup = setRef(ref, node);\n      if (!hasCleanup && typeof cleanup === \"function\") {\n        hasCleanup = true;\n      }\n      return cleanup;\n    });\n    if (hasCleanup) {\n      return () => {\n        for (let i = 0; i < cleanups.length; i++) {\n          const cleanup = cleanups[i];\n          if (typeof cleanup === \"function\") {\n            cleanup();\n          } else {\n            setRef(currentRefs[i], null);\n          }\n        }\n      };\n    }\n  }, []);\n}\nfunction getAnimationName(styles) {\n  return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n  let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n  Presence,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nvar guards = null;\nfunction FocusGuards(props) {\n  useFocusGuards();\n  return props.children;\n}\nfunction useFocusGuards() {\n  React.useEffect(() => {\n    if (!guards) {\n      guards = { start: createFocusGuard(), end: createFocusGuard() };\n    }\n    const { start, end } = guards;\n    if (document.body.firstElementChild !== start) {\n      document.body.insertAdjacentElement(\"afterbegin\", start);\n    }\n    if (document.body.lastElementChild !== end) {\n      document.body.insertAdjacentElement(\"beforeend\", end);\n    }\n    count++;\n    return () => {\n      if (count === 1) {\n        guards?.start.remove();\n        guards?.end.remove();\n        guards = null;\n      }\n      count = Math.max(0, count - 1);\n    };\n  }, []);\n}\nfunction createFocusGuard() {\n  const element = document.createElement(\"span\");\n  element.setAttribute(\"data-radix-focus-guard\", \"\");\n  element.tabIndex = 0;\n  element.style.outline = \"none\";\n  element.style.opacity = \"0\";\n  element.style.position = \"fixed\";\n  element.style.pointerEvents = \"none\";\n  return element;\n}\nexport {\n  FocusGuards,\n  FocusGuards as Root,\n  useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    }\n    else if (ref) {\n        ref.current = value;\n    }\n    return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n    var ref = useState(function () { return ({\n        // value\n        value: initialValue,\n        // last callback\n        callback: callback,\n        // \"memoized\" public interface\n        facade: {\n            get current() {\n                return ref.value;\n            },\n            set current(value) {\n                var last = ref.value;\n                if (last !== value) {\n                    ref.value = value;\n                    ref.callback(value, last);\n                }\n            },\n        },\n    }); })[0];\n    // update callback\n    ref.callback = callback;\n    return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n    var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n        return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n    });\n    // handle refs changes - added or removed\n    useIsomorphicLayoutEffect(function () {\n        var oldValue = currentValues.get(callbackRef);\n        if (oldValue) {\n            var prevRefs_1 = new Set(oldValue);\n            var nextRefs_1 = new Set(refs);\n            var current_1 = callbackRef.current;\n            prevRefs_1.forEach(function (ref) {\n                if (!nextRefs_1.has(ref)) {\n                    assignRef(ref, null);\n                }\n            });\n            nextRefs_1.forEach(function (ref) {\n                if (!prevRefs_1.has(ref)) {\n                    assignRef(ref, current_1);\n                }\n            });\n        }\n        currentValues.set(callbackRef, refs);\n    }, [refs]);\n    return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nexport function createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = __assign({ async: true, ssr: false }, options);\n    return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n    var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n    if (!sideCar) {\n        throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n    }\n    var Target = sideCar.read();\n    if (!Target) {\n        throw new Error('Sidecar medium not found');\n    }\n    return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n    medium.useMedium(exported);\n    return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n    return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n    var ref = React.useRef(null);\n    var _a = React.useState({\n        onScrollCapture: nothing,\n        onWheelCapture: nothing,\n        onTouchMoveCapture: nothing,\n    }), callbacks = _a[0], setCallbacks = _a[1];\n    var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n    var SideCar = sideCar;\n    var containerRef = useMergeRefs([ref, parentRef]);\n    var containerProps = __assign(__assign({}, rest), callbacks);\n    return (React.createElement(React.Fragment, null,\n        enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n        forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n    enabled: true,\n    removeScrollBar: true,\n    inert: false,\n};\nRemoveScroll.classNames = {\n    fullWidth: fullWidthClassName,\n    zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n    currentNonce = nonce;\n};\nexport var getNonce = function () {\n    if (currentNonce) {\n        return currentNonce;\n    }\n    if (typeof __webpack_nonce__ !== 'undefined') {\n        return __webpack_nonce__;\n    }\n    return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n    if (!document)\n        return null;\n    var tag = document.createElement('style');\n    tag.type = 'text/css';\n    var nonce = getNonce();\n    if (nonce) {\n        tag.setAttribute('nonce', nonce);\n    }\n    return tag;\n}\nfunction injectStyles(tag, css) {\n    // @ts-ignore\n    if (tag.styleSheet) {\n        // @ts-ignore\n        tag.styleSheet.cssText = css;\n    }\n    else {\n        tag.appendChild(document.createTextNode(css));\n    }\n}\nfunction insertStyleTag(tag) {\n    var head = document.head || document.getElementsByTagName('head')[0];\n    head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n    var counter = 0;\n    var stylesheet = null;\n    return {\n        add: function (style) {\n            if (counter == 0) {\n                if ((stylesheet = makeStyleTag())) {\n                    injectStyles(stylesheet, style);\n                    insertStyleTag(stylesheet);\n                }\n            }\n            counter++;\n        },\n        remove: function () {\n            counter--;\n            if (!counter && stylesheet) {\n                stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n                stylesheet = null;\n            }\n        },\n    };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n    var sheet = stylesheetSingleton();\n    return function (styles, isDynamic) {\n        React.useEffect(function () {\n            sheet.add(styles);\n            return function () {\n                sheet.remove();\n            };\n        }, [styles && isDynamic]);\n    };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n    var useStyle = styleHookSingleton();\n    var Sheet = function (_a) {\n        var styles = _a.styles, dynamic = _a.dynamic;\n        useStyle(styles, dynamic);\n        return null;\n    };\n    return Sheet;\n};\n","export var zeroGap = {\n    left: 0,\n    top: 0,\n    right: 0,\n    gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n    var cs = window.getComputedStyle(document.body);\n    var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n    var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n    var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n    return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    if (typeof window === 'undefined') {\n        return zeroGap;\n    }\n    var offsets = getOffset(gapMode);\n    var documentWidth = document.documentElement.clientWidth;\n    var windowWidth = window.innerWidth;\n    return {\n        left: offsets[0],\n        top: offsets[1],\n        right: offsets[2],\n        gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n    };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n    var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n    if (gapMode === void 0) { gapMode = 'margin'; }\n    return \"\\n  .\".concat(noScrollbarsClassName, \" {\\n   overflow: hidden \").concat(important, \";\\n   padding-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  body[\").concat(lockAttribute, \"] {\\n    overflow: hidden \").concat(important, \";\\n    overscroll-behavior: contain;\\n    \").concat([\n        allowRelative && \"position: relative \".concat(important, \";\"),\n        gapMode === 'margin' &&\n            \"\\n    padding-left: \".concat(left, \"px;\\n    padding-top: \").concat(top, \"px;\\n    padding-right: \").concat(right, \"px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n    \"),\n        gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n    ]\n        .filter(Boolean)\n        .join(''), \"\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" {\\n    right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" {\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n    right: 0 \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n    margin-right: 0 \").concat(important, \";\\n  }\\n  \\n  body[\").concat(lockAttribute, \"] {\\n    \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n  }\\n\");\n};\nvar getCurrentUseCounter = function () {\n    var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n    return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n    React.useEffect(function () {\n        document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n        return function () {\n            var newCounter = getCurrentUseCounter() - 1;\n            if (newCounter <= 0) {\n                document.body.removeAttribute(lockAttribute);\n            }\n            else {\n                document.body.setAttribute(lockAttribute, newCounter.toString());\n            }\n        };\n    }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n    var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n    useLockAttribute();\n    /*\n     gap will be measured on every component mount\n     however it will be used only by the \"first\" invocation\n     due to singleton nature of <Style\n     */\n    var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n    return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n    try {\n        var options = Object.defineProperty({}, 'passive', {\n            get: function () {\n                passiveSupported = true;\n                return true;\n            },\n        });\n        // @ts-ignore\n        window.addEventListener('test', options, options);\n        // @ts-ignore\n        window.removeEventListener('test', options, options);\n    }\n    catch (err) {\n        passiveSupported = false;\n    }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n    // textarea will always _contain_ scroll inside self. It only can be hidden\n    return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n    if (!(node instanceof Element)) {\n        return false;\n    }\n    var styles = window.getComputedStyle(node);\n    return (\n    // not-not-scrollable\n    styles[overflow] !== 'hidden' &&\n        // contains scroll inside self\n        !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n    var ownerDocument = node.ownerDocument;\n    var current = node;\n    do {\n        // Skip over shadow root\n        if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n            current = current.host;\n        }\n        var isScrollable = elementCouldBeScrolled(axis, current);\n        if (isScrollable) {\n            var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n            if (scrollHeight > clientHeight) {\n                return true;\n            }\n        }\n        current = current.parentNode;\n    } while (current && current !== ownerDocument.body);\n    return false;\n};\nvar getVScrollVariables = function (_a) {\n    var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n    return [\n        scrollTop,\n        scrollHeight,\n        clientHeight,\n    ];\n};\nvar getHScrollVariables = function (_a) {\n    var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n    return [\n        scrollLeft,\n        scrollWidth,\n        clientWidth,\n    ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n    return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n    return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n    /**\n     * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n     * and then increasingly negative as you scroll towards the end of the content.\n     * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n     */\n    return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n    var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n    var delta = directionFactor * sourceDelta;\n    // find scrollable target\n    var target = event.target;\n    var targetInLock = endTarget.contains(target);\n    var shouldCancelScroll = false;\n    var isDeltaPositive = delta > 0;\n    var availableScroll = 0;\n    var availableScrollTop = 0;\n    do {\n        if (!target) {\n            break;\n        }\n        var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n        var elementScroll = scroll_1 - capacity - directionFactor * position;\n        if (position || elementScroll) {\n            if (elementCouldBeScrolled(axis, target)) {\n                availableScroll += elementScroll;\n                availableScrollTop += position;\n            }\n        }\n        var parent_1 = target.parentNode;\n        // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n        // this is the same logic used in focus-lock\n        target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n    } while (\n    // portaled content\n    (!targetInLock && target !== document.body) ||\n        // self content\n        (targetInLock && (endTarget.contains(target) || endTarget === target)));\n    // handle epsilon around 0 (non standard zoom levels)\n    if (isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n        shouldCancelScroll = true;\n    }\n    else if (!isDeltaPositive &&\n        ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n        shouldCancelScroll = true;\n    }\n    return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n    return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n    return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n  .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n  .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n    var shouldPreventQueue = React.useRef([]);\n    var touchStartRef = React.useRef([0, 0]);\n    var activeAxis = React.useRef();\n    var id = React.useState(idCounter++)[0];\n    var Style = React.useState(styleSingleton)[0];\n    var lastProps = React.useRef(props);\n    React.useEffect(function () {\n        lastProps.current = props;\n    }, [props]);\n    React.useEffect(function () {\n        if (props.inert) {\n            document.body.classList.add(\"block-interactivity-\".concat(id));\n            var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n            allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n            return function () {\n                document.body.classList.remove(\"block-interactivity-\".concat(id));\n                allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n            };\n        }\n        return;\n    }, [props.inert, props.lockRef.current, props.shards]);\n    var shouldCancelEvent = React.useCallback(function (event, parent) {\n        if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n            return !lastProps.current.allowPinchZoom;\n        }\n        var touch = getTouchXY(event);\n        var touchStart = touchStartRef.current;\n        var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n        var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n        var currentAxis;\n        var target = event.target;\n        var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n        // allow horizontal touch move on Range inputs. They will not cause any scroll\n        if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n            return false;\n        }\n        // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n        var selection = window.getSelection();\n        var anchorNode = selection && selection.anchorNode;\n        var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n        if (isTouchingSelection) {\n            return false;\n        }\n        var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n        if (!canBeScrolledInMainDirection) {\n            return true;\n        }\n        if (canBeScrolledInMainDirection) {\n            currentAxis = moveDirection;\n        }\n        else {\n            currentAxis = moveDirection === 'v' ? 'h' : 'v';\n            canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n            // other axis might be not scrollable\n        }\n        if (!canBeScrolledInMainDirection) {\n            return false;\n        }\n        if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n            activeAxis.current = currentAxis;\n        }\n        if (!currentAxis) {\n            return true;\n        }\n        var cancelingAxis = activeAxis.current || currentAxis;\n        return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n    }, []);\n    var shouldPrevent = React.useCallback(function (_event) {\n        var event = _event;\n        if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n            // not the last active\n            return;\n        }\n        var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n        var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n        // self event, and should be canceled\n        if (sourceEvent && sourceEvent.should) {\n            if (event.cancelable) {\n                event.preventDefault();\n            }\n            return;\n        }\n        // outside or shard event\n        if (!sourceEvent) {\n            var shardNodes = (lastProps.current.shards || [])\n                .map(extractRef)\n                .filter(Boolean)\n                .filter(function (node) { return node.contains(event.target); });\n            var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n            if (shouldStop) {\n                if (event.cancelable) {\n                    event.preventDefault();\n                }\n            }\n        }\n    }, []);\n    var shouldCancel = React.useCallback(function (name, delta, target, should) {\n        var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n        shouldPreventQueue.current.push(event);\n        setTimeout(function () {\n            shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n        }, 1);\n    }, []);\n    var scrollTouchStart = React.useCallback(function (event) {\n        touchStartRef.current = getTouchXY(event);\n        activeAxis.current = undefined;\n    }, []);\n    var scrollWheel = React.useCallback(function (event) {\n        shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    var scrollTouchMove = React.useCallback(function (event) {\n        shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n    }, []);\n    React.useEffect(function () {\n        lockStack.push(Style);\n        props.setCallbacks({\n            onScrollCapture: scrollWheel,\n            onWheelCapture: scrollWheel,\n            onTouchMoveCapture: scrollTouchMove,\n        });\n        document.addEventListener('wheel', shouldPrevent, nonPassive);\n        document.addEventListener('touchmove', shouldPrevent, nonPassive);\n        document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n        return function () {\n            lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n            document.removeEventListener('wheel', shouldPrevent, nonPassive);\n            document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n            document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n        };\n    }, []);\n    var removeScrollBar = props.removeScrollBar, inert = props.inert;\n    return (React.createElement(React.Fragment, null,\n        inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n        removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n    var shadowParent = null;\n    while (node !== null) {\n        if (node instanceof ShadowRoot) {\n            shadowParent = node.host;\n            node = node.host;\n        }\n        node = node.parentNode;\n    }\n    return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n    if (typeof document === 'undefined') {\n        return null;\n    }\n    var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n    return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n    return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n    return targets\n        .map(function (target) {\n        if (parent.contains(target)) {\n            return target;\n        }\n        var correctedTarget = unwrapHost(target);\n        if (correctedTarget && parent.contains(correctedTarget)) {\n            return correctedTarget;\n        }\n        console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n        return null;\n    })\n        .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n    var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    if (!markerMap[markerName]) {\n        markerMap[markerName] = new WeakMap();\n    }\n    var markerCounter = markerMap[markerName];\n    var hiddenNodes = [];\n    var elementsToKeep = new Set();\n    var elementsToStop = new Set(targets);\n    var keep = function (el) {\n        if (!el || elementsToKeep.has(el)) {\n            return;\n        }\n        elementsToKeep.add(el);\n        keep(el.parentNode);\n    };\n    targets.forEach(keep);\n    var deep = function (parent) {\n        if (!parent || elementsToStop.has(parent)) {\n            return;\n        }\n        Array.prototype.forEach.call(parent.children, function (node) {\n            if (elementsToKeep.has(node)) {\n                deep(node);\n            }\n            else {\n                try {\n                    var attr = node.getAttribute(controlAttribute);\n                    var alreadyHidden = attr !== null && attr !== 'false';\n                    var counterValue = (counterMap.get(node) || 0) + 1;\n                    var markerValue = (markerCounter.get(node) || 0) + 1;\n                    counterMap.set(node, counterValue);\n                    markerCounter.set(node, markerValue);\n                    hiddenNodes.push(node);\n                    if (counterValue === 1 && alreadyHidden) {\n                        uncontrolledNodes.set(node, true);\n                    }\n                    if (markerValue === 1) {\n                        node.setAttribute(markerName, 'true');\n                    }\n                    if (!alreadyHidden) {\n                        node.setAttribute(controlAttribute, 'true');\n                    }\n                }\n                catch (e) {\n                    console.error('aria-hidden: cannot operate on ', node, e);\n                }\n            }\n        });\n    };\n    deep(parentNode);\n    elementsToKeep.clear();\n    lockCount++;\n    return function () {\n        hiddenNodes.forEach(function (node) {\n            var counterValue = counterMap.get(node) - 1;\n            var markerValue = markerCounter.get(node) - 1;\n            counterMap.set(node, counterValue);\n            markerCounter.set(node, markerValue);\n            if (!counterValue) {\n                if (!uncontrolledNodes.has(node)) {\n                    node.removeAttribute(controlAttribute);\n                }\n                uncontrolledNodes.delete(node);\n            }\n            if (!markerValue) {\n                node.removeAttribute(markerName);\n            }\n        });\n        lockCount--;\n        if (!lockCount) {\n            // clear\n            counterMap = new WeakMap();\n            counterMap = new WeakMap();\n            uncontrolledNodes = new WeakMap();\n            markerMap = {};\n        }\n    };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n    var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n    // and script elements, as they have no impact on accessibility.\n    targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n    return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-inert-ed'; }\n    var activeParentNode = parentNode || getDefaultParent(originalTarget);\n    if (!activeParentNode) {\n        return function () { return null; };\n    }\n    return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n    return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n    if (markerName === void 0) { markerName = 'data-suppressed'; }\n    return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n  const {\n    __scopeDialog,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const triggerRef = React.useRef(null);\n  const contentRef = React.useRef(null);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: DIALOG_NAME\n  });\n  return /* @__PURE__ */ jsx(\n    DialogProvider,\n    {\n      scope: __scopeDialog,\n      triggerRef,\n      contentRef,\n      contentId: useId(),\n      titleId: useId(),\n      descriptionId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children\n    }\n  );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...triggerProps } = props;\n    const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar DialogPortal = (props) => {\n  const { __scopeDialog, forceMount, children, container } = props;\n  const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n    return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n  }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n    return (\n      // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n      // ie. when `Overlay` and `Content` are siblings\n      /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-state\": getState(context.open),\n          ...overlayProps,\n          ref: forwardedRef,\n          style: { pointerEvents: \"auto\", ...overlayProps.style }\n        }\n      ) })\n    );\n  }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: context.open,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (isRightClick) event.preventDefault();\n        }),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault()\n        )\n      }\n    );\n  }\n);\nvar DialogContentNonModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar DialogContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    useFocusGuards();\n    return /* @__PURE__ */ jsxs(Fragment, { children: [\n      /* @__PURE__ */ jsx(\n        FocusScope,\n        {\n          asChild: true,\n          loop: true,\n          trapped: trapFocus,\n          onMountAutoFocus: onOpenAutoFocus,\n          onUnmountAutoFocus: onCloseAutoFocus,\n          children: /* @__PURE__ */ jsx(\n            DismissableLayer,\n            {\n              role: \"dialog\",\n              id: context.contentId,\n              \"aria-describedby\": context.descriptionId,\n              \"aria-labelledby\": context.titleId,\n              \"data-state\": getState(context.open),\n              ...contentProps,\n              ref: composedRefs,\n              onDismiss: () => context.onOpenChange(false)\n            }\n          )\n        }\n      ),\n      /* @__PURE__ */ jsxs(Fragment, { children: [\n        /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n        /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n      ] })\n    ] });\n  }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...titleProps } = props;\n    const context = useDialogContext(TITLE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n  }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...descriptionProps } = props;\n    const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n  }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...closeProps } = props;\n    const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n  contentName: CONTENT_NAME,\n  titleName: TITLE_NAME,\n  docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n  const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n  const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n  React.useEffect(() => {\n    if (titleId) {\n      const hasTitle = document.getElementById(titleId);\n      if (!hasTitle) console.error(MESSAGE);\n    }\n  }, [MESSAGE, titleId]);\n  return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n  const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n  const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n  React.useEffect(() => {\n    const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n    if (descriptionId && describedById) {\n      const hasDescription = document.getElementById(descriptionId);\n      if (!hasDescription) console.warn(MESSAGE);\n    }\n  }, [MESSAGE, contentRef, descriptionId]);\n  return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n  Close,\n  Content,\n  Description,\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n  Overlay,\n  Portal,\n  Root,\n  Title,\n  Trigger,\n  WarningProvider,\n  createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\n\nimport { cn } from '../../lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay> & {\n    position?: 'fixed' | 'absolute';\n  }\n>(({ className, position = 'fixed', ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      'inset-0 z-50 bg-black/30 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n      position === 'absolute' ? 'absolute' : 'fixed',\n      className\n    )}\n    {...props}\n  />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { container?: HTMLElement }\n>(({ className, children, container, ...props }, ref) => {\n  return (\n    <DialogPortal container={container}>\n      <DialogOverlay position={container ? 'absolute' : 'fixed'} />\n      <DialogPrimitive.Content\n        style={{ padding: 0 }}\n        ref={ref}\n        className={cn(\n          'left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg',\n          container ? 'absolute' : 'fixed',\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  );\n});\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n    {...props}\n  />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n    {...props}\n  />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn('text-sm text-muted-foreground', className)}\n    {...props}\n  />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n};\n","'use client';\nfunction __insertCSS(code) {\n  if (!code || typeof document == 'undefined') return\n  let head = document.head || document.getElementsByTagName('head')[0]\n  let style = document.createElement('style')\n  style.type = 'text/css'\n  head.appendChild(style)\n  ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as React from 'react';\nimport React__default, { useLayoutEffect, useEffect, useMemo } from 'react';\n\nconst DrawerContext = React__default.createContext({\n    drawerRef: {\n        current: null\n    },\n    overlayRef: {\n        current: null\n    },\n    onPress: ()=>{},\n    onRelease: ()=>{},\n    onDrag: ()=>{},\n    onNestedDrag: ()=>{},\n    onNestedOpenChange: ()=>{},\n    onNestedRelease: ()=>{},\n    openProp: undefined,\n    dismissible: false,\n    isOpen: false,\n    isDragging: false,\n    keyboardIsOpen: {\n        current: false\n    },\n    snapPointsOffset: null,\n    snapPoints: null,\n    handleOnly: false,\n    modal: false,\n    shouldFade: false,\n    activeSnapPoint: null,\n    onOpenChange: ()=>{},\n    setActiveSnapPoint: ()=>{},\n    closeDrawer: ()=>{},\n    direction: 'bottom',\n    shouldAnimate: {\n        current: true\n    },\n    shouldScaleBackground: false,\n    setBackgroundColorOnScale: true,\n    noBodyStyles: false,\n    container: null,\n    autoFocus: false\n});\nconst useDrawerContext = ()=>{\n    const context = React__default.useContext(DrawerContext);\n    if (!context) {\n        throw new Error('useDrawerContext must be used within a Drawer.Root');\n    }\n    return context;\n};\n\n__insertCSS(\"[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\\n[data-state=closed]\\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}\");\n\nfunction isMobileFirefox() {\n    const userAgent = navigator.userAgent;\n    return typeof window !== 'undefined' && (/Firefox/.test(userAgent) && /Mobile/.test(userAgent) || // Android Firefox\n    /FxiOS/.test(userAgent) // iOS Firefox\n    );\n}\nfunction isMac() {\n    return testPlatform(/^Mac/);\n}\nfunction isIPhone() {\n    return testPlatform(/^iPhone/);\n}\nfunction isSafari() {\n    return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\nfunction isIPad() {\n    return testPlatform(/^iPad/) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n    isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n    return isIPhone() || isIPad();\n}\nfunction testPlatform(re) {\n    return typeof window !== 'undefined' && window.navigator != null ? re.test(window.navigator.platform) : undefined;\n}\n\n// This code comes from https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/overlays/src/usePreventScroll.ts\nconst KEYBOARD_BUFFER = 24;\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction chain$1(...callbacks) {\n    return (...args)=>{\n        for (let callback of callbacks){\n            if (typeof callback === 'function') {\n                callback(...args);\n            }\n        }\n    };\n}\n// @ts-ignore\nconst visualViewport = typeof document !== 'undefined' && window.visualViewport;\nfunction isScrollable(node) {\n    let style = window.getComputedStyle(node);\n    return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n}\nfunction getScrollParent(node) {\n    if (isScrollable(node)) {\n        node = node.parentElement;\n    }\n    while(node && !isScrollable(node)){\n        node = node.parentElement;\n    }\n    return node || document.scrollingElement || document.documentElement;\n}\n// HTML input types that do not cause the software keyboard to appear.\nconst nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\n]);\n// The number of active usePreventScroll calls. Used to determine whether to revert back to the original page style/scroll position\nlet preventScrollCount = 0;\nlet restore;\n/**\n * Prevents scrolling on the document body on mount, and\n * restores it on unmount. Also ensures that content does not\n * shift due to the scrollbars disappearing.\n */ function usePreventScroll(options = {}) {\n    let { isDisabled } = options;\n    useIsomorphicLayoutEffect(()=>{\n        if (isDisabled) {\n            return;\n        }\n        preventScrollCount++;\n        if (preventScrollCount === 1) {\n            if (isIOS()) {\n                restore = preventScrollMobileSafari();\n            }\n        }\n        return ()=>{\n            preventScrollCount--;\n            if (preventScrollCount === 0) {\n                restore == null ? void 0 : restore();\n            }\n        };\n    }, [\n        isDisabled\n    ]);\n}\n// Mobile Safari is a whole different beast. Even with overflow: hidden,\n// it still scrolls the page in many situations:\n//\n// 1. When the bottom toolbar and address bar are collapsed, page scrolling is always allowed.\n// 2. When the keyboard is visible, the viewport does not resize. Instead, the keyboard covers part of\n//    it, so it becomes scrollable.\n// 3. When tapping on an input, the page always scrolls so that the input is centered in the visual viewport.\n//    This may cause even fixed position elements to scroll off the screen.\n// 4. When using the next/previous buttons in the keyboard to navigate between inputs, the whole page always\n//    scrolls, even if the input is inside a nested scrollable element that could be scrolled instead.\n//\n// In order to work around these cases, and prevent scrolling without jankiness, we do a few things:\n//\n// 1. Prevent default on `touchmove` events that are not in a scrollable element. This prevents touch scrolling\n//    on the window.\n// 2. Prevent default on `touchmove` events inside a scrollable element when the scroll position is at the\n//    top or bottom. This avoids the whole page scrolling instead, but does prevent overscrolling.\n// 3. Prevent default on `touchend` events on input elements and handle focusing the element ourselves.\n// 4. When focusing an input, apply a transform to trick Safari into thinking the input is at the top\n//    of the page, which prevents it from scrolling the page. After the input is focused, scroll the element\n//    into view ourselves, without scrolling the whole page.\n// 5. Offset the body by the scroll position using a negative margin and scroll to the top. This should appear the\n//    same visually, but makes the actual scroll position always zero. This is required to make all of the\n//    above work or Safari will still try to scroll the page when focusing an input.\n// 6. As a last resort, handle window scroll events, and scroll back to the top. This can happen when attempting\n//    to navigate to an input with the next/previous buttons that's outside a modal.\nfunction preventScrollMobileSafari() {\n    let scrollable;\n    let lastY = 0;\n    let onTouchStart = (e)=>{\n        // Store the nearest scrollable parent element from the element that the user touched.\n        scrollable = getScrollParent(e.target);\n        if (scrollable === document.documentElement && scrollable === document.body) {\n            return;\n        }\n        lastY = e.changedTouches[0].pageY;\n    };\n    let onTouchMove = (e)=>{\n        // Prevent scrolling the window.\n        if (!scrollable || scrollable === document.documentElement || scrollable === document.body) {\n            e.preventDefault();\n            return;\n        }\n        // Prevent scrolling up when at the top and scrolling down when at the bottom\n        // of a nested scrollable area, otherwise mobile Safari will start scrolling\n        // the window instead. Unfortunately, this disables bounce scrolling when at\n        // the top but it's the best we can do.\n        let y = e.changedTouches[0].pageY;\n        let scrollTop = scrollable.scrollTop;\n        let bottom = scrollable.scrollHeight - scrollable.clientHeight;\n        if (bottom === 0) {\n            return;\n        }\n        if (scrollTop <= 0 && y > lastY || scrollTop >= bottom && y < lastY) {\n            e.preventDefault();\n        }\n        lastY = y;\n    };\n    let onTouchEnd = (e)=>{\n        let target = e.target;\n        // Apply this change if we're not already focused on the target element\n        if (isInput(target) && target !== document.activeElement) {\n            e.preventDefault();\n            // Apply a transform to trick Safari into thinking the input is at the top of the page\n            // so it doesn't try to scroll it into view. When tapping on an input, this needs to\n            // be done before the \"focus\" event, so we have to focus the element ourselves.\n            target.style.transform = 'translateY(-2000px)';\n            target.focus();\n            requestAnimationFrame(()=>{\n                target.style.transform = '';\n            });\n        }\n    };\n    let onFocus = (e)=>{\n        let target = e.target;\n        if (isInput(target)) {\n            // Transform also needs to be applied in the focus event in cases where focus moves\n            // other than tapping on an input directly, e.g. the next/previous buttons in the\n            // software keyboard. In these cases, it seems applying the transform in the focus event\n            // is good enough, whereas when tapping an input, it must be done before the focus event. 🤷‍♂️\n            target.style.transform = 'translateY(-2000px)';\n            requestAnimationFrame(()=>{\n                target.style.transform = '';\n                // This will have prevented the browser from scrolling the focused element into view,\n                // so we need to do this ourselves in a way that doesn't cause the whole page to scroll.\n                if (visualViewport) {\n                    if (visualViewport.height < window.innerHeight) {\n                        // If the keyboard is already visible, do this after one additional frame\n                        // to wait for the transform to be removed.\n                        requestAnimationFrame(()=>{\n                            scrollIntoView(target);\n                        });\n                    } else {\n                        // Otherwise, wait for the visual viewport to resize before scrolling so we can\n                        // measure the correct position to scroll to.\n                        visualViewport.addEventListener('resize', ()=>scrollIntoView(target), {\n                            once: true\n                        });\n                    }\n                }\n            });\n        }\n    };\n    let onWindowScroll = ()=>{\n        // Last resort. If the window scrolled, scroll it back to the top.\n        // It should always be at the top because the body will have a negative margin (see below).\n        window.scrollTo(0, 0);\n    };\n    // Record the original scroll position so we can restore it.\n    // Then apply a negative margin to the body to offset it by the scroll position. This will\n    // enable us to scroll the window to the top, which is required for the rest of this to work.\n    let scrollX = window.pageXOffset;\n    let scrollY = window.pageYOffset;\n    let restoreStyles = chain$1(setStyle(document.documentElement, 'paddingRight', `${window.innerWidth - document.documentElement.clientWidth}px`));\n    // Scroll to the top. The negative margin on the body will make this appear the same.\n    window.scrollTo(0, 0);\n    let removeEvents = chain$1(addEvent(document, 'touchstart', onTouchStart, {\n        passive: false,\n        capture: true\n    }), addEvent(document, 'touchmove', onTouchMove, {\n        passive: false,\n        capture: true\n    }), addEvent(document, 'touchend', onTouchEnd, {\n        passive: false,\n        capture: true\n    }), addEvent(document, 'focus', onFocus, true), addEvent(window, 'scroll', onWindowScroll));\n    return ()=>{\n        // Restore styles and scroll the page back to where it was.\n        restoreStyles();\n        removeEvents();\n        window.scrollTo(scrollX, scrollY);\n    };\n}\n// Sets a CSS property on an element, and returns a function to revert it to the previous value.\nfunction setStyle(element, style, value) {\n    // https://github.com/microsoft/TypeScript/issues/17827#issuecomment-391663310\n    // @ts-ignore\n    let cur = element.style[style];\n    // @ts-ignore\n    element.style[style] = value;\n    return ()=>{\n        // @ts-ignore\n        element.style[style] = cur;\n    };\n}\n// Adds an event listener to an element, and returns a function to remove it.\nfunction addEvent(target, event, handler, options) {\n    // @ts-ignore\n    target.addEventListener(event, handler, options);\n    return ()=>{\n        // @ts-ignore\n        target.removeEventListener(event, handler, options);\n    };\n}\nfunction scrollIntoView(target) {\n    let root = document.scrollingElement || document.documentElement;\n    while(target && target !== root){\n        // Find the parent scrollable element and adjust the scroll position if the target is not already in view.\n        let scrollable = getScrollParent(target);\n        if (scrollable !== document.documentElement && scrollable !== document.body && scrollable !== target) {\n            let scrollableTop = scrollable.getBoundingClientRect().top;\n            let targetTop = target.getBoundingClientRect().top;\n            let targetBottom = target.getBoundingClientRect().bottom;\n            // Buffer is needed for some edge cases\n            const keyboardHeight = scrollable.getBoundingClientRect().bottom + KEYBOARD_BUFFER;\n            if (targetBottom > keyboardHeight) {\n                scrollable.scrollTop += targetTop - scrollableTop;\n            }\n        }\n        // @ts-ignore\n        target = scrollable.parentElement;\n    }\n}\nfunction isInput(target) {\n    return target instanceof HTMLInputElement && !nonTextInputTypes.has(target.type) || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable;\n}\n\n// This code comes from https://github.com/radix-ui/primitives/tree/main/packages/react/compose-refs\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */ function setRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    } else if (ref !== null && ref !== undefined) {\n        ref.current = value;\n    }\n}\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */ function composeRefs(...refs) {\n    return (node)=>refs.forEach((ref)=>setRef(ref, node));\n}\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */ function useComposedRefs(...refs) {\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    return React.useCallback(composeRefs(...refs), refs);\n}\n\nconst cache = new WeakMap();\nfunction set(el, styles, ignoreCache = false) {\n    if (!el || !(el instanceof HTMLElement)) return;\n    let originalStyles = {};\n    Object.entries(styles).forEach(([key, value])=>{\n        if (key.startsWith('--')) {\n            el.style.setProperty(key, value);\n            return;\n        }\n        originalStyles[key] = el.style[key];\n        el.style[key] = value;\n    });\n    if (ignoreCache) return;\n    cache.set(el, originalStyles);\n}\nfunction reset(el, prop) {\n    if (!el || !(el instanceof HTMLElement)) return;\n    let originalStyles = cache.get(el);\n    if (!originalStyles) {\n        return;\n    }\n    {\n        el.style[prop] = originalStyles[prop];\n    }\n}\nconst isVertical = (direction)=>{\n    switch(direction){\n        case 'top':\n        case 'bottom':\n            return true;\n        case 'left':\n        case 'right':\n            return false;\n        default:\n            return direction;\n    }\n};\nfunction getTranslate(element, direction) {\n    if (!element) {\n        return null;\n    }\n    const style = window.getComputedStyle(element);\n    const transform = // @ts-ignore\n    style.transform || style.webkitTransform || style.mozTransform;\n    let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n    if (mat) {\n        // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix3d\n        return parseFloat(mat[1].split(', ')[isVertical(direction) ? 13 : 12]);\n    }\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n    mat = transform.match(/^matrix\\((.+)\\)$/);\n    return mat ? parseFloat(mat[1].split(', ')[isVertical(direction) ? 5 : 4]) : null;\n}\nfunction dampenValue(v) {\n    return 8 * (Math.log(v + 1) - 2);\n}\nfunction assignStyle(element, style) {\n    if (!element) return ()=>{};\n    const prevStyle = element.style.cssText;\n    Object.assign(element.style, style);\n    return ()=>{\n        element.style.cssText = prevStyle;\n    };\n}\n/**\n * Receives functions as arguments and returns a new function that calls all.\n */ function chain(...fns) {\n    return (...args)=>{\n        for (const fn of fns){\n            if (typeof fn === 'function') {\n                // @ts-ignore\n                fn(...args);\n            }\n        }\n    };\n}\n\nconst TRANSITIONS = {\n    DURATION: 0.5,\n    EASE: [\n        0.32,\n        0.72,\n        0,\n        1\n    ]\n};\nconst VELOCITY_THRESHOLD = 0.4;\nconst CLOSE_THRESHOLD = 0.25;\nconst SCROLL_LOCK_TIMEOUT = 100;\nconst BORDER_RADIUS = 8;\nconst NESTED_DISPLACEMENT = 16;\nconst WINDOW_TOP_OFFSET = 26;\nconst DRAG_CLASS = 'vaul-dragging';\n\n// This code comes from https://github.com/radix-ui/primitives/blob/main/packages/react/use-controllable-state/src/useControllableState.tsx\nfunction useCallbackRef(callback) {\n    const callbackRef = React__default.useRef(callback);\n    React__default.useEffect(()=>{\n        callbackRef.current = callback;\n    });\n    // https://github.com/facebook/react/issues/19240\n    return React__default.useMemo(()=>(...args)=>callbackRef.current == null ? void 0 : callbackRef.current.call(callbackRef, ...args), []);\n}\nfunction useUncontrolledState({ defaultProp, onChange }) {\n    const uncontrolledState = React__default.useState(defaultProp);\n    const [value] = uncontrolledState;\n    const prevValueRef = React__default.useRef(value);\n    const handleChange = useCallbackRef(onChange);\n    React__default.useEffect(()=>{\n        if (prevValueRef.current !== value) {\n            handleChange(value);\n            prevValueRef.current = value;\n        }\n    }, [\n        value,\n        prevValueRef,\n        handleChange\n    ]);\n    return uncontrolledState;\n}\nfunction useControllableState({ prop, defaultProp, onChange = ()=>{} }) {\n    const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({\n        defaultProp,\n        onChange\n    });\n    const isControlled = prop !== undefined;\n    const value = isControlled ? prop : uncontrolledProp;\n    const handleChange = useCallbackRef(onChange);\n    const setValue = React__default.useCallback((nextValue)=>{\n        if (isControlled) {\n            const setter = nextValue;\n            const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n            if (value !== prop) handleChange(value);\n        } else {\n            setUncontrolledProp(nextValue);\n        }\n    }, [\n        isControlled,\n        prop,\n        setUncontrolledProp,\n        handleChange\n    ]);\n    return [\n        value,\n        setValue\n    ];\n}\n\nfunction useSnapPoints({ activeSnapPointProp, setActiveSnapPointProp, snapPoints, drawerRef, overlayRef, fadeFromIndex, onSnapPointChange, direction = 'bottom', container, snapToSequentialPoint }) {\n    const [activeSnapPoint, setActiveSnapPoint] = useControllableState({\n        prop: activeSnapPointProp,\n        defaultProp: snapPoints == null ? void 0 : snapPoints[0],\n        onChange: setActiveSnapPointProp\n    });\n    const [windowDimensions, setWindowDimensions] = React__default.useState(typeof window !== 'undefined' ? {\n        innerWidth: window.innerWidth,\n        innerHeight: window.innerHeight\n    } : undefined);\n    React__default.useEffect(()=>{\n        function onResize() {\n            setWindowDimensions({\n                innerWidth: window.innerWidth,\n                innerHeight: window.innerHeight\n            });\n        }\n        window.addEventListener('resize', onResize);\n        return ()=>window.removeEventListener('resize', onResize);\n    }, []);\n    const isLastSnapPoint = React__default.useMemo(()=>activeSnapPoint === (snapPoints == null ? void 0 : snapPoints[snapPoints.length - 1]) || null, [\n        snapPoints,\n        activeSnapPoint\n    ]);\n    const activeSnapPointIndex = React__default.useMemo(()=>{\n        var _snapPoints_findIndex;\n        return (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : null;\n    }, [\n        snapPoints,\n        activeSnapPoint\n    ]);\n    const shouldFade = snapPoints && snapPoints.length > 0 && (fadeFromIndex || fadeFromIndex === 0) && !Number.isNaN(fadeFromIndex) && snapPoints[fadeFromIndex] === activeSnapPoint || !snapPoints;\n    const snapPointsOffset = React__default.useMemo(()=>{\n        const containerSize = container ? {\n            width: container.getBoundingClientRect().width,\n            height: container.getBoundingClientRect().height\n        } : typeof window !== 'undefined' ? {\n            width: window.innerWidth,\n            height: window.innerHeight\n        } : {\n            width: 0,\n            height: 0\n        };\n        var _snapPoints_map;\n        return (_snapPoints_map = snapPoints == null ? void 0 : snapPoints.map((snapPoint)=>{\n            const isPx = typeof snapPoint === 'string';\n            let snapPointAsNumber = 0;\n            if (isPx) {\n                snapPointAsNumber = parseInt(snapPoint, 10);\n            }\n            if (isVertical(direction)) {\n                const height = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.height : 0;\n                if (windowDimensions) {\n                    return direction === 'bottom' ? containerSize.height - height : -containerSize.height + height;\n                }\n                return height;\n            }\n            const width = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.width : 0;\n            if (windowDimensions) {\n                return direction === 'right' ? containerSize.width - width : -containerSize.width + width;\n            }\n            return width;\n        })) != null ? _snapPoints_map : [];\n    }, [\n        snapPoints,\n        windowDimensions,\n        container\n    ]);\n    const activeSnapPointOffset = React__default.useMemo(()=>activeSnapPointIndex !== null ? snapPointsOffset == null ? void 0 : snapPointsOffset[activeSnapPointIndex] : null, [\n        snapPointsOffset,\n        activeSnapPointIndex\n    ]);\n    const snapToPoint = React__default.useCallback((dimension)=>{\n        var _snapPointsOffset_findIndex;\n        const newSnapPointIndex = (_snapPointsOffset_findIndex = snapPointsOffset == null ? void 0 : snapPointsOffset.findIndex((snapPointDim)=>snapPointDim === dimension)) != null ? _snapPointsOffset_findIndex : null;\n        onSnapPointChange(newSnapPointIndex);\n        set(drawerRef.current, {\n            transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n            transform: isVertical(direction) ? `translate3d(0, ${dimension}px, 0)` : `translate3d(${dimension}px, 0, 0)`\n        });\n        if (snapPointsOffset && newSnapPointIndex !== snapPointsOffset.length - 1 && fadeFromIndex !== undefined && newSnapPointIndex !== fadeFromIndex && newSnapPointIndex < fadeFromIndex) {\n            set(overlayRef.current, {\n                transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n                opacity: '0'\n            });\n        } else {\n            set(overlayRef.current, {\n                transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n                opacity: '1'\n            });\n        }\n        setActiveSnapPoint(snapPoints == null ? void 0 : snapPoints[Math.max(newSnapPointIndex, 0)]);\n    }, [\n        drawerRef.current,\n        snapPoints,\n        snapPointsOffset,\n        fadeFromIndex,\n        overlayRef,\n        setActiveSnapPoint\n    ]);\n    React__default.useEffect(()=>{\n        if (activeSnapPoint || activeSnapPointProp) {\n            var _snapPoints_findIndex;\n            const newIndex = (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPointProp || snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : -1;\n            if (snapPointsOffset && newIndex !== -1 && typeof snapPointsOffset[newIndex] === 'number') {\n                snapToPoint(snapPointsOffset[newIndex]);\n            }\n        }\n    }, [\n        activeSnapPoint,\n        activeSnapPointProp,\n        snapPoints,\n        snapPointsOffset,\n        snapToPoint\n    ]);\n    function onRelease({ draggedDistance, closeDrawer, velocity, dismissible }) {\n        if (fadeFromIndex === undefined) return;\n        const currentPosition = direction === 'bottom' || direction === 'right' ? (activeSnapPointOffset != null ? activeSnapPointOffset : 0) - draggedDistance : (activeSnapPointOffset != null ? activeSnapPointOffset : 0) + draggedDistance;\n        const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n        const isFirst = activeSnapPointIndex === 0;\n        const hasDraggedUp = draggedDistance > 0;\n        if (isOverlaySnapPoint) {\n            set(overlayRef.current, {\n                transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n            });\n        }\n        if (!snapToSequentialPoint && velocity > 2 && !hasDraggedUp) {\n            if (dismissible) closeDrawer();\n            else snapToPoint(snapPointsOffset[0]); // snap to initial point\n            return;\n        }\n        if (!snapToSequentialPoint && velocity > 2 && hasDraggedUp && snapPointsOffset && snapPoints) {\n            snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n            return;\n        }\n        // Find the closest snap point to the current position\n        const closestSnapPoint = snapPointsOffset == null ? void 0 : snapPointsOffset.reduce((prev, curr)=>{\n            if (typeof prev !== 'number' || typeof curr !== 'number') return prev;\n            return Math.abs(curr - currentPosition) < Math.abs(prev - currentPosition) ? curr : prev;\n        });\n        const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n        if (velocity > VELOCITY_THRESHOLD && Math.abs(draggedDistance) < dim * 0.4) {\n            const dragDirection = hasDraggedUp ? 1 : -1; // 1 = up, -1 = down\n            // Don't do anything if we swipe upwards while being on the last snap point\n            if (dragDirection > 0 && isLastSnapPoint && snapPoints) {\n                snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n                return;\n            }\n            if (isFirst && dragDirection < 0 && dismissible) {\n                closeDrawer();\n            }\n            if (activeSnapPointIndex === null) return;\n            snapToPoint(snapPointsOffset[activeSnapPointIndex + dragDirection]);\n            return;\n        }\n        snapToPoint(closestSnapPoint);\n    }\n    function onDrag({ draggedDistance }) {\n        if (activeSnapPointOffset === null) return;\n        const newValue = direction === 'bottom' || direction === 'right' ? activeSnapPointOffset - draggedDistance : activeSnapPointOffset + draggedDistance;\n        // Don't do anything if we exceed the last(biggest) snap point\n        if ((direction === 'bottom' || direction === 'right') && newValue < snapPointsOffset[snapPointsOffset.length - 1]) {\n            return;\n        }\n        if ((direction === 'top' || direction === 'left') && newValue > snapPointsOffset[snapPointsOffset.length - 1]) {\n            return;\n        }\n        set(drawerRef.current, {\n            transform: isVertical(direction) ? `translate3d(0, ${newValue}px, 0)` : `translate3d(${newValue}px, 0, 0)`\n        });\n    }\n    function getPercentageDragged(absDraggedDistance, isDraggingDown) {\n        if (!snapPoints || typeof activeSnapPointIndex !== 'number' || !snapPointsOffset || fadeFromIndex === undefined) return null;\n        // If this is true we are dragging to a snap point that is supposed to have an overlay\n        const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n        const isOverlaySnapPointOrHigher = activeSnapPointIndex >= fadeFromIndex;\n        if (isOverlaySnapPointOrHigher && isDraggingDown) {\n            return 0;\n        }\n        // Don't animate, but still use this one if we are dragging away from the overlaySnapPoint\n        if (isOverlaySnapPoint && !isDraggingDown) return 1;\n        if (!shouldFade && !isOverlaySnapPoint) return null;\n        // Either fadeFrom index or the one before\n        const targetSnapPointIndex = isOverlaySnapPoint ? activeSnapPointIndex + 1 : activeSnapPointIndex - 1;\n        // Get the distance from overlaySnapPoint to the one before or vice-versa to calculate the opacity percentage accordingly\n        const snapPointDistance = isOverlaySnapPoint ? snapPointsOffset[targetSnapPointIndex] - snapPointsOffset[targetSnapPointIndex - 1] : snapPointsOffset[targetSnapPointIndex + 1] - snapPointsOffset[targetSnapPointIndex];\n        const percentageDragged = absDraggedDistance / Math.abs(snapPointDistance);\n        if (isOverlaySnapPoint) {\n            return 1 - percentageDragged;\n        } else {\n            return percentageDragged;\n        }\n    }\n    return {\n        isLastSnapPoint,\n        activeSnapPoint,\n        shouldFade,\n        getPercentageDragged,\n        setActiveSnapPoint,\n        activeSnapPointIndex,\n        onRelease,\n        onDrag,\n        snapPointsOffset\n    };\n}\n\nconst noop = ()=>()=>{};\nfunction useScaleBackground() {\n    const { direction, isOpen, shouldScaleBackground, setBackgroundColorOnScale, noBodyStyles } = useDrawerContext();\n    const timeoutIdRef = React__default.useRef(null);\n    const initialBackgroundColor = useMemo(()=>document.body.style.backgroundColor, []);\n    function getScale() {\n        return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n    }\n    React__default.useEffect(()=>{\n        if (isOpen && shouldScaleBackground) {\n            if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n            const wrapper = document.querySelector('[data-vaul-drawer-wrapper]') || document.querySelector('[vaul-drawer-wrapper]');\n            if (!wrapper) return;\n            chain(setBackgroundColorOnScale && !noBodyStyles ? assignStyle(document.body, {\n                background: 'black'\n            }) : noop, assignStyle(wrapper, {\n                transformOrigin: isVertical(direction) ? 'top' : 'left',\n                transitionProperty: 'transform, border-radius',\n                transitionDuration: `${TRANSITIONS.DURATION}s`,\n                transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n            }));\n            const wrapperStylesCleanup = assignStyle(wrapper, {\n                borderRadius: `${BORDER_RADIUS}px`,\n                overflow: 'hidden',\n                ...isVertical(direction) ? {\n                    transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`\n                } : {\n                    transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`\n                }\n            });\n            return ()=>{\n                wrapperStylesCleanup();\n                timeoutIdRef.current = window.setTimeout(()=>{\n                    if (initialBackgroundColor) {\n                        document.body.style.background = initialBackgroundColor;\n                    } else {\n                        document.body.style.removeProperty('background');\n                    }\n                }, TRANSITIONS.DURATION * 1000);\n            };\n        }\n    }, [\n        isOpen,\n        shouldScaleBackground,\n        initialBackgroundColor\n    ]);\n}\n\nlet previousBodyPosition = null;\n/**\n * This hook is necessary to prevent buggy behavior on iOS devices (need to test on Android).\n * I won't get into too much detail about what bugs it solves, but so far I've found that setting the body to `position: fixed` is the most reliable way to prevent those bugs.\n * Issues that this hook solves:\n * https://github.com/emilkowalski/vaul/issues/435\n * https://github.com/emilkowalski/vaul/issues/433\n * And more that I discovered, but were just not reported.\n */ function usePositionFixed({ isOpen, modal, nested, hasBeenOpened, preventScrollRestoration, noBodyStyles }) {\n    const [activeUrl, setActiveUrl] = React__default.useState(()=>typeof window !== 'undefined' ? window.location.href : '');\n    const scrollPos = React__default.useRef(0);\n    const setPositionFixed = React__default.useCallback(()=>{\n        // All browsers on iOS will return true here.\n        if (!isSafari()) return;\n        // If previousBodyPosition is already set, don't set it again.\n        if (previousBodyPosition === null && isOpen && !noBodyStyles) {\n            previousBodyPosition = {\n                position: document.body.style.position,\n                top: document.body.style.top,\n                left: document.body.style.left,\n                height: document.body.style.height,\n                right: 'unset'\n            };\n            // Update the dom inside an animation frame\n            const { scrollX, innerHeight } = window;\n            document.body.style.setProperty('position', 'fixed', 'important');\n            Object.assign(document.body.style, {\n                top: `${-scrollPos.current}px`,\n                left: `${-scrollX}px`,\n                right: '0px',\n                height: 'auto'\n            });\n            window.setTimeout(()=>window.requestAnimationFrame(()=>{\n                    // Attempt to check if the bottom bar appeared due to the position change\n                    const bottomBarHeight = innerHeight - window.innerHeight;\n                    if (bottomBarHeight && scrollPos.current >= innerHeight) {\n                        // Move the content further up so that the bottom bar doesn't hide it\n                        document.body.style.top = `${-(scrollPos.current + bottomBarHeight)}px`;\n                    }\n                }), 300);\n        }\n    }, [\n        isOpen\n    ]);\n    const restorePositionSetting = React__default.useCallback(()=>{\n        // All browsers on iOS will return true here.\n        if (!isSafari()) return;\n        if (previousBodyPosition !== null && !noBodyStyles) {\n            // Convert the position from \"px\" to Int\n            const y = -parseInt(document.body.style.top, 10);\n            const x = -parseInt(document.body.style.left, 10);\n            // Restore styles\n            Object.assign(document.body.style, previousBodyPosition);\n            window.requestAnimationFrame(()=>{\n                if (preventScrollRestoration && activeUrl !== window.location.href) {\n                    setActiveUrl(window.location.href);\n                    return;\n                }\n                window.scrollTo(x, y);\n            });\n            previousBodyPosition = null;\n        }\n    }, [\n        activeUrl\n    ]);\n    React__default.useEffect(()=>{\n        function onScroll() {\n            scrollPos.current = window.scrollY;\n        }\n        onScroll();\n        window.addEventListener('scroll', onScroll);\n        return ()=>{\n            window.removeEventListener('scroll', onScroll);\n        };\n    }, []);\n    React__default.useEffect(()=>{\n        if (!modal) return;\n        return ()=>{\n            if (typeof document === 'undefined') return;\n            // Another drawer is opened, safe to ignore the execution\n            const hasDrawerOpened = !!document.querySelector('[data-vaul-drawer]');\n            if (hasDrawerOpened) return;\n            restorePositionSetting();\n        };\n    }, [\n        modal,\n        restorePositionSetting\n    ]);\n    React__default.useEffect(()=>{\n        if (nested || !hasBeenOpened) return;\n        // This is needed to force Safari toolbar to show **before** the drawer starts animating to prevent a gnarly shift from happening\n        if (isOpen) {\n            // avoid for standalone mode (PWA)\n            const isStandalone = window.matchMedia('(display-mode: standalone)').matches;\n            !isStandalone && setPositionFixed();\n            if (!modal) {\n                window.setTimeout(()=>{\n                    restorePositionSetting();\n                }, 500);\n            }\n        } else {\n            restorePositionSetting();\n        }\n    }, [\n        isOpen,\n        hasBeenOpened,\n        activeUrl,\n        modal,\n        nested,\n        setPositionFixed,\n        restorePositionSetting\n    ]);\n    return {\n        restorePositionSetting\n    };\n}\n\nfunction Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRelease: onReleaseProp, snapPoints, shouldScaleBackground = false, setBackgroundColorOnScale = true, closeThreshold = CLOSE_THRESHOLD, scrollLockTimeout = SCROLL_LOCK_TIMEOUT, dismissible = true, handleOnly = false, fadeFromIndex = snapPoints && snapPoints.length - 1, activeSnapPoint: activeSnapPointProp, setActiveSnapPoint: setActiveSnapPointProp, fixed, modal = true, onClose, nested, noBodyStyles = false, direction = 'bottom', defaultOpen = false, disablePreventScroll = true, snapToSequentialPoint = false, preventScrollRestoration = false, repositionInputs = true, onAnimationEnd, container, autoFocus = false }) {\n    var _drawerRef_current, _drawerRef_current1;\n    const [isOpen = false, setIsOpen] = useControllableState({\n        defaultProp: defaultOpen,\n        prop: openProp,\n        onChange: (o)=>{\n            onOpenChange == null ? void 0 : onOpenChange(o);\n            if (!o && !nested) {\n                restorePositionSetting();\n            }\n            setTimeout(()=>{\n                onAnimationEnd == null ? void 0 : onAnimationEnd(o);\n            }, TRANSITIONS.DURATION * 1000);\n            if (o && !modal) {\n                if (typeof window !== 'undefined') {\n                    window.requestAnimationFrame(()=>{\n                        document.body.style.pointerEvents = 'auto';\n                    });\n                }\n            }\n            if (!o) {\n                // This will be removed when the exit animation ends (`500ms`)\n                document.body.style.pointerEvents = 'auto';\n            }\n        }\n    });\n    const [hasBeenOpened, setHasBeenOpened] = React__default.useState(false);\n    const [isDragging, setIsDragging] = React__default.useState(false);\n    const [justReleased, setJustReleased] = React__default.useState(false);\n    const overlayRef = React__default.useRef(null);\n    const openTime = React__default.useRef(null);\n    const dragStartTime = React__default.useRef(null);\n    const dragEndTime = React__default.useRef(null);\n    const lastTimeDragPrevented = React__default.useRef(null);\n    const isAllowedToDrag = React__default.useRef(false);\n    const nestedOpenChangeTimer = React__default.useRef(null);\n    const pointerStart = React__default.useRef(0);\n    const keyboardIsOpen = React__default.useRef(false);\n    const shouldAnimate = React__default.useRef(!defaultOpen);\n    const previousDiffFromInitial = React__default.useRef(0);\n    const drawerRef = React__default.useRef(null);\n    const drawerHeightRef = React__default.useRef(((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0);\n    const drawerWidthRef = React__default.useRef(((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0);\n    const initialDrawerHeight = React__default.useRef(0);\n    const onSnapPointChange = React__default.useCallback((activeSnapPointIndex)=>{\n        // Change openTime ref when we reach the last snap point to prevent dragging for 500ms incase it's scrollable.\n        if (snapPoints && activeSnapPointIndex === snapPointsOffset.length - 1) openTime.current = new Date();\n    }, []);\n    const { activeSnapPoint, activeSnapPointIndex, setActiveSnapPoint, onRelease: onReleaseSnapPoints, snapPointsOffset, onDrag: onDragSnapPoints, shouldFade, getPercentageDragged: getSnapPointsPercentageDragged } = useSnapPoints({\n        snapPoints,\n        activeSnapPointProp,\n        setActiveSnapPointProp,\n        drawerRef,\n        fadeFromIndex,\n        overlayRef,\n        onSnapPointChange,\n        direction,\n        container,\n        snapToSequentialPoint\n    });\n    usePreventScroll({\n        isDisabled: !isOpen || isDragging || !modal || justReleased || !hasBeenOpened || !repositionInputs || !disablePreventScroll\n    });\n    const { restorePositionSetting } = usePositionFixed({\n        isOpen,\n        modal,\n        nested: nested != null ? nested : false,\n        hasBeenOpened,\n        preventScrollRestoration,\n        noBodyStyles\n    });\n    function getScale() {\n        return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n    }\n    function onPress(event) {\n        var _drawerRef_current, _drawerRef_current1;\n        if (!dismissible && !snapPoints) return;\n        if (drawerRef.current && !drawerRef.current.contains(event.target)) return;\n        drawerHeightRef.current = ((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0;\n        drawerWidthRef.current = ((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0;\n        setIsDragging(true);\n        dragStartTime.current = new Date();\n        // iOS doesn't trigger mouseUp after scrolling so we need to listen to touched in order to disallow dragging\n        if (isIOS()) {\n            window.addEventListener('touchend', ()=>isAllowedToDrag.current = false, {\n                once: true\n            });\n        }\n        // Ensure we maintain correct pointer capture even when going outside of the drawer\n        event.target.setPointerCapture(event.pointerId);\n        pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;\n    }\n    function shouldDrag(el, isDraggingInDirection) {\n        var _window_getSelection;\n        let element = el;\n        const highlightedText = (_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString();\n        const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;\n        const date = new Date();\n        // Fixes https://github.com/emilkowalski/vaul/issues/483\n        if (element.tagName === 'SELECT') {\n            return false;\n        }\n        if (element.hasAttribute('data-vaul-no-drag') || element.closest('[data-vaul-no-drag]')) {\n            return false;\n        }\n        if (direction === 'right' || direction === 'left') {\n            return true;\n        }\n        // Allow scrolling when animating\n        if (openTime.current && date.getTime() - openTime.current.getTime() < 500) {\n            return false;\n        }\n        if (swipeAmount !== null) {\n            if (direction === 'bottom' ? swipeAmount > 0 : swipeAmount < 0) {\n                return true;\n            }\n        }\n        // Don't drag if there's highlighted text\n        if (highlightedText && highlightedText.length > 0) {\n            return false;\n        }\n        // Disallow dragging if drawer was scrolled within `scrollLockTimeout`\n        if (lastTimeDragPrevented.current && date.getTime() - lastTimeDragPrevented.current.getTime() < scrollLockTimeout && swipeAmount === 0) {\n            lastTimeDragPrevented.current = date;\n            return false;\n        }\n        if (isDraggingInDirection) {\n            lastTimeDragPrevented.current = date;\n            // We are dragging down so we should allow scrolling\n            return false;\n        }\n        // Keep climbing up the DOM tree as long as there's a parent\n        while(element){\n            // Check if the element is scrollable\n            if (element.scrollHeight > element.clientHeight) {\n                if (element.scrollTop !== 0) {\n                    lastTimeDragPrevented.current = new Date();\n                    // The element is scrollable and not scrolled to the top, so don't drag\n                    return false;\n                }\n                if (element.getAttribute('role') === 'dialog') {\n                    return true;\n                }\n            }\n            // Move up to the parent element\n            element = element.parentNode;\n        }\n        // No scrollable parents not scrolled to the top found, so drag\n        return true;\n    }\n    function onDrag(event) {\n        if (!drawerRef.current) {\n            return;\n        }\n        // We need to know how much of the drawer has been dragged in percentages so that we can transform background accordingly\n        if (isDragging) {\n            const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n            const draggedDistance = (pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX)) * directionMultiplier;\n            const isDraggingInDirection = draggedDistance > 0;\n            // Pre condition for disallowing dragging in the close direction.\n            const noCloseSnapPointsPreCondition = snapPoints && !dismissible && !isDraggingInDirection;\n            // Disallow dragging down to close when first snap point is the active one and dismissible prop is set to false.\n            if (noCloseSnapPointsPreCondition && activeSnapPointIndex === 0) return;\n            // We need to capture last time when drag with scroll was triggered and have a timeout between\n            const absDraggedDistance = Math.abs(draggedDistance);\n            const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n            const drawerDimension = direction === 'bottom' || direction === 'top' ? drawerHeightRef.current : drawerWidthRef.current;\n            // Calculate the percentage dragged, where 1 is the closed position\n            let percentageDragged = absDraggedDistance / drawerDimension;\n            const snapPointPercentageDragged = getSnapPointsPercentageDragged(absDraggedDistance, isDraggingInDirection);\n            if (snapPointPercentageDragged !== null) {\n                percentageDragged = snapPointPercentageDragged;\n            }\n            // Disallow close dragging beyond the smallest snap point.\n            if (noCloseSnapPointsPreCondition && percentageDragged >= 1) {\n                return;\n            }\n            if (!isAllowedToDrag.current && !shouldDrag(event.target, isDraggingInDirection)) return;\n            drawerRef.current.classList.add(DRAG_CLASS);\n            // If shouldDrag gave true once after pressing down on the drawer, we set isAllowedToDrag to true and it will remain true until we let go, there's no reason to disable dragging mid way, ever, and that's the solution to it\n            isAllowedToDrag.current = true;\n            set(drawerRef.current, {\n                transition: 'none'\n            });\n            set(overlayRef.current, {\n                transition: 'none'\n            });\n            if (snapPoints) {\n                onDragSnapPoints({\n                    draggedDistance\n                });\n            }\n            // Run this only if snapPoints are not defined or if we are at the last snap point (highest one)\n            if (isDraggingInDirection && !snapPoints) {\n                const dampenedDraggedDistance = dampenValue(draggedDistance);\n                const translateValue = Math.min(dampenedDraggedDistance * -1, 0) * directionMultiplier;\n                set(drawerRef.current, {\n                    transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n                });\n                return;\n            }\n            const opacityValue = 1 - percentageDragged;\n            if (shouldFade || fadeFromIndex && activeSnapPointIndex === fadeFromIndex - 1) {\n                onDragProp == null ? void 0 : onDragProp(event, percentageDragged);\n                set(overlayRef.current, {\n                    opacity: `${opacityValue}`,\n                    transition: 'none'\n                }, true);\n            }\n            if (wrapper && overlayRef.current && shouldScaleBackground) {\n                // Calculate percentageDragged as a fraction (0 to 1)\n                const scaleValue = Math.min(getScale() + percentageDragged * (1 - getScale()), 1);\n                const borderRadiusValue = 8 - percentageDragged * 8;\n                const translateValue = Math.max(0, 14 - percentageDragged * 14);\n                set(wrapper, {\n                    borderRadius: `${borderRadiusValue}px`,\n                    transform: isVertical(direction) ? `scale(${scaleValue}) translate3d(0, ${translateValue}px, 0)` : `scale(${scaleValue}) translate3d(${translateValue}px, 0, 0)`,\n                    transition: 'none'\n                }, true);\n            }\n            if (!snapPoints) {\n                const translateValue = absDraggedDistance * directionMultiplier;\n                set(drawerRef.current, {\n                    transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n                });\n            }\n        }\n    }\n    React__default.useEffect(()=>{\n        window.requestAnimationFrame(()=>{\n            shouldAnimate.current = true;\n        });\n    }, []);\n    React__default.useEffect(()=>{\n        var _window_visualViewport;\n        function onVisualViewportChange() {\n            if (!drawerRef.current || !repositionInputs) return;\n            const focusedElement = document.activeElement;\n            if (isInput(focusedElement) || keyboardIsOpen.current) {\n                var _window_visualViewport;\n                const visualViewportHeight = ((_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.height) || 0;\n                const totalHeight = window.innerHeight;\n                // This is the height of the keyboard\n                let diffFromInitial = totalHeight - visualViewportHeight;\n                const drawerHeight = drawerRef.current.getBoundingClientRect().height || 0;\n                // Adjust drawer height only if it's tall enough\n                const isTallEnough = drawerHeight > totalHeight * 0.8;\n                if (!initialDrawerHeight.current) {\n                    initialDrawerHeight.current = drawerHeight;\n                }\n                const offsetFromTop = drawerRef.current.getBoundingClientRect().top;\n                // visualViewport height may change due to somq e subtle changes to the keyboard. Checking if the height changed by 60 or more will make sure that they keyboard really changed its open state.\n                if (Math.abs(previousDiffFromInitial.current - diffFromInitial) > 60) {\n                    keyboardIsOpen.current = !keyboardIsOpen.current;\n                }\n                if (snapPoints && snapPoints.length > 0 && snapPointsOffset && activeSnapPointIndex) {\n                    const activeSnapPointHeight = snapPointsOffset[activeSnapPointIndex] || 0;\n                    diffFromInitial += activeSnapPointHeight;\n                }\n                previousDiffFromInitial.current = diffFromInitial;\n                // We don't have to change the height if the input is in view, when we are here we are in the opened keyboard state so we can correctly check if the input is in view\n                if (drawerHeight > visualViewportHeight || keyboardIsOpen.current) {\n                    const height = drawerRef.current.getBoundingClientRect().height;\n                    let newDrawerHeight = height;\n                    if (height > visualViewportHeight) {\n                        newDrawerHeight = visualViewportHeight - (isTallEnough ? offsetFromTop : WINDOW_TOP_OFFSET);\n                    }\n                    // When fixed, don't move the drawer upwards if there's space, but rather only change it's height so it's fully scrollable when the keyboard is open\n                    if (fixed) {\n                        drawerRef.current.style.height = `${height - Math.max(diffFromInitial, 0)}px`;\n                    } else {\n                        drawerRef.current.style.height = `${Math.max(newDrawerHeight, visualViewportHeight - offsetFromTop)}px`;\n                    }\n                } else if (!isMobileFirefox()) {\n                    drawerRef.current.style.height = `${initialDrawerHeight.current}px`;\n                }\n                if (snapPoints && snapPoints.length > 0 && !keyboardIsOpen.current) {\n                    drawerRef.current.style.bottom = `0px`;\n                } else {\n                    // Negative bottom value would never make sense\n                    drawerRef.current.style.bottom = `${Math.max(diffFromInitial, 0)}px`;\n                }\n            }\n        }\n        (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.addEventListener('resize', onVisualViewportChange);\n        return ()=>{\n            var _window_visualViewport;\n            return (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.removeEventListener('resize', onVisualViewportChange);\n        };\n    }, [\n        activeSnapPointIndex,\n        snapPoints,\n        snapPointsOffset\n    ]);\n    function closeDrawer(fromWithin) {\n        cancelDrag();\n        onClose == null ? void 0 : onClose();\n        if (!fromWithin) {\n            setIsOpen(false);\n        }\n        setTimeout(()=>{\n            if (snapPoints) {\n                setActiveSnapPoint(snapPoints[0]);\n            }\n        }, TRANSITIONS.DURATION * 1000); // seconds to ms\n    }\n    function resetDrawer() {\n        if (!drawerRef.current) return;\n        const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n        const currentSwipeAmount = getTranslate(drawerRef.current, direction);\n        set(drawerRef.current, {\n            transform: 'translate3d(0, 0, 0)',\n            transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n        });\n        set(overlayRef.current, {\n            transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n            opacity: '1'\n        });\n        // Don't reset background if swiped upwards\n        if (shouldScaleBackground && currentSwipeAmount && currentSwipeAmount > 0 && isOpen) {\n            set(wrapper, {\n                borderRadius: `${BORDER_RADIUS}px`,\n                overflow: 'hidden',\n                ...isVertical(direction) ? {\n                    transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,\n                    transformOrigin: 'top'\n                } : {\n                    transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,\n                    transformOrigin: 'left'\n                },\n                transitionProperty: 'transform, border-radius',\n                transitionDuration: `${TRANSITIONS.DURATION}s`,\n                transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n            }, true);\n        }\n    }\n    function cancelDrag() {\n        if (!isDragging || !drawerRef.current) return;\n        drawerRef.current.classList.remove(DRAG_CLASS);\n        isAllowedToDrag.current = false;\n        setIsDragging(false);\n        dragEndTime.current = new Date();\n    }\n    function onRelease(event) {\n        if (!isDragging || !drawerRef.current) return;\n        drawerRef.current.classList.remove(DRAG_CLASS);\n        isAllowedToDrag.current = false;\n        setIsDragging(false);\n        dragEndTime.current = new Date();\n        const swipeAmount = getTranslate(drawerRef.current, direction);\n        if (!event || !shouldDrag(event.target, false) || !swipeAmount || Number.isNaN(swipeAmount)) return;\n        if (dragStartTime.current === null) return;\n        const timeTaken = dragEndTime.current.getTime() - dragStartTime.current.getTime();\n        const distMoved = pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX);\n        const velocity = Math.abs(distMoved) / timeTaken;\n        if (velocity > 0.05) {\n            // `justReleased` is needed to prevent the drawer from focusing on an input when the drag ends, as it's not the intent most of the time.\n            setJustReleased(true);\n            setTimeout(()=>{\n                setJustReleased(false);\n            }, 200);\n        }\n        if (snapPoints) {\n            const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n            onReleaseSnapPoints({\n                draggedDistance: distMoved * directionMultiplier,\n                closeDrawer,\n                velocity,\n                dismissible\n            });\n            onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n            return;\n        }\n        // Moved upwards, don't do anything\n        if (direction === 'bottom' || direction === 'right' ? distMoved > 0 : distMoved < 0) {\n            resetDrawer();\n            onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n            return;\n        }\n        if (velocity > VELOCITY_THRESHOLD) {\n            closeDrawer();\n            onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n            return;\n        }\n        var _drawerRef_current_getBoundingClientRect_height;\n        const visibleDrawerHeight = Math.min((_drawerRef_current_getBoundingClientRect_height = drawerRef.current.getBoundingClientRect().height) != null ? _drawerRef_current_getBoundingClientRect_height : 0, window.innerHeight);\n        var _drawerRef_current_getBoundingClientRect_width;\n        const visibleDrawerWidth = Math.min((_drawerRef_current_getBoundingClientRect_width = drawerRef.current.getBoundingClientRect().width) != null ? _drawerRef_current_getBoundingClientRect_width : 0, window.innerWidth);\n        const isHorizontalSwipe = direction === 'left' || direction === 'right';\n        if (Math.abs(swipeAmount) >= (isHorizontalSwipe ? visibleDrawerWidth : visibleDrawerHeight) * closeThreshold) {\n            closeDrawer();\n            onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n            return;\n        }\n        onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n        resetDrawer();\n    }\n    React__default.useEffect(()=>{\n        // Trigger enter animation without using CSS animation\n        if (isOpen) {\n            set(document.documentElement, {\n                scrollBehavior: 'auto'\n            });\n            openTime.current = new Date();\n        }\n        return ()=>{\n            reset(document.documentElement, 'scrollBehavior');\n        };\n    }, [\n        isOpen\n    ]);\n    function onNestedOpenChange(o) {\n        const scale = o ? (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth : 1;\n        const initialTranslate = o ? -NESTED_DISPLACEMENT : 0;\n        if (nestedOpenChangeTimer.current) {\n            window.clearTimeout(nestedOpenChangeTimer.current);\n        }\n        set(drawerRef.current, {\n            transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n            transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${initialTranslate}px, 0)` : `scale(${scale}) translate3d(${initialTranslate}px, 0, 0)`\n        });\n        if (!o && drawerRef.current) {\n            nestedOpenChangeTimer.current = setTimeout(()=>{\n                const translateValue = getTranslate(drawerRef.current, direction);\n                set(drawerRef.current, {\n                    transition: 'none',\n                    transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n                });\n            }, 500);\n        }\n    }\n    function onNestedDrag(_event, percentageDragged) {\n        if (percentageDragged < 0) return;\n        const initialScale = (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth;\n        const newScale = initialScale + percentageDragged * (1 - initialScale);\n        const newTranslate = -NESTED_DISPLACEMENT + percentageDragged * NESTED_DISPLACEMENT;\n        set(drawerRef.current, {\n            transform: isVertical(direction) ? `scale(${newScale}) translate3d(0, ${newTranslate}px, 0)` : `scale(${newScale}) translate3d(${newTranslate}px, 0, 0)`,\n            transition: 'none'\n        });\n    }\n    function onNestedRelease(_event, o) {\n        const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n        const scale = o ? (dim - NESTED_DISPLACEMENT) / dim : 1;\n        const translate = o ? -NESTED_DISPLACEMENT : 0;\n        if (o) {\n            set(drawerRef.current, {\n                transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n                transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${translate}px, 0)` : `scale(${scale}) translate3d(${translate}px, 0, 0)`\n            });\n        }\n    }\n    React__default.useEffect(()=>{\n        if (!modal) {\n            // Need to do this manually unfortunately\n            window.requestAnimationFrame(()=>{\n                document.body.style.pointerEvents = 'auto';\n            });\n        }\n    }, [\n        modal\n    ]);\n    return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Root, {\n        defaultOpen: defaultOpen,\n        onOpenChange: (open)=>{\n            if (!dismissible && !open) return;\n            if (open) {\n                setHasBeenOpened(true);\n            } else {\n                closeDrawer(true);\n            }\n            setIsOpen(open);\n        },\n        open: isOpen\n    }, /*#__PURE__*/ React__default.createElement(DrawerContext.Provider, {\n        value: {\n            activeSnapPoint,\n            snapPoints,\n            setActiveSnapPoint,\n            drawerRef,\n            overlayRef,\n            onOpenChange,\n            onPress,\n            onRelease,\n            onDrag,\n            dismissible,\n            shouldAnimate,\n            handleOnly,\n            isOpen,\n            isDragging,\n            shouldFade,\n            closeDrawer,\n            onNestedDrag,\n            onNestedOpenChange,\n            onNestedRelease,\n            keyboardIsOpen,\n            modal,\n            snapPointsOffset,\n            activeSnapPointIndex,\n            direction,\n            shouldScaleBackground,\n            setBackgroundColorOnScale,\n            noBodyStyles,\n            container,\n            autoFocus\n        }\n    }, children));\n}\nconst Overlay = /*#__PURE__*/ React__default.forwardRef(function({ ...rest }, ref) {\n    const { overlayRef, snapPoints, onRelease, shouldFade, isOpen, modal, shouldAnimate } = useDrawerContext();\n    const composedRef = useComposedRefs(ref, overlayRef);\n    const hasSnapPoints = snapPoints && snapPoints.length > 0;\n    // Overlay is the component that is locking scroll, removing it will unlock the scroll without having to dig into Radix's Dialog library\n    if (!modal) {\n        return null;\n    }\n    const onMouseUp = React__default.useCallback((event)=>onRelease(event), [\n        onRelease\n    ]);\n    return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Overlay, {\n        onMouseUp: onMouseUp,\n        ref: composedRef,\n        \"data-vaul-overlay\": \"\",\n        \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n        \"data-vaul-snap-points-overlay\": isOpen && shouldFade ? 'true' : 'false',\n        \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n        ...rest\n    });\n});\nOverlay.displayName = 'Drawer.Overlay';\nconst Content = /*#__PURE__*/ React__default.forwardRef(function({ onPointerDownOutside, style, onOpenAutoFocus, ...rest }, ref) {\n    const { drawerRef, onPress, onRelease, onDrag, keyboardIsOpen, snapPointsOffset, activeSnapPointIndex, modal, isOpen, direction, snapPoints, container, handleOnly, shouldAnimate, autoFocus } = useDrawerContext();\n    // Needed to use transition instead of animations\n    const [delayedSnapPoints, setDelayedSnapPoints] = React__default.useState(false);\n    const composedRef = useComposedRefs(ref, drawerRef);\n    const pointerStartRef = React__default.useRef(null);\n    const lastKnownPointerEventRef = React__default.useRef(null);\n    const wasBeyondThePointRef = React__default.useRef(false);\n    const hasSnapPoints = snapPoints && snapPoints.length > 0;\n    useScaleBackground();\n    const isDeltaInDirection = (delta, direction, threshold = 0)=>{\n        if (wasBeyondThePointRef.current) return true;\n        const deltaY = Math.abs(delta.y);\n        const deltaX = Math.abs(delta.x);\n        const isDeltaX = deltaX > deltaY;\n        const dFactor = [\n            'bottom',\n            'right'\n        ].includes(direction) ? 1 : -1;\n        if (direction === 'left' || direction === 'right') {\n            const isReverseDirection = delta.x * dFactor < 0;\n            if (!isReverseDirection && deltaX >= 0 && deltaX <= threshold) {\n                return isDeltaX;\n            }\n        } else {\n            const isReverseDirection = delta.y * dFactor < 0;\n            if (!isReverseDirection && deltaY >= 0 && deltaY <= threshold) {\n                return !isDeltaX;\n            }\n        }\n        wasBeyondThePointRef.current = true;\n        return true;\n    };\n    React__default.useEffect(()=>{\n        if (hasSnapPoints) {\n            window.requestAnimationFrame(()=>{\n                setDelayedSnapPoints(true);\n            });\n        }\n    }, []);\n    function handleOnPointerUp(event) {\n        pointerStartRef.current = null;\n        wasBeyondThePointRef.current = false;\n        onRelease(event);\n    }\n    return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Content, {\n        \"data-vaul-drawer-direction\": direction,\n        \"data-vaul-drawer\": \"\",\n        \"data-vaul-delayed-snap-points\": delayedSnapPoints ? 'true' : 'false',\n        \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n        \"data-vaul-custom-container\": container ? 'true' : 'false',\n        \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n        ...rest,\n        ref: composedRef,\n        style: snapPointsOffset && snapPointsOffset.length > 0 ? {\n            '--snap-point-height': `${snapPointsOffset[activeSnapPointIndex != null ? activeSnapPointIndex : 0]}px`,\n            ...style\n        } : style,\n        onPointerDown: (event)=>{\n            if (handleOnly) return;\n            rest.onPointerDown == null ? void 0 : rest.onPointerDown.call(rest, event);\n            pointerStartRef.current = {\n                x: event.pageX,\n                y: event.pageY\n            };\n            onPress(event);\n        },\n        onOpenAutoFocus: (e)=>{\n            onOpenAutoFocus == null ? void 0 : onOpenAutoFocus(e);\n            if (!autoFocus) {\n                e.preventDefault();\n            }\n        },\n        onPointerDownOutside: (e)=>{\n            onPointerDownOutside == null ? void 0 : onPointerDownOutside(e);\n            if (!modal || e.defaultPrevented) {\n                e.preventDefault();\n                return;\n            }\n            if (keyboardIsOpen.current) {\n                keyboardIsOpen.current = false;\n            }\n        },\n        onFocusOutside: (e)=>{\n            if (!modal) {\n                e.preventDefault();\n                return;\n            }\n        },\n        onPointerMove: (event)=>{\n            lastKnownPointerEventRef.current = event;\n            if (handleOnly) return;\n            rest.onPointerMove == null ? void 0 : rest.onPointerMove.call(rest, event);\n            if (!pointerStartRef.current) return;\n            const yPosition = event.pageY - pointerStartRef.current.y;\n            const xPosition = event.pageX - pointerStartRef.current.x;\n            const swipeStartThreshold = event.pointerType === 'touch' ? 10 : 2;\n            const delta = {\n                x: xPosition,\n                y: yPosition\n            };\n            const isAllowedToSwipe = isDeltaInDirection(delta, direction, swipeStartThreshold);\n            if (isAllowedToSwipe) onDrag(event);\n            else if (Math.abs(xPosition) > swipeStartThreshold || Math.abs(yPosition) > swipeStartThreshold) {\n                pointerStartRef.current = null;\n            }\n        },\n        onPointerUp: (event)=>{\n            rest.onPointerUp == null ? void 0 : rest.onPointerUp.call(rest, event);\n            pointerStartRef.current = null;\n            wasBeyondThePointRef.current = false;\n            onRelease(event);\n        },\n        onPointerOut: (event)=>{\n            rest.onPointerOut == null ? void 0 : rest.onPointerOut.call(rest, event);\n            handleOnPointerUp(lastKnownPointerEventRef.current);\n        },\n        onContextMenu: (event)=>{\n            rest.onContextMenu == null ? void 0 : rest.onContextMenu.call(rest, event);\n            if (lastKnownPointerEventRef.current) {\n                handleOnPointerUp(lastKnownPointerEventRef.current);\n            }\n        }\n    });\n});\nContent.displayName = 'Drawer.Content';\nconst LONG_HANDLE_PRESS_TIMEOUT = 250;\nconst DOUBLE_TAP_TIMEOUT = 120;\nconst Handle = /*#__PURE__*/ React__default.forwardRef(function({ preventCycle = false, children, ...rest }, ref) {\n    const { closeDrawer, isDragging, snapPoints, activeSnapPoint, setActiveSnapPoint, dismissible, handleOnly, isOpen, onPress, onDrag } = useDrawerContext();\n    const closeTimeoutIdRef = React__default.useRef(null);\n    const shouldCancelInteractionRef = React__default.useRef(false);\n    function handleStartCycle() {\n        // Stop if this is the second click of a double click\n        if (shouldCancelInteractionRef.current) {\n            handleCancelInteraction();\n            return;\n        }\n        window.setTimeout(()=>{\n            handleCycleSnapPoints();\n        }, DOUBLE_TAP_TIMEOUT);\n    }\n    function handleCycleSnapPoints() {\n        // Prevent accidental taps while resizing drawer\n        if (isDragging || preventCycle || shouldCancelInteractionRef.current) {\n            handleCancelInteraction();\n            return;\n        }\n        // Make sure to clear the timeout id if the user releases the handle before the cancel timeout\n        handleCancelInteraction();\n        if (!snapPoints || snapPoints.length === 0) {\n            if (!dismissible) {\n                closeDrawer();\n            }\n            return;\n        }\n        const isLastSnapPoint = activeSnapPoint === snapPoints[snapPoints.length - 1];\n        if (isLastSnapPoint && dismissible) {\n            closeDrawer();\n            return;\n        }\n        const currentSnapIndex = snapPoints.findIndex((point)=>point === activeSnapPoint);\n        if (currentSnapIndex === -1) return; // activeSnapPoint not found in snapPoints\n        const nextSnapPoint = snapPoints[currentSnapIndex + 1];\n        setActiveSnapPoint(nextSnapPoint);\n    }\n    function handleStartInteraction() {\n        closeTimeoutIdRef.current = window.setTimeout(()=>{\n            // Cancel click interaction on a long press\n            shouldCancelInteractionRef.current = true;\n        }, LONG_HANDLE_PRESS_TIMEOUT);\n    }\n    function handleCancelInteraction() {\n        if (closeTimeoutIdRef.current) {\n            window.clearTimeout(closeTimeoutIdRef.current);\n        }\n        shouldCancelInteractionRef.current = false;\n    }\n    return /*#__PURE__*/ React__default.createElement(\"div\", {\n        onClick: handleStartCycle,\n        onPointerCancel: handleCancelInteraction,\n        onPointerDown: (e)=>{\n            if (handleOnly) onPress(e);\n            handleStartInteraction();\n        },\n        onPointerMove: (e)=>{\n            if (handleOnly) onDrag(e);\n        },\n        // onPointerUp is already handled by the content component\n        ref: ref,\n        \"data-vaul-drawer-visible\": isOpen ? 'true' : 'false',\n        \"data-vaul-handle\": \"\",\n        \"aria-hidden\": \"true\",\n        ...rest\n    }, /*#__PURE__*/ React__default.createElement(\"span\", {\n        \"data-vaul-handle-hitarea\": \"\",\n        \"aria-hidden\": \"true\"\n    }, children));\n});\nHandle.displayName = 'Drawer.Handle';\nfunction NestedRoot({ onDrag, onOpenChange, open: nestedIsOpen, ...rest }) {\n    const { onNestedDrag, onNestedOpenChange, onNestedRelease } = useDrawerContext();\n    if (!onNestedDrag) {\n        throw new Error('Drawer.NestedRoot must be placed in another drawer');\n    }\n    return /*#__PURE__*/ React__default.createElement(Root, {\n        nested: true,\n        open: nestedIsOpen,\n        onClose: ()=>{\n            onNestedOpenChange(false);\n        },\n        onDrag: (e, p)=>{\n            onNestedDrag(e, p);\n            onDrag == null ? void 0 : onDrag(e, p);\n        },\n        onOpenChange: (o)=>{\n            if (o) {\n                onNestedOpenChange(o);\n            }\n            onOpenChange == null ? void 0 : onOpenChange(o);\n        },\n        onRelease: onNestedRelease,\n        ...rest\n    });\n}\nfunction Portal(props) {\n    const context = useDrawerContext();\n    const { container = context.container, ...portalProps } = props;\n    return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Portal, {\n        container: container,\n        ...portalProps\n    });\n}\nconst Drawer = {\n    Root,\n    NestedRoot,\n    Content,\n    Overlay,\n    Trigger: DialogPrimitive.Trigger,\n    Portal,\n    Handle,\n    Close: DialogPrimitive.Close,\n    Title: DialogPrimitive.Title,\n    Description: DialogPrimitive.Description\n};\n\nexport { Content, Drawer, Handle, NestedRoot, Overlay, Portal, Root };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n  const { children, width = 10, height = 5, ...arrowProps } = props;\n  return /* @__PURE__ */ jsx(\n    Primitive.svg,\n    {\n      ...arrowProps,\n      ref: forwardedRef,\n      width,\n      height,\n      viewBox: \"0 0 30 10\",\n      preserveAspectRatio: \"none\",\n      children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n    }\n  );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n  Arrow,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n  const [size, setSize] = React.useState(void 0);\n  useLayoutEffect(() => {\n    if (element) {\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n        if (!entries.length) {\n          return;\n        }\n        const entry = entries[0];\n        let width;\n        let height;\n        if (\"borderBoxSize\" in entry) {\n          const borderSizeEntry = entry[\"borderBoxSize\"];\n          const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n          width = borderSize[\"inlineSize\"];\n          height = borderSize[\"blockSize\"];\n        } else {\n          width = element.offsetWidth;\n          height = element.offsetHeight;\n        }\n        setSize({ width, height });\n      });\n      resizeObserver.observe(element, { box: \"border-box\" });\n      return () => resizeObserver.unobserve(element);\n    } else {\n      setSize(void 0);\n    }\n  }, [element]);\n  return size;\n}\nexport {\n  useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n  useFloating,\n  autoUpdate,\n  offset,\n  shift,\n  limitShift,\n  hide,\n  arrow as floatingUIarrow,\n  flip,\n  size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React.useState(null);\n  const [placementState, setPlacementState] = React.useState(void 0);\n  return /* @__PURE__ */ jsx(\n    PopperProvider,\n    {\n      scope: __scopePopper,\n      anchor,\n      onAnchorChange: setAnchor,\n      placementState,\n      setPlacementState,\n      children\n    }\n  );\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React.useRef(null);\n    const onAnchorChange = context.onAnchorChange;\n    const callbackRef = React.useCallback(\n      (node) => {\n        ref.current = node;\n        if (node) {\n          onAnchorChange(node);\n        }\n      },\n      [onAnchorChange]\n    );\n    const composedRefs = useComposedRefs(forwardedRef, callbackRef);\n    const anchorRef = React.useRef(null);\n    React.useEffect(() => {\n      if (!virtualRef) {\n        return;\n      }\n      const previousAnchor = anchorRef.current;\n      anchorRef.current = virtualRef.current;\n      if (previousAnchor !== anchorRef.current) {\n        onAnchorChange(anchorRef.current);\n      }\n    });\n    const sideAndAlign = context.placementState && getSideAndAlignFromPlacement(context.placementState);\n    const placedSide = sideAndAlign?.[0];\n    const placedAlign = sideAndAlign?.[1];\n    return virtualRef ? null : /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-radix-popper-side\": placedSide,\n        \"data-radix-popper-align\": placedAlign,\n        ...anchorProps,\n        ref: composedRefs\n      }\n    );\n  }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopper,\n      side = \"bottom\",\n      sideOffset = 0,\n      align = \"center\",\n      alignOffset = 0,\n      arrowPadding = 0,\n      avoidCollisions = true,\n      collisionBoundary,\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = \"partial\",\n      hideWhenDetached = false,\n      updatePositionStrategy = \"optimized\",\n      onPlaced,\n      ...contentProps\n    } = props;\n    const context = usePopperContext(CONTENT_NAME, __scopePopper);\n    const [content, setContent] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [arrow, setArrow] = React.useState(null);\n    const arrowSize = useSize(arrow);\n    const arrowWidth = arrowSize?.width ?? 0;\n    const arrowHeight = arrowSize?.height ?? 0;\n    const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n    const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n    const boundary = collisionBoundary ? Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary] : void 0;\n    const hasExplicitBoundaries = boundary !== void 0 && boundary.length > 0;\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary?.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries\n    };\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: \"fixed\",\n      placement: desiredPlacement,\n      whileElementsMounted: (...args) => {\n        const cleanup = autoUpdate(...args, {\n          animationFrame: updatePositionStrategy === \"always\"\n        });\n        return cleanup;\n      },\n      elements: {\n        reference: context.anchor\n      },\n      middleware: [\n        offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions && shift({\n          mainAxis: true,\n          crossAxis: false,\n          limiter: sticky === \"partial\" ? limitShift() : void 0,\n          ...detectOverflowOptions\n        }),\n        avoidCollisions && flip({ ...detectOverflowOptions }),\n        size({\n          ...detectOverflowOptions,\n          apply: ({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n          }\n        }),\n        arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n      ]\n    });\n    const setPlacementState = context.setPlacementState;\n    useLayoutEffect(() => {\n      setPlacementState(placement);\n      return () => {\n        setPlacementState(void 0);\n      };\n    }, [placement, setPlacementState]);\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect(() => {\n      if (isPositioned) {\n        handlePlaced?.();\n      }\n    }, [isPositioned, handlePlaced]);\n    const arrowX = middlewareData.arrow?.x;\n    const arrowY = middlewareData.arrow?.y;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const [contentZIndex, setContentZIndex] = React.useState();\n    useLayoutEffect(() => {\n      if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n    return /* @__PURE__ */ jsx(\n      \"div\",\n      {\n        ref: refs.setFloating,\n        \"data-radix-popper-content-wrapper\": \"\",\n        style: {\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n          // keep off the page when measuring\n          minWidth: \"max-content\",\n          zIndex: contentZIndex,\n          \"--radix-popper-transform-origin\": [\n            middlewareData.transformOrigin?.x,\n            middlewareData.transformOrigin?.y\n          ].join(\" \"),\n          // hide the content if using the hide middleware and should be hidden\n          // set visibility to hidden and disable pointer events so the UI behaves\n          // as if the PopperContent isn't there at all\n          ...middlewareData.hide?.referenceHidden && {\n            visibility: \"hidden\",\n            pointerEvents: \"none\"\n          }\n        },\n        dir: props.dir,\n        children: /* @__PURE__ */ jsx(\n          PopperContentProvider,\n          {\n            scope: __scopePopper,\n            placedSide,\n            placedAlign,\n            onArrowChange: setArrow,\n            arrowX,\n            arrowY,\n            shouldHideArrow: cannotCenterArrow,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                \"data-side\": placedSide,\n                \"data-align\": placedAlign,\n                ...contentProps,\n                ref: composedRefs,\n                style: {\n                  ...contentProps.style,\n                  // if the PopperContent hasn't been placed yet (not all measurements done)\n                  // we prevent animations so that users's animation don't kick in too early referring wrong sides\n                  animation: !isPositioned ? \"none\" : void 0\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n  const { __scopePopper, ...arrowProps } = props;\n  const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n  const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n  return (\n    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n    // doesn't report size as we'd expect on SVG elements.\n    // it reports their bounding box which is effectively the largest path inside the SVG.\n    /* @__PURE__ */ jsx(\n      \"span\",\n      {\n        ref: contentContext.onArrowChange,\n        style: {\n          position: \"absolute\",\n          left: contentContext.arrowX,\n          top: contentContext.arrowY,\n          [baseSide]: 0,\n          transformOrigin: {\n            top: \"\",\n            right: \"0 0\",\n            bottom: \"center 0\",\n            left: \"100% 0\"\n          }[contentContext.placedSide],\n          transform: {\n            top: \"translateY(100%)\",\n            right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n            bottom: `rotate(180deg)`,\n            left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n          }[contentContext.placedSide],\n          visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n        },\n        children: /* @__PURE__ */ jsx(\n          ArrowPrimitive.Root,\n          {\n            ...arrowProps,\n            ref: forwardedRef,\n            style: {\n              ...arrowProps.style,\n              // ensures the element can be measured correctly (mostly for if SVG)\n              display: \"block\"\n            }\n          }\n        )\n      }\n    )\n  );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n  return value !== null;\n}\nvar transformOrigin = (options) => ({\n  name: \"transformOrigin\",\n  options,\n  fn(data) {\n    const { placement, rects, middlewareData } = data;\n    const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n    const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n    let x = \"\";\n    let y = \"\";\n    if (placedSide === \"bottom\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === \"top\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === \"right\") {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === \"left\") {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n  ALIGN_OPTIONS,\n  Anchor,\n  Arrow,\n  Content,\n  Popper,\n  PopperAnchor,\n  PopperArrow,\n  PopperContent,\n  Root2 as Root,\n  SIDE_OPTIONS,\n  createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n  // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n  position: \"absolute\",\n  border: 0,\n  width: 1,\n  height: 1,\n  padding: 0,\n  margin: -1,\n  overflow: \"hidden\",\n  clip: \"rect(0, 0, 0, 0)\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n      }\n    );\n  }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n  Root,\n  VISUALLY_HIDDEN_STYLES,\n  VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n  const {\n    __scopeTooltip,\n    delayDuration = DEFAULT_DELAY_DURATION,\n    skipDelayDuration = 300,\n    disableHoverableContent = false,\n    children\n  } = props;\n  const isOpenDelayedRef = React.useRef(true);\n  const isPointerInTransitRef = React.useRef(false);\n  const skipDelayTimerRef = React.useRef(0);\n  React.useEffect(() => {\n    const skipDelayTimer = skipDelayTimerRef.current;\n    return () => window.clearTimeout(skipDelayTimer);\n  }, []);\n  return /* @__PURE__ */ jsx(\n    TooltipProviderContextProvider,\n    {\n      scope: __scopeTooltip,\n      isOpenDelayedRef,\n      delayDuration,\n      onOpen: React.useCallback(() => {\n        if (skipDelayDuration <= 0) return;\n        window.clearTimeout(skipDelayTimerRef.current);\n        isOpenDelayedRef.current = false;\n      }, [skipDelayDuration]),\n      onClose: React.useCallback(() => {\n        if (skipDelayDuration <= 0) return;\n        window.clearTimeout(skipDelayTimerRef.current);\n        skipDelayTimerRef.current = window.setTimeout(\n          () => isOpenDelayedRef.current = true,\n          skipDelayDuration\n        );\n      }, [skipDelayDuration]),\n      isPointerInTransitRef,\n      onPointerInTransitChange: React.useCallback((inTransit) => {\n        isPointerInTransitRef.current = inTransit;\n      }, []),\n      disableHoverableContent,\n      children\n    }\n  );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n  const {\n    __scopeTooltip,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    disableHoverableContent: disableHoverableContentProp,\n    delayDuration: delayDurationProp\n  } = props;\n  const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n  const popperScope = usePopperScope(__scopeTooltip);\n  const [trigger, setTrigger] = React.useState(null);\n  const contentId = useId();\n  const openTimerRef = React.useRef(0);\n  const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n  const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n  const wasOpenDelayedRef = React.useRef(false);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: (open2) => {\n      if (open2) {\n        providerContext.onOpen();\n        document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n      } else {\n        providerContext.onClose();\n      }\n      onOpenChange?.(open2);\n    },\n    caller: TOOLTIP_NAME\n  });\n  const stateAttribute = React.useMemo(() => {\n    return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n  }, [open]);\n  const handleOpen = React.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = 0;\n    wasOpenDelayedRef.current = false;\n    setOpen(true);\n  }, [setOpen]);\n  const handleClose = React.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = 0;\n    setOpen(false);\n  }, [setOpen]);\n  const handleDelayedOpen = React.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = window.setTimeout(() => {\n      wasOpenDelayedRef.current = true;\n      setOpen(true);\n      openTimerRef.current = 0;\n    }, delayDuration);\n  }, [delayDuration, setOpen]);\n  React.useEffect(() => {\n    return () => {\n      if (openTimerRef.current) {\n        window.clearTimeout(openTimerRef.current);\n        openTimerRef.current = 0;\n      }\n    };\n  }, []);\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    TooltipContextProvider,\n    {\n      scope: __scopeTooltip,\n      contentId,\n      open,\n      stateAttribute,\n      trigger,\n      onTriggerChange: setTrigger,\n      onTriggerEnter: React.useCallback(() => {\n        if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n        else handleOpen();\n      }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n      onTriggerLeave: React.useCallback(() => {\n        if (disableHoverableContent) {\n          handleClose();\n        } else {\n          window.clearTimeout(openTimerRef.current);\n          openTimerRef.current = 0;\n        }\n      }, [handleClose, disableHoverableContent]),\n      onOpen: handleOpen,\n      onClose: handleClose,\n      disableHoverableContent,\n      children\n    }\n  ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTooltip, ...triggerProps } = props;\n    const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n    const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n    const popperScope = usePopperScope(__scopeTooltip);\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n    const isPointerDownRef = React.useRef(false);\n    const hasPointerMoveOpenedRef = React.useRef(false);\n    const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n    React.useEffect(() => {\n      return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n    }, [handlePointerUp]);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        \"aria-describedby\": context.open ? context.contentId : void 0,\n        \"data-state\": context.stateAttribute,\n        ...triggerProps,\n        ref: composedRefs,\n        onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n          if (event.pointerType === \"touch\") return;\n          if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n            context.onTriggerEnter();\n            hasPointerMoveOpenedRef.current = true;\n          }\n        }),\n        onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n          context.onTriggerLeave();\n          hasPointerMoveOpenedRef.current = false;\n        }),\n        onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n          if (context.open) {\n            context.onClose();\n          }\n          isPointerDownRef.current = true;\n          document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n        }),\n        onFocus: composeEventHandlers(props.onFocus, () => {\n          if (!isPointerDownRef.current) context.onOpen();\n        }),\n        onBlur: composeEventHandlers(props.onBlur, context.onClose),\n        onClick: composeEventHandlers(props.onClick, context.onClose)\n      }\n    ) });\n  }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n  const { __scopeTooltip, forceMount, children, container } = props;\n  const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n    const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n    const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n  }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n  const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n  const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n  const { trigger, onClose } = context;\n  const content = ref.current;\n  const { onPointerInTransitChange } = providerContext;\n  const handleRemoveGraceArea = React.useCallback(() => {\n    setPointerGraceArea(null);\n    onPointerInTransitChange(false);\n  }, [onPointerInTransitChange]);\n  const handleCreateGraceArea = React.useCallback(\n    (event, hoverTarget) => {\n      const currentTarget = event.currentTarget;\n      const exitPoint = { x: event.clientX, y: event.clientY };\n      const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n      const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n      const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n      const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n      setPointerGraceArea(graceArea);\n      onPointerInTransitChange(true);\n    },\n    [onPointerInTransitChange]\n  );\n  React.useEffect(() => {\n    return () => handleRemoveGraceArea();\n  }, [handleRemoveGraceArea]);\n  React.useEffect(() => {\n    if (trigger && content) {\n      const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n      const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n      trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n      content.addEventListener(\"pointerleave\", handleContentLeave);\n      return () => {\n        trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n        content.removeEventListener(\"pointerleave\", handleContentLeave);\n      };\n    }\n  }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n  React.useEffect(() => {\n    if (pointerGraceArea) {\n      const handleTrackPointerGrace = (event) => {\n        const target = event.target;\n        const pointerPosition = { x: event.clientX, y: event.clientY };\n        const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n        const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n        if (hasEnteredTarget) {\n          handleRemoveGraceArea();\n        } else if (isPointerOutsideGraceArea) {\n          handleRemoveGraceArea();\n          onClose();\n        }\n      };\n      document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n      return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n    }\n  }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n  return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeTooltip,\n      children,\n      \"aria-label\": ariaLabel,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      ...contentProps\n    } = props;\n    const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n    const popperScope = usePopperScope(__scopeTooltip);\n    const { onClose } = context;\n    React.useEffect(() => {\n      document.addEventListener(TOOLTIP_OPEN, onClose);\n      return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n    }, [onClose]);\n    React.useEffect(() => {\n      if (context.trigger) {\n        const handleScroll = (event) => {\n          if (event.target instanceof Node && event.target.contains(context.trigger)) {\n            onClose();\n          }\n        };\n        window.addEventListener(\"scroll\", handleScroll, { capture: true });\n        return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n      }\n    }, [context.trigger, onClose]);\n    return /* @__PURE__ */ jsx(\n      DismissableLayer,\n      {\n        asChild: true,\n        disableOutsidePointerEvents: false,\n        onEscapeKeyDown,\n        onPointerDownOutside,\n        onFocusOutside: (event) => event.preventDefault(),\n        onDismiss: onClose,\n        children: /* @__PURE__ */ jsxs(\n          PopperPrimitive.Content,\n          {\n            \"data-state\": context.stateAttribute,\n            ...popperScope,\n            ...contentProps,\n            ref: forwardedRef,\n            style: {\n              ...contentProps.style,\n              // re-namespace exposed content custom properties\n              ...{\n                \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n                \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n                \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n                \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n                \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n              }\n            },\n            children: [\n              /* @__PURE__ */ jsx(Slottable, { children }),\n              /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n            ]\n          }\n        )\n      }\n    );\n  }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTooltip, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeTooltip);\n    const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n      ARROW_NAME,\n      __scopeTooltip\n    );\n    return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n  const top = Math.abs(rect.top - point.y);\n  const bottom = Math.abs(rect.bottom - point.y);\n  const right = Math.abs(rect.right - point.x);\n  const left = Math.abs(rect.left - point.x);\n  switch (Math.min(top, bottom, right, left)) {\n    case left:\n      return \"left\";\n    case right:\n      return \"right\";\n    case top:\n      return \"top\";\n    case bottom:\n      return \"bottom\";\n    default:\n      throw new Error(\"unreachable\");\n  }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n  const paddedExitPoints = [];\n  switch (exitSide) {\n    case \"top\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y + padding },\n        { x: exitPoint.x + padding, y: exitPoint.y + padding }\n      );\n      break;\n    case \"bottom\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y - padding },\n        { x: exitPoint.x + padding, y: exitPoint.y - padding }\n      );\n      break;\n    case \"left\":\n      paddedExitPoints.push(\n        { x: exitPoint.x + padding, y: exitPoint.y - padding },\n        { x: exitPoint.x + padding, y: exitPoint.y + padding }\n      );\n      break;\n    case \"right\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y - padding },\n        { x: exitPoint.x - padding, y: exitPoint.y + padding }\n      );\n      break;\n  }\n  return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n  const { top, right, bottom, left } = rect;\n  return [\n    { x: left, y: top },\n    { x: right, y: top },\n    { x: right, y: bottom },\n    { x: left, y: bottom }\n  ];\n}\nfunction isPointInPolygon(point, polygon) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const ii = polygon[i];\n    const jj = polygon[j];\n    const xi = ii.x;\n    const yi = ii.y;\n    const xj = jj.x;\n    const yj = jj.y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) inside = !inside;\n  }\n  return inside;\n}\nfunction getHull(points) {\n  const newPoints = points.slice();\n  newPoints.sort((a, b) => {\n    if (a.x < b.x) return -1;\n    else if (a.x > b.x) return 1;\n    else if (a.y < b.y) return -1;\n    else if (a.y > b.y) return 1;\n    else return 0;\n  });\n  return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n  if (points.length <= 1) return points.slice();\n  const upperHull = [];\n  for (let i = 0; i < points.length; i++) {\n    const p = points[i];\n    while (upperHull.length >= 2) {\n      const q = upperHull[upperHull.length - 1];\n      const r = upperHull[upperHull.length - 2];\n      if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n      else break;\n    }\n    upperHull.push(p);\n  }\n  upperHull.pop();\n  const lowerHull = [];\n  for (let i = points.length - 1; i >= 0; i--) {\n    const p = points[i];\n    while (lowerHull.length >= 2) {\n      const q = lowerHull[lowerHull.length - 1];\n      const r = lowerHull[lowerHull.length - 2];\n      if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n      else break;\n    }\n    lowerHull.push(p);\n  }\n  lowerHull.pop();\n  if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n    return upperHull;\n  } else {\n    return upperHull.concat(lowerHull);\n  }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n  Arrow2 as Arrow,\n  Content2 as Content,\n  Portal,\n  Provider,\n  Root3 as Root,\n  Tooltip,\n  TooltipArrow,\n  TooltipContent,\n  TooltipPortal,\n  TooltipProvider,\n  TooltipTrigger,\n  Trigger,\n  createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '../../lib/utils';\n\nconst TooltipZIndexContext = React.createContext<number | undefined>(undefined);\n\ntype TooltipProviderProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider> & {\n  zIndex?: number;\n};\n\nconst TooltipProvider = ({ zIndex, children, ...props }: TooltipProviderProps) => (\n  <TooltipZIndexContext.Provider value={zIndex}>\n    <TooltipPrimitive.Provider {...props}>{children}</TooltipPrimitive.Provider>\n  </TooltipZIndexContext.Provider>\n);\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\ntype TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {\n  portalContainer?: HTMLElement | null;\n};\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  TooltipContentProps\n>(({ className, sideOffset = 4, portalContainer, style, ...props }, ref) => {\n  const zIndexFromProvider = React.useContext(TooltipZIndexContext);\n\n  return (\n    <TooltipPrimitive.Portal container={portalContainer ?? undefined}>\n      <TooltipPrimitive.Content\n        ref={ref}\n        sideOffset={sideOffset}\n        className={cn(\n          // 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]',\n          className\n        )}\n        style={zIndexFromProvider != null ? { ...style, zIndex: zIndexFromProvider } : style}\n        {...props}\n      >\n        {props.children}\n        <TooltipPrimitive.Arrow className=\"fill-[#525867] stroke-[#525867] stroke-[2px] stroke-linejoin-round [paint-order:stroke_fill]\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  );\n});\n\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import React, { useEffect, useRef, useState } from 'react';\nimport { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip';\n\nexport const BsTooltip = ({\n  children,\n  content,\n}: {\n  children: React.ReactNode;\n  content: React.ReactNode;\n}) => {\n  const triggerRef = useRef<HTMLSpanElement | null>(null);\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n  useEffect(() => {\n    const triggerEl = triggerRef.current;\n    if (!triggerEl) {\n      return;\n    }\n\n    const rootNode = triggerEl.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>('[data-bs-tooltip-portal]');\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-tooltip-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n      return;\n    }\n\n    setPortalContainer(null);\n  }, []);\n\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <span ref={triggerRef} className=\"inline-flex\">\n          {children}\n        </span>\n      </TooltipTrigger>\n      <TooltipContent\n        portalContainer={portalContainer}\n        className=\"rounded-[4px] bg-[#525867] px-[12px] !py-[7px] text-[12px] text-white leading-normal max-w-[288px] animate-in fade-in-0 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 duration-200\"\n      >\n        {content}\n      </TooltipContent>\n    </Tooltip>\n  );\n};\n","import { ReactNode, forwardRef } from 'react';\nimport { Button, ButtonProps } from './ui/button';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { BsTooltip } from './tooltip';\n\nexport interface IconBtnProps extends ButtonProps {\n  icon: ReactNode;\n  rounded?: boolean;\n  tooltip?: string;\n}\n\nexport const IconBtn = forwardRef<HTMLButtonElement, IconBtnProps>(\n  ({ icon, className, tooltip, size, rounded, ...rest }, ref) => {\n    const btn = (\n      <Button\n        ref={ref}\n        variant=\"ghost\"\n        size=\"icon\"\n        className={cn(\n          'p-2.5',\n          {\n            'rounded-full w-[26px] h-[26px] aspect-square !text-[#121111]': rounded,\n            'rounded-[4px]': !rounded,\n          },\n          'cursor-pointer',\n          'hover:!bg-[#EFF0F6]',\n          className,\n          transCls\n        )}\n        {...rest}\n      >\n        {icon}\n      </Button>\n    );\n\n    if (tooltip) {\n      return <BsTooltip content={tooltip}>{btn}</BsTooltip>;\n    }\n\n    return btn;\n  }\n);\n","import { transCls } from '../const/ui';\nimport { cn } from '../lib/utils';\n// import { FontIcon } from './font-icon';\n\nexport const DockIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H11V3H3Z\" />\n  </svg>\n);\n\nexport const FloatIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\" />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M13 2C13.5304 2 14.039 2.21086 14.4141 2.58594C14.7891 2.96101 15 3.46957 15 4V12C15 12.5304 14.7891 13.039 14.4141 13.4141C14.039 13.7891 13.5304 14 13 14H3C2.46957 14 1.96101 13.7891 1.58594 13.4141C1.21086 13.039 1 12.5304 1 12V4C1 3.46957 1.21086 2.96101 1.58594 2.58594C1.96101 2.21086 2.46957 2 3 2H13ZM3 3C2.7551 3.00003 2.51896 3.09021 2.33594 3.25293C2.15294 3.41565 2.03553 3.63963 2.00684 3.88281L2 4V12C2.00003 12.2449 2.09021 12.481 2.25293 12.6641C2.41565 12.8471 2.63963 12.9645 2.88281 12.9932L3 13H13C13.2449 13 13.481 12.9098 13.6641 12.7471C13.8471 12.5843 13.9645 12.3604 13.9932 12.1172L14 12V4C14 3.7551 13.9098 3.51896 13.7471 3.33594C13.5843 3.15294 13.3604 3.03553 13.1172 3.00684L13 3H3ZM12.5 4C12.7761 4 13 4.22386 13 4.5V11.5C13 11.7761 12.7761 12 12.5 12H10.5C10.2239 12 10 11.7761 10 11.5V4.5C10 4.22386 10.2239 4 10.5 4H12.5Z\"\n      fillOpacity=\"0.2\"\n    />\n  </svg>\n);\n\nexport const CloseIcon = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 16 16\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\" />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n      <path\n        d=\"M9.00669 7.99894L14.2992 2.7038C14.4278 2.57406 14.5 2.39872 14.5 2.21597C14.5 2.03322 14.4278 1.85788 14.2992 1.72814L14.271 1.69996C14.1411 1.57218 13.9662 1.50058 13.784 1.50058C13.6018 1.50058 13.4269 1.57218 13.297 1.69996L8.00217 7.00331L2.70967 1.69996C2.57969 1.57183 2.40454 1.5 2.22207 1.5C2.0396 1.5 1.86446 1.57183 1.73448 1.69996L1.70515 1.72814C1.64021 1.79157 1.58861 1.86735 1.55338 1.95103C1.51815 2.0347 1.5 2.12458 1.5 2.21538C1.5 2.30618 1.51815 2.39606 1.55338 2.47974C1.58861 2.56341 1.64021 2.6392 1.70515 2.70263L6.99765 7.99894L1.70515 13.2964C1.57687 13.4261 1.50492 13.6012 1.50492 13.7837C1.50492 13.9661 1.57687 14.1412 1.70515 14.2709L1.73448 14.2991C1.86411 14.4274 2.03912 14.4994 2.22149 14.4994C2.40386 14.4994 2.57886 14.4274 2.70849 14.2991L8.00217 9.00396L13.2947 14.2991C13.4243 14.4278 13.5996 14.5 13.7823 14.5C13.9649 14.5 14.1402 14.4278 14.2699 14.2991L14.2992 14.2709C14.4275 14.1412 14.4994 13.9661 14.4994 13.7837C14.4994 13.6012 14.4275 13.4261 14.2992 13.2964L9.00786 7.99894H9.00669Z\"\n        fillOpacity=\"0.2\"\n      />\n    </svg>\n  );\n};\n\nexport const UserIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M13.334 14.3031H2.66732C1.93065 14.3031 1.33398 13.7064 1.33398 12.9697V12.6064C1.33398 10.5997 2.96065 8.96973 4.97065 8.96973H11.0307C13.0373 8.96973 14.6673 10.5964 14.6673 12.6064V12.9697C14.6673 13.7064 14.0707 14.3031 13.334 14.3031Z\" />\n    <path d=\"M4.66602 4.97005C4.66602 5.85411 5.01721 6.70195 5.64233 7.32707C6.26745 7.9522 7.11529 8.30338 7.99935 8.30338C8.8834 8.30338 9.73125 7.9522 10.3564 7.32707C10.9815 6.70195 11.3327 5.85411 11.3327 4.97005C11.3327 4.53231 11.2465 4.09886 11.0789 3.69444C10.9114 3.29002 10.6659 2.92256 10.3564 2.61303C10.0468 2.3035 9.67938 2.05797 9.27496 1.89045C8.87054 1.72294 8.43709 1.63672 7.99935 1.63672C7.56161 1.63672 7.12816 1.72294 6.72374 1.89045C6.31932 2.05797 5.95185 2.3035 5.64233 2.61303C5.3328 2.92256 5.08727 3.29002 4.91975 3.69444C4.75224 4.09886 4.66602 4.53231 4.66602 4.97005Z\" />\n  </svg>\n);\n\nexport const BagIcon = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"16\"\n      height=\"16\"\n      viewBox=\"0 0 16 16\"\n      fill=\"currentColor\"\n    >\n      <path d=\"M4.17666 2.53223H11.8185C12.3729 2.53223 12.848 2.94798 12.9074 3.50231L13.8577 12.2331C13.8973 12.5498 13.7983 12.8468 13.5805 13.0844C13.3825 13.3219 13.0856 13.4407 12.7688 13.4407H3.20658C2.88982 13.4407 2.59285 13.3021 2.39488 13.0844C2.1969 12.8468 2.09792 12.5498 2.11772 12.2331L3.08781 3.52211C3.1472 2.96778 3.62234 2.53224 4.17668 2.53224L4.17666 2.53223ZM5.26553 5.81863C5.26553 7.32326 6.49298 8.5507 7.9976 8.5507C9.50222 8.5507 10.7297 7.32326 10.7297 5.81863C10.7297 5.52167 10.4921 5.2643 10.1753 5.2643C9.87837 5.2643 9.621 5.50187 9.621 5.81863C9.621 6.72933 8.88848 7.46183 7.9778 7.46183C7.06712 7.46183 6.3346 6.72932 6.3346 5.81863C6.3346 5.62065 6.23562 5.44248 6.05744 5.34349C5.87926 5.24451 5.68128 5.24451 5.5031 5.34349C5.36451 5.44248 5.26553 5.62065 5.26553 5.81863Z\" />\n    </svg>\n  );\n};\n\nexport const BuildingIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M10 1.81287V14.4799H2.667C2.267 14.4799 2 14.2129 2 13.8129V3.67987C2 3.34687 2.2 3.07987 2.533 3.01287L9.2 1.34687C9.533 1.27987 9.867 1.47987 10 1.81287ZM10.667 7.81287L13.6 8.94687C13.867 9.07987 14 9.27987 14 9.54687V13.8129C14 14.2129 13.733 14.4799 13.333 14.4799H10.667V7.81287ZM7.333 8.47987H4.667C4.267 8.47987 4 8.74687 4 9.14687C4 9.47987 4.267 9.74687 4.6 9.81287H7.333C7.733 9.81287 8 9.54687 8 9.14687C8 8.74687 7.733 8.47987 7.333 8.47987ZM7.333 5.14687H4.667C4.267 5.14687 4 5.41287 4 5.81287C4 6.14687 4.267 6.41287 4.6 6.47987H7.333C7.733 6.47987 8 6.21287 8 5.81287C8 5.41287 7.733 5.14687 7.333 5.14687Z\" />\n  </svg>\n);\n\nexport const PlaneIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M3.99999 6.66646L9.46666 7.99979L3.99999 9.33313L2.89399 12.2825C2.57533 13.1331 3.46466 13.9338 4.27799 13.5278L13.5447 8.89446C14.2813 8.52579 14.2813 7.47446 13.5447 7.10513L4.27799 2.47179C3.46466 2.06513 2.57533 2.86646 2.89399 3.71779L4.00066 6.66646H3.99999Z\" />\n  </svg>\n);\n\nexport const ExportIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\" />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n  </svg>\n);\n\nexport const AddIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path d=\"M14.3994 7.46839H8.53343V1.60139C8.5341 1.53113 8.52074 1.46144 8.49413 1.3964C8.46751 1.33137 8.42819 1.2723 8.37846 1.22266C8.32872 1.17302 8.26958 1.1338 8.2045 1.10731C8.13941 1.08082 8.06969 1.06759 7.99943 1.06839C7.92925 1.06773 7.85964 1.08106 7.79467 1.10761C7.7297 1.13415 7.67068 1.17339 7.62105 1.22302C7.57143 1.27264 7.53219 1.33167 7.50564 1.39664C7.47909 1.4616 7.46576 1.53121 7.46643 1.60139V7.46839H1.59943C1.52925 7.46773 1.45964 7.48106 1.39467 7.50761C1.3297 7.53415 1.27068 7.57339 1.22105 7.62302C1.17143 7.67264 1.13219 7.73167 1.10564 7.79664C1.07909 7.8616 1.06576 7.93121 1.06643 8.00139C1.06643 8.30039 1.30143 8.53439 1.59943 8.53439H7.46643V14.4014C7.46643 14.7004 7.70143 14.9344 7.99943 14.9344C8.06962 14.9349 8.13922 14.9215 8.20418 14.8949C8.26914 14.8683 8.32818 14.8291 8.37785 14.7795C8.42753 14.7299 8.46687 14.671 8.49358 14.6061C8.52028 14.5412 8.53383 14.4716 8.53343 14.4014V8.53439H14.3994C14.4697 8.53519 14.5394 8.52196 14.6045 8.49547C14.6696 8.46898 14.7287 8.42977 14.7785 8.38013C14.8282 8.33049 14.8675 8.27142 14.8941 8.20639C14.9207 8.14135 14.9341 8.07166 14.9334 8.00139C14.9338 7.9312 14.9203 7.86163 14.8936 7.79672C14.8669 7.73181 14.8275 7.67285 14.7779 7.62326C14.7282 7.57367 14.6691 7.53445 14.6042 7.50786C14.5392 7.48128 14.4696 7.46786 14.3994 7.46839Z\" fill=\"currentColor\" />\n  </svg>\n)\n\nexport const TrashIcon = () => (\n  // <FontIcon code=\"&#xe85f;\"></FontIcon>\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M9.99974 1C10.3726 1.00002 10.732 1.13413 11.008 1.37618C11.284 1.61824 11.4567 1.95088 11.4925 2.30924L11.4995 2.44828V4.37931H14.4991C14.6241 4.37909 14.7446 4.42404 14.8369 4.50532C14.9292 4.5866 14.9867 4.6983 14.998 4.81845C15.0092 4.93859 14.9735 5.05846 14.8979 5.15446C14.8222 5.25045 14.7121 5.31561 14.5891 5.3371L14.4991 5.34483H13.9292L12.4934 14.5887C12.4781 14.6881 12.4311 14.7804 12.3588 14.8527C12.2866 14.9251 12.1928 14.9739 12.0905 14.9923L11.9995 15H4.00053C3.89643 15.0001 3.7949 14.9687 3.71012 14.9104C3.62534 14.8521 3.56153 14.7697 3.52759 14.6746L3.50659 14.5887L2.06978 5.34483H1.50086C1.37593 5.34505 1.25544 5.3001 1.16312 5.21882C1.0708 5.13754 1.01333 5.02583 1.00205 4.90569C0.990758 4.78555 1.02646 4.66567 1.10213 4.56968C1.17779 4.47369 1.28794 4.40853 1.41087 4.38703L1.50086 4.37931H4.50046V2.44828C4.50048 2.08825 4.63936 1.74114 4.89003 1.47463C5.14069 1.20812 5.48517 1.04132 5.85628 1.00676L6.00026 1H9.99974ZM12.9184 5.34483H3.08065L4.43047 14.0345H11.5685L12.9184 5.34483ZM5.96427 5.82855C6.081 5.82046 6.19697 5.85217 6.29198 5.91815C6.38698 5.98414 6.45501 6.08022 6.4842 6.18966L6.4992 6.27655L6.99913 13.0352C7.00801 13.1554 6.97 13.2744 6.89259 13.369C6.81518 13.4635 6.70395 13.5266 6.58078 13.546C6.4576 13.5653 6.33138 13.5395 6.22692 13.4736C6.12247 13.4076 6.04732 13.3064 6.01626 13.1897L6.00026 13.1028L5.50033 6.34414C5.49098 6.2165 5.53449 6.0905 5.62129 5.99382C5.7081 5.89715 5.8311 5.8377 5.96327 5.82855H5.96427ZM10.0357 5.82855C10.1524 5.83668 10.2623 5.88402 10.3465 5.96234C10.4308 6.04067 10.4839 6.14501 10.4967 6.25724L10.4987 6.34414L9.99874 13.1028C9.99035 13.2232 9.93551 13.3363 9.84502 13.4197C9.75454 13.503 9.63499 13.5506 9.50997 13.553C9.38494 13.5555 9.26351 13.5126 9.16963 13.4328C9.07576 13.353 9.01626 13.2421 9.00287 13.1221L8.99987 13.0352L9.4998 6.27655C9.50437 6.21318 9.52184 6.15131 9.55121 6.09447C9.58058 6.03764 9.62128 5.98696 9.67098 5.94534C9.72067 5.90372 9.77838 5.87198 9.8408 5.85194C9.90322 5.8319 9.96912 5.82395 10.0347 5.82855H10.0357ZM9.99974 1.96552H6.00026C5.88325 1.96548 5.76994 2.00508 5.68005 2.07741C5.59016 2.14974 5.52939 2.25023 5.50833 2.36138L5.50033 2.44828V4.37931H10.4997V2.44828C10.4997 2.33529 10.4587 2.22586 10.3838 2.13906C10.3089 2.05226 10.2048 1.99358 10.0897 1.97324L9.99974 1.96552Z\" />\n  </svg>\n);\n\nexport const AnalysisIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\" />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M11.7497 4.22129L11.7581 4.2618C11.7838 4.4337 11.7584 4.91737 11.3386 5.77311C10.852 6.76434 10.0245 7.866 9.01143 8.87879C7.99806 9.89217 6.89698 10.7194 5.90605 11.2059C4.96901 11.6651 4.47747 11.6523 4.35364 11.6168L4.34548 11.576C4.32014 11.4041 4.34548 10.9201 4.76505 10.0641C5.25193 9.07284 6.0797 7.97148 7.09249 6.95869C8.10587 5.94502 9.20694 5.11812 10.1979 4.63125C11.1343 4.17293 11.6259 4.18546 11.7497 4.221V4.22129ZM12.4752 3.4955C11.5629 2.58294 8.91353 3.75656 6.50568 6.11227L6.37456 6.24192C3.93291 8.68387 2.69897 11.4137 3.62814 12.3426C4.54041 13.2551 7.18981 12.0812 9.59766 9.7258L9.72878 9.59614C12.1704 7.15419 13.4044 4.42438 12.4752 3.4955ZM9.01143 6.95927C10.0248 7.97264 10.852 9.07372 11.3389 10.0647C11.7984 11.0023 11.7852 11.4932 11.7503 11.6176L11.7095 11.6258C11.537 11.6511 11.0533 11.6258 10.1973 11.2062C9.20636 10.7194 8.1047 9.89158 7.09191 8.87879C6.07854 7.86542 5.25134 6.76434 4.76447 5.77311C4.30557 4.83637 4.3181 4.34483 4.35364 4.221L4.39443 4.21285C4.56692 4.1875 5.05059 4.21285 5.90663 4.63241C6.89728 5.1187 7.99864 5.94648 9.01143 6.95927ZM9.85844 6.37304L9.72878 6.24192C7.28683 3.80027 4.55702 2.56633 3.62814 3.4955C2.71558 4.40777 3.8892 7.05717 6.2449 9.46502L6.37456 9.59614C8.81651 12.0378 11.551 13.2668 12.4752 12.3426C13.3878 11.4303 12.2138 8.78089 9.85844 6.37304ZM13.4321 7.33455C13.3495 7.41272 13.2835 7.50663 13.2379 7.61074C13.1923 7.71484 13.168 7.82703 13.1665 7.94068C13.165 8.05433 13.1862 8.16714 13.229 8.27244C13.2718 8.37774 13.3352 8.47339 13.4156 8.55376C13.496 8.63413 13.5916 8.69758 13.6969 8.74037C13.8022 8.78316 13.915 8.80441 14.0287 8.80288C14.1423 8.80134 14.2545 8.77705 14.3586 8.73144C14.4627 8.68583 14.5566 8.61982 14.6348 8.53731C14.7873 8.3764 14.8709 8.16233 14.8679 7.94068C14.8649 7.71904 14.7755 7.50731 14.6188 7.35056C14.4621 7.19382 14.2503 7.10444 14.0287 7.10145C13.807 7.09846 13.593 7.18209 13.4321 7.33455ZM7.35122 1.25372C7.26937 1.33207 7.20398 1.42597 7.15891 1.52993C7.11384 1.63388 7.08999 1.74579 7.08875 1.85909C7.08751 1.97239 7.10892 2.0848 7.15172 2.18971C7.19451 2.29462 7.25783 2.38993 7.33796 2.47004C7.41809 2.55015 7.51342 2.61345 7.61834 2.65622C7.72326 2.69899 7.83567 2.72037 7.94897 2.71911C8.06227 2.71784 8.17418 2.69396 8.27812 2.64887C8.38207 2.60377 8.47595 2.53836 8.55428 2.45649C8.70801 2.29578 8.79271 2.08127 8.79023 1.85889C8.78775 1.63651 8.69829 1.42393 8.54102 1.2667C8.38374 1.10946 8.17115 1.02005 7.94877 1.01763C7.72638 1.0152 7.51189 1.09995 7.35122 1.25372ZM1.27419 7.36077C1.19314 7.43929 1.12852 7.53315 1.08409 7.63688C1.03966 7.74061 1.01632 7.85215 1.01541 7.96499C1.0145 8.07783 1.03605 8.18972 1.0788 8.29416C1.12155 8.39859 1.18465 8.49348 1.26443 8.57329C1.3442 8.6531 1.43906 8.71625 1.54347 8.75905C1.64788 8.80186 1.75977 8.82346 1.87261 8.8226C1.98545 8.82175 2.097 8.79846 2.20075 8.75408C2.3045 8.7097 2.39839 8.64513 2.47695 8.56412C2.63243 8.40378 2.71863 8.18874 2.71694 7.9654C2.71525 7.74206 2.62581 7.52835 2.46792 7.37038C2.31003 7.21242 2.09636 7.12287 1.87302 7.12107C1.64969 7.11928 1.4346 7.20537 1.27419 7.36077ZM7.45116 13.5383C7.37015 13.6169 7.30558 13.7108 7.2612 13.8145C7.21682 13.9183 7.19353 14.0298 7.19268 14.1427C7.19182 14.2555 7.21343 14.3674 7.25623 14.4718C7.29903 14.5762 7.36218 14.6711 7.44199 14.7509C7.5218 14.8306 7.61669 14.8937 7.72112 14.9365C7.82556 14.9792 7.93745 15.0008 8.05029 14.9999C8.16313 14.999 8.27467 14.9756 8.3784 14.9312C8.48213 14.8868 8.57599 14.8221 8.65451 14.7411C8.80991 14.5807 8.89601 14.3656 8.89421 14.1423C8.89241 13.9189 8.80286 13.7053 8.6449 13.5474C8.48693 13.3895 8.27322 13.3 8.04988 13.2983C7.82655 13.2967 7.6115 13.3828 7.45116 13.5383Z\"\n      fillOpacity=\"0.2\"\n    />\n  </svg>\n);\n\nexport const MagicIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M3.07981 6.57422L2.22738 6.82578L1.375 6.57422L1.6265 7.43609L1.375 8.29797L2.22744 8.04366L3.07981 8.29797L2.831 7.43609L3.07981 6.57422Z\"\n      fill=\"url(#paint0_linear_18039_4924)\"\n    />\n    <path\n      d=\"M8.63445 3.85273L8.25983 3.53592L7.77539 3.47361L8.0887 3.09486L8.15039 2.60498L8.52495 2.92186L9.00945 2.98411L8.69608 3.36286L8.63445 3.85273Z\"\n      fill=\"url(#paint1_linear_18039_4924)\"\n    />\n    <path\n      d=\"M6.03681 4.04956L5.23375 3.3705L4.19531 3.23694L4.867 2.425L4.99913 1.375L5.80213 2.05413L6.8405 2.18769L6.16894 2.99956L6.03681 4.04956Z\"\n      fill=\"url(#paint2_linear_18039_4924)\"\n    />\n    <path\n      d=\"M12.522 11.5454C12.4655 11.4861 12.3978 11.4387 12.3228 11.4058C12.2478 11.373 12.167 11.3554 12.0851 11.3541C12.0033 11.3528 11.922 11.3678 11.8459 11.3982C11.7699 11.4286 11.7007 11.4738 11.6424 11.5312C11.3956 11.7729 11.3894 12.1711 11.6284 12.4206L13.5568 14.4333C13.6133 14.4926 13.681 14.54 13.756 14.5729C13.831 14.6057 13.9118 14.6233 13.9936 14.6246C14.0755 14.6259 14.1568 14.6109 14.2328 14.5805C14.3088 14.5501 14.3781 14.5049 14.4364 14.4474C14.6832 14.2057 14.6894 13.8076 14.4504 13.5581L12.522 11.5454Z\"\n      fill=\"url(#paint3_linear_18039_4924)\"\n    />\n    <path\n      d=\"M10.1057 3.74423C10.6429 3.44848 11.3063 3.79023 11.3856 4.40348L11.642 6.38679C11.6813 6.69371 11.8245 6.97806 12.0477 7.19236L13.4836 8.56698C13.9278 8.99223 13.8113 9.73585 13.259 10.0015L11.4727 10.8609C11.195 10.9952 10.9717 11.221 10.8408 11.5002L9.99065 13.3064C9.72784 13.8647 8.99265 13.9824 8.57209 13.5335L7.21171 12.0815C7.00174 11.8568 6.72044 11.7118 6.41565 11.6712L4.45415 11.4119C3.84765 11.3318 3.50965 10.661 3.80209 10.1178L4.74765 8.36142C4.89462 8.08832 4.94409 7.77329 4.8879 7.46829L4.52528 5.50248C4.41309 4.89436 4.93965 4.36198 5.54109 4.47542L7.48509 4.84198C7.7869 4.89879 8.09903 4.84873 8.36859 4.70017L10.1057 3.74423Z\"\n      fill=\"url(#paint4_linear_18039_4924)\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_18039_4924\"\n        x1=\"2.22741\"\n        y1=\"6.57422\"\n        x2=\"2.22741\"\n        y2=\"8.29797\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint1_linear_18039_4924\"\n        x1=\"8.39242\"\n        y1=\"2.60498\"\n        x2=\"8.39242\"\n        y2=\"3.85273\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint2_linear_18039_4924\"\n        x1=\"5.51791\"\n        y1=\"1.375\"\n        x2=\"5.51791\"\n        y2=\"4.04956\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint3_linear_18039_4924\"\n        x1=\"13.0394\"\n        y1=\"11.354\"\n        x2=\"13.0394\"\n        y2=\"14.6247\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint4_linear_18039_4924\"\n        x1=\"8.72558\"\n        y1=\"3.63623\"\n        x2=\"8.72558\"\n        y2=\"13.8086\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n    </defs>\n  </svg>\n);\n\nexport const ChevronIcon = ({ isOpen }: { isOpen?: boolean }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    className={cn(transCls, isOpen ? '' : 'rotate-180')}\n  >\n    <path\n      d=\"M3.28125 9.65625L7.58125 5.35625C7.63125 5.30625 7.69375 5.28125 7.75625 5.28125C7.81875 5.28125 7.88125 5.30625 7.93125 5.35625L12.2312 9.65625\"\n      strokeWidth=\"1.5\"\n      strokeLinecap=\"round\"\n    />\n  </svg>\n);\n\n// form field icons\nexport const SNIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M14.51 2C14.79 2 15 2.21135 15 2.49315V13.5067C15 13.7885 14.79 13.9999 14.51 13.9999H1.49013C1.42536 14.0014 1.36096 13.9897 1.30082 13.9655C1.24067 13.9412 1.18605 13.905 1.14024 13.8589C1.09443 13.8128 1.05839 13.7578 1.03431 13.6972C1.01023 13.6367 0.998601 13.5719 1.00013 13.5067V2.49315C1.00013 2.21135 1.21013 2 1.49013 2H14.51ZM14.02 2.98629H1.98012V12.9901H14.02V2.98629ZM11.6867 8.951C11.71 8.97448 11.71 8.97448 11.7334 8.97448C11.7567 8.99796 11.7567 8.99796 11.78 8.99796C11.8034 8.99796 11.8034 9.02145 11.8267 9.02145C11.85 9.02145 11.85 9.04493 11.8734 9.04493C11.8967 9.04493 11.8967 9.06841 11.92 9.06841C11.9434 9.06841 11.9667 9.0919 11.9667 9.0919L11.99 9.11538C11.99 9.13886 12.0134 9.13886 12.0134 9.16235C12.0367 9.16235 12.0367 9.18583 12.0367 9.18583C12.0367 9.20931 12.06 9.20931 12.06 9.2328C12.0834 9.25628 12.0834 9.25628 12.0834 9.27976V9.49111C12.06 9.51459 12.06 9.51459 12.06 9.53808C12.0367 9.56156 12.0367 9.56156 12.0367 9.58504C12.0367 9.60852 12.0134 9.60853 12.0134 9.63201C12.0134 9.65549 11.99 9.65549 11.99 9.67897C11.99 9.70246 11.9667 9.70246 11.9667 9.72594L11.9434 9.74942L11.92 9.77291C11.8967 9.77291 11.8967 9.79639 11.8734 9.79639L9.51672 11.2289C9.43847 11.2738 9.35016 11.2981 9.26006 11.2993C9.17551 11.302 9.09182 11.2815 9.01787 11.2402C8.94393 11.1989 8.88248 11.1381 8.84006 11.0645C8.80631 11.009 8.78376 10.9473 8.7737 10.8831C8.76364 10.8188 8.76627 10.7531 8.78144 10.6899C8.79661 10.6266 8.82402 10.567 8.86211 10.5144C8.90019 10.4619 8.9482 10.4174 9.00339 10.3835L9.86672 9.86684H4.3601C4.10344 9.86684 3.87011 9.72594 3.87011 9.44414C3.87011 9.16235 4.0801 8.951 4.3601 8.951H11.6867ZM6.46008 4.72404C6.51524 4.69012 6.57649 4.66746 6.64034 4.65736C6.7042 4.64727 6.7694 4.64992 6.83224 4.66519C6.89507 4.68045 6.9543 4.70802 7.00655 4.74633C7.0588 4.78463 7.10304 4.83291 7.13674 4.88842C7.17045 4.94393 7.19296 5.00558 7.20299 5.06984C7.21303 5.13411 7.21038 5.19973 7.19522 5.26297C7.18005 5.32621 7.15266 5.38582 7.1146 5.4384C7.07654 5.49099 7.02856 5.53551 6.97341 5.56943L6.11009 6.08606H11.6167C11.8967 6.08606 12.1067 6.29741 12.1067 6.57921C12.1067 6.861 11.8967 7.07235 11.6167 7.07235H4.33677C4.2901 7.07235 4.26677 7.04887 4.2201 7.04887H4.17344C4.15556 7.04703 4.13896 7.03867 4.12677 7.02538C4.12677 7.0019 4.10344 7.0019 4.10344 7.0019C4.0801 7.0019 4.05677 6.97842 4.03344 6.95493C4.03344 6.93145 4.01011 6.93145 4.01011 6.93145C3.98677 6.90797 3.96344 6.861 3.94011 6.83752C3.91677 6.83752 3.91677 6.81404 3.91677 6.81404C3.91677 6.79055 3.89344 6.79055 3.89344 6.76707C3.87011 6.74359 3.87011 6.74359 3.87011 6.7201V6.6196C3.87365 6.60407 3.88179 6.58999 3.89344 6.57921V6.48527C3.91677 6.46179 3.91677 6.46179 3.91677 6.43831C3.94011 6.41482 3.94011 6.41482 3.94011 6.39134C3.94011 6.36786 3.96344 6.36786 3.96344 6.34437C3.96344 6.32089 3.98677 6.32089 3.98677 6.29741C3.98677 6.27392 4.01011 6.27392 4.01011 6.25044C4.01011 6.22696 4.03344 6.20347 4.03344 6.20347L4.05677 6.17999C4.0801 6.17999 4.0801 6.15651 4.10344 6.15651L6.46008 4.72404Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const TextIcon = () => {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n      <path\n        d=\"M10.4999 14.016H5.49994C5.4353 14.0149 5.37111 14.0269 5.31124 14.0513C5.25138 14.0757 5.19709 14.112 5.15166 14.158C5.10623 14.204 5.0706 14.2587 5.04693 14.3189C5.02326 14.379 5.01203 14.4434 5.01394 14.508C5.01394 14.789 5.22194 15 5.49994 15H10.4999C10.7779 15 10.9859 14.79 10.9859 14.508C10.988 14.4433 10.9769 14.3789 10.9532 14.3187C10.9296 14.2585 10.894 14.2037 10.8485 14.1577C10.8031 14.1117 10.7487 14.0754 10.6888 14.051C10.6289 14.0267 10.5646 14.0147 10.4999 14.016ZM14.6459 1.00098H1.353C1.151 1.00098 1 1.21098 1 1.49198C1 1.77298 1.151 1.98398 1.353 1.98398H14.6459C14.8479 1.98398 14.9999 1.77398 14.9999 1.49198C14.9829 1.21098 14.8309 1.00098 14.6459 1.00098ZM8.43594 12.685V1.89198C8.43594 1.68998 8.22593 1.53898 7.94393 1.53898C7.66293 1.53898 7.45194 1.68998 7.45194 1.89198V12.685C7.45194 12.887 7.66293 13.039 7.94393 13.039C8.22593 13.022 8.43594 12.87 8.43594 12.685Z\"\n        fill=\"#6F829E\"\n      />\n    </svg>\n  );\n};\n\nexport const NumberIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M2.667 11.111V4H1.856C1.60188 4.27268 1.31269 4.51042 0.996 4.707C0.645 4.907 0.313 5.046 0 5.125V6.201C0.638 6.015 1.172 5.716 1.602 5.305V11.111H2.667ZM9.777 11.111V10.173H6.554C6.692 9.789 7.108 9.35 7.8 8.855C8.439 8.385 8.884 8.011 9.137 7.731C9.559 7.223 9.77 6.673 9.77 6.081C9.77 5.468 9.574 4.967 9.183 4.576C8.79 4.192 8.282 4 7.655 4C6.956 4 6.402 4.25 5.993 4.752C5.589 5.221 5.382 5.846 5.369 6.628H6.354C6.372 6.061 6.487 5.635 6.697 5.348C6.902 5.048 7.209 4.898 7.619 4.898C8.004 4.898 8.296 4.996 8.495 5.192C8.694 5.387 8.793 5.68 8.793 6.071C8.793 6.475 8.646 6.856 8.35 7.214C8.176 7.409 7.869 7.676 7.43 8.014C6.682 8.574 6.198 8.998 5.975 9.284C5.54989 9.79691 5.32218 10.4449 5.333 11.111H9.778H9.777ZM13.799 11.111C14.455 11.111 14.993 10.907 15.413 10.498C15.804 10.095 16 9.578 16 8.945C16 8.536 15.896 8.205 15.69 7.948C15.494 7.693 15.218 7.504 14.86 7.383C15.54 7.133 15.88 6.633 15.88 5.878C15.88 5.297 15.695 4.837 15.327 4.498C14.953 4.166 14.455 4 13.834 4C13.224 4 12.732 4.188 12.358 4.565C11.955 4.949 11.728 5.479 11.676 6.156H12.6C12.634 5.741 12.758 5.425 12.97 5.208C13.178 4.997 13.469 4.891 13.843 4.891C14.216 4.891 14.496 4.984 14.68 5.169C14.858 5.354 14.947 5.616 14.947 5.955C14.947 6.3 14.849 6.565 14.654 6.751C14.458 6.936 14.174 7.028 13.799 7.028H13.359V7.814H13.808C14.216 7.814 14.524 7.91 14.731 8.102C14.956 8.294 15.068 8.591 15.068 8.993C15.068 9.325 14.962 9.61 14.748 9.846C14.501 10.102 14.182 10.229 13.791 10.229C13.428 10.229 13.135 10.114 12.911 9.884C12.657 9.642 12.522 9.287 12.505 8.821H11.555C11.607 9.587 11.849 10.171 12.28 10.574C12.666 10.932 13.172 11.111 13.8 11.111H13.799Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const SubformIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M10.398 1C10.713 1 11 1.216 11 1.505V7.225H14C14.2449 7.22503 14.4813 7.31496 14.6644 7.47772C14.8474 7.64047 14.9643 7.86475 14.993 8.108L15 8.225V13.725C15 13.9699 14.91 14.2063 14.7473 14.3894C14.5845 14.5724 14.3603 14.6893 14.117 14.718L14 14.725H10.938C10.842 14.891 10.642 15 10.398 15H1.602C1.258 15 1 14.784 1 14.495V1.505C1 1.216 1.258 1 1.602 1H10.398ZM10 2H2V14H10V2ZM14 8.225H11V13.725H14V8.225ZM6.056 8.725C6.3 8.725 6.5 8.949 6.5 9.225C6.5 9.47 6.343 9.675 6.135 9.717L6.055 9.725H2.945C2.698 9.725 2.5 9.501 2.5 9.225C2.5 8.98 2.657 8.775 2.865 8.733L2.945 8.725H6.056ZM9 5.725C9.12495 5.72477 9.24545 5.77133 9.33778 5.85551C9.43012 5.93969 9.48759 6.05539 9.49888 6.17982C9.51017 6.30426 9.47446 6.42841 9.39878 6.52783C9.3231 6.62725 9.21295 6.69474 9.09 6.717L9 6.725H3C2.87505 6.72523 2.75455 6.67867 2.66222 6.59449C2.56988 6.51031 2.51241 6.39461 2.50112 6.27018C2.48984 6.14574 2.52554 6.02159 2.60122 5.92217C2.6769 5.82275 2.78705 5.75526 2.91 5.733L3 5.725H9Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const EmptyCardIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"180\" height=\"124\" viewBox=\"0 0 180 124\" fill=\"none\">\n  <path d=\"M75.9984 98.2004C75.9984 87.2651 67.1337 78.4004 56.1984 78.4004C45.2632 78.4004 36.3984 87.2651 36.3984 98.2004\" fill=\"url(#paint0_linear_27318_10700)\"/>\n  <path d=\"M138.078 40.1919L137.393 39.9491L137.195 39.7526L133.041 35.5946L127.48 30.0312C125.052 32.612 123.701 36.0221 123.703 39.5652C123.716 47.263 129.94 53.4841 137.635 53.5009C143.527 53.5009 148.561 49.8384 150.598 44.6708L146.53 43.2176L138.078 40.1919Z\" fill=\"#B9D5FF\"/>\n  <path d=\"M136.642 36.1227L134.723 34.2024L127.547 27.0297C130.017 24.7044 133.252 23.3634 136.642 23.2598V36.1227Z\" fill=\"#DEEBFF\"/>\n  <path d=\"M138.406 24.6512C145.897 24.8974 151.882 31.0302 151.898 38.5767C151.898 40.0703 151.662 41.5042 151.229 42.8524L138.406 38.266V24.6512Z\" fill=\"#2EBDE4\"/>\n  <path d=\"M91.12 52.3008H90.88C89.296 52.3008 88 50.8048 88 48.9837V43.6179C88 41.7967 89.296 40.3008 90.88 40.3008H91.12C92.704 40.3008 94 41.7967 94 43.6179V49.0162C94 50.8374 92.704 52.3008 91.12 52.3008Z\" fill=\"#1973FF\"/>\n  <path d=\"M124.518 45.1609C123.718 44.3609 122.598 43.8809 121.438 43.8809H60.4381C59.2781 43.8809 58.1581 44.3209 57.3581 45.1609C56.5581 45.9609 56.0781 47.0809 56.0781 48.2409V87.4409C56.0781 88.6009 56.5181 89.7209 57.3581 90.5209C58.1581 91.3209 59.2781 91.8009 60.4381 91.8009H88.0381V94.7209H88.1181L75.7581 102.481C75.1581 102.961 74.7981 103.681 74.7181 104.441C74.6381 105.201 74.8781 105.961 75.3581 106.561C75.8381 107.161 76.5581 107.521 77.3181 107.601C78.0781 107.681 78.8381 107.401 79.4381 106.921L91.2381 99.5209L102.718 106.961C103.918 108.001 105.758 107.881 106.838 106.681C107.878 105.481 107.758 103.641 106.558 102.561L94.1581 94.4809C94.0781 94.4009 93.9581 94.3209 93.8781 94.2409V91.7609H121.478C122.638 91.7609 123.758 91.3209 124.558 90.4809C125.358 89.6809 125.838 88.5609 125.838 87.4009V48.2409C125.798 47.0809 125.318 46.0009 124.518 45.1609Z\" fill=\"url(#paint1_linear_27318_10700)\"/>\n  <path d=\"M82.6 77.9206C82.6 79.4406 81.32 80.7206 79.8 80.7206C78.28 80.7206 77 79.4406 77 77.9206V64.4406C77 62.9206 78.28 61.6406 79.8 61.6406C81.32 61.6406 82.6 62.9206 82.6 64.4406V77.9206Z\" fill=\"#91BCFF\"/>\n  <path d=\"M93.6 77.9205C93.6 79.4405 92.32 80.7205 90.8 80.7205C89.28 80.7205 88 79.4405 88 77.9205V56.3605C88 54.8005 89.28 53.5605 90.8 53.5605C92.32 53.5605 93.6 54.8005 93.6 56.3605V77.9205Z\" fill=\"#91BCFF\"/>\n  <path d=\"M104.6 77.9207C104.6 79.4407 103.32 80.7207 101.8 80.7207C100.28 80.7207 99 79.4407 99 77.9207V72.5207C99 71.0007 100.28 69.7207 101.8 69.7207C103.32 69.7207 104.6 71.0007 104.6 72.5207V77.9207Z\" fill=\"#91BCFF\"/>\n  <path d=\"M88.0383 91.7998V94.7198H88.1183L75.7583 102.48C75.1583 102.96 74.7983 103.68 74.7183 104.44C74.6383 105.2 74.8783 105.96 75.3583 106.56C75.8383 107.16 76.5583 107.52 77.3183 107.6C78.0783 107.68 78.8383 107.4 79.4383 106.92L91.2383 99.5198L102.718 106.96C103.918 108 105.758 107.88 106.838 106.68C107.878 105.48 107.758 103.64 106.558 102.56L94.1583 94.4798C94.0783 94.3998 93.9583 94.3198 93.8783 94.2398V91.7598L88.0383 91.7998Z\" fill=\"#0265FF\"/>\n  <path d=\"M164.797 98.1992C164.797 76.6601 147.336 59.1992 125.797 59.1992C104.258 59.1992 86.7969 76.6601 86.7969 98.1992\" fill=\"url(#paint2_linear_27318_10700)\"/>\n  <path d=\"M146.798 84.5859C147.698 86.3859 138.398 99.8859 138.398 104.386C138.398 108.886 141.698 106.786 145.598 106.786C149.498 106.786 153.398 110.086 152.798 102.286C152.198 94.4859 145.898 82.7859 146.798 84.5859Z\" fill=\"url(#paint3_linear_27318_10700)\" fill-opacity=\"0.2\"/>\n  <path d=\"M145.598 100.486L144.998 104.686L142.898 103.786L144.998 106.486L144.698 111.886H146.798L146.198 104.086L148.298 101.386L145.898 103.186L145.598 100.486Z\" fill=\"#0265FF\"/>\n  <path d=\"M54.9969 98.292C55.4469 99.192 50.7969 105.942 50.7969 108.192C50.7969 110.442 52.4469 109.392 54.3969 109.392C56.3469 109.392 58.2969 111.042 57.9969 107.142C57.6969 103.242 54.5469 97.392 54.9969 98.292Z\" fill=\"url(#paint4_linear_27318_10700)\" fill-opacity=\"0.2\"/>\n  <path d=\"M54.3969 106.242L54.0969 108.342L53.0469 107.892L54.0969 109.242L53.9469 111.942H54.9969L54.6969 108.042L55.7469 106.692L54.5469 107.592L54.3969 106.242Z\" fill=\"#0265FF\"/>\n  <path d=\"M36.1 98.2456C36.325 98.6956 34 102.071 34 103.196C34 104.321 34.825 103.796 35.8 103.796C36.775 103.796 37.75 104.621 37.6 102.671C37.45 100.721 35.875 97.7956 36.1 98.2456Z\" fill=\"url(#paint5_linear_27318_10700)\" fill-opacity=\"0.2\"/>\n  <path d=\"M35.8 102.221L35.65 103.271L35.125 103.046L35.65 103.721L35.575 105.071H36.1L35.95 103.121L36.475 102.446L35.875 102.896L35.8 102.221Z\" fill=\"#0265FF\"/>\n  <path d=\"M48.8069 16C48.8069 19.7647 48.041 22.5882 46.5091 24.4706C44.9772 26.3529 41.6069 27.2941 36.3984 27.2941C41.1396 27.5294 44.3567 28.3137 46.0495 29.6471C47.7423 30.9805 48.6615 34.4314 48.8069 40C48.8069 34.6667 49.4197 31.2157 50.6452 29.6471C51.8708 28.0784 54.3218 27.1373 57.9984 26.8235C54.1075 26.5139 51.6075 25.706 50.4984 24.4C49.3893 23.094 48.8255 20.294 48.8069 16Z\" fill=\"url(#paint6_linear_27318_10700)\" fill-opacity=\"0.2\"/>\n  <path d=\"M19.2043 59.1992C19.2043 61.0816 18.8213 62.4933 18.0553 63.4345C17.2894 64.3757 15.6043 64.8463 13 64.8463C15.3706 64.9639 16.9791 65.3561 17.8255 66.0227C18.672 66.6894 19.1315 68.4149 19.2043 71.1992C19.2043 68.5325 19.5106 66.8071 20.1234 66.0227C20.7362 65.2384 21.9617 64.7678 23.8 64.611C21.9035 64.4797 20.678 64.0875 20.1234 63.4345C19.5689 62.7815 19.2625 61.3697 19.2043 59.1992Z\" fill=\"url(#paint7_linear_27318_10700)\" fill-opacity=\"0.2\"/>\n  <defs>\n    <linearGradient id=\"paint0_linear_27318_10700\" x1=\"56.1984\" y1=\"78.4004\" x2=\"56.1984\" y2=\"98.2004\" gradientUnits=\"userSpaceOnUse\">\n      <stop offset=\"0.495192\" stop-color=\"#0265FF\" stop-opacity=\"0.1\"/>\n      <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"/>\n    </linearGradient>\n    <linearGradient id=\"paint1_linear_27318_10700\" x1=\"90.4981\" y1=\"18.0009\" x2=\"90.4981\" y2=\"97.0009\" gradientUnits=\"userSpaceOnUse\">\n      <stop stop-color=\"white\" stop-opacity=\"0\"/>\n      <stop offset=\"1\" stop-color=\"#0265FF\" stop-opacity=\"0.3\"/>\n    </linearGradient>\n    <linearGradient id=\"paint2_linear_27318_10700\" x1=\"125.797\" y1=\"59.1992\" x2=\"125.797\" y2=\"98.1992\" gradientUnits=\"userSpaceOnUse\">\n      <stop offset=\"0.495192\" stop-color=\"#0265FF\" stop-opacity=\"0.1\"/>\n      <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"/>\n    </linearGradient>\n    <linearGradient id=\"paint3_linear_27318_10700\" x1=\"145.629\" y1=\"84.4004\" x2=\"145.629\" y2=\"107.479\" gradientUnits=\"userSpaceOnUse\">\n      <stop stop-color=\"white\"/>\n      <stop offset=\"1\" stop-color=\"#0265FF\"/>\n    </linearGradient>\n    <linearGradient id=\"paint4_linear_27318_10700\" x1=\"54.4122\" y1=\"98.1992\" x2=\"54.4122\" y2=\"109.739\" gradientUnits=\"userSpaceOnUse\">\n      <stop stop-color=\"white\"/>\n      <stop offset=\"1\" stop-color=\"#0265FF\"/>\n    </linearGradient>\n    <linearGradient id=\"paint5_linear_27318_10700\" x1=\"35.8077\" y1=\"98.1992\" x2=\"35.8077\" y2=\"103.969\" gradientUnits=\"userSpaceOnUse\">\n      <stop stop-color=\"white\"/>\n      <stop offset=\"1\" stop-color=\"#0265FF\"/>\n    </linearGradient>\n    <linearGradient id=\"paint6_linear_27318_10700\" x1=\"1419.09\" y1=\"2416\" x2=\"1419.09\" y2=\"16\" gradientUnits=\"userSpaceOnUse\">\n      <stop stop-color=\"white\"/>\n      <stop offset=\"1\" stop-color=\"#0265FF\"/>\n    </linearGradient>\n    <linearGradient id=\"paint7_linear_27318_10700\" x1=\"704.346\" y1=\"1259.2\" x2=\"704.346\" y2=\"59.1992\" gradientUnits=\"userSpaceOnUse\">\n      <stop stop-color=\"white\"/>\n      <stop offset=\"1\" stop-color=\"#0265FF\"/>\n    </linearGradient>\n  </defs>\n</svg>\n)\n\nexport const MultilineTextIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M14.5558 10H10.3658C10.1348 10 9.96085 10.21 9.96085 10.492C9.96085 10.773 10.1348 10.984 10.3658 10.984H14.5558C14.7868 10.984 14.9608 10.774 14.9608 10.492C14.9608 10.211 14.7868 10 14.5558 10ZM14.5558 13H10.3658C10.1348 13 9.96085 13.21 9.96085 13.492C9.96085 13.773 10.1348 13.984 10.3658 13.984H14.5558C14.7868 13.984 14.9608 13.774 14.9608 13.492C14.9608 13.211 14.7868 13 14.5558 13ZM14.576 1H1.424C1.182 1 1 1.21 1 1.491C1 1.772 1.182 1.983 1.424 1.983H14.576C14.818 1.983 15 1.773 15 1.491C14.98 1.21 14.798 1 14.576 1ZM8.32685 14.5389L8.32687 1.998C8.32687 1.735 8.11688 1.538 7.83488 1.538C7.55387 1.538 7.34288 1.735 7.34288 1.998L7.34285 14.54C7.34285 14.803 7.55385 15 7.83485 15C8.11685 14.978 8.32685 14.78 8.32685 14.54V14.5389Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const FormFieldIcon = ({\n  size = 28\n}) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n    <path d=\"M18.3749 24.5282H9.62489C9.51177 24.5263 9.39944 24.5473 9.29468 24.59C9.18992 24.6328 9.09492 24.6963 9.01541 24.7768C8.93591 24.8573 8.87356 24.953 8.83213 25.0583C8.7907 25.1636 8.77106 25.2762 8.77439 25.3892C8.77439 25.881 9.13839 26.2502 9.62489 26.2502H18.3749C18.8614 26.2502 19.2254 25.8827 19.2254 25.3892C19.229 25.2761 19.2095 25.1634 19.1682 25.058C19.1268 24.9526 19.0645 24.8567 18.9849 24.7762C18.9054 24.6957 18.8103 24.6322 18.7054 24.5895C18.6005 24.5469 18.4881 24.5261 18.3749 24.5282ZM25.6304 1.75195H2.36775C2.01425 1.75195 1.75 2.11945 1.75 2.6112C1.75 3.10295 2.01425 3.4722 2.36775 3.4722H25.6304C25.9839 3.4722 26.2499 3.1047 26.2499 2.6112C26.2201 2.11945 25.9541 1.75195 25.6304 1.75195ZM14.7629 22.199V3.3112C14.7629 2.9577 14.3954 2.69345 13.9019 2.69345C13.4101 2.69345 13.0409 2.9577 13.0409 3.3112V22.199C13.0409 22.5525 13.4101 22.8185 13.9019 22.8185C14.3954 22.7887 14.7629 22.5227 14.7629 22.199Z\" fill=\"#4D609F\"/>\n  </svg>\n)\n\nexport const DatetimeIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M5.396 4.383H5.576C5.846 4.383 5.95 3.993 5.95 3.723V1.569C5.95 1.299 5.815 1 5.546 1H5.366C5.096 1 4.978 1.299 4.978 1.569V3.813C4.978 3.993 5.128 4.383 5.396 4.383ZM10.322 4.383H10.5C10.77 4.383 10.89 3.993 10.89 3.723V1.569C10.89 1.299 10.783 1 10.516 1H10.335C10.066 1 9.933 1.299 9.933 1.569V3.813C9.933 3.993 10.142 4.383 10.322 4.383ZM13.147 1.97105L11.5 1.971V2.924L13.147 2.92405C13.685 2.92405 14.135 3.45405 14.135 3.99305V4.89105H1.928V3.99305C1.928 3.45505 2.378 2.92505 2.917 2.92505L4.5 2.925V1.972L3.005 1.97205C1.928 1.97205 1 3.09505 1 4.08205V12.7911C1 13.7791 1.90505 15 2.98305 15H13.2131C14.2011 15 15 13.8681 15 12.7911V4.08305C14.912 3.09605 14.224 1.97305 13.146 1.97305V1.97005L13.147 1.97105ZM14.084 12.7011C14.084 13.3291 13.7541 14.044 13.1241 14.044H2.98505C2.44705 14.044 1.959 13.3291 1.959 12.7911V5.78805H14.088V12.7001H14.086L14.084 12.7011ZM9.63004 6.94605C9.96004 6.94605 10.178 7.34705 10.072 7.71005L10.039 7.80005L7.69705 12.9791C7.57005 13.2561 7.28405 13.3561 7.05705 13.2021C6.85705 13.0641 6.77005 12.7721 6.84205 12.5151L6.87705 12.4191L8.83205 8.09705H6.35005C6.12005 8.09705 5.92805 7.89505 5.88905 7.62605L5.88105 7.52205C5.88105 7.24005 6.04705 7.00505 6.26505 6.95605L6.34905 6.94705L9.63004 6.94605ZM9.5 1.972V2.924H6.43V1.972H9.502H9.5Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const RadioButtonIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M6.5 8C6.5 8.39782 6.65804 8.77936 6.93934 9.06066C7.22064 9.34196 7.60218 9.5 8 9.5C8.39782 9.5 8.77936 9.34196 9.06066 9.06066C9.34196 8.77936 9.5 8.39782 9.5 8C9.5 7.60218 9.34196 7.22064 9.06066 6.93934C8.77936 6.65804 8.39782 6.5 8 6.5C7.60218 6.5 7.22064 6.65804 6.93934 6.93934C6.65804 7.22064 6.5 7.60218 6.5 8Z\"\n      fill=\"#6F829E\"\n    />\n    <path\n      d=\"M8 1C4.15 1 1 4.15 1 8C1 11.85 4.15 15 8 15C11.85 15 15 11.85 15 8C15 4.15 11.85 1 8 1ZM8 14.02C4.687 14.02 1.98 11.313 1.98 8C1.98 4.687 4.687 1.98 8 1.98C11.313 1.98 14.02 4.687 14.02 8C14.02 11.313 11.313 14.02 8 14.02Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const ImgIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M12.6671 15.0001H3.33312C3.02589 15.0032 2.72113 14.9449 2.43669 14.8288C2.15225 14.7126 1.89384 14.5409 1.67658 14.3236C1.45933 14.1064 1.2876 13.848 1.17144 13.5635C1.05529 13.2791 0.997041 12.9743 1.00012 12.6671V3.33312C0.997041 3.02589 1.05529 2.72113 1.17144 2.43669C1.2876 2.15225 1.45933 1.89384 1.67658 1.67658C1.89384 1.45933 2.15225 1.2876 2.43669 1.17144C2.72113 1.05529 3.02589 0.997041 3.33312 1.00012H12.6671C12.9743 0.997041 13.2791 1.05529 13.5635 1.17144C13.848 1.2876 14.1064 1.45933 14.3236 1.67658C14.5409 1.89384 14.7126 2.15225 14.8288 2.43669C14.9449 2.72113 15.0032 3.02589 15.0001 3.33312V12.6671C15.0032 12.9743 14.9449 13.2791 14.8288 13.5635C14.7126 13.848 14.5409 14.1064 14.3236 14.3236C14.1064 14.5409 13.848 14.7126 13.5635 14.8288C13.2791 14.9449 12.9743 15.0032 12.6671 15.0001ZM3.38512 2.00012C2.60012 2.00012 2.00012 2.60012 2.00012 3.38512V12.6151C2.00012 13.4001 2.60012 14.0001 3.38512 14.0001H12.6151C13.4001 14.0001 14.0001 13.4001 14.0001 12.6151V3.38512C14.0001 2.60012 13.4001 2.00012 12.6151 2.00012H3.38512ZM12.8141 5.61012C12.8653 5.65137 12.9079 5.70232 12.9394 5.76005C12.9709 5.81778 12.9907 5.88116 12.9977 5.94656C13.0046 6.01195 12.9986 6.07808 12.98 6.14115C12.9614 6.20422 12.9305 6.263 12.8891 6.31412C12.1811 7.19212 11.4751 7.75112 10.7551 7.97712C10.2921 8.12212 9.77512 8.23312 9.14312 8.33112L8.42912 8.43212L7.62612 8.53212C6.47612 8.67412 5.93812 8.77912 5.62812 8.94212C4.66512 9.45112 4.13412 10.1511 3.99412 11.0751C3.98648 11.1419 3.96546 11.2064 3.93231 11.2649C3.89917 11.3234 3.85457 11.3746 3.80119 11.4154C3.74782 11.4563 3.68675 11.4859 3.62165 11.5026C3.55655 11.5193 3.48875 11.5227 3.4223 11.5127C3.35585 11.5026 3.29212 11.4792 3.23491 11.4439C3.1777 11.4086 3.12819 11.3622 3.08934 11.3073C3.05049 11.2525 3.0231 11.1904 3.0088 11.1247C2.9945 11.059 2.99359 10.9911 3.00612 10.9251C3.19512 9.67512 3.92612 8.70912 5.16112 8.05812C5.59412 7.82912 6.13212 7.71512 7.25412 7.57112L8.08612 7.46812C8.31112 7.43912 8.49812 7.41512 8.67612 7.39012C9.41312 7.28612 9.97812 7.17312 10.4561 7.02312C10.9591 6.86512 11.5161 6.42412 12.1111 5.68612C12.1944 5.58297 12.3153 5.51712 12.4471 5.50305C12.5789 5.48899 12.7109 5.52786 12.8141 5.61112V5.61012ZM5.01412 4.48012C5.28291 4.48012 5.5407 4.58689 5.73077 4.77696C5.92084 4.96703 6.02762 5.22482 6.02762 5.49362C6.02762 5.76241 5.92084 6.0202 5.73077 6.21027C5.5407 6.40034 5.28291 6.50712 5.01412 6.50712C4.74532 6.50712 4.48753 6.40034 4.29746 6.21027C4.10739 6.0202 4.00062 5.76241 4.00062 5.49362C4.00062 5.22482 4.10739 4.96703 4.29746 4.77696C4.48753 4.58689 4.74532 4.48012 5.01412 4.48012Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const AttachmentIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M8 8.99974C8.113 8.99974 8.217 9.03774 8.301 9.09974L8.315 9.11274C8.342 9.13274 8.365 9.15674 8.387 9.18274L10.125 11.1697C10.2058 11.2701 10.2448 11.3977 10.2338 11.5261C10.2228 11.6545 10.1626 11.7736 10.0659 11.8587C9.9692 11.9438 9.84336 11.9883 9.71464 11.9829C9.58592 11.9775 9.46425 11.9227 9.375 11.8297L8.499 10.8297L8.5 13.9997C8.5 14.1324 8.44732 14.2595 8.35355 14.3533C8.25979 14.4471 8.13261 14.4997 8 14.4997C7.86739 14.4997 7.74021 14.4471 7.64645 14.3533C7.55268 14.2595 7.5 14.1324 7.5 13.9997L7.499 10.8297L6.625 11.8297C6.58266 11.8823 6.53012 11.9258 6.47054 11.9575C6.41096 11.9892 6.34557 12.0085 6.27832 12.0143C6.21107 12.02 6.14335 12.0121 6.07924 11.991C6.01513 11.9699 5.95596 11.9361 5.90529 11.8915C5.85462 11.8469 5.8135 11.7925 5.78441 11.7316C5.75533 11.6707 5.73887 11.6045 5.73604 11.5371C5.73321 11.4696 5.74406 11.4023 5.76795 11.3392C5.79183 11.2761 5.82824 11.2184 5.875 11.1697L7.625 9.16974L7.645 9.14774C7.65768 9.13504 7.67103 9.12302 7.685 9.11174L7.625 9.16974C7.67185 9.11641 7.72953 9.07366 7.79419 9.04435C7.85885 9.01504 7.92901 8.99983 8 8.99974ZM8 1.51074C8.88482 1.51077 9.74465 1.80417 10.4449 2.34503C11.1452 2.88588 11.6464 3.64366 11.87 4.49974H12C12.9283 4.49974 13.8185 4.86849 14.4749 5.52487C15.1313 6.18125 15.5 7.07148 15.5 7.99974C15.5 8.928 15.1313 9.81824 14.4749 10.4746C13.8185 11.131 12.9283 11.4997 12 11.4997H11.5C11.3674 11.4997 11.2402 11.4471 11.1464 11.3533C11.0527 11.2595 11 11.1324 11 10.9997C11 10.8671 11.0527 10.74 11.1464 10.6462C11.2402 10.5524 11.3674 10.4997 11.5 10.4997H12C12.3476 10.5012 12.6916 10.4301 13.0102 10.2911C13.3288 10.1521 13.6149 9.94815 13.8502 9.69234C14.0855 9.43653 14.2649 9.13447 14.3769 8.80543C14.4889 8.47639 14.5311 8.1276 14.5007 7.78135C14.4704 7.43509 14.3681 7.09898 14.2006 6.79446C14.033 6.48994 13.8037 6.22371 13.5275 6.01277C13.2512 5.80183 12.934 5.65081 12.5961 5.56937C12.2582 5.48792 11.907 5.47783 11.565 5.53974C11.4974 5.55334 11.4277 5.55282 11.3604 5.5382C11.293 5.52359 11.2294 5.4952 11.1735 5.45482C11.1176 5.41444 11.0707 5.36294 11.0357 5.30355C11.0007 5.24417 10.9783 5.17818 10.97 5.10974C10.8681 4.39464 10.5116 3.7403 9.96601 3.26693C9.42041 2.79356 8.72233 2.53294 8 2.53294C7.27767 2.53294 6.57959 2.79356 6.03399 3.26693C5.48839 3.7403 5.1319 4.39464 5.03 5.10974C5.0217 5.17818 4.99934 5.24417 4.96432 5.30355C4.9293 5.36294 4.88238 5.41444 4.8265 5.45482C4.77063 5.4952 4.707 5.52359 4.63963 5.5382C4.57225 5.55282 4.50259 5.55334 4.435 5.53974C4.09297 5.47783 3.7418 5.48792 3.40389 5.56937C3.06598 5.65081 2.74877 5.80183 2.47251 6.01277C2.19625 6.22371 1.96702 6.48994 1.79944 6.79446C1.63186 7.09898 1.52962 7.43509 1.49926 7.78135C1.46889 8.1276 1.51106 8.47639 1.62307 8.80543C1.73509 9.13447 1.91448 9.43653 2.14981 9.69234C2.38513 9.94815 2.67122 10.1521 2.98979 10.2911C3.30836 10.4301 3.65242 10.5012 4 10.4997H4.5C4.63261 10.4997 4.75979 10.5524 4.85355 10.6462C4.94732 10.74 5 10.8671 5 10.9997C5 11.1324 4.94732 11.2595 4.85355 11.3533C4.75979 11.4471 4.63261 11.4997 4.5 11.4997H4C3.54037 11.4997 3.08525 11.4092 2.66061 11.2333C2.23597 11.0574 1.85013 10.7996 1.52513 10.4746C1.20012 10.1496 0.942313 9.76377 0.766422 9.33913C0.59053 8.91449 0.5 8.45937 0.5 7.99974C0.5 7.54012 0.59053 7.08499 0.766422 6.66035C0.942313 6.23571 1.20012 5.84987 1.52513 5.52487C1.85013 5.19986 2.23597 4.94206 2.66061 4.76616C3.08525 4.59027 3.54037 4.49974 4 4.49974H4.13C4.35364 3.64366 4.85481 2.88588 5.55508 2.34503C6.25535 1.80417 7.11518 1.51077 8 1.51074Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const MultiUserIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M8.55309 6.75938C9.33971 6.19063 9.83409 5.09063 9.83409 4.08438C9.83409 2.37813 8.41834 1 6.66484 1C4.91221 1 3.49646 2.37813 3.49646 4.08438C3.49646 5.09063 4.01271 6.19063 4.77746 6.75938C3 8 1.22681 12.2875 1.00193 14.4969C0.979183 14.7594 1.15943 14.9781 1.42893 15C1.67656 15.0219 1.92331 14.8469 1.94518 14.5844C2.19281 12.2219 4.23759 7.35 6.68759 7.35C9.13759 7.35 11.1826 12.2219 11.4302 14.5844C11.4418 14.7002 11.4968 14.8074 11.5841 14.8845C11.6714 14.9615 11.7845 15.0028 11.9009 15H11.9464C12.0081 14.9966 12.0684 14.9806 12.1236 14.9531C12.1789 14.9256 12.228 14.8872 12.268 14.8401C12.3079 14.7931 12.3379 14.7384 12.356 14.6793C12.3741 14.6203 12.3801 14.5583 12.3734 14.4969C12.1258 12.2875 10.5 8 8.55309 6.75938ZM6.68759 1.91875C7.90296 1.91875 8.87509 2.88125 8.87509 4.08438C8.87487 4.37055 8.7077 4.91793 8.7077 4.91793C8.7077 4.91793 8.49998 5.5 8.23256 5.82609C8.02919 6.02743 7.78795 6.1865 7.52278 6.29412C7.25761 6.40174 6.97375 6.45578 6.68759 6.45312C5.47221 6.45312 4.50009 5.2875 4.50009 4.08438C4.50031 3.7982 4.5572 3.5149 4.66748 3.25082C4.77776 2.98674 4.93924 2.74712 5.14262 2.54578C5.34599 2.34445 5.58722 2.18538 5.85239 2.07775C6.11756 1.97013 6.40142 1.91609 6.68759 1.91875Z\"\n      fill=\"#6F829E\"\n    />\n    <path\n      d=\"M14.9892 14.4969C14.6628 11.9156 13.0005 7 11.3991 6.30006C11.8891 5.79693 12.3082 5.05318 12.3318 3.91568C12.3318 2.75631 11.6318 1.72187 11.3291 1.4375C10.8627 1 10.6527 1 10.5591 1C10.28 1 10.07 1.19688 10.07 1.45938C10.07 1.65625 10.21 1.83125 10.3963 1.89688C10.5836 2.00625 11.3527 2.90943 11.3527 3.91568C11.3527 5.18443 10.7463 5.73131 10.0936 6.14693C9.86085 6.27818 9.8136 6.58443 9.9536 6.78131C10.0008 6.86881 10.0936 6.91256 10.1872 6.95631C10.2572 6.97818 10.3272 7.00006 10.3972 7.00006C12.7772 7.81904 13.8237 13.1406 14.0101 14.6062C14.0328 14.8469 14.2428 15 14.5001 15H14.5456C14.8256 14.9781 15.012 14.7594 14.9892 14.4969Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const AddressIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M8 0C9.85651 0 11.637 0.702379 12.9497 1.95262C14.2625 3.20286 15 4.89856 15 6.66667C15 9.12222 12.6667 11.9 8 15C3.33333 11.9 1 9.12222 1 6.66667C1 4.89856 1.7375 3.20286 3.05025 1.95262C4.36301 0.702379 6.14348 0 8 0ZM8 1.11111C6.4529 1.11111 4.96917 1.69643 3.87521 2.7383C2.78125 3.78016 2.16667 5.19324 2.16667 6.66667C2.16667 8.47333 3.91783 10.7222 7.52867 13.3044L8 13.6356L8.105 13.5633C11.8383 10.96 13.7108 8.68556 13.8275 6.84889L13.8333 6.66667C13.8333 5.19324 13.2188 3.78016 12.1248 2.7383C11.0308 1.69643 9.5471 1.11111 8 1.11111ZM8 4.44444C8.61884 4.44444 9.21233 4.67857 9.64991 5.09532C10.0875 5.51207 10.3333 6.0773 10.3333 6.66667C10.3333 7.25604 10.0875 7.82127 9.64991 8.23802C9.21233 8.65476 8.61884 8.88889 8 8.88889C7.38116 8.88889 6.78767 8.65476 6.35008 8.23802C5.9125 7.82127 5.66667 7.25604 5.66667 6.66667C5.66667 6.0773 5.9125 5.51207 6.35008 5.09532C6.78767 4.67857 7.38116 4.44444 8 4.44444ZM8 5.55556C7.69058 5.55556 7.39383 5.67262 7.17504 5.88099C6.95625 6.08937 6.83333 6.37198 6.83333 6.66667C6.83333 6.96135 6.95625 7.24397 7.17504 7.45234C7.39383 7.66071 7.69058 7.77778 8 7.77778C8.30942 7.77778 8.60616 7.66071 8.82496 7.45234C9.04375 7.24397 9.16667 6.96135 9.16667 6.66667C9.16667 6.37198 9.04375 6.08937 8.82496 5.88099C8.60616 5.67262 8.30942 5.55556 8 5.55556Z\"\n      fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const LocationIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <g clipPath=\"url(#clip0_18039_11921)\">\n      <path\n        d=\"M6.66667 8C6.66667 8.35362 6.80714 8.69276 7.05719 8.94281C7.30724 9.19286 7.64638 9.33333 8 9.33333C8.35362 9.33333 8.69276 9.19286 8.94281 8.94281C9.19286 8.69276 9.33333 8.35362 9.33333 8C9.33333 7.64638 9.19286 7.30724 8.94281 7.05719C8.69276 6.80714 8.35362 6.66667 8 6.66667C7.64638 6.66667 7.30724 6.80714 7.05719 7.05719C6.80714 7.30724 6.66667 7.64638 6.66667 8ZM15.4667 7.46667H14.9067C14.7777 5.81937 14.0648 4.27225 12.8964 3.10398C11.7279 1.9357 10.1806 1.22305 8.53333 1.0944V0.533333C8.53333 0.391885 8.47714 0.256229 8.37712 0.15621C8.27711 0.0561903 8.14145 0 8 0C7.85855 0 7.7229 0.0561903 7.62288 0.15621C7.52286 0.256229 7.46667 0.391885 7.46667 0.533333V1.0944C5.81954 1.2233 4.27256 1.93605 3.1043 3.1043C1.93605 4.27256 1.2233 5.81954 1.0944 7.46667H0.533333C0.391885 7.46667 0.256229 7.52286 0.15621 7.62288C0.0561903 7.7229 0 7.85855 0 8C0 8.14145 0.0561903 8.27711 0.15621 8.37712C0.256229 8.47714 0.391885 8.53333 0.533333 8.53333H1.0944C1.22305 10.1806 1.9357 11.7279 3.10398 12.8964C4.27225 14.0648 5.81937 14.7777 7.46667 14.9067V15.4667C7.46667 15.6081 7.52286 15.7438 7.62288 15.8438C7.7229 15.9438 7.85855 16 8 16C8.14145 16 8.27711 15.9438 8.37712 15.8438C8.47714 15.7438 8.53333 15.6081 8.53333 15.4667V14.9067C10.1808 14.778 11.7282 14.0652 12.8967 12.8967C14.0652 11.7282 14.778 10.1808 14.9067 8.53333H15.4667C15.6081 8.53333 15.7438 8.47714 15.8438 8.37712C15.9438 8.27711 16 8.14145 16 8C16 7.85855 15.9438 7.7229 15.8438 7.62288C15.7438 7.52286 15.6081 7.46667 15.4667 7.46667ZM8.53333 13.84V12.8C8.53333 12.6586 8.47714 12.5229 8.37712 12.4229C8.27711 12.3229 8.14145 12.2667 8 12.2667C7.85855 12.2667 7.7229 12.3229 7.62288 12.4229C7.52286 12.5229 7.46667 12.6586 7.46667 12.8V13.84C6.10203 13.7136 4.82458 13.1139 3.85561 12.1447C2.88663 11.1756 2.28717 9.89799 2.16107 8.53333H3.2C3.34145 8.53333 3.4771 8.47714 3.57712 8.37712C3.67714 8.27711 3.73333 8.14145 3.73333 8C3.73333 7.85855 3.67714 7.7229 3.57712 7.62288C3.4771 7.52286 3.34145 7.46667 3.2 7.46667H2.16107C2.28741 6.1022 2.88697 4.82488 3.85593 3.85593C4.82488 2.88697 6.1022 2.28741 7.46667 2.16107V3.2C7.46667 3.34145 7.52286 3.4771 7.62288 3.57712C7.7229 3.67714 7.85855 3.73333 8 3.73333C8.14145 3.73333 8.27711 3.67714 8.37712 3.57712C8.47714 3.4771 8.53333 3.34145 8.53333 3.2V2.16107C9.89799 2.28717 11.1756 2.88663 12.1447 3.85561C13.1139 4.82458 13.7136 6.10203 13.84 7.46667H12.8C12.6586 7.46667 12.5229 7.52286 12.4229 7.62288C12.3229 7.7229 12.2667 7.85855 12.2667 8C12.2667 8.14145 12.3229 8.27711 12.4229 8.37712C12.5229 8.47714 12.6586 8.53333 12.8 8.53333H13.84C13.7139 9.89816 13.1142 11.1759 12.1451 12.1451C11.1759 13.1142 9.89816 13.7139 8.53333 13.84Z\"\n        fill=\"#6F829E\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_18039_11921\">\n        <rect width=\"16\" height=\"16\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport const LetterAIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"#121111\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M4.52464 12.6249C4.59964 12.6499 4.64964 12.6499 4.72464 12.6499C4.92464 12.6499 5.12464 12.5249 5.19964 12.3249L6.37464 9.3749H9.62464L10.7996 12.3249C10.8746 12.5249 11.0746 12.6499 11.2746 12.6499C11.3496 12.6499 11.3996 12.6499 11.4746 12.6249C11.7496 12.5249 11.8746 12.2249 11.7746 11.9499L8.47464 3.6749C8.47464 3.6499 8.44964 3.6499 8.44964 3.6249C8.44964 3.6249 8.44964 3.5999 8.42464 3.5999C8.42464 3.5749 8.39964 3.5749 8.39964 3.5499L8.37464 3.5249C8.37464 3.5249 8.34964 3.4999 8.32464 3.4999C8.29964 3.4999 8.29964 3.4749 8.27464 3.4749C8.27464 3.4749 8.24964 3.4499 8.22464 3.4499C8.19964 3.4499 8.19964 3.4249 8.17464 3.4249H8.14964C8.12463 3.4249 8.12464 3.4249 8.09964 3.3999H7.89964C7.87464 3.3999 7.87464 3.3999 7.84964 3.4249H7.82464C7.79964 3.4249 7.79964 3.4499 7.77464 3.4499C7.74964 3.4499 7.74964 3.4749 7.72464 3.4749C7.69964 3.4749 7.69964 3.4999 7.67464 3.4999C7.64964 3.4999 7.64964 3.5249 7.62464 3.5249L7.59964 3.5499C7.59964 3.5749 7.57464 3.5749 7.57464 3.5999L7.54964 3.6249C7.54964 3.6499 7.52464 3.6499 7.52464 3.6749L4.22464 11.9499C4.12464 12.2249 4.24964 12.5249 4.52464 12.6249ZM6.79964 8.3249L7.99964 5.2749L9.19964 8.3249H6.79964Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"#121111\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M14.475 1H1.525C1.225 1 1 1.225 1 1.525L1 14.4751C1 14.7751 1.225 15.0001 1.525 15.0001H14.475C14.775 15.0001 15 14.7751 15 14.4751V1.525C15 1.225 14.775 1 14.475 1ZM13.95 13.9501H2.05V2.05H13.95V13.9501Z\"\n      fill=\"black\"\n      fillOpacity=\"0.2\"\n    />\n  </svg>\n);\n\nexport const LeftArrowIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"#121111\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10.4807 12.5275C10.6032 12.4039 10.6719 12.2369 10.6719 12.063C10.6719 11.889 10.6032 11.7221 10.4807 11.5985L6.89074 8.00846L10.4797 4.41746C10.6019 4.29391 10.6704 4.12719 10.6704 3.95346C10.6704 3.77973 10.6019 3.61301 10.4797 3.48946C10.3562 3.36733 10.1895 3.29883 10.0157 3.29883C9.84202 3.29883 9.67529 3.36733 9.55175 3.48946L5.49775 7.54446C5.37561 7.66801 5.30711 7.83473 5.30711 8.00846C5.30711 8.18219 5.37561 8.34891 5.49775 8.47246L9.55075 12.5255C9.67425 12.6483 9.84132 12.7174 10.0155 12.7176C10.1898 12.7178 10.357 12.6491 10.4807 12.5265L10.4807 12.5275Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n</svg>\n)\n\nexport const SolidArrowDownIcon = ({ className, size = 16 }: { className?: string, size?: number }) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\" className={className}>\n    <path d=\"M11.8225 5.68855C11.6892 5.54756 11.512 5.5 11.3349 5.5L4.68698 5.54756C4.50983 5.54756 4.33268 5.59428 4.19941 5.73612C4.1364 5.79998 4.08623 5.87679 4.05195 5.96191C4.01768 6.04703 4 6.13867 4 6.23128C4 6.32389 4.01768 6.41553 4.05195 6.50065C4.08623 6.58577 4.1364 6.66259 4.19941 6.72645L7.52297 10.2648C7.56766 10.3115 7.65623 10.3582 7.70092 10.4058L7.74481 10.4533C7.96664 10.5468 8.27706 10.5001 8.45421 10.3115L11.7778 6.72645C12.089 6.39605 12.0443 5.97138 11.8225 5.68855Z\" fill=\"#666666\"/>\n  </svg>\n);\n\nexport const DividerIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"14\" viewBox=\"0 0 1 14\" fill=\"none\">\n    <path d=\"M0.5 0V14\" stroke=\"#E0E0E0\" />\n  </svg>\n);\n\nexport const MicrophoneIcon = () => (\n  // <svg\n  //   xmlns=\"http://www.w3.org/2000/svg\"\n  //   width=\"16\"\n  //   height=\"16\"\n  //   viewBox=\"0 0 16 16\"\n  //   fill=\"currentColor\"\n  // >\n  //   <path d=\"M8 1C6.89543 1 6 1.89543 6 3V8C6 9.10457 6.89543 10 8 10C9.10457 10 10 9.10457 10 8V3C10 1.89543 9.10457 1 8 1ZM8 2C8.55228 2 9 2.44772 9 3V8C9 8.55228 8.55228 9 8 9C7.44772 9 7 8.55228 7 8V3C7 2.44772 7.44772 2 8 2ZM4 7V8C4 10.2091 5.79086 12 8 12C10.2091 12 12 10.2091 12 8V7H13V8C13 10.5264 11.1242 12.6186 8.67419 12.9328L8.66667 15H7.33333L7.32581 12.9328C4.87583 12.6186 3 10.5264 3 8V7H4Z\" />\n  // </svg>\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-18\"><path d=\"M19.8628 9.29346C20.3042 9.29375 20.6624 9.65179 20.6626 10.0933V10.5698C20.6626 15.0969 17.189 18.8112 12.7622 19.1978V21.7212C12.7621 22.1422 12.4205 22.4839 11.9995 22.4839C11.5785 22.4839 11.2369 22.1422 11.2368 21.7212V19.1978C6.80986 18.8114 3.33742 15.097 3.3374 10.5698V10.0933C3.33761 9.65161 3.6955 9.29346 4.13721 9.29346C4.57871 9.29369 4.93681 9.65175 4.93701 10.0933V10.5698C4.93703 14.4703 8.09908 17.6321 11.9995 17.6323C15.8999 17.6321 19.063 14.4703 19.063 10.5698V10.0933C19.0632 9.65161 19.4211 9.29346 19.8628 9.29346ZM12.2622 1.52197C14.9646 1.64424 17.2258 3.64186 17.3608 6.36768C17.3969 7.09606 17.4194 7.87827 17.4194 8.69385L17.4155 9.29932C17.4075 9.89739 17.3879 10.4738 17.3608 11.02C17.2215 13.8337 14.8166 15.8714 11.9995 15.8716L11.7358 15.8657C9.03367 15.7432 6.77221 13.7456 6.63721 11.02C6.61016 10.4738 6.59059 9.89739 6.58252 9.29932L6.57861 8.69385C6.57861 8.28589 6.58405 7.88626 6.59424 7.49756L6.63721 6.36768C6.77657 3.55397 9.1824 1.51629 11.9995 1.51611L12.2622 1.52197ZM11.9995 3.11572C9.93006 3.1159 8.328 4.58622 8.23584 6.44678C8.20091 7.15198 8.17822 7.90765 8.17822 8.69385C8.17822 9.48005 8.20091 10.2357 8.23584 10.9409C8.328 12.8015 9.93006 14.2718 11.9995 14.272C14.0689 14.2718 15.671 12.8015 15.7632 10.9409C15.7981 10.2357 15.8198 9.48004 15.8198 8.69385C15.8198 7.90765 15.7981 7.15198 15.7632 6.44678C15.671 4.58622 14.069 3.11591 11.9995 3.11572Z\" fill=\"currentColor\"></path></svg>\n);\n\nexport const UploadIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n    <path\n      d=\"M8.5 3.15V10.5C8.5 10.8 8.3 11 8 11C7.7 11 7.5 10.8 7.5 10.5V3.3L5.6 5.2C5.4 5.4 5.1 5.4 4.9 5.2C4.7 5 4.7 4.7 4.9 4.5L7.35 2.05C7.75 1.65 8.35 1.65 8.75 2.05L11.2 4.5C11.4 4.7 11.4 5 11.2 5.2C11 5.4 10.7 5.4 10.5 5.2L8.5 3.15ZM13 9.5C13 9.2 13.2 9 13.5 9C13.8 9 14 9.2 14 9.5V12C14 12.85 13.35 13.5 12.5 13.5H3.5C2.65 13.5 2 12.85 2 12V9.5C2 9.2 2.2 9 2.5 9C2.8 9 3 9.2 3 9.5V12C3 12.3 3.2 12.5 3.5 12.5H12.5C12.8 12.5 13 12.3 13 12V9.5Z\"\n      fillOpacity=\"0.2\"\n    />\n  </svg>\n);\n\nexport const StopIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"2\" />\n  </svg>\n);\n\nexport const SearchIcon = ({ className }: { className?: string }) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className={className}>\n    <path d=\"M14.8985 13.9522L12.2795 11.2492C13.1525 10.1142 13.6755 8.80619 13.6755 7.23519C13.6755 3.74519 10.7965 0.867188 7.30645 0.867188C3.81745 0.866188 0.939453 3.74519 0.939453 7.23419C0.939453 10.7242 3.81845 13.6042 7.30745 13.6042C8.79045 13.6042 10.1875 13.0802 11.3215 12.2072L13.9385 14.8242C14.0255 14.9992 14.1995 14.9992 14.3745 14.9992C14.5362 14.9958 14.6912 14.9335 14.8105 14.8242C15.0725 14.6502 15.0725 14.2142 14.8985 13.9522ZM2.24845 7.32219C2.24951 5.98052 2.78296 4.6941 3.73166 3.7454C4.68037 2.79669 5.96678 2.26325 7.30845 2.26219C8.65012 2.26325 9.93654 2.79669 10.8852 3.7454C11.8339 4.6941 12.3674 5.98052 12.3685 7.32219C12.3674 8.66386 11.8339 9.95027 10.8852 10.899C9.93654 11.8477 8.65012 12.3811 7.30845 12.3822C5.96678 12.3811 4.68037 11.8477 3.73166 10.899C2.78296 9.95027 2.24951 8.66386 2.24845 7.32219Z\" fill=\"currentColor\"/>\n  </svg>\n);\n\nexport const EditIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M3.7789 14.5951C3.1481 14.594 2.54346 14.3429 2.09751 13.8968C1.65156 13.4506 1.4007 12.8459 1.3999 12.2151V3.9801C1.4007 3.3493 1.65156 2.74455 2.09751 2.29841C2.54346 1.85228 3.1481 1.60116 3.7789 1.6001H8.3589C8.48515 1.6001 8.60622 1.65025 8.69548 1.73951C8.78475 1.82878 8.8349 1.94985 8.8349 2.0761C8.8349 2.20234 8.78475 2.32341 8.69548 2.41268C8.60622 2.50195 8.48515 2.5521 8.3589 2.5521H3.7799C3.40142 2.55316 3.03877 2.70411 2.77132 2.97193C2.50388 3.23975 2.35343 3.60261 2.3529 3.9811V12.2141C2.3539 13.0021 2.9929 13.6411 3.7799 13.6431H12.0089C12.3874 13.642 12.75 13.4911 13.0175 13.2233C13.2849 12.9554 13.4354 12.5926 13.4359 12.2141V7.6311C13.433 7.56682 13.4431 7.50261 13.4656 7.44235C13.4882 7.38209 13.5227 7.32704 13.5672 7.28051C13.6116 7.23397 13.6651 7.19694 13.7242 7.17164C13.7834 7.14633 13.8471 7.13329 13.9114 7.13329C13.9757 7.13329 14.0394 7.14633 14.0986 7.17164C14.1577 7.19694 14.2112 7.23397 14.2556 7.28051C14.3001 7.32704 14.3346 7.38209 14.3572 7.44235C14.3797 7.50261 14.3899 7.56682 14.3869 7.6311V12.2141C14.3861 12.8447 14.1354 13.4493 13.6896 13.8954C13.2439 14.3415 12.6395 14.5928 12.0089 14.5941H3.7789V14.5951ZM11.9199 4.0661L12.3699 4.5141L10.1819 6.7041L7.5659 9.3201L6.5799 9.4121L6.6719 8.4241L9.2849 5.8061L11.4739 3.6161L11.9209 4.0661H11.9199ZM11.4729 2.5331C11.3892 2.53318 11.3063 2.54983 11.2291 2.5821C11.1519 2.61436 11.0818 2.66161 11.0229 2.7211L8.6119 5.1331L5.8399 7.9291C5.7876 7.98109 5.75507 8.0497 5.7479 8.1231L5.5699 10.1001C5.56602 10.1441 5.57133 10.1884 5.58549 10.2302C5.59966 10.272 5.62238 10.3104 5.6522 10.3429C5.68201 10.3755 5.71828 10.4014 5.75869 10.4192C5.7991 10.437 5.84276 10.4461 5.8869 10.4461H5.9159L7.8919 10.2691C7.96495 10.2617 8.03316 10.2292 8.0849 10.1771L10.8639 7.3961L13.2739 4.9841C13.333 4.92511 13.3799 4.85505 13.4119 4.77792C13.4439 4.70079 13.4604 4.6181 13.4604 4.5346C13.4604 4.45109 13.4439 4.36841 13.4119 4.29128C13.3799 4.21414 13.333 4.14408 13.2739 4.0851L12.5929 3.3941L11.9199 2.7211C11.8017 2.60167 11.6409 2.53405 11.4729 2.5331Z\" />\n  </svg>\n);\n\nexport const QuestionIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"29\" height=\"29\" viewBox=\"0 0 29 29\" fill=\"none\">\n    <path\n      d=\"M14.0287 0C6.28125 0 0 6.28125 0 14.0306C0 21.7791 6.28125 28.0603 14.0297 28.0603C21.7781 28.0603 28.0594 21.7791 28.0594 14.0306C28.0594 6.28219 21.7781 0 14.0297 0H14.0287ZM15.3909 22.1259C15.3909 22.3119 15.3171 22.4903 15.1855 22.6218C15.054 22.7533 14.8757 22.8272 14.6897 22.8272H12.585C12.399 22.8272 12.2207 22.7533 12.0891 22.6218C11.9576 22.4903 11.8838 22.3119 11.8838 22.1259V20.0213C11.8838 19.6341 12.1978 19.32 12.585 19.32H14.6897C15.0769 19.32 15.3909 19.6341 15.3909 20.0213V22.1259ZM18.8691 12.4697C18.5859 12.8728 17.9466 13.3847 17.145 14.0091L16.2572 14.6222C15.8259 14.9559 15.4434 15.3459 15.3019 15.7913C15.2531 15.9431 15.2175 16.1934 15.1931 16.4625C15.1809 16.5984 15.0591 16.875 14.7759 16.875H12.4913C12.12 16.875 12.0534 16.5844 12.06 16.4428C12.1003 15.51 12.1866 14.6831 12.5662 14.2369C13.335 13.3359 15.0844 12.2137 15.0844 12.2137C15.3506 12.0122 15.5662 11.7937 15.7294 11.5556C16.0256 11.1469 16.2722 10.6978 16.2722 10.2075C16.2722 9.64312 16.1072 9.12937 15.7753 8.66344C15.4472 8.20031 14.8425 7.96781 13.9669 7.96781C13.1053 7.96781 12.495 8.25375 12.135 8.82562C11.8688 9.2475 11.7009 9.63656 11.6316 10.0594C11.6072 10.2094 11.5116 10.5234 11.1909 10.5234H8.96625C8.49187 10.5234 8.38781 10.2159 8.40094 10.0678C8.5725 8.20125 9.30281 6.92531 10.5928 6.10594C11.4703 5.5425 12.5494 5.25938 13.8291 5.25938C15.5119 5.25938 16.9078 5.66062 18.0216 6.46313C19.1325 7.26562 19.6903 8.45344 19.6903 10.0294C19.6903 10.995 19.3509 11.8088 18.8691 12.4697Z\"\n      fill=\"#0265FF\"\n    />\n  </svg>\n);\n\nexport const InfoIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M8 15C4.2 15 1 11.9 1 8C1 4.2 4.1 1 8 1C11.8 1 15 4.1 15 8C15 11.9 11.8 15 8 15ZM8 2C4.7 2 2 4.7 2 8C2 11.3 4.7 14 8 14C11.3 14 14 11.3 14 8C14 4.7 11.3 2 8 2Z\" />\n    <path d=\"M7.19922 4.8C7.19922 5.2 7.49922 5.6 7.99922 5.6C8.49922 5.6 8.79922 5.3 8.79922 4.8C8.79922 4.3 8.39922 4 7.99922 4C7.59922 4 7.19922 4.3 7.19922 4.8ZM7.99922 12C7.69922 12 7.49922 11.8 7.49922 11.5V7C7.49922 6.7 7.69922 6.5 7.99922 6.5C8.29922 6.5 8.49922 6.7 8.49922 7V11.5C8.49922 11.8 8.29922 12 7.99922 12Z\" />\n  </svg>\n);\n\nexport const ExcelIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\n    <g clipPath=\"url(#clip0_18510_39599)\">\n      <path\n        d=\"M20.7403 0V5.92593C20.7403 7.86765 22.2969 9.44593 24.2307 9.48089L24.2959 9.48148H30.2218V28.4444C30.2218 30.4081 28.6299 32 26.6662 32H5.3329C3.36925 32 1.77734 30.4081 1.77734 28.4444V3.55556C1.77734 1.5919 3.36925 0 5.3329 0H20.7403ZM25.481 12.642H6.51808C5.01132 12.642 3.78623 13.8469 3.75324 15.3456L3.75265 15.4074V27.2593C3.75265 28.7658 4.95759 29.9911 6.45626 30.0241L6.51808 30.0247H25.481C26.9876 30.0247 28.2129 28.8198 28.2459 27.3211L28.2465 27.2593V15.4074C28.2465 13.8801 27.0084 12.642 25.481 12.642ZM22.123 0L30.2218 8.09877H25.6786C23.7149 8.09877 22.123 6.50686 22.123 4.54321V0Z\"\n        fill=\"#389E0D\"\n      />\n      <path\n        d=\"M7.29786 24.099L8.30487 22.4634L9.30832 24.099H11.0756L9.34309 21.4738L10.9263 19.0086H9.21114L8.33608 20.5746L7.43336 19.0086H5.70042L7.29766 21.4461L5.54102 24.099H7.29786ZM15.6455 24.099V22.8454H13.1906V19.0086H11.6177V24.099H15.6453H15.6455ZM18.486 24.1859C18.9792 24.1859 19.3877 24.1148 19.7117 23.9721C20.0358 23.8299 20.2881 23.6209 20.4688 23.3456C20.6468 23.0783 20.7411 22.764 20.7394 22.4429C20.7394 22.1649 20.6719 21.9139 20.5364 21.6893C20.4011 21.4647 20.1848 21.2764 19.8871 21.1249C19.5896 20.9734 19.0972 20.8235 18.4096 20.6754C18.1318 20.6175 17.956 20.5549 17.882 20.4877C17.8055 20.4231 17.7674 20.35 17.7674 20.269C17.7674 20.158 17.8136 20.0636 17.9063 19.9862C17.9989 19.9085 18.1366 19.8696 18.3195 19.8696C18.5417 19.8696 18.7159 19.922 18.842 20.0261C18.9682 20.1302 19.0509 20.2969 19.0903 20.526L20.5729 20.4391C20.5081 19.9115 20.3049 19.5265 19.9635 19.2847C19.622 19.0428 19.126 18.9219 18.4757 18.9219C17.9456 18.9219 17.5284 18.9884 17.224 19.1214C16.9196 19.2547 16.6914 19.4374 16.5399 19.6701C16.3882 19.9028 16.3126 20.1499 16.3126 20.4115C16.3126 20.8097 16.4607 21.1372 16.757 21.3942C17.0509 21.651 17.5428 21.857 18.2326 22.0122C18.6539 22.1047 18.9223 22.2031 19.0381 22.3074C19.1539 22.4115 19.2119 22.5296 19.2119 22.6615C19.2119 22.8004 19.1511 22.9223 19.0294 23.0278C18.9079 23.133 18.7351 23.1858 18.5103 23.1858C18.2095 23.1858 17.978 23.0827 17.816 22.8768C17.7164 22.7494 17.6504 22.5641 17.6181 22.3212L16.1216 22.415C16.1654 22.9288 16.3541 23.3525 16.6875 23.6857C17.0207 24.0192 17.6204 24.1857 18.486 24.1857V24.1859ZM22.8127 24.099L23.8197 22.4634L24.8232 24.099H26.5905L24.858 21.4738L26.4414 19.0086H24.726L23.8509 20.5746L22.9482 19.0086H21.2157L22.8127 21.4461L21.0559 24.099H22.8127Z\"\n        fill=\"#389E0D\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_18510_39599\">\n        <rect width=\"32\" height=\"32\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport const ColorfulEditIcon = ({ size = 20 }: { size?: number }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={size}\n    height={size}\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n  >\n    <path\n      d=\"M3.07981 6.57422L2.22738 6.82578L1.375 6.57422L1.6265 7.43609L1.375 8.29797L2.22744 8.04366L3.07981 8.29797L2.831 7.43609L3.07981 6.57422Z\"\n      fill=\"url(#paint0_linear_18510_37545)\"\n    />\n    <path\n      d=\"M8.63384 3.85224L8.25922 3.53543L7.77478 3.47312L8.08809 3.09437L8.14978 2.60449L8.52434 2.92137L9.00884 2.98362L8.69547 3.36237L8.63384 3.85224Z\"\n      fill=\"url(#paint1_linear_18510_37545)\"\n    />\n    <path\n      d=\"M6.03681 4.04956L5.23375 3.3705L4.19531 3.23694L4.867 2.425L4.99913 1.375L5.80213 2.05413L6.8405 2.18769L6.16894 2.99956L6.03681 4.04956Z\"\n      fill=\"url(#paint2_linear_18510_37545)\"\n    />\n    <path\n      d=\"M13.4934 5.30179C13.5249 5.37309 13.5505 5.45627 13.5703 5.55134C13.59 5.6464 13.5998 5.74543 13.5998 5.84842C13.5998 5.9514 13.5801 6.05439 13.5407 6.15738C13.5013 6.26036 13.4382 6.35939 13.3514 6.45445C13.2568 6.54952 13.172 6.6327 13.0971 6.704C13.0222 6.7753 12.9571 6.83867 12.9019 6.89413C12.8389 6.9575 12.7797 7.01296 12.7245 7.06049L10.5126 4.83835C10.6072 4.75121 10.7196 4.64624 10.8497 4.52345C10.9798 4.40066 11.0882 4.30361 11.175 4.23231C11.2854 4.14517 11.3997 4.08378 11.518 4.04813C11.6363 4.01248 11.7526 3.99663 11.867 4.00059C11.9813 4.00456 12.0917 4.02238 12.1981 4.05407C12.3046 4.08576 12.3973 4.12141 12.4761 4.16102C12.6417 4.24816 12.8251 4.40066 13.0261 4.61852C13.2272 4.83637 13.383 5.06413 13.4934 5.30179ZM4.27895 11.1007C4.32627 11.0532 4.43667 10.9403 4.61015 10.7621C4.78364 10.5838 5.00049 10.364 5.26072 10.1026L6.1242 9.2351L7.08231 8.27257L9.62545 5.7177L11.8374 7.95172L9.29425 10.5066L8.34797 11.4691C8.03254 11.7781 7.74865 12.0613 7.49631 12.3188C7.24397 12.5762 7.035 12.7881 6.8694 12.9545C6.7038 13.1209 6.60523 13.2159 6.57369 13.2397C6.49483 13.311 6.40415 13.3863 6.30163 13.4655C6.19912 13.5447 6.09266 13.6081 5.98226 13.6556C5.87186 13.7111 5.71021 13.7784 5.49729 13.8576C5.28438 13.9368 5.06161 14.0141 4.82898 14.0893C4.59635 14.1646 4.37555 14.23 4.16658 14.2854C3.95761 14.3409 3.80187 14.3765 3.69936 14.3924C3.48644 14.4161 3.3445 14.3844 3.27353 14.2973C3.20256 14.2102 3.18284 14.0636 3.21439 13.8576C3.23016 13.7467 3.26762 13.5863 3.32676 13.3764C3.3859 13.1664 3.44899 12.9486 3.51601 12.7228C3.58304 12.497 3.6481 12.2891 3.71119 12.0989C3.77427 11.9088 3.82553 11.7781 3.86496 11.7068C3.91227 11.5959 3.9655 11.4949 4.02464 11.4038C4.08378 11.3127 4.16855 11.2117 4.27895 11.1007Z\"\n      fill=\"url(#paint3_linear_18510_37545)\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_18510_37545\"\n        x1=\"2.22741\"\n        y1=\"6.57422\"\n        x2=\"2.22741\"\n        y2=\"8.29797\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint1_linear_18510_37545\"\n        x1=\"8.39181\"\n        y1=\"2.60449\"\n        x2=\"8.39181\"\n        y2=\"3.85224\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint2_linear_18510_37545\"\n        x1=\"5.51791\"\n        y1=\"1.375\"\n        x2=\"5.51791\"\n        y2=\"4.04956\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint3_linear_18510_37545\"\n        x1=\"8.39983\"\n        y1=\"4\"\n        x2=\"8.39983\"\n        y2=\"14.4\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n    </defs>\n  </svg>\n);\n\nexport const RemoveCircleIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M8 1C8.91925 1 9.8295 1.18106 10.6788 1.53284C11.5281 1.88463 12.2997 2.40024 12.9497 3.05025C13.5998 3.70026 14.1154 4.47194 14.4672 5.32122C14.8189 6.17049 15 7.08075 15 8C15 8.91925 14.8189 9.8295 14.4672 10.6788C14.1154 11.5281 13.5998 12.2997 12.9497 12.9497C12.2997 13.5998 11.5281 14.1154 10.6788 14.4672C9.8295 14.8189 8.91925 15 8 15C4.13372 15 1 11.8658 1 8C1 4.13372 4.13372 1 8 1ZM11.1495 4.85C11.0301 4.7308 10.8682 4.66386 10.6995 4.66386C10.5308 4.66386 10.369 4.7308 10.2496 4.85L8 7.10058L5.74993 4.85C5.6295 4.73566 5.46918 4.67288 5.30313 4.67503C5.13708 4.67718 4.97844 4.7441 4.86102 4.86153C4.7436 4.97895 4.67668 5.13759 4.67452 5.30364C4.67237 5.46968 4.73515 5.63001 4.84949 5.75044L7.10109 8L4.85 10.2496C4.73566 10.37 4.67288 10.5303 4.67503 10.6964C4.67718 10.8624 4.7441 11.021 4.86153 11.1385C4.97895 11.2559 5.13759 11.3228 5.30364 11.325C5.46969 11.3271 5.63001 11.2643 5.75044 11.15L8 8.8984L10.2496 11.1495C10.3703 11.2621 10.53 11.3234 10.695 11.3205C10.86 11.3177 11.0175 11.2509 11.1342 11.1342C11.2509 11.0175 11.3178 10.8601 11.3208 10.6951C11.3237 10.53 11.2625 10.3703 11.15 10.2496L8.8984 8L11.1495 5.74993C11.2688 5.63049 11.3359 5.46856 11.3359 5.29971C11.3359 5.13086 11.2688 4.96892 11.1495 4.84949V4.85Z\"\n      fill=\"#666666\"\n    />\n  </svg>\n);\n\nexport const BackIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"26\"\n    height=\"26\"\n    viewBox=\"0 0 26 26\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M6.5 13.0001C6.5 12.6394 6.66738 12.2932 6.968 12.0349L16.7732 3.64987C17.0905 3.38703 17.4907 3.24537 17.9026 3.25012C18.3284 3.25012 18.7363 3.39474 19.032 3.64987C19.656 4.18937 19.656 5.04249 19.032 5.58199L10.3545 13.0001L19.032 20.4182C19.6544 20.9577 19.6544 21.8109 19.032 22.3504C18.7151 22.6136 18.3138 22.7566 17.901 22.7501C17.4753 22.7501 17.0674 22.6055 16.7732 22.3504L6.96638 13.9654C6.82284 13.8483 6.70669 13.7012 6.62612 13.5345C6.54554 13.3677 6.50249 13.1853 6.5 13.0001Z\" />\n  </svg>\n);\n\nexport const RefreshIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <g clipPath=\"url(#clip0_18449_37925)\">\n      <path d=\"M2.71657 9.24964C2.74357 9.24964 2.76957 9.22364 2.82357 9.19764L2.84957 9.17064C2.87657 9.17064 2.87657 9.14364 2.90357 9.14364L4.90157 7.49264C5.01434 7.40051 5.08606 7.26749 5.10105 7.12264C5.11604 6.9778 5.07309 6.83291 4.98157 6.71964C4.88944 6.60687 4.75642 6.53515 4.61158 6.52016C4.46673 6.50517 4.32184 6.54812 4.20857 6.63964L3.06257 7.59964C3.16957 4.90864 4.95457 2.96364 7.45857 2.80364C8.97757 2.69664 9.90957 2.93664 10.6556 3.57564C10.8956 3.78964 11.2416 3.76264 11.4556 3.52264C11.5058 3.46726 11.5443 3.40232 11.5689 3.3317C11.5934 3.26109 11.6035 3.18625 11.5984 3.11166C11.5934 3.03707 11.5734 2.96426 11.5395 2.89759C11.5057 2.83092 11.4588 2.77176 11.4016 2.72364C10.1766 1.68464 8.71157 1.60464 7.43157 1.68464C4.34157 1.87064 2.13157 4.24264 1.91757 7.38564L0.95757 6.47964C0.903958 6.42795 0.840508 6.38756 0.770985 6.36086C0.701463 6.33416 0.627285 6.3217 0.552854 6.32422C0.478424 6.32673 0.405258 6.34418 0.337699 6.37552C0.270141 6.40685 0.209566 6.45144 0.15957 6.50664C-0.05343 6.74664 -0.05343 7.09264 0.18557 7.30664L2.10357 9.11664L2.15757 9.17064L2.18357 9.19764C2.1977 9.21273 2.21696 9.222 2.23757 9.22364C2.23757 9.22364 2.26357 9.22364 2.26357 9.25064C2.29057 9.25064 2.31757 9.27764 2.34357 9.27764H2.55657C2.63657 9.27764 2.66357 9.27764 2.71657 9.25064C2.69057 9.25064 2.69057 9.25064 2.71657 9.25064V9.24964ZM15.7966 7.35964L13.9066 5.81364C13.9066 5.81364 13.8796 5.81364 13.8796 5.78764C13.8526 5.78764 13.8526 5.76064 13.8256 5.76064C13.7996 5.76064 13.7996 5.73364 13.7726 5.73364C13.7456 5.73364 13.7456 5.70764 13.7196 5.70764C13.6926 5.70764 13.6926 5.70764 13.6656 5.68064H13.4526C13.3829 5.68128 13.314 5.69575 13.25 5.72321C13.186 5.75068 13.128 5.7906 13.0796 5.84064L11.4026 7.57264C11.3507 7.62627 11.3102 7.68978 11.2834 7.7594C11.2566 7.82902 11.2441 7.90331 11.2466 7.97787C11.2491 8.05242 11.2666 8.1257 11.2981 8.19335C11.3295 8.261 11.3742 8.32163 11.4296 8.37164C11.5356 8.47764 11.6696 8.53164 11.8296 8.53164C11.978 8.53068 12.1206 8.47351 12.2286 8.37164L13.1346 7.43864C13.1606 7.59864 13.1606 7.75864 13.1606 7.89164C13.1606 10.8486 11.4296 13.0066 8.92457 13.1666C7.03357 13.2736 6.10157 12.9806 4.66257 11.7016C4.60723 11.6512 4.54228 11.6125 4.47161 11.5877C4.40093 11.563 4.32599 11.5528 4.25128 11.5578C4.17658 11.5627 4.10364 11.5827 4.03684 11.6165C3.97005 11.6504 3.91077 11.6973 3.86257 11.7546C3.81219 11.81 3.77353 11.875 3.74889 11.9458C3.72425 12.0165 3.71415 12.0914 3.71919 12.1661C3.72424 12.2409 3.74432 12.3138 3.77824 12.3805C3.81215 12.4473 3.8592 12.5065 3.91657 12.5546C5.38157 13.8596 6.47357 14.3386 8.23257 14.3386C8.47257 14.3386 8.71257 14.3386 8.97857 14.3126C12.0416 14.1256 14.2536 11.4346 14.2536 7.94564V7.62564L15.0526 8.29164C15.1586 8.37164 15.2926 8.42464 15.3986 8.42464C15.5586 8.42464 15.7186 8.34464 15.8246 8.21164C16.0916 7.91864 16.0376 7.54564 15.7986 7.35864L15.7966 7.35964Z\" />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_18449_37925\">\n        <rect width=\"16\" height=\"16\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport const CopyIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M13.5483 1.00195H5.68641C5.30143 1.00191 4.93219 1.15477 4.6599 1.42692C4.3876 1.69907 4.23454 2.06822 4.23438 2.4532V4.2207H2.25C1.91848 4.2207 1.60054 4.3524 1.36612 4.58682C1.1317 4.82124 1 5.13918 1 5.4707V13.752C1 14.0835 1.1317 14.4014 1.36612 14.6358C1.60054 14.8703 1.91848 15.002 2.25 15.002H10.5312C10.8628 15.002 11.1807 14.8703 11.4151 14.6358C11.6496 14.4014 11.7812 14.0835 11.7812 13.752V11.7832H13.5483C13.9333 11.7832 14.3026 11.6302 14.5748 11.3579C14.8471 11.0856 15 10.7164 15 10.3313V2.4532C14.9998 2.06828 14.8468 1.69917 14.5746 1.42703C14.3024 1.15489 13.9332 1.00199 13.5483 1.00195ZM10.5312 14.0645H2.25C2.16712 14.0645 2.08763 14.0315 2.02903 13.9729C1.97042 13.9143 1.9375 13.8348 1.9375 13.752V5.4707C1.9375 5.38782 1.97042 5.30834 2.02903 5.24973C2.08763 5.19113 2.16712 5.1582 2.25 5.1582H10.5312C10.6141 5.1582 10.6936 5.19113 10.7522 5.24973C10.8108 5.30834 10.8438 5.38782 10.8438 5.4707V13.752C10.8438 13.8348 10.8108 13.9143 10.7522 13.9729C10.6936 14.0315 10.6141 14.0645 10.5312 14.0645ZM14.0781 10.3313C14.0781 10.4677 14.0239 10.5986 13.9275 10.695C13.831 10.7915 13.7002 10.8457 13.5638 10.8457H11.7969V5.4707C11.7969 5.13918 11.6652 4.82124 11.4308 4.58682C11.1963 4.3524 10.8784 4.2207 10.5469 4.2207H5.17188V2.4532C5.17188 2.31678 5.22607 2.18595 5.32253 2.08949C5.419 1.99302 5.54983 1.93883 5.68625 1.93883H13.5639C13.7003 1.93887 13.8311 1.99308 13.9275 2.08954C14.024 2.186 14.0781 2.31681 14.0781 2.4532V10.3313Z\" />\n    <path d=\"M8.47518 7.73633H4.32861C4.08158 7.73633 3.86971 7.92383 3.85189 8.17008C3.84708 8.23441 3.85559 8.29904 3.8769 8.35993C3.89821 8.42082 3.93186 8.47666 3.97575 8.52394C4.01963 8.57123 4.0728 8.60895 4.13193 8.63474C4.19106 8.66053 4.25488 8.67384 4.31939 8.67383H8.46596C8.71299 8.67383 8.92486 8.48633 8.94268 8.24008C8.94749 8.17575 8.93898 8.11111 8.91767 8.05023C8.89636 7.98934 8.86271 7.9335 8.81882 7.88621C8.77494 7.83893 8.72177 7.80121 8.66264 7.77542C8.60351 7.74963 8.53969 7.73632 8.47518 7.73633ZM8.47518 10.5488H4.32861C4.08158 10.5488 3.86971 10.7363 3.85189 10.9826C3.84708 11.0469 3.85559 11.1115 3.8769 11.1724C3.89821 11.2333 3.93186 11.2892 3.97575 11.3364C4.01963 11.3837 4.0728 11.4214 4.13193 11.4472C4.19106 11.473 4.25488 11.4863 4.31939 11.4863H8.46596C8.71299 11.4863 8.92486 11.2988 8.94268 11.0526C8.94749 10.9882 8.93898 10.9236 8.91767 10.8627C8.89636 10.8018 8.86271 10.746 8.81882 10.6987C8.77494 10.6514 8.72177 10.6137 8.66264 10.5879C8.60351 10.5621 8.53969 10.5488 8.47518 10.5488Z\" />\n  </svg>\n);\n\nexport const XlsxIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"52\" height=\"52\" viewBox=\"0 0 52 52\" fill=\"none\">\n    <path\n      d=\"M33.7054 0V9.62963C33.7054 12.7849 36.2348 15.3496 39.3773 15.4064L39.4832 15.4074H49.1128V46.2222C49.1128 49.4132 46.526 52 43.3351 52H8.6684C5.47747 52 2.89062 49.4132 2.89062 46.2222V5.77778C2.89063 2.58684 5.47746 0 8.6684 0H33.7054ZM41.4091 20.5432H10.5943C8.14584 20.5432 6.15507 22.5012 6.10146 24.9366L6.1005 25.037V44.2963C6.1005 46.7445 8.05853 48.7356 10.4939 48.7892L10.5943 48.7901H41.4091C43.8573 48.7901 45.8484 46.8321 45.902 44.3968L45.903 44.2963V25.037C45.903 22.5552 43.891 20.5432 41.4091 20.5432ZM35.9524 0L49.1128 13.1605H41.7301C38.5392 13.1605 35.9524 10.5737 35.9524 7.38272V0Z\"\n      fill=\"#389E0D\"\n    />\n    <path\n      d=\"M11.8597 39.1608L13.4961 36.503L15.1268 39.1608H17.9986L15.1833 34.8949L17.756 30.889H14.9688L13.5469 33.4338L12.0799 30.889H9.26392L11.8594 34.8499L9.00488 39.1608H11.8597ZM25.4247 39.1608V37.1238H21.4355V30.889H18.8794V39.1608H25.4244H25.4247ZM30.0405 39.302C30.842 39.302 31.5058 39.1865 32.0322 38.9547C32.559 38.7236 32.9689 38.384 33.2626 37.9366C33.5518 37.5022 33.7049 36.9915 33.7023 36.4697C33.7023 36.018 33.5925 35.61 33.3723 35.2451C33.1525 34.8801 32.801 34.5742 32.3173 34.328C31.8338 34.0818 31.0336 33.8382 29.9163 33.5975C29.465 33.5034 29.1793 33.4017 29.0589 33.2925C28.9347 33.1876 28.8727 33.0688 28.8727 32.9372C28.8727 32.7568 28.9478 32.6034 29.0984 32.4775C29.2489 32.3514 29.4727 32.2881 29.7699 32.2881C30.131 32.2881 30.4141 32.3732 30.6189 32.5424C30.824 32.7115 30.9585 32.9824 31.0224 33.3548L33.4317 33.2136C33.3264 32.3562 32.9961 31.7306 32.4415 31.3377C31.8865 30.9445 31.0805 30.748 30.0238 30.748C29.1623 30.748 28.4843 30.8562 27.9897 31.0722C27.4951 31.2889 27.1243 31.5858 26.8781 31.9639C26.6316 32.3421 26.5087 32.7436 26.5087 33.1686C26.5087 33.8157 26.7494 34.3479 27.2309 34.7655C27.7085 35.1828 28.5078 35.5176 29.6287 35.7699C30.3133 35.9201 30.7495 36.08 30.9376 36.2495C31.1257 36.4186 31.2201 36.6106 31.2201 36.825C31.2201 37.0506 31.1213 37.2487 30.9235 37.4201C30.7261 37.5912 30.4453 37.6769 30.08 37.6769C29.5911 37.6769 29.2149 37.5093 28.9517 37.1749C28.7899 36.9678 28.6827 36.6667 28.6301 36.2719L26.1983 36.4244C26.2695 37.2593 26.5761 37.9478 27.1179 38.4893C27.6594 39.0311 28.6339 39.3017 30.0405 39.3017V39.302ZM37.0714 39.1608L38.7078 36.503L40.3384 39.1608H43.2103L40.3949 34.8949L42.9679 30.889H40.1805L38.7585 33.4338L37.2916 30.889H34.4762L37.0714 34.8499L34.2165 39.1608H37.0714Z\"\n      fill=\"#389E0D\"\n    />\n  </svg>\n);\n\nexport const UnknownFileIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <g clipPath=\"url(#clip0_21638_4657)\">\n      <path\n        d=\"M10.3704 0V2.96296C10.3704 3.93383 11.1486 4.72296 12.1156 4.74044L12.1481 4.74074H15.1111V14.2222C15.1111 15.204 14.3152 16 13.3333 16H2.66666C1.68484 16 0.888885 15.204 0.888885 14.2222V1.77778C0.888885 0.795951 1.68484 0 2.66666 0H10.3704ZM12.7407 6.32099H3.25926C2.50587 6.32099 1.89333 6.92346 1.87684 7.67279L1.87654 7.7037V13.6296C1.87654 14.3829 2.47901 14.9956 3.22834 15.012L3.25926 15.0123H12.7407C13.494 15.0123 14.1067 14.4099 14.1232 13.6605L14.1235 13.6296V7.7037C14.1235 6.94005 13.5044 6.32099 12.7407 6.32099ZM11.0617 0L15.1111 4.04938H12.8395C11.8577 4.04938 11.0617 3.25343 11.0617 2.27161V0Z\"\n        fill=\"#8C8C8C\"\n      />\n      <path\n        d=\"M8.40366 12.0892V11.9703C8.40366 11.7665 8.44613 11.5796 8.53107 11.4097C8.61357 11.2485 8.72938 11.1066 8.87082 10.9935C9.26717 10.6481 9.51072 10.4244 9.60129 10.3225C9.81077 10.045 9.91556 9.69684 9.91556 9.27778C9.91556 8.75679 9.74569 8.34908 9.40593 8.05467C9.07181 7.75452 8.6245 7.60449 8.06391 7.60449C7.44099 7.60449 6.94559 7.78286 6.57749 8.1396C6.20939 8.49071 6.02539 8.98336 6.02539 9.61753H6.99369C6.99369 9.24943 7.0645 8.96913 7.20603 8.77664C7.37591 8.55017 7.64208 8.43689 8.00445 8.43689C8.29887 8.43689 8.52544 8.5162 8.68396 8.67471C8.84248 8.84459 8.92179 9.06543 8.92179 9.33723C8.92179 9.55244 8.84534 9.75343 8.69245 9.94029L8.59053 10.0592C8.03556 10.5519 7.7043 10.9115 7.59675 11.1379C7.48346 11.3588 7.42687 11.6362 7.42687 11.9703V12.0892H8.40366ZM7.91102 13.788C8.09225 13.788 8.25077 13.7285 8.38667 13.6096C8.51122 13.4851 8.57354 13.3293 8.57354 13.1425C8.57354 12.9612 8.51132 12.8083 8.38667 12.6838C8.26213 12.5649 8.10351 12.5054 7.91102 12.5054C7.72416 12.5054 7.57127 12.5649 7.45235 12.6838C7.32208 12.7971 7.257 12.95 7.257 13.1425C7.257 13.3351 7.32218 13.4879 7.45235 13.6011C7.5769 13.7257 7.72988 13.788 7.91102 13.788Z\"\n        fill=\"#8C8C8C\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_21638_4657\">\n        <rect width=\"16\" height=\"16\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport const CsvFileIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <g clipPath=\"url(#clip0_21638_4627)\">\n      <path\n        d=\"M10.3704 0V2.96296C10.3704 3.93383 11.1486 4.72296 12.1156 4.74044L12.1481 4.74074H15.1111V14.2222C15.1111 15.204 14.3152 16 13.3333 16H2.66666C1.68484 16 0.888885 15.204 0.888885 14.2222V1.77778C0.888885 0.795951 1.68484 0 2.66666 0H10.3704ZM12.7407 6.32099H3.25926C2.50587 6.32099 1.89333 6.92346 1.87684 7.67279L1.87654 7.7037V13.6296C1.87654 14.3829 2.47901 14.9956 3.22834 15.012L3.25926 15.0123H12.7407C13.494 15.0123 14.1067 14.4099 14.1232 13.6605L14.1235 13.6296V7.7037C14.1235 6.94005 13.5044 6.32099 12.7407 6.32099ZM11.0617 0L15.1111 4.04938H12.8395C11.8577 4.04938 11.0617 3.25343 11.0617 2.27161V0Z\"\n        fill=\"#1D39C4\"\n      />\n      <path\n        d=\"M5.37169 12.1151C5.59964 12.1151 5.78749 12.0821 5.93505 12.0162C6.08136 11.9512 6.20887 11.8503 6.30572 11.7228C6.40517 11.5931 6.47816 11.4317 6.52438 11.2384L5.8352 11.03C5.80043 11.191 5.74463 11.3136 5.66769 11.3981C5.59066 11.4826 5.47698 11.5248 5.32646 11.5248C5.1714 11.5248 5.051 11.4725 4.96537 11.3678C4.87974 11.2631 4.83698 11.0695 4.83698 10.787C4.83698 10.559 4.87283 10.3918 4.94463 10.2853C5.03945 10.1418 5.17604 10.07 5.35431 10.07C5.43303 10.07 5.50414 10.0862 5.56784 10.1186C5.63145 10.151 5.68537 10.1973 5.72932 10.2574C5.75599 10.2934 5.78137 10.3501 5.80567 10.4276L6.50009 10.2731C6.411 10.0045 6.2747 9.80549 6.0912 9.67591C5.90789 9.54624 5.65584 9.48145 5.33525 9.48145C4.92557 9.48145 4.60873 9.59463 4.38473 9.8209C4.16083 10.0471 4.04883 10.3709 4.04883 10.7922C4.04883 11.1082 4.11253 11.3675 4.23984 11.5699C4.36715 11.7725 4.51836 11.914 4.69377 11.9944C4.86917 12.0749 5.09515 12.1151 5.37179 12.1151H5.37169ZM7.96903 12.1133C8.21554 12.1133 8.41989 12.0778 8.58187 12.0067C8.74384 11.9355 8.87006 11.831 8.96033 11.6933C9.04938 11.5597 9.09652 11.4025 9.09574 11.2419C9.09574 11.103 9.06196 10.9773 8.99421 10.8651C8.92646 10.7529 8.81831 10.6587 8.66957 10.583C8.52083 10.5072 8.27451 10.4323 7.9308 10.3582C7.79194 10.3292 7.70404 10.2979 7.667 10.2644C7.62878 10.2321 7.60972 10.1955 7.60972 10.155C7.60972 10.0995 7.63283 10.0523 7.67915 10.0136C7.72537 9.97478 7.79431 9.95532 7.88567 9.95532C7.99678 9.95532 8.08389 9.9814 8.147 10.0335C8.21011 10.0856 8.2514 10.1689 8.27115 10.2835L9.01248 10.2401C8.97999 9.97626 8.87846 9.78377 8.70779 9.66288C8.53703 9.54189 8.28903 9.48145 7.96379 9.48145C7.6988 9.48145 7.49011 9.51473 7.33791 9.5812C7.18582 9.64787 7.07174 9.73922 6.99599 9.85557C6.92014 9.97191 6.88221 10.0955 6.88221 10.2262C6.88221 10.4253 6.95628 10.5891 7.10443 10.7176C7.2514 10.846 7.49742 10.949 7.84221 11.0266C8.05298 11.0729 8.1872 11.122 8.24508 11.1742C8.30295 11.2262 8.33189 11.2853 8.33189 11.3513C8.33189 11.4207 8.30147 11.4816 8.24073 11.5344C8.17999 11.587 8.09347 11.6134 7.98117 11.6134C7.83075 11.6134 7.715 11.5618 7.63401 11.4588C7.58424 11.3952 7.55125 11.3026 7.53505 11.1811L6.7867 11.228C6.80873 11.4849 6.90305 11.6968 7.06977 11.8634C7.23638 12.0301 7.53614 12.1133 7.96903 12.1133ZM11.0716 12.07L12.016 9.5248H11.2175L10.6533 11.3564L10.0803 9.5249H9.25742L10.2192 12.0701H11.0715L11.0716 12.07Z\"\n        fill=\"#1D39C4\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_21638_4627\">\n        <rect width=\"16\" height=\"16\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport const TxtFileIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <g clipPath=\"url(#clip0_21638_4630)\">\n      <path\n        d=\"M10.3704 0V2.96296C10.3704 3.93383 11.1486 4.72296 12.1156 4.74044L12.1481 4.74074H15.1111V14.2222C15.1111 15.204 14.3152 16 13.3333 16H2.66666C1.68484 16 0.888885 15.204 0.888885 14.2222V1.77778C0.888885 0.795951 1.68484 0 2.66666 0H10.3704ZM12.7407 6.32099H3.25926C2.50587 6.32099 1.89333 6.92346 1.87684 7.67279L1.87654 7.7037V13.6296C1.87654 14.3829 2.47901 14.9956 3.22834 15.012L3.25926 15.0123H12.7407C13.494 15.0123 14.1067 14.4099 14.1232 13.6605L14.1235 13.6296V7.7037C14.1235 6.94005 13.5044 6.32099 12.7407 6.32099ZM11.0617 0L15.1111 4.04938H12.8395C11.8577 4.04938 11.0617 3.25343 11.0617 2.27161V0Z\"\n        fill=\"#08979C\"\n      />\n      <path\n        d=\"M5.73698 12.0266V10.1099H6.53905V9.48145H4.14844V10.1099H4.95051V12.0266H5.73698ZM7.5358 12.0266L8.0392 11.2089L8.54093 12.0266H9.42468L8.55831 10.714L9.35002 9.48145H8.49234L8.05481 10.2645L7.60345 9.48145H6.73718L7.5358 10.7002L6.65728 12.0266H7.5358ZM11.1054 12.0266V10.1099H11.9075V9.48145H9.51683V10.1099H10.3189V12.0266H11.1054Z\"\n        fill=\"#08979C\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_21638_4630\">\n        <rect width=\"16\" height=\"16\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport const CheckerInBoxIcon = ({ className }: { className?: string }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"10\"\n    height=\"8\"\n    viewBox=\"0 0 10 8\"\n    className={className}\n    fill=\"currentColor\"\n  >\n    <path d=\"M9.5067 0.236399C9.33081 0.075254 9.09814 -0.00947067 8.85981 0.000842334C8.62149 0.0111553 8.39701 0.115663 8.2357 0.291399L3.4847 5.4714L1.6307 2.8764L1.5597 2.7884C1.40419 2.62083 1.19075 2.51872 0.962705 2.5028C0.734658 2.48687 0.509095 2.55832 0.331809 2.70264C0.154524 2.84697 0.0388021 3.05335 0.00813691 3.27988C-0.0225283 3.50642 0.0341613 3.73614 0.166697 3.9224L2.6667 7.4224L2.7427 7.5154C2.8275 7.60576 2.93004 7.67764 3.04391 7.72654C3.15778 7.77543 3.28052 7.80028 3.40444 7.79952C3.52836 7.79877 3.65079 7.77244 3.76406 7.72217C3.87733 7.6719 3.979 7.59879 4.0627 7.5074L9.5627 1.5074L9.6387 1.4124C9.76255 1.23353 9.81742 1.01586 9.79315 0.799654C9.76888 0.58345 9.66712 0.383356 9.5067 0.236399Z\" />\n  </svg>\n);\n\nexport const CheckerIcon = ({ className }: { className?: string }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n    className={className}\n  >\n    <path d=\"M12.6092 4.33894C12.4333 4.17779 12.2007 4.09307 11.9624 4.10338C11.724 4.11369 11.4995 4.2182 11.3382 4.39394L6.58724 9.57394L4.73324 6.97894L4.66224 6.89094C4.50673 6.72337 4.29329 6.62126 4.06524 6.60534C3.8372 6.58941 3.61163 6.66086 3.43435 6.80518C3.25706 6.94951 3.14134 7.15589 3.11068 7.38242C3.08001 7.60896 3.1367 7.83868 3.26924 8.02494L5.76924 11.5249L5.84524 11.6179C5.93003 11.7083 6.03258 11.7802 6.14645 11.8291C6.26032 11.878 6.38306 11.9028 6.50698 11.9021C6.6309 11.9013 6.75333 11.875 6.8666 11.8247C6.97987 11.7744 7.08154 11.7013 7.16524 11.6099L12.6652 5.60994L12.7412 5.51494C12.8651 5.33607 12.92 5.1184 12.8957 4.90219C12.8714 4.68599 12.7697 4.4859 12.6092 4.33894Z\" />\n  </svg>\n);\n\nexport const StatsIcon = ({ size }: { size?: number }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={size}\n    height={size}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n  >\n    <path\n      d=\"M20.2789 20.7891H3.72266C3.17188 20.7891 2.72656 20.3438 2.72656 19.793C2.72656 19.2422 3.17188 18.7969 3.72266 18.7969H20.2789C20.8297 18.7969 21.275 19.2422 21.275 19.793C21.275 20.3438 20.8297 20.7891 20.2789 20.7891Z\"\n      fill=\"url(#paint0_linear_21740_6067)\"\n    />\n    <path\n      d=\"M5.52148 17.6605H4.16211C3.72148 17.6605 3.36523 17.3043 3.36523 16.8637V12.9473C3.36523 12.5066 3.72148 12.1504 4.16211 12.1504H5.52148C5.96211 12.1504 6.31836 12.5066 6.31836 12.9473V16.8637C6.31836 17.302 5.95977 17.6605 5.52148 17.6605Z\"\n      fill=\"url(#paint1_linear_21740_6067)\"\n    />\n    <path\n      d=\"M10.2816 17.6602H8.94336C8.49805 17.6602 8.13477 17.2992 8.13477 16.8516V6.82969C8.13477 6.38437 8.4957 6.02109 8.94336 6.02109H10.2816C10.727 6.02109 11.0902 6.38203 11.0902 6.82969V16.8516C11.0902 17.2969 10.727 17.6602 10.2816 17.6602ZM15.0676 17.6602H13.7035C13.2652 17.6602 12.909 17.3039 12.909 16.8656V10.0031C12.909 9.56484 13.2652 9.20859 13.7035 9.20859H15.0676C15.5059 9.20859 15.8621 9.56484 15.8621 10.0031V16.8633C15.8621 17.3039 15.5059 17.6602 15.0676 17.6602ZM19.8371 17.6602H18.4824C18.0418 17.6602 17.6832 17.3016 17.6832 16.8609V4.01016C17.6832 3.56953 18.0418 3.21094 18.4824 3.21094H19.8371C20.2777 3.21094 20.6363 3.56953 20.6363 4.01016V16.8609C20.634 17.3016 20.2777 17.6602 19.8371 17.6602Z\"\n      fill=\"url(#paint2_linear_21740_6067)\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_21740_6067\"\n        x1=\"12.0008\"\n        y1=\"18.7969\"\n        x2=\"12.0008\"\n        y2=\"20.7891\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint1_linear_21740_6067\"\n        x1=\"4.8418\"\n        y1=\"12.1504\"\n        x2=\"4.8418\"\n        y2=\"17.6605\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n      <linearGradient\n        id=\"paint2_linear_21740_6067\"\n        x1=\"14.3855\"\n        y1=\"3.21094\"\n        x2=\"14.3855\"\n        y2=\"17.6602\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#0265FF\" />\n        <stop offset=\"1\" stopColor=\"#A6FFFF\" />\n      </linearGradient>\n    </defs>\n  </svg>\n);\n\nexport const DataTableIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M12.6671 1.00011C12.9743 0.99704 13.2792 1.05583 13.5636 1.17199C13.848 1.28815 14.1071 1.45962 14.3243 1.67687C14.5414 1.89404 14.7131 2.15236 14.8292 2.43664C14.9454 2.72105 15.0032 3.02593 15.0001 3.33312V12.6671C15.0032 12.9743 14.9453 13.2792 14.8292 13.5636C14.7131 13.8478 14.5414 14.1062 14.3243 14.3234C14.1071 14.5406 13.848 14.7131 13.5636 14.8292C13.2792 14.9453 12.9742 15.0032 12.6671 15.0001H3.33312C3.02597 15.0032 2.72101 14.9453 2.43664 14.8292C2.15225 14.7131 1.89409 14.5406 1.67687 14.3234C1.45971 14.1062 1.28811 13.8479 1.17199 13.5636C1.05583 13.2792 0.99704 12.9743 1.00011 12.6671V3.33312C0.997054 3.02593 1.05585 2.72105 1.17199 2.43664C1.28813 2.15232 1.45971 1.89405 1.67687 1.67687C1.89403 1.45972 2.15235 1.28814 2.43664 1.17199C2.72101 1.05586 3.02597 0.997071 3.33312 1.00011H12.6671ZM2.00011 10.5001V12.6153C2.00018 13.4001 2.60015 13.9999 3.38488 14.0001H5.00011V10.5001H2.00011ZM6.00011 10.5001V14.0001H10.0001V10.5001H6.00011ZM11.0001 10.5001V14.0001H12.6153C13.4003 14.0001 14.0001 13.4003 14.0001 12.6153V10.5001H11.0001ZM2.00011 9.50011H5.00011V6.50011H2.00011V9.50011ZM6.00011 9.50011H10.0001V6.50011H6.00011V9.50011ZM11.0001 9.50011H14.0001V6.50011H11.0001V9.50011ZM3.38488 2.00011C2.60022 2.00035 2.00029 2.6002 2.00011 3.38488V5.50011H14.0001V3.38488C13.9999 2.60005 13.4002 2.00012 12.6153 2.00011H3.38488Z\"\n    />\n  </svg>\n);\n\nexport const DefaultFormIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path\n      d=\"M9.15595 1.42188V4.08854C9.15595 4.56004 9.34325 5.01222 9.67664 5.34562C10.01 5.67902 10.4622 5.86632 10.9337 5.86632H13.6004V13.8663C13.6004 14.1021 13.5067 14.3282 13.34 14.4949C13.1733 14.6616 12.9472 14.7552 12.7115 14.7552H3.28928C3.05353 14.7552 2.82744 14.6616 2.66074 14.4949C2.49404 14.3282 2.40039 14.1021 2.40039 13.8663V2.31076C2.40039 2.07502 2.49404 1.84892 2.66074 1.68222C2.82744 1.51553 3.05353 1.42188 3.28928 1.42188H9.15595ZM5.5115 8.53299C5.39363 8.53299 5.28058 8.57981 5.19723 8.66316C5.11388 8.74651 5.06706 8.85956 5.06706 8.97743C5.06706 9.0953 5.11388 9.20835 5.19723 9.2917C5.28058 9.37505 5.39363 9.42187 5.5115 9.42187H10.4893C10.6072 9.42187 10.7202 9.37505 10.8035 9.2917C10.8869 9.20835 10.9337 9.0953 10.9337 8.97743C10.9337 8.85956 10.8869 8.74651 10.8035 8.66316C10.7202 8.57981 10.6072 8.53299 10.4893 8.53299H5.5115ZM5.5115 11.1997C5.39363 11.1997 5.28058 11.2465 5.19723 11.3298C5.11388 11.4132 5.06706 11.5262 5.06706 11.6441C5.06706 11.762 5.11388 11.875 5.19723 11.9584C5.28058 12.0417 5.39363 12.0885 5.5115 12.0885H10.4893C10.6072 12.0885 10.7202 12.0417 10.8035 11.9584C10.8869 11.875 10.9337 11.762 10.9337 11.6441C10.9337 11.5262 10.8869 11.4132 10.8035 11.3298C10.7202 11.2465 10.6072 11.1997 10.4893 11.1997H5.5115ZM10.0448 1.42188L13.6004 4.97743H10.9337C10.698 4.97743 10.4719 4.88378 10.3052 4.71708C10.1385 4.55038 10.0448 4.32429 10.0448 4.08854V1.42188Z\"\n      fill=\"#0265FF\"\n    />\n  </svg>\n);\n\nexport const FormulasIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M13.6028 7.93734C13.6699 7.99362 13.7252 8.06255 13.7656 8.14022C13.8061 8.21788 13.8308 8.30275 13.8385 8.38998C13.8461 8.47721 13.8365 8.56509 13.8101 8.64859C13.7838 8.7321 13.7413 8.80961 13.685 8.87668L11.8059 11.1158L13.0219 13.2218C13.0663 13.2976 13.0954 13.3815 13.1073 13.4686C13.1192 13.5557 13.1137 13.6444 13.0913 13.7294C13.0688 13.8144 13.0297 13.8941 12.9763 13.9639C12.9229 14.0337 12.8562 14.0923 12.7801 14.1363C12.704 14.1803 12.6199 14.2087 12.5327 14.2201C12.4455 14.2314 12.3569 14.2254 12.2721 14.2023C12.1872 14.1793 12.1078 14.1397 12.0383 14.0858C11.9688 14.032 11.9107 13.9649 11.8672 13.8885L10.8939 12.2029L9.39966 13.9836C9.34386 14.0521 9.275 14.1089 9.19706 14.1506C9.11913 14.1923 9.03368 14.2181 8.94569 14.2264C8.8577 14.2348 8.76893 14.2256 8.68453 14.1993C8.60013 14.1731 8.5218 14.1303 8.45409 14.0735C8.38638 14.0167 8.33064 13.947 8.29011 13.8684C8.24959 13.7899 8.22509 13.704 8.21804 13.6159C8.21099 13.5278 8.22153 13.4392 8.24905 13.3552C8.27656 13.2712 8.32051 13.1935 8.37832 13.1267L10.1843 10.974L8.97832 8.88468C8.93386 8.80883 8.90483 8.72494 8.89292 8.63783C8.88101 8.55072 8.88645 8.46211 8.90892 8.37711C8.9314 8.29211 8.97046 8.2124 9.02386 8.14256C9.07727 8.07272 9.14396 8.01413 9.2201 7.97017C9.29624 7.92621 9.38033 7.89774 9.46751 7.88641C9.5547 7.87508 9.64327 7.8811 9.72812 7.90414C9.81297 7.92717 9.89242 7.96676 9.96191 8.02063C10.0314 8.0745 10.0895 8.14158 10.133 8.21801L11.0965 9.8869L12.6634 8.01957C12.7197 7.95248 12.7886 7.89714 12.8663 7.8567C12.944 7.81626 13.0288 7.79151 13.1161 7.78388C13.2033 7.77624 13.2912 7.78587 13.3747 7.8122C13.4582 7.83853 13.5357 7.88106 13.6028 7.93734ZM9.55566 1.77734C9.72919 1.77718 9.89595 1.84468 10.0205 1.96552C10.1451 2.08635 10.2176 2.25099 10.2227 2.42445C10.2278 2.59791 10.165 2.76652 10.0478 2.89445C9.93053 3.02238 9.76801 3.09955 9.59477 3.10957L9.55566 3.11068H9.25477C8.77582 3.11068 8.31278 3.28256 7.94984 3.59506C7.58689 3.90757 7.34814 4.33994 7.27699 4.81357L7.26899 4.87246L7.24032 5.11068H8.66677C8.72513 5.11068 8.78293 5.12217 8.83685 5.14451C8.89077 5.16684 8.93977 5.19958 8.98104 5.24085C9.02231 5.28212 9.05504 5.33112 9.07738 5.38504C9.09972 5.43896 9.11121 5.49676 9.11121 5.55512V5.99957C9.11121 6.11744 9.06439 6.23049 8.98104 6.31384C8.89769 6.39719 8.78464 6.44401 8.66677 6.44401H7.08032L6.49943 11.2856C6.40386 12.0824 6.02403 12.818 5.4297 13.3572C4.83536 13.8965 4.06642 14.2032 3.2641 14.2211L3.18988 14.2218H2.88899C2.71545 14.222 2.54869 14.1545 2.42414 14.0336C2.29959 13.9128 2.22706 13.7481 2.22197 13.5747C2.21687 13.4012 2.27962 13.2326 2.39687 13.1047C2.51412 12.9768 2.67663 12.8996 2.84988 12.8896L2.88899 12.8885H3.18988C3.66882 12.8884 4.13186 12.7166 4.49481 12.4041C4.85775 12.0916 5.09651 11.6592 5.16766 11.1856L5.17566 11.1267L5.73721 6.44401H4.22232C4.10445 6.44401 3.9914 6.39719 3.90805 6.31384C3.8247 6.23049 3.77788 6.11744 3.77788 5.99957V5.55512C3.77788 5.49676 3.78937 5.43896 3.81171 5.38504C3.83404 5.33112 3.86678 5.28212 3.90805 5.24085C3.94932 5.19958 3.99832 5.16684 4.05224 5.14451C4.10616 5.12217 4.16396 5.11068 4.22232 5.11068H5.89721L5.94521 4.71357C6.04078 3.91675 6.42061 3.18117 7.01495 2.6419C7.60928 2.10264 8.37822 1.79589 9.18054 1.77801L9.25477 1.77734H9.55566Z\" />\n  </svg>\n);\n\nexport const ScrollArrowDownIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"24\"\n    height=\"24\"\n    viewBox=\"0 0 24 24\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M12.7549 2.5C12.1757 2.5 11.7063 2.98638 11.7063 3.58637V20.4136C11.7063 21.0136 12.1757 21.5 12.7549 21.5C13.3341 21.5 13.8035 21.0136 13.8035 20.4136V3.58637C13.8035 2.98638 13.3341 2.5 12.7549 2.5ZM16.9494 14.9819C16.8105 14.9819 16.6729 15.0105 16.5448 15.0661C16.4166 15.1217 16.3004 15.2031 16.2028 15.3056L12.8052 18.8775L9.2965 15.2948C9.199 15.192 9.08274 15.1103 8.95449 15.0546C8.82623 14.9988 8.68855 14.97 8.54946 14.9699C8.41036 14.9698 8.27264 14.9983 8.1443 15.0539C8.01596 15.1095 7.89957 15.1909 7.80192 15.2935C7.70426 15.3961 7.62728 15.5179 7.57547 15.6516C7.52366 15.7853 7.49804 15.9284 7.50012 16.0725C7.50219 16.2165 7.53192 16.3588 7.58756 16.4908C7.6432 16.6229 7.72365 16.7422 7.82422 16.8417L12.0775 21.1871C12.2767 21.3892 12.5703 21.4348 12.822 21.5C13.1004 21.4977 13.3666 21.3813 13.5624 21.1762L17.6982 16.8309C17.8434 16.6782 17.9418 16.4844 17.981 16.2739C18.0202 16.0634 17.9984 15.8457 17.9184 15.648C17.8383 15.4503 17.7036 15.2816 17.5312 15.1631C17.3588 15.0445 17.1564 14.9815 16.9494 14.9819Z\" />\n  </svg>\n);\n\nexport const AggregateTableIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"20\"\n    height=\"20\"\n    viewBox=\"0 0 20 20\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M2.1875 4.0625C2.1875 3.56522 2.38504 3.08831 2.73667 2.73667C3.08831 2.38504 3.56522 2.1875 4.0625 2.1875H15.9375C16.4348 2.1875 16.9117 2.38504 17.2633 2.73667C17.615 3.08831 17.8125 3.56522 17.8125 4.0625V5H2.1875V4.0625ZM2.1875 6.25H17.8125V15.9375C17.8125 16.4348 17.615 16.9117 17.2633 17.2633C16.9117 17.615 16.4348 17.8125 15.9375 17.8125H4.0625C3.56522 17.8125 3.08831 17.615 2.73667 17.2633C2.38504 16.9117 2.1875 16.4348 2.1875 15.9375V6.25ZM5.42125 8.75C5.31033 8.75254 5.20465 8.79774 5.1262 8.8762C5.04774 8.95465 5.00254 9.06033 5 9.17125V10.8288C5 11.0538 5.19625 11.25 5.42125 11.25H7.075C7.3 11.25 7.49625 11.0538 7.49625 10.8288V9.17125C7.525 8.94625 7.32875 8.75 7.075 8.75H5.42125ZM9.17125 8.75C9.06033 8.75254 8.95465 8.79774 8.8762 8.8762C8.79774 8.95465 8.75254 9.06033 8.75 9.17125V10.8288C8.75 11.0538 8.94625 11.25 9.17125 11.25H10.825C11.05 11.25 11.2463 11.0538 11.2463 10.8288V9.17125C11.275 8.94625 11.0787 8.75 10.825 8.75H9.17125ZM14.5763 8.75H12.9212C12.8103 8.75254 12.7047 8.79774 12.6262 8.8762C12.5477 8.95465 12.5025 9.06033 12.5 9.17125V10.8288C12.5 11.0538 12.6962 11.25 12.9212 11.25H14.5763C14.8013 11.25 14.9975 11.0538 14.9975 10.8288V9.17125C15.025 8.94625 14.8288 8.75 14.5763 8.75ZM5.42125 13C5.31033 13.0025 5.20465 13.0477 5.1262 13.1262C5.04774 13.2047 5.00254 13.3103 5 13.4213V15.0787C5 15.3038 5.19625 15.5 5.42125 15.5H7.075C7.3 15.5 7.49625 15.3038 7.49625 15.0787V13.4213C7.52375 13.1963 7.3275 13 7.075 13H5.42125ZM10.8263 13H9.17125C9.06033 13.0025 8.95465 13.0477 8.8762 13.1262C8.79774 13.2047 8.75254 13.3103 8.75 13.4213V15.0787C8.75 15.3038 8.94625 15.5 9.17125 15.5H10.825C11.05 15.5 11.2463 15.3038 11.2463 15.0787V13.4213C11.2737 13.1963 11.0775 13 10.825 13H10.8263ZM12.9212 13C12.8103 13.0025 12.7047 13.0477 12.6262 13.1262C12.5477 13.2047 12.5025 13.3103 12.5 13.4213V15.0787C12.5 15.3038 12.6962 15.5 12.9212 15.5H14.5763C14.8013 15.5 14.9975 15.3038 14.9975 15.0787V13.4213C15.025 13.1963 14.8288 13 14.5763 13H12.9212Z\" />\n  </svg>\n);\n\nexport const GanttIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path\n      d=\"M12.6671 15.0001H3.33312C3.02589 15.0032 2.72113 14.9449 2.43669 14.8288C2.15225 14.7126 1.89384 14.5409 1.67658 14.3236C1.45933 14.1064 1.2876 13.848 1.17144 13.5635C1.05529 13.2791 0.997041 12.9743 1.00012 12.6671V3.33312C0.997041 3.02589 1.05529 2.72113 1.17144 2.43669C1.2876 2.15225 1.45933 1.89384 1.67658 1.67658C1.89384 1.45933 2.15225 1.2876 2.43669 1.17144C2.72113 1.05529 3.02589 0.997041 3.33312 1.00012H12.6671C12.9743 0.997041 13.2791 1.05529 13.5635 1.17144C13.848 1.2876 14.1064 1.45933 14.3236 1.67658C14.5409 1.89384 14.7126 2.15225 14.8288 2.43669C14.9449 2.72113 15.0032 3.02589 15.0001 3.33312V12.6671C15.0032 12.9743 14.9449 13.2791 14.8288 13.5635C14.7126 13.848 14.5409 14.1064 14.3236 14.3236C14.1064 14.5409 13.848 14.7126 13.5635 14.8288C13.2791 14.9449 12.9743 15.0032 12.6671 15.0001ZM3.38512 2.00012C2.60012 2.00012 2.00012 2.60012 2.00012 3.38512V12.6151C2.00012 13.4001 2.60012 14.0001 3.38512 14.0001H12.6151C13.4001 14.0001 14.0001 13.4001 14.0001 12.6151V3.38512C14.0001 2.60012 13.4001 2.00012 12.6151 2.00012H3.38512Z\"\n      // fill=\"#6F829E\"\n    />\n    <path\n      d=\"M9.74995 10.5C9.87489 10.4998 9.9954 10.5463 10.0877 10.6305C10.1801 10.7147 10.2375 10.8304 10.2488 10.9548C10.2601 11.0793 10.2244 11.2034 10.1487 11.3028C10.073 11.4023 9.96289 11.4697 9.83995 11.492L9.74995 11.5H4.24995C4.125 11.5002 4.00449 11.4537 3.91216 11.3695C3.81983 11.2853 3.76236 11.1696 3.75107 11.0452C3.73978 10.9207 3.77549 10.7966 3.85116 10.6972C3.92684 10.5977 4.037 10.5303 4.15994 10.508L4.24995 10.5H9.74995ZM11.9999 7.5C12.1249 7.49977 12.2454 7.54633 12.3377 7.63051C12.4301 7.71469 12.4875 7.83039 12.4988 7.95482C12.5101 8.07926 12.4744 8.20341 12.3987 8.30283C12.323 8.40225 12.2129 8.46974 12.0899 8.492L11.9999 8.5H5.49995C5.375 8.50023 5.25449 8.45367 5.16216 8.36949C5.06983 8.28531 5.01236 8.16961 5.00107 8.04518C4.98978 7.92074 5.02549 7.79659 5.10116 7.69717C5.17684 7.59775 5.287 7.53026 5.40995 7.508L5.49995 7.5H11.9999ZM6.99995 4.5C7.12489 4.49977 7.2454 4.54633 7.33773 4.63051C7.43006 4.71469 7.48753 4.83039 7.49882 4.95482C7.51011 5.07926 7.4744 5.20341 7.39873 5.30283C7.32305 5.40225 7.21289 5.46974 7.08995 5.492L6.99995 5.5H3.49995C3.375 5.50023 3.25449 5.45367 3.16216 5.36949C3.06983 5.28531 3.01236 5.16961 3.00107 5.04518C2.98978 4.92074 3.02549 4.79659 3.10116 4.69717C3.17684 4.59775 3.287 4.53026 3.40995 4.508L3.49995 4.5H6.99995Z\"\n      // fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const DashLayoutContainerIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path\n      d=\"M12.964 1C14.109 1 15 1.98 15 3.24V12.76C15 14.021 14.11 15 13.027 15H2.973C1.89 15 1 14.021 1 12.76V3.24C1 1.98 1.89 1 2.973 1H12.963H12.964ZM10.137 6.047H1.954V12.76C1.954 13.39 2.399 13.88 2.972 13.88H10.137V6.047ZM13.981 6.047H11.137V13.88H12.964C13.537 13.88 13.981 13.39 13.981 12.76V6.047ZM12.964 2.12H2.973C2.4 2.12 1.955 2.61 1.955 3.24L1.954 5.017H13.981V3.24C13.981 2.61 13.537 2.12 12.964 2.12Z\"\n      // fill=\"#6F829E\"\n    />\n  </svg>\n);\n\nexport const DataViewIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"20\"\n    height=\"20\"\n    viewBox=\"0 0 20 20\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M16.25 1.25C16.9404 1.25 17.5 1.80964 17.5 2.5V5C17.5 5.69036 16.9404 6.25 16.25 6.25H3.75C3.05964 6.25 2.5 5.69036 2.5 5V2.5C2.5 1.80964 3.05964 1.25 3.75 1.25H16.25ZM6.25 2.5C5.55964 2.5 5 3.05964 5 3.75C5 4.44036 5.55964 5 6.25 5C6.94036 5 7.5 4.44036 7.5 3.75C7.5 3.05964 6.94036 2.5 6.25 2.5Z\" />\n    <path d=\"M16.25 7.5C16.9404 7.5 17.5 8.05964 17.5 8.75V11.25C17.5 11.9404 16.9404 12.5 16.25 12.5H3.75C3.05964 12.5 2.5 11.9404 2.5 11.25V8.75C2.5 8.05964 3.05964 7.5 3.75 7.5H16.25ZM6.25 8.75C5.55964 8.75 5 9.30964 5 10C5 10.6904 5.55964 11.25 6.25 11.25C6.94036 11.25 7.5 10.6904 7.5 10C7.5 9.30964 6.94036 8.75 6.25 8.75Z\" />\n    <path d=\"M16.25 13.75C16.9404 13.75 17.5 14.3096 17.5 15V17.5C17.5 18.1904 16.9404 18.75 16.25 18.75H3.75C3.05964 18.75 2.5 18.1904 2.5 17.5V15C2.5 14.3096 3.05964 13.75 3.75 13.75H16.25ZM6.25 15C5.55964 15 5 15.5596 5 16.25C5 16.9404 5.55964 17.5 6.25 17.5C6.94036 17.5 7.5 16.9404 7.5 16.25C7.5 15.5596 6.94036 15 6.25 15Z\" />\n  </svg>\n);\n\nexport const DataReportIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"20\"\n    height=\"20\"\n    viewBox=\"0 0 20 20\"\n    fill=\"currentColor\"\n  >\n    <path\n      d=\"M1.25 18.2377V15.9502H18.75V18.2377H1.25ZM16.4075 5.4427L16.4062 6.6677L16.4075 6.66895V14.7227L16.4062 14.7214L16.4075 14.7239H12.8912V5.4427H16.4075ZM11.7212 1.7627L11.72 3.1177H11.7212V14.7239H9.4875V14.7227H8.205V1.7627H11.7212ZM7.035 7.76644L7.03375 9.08395L7.035 9.0852V14.7239L3.52 14.7227V7.76644H7.035Z\"\n      // fill=\"\"\n    />\n  </svg>\n);\n\nexport const BrushIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"currentColor\">\n    <path d=\"M14.72 2.64C14.72 2.16 14.56 1.76 14.24 1.44L13.28 0.48C12.64 -0.16 11.6 -0.16 10.96 0.48L8.8 2.64L7.04 0.96C6.4 0.32 5.36 0.32 4.72 0.96L3.12 2.56L0.48 5.28C0.16 5.6 0 6 0 6.4C0 6.8 0.16 7.28 0.48 7.6L2 9.12L7.12 14.24C7.44 14.56 7.84 14.72 8.24 14.72H8.32C8.72 14.72 9.2 14.56 9.52 14.24L12.08 11.68C12.08 11.68 12.16 11.68 12.16 11.6C12.16 11.6 12.16 11.52 12.24 11.52L13.76 10C14.08 9.68 14.24 9.28 14.24 8.8C14.24 8.32 14.08 7.92 13.76 7.6L12.08 5.92L14.24 3.76C14.48 3.44 14.72 3.04 14.72 2.64ZM8.64 13.44C8.56 13.52 8.4 13.6 8.24 13.6H8.16C8 13.6 7.92 13.52 7.76 13.44L6.8 12.48L7.6 11.68C7.84 11.44 7.84 11.12 7.6 10.88C7.36 10.64 7.04 10.64 6.8 10.88L6 11.68L4.96 10.64L6.24 9.36C6.48 9.12 6.48 8.8 6.24 8.56C6 8.32 5.68 8.32 5.44 8.56L4.16 9.84L2.96 8.64L3.6 8C3.84 7.76 3.84 7.44 3.6 7.2C3.36 6.96 3.04 6.96 2.8 7.2L2.16 7.84L1.2 6.8C1.12 6.72 1.12 6.56 1.12 6.4C1.12 6.24 1.2 6.16 1.28 6L3.52 3.76L10.96 11.2L8.64 13.44ZM13.44 2.96L10.88 5.52C10.64 5.76 10.64 6.08 10.88 6.32L12.96 8.4C13.04 8.48 13.12 8.64 13.12 8.8C13.12 8.96 13.04 9.04 12.96 9.2L11.68 10.4L4.32 2.96L5.52 1.76C5.68 1.6 6.08 1.6 6.24 1.76L8.32 3.84C8.56 4.08 8.88 4.08 9.12 3.84L11.68 1.28C11.84 1.12 12.24 1.12 12.4 1.28L13.36 2.24C13.44 2.32 13.52 2.48 13.52 2.64C13.52 2.8 13.52 2.88 13.44 2.96Z\"/>\n  </svg>\n)\n\n\nexport const AIIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"#121111\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.25781 1.99119C9.51918 1.99119 9.75287 2.15339 9.84375 2.39841C11.0662 5.70202 13.672 8.3078 16.9756 9.53025C17.2203 9.62127 17.3828 9.85501 17.3828 10.1162C17.3826 10.3773 17.2203 10.6112 16.9756 10.7021C13.672 11.9246 11.0662 14.5294 9.84375 17.833C9.75288 18.078 9.51919 18.2412 9.25781 18.2412C8.99643 18.2412 8.76274 18.078 8.67188 17.833C7.4495 14.5296 4.84434 11.9247 1.54102 10.7021C1.29611 10.6113 1.133 10.3774 1.13281 10.1162C1.13281 9.85481 1.29597 9.62112 1.54102 9.53025C4.84449 8.30776 7.44947 5.70192 8.67188 2.39841L8.71191 2.31052C8.82109 2.11518 9.02907 1.99119 9.25781 1.99119ZM9.25781 4.18064C7.97127 6.74645 5.88903 8.8296 3.32324 10.1162C5.88854 11.4026 7.97129 13.4845 9.25781 16.0498C10.5442 13.4848 12.6265 11.4027 15.1914 10.1162C12.626 8.82957 10.5442 6.74619 9.25781 4.18064ZM15.9375 1.89451C16.0048 1.71358 16.2609 1.71352 16.3281 1.89451L16.9766 3.64744L18.7295 4.29685C18.9109 4.36397 18.9109 4.62036 18.7295 4.68748L16.9766 5.33591L16.3281 7.08884C16.261 7.27016 16.0047 7.2701 15.9375 7.08884L15.2891 5.33591L13.5361 4.68748C13.3548 4.62036 13.3548 4.36397 13.5361 4.29685L15.2891 3.64744L15.9375 1.89451Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n</svg>\n);\n\nexport const SettingIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"#121111\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M13.4288 1.98975H6.57004C6.20662 1.98974 5.84961 2.0854 5.53487 2.26711C5.22014 2.44882 4.95879 2.71017 4.77708 3.0249L1.34768 8.96481C1.16597 9.27953 1.07031 9.63655 1.07031 9.99996C1.07031 10.3634 1.16597 10.7204 1.34768 11.0351L4.7771 16.975C4.9588 17.2897 5.22016 17.5511 5.53489 17.7328C5.84961 17.9145 6.20663 18.0102 6.57004 18.0102H13.4288C13.7923 18.0102 14.1493 17.9145 14.464 17.7328C14.7787 17.5511 15.0401 17.2898 15.2218 16.975L18.6512 11.0351C18.8329 10.7204 18.9286 10.3634 18.9286 9.99996C18.9286 9.63655 18.8329 9.27953 18.6512 8.96481L15.2218 3.0249C15.0401 2.71017 14.7787 2.44882 14.464 2.26711C14.1493 2.08541 13.7923 1.98975 13.4288 1.98975ZM14.0039 3.72803L17.4333 9.66793C17.4916 9.76888 17.5223 9.88339 17.5223 9.99996C17.5223 10.1165 17.4916 10.231 17.4333 10.332L14.0039 16.2719C13.9456 16.3728 13.8618 16.4567 13.7609 16.515C13.6599 16.5732 13.5454 16.6039 13.4288 16.6039H6.57004C6.45348 16.6039 6.33896 16.5732 6.23801 16.515C6.13706 16.4567 6.05323 16.3728 5.99495 16.2719L2.56553 10.332C2.50725 10.231 2.47657 10.1165 2.47657 9.99996C2.47657 9.88339 2.50725 9.76888 2.56553 9.66793L5.99495 3.72803C6.05323 3.62708 6.13706 3.54325 6.23801 3.48496C6.33896 3.42668 6.45348 3.396 6.57004 3.396H13.4288C13.5437 3.39599 13.6566 3.42578 13.7565 3.48244C13.8564 3.5391 13.9399 3.62071 13.9988 3.71928L14.0039 3.72803Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"#121111\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M10 6.38672C8.00443 6.38672 6.38672 8.00443 6.38672 10C6.38672 11.9956 8.00443 13.6133 10 13.6133C11.9956 13.6133 13.6133 11.9956 13.6133 10C13.6133 8.00443 11.9956 6.38672 10 6.38672ZM10 7.79297C11.2189 7.79297 12.207 8.78109 12.207 10C12.207 11.2189 11.2189 12.207 10 12.207C8.78109 12.207 7.79297 11.2189 7.79297 10C7.79297 8.78109 8.78109 7.79297 10 7.79297Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n</svg>\n)\n\nexport const FullscreenIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"#121111\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M4.63375 3.75H6.875C7.04076 3.75 7.19973 3.68415 7.31694 3.56694C7.43415 3.44973 7.5 3.29076 7.5 3.125C7.5 2.95924 7.43415 2.80027 7.31694 2.68306C7.19973 2.56585 7.04076 2.5 6.875 2.5H3.125C2.95924 2.5 2.80027 2.56585 2.68306 2.68306C2.56585 2.80027 2.5 2.95924 2.5 3.125V6.875C2.5 7.04076 2.56585 7.19973 2.68306 7.31694C2.80027 7.43415 2.95924 7.5 3.125 7.5C3.29076 7.5 3.44973 7.43415 3.56694 7.31694C3.68415 7.19973 3.75 7.04076 3.75 6.875V4.63375L6.4325 7.31625C6.49015 7.37594 6.55912 7.42356 6.63537 7.45631C6.71162 7.48907 6.79364 7.50631 6.87662 7.50703C6.95961 7.50775 7.04191 7.49194 7.11872 7.46051C7.19553 7.42909 7.26531 7.38268 7.324 7.324C7.38268 7.26531 7.42909 7.19553 7.46051 7.11872C7.49194 7.04191 7.50775 6.95961 7.50703 6.87662C7.50631 6.79364 7.48907 6.71162 7.45631 6.63537C7.42356 6.55912 7.37594 6.49015 7.31625 6.4325L4.63375 3.75ZM16.25 4.63375V6.875C16.25 7.04076 16.3158 7.19973 16.4331 7.31694C16.5503 7.43415 16.7092 7.5 16.875 7.5C17.0408 7.5 17.1997 7.43415 17.3169 7.31694C17.4342 7.19973 17.5 7.04076 17.5 6.875V3.125C17.5 2.95924 17.4342 2.80027 17.3169 2.68306C17.1997 2.56585 17.0408 2.5 16.875 2.5H13.125C12.9592 2.5 12.8003 2.56585 12.6831 2.68306C12.5658 2.80027 12.5 2.95924 12.5 3.125C12.5 3.29076 12.5658 3.44973 12.6831 3.56694C12.8003 3.68415 12.9592 3.75 13.125 3.75H15.3663L12.6838 6.4325C12.6241 6.49015 12.5764 6.55912 12.5437 6.63537C12.5109 6.71162 12.4937 6.79364 12.493 6.87662C12.4922 6.95961 12.5081 7.04191 12.5395 7.11872C12.5709 7.19553 12.6173 7.26531 12.676 7.324C12.7347 7.38268 12.8045 7.42909 12.8813 7.46051C12.9581 7.49194 13.0404 7.50775 13.1234 7.50703C13.2064 7.50631 13.2884 7.48907 13.3646 7.45631C13.4409 7.42356 13.5098 7.37594 13.5675 7.31625L16.25 4.63375ZM4.63375 16.25H6.875C7.04076 16.25 7.19973 16.3158 7.31694 16.4331C7.43415 16.5503 7.5 16.7092 7.5 16.875C7.5 17.0408 7.43415 17.1997 7.31694 17.3169C7.19973 17.4342 7.04076 17.5 6.875 17.5H3.125C2.95924 17.5 2.80027 17.4342 2.68306 17.3169C2.56585 17.1997 2.5 17.0408 2.5 16.875V13.125C2.5 12.9592 2.56585 12.8003 2.68306 12.6831C2.80027 12.5658 2.95924 12.5 3.125 12.5C3.29076 12.5 3.44973 12.5658 3.56694 12.6831C3.68415 12.8003 3.75 12.9592 3.75 13.125V15.3663L6.4325 12.6838C6.49015 12.6241 6.55912 12.5764 6.63537 12.5437C6.71162 12.5109 6.79364 12.4937 6.87662 12.493C6.95961 12.4922 7.04191 12.5081 7.11872 12.5395C7.19553 12.5709 7.26531 12.6173 7.324 12.676C7.38268 12.7347 7.42909 12.8045 7.46051 12.8813C7.49194 12.9581 7.50775 13.0404 7.50703 13.1234C7.50631 13.2064 7.48907 13.2884 7.45631 13.3646C7.42356 13.4409 7.37594 13.5098 7.31625 13.5675L4.63375 16.25ZM16.25 15.3663V13.125C16.25 12.9592 16.3158 12.8003 16.4331 12.6831C16.5503 12.5658 16.7092 12.5 16.875 12.5C17.0408 12.5 17.1997 12.5658 17.3169 12.6831C17.4342 12.8003 17.5 12.9592 17.5 13.125V16.875C17.5 17.0408 17.4342 17.1997 17.3169 17.3169C17.1997 17.4342 17.0408 17.5 16.875 17.5H13.125C12.9592 17.5 12.8003 17.4342 12.6831 17.3169C12.5658 17.1997 12.5 17.0408 12.5 16.875C12.5 16.7092 12.5658 16.5503 12.6831 16.4331C12.8003 16.3158 12.9592 16.25 13.125 16.25H15.3663L12.6838 13.5675C12.6241 13.5098 12.5764 13.4409 12.5437 13.3646C12.5109 13.2884 12.4937 13.2064 12.493 13.1234C12.4922 13.0404 12.5081 12.9581 12.5395 12.8813C12.5709 12.8045 12.6173 12.7347 12.676 12.676C12.7347 12.6173 12.8045 12.5709 12.8813 12.5395C12.9581 12.5081 13.0404 12.4922 13.1234 12.493C13.2064 12.4937 13.2884 12.5109 13.3646 12.5437C13.4409 12.5764 13.5098 12.6241 13.5675 12.6838L16.25 15.3663Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  </svg>\n);\n\nexport const MenuLinesIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"#121111\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M2.35156 3.99961C2.35156 3.82722 2.42004 3.66189 2.54194 3.53999C2.66384 3.41809 2.82917 3.34961 3.00156 3.34961H13.0016C13.174 3.34961 13.3393 3.41809 13.4612 3.53999C13.5831 3.66189 13.6516 3.82722 13.6516 3.99961C13.6516 4.172 13.5831 4.33733 13.4612 4.45923C13.3393 4.58113 13.174 4.64961 13.0016 4.64961H3.00156C2.82917 4.64961 2.66384 4.58113 2.54194 4.45923C2.42004 4.33733 2.35156 4.172 2.35156 3.99961ZM2.35156 7.99961C2.35156 7.82722 2.42004 7.66189 2.54194 7.53999C2.66384 7.41809 2.82917 7.34961 3.00156 7.34961H10.0016C10.174 7.34961 10.3393 7.41809 10.4612 7.53999C10.5831 7.66189 10.6516 7.82722 10.6516 7.99961C10.6516 8.172 10.5831 8.33733 10.4612 8.45923C10.3393 8.58113 10.174 8.64961 10.0016 8.64961H3.00156C2.82917 8.64961 2.66384 8.58113 2.54194 8.45923C2.42004 8.33733 2.35156 8.172 2.35156 7.99961ZM3.00156 11.3496C2.82917 11.3496 2.66384 11.4181 2.54194 11.54C2.42004 11.6619 2.35156 11.8272 2.35156 11.9996C2.35156 12.172 2.42004 12.3373 2.54194 12.4592C2.66384 12.5811 2.82917 12.6496 3.00156 12.6496H8.00156C8.17395 12.6496 8.33928 12.5811 8.46118 12.4592C8.58308 12.3373 8.65156 12.172 8.65156 11.9996C8.65156 11.8272 8.58308 11.6619 8.46118 11.54C8.33928 11.4181 8.17395 11.3496 8.00156 11.3496H3.00156Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n</svg>\n);\n\nexport const HCollapseIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n  <g clip-path=\"url(#clip0_26973_22856)\">\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"#121111\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n    <path d=\"M15.2937 12.8547C15.3571 12.7918 15.4074 12.7171 15.4417 12.6347C15.476 12.5523 15.4936 12.4639 15.4936 12.3747C15.4936 12.2855 15.476 12.1971 15.4417 12.1147C15.4074 12.0323 15.3571 11.9576 15.2937 11.8947L14.1962 10.8072H19.3263C19.5067 10.8056 19.6794 10.7336 19.8075 10.6066C19.9357 10.4796 20.0093 10.3076 20.0125 10.1272C20.0093 9.94679 19.9357 9.77477 19.8075 9.64777C19.6794 9.52076 19.5067 9.4488 19.3263 9.4472L14.205 9.45595L15.2925 8.37595C15.3557 8.31311 15.4058 8.23841 15.44 8.15615C15.4742 8.07388 15.4918 7.98567 15.4918 7.89658C15.4918 7.80749 15.4742 7.71927 15.44 7.63701C15.4058 7.55474 15.3557 7.48004 15.2925 7.4172C15.1633 7.29062 14.9896 7.21973 14.8087 7.21973C14.6279 7.21973 14.4542 7.29062 14.325 7.4172L12.0687 9.6547C12.0054 9.71756 11.9551 9.79234 11.9208 9.87472C11.8865 9.9571 11.8689 10.0455 11.8689 10.1347C11.8689 10.2239 11.8865 10.3123 11.9208 10.3947C11.9551 10.4771 12.0054 10.5518 12.0687 10.6147L14.3262 12.8547C14.4555 12.9817 14.6294 13.0528 14.8106 13.0528C14.9918 13.0528 15.1657 12.9817 15.295 12.8547H15.2937ZM5.80625 10.8072L4.71 11.8947C4.64666 11.9576 4.59638 12.0323 4.56208 12.1147C4.52777 12.1971 4.51011 12.2855 4.51011 12.3747C4.51011 12.4639 4.52777 12.5523 4.56208 12.6347C4.59638 12.7171 4.64666 12.7918 4.71 12.8547C4.8392 12.9813 5.01287 13.0522 5.19375 13.0522C5.37463 13.0522 5.5483 12.9813 5.6775 12.8547L7.93625 10.6147C7.9994 10.5519 8.04952 10.4772 8.08372 10.3949C8.11791 10.3126 8.13552 10.2244 8.13552 10.1353C8.13552 10.0462 8.11791 9.95802 8.08372 9.87576C8.04952 9.79349 7.9994 9.71879 7.93625 9.65595L5.67875 7.4172C5.54955 7.29062 5.37588 7.21973 5.195 7.21973C5.01412 7.21973 4.84045 7.29062 4.71125 7.4172C4.6481 7.48004 4.59798 7.55474 4.56378 7.63701C4.52959 7.71927 4.51198 7.80749 4.51198 7.89658C4.51198 7.98567 4.52959 8.07388 4.56378 8.15615C4.59798 8.23841 4.6481 8.31311 4.71125 8.37595L5.8 9.45595H0.68625C0.505817 9.45755 0.333134 9.52951 0.204961 9.65652C0.0767887 9.78352 0.00324995 9.95554 0 10.136C0 10.5035 0.30625 10.8072 0.68625 10.8147L5.8075 10.8072H5.80625Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  </g>\n  <defs>\n    <clipPath id=\"clip0_26973_22856\">\n      <rect width=\"20\" height=\"20\" fill=\"white\"/>\n    </clipPath>\n  </defs>\n</svg>\n)\n\nexport const HExpandIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"#121111\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n  <path d=\"M16.573 12.8547C16.5097 12.7918 16.4594 12.7171 16.4251 12.6347C16.3908 12.5523 16.3731 12.4639 16.3731 12.3747C16.3731 12.2855 16.3908 12.1971 16.4251 12.1147C16.4594 12.0323 16.5097 11.9576 16.573 11.8947L17.6705 10.8072H12.5393C12.359 10.8053 12.1867 10.7332 12.0588 10.6062C11.9309 10.4792 11.8575 10.3074 11.8543 10.1272C11.8543 9.7597 12.1605 9.45595 12.5393 9.4472L17.6618 9.45595L16.573 8.37595C16.5099 8.31311 16.4597 8.23841 16.4256 8.15615C16.3914 8.07388 16.3738 7.98567 16.3738 7.89658C16.3738 7.80749 16.3914 7.71927 16.4256 7.63701C16.4597 7.55474 16.5099 7.48004 16.573 7.4172C16.7022 7.29062 16.8759 7.21973 17.0568 7.21973C17.2376 7.21973 17.4113 7.29062 17.5405 7.4172L19.7993 9.6547C19.8626 9.71756 19.9129 9.79234 19.9472 9.87472C19.9815 9.9571 19.9992 10.0455 19.9992 10.1347C19.9992 10.2239 19.9815 10.3123 19.9472 10.3947C19.9129 10.4771 19.8626 10.5518 19.7993 10.6147L17.5405 12.8547C17.4113 12.9813 17.2376 13.0522 17.0568 13.0522C16.8759 13.0522 16.7022 12.9813 16.573 12.8547ZM2.32802 10.8072L3.42552 11.8947C3.48886 11.9576 3.53913 12.0323 3.57344 12.1147C3.60775 12.1971 3.62541 12.2855 3.62541 12.3747C3.62541 12.4639 3.60775 12.5523 3.57344 12.6347C3.53913 12.7171 3.48886 12.7918 3.42552 12.8547C3.29631 12.9813 3.12264 13.0522 2.94177 13.0522C2.76089 13.0522 2.58722 12.9813 2.45802 12.8547L0.199266 10.6147C0.136112 10.5519 0.085997 10.4772 0.0518005 10.3949C0.017604 10.3126 0 10.2244 0 10.1353C0 10.0462 0.017604 9.95802 0.0518005 9.87576C0.085997 9.79349 0.136112 9.71879 0.199266 9.65595L2.45802 7.4172C2.58722 7.29062 2.76089 7.21973 2.94177 7.21973C3.12264 7.21973 3.29631 7.29062 3.42552 7.4172C3.48867 7.48004 3.53879 7.55474 3.57298 7.63701C3.60718 7.71927 3.62478 7.80749 3.62478 7.89658C3.62478 7.98567 3.60718 8.07388 3.57298 8.15615C3.53879 8.23841 3.48867 8.31311 3.42552 8.37595L2.33677 9.45595H7.44927C7.82052 9.45595 8.12677 9.7597 8.13552 10.136C8.13194 10.3161 8.05826 10.4878 7.93013 10.6146C7.80199 10.7413 7.62949 10.8131 7.44927 10.8147L2.32677 10.8072H2.32802Z\" fill=\"black\" fill-opacity=\"0.2\"/>\n</svg>\n)\n\nexport const CommonTypeIcon = ({\n  fill = 'currentColor',\n  size = 28,\n}) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 28 28\" fill={fill}>\n  <path d=\"M25.0691 7.13125L14.5254 1.00625C14.2629 0.83125 13.9129 0.83125 13.6066 1.00625L2.97539 7.0875C2.74781 7.23922 2.58599 7.4896 2.51846 7.7531C2.4979 7.83332 2.49414 7.91656 2.49414 7.99937V20.0813C2.49414 20.3875 2.66914 20.6938 2.93164 20.8687L13.4754 26.9937C13.6066 27.0813 13.7816 27.125 13.9566 27.125C14.1316 27.125 14.2629 27.0813 14.3941 26.9937L24.9816 20.9125C25.2441 20.7375 25.4191 20.4312 25.4629 20.125L25.5066 7.91875C25.5066 7.6125 25.3316 7.30625 25.0691 7.13125ZM23.6293 18.5919C23.6269 19.2159 23.2923 19.7914 22.7513 20.1023L14.834 24.6521C14.2912 24.964 13.6231 24.9622 13.082 24.6474L5.20553 20.0647C4.66481 19.7501 4.33315 19.1708 4.33561 18.5452L4.37144 9.40814C4.37388 8.78412 4.70844 8.20861 5.24949 7.89769L13.1668 3.34793C13.7096 3.03601 14.3777 3.0378 14.9188 3.35263L22.7953 7.93531C23.336 8.2499 23.6676 8.82921 23.6652 9.45478L23.6293 18.5919Z\" fill=\"#4ACCC1\"/>\n  <path d=\"M8.35656 9.88664C7.91906 9.62414 7.35031 9.75539 7.08781 10.1929C6.82531 10.6304 6.95656 11.1991 7.39406 11.4616L13.0816 14.9616L13.1691 20.2116C13.1691 20.6929 13.6066 21.1304 14.0878 21.1304C14.6128 21.1304 15.0066 20.6929 15.0066 20.2116L14.8753 15.0054L20.6066 11.4616C21.0441 11.1991 21.1753 10.6304 20.9128 10.1929C20.6503 9.75539 20.0816 9.62414 19.6441 9.88664L14.0003 13.3866L8.35656 9.88664Z\" fill=\"#4ACCC1\"/>\n</svg>\n);\n\nexport const FlowNodeTypeIcon = ({\n  size = 28,\n}) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n    <path d=\"M22.3125 23.625C22.1398 23.6248 21.9688 23.5905 21.8094 23.5242C21.6499 23.4579 21.505 23.3609 21.3831 23.2386C21.2611 23.1163 21.1644 22.9712 21.0986 22.8115C21.0327 22.6519 20.9989 22.4808 20.9991 22.3081C20.9994 22.1354 21.0336 21.9645 21.0999 21.805C21.1662 21.6455 21.2633 21.5007 21.3856 21.3787C21.5078 21.2567 21.6529 21.1601 21.8126 21.0942C21.9722 21.0283 22.1433 20.9945 22.316 20.9947C22.6648 20.9952 22.9991 21.1342 23.2454 21.3812C23.4917 21.6281 23.6298 21.9628 23.6294 22.3116C23.6289 22.6604 23.4899 22.9947 23.2429 23.241C22.996 23.4874 22.6613 23.6255 22.3125 23.625ZM14 12.6875C14.3481 12.6875 14.6819 12.8258 14.9281 13.0719C15.1742 13.3181 15.3125 13.6519 15.3125 14C15.3125 14.3481 15.1742 14.6819 14.9281 14.9281C14.6819 15.1742 14.3481 15.3125 14 15.3125C13.6519 15.3125 13.3181 15.1742 13.0719 14.9281C12.8258 14.6819 12.6875 14.3481 12.6875 14C12.6875 13.6519 12.8258 13.3181 13.0719 13.0719C13.3181 12.8258 13.6519 12.6875 14 12.6875ZM5.6875 7C5.51491 6.99977 5.34406 6.96555 5.18469 6.89929C5.02533 6.83303 4.88057 6.73603 4.7587 6.61383C4.51256 6.36703 4.37454 6.03256 4.375 5.684C4.37546 5.33544 4.51437 5.00134 4.76117 4.7552C5.00797 4.50906 5.34244 4.37104 5.691 4.3715C6.03956 4.37196 6.37366 4.51087 6.6198 4.75767C6.86594 5.00447 7.00396 5.33894 7.0035 5.6875C7.00304 6.03606 6.86413 6.37016 6.61733 6.6163C6.37053 6.86244 6.03606 7.00046 5.6875 7ZM22.3125 19.25C20.7725 19.25 19.495 20.3927 19.2815 21.875H9.352C8.49643 21.8741 7.67617 21.5338 7.07119 20.9288C6.46621 20.3238 6.12593 19.5036 6.125 18.648V17.9918C6.125 16.2137 7.57225 14.7665 9.352 14.7665H11.0337C11.205 15.4231 11.589 16.0046 12.1256 16.4199C12.6623 16.8353 13.3214 17.0613 14 17.0625C15.4245 17.0625 16.625 16.0842 16.9662 14.7665H18.648C19.9676 14.7651 21.2327 14.2403 22.1657 13.3072C23.0988 12.3742 23.6236 11.1091 23.625 9.7895C23.6236 8.46994 23.0988 7.20483 22.1657 6.27176C21.2327 5.3387 19.9676 4.81389 18.648 4.8125H8.6205C8.43141 4.18122 8.04407 3.62761 7.51582 3.23362C6.98757 2.83964 6.34649 2.62624 5.6875 2.625C3.99875 2.625 2.625 3.99875 2.625 5.6875C2.625 7.37625 3.99875 8.75 5.6875 8.75C7.07175 8.75 8.24425 7.826 8.62225 6.5625H18.6497C19.2866 6.56512 19.9085 6.75595 20.4373 7.11099C20.966 7.46603 21.3781 7.96944 21.6215 8.55795C21.865 9.14647 21.9291 9.79382 21.8058 10.4187C21.6824 11.0435 21.3771 11.6179 20.9282 12.0697C20.3245 12.6753 19.5037 13.0148 18.648 13.0165H16.898C16.6919 12.4111 16.3018 11.8853 15.7822 11.5126C15.2626 11.1398 14.6395 10.9388 14 10.9375C12.656 10.9375 11.5115 11.809 11.1003 13.0165H9.35025C8.0316 13.0184 6.76747 13.5429 5.83488 14.4751C4.90229 15.4074 4.37731 16.6714 4.375 17.99V18.6462C4.37593 19.9661 4.90053 21.2317 5.83365 22.1651C6.76676 23.0986 8.03214 23.6236 9.352 23.625H19.5457C20.0392 24.6575 21.0928 25.375 22.3125 25.375C24.0012 25.375 25.375 24.0012 25.375 22.3125C25.375 20.6238 24.0012 19.25 22.3125 19.25Z\" fill=\"#FF9921\"/>\n  </svg>\n);\n\nexport const ScheduleTypeIcon = ({\n  size = 28,\n}) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n  <path d=\"M14 1.75C17.2489 1.75 20.3647 3.04062 22.6621 5.33794C24.9594 7.63526 26.25 10.7511 26.25 14C26.25 17.2489 24.9594 20.3647 22.6621 22.6621C20.3647 24.9594 17.2489 26.25 14 26.25C10.7511 26.25 7.63526 24.9594 5.33794 22.6621C3.04062 20.3647 1.75 17.2489 1.75 14C1.75 10.7511 3.04062 7.63526 5.33794 5.33794C7.63526 3.04062 10.7511 1.75 14 1.75ZM14 3.5C12.6211 3.5 11.2557 3.77159 9.98182 4.29926C8.70791 4.82694 7.55039 5.60036 6.57538 6.57538C5.60036 7.55039 4.82694 8.70791 4.29926 9.98182C3.77159 11.2557 3.5 12.6211 3.5 14C3.5 15.3789 3.77159 16.7443 4.29926 18.0182C4.82694 19.2921 5.60036 20.4496 6.57538 21.4246C7.55039 22.3996 8.70791 23.1731 9.98182 23.7007C11.2557 24.2284 12.6211 24.5 14 24.5C16.7848 24.5 19.4555 23.3938 21.4246 21.4246C23.3938 19.4555 24.5 16.7848 24.5 14C24.5 11.2152 23.3938 8.54451 21.4246 6.57538C19.4555 4.60625 16.7848 3.5 14 3.5ZM13.125 7C13.3298 6.99993 13.5281 7.0717 13.6855 7.20281C13.8428 7.33391 13.9491 7.51605 13.986 7.7175L14 7.875V14H19.25C19.4548 13.9999 19.6531 14.0717 19.8105 14.2028C19.9678 14.3339 20.0741 14.5161 20.111 14.7175L20.125 14.875C20.1251 15.0798 20.0533 15.2781 19.9222 15.4355C19.7911 15.5928 19.6089 15.6991 19.4075 15.736L19.25 15.75H13.125C12.9202 15.7501 12.7219 15.6783 12.5645 15.5472C12.4072 15.4161 12.3009 15.2339 12.264 15.0325L12.25 14.875V7.875C12.25 7.64294 12.3422 7.42038 12.5063 7.25628C12.6704 7.09219 12.8929 7 13.125 7Z\" fill=\"#F06648\"/>\n</svg>\n);\n\nexport const FormTypeIcon = ({\n  size = 28,\n}) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 28 28\" fill=\"none\">\n  <path d=\"M16.954 1.75L24.5 8.35275V23.625C24.5 24.3212 24.2234 24.9889 23.7312 25.4812C23.2389 25.9734 22.5712 26.25 21.875 26.25H6.125C5.42881 26.25 4.76113 25.9734 4.26884 25.4812C3.77656 24.9889 3.5 24.3212 3.5 23.625V4.375C3.5 3.67881 3.77656 3.01113 4.26884 2.51884C4.76113 2.02656 5.42881 1.75 6.125 1.75H16.954ZM14.875 3.5H6.125C5.89294 3.5 5.67038 3.59219 5.50628 3.75628C5.34219 3.92038 5.25 4.14294 5.25 4.375V23.625C5.25 23.8571 5.34219 24.0796 5.50628 24.2437C5.67038 24.4078 5.89294 24.5 6.125 24.5H21.875C22.1071 24.5 22.3296 24.4078 22.4937 24.2437C22.6578 24.0796 22.75 23.8571 22.75 23.625V10.5H17.5C16.8475 10.5 16.2183 10.2569 15.7353 9.81817C15.2522 9.37944 14.9499 8.77653 14.8872 8.127L14.875 7.875V3.5ZM19.25 18.375C19.4687 18.3746 19.6795 18.4561 19.8411 18.6034C20.0027 18.7507 20.1033 18.9532 20.123 19.1709C20.1428 19.3887 20.0803 19.606 19.9479 19.78C19.8154 19.9539 19.6227 20.072 19.4075 20.111L19.25 20.125H8.75C8.53134 20.1254 8.32046 20.0439 8.15888 19.8966C7.9973 19.7493 7.89673 19.5468 7.87697 19.3291C7.85721 19.1113 7.9197 18.894 8.05213 18.72C8.18457 18.5461 8.37734 18.428 8.5925 18.389L8.75 18.375H19.25ZM19.25 14C19.4687 13.9996 19.6795 14.0811 19.8411 14.2284C20.0027 14.3757 20.1033 14.5782 20.123 14.7959C20.1428 15.0137 20.0803 15.231 19.9479 15.405C19.8154 15.5789 19.6227 15.697 19.4075 15.736L19.25 15.75H8.75C8.53134 15.7504 8.32046 15.6689 8.15888 15.5216C7.9973 15.3743 7.89673 15.1718 7.87697 14.9541C7.85721 14.7363 7.9197 14.519 8.05213 14.345C8.18457 14.1711 8.37734 14.053 8.5925 14.014L8.75 14H19.25ZM16.625 3.78875V7.875C16.6249 8.07979 16.6967 8.27813 16.8278 8.43545C16.9589 8.59278 17.1411 8.69914 17.3425 8.736L17.5 8.75H22.2968L16.625 3.78875Z\" fill=\"#0265FF\"/>\n</svg>\n)\n\nexport const GoToFormIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"currentColor\"\n  >\n    <path d=\"M14.625 6.36445V6.26445C14.625 6.23945 14.625 6.23945 14.6 6.21445C14.6 6.18945 14.6 6.18945 14.575 6.16445C14.575 6.13945 14.55 6.13945 14.55 6.11445C14.55 6.08945 14.525 6.08945 14.525 6.06445C14.525 6.06445 14.525 6.03945 14.5 6.03945L9.975 0.514453L9.95 0.489453C9.95 0.464453 9.925 0.464453 9.9 0.439453C9.9 0.439453 9.875 0.414453 9.85 0.414453C9.825 0.414453 9.825 0.389453 9.8 0.389453C9.775 0.389453 9.775 0.364453 9.75 0.364453C9.725 0.364453 9.725 0.339453 9.7 0.339453C9.675 0.339453 9.675 0.339453 9.65 0.314453H2.675C1.95 0.314453 1.375 0.939453 1.375 1.73945V8.28945C1.375 8.58945 1.6 8.81445 1.9 8.81445C2.2 8.81445 2.425 8.58945 2.425 8.28945V1.73945C2.425 1.51445 2.55 1.36445 2.675 1.36445H9.05V5.43945C9.05 6.23945 9.65 6.88945 10.4 6.88945H13.6V13.8395C13.6 14.0645 13.475 14.2645 13.3 14.2645H2.725C2.575 14.2645 2.425 14.0645 2.425 13.8395V12.8895C2.425 12.5895 2.2 12.3645 1.9 12.3645C1.6 12.3645 1.375 12.5895 1.375 12.8895V13.8395C1.375 14.6395 1.975 15.2895 2.725 15.2895H13.3C14.05 15.2895 14.65 14.6395 14.65 13.8395L14.625 6.36445ZM10.1 5.43945V2.31445L13 5.86445H10.375C10.225 5.86445 10.1 5.66445 10.1 5.43945Z\" />\n    <path d=\"M1.42585 10.5887C1.42585 10.8887 1.65085 11.1137 1.95085 11.1137H8.30085L7.07585 12.3387C6.87585 12.5387 6.87585 12.8637 7.07585 13.0887C7.17585 13.1887 7.30085 13.2387 7.45085 13.2387C7.60085 13.2387 7.72585 13.1887 7.82585 13.0887L9.95085 10.9637C10.0508 10.8637 10.1008 10.7137 10.1008 10.5637C10.1008 10.4137 10.0508 10.2637 9.95085 10.1637L7.82585 8.03867C7.62585 7.83867 7.30085 7.83867 7.07585 8.03867C6.87585 8.23867 6.87585 8.56367 7.07585 8.78867L8.37585 10.0887H1.95085C1.88287 10.0842 1.81471 10.0939 1.75068 10.1172C1.68664 10.1404 1.62811 10.1766 1.57878 10.2236C1.52945 10.2706 1.4904 10.3273 1.46407 10.3901C1.43775 10.453 1.42474 10.5206 1.42585 10.5887Z\" />\n  </svg>\n);","import * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\nimport { IconBtn } from \"../icon-btn\"\nimport { CloseIcon } from \"../bs-icons\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  container,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal> & {\n  container?: HTMLElement | null;\n}) {\n  return (\n    <DrawerPrimitive.Portal\n      data-slot=\"drawer-portal\"\n      container={container ?? undefined}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"fixed inset-0 z-50 bg-black/30 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  container: containerProp,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n  container?: HTMLElement | null;\n}) {\n  const [autoContainer, setAutoContainer] = React.useState<HTMLElement | null>(null);\n\n  const setDetectorRef = React.useCallback((node: HTMLElement | null) => {\n    if (!node) return;\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>('[data-bs-drawer-portal]');\n      if (existing) {\n        setAutoContainer(existing);\n        return;\n      }\n\n      // vaul injects its CSS (keyframes, transitions) into document.head at module load.\n      // Clone it into the ShadowRoot so animations work when portaled inside Shadow DOM.\n      if (!rootNode.querySelector('style[data-bs-vaul-style]')) {\n        const vaulStyle = Array.from(document.head.querySelectorAll('style')).find(\n          (el) => el.textContent?.includes('[data-vaul-drawer]')\n        );\n        if (vaulStyle) {\n          const cloned = vaulStyle.cloneNode(true) as HTMLStyleElement;\n          cloned.setAttribute('data-bs-vaul-style', '');\n          rootNode.appendChild(cloned);\n        }\n      }\n\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-drawer-portal', 'true');\n      rootNode.appendChild(container);\n      setAutoContainer(container);\n    }\n  }, []);\n\n  const effectiveContainer = containerProp !== undefined ? containerProp : autoContainer;\n\n  return (\n    <>\n      {containerProp === undefined && (\n        <span ref={setDetectorRef} style={{ display: 'none' }} aria-hidden />\n      )}\n      <DrawerPortal container={effectiveContainer ?? undefined}>\n        <DrawerOverlay />\n        <DrawerPrimitive.Content\n          data-slot=\"drawer-content\"\n          className={cn(\n            \"group/drawer-content fixed z-50 flex h-auto flex-col bg-white shadow-xl\",\n            \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg\",\n            \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[calc(100vh-52px)] data-[vaul-drawer-direction=bottom]:rounded-t-[10px]\",\n            \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n            \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n            \"rounded-0!\",\n            className\n          )}\n          {...props}\n          style={{\n            ...(props.style || {}),\n            borderRadius: 0,\n          }}\n        >\n          {children}\n        </DrawerPrimitive.Content>\n      </DrawerPortal>\n    </>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex items-center justify-center relative h-[50px] shrink-0 border-b border-[#E0E0E0]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerBody({ className, children, style, ...props }: React.ComponentProps<\"div\"> & {\n  full?: boolean;\n}) {\n  const bodyRef = React.useRef<HTMLDivElement>(null);\n  const contentRef = React.useRef<HTMLDivElement>(null);\n\n  React.useEffect(() => {\n    const el = bodyRef.current;\n    if (!el) return;\n\n    const handleWheel = (e: WheelEvent) => {\n      const { scrollTop, scrollHeight, clientHeight } = el;\n      const atTop = scrollTop <= 0;\n      const atBottom = scrollTop + clientHeight >= scrollHeight - 1;\n\n      if ((e.deltaY > 0 && !atBottom) || (e.deltaY < 0 && !atTop)) {\n        e.stopPropagation();\n      }\n    };\n\n    el.addEventListener(\"wheel\", handleWheel);\n    return () => el.removeEventListener(\"wheel\", handleWheel);\n  }, []);\n\n  React.useEffect(() => {\n    const content = contentRef.current;\n    const body = bodyRef.current;\n    if (!content || !body) return;\n\n    const observer = new ResizeObserver(() => {\n      body.scrollTo({ top: body.scrollHeight, behavior: \"smooth\" });\n    });\n\n    observer.observe(content);\n    return () => observer.disconnect();\n  }, []);\n\n  return (\n    <div\n      ref={bodyRef}\n      data-slot=\"drawer-body\"\n      className={cn(\"flex-1 overflow-y-auto bg-[#F5F7FA]\", className)}\n      style={{ scrollbarGutter: \"stable\", ...style }}\n      {...props}\n    >\n      <div\n        ref={contentRef}\n        className={cn(\"content-wrapper w-[1120px] bg-white mx-auto p-5 rounded-lg my-5\", {\n          \"w-[calc(100%-40px)]\": props.full,\n          \"h-[calc(100%-40px)]\": props.full,\n          'mx-5': props.full,\n          \"w-[1120px]\": !props.full,\n        })}\n      >\n        {children}\n      </div>\n    </div>\n  );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\n        \"flex items-center justify-center gap-4 h-[52px] shrink-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\"text-[18px] font-semibold text-black\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-sm text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nconst DrawerCloseButton = React.forwardRef<\n  React.ElementRef<typeof DrawerPrimitive.Close>,\n  React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Close>\n>(({ className, ...props }, ref) => (\n  <DrawerPrimitive.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-3 top-1/2 -translate-y-1/2 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n      className\n    )}\n    {...props}\n  >\n    {/* <X className=\"h-4 w-4\" /> */}\n    <IconBtn\n      icon={ <CloseIcon />}\n    />\n    <span className=\"sr-only\">Close</span>\n  </DrawerPrimitive.Close>\n))\nDrawerCloseButton.displayName = \"DrawerCloseButton\"\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerBody,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n  DrawerCloseButton,\n}\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n  const {\n    __scopePopover,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = false\n  } = props;\n  const popperScope = usePopperScope(__scopePopover);\n  const triggerRef = React.useRef(null);\n  const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: POPOVER_NAME\n  });\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n    PopoverProvider,\n    {\n      scope: __scopePopover,\n      contentId: useId(),\n      triggerRef,\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      hasCustomAnchor,\n      onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n      onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n      modal,\n      children\n    }\n  ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...anchorProps } = props;\n    const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n    React.useEffect(() => {\n      onCustomAnchorAdd();\n      return () => onCustomAnchorRemove();\n    }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n  }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...triggerProps } = props;\n    const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    const trigger = /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n    return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n  }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n  const { __scopePopover, forceMount, children, container } = props;\n  const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    const contentRef = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    const isRightClickOutsideRef = React.useRef(false);\n    React.useEffect(() => {\n      const content = contentRef.current;\n      if (content) return hideOthers(content);\n    }, []);\n    return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n      PopoverContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: true,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          event.preventDefault();\n          if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(\n          props.onPointerDownOutside,\n          (event) => {\n            const originalEvent = event.detail.originalEvent;\n            const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n            const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n            isRightClickOutsideRef.current = isRightClick;\n          },\n          { checkForDefaultPrevented: false }\n        ),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault(),\n          { checkForDefaultPrevented: false }\n        )\n      }\n    ) });\n  }\n);\nvar PopoverContentNonModal = React.forwardRef(\n  (props, forwardedRef) => {\n    const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n    const hasInteractedOutsideRef = React.useRef(false);\n    const hasPointerDownOutsideRef = React.useRef(false);\n    return /* @__PURE__ */ jsx(\n      PopoverContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          props.onCloseAutoFocus?.(event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          props.onInteractOutside?.(event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = context.triggerRef.current?.contains(target);\n          if (targetIsTrigger) event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar PopoverContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopePopover,\n      trapFocus,\n      onOpenAutoFocus,\n      onCloseAutoFocus,\n      disableOutsidePointerEvents,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      ...contentProps\n    } = props;\n    const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n    const popperScope = usePopperScope(__scopePopover);\n    useFocusGuards();\n    return /* @__PURE__ */ jsx(\n      FocusScope,\n      {\n        asChild: true,\n        loop: true,\n        trapped: trapFocus,\n        onMountAutoFocus: onOpenAutoFocus,\n        onUnmountAutoFocus: onCloseAutoFocus,\n        children: /* @__PURE__ */ jsx(\n          DismissableLayer,\n          {\n            asChild: true,\n            disableOutsidePointerEvents,\n            onInteractOutside,\n            onEscapeKeyDown,\n            onPointerDownOutside,\n            onFocusOutside,\n            onDismiss: () => context.onOpenChange(false),\n            children: /* @__PURE__ */ jsx(\n              PopperPrimitive.Content,\n              {\n                \"data-state\": getState(context.open),\n                role: \"dialog\",\n                id: context.contentId,\n                ...popperScope,\n                ...contentProps,\n                ref: forwardedRef,\n                style: {\n                  ...contentProps.style,\n                  // re-namespace exposed content custom properties\n                  ...{\n                    \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n                    \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n                    \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n                    \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n                    \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n                  }\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...closeProps } = props;\n    const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopover, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopePopover);\n    return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n  Anchor2 as Anchor,\n  Arrow2 as Arrow,\n  Close,\n  Content2 as Content,\n  Popover,\n  PopoverAnchor,\n  PopoverArrow,\n  PopoverClose,\n  PopoverContent,\n  PopoverPortal,\n  PopoverTrigger,\n  Portal,\n  Root2 as Root,\n  Trigger,\n  createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '../../lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\ntype PopoverContentProps = React.ComponentPropsWithoutRef<\n  typeof PopoverPrimitive.Content\n> & {\n  portalContainer?: HTMLElement | null;\n};\n\nconst PopoverContent = React.forwardRef<\n  React.ElementRef<typeof PopoverPrimitive.Content>,\n  PopoverContentProps\n>(\n  (\n    { className, align = 'start', sideOffset = 4, portalContainer, style, onWheel, ...props },\n    ref\n  ) => {\n    const handleWheel = portalContainer\n      ? (e: React.WheelEvent<HTMLDivElement>) => {\n          let el: HTMLElement | null = e.target as HTMLElement;\n          while (el && el !== e.currentTarget) {\n            const { overflowY } = window.getComputedStyle(el);\n            if (overflowY === 'auto' || overflowY === 'scroll') {\n              if (el.scrollHeight > el.clientHeight) {\n                const atTop = el.scrollTop <= 0;\n                const atBottom = el.scrollTop + el.clientHeight >= el.scrollHeight;\n                if ((e.deltaY < 0 && !atTop) || (e.deltaY > 0 && !atBottom)) {\n                  e.preventDefault();\n                  el.scrollTop += e.deltaY;\n                }\n                return;\n              }\n            }\n            el = el.parentElement;\n          }\n          onWheel?.(e);\n        }\n      : onWheel;\n\n    return (\n      <PopoverPrimitive.Portal container={portalContainer ?? undefined}>\n        <PopoverPrimitive.Content\n          ref={ref}\n          align={align}\n          sideOffset={sideOffset}\n          onWheel={handleWheel}\n          className={cn(\n            'z-50 w-60 rounded-[8px] bg-white p-1 text-[#121111] shadow-[0px_6px_16px_rgba(0,0,0,0.06)] outline-none',\n            'data-[state=open]:animate-in data-[state=closed]:animate-out',\n            'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n            'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n            'data-[side=bottom]:slide-in-from-top-2',\n            'data-[side=left]:slide-in-from-right-2',\n            'data-[side=right]:slide-in-from-left-2',\n            'data-[side=top]:slide-in-from-bottom-2',\n            className\n          )}\n          style={{\n            transformOrigin: 'var(--radix-popover-content-transform-origin)',\n            ...style,\n          }}\n          {...props}\n        />\n      </PopoverPrimitive.Portal>\n    );\n  }\n);\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n  /^([A-Z])|[\\s-_]+(\\w)/g,\n  (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n  const camelCase = toCamelCase(string);\n  return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n  return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n  for (const prop in props) {\n    if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n      return true;\n    }\n  }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  width: 24,\n  height: 24,\n  viewBox: \"0 0 24 24\",\n  fill: \"none\",\n  stroke: \"currentColor\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n  ({\n    color = \"currentColor\",\n    size = 24,\n    strokeWidth = 2,\n    absoluteStrokeWidth,\n    className = \"\",\n    children,\n    iconNode,\n    ...rest\n  }, ref) => createElement(\n    \"svg\",\n    {\n      ref,\n      ...defaultAttributes,\n      width: size,\n      height: size,\n      stroke: color,\n      strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n      className: mergeClasses(\"lucide\", className),\n      ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n      ...rest\n    },\n    [\n      ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n      ...Array.isArray(children) ? children : [children]\n    ]\n  )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n  const Component = forwardRef(\n    ({ className, ...props }, ref) => createElement(Icon, {\n      ref,\n      iconNode,\n      className: mergeClasses(\n        `lucide-${toKebabCase(toPascalCase(iconName))}`,\n        `lucide-${iconName}`,\n        className\n      ),\n      ...props\n    })\n  );\n  Component.displayName = toPascalCase(iconName);\n  return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]];\nconst ChevronLeft = createLucideIcon(\"chevron-left\", __iconNode);\n\nexport { __iconNode, ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"m11 17-5-5 5-5\", key: \"13zhaf\" }],\n  [\"path\", { d: \"m18 17-5-5 5-5\", key: \"h8a8et\" }]\n];\nconst ChevronsLeft = createLucideIcon(\"chevrons-left\", __iconNode);\n\nexport { __iconNode, ChevronsLeft as default };\n//# sourceMappingURL=chevrons-left.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n  [\"path\", { d: \"m6 17 5-5-5-5\", key: \"xnjwq\" }],\n  [\"path\", { d: \"m13 17 5-5-5-5\", key: \"17xmmf\" }]\n];\nconst ChevronsRight = createLucideIcon(\"chevrons-right\", __iconNode);\n\nexport { __iconNode, ChevronsRight as default };\n//# sourceMappingURL=chevrons-right.js.map\n","/**\n * @license lucide-react v0.554.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","import { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n  return (\n    // @ts-ignore\n    <Loader2Icon\n      role=\"status\"\n      aria-label=\"Loading\"\n      className={cn(\"size-4 animate-spin\", className)}\n      {...props}\n    />\n  );\n}\n\nexport { Spinner };\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n  return /* @__PURE__ */ jsx(\n    Primitive.label,\n    {\n      ...props,\n      ref: forwardedRef,\n      onMouseDown: (event) => {\n        const target = event.target;\n        if (target.closest(\"button, input, select, textarea\")) return;\n        props.onMouseDown?.(event);\n        if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n      }\n    }\n  );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n  Label,\n  Root\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '../../lib/utils';\n\ninterface LabelProps\n  extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> {\n  required?: boolean;\n}\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  LabelProps\n>(({ className, children, required, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(\n      'text-[14px] font-bold text-[#030303] leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:text-foreground',\n      className\n    )}\n    {...props}\n  >\n    {required && <span className=\"text-[#ff5631]\">*</span>}\n    {children}\n  </LabelPrimitive.Root>\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\nexport type { LabelProps };\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Input = React.forwardRef<\n  HTMLInputElement,\n  React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, type, ...props }, ref) => (\n  <input\n    type={type}\n    className={cn(\n      'h-[34px] px-[10px] py-[7px] rounded-[4px]',\n      'bg-white border border-[#e0e0e0]',\n      'text-[14px] text-[#030303] placeholder:text-[#999999]',\n      'focus:outline-none focus:border-[#0265ff] focus:ring-0',\n      'disabled:bg-[#eff0f6] disabled:cursor-not-allowed disabled:opacity-100',\n      'dark:bg-background dark:border-border dark:text-foreground dark:placeholder:text-muted-foreground',\n      'dark:disabled:bg-[oklch(0.279_0.041_260.031)]',\n      'w-full',\n      className\n    )}\n    ref={ref}\n    {...props}\n  />\n));\nInput.displayName = 'Input';\n\nexport { Input };\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Textarea = React.forwardRef<\n  HTMLTextAreaElement,\n  React.TextareaHTMLAttributes<HTMLTextAreaElement>\n>(({ className, ...props }, ref) => (\n  <textarea\n    className={cn(\n      'h-[120px] p-[10px] rounded-[4px]',\n      'bg-white border border-[#e0e0e0]',\n      'text-[14px] text-[#030303] placeholder:text-[#999999]',\n      'focus:outline-none focus:border-[#0265ff] focus:ring-0',\n      'disabled:bg-[#eff0f6] disabled:cursor-not-allowed disabled:opacity-100',\n      'dark:bg-background dark:border-border dark:text-foreground dark:placeholder:text-muted-foreground',\n      'dark:disabled:bg-[oklch(0.279_0.041_260.031)]',\n      'resize-none',\n      'w-full',\n      className\n    )}\n    ref={ref}\n    {...props}\n  />\n));\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","// src/number.ts\nfunction clamp(value, [min, max]) {\n  return Math.min(max, Math.max(min, value));\n}\nexport {\n  clamp\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport * as React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n    PROVIDER_NAME,\n    { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n  );\n  const CollectionProvider = (props) => {\n    const { scope, children } = props;\n    const ref = React.useRef(null);\n    const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n    return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n  };\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n  const CollectionSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n      return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n  const CollectionItemSlot = React.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React.useRef(null);\n      const composedRefs = useComposedRefs(forwardedRef, ref);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n      React.useEffect(() => {\n        context.itemMap.set(ref, { ref, ...itemData });\n        return () => void context.itemMap.delete(ref);\n      });\n      return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useCollection(scope) {\n    const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n    const getItems = React.useCallback(() => {\n      const collectionNode = context.collectionRef.current;\n      if (!collectionNode) return [];\n      const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n      const items = Array.from(context.itemMap.values());\n      const orderedItems = items.sort(\n        (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n      );\n      return orderedItems;\n    }, [context.collectionRef, context.itemMap]);\n    return getItems;\n  }\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    useCollection,\n    createCollectionScope\n  ];\n}\n\n// src/collection.tsx\nimport * as React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n  #keys;\n  constructor(entries) {\n    super(entries);\n    this.#keys = [...super.keys()];\n    __instanciated.set(this, true);\n  }\n  set(key, value) {\n    if (__instanciated.get(this)) {\n      if (this.has(key)) {\n        this.#keys[this.#keys.indexOf(key)] = key;\n      } else {\n        this.#keys.push(key);\n      }\n    }\n    super.set(key, value);\n    return this;\n  }\n  insert(index, key, value) {\n    const has = this.has(key);\n    const length = this.#keys.length;\n    const relativeIndex = toSafeInteger(index);\n    let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n    const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n    if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n      this.set(key, value);\n      return this;\n    }\n    const size = this.size + (has ? 0 : 1);\n    if (relativeIndex < 0) {\n      actualIndex++;\n    }\n    const keys = [...this.#keys];\n    let nextValue;\n    let shouldSkip = false;\n    for (let i = actualIndex; i < size; i++) {\n      if (actualIndex === i) {\n        let nextKey = keys[i];\n        if (keys[i] === key) {\n          nextKey = keys[i + 1];\n        }\n        if (has) {\n          this.delete(key);\n        }\n        nextValue = this.get(nextKey);\n        this.set(key, value);\n      } else {\n        if (!shouldSkip && keys[i - 1] === key) {\n          shouldSkip = true;\n        }\n        const currentKey = keys[shouldSkip ? i : i - 1];\n        const currentValue = nextValue;\n        nextValue = this.get(currentKey);\n        this.delete(currentKey);\n        this.set(currentKey, currentValue);\n      }\n    }\n    return this;\n  }\n  with(index, key, value) {\n    const copy = new _OrderedDict(this);\n    copy.insert(index, key, value);\n    return copy;\n  }\n  before(key) {\n    const index = this.#keys.indexOf(key) - 1;\n    if (index < 0) {\n      return void 0;\n    }\n    return this.entryAt(index);\n  }\n  /**\n   * Sets a new key-value pair at the position before the given key.\n   */\n  setBefore(key, newKey, value) {\n    const index = this.#keys.indexOf(key);\n    if (index === -1) {\n      return this;\n    }\n    return this.insert(index, newKey, value);\n  }\n  after(key) {\n    let index = this.#keys.indexOf(key);\n    index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n    if (index === -1) {\n      return void 0;\n    }\n    return this.entryAt(index);\n  }\n  /**\n   * Sets a new key-value pair at the position after the given key.\n   */\n  setAfter(key, newKey, value) {\n    const index = this.#keys.indexOf(key);\n    if (index === -1) {\n      return this;\n    }\n    return this.insert(index + 1, newKey, value);\n  }\n  first() {\n    return this.entryAt(0);\n  }\n  last() {\n    return this.entryAt(-1);\n  }\n  clear() {\n    this.#keys = [];\n    return super.clear();\n  }\n  delete(key) {\n    const deleted = super.delete(key);\n    if (deleted) {\n      this.#keys.splice(this.#keys.indexOf(key), 1);\n    }\n    return deleted;\n  }\n  deleteAt(index) {\n    const key = this.keyAt(index);\n    if (key !== void 0) {\n      return this.delete(key);\n    }\n    return false;\n  }\n  at(index) {\n    const key = at(this.#keys, index);\n    if (key !== void 0) {\n      return this.get(key);\n    }\n  }\n  entryAt(index) {\n    const key = at(this.#keys, index);\n    if (key !== void 0) {\n      return [key, this.get(key)];\n    }\n  }\n  indexOf(key) {\n    return this.#keys.indexOf(key);\n  }\n  keyAt(index) {\n    return at(this.#keys, index);\n  }\n  from(key, offset) {\n    const index = this.indexOf(key);\n    if (index === -1) {\n      return void 0;\n    }\n    let dest = index + offset;\n    if (dest < 0) dest = 0;\n    if (dest >= this.size) dest = this.size - 1;\n    return this.at(dest);\n  }\n  keyFrom(key, offset) {\n    const index = this.indexOf(key);\n    if (index === -1) {\n      return void 0;\n    }\n    let dest = index + offset;\n    if (dest < 0) dest = 0;\n    if (dest >= this.size) dest = this.size - 1;\n    return this.keyAt(dest);\n  }\n  find(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return entry;\n      }\n      index++;\n    }\n    return void 0;\n  }\n  findIndex(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return index;\n      }\n      index++;\n    }\n    return -1;\n  }\n  filter(predicate, thisArg) {\n    const entries = [];\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        entries.push(entry);\n      }\n      index++;\n    }\n    return new _OrderedDict(entries);\n  }\n  map(callbackfn, thisArg) {\n    const entries = [];\n    let index = 0;\n    for (const entry of this) {\n      entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n      index++;\n    }\n    return new _OrderedDict(entries);\n  }\n  reduce(...args) {\n    const [callbackfn, initialValue] = args;\n    let index = 0;\n    let accumulator = initialValue ?? this.at(0);\n    for (const entry of this) {\n      if (index === 0 && args.length === 1) {\n        accumulator = entry;\n      } else {\n        accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n      }\n      index++;\n    }\n    return accumulator;\n  }\n  reduceRight(...args) {\n    const [callbackfn, initialValue] = args;\n    let accumulator = initialValue ?? this.at(-1);\n    for (let index = this.size - 1; index >= 0; index--) {\n      const entry = this.at(index);\n      if (index === this.size - 1 && args.length === 1) {\n        accumulator = entry;\n      } else {\n        accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n      }\n    }\n    return accumulator;\n  }\n  toSorted(compareFn) {\n    const entries = [...this.entries()].sort(compareFn);\n    return new _OrderedDict(entries);\n  }\n  toReversed() {\n    const reversed = new _OrderedDict();\n    for (let index = this.size - 1; index >= 0; index--) {\n      const key = this.keyAt(index);\n      const element = this.get(key);\n      reversed.set(key, element);\n    }\n    return reversed;\n  }\n  toSpliced(...args) {\n    const entries = [...this.entries()];\n    entries.splice(...args);\n    return new _OrderedDict(entries);\n  }\n  slice(start, end) {\n    const result = new _OrderedDict();\n    let stop = this.size - 1;\n    if (start === void 0) {\n      return result;\n    }\n    if (start < 0) {\n      start = start + this.size;\n    }\n    if (end !== void 0 && end > 0) {\n      stop = end - 1;\n    }\n    for (let index = start; index <= stop; index++) {\n      const key = this.keyAt(index);\n      const element = this.get(key);\n      result.set(key, element);\n    }\n    return result;\n  }\n  every(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return false;\n      }\n      index++;\n    }\n    return true;\n  }\n  some(predicate, thisArg) {\n    let index = 0;\n    for (const entry of this) {\n      if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n        return true;\n      }\n      index++;\n    }\n    return false;\n  }\n};\nfunction at(array, index) {\n  if (\"at\" in Array.prototype) {\n    return Array.prototype.at.call(array, index);\n  }\n  const actualIndex = toSafeIndex(array, index);\n  return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n  const length = array.length;\n  const relativeIndex = toSafeInteger(index);\n  const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n  return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n  return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n  const PROVIDER_NAME = name + \"CollectionProvider\";\n  const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n  const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n    PROVIDER_NAME,\n    {\n      collectionElement: null,\n      collectionRef: { current: null },\n      collectionRefObject: { current: null },\n      itemMap: new OrderedDict(),\n      setItemMap: () => void 0\n    }\n  );\n  const CollectionProvider = ({ state, ...props }) => {\n    return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n  };\n  CollectionProvider.displayName = PROVIDER_NAME;\n  const CollectionInit = (props) => {\n    const state = useInitCollection();\n    return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n  };\n  CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n  const CollectionProviderImpl = (props) => {\n    const { scope, children, state } = props;\n    const ref = React2.useRef(null);\n    const [collectionElement, setCollectionElement] = React2.useState(\n      null\n    );\n    const composeRefs = useComposedRefs2(ref, setCollectionElement);\n    const [itemMap, setItemMap] = state;\n    React2.useEffect(() => {\n      if (!collectionElement) return;\n      const observer = getChildListObserver(() => {\n      });\n      observer.observe(collectionElement, {\n        childList: true,\n        subtree: true\n      });\n      return () => {\n        observer.disconnect();\n      };\n    }, [collectionElement]);\n    return /* @__PURE__ */ jsx2(\n      CollectionContextProvider,\n      {\n        scope,\n        itemMap,\n        setItemMap,\n        collectionRef: composeRefs,\n        collectionRefObject: ref,\n        collectionElement,\n        children\n      }\n    );\n  };\n  CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n  const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n  const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n  const CollectionSlot = React2.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n      return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n    }\n  );\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n  const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n  const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n  const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n  const CollectionItemSlot = React2.forwardRef(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React2.useRef(null);\n      const [element, setElement] = React2.useState(null);\n      const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n      const { setItemMap } = context;\n      const itemDataRef = React2.useRef(itemData);\n      if (!shallowEqual(itemDataRef.current, itemData)) {\n        itemDataRef.current = itemData;\n      }\n      const memoizedItemData = itemDataRef.current;\n      React2.useEffect(() => {\n        const itemData2 = memoizedItemData;\n        setItemMap((map) => {\n          if (!element) {\n            return map;\n          }\n          if (!map.has(element)) {\n            map.set(element, { ...itemData2, element });\n            return map.toSorted(sortByDocumentPosition);\n          }\n          return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n        });\n        return () => {\n          setItemMap((map) => {\n            if (!element || !map.has(element)) {\n              return map;\n            }\n            map.delete(element);\n            return new OrderedDict(map);\n          });\n        };\n      }, [element, memoizedItemData, setItemMap]);\n      return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n    }\n  );\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n  function useInitCollection() {\n    return React2.useState(new OrderedDict());\n  }\n  function useCollection(scope) {\n    const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n    return itemMap;\n  }\n  const functions = {\n    createCollectionScope,\n    useCollection,\n    useInitCollection\n  };\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    functions\n  ];\n}\nfunction shallowEqual(a, b) {\n  if (a === b) return true;\n  if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n  if (a == null || b == null) return false;\n  const keysA = Object.keys(a);\n  const keysB = Object.keys(b);\n  if (keysA.length !== keysB.length) return false;\n  for (const key of keysA) {\n    if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n    if (a[key] !== b[key]) return false;\n  }\n  return true;\n}\nfunction isElementPreceding(a, b) {\n  return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n  return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n  const observer = new MutationObserver((mutationsList) => {\n    for (const mutation of mutationsList) {\n      if (mutation.type === \"childList\") {\n        callback();\n        return;\n      }\n    }\n  });\n  return observer;\n}\nexport {\n  createCollection,\n  createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n  const { dir, children } = props;\n  return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n  const globalDir = React.useContext(DirectionContext);\n  return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n  DirectionProvider,\n  Provider,\n  useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n  const ref = React.useRef({ value, previous: value });\n  return React.useMemo(() => {\n    if (ref.current.value !== value) {\n      ref.current.previous = ref.current.value;\n      ref.current.value = value;\n    }\n    return ref.current.previous;\n  }, [value]);\n}\nexport {\n  usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment as Fragment2, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n  createCollectionScope,\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProviderImpl, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar PROVIDER_NAME = \"SelectProvider\";\nfunction SelectProvider(props) {\n  const {\n    __scopeSelect,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    value: valueProp,\n    defaultValue,\n    onValueChange,\n    dir,\n    name,\n    autoComplete,\n    disabled,\n    required,\n    form,\n    // @ts-expect-error internal render prop used by `Select` to compose its default parts\n    internal_do_not_use_render\n  } = props;\n  const popperScope = usePopperScope(__scopeSelect);\n  const [trigger, setTrigger] = React.useState(null);\n  const [valueNode, setValueNode] = React.useState(null);\n  const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n  const direction = useDirection(dir);\n  const [open, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen ?? false,\n    onChange: onOpenChange,\n    caller: SELECT_NAME\n  });\n  const [value, setValue] = useControllableState({\n    prop: valueProp,\n    defaultProp: defaultValue,\n    onChange: onValueChange,\n    caller: SELECT_NAME\n  });\n  const triggerPointerDownPosRef = React.useRef(null);\n  const isFormControl = trigger ? !!form || !!trigger.closest(\"form\") : true;\n  const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n  const contentId = useId();\n  const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n  const handleNativeOptionAdd = React.useCallback((option) => {\n    setNativeOptionsSet((prev) => new Set(prev).add(option));\n  }, []);\n  const handleNativeOptionRemove = React.useCallback((option) => {\n    setNativeOptionsSet((prev) => {\n      const optionsSet = new Set(prev);\n      optionsSet.delete(option);\n      return optionsSet;\n    });\n  }, []);\n  const context = {\n    required,\n    trigger,\n    onTriggerChange: setTrigger,\n    valueNode,\n    onValueNodeChange: setValueNode,\n    valueNodeHasChildren,\n    onValueNodeHasChildrenChange: setValueNodeHasChildren,\n    contentId,\n    value,\n    onValueChange: setValue,\n    open,\n    onOpenChange: setOpen,\n    dir: direction,\n    triggerPointerDownPosRef,\n    disabled,\n    name,\n    autoComplete,\n    form,\n    nativeOptions: nativeOptionsSet,\n    nativeSelectKey,\n    isFormControl\n  };\n  return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(SelectProviderImpl, { scope: __scopeSelect, ...context, children: /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n    SelectNativeOptionsProvider,\n    {\n      scope: __scopeSelect,\n      onNativeOptionAdd: handleNativeOptionAdd,\n      onNativeOptionRemove: handleNativeOptionRemove,\n      children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n    }\n  ) }) }) });\n}\nSelectProvider.displayName = PROVIDER_NAME;\nvar Select = (props) => {\n  const { __scopeSelect, children, ...providerProps } = props;\n  return /* @__PURE__ */ jsx(\n    SelectProvider,\n    {\n      __scopeSelect,\n      ...providerProps,\n      internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment2, { children: [\n        children,\n        isFormControl ? /* @__PURE__ */ jsx(\n          SelectBubbleInput,\n          {\n            __scopeSelect\n          }\n        ) : null\n      ] })\n    }\n  );\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, disabled = false, ...triggerProps } = props;\n    const popperScope = usePopperScope(__scopeSelect);\n    const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n    const isDisabled = context.disabled || disabled;\n    const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n    const getItems = useCollection(__scopeSelect);\n    const pointerTypeRef = React.useRef(\"touch\");\n    const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n      const enabledItems = getItems().filter((item) => !item.disabled);\n      const currentItem = enabledItems.find((item) => item.value === context.value);\n      const nextItem = findNextItem(enabledItems, search, currentItem);\n      if (nextItem !== void 0) {\n        context.onValueChange(nextItem.value);\n      }\n    });\n    const handleOpen = (pointerEvent) => {\n      if (!isDisabled) {\n        context.onOpenChange(true);\n        resetTypeahead();\n      }\n      if (pointerEvent) {\n        context.triggerPointerDownPosRef.current = {\n          x: Math.round(pointerEvent.pageX),\n          y: Math.round(pointerEvent.pageY)\n        };\n      }\n    };\n    return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"aria-expanded\": context.open,\n        \"aria-required\": context.required,\n        \"aria-autocomplete\": \"none\",\n        dir: context.dir,\n        \"data-state\": context.open ? \"open\" : \"closed\",\n        disabled: isDisabled,\n        \"data-disabled\": isDisabled ? \"\" : void 0,\n        \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n        ...triggerProps,\n        ref: composedRefs,\n        onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n          event.currentTarget.focus();\n          if (pointerTypeRef.current !== \"mouse\") {\n            handleOpen(event);\n          }\n        }),\n        onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n          pointerTypeRef.current = event.pointerType;\n          const target = event.target;\n          if (target.hasPointerCapture(event.pointerId)) {\n            target.releasePointerCapture(event.pointerId);\n          }\n          if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n            handleOpen(event);\n            event.preventDefault();\n          }\n        }),\n        onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n          const isTypingAhead = searchRef.current !== \"\";\n          const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n          if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n          if (isTypingAhead && event.key === \" \") return;\n          if (OPEN_KEYS.includes(event.key)) {\n            handleOpen();\n            event.preventDefault();\n          }\n        })\n      }\n    ) });\n  }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n    const context = useSelectContext(VALUE_NAME, __scopeSelect);\n    const { onValueNodeHasChildrenChange } = context;\n    const hasChildren = children !== void 0;\n    const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n    useLayoutEffect(() => {\n      onValueNodeHasChildrenChange(hasChildren);\n    }, [onValueNodeHasChildrenChange, hasChildren]);\n    const showPlaceholder = shouldShowPlaceholder(context.value);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        ...valueProps,\n        asChild: showPlaceholder ? false : valueProps.asChild,\n        ref: composedRefs,\n        style: { pointerEvents: \"none\" },\n        children: /* @__PURE__ */ jsx(React.Fragment, { children: showPlaceholder ? placeholder : children }, showPlaceholder ? \"placeholder\" : \"value\")\n      }\n    );\n  }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, children, ...iconProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n  }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar [PortalProvider, usePortalContext] = createSelectContext(PORTAL_NAME, {\n  forceMount: void 0\n});\nvar SelectPortal = (props) => {\n  const { __scopeSelect, forceMount, ...portalProps } = props;\n  return /* @__PURE__ */ jsx(PortalProvider, { scope: props.__scopeSelect, forceMount, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...portalProps }) });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeSelect);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n    const [fragment, setFragment] = React.useState();\n    useLayoutEffect(() => {\n      setFragment(new DocumentFragment());\n    }, []);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => present ? /* @__PURE__ */ jsx(SelectContentImpl, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(SelectContentFragment, { ...contentProps, fragment }) });\n  }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar SelectContentFragment = React.forwardRef((props, forwardedRef) => {\n  const { __scopeSelect, children, fragment } = props;\n  if (!fragment) return null;\n  return ReactDOM.createPortal(\n    /* @__PURE__ */ jsx(SelectContentProvider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { ref: forwardedRef, children }) }) }),\n    fragment\n  );\n});\nSelectContentFragment.displayName = \"SelectContentFragment\";\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect } = props;\n    const {\n      position = \"item-aligned\",\n      onCloseAutoFocus,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      //\n      // PopperContent props\n      side,\n      sideOffset,\n      align,\n      alignOffset,\n      arrowPadding,\n      collisionBoundary,\n      collisionPadding,\n      sticky,\n      hideWhenDetached,\n      avoidCollisions,\n      //\n      ...contentProps\n    } = props;\n    const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n    const [content, setContent] = React.useState(null);\n    const [viewport, setViewport] = React.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [selectedItem, setSelectedItem] = React.useState(null);\n    const [selectedItemText, setSelectedItemText] = React.useState(\n      null\n    );\n    const getItems = useCollection(__scopeSelect);\n    const [isPositioned, setIsPositioned] = React.useState(false);\n    const firstValidItemFoundRef = React.useRef(false);\n    React.useEffect(() => {\n      if (content) return hideOthers(content);\n    }, [content]);\n    useFocusGuards();\n    const focusFirst = React.useCallback(\n      (candidates) => {\n        const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n        const [lastItem] = restItems.slice(-1);\n        const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n        for (const candidate of candidates) {\n          if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n          candidate?.scrollIntoView({ block: \"nearest\" });\n          if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n          if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n          candidate?.focus();\n          if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n        }\n      },\n      [getItems, viewport]\n    );\n    const focusSelectedItem = React.useCallback(\n      () => focusFirst([selectedItem, content]),\n      [focusFirst, selectedItem, content]\n    );\n    React.useEffect(() => {\n      if (isPositioned) {\n        focusSelectedItem();\n      }\n    }, [isPositioned, focusSelectedItem]);\n    const { onOpenChange, triggerPointerDownPosRef } = context;\n    React.useEffect(() => {\n      if (content) {\n        let pointerMoveDelta = { x: 0, y: 0 };\n        const handlePointerMove = (event) => {\n          pointerMoveDelta = {\n            x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n            y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n          };\n        };\n        const handlePointerUp = (event) => {\n          if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n            event.preventDefault();\n          } else {\n            if (!event.composedPath().includes(content)) {\n              onOpenChange(false);\n            }\n          }\n          document.removeEventListener(\"pointermove\", handlePointerMove);\n          triggerPointerDownPosRef.current = null;\n        };\n        if (triggerPointerDownPosRef.current !== null) {\n          document.addEventListener(\"pointermove\", handlePointerMove);\n          document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n        }\n        return () => {\n          document.removeEventListener(\"pointermove\", handlePointerMove);\n          document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n        };\n      }\n    }, [content, onOpenChange, triggerPointerDownPosRef]);\n    React.useEffect(() => {\n      const close = () => onOpenChange(false);\n      window.addEventListener(\"blur\", close);\n      window.addEventListener(\"resize\", close);\n      return () => {\n        window.removeEventListener(\"blur\", close);\n        window.removeEventListener(\"resize\", close);\n      };\n    }, [onOpenChange]);\n    const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n      const enabledItems = getItems().filter((item) => !item.disabled);\n      const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n      const nextItem = findNextItem(enabledItems, search, currentItem);\n      if (nextItem) {\n        setTimeout(() => nextItem.ref.current.focus());\n      }\n    });\n    const itemRefCallback = React.useCallback(\n      (node, value, disabled) => {\n        const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n        const isSelectedItem = context.value !== void 0 && context.value === value;\n        if (isSelectedItem || isFirstValidItem) {\n          setSelectedItem(node);\n          if (isFirstValidItem) firstValidItemFoundRef.current = true;\n        }\n      },\n      [context.value]\n    );\n    const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n    const itemTextRefCallback = React.useCallback(\n      (node, value, disabled) => {\n        const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n        const isSelectedItem = context.value !== void 0 && context.value === value;\n        if (isSelectedItem || isFirstValidItem) {\n          setSelectedItemText(node);\n        }\n      },\n      [context.value]\n    );\n    const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n    const popperContentProps = SelectPosition === SelectPopperPosition ? {\n      side,\n      sideOffset,\n      align,\n      alignOffset,\n      arrowPadding,\n      collisionBoundary,\n      collisionPadding,\n      sticky,\n      hideWhenDetached,\n      avoidCollisions\n    } : {};\n    return /* @__PURE__ */ jsx(\n      SelectContentProvider,\n      {\n        scope: __scopeSelect,\n        content,\n        viewport,\n        onViewportChange: setViewport,\n        itemRefCallback,\n        selectedItem,\n        onItemLeave: handleItemLeave,\n        itemTextRefCallback,\n        focusSelectedItem,\n        selectedItemText,\n        position,\n        isPositioned,\n        searchRef,\n        children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n          FocusScope,\n          {\n            asChild: true,\n            trapped: context.open,\n            onMountAutoFocus: (event) => {\n              event.preventDefault();\n            },\n            onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n              context.trigger?.focus({ preventScroll: true });\n              event.preventDefault();\n            }),\n            children: /* @__PURE__ */ jsx(\n              DismissableLayer,\n              {\n                asChild: true,\n                disableOutsidePointerEvents: true,\n                onEscapeKeyDown,\n                onPointerDownOutside,\n                onFocusOutside: (event) => event.preventDefault(),\n                onDismiss: () => context.onOpenChange(false),\n                children: /* @__PURE__ */ jsx(\n                  SelectPosition,\n                  {\n                    role: \"listbox\",\n                    id: context.contentId,\n                    \"data-state\": context.open ? \"open\" : \"closed\",\n                    dir: context.dir,\n                    onContextMenu: (event) => event.preventDefault(),\n                    ...contentProps,\n                    ...popperContentProps,\n                    onPlaced: () => setIsPositioned(true),\n                    ref: composedRefs,\n                    style: {\n                      // flex layout so we can place the scroll buttons properly\n                      display: \"flex\",\n                      flexDirection: \"column\",\n                      // reset the outline by default as the content MAY get focused\n                      outline: \"none\",\n                      ...contentProps.style\n                    },\n                    onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n                      const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n                      if (event.key === \"Tab\") event.preventDefault();\n                      if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n                      if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n                        const items = getItems().filter((item) => !item.disabled);\n                        let candidateNodes = items.map((item) => item.ref.current);\n                        if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n                          candidateNodes = candidateNodes.slice().reverse();\n                        }\n                        if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n                          const currentElement = event.target;\n                          const currentIndex = candidateNodes.indexOf(currentElement);\n                          candidateNodes = candidateNodes.slice(currentIndex + 1);\n                        }\n                        setTimeout(() => focusFirst(candidateNodes));\n                        event.preventDefault();\n                      }\n                    })\n                  }\n                )\n              }\n            )\n          }\n        ) })\n      }\n    );\n  }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n  const { __scopeSelect, onPlaced, ...popperProps } = props;\n  const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n  const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n  const [contentWrapper, setContentWrapper] = React.useState(null);\n  const [content, setContent] = React.useState(null);\n  const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n  const getItems = useCollection(__scopeSelect);\n  const shouldExpandOnScrollRef = React.useRef(false);\n  const shouldRepositionRef = React.useRef(true);\n  const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n  const position = React.useCallback(() => {\n    if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n      const triggerRect = context.trigger.getBoundingClientRect();\n      const contentRect = content.getBoundingClientRect();\n      const valueNodeRect = context.valueNode.getBoundingClientRect();\n      const itemTextRect = selectedItemText.getBoundingClientRect();\n      if (context.dir !== \"rtl\") {\n        const itemTextOffset = itemTextRect.left - contentRect.left;\n        const left = valueNodeRect.left - itemTextOffset;\n        const leftDelta = triggerRect.left - left;\n        const minContentWidth = triggerRect.width + leftDelta;\n        const contentWidth = Math.max(minContentWidth, contentRect.width);\n        const rightEdge = window.innerWidth - CONTENT_MARGIN;\n        const clampedLeft = clamp(left, [\n          CONTENT_MARGIN,\n          // Prevents the content from going off the starting edge of the\n          // viewport. It may still go off the ending edge, but this can be\n          // controlled by the user since they may want to manage overflow in a\n          // specific way.\n          // https://github.com/radix-ui/primitives/issues/2049\n          Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n        ]);\n        contentWrapper.style.minWidth = minContentWidth + \"px\";\n        contentWrapper.style.left = clampedLeft + \"px\";\n      } else {\n        const itemTextOffset = contentRect.right - itemTextRect.right;\n        const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n        const rightDelta = window.innerWidth - triggerRect.right - right;\n        const minContentWidth = triggerRect.width + rightDelta;\n        const contentWidth = Math.max(minContentWidth, contentRect.width);\n        const leftEdge = window.innerWidth - CONTENT_MARGIN;\n        const clampedRight = clamp(right, [\n          CONTENT_MARGIN,\n          Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n        ]);\n        contentWrapper.style.minWidth = minContentWidth + \"px\";\n        contentWrapper.style.right = clampedRight + \"px\";\n      }\n      const items = getItems();\n      const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n      const itemsHeight = viewport.scrollHeight;\n      const contentStyles = window.getComputedStyle(content);\n      const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n      const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n      const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n      const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n      const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n      const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n      const viewportStyles = window.getComputedStyle(viewport);\n      const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n      const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n      const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n      const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n      const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n      const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n      const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n      const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n      const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n      if (willAlignWithoutTopOverflow) {\n        const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n        contentWrapper.style.bottom = \"0px\";\n        const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n        const clampedTriggerMiddleToBottomEdge = Math.max(\n          triggerMiddleToBottomEdge,\n          selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n          (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n        );\n        const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n        contentWrapper.style.height = height + \"px\";\n      } else {\n        const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n        contentWrapper.style.top = \"0px\";\n        const clampedTopEdgeToTriggerMiddle = Math.max(\n          topEdgeToTriggerMiddle,\n          contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n          (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n        );\n        const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n        contentWrapper.style.height = height + \"px\";\n        viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n      }\n      contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n      contentWrapper.style.minHeight = minContentHeight + \"px\";\n      contentWrapper.style.maxHeight = availableHeight + \"px\";\n      onPlaced?.();\n      requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n    }\n  }, [\n    getItems,\n    context.trigger,\n    context.valueNode,\n    contentWrapper,\n    content,\n    viewport,\n    selectedItem,\n    selectedItemText,\n    context.dir,\n    onPlaced\n  ]);\n  useLayoutEffect(() => position(), [position]);\n  const [contentZIndex, setContentZIndex] = React.useState();\n  useLayoutEffect(() => {\n    if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n  }, [content]);\n  const handleScrollButtonChange = React.useCallback(\n    (node) => {\n      if (node && shouldRepositionRef.current === true) {\n        position();\n        focusSelectedItem?.();\n        shouldRepositionRef.current = false;\n      }\n    },\n    [position, focusSelectedItem]\n  );\n  return /* @__PURE__ */ jsx(\n    SelectViewportProvider,\n    {\n      scope: __scopeSelect,\n      contentWrapper,\n      shouldExpandOnScrollRef,\n      onScrollButtonChange: handleScrollButtonChange,\n      children: /* @__PURE__ */ jsx(\n        \"div\",\n        {\n          ref: setContentWrapper,\n          style: {\n            display: \"flex\",\n            flexDirection: \"column\",\n            position: \"fixed\",\n            zIndex: contentZIndex\n          },\n          children: /* @__PURE__ */ jsx(\n            Primitive.div,\n            {\n              ...popperProps,\n              ref: composedRefs,\n              style: {\n                // When we get the height of the content, it includes borders. If we were to set\n                // the height without having `boxSizing: 'border-box'` it would be too big.\n                boxSizing: \"border-box\",\n                // We need to ensure the content doesn't get taller than the wrapper\n                maxHeight: \"100%\",\n                ...popperProps.style\n              }\n            }\n          )\n        }\n      )\n    }\n  );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeSelect,\n    align = \"start\",\n    collisionPadding = CONTENT_MARGIN,\n    ...popperProps\n  } = props;\n  const popperScope = usePopperScope(__scopeSelect);\n  return /* @__PURE__ */ jsx(\n    PopperPrimitive.Content,\n    {\n      ...popperScope,\n      ...popperProps,\n      ref: forwardedRef,\n      align,\n      collisionPadding,\n      style: {\n        // Ensure border-box for floating-ui calculations\n        boxSizing: \"border-box\",\n        ...popperProps.style,\n        // re-namespace exposed content custom properties\n        ...{\n          \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n          \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n          \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n          \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n          \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n        }\n      }\n    }\n  );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, nonce, ...viewportProps } = props;\n    const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n    const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n    const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n    const prevScrollTopRef = React.useRef(0);\n    return /* @__PURE__ */ jsxs(Fragment2, { children: [\n      /* @__PURE__ */ jsx(\n        \"style\",\n        {\n          dangerouslySetInnerHTML: {\n            __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n          },\n          nonce\n        }\n      ),\n      /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          \"data-radix-select-viewport\": \"\",\n          role: \"presentation\",\n          ...viewportProps,\n          ref: composedRefs,\n          style: {\n            // we use position: 'relative' here on the `viewport` so that when we call\n            // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n            // (independent of the scrollUpButton).\n            position: \"relative\",\n            flex: 1,\n            // Viewport should only be scrollable in the vertical direction.\n            // This won't work in vertical writing modes, so we'll need to\n            // revisit this if/when that is supported\n            // https://developer.chrome.com/blog/vertical-form-controls\n            overflow: \"hidden auto\",\n            ...viewportProps.style\n          },\n          onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n            const viewport = event.currentTarget;\n            const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n            if (shouldExpandOnScrollRef?.current && contentWrapper) {\n              const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n              if (scrolledBy > 0) {\n                const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n                const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n                const cssHeight = parseFloat(contentWrapper.style.height);\n                const prevHeight = Math.max(cssMinHeight, cssHeight);\n                if (prevHeight < availableHeight) {\n                  const nextHeight = prevHeight + scrolledBy;\n                  const clampedNextHeight = Math.min(availableHeight, nextHeight);\n                  const heightDiff = nextHeight - clampedNextHeight;\n                  contentWrapper.style.height = clampedNextHeight + \"px\";\n                  if (contentWrapper.style.bottom === \"0px\") {\n                    viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n                    contentWrapper.style.justifyContent = \"flex-end\";\n                  }\n                }\n              }\n            }\n            prevScrollTopRef.current = viewport.scrollTop;\n          })\n        }\n      ) })\n    ] });\n  }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...groupProps } = props;\n    const groupId = useId();\n    return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n  }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...labelProps } = props;\n    const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n    return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n  }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSelect,\n      value,\n      disabled = false,\n      textValue: textValueProp,\n      ...itemProps\n    } = props;\n    const context = useSelectContext(ITEM_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n    const isSelected = context.value === value;\n    const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n    const [isFocused, setIsFocused] = React.useState(false);\n    const composedRefs = useComposedRefs(\n      forwardedRef,\n      (node) => contentContext.itemRefCallback?.(node, value, disabled)\n    );\n    const textId = useId();\n    const pointerTypeRef = React.useRef(\"touch\");\n    const handleSelect = () => {\n      if (!disabled) {\n        context.onValueChange(value);\n        context.onOpenChange(false);\n      }\n    };\n    if (value === \"\") {\n      throw new Error(\n        \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n      );\n    }\n    return /* @__PURE__ */ jsx(\n      SelectItemContextProvider,\n      {\n        scope: __scopeSelect,\n        value,\n        disabled,\n        textId,\n        isSelected,\n        onItemTextChange: React.useCallback((node) => {\n          setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n        }, []),\n        children: /* @__PURE__ */ jsx(\n          Collection.ItemSlot,\n          {\n            scope: __scopeSelect,\n            value,\n            disabled,\n            textValue,\n            children: /* @__PURE__ */ jsx(\n              Primitive.div,\n              {\n                role: \"option\",\n                \"aria-labelledby\": textId,\n                \"data-highlighted\": isFocused ? \"\" : void 0,\n                \"aria-selected\": isSelected && isFocused,\n                \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n                \"aria-disabled\": disabled || void 0,\n                \"data-disabled\": disabled ? \"\" : void 0,\n                tabIndex: disabled ? void 0 : -1,\n                ...itemProps,\n                ref: composedRefs,\n                onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n                onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n                onClick: composeEventHandlers(itemProps.onClick, () => {\n                  if (pointerTypeRef.current !== \"mouse\") handleSelect();\n                }),\n                onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n                  if (pointerTypeRef.current === \"mouse\") handleSelect();\n                }),\n                onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n                  pointerTypeRef.current = event.pointerType;\n                }),\n                onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n                  pointerTypeRef.current = event.pointerType;\n                  if (disabled) {\n                    contentContext.onItemLeave?.();\n                  } else if (pointerTypeRef.current === \"mouse\") {\n                    event.currentTarget.focus({ preventScroll: true });\n                  }\n                }),\n                onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n                  if (event.currentTarget === document.activeElement) {\n                    contentContext.onItemLeave?.();\n                  }\n                }),\n                onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n                  const isTypingAhead = contentContext.searchRef?.current !== \"\";\n                  if (isTypingAhead && event.key === \" \") return;\n                  if (SELECTION_KEYS.includes(event.key)) handleSelect();\n                  if (event.key === \" \") event.preventDefault();\n                })\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, className, style, ...itemTextProps } = props;\n    const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n    const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n    const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n    const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n    const [itemTextNode, setItemTextNode] = React.useState(null);\n    const composedRefs = useComposedRefs(\n      forwardedRef,\n      (node) => setItemTextNode(node),\n      itemContext.onItemTextChange,\n      (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n    );\n    const textContent = itemTextNode?.textContent;\n    const nativeOption = React.useMemo(\n      () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n      [itemContext.disabled, itemContext.value, textContent]\n    );\n    const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n    useLayoutEffect(() => {\n      onNativeOptionAdd(nativeOption);\n      return () => onNativeOptionRemove(nativeOption);\n    }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n    return /* @__PURE__ */ jsxs(Fragment2, { children: [\n      /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n      itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n    ] });\n  }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...itemIndicatorProps } = props;\n    const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n    return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n  }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n  const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n  const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n  const [canScrollUp, setCanScrollUp] = React.useState(false);\n  const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n  useLayoutEffect(() => {\n    if (contentContext.viewport && contentContext.isPositioned) {\n      let handleScroll2 = function() {\n        const canScrollUp2 = viewport.scrollTop > 0;\n        setCanScrollUp(canScrollUp2);\n      };\n      var handleScroll = handleScroll2;\n      const viewport = contentContext.viewport;\n      handleScroll2();\n      viewport.addEventListener(\"scroll\", handleScroll2);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n    }\n  }, [contentContext.viewport, contentContext.isPositioned]);\n  return canScrollUp ? /* @__PURE__ */ jsx(\n    SelectScrollButtonImpl,\n    {\n      ...props,\n      ref: composedRefs,\n      onAutoScroll: () => {\n        const { viewport, selectedItem } = contentContext;\n        if (viewport && selectedItem) {\n          viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n        }\n      }\n    }\n  ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n  const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n  const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n  const [canScrollDown, setCanScrollDown] = React.useState(false);\n  const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n  useLayoutEffect(() => {\n    if (contentContext.viewport && contentContext.isPositioned) {\n      let handleScroll2 = function() {\n        const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n        const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n        setCanScrollDown(canScrollDown2);\n      };\n      var handleScroll = handleScroll2;\n      const viewport = contentContext.viewport;\n      handleScroll2();\n      viewport.addEventListener(\"scroll\", handleScroll2);\n      return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n    }\n  }, [contentContext.viewport, contentContext.isPositioned]);\n  return canScrollDown ? /* @__PURE__ */ jsx(\n    SelectScrollButtonImpl,\n    {\n      ...props,\n      ref: composedRefs,\n      onAutoScroll: () => {\n        const { viewport, selectedItem } = contentContext;\n        if (viewport && selectedItem) {\n          viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n        }\n      }\n    }\n  ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n  const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n  const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n  const autoScrollTimerRef = React.useRef(null);\n  const getItems = useCollection(__scopeSelect);\n  const clearAutoScrollTimer = React.useCallback(() => {\n    if (autoScrollTimerRef.current !== null) {\n      window.clearInterval(autoScrollTimerRef.current);\n      autoScrollTimerRef.current = null;\n    }\n  }, []);\n  React.useEffect(() => {\n    return () => clearAutoScrollTimer();\n  }, [clearAutoScrollTimer]);\n  useLayoutEffect(() => {\n    const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n    activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n  }, [getItems]);\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"aria-hidden\": true,\n      ...scrollIndicatorProps,\n      ref: forwardedRef,\n      style: { flexShrink: 0, ...scrollIndicatorProps.style },\n      onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n        if (autoScrollTimerRef.current === null) {\n          autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n        }\n      }),\n      onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n        contentContext.onItemLeave?.();\n        if (autoScrollTimerRef.current === null) {\n          autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n        }\n      }),\n      onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n        clearAutoScrollTimer();\n      })\n    }\n  );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...separatorProps } = props;\n    return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n  }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSelect, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeSelect);\n    const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n    return contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n  }\n);\nSelectArrow.displayName = ARROW_NAME;\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = React.forwardRef(\n  ({ __scopeSelect, ...props }, forwardedRef) => {\n    const context = useSelectContext(BUBBLE_INPUT_NAME, __scopeSelect);\n    const { value, onValueChange, required, disabled, name, autoComplete, form } = context;\n    const { nativeOptions, nativeSelectKey } = context;\n    const ref = React.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const selectValue = value ?? \"\";\n    const prevValue = usePrevious(selectValue);\n    React.useEffect(() => {\n      const select = ref.current;\n      if (!select) return;\n      const selectProto = window.HTMLSelectElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        selectProto,\n        \"value\"\n      );\n      const setValue = descriptor.set;\n      if (prevValue !== selectValue && setValue) {\n        const event = new Event(\"change\", { bubbles: true });\n        setValue.call(select, selectValue);\n        select.dispatchEvent(event);\n      }\n    }, [prevValue, selectValue]);\n    return /* @__PURE__ */ jsxs(\n      Primitive.select,\n      {\n        \"aria-hidden\": true,\n        required,\n        tabIndex: -1,\n        name,\n        autoComplete,\n        disabled,\n        form,\n        onChange: (event) => onValueChange(event.target.value),\n        ...props,\n        style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n        ref: composedRefs,\n        defaultValue: selectValue,\n        children: [\n          shouldShowPlaceholder(value) ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n          Array.from(nativeOptions)\n        ]\n      },\n      nativeSelectKey\n    );\n  }\n);\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction shouldShowPlaceholder(value) {\n  return value === \"\" || value === void 0;\n}\nfunction useTypeaheadSearch(onSearchChange) {\n  const handleSearchChange = useCallbackRef(onSearchChange);\n  const searchRef = React.useRef(\"\");\n  const timerRef = React.useRef(0);\n  const handleTypeaheadSearch = React.useCallback(\n    (key) => {\n      const search = searchRef.current + key;\n      handleSearchChange(search);\n      (function updateSearch(value) {\n        searchRef.current = value;\n        window.clearTimeout(timerRef.current);\n        if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n      })(search);\n    },\n    [handleSearchChange]\n  );\n  const resetTypeahead = React.useCallback(() => {\n    searchRef.current = \"\";\n    window.clearTimeout(timerRef.current);\n  }, []);\n  React.useEffect(() => {\n    return () => window.clearTimeout(timerRef.current);\n  }, []);\n  return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const normalizedSearch = isRepeated ? search[0] : search;\n  const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n  let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n  const excludeCurrentItem = normalizedSearch.length === 1;\n  if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n  const nextItem = wrappedItems.find(\n    (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n  );\n  return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nexport {\n  SelectArrow as Arrow,\n  SelectContent as Content,\n  SelectGroup as Group,\n  SelectIcon as Icon,\n  SelectItem as Item,\n  SelectItemIndicator as ItemIndicator,\n  SelectItemText as ItemText,\n  SelectLabel as Label,\n  SelectPortal as Portal,\n  Select as Root,\n  SelectScrollDownButton as ScrollDownButton,\n  SelectScrollUpButton as ScrollUpButton,\n  Select,\n  SelectArrow,\n  SelectContent,\n  SelectGroup,\n  SelectIcon,\n  SelectItem,\n  SelectItemIndicator,\n  SelectItemText,\n  SelectLabel,\n  SelectPortal,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n  SelectViewport,\n  SelectSeparator as Separator,\n  SelectTrigger as Trigger,\n  SelectValue as Value,\n  SelectViewport as Viewport,\n  createSelectScope,\n  SelectBubbleInput as unstable_BubbleInput,\n  SelectProvider as unstable_Provider,\n  SelectBubbleInput as unstable_SelectBubbleInput,\n  SelectProvider as unstable_SelectProvider\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      'flex items-center justify-between gap-2',\n      '[&>span]:truncate [&>span]:min-w-0',\n      'h-[34px] px-[10px] py-[7px] rounded-[4px]',\n      'bg-white border border-[#e0e0e0]',\n      'text-[14px] text-[#030303]',\n      'data-[placeholder]:text-[#999999]',\n      'focus:outline-none focus:border-[#0265ff] focus:ring-0',\n      'disabled:bg-[#eff0f6] disabled:cursor-not-allowed',\n      'dark:bg-background dark:border-border dark:text-foreground',\n      'dark:data-[placeholder]:text-muted-foreground',\n      'dark:disabled:bg-[oklch(0.279_0.041_260.031)]',\n      'w-full',\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDown className=\"h-4 w-4 shrink-0 opacity-50 transition-transform data-[state=open]:rotate-180\" />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      'flex items-center justify-center py-1',\n      className\n    )}\n    {...props}\n  >\n    <ChevronUp className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      'flex items-center justify-center py-1',\n      className\n    )}\n    {...props}\n  >\n    <ChevronDown className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n  SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> & {\n    container?: HTMLElement | null;\n  }\n>(\n  (\n    { className, children, position = 'popper', container: containerProp, style, ...props },\n    ref\n  ) => {\n    const [autoContainer, setAutoContainer] = React.useState<HTMLElement | null>(null);\n\n    const setDetectorRef = React.useCallback((node: HTMLElement | null) => {\n      if (!node) return;\n      const rootNode = node.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        const existing = rootNode.querySelector<HTMLElement>('[data-bs-select-portal]');\n        if (existing) {\n          setAutoContainer(existing);\n          return;\n        }\n\n        const container = document.createElement('div');\n        container.setAttribute('data-bs-select-portal', 'true');\n        rootNode.appendChild(container);\n        setAutoContainer(container);\n      }\n    }, []);\n\n    const effectiveContainer = containerProp !== undefined ? containerProp : autoContainer;\n\n    return (\n      <>\n        {containerProp === undefined && (\n          <span ref={setDetectorRef} style={{ display: 'none' }} aria-hidden />\n        )}\n        <SelectPrimitive.Portal container={effectiveContainer ?? undefined}>\n          <SelectPrimitive.Content\n            ref={ref}\n            className={cn(\n              'z-50 bg-white rounded-[4px] p-[4px]',\n              'shadow-[0_0_8px_rgba(0,0,0,0.1)]',\n              'data-[state=open]:animate-in data-[state=closed]:animate-out',\n              'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n              'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n              'data-[side=bottom]:slide-in-from-top-2',\n              'data-[side=left]:slide-in-from-right-2',\n              'data-[side=right]:slide-in-from-left-2',\n              'data-[side=top]:slide-in-from-bottom-2',\n              'dark:bg-background dark:border-border',\n              position === 'popper' &&\n                'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n              className\n            )}\n            position={position}\n            style={{\n              boxSizing: 'border-box',\n              maxHeight: 'var(--radix-select-content-available-height)',\n              minWidth:\n                position === 'popper'\n                  ? 'var(--radix-select-trigger-width)'\n                  : '120px',\n              ...style,\n            }}\n            {...props}\n          >\n            <SelectScrollUpButton />\n            <SelectPrimitive.Viewport\n              className={cn(\n                'p-1',\n                position === 'popper' && 'w-full'\n              )}\n              style={\n                position === 'popper'\n                  ? {\n                      height: 'var(--radix-select-trigger-height)',\n                      minWidth: 'var(--radix-select-trigger-width)',\n                    }\n                  : undefined\n              }\n            >\n              {children}\n            </SelectPrimitive.Viewport>\n            <SelectScrollDownButton />\n          </SelectPrimitive.Content>\n        </SelectPrimitive.Portal>\n      </>\n    );\n  }\n);\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\n      'px-[10px] py-[6px] text-[14px] font-bold text-[#030303] dark:text-foreground',\n      className\n    )}\n    {...props}\n  />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      'relative flex items-center gap-2 px-[10px] py-[7px]',\n      'text-[14px] text-[#030303]',\n      'cursor-pointer select-none rounded-[4px]',\n      'data-[highlighted]:bg-[#eff0f6] data-[highlighted]:outline-none',\n      'data-[state=checked]:bg-[#f0f6ff] data-[state=checked]:text-[#0265ff]',\n      'dark:text-foreground dark:data-[highlighted]:bg-accent dark:data-[state=checked]:bg-accent',\n      className\n    )}\n    {...props}\n  >\n    {/* <span className=\"absolute left-[10px] flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span> */}\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn('h-px bg-[#e0e0e0] my-1 dark:bg-border', className)}\n    {...props}\n  />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n};\n","/**\n * Time zone name format.\n */\n\n/**\n * The function returns the time zone name for the given date in the specified\n * time zone.\n *\n * It uses the `Intl.DateTimeFormat` API and by default outputs the time zone\n * name in a long format, e.g. \"Pacific Standard Time\" or\n * \"Singapore Standard Time\".\n *\n * It is possible to specify the format as the third argument using one of the following options\n *\n * - \"short\": e.g. \"EDT\" or \"GMT+8\".\n * - \"long\": e.g. \"Eastern Daylight Time\".\n * - \"shortGeneric\": e.g. \"ET\" or \"Singapore Time\".\n * - \"longGeneric\": e.g. \"Eastern Time\" or \"Singapore Standard Time\".\n *\n * These options correspond to TR35 tokens `z..zzz`, `zzzz`, `v`, and `vvvv` respectively: https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-zone\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date object to get the time zone name for\n * @param format - Optional format of the time zone name. Defaults to \"long\". Can be \"short\", \"long\", \"shortGeneric\", or \"longGeneric\".\n *\n * @returns Time zone name (e.g. \"Singapore Standard Time\")\n */\nexport function tzName(timeZone, date, format = \"long\") {\n  return new Intl.DateTimeFormat(\"en-US\", {\n    // Enforces engine to render the time. Without the option JavaScriptCore omits it.\n    hour: \"numeric\",\n    timeZone: timeZone,\n    timeZoneName: format\n  }).format(date).split(/\\s/g) // Format.JS uses non-breaking spaces\n  .slice(2) // Skip the hour and AM/PM parts\n  .join(\" \");\n}","const offsetFormatCache = {};\nconst offsetCache = {};\n\n/**\n * The function extracts UTC offset in minutes from the given date in specified\n * time zone.\n *\n * Unlike `Date.prototype.getTimezoneOffset`, this function returns the value\n * mirrored to the sign of the offset in the time zone. For Asia/Singapore\n * (UTC+8), `tzOffset` returns 480, while `getTimezoneOffset` returns -480.\n *\n * @param timeZone - Time zone name (IANA or UTC offset)\n * @param date - Date to check the offset for\n *\n * @returns UTC offset in minutes\n */\nexport function tzOffset(timeZone, date) {\n  try {\n    const format = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat(\"en-US\", {\n      timeZone,\n      timeZoneName: \"longOffset\"\n    }).format;\n    const offsetStr = format(date).split(\"GMT\")[1];\n    if (offsetStr in offsetCache) return offsetCache[offsetStr];\n    return calcOffset(offsetStr, offsetStr.split(\":\"));\n  } catch {\n    // Fallback to manual parsing if the runtime doesn't support ±HH:MM/±HHMM/±HH\n    // See: https://github.com/nodejs/node/issues/53419\n    if (timeZone in offsetCache) return offsetCache[timeZone];\n    const captures = timeZone?.match(offsetRe);\n    if (captures) return calcOffset(timeZone, captures.slice(1));\n    return NaN;\n  }\n}\nconst offsetRe = /([+-]\\d\\d):?(\\d\\d)?/;\nfunction calcOffset(cacheStr, values) {\n  const hours = +(values[0] || 0);\n  const minutes = +(values[1] || 0);\n  // Convert seconds to minutes by dividing by 60 to keep the function return in minutes.\n  const seconds = +(values[2] || 0) / 60;\n  return offsetCache[cacheStr] = hours * 60 + minutes > 0 ? hours * 60 + minutes + seconds : hours * 60 - minutes - seconds;\n}","import { tzOffset } from \"../tzOffset/index.js\";\nexport class TZDateMini extends Date {\n  //#region static\n\n  constructor(...args) {\n    super();\n    if (args.length > 1 && typeof args[args.length - 1] === \"string\") {\n      this.timeZone = args.pop();\n    }\n    this.internal = new Date();\n    if (isNaN(tzOffset(this.timeZone, this))) {\n      this.setTime(NaN);\n    } else {\n      if (!args.length) {\n        this.setTime(Date.now());\n      } else if (typeof args[0] === \"number\" && (args.length === 1 || args.length === 2 && typeof args[1] !== \"number\")) {\n        this.setTime(args[0]);\n      } else if (typeof args[0] === \"string\") {\n        this.setTime(+new Date(args[0]));\n      } else if (args[0] instanceof Date) {\n        this.setTime(+args[0]);\n      } else {\n        this.setTime(+new Date(...args));\n        adjustToSystemTZ(this, NaN);\n        syncToInternal(this);\n      }\n    }\n  }\n  static tz(tz, ...args) {\n    return args.length ? new TZDateMini(...args, tz) : new TZDateMini(Date.now(), tz);\n  }\n\n  //#endregion\n\n  //#region time zone\n\n  withTimeZone(timeZone) {\n    return new TZDateMini(+this, timeZone);\n  }\n  getTimezoneOffset() {\n    const offset = -tzOffset(this.timeZone, this);\n    // Remove the seconds offset\n    // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n    return offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n  }\n\n  //#endregion\n\n  //#region time\n\n  setTime(time) {\n    Date.prototype.setTime.apply(this, arguments);\n    syncToInternal(this);\n    return +this;\n  }\n\n  //#endregion\n\n  //#region date-fns integration\n\n  [Symbol.for(\"constructDateFrom\")](date) {\n    return new TZDateMini(+new Date(date), this.timeZone);\n  }\n\n  //#endregion\n}\n\n// Assign getters and setters\nconst re = /^(get|set)(?!UTC)/;\nObject.getOwnPropertyNames(Date.prototype).forEach(method => {\n  if (!re.test(method)) return;\n  const utcMethod = method.replace(re, \"$1UTC\");\n  // Filter out methods without UTC counterparts\n  if (!TZDateMini.prototype[utcMethod]) return;\n  if (method.startsWith(\"get\")) {\n    // Delegate to internal date's UTC method\n    TZDateMini.prototype[method] = function () {\n      return this.internal[utcMethod]();\n    };\n  } else {\n    // Assign regular setter\n    TZDateMini.prototype[method] = function () {\n      Date.prototype[utcMethod].apply(this.internal, arguments);\n      syncFromInternal(this);\n      return +this;\n    };\n\n    // Assign UTC setter\n    TZDateMini.prototype[utcMethod] = function () {\n      Date.prototype[utcMethod].apply(this, arguments);\n      syncToInternal(this);\n      return +this;\n    };\n  }\n});\n\n/**\n * Function syncs time to internal date, applying the time zone offset.\n *\n * @param {Date} date - Date to sync\n */\nfunction syncToInternal(date) {\n  date.internal.setTime(+date);\n  date.internal.setUTCSeconds(date.internal.getUTCSeconds() - Math.round(-tzOffset(date.timeZone, date) * 60));\n}\n\n/**\n * Function syncs the internal date UTC values to the date. It allows to get\n * accurate timestamp value.\n *\n * @param {Date} date - The date to sync\n */\nfunction syncFromInternal(date) {\n  // First we transpose the internal values\n  Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());\n  Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());\n\n  // Now we have to adjust the date to the system time zone\n  adjustToSystemTZ(date);\n}\n\n/**\n * Function adjusts the date to the system time zone. It uses the time zone\n * differences to calculate the offset and adjust the date.\n *\n * @param {Date} date - Date to adjust\n */\nfunction adjustToSystemTZ(date) {\n  // Save the time zone offset before all the adjustments\n  const baseOffset = tzOffset(date.timeZone, date);\n  // Remove the seconds offset\n  // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n  const offset = baseOffset > 0 ? Math.floor(baseOffset) : Math.ceil(baseOffset);\n  //#region System DST adjustment\n\n  // The biggest problem with using the system time zone is that when we create\n  // a date from internal values stored in UTC, the system time zone might end\n  // up on the DST hour:\n  //\n  //   $ TZ=America/New_York node\n  //   > new Date(2020, 2, 8, 1).toString()\n  //   'Sun Mar 08 2020 01:00:00 GMT-0500 (Eastern Standard Time)'\n  //   > new Date(2020, 2, 8, 2).toString()\n  //   'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n  //   > new Date(2020, 2, 8, 3).toString()\n  //   'Sun Mar 08 2020 03:00:00 GMT-0400 (Eastern Daylight Time)'\n  //   > new Date(2020, 2, 8, 4).toString()\n  //   'Sun Mar 08 2020 04:00:00 GMT-0400 (Eastern Daylight Time)'\n  //\n  // Here we get the same hour for both 2 and 3, because the system time zone\n  // has DST beginning at 8 March 2020, 2 a.m. and jumps to 3 a.m. So we have\n  // to adjust the internal date to reflect that.\n  //\n  // However we want to adjust only if that's the DST hour the change happenes,\n  // not the hour where DST moves to.\n\n  // We calculate the previous hour to see if the time zone offset has changed\n  // and we have landed on the DST hour.\n  const prevHour = new Date(+date);\n  // We use UTC methods here as we don't want to land on the same hour again\n  // in case of DST.\n  prevHour.setUTCHours(prevHour.getUTCHours() - 1);\n\n  // Calculate if we are on the system DST hour.\n  const systemOffset = -new Date(+date).getTimezoneOffset();\n  const prevHourSystemOffset = -new Date(+prevHour).getTimezoneOffset();\n  const systemDSTChange = systemOffset - prevHourSystemOffset;\n  // Detect the DST shift. System DST change will occur both on\n  const dstShift = Date.prototype.getHours.apply(date) !== date.internal.getUTCHours();\n\n  // Move the internal date when we are on the system DST hour.\n  if (systemDSTChange && dstShift) date.internal.setUTCMinutes(date.internal.getUTCMinutes() + systemDSTChange);\n\n  //#endregion\n\n  //#region System diff adjustment\n\n  // Now we need to adjust the date, since we just applied internal values.\n  // We need to calculate the difference between the system and date time zones\n  // and apply it to the date.\n\n  const offsetDiff = systemOffset - offset;\n  if (offsetDiff) Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);\n\n  //#endregion\n\n  //#region Seconds System diff adjustment\n\n  const systemDate = new Date(+date);\n  // Set the UTC seconds to 0 to isolate the timezone offset in seconds.\n  systemDate.setUTCSeconds(0);\n  // For negative systemOffset, invert the seconds.\n  const systemSecondsOffset = systemOffset > 0 ? systemDate.getSeconds() : (systemDate.getSeconds() - 60) % 60;\n\n  // Calculate the seconds offset based on the timezone offset.\n  const secondsOffset = Math.round(-(tzOffset(date.timeZone, date) * 60)) % 60;\n  if (secondsOffset || systemSecondsOffset) {\n    date.internal.setUTCSeconds(date.internal.getUTCSeconds() + secondsOffset);\n    Date.prototype.setUTCSeconds.call(date, Date.prototype.getUTCSeconds.call(date) + secondsOffset + systemSecondsOffset);\n  }\n\n  //#endregion\n\n  //#region Post-adjustment DST fix\n\n  const postBaseOffset = tzOffset(date.timeZone, date);\n  // Remove the seconds offset\n  // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n  const postOffset = postBaseOffset > 0 ? Math.floor(postBaseOffset) : Math.ceil(postBaseOffset);\n  const postSystemOffset = -new Date(+date).getTimezoneOffset();\n  const postOffsetDiff = postSystemOffset - postOffset;\n  const offsetChanged = postOffset !== offset;\n  const postDiff = postOffsetDiff - offsetDiff;\n  if (offsetChanged && postDiff) {\n    Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);\n\n    // Now we need to check if got offset change during the post-adjustment.\n    // If so, we also need both dates to reflect that.\n\n    const newBaseOffset = tzOffset(date.timeZone, date);\n    // Remove the seconds offset\n    // use Math.floor for negative GMT timezones and Math.ceil for positive GMT timezones.\n    const newOffset = newBaseOffset > 0 ? Math.floor(newBaseOffset) : Math.ceil(newBaseOffset);\n    const offsetChange = postOffset - newOffset;\n    if (offsetChange) {\n      date.internal.setUTCMinutes(date.internal.getUTCMinutes() + offsetChange);\n      Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);\n    }\n  }\n\n  //#endregion\n}","import { tzName } from \"../tzName/index.js\";\nimport { TZDateMini } from \"./mini.js\";\nexport class TZDate extends TZDateMini {\n  //#region static\n\n  static tz(tz, ...args) {\n    return args.length ? new TZDate(...args, tz) : new TZDate(Date.now(), tz);\n  }\n\n  //#endregion\n\n  //#region representation\n\n  toISOString() {\n    const [sign, hours, minutes] = this.tzComponents();\n    const tz = `${sign}${hours}:${minutes}`;\n    return this.internal.toISOString().slice(0, -1) + tz;\n  }\n  toString() {\n    // \"Tue Aug 13 2024 07:50:19 GMT+0800 (Singapore Standard Time)\";\n    return `${this.toDateString()} ${this.toTimeString()}`;\n  }\n  toDateString() {\n    // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n    const [day, date, month, year] = this.internal.toUTCString().split(\" \");\n    // \"Tue Aug 13 2024\"\n    return `${day?.slice(0, -1) /* Remove \",\" */} ${month} ${date} ${year}`;\n  }\n  toTimeString() {\n    // toUTCString returns RFC 7231 (\"Mon, 12 Aug 2024 23:36:08 GMT\")\n    const time = this.internal.toUTCString().split(\" \")[4];\n    const [sign, hours, minutes] = this.tzComponents();\n    // \"07:42:23 GMT+0800 (Singapore Standard Time)\"\n    return `${time} GMT${sign}${hours}${minutes} (${tzName(this.timeZone, this)})`;\n  }\n  toLocaleString(locales, options) {\n    return Date.prototype.toLocaleString.call(this, locales, {\n      ...options,\n      timeZone: options?.timeZone || this.timeZone\n    });\n  }\n  toLocaleDateString(locales, options) {\n    return Date.prototype.toLocaleDateString.call(this, locales, {\n      ...options,\n      timeZone: options?.timeZone || this.timeZone\n    });\n  }\n  toLocaleTimeString(locales, options) {\n    return Date.prototype.toLocaleTimeString.call(this, locales, {\n      ...options,\n      timeZone: options?.timeZone || this.timeZone\n    });\n  }\n\n  //#endregion\n\n  //#region private\n\n  tzComponents() {\n    const offset = this.getTimezoneOffset();\n    const sign = offset > 0 ? \"-\" : \"+\";\n    const hours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, \"0\");\n    const minutes = String(Math.abs(offset) % 60).padStart(2, \"0\");\n    return [sign, hours, minutes];\n  }\n\n  //#endregion\n\n  withTimeZone(timeZone) {\n    return new TZDate(+this, timeZone);\n  }\n\n  //#region date-fns integration\n\n  [Symbol.for(\"constructDateFrom\")](date) {\n    return new TZDate(+new Date(date), this.timeZone);\n  }\n\n  //#endregion\n}","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n  // If 0 days, no-op to avoid changing times in the hour before end of DST\n  if (!amount) return _date;\n\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return _date;\n  }\n  const dayOfMonth = _date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n  endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n  const daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    _date.setFullYear(\n      endOfDesiredMonth.getFullYear(),\n      endOfDesiredMonth.getMonth(),\n      dayOfMonth,\n    );\n    return _date;\n  }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n  return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n  return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link max} function options.\n */\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dates - The dates to compare\n *\n * @returns The latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport function max(dates, options) {\n  let result;\n  let context = options?.in;\n\n  dates.forEach((date) => {\n    // Use the first date object as the context function\n    if (!context && typeof date === \"object\")\n      context = constructFrom.bind(null, date);\n\n    const date_ = toDate(date, context);\n    if (!result || result < date_ || isNaN(+date_)) result = date_;\n  });\n\n  return constructFrom(context, result || NaN);\n}\n\n// Fallback for modularized imports:\nexport default max;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link min} function options.\n */\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dates - The dates to compare\n *\n * @returns The earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport function min(dates, options) {\n  let result;\n  let context = options?.in;\n\n  dates.forEach((date) => {\n    // Use the first date object as the context function\n    if (!context && typeof date === \"object\")\n      context = constructFrom.bind(null, date);\n\n    const date_ = toDate(date, context);\n    if (!result || result > date_ || isNaN(+date_)) result = date_;\n  });\n\n  return constructFrom(context, result || NaN);\n}\n\n// Fallback for modularized imports:\nexport default min;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n  const [dateLeft_, dateRight_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n *   new Date(2014, 8, 1),\n *   new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n  const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n  return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const month = _date.getMonth();\n  _date.setFullYear(_date.getFullYear(), month + 1, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n  const [start, end] = normalizeDates(context, interval.start, interval.end);\n  return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachMonthOfInterval} function options.\n */\n\n/**\n * The {@link eachMonthOfInterval} function result type. It resolves the proper data type.\n */\n\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of months from the month of the interval start to the month of the interval end\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * const result = eachMonthOfInterval({\n *   start: new Date(2014, 1, 6),\n *   end: new Date(2014, 7, 10)\n * })\n * //=> [\n * //   Sat Feb 01 2014 00:00:00,\n * //   Sat Mar 01 2014 00:00:00,\n * //   Tue Apr 01 2014 00:00:00,\n * //   Thu May 01 2014 00:00:00,\n * //   Sun Jun 01 2014 00:00:00,\n * //   Tue Jul 01 2014 00:00:00,\n * //   Fri Aug 01 2014 00:00:00\n * // ]\n */\nexport function eachMonthOfInterval(interval, options) {\n  const { start, end } = normalizeInterval(options?.in, interval);\n\n  let reversed = +start > +end;\n  const endTime = reversed ? +start : +end;\n  const date = reversed ? end : start;\n  date.setHours(0, 0, 0, 0);\n  date.setDate(1);\n\n  let step = options?.step ?? 1;\n  if (!step) return [];\n  if (step < 0) {\n    step = -step;\n    reversed = !reversed;\n  }\n\n  const dates = [];\n\n  while (+date <= endTime) {\n    dates.push(constructFrom(start, date));\n    date.setMonth(date.getMonth() + step);\n  }\n\n  return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachMonthOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setDate(1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  _date.setFullYear(year + 1, 0, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachYearOfInterval} function options.\n */\n\n/**\n * The {@link eachYearOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * const result = eachYearOfInterval({\n *   start: new Date(2014, 1, 6),\n *   end: new Date(2017, 7, 10)\n * })\n * //=> [\n * //   Wed Jan 01 2014 00:00:00,\n * //   Thu Jan 01 2015 00:00:00,\n * //   Fri Jan 01 2016 00:00:00,\n * //   Sun Jan 01 2017 00:00:00\n * // ]\n */\nexport function eachYearOfInterval(interval, options) {\n  const { start, end } = normalizeInterval(options?.in, interval);\n\n  let reversed = +start > +end;\n  const endTime = reversed ? +start : +end;\n  const date = reversed ? end : start;\n  date.setHours(0, 0, 0, 0);\n  date.setMonth(0, 1);\n\n  let step = options?.step ?? 1;\n  if (!step) return [];\n  if (step < 0) {\n    step = -step;\n    reversed = !reversed;\n  }\n\n  const dates = [];\n\n  while (+date <= endTime) {\n    dates.push(constructFrom(start, date));\n    date.setFullYear(date.getFullYear() + step);\n  }\n\n  return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachYearOfInterval;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n  _date.setDate(_date.getDate() + diff);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import { endOfWeek } from \"./endOfWeek.js\";\n\n/**\n * The {@link endOfISOWeek} function options.\n */\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfISOWeek(date, options) {\n  return endOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default endOfISOWeek;\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n","export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n","export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDaysInMonth} function options.\n */\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date, considering the context if provided.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  const monthIndex = _date.getMonth();\n  const lastDayOfMonth = constructFrom(_date, 0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMonth} function options.\n */\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date, options) {\n  return toDate(date, options?.in).getMonth();\n}\n\n// Fallback for modularized imports:\nexport default getMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getYear} function options.\n */\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date, options) {\n  return toDate(date, options?.in).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n  return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n  return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return (\n    laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n    laterDate_.getMonth() === earlierDate_.getMonth()\n  );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameYear} function options.\n */\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport function isSameYear(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return laterDate_.getFullYear() === earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default isSameYear;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getDaysInMonth } from \"./getDaysInMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMonth} function options.\n */\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n * @param options - The options\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  const day = _date.getDate();\n\n  const midMonth = constructFrom(options?.in || date, 0);\n  midMonth.setFullYear(year, month, 15);\n  midMonth.setHours(0, 0, 0, 0);\n  const daysInMonth = getDaysInMonth(midMonth);\n\n  // Set the earlier date, allows to wrap Jan 31 to Feb 28\n  _date.setMonth(month, Math.min(day, daysInMonth));\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setYear} function options.\n */\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param year - The year of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the year set\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport function setYear(date, year, options) {\n  const date_ = toDate(date, options?.in);\n\n  // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n  if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);\n\n  date_.setFullYear(year);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default setYear;\n","const FIVE_WEEKS = 5;\nconst FOUR_WEEKS = 4;\n/**\n * Returns the number of weeks to display in the broadcast calendar for a given\n * month.\n *\n * The broadcast calendar may have either 4 or 5 weeks in a month, depending on\n * the start and end dates of the broadcast weeks.\n *\n * @since 9.4.0\n * @param month The month for which to calculate the number of weeks.\n * @param dateLib The date library to use for date manipulation.\n * @returns The number of weeks in the broadcast calendar (4 or 5).\n */\nexport function getBroadcastWeeksInMonth(month, dateLib) {\n    // Get the first day of the month\n    const firstDayOfMonth = dateLib.startOfMonth(month);\n    // Get the day of the week for the first day of the month (1-7, where 1 is Monday)\n    const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;\n    const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);\n    const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);\n    const numberOfWeeks = dateLib.getMonth(month) === dateLib.getMonth(lastDateOfLastWeek)\n        ? FIVE_WEEKS\n        : FOUR_WEEKS;\n    return numberOfWeeks;\n}\n","/**\n * Returns the start date of the week in the broadcast calendar.\n *\n * The broadcast week starts on Monday. If the first day of the month is not a\n * Monday, this function calculates the previous Monday as the start of the\n * broadcast week.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the start of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The start date of the broadcast week.\n */\nexport function startOfBroadcastWeek(date, dateLib) {\n    const firstOfMonth = dateLib.startOfMonth(date);\n    const dayOfWeek = firstOfMonth.getDay();\n    if (dayOfWeek === 1) {\n        return firstOfMonth;\n    }\n    else if (dayOfWeek === 0) {\n        return dateLib.addDays(firstOfMonth, -1 * 6);\n    }\n    else {\n        return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));\n    }\n}\n","import { getBroadcastWeeksInMonth } from \"./getBroadcastWeeksInMonth.js\";\nimport { startOfBroadcastWeek } from \"./startOfBroadcastWeek.js\";\n/**\n * Returns the end date of the week in the broadcast calendar.\n *\n * The broadcast week ends on the last day of the last broadcast week for the\n * given date.\n *\n * @since 9.4.0\n * @param date The date for which to calculate the end of the broadcast week.\n * @param dateLib The date library to use for date manipulation.\n * @returns The end date of the broadcast week.\n */\nexport function endOfBroadcastWeek(date, dateLib) {\n    const startDate = startOfBroadcastWeek(date, dateLib);\n    const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);\n    const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);\n    return endDate;\n}\n","import { format } from \"date-fns\";\nimport { enUS as dateFnsEnUS } from \"date-fns/locale\";\n/** English (United States) locale extended with DayPicker-specific translations. */\nexport const enUS = {\n    ...dateFnsEnUS,\n    labels: {\n        labelDayButton: (date, modifiers, options, dateLib) => {\n            let formatDate;\n            if (dateLib && typeof dateLib.format === \"function\") {\n                formatDate = dateLib.format.bind(dateLib);\n            }\n            else {\n                formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n            }\n            let label = formatDate(date, \"PPPP\");\n            if (modifiers.today)\n                label = `Today, ${label}`;\n            if (modifiers.selected)\n                label = `${label}, selected`;\n            return label;\n        },\n        labelMonthDropdown: \"Choose the Month\",\n        labelNext: \"Go to the Next Month\",\n        labelPrevious: \"Go to the Previous Month\",\n        labelWeekNumber: (weekNumber) => `Week ${weekNumber}`,\n        labelYearDropdown: \"Choose the Year\",\n        labelGrid: (date, options, dateLib) => {\n            let formatDate;\n            if (dateLib && typeof dateLib.format === \"function\") {\n                formatDate = dateLib.format.bind(dateLib);\n            }\n            else {\n                formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n            }\n            return formatDate(date, \"LLLL yyyy\");\n        },\n        labelGridcell: (date, modifiers, options, dateLib) => {\n            let formatDate;\n            if (dateLib && typeof dateLib.format === \"function\") {\n                formatDate = dateLib.format.bind(dateLib);\n            }\n            else {\n                formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n            }\n            let label = formatDate(date, \"PPPP\");\n            if (modifiers?.today) {\n                label = `Today, ${label}`;\n            }\n            return label;\n        },\n        labelNav: \"Navigation bar\",\n        labelWeekNumberHeader: \"Week Number\",\n        labelWeekday: (date, options, dateLib) => {\n            let formatDate;\n            if (dateLib && typeof dateLib.format === \"function\") {\n                formatDate = dateLib.format.bind(dateLib);\n            }\n            else {\n                formatDate = (d, pattern) => format(d, pattern, { locale: dateFnsEnUS, ...options });\n            }\n            return formatDate(date, \"cccc\");\n        },\n    },\n};\n","import { TZDate } from \"@date-fns/tz\";\nimport { addDays, addMonths, addWeeks, addYears, differenceInCalendarDays, differenceInCalendarMonths, eachMonthOfInterval, eachYearOfInterval, endOfISOWeek, endOfMonth, endOfWeek, endOfYear, format, getISOWeek, getMonth, getWeek, getYear, isAfter, isBefore, isDate, isSameDay, isSameMonth, isSameYear, max, min, setMonth, setYear, startOfDay, startOfISOWeek, startOfMonth, startOfWeek, startOfYear, } from \"date-fns\";\nimport { endOfBroadcastWeek } from \"../helpers/endOfBroadcastWeek.js\";\nimport { startOfBroadcastWeek } from \"../helpers/startOfBroadcastWeek.js\";\nimport { enUS } from \"../locale/en-US.js\";\n/**\n * A wrapper class around [date-fns](http://date-fns.org) that provides utility\n * methods for date manipulation and formatting.\n *\n * @since 9.2.0\n * @example\n *   const dateLib = new DateLib({ locale: es });\n *   const newDate = dateLib.addDays(new Date(), 5);\n */\nexport class DateLib {\n    /**\n     * Creates an instance of `DateLib`.\n     *\n     * @param options Configuration options for the date library.\n     * @param overrides Custom overrides for the date library functions.\n     */\n    constructor(options, overrides) {\n        /**\n         * Reference to the built-in Date constructor.\n         *\n         * @deprecated Use `newDate()` or `today()`.\n         */\n        this.Date = Date;\n        /**\n         * Creates a new `Date` object representing today's date.\n         *\n         * @since 9.5.0\n         * @returns A `Date` object for today's date.\n         */\n        this.today = () => {\n            if (this.overrides?.today) {\n                return this.overrides.today();\n            }\n            if (this.options.timeZone) {\n                return TZDate.tz(this.options.timeZone);\n            }\n            return new this.Date();\n        };\n        /**\n         * Creates a new `Date` object with the specified year, month, and day.\n         *\n         * @since 9.5.0\n         * @param year The year.\n         * @param monthIndex The month (0-11).\n         * @param date The day of the month.\n         * @returns A new `Date` object.\n         */\n        this.newDate = (year, monthIndex, date) => {\n            if (this.overrides?.newDate) {\n                return this.overrides.newDate(year, monthIndex, date);\n            }\n            if (this.options.timeZone) {\n                return new TZDate(year, monthIndex, date, this.options.timeZone);\n            }\n            return new Date(year, monthIndex, date);\n        };\n        /**\n         * Adds the specified number of days to the given date.\n         *\n         * @param date The date to add days to.\n         * @param amount The number of days to add.\n         * @returns The new date with the days added.\n         */\n        this.addDays = (date, amount) => {\n            return this.overrides?.addDays\n                ? this.overrides.addDays(date, amount)\n                : addDays(date, amount);\n        };\n        /**\n         * Adds the specified number of months to the given date.\n         *\n         * @param date The date to add months to.\n         * @param amount The number of months to add.\n         * @returns The new date with the months added.\n         */\n        this.addMonths = (date, amount) => {\n            return this.overrides?.addMonths\n                ? this.overrides.addMonths(date, amount)\n                : addMonths(date, amount);\n        };\n        /**\n         * Adds the specified number of weeks to the given date.\n         *\n         * @param date The date to add weeks to.\n         * @param amount The number of weeks to add.\n         * @returns The new date with the weeks added.\n         */\n        this.addWeeks = (date, amount) => {\n            return this.overrides?.addWeeks\n                ? this.overrides.addWeeks(date, amount)\n                : addWeeks(date, amount);\n        };\n        /**\n         * Adds the specified number of years to the given date.\n         *\n         * @param date The date to add years to.\n         * @param amount The number of years to add.\n         * @returns The new date with the years added.\n         */\n        this.addYears = (date, amount) => {\n            return this.overrides?.addYears\n                ? this.overrides.addYears(date, amount)\n                : addYears(date, amount);\n        };\n        /**\n         * Returns the number of calendar days between the given dates.\n         *\n         * @param dateLeft The later date.\n         * @param dateRight The earlier date.\n         * @returns The number of calendar days between the dates.\n         */\n        this.differenceInCalendarDays = (dateLeft, dateRight) => {\n            return this.overrides?.differenceInCalendarDays\n                ? this.overrides.differenceInCalendarDays(dateLeft, dateRight)\n                : differenceInCalendarDays(dateLeft, dateRight);\n        };\n        /**\n         * Returns the number of calendar months between the given dates.\n         *\n         * @param dateLeft The later date.\n         * @param dateRight The earlier date.\n         * @returns The number of calendar months between the dates.\n         */\n        this.differenceInCalendarMonths = (dateLeft, dateRight) => {\n            return this.overrides?.differenceInCalendarMonths\n                ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight)\n                : differenceInCalendarMonths(dateLeft, dateRight);\n        };\n        /**\n         * Returns the months between the given dates.\n         *\n         * @param interval The interval to get the months for.\n         */\n        this.eachMonthOfInterval = (interval) => {\n            return this.overrides?.eachMonthOfInterval\n                ? this.overrides.eachMonthOfInterval(interval)\n                : eachMonthOfInterval(interval);\n        };\n        /**\n         * Returns the years between the given dates.\n         *\n         * @since 9.11.1\n         * @param interval The interval to get the years for.\n         * @returns The array of years in the interval.\n         */\n        this.eachYearOfInterval = (interval) => {\n            const years = this.overrides?.eachYearOfInterval\n                ? this.overrides.eachYearOfInterval(interval)\n                : eachYearOfInterval(interval);\n            // Remove duplicates that may happen across DST transitions (e.g., \"America/Sao_Paulo\")\n            // See https://github.com/date-fns/tz/issues/72\n            const uniqueYears = new Set(years.map((d) => this.getYear(d)));\n            if (uniqueYears.size === years.length) {\n                // No duplicates, return as is\n                return years;\n            }\n            // Rebuild the array to ensure one date per year\n            const yearsArray = [];\n            uniqueYears.forEach((y) => {\n                yearsArray.push(new Date(y, 0, 1));\n            });\n            return yearsArray;\n        };\n        /**\n         * Returns the end of the broadcast week for the given date.\n         *\n         * @param date The original date.\n         * @returns The end of the broadcast week.\n         */\n        this.endOfBroadcastWeek = (date) => {\n            return this.overrides?.endOfBroadcastWeek\n                ? this.overrides.endOfBroadcastWeek(date)\n                : endOfBroadcastWeek(date, this);\n        };\n        /**\n         * Returns the end of the ISO week for the given date.\n         *\n         * @param date The original date.\n         * @returns The end of the ISO week.\n         */\n        this.endOfISOWeek = (date) => {\n            return this.overrides?.endOfISOWeek\n                ? this.overrides.endOfISOWeek(date)\n                : endOfISOWeek(date);\n        };\n        /**\n         * Returns the end of the month for the given date.\n         *\n         * @param date The original date.\n         * @returns The end of the month.\n         */\n        this.endOfMonth = (date) => {\n            return this.overrides?.endOfMonth\n                ? this.overrides.endOfMonth(date)\n                : endOfMonth(date);\n        };\n        /**\n         * Returns the end of the week for the given date.\n         *\n         * @param date The original date.\n         * @returns The end of the week.\n         */\n        this.endOfWeek = (date, options) => {\n            return this.overrides?.endOfWeek\n                ? this.overrides.endOfWeek(date, options)\n                : endOfWeek(date, this.options);\n        };\n        /**\n         * Returns the end of the year for the given date.\n         *\n         * @param date The original date.\n         * @returns The end of the year.\n         */\n        this.endOfYear = (date) => {\n            return this.overrides?.endOfYear\n                ? this.overrides.endOfYear(date)\n                : endOfYear(date);\n        };\n        /**\n         * Formats the given date using the specified format string.\n         *\n         * @param date The date to format.\n         * @param formatStr The format string.\n         * @returns The formatted date string.\n         */\n        this.format = (date, formatStr, _options) => {\n            const formatted = this.overrides?.format\n                ? this.overrides.format(date, formatStr, this.options)\n                : format(date, formatStr, this.options);\n            if (this.options.numerals && this.options.numerals !== \"latn\") {\n                return this.replaceDigits(formatted);\n            }\n            return formatted;\n        };\n        /**\n         * Returns the ISO week number for the given date.\n         *\n         * @param date The date to get the ISO week number for.\n         * @returns The ISO week number.\n         */\n        this.getISOWeek = (date) => {\n            return this.overrides?.getISOWeek\n                ? this.overrides.getISOWeek(date)\n                : getISOWeek(date);\n        };\n        /**\n         * Returns the month of the given date.\n         *\n         * @param date The date to get the month for.\n         * @returns The month.\n         */\n        this.getMonth = (date, _options) => {\n            return this.overrides?.getMonth\n                ? this.overrides.getMonth(date, this.options)\n                : getMonth(date, this.options);\n        };\n        /**\n         * Returns the year of the given date.\n         *\n         * @param date The date to get the year for.\n         * @returns The year.\n         */\n        this.getYear = (date, _options) => {\n            return this.overrides?.getYear\n                ? this.overrides.getYear(date, this.options)\n                : getYear(date, this.options);\n        };\n        /**\n         * Returns the local week number for the given date.\n         *\n         * @param date The date to get the week number for.\n         * @returns The week number.\n         */\n        this.getWeek = (date, _options) => {\n            return this.overrides?.getWeek\n                ? this.overrides.getWeek(date, this.options)\n                : getWeek(date, this.options);\n        };\n        /**\n         * Checks if the first date is after the second date.\n         *\n         * @param date The date to compare.\n         * @param dateToCompare The date to compare with.\n         * @returns True if the first date is after the second date.\n         */\n        this.isAfter = (date, dateToCompare) => {\n            return this.overrides?.isAfter\n                ? this.overrides.isAfter(date, dateToCompare)\n                : isAfter(date, dateToCompare);\n        };\n        /**\n         * Checks if the first date is before the second date.\n         *\n         * @param date The date to compare.\n         * @param dateToCompare The date to compare with.\n         * @returns True if the first date is before the second date.\n         */\n        this.isBefore = (date, dateToCompare) => {\n            return this.overrides?.isBefore\n                ? this.overrides.isBefore(date, dateToCompare)\n                : isBefore(date, dateToCompare);\n        };\n        /**\n         * Checks if the given value is a Date object.\n         *\n         * @param value The value to check.\n         * @returns True if the value is a Date object.\n         */\n        this.isDate = (value) => {\n            return this.overrides?.isDate\n                ? this.overrides.isDate(value)\n                : isDate(value);\n        };\n        /**\n         * Checks if the given dates are on the same day.\n         *\n         * @param dateLeft The first date to compare.\n         * @param dateRight The second date to compare.\n         * @returns True if the dates are on the same day.\n         */\n        this.isSameDay = (dateLeft, dateRight) => {\n            return this.overrides?.isSameDay\n                ? this.overrides.isSameDay(dateLeft, dateRight)\n                : isSameDay(dateLeft, dateRight);\n        };\n        /**\n         * Checks if the given dates are in the same month.\n         *\n         * @param dateLeft The first date to compare.\n         * @param dateRight The second date to compare.\n         * @returns True if the dates are in the same month.\n         */\n        this.isSameMonth = (dateLeft, dateRight) => {\n            return this.overrides?.isSameMonth\n                ? this.overrides.isSameMonth(dateLeft, dateRight)\n                : isSameMonth(dateLeft, dateRight);\n        };\n        /**\n         * Checks if the given dates are in the same year.\n         *\n         * @param dateLeft The first date to compare.\n         * @param dateRight The second date to compare.\n         * @returns True if the dates are in the same year.\n         */\n        this.isSameYear = (dateLeft, dateRight) => {\n            return this.overrides?.isSameYear\n                ? this.overrides.isSameYear(dateLeft, dateRight)\n                : isSameYear(dateLeft, dateRight);\n        };\n        /**\n         * Returns the latest date in the given array of dates.\n         *\n         * @param dates The array of dates to compare.\n         * @returns The latest date.\n         */\n        this.max = (dates) => {\n            return this.overrides?.max ? this.overrides.max(dates) : max(dates);\n        };\n        /**\n         * Returns the earliest date in the given array of dates.\n         *\n         * @param dates The array of dates to compare.\n         * @returns The earliest date.\n         */\n        this.min = (dates) => {\n            return this.overrides?.min ? this.overrides.min(dates) : min(dates);\n        };\n        /**\n         * Sets the month of the given date.\n         *\n         * @param date The date to set the month on.\n         * @param month The month to set (0-11).\n         * @returns The new date with the month set.\n         */\n        this.setMonth = (date, month) => {\n            return this.overrides?.setMonth\n                ? this.overrides.setMonth(date, month)\n                : setMonth(date, month);\n        };\n        /**\n         * Sets the year of the given date.\n         *\n         * @param date The date to set the year on.\n         * @param year The year to set.\n         * @returns The new date with the year set.\n         */\n        this.setYear = (date, year) => {\n            return this.overrides?.setYear\n                ? this.overrides.setYear(date, year)\n                : setYear(date, year);\n        };\n        /**\n         * Returns the start of the broadcast week for the given date.\n         *\n         * @param date The original date.\n         * @returns The start of the broadcast week.\n         */\n        this.startOfBroadcastWeek = (date, _dateLib) => {\n            return this.overrides?.startOfBroadcastWeek\n                ? this.overrides.startOfBroadcastWeek(date, this)\n                : startOfBroadcastWeek(date, this);\n        };\n        /**\n         * Returns the start of the day for the given date.\n         *\n         * @param date The original date.\n         * @returns The start of the day.\n         */\n        this.startOfDay = (date) => {\n            return this.overrides?.startOfDay\n                ? this.overrides.startOfDay(date)\n                : startOfDay(date);\n        };\n        /**\n         * Returns the start of the ISO week for the given date.\n         *\n         * @param date The original date.\n         * @returns The start of the ISO week.\n         */\n        this.startOfISOWeek = (date) => {\n            return this.overrides?.startOfISOWeek\n                ? this.overrides.startOfISOWeek(date)\n                : startOfISOWeek(date);\n        };\n        /**\n         * Returns the start of the month for the given date.\n         *\n         * @param date The original date.\n         * @returns The start of the month.\n         */\n        this.startOfMonth = (date) => {\n            return this.overrides?.startOfMonth\n                ? this.overrides.startOfMonth(date)\n                : startOfMonth(date);\n        };\n        /**\n         * Returns the start of the week for the given date.\n         *\n         * @param date The original date.\n         * @returns The start of the week.\n         */\n        this.startOfWeek = (date, _options) => {\n            return this.overrides?.startOfWeek\n                ? this.overrides.startOfWeek(date, this.options)\n                : startOfWeek(date, this.options);\n        };\n        /**\n         * Returns the start of the year for the given date.\n         *\n         * @param date The original date.\n         * @returns The start of the year.\n         */\n        this.startOfYear = (date) => {\n            return this.overrides?.startOfYear\n                ? this.overrides.startOfYear(date)\n                : startOfYear(date);\n        };\n        this.options = { locale: enUS, ...options };\n        this.overrides = overrides;\n    }\n    /**\n     * Generates a mapping of Arabic digits (0-9) to the target numbering system\n     * digits.\n     *\n     * @since 9.5.0\n     * @returns A record mapping Arabic digits to the target numerals.\n     */\n    getDigitMap() {\n        const { numerals = \"latn\" } = this.options;\n        // Use Intl.NumberFormat to create a formatter with the specified numbering system\n        const formatter = new Intl.NumberFormat(\"en-US\", {\n            numberingSystem: numerals,\n        });\n        // Map Arabic digits (0-9) to the target numerals\n        const digitMap = {};\n        for (let i = 0; i < 10; i++) {\n            digitMap[i.toString()] = formatter.format(i);\n        }\n        return digitMap;\n    }\n    /**\n     * Replaces Arabic digits in a string with the target numbering system digits.\n     *\n     * @since 9.5.0\n     * @param input The string containing Arabic digits.\n     * @returns The string with digits replaced.\n     */\n    replaceDigits(input) {\n        const digitMap = this.getDigitMap();\n        return input.replace(/\\d/g, (digit) => digitMap[digit] || digit);\n    }\n    /**\n     * Formats a number using the configured numbering system.\n     *\n     * @since 9.5.0\n     * @param value The number to format.\n     * @returns The formatted number as a string.\n     */\n    formatNumber(value) {\n        return this.replaceDigits(value.toString());\n    }\n    /**\n     * Returns the preferred ordering for month and year labels for the current\n     * locale.\n     */\n    getMonthYearOrder() {\n        const code = this.options.locale?.code;\n        if (!code) {\n            return \"month-first\";\n        }\n        return DateLib.yearFirstLocales.has(code) ? \"year-first\" : \"month-first\";\n    }\n    /**\n     * Formats the month/year pair respecting locale conventions.\n     *\n     * @since 9.11.0\n     */\n    formatMonthYear(date) {\n        const { locale, timeZone, numerals } = this.options;\n        const localeCode = locale?.code;\n        if (localeCode && DateLib.yearFirstLocales.has(localeCode)) {\n            try {\n                const intl = new Intl.DateTimeFormat(localeCode, {\n                    month: \"long\",\n                    year: \"numeric\",\n                    timeZone,\n                    numberingSystem: numerals,\n                });\n                const formatted = intl.format(date);\n                return formatted;\n            }\n            catch {\n                // Fallback to date-fns formatting below.\n            }\n        }\n        const pattern = this.getMonthYearOrder() === \"year-first\" ? \"y LLLL\" : \"LLLL y\";\n        return this.format(date, pattern);\n    }\n}\nDateLib.yearFirstLocales = new Set([\n    \"eu\",\n    \"hu\",\n    \"ja\",\n    \"ja-Hira\",\n    \"ja-JP\",\n    \"ko\",\n    \"ko-KR\",\n    \"lt\",\n    \"lt-LT\",\n    \"lv\",\n    \"lv-LV\",\n    \"mn\",\n    \"mn-MN\",\n    \"zh\",\n    \"zh-CN\",\n    \"zh-HK\",\n    \"zh-TW\",\n]);\n/** The default locale (English). */\nexport { enUS as defaultLocale } from \"../locale/en-US.js\";\n/**\n * The default date library with English locale.\n *\n * @since 9.2.0\n */\nexport const defaultDateLib = new DateLib();\n/**\n * @ignore\n * @deprecated Use `defaultDateLib`.\n */\nexport const dateLib = defaultDateLib;\n","import { defaultDateLib } from \"./DateLib.js\";\n/**\n * Represents a day displayed in the calendar.\n *\n * In DayPicker, a `CalendarDay` is a wrapper around a `Date` object that\n * provides additional information about the day, such as whether it belongs to\n * the displayed month.\n */\nexport class CalendarDay {\n    constructor(date, displayMonth, dateLib = defaultDateLib) {\n        this.date = date;\n        this.displayMonth = displayMonth;\n        this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));\n        this.dateLib = dateLib;\n        this.isoDate = dateLib.format(date, \"yyyy-MM-dd\");\n        this.displayMonthId = dateLib.format(displayMonth, \"yyyy-MM\");\n        this.dateMonthId = dateLib.format(date, \"yyyy-MM\");\n    }\n    /**\n     * Checks if this day is equal to another `CalendarDay`, considering both the\n     * date and the displayed month.\n     *\n     * @param day The `CalendarDay` to compare with.\n     * @returns `true` if the days are equal, otherwise `false`.\n     */\n    isEqualTo(day) {\n        return (this.dateLib.isSameDay(day.date, this.date) &&\n            this.dateLib.isSameMonth(day.displayMonth, this.displayMonth));\n    }\n}\n","/**\n * Represents a month in a calendar year.\n *\n * A `CalendarMonth` contains the weeks within the month and the date of the\n * month.\n */\nexport class CalendarMonth {\n    constructor(month, weeks) {\n        this.date = month;\n        this.weeks = weeks;\n    }\n}\n","/**\n * Represents a week in a calendar month.\n *\n * A `CalendarWeek` contains the days within the week and the week number.\n */\nexport class CalendarWeek {\n    constructor(weekNumber, days) {\n        this.days = days;\n        this.weekNumber = weekNumber;\n    }\n}\n","import React from \"react\";\n/**\n * Render the button elements in the calendar.\n *\n * @private\n * @deprecated Use `PreviousMonthButton` or `@link NextMonthButton` instead.\n */\nexport function Button(props) {\n    return React.createElement(\"button\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the label in the month caption.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function CaptionLabel(props) {\n    return React.createElement(\"span\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the chevron icon used in the navigation buttons and dropdowns.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Chevron(props) {\n    const { size = 24, orientation = \"left\", className } = props;\n    return (\n    // biome-ignore lint/a11y/noSvgWithoutTitle: handled by the parent component\n    React.createElement(\"svg\", { className: className, width: size, height: size, viewBox: \"0 0 24 24\" },\n        orientation === \"up\" && (React.createElement(\"polygon\", { points: \"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28\" })),\n        orientation === \"down\" && (React.createElement(\"polygon\", { points: \"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72\" })),\n        orientation === \"left\" && (React.createElement(\"polygon\", { points: \"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20\" })),\n        orientation === \"right\" && (React.createElement(\"polygon\", { points: \"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20\" }))));\n}\n","import React from \"react\";\n/**\n * Render a grid cell for a specific day in the calendar.\n *\n * Handles interaction and focus for the day. If you only need to change the\n * content of the day cell, consider swapping the `DayButton` component\n * instead.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Day(props) {\n    const { day, modifiers, ...tdProps } = props;\n    return React.createElement(\"td\", { ...tdProps });\n}\n","import React from \"react\";\n/**\n * Render a button for a specific day in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DayButton(props) {\n    const { day, modifiers, ...buttonProps } = props;\n    const ref = React.useRef(null);\n    React.useEffect(() => {\n        if (modifiers.focused)\n            ref.current?.focus();\n    }, [modifiers.focused]);\n    return React.createElement(\"button\", { ref: ref, ...buttonProps });\n}\n","/**\n * Enum representing the UI elements composing DayPicker. These elements are\n * mapped to {@link CustomComponents}, {@link ClassNames}, and {@link Styles}.\n *\n * Some elements are extended by flags and modifiers.\n */\nexport var UI;\n(function (UI) {\n    /** The root component displaying the months and the navigation bar. */\n    UI[\"Root\"] = \"root\";\n    /** The Chevron SVG element used by navigation buttons and dropdowns. */\n    UI[\"Chevron\"] = \"chevron\";\n    /**\n     * The grid cell with the day's date. Extended by {@link DayFlag} and\n     * {@link SelectionState}.\n     */\n    UI[\"Day\"] = \"day\";\n    /** The button containing the formatted day's date, inside the grid cell. */\n    UI[\"DayButton\"] = \"day_button\";\n    /** The caption label of the month (when not showing the dropdown navigation). */\n    UI[\"CaptionLabel\"] = \"caption_label\";\n    /** The container of the dropdown navigation (when enabled). */\n    UI[\"Dropdowns\"] = \"dropdowns\";\n    /** The dropdown element to select for years and months. */\n    UI[\"Dropdown\"] = \"dropdown\";\n    /** The container element of the dropdown. */\n    UI[\"DropdownRoot\"] = \"dropdown_root\";\n    /** The root element of the footer. */\n    UI[\"Footer\"] = \"footer\";\n    /** The month grid. */\n    UI[\"MonthGrid\"] = \"month_grid\";\n    /** Contains the dropdown navigation or the caption label. */\n    UI[\"MonthCaption\"] = \"month_caption\";\n    /** The dropdown with the months. */\n    UI[\"MonthsDropdown\"] = \"months_dropdown\";\n    /** Wrapper of the month grid. */\n    UI[\"Month\"] = \"month\";\n    /** The container of the displayed months. */\n    UI[\"Months\"] = \"months\";\n    /** The navigation bar with the previous and next buttons. */\n    UI[\"Nav\"] = \"nav\";\n    /**\n     * The next month button in the navigation. *\n     *\n     * @since 9.1.0\n     */\n    UI[\"NextMonthButton\"] = \"button_next\";\n    /**\n     * The previous month button in the navigation.\n     *\n     * @since 9.1.0\n     */\n    UI[\"PreviousMonthButton\"] = \"button_previous\";\n    /** The row containing the week. */\n    UI[\"Week\"] = \"week\";\n    /** The group of row weeks in a month (`tbody`). */\n    UI[\"Weeks\"] = \"weeks\";\n    /** The column header with the weekday. */\n    UI[\"Weekday\"] = \"weekday\";\n    /** The row grouping the weekdays in the column headers. */\n    UI[\"Weekdays\"] = \"weekdays\";\n    /** The cell containing the week number. */\n    UI[\"WeekNumber\"] = \"week_number\";\n    /** The cell header of the week numbers column. */\n    UI[\"WeekNumberHeader\"] = \"week_number_header\";\n    /** The dropdown with the years. */\n    UI[\"YearsDropdown\"] = \"years_dropdown\";\n})(UI || (UI = {}));\n/** Enum representing flags for the {@link UI.Day} element. */\nexport var DayFlag;\n(function (DayFlag) {\n    /** The day is disabled. */\n    DayFlag[\"disabled\"] = \"disabled\";\n    /** The day is hidden. */\n    DayFlag[\"hidden\"] = \"hidden\";\n    /** The day is outside the current month. */\n    DayFlag[\"outside\"] = \"outside\";\n    /** The day is focused. */\n    DayFlag[\"focused\"] = \"focused\";\n    /** The day is today. */\n    DayFlag[\"today\"] = \"today\";\n})(DayFlag || (DayFlag = {}));\n/**\n * Enum representing selection states that can be applied to the {@link UI.Day}\n * element in selection mode.\n */\nexport var SelectionState;\n(function (SelectionState) {\n    /** The day is at the end of a selected range. */\n    SelectionState[\"range_end\"] = \"range_end\";\n    /** The day is at the middle of a selected range. */\n    SelectionState[\"range_middle\"] = \"range_middle\";\n    /** The day is at the start of a selected range. */\n    SelectionState[\"range_start\"] = \"range_start\";\n    /** The day is selected. */\n    SelectionState[\"selected\"] = \"selected\";\n})(SelectionState || (SelectionState = {}));\n/**\n * Enum representing different animation states for transitioning between\n * months.\n */\nexport var Animation;\n(function (Animation) {\n    /** The entering weeks when they appear before the exiting month. */\n    Animation[\"weeks_before_enter\"] = \"weeks_before_enter\";\n    /** The exiting weeks when they disappear before the entering month. */\n    Animation[\"weeks_before_exit\"] = \"weeks_before_exit\";\n    /** The entering weeks when they appear after the exiting month. */\n    Animation[\"weeks_after_enter\"] = \"weeks_after_enter\";\n    /** The exiting weeks when they disappear after the entering month. */\n    Animation[\"weeks_after_exit\"] = \"weeks_after_exit\";\n    /** The entering caption when it appears after the exiting month. */\n    Animation[\"caption_after_enter\"] = \"caption_after_enter\";\n    /** The exiting caption when it disappears after the entering month. */\n    Animation[\"caption_after_exit\"] = \"caption_after_exit\";\n    /** The entering caption when it appears before the exiting month. */\n    Animation[\"caption_before_enter\"] = \"caption_before_enter\";\n    /** The exiting caption when it disappears before the entering month. */\n    Animation[\"caption_before_exit\"] = \"caption_before_exit\";\n})(Animation || (Animation = {}));\n","import React from \"react\";\nimport { UI } from \"../UI.js\";\n/**\n * Render a dropdown component for navigation in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Dropdown(props) {\n    const { options, className, components, classNames, ...selectProps } = props;\n    const cssClassSelect = [classNames[UI.Dropdown], className].join(\" \");\n    const selectedOption = options?.find(({ value }) => value === selectProps.value);\n    return (React.createElement(\"span\", { \"data-disabled\": selectProps.disabled, className: classNames[UI.DropdownRoot] },\n        React.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled }) => (React.createElement(components.Option, { key: value, value: value, disabled: disabled }, label)))),\n        React.createElement(\"span\", { className: classNames[UI.CaptionLabel], \"aria-hidden\": true },\n            selectedOption?.label,\n            React.createElement(components.Chevron, { orientation: \"down\", size: 18, className: classNames[UI.Chevron] }))));\n}\n","import React from \"react\";\n/**\n * Render the navigation dropdowns for the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function DropdownNav(props) {\n    return React.createElement(\"div\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the footer of the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Footer(props) {\n    return React.createElement(\"div\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the grid with the weekday header row and the weeks for a specific\n * month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Month(props) {\n    const { calendarMonth, displayIndex, ...divProps } = props;\n    return React.createElement(\"div\", { ...divProps }, props.children);\n}\n","import React from \"react\";\n/**\n * Render the caption for a month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthCaption(props) {\n    const { calendarMonth, displayIndex, ...divProps } = props;\n    return React.createElement(\"div\", { ...divProps });\n}\n","import React from \"react\";\n/**\n * Render the grid of days for a specific month.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthGrid(props) {\n    return React.createElement(\"table\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render a container wrapping the month grids.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Months(props) {\n    return React.createElement(\"div\", { ...props });\n}\n","import { createContext, useContext } from \"react\";\n/** @ignore */\nexport const dayPickerContext = createContext(undefined);\n/**\n * Provides access to the DayPicker context, which includes properties and\n * methods to interact with the DayPicker component. This hook must be used\n * within a custom component.\n *\n * @template T - Use this type to refine the returned context type with a\n *   specific selection mode.\n * @returns The context to work with DayPicker.\n * @throws {Error} If the hook is used outside of a DayPicker provider.\n * @group Hooks\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function useDayPicker() {\n    const context = useContext(dayPickerContext);\n    if (context === undefined) {\n        throw new Error(\"useDayPicker() must be used within a custom component.\");\n    }\n    return context;\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render a dropdown to navigate between months in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function MonthsDropdown(props) {\n    const { components } = useDayPicker();\n    return React.createElement(components.Dropdown, { ...props });\n}\n","import React, { useCallback, } from \"react\";\nimport { UI } from \"../UI.js\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the navigation toolbar with buttons to navigate between months.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Nav(props) {\n    const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;\n    const { components, classNames, labels: { labelPrevious, labelNext }, } = useDayPicker();\n    const handleNextClick = useCallback((e) => {\n        if (nextMonth) {\n            onNextClick?.(e);\n        }\n    }, [nextMonth, onNextClick]);\n    const handlePreviousClick = useCallback((e) => {\n        if (previousMonth) {\n            onPreviousClick?.(e);\n        }\n    }, [previousMonth, onPreviousClick]);\n    return (React.createElement(\"nav\", { ...navProps },\n        React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, \"aria-disabled\": previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: handlePreviousClick },\n            React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: \"left\" })),\n        React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, \"aria-disabled\": nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: handleNextClick },\n            React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, orientation: \"right\", className: classNames[UI.Chevron] }))));\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the button to navigate to the next month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function NextMonthButton(props) {\n    const { components } = useDayPicker();\n    return React.createElement(components.Button, { ...props });\n}\n","import React from \"react\";\n/**\n * Render an `option` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Option(props) {\n    return React.createElement(\"option\", { ...props });\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render the button to navigate to the previous month in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function PreviousMonthButton(props) {\n    const { components } = useDayPicker();\n    return React.createElement(components.Button, { ...props });\n}\n","import React from \"react\";\n/**\n * Render the root element of the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Root(props) {\n    const { rootRef, ...rest } = props;\n    return React.createElement(\"div\", { ...rest, ref: rootRef });\n}\n","import React from \"react\";\n/**\n * Render a `select` element.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Select(props) {\n    return React.createElement(\"select\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render a table row representing a week in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Week(props) {\n    const { week, ...trProps } = props;\n    return React.createElement(\"tr\", { ...trProps });\n}\n","import React from \"react\";\n/**\n * Render a table header cell with the name of a weekday (e.g., \"Mo\", \"Tu\").\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekday(props) {\n    return React.createElement(\"th\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the table row containing the weekday names.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weekdays(props) {\n    return (React.createElement(\"thead\", { \"aria-hidden\": true },\n        React.createElement(\"tr\", { ...props })));\n}\n","import React from \"react\";\n/**\n * Render a table cell displaying the number of the week.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumber(props) {\n    const { week, ...thProps } = props;\n    return React.createElement(\"th\", { ...thProps });\n}\n","import React from \"react\";\n/**\n * Render the header cell for the week numbers column.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function WeekNumberHeader(props) {\n    return React.createElement(\"th\", { ...props });\n}\n","import React from \"react\";\n/**\n * Render the container for the weeks in the month grid.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function Weeks(props) {\n    return React.createElement(\"tbody\", { ...props });\n}\n","import React from \"react\";\nimport { useDayPicker } from \"../useDayPicker.js\";\n/**\n * Render a dropdown to navigate between years in the calendar.\n *\n * @group Components\n * @see https://daypicker.dev/guides/custom-components\n */\nexport function YearsDropdown(props) {\n    const { components } = useDayPicker();\n    return React.createElement(components.Dropdown, { ...props });\n}\n","import { defaultDateLib } from \"../classes/index.js\";\n/**\n * Checks if a given date is within a specified date range.\n *\n * @since 9.0.0\n * @param range - The date range to check against.\n * @param date - The date to check.\n * @param excludeEnds - If `true`, the range's start and end dates are excluded.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the date is within the range, otherwise `false`.\n * @group Utilities\n */\nexport function rangeIncludesDate(range, date, excludeEnds = false, dateLib = defaultDateLib) {\n    let { from, to } = range;\n    const { differenceInCalendarDays, isSameDay } = dateLib;\n    if (from && to) {\n        const isRangeInverted = differenceInCalendarDays(to, from) < 0;\n        if (isRangeInverted) {\n            [from, to] = [to, from];\n        }\n        const isInRange = differenceInCalendarDays(date, from) >= (excludeEnds ? 1 : 0) &&\n            differenceInCalendarDays(to, date) >= (excludeEnds ? 1 : 0);\n        return isInRange;\n    }\n    if (!excludeEnds && to) {\n        return isSameDay(to, date);\n    }\n    if (!excludeEnds && from) {\n        return isSameDay(from, date);\n    }\n    return false;\n}\n/**\n * @private\n * @deprecated Use {@link rangeIncludesDate} instead.\n */\nexport const isDateInRange = (range, date) => rangeIncludesDate(range, date, false, defaultDateLib);\n","/**\n * Checks if the given value is of type {@link DateInterval}.\n *\n * @param matcher - The value to check.\n * @returns `true` if the value is a {@link DateInterval}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateInterval(matcher) {\n    return Boolean(matcher &&\n        typeof matcher === \"object\" &&\n        \"before\" in matcher &&\n        \"after\" in matcher);\n}\n/**\n * Checks if the given value is of type {@link DateRange}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateRange}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateRange(value) {\n    return Boolean(value && typeof value === \"object\" && \"from\" in value);\n}\n/**\n * Checks if the given value is of type {@link DateAfter}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateAfter}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateAfterType(value) {\n    return Boolean(value && typeof value === \"object\" && \"after\" in value);\n}\n/**\n * Checks if the given value is of type {@link DateBefore}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DateBefore}, otherwise `false`.\n * @group Utilities\n */\nexport function isDateBeforeType(value) {\n    return Boolean(value && typeof value === \"object\" && \"before\" in value);\n}\n/**\n * Checks if the given value is of type {@link DayOfWeek}.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a {@link DayOfWeek}, otherwise `false`.\n * @group Utilities\n */\nexport function isDayOfWeekType(value) {\n    return Boolean(value && typeof value === \"object\" && \"dayOfWeek\" in value);\n}\n/**\n * Checks if the given value is an array of valid dates.\n *\n * @private\n * @param value - The value to check.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the value is an array of valid dates, otherwise `false`.\n */\nexport function isDatesArray(value, dateLib) {\n    return Array.isArray(value) && value.every(dateLib.isDate);\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType, } from \"./typeguards.js\";\n/**\n * Checks if a given date matches at least one of the specified {@link Matcher}.\n *\n * @param date - The date to check.\n * @param matchers - The matchers to check against.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the date matches any of the matchers, otherwise `false`.\n * @group Utilities\n */\nexport function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {\n    const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;\n    const { isSameDay, differenceInCalendarDays, isAfter } = dateLib;\n    return matchersArr.some((matcher) => {\n        if (typeof matcher === \"boolean\") {\n            return matcher;\n        }\n        if (dateLib.isDate(matcher)) {\n            return isSameDay(date, matcher);\n        }\n        if (isDatesArray(matcher, dateLib)) {\n            return matcher.some((matcherDate) => isSameDay(date, matcherDate));\n        }\n        if (isDateRange(matcher)) {\n            return rangeIncludesDate(matcher, date, false, dateLib);\n        }\n        if (isDayOfWeekType(matcher)) {\n            if (!Array.isArray(matcher.dayOfWeek)) {\n                return matcher.dayOfWeek === date.getDay();\n            }\n            return matcher.dayOfWeek.includes(date.getDay());\n        }\n        if (isDateInterval(matcher)) {\n            const diffBefore = differenceInCalendarDays(matcher.before, date);\n            const diffAfter = differenceInCalendarDays(matcher.after, date);\n            const isDayBefore = diffBefore > 0;\n            const isDayAfter = diffAfter < 0;\n            const isClosedInterval = isAfter(matcher.before, matcher.after);\n            if (isClosedInterval) {\n                return isDayAfter && isDayBefore;\n            }\n            else {\n                return isDayBefore || isDayAfter;\n            }\n        }\n        if (isDateAfterType(matcher)) {\n            return differenceInCalendarDays(date, matcher.after) > 0;\n        }\n        if (isDateBeforeType(matcher)) {\n            return differenceInCalendarDays(matcher.before, date) > 0;\n        }\n        if (typeof matcher === \"function\") {\n            return matcher(date);\n        }\n        return false;\n    });\n}\n/**\n * @private\n * @deprecated Use {@link dateMatchModifiers} instead.\n */\nexport const isMatch = dateMatchModifiers;\n","import { DayFlag } from \"../UI.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\n/**\n * Creates a function to retrieve the modifiers for a given day.\n *\n * This function calculates both internal and custom modifiers for each day\n * based on the provided calendar days and DayPicker props.\n *\n * @private\n * @param days The array of `CalendarDay` objects to process.\n * @param props The DayPicker props, including modifiers and configuration\n *   options.\n * @param dateLib The date library to use for date manipulation.\n * @returns A function that retrieves the modifiers for a given `CalendarDay`.\n */\nexport function createGetModifiers(days, props, navStart, navEnd, dateLib) {\n    const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today = dateLib.today(), } = props;\n    const { isSameDay, isSameMonth, startOfMonth, isBefore, endOfMonth, isAfter, } = dateLib;\n    const computedNavStart = navStart && startOfMonth(navStart);\n    const computedNavEnd = navEnd && endOfMonth(navEnd);\n    const internalModifiersMap = {\n        [DayFlag.focused]: [],\n        [DayFlag.outside]: [],\n        [DayFlag.disabled]: [],\n        [DayFlag.hidden]: [],\n        [DayFlag.today]: [],\n    };\n    const customModifiersMap = {};\n    for (const day of days) {\n        const { date, displayMonth } = day;\n        const isOutside = Boolean(displayMonth && !isSameMonth(date, displayMonth));\n        const isBeforeNavStart = Boolean(computedNavStart && isBefore(date, computedNavStart));\n        const isAfterNavEnd = Boolean(computedNavEnd && isAfter(date, computedNavEnd));\n        const isDisabled = Boolean(disabled && dateMatchModifiers(date, disabled, dateLib));\n        const isHidden = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) ||\n            isBeforeNavStart ||\n            isAfterNavEnd ||\n            // Broadcast calendar will show outside days as default\n            (!broadcastCalendar && !showOutsideDays && isOutside) ||\n            (broadcastCalendar && showOutsideDays === false && isOutside);\n        const isToday = isSameDay(date, today);\n        if (isOutside)\n            internalModifiersMap.outside.push(day);\n        if (isDisabled)\n            internalModifiersMap.disabled.push(day);\n        if (isHidden)\n            internalModifiersMap.hidden.push(day);\n        if (isToday)\n            internalModifiersMap.today.push(day);\n        // Add custom modifiers\n        if (modifiers) {\n            Object.keys(modifiers).forEach((name) => {\n                const modifierValue = modifiers?.[name];\n                const isMatch = modifierValue\n                    ? dateMatchModifiers(date, modifierValue, dateLib)\n                    : false;\n                if (!isMatch)\n                    return;\n                if (customModifiersMap[name]) {\n                    customModifiersMap[name].push(day);\n                }\n                else {\n                    customModifiersMap[name] = [day];\n                }\n            });\n        }\n    }\n    return (day) => {\n        // Initialize all the modifiers to false\n        const dayFlags = {\n            [DayFlag.focused]: false,\n            [DayFlag.disabled]: false,\n            [DayFlag.hidden]: false,\n            [DayFlag.outside]: false,\n            [DayFlag.today]: false,\n        };\n        const customModifiers = {};\n        // Find the modifiers for the given day\n        for (const name in internalModifiersMap) {\n            const days = internalModifiersMap[name];\n            dayFlags[name] = days.some((d) => d === day);\n        }\n        for (const name in customModifiersMap) {\n            customModifiers[name] = customModifiersMap[name].some((d) => d === day);\n        }\n        return {\n            ...dayFlags,\n            // custom modifiers should override all the previous ones\n            ...customModifiers,\n        };\n    };\n}\n","import { DayFlag, SelectionState, UI } from \"../UI.js\";\n/**\n * Returns the class names for a day based on its modifiers.\n *\n * This function combines the base class name for the day with any class names\n * associated with active modifiers.\n *\n * @param modifiers The modifiers applied to the day.\n * @param classNames The base class names for the calendar elements.\n * @param modifiersClassNames The class names associated with specific\n *   modifiers.\n * @returns An array of class names for the day.\n */\nexport function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {\n    const modifierClassNames = Object.entries(modifiers)\n        .filter(([, active]) => active === true)\n        .reduce((previousValue, [key]) => {\n        if (modifiersClassNames[key]) {\n            previousValue.push(modifiersClassNames[key]);\n        }\n        else if (classNames[DayFlag[key]]) {\n            previousValue.push(classNames[DayFlag[key]]);\n        }\n        else if (classNames[SelectionState[key]]) {\n            previousValue.push(classNames[SelectionState[key]]);\n        }\n        return previousValue;\n    }, [classNames[UI.Day]]);\n    return modifierClassNames;\n}\n","import * as components from \"../components/custom-components.js\";\n/**\n * Merges custom components from the props with the default components.\n *\n * This function ensures that any custom components provided in the props\n * override the default components.\n *\n * @param customComponents The custom components provided in the DayPicker\n *   props.\n * @returns An object containing the merged components.\n */\nexport function getComponents(customComponents) {\n    return {\n        ...components,\n        ...customComponents,\n    };\n}\n","/**\n * Extracts `data-` attributes from the DayPicker props.\n *\n * This function collects all `data-` attributes from the props and adds\n * additional attributes based on the DayPicker configuration.\n *\n * @param props The DayPicker props.\n * @returns An object containing the `data-` attributes.\n */\nexport function getDataAttributes(props) {\n    const dataAttributes = {\n        \"data-mode\": props.mode ?? undefined,\n        \"data-required\": \"required\" in props ? props.required : undefined,\n        \"data-multiple-months\": (props.numberOfMonths && props.numberOfMonths > 1) || undefined,\n        \"data-week-numbers\": props.showWeekNumber || undefined,\n        \"data-broadcast-calendar\": props.broadcastCalendar || undefined,\n        \"data-nav-layout\": props.navLayout || undefined,\n    };\n    Object.entries(props).forEach(([key, val]) => {\n        if (key.startsWith(\"data-\")) {\n            dataAttributes[key] = val;\n        }\n    });\n    return dataAttributes;\n}\n","import { Animation, DayFlag, SelectionState, UI } from \"../UI.js\";\n/**\n * Returns the default class names for the UI elements.\n *\n * This function generates a mapping of default class names for various UI\n * elements, day flags, selection states, and animations.\n *\n * @returns An object containing the default class names.\n * @group Utilities\n */\nexport function getDefaultClassNames() {\n    const classNames = {};\n    for (const key in UI) {\n        classNames[UI[key]] =\n            `rdp-${UI[key]}`;\n    }\n    for (const key in DayFlag) {\n        classNames[DayFlag[key]] =\n            `rdp-${DayFlag[key]}`;\n    }\n    for (const key in SelectionState) {\n        classNames[SelectionState[key]] =\n            `rdp-${SelectionState[key]}`;\n    }\n    for (const key in Animation) {\n        classNames[Animation[key]] =\n            `rdp-${Animation[key]}`;\n    }\n    return classNames;\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the caption of the month.\n *\n * @defaultValue Locale-specific month/year order (e.g., \"November 2022\").\n * @param month The date representing the month.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n *   instance is created.\n * @returns The formatted caption as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatCaption(month, options, dateLib) {\n    const lib = dateLib ?? new DateLib(options);\n    return lib.formatMonthYear(month);\n}\n/**\n * @private\n * @deprecated Use {@link formatCaption} instead.\n * @group Formatters\n */\nexport const formatMonthCaption = formatCaption;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the day date shown in the day cell.\n *\n * @defaultValue `d` (e.g., \"1\").\n * @param date The date to format.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n *   instance is created.\n * @returns The formatted day as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatDay(date, options, dateLib) {\n    return (dateLib ?? new DateLib(options)).format(date, \"d\");\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the month for the dropdown option label.\n *\n * @defaultValue The localized full month name.\n * @param month The date representing the month.\n * @param dateLib The date library to use for formatting. Defaults to\n *   `defaultDateLib`.\n * @returns The formatted month name as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatMonthDropdown(month, dateLib = defaultDateLib) {\n    return dateLib.format(month, \"LLLL\");\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the name of a weekday to be displayed in the weekdays header.\n *\n * @defaultValue `cccccc` (e.g., \"Mo\" for Monday).\n * @param weekday The date representing the weekday.\n * @param options Configuration options for the date library.\n * @param dateLib The date library to use for formatting. If not provided, a new\n *   instance is created.\n * @returns The formatted weekday name as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekdayName(weekday, options, dateLib) {\n    return (dateLib ?? new DateLib(options)).format(weekday, \"cccccc\");\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the week number.\n *\n * @defaultValue The week number as a string, with a leading zero for single-digit numbers.\n * @param weekNumber The week number to format.\n * @param dateLib The date library to use for formatting. Defaults to\n *   `defaultDateLib`.\n * @returns The formatted week number as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumber(weekNumber, dateLib = defaultDateLib) {\n    if (weekNumber < 10) {\n        return dateLib.formatNumber(`0${weekNumber.toLocaleString()}`);\n    }\n    return dateLib.formatNumber(`${weekNumber.toLocaleString()}`);\n}\n","/**\n * Formats the header for the week number column.\n *\n * @defaultValue An empty string `\"\"`.\n * @returns The formatted week number header as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatWeekNumberHeader() {\n    return ``;\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Formats the year for the dropdown option label.\n *\n * @param year The year to format.\n * @param dateLib The date library to use for formatting. Defaults to\n *   `defaultDateLib`.\n * @returns The formatted year as a string.\n * @group Formatters\n * @see https://daypicker.dev/docs/translation#custom-formatters\n */\nexport function formatYearDropdown(year, dateLib = defaultDateLib) {\n    return dateLib.format(year, \"yyyy\");\n}\n/**\n * @private\n * @deprecated Use `formatYearDropdown` instead.\n * @group Formatters\n */\nexport const formatYearCaption = formatYearDropdown;\n","import * as defaultFormatters from \"../formatters/index.js\";\n/**\n * Merges custom formatters from the props with the default formatters.\n *\n * @param customFormatters The custom formatters provided in the DayPicker\n *   props.\n * @returns The merged formatters object.\n */\nexport function getFormatters(customFormatters) {\n    if (customFormatters?.formatMonthCaption && !customFormatters.formatCaption) {\n        customFormatters.formatCaption = customFormatters.formatMonthCaption;\n    }\n    if (customFormatters?.formatYearCaption &&\n        !customFormatters.formatYearDropdown) {\n        customFormatters.formatYearDropdown = customFormatters.formatYearCaption;\n    }\n    return {\n        ...defaultFormatters,\n        ...customFormatters,\n    };\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a day button.\n *\n * Use the `modifiers` argument to provide additional context for the label,\n * such as indicating if the day is \"today\" or \"selected.\"\n *\n * @defaultValue The formatted date.\n * @param date - The date to format.\n * @param modifiers - The modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the day button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelDayButton(date, modifiers, options, dateLib) {\n    let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n    if (modifiers.today)\n        label = `Today, ${label}`;\n    if (modifiers.selected)\n        label = `${label}, selected`;\n    return label;\n}\n/**\n * @ignore\n * @deprecated Use `labelDayButton` instead.\n */\nexport const labelDay = labelDayButton;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for the month grid, which is announced when entering\n * the grid.\n *\n * @defaultValue Locale-specific month/year order (e.g., \"November 2022\").\n * @param date - The date representing the month.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the month grid.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGrid(date, options, dateLib) {\n    const lib = dateLib ?? new DateLib(options);\n    return lib.formatMonthYear(date);\n}\n/**\n * @ignore\n * @deprecated Use {@link labelGrid} instead.\n */\nexport const labelCaption = labelGrid;\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the label for a day grid cell when the calendar is not interactive.\n *\n * @param date - The date to format.\n * @param modifiers - Optional modifiers providing context for the day.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The label for the day grid cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelGridcell(date, modifiers, options, dateLib) {\n    let label = (dateLib ?? new DateLib(options)).format(date, \"PPPP\");\n    if (modifiers?.today) {\n        label = `Today, ${label}`;\n    }\n    return label;\n}\n","/**\n * Generates the ARIA label for the months dropdown.\n *\n * @defaultValue `\"Choose the Month\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the months dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelMonthDropdown(_options) {\n    return \"Choose the Month\";\n}\n","/**\n * Generates the ARIA label for the navigation toolbar.\n *\n * @defaultValue `\"\"`\n * @returns The ARIA label for the navigation toolbar.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNav() {\n    return \"\";\n}\n","const defaultLabel = \"Go to the Next Month\";\n/**\n * Generates the ARIA label for the \"next month\" button.\n *\n * @defaultValue `\"Go to the Next Month\"`\n * @param month - The date representing the next month, or `undefined` if there\n *   is no next month.\n * @returns The ARIA label for the \"next month\" button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelNext(_month, _options) {\n    return defaultLabel;\n}\n","/**\n * Generates the ARIA label for the \"previous month\" button.\n *\n * @defaultValue `\"Go to the Previous Month\"`\n * @param month - The date representing the previous month, or `undefined` if\n *   there is no previous month.\n * @returns The ARIA label for the \"previous month\" button.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelPrevious(_month) {\n    return \"Go to the Previous Month\";\n}\n","import { DateLib } from \"../classes/DateLib.js\";\n/**\n * Generates the ARIA label for a weekday column header.\n *\n * @defaultValue `\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"`\n * @param date - The date representing the weekday.\n * @param options - Optional configuration for the date formatting library.\n * @param dateLib - An optional instance of the date formatting library.\n * @returns The ARIA label for the weekday column header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekday(date, options, dateLib) {\n    return (dateLib ?? new DateLib(options)).format(date, \"cccc\");\n}\n","/**\n * Generates the ARIA label for the week number cell (the first cell in a row).\n *\n * @defaultValue `Week ${weekNumber}`\n * @param weekNumber - The number of the week.\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumber(weekNumber, _options) {\n    return `Week ${weekNumber}`;\n}\n","/**\n * Generates the ARIA label for the week number header element.\n *\n * @defaultValue `\"Week Number\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumberHeader(_options) {\n    return \"Week Number\";\n}\n","/**\n * Generates the ARIA label for the years dropdown.\n *\n * @defaultValue `\"Choose the Year\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the years dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelYearDropdown(_options) {\n    return \"Choose the Year\";\n}\n","import * as defaultLabels from \"../labels/index.js\";\nconst resolveLabel = (defaultLabel, customLabel, localeLabel) => {\n    if (customLabel)\n        return customLabel;\n    if (localeLabel) {\n        return (typeof localeLabel === \"function\"\n            ? localeLabel\n            : (..._args) => localeLabel);\n    }\n    return defaultLabel;\n};\n/**\n * Merges custom labels from the props with the default labels.\n *\n * When available, uses the locale-provided translation for `labelNext`.\n *\n * @param customLabels The custom labels provided in the DayPicker props.\n * @param options Options from the date library, used to resolve locale\n *   translations.\n * @returns The merged labels object with locale-aware defaults.\n */\nexport function getLabels(customLabels, options) {\n    const localeLabels = options.locale?.labels ?? {};\n    return {\n        ...defaultLabels,\n        ...(customLabels ?? {}),\n        labelDayButton: resolveLabel(defaultLabels.labelDayButton, customLabels?.labelDayButton, localeLabels.labelDayButton),\n        labelMonthDropdown: resolveLabel(defaultLabels.labelMonthDropdown, customLabels?.labelMonthDropdown, localeLabels.labelMonthDropdown),\n        labelNext: resolveLabel(defaultLabels.labelNext, customLabels?.labelNext, localeLabels.labelNext),\n        labelPrevious: resolveLabel(defaultLabels.labelPrevious, customLabels?.labelPrevious, localeLabels.labelPrevious),\n        labelWeekNumber: resolveLabel(defaultLabels.labelWeekNumber, customLabels?.labelWeekNumber, localeLabels.labelWeekNumber),\n        labelYearDropdown: resolveLabel(defaultLabels.labelYearDropdown, customLabels?.labelYearDropdown, localeLabels.labelYearDropdown),\n        labelGrid: resolveLabel(defaultLabels.labelGrid, customLabels?.labelGrid, localeLabels.labelGrid),\n        labelGridcell: resolveLabel(defaultLabels.labelGridcell, customLabels?.labelGridcell, localeLabels.labelGridcell),\n        labelNav: resolveLabel(defaultLabels.labelNav, customLabels?.labelNav, localeLabels.labelNav),\n        labelWeekNumberHeader: resolveLabel(defaultLabels.labelWeekNumberHeader, customLabels?.labelWeekNumberHeader, localeLabels.labelWeekNumberHeader),\n        labelWeekday: resolveLabel(defaultLabels.labelWeekday, customLabels?.labelWeekday, localeLabels.labelWeekday),\n    };\n}\n","/**\n * Returns the months to show in the dropdown.\n *\n * This function generates a list of months for the current year, formatted\n * using the provided formatter, and determines whether each month should be\n * disabled based on the navigation range.\n *\n * @param displayMonth The currently displayed month.\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the month labels.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dropdown options representing the months, or `undefined`\n *   if no months are available.\n */\nexport function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {\n    const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth, } = dateLib;\n    const months = eachMonthOfInterval({\n        start: startOfYear(displayMonth),\n        end: endOfYear(displayMonth),\n    });\n    const options = months.map((month) => {\n        const label = formatters.formatMonthDropdown(month, dateLib);\n        const value = getMonth(month);\n        const disabled = (navStart && month < startOfMonth(navStart)) ||\n            (navEnd && month > startOfMonth(navEnd)) ||\n            false;\n        return { value, label, disabled };\n    });\n    return options;\n}\n","import { UI } from \"../UI.js\";\n/**\n * Returns the computed style for a day based on its modifiers.\n *\n * This function merges the base styles for the day with any styles associated\n * with active modifiers.\n *\n * @param dayModifiers The modifiers applied to the day.\n * @param styles The base styles for the calendar elements.\n * @param modifiersStyles The styles associated with specific modifiers.\n * @returns The computed style for the day.\n */\nexport function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {\n    let style = { ...styles?.[UI.Day] };\n    Object.entries(dayModifiers)\n        .filter(([, active]) => active === true)\n        .forEach(([modifier]) => {\n        style = {\n            ...style,\n            ...modifiersStyles?.[modifier],\n        };\n    });\n    return style;\n}\n","/**\n * Generates a series of 7 days, starting from the beginning of the week, to use\n * for formatting weekday names (e.g., Monday, Tuesday, etc.).\n *\n * @param dateLib The date library to use for date manipulation.\n * @param ISOWeek Whether to use ISO week numbering (weeks start on Monday).\n * @param broadcastCalendar Whether to use the broadcast calendar (weeks start\n *   on Monday, but may include adjustments for broadcast-specific rules).\n * @returns An array of 7 dates representing the weekdays.\n */\nexport function getWeekdays(dateLib, ISOWeek, broadcastCalendar, today) {\n    const referenceToday = today ?? dateLib.today();\n    const start = broadcastCalendar\n        ? dateLib.startOfBroadcastWeek(referenceToday, dateLib)\n        : ISOWeek\n            ? dateLib.startOfISOWeek(referenceToday)\n            : dateLib.startOfWeek(referenceToday);\n    const days = [];\n    for (let i = 0; i < 7; i++) {\n        const day = dateLib.addDays(start, i);\n        days.push(day);\n    }\n    return days;\n}\n","/**\n * Returns the years to display in the dropdown.\n *\n * This function generates a list of years between the navigation start and end\n * dates, formatted using the provided formatter.\n *\n * @param navStart The start date for navigation.\n * @param navEnd The end date for navigation.\n * @param formatters The formatters to use for formatting the year labels.\n * @param dateLib The date library to use for date manipulation.\n * @param reverse If true, reverses the order of the years (descending).\n * @returns An array of dropdown options representing the years, or `undefined`\n *   if `navStart` or `navEnd` is not provided.\n */\nexport function getYearOptions(navStart, navEnd, formatters, dateLib, reverse = false) {\n    if (!navStart)\n        return undefined;\n    if (!navEnd)\n        return undefined;\n    const { startOfYear, endOfYear, eachYearOfInterval, getYear } = dateLib;\n    const firstNavYear = startOfYear(navStart);\n    const lastNavYear = endOfYear(navEnd);\n    const years = eachYearOfInterval({ start: firstNavYear, end: lastNavYear });\n    if (reverse)\n        years.reverse();\n    return years.map((year) => {\n        const label = formatters.formatYearDropdown(year, dateLib);\n        return {\n            value: getYear(year),\n            label,\n            disabled: false,\n        };\n    });\n}\n","import { TZDate } from \"@date-fns/tz\";\nimport { differenceInCalendarDays as differenceInCalendarDaysFn, differenceInCalendarMonths as differenceInCalendarMonthsFn, getISOWeek as getISOWeekFn, getWeek as getWeekFn, } from \"date-fns\";\n/**\n * Creates `dateLib` overrides that keep all calendar math at noon in the target\n * time zone. This avoids second-level offset changes (e.g., historical zones\n * with +03:41:12) from pushing dates backward across midnight.\n */\nexport function createNoonOverrides(timeZone, options = {}) {\n    const { weekStartsOn, locale } = options;\n    const fallbackWeekStartsOn = (weekStartsOn ??\n        locale?.options?.weekStartsOn ??\n        0);\n    // Keep all internal math anchored at noon in the target zone to avoid\n    // historical second-level offsets from crossing midnight.\n    const toNoonTZDate = (date) => {\n        const normalizedDate = typeof date === \"number\" || typeof date === \"string\"\n            ? new Date(date)\n            : date;\n        return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);\n    };\n    // Convert a value into a host `Date` that represents the same calendar day\n    // as the target-zone noon. This is useful for helpers (e.g., date-fns week\n    // utilities) that expect local `Date` instances rather than `TZDate`s.\n    const toCalendarDate = (date) => {\n        const zoned = toNoonTZDate(date);\n        return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);\n    };\n    return {\n        today: () => {\n            return toNoonTZDate(TZDate.tz(timeZone));\n        },\n        newDate: (year, monthIndex, date) => {\n            return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);\n        },\n        startOfDay: (date) => {\n            return toNoonTZDate(date);\n        },\n        startOfWeek: (date, options) => {\n            const base = toNoonTZDate(date);\n            const weekStartsOnValue = (options?.weekStartsOn ??\n                fallbackWeekStartsOn);\n            const diff = (base.getDay() - weekStartsOnValue + 7) % 7;\n            base.setDate(base.getDate() - diff);\n            return base;\n        },\n        startOfISOWeek: (date) => {\n            const base = toNoonTZDate(date);\n            const diff = (base.getDay() - 1 + 7) % 7;\n            base.setDate(base.getDate() - diff);\n            return base;\n        },\n        startOfMonth: (date) => {\n            const base = toNoonTZDate(date);\n            base.setDate(1);\n            return base;\n        },\n        startOfYear: (date) => {\n            const base = toNoonTZDate(date);\n            base.setMonth(0, 1);\n            return base;\n        },\n        endOfWeek: (date, options) => {\n            const base = toNoonTZDate(date);\n            const weekStartsOnValue = (options?.weekStartsOn ??\n                fallbackWeekStartsOn);\n            const endDow = (weekStartsOnValue + 6) % 7;\n            const diff = (endDow - base.getDay() + 7) % 7;\n            base.setDate(base.getDate() + diff);\n            return base;\n        },\n        endOfISOWeek: (date) => {\n            const base = toNoonTZDate(date);\n            const diff = (7 - base.getDay()) % 7;\n            base.setDate(base.getDate() + diff);\n            return base;\n        },\n        endOfMonth: (date) => {\n            const base = toNoonTZDate(date);\n            base.setMonth(base.getMonth() + 1, 0);\n            return base;\n        },\n        endOfYear: (date) => {\n            const base = toNoonTZDate(date);\n            base.setMonth(11, 31);\n            return base;\n        },\n        eachMonthOfInterval: (interval) => {\n            const start = toNoonTZDate(interval.start);\n            const end = toNoonTZDate(interval.end);\n            const result = [];\n            const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);\n            const endKey = end.getFullYear() * 12 + end.getMonth();\n            while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {\n                result.push(new TZDate(cursor, timeZone));\n                cursor.setMonth(cursor.getMonth() + 1, 1);\n            }\n            return result;\n        },\n        // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),\n        // mutate the same TZDate, and return it.\n        addDays: (date, amount) => {\n            const base = toNoonTZDate(date);\n            base.setDate(base.getDate() + amount);\n            return base;\n        },\n        addWeeks: (date, amount) => {\n            const base = toNoonTZDate(date);\n            base.setDate(base.getDate() + amount * 7);\n            return base;\n        },\n        addMonths: (date, amount) => {\n            const base = toNoonTZDate(date);\n            base.setMonth(base.getMonth() + amount);\n            return base;\n        },\n        addYears: (date, amount) => {\n            const base = toNoonTZDate(date);\n            base.setFullYear(base.getFullYear() + amount);\n            return base;\n        },\n        eachYearOfInterval: (interval) => {\n            const start = toNoonTZDate(interval.start);\n            const end = toNoonTZDate(interval.end);\n            const years = [];\n            const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);\n            while (cursor.getFullYear() <= end.getFullYear()) {\n                years.push(new TZDate(cursor, timeZone));\n                cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);\n            }\n            return years;\n        },\n        getWeek: (date, options) => {\n            const base = toCalendarDate(date);\n            return getWeekFn(base, {\n                weekStartsOn: options?.weekStartsOn ?? fallbackWeekStartsOn,\n                firstWeekContainsDate: options?.firstWeekContainsDate ??\n                    locale?.options?.firstWeekContainsDate ??\n                    1,\n            });\n        },\n        getISOWeek: (date) => {\n            const base = toCalendarDate(date);\n            return getISOWeekFn(base);\n        },\n        differenceInCalendarDays: (dateLeft, dateRight) => {\n            const left = toCalendarDate(dateLeft);\n            const right = toCalendarDate(dateRight);\n            return differenceInCalendarDaysFn(left, right);\n        },\n        differenceInCalendarMonths: (dateLeft, dateRight) => {\n            const left = toCalendarDate(dateLeft);\n            const right = toCalendarDate(dateRight);\n            return differenceInCalendarMonthsFn(left, right);\n        },\n    };\n}\n","import { useLayoutEffect, useRef } from \"react\";\nimport { Animation } from \"./UI.js\";\nconst asHtmlElement = (element) => {\n    if (element instanceof HTMLElement)\n        return element;\n    return null;\n};\nconst queryMonthEls = (element) => [\n    ...(element.querySelectorAll(\"[data-animated-month]\") ?? []),\n];\nconst queryMonthEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-month]\"));\nconst queryCaptionEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-caption]\"));\nconst queryWeeksEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-weeks]\"));\nconst queryNavEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-nav]\"));\nconst queryWeekdaysEl = (element) => asHtmlElement(element.querySelector(\"[data-animated-weekdays]\"));\n/**\n * Handles animations for transitioning between months in the DayPicker\n * component.\n *\n * @private\n * @param rootElRef - A reference to the root element of the DayPicker\n *   component.\n * @param enabled - Whether animations are enabled.\n * @param options - Configuration options for the animation, including class\n *   names, months, focused day, and the date utility library.\n */\nexport function useAnimation(rootElRef, enabled, { classNames, months, focused, dateLib, }) {\n    const previousRootElSnapshotRef = useRef(null);\n    const previousMonthsRef = useRef(months);\n    const animatingRef = useRef(false);\n    useLayoutEffect(() => {\n        // get previous months before updating the previous months ref\n        const previousMonths = previousMonthsRef.current;\n        // update previous months ref for next effect trigger\n        previousMonthsRef.current = months;\n        if (!enabled ||\n            !rootElRef.current ||\n            // safety check because the ref can be set to anything by consumers\n            !(rootElRef.current instanceof HTMLElement) ||\n            // validation required for the animation to work as expected\n            months.length === 0 ||\n            previousMonths.length === 0 ||\n            months.length !== previousMonths.length) {\n            return;\n        }\n        const isSameMonth = dateLib.isSameMonth(months[0].date, previousMonths[0].date);\n        const isAfterPreviousMonth = dateLib.isAfter(months[0].date, previousMonths[0].date);\n        const captionAnimationClass = isAfterPreviousMonth\n            ? classNames[Animation.caption_after_enter]\n            : classNames[Animation.caption_before_enter];\n        const weeksAnimationClass = isAfterPreviousMonth\n            ? classNames[Animation.weeks_after_enter]\n            : classNames[Animation.weeks_before_enter];\n        // get previous root element snapshot before updating the snapshot ref\n        const previousRootElSnapshot = previousRootElSnapshotRef.current;\n        // update snapshot for next effect trigger\n        const rootElSnapshot = rootElRef.current.cloneNode(true);\n        if (rootElSnapshot instanceof HTMLElement) {\n            // if this effect is triggered while animating, we need to clean up the new root snapshot\n            // to put it in the same state as when not animating, to correctly animate the next month change\n            const currentMonthElsSnapshot = queryMonthEls(rootElSnapshot);\n            currentMonthElsSnapshot.forEach((currentMonthElSnapshot) => {\n                if (!(currentMonthElSnapshot instanceof HTMLElement))\n                    return;\n                // remove the old month snapshots from the new root snapshot\n                const previousMonthElSnapshot = queryMonthEl(currentMonthElSnapshot);\n                if (previousMonthElSnapshot &&\n                    currentMonthElSnapshot.contains(previousMonthElSnapshot)) {\n                    currentMonthElSnapshot.removeChild(previousMonthElSnapshot);\n                }\n                // remove animation classes from the new month snapshots\n                const captionEl = queryCaptionEl(currentMonthElSnapshot);\n                if (captionEl) {\n                    captionEl.classList.remove(captionAnimationClass);\n                }\n                const weeksEl = queryWeeksEl(currentMonthElSnapshot);\n                if (weeksEl) {\n                    weeksEl.classList.remove(weeksAnimationClass);\n                }\n            });\n            previousRootElSnapshotRef.current = rootElSnapshot;\n        }\n        else {\n            previousRootElSnapshotRef.current = null;\n        }\n        if (animatingRef.current ||\n            isSameMonth ||\n            // skip animation if a day is focused because it can cause issues to the animation and is better for a11y\n            focused) {\n            return;\n        }\n        const previousMonthEls = previousRootElSnapshot instanceof HTMLElement\n            ? queryMonthEls(previousRootElSnapshot)\n            : [];\n        const currentMonthEls = queryMonthEls(rootElRef.current);\n        if (currentMonthEls?.every((el) => el instanceof HTMLElement) &&\n            previousMonthEls &&\n            previousMonthEls.every((el) => el instanceof HTMLElement)) {\n            animatingRef.current = true;\n            const cleanUpFunctions = [];\n            // set isolation to isolate to isolate the stacking context during animation\n            rootElRef.current.style.isolation = \"isolate\";\n            // set z-index to 1 to ensure the nav is clickable over the other elements being animated\n            const navEl = queryNavEl(rootElRef.current);\n            if (navEl) {\n                navEl.style.zIndex = \"1\";\n            }\n            currentMonthEls.forEach((currentMonthEl, index) => {\n                const previousMonthEl = previousMonthEls[index];\n                if (!previousMonthEl) {\n                    return;\n                }\n                // animate new displayed month\n                currentMonthEl.style.position = \"relative\";\n                currentMonthEl.style.overflow = \"hidden\";\n                const captionEl = queryCaptionEl(currentMonthEl);\n                if (captionEl) {\n                    captionEl.classList.add(captionAnimationClass);\n                }\n                const weeksEl = queryWeeksEl(currentMonthEl);\n                if (weeksEl) {\n                    weeksEl.classList.add(weeksAnimationClass);\n                }\n                // animate new displayed month end\n                const cleanUp = () => {\n                    animatingRef.current = false;\n                    if (rootElRef.current) {\n                        rootElRef.current.style.isolation = \"\";\n                    }\n                    if (navEl) {\n                        navEl.style.zIndex = \"\";\n                    }\n                    if (captionEl) {\n                        captionEl.classList.remove(captionAnimationClass);\n                    }\n                    if (weeksEl) {\n                        weeksEl.classList.remove(weeksAnimationClass);\n                    }\n                    currentMonthEl.style.position = \"\";\n                    currentMonthEl.style.overflow = \"\";\n                    if (currentMonthEl.contains(previousMonthEl)) {\n                        currentMonthEl.removeChild(previousMonthEl);\n                    }\n                };\n                cleanUpFunctions.push(cleanUp);\n                // animate old displayed month\n                previousMonthEl.style.pointerEvents = \"none\";\n                previousMonthEl.style.position = \"absolute\";\n                previousMonthEl.style.overflow = \"hidden\";\n                previousMonthEl.setAttribute(\"aria-hidden\", \"true\");\n                // hide the weekdays container of the old month and only the new one\n                const previousWeekdaysEl = queryWeekdaysEl(previousMonthEl);\n                if (previousWeekdaysEl) {\n                    previousWeekdaysEl.style.opacity = \"0\";\n                }\n                const previousCaptionEl = queryCaptionEl(previousMonthEl);\n                if (previousCaptionEl) {\n                    previousCaptionEl.classList.add(isAfterPreviousMonth\n                        ? classNames[Animation.caption_before_exit]\n                        : classNames[Animation.caption_after_exit]);\n                    previousCaptionEl.addEventListener(\"animationend\", cleanUp);\n                }\n                const previousWeeksEl = queryWeeksEl(previousMonthEl);\n                if (previousWeeksEl) {\n                    previousWeeksEl.classList.add(isAfterPreviousMonth\n                        ? classNames[Animation.weeks_before_exit]\n                        : classNames[Animation.weeks_after_exit]);\n                }\n                currentMonthEl.insertBefore(previousMonthEl, currentMonthEl.firstChild);\n            });\n        }\n    });\n}\n","/**\n * Returns all the dates to display in the calendar.\n *\n * This function calculates the range of dates to display based on the provided\n * display months, constraints, and calendar configuration.\n *\n * @param displayMonths The months to display in the calendar.\n * @param maxDate The maximum date to include in the range.\n * @param props The DayPicker props, including calendar configuration options.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dates to display in the calendar.\n */\nexport function getDates(displayMonths, maxDate, props, dateLib) {\n    const firstMonth = displayMonths[0];\n    const lastMonth = displayMonths[displayMonths.length - 1];\n    const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};\n    const { addDays, differenceInCalendarDays, differenceInCalendarMonths, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, isAfter, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n    const startWeekFirstDate = broadcastCalendar\n        ? startOfBroadcastWeek(firstMonth, dateLib)\n        : ISOWeek\n            ? startOfISOWeek(firstMonth)\n            : startOfWeek(firstMonth);\n    const displayMonthsWeekEnd = broadcastCalendar\n        ? endOfBroadcastWeek(lastMonth)\n        : ISOWeek\n            ? endOfISOWeek(endOfMonth(lastMonth))\n            : endOfWeek(endOfMonth(lastMonth));\n    // If maxDate is set, clamp the grid to the end of that week.\n    const constraintWeekEnd = maxDate &&\n        (broadcastCalendar\n            ? endOfBroadcastWeek(maxDate)\n            : ISOWeek\n                ? endOfISOWeek(maxDate)\n                : endOfWeek(maxDate));\n    // Pick the earliest week end between the displayed months and the constraint.\n    const gridEndDate = constraintWeekEnd && isAfter(displayMonthsWeekEnd, constraintWeekEnd)\n        ? constraintWeekEnd\n        : displayMonthsWeekEnd;\n    const nOfDays = differenceInCalendarDays(gridEndDate, startWeekFirstDate);\n    const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;\n    const dates = [];\n    for (let i = 0; i <= nOfDays; i++) {\n        const date = addDays(startWeekFirstDate, i);\n        dates.push(date);\n    }\n    // If fixed weeks is enabled, add the extra dates to the array\n    const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;\n    const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;\n    if (fixedWeeks && dates.length < extraDates) {\n        const daysToAdd = extraDates - dates.length;\n        for (let i = 0; i < daysToAdd; i++) {\n            const date = addDays(dates[dates.length - 1], 1);\n            dates.push(date);\n        }\n    }\n    return dates;\n}\n","/**\n * Returns all the days belonging to the calendar by merging the days in the\n * weeks for each month.\n *\n * @param calendarMonths The array of calendar months.\n * @returns An array of `CalendarDay` objects representing all the days in the\n *   calendar.\n */\nexport function getDays(calendarMonths) {\n    const initialDays = [];\n    return calendarMonths.reduce((days, month) => {\n        const weekDays = month.weeks.reduce((weekDays, week) => {\n            return weekDays.concat(week.days.slice());\n        }, initialDays.slice());\n        return days.concat(weekDays.slice());\n    }, initialDays.slice());\n}\n","/**\n * Returns the months to display in the calendar.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n *   calendar.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param props The DayPicker props, including `numberOfMonths`.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of dates representing the months to display.\n */\nexport function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {\n    const { numberOfMonths = 1 } = props;\n    const months = [];\n    for (let i = 0; i < numberOfMonths; i++) {\n        const month = dateLib.addMonths(firstDisplayedMonth, i);\n        if (calendarEndMonth && month > calendarEndMonth) {\n            break;\n        }\n        months.push(month);\n    }\n    return months;\n}\n","/**\n * Determines the initial month to display in the calendar based on the provided\n * props.\n *\n * This function calculates the starting month, considering constraints such as\n * `startMonth`, `endMonth`, and the number of months to display.\n *\n * @param props The DayPicker props, including navigation and date constraints.\n * @param dateLib The date library to use for date manipulation.\n * @returns The initial month to display.\n */\nexport function getInitialMonth(props, navStart, navEnd, dateLib) {\n    const { month, defaultMonth, today = dateLib.today(), numberOfMonths = 1, } = props;\n    let initialMonth = month || defaultMonth || today;\n    const { differenceInCalendarMonths, addMonths, startOfMonth } = dateLib;\n    if (navEnd &&\n        differenceInCalendarMonths(navEnd, initialMonth) < numberOfMonths - 1) {\n        const offset = -1 * (numberOfMonths - 1);\n        initialMonth = addMonths(navEnd, offset);\n    }\n    if (navStart && differenceInCalendarMonths(initialMonth, navStart) < 0) {\n        initialMonth = navStart;\n    }\n    return startOfMonth(initialMonth);\n}\n","import { CalendarDay, CalendarMonth, CalendarWeek } from \"../classes/index.js\";\n/**\n * Returns the months to display in the calendar.\n *\n * This function generates `CalendarMonth` objects for each month to be\n * displayed, including their weeks and days, based on the provided display\n * months and dates.\n *\n * @param displayMonths The months (as dates) to display in the calendar.\n * @param dates The dates to display in the calendar.\n * @param props Options from the DayPicker props context.\n * @param dateLib The date library to use for date manipulation.\n * @returns An array of `CalendarMonth` objects representing the months to\n *   display.\n */\nexport function getMonths(displayMonths, dates, props, dateLib) {\n    const { addDays, endOfBroadcastWeek, endOfISOWeek, endOfMonth, endOfWeek, getISOWeek, getWeek, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n    const dayPickerMonths = displayMonths.reduce((months, month) => {\n        const firstDateOfFirstWeek = props.broadcastCalendar\n            ? startOfBroadcastWeek(month, dateLib)\n            : props.ISOWeek\n                ? startOfISOWeek(month)\n                : startOfWeek(month);\n        const lastDateOfLastWeek = props.broadcastCalendar\n            ? endOfBroadcastWeek(month)\n            : props.ISOWeek\n                ? endOfISOWeek(endOfMonth(month))\n                : endOfWeek(endOfMonth(month));\n        /** The dates to display in the month. */\n        const monthDates = dates.filter((date) => {\n            return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;\n        });\n        const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;\n        if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {\n            const extraDates = dates.filter((date) => {\n                const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;\n                return (date > lastDateOfLastWeek &&\n                    date <= addDays(lastDateOfLastWeek, daysToAdd));\n            });\n            monthDates.push(...extraDates);\n        }\n        const weeks = monthDates.reduce((weeks, date) => {\n            const weekNumber = props.ISOWeek ? getISOWeek(date) : getWeek(date);\n            const week = weeks.find((week) => week.weekNumber === weekNumber);\n            const day = new CalendarDay(date, month, dateLib);\n            if (!week) {\n                weeks.push(new CalendarWeek(weekNumber, [day]));\n            }\n            else {\n                week.days.push(day);\n            }\n            return weeks;\n        }, []);\n        const dayPickerMonth = new CalendarMonth(month, weeks);\n        months.push(dayPickerMonth);\n        return months;\n    }, []);\n    if (!props.reverseMonths) {\n        return dayPickerMonths;\n    }\n    else {\n        return dayPickerMonths.reverse();\n    }\n}\n","/**\n * Returns the start and end months for calendar navigation.\n *\n * @param props The DayPicker props, including navigation and layout options.\n * @param dateLib The date library to use for date manipulation.\n * @returns A tuple containing the start and end months for navigation.\n */\nexport function getNavMonths(props, dateLib) {\n    let { startMonth, endMonth } = props;\n    const { startOfYear, startOfDay, startOfMonth, endOfMonth, addYears, endOfYear, newDate, today, } = dateLib;\n    // Handle deprecated code\n    const { fromYear, toYear, fromMonth, toMonth } = props;\n    if (!startMonth && fromMonth) {\n        startMonth = fromMonth;\n    }\n    if (!startMonth && fromYear) {\n        startMonth = dateLib.newDate(fromYear, 0, 1);\n    }\n    if (!endMonth && toMonth) {\n        endMonth = toMonth;\n    }\n    if (!endMonth && toYear) {\n        endMonth = newDate(toYear, 11, 31);\n    }\n    const hasYearDropdown = props.captionLayout === \"dropdown\" ||\n        props.captionLayout === \"dropdown-years\";\n    if (startMonth) {\n        startMonth = startOfMonth(startMonth);\n    }\n    else if (fromYear) {\n        startMonth = newDate(fromYear, 0, 1);\n    }\n    else if (!startMonth && hasYearDropdown) {\n        startMonth = startOfYear(addYears(props.today ?? today(), -100));\n    }\n    if (endMonth) {\n        endMonth = endOfMonth(endMonth);\n    }\n    else if (toYear) {\n        endMonth = newDate(toYear, 11, 31);\n    }\n    else if (!endMonth && hasYearDropdown) {\n        endMonth = endOfYear(props.today ?? today());\n    }\n    return [\n        startMonth ? startOfDay(startMonth) : startMonth,\n        endMonth ? startOfDay(endMonth) : endMonth,\n    ];\n}\n","/**\n * Returns the next month the user can navigate to, based on the given options.\n *\n * The next month is not always the next calendar month:\n *\n * - If it is after the `calendarEndMonth`, it returns `undefined`.\n * - If paged navigation is enabled, it skips forward by the number of displayed\n *   months.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n *   calendar.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param options Navigation options, including `numberOfMonths` and\n *   `pagedNavigation`.\n * @param dateLib The date library to use for date manipulation.\n * @returns The next month, or `undefined` if navigation is not possible.\n */\nexport function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {\n    if (options.disableNavigation) {\n        return undefined;\n    }\n    const { pagedNavigation, numberOfMonths = 1 } = options;\n    const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n    const offset = pagedNavigation ? numberOfMonths : 1;\n    const month = startOfMonth(firstDisplayedMonth);\n    if (!calendarEndMonth) {\n        return addMonths(month, offset);\n    }\n    const monthsDiff = differenceInCalendarMonths(calendarEndMonth, firstDisplayedMonth);\n    if (monthsDiff < numberOfMonths) {\n        return undefined;\n    }\n    return addMonths(month, offset);\n}\n","/**\n * Returns the previous month the user can navigate to, based on the given\n * options.\n *\n * The previous month is not always the previous calendar month:\n *\n * - If it is before the `calendarStartMonth`, it returns `undefined`.\n * - If paged navigation is enabled, it skips back by the number of displayed\n *   months.\n *\n * @param firstDisplayedMonth The first month currently displayed in the\n *   calendar.\n * @param calendarStartMonth The earliest month the user can navigate to.\n * @param options Navigation options, including `numberOfMonths` and\n *   `pagedNavigation`.\n * @param dateLib The date library to use for date manipulation.\n * @returns The previous month, or `undefined` if navigation is not possible.\n */\nexport function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {\n    if (options.disableNavigation) {\n        return undefined;\n    }\n    const { pagedNavigation, numberOfMonths } = options;\n    const { startOfMonth, addMonths, differenceInCalendarMonths } = dateLib;\n    const offset = pagedNavigation ? (numberOfMonths ?? 1) : 1;\n    const month = startOfMonth(firstDisplayedMonth);\n    if (!calendarStartMonth) {\n        return addMonths(month, -offset);\n    }\n    const monthsDiff = differenceInCalendarMonths(month, calendarStartMonth);\n    if (monthsDiff <= 0) {\n        return undefined;\n    }\n    return addMonths(month, -offset);\n}\n","/**\n * Returns an array of calendar weeks from an array of calendar months.\n *\n * @param months The array of calendar months.\n * @returns An array of calendar weeks.\n */\nexport function getWeeks(months) {\n    const initialWeeks = [];\n    return months.reduce((weeks, month) => {\n        return weeks.concat(month.weeks.slice());\n    }, initialWeeks.slice());\n}\n","import { useState } from \"react\";\n/**\n * A custom hook for managing both controlled and uncontrolled component states.\n *\n * This hook allows a component to support both controlled and uncontrolled\n * states by determining whether the `controlledValue` is provided. If it is\n * undefined, the hook falls back to using the internal state.\n *\n * @example\n *   // Uncontrolled usage\n *   const [value, setValue] = useControlledValue(0, undefined);\n *\n *   // Controlled usage\n *   const [value, setValue] = useControlledValue(0, props.value);\n *\n * @template T - The type of the value.\n * @param defaultValue The initial value for the uncontrolled state.\n * @param controlledValue The value for the controlled state. If undefined, the\n *   component will use the uncontrolled state.\n * @returns A tuple where the first element is the current value (either\n *   controlled or uncontrolled) and the second element is a setter function to\n *   update the value.\n */\nexport function useControlledValue(defaultValue, controlledValue) {\n    const [uncontrolledValue, setValue] = useState(defaultValue);\n    const value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n    return [value, setValue];\n}\n","import { useEffect, useMemo } from \"react\";\nimport { getDates } from \"./helpers/getDates.js\";\nimport { getDays } from \"./helpers/getDays.js\";\nimport { getDisplayMonths } from \"./helpers/getDisplayMonths.js\";\nimport { getInitialMonth } from \"./helpers/getInitialMonth.js\";\nimport { getMonths } from \"./helpers/getMonths.js\";\nimport { getNavMonths } from \"./helpers/getNavMonth.js\";\nimport { getNextMonth } from \"./helpers/getNextMonth.js\";\nimport { getPreviousMonth } from \"./helpers/getPreviousMonth.js\";\nimport { getWeeks } from \"./helpers/getWeeks.js\";\nimport { useControlledValue } from \"./helpers/useControlledValue.js\";\n/**\n * Provides the calendar object to work with the calendar in custom components.\n *\n * @private\n * @param props - The DayPicker props related to calendar configuration.\n * @param dateLib - The date utility library instance.\n * @returns The calendar object containing displayed days, weeks, months, and\n *   navigation methods.\n */\nexport function useCalendar(props, dateLib) {\n    const [navStart, navEnd] = getNavMonths(props, dateLib);\n    const { startOfMonth, endOfMonth } = dateLib;\n    const initialMonth = getInitialMonth(props, navStart, navEnd, dateLib);\n    const [firstMonth, setFirstMonth] = useControlledValue(initialMonth, \n    // initialMonth is always computed from props.month if provided\n    props.month ? initialMonth : undefined);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: change the initial month when the time zone changes.\n    useEffect(() => {\n        const newInitialMonth = getInitialMonth(props, navStart, navEnd, dateLib);\n        setFirstMonth(newInitialMonth);\n    }, [props.timeZone]);\n    /** The months displayed in the calendar. */\n    // biome-ignore lint/correctness/useExhaustiveDependencies: We want to recompute only when specific props change.\n    const { months, weeks, days, previousMonth, nextMonth } = useMemo(() => {\n        const displayMonths = getDisplayMonths(firstMonth, navEnd, { numberOfMonths: props.numberOfMonths }, dateLib);\n        const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, {\n            ISOWeek: props.ISOWeek,\n            fixedWeeks: props.fixedWeeks,\n            broadcastCalendar: props.broadcastCalendar,\n        }, dateLib);\n        const months = getMonths(displayMonths, dates, {\n            broadcastCalendar: props.broadcastCalendar,\n            fixedWeeks: props.fixedWeeks,\n            ISOWeek: props.ISOWeek,\n            reverseMonths: props.reverseMonths,\n        }, dateLib);\n        const weeks = getWeeks(months);\n        const days = getDays(months);\n        const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);\n        const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);\n        return {\n            months,\n            weeks,\n            days,\n            previousMonth,\n            nextMonth,\n        };\n    }, [\n        dateLib,\n        firstMonth.getTime(),\n        navEnd?.getTime(),\n        navStart?.getTime(),\n        props.disableNavigation,\n        props.broadcastCalendar,\n        props.endMonth?.getTime(),\n        props.fixedWeeks,\n        props.ISOWeek,\n        props.numberOfMonths,\n        props.pagedNavigation,\n        props.reverseMonths,\n    ]);\n    const { disableNavigation, onMonthChange } = props;\n    const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));\n    const goToMonth = (date) => {\n        if (disableNavigation) {\n            return;\n        }\n        let newMonth = startOfMonth(date);\n        // if month is before start, use the first month instead\n        if (navStart && newMonth < startOfMonth(navStart)) {\n            newMonth = startOfMonth(navStart);\n        }\n        // if month is after endMonth, use the last month instead\n        if (navEnd && newMonth > startOfMonth(navEnd)) {\n            newMonth = startOfMonth(navEnd);\n        }\n        setFirstMonth(newMonth);\n        onMonthChange?.(newMonth);\n    };\n    const goToDay = (day) => {\n        // is this check necessary?\n        if (isDayInCalendar(day)) {\n            return;\n        }\n        goToMonth(day.date);\n    };\n    const calendar = {\n        months,\n        weeks,\n        days,\n        navStart,\n        navEnd,\n        previousMonth,\n        nextMonth,\n        goToMonth,\n        goToDay,\n    };\n    return calendar;\n}\n","import { DayFlag } from \"../UI.js\";\nvar FocusTargetPriority;\n(function (FocusTargetPriority) {\n    FocusTargetPriority[FocusTargetPriority[\"Today\"] = 0] = \"Today\";\n    FocusTargetPriority[FocusTargetPriority[\"Selected\"] = 1] = \"Selected\";\n    FocusTargetPriority[FocusTargetPriority[\"LastFocused\"] = 2] = \"LastFocused\";\n    FocusTargetPriority[FocusTargetPriority[\"FocusedModifier\"] = 3] = \"FocusedModifier\";\n})(FocusTargetPriority || (FocusTargetPriority = {}));\n/**\n * Determines if a day is focusable based on its modifiers.\n *\n * A day is considered focusable if it is not disabled, hidden, or outside the\n * displayed month.\n *\n * @param modifiers The modifiers applied to the day.\n * @returns `true` if the day is focusable, otherwise `false`.\n */\nfunction isFocusableDay(modifiers) {\n    return (!modifiers[DayFlag.disabled] &&\n        !modifiers[DayFlag.hidden] &&\n        !modifiers[DayFlag.outside]);\n}\n/**\n * Calculates the focus target day based on priority.\n *\n * This function determines the day that should receive focus in the calendar,\n * prioritizing days with specific modifiers (e.g., \"focused\", \"today\") or\n * selection states.\n *\n * @param days The array of `CalendarDay` objects to evaluate.\n * @param getModifiers A function to retrieve the modifiers for a given day.\n * @param isSelected A function to determine if a day is selected.\n * @param lastFocused The last focused day, if any.\n * @returns The `CalendarDay` that should receive focus, or `undefined` if no\n *   focusable day is found.\n */\nexport function calculateFocusTarget(days, getModifiers, isSelected, lastFocused) {\n    let focusTarget;\n    let foundFocusTargetPriority = -1;\n    for (const day of days) {\n        const modifiers = getModifiers(day);\n        if (isFocusableDay(modifiers)) {\n            if (modifiers[DayFlag.focused] &&\n                foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) {\n                focusTarget = day;\n                foundFocusTargetPriority = FocusTargetPriority.FocusedModifier;\n            }\n            else if (lastFocused?.isEqualTo(day) &&\n                foundFocusTargetPriority < FocusTargetPriority.LastFocused) {\n                focusTarget = day;\n                foundFocusTargetPriority = FocusTargetPriority.LastFocused;\n            }\n            else if (isSelected(day.date) &&\n                foundFocusTargetPriority < FocusTargetPriority.Selected) {\n                focusTarget = day;\n                foundFocusTargetPriority = FocusTargetPriority.Selected;\n            }\n            else if (modifiers[DayFlag.today] &&\n                foundFocusTargetPriority < FocusTargetPriority.Today) {\n                focusTarget = day;\n                foundFocusTargetPriority = FocusTargetPriority.Today;\n            }\n        }\n    }\n    if (!focusTarget) {\n        // Return the first day that is focusable\n        focusTarget = days.find((day) => isFocusableDay(getModifiers(day)));\n    }\n    return focusTarget;\n}\n","/**\n * Calculates the next date that should be focused in the calendar.\n *\n * This function determines the next focusable date based on the movement\n * direction, constraints, and calendar configuration.\n *\n * @param moveBy The unit of movement (e.g., \"day\", \"week\").\n * @param moveDir The direction of movement (\"before\" or \"after\").\n * @param refDate The reference date from which to calculate the next focusable\n *   date.\n * @param navStart The earliest date the user can navigate to.\n * @param navEnd The latest date the user can navigate to.\n * @param props The DayPicker props, including calendar configuration options.\n * @param dateLib The date library to use for date manipulation.\n * @returns The next focusable date.\n */\nexport function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {\n    const { ISOWeek, broadcastCalendar } = props;\n    const { addDays, addMonths, addWeeks, addYears, endOfBroadcastWeek, endOfISOWeek, endOfWeek, max, min, startOfBroadcastWeek, startOfISOWeek, startOfWeek, } = dateLib;\n    const moveFns = {\n        day: addDays,\n        week: addWeeks,\n        month: addMonths,\n        year: addYears,\n        startOfWeek: (date) => broadcastCalendar\n            ? startOfBroadcastWeek(date, dateLib)\n            : ISOWeek\n                ? startOfISOWeek(date)\n                : startOfWeek(date),\n        endOfWeek: (date) => broadcastCalendar\n            ? endOfBroadcastWeek(date)\n            : ISOWeek\n                ? endOfISOWeek(date)\n                : endOfWeek(date),\n    };\n    let focusableDate = moveFns[moveBy](refDate, moveDir === \"after\" ? 1 : -1);\n    if (moveDir === \"before\" && navStart) {\n        focusableDate = max([navStart, focusableDate]);\n    }\n    else if (moveDir === \"after\" && navEnd) {\n        focusableDate = min([navEnd, focusableDate]);\n    }\n    return focusableDate;\n}\n","import { CalendarDay } from \"../classes/index.js\";\nimport { dateMatchModifiers } from \"../utils/dateMatchModifiers.js\";\nimport { getFocusableDate } from \"./getFocusableDate.js\";\n/**\n * Determines the next focusable day in the calendar.\n *\n * This function recursively calculates the next focusable day based on the\n * movement direction and modifiers applied to the days.\n *\n * @param moveBy The unit of movement (e.g., \"day\", \"week\").\n * @param moveDir The direction of movement (\"before\" or \"after\").\n * @param refDay The currently focused day.\n * @param calendarStartMonth The earliest month the user can navigate to.\n * @param calendarEndMonth The latest month the user can navigate to.\n * @param props The DayPicker props, including modifiers and configuration\n *   options.\n * @param dateLib The date library to use for date manipulation.\n * @param attempt The current recursion attempt (used to limit recursion depth).\n * @returns The next focusable day, or `undefined` if no focusable day is found.\n */\nexport function getNextFocus(moveBy, moveDir, refDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {\n    if (attempt > 365) {\n        // Limit the recursion to 365 attempts\n        return undefined;\n    }\n    const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, calendarStartMonth, calendarEndMonth, props, dateLib);\n    const isDisabled = Boolean(props.disabled &&\n        dateMatchModifiers(focusableDate, props.disabled, dateLib));\n    const isHidden = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));\n    const targetMonth = focusableDate;\n    const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);\n    if (!isDisabled && !isHidden) {\n        return focusDay;\n    }\n    // Recursively attempt to find the next focusable date\n    return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);\n}\n","import { useState } from \"react\";\nimport { calculateFocusTarget } from \"./helpers/calculateFocusTarget.js\";\nimport { getNextFocus } from \"./helpers/getNextFocus.js\";\n/**\n * Manages focus behavior for the DayPicker component, including setting,\n * moving, and blurring focus on calendar days.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param calendar - The calendar object containing the displayed days and\n *   months.\n * @param getModifiers - A function to retrieve modifiers for a given day.\n * @param isSelected - A function to check if a date is selected.\n * @param dateLib - The date utility library instance.\n * @returns An object containing focus-related methods and the currently focused\n *   day.\n */\nexport function useFocus(props, calendar, getModifiers, isSelected, dateLib) {\n    const { autoFocus } = props;\n    const [lastFocused, setLastFocused] = useState();\n    const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected || (() => false), lastFocused);\n    const [focusedDay, setFocused] = useState(autoFocus ? focusTarget : undefined);\n    const blur = () => {\n        setLastFocused(focusedDay);\n        setFocused(undefined);\n    };\n    const moveFocus = (moveBy, moveDir) => {\n        if (!focusedDay)\n            return;\n        const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);\n        if (!nextFocus)\n            return;\n        if (props.disableNavigation) {\n            const isNextInCalendar = calendar.days.some((day) => day.isEqualTo(nextFocus));\n            if (!isNextInCalendar) {\n                return;\n            }\n        }\n        calendar.goToDay(nextFocus);\n        setFocused(nextFocus);\n    };\n    const isFocusTarget = (day) => {\n        return Boolean(focusTarget?.isEqualTo(day));\n    };\n    const useFocus = {\n        isFocusTarget,\n        setFocused,\n        focused: focusedDay,\n        blur,\n        moveFocus,\n    };\n    return useFocus;\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\n/**\n * Hook to manage multiple-date selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected dates, a function to select dates,\n *   and a function to check if a date is selected.\n */\nexport function useMulti(props, dateLib) {\n    const { selected: initiallySelected, required, onSelect, } = props;\n    const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n    const selected = !onSelect ? internallySelected : initiallySelected;\n    const { isSameDay } = dateLib;\n    const isSelected = (date) => {\n        return selected?.some((d) => isSameDay(d, date)) ?? false;\n    };\n    const { min, max } = props;\n    const select = (triggerDate, modifiers, e) => {\n        let newDates = [...(selected ?? [])];\n        if (isSelected(triggerDate)) {\n            if (selected?.length === min) {\n                // Min value reached, do nothing\n                return;\n            }\n            if (required && selected?.length === 1) {\n                // Required value already selected do nothing\n                return;\n            }\n            newDates = selected?.filter((d) => !isSameDay(d, triggerDate));\n        }\n        else {\n            if (selected?.length === max) {\n                // Max value reached, reset the selection to date\n                newDates = [triggerDate];\n            }\n            else {\n                // Add the date to the selection\n                newDates = [...newDates, triggerDate];\n            }\n        }\n        if (!onSelect) {\n            setSelected(newDates);\n        }\n        onSelect?.(newDates, triggerDate, modifiers, e);\n        return newDates;\n    };\n    return {\n        selected,\n        select,\n        isSelected,\n    };\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Adds a date to an existing range, considering constraints like minimum and\n * maximum range size.\n *\n * @param date - The date to add to the range.\n * @param initialRange - The initial range to which the date will be added.\n * @param min - The minimum number of days in the range.\n * @param max - The maximum number of days in the range.\n * @param required - Whether the range must always include at least one date.\n * @param dateLib - The date utility library instance.\n * @returns The updated date range, or `undefined` if the range is cleared.\n * @group Utilities\n */\nexport function addToRange(date, initialRange, min = 0, max = 0, required = false, dateLib = defaultDateLib) {\n    const { from, to } = initialRange || {};\n    const { isSameDay, isAfter, isBefore } = dateLib;\n    let range;\n    if (!from && !to) {\n        // the range is empty, add the date\n        range = { from: date, to: min > 0 ? undefined : date };\n    }\n    else if (from && !to) {\n        // adding date to an incomplete range\n        if (isSameDay(from, date)) {\n            // adding a date equal to the start of the range\n            if (min === 0) {\n                range = { from, to: date };\n            }\n            else if (required) {\n                range = { from, to: undefined };\n            }\n            else {\n                range = undefined;\n            }\n        }\n        else if (isBefore(date, from)) {\n            // adding a date before the start of the range\n            range = { from: date, to: from };\n        }\n        else {\n            // adding a date after the start of the range\n            range = { from, to: date };\n        }\n    }\n    else if (from && to) {\n        // adding date to a complete range\n        if (isSameDay(from, date) && isSameDay(to, date)) {\n            // adding a date that is equal to both start and end of the range\n            if (required) {\n                range = { from, to };\n            }\n            else {\n                range = undefined;\n            }\n        }\n        else if (isSameDay(from, date)) {\n            // adding a date equal to the the start of the range\n            range = { from, to: min > 0 ? undefined : date };\n        }\n        else if (isSameDay(to, date)) {\n            // adding a dare equal to the end of the range\n            range = { from: date, to: min > 0 ? undefined : date };\n        }\n        else if (isBefore(date, from)) {\n            // adding a date before the start of the range\n            range = { from: date, to: to };\n        }\n        else if (isAfter(date, from)) {\n            // adding a date after the start of the range\n            range = { from, to: date };\n        }\n        else if (isAfter(date, to)) {\n            // adding a date after the end of the range\n            range = { from, to: date };\n        }\n        else {\n            throw new Error(\"Invalid range\");\n        }\n    }\n    // check for min / max\n    if (range?.from && range?.to) {\n        const diff = dateLib.differenceInCalendarDays(range.to, range.from);\n        if (max > 0 && diff > max) {\n            range = { from: date, to: undefined };\n        }\n        else if (min > 1 && diff < min) {\n            range = { from: date, to: undefined };\n        }\n    }\n    return range;\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\n/**\n * Checks if a date range contains one or more specified days of the week.\n *\n * @since 9.2.2\n * @param range - The date range to check.\n * @param dayOfWeek - The day(s) of the week to check for (`0-6`, where `0` is\n *   Sunday).\n * @param dateLib - The date utility library instance.\n * @returns `true` if the range contains the specified day(s) of the week,\n *   otherwise `false`.\n * @group Utilities\n */\nexport function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {\n    const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;\n    let date = range.from;\n    const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n    // iterate at maximum one week or the total days if the range is shorter than one week\n    const totalDaysLimit = Math.min(totalDays, 6);\n    for (let i = 0; i <= totalDaysLimit; i++) {\n        if (dayOfWeekArr.includes(date.getDay())) {\n            return true;\n        }\n        date = dateLib.addDays(date, 1);\n    }\n    return false;\n}\n","import { defaultDateLib } from \"../classes/index.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\n/**\n * Determines if two date ranges overlap.\n *\n * @since 9.2.2\n * @param rangeLeft - The first date range.\n * @param rangeRight - The second date range.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the ranges overlap, otherwise `false`.\n * @group Utilities\n */\nexport function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {\n    return (rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) ||\n        rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) ||\n        rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) ||\n        rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib));\n}\n","import { defaultDateLib } from \"../classes/DateLib.js\";\nimport { dateMatchModifiers } from \"./dateMatchModifiers.js\";\nimport { rangeContainsDayOfWeek } from \"./rangeContainsDayOfWeek.js\";\nimport { rangeIncludesDate } from \"./rangeIncludesDate.js\";\nimport { rangeOverlaps } from \"./rangeOverlaps.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDatesArray, isDayOfWeekType, } from \"./typeguards.js\";\n/**\n * Checks if a date range contains dates that match the given modifiers.\n *\n * @since 9.2.2\n * @param range - The date range to check.\n * @param modifiers - The modifiers to match against.\n * @param dateLib - The date utility library instance.\n * @returns `true` if the range contains matching dates, otherwise `false`.\n * @group Utilities\n */\nexport function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {\n    const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];\n    // Defer function matchers evaluation as they are the least performant.\n    const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== \"function\");\n    const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {\n        if (typeof matcher === \"boolean\")\n            return matcher;\n        if (dateLib.isDate(matcher)) {\n            return rangeIncludesDate(range, matcher, false, dateLib);\n        }\n        if (isDatesArray(matcher, dateLib)) {\n            return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));\n        }\n        if (isDateRange(matcher)) {\n            if (matcher.from && matcher.to) {\n                return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);\n            }\n            return false;\n        }\n        if (isDayOfWeekType(matcher)) {\n            return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);\n        }\n        if (isDateInterval(matcher)) {\n            const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);\n            if (isClosedInterval) {\n                return rangeOverlaps(range, {\n                    from: dateLib.addDays(matcher.after, 1),\n                    to: dateLib.addDays(matcher.before, -1),\n                }, dateLib);\n            }\n            return (dateMatchModifiers(range.from, matcher, dateLib) ||\n                dateMatchModifiers(range.to, matcher, dateLib));\n        }\n        if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {\n            return (dateMatchModifiers(range.from, matcher, dateLib) ||\n                dateMatchModifiers(range.to, matcher, dateLib));\n        }\n        return false;\n    });\n    if (nonFunctionMatchersResult) {\n        return true;\n    }\n    const functionMatchers = matchers.filter((matcher) => typeof matcher === \"function\");\n    if (functionMatchers.length) {\n        let date = range.from;\n        const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);\n        for (let i = 0; i <= totalDays; i++) {\n            if (functionMatchers.some((matcher) => matcher(date))) {\n                return true;\n            }\n            date = dateLib.addDays(date, 1);\n        }\n    }\n    return false;\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\nimport { addToRange, rangeContainsModifiers } from \"../utils/index.js\";\nimport { rangeIncludesDate } from \"../utils/rangeIncludesDate.js\";\n/**\n * Hook to manage range selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected range, a function to select a\n *   range, and a function to check if a date is within the range.\n */\nexport function useRange(props, dateLib) {\n    const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect, } = props;\n    const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n    const selected = !onSelect ? internallySelected : initiallySelected;\n    const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);\n    const select = (triggerDate, modifiers, e) => {\n        const { min, max } = props;\n        const newRange = triggerDate\n            ? addToRange(triggerDate, selected, min, max, required, dateLib)\n            : undefined;\n        if (excludeDisabled && disabled && newRange?.from && newRange.to) {\n            if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {\n                // if a disabled days is found, the range is reset\n                newRange.from = triggerDate;\n                newRange.to = undefined;\n            }\n        }\n        if (!onSelect) {\n            setSelected(newRange);\n        }\n        onSelect?.(newRange, triggerDate, modifiers, e);\n        return newRange;\n    };\n    return {\n        selected,\n        select,\n        isSelected,\n    };\n}\n","import { useControlledValue } from \"../helpers/useControlledValue.js\";\n/**\n * Hook to manage single-date selection in the DayPicker component.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns An object containing the selected date, a function to select a date,\n *   and a function to check if a date is selected.\n */\nexport function useSingle(props, dateLib) {\n    const { selected: initiallySelected, required, onSelect, } = props;\n    const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);\n    const selected = !onSelect ? internallySelected : initiallySelected;\n    const { isSameDay } = dateLib;\n    const isSelected = (compareDate) => {\n        return selected ? isSameDay(selected, compareDate) : false;\n    };\n    const select = (triggerDate, modifiers, e) => {\n        let newDate = triggerDate;\n        if (!required && selected && selected && isSameDay(triggerDate, selected)) {\n            // If the date is the same, clear the selection.\n            newDate = undefined;\n        }\n        if (!onSelect) {\n            setSelected(newDate);\n        }\n        if (required) {\n            onSelect?.(newDate, triggerDate, modifiers, e);\n        }\n        else {\n            onSelect?.(newDate, triggerDate, modifiers, e);\n        }\n        return newDate;\n    };\n    return {\n        selected,\n        select,\n        isSelected,\n    };\n}\n","import { useMulti } from \"./selection/useMulti.js\";\nimport { useRange } from \"./selection/useRange.js\";\nimport { useSingle } from \"./selection/useSingle.js\";\n/**\n * Determines the appropriate selection hook to use based on the selection mode\n * and returns the corresponding selection object.\n *\n * @template T - The type of DayPicker props.\n * @param props - The DayPicker props.\n * @param dateLib - The date utility library instance.\n * @returns The selection object for the specified mode, or `undefined` if no\n *   mode is set.\n */\nexport function useSelection(props, dateLib) {\n    const single = useSingle(props, dateLib);\n    const multi = useMulti(props, dateLib);\n    const range = useRange(props, dateLib);\n    switch (props.mode) {\n        case \"single\":\n            return single;\n        case \"multiple\":\n            return multi;\n        case \"range\":\n            return range;\n        default:\n            return undefined;\n    }\n}\n","import { TZDate } from \"@date-fns/tz\";\n/**\n * Convert a {@link Date} or {@link TZDate} instance to the given time zone.\n * Reuses the same instance when it is already a {@link TZDate} using the target\n * time zone to avoid extra allocations.\n */\nexport function toTimeZone(date, timeZone) {\n    if (date instanceof TZDate && date.timeZone === timeZone) {\n        return date;\n    }\n    return new TZDate(date, timeZone);\n}\n","import { TZDate } from \"@date-fns/tz\";\nimport { toTimeZone } from \"./toTimeZone.js\";\nimport { isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, } from \"./typeguards.js\";\nfunction toZoneNoon(date, timeZone, noonSafe) {\n    if (!noonSafe)\n        return toTimeZone(date, timeZone);\n    const zoned = toTimeZone(date, timeZone);\n    const noonZoned = new TZDate(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 12, 0, 0, timeZone);\n    return new Date(noonZoned.getTime());\n}\nfunction convertMatcher(matcher, timeZone, noonSafe) {\n    if (typeof matcher === \"boolean\" || typeof matcher === \"function\") {\n        return matcher;\n    }\n    if (matcher instanceof Date) {\n        return toZoneNoon(matcher, timeZone, noonSafe);\n    }\n    if (Array.isArray(matcher)) {\n        return matcher.map((value) => value instanceof Date ? toZoneNoon(value, timeZone, noonSafe) : value);\n    }\n    if (isDateRange(matcher)) {\n        return {\n            ...matcher,\n            from: matcher.from ? toTimeZone(matcher.from, timeZone) : matcher.from,\n            to: matcher.to ? toTimeZone(matcher.to, timeZone) : matcher.to,\n        };\n    }\n    if (isDateInterval(matcher)) {\n        return {\n            before: toZoneNoon(matcher.before, timeZone, noonSafe),\n            after: toZoneNoon(matcher.after, timeZone, noonSafe),\n        };\n    }\n    if (isDateAfterType(matcher)) {\n        return {\n            after: toZoneNoon(matcher.after, timeZone, noonSafe),\n        };\n    }\n    if (isDateBeforeType(matcher)) {\n        return {\n            before: toZoneNoon(matcher.before, timeZone, noonSafe),\n        };\n    }\n    return matcher;\n}\n/**\n * Convert any {@link Matcher} or array of matchers to the specified time zone.\n *\n * @param matchers - The matcher or matchers to convert.\n * @param timeZone - The target IANA time zone.\n * @returns The converted matcher(s).\n * @group Utilities\n */\nexport function convertMatchersToTimeZone(matchers, timeZone, noonSafe) {\n    if (!matchers) {\n        return matchers;\n    }\n    if (Array.isArray(matchers)) {\n        return matchers.map((matcher) => convertMatcher(matcher, timeZone, noonSafe));\n    }\n    return convertMatcher(matchers, timeZone, noonSafe);\n}\n","import React, { useCallback, useMemo, useRef } from \"react\";\nimport { DateLib, defaultLocale } from \"./classes/DateLib.js\";\nimport { createGetModifiers } from \"./helpers/createGetModifiers.js\";\nimport { getClassNamesForModifiers } from \"./helpers/getClassNamesForModifiers.js\";\nimport { getComponents } from \"./helpers/getComponents.js\";\nimport { getDataAttributes } from \"./helpers/getDataAttributes.js\";\nimport { getDefaultClassNames } from \"./helpers/getDefaultClassNames.js\";\nimport { getFormatters } from \"./helpers/getFormatters.js\";\nimport { getLabels } from \"./helpers/getLabels.js\";\nimport { getMonthOptions } from \"./helpers/getMonthOptions.js\";\nimport { getStyleForModifiers } from \"./helpers/getStyleForModifiers.js\";\nimport { getWeekdays } from \"./helpers/getWeekdays.js\";\nimport { getYearOptions } from \"./helpers/getYearOptions.js\";\nimport { createNoonOverrides } from \"./noonDateLib.js\";\nimport { DayFlag, SelectionState, UI } from \"./UI.js\";\nimport { useAnimation } from \"./useAnimation.js\";\nimport { useCalendar } from \"./useCalendar.js\";\nimport { dayPickerContext } from \"./useDayPicker.js\";\nimport { useFocus } from \"./useFocus.js\";\nimport { useSelection } from \"./useSelection.js\";\nimport { convertMatchersToTimeZone } from \"./utils/convertMatchersToTimeZone.js\";\nimport { rangeIncludesDate } from \"./utils/rangeIncludesDate.js\";\nimport { toTimeZone } from \"./utils/toTimeZone.js\";\nimport { isDateRange } from \"./utils/typeguards.js\";\n/**\n * Renders the DayPicker calendar component.\n *\n * @param initialProps - The props for the DayPicker component.\n * @returns The rendered DayPicker component.\n * @group DayPicker\n * @see https://daypicker.dev\n */\nexport function DayPicker(initialProps) {\n    let props = initialProps;\n    const timeZone = props.timeZone;\n    if (timeZone) {\n        props = {\n            ...initialProps,\n            timeZone,\n        };\n        if (props.today) {\n            props.today = toTimeZone(props.today, timeZone);\n        }\n        if (props.month) {\n            props.month = toTimeZone(props.month, timeZone);\n        }\n        if (props.defaultMonth) {\n            props.defaultMonth = toTimeZone(props.defaultMonth, timeZone);\n        }\n        if (props.startMonth) {\n            props.startMonth = toTimeZone(props.startMonth, timeZone);\n        }\n        if (props.endMonth) {\n            props.endMonth = toTimeZone(props.endMonth, timeZone);\n        }\n        if (props.mode === \"single\" && props.selected) {\n            props.selected = toTimeZone(props.selected, timeZone);\n        }\n        else if (props.mode === \"multiple\" && props.selected) {\n            props.selected = props.selected?.map((date) => toTimeZone(date, timeZone));\n        }\n        else if (props.mode === \"range\" && props.selected) {\n            props.selected = {\n                from: props.selected.from\n                    ? toTimeZone(props.selected.from, timeZone)\n                    : props.selected.from,\n                to: props.selected.to\n                    ? toTimeZone(props.selected.to, timeZone)\n                    : props.selected.to,\n            };\n        }\n        if (props.disabled !== undefined) {\n            props.disabled = convertMatchersToTimeZone(props.disabled, timeZone);\n        }\n        if (props.hidden !== undefined) {\n            props.hidden = convertMatchersToTimeZone(props.hidden, timeZone);\n        }\n        if (props.modifiers) {\n            const nextModifiers = {};\n            Object.keys(props.modifiers).forEach((key) => {\n                nextModifiers[key] = convertMatchersToTimeZone(props.modifiers?.[key], timeZone);\n            });\n            props.modifiers = nextModifiers;\n        }\n    }\n    const { components, formatters, labels, dateLib, locale, classNames } = useMemo(() => {\n        const locale = { ...defaultLocale, ...props.locale };\n        const weekStartsOn = props.broadcastCalendar ? 1 : props.weekStartsOn;\n        const noonOverrides = props.noonSafe && props.timeZone\n            ? createNoonOverrides(props.timeZone, {\n                weekStartsOn,\n                locale,\n            })\n            : undefined;\n        const overrides = props.dateLib && noonOverrides\n            ? { ...noonOverrides, ...props.dateLib }\n            : (props.dateLib ?? noonOverrides);\n        const dateLib = new DateLib({\n            locale,\n            weekStartsOn,\n            firstWeekContainsDate: props.firstWeekContainsDate,\n            useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,\n            useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,\n            timeZone: props.timeZone,\n            numerals: props.numerals,\n        }, overrides);\n        return {\n            dateLib,\n            components: getComponents(props.components),\n            formatters: getFormatters(props.formatters),\n            labels: getLabels(props.labels, dateLib.options),\n            locale,\n            classNames: { ...getDefaultClassNames(), ...props.classNames },\n        };\n    }, [\n        props.locale,\n        props.broadcastCalendar,\n        props.weekStartsOn,\n        props.firstWeekContainsDate,\n        props.useAdditionalWeekYearTokens,\n        props.useAdditionalDayOfYearTokens,\n        props.timeZone,\n        props.numerals,\n        props.dateLib,\n        props.noonSafe,\n        props.components,\n        props.formatters,\n        props.labels,\n        props.classNames,\n    ]);\n    if (!props.today) {\n        props = { ...props, today: dateLib.today() };\n    }\n    const { captionLayout, mode, navLayout, numberOfMonths = 1, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles, } = props;\n    const { formatCaption, formatDay, formatMonthDropdown, formatWeekNumber, formatWeekNumberHeader, formatWeekdayName, formatYearDropdown, } = formatters;\n    const calendar = useCalendar(props, dateLib);\n    const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth, } = calendar;\n    const getModifiers = createGetModifiers(days, props, navStart, navEnd, dateLib);\n    const { isSelected, select, selected: selectedValue, } = useSelection(props, dateLib) ?? {};\n    const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus(props, calendar, getModifiers, isSelected ?? (() => false), dateLib);\n    const { labelDayButton, labelGridcell, labelGrid, labelMonthDropdown, labelNav, labelPrevious, labelNext, labelWeekday, labelWeekNumber, labelWeekNumberHeader, labelYearDropdown, } = labels;\n    const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek, props.broadcastCalendar, props.today), [dateLib, props.ISOWeek, props.broadcastCalendar, props.today]);\n    const isInteractive = mode !== undefined || onDayClick !== undefined;\n    const handlePreviousClick = useCallback(() => {\n        if (!previousMonth)\n            return;\n        goToMonth(previousMonth);\n        onPrevClick?.(previousMonth);\n    }, [previousMonth, goToMonth, onPrevClick]);\n    const handleNextClick = useCallback(() => {\n        if (!nextMonth)\n            return;\n        goToMonth(nextMonth);\n        onNextClick?.(nextMonth);\n    }, [goToMonth, nextMonth, onNextClick]);\n    const handleDayClick = useCallback((day, m) => (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        setFocused(day);\n        if (m.disabled) {\n            return;\n        }\n        select?.(day.date, m, e);\n        onDayClick?.(day.date, m, e);\n    }, [select, onDayClick, setFocused]);\n    const handleDayFocus = useCallback((day, m) => (e) => {\n        setFocused(day);\n        onDayFocus?.(day.date, m, e);\n    }, [onDayFocus, setFocused]);\n    const handleDayBlur = useCallback((day, m) => (e) => {\n        blur();\n        onDayBlur?.(day.date, m, e);\n    }, [blur, onDayBlur]);\n    const handleDayKeyDown = useCallback((day, modifiers) => (e) => {\n        const keyMap = {\n            ArrowLeft: [\n                e.shiftKey ? \"month\" : \"day\",\n                props.dir === \"rtl\" ? \"after\" : \"before\",\n            ],\n            ArrowRight: [\n                e.shiftKey ? \"month\" : \"day\",\n                props.dir === \"rtl\" ? \"before\" : \"after\",\n            ],\n            ArrowDown: [e.shiftKey ? \"year\" : \"week\", \"after\"],\n            ArrowUp: [e.shiftKey ? \"year\" : \"week\", \"before\"],\n            PageUp: [e.shiftKey ? \"year\" : \"month\", \"before\"],\n            PageDown: [e.shiftKey ? \"year\" : \"month\", \"after\"],\n            Home: [\"startOfWeek\", \"before\"],\n            End: [\"endOfWeek\", \"after\"],\n        };\n        if (keyMap[e.key]) {\n            e.preventDefault();\n            e.stopPropagation();\n            const [moveBy, moveDir] = keyMap[e.key];\n            moveFocus(moveBy, moveDir);\n        }\n        onDayKeyDown?.(day.date, modifiers, e);\n    }, [moveFocus, onDayKeyDown, props.dir]);\n    const handleDayMouseEnter = useCallback((day, modifiers) => (e) => {\n        onDayMouseEnter?.(day.date, modifiers, e);\n    }, [onDayMouseEnter]);\n    const handleDayMouseLeave = useCallback((day, modifiers) => (e) => {\n        onDayMouseLeave?.(day.date, modifiers, e);\n    }, [onDayMouseLeave]);\n    const handleMonthChange = useCallback((date) => (e) => {\n        const selectedMonth = Number(e.target.value);\n        const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);\n        goToMonth(month);\n    }, [dateLib, goToMonth]);\n    const handleYearChange = useCallback((date) => (e) => {\n        const selectedYear = Number(e.target.value);\n        const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);\n        goToMonth(month);\n    }, [dateLib, goToMonth]);\n    const { className, style } = useMemo(() => ({\n        className: [classNames[UI.Root], props.className]\n            .filter(Boolean)\n            .join(\" \"),\n        style: { ...styles?.[UI.Root], ...props.style },\n    }), [classNames, props.className, props.style, styles]);\n    const dataAttributes = getDataAttributes(props);\n    const rootElRef = useRef(null);\n    useAnimation(rootElRef, Boolean(props.animate), {\n        classNames,\n        months,\n        focused,\n        dateLib,\n    });\n    const contextValue = {\n        dayPickerProps: props,\n        selected: selectedValue,\n        select: select,\n        isSelected,\n        months,\n        nextMonth,\n        previousMonth,\n        goToMonth,\n        getModifiers,\n        components,\n        classNames,\n        styles,\n        labels,\n        formatters,\n    };\n    return (React.createElement(dayPickerContext.Provider, { value: contextValue },\n        React.createElement(components.Root, { rootRef: props.animate ? rootElRef : undefined, className: className, style: style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, \"aria-label\": props[\"aria-label\"], \"aria-labelledby\": props[\"aria-labelledby\"], ...dataAttributes },\n            React.createElement(components.Months, { className: classNames[UI.Months], style: styles?.[UI.Months] },\n                !props.hideNavigation && !navLayout && (React.createElement(components.Nav, { \"data-animated-nav\": props.animate ? \"true\" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n                months.map((calendarMonth, displayIndex) => {\n                    return (React.createElement(components.Month, { \"data-animated-month\": props.animate ? \"true\" : undefined, className: classNames[UI.Month], style: styles?.[UI.Month], \n                        // biome-ignore lint/suspicious/noArrayIndexKey: breaks animation\n                        key: displayIndex, displayIndex: displayIndex, calendarMonth: calendarMonth },\n                        navLayout === \"around\" &&\n                            !props.hideNavigation &&\n                            displayIndex === 0 && (React.createElement(components.PreviousMonthButton, { type: \"button\", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, \"aria-disabled\": previousMonth ? undefined : true, \"aria-label\": labelPrevious(previousMonth), onClick: handlePreviousClick, \"data-animated-button\": props.animate ? \"true\" : undefined },\n                            React.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === \"rtl\" ? \"right\" : \"left\" }))),\n                        React.createElement(components.MonthCaption, { \"data-animated-caption\": props.animate ? \"true\" : undefined, className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth: calendarMonth, displayIndex: displayIndex }, captionLayout?.startsWith(\"dropdown\") ? (React.createElement(components.DropdownNav, { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },\n                            (() => {\n                                const monthControl = captionLayout === \"dropdown\" ||\n                                    captionLayout === \"dropdown-months\" ? (React.createElement(components.MonthsDropdown, { key: \"month\", className: classNames[UI.MonthsDropdown], \"aria-label\": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib), style: styles?.[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) })) : (React.createElement(\"span\", { key: \"month\" }, formatMonthDropdown(calendarMonth.date, dateLib)));\n                                const yearControl = captionLayout === \"dropdown\" ||\n                                    captionLayout === \"dropdown-years\" ? (React.createElement(components.YearsDropdown, { key: \"year\", className: classNames[UI.YearsDropdown], \"aria-label\": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters, dateLib, Boolean(props.reverseYears)), style: styles?.[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) })) : (React.createElement(\"span\", { key: \"year\" }, formatYearDropdown(calendarMonth.date, dateLib)));\n                                const controls = dateLib.getMonthYearOrder() === \"year-first\"\n                                    ? [yearControl, monthControl]\n                                    : [monthControl, yearControl];\n                                return controls;\n                            })(),\n                            React.createElement(\"span\", { role: \"status\", \"aria-live\": \"polite\", style: {\n                                    border: 0,\n                                    clip: \"rect(0 0 0 0)\",\n                                    height: \"1px\",\n                                    margin: \"-1px\",\n                                    overflow: \"hidden\",\n                                    padding: 0,\n                                    position: \"absolute\",\n                                    width: \"1px\",\n                                    whiteSpace: \"nowrap\",\n                                    wordWrap: \"normal\",\n                                } }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))) : (React.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: \"status\", \"aria-live\": \"polite\" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),\n                        navLayout === \"around\" &&\n                            !props.hideNavigation &&\n                            displayIndex === numberOfMonths - 1 && (React.createElement(components.NextMonthButton, { type: \"button\", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, \"aria-disabled\": nextMonth ? undefined : true, \"aria-label\": labelNext(nextMonth), onClick: handleNextClick, \"data-animated-button\": props.animate ? \"true\" : undefined },\n                            React.createElement(components.Chevron, { disabled: nextMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === \"rtl\" ? \"left\" : \"right\" }))),\n                        displayIndex === numberOfMonths - 1 &&\n                            navLayout === \"after\" &&\n                            !props.hideNavigation && (React.createElement(components.Nav, { \"data-animated-nav\": props.animate ? \"true\" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], \"aria-label\": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),\n                        React.createElement(components.MonthGrid, { role: \"grid\", \"aria-multiselectable\": mode === \"multiple\" || mode === \"range\", \"aria-label\": labelGrid(calendarMonth.date, dateLib.options, dateLib) ||\n                                undefined, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },\n                            !props.hideWeekdays && (React.createElement(components.Weekdays, { \"data-animated-weekdays\": props.animate ? \"true\" : undefined, className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },\n                                showWeekNumber && (React.createElement(components.WeekNumberHeader, { \"aria-label\": labelWeekNumberHeader(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: \"col\" }, formatWeekNumberHeader())),\n                                weekdays.map((weekday) => (React.createElement(components.Weekday, { \"aria-label\": labelWeekday(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles?.[UI.Weekday], scope: \"col\" }, formatWeekdayName(weekday, dateLib.options, dateLib)))))),\n                            React.createElement(components.Weeks, { \"data-animated-weeks\": props.animate ? \"true\" : undefined, className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week) => {\n                                return (React.createElement(components.Week, { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week: week },\n                                    showWeekNumber && (React.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], \"aria-label\": labelWeekNumber(week.weekNumber, {\n                                            locale,\n                                        }), className: classNames[UI.WeekNumber], scope: \"row\", role: \"rowheader\" }, formatWeekNumber(week.weekNumber, dateLib))),\n                                    week.days.map((day) => {\n                                        const { date } = day;\n                                        const modifiers = getModifiers(day);\n                                        modifiers[DayFlag.focused] =\n                                            !modifiers.hidden &&\n                                                Boolean(focused?.isEqualTo(day));\n                                        modifiers[SelectionState.selected] =\n                                            isSelected?.(date) || modifiers.selected;\n                                        if (isDateRange(selectedValue)) {\n                                            // add range modifiers\n                                            const { from, to } = selectedValue;\n                                            modifiers[SelectionState.range_start] = Boolean(from && to && dateLib.isSameDay(date, from));\n                                            modifiers[SelectionState.range_end] = Boolean(from && to && dateLib.isSameDay(date, to));\n                                            modifiers[SelectionState.range_middle] =\n                                                rangeIncludesDate(selectedValue, date, true, dateLib);\n                                        }\n                                        const style = getStyleForModifiers(modifiers, styles, props.modifiersStyles);\n                                        const className = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);\n                                        const ariaLabel = !isInteractive && !modifiers.hidden\n                                            ? labelGridcell(date, modifiers, dateLib.options, dateLib)\n                                            : undefined;\n                                        return (React.createElement(components.Day, { key: `${day.isoDate}_${day.displayMonthId}`, day: day, modifiers: modifiers, className: className.join(\" \"), style: style, role: \"gridcell\", \"aria-selected\": modifiers.selected || undefined, \"aria-label\": ariaLabel, \"data-day\": day.isoDate, \"data-month\": day.outside ? day.dateMonthId : undefined, \"data-selected\": modifiers.selected || undefined, \"data-disabled\": modifiers.disabled || undefined, \"data-hidden\": modifiers.hidden || undefined, \"data-outside\": day.outside || undefined, \"data-focused\": modifiers.focused || undefined, \"data-today\": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: \"button\", day: day, modifiers: modifiers, disabled: (!modifiers.focused &&\n                                                modifiers.disabled) ||\n                                                undefined, \"aria-disabled\": (modifiers.focused &&\n                                                modifiers.disabled) ||\n                                                undefined, tabIndex: isFocusTarget(day) ? 0 : -1, \"aria-label\": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&\n                                            formatDay(day.date, dateLib.options, dateLib))));\n                                    })));\n                            })))));\n                })),\n            props.footer && (React.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: \"status\", \"aria-live\": \"polite\" }, props.footer)))));\n}\n","import {\n  DayPicker,\n  type DayPickerProps,\n} from 'react-day-picker';\nimport 'react-day-picker/style.css';\n\nimport { cn } from '../../lib/utils';\n\nexport type CalendarProps = DayPickerProps;\n\nfunction Calendar({\n  className,\n  classNames,\n  showOutsideDays = true,\n  ...props\n}: CalendarProps) {\n  return (\n    <DayPicker\n      showOutsideDays={showOutsideDays}\n      className={cn('p-2', className)}\n      classNames={{\n        months: 'flex flex-col gap-2',\n        month: 'flex flex-col gap-2',\n        caption: 'flex justify-center pt-1 relative items-center w-full',\n        caption_label: 'text-[12px] font-medium text-[#121111]',\n        nav: 'flex items-center gap-1',\n        button_previous:\n          'absolute left-1 h-5 w-5 flex items-center justify-center rounded-[2px] hover:bg-[#EFF0F6] text-[#666666]',\n        button_next:\n          'absolute right-1 h-5 w-5 flex items-center justify-center rounded-[2px] hover:bg-[#EFF0F6] text-[#666666]',\n        month_grid: 'w-full border-collapse',\n        weekdays: 'flex',\n        weekday:\n          'flex-1 h-7 flex items-center justify-center text-[12px] text-[#999999] font-normal',\n        week: 'flex w-full mt-0.5',\n        day: 'flex-1 h-7 flex items-center justify-center text-[12px] text-[#121111] rounded-[2px] hover:bg-[#EFF0F6] cursor-pointer aria-selected:opacity-100',\n        day_button: 'w-full h-full flex items-center justify-center',\n        range_start:\n          'bg-[#0265FF] text-white rounded-r-none hover:bg-[#0265FF]',\n        range_end:\n          'bg-[#0265FF] text-white rounded-l-none hover:bg-[#0265FF]',\n        range_middle:\n          'bg-[#F0F6FF] text-[#0265FF] rounded-none hover:bg-[#E6EEFF]',\n        selected: 'bg-[#0265FF] text-white hover:bg-[#0265FF]',\n        today: 'text-[#0265FF] font-bold',\n        outside:\n          'text-[#CCCCCC] aria-selected:text-[#CCCCCC]',\n        disabled: 'text-[#CCCCCC] opacity-50',\n        hidden: 'invisible',\n        ...classNames,\n      }}\n      {...props}\n    />\n  );\n}\n\nexport { Calendar };\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n    !Array.isArray(value) &&\n    isObjectType(value) &&\n    !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n    ? isCheckBoxInput(event.target)\n        ? event.target.checked\n        : event.target.value\n    : event;\n\nvar getFieldArrayParentNames = (names, name) => {\n    const parts = name.split('.');\n    const matches = [];\n    let prefix = parts[0];\n    for (let i = 1; i < parts.length; prefix += '.' + parts[i++]) {\n        !isNaN(+parts[i]) && names.has(prefix) && matches.push(prefix);\n    }\n    return matches;\n};\n\nvar isPlainObject = (tempObject) => {\n    const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n    return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n    typeof window.HTMLElement !== 'undefined' &&\n    typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n    if (data instanceof Date) {\n        return new Date(data);\n    }\n    const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n    if (isWeb && (data instanceof Blob || isFileListInstance)) {\n        return data;\n    }\n    const isArray = Array.isArray(data);\n    if (!isArray && !(isObject(data) && isPlainObject(data))) {\n        return data;\n    }\n    const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            copy[key] = cloneObject(data[key]);\n        }\n    }\n    return copy;\n}\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar get = (object, path, defaultValue) => {\n    if (!path || !isObject(object)) {\n        return defaultValue;\n    }\n    const paths = isKey(path) ? [path] : stringToPath(path);\n    const result = paths.reduce((result, key) => {\n        return isNullOrUndefined(result) ? undefined : result[key];\n    }, object);\n    return isUndefined(result) || result === object\n        ? isUndefined(object[path])\n            ? defaultValue\n            : object[path]\n        : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n    let index = -1;\n    const tempPath = isKey(path) ? [path] : stringToPath(path);\n    const length = tempPath.length;\n    const lastIndex = length - 1;\n    while (++index < length) {\n        const key = tempPath[index];\n        let newValue = value;\n        if (index !== lastIndex) {\n            const objValue = object[key];\n            newValue =\n                isObject(objValue) || Array.isArray(objValue)\n                    ? objValue\n                    : !isNaN(+tempPath[index + 1])\n                        ? []\n                        : {};\n        }\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n            return;\n        }\n        object[key] = newValue;\n        object = object[key];\n    }\n};\n\nconst EVENTS = {\n    BLUR: 'blur',\n    FOCUS_OUT: 'focusout',\n    CHANGE: 'change',\n    SUBMIT: 'submit',\n    TRIGGER: 'trigger',\n    VALID: 'valid',\n};\nconst VALIDATION_MODE = {\n    onBlur: 'onBlur',\n    onChange: 'onChange',\n    onSubmit: 'onSubmit',\n    onTouched: 'onTouched',\n    all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n    max: 'max',\n    min: 'min',\n    maxLength: 'maxLength',\n    minLength: 'minLength',\n    pattern: 'pattern',\n    required: 'required',\n    validate: 'validate',\n};\nconst FORM_ERROR_TYPE = 'form';\nconst ROOT_ERROR_TYPE = 'root';\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = React.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => React.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n    const result = {};\n    for (const key in formState) {\n        Object.defineProperty(result, key, {\n            get: () => {\n                const _key = key;\n                if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n                    control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n                }\n                localProxyFormState && (localProxyFormState[_key] = true);\n                return formState[_key];\n            },\n        });\n    }\n    return result;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, control } = useForm({\n *     defaultValues: {\n *     firstName: \"firstName\"\n *   }});\n *   const { dirtyFields } = useFormState({\n *     control\n *   });\n *   const onSubmit = (data) => console.log(data);\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input {...register(\"firstName\")} placeholder=\"First Name\" />\n *       {dirtyFields.firstName && <p>Field is dirty.</p>}\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFormState(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, disabled, name, exact } = props || {};\n    const [formState, updateFormState] = React.useState(() => ({\n        ...control._formState,\n        defaultValues: control._defaultValues,\n    }));\n    const _localProxyFormState = React.useRef({\n        isDirty: false,\n        isLoading: false,\n        dirtyFields: false,\n        touchedFields: false,\n        validatingFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    });\n    useIsomorphicLayoutEffect(() => control._subscribe({\n        name,\n        formState: _localProxyFormState.current,\n        exact,\n        callback: (formState) => {\n            !disabled &&\n                updateFormState({\n                    ...control._formState,\n                    ...formState,\n                    defaultValues: control._defaultValues,\n                });\n        },\n    }), [name, disabled, exact]);\n    React.useEffect(() => {\n        _localProxyFormState.current.isValid && control._setValid(true);\n    }, [control]);\n    return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n    if (isString(names)) {\n        isGlobal && _names.watch.add(names);\n        return get(formValues, names, defaultValue);\n    }\n    if (Array.isArray(names)) {\n        return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n            get(formValues, fieldName)));\n    }\n    isGlobal && (_names.watchAll = true);\n    return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2, visited = new WeakSet()) {\n    if (object1 === object2) {\n        return true;\n    }\n    if (isPrimitive(object1) || isPrimitive(object2)) {\n        return Object.is(object1, object2);\n    }\n    if (isDateObject(object1) && isDateObject(object2)) {\n        return Object.is(object1.getTime(), object2.getTime());\n    }\n    const keys1 = Object.keys(object1);\n    const keys2 = Object.keys(object2);\n    if (keys1.length !== keys2.length) {\n        return false;\n    }\n    if (visited.has(object1) || visited.has(object2)) {\n        return true;\n    }\n    visited.add(object1);\n    visited.add(object2);\n    for (const key of keys1) {\n        const val1 = object1[key];\n        if (!(key in object2)) {\n            return false;\n        }\n        if (key !== 'ref') {\n            const val2 = object2[key];\n            if ((isDateObject(val1) && isDateObject(val2)) ||\n                ((isObject(val1) || Array.isArray(val1)) &&\n                    (isObject(val2) || Array.isArray(val2)))\n                ? !deepEqual(val1, val2, visited)\n                : !Object.is(val1, val2)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n *   name: \"fieldName\"\n *   control,\n * })\n * ```\n */\nfunction useWatch(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n    const _defaultValue = React.useRef(defaultValue);\n    const _compute = React.useRef(compute);\n    const _computeFormValues = React.useRef(undefined);\n    const _prevControl = React.useRef(control);\n    const _prevName = React.useRef(name);\n    _compute.current = compute;\n    const [value, updateValue] = React.useState(() => {\n        const defaultValue = control._getWatch(name, _defaultValue.current);\n        return _compute.current ? _compute.current(defaultValue) : defaultValue;\n    });\n    const getCurrentOutput = React.useCallback((values) => {\n        const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n        return _compute.current ? _compute.current(formValues) : formValues;\n    }, [control._formValues, control._names, name]);\n    const refreshValue = React.useCallback((values) => {\n        if (!disabled) {\n            const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n            if (_compute.current) {\n                const computedFormValues = _compute.current(formValues);\n                if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n                    updateValue(computedFormValues);\n                    _computeFormValues.current = computedFormValues;\n                }\n            }\n            else {\n                updateValue(formValues);\n            }\n        }\n    }, [control._formValues, control._names, disabled, name]);\n    useIsomorphicLayoutEffect(() => {\n        if (_prevControl.current !== control ||\n            !deepEqual(_prevName.current, name)) {\n            _prevControl.current = control;\n            _prevName.current = name;\n            refreshValue();\n        }\n        return control._subscribe({\n            name,\n            formState: {\n                values: true,\n            },\n            exact,\n            callback: (formState) => {\n                refreshValue(formState.values);\n            },\n        });\n    }, [control, exact, name, refreshValue]);\n    React.useEffect(() => control._removeUnmounted());\n    // If name or control changed for this render, synchronously reflect the\n    // latest value so callers (like useController) see the correct value\n    // immediately on the same render.\n    // Optimize: Check control reference first before expensive deepEqual\n    const controlChanged = _prevControl.current !== control;\n    const prevName = _prevName.current;\n    // Cache the computed output to avoid duplicate calls within the same render\n    // We include shouldReturnImmediate in deps to ensure proper recomputation\n    const computedOutput = React.useMemo(() => {\n        if (disabled) {\n            return null;\n        }\n        const nameChanged = !controlChanged && !deepEqual(prevName, name);\n        const shouldReturnImmediate = controlChanged || nameChanged;\n        return shouldReturnImmediate ? getCurrentOutput() : null;\n    }, [disabled, controlChanged, name, prevName, getCurrentOutput]);\n    return computedOutput !== null ? computedOutput : value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n *   const { field, fieldState, formState } = useController(props);\n *   return (\n *     <div>\n *       <input {...field} placeholder={props.name} />\n *       <p>{fieldState.isTouched && \"Touched\"}</p>\n *       <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *     </div>\n *   );\n * }\n * ```\n */\nfunction useController(props) {\n    const formControl = useFormControlContext();\n    const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n    const isArrayField = !!getFieldArrayParentNames(control._names.array, name)\n        .length;\n    const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n    const value = useWatch({\n        control,\n        name,\n        defaultValue: defaultValueMemo,\n        exact,\n    });\n    const formState = useFormState({\n        control,\n        name,\n        exact,\n    });\n    const _props = React.useRef(props);\n    const _registerProps = React.useRef(control.register(name, {\n        ...props.rules,\n        value,\n        ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n    }));\n    _props.current = props;\n    const fieldState = React.useMemo(() => Object.defineProperties({}, {\n        invalid: {\n            enumerable: true,\n            get: () => !!get(formState.errors, name),\n        },\n        isDirty: {\n            enumerable: true,\n            get: () => !!get(formState.dirtyFields, name),\n        },\n        isTouched: {\n            enumerable: true,\n            get: () => !!get(formState.touchedFields, name),\n        },\n        isValidating: {\n            enumerable: true,\n            get: () => !!get(formState.validatingFields, name),\n        },\n        error: {\n            enumerable: true,\n            get: () => get(formState.errors, name),\n        },\n    }), [formState, name]);\n    const onChange = React.useCallback((event) => _registerProps.current.onChange({\n        target: {\n            value: getEventValue(event),\n            name: name,\n        },\n        type: EVENTS.CHANGE,\n    }), [name]);\n    const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n        target: {\n            value: get(control._formValues, name),\n            name: name,\n        },\n        type: EVENTS.BLUR,\n    }), [name, control._formValues]);\n    const ref = React.useCallback((elm) => {\n        const field = get(control._fields, name);\n        if (field && field._f && elm) {\n            field._f.ref = {\n                focus: () => isFunction(elm.focus) && elm.focus(),\n                select: () => isFunction(elm.select) && elm.select(),\n                setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n                reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n            };\n        }\n    }, [control._fields, name]);\n    const field = React.useMemo(() => ({\n        name,\n        value,\n        ...(isBoolean(disabled) || formState.disabled\n            ? { disabled: formState.disabled || disabled }\n            : {}),\n        onChange,\n        onBlur,\n        ref,\n    }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n    React.useEffect(() => {\n        const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n        control.register(name, {\n            ..._props.current.rules,\n            ...(isBoolean(_props.current.disabled)\n                ? { disabled: _props.current.disabled }\n                : {}),\n        });\n        const updateMounted = (name, value) => {\n            const field = get(control._fields, name);\n            if (field && field._f) {\n                field._f.mount = value;\n            }\n        };\n        updateMounted(name, true);\n        if (_shouldUnregisterField) {\n            const value = cloneObject(get(control._defaultValues, name, get(control._options.defaultValues, name, _props.current.defaultValue)));\n            set(control._defaultValues, name, value);\n            if (isUndefined(get(control._formValues, name))) {\n                set(control._formValues, name, value);\n            }\n        }\n        !isArrayField && control.register(name);\n        return () => {\n            (isArrayField\n                ? _shouldUnregisterField && !control._state.action\n                : _shouldUnregisterField)\n                ? control.unregister(name)\n                : updateMounted(name, false);\n        };\n    }, [name, control, isArrayField, shouldUnregister]);\n    React.useEffect(() => {\n        control._setDisabledField({\n            disabled,\n            name,\n        });\n    }, [disabled, name, control]);\n    return React.useMemo(() => ({\n        field,\n        formState,\n        fieldState,\n    }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control } = useForm<FormValues>({\n *     defaultValues: {\n *       test: \"\"\n *     }\n *   });\n *\n *   return (\n *     <form>\n *       <Controller\n *         control={control}\n *         name=\"test\"\n *         render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n *           <>\n *             <input\n *               onChange={onChange} // send value to hook form\n *               onBlur={onBlur} // notify when input is touched\n *               value={value} // return updated value\n *               ref={ref} // set ref for focus management\n *             />\n *             <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *             <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n *           </>\n *         )}\n *       />\n *     </form>\n *   );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n    const output = {};\n    for (const key of Object.keys(obj)) {\n        if (isObjectType(obj[key]) && obj[key] !== null) {\n            const nested = flatten(obj[key]);\n            for (const nestedKey of Object.keys(nested)) {\n                output[`${key}.${nestedKey}`] = nested[nestedKey];\n            }\n        }\n        else {\n            output[key] = obj[key];\n        }\n    }\n    return output;\n};\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n    const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;\n    const memoizedValue = React.useMemo(() => ({\n        watch,\n        getValues,\n        getFieldState,\n        setError,\n        clearErrors,\n        setValue,\n        setValues,\n        trigger,\n        formState,\n        resetField,\n        reset,\n        handleSubmit,\n        unregister,\n        control,\n        register,\n        setFocus,\n        subscribe,\n    }), [\n        clearErrors,\n        control,\n        formState,\n        getFieldState,\n        getValues,\n        handleSubmit,\n        register,\n        reset,\n        resetField,\n        setError,\n        setFocus,\n        setValue,\n        setValues,\n        subscribe,\n        trigger,\n        unregister,\n        watch,\n    ]);\n    return (React.createElement(HookFormContext.Provider, { value: memoizedValue },\n        React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control, formState: { errors } } = useForm();\n *\n *   return (\n *     <Form action=\"/api\" control={control}>\n *       <input {...register(\"name\")} />\n *       <p>{errors?.root?.server && 'Server error'}</p>\n *       <button>Submit</button>\n *     </Form>\n *   );\n * }\n * ```\n */\nfunction Form(props) {\n    const methods = useFormContext();\n    const [mounted, setMounted] = React.useState(false);\n    const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n    const submit = React.useCallback(async (event) => {\n        let hasError = false;\n        let type = '';\n        await control.handleSubmit(async (data) => {\n            const formData = new FormData();\n            let formDataJson = '';\n            try {\n                formDataJson = JSON.stringify(data);\n            }\n            catch (_a) { }\n            const flattenFormValues = flatten(data);\n            for (const key in flattenFormValues) {\n                formData.append(key, flattenFormValues[key]);\n            }\n            if (onSubmit) {\n                await onSubmit({\n                    data,\n                    event,\n                    method,\n                    formData,\n                    formDataJson,\n                });\n            }\n            if (action) {\n                try {\n                    const shouldStringifySubmissionData = [\n                        headers && headers['Content-Type'],\n                        encType,\n                    ].some((value) => value && value.includes('json'));\n                    const response = await fetch(String(action), {\n                        method,\n                        headers: {\n                            ...headers,\n                            ...(encType && encType !== 'multipart/form-data'\n                                ? { 'Content-Type': encType }\n                                : {}),\n                        },\n                        body: shouldStringifySubmissionData ? formDataJson : formData,\n                    });\n                    if (response &&\n                        (validateStatus\n                            ? !validateStatus(response.status)\n                            : response.status < 200 || response.status >= 300)) {\n                        hasError = true;\n                        onError && onError({ response });\n                        type = String(response.status);\n                    }\n                    else {\n                        onSuccess && onSuccess({ response });\n                    }\n                }\n                catch (error) {\n                    hasError = true;\n                    onError && onError({ error });\n                }\n            }\n        })(event);\n        if (hasError && control) {\n            control._subjects.state.next({\n                isSubmitSuccessful: false,\n            });\n            control.setError('root.server', {\n                type,\n            });\n        }\n    }, [\n        control,\n        onSubmit,\n        method,\n        action,\n        headers,\n        encType,\n        validateStatus,\n        onError,\n        onSuccess,\n    ]);\n    React.useEffect(() => {\n        setMounted(true);\n    }, []);\n    return render ? (React.createElement(React.Fragment, null, render({\n        submit,\n    }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nconst FormStateSubscribe = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n    ? {\n        ...errors[name],\n        types: {\n            ...(errors[name] && errors[name].types ? errors[name].types : {}),\n            [type]: message || true,\n        },\n    }\n    : {};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n    let _observers = [];\n    const next = (value) => {\n        for (const observer of _observers) {\n            observer.next && observer.next(value);\n        }\n    };\n    const subscribe = (observer) => {\n        _observers.push(observer);\n        return {\n            unsubscribe: () => {\n                _observers = _observers.filter((o) => o !== observer);\n            },\n        };\n    };\n    const unsubscribe = () => {\n        _observers = [];\n    };\n    return {\n        get observers() {\n            return _observers;\n        },\n        next,\n        subscribe,\n        unsubscribe,\n    };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n    const values = {};\n    for (const key in fieldsState) {\n        if (fieldsState.hasOwnProperty(key)) {\n            const fieldState = fieldsState[key];\n            const fieldValue = formValues[key];\n            if (fieldState && isObject(fieldState) && fieldValue) {\n                const nestedFieldsState = extractFormValues(fieldState, fieldValue);\n                if (isObject(nestedFieldsState)) {\n                    values[key] = nestedFieldsState;\n                }\n            }\n            else if (fieldsState[key]) {\n                values[key] = fieldValue;\n            }\n        }\n    }\n    return values;\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\n    if (!isWeb) {\n        return false;\n    }\n    const owner = value ? value.ownerDocument : 0;\n    return (value instanceof\n        (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n    const length = updatePath.slice(0, -1).length;\n    let index = 0;\n    while (index < length) {\n        if (isNullOrUndefined(object)) {\n            object = undefined;\n            break;\n        }\n        object = object[updatePath[index]];\n        index++;\n    }\n    return object;\n}\nfunction isEmptyArray(obj) {\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction unset(object, path) {\n    if (isString(path) && Object.prototype.hasOwnProperty.call(object, path)) {\n        delete object[path];\n        return object;\n    }\n    const paths = Array.isArray(path)\n        ? path\n        : isKey(path)\n            ? [path]\n            : stringToPath(path);\n    const childObject = paths.length === 1 ? object : baseGet(object, paths);\n    const index = paths.length - 1;\n    const key = paths[index];\n    if (childObject) {\n        delete childObject[key];\n    }\n    if (index !== 0 &&\n        ((isObject(childObject) && isEmptyObject(childObject)) ||\n            (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n        unset(object, paths.slice(0, -1));\n    }\n    return object;\n}\n\nvar objectHasFunction = (data) => {\n    for (const key in data) {\n        if (isFunction(data[key])) {\n            return true;\n        }\n    }\n    return false;\n};\n\nfunction isTraversable(value) {\n    return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction markFieldsDirty(data, fields = {}) {\n    for (const key in data) {\n        const value = data[key];\n        if (isTraversable(value)) {\n            fields[key] = Array.isArray(value) ? [] : {};\n            markFieldsDirty(value, fields[key]);\n        }\n        else if (!isUndefined(value)) {\n            fields[key] = true;\n        }\n    }\n    return fields;\n}\nfunction pruneDirtyFields(value) {\n    if (value === false) {\n        return undefined;\n    }\n    if (value === true) {\n        return true;\n    }\n    if (Array.isArray(value)) {\n        const result = value.map((value) => pruneDirtyFields(value));\n        return (result.some((value) => value !== undefined) ? result : undefined);\n    }\n    if (isObject(value)) {\n        const result = {};\n        for (const key in value) {\n            const pruned = pruneDirtyFields(value[key]);\n            if (!isUndefined(pruned)) {\n                result[key] = pruned;\n            }\n        }\n        return (Object.keys(result).length ? result : undefined);\n    }\n    return undefined;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues) {\n    if (!dirtyFieldsFromValues) {\n        dirtyFieldsFromValues = markFieldsDirty(formValues);\n    }\n    for (const key in data) {\n        const value = data[key];\n        if (isTraversable(value)) {\n            if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n                dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {});\n            }\n            else {\n                getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n            }\n        }\n        else {\n            const formValue = formValues[key];\n            dirtyFieldsFromValues[key] = !deepEqual(value, formValue);\n        }\n    }\n    return pruneDirtyFields(dirtyFieldsFromValues) || {};\n}\n\nconst defaultResult = {\n    value: false,\n    isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n    if (Array.isArray(options)) {\n        if (options.length > 1) {\n            const values = options\n                .filter((option) => option && option.checked && !option.disabled)\n                .map((option) => option.value);\n            return { value: values, isValid: !!values.length };\n        }\n        return options[0].checked && !options[0].disabled\n            ? // @ts-expect-error expected to work in the browser\n                options[0].attributes && !isUndefined(options[0].attributes.value)\n                    ? isUndefined(options[0].value) || options[0].value === ''\n                        ? validResult\n                        : { value: options[0].value, isValid: true }\n                    : validResult\n            : defaultResult;\n    }\n    return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n    ? value\n    : valueAsNumber\n        ? value === ''\n            ? NaN\n            : value\n                ? +value\n                : value\n        : valueAsDate && isString(value)\n            ? new Date(value)\n            : setValueAs\n                ? setValueAs(value)\n                : value;\n\nconst defaultReturn = {\n    isValid: false,\n    value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n    ? options.reduce((previous, option) => option && option.checked && !option.disabled\n        ? {\n            isValid: true,\n            value: option.value,\n        }\n        : previous, defaultReturn)\n    : defaultReturn;\n\nfunction getFieldValue(_f) {\n    const ref = _f.ref;\n    if (isFileInput(ref)) {\n        return ref.files;\n    }\n    if (isRadioInput(ref)) {\n        return getRadioValue(_f.refs).value;\n    }\n    if (isMultipleSelect(ref)) {\n        return [...ref.selectedOptions].map(({ value }) => value);\n    }\n    if (isCheckBoxInput(ref)) {\n        return getCheckboxValue(_f.refs).value;\n    }\n    return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n    const fields = {};\n    for (const name of fieldsNames) {\n        const field = get(_fields, name);\n        field && set(fields, name, field._f);\n    }\n    return {\n        criteriaMode,\n        names: [...fieldsNames],\n        fields,\n        shouldUseNativeValidation,\n    };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n    ? rule\n    : isRegex(rule)\n        ? rule.source\n        : isObject(rule)\n            ? isRegex(rule.value)\n                ? rule.value.source\n                : rule.value\n            : rule;\n\nvar getValidationModes = (mode) => ({\n    isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n    isOnBlur: mode === VALIDATION_MODE.onBlur,\n    isOnChange: mode === VALIDATION_MODE.onChange,\n    isOnAll: mode === VALIDATION_MODE.all,\n    isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n    !!fieldReference.validate &&\n    !!((isFunction(fieldReference.validate) &&\n        fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n        (isObject(fieldReference.validate) &&\n            Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n    (options.required ||\n        options.min ||\n        options.max ||\n        options.maxLength ||\n        options.minLength ||\n        options.pattern ||\n        options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n    (_names.watchAll ||\n        _names.watch.has(name) ||\n        [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n            /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n    for (const key of fieldsNames || Object.keys(fields)) {\n        const field = get(fields, key);\n        if (field) {\n            const { _f, ...currentField } = field;\n            if (_f) {\n                if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n                    return true;\n                }\n                else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n                    return true;\n                }\n                else {\n                    if (iterateFieldsByAction(currentField, action)) {\n                        break;\n                    }\n                }\n            }\n            else if (isObject(currentField)) {\n                if (iterateFieldsByAction(currentField, action)) {\n                    break;\n                }\n            }\n        }\n    }\n    return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n    const error = get(errors, name);\n    if (error || isKey(name)) {\n        return {\n            error,\n            name,\n        };\n    }\n    const names = name.split('.');\n    while (names.length) {\n        const fieldName = names.join('.');\n        const field = get(_fields, fieldName);\n        const foundError = get(errors, fieldName);\n        if (field && !Array.isArray(field) && name !== fieldName) {\n            return { name };\n        }\n        if (foundError && foundError.type) {\n            return {\n                name: fieldName,\n                error: foundError,\n            };\n        }\n        if (foundError && foundError.root && foundError.root.type) {\n            return {\n                name: `${fieldName}.root`,\n                error: foundError.root,\n            };\n        }\n        names.pop();\n    }\n    return {\n        name,\n    };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n    updateFormState(formStateData);\n    const { name, ...formState } = formStateData;\n    return (isEmptyObject(formState) ||\n        (isRoot &&\n            Object.keys(formState).length >= Object.keys(_proxyFormState).length) ||\n        Object.keys(formState).find((key) => _proxyFormState[key] ===\n            (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n    !signalName ||\n    name === signalName ||\n    convertToArrayPayload(name).some((currentName) => currentName &&\n        (exact\n            ? currentName === signalName\n            : currentName.startsWith(signalName) ||\n                signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n    if (mode.isOnAll) {\n        return false;\n    }\n    else if (!isSubmitted && mode.isOnTouch) {\n        return !(isTouched || isBlurEvent);\n    }\n    else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n        return !isBlurEvent;\n    }\n    else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n        return isBlurEvent;\n    }\n    return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n    const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n    set(fieldArrayErrors, ROOT_ERROR_TYPE, error[name]);\n    set(errors, name, fieldArrayErrors);\n    return errors;\n};\n\nfunction getValidateError(result, ref, type = 'validate') {\n    if (isString(result) ||\n        (Array.isArray(result) && result.every(isString)) ||\n        (isBoolean(result) && !result)) {\n        return {\n            type,\n            message: isString(result) ? result : '',\n            ref,\n        };\n    }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n    ? validationData\n    : {\n        value: validationData,\n        message: '',\n    };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n    const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n    const inputValue = get(formValues, name);\n    if (!mount || disabledFieldNames.has(name)) {\n        return {};\n    }\n    const inputRef = refs ? refs[0] : ref;\n    const setCustomValidity = (message) => {\n        if (shouldUseNativeValidation && inputRef.reportValidity) {\n            inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n            inputRef.reportValidity();\n        }\n    };\n    const error = {};\n    const isRadio = isRadioInput(ref);\n    const isCheckBox = isCheckBoxInput(ref);\n    const isRadioOrCheckbox = isRadio || isCheckBox;\n    const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n        isUndefined(ref.value) &&\n        isUndefined(inputValue)) ||\n        (isHTMLElement(ref) && ref.value === '') ||\n        inputValue === '' ||\n        (Array.isArray(inputValue) && !inputValue.length) ||\n        (valueAsNumber && typeof inputValue === 'number' && isNaN(inputValue));\n    const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n    const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n        const message = exceedMax ? maxLengthMessage : minLengthMessage;\n        error[name] = {\n            type: exceedMax ? maxType : minType,\n            message,\n            ref,\n            ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n        };\n    };\n    if (isFieldArray\n        ? !Array.isArray(inputValue) || !inputValue.length\n        : required &&\n            ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n                (isBoolean(inputValue) && !inputValue) ||\n                (isCheckBox && !getCheckboxValue(refs).isValid) ||\n                (isRadio && !getRadioValue(refs).isValid))) {\n        const { value, message } = isString(required)\n            ? { value: !!required, message: required }\n            : getValueAndMessage(required);\n        if (value) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.required,\n                message,\n                ref: inputRef,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n        let exceedMax;\n        let exceedMin;\n        const maxOutput = getValueAndMessage(max);\n        const minOutput = getValueAndMessage(min);\n        if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n            const valueNumber = ref.valueAsNumber ||\n                (inputValue ? +inputValue : inputValue);\n            if (!isNullOrUndefined(maxOutput.value)) {\n                exceedMax = valueNumber > maxOutput.value;\n            }\n            if (!isNullOrUndefined(minOutput.value)) {\n                exceedMin = valueNumber < minOutput.value;\n            }\n        }\n        else {\n            const valueDate = ref.valueAsDate || new Date(inputValue);\n            const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n            const isTime = ref.type == 'time';\n            const isWeek = ref.type == 'week';\n            if (isString(maxOutput.value) && inputValue) {\n                exceedMax = isTime\n                    ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n                    : isWeek\n                        ? inputValue > maxOutput.value\n                        : valueDate > new Date(maxOutput.value);\n            }\n            if (isString(minOutput.value) && inputValue) {\n                exceedMin = isTime\n                    ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n                    : isWeek\n                        ? inputValue < minOutput.value\n                        : valueDate < new Date(minOutput.value);\n            }\n        }\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if ((maxLength || minLength) &&\n        !isEmpty &&\n        (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n        const maxLengthOutput = getValueAndMessage(maxLength);\n        const minLengthOutput = getValueAndMessage(minLength);\n        const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n            inputValue.length > +maxLengthOutput.value;\n        const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n            inputValue.length < +minLengthOutput.value;\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if (pattern && !isEmpty && isString(inputValue)) {\n        const { value: patternValue, message } = getValueAndMessage(pattern);\n        if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.pattern,\n                message,\n                ref,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (validate) {\n        if (isFunction(validate)) {\n            const result = await validate(inputValue, formValues);\n            const validateError = getValidateError(result, inputRef);\n            if (validateError) {\n                error[name] = {\n                    ...validateError,\n                    ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n                };\n                if (!validateAllFieldCriteria) {\n                    setCustomValidity(validateError.message);\n                    return error;\n                }\n            }\n        }\n        else if (isObject(validate)) {\n            let validationResult = {};\n            for (const key in validate) {\n                if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n                    break;\n                }\n                const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n                if (validateError) {\n                    validationResult = {\n                        ...validateError,\n                        ...appendErrorsCurry(key, validateError.message),\n                    };\n                    setCustomValidity(validateError.message);\n                    if (validateAllFieldCriteria) {\n                        error[name] = validationResult;\n                    }\n                }\n            }\n            if (!isEmptyObject(validationResult)) {\n                error[name] = {\n                    ref: inputRef,\n                    ...validationResult,\n                };\n                if (!validateAllFieldCriteria) {\n                    return error;\n                }\n            }\n        }\n    }\n    setCustomValidity(true);\n    return error;\n};\n\nconst defaultOptions = {\n    mode: VALIDATION_MODE.onSubmit,\n    reValidateMode: VALIDATION_MODE.onChange,\n    shouldFocusError: true,\n};\nconst DEFAULT_FORM_STATE = {\n    submitCount: 0,\n    isDirty: false,\n    isReady: false,\n    isValidating: false,\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    touchedFields: {},\n    dirtyFields: {},\n    validatingFields: {},\n};\nfunction createFormControl(props = {}) {\n    let _options = {\n        ...defaultOptions,\n        ...props,\n    };\n    let _formState = {\n        ...cloneObject(DEFAULT_FORM_STATE),\n        isLoading: isFunction(_options.defaultValues),\n        errors: _options.errors || {},\n        disabled: _options.disabled || false,\n    };\n    let _fields = {};\n    let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n        ? cloneObject(_options.defaultValues || _options.values) || {}\n        : {};\n    let _formValues = _options.shouldUnregister\n        ? {}\n        : cloneObject(_defaultValues);\n    let _state = {\n        action: false,\n        mount: false,\n        watch: false,\n        keepIsValid: false,\n    };\n    let _names = {\n        mount: new Set(),\n        disabled: new Set(),\n        unMount: new Set(),\n        array: new Set(),\n        watch: new Set(),\n        registerName: new Set(),\n    };\n    let delayErrorCallback;\n    let timer = 0;\n    const defaultProxyFormState = {\n        isDirty: false,\n        dirtyFields: false,\n        validatingFields: false,\n        touchedFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    };\n    const _proxyFormState = {\n        ...defaultProxyFormState,\n    };\n    let _proxySubscribeFormState = {\n        ..._proxyFormState,\n    };\n    const _subjects = {\n        array: createSubject(),\n        state: createSubject(),\n    };\n    const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n    const debounce = (callback) => (wait) => {\n        clearTimeout(timer);\n        timer = setTimeout(callback, wait);\n    };\n    const _setValid = async (shouldUpdateValid) => {\n        if (_state.keepIsValid) {\n            return;\n        }\n        if (!_options.disabled &&\n            (_proxyFormState.isValid ||\n                _proxySubscribeFormState.isValid ||\n                shouldUpdateValid)) {\n            let isValid;\n            if (_options.resolver) {\n                isValid = isEmptyObject((await _runSchema()).errors);\n                _updateIsValidating();\n            }\n            else {\n                isValid = await executeBuiltInValidation({\n                    fields: _fields,\n                    onlyCheckValid: true,\n                    eventType: EVENTS.VALID,\n                });\n            }\n            if (isValid !== _formState.isValid) {\n                _subjects.state.next({\n                    isValid,\n                });\n            }\n        }\n    };\n    const _updateIsValidating = (names, isValidating) => {\n        if (!_options.disabled &&\n            (_proxyFormState.isValidating ||\n                _proxyFormState.validatingFields ||\n                _proxySubscribeFormState.isValidating ||\n                _proxySubscribeFormState.validatingFields)) {\n            (names || Array.from(_names.mount)).forEach((name) => {\n                if (name) {\n                    isValidating\n                        ? set(_formState.validatingFields, name, isValidating)\n                        : unset(_formState.validatingFields, name);\n                }\n            });\n            _subjects.state.next({\n                validatingFields: _formState.validatingFields,\n                isValidating: !isEmptyObject(_formState.validatingFields),\n            });\n        }\n    };\n    const _updateDirtyFields = () => {\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n    };\n    const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n        if (args && method && !_options.disabled) {\n            _state.action = true;\n            if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n                const fieldValues = method(get(_fields, name), args.argA, args.argB);\n                shouldSetValues && set(_fields, name, fieldValues);\n            }\n            if (shouldUpdateFieldsAndState &&\n                Array.isArray(get(_formState.errors, name))) {\n                const errors = method(get(_formState.errors, name), args.argA, args.argB);\n                shouldSetValues && set(_formState.errors, name, errors);\n                unsetEmptyArray(_formState.errors, name);\n            }\n            if ((_proxyFormState.touchedFields ||\n                _proxySubscribeFormState.touchedFields) &&\n                shouldUpdateFieldsAndState &&\n                Array.isArray(get(_formState.touchedFields, name))) {\n                const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n                shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n            }\n            if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n                _updateDirtyFields();\n            }\n            _subjects.state.next({\n                name,\n                isDirty: _getDirty(name, values),\n                dirtyFields: _formState.dirtyFields,\n                errors: _formState.errors,\n                isValid: _formState.isValid,\n            });\n        }\n        else {\n            set(_formValues, name, values);\n        }\n    };\n    const updateErrors = (name, error) => {\n        set(_formState.errors, name, error);\n        _subjects.state.next({\n            errors: _formState.errors,\n        });\n    };\n    const _setErrors = (errors) => {\n        _formState.errors = errors;\n        _subjects.state.next({\n            errors: _formState.errors,\n            isValid: false,\n        });\n    };\n    const hasExplicitNullIntermediate = (name) => {\n        const segments = isKey(name) ? [name] : stringToPath(name);\n        let formValues = _formValues;\n        let defaultValues = _defaultValues;\n        for (let i = 0; i < segments.length - 1; i++) {\n            const key = segments[i];\n            formValues = isNullOrUndefined(formValues) ? formValues : formValues[key];\n            defaultValues = isNullOrUndefined(defaultValues)\n                ? defaultValues\n                : defaultValues[key];\n            if (formValues === null && defaultValues !== null) {\n                return true;\n            }\n        }\n        return false;\n    };\n    const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n        const field = get(_fields, name);\n        if (field) {\n            if (hasExplicitNullIntermediate(name)) {\n                return;\n            }\n            const wasUnsetInFormValues = isUndefined(get(_formValues, name));\n            const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n            isUndefined(defaultValue) ||\n                (ref && ref.defaultChecked) ||\n                shouldSkipSetValueAs\n                ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n                : setFieldValue(name, defaultValue);\n            if (_state.mount && !_state.action) {\n                _setValid();\n                // Re-registering a field after a prior unregister puts its key back\n                // into _formValues, which can flip isDirty back to false (#13397).\n                // Only run when we are currently dirty, otherwise an initial register\n                // for a field with no defaultValue would flip isDirty to true. Reset\n                // paths repopulate _formValues before re-register, so the key is\n                // present then and this branch is skipped (preserves keepDirty).\n                if (wasUnsetInFormValues &&\n                    _formState.isDirty &&\n                    (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty)) {\n                    const isDirty = _getDirty();\n                    if (!isDirty) {\n                        _formState.isDirty = false;\n                        _subjects.state.next({ ..._formState });\n                    }\n                }\n            }\n        }\n    };\n    const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n        let shouldUpdateField = false;\n        let isPreviousDirty = false;\n        const output = {\n            name,\n        };\n        if (!_options.disabled) {\n            if (!isBlurEvent || shouldDirty) {\n                if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n                    isPreviousDirty = _formState.isDirty;\n                    _formState.isDirty = output.isDirty = _getDirty();\n                    shouldUpdateField = isPreviousDirty !== output.isDirty;\n                }\n                const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n                isPreviousDirty = !!get(_formState.dirtyFields, name);\n                if (isCurrentFieldPristine !== _formState.isDirty) {\n                    _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n                }\n                else {\n                    isCurrentFieldPristine\n                        ? unset(_formState.dirtyFields, name)\n                        : set(_formState.dirtyFields, name, true);\n                }\n                output.dirtyFields = _formState.dirtyFields;\n                shouldUpdateField =\n                    shouldUpdateField ||\n                        ((_proxyFormState.dirtyFields ||\n                            _proxySubscribeFormState.dirtyFields) &&\n                            isPreviousDirty !== !isCurrentFieldPristine);\n            }\n            if (isBlurEvent) {\n                const isPreviousFieldTouched = get(_formState.touchedFields, name);\n                if (!isPreviousFieldTouched) {\n                    set(_formState.touchedFields, name, isBlurEvent);\n                    output.touchedFields = _formState.touchedFields;\n                    shouldUpdateField =\n                        shouldUpdateField ||\n                            ((_proxyFormState.touchedFields ||\n                                _proxySubscribeFormState.touchedFields) &&\n                                isPreviousFieldTouched !== isBlurEvent);\n                }\n            }\n            shouldUpdateField && shouldRender && _subjects.state.next(output);\n        }\n        return shouldUpdateField ? output : {};\n    };\n    const shouldRenderByError = (name, isValid, error, fieldState) => {\n        const previousFieldError = get(_formState.errors, name);\n        const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n            isBoolean(isValid) &&\n            _formState.isValid !== isValid;\n        if (_options.delayError && error) {\n            delayErrorCallback = debounce(() => updateErrors(name, error));\n            delayErrorCallback(_options.delayError);\n        }\n        else {\n            clearTimeout(timer);\n            delayErrorCallback = null;\n            error\n                ? set(_formState.errors, name, error)\n                : unset(_formState.errors, name);\n        }\n        if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n            !isEmptyObject(fieldState) ||\n            shouldUpdateValid) {\n            const updatedFormState = {\n                ...fieldState,\n                ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n                errors: _formState.errors,\n                name,\n            };\n            _formState = {\n                ..._formState,\n                ...updatedFormState,\n            };\n            _subjects.state.next(updatedFormState);\n        }\n    };\n    const _runSchema = async (name) => {\n        _updateIsValidating(name, true);\n        return await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n    };\n    const executeSchemaAndUpdateState = async (names) => {\n        const { errors } = await _runSchema(names);\n        _updateIsValidating(names);\n        if (names) {\n            for (const name of names) {\n                const error = get(errors, name);\n                error\n                    ? _names.array.has(name) && isObject(error)\n                        ? updateFieldArrayRootError(_formState.errors, { [name]: error }, name)\n                        : set(_formState.errors, name, error)\n                    : unset(_formState.errors, name);\n            }\n        }\n        else {\n            _formState.errors = errors;\n        }\n        return errors;\n    };\n    const validateForm = async ({ name, eventType, }) => {\n        if (props.validate) {\n            const result = await props.validate({\n                formValues: _formValues,\n                formState: _formState,\n                name,\n                eventType,\n            });\n            if (isObject(result)) {\n                for (const key in result) {\n                    const error = result[key];\n                    if (error) {\n                        setError(`${FORM_ERROR_TYPE}.${key}`, {\n                            message: isString(error.message) ? error.message : '',\n                            type: error.type || INPUT_VALIDATION_RULES.validate,\n                        });\n                    }\n                }\n            }\n            else if (isString(result) || !result) {\n                setError(FORM_ERROR_TYPE, {\n                    message: result || '',\n                    type: INPUT_VALIDATION_RULES.validate,\n                });\n            }\n            else {\n                clearErrors(FORM_ERROR_TYPE);\n            }\n            return result;\n        }\n        return true;\n    };\n    const executeBuiltInValidation = async ({ fields, onlyCheckValid, name, eventType, context = {\n        valid: true,\n        runRootValidation: false,\n    }, }) => {\n        if (props.validate) {\n            context.runRootValidation = true;\n            const result = await validateForm({\n                name,\n                eventType,\n            });\n            if (!result) {\n                context.valid = false;\n                if (onlyCheckValid) {\n                    return context.valid;\n                }\n            }\n        }\n        for (const name in fields) {\n            const field = fields[name];\n            if (field) {\n                const { _f, ...fieldValue } = field;\n                if (_f) {\n                    const isFieldArrayRoot = _names.array.has(_f.name);\n                    const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n                    const shouldTrackIsValidatingState = _proxyFormState.validatingFields ||\n                        _proxyFormState.isValidating ||\n                        _proxySubscribeFormState.validatingFields ||\n                        _proxySubscribeFormState.isValidating;\n                    if (isPromiseFunction && shouldTrackIsValidatingState) {\n                        _updateIsValidating([_f.name], true);\n                    }\n                    const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !onlyCheckValid, isFieldArrayRoot);\n                    if (isPromiseFunction && shouldTrackIsValidatingState) {\n                        _updateIsValidating([_f.name]);\n                    }\n                    if (fieldError[_f.name]) {\n                        context.valid = false;\n                        if (onlyCheckValid) {\n                            break;\n                        }\n                    }\n                    !onlyCheckValid &&\n                        (get(fieldError, _f.name)\n                            ? isFieldArrayRoot\n                                ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n                                : set(_formState.errors, _f.name, fieldError[_f.name])\n                            : unset(_formState.errors, _f.name));\n                    if (props.shouldUseNativeValidation && fieldError[_f.name]) {\n                        break;\n                    }\n                }\n                !isEmptyObject(fieldValue) &&\n                    (await executeBuiltInValidation({\n                        context,\n                        onlyCheckValid,\n                        fields: fieldValue,\n                        name: name,\n                        eventType,\n                    }));\n            }\n        }\n        return context.valid;\n    };\n    const _removeUnmounted = () => {\n        for (const name of _names.unMount) {\n            const field = get(_fields, name);\n            field &&\n                (field._f.refs\n                    ? field._f.refs.every((ref) => !live(ref))\n                    : !live(field._f.ref)) &&\n                unregister(name);\n        }\n        _names.unMount = new Set();\n    };\n    const _getDirty = (name, data) => !_options.disabled &&\n        (name && data && set(_formValues, name, data),\n            !deepEqual(getValues(), _defaultValues));\n    const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n        ...(_state.mount\n            ? _formValues\n            : isUndefined(defaultValue)\n                ? _defaultValues\n                : isString(names)\n                    ? { [names]: defaultValue }\n                    : defaultValue),\n    }, isGlobal, defaultValue);\n    const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n    const setFieldValue = (name, value, options = {}) => {\n        const field = get(_fields, name);\n        let fieldValue = value;\n        if (field) {\n            const fieldReference = field._f;\n            if (fieldReference) {\n                !fieldReference.disabled &&\n                    set(_formValues, name, getFieldValueAs(value, fieldReference));\n                fieldValue =\n                    isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n                        ? ''\n                        : value;\n                if (isMultipleSelect(fieldReference.ref)) {\n                    [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n                }\n                else if (fieldReference.refs) {\n                    if (isCheckBoxInput(fieldReference.ref)) {\n                        fieldReference.refs.forEach((checkboxRef) => {\n                            if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n                                if (Array.isArray(fieldValue)) {\n                                    checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n                                }\n                                else {\n                                    checkboxRef.checked =\n                                        fieldValue === checkboxRef.value || !!fieldValue;\n                                }\n                            }\n                        });\n                    }\n                    else {\n                        fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n                    }\n                }\n                else if (isFileInput(fieldReference.ref)) {\n                    fieldReference.ref.value = '';\n                }\n                else {\n                    fieldReference.ref.value = fieldValue;\n                    if (!fieldReference.ref.type) {\n                        _subjects.state.next({\n                            name,\n                            values: cloneObject(_formValues),\n                        });\n                    }\n                }\n            }\n        }\n        (options.shouldDirty || options.shouldTouch) &&\n            updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n        options.shouldValidate && trigger(name);\n    };\n    const setFieldValues = (name, value, options) => {\n        for (const fieldKey in value) {\n            if (!value.hasOwnProperty(fieldKey)) {\n                return;\n            }\n            const fieldValue = value[fieldKey];\n            const fieldName = name + '.' + fieldKey;\n            const field = get(_fields, fieldName);\n            (_names.array.has(name) ||\n                isObject(fieldValue) ||\n                (field && !field._f)) &&\n                !isDateObject(fieldValue)\n                ? setFieldValues(fieldName, fieldValue, options)\n                : setFieldValue(fieldName, fieldValue, options);\n        }\n    };\n    const setValue = (name, value, options = {}) => {\n        const field = get(_fields, name);\n        const isFieldArray = _names.array.has(name);\n        const cloneValue = cloneObject(value);\n        const previousValue = get(_formValues, name);\n        const isValueUnchanged = deepEqual(previousValue, cloneValue);\n        if (!isValueUnchanged) {\n            set(_formValues, name, cloneValue);\n        }\n        if (isFieldArray) {\n            _subjects.array.next({\n                name,\n                values: cloneObject(_formValues),\n            });\n            if ((_proxyFormState.isDirty ||\n                _proxyFormState.dirtyFields ||\n                _proxySubscribeFormState.isDirty ||\n                _proxySubscribeFormState.dirtyFields) &&\n                options.shouldDirty) {\n                _updateDirtyFields();\n                _subjects.state.next({\n                    name,\n                    dirtyFields: _formState.dirtyFields,\n                    isDirty: _getDirty(name, cloneValue),\n                });\n            }\n        }\n        else {\n            const isEmpty = (Array.isArray(cloneValue) && !cloneValue.length) ||\n                isEmptyObject(cloneValue);\n            if (!field || field._f || isNullOrUndefined(cloneValue) || isEmpty) {\n                setFieldValue(name, cloneValue, options);\n            }\n            else {\n                setFieldValues(name, cloneValue, options);\n            }\n        }\n        if (!isValueUnchanged) {\n            const watched = isWatched(name, _names);\n            const values = cloneObject(_formValues);\n            if (!isFieldArray) {\n                for (const arrayName of getFieldArrayParentNames(_names.array, name)) {\n                    _subjects.array.next({ name: arrayName, values });\n                }\n            }\n            _subjects.state.next({\n                ...(watched && _formState),\n                name: _state.mount || watched ? name : undefined,\n                values,\n            });\n        }\n    };\n    const setValues = (formValues) => {\n        const updatedFormValues = isFunction(formValues)\n            ? formValues(_formValues)\n            : formValues;\n        if (!deepEqual(_formValues, updatedFormValues)) {\n            _formValues = {\n                ..._formValues,\n                ...updatedFormValues,\n            };\n            for (const fieldName of _names.mount) {\n                setValue(fieldName, get(updatedFormValues, fieldName));\n            }\n            _subjects.state.next({ ..._formState, values: _formValues });\n        }\n    };\n    const onChange = async (event) => {\n        _state.mount = true;\n        const target = event.target;\n        let name = target.name;\n        let isFieldValueUpdated = true;\n        const field = get(_fields, name);\n        const _updateIsFieldValueUpdated = (fieldValue) => {\n            isFieldValueUpdated =\n                Number.isNaN(fieldValue) ||\n                    (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n                    deepEqual(fieldValue, get(_formValues, name, fieldValue));\n        };\n        const validationModeBeforeSubmit = getValidationModes(_options.mode);\n        const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n        if (field) {\n            let error;\n            let isValid;\n            const fieldValue = target.type\n                ? getFieldValue(field._f)\n                : getEventValue(event);\n            const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n            const shouldSkipValidation = (!hasValidation(field._f) &&\n                !props.validate &&\n                !_options.resolver &&\n                !get(_formState.errors, name) &&\n                !field._f.deps) ||\n                skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n            const watched = isWatched(name, _names, isBlurEvent);\n            set(_formValues, name, fieldValue);\n            if (isBlurEvent) {\n                if (!target || !target.readOnly) {\n                    field._f.onBlur && field._f.onBlur(event);\n                    delayErrorCallback && delayErrorCallback(0);\n                }\n            }\n            else if (field._f.onChange) {\n                field._f.onChange(event);\n            }\n            const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n            const shouldRender = !isEmptyObject(fieldState) || watched;\n            !isBlurEvent &&\n                _subjects.state.next({\n                    name,\n                    type: event.type,\n                    values: cloneObject(_formValues),\n                });\n            if (shouldSkipValidation) {\n                if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n                    if (_options.mode === 'onBlur') {\n                        if (isBlurEvent) {\n                            _setValid();\n                        }\n                    }\n                    else if (!isBlurEvent) {\n                        _setValid();\n                    }\n                }\n                return (shouldRender &&\n                    _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n            }\n            if (!_options.resolver && props.validate) {\n                await validateForm({\n                    name: name,\n                    eventType: event.type,\n                });\n            }\n            !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n            if (_options.resolver) {\n                const { errors } = await _runSchema([name]);\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (isFieldValueUpdated) {\n                    const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n                    const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n                    error = errorLookupResult.error;\n                    name = errorLookupResult.name;\n                    isValid = isEmptyObject(errors);\n                }\n            }\n            else {\n                _updateIsValidating([name], true);\n                error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (isFieldValueUpdated) {\n                    if (error) {\n                        isValid = false;\n                    }\n                    else if (_proxyFormState.isValid ||\n                        _proxySubscribeFormState.isValid) {\n                        isValid = await executeBuiltInValidation({\n                            fields: _fields,\n                            onlyCheckValid: true,\n                            name: name,\n                            eventType: event.type,\n                        });\n                    }\n                }\n            }\n            if (isFieldValueUpdated) {\n                field._f.deps &&\n                    (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n                    trigger(field._f.deps);\n                shouldRenderByError(name, isValid, error, fieldState);\n            }\n        }\n    };\n    const _focusInput = (ref, key) => {\n        if (get(_formState.errors, key) && ref.focus) {\n            ref.focus();\n            return 1;\n        }\n        return;\n    };\n    const trigger = async (name, options = {}) => {\n        let isValid;\n        let validationResult;\n        const fieldNames = convertToArrayPayload(name);\n        if (_options.resolver) {\n            const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n            isValid = isEmptyObject(errors);\n            validationResult = name\n                ? !fieldNames.some((name) => get(errors, name))\n                : isValid;\n        }\n        else if (name) {\n            validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n                const field = get(_fields, fieldName);\n                return await executeBuiltInValidation({\n                    fields: field && field._f ? { [fieldName]: field } : field,\n                    eventType: EVENTS.TRIGGER,\n                });\n            }))).every(Boolean);\n            !(!validationResult && !_formState.isValid) && _setValid();\n        }\n        else {\n            validationResult = isValid = await executeBuiltInValidation({\n                fields: _fields,\n                name,\n                eventType: EVENTS.TRIGGER,\n            });\n        }\n        _subjects.state.next({\n            ...(!isString(name) ||\n                ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n                    isValid !== _formState.isValid)\n                ? {}\n                : { name }),\n            ...(_options.resolver || !name ? { isValid } : {}),\n            errors: _formState.errors,\n        });\n        options.shouldFocus &&\n            !validationResult &&\n            iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n        return validationResult;\n    };\n    const getValues = (fieldNames, config) => {\n        let values = {\n            ...(_state.mount ? _formValues : _defaultValues),\n        };\n        if (config) {\n            values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n        }\n        return isUndefined(fieldNames)\n            ? values\n            : isString(fieldNames)\n                ? get(values, fieldNames)\n                : fieldNames.map((name) => get(values, name));\n    };\n    const getFieldState = (name, formState) => ({\n        invalid: !!get((formState || _formState).errors, name),\n        isDirty: !!get((formState || _formState).dirtyFields, name),\n        error: get((formState || _formState).errors, name),\n        isValidating: !!get(_formState.validatingFields, name),\n        isTouched: !!get((formState || _formState).touchedFields, name),\n    });\n    const clearErrors = (name) => {\n        const names = name ? convertToArrayPayload(name) : undefined;\n        names === null || names === void 0 ? void 0 : names.forEach((inputName) => unset(_formState.errors, inputName));\n        if (names) {\n            // Emit for each cleared field with the field name so that\n            // shouldSubscribeByName can filter and avoid broad re-renders\n            names.forEach((inputName) => {\n                _subjects.state.next({\n                    name: inputName,\n                    errors: _formState.errors,\n                });\n            });\n        }\n        else {\n            // Clear all errors - emit without name to notify all subscribers\n            _subjects.state.next({\n                errors: {},\n            });\n        }\n    };\n    const setError = (name, error, options) => {\n        const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n        const currentError = get(_formState.errors, name) || {};\n        // Don't override existing error messages elsewhere in the object tree.\n        const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n        set(_formState.errors, name, {\n            ...restOfErrorTree,\n            ...error,\n            ref,\n        });\n        _subjects.state.next({\n            name,\n            errors: _formState.errors,\n            isValid: false,\n        });\n        options && options.shouldFocus && ref && ref.focus && ref.focus();\n    };\n    const watch = (name, defaultValue) => isFunction(name)\n        ? _subjects.state.subscribe({\n            next: (payload) => 'values' in payload &&\n                name(payload.values || _getWatch(undefined, defaultValue), payload),\n        })\n        : _getWatch(name, defaultValue, true);\n    const _subscribe = (props) => _subjects.state.subscribe({\n        next: (formState) => {\n            if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n                shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n                const snapshot = { ..._formValues };\n                props.callback({\n                    values: snapshot,\n                    ..._formState,\n                    ...formState,\n                    defaultValues: _defaultValues,\n                });\n            }\n        },\n    }).unsubscribe;\n    const subscribe = (props) => {\n        _state.mount = true;\n        _proxySubscribeFormState = {\n            ..._proxySubscribeFormState,\n            ...props.formState,\n        };\n        return _subscribe({\n            ...props,\n            formState: {\n                ...defaultProxyFormState,\n                ...props.formState,\n            },\n        });\n    };\n    const unregister = (name, options = {}) => {\n        for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n            _names.mount.delete(fieldName);\n            _names.array.delete(fieldName);\n            if (!options.keepValue) {\n                unset(_fields, fieldName);\n                unset(_formValues, fieldName);\n            }\n            !options.keepError && unset(_formState.errors, fieldName);\n            !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n            !options.keepTouched && unset(_formState.touchedFields, fieldName);\n            !options.keepIsValidating &&\n                unset(_formState.validatingFields, fieldName);\n            !_options.shouldUnregister &&\n                !options.keepDefaultValue &&\n                unset(_defaultValues, fieldName);\n        }\n        _subjects.state.next({\n            values: cloneObject(_formValues),\n        });\n        _subjects.state.next({\n            ..._formState,\n            ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n        });\n        !options.keepIsValid && _setValid();\n    };\n    const _setDisabledField = ({ disabled, name, }) => {\n        if ((isBoolean(disabled) && _state.mount) ||\n            !!disabled ||\n            _names.disabled.has(name)) {\n            const wasDisabled = _names.disabled.has(name);\n            const isDisabled = !!disabled;\n            const disabledStateChanged = wasDisabled !== isDisabled;\n            disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n            disabledStateChanged && _state.mount && !_state.action && _setValid();\n        }\n    };\n    const register = (name, options = {}) => {\n        let field = get(_fields, name);\n        const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n        const shouldRevalidateRemount = !_names.registerName.has(name) && field && field._f && !field._f.mount;\n        set(_fields, name, {\n            ...(field || {}),\n            _f: {\n                ...(field && field._f ? field._f : { ref: { name } }),\n                name,\n                mount: true,\n                ...options,\n            },\n        });\n        _names.mount.add(name);\n        if (field && !shouldRevalidateRemount) {\n            _setDisabledField({\n                disabled: isBoolean(options.disabled)\n                    ? options.disabled\n                    : _options.disabled,\n                name,\n            });\n        }\n        else {\n            updateValidAndValue(name, true, options.value);\n        }\n        return {\n            ...(disabledIsDefined\n                ? { disabled: options.disabled || _options.disabled }\n                : {}),\n            ...(_options.progressive\n                ? {\n                    required: !!options.required,\n                    min: getRuleValue(options.min),\n                    max: getRuleValue(options.max),\n                    minLength: getRuleValue(options.minLength),\n                    maxLength: getRuleValue(options.maxLength),\n                    pattern: getRuleValue(options.pattern),\n                }\n                : {}),\n            name,\n            onChange,\n            onBlur: onChange,\n            ref: (ref) => {\n                if (ref) {\n                    _names.registerName.add(name);\n                    register(name, options);\n                    _names.registerName.delete(name);\n                    field = get(_fields, name);\n                    const fieldRef = isUndefined(ref.value)\n                        ? ref.querySelectorAll\n                            ? ref.querySelectorAll('input,select,textarea')[0] || ref\n                            : ref\n                        : ref;\n                    const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n                    const refs = field._f.refs || [];\n                    if (radioOrCheckbox\n                        ? refs.find((option) => option === fieldRef)\n                        : fieldRef === field._f.ref) {\n                        return;\n                    }\n                    set(_fields, name, {\n                        _f: {\n                            ...field._f,\n                            ...(radioOrCheckbox\n                                ? {\n                                    refs: [\n                                        ...refs.filter(live),\n                                        fieldRef,\n                                        ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n                                    ],\n                                    ref: { type: fieldRef.type, name },\n                                }\n                                : { ref: fieldRef }),\n                        },\n                    });\n                    updateValidAndValue(name, false, undefined, fieldRef);\n                }\n                else {\n                    field = get(_fields, name, {});\n                    if (field._f) {\n                        field._f.mount = false;\n                    }\n                    (_options.shouldUnregister || options.shouldUnregister) &&\n                        !(getFieldArrayParentNames(_names.array, name).length &&\n                            _state.action) &&\n                        _names.unMount.add(name);\n                }\n            },\n        };\n    };\n    const _focusError = () => _options.shouldFocusError &&\n        !_options.shouldUseNativeValidation &&\n        iterateFieldsByAction(_fields, _focusInput, _names.mount);\n    const _disableForm = (disabled) => {\n        if (isBoolean(disabled)) {\n            _subjects.state.next({ disabled });\n            iterateFieldsByAction(_fields, (ref, name) => {\n                const currentField = get(_fields, name);\n                if (currentField) {\n                    ref.disabled = currentField._f.disabled || disabled;\n                    if (Array.isArray(currentField._f.refs)) {\n                        currentField._f.refs.forEach((inputRef) => {\n                            inputRef.disabled = currentField._f.disabled || disabled;\n                        });\n                    }\n                }\n            }, 0, false);\n        }\n    };\n    const handleSubmit = (onValid, onInvalid) => async (e) => {\n        let onValidError = undefined;\n        if (e) {\n            e.preventDefault && e.preventDefault();\n            e.persist &&\n                e.persist();\n        }\n        let fieldValues = cloneObject(_formValues);\n        _subjects.state.next({\n            isSubmitting: true,\n        });\n        if (_options.resolver) {\n            const { errors, values } = await _runSchema();\n            _updateIsValidating();\n            _formState.errors = errors;\n            fieldValues = cloneObject(values);\n        }\n        else {\n            await executeBuiltInValidation({\n                fields: _fields,\n                eventType: EVENTS.SUBMIT,\n            });\n        }\n        if (_names.disabled.size) {\n            for (const name of _names.disabled) {\n                unset(fieldValues, name);\n            }\n        }\n        unset(_formState.errors, ROOT_ERROR_TYPE);\n        if (isEmptyObject(_formState.errors)) {\n            _subjects.state.next({\n                errors: {},\n            });\n            try {\n                await onValid(fieldValues, e);\n            }\n            catch (error) {\n                onValidError = error;\n            }\n        }\n        else {\n            if (onInvalid) {\n                await onInvalid({ ..._formState.errors }, e);\n            }\n            _focusError();\n            setTimeout(_focusError);\n        }\n        _subjects.state.next({\n            isSubmitted: true,\n            isSubmitting: false,\n            isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n            submitCount: _formState.submitCount + 1,\n            errors: _formState.errors,\n        });\n        if (onValidError) {\n            throw onValidError;\n        }\n    };\n    const resetField = (name, options = {}) => {\n        if (get(_fields, name)) {\n            if (isUndefined(options.defaultValue)) {\n                setValue(name, cloneObject(get(_defaultValues, name)));\n            }\n            else {\n                setValue(name, options.defaultValue);\n                set(_defaultValues, name, cloneObject(options.defaultValue));\n            }\n            if (!options.keepTouched) {\n                unset(_formState.touchedFields, name);\n            }\n            if (!options.keepDirty) {\n                unset(_formState.dirtyFields, name);\n                _formState.isDirty = options.defaultValue\n                    ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n                    : _getDirty();\n            }\n            if (!options.keepError) {\n                unset(_formState.errors, name);\n                _proxyFormState.isValid && _setValid();\n            }\n            _subjects.state.next({ ..._formState });\n        }\n    };\n    const _reset = (formValues, keepStateOptions = {}) => {\n        const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n        const cloneUpdatedValues = cloneObject(updatedValues);\n        const isEmptyResetValues = isEmptyObject(formValues);\n        const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n        if (!keepStateOptions.keepDefaultValues) {\n            _defaultValues = updatedValues;\n        }\n        if (!keepStateOptions.keepValues) {\n            if (keepStateOptions.keepDirtyValues) {\n                const fieldsToCheck = new Set([\n                    ..._names.mount,\n                    ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n                ]);\n                for (const fieldName of Array.from(fieldsToCheck)) {\n                    const isDirty = get(_formState.dirtyFields, fieldName);\n                    const existingValue = get(_formValues, fieldName);\n                    const newValue = get(values, fieldName);\n                    if (isDirty && !isUndefined(existingValue)) {\n                        set(values, fieldName, existingValue);\n                    }\n                    else if (!isDirty && !isUndefined(newValue)) {\n                        setValue(fieldName, newValue);\n                    }\n                }\n            }\n            else {\n                if (isWeb && isUndefined(formValues)) {\n                    for (const name of _names.mount) {\n                        const field = get(_fields, name);\n                        if (field && field._f) {\n                            const fieldReference = Array.isArray(field._f.refs)\n                                ? field._f.refs[0]\n                                : field._f.ref;\n                            if (isHTMLElement(fieldReference)) {\n                                const form = fieldReference.closest('form');\n                                if (form) {\n                                    form.reset();\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                }\n                if (keepStateOptions.keepFieldsRef) {\n                    for (const fieldName of _names.mount) {\n                        setValue(fieldName, get(values, fieldName));\n                    }\n                }\n                else {\n                    _fields = {};\n                }\n            }\n            _formValues = _options.shouldUnregister\n                ? keepStateOptions.keepDefaultValues\n                    ? cloneObject(_defaultValues)\n                    : {}\n                : cloneObject(values);\n            _subjects.array.next({\n                values: { ...values },\n            });\n            _subjects.state.next({\n                values: { ...values },\n            });\n        }\n        _names = {\n            mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n            unMount: new Set(),\n            array: new Set(),\n            registerName: new Set(),\n            disabled: new Set(),\n            watch: new Set(),\n            watchAll: false,\n            focus: '',\n        };\n        _state.mount =\n            !_proxyFormState.isValid ||\n                !!keepStateOptions.keepIsValid ||\n                !!keepStateOptions.keepDirtyValues ||\n                (!_options.shouldUnregister && !isEmptyObject(values));\n        _state.watch = !!_options.shouldUnregister;\n        _state.keepIsValid = !!keepStateOptions.keepIsValid;\n        _state.action = false;\n        // Clear errors synchronously to prevent validation errors on subsequent submissions\n        // This fixes the issue where form.reset() causes validation errors on subsequent\n        // submissions in Next.js 16 with Server Actions\n        if (!keepStateOptions.keepErrors) {\n            _formState.errors = {};\n        }\n        _subjects.state.next({\n            submitCount: keepStateOptions.keepSubmitCount\n                ? _formState.submitCount\n                : 0,\n            isDirty: isEmptyResetValues\n                ? false\n                : keepStateOptions.keepDirty\n                    ? _formState.isDirty\n                    : !!(keepStateOptions.keepDefaultValues &&\n                        !deepEqual(formValues, _defaultValues)),\n            isSubmitted: keepStateOptions.keepIsSubmitted\n                ? _formState.isSubmitted\n                : false,\n            dirtyFields: isEmptyResetValues\n                ? {}\n                : keepStateOptions.keepDirtyValues\n                    ? keepStateOptions.keepDefaultValues && _formValues\n                        ? getDirtyFields(_defaultValues, _formValues)\n                        : _formState.dirtyFields\n                    : keepStateOptions.keepDefaultValues && formValues\n                        ? getDirtyFields(_defaultValues, formValues)\n                        : keepStateOptions.keepDirty\n                            ? _formState.dirtyFields\n                            : {},\n            touchedFields: keepStateOptions.keepTouched\n                ? _formState.touchedFields\n                : {},\n            errors: keepStateOptions.keepErrors ? _formState.errors : {},\n            isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n                ? _formState.isSubmitSuccessful\n                : false,\n            isSubmitting: false,\n            defaultValues: _defaultValues,\n        });\n    };\n    const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n        ? formValues(_formValues)\n        : formValues, { ..._options.resetOptions, ...keepStateOptions });\n    const setFocus = (name, options = {}) => {\n        const field = get(_fields, name);\n        const fieldReference = field && field._f;\n        if (fieldReference) {\n            const fieldRef = fieldReference.refs\n                ? fieldReference.refs[0]\n                : fieldReference.ref;\n            if (fieldRef.focus) {\n                // Use setTimeout to ensure focus happens after any pending state updates\n                // This fixes the issue where setFocus doesn't work immediately after setError\n                setTimeout(() => {\n                    fieldRef.focus();\n                    options.shouldSelect &&\n                        isFunction(fieldRef.select) &&\n                        fieldRef.select();\n                });\n            }\n        }\n    };\n    const _setFormState = (updatedFormState) => {\n        _formState = {\n            ..._formState,\n            ...updatedFormState,\n        };\n    };\n    const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n        _options.defaultValues().then((values) => {\n            reset(values, _options.resetOptions);\n            _subjects.state.next({\n                isLoading: false,\n            });\n        });\n    const methods = {\n        control: {\n            register,\n            unregister,\n            getFieldState,\n            handleSubmit,\n            setError,\n            _subscribe,\n            _runSchema,\n            _updateIsValidating,\n            _focusError,\n            _getWatch,\n            _getDirty,\n            _setValid,\n            _setFieldArray,\n            _setDisabledField,\n            _setErrors,\n            _getFieldArray,\n            _reset,\n            _resetDefaultValues,\n            _removeUnmounted,\n            _disableForm,\n            _subjects,\n            _proxyFormState,\n            get _fields() {\n                return _fields;\n            },\n            get _formValues() {\n                return _formValues;\n            },\n            get _state() {\n                return _state;\n            },\n            set _state(value) {\n                _state = value;\n            },\n            get _defaultValues() {\n                return _defaultValues;\n            },\n            get _names() {\n                return _names;\n            },\n            set _names(value) {\n                _names = value;\n            },\n            get _formState() {\n                return _formState;\n            },\n            get _options() {\n                return _options;\n            },\n            set _options(value) {\n                _options = {\n                    ..._options,\n                    ...value,\n                };\n            },\n        },\n        subscribe,\n        trigger,\n        register,\n        handleSubmit,\n        watch,\n        setValue,\n        setValues,\n        getValues,\n        reset,\n        resetField,\n        clearErrors,\n        unregister,\n        setError,\n        setFocus,\n        getFieldState,\n    };\n    return {\n        ...methods,\n        formControl: methods,\n    };\n}\n\nvar generateId = () => {\n    if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n        return crypto.randomUUID();\n    }\n    const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        const r = ((Math.random() * 16 + d) % 16) | 0;\n        return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n    ? options.focusName ||\n        `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n    : '';\n\nvar appendAt = (data, value) => [\n    ...data,\n    ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n    return [\n        ...data.slice(0, index),\n        ...convertToArrayPayload(value),\n        ...data.slice(index),\n    ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n    if (!Array.isArray(data)) {\n        return [];\n    }\n    if (isUndefined(data[to])) {\n        data[to] = undefined;\n    }\n    data.splice(to, 0, data.splice(from, 1)[0]);\n    return data;\n};\n\nvar prependAt = (data, value) => [\n    ...convertToArrayPayload(value),\n    ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n    let i = 0;\n    const temp = [...data];\n    for (const index of indexes) {\n        temp.splice(index - i, 1);\n        i++;\n    }\n    return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n    ? []\n    : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n    [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n    fieldValues[index] = value;\n    return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n *     defaultValues: {\n *       test: []\n *     }\n *   });\n *   const { fields, append } = useFieldArray({\n *     control,\n *     name: \"test\"\n *   });\n *\n *   return (\n *     <form onSubmit={handleSubmit(data => console.log(data))}>\n *       {fields.map((item, index) => (\n *          <input key={item.id} {...register(`test.${index}.firstName`)}  />\n *       ))}\n *       <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n *         append\n *       </button>\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, name, keyName = 'id', shouldUnregister, rules, } = props;\n    const [fields, setFields] = React.useState(control._getFieldArray(name));\n    const ids = React.useRef(control._getFieldArray(name).map(generateId));\n    const _actioned = React.useRef(false);\n    control._names.array.add(name);\n    React.useMemo(() => rules &&\n        fields.length >= 0 &&\n        control.register(name, rules), [control, name, fields.length, rules]);\n    useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n        next: ({ values, name: fieldArrayName, }) => {\n            if (fieldArrayName === name || !fieldArrayName) {\n                const fieldValues = get(values, name);\n                if (Array.isArray(fieldValues)) {\n                    setFields(fieldValues);\n                    ids.current = fieldValues.map(generateId);\n                }\n            }\n        },\n    }).unsubscribe, [control, name]);\n    const updateValues = React.useCallback((updatedFieldArrayValues) => {\n        _actioned.current = true;\n        control._setFieldArray(name, updatedFieldArrayValues);\n    }, [control, name]);\n    const append = (value, options) => {\n        const appendValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n        control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n        ids.current = appendAt(ids.current, appendValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const prepend = (value, options) => {\n        const prependValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n        control._names.focus = getFocusFieldName(name, 0, options);\n        ids.current = prependAt(ids.current, prependValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const remove = (index) => {\n        const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n        ids.current = removeArrayAt(ids.current, index);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        !Array.isArray(get(control._fields, name)) &&\n            set(control._fields, name, undefined);\n        control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n            argA: index,\n        });\n    };\n    const insert$1 = (index, value, options) => {\n        const insertValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n        control._names.focus = getFocusFieldName(name, index, options);\n        ids.current = insert(ids.current, index, insertValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, insert, {\n            argA: index,\n            argB: fillEmptyArray(value),\n        });\n    };\n    const swap = (indexA, indexB) => {\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n        swapArrayAt(ids.current, indexA, indexB);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n            argA: indexA,\n            argB: indexB,\n        }, false);\n    };\n    const move = (from, to) => {\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        moveArrayAt(updatedFieldArrayValues, from, to);\n        moveArrayAt(ids.current, from, to);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n            argA: from,\n            argB: to,\n        }, false);\n    };\n    const update = (index, value) => {\n        const updateValue = cloneObject(value);\n        const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n        ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n        updateValues(updatedFieldArrayValues);\n        setFields([...updatedFieldArrayValues]);\n        control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n            argA: index,\n            argB: updateValue,\n        }, true, false);\n    };\n    const replace = (value) => {\n        const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n        ids.current = updatedFieldArrayValues.map(generateId);\n        updateValues([...updatedFieldArrayValues]);\n        setFields([...updatedFieldArrayValues]);\n        control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n    };\n    React.useEffect(() => {\n        control._state.action = false;\n        isWatched(name, control._names) &&\n            control._subjects.state.next({\n                ...control._formState,\n            });\n        const validationModes = getValidationModes(control._options.mode);\n        if (_actioned.current &&\n            (!validationModes.isOnSubmit || control._formState.isSubmitted) &&\n            !getValidationModes(control._options.reValidateMode).isOnSubmit &&\n            !validationModes.isOnBlur) {\n            if (control._options.resolver) {\n                control._runSchema([name]).then((result) => {\n                    control._updateIsValidating([name]);\n                    const error = get(result.errors, name);\n                    const existingError = get(control._formState.errors, name);\n                    if (existingError\n                        ? (!error && existingError.type) ||\n                            (error &&\n                                (existingError.type !== error.type ||\n                                    existingError.message !== error.message))\n                        : error && error.type) {\n                        error\n                            ? set(control._formState.errors, name, error)\n                            : unset(control._formState.errors, name);\n                        control._subjects.state.next({\n                            errors: control._formState.errors,\n                        });\n                    }\n                });\n            }\n            else {\n                const field = get(control._fields, name);\n                if (field &&\n                    field._f &&\n                    !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n                        getValidationModes(control._options.mode).isOnSubmit)) {\n                    validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n                        control._subjects.state.next({\n                            errors: updateFieldArrayRootError(control._formState.errors, error, name),\n                        }));\n                }\n            }\n        }\n        control._subjects.state.next({\n            name,\n            values: cloneObject(control._formValues),\n        });\n        control._names.focus &&\n            iterateFieldsByAction(control._fields, (ref, key) => {\n                if (control._names.focus &&\n                    key.startsWith(control._names.focus) &&\n                    ref.focus) {\n                    ref.focus();\n                    return 1;\n                }\n                return;\n            });\n        control._names.focus = '';\n        control._setValid();\n        _actioned.current = false;\n    }, [fields, name, control]);\n    React.useEffect(() => {\n        !get(control._formValues, name) && control._setFieldArray(name);\n        return () => {\n            const shouldKeepFieldArrayValues = !(control._options.shouldUnregister || shouldUnregister);\n            const updateMounted = (name, value) => {\n                const field = get(control._fields, name);\n                if (field && field._f) {\n                    field._f.mount = value;\n                }\n            };\n            if (_actioned.current && shouldKeepFieldArrayValues) {\n                control._subjects.state.next({\n                    name,\n                    values: cloneObject(control._formValues),\n                });\n            }\n            shouldKeepFieldArrayValues\n                ? updateMounted(name, false)\n                : control.unregister(name);\n        };\n    }, [name, control, keyName, shouldUnregister]);\n    return {\n        swap: React.useCallback(swap, [updateValues, name, control]),\n        move: React.useCallback(move, [updateValues, name, control]),\n        prepend: React.useCallback(prepend, [updateValues, name, control]),\n        append: React.useCallback(append, [updateValues, name, control]),\n        remove: React.useCallback(remove, [updateValues, name, control]),\n        insert: React.useCallback(insert$1, [updateValues, name, control]),\n        update: React.useCallback(update, [updateValues, name, control]),\n        replace: React.useCallback(replace, [updateValues, name, control]),\n        fields: React.useMemo(() => fields.map((field, index) => ({\n            ...field,\n            [keyName]: ids.current[index] || generateId(),\n        })), [fields, keyName]),\n    };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, watch, formState: { errors } } = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   console.log(watch(\"example\"));\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input defaultValue=\"test\" {...register(\"example\")} />\n *       <input {...register(\"exampleRequired\", { required: true })} />\n *       {errors.exampleRequired && <span>This field is required</span>}\n *       <button>Submit</button>\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n    const _formControl = React.useRef(undefined);\n    const _values = React.useRef(undefined);\n    const [formState, updateFormState] = React.useState(() => ({\n        ...cloneObject(DEFAULT_FORM_STATE),\n        isLoading: isFunction(props.defaultValues),\n        errors: props.errors || {},\n        disabled: props.disabled || false,\n        defaultValues: isFunction(props.defaultValues)\n            ? undefined\n            : props.defaultValues,\n    }));\n    if (!_formControl.current) {\n        if (props.formControl) {\n            _formControl.current = {\n                ...props.formControl,\n                formState,\n            };\n            if (props.defaultValues && !isFunction(props.defaultValues)) {\n                props.formControl.reset(props.defaultValues, props.resetOptions);\n            }\n        }\n        else {\n            const { formControl, ...rest } = createFormControl(props);\n            _formControl.current = {\n                ...rest,\n                formState,\n            };\n        }\n    }\n    const control = _formControl.current.control;\n    control._options = props;\n    useIsomorphicLayoutEffect(() => {\n        const sub = control._subscribe({\n            formState: control._proxyFormState,\n            callback: () => updateFormState({\n                ...control._formState,\n                defaultValues: control._defaultValues,\n            }),\n            reRenderRoot: true,\n        });\n        updateFormState((data) => ({\n            ...data,\n            isReady: true,\n        }));\n        control._formState.isReady = true;\n        return sub;\n    }, [control]);\n    React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n    React.useEffect(() => {\n        if (props.mode) {\n            control._options.mode = props.mode;\n        }\n        if (props.reValidateMode) {\n            control._options.reValidateMode = props.reValidateMode;\n        }\n    }, [control, props.mode, props.reValidateMode]);\n    React.useEffect(() => {\n        if (props.errors) {\n            control._setErrors(props.errors);\n            control._focusError();\n        }\n    }, [control, props.errors]);\n    React.useEffect(() => {\n        props.shouldUnregister &&\n            control._subjects.state.next({\n                values: control._getWatch(),\n            });\n    }, [control, props.shouldUnregister]);\n    React.useEffect(() => {\n        if (control._proxyFormState.isDirty) {\n            const isDirty = control._getDirty();\n            if (isDirty !== formState.isDirty) {\n                control._subjects.state.next({\n                    isDirty,\n                });\n            }\n        }\n    }, [control, formState.isDirty]);\n    React.useEffect(() => {\n        var _a;\n        if (props.values && !deepEqual(props.values, _values.current)) {\n            control._reset(props.values, {\n                keepFieldsRef: true,\n                ...control._options.resetOptions,\n            });\n            if (!((_a = control._options.resetOptions) === null || _a === void 0 ? void 0 : _a.keepIsValid)) {\n                control._setValid();\n            }\n            _values.current = props.values;\n            updateFormState((state) => ({ ...state }));\n        }\n        else {\n            control._resetDefaultValues();\n        }\n    }, [control, props.values]);\n    React.useEffect(() => {\n        if (!control._state.mount) {\n            control._setValid();\n            control._state.mount = true;\n        }\n        if (control._state.watch) {\n            control._state.watch = false;\n            control._subjects.state.next({ ...control._formState });\n        }\n        control._removeUnmounted();\n    });\n    _formControl.current.formState = React.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n    return _formControl.current;\n}\n\n/**\n * Watch component that subscribes to form field changes and re-renders when watched fields update.\n *\n * @param control - The form control object from useForm\n * @param name - Can be field name, array of field names, or undefined to watch the entire form\n * @param disabled - Disable subscription\n * @param exact - Whether to watch exact field names or not\n * @param defaultValue - The default value to use if the field is not yet set\n * @param compute - Function to compute derived values from watched fields\n * @param render - The function that receives watched values and returns ReactNode\n * @returns The result of calling render function with watched values\n *\n * @example\n * The `Watch` component only re-render when the values of `foo`, `bar`, and `baz.qux` change.\n * The types of `foo`, `bar`, and `baz.qux` are precisely inferred.\n *\n * ```tsx\n * const { control } = useForm();\n *\n * <Watch\n *   control={control}\n *   names={['foo', 'bar', 'baz.qux']}\n *   render={([foo, bar, baz_qux]) => <div>{foo}{bar}{baz_qux}</div>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\nexport { Controller, Form, FormProvider, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n  Controller,\n  type ControllerProps,\n  type ControllerRenderProps,\n  type FieldPath,\n  type FieldValues,\n  type UseFormReturn,\n  FormProvider,\n  useForm,\n  useFormContext,\n} from 'react-hook-form';\n\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\n\ntype FormFieldContextValue<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n  name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n  {} as FormFieldContextValue\n);\n\ntype FormItemContextValue = {\n  id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n  {} as FormItemContextValue\n);\n\nconst useFormField = () => {\n  const fieldContext = React.useContext(FormFieldContext);\n  const itemContext = React.useContext(FormItemContext);\n  const { getFieldState, formState } = useFormContext();\n\n  if (!fieldContext) {\n    throw new Error('useFormField must be used within <FormField>');\n  }\n\n  const fieldState = getFieldState(fieldContext.name, formState);\n\n  const { id } = itemContext;\n\n  return {\n    id,\n    name: fieldContext.name,\n    formItemId: `${id}-form-item`,\n    formDescriptionId: `${id}-form-item-description`,\n    formMessageId: `${id}-form-item-message`,\n    ...fieldState,\n  };\n};\n\nconst Form = React.forwardRef<\n  HTMLFormElement,\n  React.FormHTMLAttributes<HTMLFormElement> & {\n    formMethods: UseFormReturn<any>;\n  }\n>(({ className, formMethods, children, ...props }, ref) => (\n  <form ref={ref} className={cn(className)} {...props}>\n    <FormProvider {...formMethods}>{children}</FormProvider>\n  </form>\n));\nForm.displayName = 'Form';\n\nconst FormField = <\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n  ...props\n}: ControllerProps<TFieldValues, TName>) => {\n  return (\n    <FormFieldContext.Provider value={{ name: props.name }}>\n      <Controller {...props} />\n    </FormFieldContext.Provider>\n  );\n};\n\nconst FormItem = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n  const id = React.useId();\n\n  return (\n    <FormItemContext.Provider value={{ id }}>\n      <div\n        ref={ref}\n        className={cn('flex flex-col gap-[6px]', className)}\n        {...props}\n      />\n    </FormItemContext.Provider>\n  );\n});\nFormItem.displayName = 'FormItem';\n\nconst FormLabel = React.forwardRef<\n  React.ElementRef<typeof Label>,\n  React.ComponentPropsWithoutRef<typeof Label>\n>(({ className, ...props }, ref) => {\n  const { error, formItemId } = useFormField();\n\n  return (\n    <Label\n      ref={ref}\n      className={cn(error && 'text-[#ff5631]', 'peer', className)}\n      htmlFor={formItemId}\n      {...props}\n    />\n  );\n});\nFormLabel.displayName = 'FormLabel';\n\nconst FormControl = React.forwardRef<\n  React.ElementRef<typeof Slot>,\n  React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n  const { error, formItemId, formDescriptionId, formMessageId } =\n    useFormField();\n\n  return (\n    <Slot\n      ref={ref}\n      id={formItemId}\n      aria-invalid={!!error}\n      aria-describedby={\n        !error\n          ? `${formDescriptionId}`\n          : `${formDescriptionId} ${formMessageId}`\n      }\n      {...props}\n    />\n  );\n});\nFormControl.displayName = 'FormControl';\n\nconst FormDescription = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n  const { formDescriptionId } = useFormField();\n\n  return (\n    <p\n      ref={ref}\n      id={formDescriptionId}\n      className={cn(\n        'text-[12px] text-[#999999] leading-normal dark:text-muted-foreground',\n        className\n      )}\n      {...props}\n    />\n  );\n});\nFormDescription.displayName = 'FormDescription';\n\nconst FormMessage = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n  const { error, formMessageId } = useFormField();\n  const body = error ? String(error?.message) : children;\n\n  if (!body) {\n    return null;\n  }\n\n  return (\n    <p\n      ref={ref}\n      id={formMessageId}\n      className={cn(\n        'text-[12px] text-[#ff5631] leading-normal',\n        className\n      )}\n      {...props}\n    >\n      {body}\n    </p>\n  );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n  useFormField,\n  useForm,\n  Form,\n  FormField,\n  FormItem,\n  FormLabel,\n  FormControl,\n  FormDescription,\n  FormMessage,\n  type UseFormReturn,\n  type ControllerRenderProps,\n};\n","import React, { forwardRef } from 'react';\n\nexport interface AbsFullscreenGradientBgProps {\n  children?: React.ReactNode;\n  zIndex: number;\n  padding?: number;\n  bgColor?: string;\n  disableGradient?: boolean;\n}\n\nexport const AbsFullscreenGradientBg = forwardRef<HTMLDivElement, AbsFullscreenGradientBgProps>(\n  ({ children, zIndex, padding, disableGradient, bgColor = '#fff' }, ref) => {\n    return (\n      <div\n        ref={ref}\n        style={{\n          position: 'absolute',\n          top: 0,\n          left: 0,\n          width: '100%',\n          height: '100%',\n          background: disableGradient\n            ? bgColor\n            : 'linear-gradient(180deg, #DBE9FF 0%, #E9FFFD 100%)',\n          padding: padding || 0,\n          zIndex,\n        }}\n      >\n        {children}\n      </div>\n    );\n  }\n);\n\nAbsFullscreenGradientBg.displayName = 'AbsFullscreenGradientBg';\n","import { useMemo, useState, useCallback } from 'react';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { type AgentShortSummary as AgentSelectAgent } from '@baishuyun/types';\n\nexport { type AgentSelectAgent };\n\nexport interface AgentSelectProps {\n  agents: Array<AgentSelectAgent>;\n  showSearch?: boolean;\n  activeAgent?: { id: string } | null;\n  onSelect: (agent: AgentSelectAgent) => void | Promise<void>;\n}\n\ninterface AgentGroup {\n  label: string;\n  agents: Array<AgentSelectAgent>;\n}\n\nexport const AgentSelect = ({\n  agents,\n  showSearch = false,\n  activeAgent,\n  onSelect,\n}: AgentSelectProps) => {\n  const [searchQuery, setSearchQuery] = useState('');\n\n  const groups = useMemo<AgentGroup[]>(() => {\n    const systemAgents = agents.filter((a) => a.builtIn);\n    const customAgents = agents.filter((a) => !a.builtIn);\n    return [\n      { label: '系统智能体助手', agents: systemAgents },\n      { label: '自定义智能体助手', agents: customAgents },\n    ]\n      .map((g) => ({\n        ...g,\n        agents: g.agents.filter((a) =>\n          a?.name?.toLowerCase().includes(searchQuery.toLowerCase())\n        ),\n      }))\n      .filter((g) => g.agents.length > 0);\n  }, [agents, searchQuery]);\n\n  const handleSelect = useCallback(\n    (agent: AgentSelectAgent) => {\n      onSelect(agent);\n    },\n    [onSelect]\n  );\n\n  return (\n    <div className=\"flex flex-col\">\n      {showSearch && (\n        <div className=\"px-1.5 pt-1 pb-0.5\">\n          <div className=\"flex h-7.5 items-center gap-1.5 rounded-[4px] bg-white px-2.5 py-1.25 border border-[#E0E0E0]\">\n            <svg\n              width=\"14\"\n              height=\"14\"\n              viewBox=\"0 0 14 14\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              className=\"shrink-0 text-[#999999]\"\n            >\n              <path\n                d=\"M6.41667 11.0833C8.994 11.0833 11.0833 8.994 11.0833 6.41667C11.0833 3.83934 8.994 1.75 6.41667 1.75C3.83934 1.75 1.75 3.83934 1.75 6.41667C1.75 8.994 3.83934 11.0833 6.41667 11.0833Z\"\n                stroke=\"currentColor\"\n                strokeWidth=\"1.2\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n              />\n              <path\n                d=\"M12.25 12.25L9.7125 9.7125\"\n                stroke=\"currentColor\"\n                strokeWidth=\"1.2\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n              />\n            </svg>\n            <input\n              type=\"text\"\n              placeholder=\"搜索智能体助手\"\n              value={searchQuery}\n              onChange={(e) => setSearchQuery(e.target.value)}\n              className=\"h-full flex-1 bg-transparent text-[12px] text-[#121111] placeholder:text-[#999999] outline-none\"\n            />\n          </div>\n        </div>\n      )}\n\n      <div className=\"max-h-80 overflow-y-auto scrollbar-hide\">\n        {groups.map((group, groupIndex) => (\n          <div key={group.label}>\n            <div\n              className={cn(\n                'flex h-8 items-start px-2.5 pt-2.25',\n                groupIndex > 0 && 'mt-0.5'\n              )}\n            >\n              <div className=\"flex w-full flex-col gap-1.5\">\n                <span className=\"text-[12px] font-medium text-[#666666] leading-4.25\">\n                  {group.label}\n                </span>\n                <div className=\"h-0 w-full border-b border-[#E0E0E0]\" />\n              </div>\n            </div>\n\n            <div className=\"px-1\">\n              {group.agents.map((agent) => {\n                const isActive = activeAgent?.id === agent.id;\n                return (\n                  <button\n                    key={agent.id}\n                    className={cn(\n                      'flex h-8 w-full cursor-pointer items-center gap-1.5 rounded-[4px] px-2.5 py-1.5 text-left',\n                      transCls,\n                      isActive\n                        ? 'bg-[#F0F6FF] text-[#0265FF]'\n                        : 'text-[#121111] hover:bg-[#EFF0F6]'\n                    )}\n                    onClick={() => handleSelect(agent)}\n                  >\n                    <img\n                      src={agent.icon}\n                      alt={agent.name}\n                      className=\"h-4 w-4 rounded-[4px] object-cover shrink-0\"\n                    />\n                    <span className=\"truncate text-[14px] leading-5\">\n                      {agent.name}\n                    </span>\n                  </button>\n                );\n              })}\n            </div>\n          </div>\n        ))}\n\n        {groups.length === 0 && (\n          <div className=\"flex h-15 items-center justify-center text-[12px] text-[#999999]\">\n            未找到相关智能体助手\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import { useCallback, useState, useRef, useEffect } from 'react';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { IconBtn } from './icon-btn';\nimport { LeftArrowIcon, MenuLinesIcon } from './bs-icons';\nimport { AgentSelect } from './agent-select';\nimport type { AgentSelectAgent } from './agent-select';\nimport { Popover, PopoverTrigger, PopoverContent } from './ui/popover';\n\nexport interface AgentScrollSelectorProps {\n  agents: Array<AgentSelectAgent>;\n  activeAgent?: { id: string } | null;\n  onSelect: (agent: AgentSelectAgent) => void | Promise<void>;\n  showSlider?: boolean;\n  className?: string;\n}\n\nexport const AgentScrollSelector = ({\n  agents,\n  activeAgent,\n  onSelect,\n  className,\n  showSlider,\n}: AgentScrollSelectorProps) => {\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const [canScrollLeft, setCanScrollLeft] = useState(false);\n  const [canScrollRight, setCanScrollRight] = useState(false);\n  const [popoverOpen, setPopoverOpen] = useState(false);\n\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n// 用 callback ref，在 DOM attach/detach 时触发\nconst setTriggerRef = useCallback((node: HTMLButtonElement | null) => {\n  if (!node) {\n    setPortalContainer(null);\n    return;\n  }\n\n  const rootNode = node.getRootNode();\n  if (rootNode instanceof ShadowRoot) {\n    const existing = rootNode.querySelector<HTMLElement>('[data-bs-popover-portal]');\n    if (existing) {\n      setPortalContainer(existing);\n      return;\n    }\n    const container = document.createElement('div');\n    container.setAttribute('data-bs-popover-portal', 'true');\n    rootNode.appendChild(container);\n    setPortalContainer(container);\n  } else {\n    setPortalContainer(null);\n  }\n}, []);\n\n  const checkScroll = useCallback(() => {\n    const el = scrollRef.current;\n    if (!el) return;\n    setCanScrollLeft(el.scrollLeft > 0);\n    setCanScrollRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);\n  }, []);\n\n  useEffect(() => {\n    checkScroll();\n    const el = scrollRef.current;\n    if (!el) return;\n\n    const observer = new ResizeObserver(checkScroll);\n    observer.observe(el);\n    el.addEventListener('scroll', checkScroll, { passive: true });\n    return () => {\n      observer.disconnect();\n      el.removeEventListener('scroll', checkScroll);\n    };\n  }, [agents, checkScroll]);\n\n  const scroll = useCallback((direction: 'left' | 'right') => {\n    const el = scrollRef.current;\n    if (!el) return;\n    el.scrollBy({\n      left: direction === 'left' ? -150 : 150,\n      behavior: 'smooth',\n    });\n  }, []);\n\n  const handleSelect = useCallback(\n    (agent: AgentSelectAgent) => {\n      onSelect(agent);\n      setPopoverOpen(false);\n    },\n    [onSelect]\n  );\n\n  const slider = (\n    <>\n      <IconBtn\n        rounded\n        disabled={!canScrollLeft}\n        icon={<LeftArrowIcon />}\n        onClick={() => scroll('left')}\n      />\n\n      <div\n        ref={scrollRef}\n        className=\"flex-1 overflow-x-auto scrollbar-hide flex gap-[6px] min-w-0\"\n      >\n        {agents.map((agent) => {\n          const isActive = activeAgent?.id === agent.id;\n          return (\n            <button\n              key={agent.id}\n              type=\"button\"\n              onClick={() => onSelect(agent)}\n              className={cn(\n                'flex items-center gap-[6px] shrink-0 max-w-[240px]',\n                'px-[10px] py-[7px] rounded-[100px]',\n                transCls,\n                isActive\n                  ? 'border border-[#f0f6ff] bg-[#F0F6FF] text-[#0265FF]'\n                  : 'border border-[#E0E0E0] text-[#121111] hover:bg-[#F0F6FF] hover:text-[#0265FF]'\n              )}\n            >\n              <img\n                src={agent.icon}\n                alt={agent.name}\n                className=\"h-4 w-4 rounded-[4px] object-cover shrink-0\"\n              />\n              <span className=\"text-[14px] leading-[normal] truncate\">\n                {agent.name}\n              </span>\n            </button>\n          );\n        })}\n      </div>\n\n      <IconBtn\n        rounded\n        disabled={!canScrollRight}\n        icon={\n          <span className=\"rotate-180 inline-flex\">\n            <LeftArrowIcon />\n          </span>\n        }\n        onClick={() => scroll('right')}\n      />\n    </>\n  );\n\n  return (\n    <div className={cn('flex items-center gap-2.5 w-fit max-w-full min-w-0', className)}>\n      {showSlider ? slider : null}\n      {agents.length > 0 && (\n        <Popover open={popoverOpen} onOpenChange={setPopoverOpen}>\n          <PopoverTrigger asChild>\n            <button\n              ref={setTriggerRef}\n              type=\"button\"\n              className={cn(\n                'flex items-center gap-[6px] shrink-0 h-[34px]',\n                'px-[10px] py-[5px] rounded-[4px]',\n                'text-[14px] text-[#121111] leading-[normal]',\n                'hover:bg-[#EFF0F6]',\n                {\n                  'bg-[#eff0f6]': popoverOpen,\n                },\n                transCls\n              )}\n            >\n              <MenuLinesIcon />\n              <span>技能</span>\n            </button>\n          </PopoverTrigger>\n          <PopoverContent\n            align=\"start\"\n            sideOffset={4}\n            portalContainer={portalContainer}\n          >\n            <AgentSelect\n              agents={agents}\n              showSearch\n              activeAgent={activeAgent}\n              onSelect={handleSelect}\n            />\n          </PopoverContent>\n        </Popover>\n      )}\n    </div>\n  );\n};\n","import { cn } from '../lib/utils';\n\nexport interface ImgMsgPartProps {\n  url: string;\n  alt?: string;\n  className?: string;\n  /** Size in pixels (width & height), defaults to 102 */\n  size?: number;\n  onClick?: () => void;\n}\n\nexport const ImgMsgPart = ({ url, alt = '', className, size = 102, onClick }: ImgMsgPartProps) => {\n  return (\n    <div\n      className={cn('relative overflow-hidden rounded-[10px] border border-[#e0e0e0] hover:border-[#0265FF]/20 hover:cursor-pointer', onClick && 'cursor-pointer', className)}\n      style={{ width: size, height: size }}\n      onClick={onClick}\n    >\n      <img\n        src={url}\n        alt={alt}\n        className=\"block w-full h-full object-cover rounded-[10px]\"\n        loading=\"lazy\"\n      />\n    </div>\n  );\n};\n","import { ComponentType } from 'react';\nimport { cn } from '../lib/utils';\nimport { ImgMsgPart } from './img-part';\nimport { XlsxIcon, CsvFileIcon, TxtFileIcon, UnknownFileIcon } from './bs-icons';\n\n/** File part from AI message */\nexport interface FilePart {\n  type: 'file';\n  url: string;\n  name?: string;\n  mediaType?: string;\n}\n\nexport interface AttachmentPartProps {\n  part: FilePart;\n  className?: string;\n  /** Size in pixels (width & height), defaults to 102 */\n  size?: number;\n  /** Show only the icon without file name */\n  iconOnly?: boolean;\n  /** Click handler for the attachment */\n  onClick?: (part: FilePart) => void;\n}\n\ntype FileIconComponent = ComponentType;\n\ninterface FileTypeConfig {\n  icon: FileIconComponent;\n  /** Icon original size for scaling */\n  iconSize: number;\n}\n\n/** Map media types to icon configurations */\nconst FILE_TYPE_MAP: Record<string, FileTypeConfig> = {\n  // Excel files\n  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': {\n    icon: XlsxIcon,\n    iconSize: 52,\n  },\n  'application/vnd.ms-excel': { icon: XlsxIcon, iconSize: 52 },\n\n  // CSV files\n  'text/csv': { icon: CsvFileIcon, iconSize: 16 },\n\n  // Text files\n  'text/plain': { icon: TxtFileIcon, iconSize: 16 },\n  'application/octet-stream': { icon: TxtFileIcon, iconSize: 16 }, // treat as text for ts/js files\n};\n\nconst DEFAULT_FILE_CONFIG: FileTypeConfig = {\n  icon: UnknownFileIcon,\n  iconSize: 16,\n};\n\n/** Check if media type is an image */\nconst isImageType = (mediaType?: string): boolean => {\n  return Boolean(mediaType?.startsWith('image/'));\n};\n\n/** Get file config based on media type and file extension */\nconst getFileConfig = (mediaType?: string, fileName?: string): FileTypeConfig => {\n  // Check media type first\n  if (mediaType && FILE_TYPE_MAP[mediaType]) {\n    return FILE_TYPE_MAP[mediaType];\n  }\n\n  // Fallback to file extension\n  if (fileName) {\n    const ext = fileName.split('.').pop()?.toLowerCase();\n    switch (ext) {\n      case 'xlsx':\n      case 'xls':\n        return FILE_TYPE_MAP['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];\n      case 'csv':\n        return FILE_TYPE_MAP['text/csv'];\n      case 'txt':\n      case 'ts':\n      case 'tsx':\n      case 'js':\n      case 'jsx':\n      case 'json':\n      case 'md':\n        return FILE_TYPE_MAP['text/plain'];\n    }\n  }\n\n  return DEFAULT_FILE_CONFIG;\n};\n\n/** Extract display file name from full path */\nconst getDisplayFileName = (name?: string): string | undefined => {\n  if (!name) return undefined;\n  // Get last segment of path\n  const segments = name.split('/');\n  return segments[segments.length - 1];\n};\n\n/** Generic file message part component */\nconst FileMsgPart = ({\n  fileName,\n  icon: Icon,\n  iconSize,\n  className,\n  size = 102,\n}: {\n  fileName?: string;\n  icon: FileIconComponent;\n  iconSize: number;\n  className?: string;\n  size?: number;\n}) => {\n  const scale = size / 102;\n  const scaledIconSize = (52 / 102) * size; // Target icon takes ~51% of container\n  const iconScale = scaledIconSize / iconSize;\n  const hasFileName = Boolean(fileName);\n\n  return (\n    <div\n      className={cn(\n        'relative flex flex-col items-center justify-center rounded-[10px] bg-[#EFF0F6] px-[10px]',\n        hasFileName && 'gap-[6px]',\n        className\n      )}\n      style={{ width: size, height: size }}\n    >\n      <div\n        className=\"shrink-0 flex items-center justify-center\"\n        style={{\n          width: scaledIconSize,\n          height: scaledIconSize,\n        }}\n      >\n        <div\n          style={{\n            transform: iconScale !== 1 ? `scale(${iconScale})` : undefined,\n            transformOrigin: 'center',\n          }}\n        >\n          <Icon />\n        </div>\n      </div>\n      {hasFileName && (\n        <p\n          className=\"block max-w-full shrink-0 truncate text-center text-[14px] leading-normal text-[#030303]\"\n          style={{ fontSize: 14 * scale, maxWidth: '100%', display: 'block' }}\n          title={fileName}\n        >\n          {fileName}\n        </p>\n      )}\n    </div>\n  );\n};\n\nexport const AttachmentPart = ({ part, className, size = 102, iconOnly, onClick }: AttachmentPartProps) => {\n  const { url, name, mediaType } = part;\n  const handleClick = onClick ? () => onClick(part) : undefined;\n\n  // Render image for image types\n  if (isImageType(mediaType)) {\n    return <ImgMsgPart url={url} alt={name} className={className} size={size} onClick={handleClick} />;\n  }\n\n  // Render file icon for other types\n  const { icon, iconSize } = getFileConfig(mediaType, name);\n  const displayName = iconOnly ? undefined : getDisplayFileName(name);\n\n  return (\n    <div onClick={handleClick} className={onClick ? 'cursor-pointer' : undefined}>\n      <FileMsgPart\n        fileName={displayName}\n        icon={icon}\n        iconSize={iconSize}\n        className={className}\n        size={size}\n      />\n    </div>\n  );\n};\n","import { cn } from '../lib/utils';\nimport { AttachmentPart, FilePart } from './attachment-part';\nimport { FileUIPart } from 'ai';\n\nexport interface AttachmentPartGroupProps {\n  parts: FileUIPart[];\n  className?: string;\n  /** Size in pixels for each item, defaults to 102 */\n  size?: number;\n  /** Gap between items in pixels, defaults to 10 */\n  gap?: number;\n  /** Show only icons without file names */\n  iconOnly?: boolean;\n  /** Click handler for individual parts */\n  onPartClick?: (part: FilePart) => void;\n}\n\nexport const AttachmentPartGroup = ({\n  parts,\n  className,\n  size = 100,\n  gap = 10,\n  iconOnly,\n  onPartClick,\n}: AttachmentPartGroupProps) => {\n  if (!parts.length) return null;\n\n  return (\n    <div className={cn('flex flex-wrap content-center items-center', className)} style={{ gap }}>\n      {parts.map((part, index) => (\n        <AttachmentPart key={part.url || index} part={part} size={size} iconOnly={iconOnly} onClick={onPartClick} />\n      ))}\n    </div>\n  );\n};\n","export const BotIcon = () => {\n  return (\n    <svg\n      height=\"16\"\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M8.75 2.79933C9.19835 2.53997 9.5 2.05521 9.5 1.5C9.5 0.671573 8.82843 0 8 0C7.17157 0 6.5 0.671573 6.5 1.5C6.5 2.05521 6.80165 2.53997 7.25 2.79933V5H7C4.027 5 1.55904 7.16229 1.08296 10H0V13H1V14.5V16H2.5H13.5H15V14.5V13H16V10H14.917C14.441 7.16229 11.973 5 9 5H8.75V2.79933ZM7 6.5C4.51472 6.5 2.5 8.51472 2.5 11V14.5H13.5V11C13.5 8.51472 11.4853 6.5 9 6.5H7ZM7.25 11.25C7.25 12.2165 6.4665 13 5.5 13C4.5335 13 3.75 12.2165 3.75 11.25C3.75 10.2835 4.5335 9.5 5.5 9.5C6.4665 9.5 7.25 10.2835 7.25 11.25ZM10.5 13C11.4665 13 12.25 12.2165 12.25 11.25C12.25 10.2835 11.4665 9.5 10.5 9.5C9.5335 9.5 8.75 10.2835 8.75 11.25C8.75 12.2165 9.5335 13 10.5 13Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\n// export const PaperclipIcon = () => {\n//   return (\n//     <svg\n//       data-testid=\"geist-icon\"\n//       height=\"16\"\n//       stroke-linejoin=\"round\"\n//       viewBox=\"0 0 16 16\"\n//       width=\"16\"\n//     >\n//       <path\n//         fill-rule=\"evenodd\"\n//         clip-rule=\"evenodd\"\n//         d=\"M10.8591 1.70735C10.3257 1.70735 9.81417 1.91925 9.437 2.29643L3.19455 8.53886C2.56246 9.17095 2.20735 10.0282 2.20735 10.9222C2.20735 11.8161 2.56246 12.6734 3.19455 13.3055C3.82665 13.9376 4.68395 14.2927 5.57786 14.2927C6.47178 14.2927 7.32908 13.9376 7.96117 13.3055L14.2036 7.06304L14.7038 6.56287L15.7041 7.56321L15.204 8.06337L8.96151 14.3058C8.06411 15.2032 6.84698 15.7074 5.57786 15.7074C4.30875 15.7074 3.09162 15.2032 2.19422 14.3058C1.29682 13.4084 0.792664 12.1913 0.792664 10.9222C0.792664 9.65305 1.29682 8.43592 2.19422 7.53852L8.43666 1.29609C9.07914 0.653606 9.95054 0.292664 10.8591 0.292664C11.7678 0.292664 12.6392 0.653606 13.2816 1.29609C13.9241 1.93857 14.2851 2.80997 14.2851 3.71857C14.2851 4.62718 13.9241 5.49858 13.2816 6.14106L13.2814 6.14133L7.0324 12.3835C7.03231 12.3836 7.03222 12.3837 7.03213 12.3838C6.64459 12.7712 6.11905 12.9888 5.57107 12.9888C5.02297 12.9888 4.49731 12.7711 4.10974 12.3835C3.72217 11.9959 3.50444 11.4703 3.50444 10.9222C3.50444 10.3741 3.72217 9.8484 4.10974 9.46084L4.11004 9.46054L9.877 3.70039L10.3775 3.20051L11.3772 4.20144L10.8767 4.70131L5.11008 10.4612C5.11005 10.4612 5.11003 10.4612 5.11 10.4613C4.98779 10.5835 4.91913 10.7493 4.91913 10.9222C4.91913 11.0951 4.98782 11.2609 5.11008 11.3832C5.23234 11.5054 5.39817 11.5741 5.57107 11.5741C5.74398 11.5741 5.9098 11.5054 6.03206 11.3832L6.03233 11.3829L12.2813 5.14072C12.2814 5.14063 12.2815 5.14054 12.2816 5.14045C12.6586 4.7633 12.8704 4.25185 12.8704 3.71857C12.8704 3.18516 12.6585 2.6736 12.2813 2.29643C11.9041 1.91925 11.3926 1.70735 10.8591 1.70735Z\"\n//         fill=\"currentColor\"\n//       ></path>\n//     </svg>\n//   );\n// };\n\nexport const BotAvatarIcon = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      aria-hidden=\"true\"\n      role=\"img\"\n      data-testid=\"geist-icon\"\n      height=\"16\"\n      stroke-linejoin=\"round\"\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n    >\n      <path\n        fill-rule=\"evenodd\"\n        clip-rule=\"evenodd\"\n        d=\"M8.75 2.79933C9.19835 2.53997 9.5 2.05521 9.5 1.5C9.5 0.671573 8.82843 0 8 0C7.17157 0 6.5 0.671573 6.5 1.5C6.5 2.05521 6.80165 2.53997 7.25 2.79933V5H7C4.027 5 1.55904 7.16229 1.08296 10H0V13H1V14.5V16H2.5H13.5H15V14.5V13H16V10H14.917C14.441 7.16229 11.973 5 9 5H8.75V2.79933ZM7 6.5C4.51472 6.5 2.5 8.51472 2.5 11V14.5H13.5V11C13.5 8.51472 11.4853 6.5 9 6.5H7ZM7.25 11.25C7.25 12.2165 6.4665 13 5.5 13C4.5335 13 3.75 12.2165 3.75 11.25C3.75 10.2835 4.5335 9.5 5.5 9.5C6.4665 9.5 7.25 10.2835 7.25 11.25ZM10.5 13C11.4665 13 12.25 12.2165 12.25 11.25C12.25 10.2835 11.4665 9.5 10.5 9.5C9.5335 9.5 8.75 10.2835 8.75 11.25C8.75 12.2165 9.5335 13 10.5 13Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n};\n\nexport const UserIcon = () => {\n  return (\n    <svg\n      data-testid=\"geist-icon\"\n      height=\"16\"\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const AttachmentIcon = () => {\n  return (\n    <svg\n      height=\"16\"\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M14.5 6.5V13.5C14.5 14.8807 13.3807 16 12 16H4C2.61929 16 1.5 14.8807 1.5 13.5V1.5V0H3H8H9.08579C9.351 0 9.60536 0.105357 9.79289 0.292893L14.2071 4.70711C14.3946 4.89464 14.5 5.149 14.5 5.41421V6.5ZM13 6.5V13.5C13 14.0523 12.5523 14.5 12 14.5H4C3.44772 14.5 3 14.0523 3 13.5V1.5H8V5V6.5H9.5H13ZM9.5 2.12132V5H12.3787L9.5 2.12132Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const VercelIcon = ({ size = 17 }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path clipRule=\"evenodd\" d=\"M8 1L16 15H0L8 1Z\" fill=\"currentColor\" fillRule=\"evenodd\" />\n    </svg>\n  );\n};\n\nexport const GitIcon = () => {\n  return (\n    <svg\n      height=\"16\"\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n    >\n      <g clipPath=\"url(#clip0_872_3147)\">\n        <path\n          clipRule=\"evenodd\"\n          d=\"M8 0C3.58 0 0 3.57879 0 7.99729C0 11.5361 2.29 14.5251 5.47 15.5847C5.87 15.6547 6.02 15.4148 6.02 15.2049C6.02 15.0149 6.01 14.3851 6.01 13.7154C4 14.0852 3.48 13.2255 3.32 12.7757C3.23 12.5458 2.84 11.836 2.5 11.6461C2.22 11.4961 1.82 11.1262 2.49 11.1162C3.12 11.1062 3.57 11.696 3.72 11.936C4.44 13.1455 5.59 12.8057 6.05 12.5957C6.12 12.0759 6.33 11.726 6.56 11.5261C4.78 11.3262 2.92 10.6364 2.92 7.57743C2.92 6.70773 3.23 5.98797 3.74 5.42816C3.66 5.22823 3.38 4.40851 3.82 3.30888C3.82 3.30888 4.49 3.09895 6.02 4.1286C6.66 3.94866 7.34 3.85869 8.02 3.85869C8.7 3.85869 9.38 3.94866 10.02 4.1286C11.55 3.08895 12.22 3.30888 12.22 3.30888C12.66 4.40851 12.38 5.22823 12.3 5.42816C12.81 5.98797 13.12 6.69773 13.12 7.57743C13.12 10.6464 11.25 11.3262 9.47 11.5261C9.76 11.776 10.01 12.2558 10.01 13.0056C10.01 14.0752 10 14.9349 10 15.2049C10 15.4148 10.15 15.6647 10.55 15.5847C12.1381 15.0488 13.5182 14.0284 14.4958 12.6673C15.4735 11.3062 15.9996 9.67293 16 7.99729C16 3.57879 12.42 0 8 0Z\"\n          fill=\"currentColor\"\n          fillRule=\"evenodd\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_872_3147\">\n          <rect fill=\"white\" height=\"16\" width=\"16\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const BoxIcon = ({ size = 16 }: { size: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M8 0.154663L8.34601 0.334591L14.596 3.58459L15 3.79466V4.25V11.75V12.2053L14.596 12.4154L8.34601 15.6654L8 15.8453L7.65399 15.6654L1.40399 12.4154L1 12.2053V11.75V4.25V3.79466L1.40399 3.58459L7.65399 0.334591L8 0.154663ZM2.5 11.2947V5.44058L7.25 7.81559V13.7647L2.5 11.2947ZM8.75 13.7647L13.5 11.2947V5.44056L8.75 7.81556V13.7647ZM8 1.84534L12.5766 4.22519L7.99998 6.51352L3.42335 4.2252L8 1.84534Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const HomeIcon = ({ size = 16 }: { size: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M12.5 6.56062L8.00001 2.06062L3.50001 6.56062V13.5L6.00001 13.5V11C6.00001 9.89539 6.89544 8.99996 8.00001 8.99996C9.10458 8.99996 10 9.89539 10 11V13.5L12.5 13.5V6.56062ZM13.78 5.71933L8.70711 0.646409C8.31659 0.255886 7.68342 0.255883 7.2929 0.646409L2.21987 5.71944C2.21974 5.71957 2.21961 5.7197 2.21949 5.71982L0.469676 7.46963L-0.0606537 7.99996L1.00001 9.06062L1.53034 8.53029L2.00001 8.06062V14.25V15H2.75001L6.00001 15H7.50001H8.50001H10L13.25 15H14V14.25V8.06062L14.4697 8.53029L15 9.06062L16.0607 7.99996L15.5303 7.46963L13.7806 5.71993C13.7804 5.71973 13.7802 5.71953 13.78 5.71933ZM8.50001 11V13.5H7.50001V11C7.50001 10.7238 7.72386 10.5 8.00001 10.5C8.27615 10.5 8.50001 10.7238 8.50001 11Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const GPSIcon = ({ size = 16 }: { size: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        d=\"M1 6L15 1L10 15L7.65955 8.91482C7.55797 8.65073 7.34927 8.44203 7.08518 8.34045L1 6Z\"\n        fill=\"transparent\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"bevel\"\n        strokeWidth=\"1.5\"\n      />\n    </svg>\n  );\n};\n\nexport const InvoiceIcon = ({ size = 16 }: { size: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M13 15.1L12 14.5L10.1524 15.8857C10.0621 15.9534 9.93791 15.9534 9.8476 15.8857L8 14.5L6.14377 15.8922C6.05761 15.9568 5.94008 15.9601 5.85047 15.9003L3.75 14.5L3 15L2.83257 15.1116L1.83633 15.7758L1.68656 15.8756C1.60682 15.9288 1.5 15.8716 1.5 15.7758V15.5958V14.3985V14.1972V1.5V0H3H8H9.08579C9.351 0 9.60536 0.105357 9.79289 0.292893L14.2071 4.70711C14.3946 4.89464 14.5 5.149 14.5 5.41421V6.5V14.2507V14.411V15.5881V15.7881C14.5 15.8813 14.3982 15.9389 14.3183 15.891L14.1468 15.7881L13.1375 15.1825L13 15.1ZM12.3787 5L9.5 2.12132V5H12.3787ZM8 1.5V5V6.5H9.5H13V13.3507L12.7717 13.2138L11.9069 12.6948L11.1 13.3L10 14.125L8.9 13.3L8 12.625L7.1 13.3L5.94902 14.1632L4.58205 13.2519L3.75 12.6972L3 13.1972V1.5H8Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const LogoOpenAI = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        d=\"M14.9449 6.54871C15.3128 5.45919 15.1861 4.26567 14.5978 3.27464C13.7131 1.75461 11.9345 0.972595 10.1974 1.3406C9.42464 0.481584 8.3144 -0.00692594 7.15045 7.42132e-05C5.37487 -0.00392587 3.79946 1.1241 3.2532 2.79113C2.11256 3.02164 1.12799 3.72615 0.551837 4.72468C-0.339497 6.24071 -0.1363 8.15175 1.05451 9.45178C0.686626 10.5413 0.813308 11.7348 1.40162 12.7258C2.28637 14.2459 4.06498 15.0279 5.80204 14.6599C6.5743 15.5189 7.68504 16.0074 8.849 15.9999C10.6256 16.0044 12.2015 14.8754 12.7478 13.2069C13.8884 12.9764 14.873 12.2718 15.4491 11.2733C16.3394 9.75728 16.1357 7.84774 14.9454 6.54771L14.9449 6.54871ZM8.85001 14.9544C8.13907 14.9554 7.45043 14.7099 6.90468 14.2604C6.92951 14.2474 6.97259 14.2239 7.00046 14.2069L10.2293 12.3668C10.3945 12.2743 10.4959 12.1008 10.4949 11.9133V7.42173L11.8595 8.19925C11.8742 8.20625 11.8838 8.22025 11.8858 8.23625V11.9558C11.8838 13.6099 10.5263 14.9509 8.85001 14.9544ZM2.32133 12.2028C1.9651 11.5958 1.8369 10.8843 1.95902 10.1938C1.98284 10.2078 2.02489 10.2333 2.05479 10.2503L5.28366 12.0903C5.44733 12.1848 5.65003 12.1848 5.81421 12.0903L9.75604 9.84429V11.3993C9.75705 11.4153 9.74945 11.4308 9.73678 11.4408L6.47295 13.3004C5.01915 14.1264 3.1625 13.6354 2.32184 12.2028H2.32133ZM1.47155 5.24819C1.82626 4.64017 2.38619 4.17516 3.05305 3.93366C3.05305 3.96116 3.05152 4.00966 3.05152 4.04366V7.72424C3.05051 7.91124 3.15186 8.08475 3.31654 8.17725L7.25838 10.4228L5.89376 11.2003C5.88008 11.2093 5.86285 11.2108 5.84765 11.2043L2.58331 9.34327C1.13255 8.51426 0.63494 6.68272 1.47104 5.24869L1.47155 5.24819ZM12.6834 7.82274L8.74157 5.57669L10.1062 4.79968C10.1199 4.79068 10.1371 4.78918 10.1523 4.79568L13.4166 6.65522C14.8699 7.48373 15.3681 9.31827 14.5284 10.7523C14.1732 11.3593 13.6138 11.8243 12.9474 12.0663V8.27575C12.9489 8.08875 12.8481 7.91574 12.6839 7.82274H12.6834ZM14.0414 5.8057C14.0176 5.7912 13.9756 5.7662 13.9457 5.7492L10.7168 3.90916C10.5531 3.81466 10.3504 3.81466 10.1863 3.90916L6.24442 6.15521V4.60017C6.2434 4.58417 6.251 4.56867 6.26367 4.55867L9.52751 2.70063C10.9813 1.87311 12.84 2.36563 13.6781 3.80066C14.0323 4.40667 14.1605 5.11618 14.0404 5.8057H14.0414ZM5.50257 8.57726L4.13744 7.79974C4.12275 7.79274 4.11312 7.77874 4.11109 7.76274V4.04316C4.11211 2.38713 5.47368 1.0451 7.15197 1.0461C7.86189 1.0461 8.54902 1.2921 9.09476 1.74011C9.06993 1.75311 9.02737 1.77661 8.99899 1.79361L5.77012 3.63365C5.60493 3.72615 5.50358 3.89916 5.50459 4.08666L5.50257 8.57626V8.57726ZM6.24391 7.00022L7.99972 5.9997L9.75553 6.99972V9.00027L7.99972 10.0003L6.24391 9.00027V7.00022Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n};\n\nexport const LogoGoogle = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      data-testid=\"geist-icon\"\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        d=\"M8.15991 6.54543V9.64362H12.4654C12.2763 10.64 11.709 11.4837 10.8581 12.0509L13.4544 14.0655C14.9671 12.6692 15.8399 10.6182 15.8399 8.18188C15.8399 7.61461 15.789 7.06911 15.6944 6.54552L8.15991 6.54543Z\"\n        fill=\"#4285F4\"\n      />\n      <path\n        d=\"M3.6764 9.52268L3.09083 9.97093L1.01807 11.5855C2.33443 14.1963 5.03241 16 8.15966 16C10.3196 16 12.1305 15.2873 13.4542 14.0655L10.8578 12.0509C10.1451 12.5309 9.23598 12.8219 8.15966 12.8219C6.07967 12.8219 4.31245 11.4182 3.67967 9.5273L3.6764 9.52268Z\"\n        fill=\"#34A853\"\n      />\n      <path\n        d=\"M1.01803 4.41455C0.472607 5.49087 0.159912 6.70543 0.159912 7.99995C0.159912 9.29447 0.472607 10.509 1.01803 11.5854C1.01803 11.5926 3.6799 9.51991 3.6799 9.51991C3.5199 9.03991 3.42532 8.53085 3.42532 7.99987C3.42532 7.46889 3.5199 6.95983 3.6799 6.47983L1.01803 4.41455Z\"\n        fill=\"#FBBC05\"\n      />\n      <path\n        d=\"M8.15982 3.18545C9.33802 3.18545 10.3853 3.59271 11.2216 4.37818L13.5125 2.0873C12.1234 0.792777 10.3199 0 8.15982 0C5.03257 0 2.33443 1.79636 1.01807 4.41455L3.67985 6.48001C4.31254 4.58908 6.07983 3.18545 8.15982 3.18545Z\"\n        fill=\"#EA4335\"\n      />\n    </svg>\n  );\n};\n\nexport const LogoAnthropic = () => {\n  return (\n    <svg\n      height=\"18px\"\n      style={{ color: 'currentcolor', fill: 'currentcolor' }}\n      viewBox=\"0 0 92.2 65\"\n      width=\"18px\"\n      x=\"0px\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      y=\"0px\"\n    >\n      <path\n        d=\"M66.5,0H52.4l25.7,65h14.1L66.5,0z M25.7,0L0,65h14.4l5.3-13.6h26.9L51.8,65h14.4L40.5,0C40.5,0,25.7,0,25.7,0z\n\t\tM24.3,39.3l8.8-22.8l8.8,22.8H24.3z\"\n      />\n    </svg>\n  );\n};\n\nexport const RouteIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M7.53033 0.719661L7 0.189331L5.93934 1.24999L6.46967 1.78032L6.68934 1.99999H3.375C1.51104 1.99999 0 3.51103 0 5.37499C0 7.23895 1.51104 8.74999 3.375 8.74999H12.625C13.6605 8.74999 14.5 9.58946 14.5 10.625C14.5 11.6605 13.6605 12.5 12.625 12.5H4.88555C4.56698 11.4857 3.61941 10.75 2.5 10.75C1.11929 10.75 0 11.8693 0 13.25C0 14.6307 1.11929 15.75 2.5 15.75C3.61941 15.75 4.56698 15.0143 4.88555 14H12.625C14.489 14 16 12.489 16 10.625C16 8.76103 14.489 7.24999 12.625 7.24999H3.375C2.33947 7.24999 1.5 6.41052 1.5 5.37499C1.5 4.33946 2.33947 3.49999 3.375 3.49999H6.68934L6.46967 3.71966L5.93934 4.24999L7 5.31065L7.53033 4.78032L8.85355 3.4571C9.24408 3.06657 9.24408 2.43341 8.85355 2.04288L7.53033 0.719661ZM2.5 14.25C3.05228 14.25 3.5 13.8023 3.5 13.25C3.5 12.6977 3.05228 12.25 2.5 12.25C1.94772 12.25 1.5 12.6977 1.5 13.25C1.5 13.8023 1.94772 14.25 2.5 14.25ZM14.5 2.74999C14.5 3.30228 14.0523 3.74999 13.5 3.74999C12.9477 3.74999 12.5 3.30228 12.5 2.74999C12.5 2.19771 12.9477 1.74999 13.5 1.74999C14.0523 1.74999 14.5 2.19771 14.5 2.74999ZM16 2.74999C16 4.1307 14.8807 5.24999 13.5 5.24999C12.1193 5.24999 11 4.1307 11 2.74999C11 1.36928 12.1193 0.249991 13.5 0.249991C14.8807 0.249991 16 1.36928 16 2.74999Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const FileIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M14.5 13.5V6.5V5.41421C14.5 5.149 14.3946 4.89464 14.2071 4.70711L9.79289 0.292893C9.60536 0.105357 9.351 0 9.08579 0H8H3H1.5V1.5V13.5C1.5 14.8807 2.61929 16 4 16H12C13.3807 16 14.5 14.8807 14.5 13.5ZM13 13.5V6.5H9.5H8V5V1.5H3V13.5C3 14.0523 3.44772 14.5 4 14.5H12C12.5523 14.5 13 14.0523 13 13.5ZM9.5 5V2.12132L12.3787 5H9.5ZM5.13 5.00062H4.505V6.25062H5.13H6H6.625V5.00062H6H5.13ZM4.505 8H5.13H11H11.625V9.25H11H5.13H4.505V8ZM5.13 11H4.505V12.25H5.13H11H11.625V11H11H5.13Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const LoaderIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <g clipPath=\"url(#clip0_2393_1490)\">\n        <path d=\"M8 0V4\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n        <path d=\"M8 16V12\" opacity=\"0.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n        <path\n          d=\"M3.29773 1.52783L5.64887 4.7639\"\n          opacity=\"0.9\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M12.7023 1.52783L10.3511 4.7639\"\n          opacity=\"0.1\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M12.7023 14.472L10.3511 11.236\"\n          opacity=\"0.4\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M3.29773 14.472L5.64887 11.236\"\n          opacity=\"0.6\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M15.6085 5.52783L11.8043 6.7639\"\n          opacity=\"0.2\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M0.391602 10.472L4.19583 9.23598\"\n          opacity=\"0.7\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M15.6085 10.4722L11.8043 9.2361\"\n          opacity=\"0.3\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n        <path\n          d=\"M0.391602 5.52783L4.19583 6.7639\"\n          opacity=\"0.8\"\n          stroke=\"currentColor\"\n          strokeWidth=\"1.5\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_2393_1490\">\n          <rect fill=\"white\" height=\"16\" width=\"16\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const UploadIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      data-testid=\"geist-icon\"\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M1.5 4.875C1.5 3.01104 3.01104 1.5 4.875 1.5C6.20018 1.5 7.34838 2.26364 7.901 3.37829C8.1902 3.96162 8.79547 4.5 9.60112 4.5H12.25C13.4926 4.5 14.5 5.50736 14.5 6.75C14.5 7.42688 14.202 8.03329 13.7276 8.44689L13.1622 8.93972L14.1479 10.0704L14.7133 9.57758C15.5006 8.89123 16 7.8785 16 6.75C16 4.67893 14.3211 3 12.25 3H9.60112C9.51183 3 9.35322 2.93049 9.2449 2.71201C8.44888 1.1064 6.79184 0 4.875 0C2.18261 0 0 2.18261 0 4.875V6.40385C0 7.69502 0.598275 8.84699 1.52982 9.59656L2.11415 10.0667L3.0545 8.89808L2.47018 8.42791C1.87727 7.95083 1.5 7.22166 1.5 6.40385V4.875ZM7.29289 7.39645C7.68342 7.00592 8.31658 7.00592 8.70711 7.39645L11.7803 10.4697L12.3107 11L11.25 12.0607L10.7197 11.5303L8.75 9.56066V15.25V16H7.25V15.25V9.56066L5.28033 11.5303L4.75 12.0607L3.68934 11L4.21967 10.4697L7.29289 7.39645Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const MenuIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M1 2H1.75H14.25H15V3.5H14.25H1.75H1V2ZM1 12.5H1.75H14.25H15V14H14.25H1.75H1V12.5ZM1.75 7.25H1V8.75H1.75H14.25H15V7.25H14.25H1.75Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const PencilEditIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M11.75 0.189331L12.2803 0.719661L15.2803 3.71966L15.8107 4.24999L15.2803 4.78032L5.15901 14.9016C4.45575 15.6049 3.50192 16 2.50736 16H0.75H0V15.25V13.4926C0 12.4981 0.395088 11.5442 1.09835 10.841L11.2197 0.719661L11.75 0.189331ZM11.75 2.31065L9.81066 4.24999L11.75 6.18933L13.6893 4.24999L11.75 2.31065ZM2.15901 11.9016L8.75 5.31065L10.6893 7.24999L4.09835 13.841C3.67639 14.2629 3.1041 14.5 2.50736 14.5H1.5V13.4926C1.5 12.8959 1.73705 12.3236 2.15901 11.9016ZM9 16H16V14.5H9V16Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const CheckedSquare = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M15 16H1C0.447715 16 0 15.5523 0 15V1C0 0.447715 0.447716 0 1 0L15 8.17435e-06C15.5523 8.47532e-06 16 0.447724 16 1.00001V15C16 15.5523 15.5523 16 15 16ZM11.7803 6.28033L12.3107 5.75L11.25 4.68934L10.7197 5.21967L6.5 9.43935L5.28033 8.21967L4.75001 7.68934L3.68934 8.74999L4.21967 9.28033L5.96967 11.0303C6.11032 11.171 6.30109 11.25 6.5 11.25C6.69891 11.25 6.88968 11.171 7.03033 11.0303L11.7803 6.28033Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const UncheckedSquare = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <rect\n        fill=\"none\"\n        height=\"14\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.5\"\n        width=\"14\"\n        x=\"1\"\n        y=\"1\"\n      />\n    </svg>\n  );\n};\n\nexport const MoreIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M8 4C7.17157 4 6.5 3.32843 6.5 2.5C6.5 1.67157 7.17157 1 8 1C8.82843 1 9.5 1.67157 9.5 2.5C9.5 3.32843 8.82843 4 8 4ZM8 9.5C7.17157 9.5 6.5 8.82843 6.5 8C6.5 7.17157 7.17157 6.5 8 6.5C8.82843 6.5 9.5 7.17157 9.5 8C9.5 8.82843 8.82843 9.5 8 9.5ZM6.5 13.5C6.5 14.3284 7.17157 15 8 15C8.82843 15 9.5 14.3284 9.5 13.5C9.5 12.6716 8.82843 12 8 12C7.17157 12 6.5 12.6716 6.5 13.5Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const TrashIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M6.75 2.75C6.75 2.05964 7.30964 1.5 8 1.5C8.69036 1.5 9.25 2.05964 9.25 2.75V3H6.75V2.75ZM5.25 3V2.75C5.25 1.23122 6.48122 0 8 0C9.51878 0 10.75 1.23122 10.75 2.75V3H12.9201H14.25H15V4.5H14.25H13.8846L13.1776 13.6917C13.0774 14.9942 11.9913 16 10.6849 16H5.31508C4.00874 16 2.92263 14.9942 2.82244 13.6917L2.11538 4.5H1.75H1V3H1.75H3.07988H5.25ZM4.31802 13.5767L3.61982 4.5H12.3802L11.682 13.5767C11.6419 14.0977 11.2075 14.5 10.6849 14.5H5.31508C4.79254 14.5 4.3581 14.0977 4.31802 13.5767Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const InfoIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM6.25002 7H7.00002H7.75C8.30229 7 8.75 7.44772 8.75 8V11.5V12.25H7.25V11.5V8.5H7.00002H6.25002V7ZM8 6C8.55229 6 9 5.55228 9 5C9 4.44772 8.55229 4 8 4C7.44772 4 7 4.44772 7 5C7 5.55228 7.44772 6 8 6Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const ArrowUpIcon = ({\n  size = 16,\n  ...props\n}: { size?: number } & React.SVGProps<SVGSVGElement>) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor', ...props.style }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n      {...props}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M8.70711 1.39644C8.31659 1.00592 7.68342 1.00592 7.2929 1.39644L2.21968 6.46966L1.68935 6.99999L2.75001 8.06065L3.28034 7.53032L7.25001 3.56065V14.25V15H8.75001V14.25V3.56065L12.7197 7.53032L13.25 8.06065L14.3107 6.99999L13.7803 6.46966L8.70711 1.39644Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const StopIcon = ({\n  size = 16,\n  ...props\n}: { size?: number } & React.SVGProps<SVGSVGElement>) => {\n  return (\n    <svg\n      height={size}\n      style={{ color: 'currentcolor', ...props.style }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n      {...props}\n    >\n      <path clipRule=\"evenodd\" d=\"M3 3H13V13H3V3Z\" fill=\"currentColor\" fillRule=\"evenodd\" />\n    </svg>\n  );\n};\n\nexport const PaperclipIcon = ({\n  size = 16,\n  ...props\n}: { size?: number } & React.SVGProps<SVGSVGElement>) => {\n  return (\n    <svg\n      className=\"-rotate-45\"\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor', ...props.style }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n      {...props}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M10.8591 1.70735C10.3257 1.70735 9.81417 1.91925 9.437 2.29643L3.19455 8.53886C2.56246 9.17095 2.20735 10.0282 2.20735 10.9222C2.20735 11.8161 2.56246 12.6734 3.19455 13.3055C3.82665 13.9376 4.68395 14.2927 5.57786 14.2927C6.47178 14.2927 7.32908 13.9376 7.96117 13.3055L14.2036 7.06304L14.7038 6.56287L15.7041 7.56321L15.204 8.06337L8.96151 14.3058C8.06411 15.2032 6.84698 15.7074 5.57786 15.7074C4.30875 15.7074 3.09162 15.2032 2.19422 14.3058C1.29682 13.4084 0.792664 12.1913 0.792664 10.9222C0.792664 9.65305 1.29682 8.43592 2.19422 7.53852L8.43666 1.29609C9.07914 0.653606 9.95054 0.292664 10.8591 0.292664C11.7678 0.292664 12.6392 0.653606 13.2816 1.29609C13.9241 1.93857 14.2851 2.80997 14.2851 3.71857C14.2851 4.62718 13.9241 5.49858 13.2816 6.14106L13.2814 6.14133L7.0324 12.3835C7.03231 12.3836 7.03222 12.3837 7.03213 12.3838C6.64459 12.7712 6.11905 12.9888 5.57107 12.9888C5.02297 12.9888 4.49731 12.7711 4.10974 12.3835C3.72217 11.9959 3.50444 11.4703 3.50444 10.9222C3.50444 10.3741 3.72217 9.8484 4.10974 9.46084L4.11004 9.46054L9.877 3.70039L10.3775 3.20051L11.3772 4.20144L10.8767 4.70131L5.11008 10.4612C5.11005 10.4612 5.11003 10.4612 5.11 10.4613C4.98779 10.5835 4.91913 10.7493 4.91913 10.9222C4.91913 11.0951 4.98782 11.2609 5.11008 11.3832C5.23234 11.5054 5.39817 11.5741 5.57107 11.5741C5.74398 11.5741 5.9098 11.5054 6.03206 11.3832L6.03233 11.3829L12.2813 5.14072C12.2814 5.14063 12.2815 5.14054 12.2816 5.14045C12.6586 4.7633 12.8704 4.25185 12.8704 3.71857C12.8704 3.18516 12.6585 2.6736 12.2813 2.29643C11.9041 1.91925 11.3926 1.70735 10.8591 1.70735Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const MoreHorizontalIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M4 8C4 8.82843 3.32843 9.5 2.5 9.5C1.67157 9.5 1 8.82843 1 8C1 7.17157 1.67157 6.5 2.5 6.5C3.32843 6.5 4 7.17157 4 8ZM9.5 8C9.5 8.82843 8.82843 9.5 8 9.5C7.17157 9.5 6.5 8.82843 6.5 8C6.5 7.17157 7.17157 6.5 8 6.5C8.82843 6.5 9.5 7.17157 9.5 8ZM13.5 9.5C14.3284 9.5 15 8.82843 15 8C15 7.17157 14.3284 6.5 13.5 6.5C12.6716 6.5 12 7.17157 12 8C12 8.82843 12.6716 9.5 13.5 9.5Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const MessageIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M2.8914 10.4028L2.98327 10.6318C3.22909 11.2445 3.5 12.1045 3.5 13C3.5 13.3588 3.4564 13.7131 3.38773 14.0495C3.69637 13.9446 4.01409 13.8159 4.32918 13.6584C4.87888 13.3835 5.33961 13.0611 5.70994 12.7521L6.22471 12.3226L6.88809 12.4196C7.24851 12.4724 7.61994 12.5 8 12.5C11.7843 12.5 14.5 9.85569 14.5 7C14.5 4.14431 11.7843 1.5 8 1.5C4.21574 1.5 1.5 4.14431 1.5 7C1.5 8.18175 1.94229 9.29322 2.73103 10.2153L2.8914 10.4028ZM2.8135 15.7653C1.76096 16 1 16 1 16C1 16 1.43322 15.3097 1.72937 14.4367C1.88317 13.9834 2 13.4808 2 13C2 12.3826 1.80733 11.7292 1.59114 11.1903C0.591845 10.0221 0 8.57152 0 7C0 3.13401 3.58172 0 8 0C12.4183 0 16 3.13401 16 7C16 10.866 12.4183 14 8 14C7.54721 14 7.10321 13.9671 6.67094 13.9038C6.22579 14.2753 5.66881 14.6656 5 15C4.23366 15.3832 3.46733 15.6195 2.8135 15.7653Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const CrossIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const CrossSmallIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M9.96966 11.0303L10.5 11.5607L11.5607 10.5L11.0303 9.96966L9.06065 7.99999L11.0303 6.03032L11.5607 5.49999L10.5 4.43933L9.96966 4.96966L7.99999 6.93933L6.03032 4.96966L5.49999 4.43933L4.43933 5.49999L4.96966 6.03032L6.93933 7.99999L4.96966 9.96966L4.43933 10.5L5.49999 11.5607L6.03032 11.0303L7.99999 9.06065L9.96966 11.0303Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const UndoIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M13.5 8C13.5 4.96643 11.0257 2.5 7.96452 2.5C5.42843 2.5 3.29365 4.19393 2.63724 6.5H5.25H6V8H5.25H0.75C0.335787 8 0 7.66421 0 7.25V2.75V2H1.5V2.75V5.23347C2.57851 2.74164 5.06835 1 7.96452 1C11.8461 1 15 4.13001 15 8C15 11.87 11.8461 15 7.96452 15C5.62368 15 3.54872 13.8617 2.27046 12.1122L1.828 11.5066L3.03915 10.6217L3.48161 11.2273C4.48831 12.6051 6.12055 13.5 7.96452 13.5C11.0257 13.5 13.5 11.0336 13.5 8Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const RedoIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M2.5 8C2.5 4.96643 4.97431 2.5 8.03548 2.5C10.5716 2.5 12.7064 4.19393 13.3628 6.5H10.75H10V8H10.75H15.25C15.6642 8 16 7.66421 16 7.25V2.75V2H14.5V2.75V5.23347C13.4215 2.74164 10.9316 1 8.03548 1C4.1539 1 1 4.13001 1 8C1 11.87 4.1539 15 8.03548 15C10.3763 15 12.4513 13.8617 13.7295 12.1122L14.172 11.5066L12.9609 10.6217L12.5184 11.2273C11.5117 12.6051 9.87945 13.5 8.03548 13.5C4.97431 13.5 2.5 11.0336 2.5 8Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const DeltaIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M2.67705 15H1L1.75 13.5L6.16147 4.67705L6.15836 4.67082L6.16667 4.66667L7.16147 2.67705L8 1L8.83853 2.67705L14.25 13.5L15 15H13.3229H2.67705ZM7 6.3541L10.5729 13.5H3.42705L7 6.3541Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const CpuIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    fill=\"none\"\n    height={size}\n    stroke=\"currentColor\"\n    strokeWidth=\"2\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 24 24\"\n    width={size}\n  >\n    <path\n      d=\"M4 12C4 8.22876 4 6.34315 5.17157 5.17157C6.34315 4 8.22876 4 12 4C15.7712 4 17.6569 4 18.8284 5.17157C20 6.34315 20 8.22876 20 12C20 15.7712 20 17.6569 18.8284 18.8284C17.6569 20 15.7712 20 12 20C8.22876 20 6.34315 20 5.17157 18.8284C4 17.6569 4 15.7712 4 12Z\"\n      strokeLinejoin=\"round\"\n    />\n    <path d=\"M9.5 2V4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M14.5 2V4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M9.5 20V22\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M14.5 20V22\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M13 9L9 13\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M15 13L13 15\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M22 14.5L20 14.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M4 9.5L2 9.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M4 14.5L2 14.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M22 9.5L20 9.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\nexport const PenIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M8.75 0.189331L9.28033 0.719661L15.2803 6.71966L15.8107 7.24999L15.2803 7.78032L13.7374 9.32322C13.1911 9.8696 12.3733 9.97916 11.718 9.65188L9.54863 13.5568C8.71088 15.0648 7.12143 16 5.39639 16H0.75H0V15.25V10.6036C0 8.87856 0.935237 7.28911 2.4432 6.45136L6.34811 4.28196C6.02084 3.62674 6.13039 2.80894 6.67678 2.26255L8.21967 0.719661L8.75 0.189331ZM7.3697 5.43035L10.5696 8.63029L8.2374 12.8283C7.6642 13.8601 6.57668 14.5 5.39639 14.5H2.56066L5.53033 11.5303L4.46967 10.4697L1.5 13.4393V10.6036C1.5 9.42331 2.1399 8.33579 3.17166 7.76259L7.3697 5.43035ZM12.6768 8.26256C12.5791 8.36019 12.4209 8.36019 12.3232 8.26255L12.0303 7.96966L8.03033 3.96966L7.73744 3.67677C7.63981 3.57914 7.63981 3.42085 7.73744 3.32321L8.75 2.31065L13.6893 7.24999L12.6768 8.26256Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const SummarizeIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M1.75 12H1V10.5H1.75H5.25H6V12H5.25H1.75ZM1.75 7.75H1V6.25H1.75H4.25H5V7.75H4.25H1.75ZM1.75 3.5H1V2H1.75H7.25H8V3.5H7.25H1.75ZM12.5303 14.7803C12.2374 15.0732 11.7626 15.0732 11.4697 14.7803L9.21967 12.5303L8.68934 12L9.75 10.9393L10.2803 11.4697L11.25 12.4393V2.75V2H12.75V2.75V12.4393L13.7197 11.4697L14.25 10.9393L15.3107 12L14.7803 12.5303L12.5303 14.7803Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const SidebarLeftIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M6.245 2.5H14.5V12.5C14.5 13.0523 14.0523 13.5 13.5 13.5H6.245V2.5ZM4.995 2.5H1.5V12.5C1.5 13.0523 1.94772 13.5 2.5 13.5H4.995V2.5ZM0 1H1.5H14.5H16V2.5V12.5C16 13.8807 14.8807 15 13.5 15H2.5C1.11929 15 0 13.8807 0 12.5V2.5V1Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const PlusIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M 8.75,1 H7.25 V7.25 H1.5 V8.75 H7.25 V15 H8.75 V8.75 H14.5 V7.25 H8.75 V1.75 Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const CopyIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const ThumbUpIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M6.89531 2.23972C6.72984 2.12153 6.5 2.23981 6.5 2.44315V5.25001C6.5 6.21651 5.7165 7.00001 4.75 7.00001H2.5V13.5H12.1884C12.762 13.5 13.262 13.1096 13.4011 12.5532L14.4011 8.55318C14.5984 7.76425 14.0017 7.00001 13.1884 7.00001H9.25H8.5V6.25001V3.51458C8.5 3.43384 8.46101 3.35807 8.39531 3.31114L6.89531 2.23972ZM5 2.44315C5 1.01975 6.6089 0.191779 7.76717 1.01912L9.26717 2.09054C9.72706 2.41904 10 2.94941 10 3.51458V5.50001H13.1884C14.9775 5.50001 16.2903 7.18133 15.8563 8.91698L14.8563 12.917C14.5503 14.1412 13.4503 15 12.1884 15H1.75H1V14.25V6.25001V5.50001H1.75H4.75C4.88807 5.50001 5 5.38808 5 5.25001V2.44315Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const ThumbDownIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M6.89531 13.7603C6.72984 13.8785 6.5 13.7602 6.5 13.5569V10.75C6.5 9.7835 5.7165 9 4.75 9H2.5V2.5H12.1884C12.762 2.5 13.262 2.89037 13.4011 3.44683L14.4011 7.44683C14.5984 8.23576 14.0017 9 13.1884 9H9.25H8.5V9.75V12.4854C8.5 12.5662 8.46101 12.6419 8.39531 12.6889L6.89531 13.7603ZM5 13.5569C5 14.9803 6.6089 15.8082 7.76717 14.9809L9.26717 13.9095C9.72706 13.581 10 13.0506 10 12.4854V10.5H13.1884C14.9775 10.5 16.2903 8.81868 15.8563 7.08303L14.8563 3.08303C14.5503 1.85882 13.4503 1 12.1884 1H1.75H1V1.75V9.75V10.5H1.75H4.75C4.88807 10.5 5 10.6119 5 10.75V13.5569Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const ChevronDownIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M12.0607 6.74999L11.5303 7.28032L8.7071 10.1035C8.31657 10.4941 7.68341 10.4941 7.29288 10.1035L4.46966 7.28032L3.93933 6.74999L4.99999 5.68933L5.53032 6.21966L7.99999 8.68933L10.4697 6.21966L11 5.68933L12.0607 6.74999Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const ChevronRightIcon = ({ size = 16 }: { size?: number }) => (\n  <svg data-testid=\"geist-icon\" height={size} stroke-linejoin=\"round\" viewBox=\"0 0 16 16\" width={size}>\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M6.74999 3.93933L7.28032 4.46966L10.1035 7.29288C10.4941 7.68341 10.4941 8.31657 10.1035 8.7071L7.28032 11.5303L6.74999 12.0607L5.68933 11L6.21966 10.4697L8.68933 7.99999L6.21966 5.53032L5.68933 4.99999L6.74999 3.93933Z\"\n      fill=\"currentColor\"\n    ></path>\n  </svg>\n);\n\nexport const SparklesIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      d=\"M2.5 0.5V0H3.5V0.5C3.5 1.60457 4.39543 2.5 5.5 2.5H6V3V3.5H5.5C4.39543 3.5 3.5 4.39543 3.5 5.5V6H3H2.5V5.5C2.5 4.39543 1.60457 3.5 0.5 3.5H0V3V2.5H0.5C1.60457 2.5 2.5 1.60457 2.5 0.5Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M14.5 4.5V5H13.5V4.5C13.5 3.94772 13.0523 3.5 12.5 3.5H12V3V2.5H12.5C13.0523 2.5 13.5 2.05228 13.5 1.5V1H14H14.5V1.5C14.5 2.05228 14.9477 2.5 15.5 2.5H16V3V3.5H15.5C14.9477 3.5 14.5 3.94772 14.5 4.5Z\"\n      fill=\"currentColor\"\n    />\n    <path\n      d=\"M8.40706 4.92939L8.5 4H9.5L9.59294 4.92939C9.82973 7.29734 11.7027 9.17027 14.0706 9.40706L15 9.5V10.5L14.0706 10.5929C11.7027 10.8297 9.82973 12.7027 9.59294 15.0706L9.5 16H8.5L8.40706 15.0706C8.17027 12.7027 6.29734 10.8297 3.92939 10.5929L3 10.5V9.5L3.92939 9.40706C6.29734 9.17027 8.17027 7.29734 8.40706 4.92939Z\"\n      fill=\"currentColor\"\n    />\n  </svg>\n);\n\nexport const CheckCircleFillIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM11.5303 6.53033L12.0607 6L11 4.93934L10.4697 5.46967L6.5 9.43934L5.53033 8.46967L5 7.93934L3.93934 9L4.46967 9.53033L5.96967 11.0303C6.26256 11.3232 6.73744 11.3232 7.03033 11.0303L11.5303 6.53033Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const GlobeIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M10.268 14.0934C11.9051 13.4838 13.2303 12.2333 13.9384 10.6469C13.1192 10.7941 12.2138 10.9111 11.2469 10.9925C11.0336 12.2005 10.695 13.2621 10.268 14.0934ZM8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16ZM8.48347 14.4823C8.32384 14.494 8.16262 14.5 8 14.5C7.83738 14.5 7.67616 14.494 7.51654 14.4823C7.5132 14.4791 7.50984 14.4759 7.50647 14.4726C7.2415 14.2165 6.94578 13.7854 6.67032 13.1558C6.41594 12.5744 6.19979 11.8714 6.04101 11.0778C6.67605 11.1088 7.33104 11.125 8 11.125C8.66896 11.125 9.32395 11.1088 9.95899 11.0778C9.80021 11.8714 9.58406 12.5744 9.32968 13.1558C9.05422 13.7854 8.7585 14.2165 8.49353 14.4726C8.49016 14.4759 8.4868 14.4791 8.48347 14.4823ZM11.4187 9.72246C12.5137 9.62096 13.5116 9.47245 14.3724 9.28806C14.4561 8.87172 14.5 8.44099 14.5 8C14.5 7.55901 14.4561 7.12828 14.3724 6.71194C13.5116 6.52755 12.5137 6.37904 11.4187 6.27753C11.4719 6.83232 11.5 7.40867 11.5 8C11.5 8.59133 11.4719 9.16768 11.4187 9.72246ZM10.1525 6.18401C10.2157 6.75982 10.25 7.36805 10.25 8C10.25 8.63195 10.2157 9.24018 10.1525 9.81598C9.46123 9.85455 8.7409 9.875 8 9.875C7.25909 9.875 6.53877 9.85455 5.84749 9.81598C5.7843 9.24018 5.75 8.63195 5.75 8C5.75 7.36805 5.7843 6.75982 5.84749 6.18401C6.53877 6.14545 7.25909 6.125 8 6.125C8.74091 6.125 9.46123 6.14545 10.1525 6.18401ZM11.2469 5.00748C12.2138 5.08891 13.1191 5.20593 13.9384 5.35306C13.2303 3.7667 11.9051 2.51622 10.268 1.90662C10.695 2.73788 11.0336 3.79953 11.2469 5.00748ZM8.48347 1.51771C8.4868 1.52089 8.49016 1.52411 8.49353 1.52737C8.7585 1.78353 9.05422 2.21456 9.32968 2.84417C9.58406 3.42562 9.80021 4.12856 9.95899 4.92219C9.32395 4.89118 8.66896 4.875 8 4.875C7.33104 4.875 6.67605 4.89118 6.04101 4.92219C6.19978 4.12856 6.41594 3.42562 6.67032 2.84417C6.94578 2.21456 7.2415 1.78353 7.50647 1.52737C7.50984 1.52411 7.51319 1.52089 7.51653 1.51771C7.67615 1.50597 7.83738 1.5 8 1.5C8.16262 1.5 8.32384 1.50597 8.48347 1.51771ZM5.73202 1.90663C4.0949 2.51622 2.76975 3.7667 2.06159 5.35306C2.88085 5.20593 3.78617 5.08891 4.75309 5.00748C4.96639 3.79953 5.30497 2.73788 5.73202 1.90663ZM4.58133 6.27753C3.48633 6.37904 2.48837 6.52755 1.62761 6.71194C1.54392 7.12828 1.5 7.55901 1.5 8C1.5 8.44099 1.54392 8.87172 1.62761 9.28806C2.48837 9.47245 3.48633 9.62096 4.58133 9.72246C4.52807 9.16768 4.5 8.59133 4.5 8C4.5 7.40867 4.52807 6.83232 4.58133 6.27753ZM4.75309 10.9925C3.78617 10.9111 2.88085 10.7941 2.06159 10.6469C2.76975 12.2333 4.0949 13.4838 5.73202 14.0934C5.30497 13.2621 4.96639 12.2005 4.75309 10.9925Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const LockIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M10 4.5V6H6V4.5C6 3.39543 6.89543 2.5 8 2.5C9.10457 2.5 10 3.39543 10 4.5ZM4.5 6V4.5C4.5 2.567 6.067 1 8 1C9.933 1 11.5 2.567 11.5 4.5V6H12.5H14V7.5V12.5C14 13.8807 12.8807 15 11.5 15H4.5C3.11929 15 2 13.8807 2 12.5V7.5V6H3.5H4.5ZM11.5 7.5H10H6H4.5H3.5V12.5C3.5 13.0523 3.94772 13.5 4.5 13.5H11.5C12.0523 13.5 12.5 13.0523 12.5 12.5V7.5H11.5Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const EyeIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M4.02168 4.76932C6.11619 2.33698 9.88374 2.33698 11.9783 4.76932L14.7602 7.99999L11.9783 11.2307C9.88374 13.663 6.1162 13.663 4.02168 11.2307L1.23971 7.99999L4.02168 4.76932ZM13.1149 3.79054C10.422 0.663244 5.57797 0.663247 2.88503 3.79054L-0.318359 7.5106V8.48938L2.88503 12.2094C5.57797 15.3367 10.422 15.3367 13.1149 12.2094L16.3183 8.48938V7.5106L13.1149 3.79054ZM6.49997 7.99999C6.49997 7.17157 7.17154 6.49999 7.99997 6.49999C8.82839 6.49999 9.49997 7.17157 9.49997 7.99999C9.49997 8.82842 8.82839 9.49999 7.99997 9.49999C7.17154 9.49999 6.49997 8.82842 6.49997 7.99999ZM7.99997 4.99999C6.34311 4.99999 4.99997 6.34314 4.99997 7.99999C4.99997 9.65685 6.34311 11 7.99997 11C9.65682 11 11 9.65685 11 7.99999C11 6.34314 9.65682 4.99999 7.99997 4.99999Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const ShareIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M15 11.25V10.5H13.5V11.25V12.75C13.5 13.1642 13.1642 13.5 12.75 13.5H3.25C2.83579 13.5 2.5 13.1642 2.5 12.75L2.5 3.25C2.5 2.83579 2.83579 2.5 3.25 2.5H5.75H6.5V1H5.75H3.25C2.00736 1 1 2.00736 1 3.25V12.75C1 13.9926 2.00736 15 3.25 15H12.75C13.9926 15 15 13.9926 15 12.75V11.25ZM15 5.5L10.5 1V4C7.46243 4 5 6.46243 5 9.5V10L5.05855 9.91218C6.27146 8.09281 8.31339 7 10.5 7V10L15 5.5Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const CodeIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M4.21969 12.5303L4.75002 13.0607L5.81068 12L5.28035 11.4697L1.81068 7.99999L5.28035 4.53032L5.81068 3.99999L4.75002 2.93933L4.21969 3.46966L0.39647 7.29289C0.00594562 7.68341 0.00594562 8.31658 0.39647 8.7071L4.21969 12.5303ZM11.7804 12.5303L11.25 13.0607L10.1894 12L10.7197 11.4697L14.1894 7.99999L10.7197 4.53032L10.1894 3.99999L11.25 2.93933L11.7804 3.46966L15.6036 7.29289C15.9941 7.68341 15.9941 8.31658 15.6036 8.7071L11.7804 12.5303Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const PlayIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M13.4549 7.22745L13.3229 7.16146L2.5 1.74999L2.4583 1.72914L1.80902 1.4045L1.3618 1.18089C1.19558 1.09778 1 1.21865 1 1.4045L1 1.9045L1 2.63041L1 2.67704L1 13.3229L1 13.3696L1 14.0955L1 14.5955C1 14.7813 1.19558 14.9022 1.3618 14.8191L1.80902 14.5955L2.4583 14.2708L2.5 14.25L13.3229 8.83852L13.4549 8.77253L14.2546 8.37267L14.5528 8.2236C14.737 8.13147 14.737 7.86851 14.5528 7.77638L14.2546 7.62731L13.4549 7.22745ZM11.6459 7.99999L2.5 3.42704L2.5 12.5729L11.6459 7.99999Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const PythonIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        d=\"M7.90474 0.00013087C7.24499 0.00316291 6.61494 0.0588153 6.06057 0.15584C4.42745 0.441207 4.13094 1.0385 4.13094 2.14002V3.59479H7.9902V4.07971H4.13094H2.68259C1.56099 4.07971 0.578874 4.7465 0.271682 6.01496C-0.0826597 7.4689 -0.0983767 8.37619 0.271682 9.89434C0.546012 11.0244 1.20115 11.8296 2.32276 11.8296H3.64966V10.0856C3.64966 8.82574 4.75179 7.71441 6.06057 7.71441H9.91533C10.9884 7.71441 11.845 6.84056 11.845 5.77472V2.14002C11.845 1.10556 10.9626 0.328487 9.91533 0.15584C9.25237 0.046687 8.56448 -0.00290121 7.90474 0.00013087ZM5.81768 1.17017C6.21631 1.17017 6.54185 1.49742 6.54185 1.89978C6.54185 2.30072 6.21631 2.62494 5.81768 2.62494C5.41761 2.62494 5.09351 2.30072 5.09351 1.89978C5.09351 1.49742 5.41761 1.17017 5.81768 1.17017Z\"\n        fill=\"currentColor\"\n      />\n      <path\n        d=\"M12.3262 4.07971V5.77472C12.3262 7.08883 11.1997 8.19488 9.91525 8.19488H6.06049C5.0046 8.19488 4.13086 9.0887 4.13086 10.1346V13.7693C4.13086 14.8037 5.04033 15.4122 6.06049 15.709C7.28211 16.0642 8.45359 16.1285 9.91525 15.709C10.8868 15.4307 11.8449 14.8708 11.8449 13.7693V12.3145H7.99012V11.8296H11.8449H13.7745C14.8961 11.8296 15.3141 11.0558 15.7041 9.89434C16.1071 8.69865 16.0899 7.5488 15.7041 6.01495C15.4269 4.91058 14.8975 4.07971 13.7745 4.07971H12.3262ZM10.1581 13.2843C10.5582 13.2843 10.8823 13.6086 10.8823 14.0095C10.8823 14.4119 10.5582 14.7391 10.1581 14.7391C9.7595 14.7391 9.43397 14.4119 9.43397 14.0095C9.43397 13.6086 9.7595 13.2843 10.1581 13.2843Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n};\n\nexport const TerminalWindowIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M1.5 2.5H14.5V12.5C14.5 13.0523 14.0523 13.5 13.5 13.5H2.5C1.94772 13.5 1.5 13.0523 1.5 12.5V2.5ZM0 1H1.5H14.5H16V2.5V12.5C16 13.8807 14.8807 15 13.5 15H2.5C1.11929 15 0 13.8807 0 12.5V2.5V1ZM4 11.1339L4.44194 10.6919L6.51516 8.61872C6.85687 8.27701 6.85687 7.72299 6.51517 7.38128L4.44194 5.30806L4 4.86612L3.11612 5.75L3.55806 6.19194L5.36612 8L3.55806 9.80806L3.11612 10.25L4 11.1339ZM8 9.75494H8.6225H11.75H12.3725V10.9999H11.75H8.6225H8V9.75494Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const BrainIcon = () => {\n  return (\n    <svg\n      data-testid=\"geist-icon\"\n      height=\"16\"\n      stroke-linejoin=\"round\"\n      viewBox=\"0 0 16 16\"\n      width=\"16\"\n    >\n      <path\n        d=\"M10 0C11.268 0 12.3324 0.859091 12.6504 2.02637C14.118 2.22209 15.25 3.4789 15.25 5C15.25 5.58891 15.0791 6.13812 14.7861 6.60156C15.529 7.24324 16 8.19094 16 9.25C15.9999 10.332 15.5087 11.2994 14.7373 11.9414C14.7456 12.0433 14.75 12.1462 14.75 12.25C14.75 14.3211 13.0711 16 11 16C9.7732 16 8.68416 15.4108 8 14.5C7.31584 15.4108 6.2268 16 5 16C2.92893 16 1.25 14.3211 1.25 12.25C1.25 12.1462 1.25341 12.0433 1.26172 11.9414C0.490629 11.2994 0.000127702 10.3317 0 9.25C0 8.1912 0.470336 7.24323 1.21289 6.60156C0.92009 6.13821 0.75 5.58873 0.75 5C0.75 3.47923 1.88154 2.22251 3.34863 2.02637C3.6665 0.858965 4.73188 0 6 0C6.78898 0 7.49851 0.333987 8 0.866211C8.50149 0.333987 9.21102 0 10 0ZM10 1.5C9.30964 1.5 8.75 2.05964 8.75 2.75V5C8.75 7.07107 7.07107 8.75 5 8.75V7.25C6.24264 7.25 7.25 6.24264 7.25 5V2.75C7.25 2.05964 6.69036 1.5 6 1.5C5.30964 1.5 4.75 2.05964 4.75 2.75C4.75 2.97883 4.81116 3.19098 4.91699 3.37402C5.12435 3.73249 5.00191 4.19194 4.64355 4.39941C4.28509 4.60678 3.82564 4.48434 3.61816 4.12598C3.51401 3.94592 3.43065 3.75258 3.36914 3.5498C2.72528 3.71844 2.25 4.30326 2.25 5C2.25 5.33086 2.35641 5.63645 2.53809 5.88477C2.64489 5.85428 2.75355 5.82796 2.86426 5.80762C3.27156 5.7328 3.66233 6.00195 3.7373 6.40918C3.81212 6.81648 3.54297 7.20726 3.13574 7.28223C2.20525 7.45314 1.5 8.27042 1.5 9.25C1.50023 10.3544 2.39557 11.25 3.5 11.25C3.62499 11.25 3.74669 11.2384 3.86426 11.2168C4.27151 11.142 4.66228 11.4112 4.7373 11.8184C4.81212 12.2256 4.54296 12.6164 4.13574 12.6914C3.92912 12.7294 3.71641 12.75 3.5 12.75C3.2574 12.75 3.02069 12.7247 2.79199 12.6777C2.99188 13.7157 3.90371 14.5 5 14.5C6.24264 14.5 7.25 13.4926 7.25 12.25V12C7.25 9.92893 8.92893 8.25 11 8.25V9.75C9.75736 9.75 8.75 10.7574 8.75 12V12.25C8.75 13.4926 9.75736 14.5 11 14.5C12.0962 14.5 13.0071 13.7156 13.207 12.6777C12.9786 12.7246 12.7423 12.75 12.5 12.75C12.2836 12.75 12.0709 12.7294 11.8643 12.6914C11.457 12.6164 11.1879 12.2256 11.2627 11.8184C11.3377 11.4112 11.7285 11.142 12.1357 11.2168C12.2533 11.2384 12.375 11.25 12.5 11.25C13.6044 11.25 14.4998 10.3544 14.5 9.25C14.5 8.27042 13.7947 7.45314 12.8643 7.28223C12.457 7.20726 12.1879 6.81648 12.2627 6.40918C12.3377 6.00195 12.7284 5.7328 13.1357 5.80762C13.2461 5.82791 13.3544 5.85439 13.4609 5.88477C13.6428 5.63637 13.75 5.33107 13.75 5C13.75 4.30293 13.2742 3.71812 12.6299 3.5498C12.5684 3.75249 12.4859 3.946 12.3818 4.12598C12.1744 4.48434 11.7149 4.60678 11.3564 4.39941C10.9981 4.19194 10.8756 3.73249 11.083 3.37402C11.1888 3.19098 11.25 2.97883 11.25 2.75C11.25 2.05964 10.6904 1.5 10 1.5Z\"\n        fill=\"currentColor\"\n      ></path>\n    </svg>\n  );\n};\n\nexport const TerminalIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M1.53035 12.7804L1.00002 13.3108L-0.0606384 12.2501L0.469692 11.7198L4.18936 8.00011L0.469692 4.28044L-0.0606384 3.75011L1.00002 2.68945L1.53035 3.21978L5.60358 7.29301C5.9941 7.68353 5.9941 8.3167 5.60357 8.70722L1.53035 12.7804ZM8.75002 12.5001H8.00002V14.0001H8.75002H15.25H16V12.5001H15.25H8.75002Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const ClockRewind = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M7.96452 2.5C11.0257 2.5 13.5 4.96643 13.5 8C13.5 11.0336 11.0257 13.5 7.96452 13.5C6.12055 13.5 4.48831 12.6051 3.48161 11.2273L3.03915 10.6217L1.828 11.5066L2.27046 12.1122C3.54872 13.8617 5.62368 15 7.96452 15C11.8461 15 15 11.87 15 8C15 4.13001 11.8461 1 7.96452 1C5.06835 1 2.57851 2.74164 1.5 5.23347V3.75V3H0V3.75V7.25C0 7.66421 0.335786 8 0.75 8H3.75H4.5V6.5H3.75H2.63724C3.29365 4.19393 5.42843 2.5 7.96452 2.5ZM8.75 5.25V4.5H7.25V5.25V7.8662C7.25 8.20056 7.4171 8.51279 7.6953 8.69825L9.08397 9.62404L9.70801 10.0401L10.5401 8.79199L9.91603 8.37596L8.75 7.59861V5.25Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const LogsIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M9 2H9.75H14.25H15V3.5H14.25H9.75H9V2ZM9 12.5H9.75H14.25H15V14H14.25H9.75H9V12.5ZM9.75 7.25H9V8.75H9.75H14.25H15V7.25H14.25H9.75ZM1 12.5H1.75H2.25H3V14H2.25H1.75H1V12.5ZM1.75 2H1V3.5H1.75H2.25H3V2H2.25H1.75ZM1 7.25H1.75H2.25H3V8.75H2.25H1.75H1V7.25ZM5.75 12.5H5V14H5.75H6.25H7V12.5H6.25H5.75ZM5 2H5.75H6.25H7V3.5H6.25H5.75H5V2ZM5.75 7.25H5V8.75H5.75H6.25H7V7.25H6.25H5.75Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const ImageIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M14.5 2.5H1.5V9.18933L2.96966 7.71967L3.18933 7.5H3.49999H6.63001H6.93933L6.96966 7.46967L10.4697 3.96967L11.5303 3.96967L14.5 6.93934V2.5ZM8.00066 8.55999L9.53034 10.0897L10.0607 10.62L9.00001 11.6807L8.46968 11.1503L6.31935 9H3.81065L1.53032 11.2803L1.5 11.3106V12.5C1.5 13.0523 1.94772 13.5 2.5 13.5H13.5C14.0523 13.5 14.5 13.0523 14.5 12.5V9.06066L11 5.56066L8.03032 8.53033L8.00066 8.55999ZM4.05312e-06 10.8107V12.5C4.05312e-06 13.8807 1.11929 15 2.5 15H13.5C14.8807 15 16 13.8807 16 12.5V9.56066L16.5607 9L16.0303 8.46967L16 8.43934V2.5V1H14.5H1.5H4.05312e-06V2.5V10.6893L-0.0606689 10.75L4.05312e-06 10.8107Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n\nexport const FullscreenIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M1 5.25V6H2.5V5.25V2.5H5.25H6V1H5.25H2C1.44772 1 1 1.44772 1 2V5.25ZM5.25 14.9994H6V13.4994H5.25H2.5V10.7494V9.99939H1V10.7494V13.9994C1 14.5517 1.44772 14.9994 2 14.9994H5.25ZM15 10V10.75V14C15 14.5523 14.5523 15 14 15H10.75H10V13.5H10.75H13.5V10.75V10H15ZM10.75 1H10V2.5H10.75H13.5V5.25V6H15V5.25V2C15 1.44772 14.5523 1 14 1H10.75Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const DownloadIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M8.75 1V1.75V8.68934L10.7197 6.71967L11.25 6.18934L12.3107 7.25L11.7803 7.78033L8.70711 10.8536C8.31658 11.2441 7.68342 11.2441 7.29289 10.8536L4.21967 7.78033L3.68934 7.25L4.75 6.18934L5.28033 6.71967L7.25 8.68934V1.75V1H8.75ZM13.5 9.25V13.5H2.5V9.25V8.5H1V9.25V14C1 14.5523 1.44771 15 2 15H14C14.5523 15 15 14.5523 15 14V9.25V8.5H13.5V9.25Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const LineChartIcon = ({ size = 16 }: { size?: number }) => (\n  <svg\n    height={size}\n    strokeLinejoin=\"round\"\n    style={{ color: 'currentcolor' }}\n    viewBox=\"0 0 16 16\"\n    width={size}\n  >\n    <path\n      clipRule=\"evenodd\"\n      d=\"M1 1v11.75A2.25 2.25 0 0 0 3.25 15H15v-1.5H3.25a.75.75 0 0 1-.75-.75V1H1Zm13.297 5.013.513-.547-1.094-1.026-.513.547-3.22 3.434-2.276-2.275a1 1 0 0 0-1.414 0L4.22 8.22l-.53.53 1.06 1.06.53-.53L7 7.56l2.287 2.287a1 1 0 0 0 1.437-.023l3.573-3.811Z\"\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n    />\n  </svg>\n);\n\nexport const WarningIcon = ({ size = 16 }: { size?: number }) => {\n  return (\n    <svg\n      height={size}\n      strokeLinejoin=\"round\"\n      style={{ color: 'currentcolor' }}\n      viewBox=\"0 0 16 16\"\n      width={size}\n    >\n      <path\n        clipRule=\"evenodd\"\n        d=\"M8.55846 0.5C9.13413 0.5 9.65902 0.829456 9.90929 1.34788L15.8073 13.5653C16.1279 14.2293 15.6441 15 14.9068 15H1.09316C0.355835 15 -0.127943 14.2293 0.192608 13.5653L6.09065 1.34787C6.34092 0.829454 6.86581 0.5 7.44148 0.5H8.55846ZM8.74997 4.75V5.5V8V8.75H7.24997V8V5.5V4.75H8.74997ZM7.99997 12C8.55226 12 8.99997 11.5523 8.99997 11C8.99997 10.4477 8.55226 10 7.99997 10C7.44769 10 6.99997 10.4477 6.99997 11C6.99997 11.5523 7.44769 12 7.99997 12Z\"\n        fill=\"currentColor\"\n        fillRule=\"evenodd\"\n      />\n    </svg>\n  );\n};\n","import { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { useRef, useState, useEffect, useCallback, ComponentType } from 'react';\nimport { RemoveCircleIcon, XlsxIcon, CsvFileIcon, TxtFileIcon, UnknownFileIcon } from './bs-icons';\nimport { LoaderIcon } from './ui/icons';\n\nexport interface AttachmentItem {\n  id: string;\n  url: string;\n  alt?: string;\n  isLoading?: boolean;\n  /** MIME type, used to decide whether to show image or icon */\n  contentType?: string;\n}\n\nexport interface AttachmentsPreviewerProps {\n  attachments: AttachmentItem[];\n  className?: string;\n  imageSize?: number;\n  gap?: number;\n  onImageClick?: (attachment: AttachmentItem, index: number) => void;\n  onImageRemove?: (attachment: AttachmentItem, index: number) => void;\n}\n\ntype FileIconComponent = ComponentType;\n\ninterface FileTypeConfig {\n  icon: FileIconComponent;\n  /** Icon original size for scaling */\n  iconSize: number;\n}\n\nconst FILE_TYPE_MAP: Record<string, FileTypeConfig> = {\n  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': {\n    icon: XlsxIcon,\n    iconSize: 52,\n  },\n  'application/vnd.ms-excel': { icon: XlsxIcon, iconSize: 52 },\n  'text/csv': { icon: CsvFileIcon, iconSize: 16 },\n  'text/plain': { icon: TxtFileIcon, iconSize: 16 },\n  'application/octet-stream': { icon: TxtFileIcon, iconSize: 16 },\n};\n\nconst DEFAULT_FILE_CONFIG: FileTypeConfig = {\n  icon: UnknownFileIcon,\n  iconSize: 16,\n};\n\nconst isImageType = (mediaType?: string): boolean => Boolean(mediaType?.startsWith('image/'));\n\nconst getFileConfig = (mediaType?: string, fileName?: string): FileTypeConfig => {\n  if (mediaType && FILE_TYPE_MAP[mediaType]) {\n    return FILE_TYPE_MAP[mediaType];\n  }\n\n  if (fileName) {\n    const ext = fileName.split('.').pop()?.toLowerCase();\n    switch (ext) {\n      case 'xlsx':\n      case 'xls':\n        return FILE_TYPE_MAP['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];\n      case 'csv':\n        return FILE_TYPE_MAP['text/csv'];\n      case 'txt':\n      case 'ts':\n      case 'tsx':\n      case 'js':\n      case 'jsx':\n      case 'json':\n      case 'md':\n        return FILE_TYPE_MAP['text/plain'];\n    }\n  }\n\n  return DEFAULT_FILE_CONFIG;\n};\n\nconst ChevronRightIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n    <path\n      d=\"M9 6L15 12L9 18\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nconst ChevronLeftIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n    <path\n      d=\"M15 6L9 12L15 18\"\n      stroke=\"currentColor\"\n      strokeWidth=\"2\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n    />\n  </svg>\n);\n\nconst NavButton = ({\n  direction,\n  onClick,\n  className,\n}: {\n  direction: 'left' | 'right';\n  onClick: () => void;\n  className?: string;\n}) => {\n  return (\n    <button\n      type=\"button\"\n      onClick={onClick}\n      className={cn(\n        'flex items-center justify-center',\n        'size-9 p-1 rounded-[18px]',\n        'bg-white shadow-[0px_0px_10px_0px_rgba(0,0,0,0.06)]',\n        'cursor-pointer',\n        'hover:bg-gray-50',\n        'text-gray-600',\n        transCls,\n        className\n      )}\n    >\n      {direction === 'left' ? <ChevronLeftIcon /> : <ChevronRightIcon />}\n    </button>\n  );\n};\n\nconst GradientOverlay = ({\n  direction,\n  height,\n  visible,\n}: {\n  direction: 'left' | 'right';\n  height: number;\n  visible: boolean;\n}) => {\n  const isLeft = direction === 'left';\n  return (\n    <div\n      className={cn(\n        'absolute top-2 pointer-events-none z-5',\n        isLeft ? 'left-0' : 'right-0',\n        transCls,\n        visible ? 'opacity-100' : 'opacity-0'\n      )}\n      style={{ height: `${height}px`, width: '46px' }}\n    >\n      {/* Gradient layer - from white via white@63.57% to transparent */}\n      <div\n        className={cn(\n          'absolute inset-0',\n          isLeft\n            ? 'bg-linear-to-r from-white via-white via-[63.57%] to-transparent'\n            : 'bg-linear-to-l from-white via-white via-[63.57%] to-transparent'\n        )}\n      />\n      {/* Blur layer */}\n      <div className=\"absolute inset-0 bg-white blur-[7px]\" />\n    </div>\n  );\n};\n\nexport const AttachmentsPreviewer = ({\n  attachments,\n  className,\n  imageSize = 53,\n  gap = 10,\n  onImageClick,\n  onImageRemove,\n}: AttachmentsPreviewerProps) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const [showLeftNav, setShowLeftNav] = useState(false);\n  const [showRightNav, setShowRightNav] = useState(false);\n\n  const checkScroll = useCallback(() => {\n    const el = scrollRef.current;\n    if (!el) return;\n\n    const { scrollLeft, scrollWidth, clientWidth } = el;\n    setShowLeftNav(scrollLeft > 0);\n    setShowRightNav(scrollLeft + clientWidth < scrollWidth - 1);\n  }, []);\n\n  useEffect(() => {\n    checkScroll();\n    const el = scrollRef.current;\n    if (!el) return;\n\n    el.addEventListener('scroll', checkScroll);\n    window.addEventListener('resize', checkScroll);\n\n    return () => {\n      el.removeEventListener('scroll', checkScroll);\n      window.removeEventListener('resize', checkScroll);\n    };\n  }, [checkScroll, attachments]);\n\n  const scroll = (direction: 'left' | 'right') => {\n    const el = scrollRef.current;\n    if (!el) return;\n\n    const scrollAmount = imageSize + gap;\n    const newScrollLeft =\n      direction === 'left' ? el.scrollLeft - scrollAmount * 2 : el.scrollLeft + scrollAmount * 2;\n\n    el.scrollTo({\n      left: newScrollLeft,\n      behavior: 'smooth',\n    });\n  };\n\n  if (!attachments.length) {\n    return null;\n  }\n\n  return (\n    <div\n      ref={containerRef}\n      className={cn('relative w-full', className)}\n      style={{ height: imageSize + 16 }}\n    >\n      {/* Scrollable images container */}\n      <div\n        ref={scrollRef}\n        className=\"flex overflow-x-auto scrollbar-hide py-2\"\n        style={{ gap, height: imageSize + 16 }}\n      >\n        {attachments.map((attachment, index) => {\n          const isImage = isImageType(attachment.contentType);\n          const { icon: Icon, iconSize } = getFileConfig(attachment.contentType, attachment.alt);\n          const scaledIconSize = (52 / 102) * imageSize;\n          const iconScale = scaledIconSize / iconSize;\n\n          return (\n            <div\n              key={attachment.id}\n              className={cn(\n                'relative shrink-0 cursor-pointer group border border-[#e0e0e0] rounded-lg',\n                transCls\n              )}\n              style={{ width: imageSize, height: imageSize }}\n              onClick={() => onImageClick?.(attachment, index)}\n            >\n              {isImage && attachment.url ? (\n                <img\n                  src={attachment.url}\n                  alt={attachment.alt || `Attachment ${index + 1}`}\n                  className=\"absolute inset-0 h-full w-full rounded-lg object-cover\"\n                />\n              ) : (\n                <div className=\"absolute inset-0 flex h-full w-full items-center justify-center rounded-lg bg-[#EFF0F6]\">\n                  <div\n                    className=\"shrink-0 flex items-center justify-center\"\n                    style={{ width: scaledIconSize, height: scaledIconSize }}\n                  >\n                    <div\n                      style={{\n                        transform: iconScale !== 1 ? `scale(${iconScale})` : undefined,\n                        transformOrigin: 'center',\n                      }}\n                    >\n                      <Icon />\n                    </div>\n                  </div>\n                </div>\n              )}\n\n              {attachment.isLoading && (\n                <div className=\"absolute inset-0 flex items-center justify-center rounded-lg bg-black/50 pointer-events-none\">\n                  <div className=\"inline-flex animate-spin items-center justify-center\">\n                    <LoaderIcon size={16} />\n                  </div>\n                </div>\n              )}\n\n              {onImageRemove /* && !attachment.isLoading*/ && (\n                <button\n                  className={cn(\n                    'absolute -top-1.5 -right-1.5',\n                    'flex items-center justify-center',\n                    'opacity-0 group-hover:opacity-100 cursor-pointer',\n                    transCls\n                  )}\n                  onClick={(e) => {\n                    e.stopPropagation();\n                    onImageRemove(attachment, index);\n                  }}\n                >\n                  <RemoveCircleIcon />\n                </button>\n              )}\n            </div>\n          );\n        })}\n      </div>\n\n      {/* Left navigation */}\n      <GradientOverlay direction=\"left\" height={imageSize} visible={showLeftNav} />\n      <NavButton\n        direction=\"left\"\n        onClick={() => scroll('left')}\n        className={cn(\n          'absolute left-0 top-1/2 -translate-y-1/2 z-10',\n          showLeftNav ? 'opacity-100' : 'opacity-0 pointer-events-none'\n        )}\n      />\n\n      {/* Right navigation */}\n      <GradientOverlay direction=\"right\" height={imageSize} visible={showRightNav} />\n      <NavButton\n        direction=\"right\"\n        onClick={() => scroll('right')}\n        className={cn(\n          'absolute right-0 top-1/2 -translate-y-1/2 z-10',\n          showRightNav ? 'opacity-100' : 'opacity-0 pointer-events-none'\n        )}\n      />\n    </div>\n  );\n};\n","import { forwardRef } from 'react';\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { BsTooltip } from './tooltip';\n\nexport interface BaseButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n  icon?: ReactNode;\n  tooltip?: string;\n  hoverTextCls?: string;\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n  ({ className, children, hoverTextCls, tooltip, icon, type, ...rest }, ref) => {\n    const btn = (\n      <button\n        ref={ref}\n        type={type ?? 'button'}\n        className={cn(\n          'group inline-flex items-center gap-[6px] px-[16px] rounded-[4px] h-[34px]',\n          'border border-solid border-[#E0E0E0] bg-transparent',\n          'text-[14px] font-[400] leading-[normal] text-[#030303]',\n          'hover:bg-[#EFF0F6] hover:border-transparent',\n          'cursor-pointer',\n          {\n            'hover:text-[#0265FF]': !hoverTextCls,\n            [`hover:${hoverTextCls}`]: hoverTextCls,\n          },\n          transCls,\n          className\n        )}\n        {...rest}\n      >\n        {icon ? <span className=\"shrink-0\">{icon}</span> : null}\n        {children ? (\n          <span className=\"whitespace-nowrap\">{children}</span>\n        ) : null}\n      </button>\n    );\n\n    if (tooltip) {\n      return <BsTooltip content={tooltip}>{btn}</BsTooltip>;\n    }\n\n    return btn;\n  }\n);\n\nBaseButton.displayName = 'BaseButton';\n","import type { IAppDetail, IEntryDetail } from '@baishuyun/types';\nimport type { EntryTreeItem, BsEntrySelectChangeResult } from './types';\n\nexport const DEPTH_PADDING: Record<number, string> = {\n  0: 'pl-[10px]',\n  1: 'pl-[32px]',\n  2: 'pl-[32px]',\n  3: 'pl-[54px]',\n  4: 'pl-[78px]',\n  5: 'pl-[102px]',\n};\n\nexport function getDepthPadding(depth: number): string {\n  return DEPTH_PADDING[Math.min(depth, 5)] ?? DEPTH_PADDING[5];\n}\n\nexport function getEntryIconClass(entry: IEntryDetail): string {\n  const isNew = entry.icon >= 25;\n  const newStr = isNew ? '-new' : '';\n  return `node-icon icon-bsy-form${newStr}  icon${newStr}-bsy-form-${entry.icon}`;\n}\n\nexport function buildEntryTreeFromAliasMap(\n  appDetail: IAppDetail,\n  searchQuery: string\n): EntryTreeItem[] {\n  const { entryIdAliasMap, entryMap } = appDetail;\n  const aliasKeys = Object.keys(entryIdAliasMap);\n  if (aliasKeys.length === 0) return [];\n\n  const childrenByParent = new Map<string, string[]>();\n  for (const id of aliasKeys) {\n    const aliasItem = entryIdAliasMap[id];\n    const parentKey = aliasItem.parent || '0';\n    if (!childrenByParent.has(parentKey)) {\n      childrenByParent.set(parentKey, []);\n    }\n    childrenByParent.get(parentKey)!.push(id);\n  }\n\n  // Root parents: any parent value that is not itself a key in entryIdAliasMap.\n  // Also include the sentinel '0' for entries with empty/falsy parent.\n  const allParentValues = new Set(childrenByParent.keys());\n  const rootParents = Array.from(allParentValues).filter((p) => p === '0' || !entryIdAliasMap[p]);\n\n  const lowerQuery = searchQuery.toLowerCase().trim();\n\n  function buildRecursive(parentId: string, depth: number): EntryTreeItem[] {\n    const childIds = childrenByParent.get(parentId) || [];\n    const nodes: EntryTreeItem[] = [];\n\n    for (const id of childIds) {\n      const aliasItem = entryIdAliasMap[id];\n      const entryDetail = entryMap[id] || null;\n      const name = entryDetail?.name || id;\n      const icon = entryDetail?.icon || 0;\n      const isGroup = aliasItem.type === 'group';\n\n      const children = buildRecursive(id, depth + 1);\n      const selfMatch = !lowerQuery || name?.toLowerCase().includes(lowerQuery);\n\n      if (isGroup) {\n        if (selfMatch || children.length > 0) {\n          nodes.push({\n            id,\n            name,\n            icon,\n            type: 'group',\n            children,\n            depth,\n            isSelectable: false,\n            entry: entryDetail,\n          });\n        }\n      } else {\n        if (selfMatch) {\n          nodes.push({\n            id,\n            name,\n            icon,\n            type: aliasItem.type,\n            children: [],\n            depth,\n            isSelectable: true,\n            entry: entryDetail,\n          });\n        }\n      }\n    }\n\n    return nodes;\n  }\n\n  // Build from each root parent, all at depth 0\n  const result: EntryTreeItem[] = [];\n  for (const rootId of rootParents) {\n    result.push(...buildRecursive(rootId, 0));\n  }\n  return result;\n}\n\nexport function filterTreeBySearch(nodes: EntryTreeItem[], searchQuery: string): EntryTreeItem[] {\n  const lowerQuery = searchQuery.toLowerCase().trim();\n  if (!lowerQuery) return nodes;\n\n  const result: EntryTreeItem[] = [];\n  for (const node of nodes) {\n    const nameMatch = node?.name.toLowerCase().includes(lowerQuery);\n    const filteredChildren = filterTreeBySearch(node.children, searchQuery);\n\n    if (!node.isSelectable) {\n      if (nameMatch || filteredChildren.length > 0) {\n        result.push({ ...node, children: filteredChildren });\n      }\n    } else {\n      if (nameMatch) {\n        result.push(node);\n      }\n    }\n  }\n  return result;\n}\n\nexport function findSelected(\n  appDetails: Record<string, IAppDetail>,\n  entryId: string,\n  currentAppId?: string\n): BsEntrySelectChangeResult | null {\n  for (const [appId, detail] of Object.entries(appDetails)) {\n    if (detail.entryMap[entryId]) {\n      return {\n        entry: detail.entryMap[entryId],\n        appId,\n        section: appId === currentAppId ? 'current' : 'other',\n      };\n    }\n  }\n  return null;\n}\n","import { cn } from '../../../lib/utils';\nimport { SearchIcon } from '../../bs-icons';\n\nexport interface SearchInputProps {\n  value?: string;\n  onChange?: (value: string) => void;\n  placeholder?: string;\n  className?: string;\n}\n\nexport const SearchInput = ({\n  value,\n  onChange,\n  placeholder = '搜索智能体名称',\n  className,\n}: SearchInputProps) => {\n  return (\n    <div\n      className={cn(\n        'content-stretch flex items-center gap-[6px] border border-[#e0e0e0] border-solid rounded-[4px] px-[10px] h-[34px]',\n        'group hover:border-[#0265ff] focus-within:border-[#0265ff]',\n        className,\n      )}\n    >\n      <SearchIcon className=\"shrink-0 text-[#999] group-hover:text-[#0265ff] group-focus-within:text-[#0265ff]\" />\n      <input\n        type=\"text\"\n        value={value || ''}\n        onChange={(e) => onChange?.(e.target.value)}\n        placeholder={placeholder}\n        className=\"flex-1 outline-none text-[14px] placeholder:text-[#999] bg-transparent min-w-0 text-[#030303] leading-[normal]\"\n      />\n    </div>\n  );\n};\n","import { SearchInput as BaseSearch, type SearchInputProps} from '../agent-helper/search-input';\n\nexport type { SearchInputProps };\n\nexport const SearchInput = (props: SearchInputProps) => <BaseSearch {...props} placeholder=\"搜索表单或字段\"  />;","import { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { getDepthPadding, getEntryIconClass } from './build-tree';\nimport type { EntryTreeItem } from './types';\n\nexport function EntryItem({\n  item,\n  depth,\n  isSelected,\n  onClick,\n}: {\n  item: EntryTreeItem;\n  depth: number;\n  isSelected: boolean;\n  onClick: () => void;\n}) {\n  return (\n    <div\n      className={cn(\n        'flex items-center justify-between h-[34px] px-[10px] cursor-pointer rounded-[4px] shrink-0',\n        getDepthPadding(depth),\n        'hover:bg-[#EFF0F6]',\n        isSelected && 'bg-[#EFF0F6]',\n        transCls,\n      )}\n      onClick={onClick}\n    >\n      <span className=\"flex items-center gap-[6px] min-w-0 flex-1\">\n        <i\n          className={\n            item.entry\n              ? getEntryIconClass(item.entry)\n              : 'node-icon icon-bsy-form icon-new-bsy-form-25'\n          }\n          style={{ fontSize: 16, lineHeight: 1 }}\n        />\n        <span className=\"text-[14px] text-[#030303] truncate\">\n          {item.name}\n        </span>\n      </span>\n    </div>\n  );\n}\n","import { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { getDepthPadding } from './build-tree';\nimport { EntryItem } from './entry-item';\nimport type { EntryTreeItem, BsEntrySelectChangeResult } from './types';\nimport { SolidArrowDownIcon } from '../bs-icons';\n\nconst ChevronRightIcon = ({ size }: { size?: number }) => (\n  <SolidArrowDownIcon className=\"-rotate-90\" size={size} />\n);\n\nexport function TreeItemNode({\n  item,\n  selectedEntryId,\n  appId,\n  section,\n  onSelect,\n}: {\n  item: EntryTreeItem;\n  selectedEntryId: string | undefined;\n  appId: string;\n  section: 'current' | 'other';\n  onSelect: (result: BsEntrySelectChangeResult) => void;\n}) {\n  const [expanded, setExpanded] = useState(true);\n\n  if (item.type === 'group') {\n    return (\n      <div>\n        <div\n          className={cn(\n            'flex items-center gap-[6px] h-[34px] px-[10px] cursor-pointer rounded-[4px]',\n            getDepthPadding(item.depth),\n            'hover:bg-[#EFF0F6]',\n            transCls,\n          )}\n          onClick={() => setExpanded(!expanded)}\n        >\n          <span\n            className={cn(\n              'shrink-0 flex items-center justify-center w-[16px] h-[16px]',\n              transCls,\n              expanded && 'rotate-90',\n            )}\n          >\n            <ChevronRightIcon size={16} />\n          </span>\n          <i\n            className=\"icon-bsy-folder-close\"\n            style={{ fontSize: 16, lineHeight: 1 }}\n          />\n          <span className=\"text-[14px] text-[#030303] truncate\">\n            {item.name}\n          </span>\n        </div>\n        {expanded &&\n          item.children.map((child) => (\n            <TreeItemNode\n              key={child.id}\n              item={child}\n              selectedEntryId={selectedEntryId}\n              appId={appId}\n              section={section}\n              onSelect={onSelect}\n            />\n          ))}\n      </div>\n    );\n  }\n\n  return (\n    <EntryItem\n      item={item}\n      depth={item.depth}\n      isSelected={selectedEntryId === item.id}\n      onClick={() => {\n        if (item.entry) {\n          onSelect({ entry: item.entry, appId, section });\n        }\n      }}\n    />\n  );\n}\n","import {\n  useState,\n  useRef,\n  useEffect,\n  useCallback,\n  useMemo,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { IconBtn } from '../icon-btn';\nimport { LeftArrowIcon, SolidArrowDownIcon } from '../bs-icons';\nimport {\n  buildEntryTreeFromAliasMap,\n  getEntryIconClass,\n  filterTreeBySearch,\n} from './build-tree';\nimport { SearchInput } from './search-input';\nimport { TreeItemNode } from './tree-item-node';\nimport type { IAppDetail } from '@baishuyun/types';\nimport type { EntryTreeItem, BsEntrySelectChangeResult } from './types';\n\nconst ChevronRightIcon = ({ size }: { size?: number }) => (\n  <SolidArrowDownIcon className=\"-rotate-90\" size={size} />\n);\n\ninterface FlatNode {\n  node: EntryTreeItem;\n  appId: string;\n  section: 'current' | 'other';\n}\n\nexport function ScrollSlider({\n  appDetails,\n  currentAppId,\n  selectedEntryId,\n  onSelect,\n  onOverflowChange,\n  showCurrentAppEntriesOnly = false,\n}: {\n  appDetails: Record<string, IAppDetail>;\n  currentAppId?: string;\n  selectedEntryId?: string;\n  onSelect: (result: BsEntrySelectChangeResult) => void;\n  onOverflowChange?: (hasOverflow: boolean) => void;\n  showCurrentAppEntriesOnly?: boolean;\n}) {\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const [canScrollLeft, setCanScrollLeft] = useState(false);\n  const [canScrollRight, setCanScrollRight] = useState(false);\n\n  // Group popover state\n  const [activeGroup, setActiveGroup] = useState<FlatNode | null>(null);\n  const [groupSearchQuery, setGroupSearchQuery] = useState('');\n  const [popoverStyle, setPopoverStyle] = useState<React.CSSProperties>({});\n  const popoverRef = useRef<HTMLDivElement>(null);\n  const groupPillRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n  const [groupPortalContainer, setGroupPortalContainer] = useState<HTMLElement | null>(null);\n\n  // Build first-level nodes from all apps (no search filter)\n  const flatNodes = useMemo<FlatNode[]>(() => {\n    const appIds = Object.keys(appDetails);\n    const currentFirst: FlatNode[] = [];\n    const otherNodes: FlatNode[] = [];\n\n    for (const appId of appIds) {\n      const detail = appDetails[appId];\n      const tree = buildEntryTreeFromAliasMap(detail, '');\n      const section = appId === currentAppId ? 'current' as const : 'other' as const;\n      const mapped = tree.map((node) => ({ node, appId, section }));\n      if (section === 'current') {\n        currentFirst.push(...mapped);\n      } else {\n        otherNodes.push(...mapped);\n      }\n    }\n\n    const merged = [...currentFirst, ...otherNodes];\n    return showCurrentAppEntriesOnly ? currentFirst : merged;\n  }, [\n    appDetails,\n    currentAppId,\n    showCurrentAppEntriesOnly,\n    Object.keys(appDetails)\n      .map((id) => (appDetails[id]?.entryList?.length ?? 0))\n      .join(','),\n  ]);\n\n  // Filtered tree for the active group popover\n  const filteredGroupTree = useMemo(() => {\n    if (!activeGroup) return [];\n    return filterTreeBySearch(activeGroup.node.children, groupSearchQuery);\n  }, [activeGroup, groupSearchQuery]);\n\n  const checkScroll = useCallback(() => {\n    const el = scrollRef.current;\n    if (!el) return;\n    const canLeft = el.scrollLeft > 0;\n    const canRight = el.scrollLeft + el.clientWidth < el.scrollWidth - 1;\n    setCanScrollLeft(canLeft);\n    setCanScrollRight(canRight);\n  }, []);\n\n  const hasOverflow = canScrollLeft || canScrollRight;\n\n  useEffect(() => {\n    onOverflowChange?.(hasOverflow);\n  }, [hasOverflow, onOverflowChange]);\n\n  // Map from descendant entry ID to the group pill node ID\n  const descendantToGroupId = useMemo(() => {\n    const map = new Map<string, string>();\n    function collectDescendants(node: EntryTreeItem, groupId: string) {\n      if (node.isSelectable) {\n        map.set(node.id, groupId);\n      }\n      for (const child of node.children) {\n        collectDescendants(child, groupId);\n      }\n    }\n    for (const { node } of flatNodes) {\n      if (!node.isSelectable) {\n        for (const child of node.children) {\n          collectDescendants(child, node.id);\n        }\n      }\n    }\n    return map;\n  }, [flatNodes]);\n\n  // Auto-scroll selected pill into view\n  useEffect(() => {\n    if (!selectedEntryId || !scrollRef.current) return;\n    // Try direct match first (leaf pill)\n    let targetId = selectedEntryId;\n    let pill = scrollRef.current.querySelector(\n      `[data-entry-id=\"${targetId}\"]`,\n    ) as HTMLElement | null;\n    // Fall back to ancestor group pill\n    if (!pill) {\n      targetId = descendantToGroupId.get(selectedEntryId) || '';\n      if (targetId) {\n        pill = scrollRef.current.querySelector(\n          `[data-entry-id=\"${targetId}\"]`,\n        ) as HTMLElement | null;\n      }\n    }\n    if (pill) {\n      pill.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n    }\n  }, [selectedEntryId, descendantToGroupId]);\n\n  useEffect(() => {\n    checkScroll();\n    const el = scrollRef.current;\n    if (!el) return;\n\n    const observer = new ResizeObserver(checkScroll);\n    observer.observe(el);\n    el.addEventListener('scroll', checkScroll, { passive: true });\n    return () => {\n      observer.disconnect();\n      el.removeEventListener('scroll', checkScroll);\n    };\n  }, [flatNodes, checkScroll]);\n\n  const scroll = useCallback((direction: 'left' | 'right') => {\n    const el = scrollRef.current;\n    if (!el) return;\n    el.scrollBy({\n      left: direction === 'left' ? -150 : 150,\n      behavior: 'smooth',\n    });\n  }, []);\n\n  const updatePopoverPosition = useCallback(() => {\n    if (!activeGroup) return;\n    const triggerEl = groupPillRefs.current.get(activeGroup.node.id);\n    if (!triggerEl) return;\n    const rect = triggerEl.getBoundingClientRect();\n    setPopoverStyle({\n      position: 'fixed',\n      top: rect.bottom + 4,\n      left: rect.left,\n      minWidth: Math.max(rect.width, 240),\n      zIndex: 9999,\n    });\n  }, [activeGroup]);\n\n  const closeGroupPopover = useCallback(() => {\n    setActiveGroup(null);\n    setGroupSearchQuery('');\n  }, []);\n\n  const openGroupPopover = useCallback((flatNode: FlatNode, event: React.MouseEvent) => {\n    event.stopPropagation();\n    if (activeGroup?.node.id === flatNode.node.id) {\n      setActiveGroup(null);\n      setGroupSearchQuery('');\n      return;\n    }\n    setGroupSearchQuery('');\n    setActiveGroup(flatNode);\n\n    // Check Shadow DOM portal\n    const triggerEl = groupPillRefs.current.get(flatNode.node.id);\n    if (triggerEl) {\n      const rootNode = triggerEl.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        const existing = rootNode.querySelector<HTMLElement>(\n          '[data-bs-entry-select-group-portal]',\n        );\n        if (existing) {\n          setGroupPortalContainer(existing);\n        } else {\n          const container = document.createElement('div');\n          container.setAttribute('data-bs-entry-select-group-portal', 'true');\n          rootNode.appendChild(container);\n          setGroupPortalContainer(container);\n        }\n      } else {\n        setGroupPortalContainer(null);\n      }\n    }\n\n    // Position the popover after the next frame\n    const groupId = flatNode.node.id;\n    requestAnimationFrame(() => {\n      const el = groupPillRefs.current.get(groupId);\n      if (el) {\n        const rect = el.getBoundingClientRect();\n        setPopoverStyle({\n          position: 'fixed',\n          top: rect.bottom + 4,\n          left: rect.left,\n          minWidth: Math.max(rect.width, 240),\n          zIndex: 9999,\n        });\n      }\n    });\n  }, [activeGroup]);\n\n  const handleGroupPopoverSelect = useCallback(\n    (result: BsEntrySelectChangeResult) => {\n      onSelect(result);\n      closeGroupPopover();\n    },\n    [onSelect, closeGroupPopover],\n  );\n\n  // Click outside for group popover\n  useEffect(() => {\n    if (!activeGroup) return;\n\n    const handleClickOutside = (e: MouseEvent) => {\n      const path = e.composedPath();\n      if (popoverRef.current && path.includes(popoverRef.current)) return;\n      const triggerEl = groupPillRefs.current.get(activeGroup.node.id);\n      if (triggerEl && path.includes(triggerEl)) return;\n      closeGroupPopover();\n    };\n\n    const handleScroll = () => updatePopoverPosition();\n\n    document.addEventListener('mousedown', handleClickOutside);\n    window.addEventListener('scroll', handleScroll, true);\n    window.addEventListener('resize', handleScroll);\n\n    return () => {\n      document.removeEventListener('mousedown', handleClickOutside);\n      window.removeEventListener('scroll', handleScroll, true);\n      window.removeEventListener('resize', handleScroll);\n    };\n  }, [activeGroup, closeGroupPopover, updatePopoverPosition]);\n\n  // Keyboard escape\n  useEffect(() => {\n    if (!activeGroup) return;\n    const handleEscape = (e: KeyboardEvent) => {\n      if (e.key === 'Escape') closeGroupPopover();\n    };\n    document.addEventListener('keydown', handleEscape);\n    return () => document.removeEventListener('keydown', handleEscape);\n  }, [activeGroup, closeGroupPopover]);\n\n  if (flatNodes.length === 0) return null;\n\n  const hasGroupSearch = groupSearchQuery.trim().length > 0;\n\n  return (\n    <div className=\"flex items-center flex-1 min-w-0\">\n      {/* Left arrow: always in DOM, width transition */}\n      <span\n        className={cn(\n          transCls,\n          'inline-flex overflow-hidden',\n          canScrollLeft ? 'w-[26px] opacity-100 mr-2.5' : 'w-0 opacity-0 mr-0',\n        )}\n      >\n        <IconBtn\n          rounded\n          icon={<LeftArrowIcon />}\n          onClick={() => scroll('left')}\n        />\n      </span>\n\n      <div\n        ref={scrollRef}\n        className=\"flex-1 overflow-x-auto scrollbar-hide flex gap-2.5 min-w-0\"\n      >\n        {flatNodes.map((flatNode) => {\n          const { node, appId, section } = flatNode;\n          const isLeaf = node.isSelectable;\n          const isSelected = isLeaf && selectedEntryId === node.id;\n          const isGroupActive = activeGroup?.node.id === node.id;\n\n          const setPillRef = (el: HTMLButtonElement | null) => {\n            if (el) {\n              groupPillRefs.current.set(node.id, el);\n            } else {\n              groupPillRefs.current.delete(node.id);\n            }\n          };\n\n          if (isLeaf) {\n            return (\n              <button\n                key={node.id}\n                data-entry-id={node.id}\n                type=\"button\"\n                onClick={() => {\n                  if (node.entry) {\n                    onSelect({ entry: node.entry, appId, section });\n                  }\n                }}\n                className={cn(\n                  'flex items-center gap-[6px] shrink-0 max-w-[240px]',\n                  'px-[10px] py-[7px] rounded-[4px]',\n                  transCls,\n                  isSelected\n                    ? 'border border-[#F0F6FF] bg-[#F0F6FF] text-[#0265FF]'\n                    : 'border border-[#E0E0E0] text-[#030303] hover:bg-[#F0F6FF]',\n                )}\n              >\n                <i\n                  className={\n                    node.entry\n                      ? getEntryIconClass(node.entry)\n                      : 'node-icon icon-bsy-form icon-new-bsy-form-25'\n                  }\n                  style={{ fontSize: 16, lineHeight: 1 }}\n                />\n                <span className=\"text-[14px] leading-[normal] truncate\">\n                  {node.name}\n                </span>\n              </button>\n            );\n          }\n\n          // Group pill (has descendants)\n          return (\n            <button\n              key={node.id}\n              data-entry-id={node.id}\n              ref={setPillRef}\n              type=\"button\"\n              onClick={(e) => openGroupPopover(flatNode, e)}\n              className={cn(\n                'flex items-center gap-[10px] shrink-0 max-w-[240px]',\n                'px-[10px] py-[7px] rounded-[4px]',\n                transCls,\n                isGroupActive\n                  ? 'border border-[#0265FF] text-[#030303]'\n                  : 'border border-[#E0E0E0] text-[#030303] hover:bg-[#F0F6FF]',\n              )}\n            >\n              <span className=\"flex items-center gap-[6px] min-w-0 flex-1\">\n                <i\n                  className=\"icon-bsy-folder-close\"\n                  style={{ fontSize: 16, lineHeight: 1 }}\n                />\n                <span className=\"text-[14px] leading-[normal] truncate\">\n                  {node.name}\n                </span>\n              </span>\n              <span\n                className={cn(\n                  'shrink-0 flex items-center justify-center w-[16px] h-[16px] text-[#666666]',\n                  transCls,\n                  isGroupActive && 'rotate-90',\n                )}\n              >\n                <ChevronRightIcon size={16} />\n              </span>\n            </button>\n          );\n        })}\n      </div>\n\n      {/* Right arrow: always in DOM, width transition */}\n      <span\n        className={cn(\n          transCls,\n          'inline-flex overflow-hidden',\n          canScrollRight ? 'w-[26px] opacity-100 ml-2.5' : 'w-0 opacity-0 ml-0',\n        )}\n      >\n        <IconBtn\n          rounded\n          icon={\n            <span className=\"rotate-180 inline-flex\">\n              <LeftArrowIcon />\n            </span>\n          }\n          onClick={() => scroll('right')}\n        />\n      </span>\n\n      {/* Group subtree popover */}\n      {activeGroup &&\n        (() => {\n          const content = (\n            <div\n              ref={popoverRef}\n              style={popoverStyle}\n              className={cn(\n                'bg-white rounded-[10px] shadow-[0px_0px_10px_0px_rgba(0,0,0,0.04)] p-[4px]',\n                'flex flex-col gap-[4px]',\n                transCls,\n              )}\n            >\n              <SearchInput\n                value={groupSearchQuery}\n                onChange={setGroupSearchQuery}\n              />\n              <div className=\"flex flex-col gap-[4px] max-h-[300px] overflow-y-auto\">\n                {filteredGroupTree.length > 0 ? (\n                  filteredGroupTree.map((child) => (\n                    <TreeItemNode\n                      key={child.id}\n                      item={child}\n                      selectedEntryId={selectedEntryId}\n                      appId={activeGroup.appId}\n                      section={activeGroup.section}\n                      onSelect={handleGroupPopoverSelect}\n                    />\n                  ))\n                ) : hasGroupSearch ? (\n                  <div className=\"text-[12px] text-[#999999] py-[8px] text-center\">\n                    无匹配结果\n                  </div>\n                ) : (\n                  <div className=\"text-[12px] text-[#999999] py-[8px] text-center\">\n                    暂无表单\n                  </div>\n                )}\n              </div>\n            </div>\n          );\n\n          return createPortal(content, groupPortalContainer || document.body);\n        })()}\n    </div>\n  );\n}\n","import { useState, useEffect } from 'react';\nimport { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { SolidArrowDownIcon } from '../bs-icons';\n\nconst ChevronRightIcon = ({ size }: { size?: number }) => (\n  <SolidArrowDownIcon className=\"-rotate-90\" size={size} />\n);\n\nexport function AppGroupFolder({\n  label,\n  searchQuery,\n  children,\n}: {\n  label: string;\n  searchQuery: string;\n  children: React.ReactNode;\n}) {\n  const [expanded, setExpanded] = useState(true);\n  const hasSearch = searchQuery.trim().length > 0;\n\n  useEffect(() => {\n    if (hasSearch) {\n      setExpanded(true);\n    }\n  }, [hasSearch]);\n\n  return (\n    <div>\n      <div\n        className={cn(\n          'flex items-center gap-[6px] h-[32px] cursor-pointer rounded-[4px] pr-[10px]',\n          'hover:bg-[#EFF0F6]',\n          'border-b border-[#E0E0E0]',\n          'rounded-b-none',\n          transCls,\n        )}\n        style={{ paddingLeft: 10, paddingTop: 9 }}\n        onClick={() => setExpanded(!expanded)}\n      >\n        <span\n          className={cn(\n            'shrink-0 flex items-center justify-center w-[16px] h-[16px]',\n            transCls,\n            expanded && 'rotate-90',\n          )}\n        >\n          <ChevronRightIcon size={16} />\n        </span>\n        <i\n          className=\"icon-bsy-folder-close\"\n          style={{ fontSize: 16, lineHeight: 1 }}\n        />\n        <span className=\"text-[12px] text-[#666666]\">{label}</span>\n      </div>\n      {expanded && (\n        <div className=\"flex flex-col\">{children}</div>\n      )}\n    </div>\n  );\n}\n","import { useState, useEffect, useMemo } from 'react';\nimport { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { buildEntryTreeFromAliasMap } from './build-tree';\nimport { TreeItemNode } from './tree-item-node';\nimport type { IAppDetail } from '@baishuyun/types';\nimport type { BsEntrySelectChangeResult } from './types';\nimport { SolidArrowDownIcon } from '../bs-icons';\n\nconst ChevronRightIcon = ({ size }: { size?: number }) => (\n  <SolidArrowDownIcon className=\"-rotate-90\" size={size} />\n);\n\nexport function OtherAppSection({\n  appId,\n  appDetail,\n  searchQuery,\n  selectedEntryId,\n  section,\n  onSelect,\n}: {\n  appId: string;\n  appDetail: IAppDetail;\n  searchQuery: string;\n  selectedEntryId: string | undefined;\n  section: 'current' | 'other';\n  onSelect: (result: BsEntrySelectChangeResult) => void;\n}) {\n  const [expanded, setExpanded] = useState(true);\n  const hasSearch = searchQuery.trim().length > 0;\n\n  useEffect(() => {\n    if (hasSearch) {\n      setExpanded(true);\n    }\n  }, [hasSearch]);\n\n  const tree = useMemo(() => {\n    return buildEntryTreeFromAliasMap(appDetail, searchQuery);\n  }, [appDetail, searchQuery, appDetail?.entryList?.length]);\n\n  return (\n    <div>\n      <div\n        className={cn(\n          'flex items-center gap-[6px] h-[32px] cursor-pointer rounded-[4px] pr-[10px]',\n          'hover:bg-[#EFF0F6]',\n          transCls,\n        )}\n        style={{ paddingLeft: 15 }}\n        onClick={() => setExpanded(!expanded)}\n      >\n        <span\n          className={cn(\n            'shrink-0 flex items-center justify-center w-[18px] h-[18px]',\n            transCls,\n            expanded && 'rotate-90',\n          )}\n        >\n          <ChevronRightIcon size={18} />\n        </span>\n        <i\n          className=\"node-icon icon-bsy-form icon-new-bsy-form-0\"\n          style={{ fontSize: 16, lineHeight: 1 }}\n        />\n        <span className=\"text-[14px] text-[#030303] truncate\">\n          {appDetail.name}\n        </span>\n      </div>\n      {expanded && tree.length > 0 && (\n        <div className=\"flex flex-col\" style={{ paddingLeft: 15 }}>\n          {tree.map((node) => (\n            <TreeItemNode\n              key={node.id}\n              item={node}\n              selectedEntryId={selectedEntryId}\n              appId={appId}\n              section={section}\n              onSelect={onSelect}\n            />\n          ))}\n        </div>\n      )}\n      {expanded && tree.length === 0 && hasSearch && (\n        <div className=\"text-[12px] text-[#999999] py-[8px] pl-[32px]\">\n          无匹配结果\n        </div>\n      )}\n      {expanded && tree.length === 0 && !hasSearch && (\n        <div className=\"text-[12px] text-[#999999] py-[8px] pl-[32px]\">\n          暂无表单\n        </div>\n      )}\n    </div>\n  );\n}\n","import { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { SearchInput } from '../agent-helper/search-input';\nimport { TreeItemNode } from './tree-item-node';\nimport { AppGroupFolder } from './app-group-folder';\nimport { OtherAppSection } from './other-app-section';\nimport type { IAppDetail } from '@baishuyun/types';\nimport type { EntryTreeItem, BsEntrySelectChangeResult } from './types';\n\nexport function EntryPopover({\n  searchQuery,\n  onSearchChange,\n  currentAppTree,\n  currentAppId,\n  otherAppIds,\n  appDetails,\n  selectedEntryId,\n  hasCurrentApp,\n  hasOtherApps,\n  hasAnyContent,\n  hasSearch,\n  showCurrentAppEntriesOnly = false,\n  onSelect,\n}: {\n  searchQuery: string;\n  onSearchChange: (v: string) => void;\n  currentAppTree: EntryTreeItem[];\n  currentAppId: string | undefined;\n  otherAppIds: string[];\n  appDetails: Record<string, IAppDetail>;\n  selectedEntryId: string | undefined;\n  hasCurrentApp: boolean;\n  hasOtherApps: boolean;\n  hasAnyContent: boolean;\n  hasSearch: boolean;\n  showCurrentAppEntriesOnly?: boolean;\n  onSelect: (result: BsEntrySelectChangeResult) => void;\n}) {\n  return (\n    <div\n      className={cn(\n        'bg-white rounded-[10px] shadow-[0px_0px_10px_0px_rgba(0,0,0,0.04)] p-[4px]',\n        'flex flex-col gap-[4px]',\n        transCls,\n      )}\n    >\n      <SearchInput value={searchQuery} onChange={onSearchChange} />\n\n      <div className=\"flex flex-col gap-0 max-h-[400px] overflow-y-auto\">\n        {hasCurrentApp && (\n          <AppGroupFolder label=\"当前应用表单\" searchQuery={searchQuery}>\n            {currentAppTree.length > 0 ? (\n              currentAppTree.map((node) => (\n                <TreeItemNode\n                  key={node.id}\n                  item={node}\n                  selectedEntryId={selectedEntryId}\n                  appId={currentAppId!}\n                  section=\"current\"\n                  onSelect={onSelect}\n                />\n              ))\n            ) : hasSearch ? (\n              <div className=\"text-[12px] text-[#999999] py-[8px] pl-[22px]\">\n                无匹配结果\n              </div>\n            ) : (\n              <div className=\"text-[12px] text-[#999999] py-[8px] pl-[22px]\">\n                暂无表单\n              </div>\n            )}\n          </AppGroupFolder>\n        )}\n\n        {hasOtherApps && !showCurrentAppEntriesOnly && (\n          <AppGroupFolder label=\"其他应用表单\" searchQuery={searchQuery}>\n            {otherAppIds.map((appId) => (\n              <OtherAppSection\n                key={appId}\n                appId={appId}\n                appDetail={appDetails[appId]}\n                searchQuery={searchQuery}\n                selectedEntryId={selectedEntryId}\n                section=\"other\"\n                onSelect={onSelect}\n              />\n            ))}\n          </AppGroupFolder>\n        )}\n\n        {!hasAnyContent && (\n          <div className=\"text-[14px] text-[#999999] py-[12px] text-center\">\n            暂无应用\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n","import {\n  forwardRef,\n  useState,\n  useRef,\n  useEffect,\n  useMemo,\n  useCallback,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../lib/utils';\nimport { transCls } from '../../const/ui';\nimport { ScrollSlider } from './scroll-slider';\nimport { EntryPopover } from './entry-popover';\nimport { buildEntryTreeFromAliasMap } from './build-tree';\nimport type { BsEntrySelectProps, BsEntrySelectChangeResult } from './types';\nimport { MenuLinesIcon } from '../bs-icons';\n\nexport type { BsEntrySelectProps, BsEntrySelectChangeResult };\n\nexport const BsEntrySelect = forwardRef<HTMLDivElement, BsEntrySelectProps>(\n  (\n    {\n      appDetails,\n      currentAppId,\n      value: controlledValue,\n      defaultValue,\n      onChange,\n      placeholder: _placeholder = '请选择',\n      disabled = false,\n      className,\n      showSlider = true,\n      showCurrentAppEntriesOnly = false,\n    },\n    ref,\n  ) => {\n    const [isOpen, setIsOpen] = useState(false);\n    const [searchQuery, setSearchQuery] = useState('');\n    const [internalValue, setInternalValue] = useState<string | undefined>(\n      defaultValue,\n    );\n    const triggerRef = useRef<HTMLDivElement>(null);\n    const popoverRef = useRef<HTMLDivElement>(null);\n    const [popoverStyle, setPopoverStyle] = useState<React.CSSProperties>({});\n    const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n    const [sliderHasOverflow, setSliderHasOverflow] = useState(false);\n\n    const handleOverflowChange = useCallback((hasOverflow: boolean) => {\n      setSliderHasOverflow(hasOverflow);\n    }, []);\n\n    const selectedEntryId = controlledValue ?? internalValue;\n\n    const otherAppIds = useMemo(() => {\n      return Object.keys(appDetails).filter((id) => id !== currentAppId);\n    }, [appDetails, currentAppId]);\n\n    const updatePopoverPosition = useCallback(() => {\n      if (!triggerRef.current) return;\n      const rect = triggerRef.current.getBoundingClientRect();\n      setPopoverStyle({\n        position: 'fixed',\n        top: rect.bottom + 4,\n        left: rect.left,\n        minWidth: Math.max(rect.width, 240),\n        zIndex: 9999,\n      });\n    }, []);\n\n    const setTriggerRef = useCallback((node: HTMLDivElement | null) => {\n      (triggerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n      if (!node) {\n        setPortalContainer(null);\n        return;\n      }\n      const rootNode = node.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        const existing = rootNode.querySelector<HTMLElement>(\n          '[data-bs-entry-select-portal]',\n        );\n        if (existing) {\n          setPortalContainer(existing);\n          return;\n        }\n        const container = document.createElement('div');\n        container.setAttribute('data-bs-entry-select-portal', 'true');\n        rootNode.appendChild(container);\n        setPortalContainer(container);\n        return;\n      }\n      setPortalContainer(null);\n    }, []);\n\n    const handleClose = useCallback(() => {\n      setIsOpen(false);\n      setSearchQuery('');\n      if (triggerRef.current) {\n        triggerRef.current.style.backgroundColor = '';\n      }\n    }, []);\n\n    const handleToggle = useCallback(() => {\n      if (disabled) return;\n      if (isOpen) {\n        handleClose();\n      } else {\n        setIsOpen(true);\n        updatePopoverPosition();\n      }\n    }, [disabled, isOpen, handleClose, updatePopoverPosition]);\n\n    const handleSelect = useCallback(\n      (result: BsEntrySelectChangeResult) => {\n        setInternalValue(result.entry.entryId);\n        onChange?.(result);\n        handleClose();\n      },\n      [onChange, handleClose],\n    );\n\n    // Event listeners for popover (click outside, scroll, resize)\n    useEffect(() => {\n      if (!isOpen) return;\n\n      const handleClickOutside = (e: MouseEvent) => {\n        const path = e.composedPath();\n        if (\n          (popoverRef.current && path.includes(popoverRef.current)) ||\n          (triggerRef.current && path.includes(triggerRef.current))\n        ) {\n          return;\n        }\n        handleClose();\n      };\n\n      const handleScroll = () => {\n        updatePopoverPosition();\n      };\n\n      const handleResize = () => {\n        updatePopoverPosition();\n      };\n\n      document.addEventListener('mousedown', handleClickOutside);\n      window.addEventListener('scroll', handleScroll, true);\n      window.addEventListener('resize', handleResize);\n\n      return () => {\n        document.removeEventListener('mousedown', handleClickOutside);\n        window.removeEventListener('scroll', handleScroll, true);\n        window.removeEventListener('resize', handleResize);\n      };\n    }, [isOpen, handleClose, updatePopoverPosition]);\n\n    // Keyboard escape listener\n    useEffect(() => {\n      if (!isOpen) return;\n\n      const handleEscape = (e: KeyboardEvent) => {\n        if (e.key === 'Escape') {\n          handleClose();\n        }\n      };\n\n      document.addEventListener('keydown', handleEscape);\n      return () => document.removeEventListener('keydown', handleEscape);\n    }, [isOpen, handleClose]);\n\n    const hasCurrentApp = Boolean(currentAppId && appDetails[currentAppId]);\n    const hasOtherApps = otherAppIds.length > 0;\n    const hasAnyContent = hasCurrentApp || hasOtherApps;\n\n    const currentAppTree = useMemo(() => {\n      if (!currentAppId || !appDetails[currentAppId]) return [];\n      return buildEntryTreeFromAliasMap(appDetails[currentAppId], searchQuery);\n    }, [\n      appDetails,\n      currentAppId,\n      searchQuery,\n      currentAppId != null ? (appDetails[currentAppId]?.entryList?.length ?? 0) : 0,\n    ]);\n\n    const hasSearch = searchQuery.trim().length > 0;\n\n    return (\n      <div ref={ref} className={cn('relative inline-flex items-center gap-[10px] min-w-0', className)}>\n        {/* Scroll slider — greedy width */}\n        {showSlider && (\n          <ScrollSlider\n            appDetails={appDetails}\n            currentAppId={currentAppId}\n            selectedEntryId={selectedEntryId}\n            onSelect={handleSelect}\n            onOverflowChange={handleOverflowChange}\n            showCurrentAppEntriesOnly={showCurrentAppEntriesOnly}\n          />\n        )}\n\n        {/* Trigger — hidden when slider shows all nodes without overflow */}\n        {(!showSlider || sliderHasOverflow) && (\n          <div\n            ref={setTriggerRef}\n            className={cn(\n              'flex items-center gap-[10px] px-[10px] py-[7px] rounded-[4px] cursor-pointer select-none shrink-0',\n              transCls,\n              isOpen && 'bg-[#EFF0F6]',\n              disabled && 'opacity-50 cursor-not-allowed',\n            )}\n            onClick={handleToggle}\n          onMouseEnter={(e) => {\n            if (!isOpen && !disabled) {\n              (e.currentTarget as HTMLElement).style.backgroundColor =\n                '#EFF0F6';\n            }\n          }}\n          onMouseLeave={(e) => {\n            if (!isOpen) {\n              (e.currentTarget as HTMLElement).style.backgroundColor = '';\n            }\n          }}\n        >\n          <span className=\"flex items-center gap-[10px] min-w-0 flex-1\">\n            <MenuLinesIcon />\n            <span>全部</span>\n            {/* {selectedResult ? (\n              <>\n                <i\n                  className={getEntryIconClass(selectedResult.entry)}\n                  style={{ fontSize: 16, lineHeight: 1 }}\n                />\n                <span className=\"text-[14px] text-[#030303] truncate\">\n                  {selectedResult.entry.name}\n                </span>\n              </>\n            ) : (\n              <span className=\"text-[14px] text-[#999999] truncate\">\n                {placeholder}\n              </span>\n            )} */}\n          </span>\n          {/* <span\n            className={cn(\n              'shrink-0 flex items-center justify-center w-[16px] h-[16px] text-[#666666]',\n              transCls,\n              isOpen && 'rotate-180',\n            )}\n          >\n            <ChevronDownIcon size={16} />\n          </span> */}\n        </div>\n        )}\n\n        {/* Popover */}\n        {isOpen &&\n          createPortal(\n            <div ref={popoverRef} style={popoverStyle}>\n              <EntryPopover\n                searchQuery={searchQuery}\n                onSearchChange={setSearchQuery}\n                currentAppTree={currentAppTree}\n                currentAppId={currentAppId}\n                otherAppIds={otherAppIds}\n                appDetails={appDetails}\n                selectedEntryId={selectedEntryId}\n                hasCurrentApp={hasCurrentApp}\n                hasOtherApps={hasOtherApps}\n                hasAnyContent={hasAnyContent}\n                hasSearch={hasSearch}\n                showCurrentAppEntriesOnly={showCurrentAppEntriesOnly}\n                onSelect={handleSelect}\n              />\n            </div>,\n            portalContainer || document.body,\n          )}\n      </div>\n    );\n  },\n);\n\nBsEntrySelect.displayName = 'BsEntrySelect';\n","import React from 'react';\nimport { cn } from '../lib/utils';\n\nexport interface BorderAnimationProps {\n  children?: React.ReactNode;\n  className?: string;\n  /** Duration of one full animation cycle in seconds @default 2 */\n  duration?: number;\n  /** Border radius in pixels @default 4 */\n  borderRadius?: number;\n  /** Width of the animated beam in pixels @default 30 */\n  beamWidth?: number;\n  /** Height of the animated beam in pixels @default 4 */\n  beamHeight?: number;\n  /** Gradient for the animated beam */\n  gradient?: string;\n  height?: string | number;\n  /** Border width in pixels @default 1.5 */\n  borderWidth?: number;\n  /** Default border color @default '#E5E5E5' */\n  borderColor?: string;\n}\n\nconst defaultGradient = `linear-gradient(90deg, \n  rgba(132, 180, 255, 0) 0%, \n  rgba(132, 180, 255, 0.5) 10%, \n  rgba(132, 180, 255, 1) 25%, \n  rgb(2, 101, 255) 50%, \n  rgba(177, 250, 255, 1) 75%, \n  rgba(177, 250, 255, 0.5) 90%, \n  rgba(177, 250, 255, 0) 100%\n)`;\n\nexport const BorderAnimation: React.FC<BorderAnimationProps> = ({\n  children,\n  className,\n  duration = 2,\n  borderRadius = 4,\n  beamWidth = 170,\n  beamHeight = 4,\n//   gradient = 'linear-gradient(180deg, #84B4FF 0%, #0265FF 50%, #B1FAFF 100%)',\n//   gradient = 'linear-gradient(90deg, rgb(132, 180, 255) 0%, rgb(2, 101, 255) 50%, rgb(177, 250, 255) 100%)',\n  gradient = defaultGradient,\n  borderWidth = 1,\n  height,\n  borderColor = 'transparent',\n}) => {\n    const pseudoCls = \"gradient-border\"\n  return (\n    <div\n      className={cn('relative w-full overflow-hidden', className, pseudoCls)}\n      style={{\n        borderRadius: `${borderRadius}px`,\n        border: `${borderWidth}px solid ${borderColor}`,\n        ...(height ? { height } : {}),\n      }}\n    >\n      {children}\n      {/* Animated border overlay */}\n      <div\n        style={{\n          position: 'absolute',\n        //   inset: `${-borderWidth}px`,\n          inset: 0,\n          pointerEvents: 'none',\n          border: `${borderWidth}px solid transparent`,\n          borderRadius: 'inherit',\n        //   contain: 'layout style paint',\n          maskImage:\n            'linear-gradient(transparent, transparent), linear-gradient(white, white)',\n          WebkitMaskImage:\n            'linear-gradient(transparent, transparent), linear-gradient(white, white)',\n          maskOrigin: 'border-box, border-box',\n          WebkitMaskOrigin: 'border-box, border-box',\n          maskClip: 'padding-box, border-box',\n          WebkitMaskClip: 'padding-box, border-box',\n          maskComposite: 'intersect',\n          WebkitMaskComposite: 'source-in',\n        }}\n      >\n        {/* Traveling beam */}\n        <div\n          style={{\n            position: 'absolute',\n            aspectRatio: '1 / 1',\n            width: `${beamWidth}px`,\n            height: `${beamHeight}px`,\n            background: gradient,\n            offsetPath: `rect(0px auto auto 0px round ${borderRadius}px)`,\n            animation: `bs-border-travel ${duration}s linear infinite`,\n            willChange: 'offset-distance',\n            transform: 'translateZ(0)',\n            backfaceVisibility: 'hidden',\n          }}\n        />\n      </div>\n      <style>{`\n        @keyframes bs-border-travel {\n          0% { offset-distance: 0%; }\n          100% { offset-distance: 100%; }\n        }\n      `}</style>\n    </div>\n  );\n};\n\nexport default BorderAnimation;\n","export const BorderColorAnimation = ({\n  children,\n  width,\n  height,\n  padding,\n  borderWidth = 2,\n  borderRadius = 12,\n  bgInset,\n  style,\n}: {\n  children?: React.ReactNode;\n  width?: string | number;\n  height?: string | number;\n  borderWidth?: number;\n  padding?: number;\n  borderRadius?: number;\n  bgInset?: number;\n  style?: React.CSSProperties;\n}) => {\n  const isNumSize = typeof width === 'number' && typeof height === 'number';\n  const safeSize = isNumSize ? Math.max(width ?? 0, height ?? 0) : 0;\n  const safeInset = isNumSize ? -1 * safeSize * 1.5 : '-150%'; // ensure the background covers the whole area during rotation\n  return (\n    <div\n      style={{\n        position: 'relative',\n        width: width ?? '100%',\n        height: height ?? '100%',\n        borderRadius,\n        overflow: 'hidden',\n      }}\n    >\n      <div\n        style={{\n          position: 'absolute',\n          inset: bgInset !== undefined ? -bgInset : safeInset,\n          background: 'conic-gradient(from 0deg, #0265FF, #00D4FF, #0265FF, #00D4FF, #0265FF)',\n          animation: 'borderRotate 4s linear infinite',\n        }}\n      />\n      <div\n        style={{\n          ...style,\n          position: 'absolute',\n          inset: borderWidth,\n          borderRadius: borderRadius - 2,\n          background: 'white',\n          zIndex: 1,\n          padding: padding || 0,\n        }}\n      >\n        {children}\n      </div>\n      <style>{`\n        @keyframes borderRotate {\n          0% {\n            transform: rotate(0deg);\n          }\n          100% {\n            transform: rotate(360deg);\n          }\n        }\n      `}</style>\n    </div>\n  );\n};\n","import { BotImgUrl } from \"../const/ui\";\n\nexport const BotIcon = ({\n  size = 30,\n  className,\n}: {\n  size?: number;\n  className?: string;\n}) => {\n  return (\n    <div\n      className={className}\n      style={{\n        backgroundImage: `${BotImgUrl}`,\n        backgroundRepeat: \"no-repeat\",\n        backgroundSize: \"cover\",\n        width: size,\n        height: size,\n        aspectRatio: \"1/1\",\n      }}\n    />\n  );\n};\n","import { BotIcon } from './bot-icon';\n\nexport const BotAvatarAndName = ({\n  name,\n  icon,\n  variant = 'default',\n}: {\n  name?: string;\n  icon?: React.ReactNode | string;\n  variant?: 'default' | 'active';\n}) => {\n  const size = variant === 'default' ? 20 : 24;\n\n  if (!name) {\n    return null;\n  }\n\n  const variantStyles = {\n    default: 'text-[#999] text-[14px] font-[400]',\n    active: 'text-[#0265FF] text-[14px] font-[700]',\n  };\n\n  const isUrl = typeof icon === 'string' && /^https?:\\/\\//.test(icon);\n  const iconJsx = isUrl ? (\n    <img src={icon as string} alt=\"\" className=\"rounded-full\" width={size} height={size} />\n  ) : (\n    icon || <BotIcon size={size} />\n  );\n\n  return (\n    <div className=\"flex items-center gap-1.5\">\n      {iconJsx}\n      <div className={variantStyles[variant]}>{name}</div>\n    </div>\n  );\n};\n","import { cn } from '../lib/utils';\nimport { ReactNode } from 'react';\n\nexport interface CardFieldProps {\n  label: string;\n  children?: ReactNode;\n  className?: string;\n}\n\nexport const CardField = ({ label, children, className }: CardFieldProps) => {\n  return (\n    <div className={cn('flex gap-2 items-start w-full', className)}>\n      <div className=\"w-[100px] shrink-0 text-[#666] text-sm leading-normal truncate\">{label}</div>\n      <div className=\"flex-1 min-w-0 text-sm leading-normal whitespace-pre-wrap break-words\">\n        {children ?? <span className=\"text-[#666]\">无</span>}\n      </div>\n    </div>\n  );\n};\n\nexport const CardFieldsWrapper = ({ children }: { children: ReactNode }) => {\n  return <div className=\"flex flex-col gap-[10px] w-full\">{children}</div>;\n};\n","import { transCls } from '../const/ui';\nimport { cn } from '../lib/utils';\nimport { ReactNode } from 'react';\n\nexport interface CardProps {\n  title: string;\n  desc?: string;\n  index?: number;\n  icon?: ReactNode;\n  iconCode?: string;\n  onClick?: (title: string, iconCode?: string) => void;\n}\n\nexport const Card = ({ title, desc, index, icon, onClick, iconCode }: CardProps) => {\n  return (\n    <div\n      className={cn(\n        'bs-card group flex flex-col cursor-pointer p-2.5 gap-2.5 rounded-lg max-w-[350px] border border-[#e0e0e0] bg-white',\n        {\n          transCls,\n        }\n      )}\n      onClick={() => {\n        onClick?.(title, iconCode);\n      }}\n    >\n      <div className=\"px-2.5 flex items-center gap-1.5 rounded-[4px] h-[34px]  bg-white\">\n        {index === undefined ? null : <div>{index}</div>}\n        {icon === undefined ? null : <div className=\"text-[#0265FF]\">{icon}</div>}\n        {/* make title text ellipsis */}\n        <div className=\"truncate !text-[#12111] group-hover:text-[#0265FF]\">{title}</div>\n      </div>\n      <div className=\"text-[#666] leading-5 text-[12px]\">{desc}</div>\n    </div>\n  );\n};\n","import { ReactNode } from 'react';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\n\nexport interface IconCardProps {\n  icon: ReactNode;\n  iconBgColor: string;\n  title: string;\n  description: string;\n  height?: number;\n  selected?: boolean;\n  badge?: string;\n  onClick: () => void;\n}\n\nexport const IconCard = ({\n  icon,\n  iconBgColor,\n  title,\n  description,\n  height,\n  selected,\n  badge,\n  onClick,\n}: IconCardProps) => {\n  return (\n    <div\n      className={cn(\n        'flex flex-col p-[10px] rounded-[4px] cursor-pointer',\n        'border',\n        {\n          'bg-[#EFF0F6] border-[#EFF0F6]': selected,\n          'bg-white border-[#E0E0E0]': !selected,\n        },\n        transCls\n      )}\n      style={{ height }}\n      onClick={onClick}\n    >\n      <div className=\"flex items-start gap-[12px] w-full\">\n        <div\n          className=\"shrink-0 size-[42px] rounded-[23px] flex items-center justify-center p-[7px]\"\n          style={{ backgroundColor: iconBgColor }}\n        >\n          <div className=\"size-[28px] flex items-center justify-center\">\n            {icon}\n          </div>\n        </div>\n        <div className=\"flex flex-col gap-[6px] min-w-0 flex-1\">\n          <div className=\"flex items-center justify-between w-full\">\n            <p className=\"text-[14px] font-bold text-[#030303] truncate\">\n              {title}\n            </p>\n            {badge && (\n              <span className=\"shrink-0 bg-[#4ACCC1] text-white text-[12px] leading-[normal] px-[6px] h-[20px] rounded-[4px] flex items-center justify-center ml-[8px]\">\n                {badge}\n              </span>\n            )}\n          </div>\n          <p className=\"text-[12px] text-[#999] w-full\">\n            {description}\n          </p>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { cn } from '../../../lib/utils';\nimport { IAgentInfo } from '@baishuyun/types';\n\nexport interface AgentTagProps {\n  agent: IAgentInfo;\n  className?: string;\n}\n\nexport const AgentTag = ({ agent, className }: AgentTagProps) => {\n  return (\n    <div\n      className={cn(\n        'bg-[#e5e6eb] content-stretch flex gap-[4px] items-center px-[6px] rounded-[100px] w-fit h-[26px]',\n        className,\n      )}\n    >\n      <div className=\"relative rounded-[3.5px] shrink-0 size-[14px]\">\n        <img\n          alt=\"\"\n          className=\"absolute inset-0 max-w-none object-cover pointer-events-none rounded-[3.5px] size-full\"\n          src={agent.icon}\n        />\n      </div>\n      <p className=\"leading-[normal] shrink-0 text-[#030303] text-[12px] whitespace-nowrap\">\n        {agent.name}\n      </p>\n    </div>\n  );\n};\n","import type { triggerType } from '@baishuyun/types';\nimport { CommonTypeIcon, GoToFormIcon, FlowNodeTypeIcon, ScheduleTypeIcon, FormFieldIcon, FormTypeIcon } from '../../bs-icons';\nimport { IconCard, type IconCardProps } from '../../icon-card';\n\nexport type TriggerCardConfig = Pick<\n  IconCardProps,\n  'title' | 'description' | 'icon' | 'iconBgColor' | 'badge'\n> & {\n  triggerType: triggerType;\n  minIcon?: React.ReactNode;\n};\n\nexport const TriggerConfigList: Array<TriggerCardConfig> = [\n  {\n    triggerType: 'universal',\n    title: '通用型',\n    description: '开箱即用，无需触发即可直接使用',\n    icon: <CommonTypeIcon fill=\"#4ACCC1\" />,\n    minIcon: <CommonTypeIcon fill=\"#4ACCC1\" size={12} />,\n    iconBgColor: 'rgba(74, 204, 193, 0.1)',\n    badge: '通用',\n  },\n  {\n    triggerType: 'form_field',\n    title: '表单字段触发',\n    description: '表单中数据发生变化时，触发自动化操作',\n    icon: <FormFieldIcon />,\n    minIcon: <FormFieldIcon size={12} />,\n    iconBgColor: 'rgba(77, 96, 159, 0.1)',\n  },\n  {\n    triggerType: 'form_action',\n    title: '表单动作触发',\n    description: '表单中数据发生变化时，触发自动化操作',\n    icon: (\n      <div className=\"text-[#0265FF]\">\n        <GoToFormIcon />\n      </div>\n    ),\n    minIcon: <FormTypeIcon size={12} />,\n    iconBgColor: 'rgba(2, 101, 255, 0.1)',\n  },\n  {\n    triggerType: 'form_flow_node',\n    title: '表单流程节点触发',\n    description: '表单中数据发生变化时，触发自动化操作',\n    icon: (\n      <div className=\"text-[#FF9921]\">\n        <FlowNodeTypeIcon />\n      </div>\n    ),\n    minIcon: <FlowNodeTypeIcon size={12} />,\n    iconBgColor: 'rgba(255, 153, 33, 0.1)',\n  },\n  {\n    triggerType: 'scheduler',\n    title: '计划任务触发',\n    description: '表单中数据发生变化时，触发自动化操作',\n    icon: (\n      <div className=\"text-[#F06648]\">\n        <ScheduleTypeIcon />\n      </div>\n    ),\n    minIcon: <ScheduleTypeIcon size={12} />,\n    iconBgColor: 'rgba(240, 102, 72, 0.1)',\n  },\n];\n\nexport interface ITriggerSelectProps {\n  value?: triggerType;\n  onChange?: (value: triggerType) => void;\n  configList?: TriggerCardConfig[];\n}\n\nexport const TriggerTypeIcon = ({\n  triggerType,\n}: {\n  triggerType: triggerType;\n  size?: number;\n}) => {\n  const config = TriggerConfigList.find((c) => c.triggerType === triggerType);\n  if (!config) {\n    return null;\n  }\n\n  const {minIcon, iconBgColor } = config;\n\n  return (\n    <div\n      className={`shrink-0 rounded-full flex items-center justify-center p-[7px]`}\n      style={{ backgroundColor: iconBgColor, width: 18, height: 18 }}\n    >\n      <div className={`flex items-center justify-center`}>\n          {minIcon}\n      </div>\n    </div>\n  )\n}\n\nexport const TriggerSelect = ({\n  value,\n  onChange,\n  configList = TriggerConfigList,\n}: ITriggerSelectProps) => {\n  return (\n    <div className=\"grid grid-cols-3 gap-5\">\n      {configList.map((config) => (\n        <IconCard\n          key={config.triggerType}\n          icon={config.icon}\n          iconBgColor={config.iconBgColor}\n          title={config.title}\n          description={config.description}\n          badge={config.badge}\n          selected={value === config.triggerType}\n          onClick={() => onChange?.(config.triggerType)}\n        />\n      ))}\n    </div>\n  );\n};\n","\"use client\";\n\n// src/collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeCollapsible,\n      open: openProp,\n      defaultOpen,\n      disabled,\n      onOpenChange,\n      ...collapsibleProps\n    } = props;\n    const [open, setOpen] = useControllableState({\n      prop: openProp,\n      defaultProp: defaultOpen ?? false,\n      onChange: onOpenChange,\n      caller: COLLAPSIBLE_NAME\n    });\n    return /* @__PURE__ */ jsx(\n      CollapsibleProvider,\n      {\n        scope: __scopeCollapsible,\n        disabled,\n        contentId: useId(),\n        open,\n        onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            \"data-state\": getState(open),\n            \"data-disabled\": disabled ? \"\" : void 0,\n            ...collapsibleProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeCollapsible, ...triggerProps } = props;\n    const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-controls\": context.open ? context.contentId : void 0,\n        \"aria-expanded\": context.open || false,\n        \"data-state\": getState(context.open),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        disabled: context.disabled,\n        ...triggerProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { forceMount, ...contentProps } = props;\n    const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n  }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n  const { __scopeCollapsible, present, children, ...contentProps } = props;\n  const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n  const [isPresent, setIsPresent] = React.useState(present);\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const heightRef = React.useRef(0);\n  const height = heightRef.current;\n  const widthRef = React.useRef(0);\n  const width = widthRef.current;\n  const isOpen = context.open || isPresent;\n  const isMountAnimationPreventedRef = React.useRef(isOpen);\n  const originalStylesRef = React.useRef(void 0);\n  React.useEffect(() => {\n    const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n    return () => cancelAnimationFrame(rAF);\n  }, []);\n  useLayoutEffect(() => {\n    const node = ref.current;\n    if (node) {\n      originalStylesRef.current = originalStylesRef.current || {\n        transitionDuration: node.style.transitionDuration,\n        animationName: node.style.animationName\n      };\n      node.style.transitionDuration = \"0s\";\n      node.style.animationName = \"none\";\n      const rect = node.getBoundingClientRect();\n      heightRef.current = rect.height;\n      widthRef.current = rect.width;\n      if (!isMountAnimationPreventedRef.current) {\n        node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n        node.style.animationName = originalStylesRef.current.animationName;\n      }\n      setIsPresent(present);\n    }\n  }, [context.open, present]);\n  return /* @__PURE__ */ jsx(\n    Primitive.div,\n    {\n      \"data-state\": getState(context.open),\n      \"data-disabled\": context.disabled ? \"\" : void 0,\n      id: context.contentId,\n      hidden: !isOpen,\n      ...contentProps,\n      ref: composedRefs,\n      style: {\n        [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n        [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n        ...props.style\n      },\n      children: isOpen && children\n    }\n  );\n});\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n  Collapsible,\n  CollapsibleContent,\n  CollapsibleTrigger,\n  Content,\n  Root,\n  Trigger,\n  createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProviderImpl, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nfunction CheckboxProvider(props) {\n  const {\n    __scopeCheckbox,\n    checked: checkedProp,\n    children,\n    defaultChecked,\n    disabled,\n    form,\n    name,\n    onCheckedChange,\n    required,\n    value = \"on\",\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const [checked, setChecked] = useControllableState({\n    prop: checkedProp,\n    defaultProp: defaultChecked ?? false,\n    onChange: onCheckedChange,\n    caller: CHECKBOX_NAME\n  });\n  const [control, setControl] = React.useState(null);\n  const [bubbleInput, setBubbleInput] = React.useState(null);\n  const hasConsumerStoppedPropagationRef = React.useRef(false);\n  const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    true\n  );\n  const context = {\n    checked,\n    disabled,\n    setChecked,\n    control,\n    setControl,\n    name,\n    form,\n    value,\n    hasConsumerStoppedPropagationRef,\n    required,\n    defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n    isFormControl,\n    bubbleInput,\n    setBubbleInput\n  };\n  return /* @__PURE__ */ jsx(\n    CheckboxProviderImpl,\n    {\n      scope: __scopeCheckbox,\n      ...context,\n      children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children\n    }\n  );\n}\nvar TRIGGER_NAME = \"CheckboxTrigger\";\nvar CheckboxTrigger = React.forwardRef(\n  ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => {\n    const {\n      control,\n      value,\n      disabled,\n      checked,\n      required,\n      setControl,\n      setChecked,\n      hasConsumerStoppedPropagationRef,\n      isFormControl,\n      bubbleInput\n    } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n    const composedRefs = useComposedRefs(forwardedRef, setControl);\n    const initialCheckedStateRef = React.useRef(checked);\n    React.useEffect(() => {\n      const form = control?.form;\n      if (form) {\n        const reset = () => setChecked(initialCheckedStateRef.current);\n        form.addEventListener(\"reset\", reset);\n        return () => form.removeEventListener(\"reset\", reset);\n      }\n    }, [control, setChecked]);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"checkbox\",\n        \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n        \"aria-required\": required,\n        \"data-state\": getState(checked),\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        value,\n        ...checkboxProps,\n        ref: composedRefs,\n        onKeyDown: composeEventHandlers(onKeyDown, (event) => {\n          if (event.key === \"Enter\") event.preventDefault();\n        }),\n        onClick: composeEventHandlers(onClick, (event) => {\n          setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\n          if (bubbleInput && isFormControl) {\n            hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n            if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n          }\n        })\n      }\n    );\n  }\n);\nCheckboxTrigger.displayName = TRIGGER_NAME;\nvar Checkbox = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeCheckbox,\n      name,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      value,\n      onCheckedChange,\n      form,\n      ...checkboxProps\n    } = props;\n    return /* @__PURE__ */ jsx(\n      CheckboxProvider,\n      {\n        __scopeCheckbox,\n        checked,\n        defaultChecked,\n        disabled,\n        required,\n        onCheckedChange,\n        name,\n        form,\n        value,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n          /* @__PURE__ */ jsx(\n            CheckboxTrigger,\n            {\n              ...checkboxProps,\n              ref: forwardedRef,\n              __scopeCheckbox\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx(\n            CheckboxBubbleInput,\n            {\n              __scopeCheckbox\n            }\n          )\n        ] })\n      }\n    );\n  }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n    const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n    return /* @__PURE__ */ jsx(\n      Presence,\n      {\n        present: forceMount || isIndeterminate(context.checked) || context.checked === true,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            \"data-state\": getState(context.checked),\n            \"data-disabled\": context.disabled ? \"\" : void 0,\n            ...indicatorProps,\n            ref: forwardedRef,\n            style: { pointerEvents: \"none\", ...props.style }\n          }\n        )\n      }\n    );\n  }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"CheckboxBubbleInput\";\nvar CheckboxBubbleInput = React.forwardRef(\n  ({ __scopeCheckbox, ...props }, forwardedRef) => {\n    const {\n      control,\n      hasConsumerStoppedPropagationRef,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      name,\n      value,\n      form,\n      bubbleInput,\n      setBubbleInput\n    } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n    const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n    const prevChecked = usePrevious(checked);\n    const controlSize = useSize(control);\n    React.useEffect(() => {\n      const input = bubbleInput;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      const bubbles = !hasConsumerStoppedPropagationRef.current;\n      if (prevChecked !== checked && setChecked) {\n        const event = new Event(\"click\", { bubbles });\n        input.indeterminate = isIndeterminate(checked);\n        setChecked.call(input, isIndeterminate(checked) ? false : checked);\n        input.dispatchEvent(event);\n      }\n    }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n    const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"checkbox\",\n        \"aria-hidden\": true,\n        defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n        required,\n        disabled,\n        name,\n        value,\n        form,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0,\n          // We transform because the input is absolutely positioned but we have\n          // rendered it **after** the button. This pulls it back to sit on top\n          // of the button.\n          transform: \"translateX(-100%)\"\n        }\n      }\n    );\n  }\n);\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isIndeterminate(checked) {\n  return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n  return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nexport {\n  Checkbox,\n  CheckboxIndicator,\n  CheckboxIndicator as Indicator,\n  Checkbox as Root,\n  createCheckboxScope,\n  CheckboxBubbleInput as unstable_BubbleInput,\n  CheckboxBubbleInput as unstable_CheckboxBubbleInput,\n  CheckboxProvider as unstable_CheckboxProvider,\n  CheckboxTrigger as unstable_CheckboxTrigger,\n  CheckboxProvider as unstable_Provider,\n  CheckboxTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n  GROUP_NAME,\n  [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n  (props, forwardedRef) => {\n    return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n  }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n  const {\n    __scopeRovingFocusGroup,\n    orientation,\n    loop = false,\n    dir,\n    currentTabStopId: currentTabStopIdProp,\n    defaultCurrentTabStopId,\n    onCurrentTabStopIdChange,\n    onEntryFocus,\n    preventScrollOnEntryFocus = false,\n    ...groupProps\n  } = props;\n  const ref = React.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const direction = useDirection(dir);\n  const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n    prop: currentTabStopIdProp,\n    defaultProp: defaultCurrentTabStopId ?? null,\n    onChange: onCurrentTabStopIdChange,\n    caller: GROUP_NAME\n  });\n  const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n  const handleEntryFocus = useCallbackRef(onEntryFocus);\n  const getItems = useCollection(__scopeRovingFocusGroup);\n  const isClickFocusRef = React.useRef(false);\n  const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n      return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n    }\n  }, [handleEntryFocus]);\n  return /* @__PURE__ */ jsx(\n    RovingFocusProvider,\n    {\n      scope: __scopeRovingFocusGroup,\n      orientation,\n      dir: direction,\n      loop,\n      currentTabStopId,\n      onItemFocus: React.useCallback(\n        (tabStopId) => setCurrentTabStopId(tabStopId),\n        [setCurrentTabStopId]\n      ),\n      onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n      onFocusableItemAdd: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount + 1),\n        []\n      ),\n      onFocusableItemRemove: React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount - 1),\n        []\n      ),\n      children: /* @__PURE__ */ jsx(\n        Primitive.div,\n        {\n          tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n          \"data-orientation\": orientation,\n          ...groupProps,\n          ref: composedRefs,\n          style: { outline: \"none\", ...props.style },\n          onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n            isClickFocusRef.current = true;\n          }),\n          onFocus: composeEventHandlers(props.onFocus, (event) => {\n            const isKeyboardFocus = !isClickFocusRef.current;\n            if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n              const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n              event.currentTarget.dispatchEvent(entryFocusEvent);\n              if (!entryFocusEvent.defaultPrevented) {\n                const items = getItems().filter((item) => item.focusable);\n                const activeItem = items.find((item) => item.active);\n                const currentItem = items.find((item) => item.id === currentTabStopId);\n                const candidateItems = [activeItem, currentItem, ...items].filter(\n                  Boolean\n                );\n                const candidateNodes = candidateItems.map((item) => item.ref.current);\n                focusFirst(candidateNodes, preventScrollOnEntryFocus);\n              }\n            }\n            isClickFocusRef.current = false;\n          }),\n          onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n        }\n      )\n    }\n  );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeRovingFocusGroup,\n      focusable = true,\n      active = false,\n      tabStopId,\n      children,\n      ...itemProps\n    } = props;\n    const autoId = useId();\n    const id = tabStopId || autoId;\n    const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n    const isCurrentTabStop = context.currentTabStopId === id;\n    const getItems = useCollection(__scopeRovingFocusGroup);\n    const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n    React.useEffect(() => {\n      if (focusable) {\n        onFocusableItemAdd();\n        return () => onFocusableItemRemove();\n      }\n    }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n    return /* @__PURE__ */ jsx(\n      Collection.ItemSlot,\n      {\n        scope: __scopeRovingFocusGroup,\n        id,\n        focusable,\n        active,\n        children: /* @__PURE__ */ jsx(\n          Primitive.span,\n          {\n            tabIndex: isCurrentTabStop ? 0 : -1,\n            \"data-orientation\": context.orientation,\n            ...itemProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!focusable) event.preventDefault();\n              else context.onItemFocus(id);\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if (event.key === \"Tab\" && event.shiftKey) {\n                context.onItemShiftTab();\n                return;\n              }\n              if (event.target !== event.currentTarget) return;\n              const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n              if (focusIntent !== void 0) {\n                if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n                event.preventDefault();\n                const items = getItems().filter((item) => item.focusable);\n                let candidateNodes = items.map((item) => item.ref.current);\n                if (focusIntent === \"last\") candidateNodes.reverse();\n                else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n                  if (focusIntent === \"prev\") candidateNodes.reverse();\n                  const currentIndex = candidateNodes.indexOf(event.currentTarget);\n                  candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n                }\n                setTimeout(() => focusFirst(candidateNodes));\n              }\n            }),\n            children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n          }\n        )\n      }\n    );\n  }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n  ArrowLeft: \"prev\",\n  ArrowUp: \"prev\",\n  ArrowRight: \"next\",\n  ArrowDown: \"next\",\n  PageUp: \"first\",\n  Home: \"first\",\n  PageDown: \"last\",\n  End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n  if (dir !== \"rtl\") return key;\n  return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n  const key = getDirectionAwareKey(event.key, dir);\n  if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n  if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n  return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus({ preventScroll });\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\nfunction wrapArray(array, startIndex) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n  Item,\n  Root,\n  RovingFocusGroup,\n  RovingFocusGroupItem,\n  createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProviderImpl, useRadioContext] = createRadioContext(RADIO_NAME);\nfunction RadioProvider(props) {\n  const {\n    __scopeRadio,\n    checked = false,\n    children,\n    disabled,\n    form,\n    name,\n    onCheck,\n    required,\n    value = \"on\",\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const [control, setControl] = React.useState(null);\n  const [bubbleInput, setBubbleInput] = React.useState(null);\n  const hasConsumerStoppedPropagationRef = React.useRef(false);\n  const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    true\n  );\n  const context = {\n    checked,\n    disabled,\n    required,\n    name,\n    form,\n    value,\n    control,\n    setControl,\n    hasConsumerStoppedPropagationRef,\n    isFormControl,\n    bubbleInput,\n    setBubbleInput,\n    onCheck: () => onCheck?.()\n  };\n  return /* @__PURE__ */ jsx(RadioProviderImpl, { scope: __scopeRadio, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\nvar TRIGGER_NAME = \"RadioTrigger\";\nvar RadioTrigger = React.forwardRef(\n  ({ __scopeRadio, onClick, ...radioProps }, forwardedRef) => {\n    const {\n      checked,\n      disabled,\n      value,\n      setControl,\n      onCheck,\n      hasConsumerStoppedPropagationRef,\n      isFormControl,\n      bubbleInput\n    } = useRadioContext(TRIGGER_NAME, __scopeRadio);\n    const composedRefs = useComposedRefs(forwardedRef, setControl);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"radio\",\n        \"aria-checked\": checked,\n        \"data-state\": getState(checked),\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        value,\n        ...radioProps,\n        ref: composedRefs,\n        onClick: composeEventHandlers(onClick, (event) => {\n          if (!checked) onCheck();\n          if (bubbleInput && isFormControl) {\n            hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n            if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n          }\n        })\n      }\n    );\n  }\n);\nRadioTrigger.displayName = TRIGGER_NAME;\nvar Radio = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadio, name, checked, required, disabled, value, onCheck, form, ...radioProps } = props;\n    return /* @__PURE__ */ jsx(\n      RadioProvider,\n      {\n        __scopeRadio,\n        checked,\n        disabled,\n        required,\n        onCheck,\n        name,\n        form,\n        value,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n          /* @__PURE__ */ jsx(\n            RadioTrigger,\n            {\n              ...radioProps,\n              ref: forwardedRef,\n              __scopeRadio\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx(\n            RadioBubbleInput,\n            {\n              __scopeRadio\n            }\n          )\n        ] })\n      }\n    );\n  }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadio, forceMount, ...indicatorProps } = props;\n    const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-state\": getState(context.checked),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...indicatorProps,\n        ref: forwardedRef\n      }\n    ) });\n  }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n  ({ __scopeRadio, ...props }, forwardedRef) => {\n    const {\n      control,\n      checked,\n      required,\n      disabled,\n      name,\n      value,\n      form,\n      bubbleInput,\n      setBubbleInput,\n      hasConsumerStoppedPropagationRef\n    } = useRadioContext(BUBBLE_INPUT_NAME, __scopeRadio);\n    const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n    const prevChecked = usePrevious(checked);\n    const controlSize = useSize(control);\n    React.useEffect(() => {\n      const input = bubbleInput;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      const bubbles = !hasConsumerStoppedPropagationRef.current;\n      if (prevChecked !== checked && setChecked) {\n        const event = new Event(\"click\", { bubbles });\n        setChecked.call(input, checked);\n        input.dispatchEvent(event);\n      }\n    }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n    const defaultCheckedRef = React.useRef(checked);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"radio\",\n        \"aria-hidden\": true,\n        defaultChecked: defaultCheckedRef.current,\n        required,\n        disabled,\n        name,\n        value,\n        form,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0,\n          // We transform because the input is absolutely positioned but we have\n          // rendered it **after** the button. This pulls it back to sit on top\n          // of the button.\n          transform: \"translateX(-100%)\"\n        }\n      }\n    );\n  }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction getState(checked) {\n  return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n  createRovingFocusGroupScope,\n  createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeRadioGroup,\n      name,\n      defaultValue,\n      value: valueProp,\n      required = false,\n      disabled = false,\n      orientation,\n      dir,\n      loop = true,\n      onValueChange,\n      ...groupProps\n    } = props;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue ?? null,\n      onChange: onValueChange,\n      caller: RADIO_GROUP_NAME\n    });\n    return /* @__PURE__ */ jsx2(\n      RadioGroupProvider,\n      {\n        scope: __scopeRadioGroup,\n        name,\n        required,\n        disabled,\n        value,\n        onValueChange: setValue,\n        children: /* @__PURE__ */ jsx2(\n          RovingFocusGroup.Root,\n          {\n            asChild: true,\n            ...rovingFocusGroupScope,\n            orientation,\n            dir: direction,\n            loop,\n            children: /* @__PURE__ */ jsx2(\n              Primitive2.div,\n              {\n                role: \"radiogroup\",\n                \"aria-required\": required,\n                \"aria-orientation\": orientation,\n                \"data-disabled\": disabled ? \"\" : void 0,\n                dir: direction,\n                ...groupProps,\n                ref: forwardedRef\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar ITEM_PROVIDER_NAME = \"RadioGroupItemProvider\";\nvar ITEM_TRIGGER_NAME = \"RadioGroupItemTrigger\";\nvar ITEM_BUBBLE_INPUT_NAME = \"RadioGroupItemBubbleInput\";\nfunction RadioGroupItemProvider(props) {\n  const {\n    __scopeRadioGroup,\n    value,\n    disabled,\n    children,\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const context = useRadioGroupContext(ITEM_PROVIDER_NAME, __scopeRadioGroup);\n  const radioScope = useRadioScope(__scopeRadioGroup);\n  const isDisabled = context.disabled || disabled;\n  return /* @__PURE__ */ jsx2(\n    RadioProvider,\n    {\n      ...radioScope,\n      checked: context.value === value,\n      disabled: isDisabled,\n      required: context.required,\n      name: context.name,\n      value,\n      onCheck: () => context.onValueChange(value),\n      internal_do_not_use_render,\n      children\n    }\n  );\n}\nvar RadioGroupItemTrigger = React2.forwardRef((props, forwardedRef) => {\n  const { __scopeRadioGroup, ...triggerProps } = props;\n  const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n  const radioScope = useRadioScope(__scopeRadioGroup);\n  const { checked, disabled } = useRadioContext(ITEM_TRIGGER_NAME, radioScope.__scopeRadio);\n  const ref = React2.useRef(null);\n  const composedRefs = useComposedRefs2(forwardedRef, ref);\n  const isArrowKeyPressedRef = React2.useRef(false);\n  React2.useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (ARROW_KEYS.includes(event.key)) {\n        isArrowKeyPressedRef.current = true;\n      }\n    };\n    const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n    document.addEventListener(\"keydown\", handleKeyDown);\n    document.addEventListener(\"keyup\", handleKeyUp);\n    return () => {\n      document.removeEventListener(\"keydown\", handleKeyDown);\n      document.removeEventListener(\"keyup\", handleKeyUp);\n    };\n  }, []);\n  return /* @__PURE__ */ jsx2(\n    RovingFocusGroup.Item,\n    {\n      asChild: true,\n      ...rovingFocusGroupScope,\n      focusable: !disabled,\n      active: checked,\n      children: /* @__PURE__ */ jsx2(\n        RadioTrigger,\n        {\n          ...radioScope,\n          ...triggerProps,\n          ref: composedRefs,\n          onKeyDown: composeEventHandlers2(triggerProps.onKeyDown, (event) => {\n            if (event.key === \"Enter\") event.preventDefault();\n          }),\n          onFocus: composeEventHandlers2(triggerProps.onFocus, () => {\n            if (isArrowKeyPressedRef.current) {\n              ref.current?.click();\n            }\n          })\n        }\n      )\n    }\n  );\n});\nRadioGroupItemTrigger.displayName = ITEM_TRIGGER_NAME;\nvar RadioGroupItem = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadioGroup, value, disabled, ...itemProps } = props;\n    return /* @__PURE__ */ jsx2(\n      RadioGroupItemProvider,\n      {\n        __scopeRadioGroup,\n        value,\n        disabled,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs2(Fragment2, { children: [\n          /* @__PURE__ */ jsx2(\n            RadioGroupItemTrigger,\n            {\n              ...itemProps,\n              ref: forwardedRef,\n              __scopeRadioGroup\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx2(\n            RadioGroupItemBubbleInput,\n            {\n              __scopeRadioGroup\n            }\n          )\n        ] })\n      }\n    );\n  }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar RadioGroupItemBubbleInput = React2.forwardRef((props, forwardedRef) => {\n  const { __scopeRadioGroup, ...bubbleProps } = props;\n  const radioScope = useRadioScope(__scopeRadioGroup);\n  return /* @__PURE__ */ jsx2(RadioBubbleInput, { ...radioScope, ...bubbleProps, ref: forwardedRef });\n});\nRadioGroupItemBubbleInput.displayName = ITEM_BUBBLE_INPUT_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeRadioGroup, ...indicatorProps } = props;\n    const radioScope = useRadioScope(__scopeRadioGroup);\n    return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n  }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nexport {\n  RadioGroupIndicator as Indicator,\n  RadioGroupItem as Item,\n  RadioGroup,\n  RadioGroupIndicator,\n  RadioGroupItem,\n  RadioGroup as Root,\n  createRadioGroupScope,\n  RadioGroupItemBubbleInput as unstable_ItemBubbleInput,\n  RadioGroupItemProvider as unstable_ItemProvider,\n  RadioGroupItemTrigger as unstable_ItemTrigger,\n  RadioGroupItemBubbleInput as unstable_RadioGroupItemBubbleInput,\n  RadioGroupItemProvider as unstable_RadioGroupItemProvider,\n  RadioGroupItemTrigger as unstable_RadioGroupItemTrigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProviderImpl, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nfunction SwitchProvider(props) {\n  const {\n    __scopeSwitch,\n    checked: checkedProp,\n    children,\n    defaultChecked,\n    disabled,\n    form,\n    name,\n    onCheckedChange,\n    required,\n    value = \"on\",\n    // @ts-expect-error\n    internal_do_not_use_render\n  } = props;\n  const [checked, setChecked] = useControllableState({\n    prop: checkedProp,\n    defaultProp: defaultChecked ?? false,\n    onChange: onCheckedChange,\n    caller: SWITCH_NAME\n  });\n  const [control, setControl] = React.useState(null);\n  const [bubbleInput, setBubbleInput] = React.useState(null);\n  const hasConsumerStoppedPropagationRef = React.useRef(false);\n  const isFormControl = control ? !!form || !!control.closest(\"form\") : (\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    true\n  );\n  const context = {\n    checked,\n    setChecked,\n    disabled,\n    control,\n    setControl,\n    name,\n    form,\n    value,\n    hasConsumerStoppedPropagationRef,\n    required,\n    defaultChecked,\n    isFormControl,\n    bubbleInput,\n    setBubbleInput\n  };\n  return /* @__PURE__ */ jsx(SwitchProviderImpl, { scope: __scopeSwitch, ...context, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children });\n}\nvar TRIGGER_NAME = \"SwitchTrigger\";\nvar SwitchTrigger = React.forwardRef(\n  ({ __scopeSwitch, onClick, ...switchProps }, forwardedRef) => {\n    const {\n      value,\n      disabled,\n      checked,\n      required,\n      setControl,\n      setChecked,\n      hasConsumerStoppedPropagationRef,\n      isFormControl,\n      bubbleInput\n    } = useSwitchContext(TRIGGER_NAME, __scopeSwitch);\n    const composedRefs = useComposedRefs(forwardedRef, setControl);\n    return /* @__PURE__ */ jsx(\n      Primitive.button,\n      {\n        type: \"button\",\n        role: \"switch\",\n        \"aria-checked\": checked,\n        \"aria-required\": required,\n        \"data-state\": getState(checked),\n        \"data-disabled\": disabled ? \"\" : void 0,\n        disabled,\n        value,\n        ...switchProps,\n        ref: composedRefs,\n        onClick: composeEventHandlers(onClick, (event) => {\n          setChecked((prevChecked) => !prevChecked);\n          if (bubbleInput && isFormControl) {\n            hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n            if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n          }\n        })\n      }\n    );\n  }\n);\nSwitchTrigger.displayName = TRIGGER_NAME;\nvar Switch = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeSwitch,\n      name,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      value,\n      onCheckedChange,\n      form,\n      ...switchProps\n    } = props;\n    return /* @__PURE__ */ jsx(\n      SwitchProvider,\n      {\n        __scopeSwitch,\n        checked,\n        defaultChecked,\n        disabled,\n        required,\n        onCheckedChange,\n        name,\n        form,\n        value,\n        internal_do_not_use_render: ({ isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n          /* @__PURE__ */ jsx(\n            SwitchTrigger,\n            {\n              ...switchProps,\n              ref: forwardedRef,\n              __scopeSwitch\n            }\n          ),\n          isFormControl && /* @__PURE__ */ jsx(\n            SwitchBubbleInput,\n            {\n              __scopeSwitch\n            }\n          )\n        ] })\n      }\n    );\n  }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeSwitch, ...thumbProps } = props;\n    const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n    return /* @__PURE__ */ jsx(\n      Primitive.span,\n      {\n        \"data-state\": getState(context.checked),\n        \"data-disabled\": context.disabled ? \"\" : void 0,\n        ...thumbProps,\n        ref: forwardedRef\n      }\n    );\n  }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n  ({ __scopeSwitch, ...props }, forwardedRef) => {\n    const {\n      control,\n      hasConsumerStoppedPropagationRef,\n      checked,\n      defaultChecked,\n      required,\n      disabled,\n      name,\n      value,\n      form,\n      bubbleInput,\n      setBubbleInput\n    } = useSwitchContext(BUBBLE_INPUT_NAME, __scopeSwitch);\n    const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n    const prevChecked = usePrevious(checked);\n    const controlSize = useSize(control);\n    React.useEffect(() => {\n      const input = bubbleInput;\n      if (!input) return;\n      const inputProto = window.HTMLInputElement.prototype;\n      const descriptor = Object.getOwnPropertyDescriptor(\n        inputProto,\n        \"checked\"\n      );\n      const setChecked = descriptor.set;\n      const bubbles = !hasConsumerStoppedPropagationRef.current;\n      if (prevChecked !== checked && setChecked) {\n        const event = new Event(\"click\", { bubbles });\n        setChecked.call(input, checked);\n        input.dispatchEvent(event);\n      }\n    }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n    const defaultCheckedRef = React.useRef(checked);\n    return /* @__PURE__ */ jsx(\n      Primitive.input,\n      {\n        type: \"checkbox\",\n        \"aria-hidden\": true,\n        defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n        required,\n        disabled,\n        name,\n        value,\n        form,\n        ...props,\n        tabIndex: -1,\n        ref: composedRefs,\n        style: {\n          ...props.style,\n          ...controlSize,\n          position: \"absolute\",\n          pointerEvents: \"none\",\n          opacity: 0,\n          margin: 0,\n          // We transform because the input is absolutely positioned but we have\n          // rendered it **after** the button. This pulls it back to sit on top\n          // of the button.\n          transform: \"translateX(-100%)\"\n        }\n      }\n    );\n  }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction getState(checked) {\n  return checked ? \"checked\" : \"unchecked\";\n}\nexport {\n  Switch as Root,\n  Switch,\n  SwitchThumb,\n  SwitchThumb as Thumb,\n  createSwitchScope,\n  SwitchBubbleInput as unstable_BubbleInput,\n  SwitchProvider as unstable_Provider,\n  SwitchBubbleInput as unstable_SwitchBubbleInput,\n  SwitchProvider as unstable_SwitchProvider,\n  SwitchTrigger as unstable_SwitchTrigger,\n  SwitchTrigger as unstable_Trigger\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n  createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeTabs,\n      value: valueProp,\n      onValueChange,\n      defaultValue,\n      orientation = \"horizontal\",\n      dir,\n      activationMode = \"automatic\",\n      ...tabsProps\n    } = props;\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      onChange: onValueChange,\n      defaultProp: defaultValue ?? \"\",\n      caller: TABS_NAME\n    });\n    return /* @__PURE__ */ jsx(\n      TabsProvider,\n      {\n        scope: __scopeTabs,\n        baseId: useId(),\n        value,\n        onValueChange: setValue,\n        orientation,\n        dir: direction,\n        activationMode,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            dir: direction,\n            \"data-orientation\": orientation,\n            ...tabsProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTabs, loop = true, ...listProps } = props;\n    const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n    return /* @__PURE__ */ jsx(\n      RovingFocusGroup.Root,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        orientation: context.orientation,\n        dir: context.dir,\n        loop,\n        children: /* @__PURE__ */ jsx(\n          Primitive.div,\n          {\n            role: \"tablist\",\n            \"aria-orientation\": context.orientation,\n            ...listProps,\n            ref: forwardedRef\n          }\n        )\n      }\n    );\n  }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n    const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n    const triggerId = makeTriggerId(context.baseId, value);\n    const contentId = makeContentId(context.baseId, value);\n    const isSelected = value === context.value;\n    return /* @__PURE__ */ jsx(\n      RovingFocusGroup.Item,\n      {\n        asChild: true,\n        ...rovingFocusGroupScope,\n        focusable: !disabled,\n        active: isSelected,\n        children: /* @__PURE__ */ jsx(\n          Primitive.button,\n          {\n            type: \"button\",\n            role: \"tab\",\n            \"aria-selected\": isSelected,\n            \"aria-controls\": contentId,\n            \"data-state\": isSelected ? \"active\" : \"inactive\",\n            \"data-disabled\": disabled ? \"\" : void 0,\n            disabled,\n            id: triggerId,\n            ...triggerProps,\n            ref: forwardedRef,\n            onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n              if (!disabled && event.button === 0 && event.ctrlKey === false) {\n                context.onValueChange(value);\n              } else {\n                event.preventDefault();\n              }\n            }),\n            onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n              if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n            }),\n            onFocus: composeEventHandlers(props.onFocus, () => {\n              const isAutomaticActivation = context.activationMode !== \"manual\";\n              if (!isSelected && !disabled && isAutomaticActivation) {\n                context.onValueChange(value);\n              }\n            })\n          }\n        )\n      }\n    );\n  }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n    const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n    const triggerId = makeTriggerId(context.baseId, value);\n    const contentId = makeContentId(context.baseId, value);\n    const isSelected = value === context.value;\n    const isMountAnimationPreventedRef = React.useRef(isSelected);\n    React.useEffect(() => {\n      const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n      return () => cancelAnimationFrame(rAF);\n    }, []);\n    return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n      Primitive.div,\n      {\n        \"data-state\": isSelected ? \"active\" : \"inactive\",\n        \"data-orientation\": context.orientation,\n        role: \"tabpanel\",\n        \"aria-labelledby\": triggerId,\n        hidden: !present,\n        id: contentId,\n        tabIndex: 0,\n        ...contentProps,\n        ref: forwardedRef,\n        style: {\n          ...props.style,\n          animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n        },\n        children: present && children\n      }\n    ) });\n  }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n  return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n  return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n  Content,\n  List,\n  Root2 as Root,\n  Tabs,\n  TabsContent,\n  TabsList,\n  TabsTrigger,\n  Trigger,\n  createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Switch({\n  className,\n  size = \"default\",\n  ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      data-size={size}\n      className={cn(\n        \"peer group/switch inline-flex shrink-0 items-center rounded-full transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-[#4ACC8C]/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[20px] data-[size=default]:w-[40px] data-[size=sm]:h-[14px] data-[size=sm]:w-[28px] data-[state=checked]:bg-[#4ACC8C] data-[state=unchecked]:bg-[#ccc]\",\n        className\n      )}\n      {...props}\n    >\n      <SwitchPrimitive.Thumb\n        data-slot=\"switch-thumb\"\n        className={cn(\n          \"pointer-events-none block rounded-full bg-white transition-transform group-data-[size=default]/switch:size-[16px] group-data-[size=sm]/switch:size-[10px] data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-[2px]\"\n        )}\n      />\n    </SwitchPrimitive.Root>\n  )\n}\n\nexport { Switch }\n","import { cn } from '../../../lib/utils';\nimport { TriggerTypeIcon } from '../trigger-select';\nimport { AgentTag } from '../agent-tag';\nimport { IconBtn } from '../../icon-btn';\nimport { Switch } from '../../ui/switch';\nimport { EditIcon, CopyIcon, TrashIcon } from '../../bs-icons';\nimport type { IAgentHelper, IAgentInfo } from '@baishuyun/types';\n\nconst FORM_ACTION_LABELS: Record<string, string> = {\n  submit: '提交数据',\n  edit: '编辑数据',\n  delete: '删除数据',\n  init: '表单初始化',\n  edit_init: '表单编辑初始化',\n};\n\nconst FLOW_NODE_ACTION_LABELS: Record<string, string> = {\n  flow_end: '流程结束',\n  flow_node: '流程节点',\n};\n\nfunction buildTriggerDescription(helper: IAgentHelper): string {\n  switch (helper.triggerType) {\n    case 'form_action': {\n      const actions =\n        helper.formActionTriggerType\n          ?.map((a) => FORM_ACTION_LABELS[a] || a)\n          .join('/') || '';\n      return actions ? `${helper.formId}\\n${actions}` : helper.formId;\n    }\n    case 'form_flow_node': {\n      const nodes =\n        helper.flowNodeTriggerType\n          ?.map((n) => FLOW_NODE_ACTION_LABELS[n] || n)\n          .join('/') || '';\n      return nodes ? `${helper.formId}\\n${nodes}` : helper.formId;\n    }\n    case 'form_field': {\n      return helper.triggerFieldWidgetName\n        ? `${helper.formId} / ${helper.triggerFieldWidgetName}`\n        : helper.formId;\n    }\n    case 'universal':\n      return '开箱即用，无需触发';\n    case 'scheduler':\n      return '按计划时间触发';\n    default:\n      return '';\n  }\n}\n\nfunction buildAgentInfo(agentName?: string, agentIcon?: string): IAgentInfo | undefined {\n  if (!agentName && !agentIcon) {\n    return undefined;\n  }\n  return {\n    id: '',\n    name: agentName || '',\n    icon: agentIcon || '',\n  };\n}\n\nexport interface AgentHelperCardProps {\n  helper: IAgentHelper;\n  agentName?: string;\n  agentIcon?: string;\n  className?: string;\n  onEnabledChange?: (enabled: boolean) => void;\n  onViewLogs?: () => void;\n  onEdit?: () => void;\n  onCopy?: () => void;\n  onDelete?: () => void;\n}\n\nexport const AgentHelperCard = ({\n  helper,\n  agentName,\n  agentIcon,\n  className,\n  onEnabledChange,\n  onViewLogs,\n  onEdit,\n  onCopy,\n  onDelete,\n}: AgentHelperCardProps) => {\n  const description = buildTriggerDescription(helper);\n  const agent = buildAgentInfo(agentName, agentIcon);\n\n  return (\n    <div\n      className={cn(\n        'bg-white border border-[#e0e0e0] border-solid content-stretch flex flex-col items-start rounded-[10px] w-full group min-w-[335px]',\n        className,\n      )}\n    >\n      {/* Header */}\n      <div className=\"grid-rows-[max-content] inline-grid leading-[0] place-items-start shrink-0 w-full\">\n        <div className=\"col-1 content-stretch flex h-[42px] items-center justify-between ml-0 mt-0 px-[12px] row-1 w-full\">\n          <div className=\"content-stretch flex gap-[6px] items-center shrink-0 min-w-0\">\n            <TriggerTypeIcon triggerType={helper.triggerType} size={18} />\n            <p className=\"leading-[normal] shrink-0 text-[#030303] text-[14px] truncate\">\n              {helper.helperName}\n            </p>\n          </div>\n          <div className=\"content-stretch flex gap-[10px] items-center opacity-0 group-hover:opacity-100 transition-opacity shrink-0\">\n            {onEdit && (\n              <IconBtn icon={<EditIcon />} rounded onClick={onEdit} />\n            )}\n            {onCopy && (\n              <IconBtn icon={<CopyIcon />} rounded onClick={onCopy} />\n            )}\n            {onDelete && (\n              <IconBtn icon={<TrashIcon />} rounded onClick={onDelete} />\n            )}\n          </div>\n        </div>\n        <div className=\"col-1 h-0 ml-0 mt-[42px] row-1 w-full border-b border-[#e0e0e0]\" />\n      </div>\n\n      {/* Content */}\n      <div className=\"content-stretch flex flex-col h-[172px] items-start justify-between p-[12px] shrink-0 w-full\">\n        <div className=\"content-stretch flex flex-col gap-[6px] items-start shrink-0 text-[14px] w-full\">\n          <p className=\"min-w-full shrink-0 text-[#666] w-[min-content]\">\n            触发：\n          </p>\n          {description.split('\\n').map((line, i) => (\n            <p\n              key={i}\n              className=\"shrink-0 text-[#030303] whitespace-nowrap overflow-hidden text-ellipsis max-w-full\"\n            >\n              {line}\n            </p>\n          ))}\n        </div>\n        {agent && <AgentTag agent={agent} />}\n      </div>\n\n      {/* Footer */}\n      <div className=\"grid-rows-[max-content] inline-grid leading-[0] place-items-start shrink-0 w-full\">\n        <div className=\"col-1 h-0 ml-0 mt-0 row-1 w-full border-t border-[#e0e0e0]\" />\n        <div className=\"col-1 content-stretch flex h-[42px] items-center justify-between ml-0 mt-0 px-[12px] row-1 w-full\">\n          <Switch checked={helper.enabled} onCheckedChange={onEnabledChange} />\n          {onViewLogs && (\n            <button\n              className=\"leading-[normal] shrink-0 text-[#0265ff] text-[12px] whitespace-nowrap hover:underline\"\n              onClick={onViewLogs}\n            >\n              查看执行日志\n            </button>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { cn } from '../../../lib/utils';\nimport { AgentHelperCard } from '../agent-helper-card';\nimport type { IAgentHelper } from '@baishuyun/types';\n\nexport interface AgentHelperCardListProps {\n  items: Array<IAgentHelper>;\n  className?: string;\n  getAgentName?: (agentId: string) => string | undefined;\n  getAgentIcon?: (agentId: string) => string | undefined;\n  onEnabledChange?: (helperId: string, enabled: boolean) => void;\n  onViewLogs?: (helperId: string) => void;\n  onEdit?: (helperId: string) => void;\n  onCopy?: (helperId: string) => void;\n  onDelete?: (helperId: string) => void;\n}\n\nexport const AgentHelperCardList = ({\n  items,\n  className,\n  getAgentName,\n  getAgentIcon,\n  onEnabledChange,\n  onViewLogs,\n  onEdit,\n  onCopy,\n  onDelete,\n}: AgentHelperCardListProps) => {\n  return (\n    <div\n      className={cn(\n        'content-start flex flex-wrap gap-[20px] items-start',\n        className,\n      )}\n    >\n      {items.map((helper) => (\n        <AgentHelperCard\n          key={helper.id}\n          helper={helper}\n          agentName={getAgentName?.(helper.agentId)}\n          agentIcon={getAgentIcon?.(helper.agentId)}\n          className=\"w-[335px] shrink-0\"\n          onEnabledChange={\n            onEnabledChange\n              ? (enabled) => onEnabledChange(helper.id, enabled)\n              : undefined\n          }\n          onViewLogs={\n            onViewLogs ? () => onViewLogs(helper.id) : undefined\n          }\n          onEdit={onEdit ? () => onEdit(helper.id) : undefined}\n          onCopy={onCopy ? () => onCopy(helper.id) : undefined}\n          onDelete={onDelete ? () => onDelete(helper.id) : undefined}\n        />\n      ))}\n    </div>\n  );\n};\n","import { cn } from '../../../lib/utils';\nimport { EmptyCardIcon } from '../../bs-icons';\n\nconst PlusIcon = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    className=\"shrink-0\"\n  >\n    <path\n      d=\"M8 3.333v9.334M3.333 8h9.334\"\n      stroke=\"white\"\n      strokeWidth=\"1.5\"\n      strokeLinecap=\"round\"\n    />\n  </svg>\n);\n\nexport interface PlaceholderCardProps {\n  description: string;\n  detailAddress: string;\n  btnLabel?: string;\n  onCreateClick: () => void;\n  className?: string;\n}\n\nexport const PlaceholderCard = ({\n  description,\n  detailAddress,\n  btnLabel = '新建智能体助手',\n  onCreateClick,\n  className,\n}: PlaceholderCardProps) => {\n  return (\n    <div\n      className={cn(\n        'content-stretch flex flex-col items-center justify-center py-[40px] px-[20px] w-full',\n        className,\n      )}\n    >\n      <EmptyCardIcon />\n\n      <div className=\"mt-[16px] text-center text-[#999] text-[14px] leading-[normal]\">\n        <p className=\"mb-0\">{description}</p>\n        {\n          detailAddress ? (\n            <p>\n              <a\n                href={detailAddress}\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                className=\"text-[#0265ff] underline [text-decoration-skip-ink:none] decoration-solid\"\n              >\n                了解详情\n              </a>\n            </p>\n          ) : null\n        }\n      </div>\n\n      <button\n        onClick={onCreateClick}\n        className=\"mt-[12px] bg-[#0265ff] content-stretch flex gap-[6px] items-center pl-[16px] pr-[20px] py-[7px] rounded-[4px] cursor-pointer border-none\"\n      >\n        <PlusIcon />\n        <span className=\"text-[14px] text-white whitespace-nowrap leading-[normal]\">\n          {btnLabel}\n        </span>\n      </button>\n    </div>\n  );\n};\n","import { transCls } from '../../../const/ui';\nimport { cn } from '../../../lib/utils';\nimport type { IAgentInfo } from '@baishuyun/types';\n\nexport interface AgentEntryCardProps {\n  agent: IAgentInfo;\n  className?: string;\n  onSelect: () => void;\n  onLogClick: () => void;\n}\n\nexport const AgentEntryCard = ({\n  agent,\n  className,\n  onSelect,\n  onLogClick,\n}: AgentEntryCardProps) => {\n  return (\n    <div\n      className={cn(\n        'bg-white border border-[#e0e0e0] border-solid content-stretch flex flex-col items-start p-[16px] rounded-[10px] w-full drop-shadow-[0px_0px_5px_rgba(0,0,0,0.04)] hover:drop-shadow-[0px_0px_8px_rgba(0,0,0,0.1)]',\n        transCls,\n        className,\n      )}\n\n      onClick={onSelect}\n    >\n      <div className=\"content-stretch flex flex-col gap-[12px] items-start w-full\">\n        {/* 顶部 */}\n        <div className=\"content-stretch flex items-center justify-between w-full\">\n          {/* 左 */}\n          <div className=\"content-stretch flex gap-[10px] items-center min-w-0\">\n            <img\n              alt={agent.name}\n              className=\"rounded-[10px] shrink-0 size-[40px] object-cover\"\n              src={agent.icon}\n            />\n            <p className=\"font-bold leading-[normal] overflow-hidden shrink-0 text-[#030303] text-[18px] text-ellipsis whitespace-nowrap\">\n              {agent.name}\n            </p>\n            {agent.installCount != null && agent.installCount > 0 && (\n              <div className=\"bg-[#f5f7fa] content-stretch flex h-[26px] items-center justify-center px-[6px] py-[10px] rounded-[100px] shrink-0\">\n                <p className=\"leading-[normal] shrink-0 text-[#4d609f] text-[12px] whitespace-nowrap\">\n                  安装次数：{agent.installCount.toLocaleString()}\n                </p>\n              </div>\n            )}\n          </div>\n\n          {/* 右上角 */}\n          <div className=\"content-stretch flex gap-[10px] items-center shrink-0\">\n            {agent.version && (\n              <>\n                <p className=\"leading-[normal] shrink-0 text-[#999] text-[12px] whitespace-nowrap\">\n                  版本：{agent.version}\n                </p>\n                <div className=\"h-[14px] shrink-0 w-[1px] bg-[#e0e0e0]\" />\n              </>\n            )}\n            {!!agent.lastUpdated && (\n              <>\n                <p className=\"leading-[normal] shrink-0 text-[#999] text-[12px] whitespace-nowrap\">\n                  {agent.lastUpdated}\n                </p>\n                <div className=\"h-[14px] shrink-0 w-[1px] bg-[#e0e0e0]\" />\n              </>\n            )}\n            {/* <button\n              className=\"leading-[normal] shrink-0 text-[#0265ff] text-[14px] whitespace-nowrap hover:text-[rgba(2,101,255,0.8)] cursor-pointer bg-transparent border-none p-0\"\n              onClick={onLogClick}\n            >\n              更新日志\n            </button> */}\n            <button\n              className=\"bg-[#eff0f6] content-stretch flex flex-col h-[30px] items-center justify-center px-[16px] py-[7px] rounded-[4px] shrink-0 cursor-pointer border-none hover:bg-[#f0f6ff] group/select\"\n              onClick={onSelect}\n            >\n              <span className=\"leading-[normal] shrink-0 text-[#030303] text-[14px] whitespace-nowrap group-hover/select:text-[#0265ff]\">\n                选择\n              </span>\n            </button>\n          </div>\n        </div>\n\n        {/* 描述 */}\n        {agent.description && (\n          <p className=\"leading-[normal] shrink-0 text-[#666] text-[14px] w-full line-clamp-2\">\n            {agent.description}\n          </p>\n        )}\n      </div>\n    </div>\n  );\n};\n","export const GridsIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n    <path d=\"M6.5 8.5C7.05228 8.5 7.5 8.94772 7.5 9.5V14C7.5 14.5177 7.10667 14.9438 6.60254 14.9951L6.5 15H2L1.89746 14.9951C1.42703 14.9472 1.05278 14.573 1.00488 14.1025L1 14V9.5C1 8.94772 1.44772 8.5 2 8.5H6.5ZM14 8.5C14.5523 8.5 15 8.94772 15 9.5V14C15 14.5177 14.6067 14.9438 14.1025 14.9951L14 15H9.5L9.39746 14.9951C8.92703 14.9472 8.55278 14.573 8.50488 14.1025L8.5 14V9.5C8.5 8.94772 8.94772 8.5 9.5 8.5H14ZM9.5 14H14V9.5H9.5V14ZM2 14H6.5V9.5H2V14ZM6.5 1C7.05228 1 7.5 1.44772 7.5 2V6.5C7.5 7.01768 7.10667 7.44379 6.60254 7.49512L6.5 7.5H2L1.89746 7.49512C1.42703 7.44722 1.05278 7.07297 1.00488 6.60254L1 6.5V2C1 1.44772 1.44772 1 2 1H6.5ZM14 1C14.5523 1 15 1.44772 15 2V6.5C15 7.01768 14.6067 7.44379 14.1025 7.49512L14 7.5H9.5L9.39746 7.49512C8.92703 7.44722 8.55278 7.07297 8.50488 6.60254L8.5 6.5V2C8.5 1.44772 8.94772 1 9.5 1H14ZM2 6.5H6.5V2H2V6.5ZM9.5 6.5H14V2H9.5V6.5Z\" fill=\"#666666\"/>\n  </svg>\n);\n","import type { AgentCategory } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { EditIcon } from '../../bs-icons';\nimport { GridsIcon } from '../../icons/grids-icon';\n\nexport interface AgentCategorySelectMenuProps {\n  value?: AgentCategory;\n  onChange?: (value: AgentCategory) => void;\n  className?: string;\n}\n\nconst CATEGORY_ITEMS: { id: AgentCategory; label: string; icon?: React.ReactNode }[] = [\n  { id: 'all-agent', label: '全部' },\n  { id: 'system-agent', label: '系统智能体', icon: <GridsIcon /> },\n  { id: 'custom-agent', label: '自定义智能体', icon: <EditIcon /> },\n];\n\nexport const AgentCategorySelectMenu = ({\n  value,\n  onChange,\n  className,\n}: AgentCategorySelectMenuProps) => {\n  return (\n    <div className={cn('flex flex-col', className)}>\n      {CATEGORY_ITEMS.map((item) => {\n        const isActive = value === item.id;\n        return (\n          <button\n            key={item.id}\n            type=\"button\"\n            onClick={() => onChange?.(item.id)}\n            className={cn(\n              'flex items-center gap-[6px] w-full h-[34px] px-[10px] rounded-[4px] text-left',\n              isActive ? 'bg-[#EFF0F6]' : 'hover:bg-[#EFF0F6]',\n              transCls\n            )}\n          >\n            {item.icon && (\n              <span className=\"shrink-0 size-[16px] flex items-center justify-center text-[#666666]\">\n                {item.icon}\n              </span>\n            )}\n            <span\n              className={cn(\n                'text-[14px] text-[#030303] leading-[normal] whitespace-nowrap',\n                isActive ? 'font-bold' : 'font-normal'\n              )}\n            >\n              {item.label}\n            </span>\n          </button>\n        );\n      })}\n    </div>\n  );\n};\n","import { useCallback, useState } from 'react';\n\nexport const usePortalContainer = (portalName: string) => {\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n  const setTriggerRef = useCallback((node: HTMLElement | null) => {\n    if (!node) {\n      setPortalContainer(null);\n      return;\n    }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>(`[${portalName}]`);\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n      const container = document.createElement('div');\n      container.setAttribute(portalName, 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  return { portalContainer, setTriggerRef };\n};\n","const c = (e) => {\n  if ((e == null ? void 0 : e.type) !== \"text\" || !e.providerMetadata || !e.providerMetadata.raw || !e.providerMetadata.raw.data)\n    return null;\n  if (typeof e.providerMetadata.raw.data != \"string\")\n    return e.providerMetadata.raw.data;\n  let t;\n  try {\n    t = JSON.parse(e.providerMetadata.raw.data);\n  } catch (r) {\n    console.error(\"invalid raw data\");\n  }\n  return t || e.providerMetadata.raw.data;\n}, A = (e) => {\n  if ((e == null ? void 0 : e.type) === \"error\")\n    return !0;\n  const t = c(e);\n  return (t == null ? void 0 : t.type) === \"agent-error\";\n}, R = (e) => {\n  const t = c(e);\n  return (t == null ? void 0 : t.type) === \"agent-fake-msg\";\n}, E = (e) => (e == null ? void 0 : e.type) === \"file\", T = (e) => {\n  const t = c(e);\n  return (t == null ? void 0 : t.type) === \"query-stream-parsed-info\";\n}, D = (e) => {\n  const t = c(e);\n  if ((t == null ? void 0 : t.type) !== \"query-stream-parsed-info\")\n    return null;\n  const r = t.result;\n  console.log(\"query result raw data:\", r);\n  try {\n    return JSON.parse(r);\n  } catch (n) {\n    return console.error(\"invalid query result data\"), null;\n  }\n}, O = (e) => {\n  if (!Array.isArray(e))\n    return !1;\n  for (const t of e)\n    if ((t == null ? void 0 : t.type) === \"file\")\n      return !0;\n  return !1;\n}, F = (e) => {\n  const t = c(e);\n  return (t == null ? void 0 : t.type) === \"agent-loading\";\n}, I = (e) => {\n  const t = c(e);\n  return (t == null ? void 0 : t.type) !== \"agent-loading\" ? \"\" : (t == null ? void 0 : t.label) || \"加载中\";\n}, B = (e) => {\n  if (!A(e))\n    return \"\";\n  if (e != null && e.errorText)\n    return e.errorText;\n  const t = c(e);\n  return (t == null ? void 0 : t.error) || \"未知错误\";\n}, L = (e) => {\n  if (e != null && e.errorText)\n    return e.errorText;\n  const t = c(e);\n  return (t == null ? void 0 : t.error) || \"未知错误\";\n};\nfunction S(e) {\n  return Array.isArray(e) ? e.every((t) => typeof t == \"string\") : !1;\n}\nfunction w(e) {\n  return Array.isArray(e) ? e.every(\n    (t) => typeof t == \"object\" && t !== null && \"label\" in t && \"value\" in t && typeof t.label == \"string\" && typeof t.value == \"string\"\n  ) : !1;\n}\nconst W = (e) => S(e) ? e.join(\", \") : w(e) ? e.map((r) => r.value).join(\", \") : e, q = /* @__PURE__ */ new Set([\n  \"password\",\n  \"textarea\",\n  \"datetime\",\n  \"text\",\n  \"radiogroup\",\n  \"radio\",\n  \"combo\",\n  \"combocheck\",\n  \"checkboxgroup\",\n  \"number\"\n]), U = (e) => Array.isArray(e) ? e.filter((t) => t.widget ? q.has(t.widget.type) : !1) : [], G = (e) => (t) => {\n  const r = c(t);\n  return (r == null ? void 0 : r.type) === e;\n}, j = (e) => (t) => {\n  const r = c(t);\n  return (r == null ? void 0 : r.type) !== e ? null : (r == null ? void 0 : r.field) || null;\n}, J = (e) => (t) => Array.isArray(t) && t.length > 0 ? t.filter(e) : e(t) ? [t] : [], Q = (e) => {\n  try {\n    return JSON.parse(e);\n  } catch (t) {\n    return console.error(\"Failed to parse JSON:\", t), null;\n  }\n}, H = 10, $ = (e, t = \"image/png\") => new Promise((r) => {\n  const n = new Image();\n  n.crossOrigin = \"anonymous\", n.onload = () => {\n    const a = document.createElement(\"canvas\");\n    a.width = n.naturalWidth, a.height = n.naturalHeight, a.getContext(\"2d\").drawImage(n, 0, 0), r(a.toDataURL(t));\n  }, n.onerror = () => r(e), n.src = e;\n}), z = {\n  eq: \"等于\",\n  neq: \"不等于\",\n  gt: \"大于\",\n  lt: \"小于\",\n  gte: \"大于等于\",\n  lte: \"小于等于\",\n  contains: \"包含\",\n  not_contains: \"不包含\",\n  in: \"等于任意\",\n  nin: \"不等于任意\",\n  all: \"包含所有\",\n  empty: \"为空\",\n  not_empty: \"不为空\",\n  range: \"范围\"\n}, C = {\n  // Text-like: equality, fuzzy, empty checks\n  text: [\"eq\", \"neq\", \"in\", \"nin\", \"contains\", \"not_contains\", \"empty\", \"not_empty\"],\n  password: [\"eq\", \"neq\", \"contains\", \"not_contains\", \"empty\", \"not_empty\"],\n  radiogroup: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  radio: [\"eq\", \"neq\", \"empty\", \"not_empty\"],\n  combo: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  sn: [\"eq\", \"neq\", \"in\", \"nin\", \"contains\", \"not_contains\", \"empty\", \"not_empty\"],\n  // Textarea: fuzzy matching\n  textarea: [\"contains\", \"not_contains\", \"empty\", \"not_empty\"],\n  // Number: comparison operators\n  number: [\"eq\", \"neq\", \"gt\", \"gte\", \"lt\", \"lte\", \"range\", \"empty\", \"not_empty\"],\n  // DateTime: comparison operators\n  datetime: [\"eq\", \"neq\", \"gte\", \"lte\", \"range\", \"empty\", \"not_empty\"],\n  // Multi-select: membership, intersection\n  checkboxgroup: [\"in\", \"all\", \"eq\", \"empty\", \"not_empty\"],\n  combocheck: [\"in\", \"all\", \"eq\", \"empty\", \"not_empty\"],\n  // User/Dept: equality and membership\n  user: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  dept: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  // Groups: membership, intersection, empty\n  usergroup: [\"in\", \"all\", \"eq\", \"empty\", \"not_empty\"],\n  deptgroup: [\"in\", \"all\", \"eq\", \"empty\", \"not_empty\"],\n  // Address/Location: intersection\n  address: [\"in\", \"nin\", \"empty\", \"not_empty\"],\n  location: [\"in\", \"nin\", \"empty\", \"not_empty\"],\n  // Files: empty checks\n  upload: [\"empty\", \"not_empty\"],\n  image: [\"empty\", \"not_empty\"],\n  signature: [\"empty\", \"not_empty\"],\n  // Flow state\n  flowState: [\"eq\", \"neq\", \"empty\"],\n  flowstate: [\"eq\", \"neq\", \"empty\"],\n  // Link data: combo-like\n  linkdata: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  linkquery: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  dataload: [\"eq\", \"neq\", \"in\", \"nin\", \"empty\", \"not_empty\"],\n  // Formula\n  formula: [\"eq\", \"neq\", \"empty\", \"not_empty\"],\n  // Display-only: no meaningful operators\n  separator: [],\n  button: [],\n  subform: [],\n  unknown: []\n}, v = {\n  text: \"eq\",\n  password: \"eq\",\n  radiogroup: \"eq\",\n  radio: \"eq\",\n  combo: \"eq\",\n  sn: \"eq\",\n  textarea: \"contains\",\n  number: \"range\",\n  datetime: \"range\",\n  checkboxgroup: \"all\",\n  combocheck: \"all\",\n  user: \"eq\",\n  dept: \"eq\",\n  usergroup: \"all\",\n  deptgroup: \"all\",\n  address: \"all\",\n  location: \"all\",\n  upload: \"not_empty\",\n  image: \"not_empty\",\n  signature: \"not_empty\",\n  flowState: \"eq\",\n  flowstate: \"eq\",\n  linkdata: \"eq\",\n  linkquery: \"eq\",\n  dataload: \"eq\",\n  formula: \"eq\"\n};\nfunction K(e) {\n  var t;\n  return e ? (t = C[e]) != null ? t : [] : [];\n}\nfunction X(e) {\n  var t;\n  return e && (t = v[e]) != null ? t : \"eq\";\n}\nfunction d(e) {\n  return typeof e == \"object\" && e !== null && !Array.isArray(e);\n}\nfunction b(e) {\n  return d(e) ? e : null;\n}\nfunction g(e) {\n  return !!(e == null || e === \"\" || Array.isArray(e) && e.length === 0);\n}\nfunction m(e, t) {\n  if (Array.isArray(e) && Array.isArray(t)) {\n    if (e.length !== t.length) return !1;\n    const r = e.map(String).sort(), n = t.map(String).sort();\n    return r.every((a, i) => a === n[i]);\n  }\n  if (d(e) && d(t)) {\n    const r = Object.keys(e), n = Object.keys(t);\n    return r.length !== n.length ? !1 : r.every((a) => String(e[a]) === String(t[a]));\n  }\n  return String(e) === String(t);\n}\nfunction y(e, t) {\n  if (d(t)) {\n    const n = b(e);\n    return !(!n || t.province !== void 0 && String(n.province) !== String(t.province) || t.city !== void 0 && String(n.city) !== String(t.city) || t.district !== void 0 && String(n.district) !== String(t.district));\n  }\n  const r = Array.isArray(t) ? t.map(String) : [];\n  return Array.isArray(e) ? e.some((n) => r.includes(String(n))) : r.includes(String(e));\n}\nfunction _(e, t) {\n  const r = Array.isArray(t) ? t.map(String) : [];\n  if (r.length === 0) return !1;\n  const n = Array.isArray(e) ? e.map(String) : [];\n  return r.every((a) => n.includes(a));\n}\nfunction k(e, t) {\n  const r = b(t);\n  if (!r) return !1;\n  const n = Number(e);\n  return !(isNaN(n) || r.min !== void 0 && r.min !== null && n < Number(r.min) || r.max !== void 0 && r.max !== null && n > Number(r.max));\n}\nfunction x(e, t) {\n  var o;\n  const r = (o = e.field.widget) == null ? void 0 : o.widgetName;\n  if (!r) return !1;\n  const n = t[r], { operator: a, value: i } = e;\n  switch (a) {\n    case \"empty\":\n      return g(n);\n    case \"not_empty\":\n      return !g(n);\n    case \"eq\":\n      return m(n, i);\n    case \"neq\":\n      return !m(n, i);\n    case \"contains\":\n      return String(n).includes(String(i));\n    case \"not_contains\":\n      return !String(n).includes(String(i));\n    case \"gt\":\n      return Number(n) > Number(i);\n    case \"gte\":\n      return Number(n) >= Number(i);\n    case \"lt\":\n      return Number(n) < Number(i);\n    case \"lte\":\n      return Number(n) <= Number(i);\n    case \"in\":\n      return y(n, i);\n    case \"nin\":\n      return !y(n, i);\n    case \"all\":\n      return _(n, i);\n    case \"range\":\n      return k(n, i);\n    default:\n      return !1;\n  }\n}\nfunction Y(e, t) {\n  const r = e.triggerCondition;\n  if (!r) return !0;\n  if (!e.enabled)\n    return !1;\n  const { items: n, quantifier: a } = r;\n  if (!n || n.length === 0) return !0;\n  const i = n.map((o) => x(o, t));\n  return a === \"any\" ? i.some((o) => o) : i.every((o) => o);\n}\nconst P = {\n  eq: \"eq\",\n  neq: \"ne\",\n  gt: \"gt\",\n  gte: \"gte\",\n  lt: \"lt\",\n  lte: \"lte\",\n  contains: \"like\",\n  not_contains: \"unlike\",\n  in: \"in\",\n  nin: \"nin\",\n  all: \"all\",\n  empty: \"empty\",\n  not_empty: \"not_empty\",\n  range: \"range\"\n}, M = {\n  eq: \"eq\",\n  ne: \"neq\",\n  gt: \"gt\",\n  gte: \"gte\",\n  lt: \"lt\",\n  lte: \"lte\",\n  like: \"contains\",\n  unlike: \"not_contains\",\n  in: \"in\",\n  nin: \"nin\",\n  all: \"all\",\n  empty: \"empty\",\n  not_empty: \"not_empty\",\n  range: \"range\"\n};\nfunction Z(e) {\n  const t = e.quantifier === \"any\" ? \"or\" : \"and\", r = e.items.map((n) => {\n    var o, s, l, u, p, f;\n    const a = (o = P[n.operator]) != null ? o : \"eq\";\n    let i;\n    return n.operator === \"range\" && d(n.value) ? i = [n.value.min, n.value.max] : Array.isArray(n.value) ? i = n.value : i = [n.value], {\n      field: (u = (l = (s = n.field) == null ? void 0 : s.widget) == null ? void 0 : l.widgetName) != null ? u : \"\",\n      method: a,\n      value: i,\n      type: (f = (p = n.field) == null ? void 0 : p.widget) == null ? void 0 : f.type\n    };\n  });\n  return JSON.stringify({ rel: t, cond: r });\n}\nfunction V(e) {\n  const t = JSON.parse(e), r = t.rel === \"or\" ? \"any\" : \"all\", n = t.cond.map((a, i) => {\n    var l, u;\n    const o = (l = M[a.method]) != null ? l : \"eq\";\n    let s = a.value;\n    return o === \"range\" ? s = { min: a.value[0], max: a.value[1] } : [\"eq\", \"neq\", \"contains\", \"not_contains\", \"gt\", \"gte\", \"lt\", \"lte\"].includes(o) && (s = a.value[0]), {\n      id: `${a.field}_${i}`,\n      field: {\n        label: a.field,\n        widget: {\n          widgetName: a.field,\n          type: (u = a.type) != null ? u : \"unknown\",\n          value: void 0\n        }\n      },\n      operator: o,\n      value: s\n    };\n  });\n  return { targetName: \"\", quantifier: r, items: n };\n}\nfunction ee(e, t, r = 1) {\n  const n = [], a = [];\n  for (const i of e)\n    t(i) ? a.push(i) : (a.length > 0 && (n.push(a.length >= r ? [...a] : a[0]), a.length = 0), n.push(i));\n  return a.length > 0 && n.push(a.length >= 2 ? [...a] : a[0]), n;\n}\nfunction h(e) {\n  const t = [];\n  for (const r of e)\n    Array.isArray(r) ? t.push(...h(r)) : t.push(r);\n  return t;\n}\nconst N = {\n  projectdevelopment: \"e914\",\n  resourcelibrary: \"e915\",\n  Plugin2: \"e90e\",\n  Plugin: \"e90f\",\n  JSON: \"e910\",\n  Dropdown: \"e911\",\n  Batchprocessing: \"e912\",\n  \"Image-text\": \"e916\",\n  Newaddition: \"e917\",\n  reportforms: \"e918\",\n  AddFola: \"e919\",\n  delete: \"e91a\",\n  AddImage: \"e91b\",\n  Send: \"e91c\",\n  text: \"e91d\",\n  image: \"e91e\",\n  Star1: \"e91f\",\n  Ellipse: \"e920\",\n  \"Ellipse-Copy\": \"e921\",\n  Shape: \"e922\",\n  \"Shape-Copy\": \"e923\",\n  \"right-line\": \"e924\",\n  \"right-arrow\": \"e925\",\n  \"double-right-arrow\": \"e926\",\n  ellipse: \"e927\",\n  Rectangle: \"e928\",\n  \"Rectangle-Copy\": \"e929\",\n  \"Rectangle-Copy-2\": \"e92a\",\n  CombinedShape: \"e92b\",\n  Line: \"e92c\",\n  time: \"e92d\",\n  calendar: \"e92e\",\n  richsinglelinetext: \"e92f\",\n  singlelinetext: \"e930\",\n  multilinetext: \"e931\",\n  number: \"e932\",\n  RichText: \"e933\",\n  image1: \"e934\",\n  Attachment: \"e935\",\n  Phone: \"e936\",\n  Email: \"e937\",\n  date: \"e938\",\n  \"Multiple-choice\": \"e939\",\n  Checkbox: \"e93a\",\n  \"Drop-down\": \"e93b\",\n  positioning: \"e93c\",\n  Description: \"e93d\",\n  AutoNumber: \"e93e\",\n  Address: \"e93f\",\n  Staff: \"e940\",\n  Department: \"e941\",\n  Switch: \"e942\",\n  Slider: \"e943\",\n  Currentdate: \"e944\",\n  Grade: \"e945\",\n  Barcode: \"e946\",\n  Subtable: \"e947\",\n  associatedtable: \"e948\",\n  Associatedapplication: \"e949\",\n  Referencefield: \"e94a\",\n  Uppercasing: \"e94b\",\n  nodata: \"e94c\",\n  \"X-mark\": \"e94d\",\n  Copy: \"e94e\",\n  Correct: \"e94f\",\n  Save: \"e950\",\n  Printer: \"e951\",\n  search: \"e952\",\n  filter: \"e953\",\n  Export: \"e954\",\n  Import: \"e955\",\n  Customprint: \"e956\",\n  refresh: \"e957\",\n  Helpcenter: \"e958\",\n  Tutorial: \"e959\",\n  Release: \"e95a\",\n  more: \"e95b\",\n  Setup: \"e95c\",\n  sort: \"e95d\",\n  Back: \"e95e\",\n  show: \"e95f\",\n  hide: \"e960\",\n  Preview: \"e961\",\n  Click: \"e962\",\n  Allcheck: \"e963\",\n  Cancelcheck: \"e964\",\n  Likespot: \"e965\",\n  Favoritespot: \"e966\",\n  Followspot: \"e967\",\n  Commentspot: \"e968\",\n  At: \"e969\",\n  Pin: \"e96a\",\n  edit: \"e96b\",\n  Top: \"e96c\",\n  Movein: \"e96d\",\n  Moveout: \"e96e\",\n  Forward: \"e96f\",\n  Revoke: \"e970\",\n  Return: \"e971\",\n  Link: \"e972\",\n  Unlink: \"e973\",\n  Download: \"e974\",\n  Upload: \"e975\",\n  Download2: \"e976\",\n  Upload2: \"e977\",\n  Comment: \"e978\",\n  Remind: \"e979\",\n  Notice: \"e97a\",\n  Permission: \"e97b\",\n  SMS: \"e97c\",\n  QRcode: \"e97d\",\n  Website: \"e97e\",\n  Monitoring: \"e97f\",\n  Api: \"e980\",\n  Webhook: \"e981\",\n  Synchronous: \"e982\",\n  Automation: \"e983\",\n  Trigger: \"e984\",\n  Condition: \"e985\",\n  Success: \"e986\",\n  Failure: \"e987\",\n  countdown: \"e988\",\n  Waiting: \"e989\",\n  Flow: \"e98a\",\n  Connection: \"e98b\",\n  Dashboard: \"e98c\",\n  chart: \"e98d\",\n  Piechart: \"e98e\",\n  BarChart: \"e98f\",\n  DoubleBarChart: \"e991\",\n  StackedBarChart: \"e992\",\n  PercentageStackedBarChart: \"e993\",\n  LineChart: \"e994\",\n  areachart: \"e990\",\n  combinationchart: \"e995\",\n  Scatterplot: \"e996\",\n  FunnelChart: \"e997\",\n  wordcloud: \"e998\",\n  RadarChart: \"e999\",\n  PivotTable: \"e99a\",\n  NumberChart: \"e99b\",\n  map: \"e99c\",\n  Timeline: \"e99d\",\n  Album: \"e99e\",\n  Kanban: \"e99f\",\n  Ganttchart: \"e9a0\",\n  Circle: \"e9a8\",\n  linesurface: \"e9a1\",\n  IconStyle: \"e9a2\",\n  Backgroundcolor: \"e9a3\",\n  DeleteDe: \"e9a4\",\n  AlignLeft: \"e9a5\",\n  AlignCenter: \"e9a6\",\n  AlignRight: \"e9a7\",\n  Column: \"e9a9\",\n  Component: \"e9aa\",\n  Customcomponent: \"e9ab\",\n  Title: \"e9ac\",\n  RichText1: \"e9ad\",\n  Carousel: \"e9ae\",\n  PageTab: \"e9af\",\n  Buriedpoint: \"e9b0\",\n  Container: \"e9b1\",\n  QuickStart: \"e9b2\",\n  Group: \"e9b3\",\n  Ungroup: \"e9b4\",\n  Front: \"e9b5\",\n  Back1: \"e9b6\",\n  Lock: \"e9b7\",\n  Unlock: \"e9b8\",\n  Association: \"e9b9\",\n  CancelAssociation: \"e9ba\",\n  Quotation: \"e9bb\",\n  ViewSet: \"e9bc\",\n  AutoScale: \"e9bd\",\n  waterfall: \"e9be\",\n  watermark: \"e9bf\",\n  history: \"e9c0\",\n  Setting: \"e9c1\",\n  Draftbox: \"e9c2\",\n  SQL: \"e9c3\",\n  Workflow: \"e9c4\",\n  Workflow2: \"e9c5\",\n  Addone: \"e9c6\",\n  Formula: \"e9c7\",\n  Dictionary: \"e9c8\",\n  statistical: \"e9c9\",\n  Recycle: \"e9ca\",\n  Mistake: \"e9cb\",\n  Tag: \"e9cc\",\n  Pendingapproval: \"e9cd\",\n  MyApplication: \"e9ce\",\n  ApplicationApproval: \"e9cf\",\n  Initiatedbyme: \"e9d0\",\n  Copiedtome: \"e9d1\",\n  Approvalnode: \"e9d2\",\n  Fillnode: \"e9d3\",\n  cc: \"e9d4\",\n  Image1: \"e9d5\",\n  Open: \"e9d6\",\n  Color: \"e9d7\",\n  Right: \"e9d8\",\n  Backward: \"e9d9\",\n  dataanalysis: \"e9da\",\n  Filter2: \"e9db\",\n  Freefilter: \"e9dc\",\n  Conditionfilter: \"e9dd\",\n  Quickfilter: \"e9de\",\n  Export1: \"e9df\",\n  Attachmentpreview: \"e9e0\",\n  BulkEdit: \"e9e1\",\n  Calculationrows: \"e9e2\",\n  SingleSelect: \"e9e3\",\n  dataview: \"e9e4\",\n  Dataid: \"e9e5\",\n  Divide: \"e9e6\",\n  Progress: \"e9e7\",\n  Star: \"e9e8\",\n  Contacts: \"e9e9\",\n  Activity: \"e9ea\",\n  Minus: \"e9eb\",\n  Plussign: \"e9ec\",\n  \"Plussign-Copy\": \"e9ed\",\n  Increased: \"e9ee\",\n  Decline: \"e9ef\",\n  indeterminate: \"e9f0\",\n  Decline1: \"e9f1\",\n  personal: \"e9f2\",\n  Warning: \"e9f3\",\n  Warning2: \"e9f4\",\n  Prompt: \"e9f5\",\n  info: \"e9f6\",\n  Cancel: \"e9f7\",\n  question1: \"e9f8\",\n  Question: \"e9f9\",\n  exclamation: \"e9fa\",\n  Warning1: \"e9fb\",\n  True: \"e9fc\",\n  Suspended: \"e9fd\",\n  Suspended1: \"e9fe\",\n  Suspended2: \"e9ff\",\n  Error: \"ea00\",\n  CombinedShape2: \"ea01\",\n  Delete1: \"ea02\",\n  Circle1: \"ea03\",\n  Decline2: \"ea04\",\n  Decline3: \"ea05\",\n  add: \"ea06\",\n  Addto: \"ea07\",\n  Reduce: \"ea08\",\n  Subtract: \"ea09\",\n  Addition: \"ea0a\",\n  Multiplication: \"ea0b\",\n  Division: \"ea0c\",\n  Bracket: \"ea0d\",\n  Reduce1: \"ea0e\",\n  Search: \"ea0f\",\n  Favorites: \"ea10\",\n  Annotation: \"ea11\",\n  Application: \"ea12\",\n  Application2: \"ea13\",\n  Applicationsview: \"ea14\",\n  Publish: \"ea15\",\n  Deploy: \"ea16\",\n  Sidetoplowerside: \"ea17\",\n  Narrow: \"ea18\",\n  Backtothenavigation: \"ea19\",\n  Forwardtothenavigation: \"ea1a\",\n  Return1: \"ea1b\",\n  Transfer: \"ea1c\",\n  Log: \"ea1d\",\n  table: \"ea1e\",\n  Form: \"ea1f\",\n  Openfield: \"ea20\",\n  Closefield: \"ea21\",\n  Receive: \"ea22\",\n  Fill: \"ea23\",\n  Fill1: \"ea24\",\n  fillet: \"ea25\",\n  rightangle: \"ea26\",\n  round: \"ea27\",\n  Send1: \"ea28\",\n  Map: \"ea29\",\n  Upward: \"ea2a\",\n  Move: \"ea2b\",\n  Downward: \"ea2c\",\n  drag: \"ea2d\",\n  TextIcon: \"ea2e\",\n  Narrow1: \"ea2f\",\n  Enlarge: \"ea30\",\n  Enlarge2: \"ea31\",\n  Cancel1: \"ea32\",\n  Retract: \"ea33\",\n  Expand: \"ea34\",\n  Retract1: \"ea35\",\n  Expand1: \"ea36\",\n  Retract2: \"ea37\",\n  Expand2: \"ea38\",\n  Switch1: \"ea39\",\n  Fullscreen: \"ea3a\",\n  Offscreen: \"ea3b\",\n  Notvisible: \"ea3c\",\n  Visible: \"ea3d\",\n  Adjust: \"ea3e\",\n  PC: \"ea3f\",\n  Mobile: \"ea40\",\n  Pad: \"ea41\",\n  Scanthecode: \"ea42\",\n  Scan: \"ea43\",\n  Screenshot: \"ea44\",\n  Rotation: \"ea45\",\n  voice: \"ea46\",\n  Video: \"ea47\",\n  Location: \"ea48\",\n  Clock: \"ea49\",\n  Print: \"ea4a\",\n  Member: \"ea4b\",\n  WorkWeChat: \"ea4c\",\n  DingTalk: \"ea4d\",\n  EnterpriseWeChat2: \"ea4e\",\n  Groupmanagement: \"ea4f\",\n  Feishu: \"ea50\",\n  Stationletter: \"ea51\",\n  Email1: \"ea52\",\n  WeChat: \"ea53\",\n  ServiceAccount: \"ea54\",\n  Subscribed: \"ea55\",\n  Dingtalk: \"ea56\",\n  Information: \"ea57\",\n  Assistant: \"ea58\",\n  ai: \"ea59\",\n  Inquireabout: \"ea5a\",\n  IFrame: \"ea5b\",\n  Integratio: \"ea5c\",\n  close: \"ea5d\",\n  Close: \"ea5e\",\n  Addgroup: \"ea5f\",\n  deletegroup: \"ea60\",\n  Relateddata: \"ea61\",\n  Enlarge1: \"ea62\",\n  Narrow2: \"ea63\",\n  \"map-search\": \"ea64\",\n  Corner: \"ea65\",\n  text1: \"ea66\",\n  Onlinemap: \"ea67\",\n  Maptile: \"ea68\",\n  Dataexport: \"ea69\",\n  Word: \"ea6a\",\n  Excel: \"ea6b\",\n  PPT: \"ea6c\",\n  PDF: \"ea6d\",\n  Video1: \"ea6e\",\n  Audio: \"ea6f\",\n  Txt: \"ea70\",\n  Zip: \"ea71\",\n  file: \"ea72\",\n  richtext: \"ea73\",\n  Onlinemap1: \"ea74\",\n  Maptile1: \"ea75\",\n  Ai2: \"ea76\",\n  Guide: \"ea77\",\n  Button: \"ea78\",\n  Menus: \"ea79\",\n  \"richtext-Copy\": \"ea7a\",\n  \"richtext-Copy-2\": \"ea7b\",\n  \"richtext-Copy-3\": \"ea7c\",\n  \"richtext-Copy-4\": \"ea7d\",\n  Split: \"ea7e\",\n  AI: \"ea7f\",\n  Form1: \"ea80\",\n  Fields: \"ea81\",\n  Project: \"ea82\",\n  More1: \"ea83\",\n  Notstarted: \"ea84\",\n  Inprocess: \"ea85\",\n  Completed: \"ea86\",\n  Completed1: \"ea87\",\n  More2: \"ea88\",\n  AIoffice: \"ea89\",\n  statistics: \"ea8a\",\n  Expand3: \"ea8b\",\n  list: \"ea8c\",\n  \"list-Copy\": \"ea8d\",\n  Grid: \"ea8e\",\n  Calendar: \"ea8f\",\n  Schedule: \"ea90\",\n  tableview: \"ea91\",\n  Gallery: \"ea92\",\n  Copy1: \"ea93\",\n  Mailbox: \"ea94\",\n  Automation1: \"ea95\",\n  Avatar: \"ea96\"\n};\nfunction te(e) {\n  const t = N[e];\n  return t ? `&#x${t};` : void 0;\n}\nconst ne = (e, t, r) => {\n  if (!r)\n    return {\n      translated: \"\"\n    };\n  const n = new Map(t.map((o) => [o.widget.widgetName, o.label]));\n  for (const o of t)\n    if (o.widget.type === \"subform\" && o.widget.items) {\n      for (const s of o.widget.items)\n        if (\"widget\" in s && !(\"options\" in s)) {\n          const l = `${o.widget.widgetName}.${s.widget.widgetName}`;\n          n.set(l, s.label);\n        }\n    }\n  const a = [], i = e.replace(\n    /\\$\\{(_widget_\\d+(?:\\._widget_\\d+)?)\\}/g,\n    (o, s) => {\n      const { translated: l, meta: u } = r(s);\n      return u && a.push(u), l;\n    }\n  );\n  return {\n    meta: a.length ? h(a) : null,\n    translated: (i != null ? i : \"\").trim()\n  };\n};\nexport {\n  H as DATA_COUNT_PER_BATCH,\n  C as FIELD_TYPE_OPERATOR_MAP,\n  I as GetLoadingMsg,\n  B as GetPartErrMsg,\n  D as GetQueryResult,\n  U as GetSafeFormStructure,\n  A as IsErrorPart,\n  R as IsFakeMsgPart,\n  O as IsFileGroupPart,\n  E as IsFilePart,\n  F as IsLoadingPart,\n  T as IsQueryResultPart,\n  z as OPERATOR_LABEL_MAP,\n  q as WHITE_LIST_FIELDS_SET,\n  V as bsConditionParse2Condition,\n  Z as conditionStringify2bsCondition,\n  J as createFieldPartsExtractor,\n  j as createGetFieldJsonInfo,\n  G as createPartTypeChecker,\n  c as extractTextPartMeta,\n  h as flatArr,\n  K as getAvailableOperators,\n  X as getDefaultOperator,\n  te as getIconUnicode,\n  L as getMetaErrorMsg,\n  $ as imageUrlToBase64,\n  Y as isHelperCondMet,\n  ee as mergeConsecutiveTargets,\n  ne as promptParser,\n  Q as safeParseJson,\n  W as valueNormalizer\n};\n//# sourceMappingURL=ai-feat-utils.js.map\n","import { getIconUnicode } from \"@baishuyun/ai-feat-utils\";\n\nfunction getFormIconClass(icon: number): string {\n  const isNew = icon >= 25;\n  const newStr = isNew ? '-new' : '';\n  return `node-icon icon-bsy-form${newStr} icon${newStr}-bsy-form-${icon}`;\n}\n\nexport const AppIcon = ({\n  name\n}: {\n  name: number | string;\n}) => {\n  return (\n    <div className={\"imgbg-bsy-app imgbg-bsy-app-\" + name}/>\n  );\n}\n\nexport const FontIcon = ({\n  code,\n  name,\n  className,\n  style,\n  color,\n}: {\n  code?: string;\n  name?: number;\n  className?: string;\n  style?: React.CSSProperties;\n  color?: string;\n}) => {\n  if (!code && !name) {\n    return null;\n  }\n\n  if (code) {\n    return (\n      <i\n        className={`sdk-icon ${className || ''}`}\n        style={{ ...style, color }}\n        dangerouslySetInnerHTML={{ __html: code }}\n      />\n    );\n  }\n\n  const iconCode = code || getIconUnicode(name?.toString() || '');\n  if (!iconCode) {\n    return (\n      <i\n        className={getFormIconClass(name!)}\n        style={{ fontSize: 16, lineHeight: 1 }}\n      />\n    )\n  }\n\n  return (\n    <i\n      className={`sdk-icon ${className || ''}`}\n      style={{ ...style, color }}\n      dangerouslySetInnerHTML={{ __html: iconCode }}\n    />\n  );\n};\n","import { useState } from 'react';\nimport { Check } from 'lucide-react';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { usePortalContainer } from '../../../hooks/use-portal-container';\nimport { FontIcon } from '../../../components/font-icon';\n\nexport type SortOrder = 'newest' | 'oldest';\n\nexport interface AgentSortSelectProps {\n  value?: SortOrder;\n  onChange?: (value: SortOrder) => void;\n  className?: string;\n}\n\nconst SORT_OPTIONS: { id: SortOrder; label: string }[] = [\n  { id: 'newest', label: '最新' },\n  { id: 'oldest', label: '最早' },\n];\n\nexport const AgentSortSelect = ({\n  value = 'newest',\n  onChange,\n  className,\n}: AgentSortSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const currentLabel = SORT_OPTIONS.find((o) => o.id === value)?.label ?? '最新';\n\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-weekdays-select-portal');\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <button\n          type=\"button\"\n          ref={setTriggerRef}\n          className={cn(\n            'flex items-center gap-[6px] px-[10px] h-[34px] rounded-[4px] bg-transparent',\n            'text-[14px] text-[#030303] leading-[normal] whitespace-nowrap',\n            'hover:bg-[#EFF0F6]',\n            open && 'bg-[#EFF0F6]',\n            transCls,\n            className,\n          )}\n        >\n          <FontIcon code=\"&#xe86b;\" className='text-[16px]' />\n          <span>{currentLabel}</span>\n        </button>\n      </PopoverTrigger>\n      <PopoverContent\n        align=\"start\"\n        sideOffset={4}\n        className=\"w-auto min-w-[100px] rounded-[4px] bg-white p-[4px] shadow-[0px_0px_8px_rgba(0,0,0,0.1)]\"\n        portalContainer={portalContainer}\n      >\n        {SORT_OPTIONS.map((option) => {\n          const isSelected = value === option.id;\n          return (\n            <button\n              key={option.id}\n              type=\"button\"\n              onClick={() => {\n                onChange?.(option.id);\n                setOpen(false);\n              }}\n              className={cn(\n                'flex items-center justify-between w-full h-[34px] px-[10px] rounded-[4px] text-left',\n                isSelected ? 'bg-[#EFF0F6] text-[#0265FF]' : 'bg-white text-[#030303] hover:bg-[#EFF0F6]',\n                transCls,\n              )}\n            >\n              <span className=\"text-[14px] leading-[normal] whitespace-nowrap\">\n                {option.label}\n              </span>\n              <Check\n                size={16}\n                className={cn(\n                  'shrink-0',\n                  isSelected ? 'opacity-100' : 'opacity-0',\n                )}\n              />\n            </button>\n          );\n        })}\n      </PopoverContent>\n    </Popover>\n  );\n};\n","import {\n  forwardRef,\n  useState,\n  useRef,\n  useEffect,\n  useMemo,\n  useCallback,\n  useLayoutEffect,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { SolidArrowDownIcon, SearchIcon } from '../../bs-icons';\n\nconst FolderIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n    <path d=\"M13.9004 15H2.65039C2.25257 15 1.87104 14.842 1.58973 14.5607C1.30843 14.2794 1.15039 13.8978 1.15039 13.5V4.5C1.15039 4.10218 1.30843 3.72064 1.58973 3.43934C1.87104 3.15804 2.25257 3 2.65039 3H7.15039L8.65039 4.5H13.9004C14.0974 4.5 14.2924 4.5388 14.4744 4.61418C14.6564 4.68956 14.8218 4.80005 14.9611 4.93934C15.1003 5.07863 15.2108 5.24399 15.2862 5.42597C15.3616 5.60796 15.4004 5.80302 15.4004 6H2.65039V13.5L4.25539 7.5H16.0754C16.1927 7.49595 16.3093 7.51947 16.4158 7.56867C16.5223 7.61788 16.6158 7.69139 16.6888 7.78331C16.7617 7.87523 16.8121 7.98298 16.8358 8.0979C16.8595 8.21282 16.856 8.33171 16.8254 8.445L15.3704 13.875C15.2865 14.1999 15.0961 14.4873 14.8296 14.6913C14.5631 14.8952 14.2359 15.0039 13.9004 15Z\" fill=\"#6F81BD\"/>\n  </svg>\n);\n\n// ── Types ─────────────────────────────────────────────────────────\n\nexport interface FormSelectItem {\n  id: string;\n  name: string;\n  icon?: number;\n  type?: string;\n  parent?: string;\n  itemType?: 'form' | 'group';\n}\n\nexport interface FormSelectChangeResult {\n  form: FormSelectItem;\n}\n\nexport interface FormSelectProps {\n  items: FormSelectItem[];\n  value?: string;\n  defaultValue?: string;\n  onChange?: (result: FormSelectChangeResult) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\n// ── Tree types ────────────────────────────────────────────────────\n\ninterface FormTreeItem {\n  id: string;\n  name: string;\n  icon: number;\n  type: string;\n  itemType: 'form' | 'group';\n  children: FormTreeItem[];\n  depth: number;\n  form: FormSelectItem | null;\n}\n\n// ── Depth padding ─────────────────────────────────────────────────\n\nconst DEPTH_PADDING: Record<number, string> = {\n  0: 'pl-[10px]',\n  1: 'pl-[32px]',\n  2: 'pl-[54px]',\n  3: 'pl-[76px]',\n};\n\nfunction getDepthPadding(depth: number): string {\n  return DEPTH_PADDING[Math.min(depth, 3)] ?? DEPTH_PADDING[3];\n}\n\n// ── Tree builder ──────────────────────────────────────────────────\n\nfunction buildFormTree(items: FormSelectItem[], searchQuery: string): FormTreeItem[] {\n  const lowerQuery = searchQuery.toLowerCase().trim();\n\n  // Build parent → children map\n  const childrenByParent = new Map<string, FormSelectItem[]>();\n  for (const item of items) {\n    const parentKey = item.parent || '0';\n    if (!childrenByParent.has(parentKey)) {\n      childrenByParent.set(parentKey, []);\n    }\n    childrenByParent.get(parentKey)!.push(item);\n  }\n\n  // Root parents: any parent key that is '0' or not in items\n  const allItemIds = new Set(items.map((i) => i.id));\n  const allParentKeys = new Set(childrenByParent.keys());\n  const rootParents = Array.from(allParentKeys).filter(\n    (p) => p === '0' || !allItemIds.has(p),\n  );\n\n  function buildRecursive(parentId: string, depth: number): FormTreeItem[] {\n    const childItems = childrenByParent.get(parentId) || [];\n    const nodes: FormTreeItem[] = [];\n\n    for (const item of childItems) {\n      const isGroup = item.itemType === 'group';\n      const children = buildRecursive(item.id, depth + 1);\n      const nameMatch = !lowerQuery || item?.name?.toLowerCase().includes(lowerQuery);\n\n      if (isGroup) {\n        if (nameMatch || children.length > 0) {\n          nodes.push({\n            id: item.id,\n            name: item.name,\n            icon: item.icon ?? 0,\n            type: item.type ?? 'group',\n            itemType: 'group',\n            children,\n            depth,\n            form: item,\n          });\n        }\n      } else {\n        if (nameMatch) {\n          nodes.push({\n            id: item.id,\n            name: item.name,\n            icon: item.icon ?? 0,\n            type: item.type ?? 'form',\n            itemType: 'form',\n            children: [],\n            depth,\n            form: item,\n          });\n        }\n      }\n    }\n\n    return nodes;\n  }\n\n  const result: FormTreeItem[] = [];\n  for (const rootId of rootParents) {\n    result.push(...buildRecursive(rootId, 0));\n  }\n  return result;\n}\n\n// ── Form Icon ─────────────────────────────────────────────────────\n\nfunction getFormIconClass(icon: number): string {\n  const isNew = icon >= 25;\n  const newStr = isNew ? '-new' : '';\n  return `node-icon icon-bsy-form${newStr} icon${newStr}-bsy-form-${icon}`;\n}\n\n// ── Entry Item ────────────────────────────────────────────────────\n\nfunction FormEntryItem({\n  item,\n  depth,\n  isSelected,\n  onClick,\n}: {\n  item: FormTreeItem;\n  depth: number;\n  isSelected: boolean;\n  onClick: () => void;\n}) {\n  return (\n    <div\n      className={cn(\n        'flex items-center justify-between h-[34px] px-[10px] cursor-pointer rounded-[4px] shrink-0',\n        getDepthPadding(depth),\n        isSelected ? 'bg-[#F0F6FF] text-[#0265FF]' : 'text-[#030303] hover:bg-[#EFF0F6]',\n        transCls,\n      )}\n      onClick={onClick}\n    >\n      <span className=\"flex items-center gap-[6px] min-w-0 flex-1\">\n        <i\n          className={getFormIconClass(item.icon)}\n          style={{ fontSize: 16, lineHeight: 1 }}\n        />\n        <span className=\"text-[14px] leading-[normal] truncate\">\n          {item.name}\n        </span>\n      </span>\n    </div>\n  );\n}\n\n// ── Tree Item Node ────────────────────────────────────────────────\n\nfunction FormTreeItemNode({\n  item,\n  selectedFormId,\n  onSelect,\n}: {\n  item: FormTreeItem;\n  selectedFormId: string | undefined;\n  onSelect: (result: FormSelectChangeResult) => void;\n}) {\n  const [expanded, setExpanded] = useState(true);\n\n  if (item.itemType === 'group') {\n    return (\n      <div>\n        <div\n          className={cn(\n            'flex items-center gap-[6px] h-[34px] px-[10px] cursor-pointer rounded-[4px]',\n            getDepthPadding(item.depth),\n            'hover:bg-[#EFF0F6]',\n            transCls,\n          )}\n          onClick={() => setExpanded(!expanded)}\n        >\n          <span\n            className={cn(\n              'shrink-0 flex items-center justify-center w-[16px] h-[16px] text-[#666666]',\n              transCls,\n              expanded && 'rotate-90',\n            )}\n          >\n            <SolidArrowDownIcon className=\"-rotate-90\" size={16} />\n          </span>\n          <FolderIcon />\n          <span className=\"text-[14px] text-[#030303] truncate\">\n            {item.name}\n          </span>\n        </div>\n        {expanded &&\n          item.children.map((child) => (\n            <FormTreeItemNode\n              key={child.id}\n              item={child}\n              selectedFormId={selectedFormId}\n              onSelect={onSelect}\n            />\n          ))}\n      </div>\n    );\n  }\n\n  return (\n    <FormEntryItem\n      item={item}\n      depth={item.depth}\n      isSelected={selectedFormId === item.id}\n      onClick={() => {\n        if (item.form) {\n          onSelect({ form: item.form });\n        }\n      }}\n    />\n  );\n}\n\n// ── Popover ───────────────────────────────────────────────────────\n\nfunction FormPopover({\n  searchQuery,\n  onSearchChange,\n  tree,\n  selectedFormId,\n  onSelect,\n  hasSearch,\n}: {\n  searchQuery: string;\n  onSearchChange: (v: string) => void;\n  tree: FormTreeItem[];\n  selectedFormId: string | undefined;\n  onSelect: (result: FormSelectChangeResult) => void;\n  hasSearch: boolean;\n}) {\n  return (\n    <div\n      className={cn(\n        'bg-white rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[4px]',\n        'flex flex-col gap-[4px]',\n      )}\n    >\n      {/* Search input */}\n      <div className=\"flex items-center gap-[6px] border border-[#E0E0E0] rounded-[4px] h-[30px] px-[10px] py-[5px]\">\n        <SearchIcon />\n        <input\n          type=\"text\"\n          value={searchQuery}\n          onChange={(e) => onSearchChange(e.target.value)}\n          placeholder=\"输入表单名称来搜索\"\n          className=\"flex-1 outline-none text-[14px] placeholder:text-[#999999] bg-transparent min-w-0 text-[#030303]\"\n        />\n      </div>\n\n      {/* Form list */}\n      <div className=\"flex flex-col gap-0 max-h-[400px] overflow-y-auto\">\n        {tree.length > 0 ? (\n          tree.map((node) => (\n            <FormTreeItemNode\n              key={node.id}\n              item={node}\n              selectedFormId={selectedFormId}\n              onSelect={onSelect}\n            />\n          ))\n        ) : hasSearch ? (\n          <div className=\"text-[12px] text-[#999999] py-[8px] text-center\">\n            无匹配结果\n          </div>\n        ) : (\n          <div className=\"text-[12px] text-[#999999] py-[8px] text-center\">\n            暂无表单\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n\n// ── Main Component ────────────────────────────────────────────────\n\nexport const FormSelect = forwardRef<HTMLDivElement, FormSelectProps>(\n  (\n    {\n      items,\n      value: controlledValue,\n      defaultValue,\n      onChange,\n      placeholder = '请选择表单',\n      disabled = false,\n      className,\n    },\n    ref,\n  ) => {\n    const [isOpen, setIsOpen] = useState(false);\n    const [searchQuery, setSearchQuery] = useState('');\n    const [internalValue, setInternalValue] = useState<string | undefined>(\n      defaultValue,\n    );\n    const triggerRef = useRef<HTMLDivElement>(null);\n    const popoverRef = useRef<HTMLDivElement>(null);\n    const [popoverStyle, setPopoverStyle] = useState<React.CSSProperties>({});\n    const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n    const selectedFormId = controlledValue ?? internalValue;\n\n    // Build the form tree\n    const tree = useMemo(() => {\n      return buildFormTree(items, searchQuery);\n    }, [items, searchQuery]);\n\n    // Find selected form\n    const selectedForm = useMemo(() => {\n      if (!selectedFormId) return null;\n      return items.find((item) => item.id === selectedFormId && item.itemType !== 'group') ?? null;\n    }, [items, selectedFormId]);\n\n    const hasSearch = searchQuery.trim().length > 0;\n\n    // ── Position helpers ──────────────────────────────────────────\n\n    const updatePopoverPosition = useCallback(() => {\n      if (!triggerRef.current) return;\n      const rect = triggerRef.current.getBoundingClientRect();\n      setPopoverStyle({\n        position: 'fixed',\n        top: rect.bottom + 4,\n        left: rect.left,\n        minWidth: Math.max(rect.width, 240),\n        zIndex: 9999,\n        pointerEvents: 'auto',\n      });\n    }, []);\n\n    const setTriggerRef = useCallback((node: HTMLDivElement | null) => {\n      (triggerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n      if (!node) {\n        setPortalContainer(null);\n        return;\n      }\n      const rootNode = node.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        const existing = rootNode.querySelector<HTMLElement>(\n          '[data-bs-form-select-portal]',\n        );\n        if (existing) {\n          setPortalContainer(existing);\n          return;\n        }\n        // Append portal inside the React root container so React event\n        // delegation sees events from portal content. The React root is\n        // the element that ReactDOM.createRoot() was called on.\n        const reactRoot = rootNode.getElementById('ai-office-container') || rootNode;\n        const container = document.createElement('div');\n        container.setAttribute('data-bs-form-select-portal', 'true');\n        reactRoot.appendChild(container);\n        setPortalContainer(container);\n        return;\n      }\n      setPortalContainer(null);\n    }, []);\n\n    // ── Handlers ──────────────────────────────────────────────────\n\n    const handleClose = useCallback(() => {\n      setIsOpen(false);\n      setSearchQuery('');\n    }, []);\n\n    const handleToggle = useCallback(() => {\n      if (disabled) return;\n      if (isOpen) {\n        handleClose();\n      } else {\n        setIsOpen(true);\n        updatePopoverPosition();\n      }\n    }, [disabled, isOpen, handleClose, updatePopoverPosition]);\n\n    const handleSelect = useCallback(\n      (result: FormSelectChangeResult) => {\n        setInternalValue(result.form.id);\n        onChange?.(result);\n        handleClose();\n      },\n      [onChange, handleClose],\n    );\n\n    // ── Event listeners ───────────────────────────────────────────\n\n    // Click-outside: close popover when clicking outside both the trigger and popover.\n    // Uses native mousedown on the trigger's root node (ShadowRoot or document) so it\n    // works regardless of stacking contexts. Mousedown events on the popover itself are\n    // stopped from propagating, so this listener only sees external clicks.\n    useEffect(() => {\n      if (!isOpen) return;\n\n      const rootNode = triggerRef.current?.getRootNode() as Document | ShadowRoot | undefined;\n      const eventTarget = rootNode ?? document;\n\n      const handleClickOutside = (e: Event) => {\n        const target = e.target as HTMLElement;\n        if (\n          (popoverRef.current && popoverRef.current.contains(target)) ||\n          (triggerRef.current && triggerRef.current.contains(target))\n        ) {\n          return;\n        }\n        handleClose();\n      };\n\n      eventTarget.addEventListener('mousedown', handleClickOutside);\n\n      return () => {\n        eventTarget.removeEventListener('mousedown', handleClickOutside);\n      };\n    }, [isOpen, handleClose]);\n\n    // Keep popover positioned correctly when the viewport resizes\n    useEffect(() => {\n      if (!isOpen) return;\n\n      const handleResize = () => {\n        updatePopoverPosition();\n      };\n\n      window.addEventListener('resize', handleResize);\n      return () => window.removeEventListener('resize', handleResize);\n    }, [isOpen, updatePopoverPosition]);\n\n    // Poll popover position every frame to track scroll (scroll events aren't\n    // composed, so they don't cross shadow boundaries)\n    useLayoutEffect(() => {\n      if (!isOpen) return;\n\n      let rafId: number;\n      const poll = () => {\n        updatePopoverPosition();\n        rafId = requestAnimationFrame(poll);\n      };\n      rafId = requestAnimationFrame(poll);\n\n      return () => cancelAnimationFrame(rafId);\n    }, [isOpen, updatePopoverPosition]);\n\n    // Keyboard: close on Escape\n    useEffect(() => {\n      if (!isOpen) return;\n\n      const handleEscape = (e: Event) => {\n        if ((e as KeyboardEvent).key === 'Escape') {\n          handleClose();\n        }\n      };\n\n      const rootNode = triggerRef.current?.getRootNode() as Document | ShadowRoot | undefined;\n      const eventTarget = rootNode ?? document;\n      eventTarget.addEventListener('keydown', handleEscape);\n      return () => eventTarget.removeEventListener('keydown', handleEscape);\n    }, [isOpen, handleClose]);\n\n    // Prevent native events inside the popover from bubbling to document-\n    // level listeners (e.g. Radix DismissableLayer, react-remove-scroll).\n    // Without this, a parent Drawer would: (a) close on click, (b) capture\n    // wheel events making the popover list unscrollable.\n    useEffect(() => {\n      if (!isOpen) return;\n      const el = popoverRef.current;\n      if (!el) return;\n\n      const blockEvents = (e: Event) => e.stopPropagation();\n      el.addEventListener('mousedown', blockEvents);\n      el.addEventListener('pointerdown', blockEvents);\n      el.addEventListener('wheel', blockEvents);\n      return () => {\n        el.removeEventListener('mousedown', blockEvents);\n        el.removeEventListener('pointerdown', blockEvents);\n        el.removeEventListener('wheel', blockEvents);\n      };\n    }, [isOpen]);\n\n    // ── Render ────────────────────────────────────────────────────\n\n    return (\n      <div ref={ref} className={cn('relative inline-flex min-w-0 w-full', className)}>\n        {/* Trigger */}\n        <div\n          ref={setTriggerRef}\n          className={cn(\n            'flex items-center gap-[10px] px-[10px] py-[7px] rounded-[4px] cursor-pointer select-none w-full',\n            'bg-white border',\n            isOpen\n              ? 'border-[#0265FF]'\n              : 'border-[#E0E0E0] hover:border-[#0265FF]',\n            transCls,\n            disabled && 'opacity-50 cursor-not-allowed',\n          )}\n          onClick={handleToggle}\n        >\n          <span className=\"flex items-center gap-[6px] min-w-0 flex-1\">\n            {selectedForm ? (\n              <>\n                <i\n                  className={getFormIconClass(selectedForm.icon ?? 0)}\n                  style={{ fontSize: 16, lineHeight: 1 }}\n                />\n                <span className=\"text-[14px] text-[#030303] leading-[normal] truncate\">\n                  {selectedForm.name}\n                </span>\n              </>\n            ) : (\n              <span className=\"text-[14px] text-[#999999] leading-[normal] truncate\">\n                {placeholder}\n              </span>\n            )}\n          </span>\n          <span\n            className={cn(\n              'shrink-0 flex items-center justify-center w-[16px] h-[16px] text-[#666666]',\n              transCls,\n              isOpen && 'rotate-180',\n            )}\n          >\n            <SolidArrowDownIcon size={16} />\n          </span>\n        </div>\n\n        {/* Popover */}\n        {isOpen &&\n          createPortal(\n            <div ref={popoverRef} style={popoverStyle}>\n              <FormPopover\n                searchQuery={searchQuery}\n                onSearchChange={setSearchQuery}\n                tree={tree}\n                selectedFormId={selectedFormId}\n                onSelect={handleSelect}\n                hasSearch={hasSearch}\n              />\n            </div>,\n            portalContainer || document.body,\n          )}\n      </div>\n    );\n  },\n);\n\nFormSelect.displayName = 'FormSelect';\n","import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { cn } from '../lib/utils';\nimport { CheckerInBoxIcon } from './bs-icons';\n\nconst SquareInBoxIcon = () => {\n  // size 8, border 1px svg\n  return (\n    <svg\n      width=\"8\"\n      height=\"8\"\n      viewBox=\"0 0 8 8\"\n      // fill=\"currentColor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <rect x=\"0.5\" y=\"0.5\" width=\"7\" height=\"7\" rx=\"1\" fill=\"#0265ff\" />\n    </svg>\n  );\n};\n\nexport type SquareCheckerProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> & {\n  /** Optional label rendered beside the checkbox */\n  children?: React.ReactNode;\n  readonly?: boolean;\n  intermediate?: boolean;\n};\n\nexport const SquareChecker = React.forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  SquareCheckerProps\n>(({ className, children, id, readonly, disabled, intermediate, ...props }, ref) => {\n  const generatedId = React.useId();\n  const checkboxId = id ?? generatedId;\n\n  return (\n    <label\n      htmlFor={checkboxId}\n      className={cn(\n        'inline-flex items-center gap-[6px] select-none text-[#121111] text-[14px]',\n        disabled ? 'cursor-not-allowed' : 'cursor-pointer',\n        {\n          'pointer-events-none': readonly,\n        }\n      )}\n    >\n      <CheckboxPrimitive.Root\n        ref={ref}\n        id={checkboxId}\n        disabled={disabled}\n        className={cn(\n          // base layout\n          'inline-flex shrink-0 items-center justify-center',\n          'w-[16px] h-[16px] rounded-[2px] box-border border',\n          'transition-colors duration-200',\n          'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#0265FF] focus-visible:ring-offset-1',\n          // normal: gray border, white bg\n          'border-[#E0E0E0] bg-white',\n          // hover: blue border (browsers suppress hover on disabled <button>)\n          'hover:border-[#0265FF]',\n          // checked: blue fill\n          'data-[state=checked]:bg-[#0265FF] data-[state=checked]:border-[#0265FF]',\n          // disabled unchecked: gray bg + gray border\n          'disabled:cursor-not-allowed disabled:bg-[#F0F0F0] disabled:border-[#C2C2C2]',\n          // disabled checked: use muted gray fill\n          'disabled:data-[state=checked]:bg-[#C2C2C2] disabled:data-[state=checked]:border-[#C2C2C2]',\n          // indeterminate: blue fill\n          intermediate && 'bg-white border-[#0265FF] text-[#0265FF]',\n          className,\n          {\n            'opacity-50': readonly,\n          }\n        )}\n        {...props}\n      >\n        <CheckboxPrimitive.Indicator className=\"text-white\" forceMount={intermediate || undefined}>\n          {intermediate ? <SquareInBoxIcon /> : <CheckerInBoxIcon />}\n        </CheckboxPrimitive.Indicator>\n      </CheckboxPrimitive.Root>\n\n      {children != null && (\n        <span className={cn('text-sm leading-none', disabled && 'text-[#C2C2C2]')}>{children}</span>\n      )}\n    </label>\n  );\n});\n\nSquareChecker.displayName = 'SquareChecker';\n","import { useState, useCallback, useMemo, useRef } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { SquareChecker } from '../../square-checker';\nimport type { IAppGroup, IAppGroupItem } from '@baishuyun/types';\nimport { AppIcon } from '../../font-icon';\nimport { SearchIcon } from '../../bs-icons';\n\n// ── Tree Node Type ────────────────────────────────────────────────\n\nexport interface AppTreeNode {\n  id: string;\n  label: string;\n  type: 'group' | 'app' | 'item';\n  color?: string;\n  children?: AppTreeNode[];\n  /** Original app data (for leaf app nodes) */\n  data?: IAppGroupItem;\n}\n\n// ── Converter: IAppGroup[] → AppTreeNode[] ────────────────────────\n\nexport function groupsToAppTreeNodes(groups: IAppGroup[]): AppTreeNode[] {\n  return groups.map((group) => ({\n    id: group._id,\n    label: group.name,\n    type: 'group' as const,\n    children: group.apps.map((app) => ({\n      id: app._id,\n      label: app.appname,\n      type: 'app' as const,\n      color: String(app.style?.color || '#666666'),\n      data: app,\n    })),\n  }));\n}\n\n// ── Inline SVG Icons ──────────────────────────────────────────────\n\n/** Folder/group icon (16x16) */\nconst FolderIcon = () => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n    <path d=\"M13.9004 15H2.65039C2.25257 15 1.87104 14.842 1.58973 14.5607C1.30843 14.2794 1.15039 13.8978 1.15039 13.5V4.5C1.15039 4.10218 1.30843 3.72064 1.58973 3.43934C1.87104 3.15804 2.25257 3 2.65039 3H7.15039L8.65039 4.5H13.9004C14.0974 4.5 14.2924 4.5388 14.4744 4.61418C14.6564 4.68956 14.8218 4.80005 14.9611 4.93934C15.1003 5.07863 15.2108 5.24399 15.2862 5.42597C15.3616 5.60796 15.4004 5.80302 15.4004 6H2.65039V13.5L4.25539 7.5H16.0754C16.1927 7.49595 16.3093 7.51947 16.4158 7.56867C16.5223 7.61788 16.6158 7.69139 16.6888 7.78331C16.7617 7.87523 16.8121 7.98298 16.8358 8.0979C16.8595 8.21282 16.856 8.33171 16.8254 8.445L15.3704 13.875C15.2865 14.1999 15.0961 14.4873 14.8296 14.6913C14.5631 14.8952 14.2359 15.0039 13.9004 15Z\" fill=\"#6F81BD\"/>\n  </svg>\n);\n\n/** App grid icon (16x16), colorized */\n// const AppGridIcon = ({ color }: { color?: string }) => {\n//   const c = color || '#666666';\n//   return (\n//     <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n//       <rect x=\"1.5\" y=\"1.5\" width=\"5\" height=\"5\" rx=\"1\" fill={c} opacity=\"0.2\" />\n//       <rect x=\"1.5\" y=\"1.5\" width=\"5\" height=\"5\" rx=\"1\" stroke={c} strokeWidth=\"1.2\" />\n//       <rect x=\"9.5\" y=\"1.5\" width=\"5\" height=\"5\" rx=\"1\" fill={c} opacity=\"0.2\" />\n//       <rect x=\"9.5\" y=\"1.5\" width=\"5\" height=\"5\" rx=\"1\" stroke={c} strokeWidth=\"1.2\" />\n//       <rect x=\"1.5\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"1\" fill={c} opacity=\"0.2\" />\n//       <rect x=\"1.5\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"1\" stroke={c} strokeWidth=\"1.2\" />\n//       <rect x=\"9.5\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"1\" fill={c} opacity=\"0.2\" />\n//       <rect x=\"9.5\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"1\" stroke={c} strokeWidth=\"1.2\" />\n//     </svg>\n//   );\n// };\n\n/** Generic item icon (16x16), colorized — used for leaf items */\n// const ItemIcon = ({ color }: { color?: string }) => (\n//   <AppGridIcon color={color} />\n// );\n\n/** Collapse/expand toggle (18x18) — shown on expandable parent nodes */\nconst ToggleIcon = ({ expanded }: { expanded: boolean }) => (\n  <svg\n    width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: expanded ? 'rotate(0deg)' : 'rotate(-90deg)' }}\n  >\n    <path d=\"M6 8L9 11L12 8\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\n/** Close X icon (12x12) for chip dismiss */\nconst CloseIcon = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M3 3L9 9M9 3L3 9\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\n/** More dots icon (12x12) for overflow chip */\nconst MoreIcon = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0\">\n    <circle cx=\"2\" cy=\"6\" r=\"1\" fill=\"#999999\" />\n    <circle cx=\"6\" cy=\"6\" r=\"1\" fill=\"#999999\" />\n    <circle cx=\"10\" cy=\"6\" r=\"1\" fill=\"#999999\" />\n  </svg>\n);\n\n/** Dropdown chevron in trigger — matches Figma trigger icon */\nconst DropdownChevron = ({ open }: { open: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n  >\n    <path d=\"M4 6L8 10L12 6\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\n// ── Types ─────────────────────────────────────────────────────────\n\nexport const ALL_APPS_VALUE = '__all__';\n\nexport interface AppSelectProps {\n  /** Tree nodes to display. Use groupsToAppTreeNodes() to convert IAppGroup[] */\n  nodes: AppTreeNode[];\n  /** Selection mode */\n  mode?: 'single' | 'multiple';\n  /** Controlled value — selected node id(s) */\n  value?: string | string[];\n  /** Uncontrolled default value */\n  defaultValue?: string | string[];\n  /** Change handler — returns selected id(s) */\n  onChange?: (value: string | string[]) => void;\n  /** Placeholder when no selection */\n  placeholder?: string;\n  /** Search placeholder */\n  searchPlaceholder?: string;\n  /** Disable the control */\n  disabled?: boolean;\n  /** Max visible chips in multi-select trigger (default 4) */\n  maxVisibleChips?: number;\n  /** Additional className */\n  className?: string;\n  /** Show a \"全部应用\" (All Apps) item at the top. Only effective in single mode. */\n  showAll?: boolean;\n  popoverContentOnly?: boolean; // for testing: render only the popover content without the trigger\n}\n\n// ── Helpers ───────────────────────────────────────────────────────\n\n/** Flatten tree into a map of id → node */\nfunction flattenNodes(nodes: AppTreeNode[]): Map<string, AppTreeNode> {\n  const map = new Map<string, AppTreeNode>();\n  const walk = (list: AppTreeNode[]) => {\n    for (const n of list) {\n      map.set(n.id, n);\n      if (n.children) walk(n.children);\n    }\n  };\n  walk(nodes);\n  return map;\n}\n\n// ── Component ─────────────────────────────────────────────────────\n\nexport const AppSelect = ({\n  nodes,\n  mode = 'single',\n  popoverContentOnly,\n  showAll = false,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  placeholder = '请选择',\n  searchPlaceholder = '输入应用名称来搜索',\n  disabled = false,\n  maxVisibleChips = 4,\n  className,\n}: AppSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [searchQuery, setSearchQuery] = useState('');\n  const [internalValue, setInternalValue] = useState<string | string[]>(\n    defaultValue ?? (mode === 'multiple' ? [] : '')\n  );\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n  const [triggerWidth, setTriggerWidth] = useState<number>(0);\n  const triggerBtnRef = useRef<HTMLButtonElement | null>(null);\n\n  // Expanded node IDs (only nodes with children can be expanded)\n  const [expandedIds, setExpandedIds] = useState<Set<string>>(() => {\n    // Start with root nodes expanded\n    const s = new Set<string>();\n    const initExpand = (list: AppTreeNode[], depth: number) => {\n      for (const n of list) {\n        if (n.children && n.children.length > 0 && depth < 2) {\n          s.add(n.id);\n          initExpand(n.children, depth + 1);\n        }\n      }\n    };\n    initExpand(nodes, 0);\n    return s;\n  });\n\n  // Controlled vs uncontrolled value\n  const resolvedValue = controlledValue !== undefined ? controlledValue : internalValue;\n\n  // Flat lookup\n  const nodeMap = useMemo(() => flattenNodes(nodes), [nodes]);\n\n  // Selected ids as Set\n  const selectedIds = useMemo(() => {\n    if (mode === 'multiple') {\n      return new Set(Array.isArray(resolvedValue) ? resolvedValue : []);\n    }\n    return new Set(typeof resolvedValue === 'string' && resolvedValue ? [resolvedValue] : []);\n  }, [resolvedValue, mode]);\n\n  // Selected labels for trigger\n  const selectedLabels = useMemo(() => {\n    const ids = Array.isArray(resolvedValue) ? resolvedValue : (resolvedValue ? [resolvedValue] : []);\n    return ids.map((id) => nodeMap.get(id)?.label ?? id);\n  }, [resolvedValue, nodeMap]);\n\n  const selectedAppLabel =\n    mode === 'single' && selectedLabels.length === 1\n      ? selectedLabels[0] === ALL_APPS_VALUE\n        ? '全部应用'\n        : selectedLabels[0]\n      : null;\n\n  // ── Tree filter by search ──────────────────────────────────────\n\n  const filteredNodes = useMemo(() => {\n    if (!searchQuery.trim()) return nodes;\n    const q = searchQuery.toLowerCase();\n\n    const filterTree = (list: AppTreeNode[]): AppTreeNode[] => {\n      const result: AppTreeNode[] = [];\n      for (const node of list) {\n        const labelMatch = node?.label?.toLowerCase().includes(q);\n        const filteredChildren = node.children ? filterTree(node.children) : [];\n        if (labelMatch || filteredChildren.length > 0) {\n          result.push({ ...node, children: filteredChildren.length > 0 ? filteredChildren : node.children });\n        }\n      }\n      return result;\n    };\n    return filterTree(nodes);\n  }, [nodes, searchQuery]);\n\n  // ── Shadow DOM portal ref ──────────────────────────────────────\n\n  const setTriggerRef = useCallback((node: HTMLButtonElement | null) => {\n    triggerBtnRef.current = node;\n    if (node) setTriggerWidth(node.offsetWidth);\n    if (!node) { setPortalContainer(null); return; }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>('[data-bs-app-select-portal]');\n      if (existing) { setPortalContainer(existing); return; }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-app-select-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  // ── Handlers ────────────────────────────────────────────────────\n\n  const updateValue = useCallback(\n    (newValue: string | string[]) => {\n      if (controlledValue === undefined) setInternalValue(newValue);\n      onChange?.(newValue);\n    },\n    [controlledValue, onChange]\n  );\n\n  const toggleExpanded = useCallback((nodeId: string) => {\n    setExpandedIds((prev) => {\n      const next = new Set(prev);\n      if (next.has(nodeId)) next.delete(nodeId);\n      else next.add(nodeId);\n      return next;\n    });\n  }, []);\n\n  const handleSelect = useCallback(\n    (nodeId: string, node: AppTreeNode) => {\n      // Groups toggle expand; never selectable\n      if (node.type === 'group' || (node.children && node.children.length > 0)) {\n        toggleExpanded(nodeId);\n        return;\n      }\n\n      // Leaf node selection\n      if (mode === 'single') {\n        updateValue(nodeId);\n        setOpen(false);\n      } else {\n        const currentIds = Array.isArray(resolvedValue) ? [...resolvedValue] : [];\n        const idx = currentIds.indexOf(nodeId);\n        if (idx >= 0) {\n          currentIds.splice(idx, 1);\n        } else {\n          currentIds.push(nodeId);\n        }\n        updateValue(currentIds);\n      }\n    },\n    [mode, resolvedValue, updateValue, toggleExpanded]\n  );\n\n  const handleRemoveChip = useCallback(\n    (nodeId: string, e: React.MouseEvent) => {\n      e.stopPropagation();\n      if (mode === 'multiple' && Array.isArray(resolvedValue)) {\n        updateValue(resolvedValue.filter((id) => id !== nodeId));\n      }\n    },\n    [mode, resolvedValue, updateValue]\n  );\n\n  const handleOpenChange = useCallback(\n    (nextOpen: boolean) => {\n      if (disabled) return;\n      setOpen(nextOpen);\n      if (nextOpen && triggerBtnRef.current) {\n        setTriggerWidth(triggerBtnRef.current.offsetWidth);\n      }\n      if (!nextOpen) setSearchQuery('');\n    },\n    [disabled]\n  );\n\n  // ── Chip visibility ─────────────────────────────────────────────\n\n  const multiSelectedLabels = mode === 'multiple' ? selectedLabels : [];\n  const visibleChips = multiSelectedLabels.slice(0, maxVisibleChips);\n  const overflowCount = multiSelectedLabels.length - visibleChips.length;\n\n  // ── Tree row rendering ──────────────────────────────────────────\n\n  const renderNodeRow = useCallback(\n    (node: AppTreeNode, depth: number) => {\n      const hasChildren = node.children && node.children.length > 0;\n      const isExpanded = expandedIds.has(node.id);\n      const isSelected = selectedIds.has(node.id);\n      const leftPad = depth * 22 + 10; // 10, 32, 54, 78, 102...\n\n      return (\n        <div key={node.id}>\n          <button\n            type=\"button\"\n            onClick={() => handleSelect(node.id, node)}\n            className={cn(\n              'flex items-center gap-[6px] w-full h-[34px] rounded-[4px] text-left',\n              'pr-[10px]',\n              transCls,\n              isSelected\n                ? 'bg-[#F0F6FF] text-[#0265FF]'\n                : 'text-[#030303] hover:bg-[#EFF0F6]'\n            )}\n            style={{ paddingLeft: `${leftPad}px`, paddingTop: '10px', paddingBottom: '10px' }}\n          >\n            {/* Left side: toggle icon for expandable nodes */}\n            {hasChildren && <ToggleIcon expanded={isExpanded} />}\n\n            {/* Node icon */}\n            {node.type === 'group' && !hasChildren && <FolderIcon />}\n            {node.type === 'group' && hasChildren && <FolderIcon />}\n            {node.type === 'app' && <AppIcon name={node.data?.style.icon!} />}\n            {/* {node.type === 'item' && <ItemIcon color={isSelected ? '#0265FF' : node.color} />} */}\n\n            {/* Label */}\n            <span className=\"text-[14px] truncate leading-[normal] flex-1 min-w-0\">\n              {node.label}\n            </span>\n\n            {/* SquareChecker for multi-select on leaf nodes — always visible */}\n            {mode === 'multiple' && !hasChildren && node.type !== 'group' && (\n              <span onClick={(e) => e.stopPropagation()} className='grid place-items-center'>\n                <SquareChecker\n                  checked={isSelected}\n                  onCheckedChange={() => handleSelect(node.id, node)}\n                  className=\"shrink-0\"\n                />\n              </span>\n            )}\n          </button>\n\n          {/* Children (when expanded) */}\n          {hasChildren && isExpanded && (\n            <div>\n              {node.children!.map((child) => renderNodeRow(child, depth + 1))}\n            </div>\n          )}\n        </div>\n      );\n    },\n    [expandedIds, selectedIds, mode, handleSelect]\n  );\n\n  // ── Render ──────────────────────────────────────────────────────\n\n  const hasMultiSelection = mode === 'multiple' && multiSelectedLabels.length > 0;\n\n  const popoverContent = (\n          <div className=\"flex flex-col gap-[4px]\">\n            {/* Search */}\n            <div className=\"flex items-center gap-[6px] border border-[#E0E0E0] rounded-[4px] h-[30px] px-[10px] py-[5px]\">\n              <SearchIcon />\n              <input\n                type=\"text\"\n                value={searchQuery}\n                onChange={(e) => setSearchQuery(e.target.value)}\n                placeholder={searchPlaceholder}\n                className=\"flex-1 outline-none text-[14px] placeholder:text-[#999999] bg-transparent min-w-0 text-[#030303]\"\n              />\n            </div>\n\n            {/* \"全部应用\" item */}\n            {showAll && mode === 'single' && !searchQuery.trim() && (\n              <button\n                type=\"button\"\n                onClick={() => {\n                  updateValue(ALL_APPS_VALUE);\n                  setOpen(false);\n                }}\n                className={cn(\n                  'flex items-center w-full h-[34px] rounded-[4px] text-left',\n                  'px-[10px]',\n                  transCls,\n                  selectedIds.has(ALL_APPS_VALUE)\n                    ? 'bg-[#F0F6FF] text-[#0265FF]'\n                    : 'text-[#030303] hover:bg-[#EFF0F6]'\n                )}\n              >\n                <span className=\"text-[14px] leading-[normal]\">全部应用</span>\n              </button>\n            )}\n\n            {/* Tree */}\n            <div className=\"max-h-[400px] overflow-y-auto\">\n              {filteredNodes.length > 0 ? (\n                filteredNodes.map((node) => renderNodeRow(node, 0))\n              ) : (\n                <div className=\"flex items-center justify-center h-[60px] text-[12px] text-[#999999]\">\n                  {searchQuery.trim() ? '未找到相关应用' : '暂无应用'}\n                </div>\n              )}\n            </div>\n          </div>\n  );\n\n  if (popoverContentOnly) {\n    return popoverContent;\n  }\n\n  return (\n    <div className={cn('relative', className)}>\n      <Popover open={open} onOpenChange={handleOpenChange}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px] gap-2.5',\n              'bg-white border border-[#E0E0E0] rounded-[4px]',\n              'py-[7px]',\n              hasMultiSelection ? 'pl-[4px] pr-[10px]' : 'px-[10px]',\n              'text-left cursor-pointer',\n              'hover:border-[#0265FF]',\n              disabled && 'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              open && 'border-[#0265FF]',\n              transCls\n            )}\n            // style={{ minHeight: '34px' }}\n          >\n            {hasMultiSelection ? (\n              <>\n                <div className=\"flex items-center gap-[4px] min-w-0 flex-1 overflow-x-auto scrollbar-hide\">\n                  {visibleChips.map((label, i) => (\n                    <span\n                      key={i}\n                      className=\"flex items-center gap-[4px] bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px] shrink-0 max-w-[160px]\"\n                      onClick={(e) => {\n                        // stop propagation to prevent opening popover when clicking the chip, but still allow it when clicking the close icon\n                        e.stopPropagation();\n                        const ids = Array.isArray(resolvedValue) ? resolvedValue : [];\n                        if (ids[i]) handleRemoveChip(ids[i], e);\n                      }}\n                    >\n                      <span className=\"text-[14px] text-[#030303] truncate leading-[normal]\">\n                        {label}\n                      </span>\n                      <span\n                        className=\"cursor-pointer flex items-center shrink-0 hover:bg-[#EFF0F6]\"\n                      >\n                        <CloseIcon />\n                      </span>\n                    </span>\n                  ))}\n                  {overflowCount > 0 && (\n                    <span className=\"flex items-center gap-[4px] bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px] shrink-0\">\n                      <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                        +{overflowCount}\n                      </span>\n                      <MoreIcon />\n                    </span>\n                  )}\n                </div>\n                <DropdownChevron open={open} />\n              </>\n            ) : (\n              <>\n                <span\n                  className={cn(\n                    'text-[14px] leading-[normal] truncate',\n                    selectedAppLabel ? 'text-[#030303]' : 'text-[#999999]'\n                  )}\n                >\n                  {selectedAppLabel ?? placeholder}\n                </span>\n                <DropdownChevron open={open} />\n              </>\n            )}\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[4px]\"\n          style={{ minWidth: triggerWidth || undefined }}\n        >\n          {popoverContent}\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n};\n","import { useRef, useState } from 'react';\nimport { cn } from '../lib/utils';\nimport { SquareChecker, type SquareCheckerProps } from './square-checker';\n\nexport interface CheckCardProps extends SquareCheckerProps {\n  title: string;\n  description?: string;\n}\n\nexport const CheckCard = ({\n  defaultChecked = false,\n  checked: controlledChecked,\n  onCheckedChange,\n  title,\n  description,\n  disabled = false,\n  className,\n}: CheckCardProps) => {\n  const [internalChecked, setInternalChecked] = useState<boolean>(!!defaultChecked);\n\n  const isControlled = controlledChecked !== undefined;\n  const isChecked = isControlled ? !!controlledChecked : internalChecked;\n\n  const isCheckedRef = useRef(isChecked);\n  isCheckedRef.current = isChecked;\n\n  const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n    // if the target is not the card itself (e.g. clicking on a link inside the card), do not toggle\n    if (e.target !== e.currentTarget) {\n      return;\n    }\n\n    if (disabled) return;\n\n    const newChecked = !isCheckedRef.current;\n\n\n    if (!isControlled) {\n      setInternalChecked(newChecked);\n    }\n    onCheckedChange?.(newChecked);\n  };\n\n  return (\n    <div\n      role=\"button\"\n      tabIndex={disabled ? -1 : 0}\n      aria-checked={isChecked}\n      aria-disabled={disabled}\n      onClick={handleClick}\n      onKeyDown={(e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          handleClick(e as unknown as React.MouseEvent<HTMLDivElement>);\n        }\n      }}\n      className={cn(\n        'flex flex-col gap-[6px] p-[10px] rounded-[4px] cursor-pointer select-none bg-white',\n        'border',\n        isChecked ? 'border-[#0265FF]' : 'border-[#E0E0E0]',\n        disabled && 'cursor-not-allowed opacity-50',\n        className\n      )}\n    >\n      <div className=\"inline-flex items-center gap-[6px] pointer-events-none\">\n          <SquareChecker\n            checked={isChecked}\n            disabled={disabled}\n          />\n        <span className=\"text-[#121111] text-[14px]\">{title}</span>\n      </div>\n      {description != null && (\n        <p className=\"text-[#666] text-[12px] pl-[22px] pointer-events-none\">{description}</p>\n      )}\n    </div>\n  );\n};\n","import type { FormActionType } from '@baishuyun/types';\nimport { CheckCard } from '../../check-card';\n\nexport const FORM_ACTION_CONFIG_LIST: Array<{\n  type: FormActionType;\n  title: string;\n}> = [\n  { type: 'submit', title: '表单提交数据' },\n  { type: 'edit', title: '表单编辑数据' },\n  { type: 'delete', title: '表单删除数据' },\n  { type: 'init', title: '表单初始化' },\n  { type: 'edit_init', title: '表单编辑初始化' },\n];\n\nexport interface IFormActionTriggerSelectProps {\n  multiple?: boolean;\n  value?: FormActionType | FormActionType[];\n  onChange?: (value: FormActionType | FormActionType[]) => void;\n}\n\nexport const FormActionTriggerSelect = ({\n  multiple = false,\n  value,\n  onChange,\n}: IFormActionTriggerSelectProps) => {\n  const selectedList = multiple\n    ? (Array.isArray(value) ? value : [])\n    : null;\n\n  return (\n    <div className=\"flex gap-[20px]\">\n      {FORM_ACTION_CONFIG_LIST.map((config) => {\n        const checked = multiple\n          ? selectedList!.includes(config.type)\n          : value === config.type;\n\n        return (\n          <CheckCard\n            key={config.type}\n            className=\"flex-[1_0_0] min-w-px\"\n            title={config.title}\n            checked={checked}\n            onCheckedChange={(v) => {\n              if (multiple) {\n                const next = v\n                  ? [...selectedList!, config.type]\n                  : selectedList!.filter((t) => t !== config.type);\n                onChange?.(next);\n              } else {\n                if (v) {\n                  onChange?.(config.type);\n                }\n              }\n            }}\n          />\n        );\n      })}\n    </div>\n  );\n};\n","import type { FlowNodeActionType } from '@baishuyun/types';\nimport { CheckCard } from '../../check-card';\n\nexport const FLOW_NODE_ACTION_CONFIG_LIST: Array<{\n  type: FlowNodeActionType;\n  title: string;\n}> = [\n  { type: 'flow_end', title: '流程结束' },\n  { type: 'flow_node', title: '流程节点' },\n];\n\nexport interface IFlowNodeActionTriggerSelectProps {\n  multiple?: boolean;\n  value?: FlowNodeActionType | FlowNodeActionType[];\n  onChange?: (value: FlowNodeActionType | FlowNodeActionType[]) => void;\n}\n\nexport const FlowNodeActionTriggerSelect = ({\n  multiple = false,\n  value,\n  onChange,\n}: IFlowNodeActionTriggerSelectProps) => {\n  const selectedList = multiple\n    ? (Array.isArray(value) ? value : [])\n    : null;\n\n  return (\n    <div className=\"flex gap-[20px]\">\n      {FLOW_NODE_ACTION_CONFIG_LIST.map((config) => {\n        const checked = multiple\n          ? selectedList!.includes(config.type)\n          : value === config.type;\n\n        return (\n          <CheckCard\n            key={config.type}\n            className=\"flex-[1_0_0] min-w-px max-w-[216px]\"\n            title={config.title}\n            checked={checked}\n            onCheckedChange={(v) => {\n              if (multiple) {\n                const next = v\n                  ? [...selectedList!, config.type]\n                  : selectedList!.filter((t) => t !== config.type);\n                onChange?.(next);\n              } else {\n                if (v) {\n                  onChange?.(config.type);\n                }\n              }\n            }}\n          />\n        );\n      })}\n    </div>\n  );\n};\n","import type { triggerTimeSourceType } from '@baishuyun/types';\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from '../../ui/select';\n\nexport interface TriggerTimeSourceTypeOption {\n  value: triggerTimeSourceType;\n  label: string;\n}\n\nexport const TriggerTimeSourceTypeOptions: TriggerTimeSourceTypeOption[] = [\n  { value: 'custom', label: '自定义时间' },\n  { value: 'date_field', label: '根据表单日期时间字段' },\n];\n\nexport interface TriggerTimeSourceTypeSelectProps {\n  value?: triggerTimeSourceType;\n  onChange?: (value: triggerTimeSourceType) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const TriggerTimeSourceTypeSelect = ({\n  value,\n  onChange,\n  placeholder = '请选择时间来源类型',\n  disabled = false,\n  className,\n}: TriggerTimeSourceTypeSelectProps) => {\n  return (\n    <Select\n      value={value}\n      onValueChange={(v) => onChange?.(v as triggerTimeSourceType)}\n      disabled={disabled}\n    >\n      <SelectTrigger className={className}>\n        <SelectValue placeholder={placeholder} />\n      </SelectTrigger>\n      <SelectContent>\n        {TriggerTimeSourceTypeOptions.map((option) => (\n          <SelectItem key={option.value} value={option.value}>\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n","import type { TimeObj } from './types';\n\nexport const MIN_YEAR = 1000;\nexport const MAX_YEAR = 2999;\n\nexport const MONTH_NAMES = [\n  '一月', '二月', '三月', '四月', '五月', '六月',\n  '七月', '八月', '九月', '十月', '十一月', '十二月',\n];\n\nexport const WEEK_NAMES = ['一', '二', '三', '四', '五', '六', '日'];\n\nexport function getFirstMondayOfMonth(year: number, month: number): Date {\n  const firstDay = new Date(year, month, 1);\n  const dayOfWeek = firstDay.getDay();\n  const daysToSubtract = (dayOfWeek - 1 + 7) % 7;\n  return new Date(year, month, 1 - daysToSubtract);\n}\n\nexport function getDaysInMonth(year: number, month: number): number {\n  return new Date(year, month + 1, 0).getDate();\n}\n\nexport function checkTimeValidate(\n  current: TimeObj,\n  start: TimeObj,\n  end: TimeObj\n): boolean {\n  const curTotal = current.h * 3600000 + current.m * 60000 + current.s * 1000 + current.ms;\n  const startTotal = start.h * 3600000 + start.m * 60000 + start.s * 1000 + start.ms;\n  const endTotal = end.h * 3600000 + end.m * 60000 + end.s * 1000 + end.ms;\n  return curTotal >= startTotal && curTotal <= endTotal;\n}\n\nexport function checkDateValidate(\n  d: Date,\n  minDate: Date,\n  maxDate: Date,\n  week: number[],\n  mode: 'day' | 'month' | 'year' = 'day'\n): boolean {\n  if (mode === 'year') {\n    const year = d.getFullYear();\n    return year >= minDate.getFullYear() && year <= maxDate.getFullYear();\n  }\n  if (mode === 'month') {\n    const y = d.getFullYear();\n    const m = d.getMonth();\n    const minY = minDate.getFullYear();\n    const minM = minDate.getMonth();\n    const maxY = maxDate.getFullYear();\n    const maxM = maxDate.getMonth();\n    if (y < minY || y > maxY) return false;\n    if (y === minY && m < minM) return false;\n    if (y === maxY && m > maxM) return false;\n    return true;\n  }\n  d.setHours(0, 0, 0, 0);\n  const min = new Date(minDate);\n  min.setHours(0, 0, 0, 0);\n  const max = new Date(maxDate);\n  max.setHours(0, 0, 0, 0);\n  if (d < min || d > max) return false;\n  if (week && week.length > 0 && !week.includes(d.getDay())) return false;\n  return true;\n}\n\nexport function getCloserDate(target: Date, min: Date, max: Date): Date {\n  const t = target.getTime();\n  const mn = min.getTime();\n  const mx = max.getTime();\n  if (t < mn) return new Date(min);\n  if (t > mx) return new Date(max);\n  return new Date(target);\n}\n\nexport function checkBeforeMenuClick(\n  date: Date,\n  minDate: Date,\n  mode: 'month' | 'year'\n): boolean {\n  if (mode === 'year') {\n    return date.getFullYear() > minDate.getFullYear();\n  }\n  const y = date.getFullYear();\n  const m = date.getMonth();\n  const minY = minDate.getFullYear();\n  const minM = minDate.getMonth();\n  return y > minY || (y === minY && m > minM);\n}\n\nexport function checkAfterMenuClick(\n  date: Date,\n  maxDate: Date,\n  mode: 'month' | 'year'\n): boolean {\n  if (mode === 'year') {\n    return date.getFullYear() < maxDate.getFullYear();\n  }\n  const y = date.getFullYear();\n  const m = date.getMonth();\n  const maxY = maxDate.getFullYear();\n  const maxM = maxDate.getMonth();\n  return y < maxY || (y === maxY && m < maxM);\n}\n\nexport function formatDateByFormat(date: Date, format: string): string {\n  const y = date.getFullYear();\n  const m = String(date.getMonth() + 1).padStart(2, '0');\n  const d = String(date.getDate()).padStart(2, '0');\n  const h = String(date.getHours()).padStart(2, '0');\n  const min = String(date.getMinutes()).padStart(2, '0');\n  const s = String(date.getSeconds()).padStart(2, '0');\n\n  if (format === 'yyyy-MM-dd') return `${y}-${m}-${d}`;\n  if (format === 'yyyy-MM-dd HH:mm:ss') return `${y}-${m}-${d} ${h}:${min}:${s}`;\n  if (format === 'yyyy-MM-dd HH:mm') return `${y}-${m}-${d} ${h}:${min}`;\n  if (format === 'HH:mm:ss') return `${h}:${min}:${s}`;\n  if (format === 'HH:mm') return `${h}:${min}`;\n  if (format === 'yyyy-MM') return `${y}-${m}`;\n  if (format === 'yyyy') return `${y}`;\n  return `${y}-${m}-${d}`;\n}\n","import { useMemo } from 'react';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { MONTH_NAMES, WEEK_NAMES, getFirstMondayOfMonth, checkDateValidate, checkBeforeMenuClick, checkAfterMenuClick } from './utils';\n\ninterface CalendarPanelProps {\n  year: number;\n  month: number;\n  day: number;\n  format: string;\n  minDate: Date;\n  maxDate: Date;\n  week: number[];\n  onYearReduce: () => void;\n  onYearAdd: () => void;\n  onMonthReduce: () => void;\n  onMonthAdd: () => void;\n  onMonthMenu: () => void;\n  onYearMenu: () => void;\n  onChangeDay: (d: number, m: number, y: number, css: string) => void;\n}\n\nconst tdBase = 'text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px]';\nconst tdDisabled = 'text-[#999] relative pointer-events-none before:absolute before:left-0 before:right-0 before:top-1 before:h-[28px] before:bg-[#f3f3f3] before:opacity-60 before:content-[\"\"]';\n\nexport function CalendarPanel({\n  year,\n  month,\n  day,\n  format,\n  minDate,\n  maxDate,\n  week,\n  onYearReduce,\n  onYearAdd,\n  onMonthReduce,\n  onMonthAdd,\n  onMonthMenu,\n  onYearMenu,\n  onChangeDay,\n}: CalendarPanelProps) {\n  const hasDayPart = format.includes('dd');\n\n  const calendarData = useMemo(() => {\n    const firstMonday = getFirstMondayOfMonth(year, month);\n    const today = new Date();\n    const todayStr = `${today.getFullYear()}-${today.getMonth()}-${today.getDate()}`;\n\n    const rows: Array<Array<{ day: number; month: number; year: number; css: string; key: string }>> = [];\n    const cursor = new Date(firstMonday);\n\n    for (let r = 0; r < 6; r++) {\n      const row: (typeof rows)[0] = [];\n      for (let w = 0; w < 7; w++) {\n        const d = cursor.getDate();\n        const m = cursor.getMonth();\n        const y = cursor.getFullYear();\n\n        let css = checkDateValidate(new Date(y, m, d, 0, 0, 0, 0), minDate, maxDate, week, 'day') ? '' : 'disabled';\n\n        if (!css) {\n          if (month !== m) {\n            css = 'oday';\n          } else {\n            css = 'day';\n            if (w === 5 || w === 6) css += ' weekend';\n            if (`${y}-${m}-${d}` === todayStr) css += ' today';\n            if (day === d && month === m) css += ' selected';\n          }\n        }\n\n        row.push({ day: d, month: m, year: y, css, key: `d${y}-${m}-${d}` });\n        cursor.setDate(cursor.getDate() + 1);\n      }\n      rows.push(row);\n    }\n\n    while (rows.length > 4 && rows[rows.length - 1].every((cell) => cell.month !== month)) {\n      rows.pop();\n    }\n\n    return rows;\n  }, [year, month, day, minDate, maxDate, week]);\n\n  if (!hasDayPart) return null;\n\n  return (\n    <>\n      <thead>\n        <tr>\n          <td\n            className={cn(tdBase, 'btn prevm hover:text-[#0265ff]', !checkBeforeMenuClick(new Date(year, month, 1), minDate, 'year') && 'disabled ' + tdDisabled)}\n            colSpan={1}\n            onClick={onYearReduce}\n          >\n            <ChevronsLeft size={14} />\n          </td>\n          <td\n            className={cn(tdBase, 'btn prevm hover:text-[#0265ff]', !checkBeforeMenuClick(new Date(year, month, 1), minDate, 'month') && 'disabled ' + tdDisabled)}\n            colSpan={1}\n            onClick={onMonthReduce}\n          >\n            <ChevronLeft size={14} />\n          </td>\n          <td className={cn(tdBase, 'title font-bold p-0.5')} colSpan={3}>\n            <span className=\"title-month mr-1.5 hover:text-[#0265ff] cursor-pointer\" onClick={onMonthMenu}>{MONTH_NAMES[month]}</span>\n            <span>, </span>\n            <span className=\"title-year hover:text-[#0265ff] cursor-pointer\" onClick={onYearMenu}>{year}</span>\n          </td>\n          <td\n            className={cn(tdBase, 'btn nextm hover:text-[#0265ff]', !checkAfterMenuClick(new Date(year, month, 1), maxDate, 'month') && 'disabled ' + tdDisabled)}\n            colSpan={1}\n            onClick={onMonthAdd}\n          >\n            <ChevronRight size={14} />\n          </td>\n          <td\n            className={cn(tdBase, 'btn nextm hover:text-[#0265ff]', !checkAfterMenuClick(new Date(year, month, 1), maxDate, 'year') && 'disabled ' + tdDisabled)}\n            colSpan={1}\n            onClick={onYearAdd}\n          >\n            <ChevronsRight size={14} />\n          </td>\n        </tr>\n        <tr>\n          {WEEK_NAMES.map((name, i) => (\n            <td key={name} className={cn(tdBase, 'day name week font-bold hover:bg-transparent hover:p-0 hover:border-none', (i === 5 || i === 6) && 'text-[#e34d59]')}>{name}</td>\n          ))}\n        </tr>\n      </thead>\n      <tbody>\n        {calendarData.slice(0, 6).map((row, ri) => (\n          <tr key={ri}>\n            {row.map((cell) => {\n              const isDisabled = cell.css.includes('disabled');\n              const isOday = cell.css.includes('oday');\n              const isToday = cell.css.includes('today');\n              const isSelected = cell.css.includes('selected');\n              const isWeekend = cell.css.includes('weekend');\n\n              return (\n                <td\n                  key={cell.key}\n                  className={cn(\n                    tdBase,\n                    isDisabled && tdDisabled,\n                    isOday && 'text-[#e0e0e0] hover:bg-[rgba(2,101,255,0.08)]',\n                    !isDisabled && !isOday && 'hover:bg-[rgba(2,101,255,0.08)]',\n                    isToday && 'font-bold text-[#0265ff]',\n                    isWeekend && 'text-[#e34d59]',\n                    isSelected && 'font-bold p-[1px] text-white border border-[#0265ff] bg-[#0265ff] hover:border-[#0265ff] hover:bg-[#0265ff]'\n                  )}\n                  onClick={() => onChangeDay(cell.day, cell.month, cell.year, cell.css)}\n                >\n                  <div className=\"day-wrapper\"><div className=\"day-item\">{cell.day}</div></div>\n                </td>\n              );\n            })}\n          </tr>\n        ))}\n      </tbody>\n    </>\n  );\n}\n","import { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { MONTH_NAMES, checkDateValidate } from './utils';\n\ninterface MonthPanelProps {\n  year: number;\n  month: number;\n  showYear: boolean;\n  position: 'absolute' | 'relative';\n  minDate: Date;\n  maxDate: Date;\n  week: number[];\n  onYearReduce: () => void;\n  onYearAdd: () => void;\n  onYearMenu: () => void;\n  onMountOk: (m: number) => void;\n}\n\nconst tdBase = 'text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px]';\nconst tdDisabled = 'text-[#999] relative pointer-events-none before:absolute before:left-0 before:right-0 before:top-[20px] before:h-[28px] before:bg-[#f3f3f3] before:opacity-60 before:content-[\"\"]';\n\nexport function MonthPanel({\n  year,\n  month,\n  showYear,\n  position,\n  minDate,\n  maxDate,\n  week,\n  onYearReduce,\n  onYearAdd,\n  onYearMenu,\n  onMountOk,\n}: MonthPanelProps) {\n  const checkValidate = (d: Date) => checkDateValidate(d, minDate, maxDate, week, 'month');\n\n  return (\n    <table cellSpacing={0} cellPadding={0} className=\"mt bg-white rounded-[4px]\" style={{ position }}>\n      <thead>\n        <tr>\n          <td className={cn(tdBase, 'btn prevy hover:text-[#0265ff]')} colSpan={1} onClick={onYearReduce}>\n            <ChevronLeft size={14} />\n          </td>\n          <td className={cn(tdBase, 'year title font-bold p-0.5')} colSpan={1}>\n            <span className=\"title-year hover:text-[#0265ff] cursor-pointer\" onClick={onYearMenu}>{year}</span>\n          </td>\n          <td className={cn(tdBase, 'btn nexty hover:text-[#0265ff]')} colSpan={1} onClick={onYearAdd}>\n            <ChevronRight size={14} />\n          </td>\n        </tr>\n      </thead>\n      <tbody>\n        {[0, 1, 2, 3].map((rowIdx) => (\n          <tr key={rowIdx}>\n            {[0, 1, 2].map((colIdx) => {\n              const m = rowIdx * 3 + colIdx;\n              if (m > 11) return <td key={m} className={tdBase} />;\n              const valid = checkValidate(new Date(year, m, 1));\n              const isSelected = month === m && !showYear;\n              const isDisabled = !valid;\n\n              return (\n                <td\n                  key={m}\n                  className={cn(\n                    tdBase,\n                    'month w-[58px] h-[38px] hover:bg-[rgba(2,101,255,0.08)]',\n                    isSelected && 'font-bold p-[1px] text-white border border-[#0265ff] bg-[#0265ff] hover:border-[#0265ff] hover:bg-[#0265ff]',\n                    isDisabled && tdDisabled\n                  )}\n                  onClick={() => { if (!isDisabled) onMountOk(m); }}\n                >\n                  {MONTH_NAMES[m]}\n                </td>\n              );\n            })}\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  );\n}\n","import { useMemo } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { checkDateValidate } from './utils';\n\ninterface YearPanelProps {\n  year: number;\n  position: 'absolute' | 'relative';\n  showYearLabel?: boolean;\n  minDate: Date;\n  maxDate: Date;\n  week: number[];\n  onYearFReduce: () => void;\n  onYearFAdd: () => void;\n  onSelectYear: (y: number) => void;\n}\n\nconst tdBase = 'text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px]';\nconst tdDisabled = 'text-[#999] relative pointer-events-none before:absolute before:left-0 before:right-0 before:top-[14px] before:h-[28px] before:bg-[#f3f3f3] before:opacity-60 before:content-[\"\"]';\n\nexport function YearPanel({\n  year,\n  position,\n  showYearLabel,\n  minDate,\n  maxDate,\n  week,\n  onYearFReduce,\n  onYearFAdd,\n  onSelectYear,\n}: YearPanelProps) {\n  const startYear = year - 9;\n  const endYear = year + 10;\n\n  const yearGrid = useMemo(() => {\n    const rows: Array<Array<{ year: number; isSelected: boolean; isDisabled: boolean }>> = [];\n    for (let r = 0; r < 5; r++) {\n      const row: (typeof rows)[0] = [];\n      for (let c = 0; c < 4; c++) {\n        const y = startYear + r * 4 + c;\n        const valid = checkDateValidate(new Date(y, 0, 1), minDate, maxDate, week, 'year');\n        row.push({ year: y, isSelected: year === y, isDisabled: !valid });\n      }\n      rows.push(row);\n    }\n    return rows;\n  }, [startYear, year, minDate, maxDate, week]);\n\n  return (\n    <table cellSpacing={0} cellPadding={0} className=\"yt bg-white rounded-[4px] w-full h-full\" style={{ position }}>\n      <thead>\n        <tr>\n          <td className={cn(tdBase, 'btn prevy hover:text-[#0265ff] grid place-content-center')} colSpan={1} onClick={onYearFReduce}>\n            <ChevronLeft size={14} />\n          </td>\n          <td className={cn(tdBase, 'year title font-bold p-0.5')} colSpan={2}>\n            {showYearLabel ? `${startYear}年 - ${endYear}年` : `${startYear} - ${endYear}`}\n          </td>\n          <td className={cn(tdBase, 'btn nexty hover:text-[#0265ff] grid place-content-center')} colSpan={1} onClick={onYearFAdd}>\n            <ChevronRight size={14} />\n          </td>\n        </tr>\n      </thead>\n      <tbody>\n        {yearGrid.map((row, ri) => (\n          <tr key={ri}>\n            {row.map((cell) => (\n              <td\n                key={cell.year}\n                className={cn(\n                  tdBase,\n                  'year',\n                  cell.isSelected && 'font-bold p-[1px] text-white border border-[#0265ff] bg-[#0265ff] hover:border-[#0265ff] hover:bg-[#0265ff]',\n                  cell.isDisabled && tdDisabled\n                )}\n                onClick={() => { if (!cell.isDisabled) onSelectYear(cell.year); }}\n              >\n                {cell.year}\n              </td>\n            ))}\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  );\n}\n","import { cn } from '../../../lib/utils';\nimport { checkTimeValidate } from './utils';\nimport type { TimeObj } from './types';\n\ninterface TimePanelProps {\n  hours: number;\n  minutes: number;\n  seconds: number;\n  year: number;\n  month: number;\n  day: number;\n  format: string;\n  minDate: Date;\n  maxDate: Date;\n  startTime: TimeObj;\n  endTime: TimeObj;\n  onHoursChange: (v: number) => void;\n  onMinutesChange: (v: number) => void;\n  onSecondsChange: (v: number) => void;\n}\n\nconst colItemBase = 'h-[32px] leading-[32px] text-center cursor-pointer rounded-[4px] hover:bg-[rgba(2,101,255,0.08)]';\n\nexport function TimePanel({\n  hours,\n  minutes,\n  seconds,\n  year,\n  month,\n  day,\n  format,\n  minDate,\n  maxDate,\n  startTime,\n  endTime,\n  onHoursChange,\n  onMinutesChange,\n  onSecondsChange,\n}: TimePanelProps) {\n  const hasMinutePart = format.includes('mm');\n  const hasSecondPart = format.includes('ss');\n\n  const renderColumn = (type: 'hours' | 'minutes' | 'seconds') => {\n    const colLen = type === 'hours' ? 24 : 60;\n    const labels: Record<string, string> = { hours: '时', minutes: '分', seconds: '秒' };\n    const currentVal = type === 'hours' ? hours : type === 'minutes' ? minutes : seconds;\n    const onChange = type === 'hours' ? onHoursChange : type === 'minutes' ? onMinutesChange : onSecondsChange;\n\n    return (\n      <div className={cn('col flex-1 border-l border-[#e0e0e0]', type)}>\n        <div className=\"label h-[32px] leading-[32px] text-center\">{labels[type]}</div>\n        <div className=\"col-list h-[200px] overflow-auto\">\n          {Array.from({ length: colLen }, (_, index) => {\n            const isSelected = currentVal === index;\n            let isDisabled = false;\n\n            const isMinBoundary = minDate.getFullYear() === year && minDate.getMonth() === month && minDate.getDate() === day;\n            const isMaxBoundary = maxDate.getFullYear() === year && maxDate.getMonth() === month && maxDate.getDate() === day;\n\n            if (isMinBoundary) {\n              const current: TimeObj = {\n                h: type === 'hours' ? index : hours,\n                m: type === 'minutes' ? index : minutes,\n                s: type === 'seconds' ? index : seconds,\n                ms: 0,\n              };\n              isDisabled = !checkTimeValidate(current, startTime, { h: 23, m: 59, s: 59, ms: 999 });\n            }\n            if (isMaxBoundary && !isDisabled) {\n              const current: TimeObj = {\n                h: type === 'hours' ? index : hours,\n                m: type === 'minutes' ? index : minutes,\n                s: type === 'seconds' ? index : seconds,\n                ms: 0,\n              };\n              isDisabled = !checkTimeValidate(current, { h: 0, m: 0, s: 0, ms: 0 }, endTime);\n            }\n\n            return (\n              <div\n                key={index}\n                className={cn(\n                  colItemBase,\n                  isSelected && !isDisabled && 'select bg-[rgba(2,101,255,0.2)]',\n                  isDisabled && 'text-[#999] pointer-events-none opacity-80'\n                )}\n                onClick={() => { if (!isDisabled) onChange(index); }}\n              >\n                {index > 9 ? index : `0${index}`}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    );\n  };\n\n  return (\n    <div className=\"time-range w-[180px]\">\n      <div className=\"time-input flex h-[40px] border-l border-[#e0e0e0]\">\n        <input\n          type=\"number\"\n          value={hours}\n          className=\"h-[24px] w-[38px] my-[10px] mx-[10px] mt-[10px] text-center pl-[5px] flex-1\"\n          onChange={(e) => {\n            const v = Math.min(23, Math.max(0, parseInt(e.target.value) || 0));\n            onHoursChange(v);\n          }}\n        />\n        {hasMinutePart && (\n          <>\n            <span className=\"leading-[40px]\">:</span>\n            <input\n              type=\"number\"\n              value={minutes}\n              className=\"h-[24px] w-[38px] my-[10px] mx-[10px] mt-[10px] text-center pl-[5px] flex-1\"\n              onChange={(e) => {\n                const v = Math.min(59, Math.max(0, parseInt(e.target.value) || 0));\n                onMinutesChange(v);\n              }}\n            />\n          </>\n        )}\n        {hasSecondPart && (\n          <>\n            <span className=\"leading-[40px]\">:</span>\n            <input\n              type=\"number\"\n              value={seconds}\n              className=\"h-[24px] w-[38px] my-[10px] mx-[10px] mt-[10px] text-center pl-[5px] flex-1\"\n              onChange={(e) => {\n                const v = Math.min(59, Math.max(0, parseInt(e.target.value) || 0));\n                onSecondsChange(v);\n              }}\n            />\n          </>\n        )}\n      </div>\n      <div className=\"time-select-range flex border-t border-[#e0e0e0]\" style={{ height: 'calc(100% - 40px)' }}>\n        {renderColumn('hours')}\n        {hasMinutePart && renderColumn('minutes')}\n        {hasSecondPart && renderColumn('seconds')}\n      </div>\n    </div>\n  );\n}\n","import { cn } from '../../../lib/utils';\n\ninterface FooterPanelProps {\n  hasTime: boolean;\n  hasDay: boolean;\n  todayCls: string;\n  onToday: () => void;\n  onOk: () => void;\n}\n\nexport function FooterPanel({\n  hasTime,\n  hasDay,\n  todayCls,\n  onToday,\n  onOk,\n}: FooterPanelProps) {\n  if (!hasTime && !hasDay) return null;\n\n  return (\n    <div className=\"footer h-[40px] leading-[40px] text-center border-t border-[#e0e0e0]\">\n      <div className=\"hms px-[10px]\">\n        <div\n          className={cn(\n            'btn cursor-pointer px-[5px] mx-[5px]',\n            hasTime ? 'current-time float-left text-[#0265ff] ml-0 pl-0 text-center' : 'today float-left text-[#0265ff] ml-0 pl-0 text-center',\n            todayCls === 'disabled' && 'text-[#999] pointer-events-none opacity-80'\n          )}\n          onClick={onToday}\n        >\n          {hasTime ? '当前时间' : '今天'}\n        </div>\n        {hasTime && (\n          <div\n            className=\"btn ok mr-0 text-white bg-[#0265ff] rounded-[4px] h-[24px] leading-[24px] mt-[8px] float-right cursor-pointer px-[5px] hover:opacity-80\"\n            onClick={onOk}\n          >\n            确定\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n","import { useState, useCallback, useMemo, useEffect } from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../../lib/utils';\nimport { CalendarPanel } from './calendar-panel';\nimport { MonthPanel } from './month-panel';\nimport { YearPanel } from './year-panel';\nimport { TimePanel } from './time-panel';\nimport { FooterPanel } from './footer-panel';\nimport {\n  MIN_YEAR,\n  MAX_YEAR,\n  MONTH_NAMES,\n  getDaysInMonth,\n  checkDateValidate,\n  getCloserDate,\n} from './utils';\nimport type { DatePickerProps, TimeObj } from './types';\n\nexport type { DateFormat, DatePickerProps } from './types';\n\nexport function DatePicker({\n  value,\n  onChange,\n  format = 'yyyy-MM-dd',\n  minDate: minDateProp,\n  maxDate: maxDateProp,\n  week: weekProp,\n  className,\n}: DatePickerProps) {\n  const initialDate = value ? new Date(value) : new Date();\n\n  const [year, setYear] = useState(initialDate.getFullYear());\n  const [month, setMonth] = useState(initialDate.getMonth());\n  const [day, setDay] = useState(initialDate.getDate());\n  const [hours, setHours] = useState(initialDate.getHours());\n  const [minutes, setMinutes] = useState(initialDate.getMinutes());\n  const [seconds, setSeconds] = useState(initialDate.getSeconds());\n  const [showMonth, setShowMonth] = useState(false);\n  const [showYear, setShowYear] = useState(false);\n  const [showHms, setShowHms] = useState(format.includes('HH'));\n\n  const minDate = useMemo(\n    () => minDateProp ?? new Date(MIN_YEAR, 0, 1, 0, 0, 0, 0),\n    [minDateProp]\n  );\n  const maxDate = useMemo(\n    () => maxDateProp ?? new Date(MAX_YEAR, 11, 31, 23, 59, 59, 999),\n    [maxDateProp]\n  );\n  const week = useMemo(\n    () => (weekProp ? weekProp.map((i) => parseInt(String(i))) : []),\n    [weekProp]\n  );\n\n  const startTime = useMemo<TimeObj>(() => {\n    if (format === 'yyyy-MM-dd HH:mm:ss') {\n      return { h: minDate.getHours(), m: minDate.getMinutes(), s: minDate.getSeconds(), ms: minDate.getMilliseconds() };\n    }\n    return { h: 0, m: 0, s: 0, ms: 0 };\n  }, [format, minDate]);\n\n  const endTime = useMemo<TimeObj>(() => {\n    if (format === 'yyyy-MM-dd HH:mm:ss') {\n      return { h: maxDate.getHours(), m: maxDate.getMinutes(), s: maxDate.getSeconds(), ms: maxDate.getMilliseconds() };\n    }\n    return { h: 23, m: 59, s: 59, ms: 999 };\n  }, [format, maxDate]);\n\n  // Sync with external value\n  useEffect(() => {\n    if (value) {\n      setYear(value.getFullYear());\n      setMonth(value.getMonth());\n      setDay(value.getDate());\n      setHours(value.getHours());\n      setMinutes(value.getMinutes());\n      setSeconds(value.getSeconds());\n    }\n  }, [value]);\n\n  // Auto-select closer valid date on mount when value is null\n  useEffect(() => {\n    if (!value && checkDateValidate(new Date(), minDate, maxDate, week, 'day')) {\n      const closerDate = getCloserDate(new Date(), minDate, maxDate);\n      setYear(closerDate.getFullYear());\n      setMonth(closerDate.getMonth());\n      setDay(closerDate.getDate());\n    }\n  }, []);\n\n  const fireOnChange = useCallback(\n    (d: Date | null, closeFloat?: boolean) => onChange?.(d, closeFloat),\n    [onChange]\n  );\n\n  const checkValidate = useCallback(\n    (d: Date, mode: 'day' | 'month' | 'year' = 'day') =>\n      checkDateValidate(d, minDate, maxDate, week, mode),\n    [minDate, maxDate, week]\n  );\n\n  const onDateUpdate = useCallback(\n    (closeFloat?: boolean) => {\n      const d = new Date(year, month, day, hours, minutes, seconds);\n      fireOnChange(checkValidate(d) ? d : null, closeFloat);\n    },\n    [year, month, day, hours, minutes, seconds, checkValidate, fireOnChange]\n  );\n\n  const handleMonthReduce = useCallback(() => {\n    let newYear = year, newMonth = month, newDay = day;\n    if (month === 0) { newMonth = 11; newYear = year - 1; }\n    else { newMonth = month - 1; }\n    const dim = getDaysInMonth(newYear, newMonth);\n    if (newDay > dim) newDay = dim;\n    setYear(newYear); setMonth(newMonth); setDay(newDay);\n  }, [year, month, day]);\n\n  const handleMonthAdd = useCallback(() => {\n    let newYear = year, newMonth = month, newDay = day;\n    if (month === 11) { newMonth = 0; newYear = year + 1; }\n    else { newMonth = month + 1; }\n    const dim = getDaysInMonth(newYear, newMonth);\n    if (newDay > dim) newDay = dim;\n    setYear(newYear); setMonth(newMonth); setDay(newDay);\n  }, [year, month, day]);\n\n  const handleYearReduce = useCallback(() => { if (year > MIN_YEAR) setYear((y) => y - 1); }, [year]);\n  const handleYearAdd = useCallback(() => { if (year < MAX_YEAR) setYear((y) => y + 1); }, [year]);\n  const handleYearFReduce = useCallback(() => { if (year > MIN_YEAR) setYear((y) => y - 20); }, [year]);\n  const handleYearFAdd = useCallback(() => { if (year < MAX_YEAR) setYear((y) => y + 20); }, [year]);\n\n  const handleSelectYear = useCallback((selectedYear: number) => {\n    setYear(selectedYear);\n    setShowYear(false);\n    if (format === 'yyyy-MM') { setDay(1); setHours(0); setMinutes(0); setSeconds(0); setShowMonth(false); }\n    if (format === 'yyyy') {\n      const newDate = new Date(selectedYear, 0, 1, 0, 0, 0);\n      fireOnChange(checkValidate(newDate, 'year') ? newDate : null, true);\n    }\n    setShowHms(format.includes('HH'));\n  }, [format, checkValidate, fireOnChange]);\n\n  const handleMountOk = useCallback((m: number) => {\n    setMonth(m);\n    setShowMonth(false);\n    setShowYear(false);\n    if (format === 'yyyy-MM') {\n      setDay(1); setHours(0); setMinutes(0); setSeconds(0);\n      const newDate = new Date(year, m, 1, 0, 0, 0);\n      fireOnChange(checkValidate(newDate, 'month') ? newDate : null, true);\n    }\n    setShowHms(format.includes('HH'));\n  }, [format, year, checkValidate, fireOnChange]);\n\n  const handleChangeDay = useCallback((d: number, m: number, y: number, css: string) => {\n    if (css.includes('disabled')) return;\n    setYear(y); setMonth(m); setDay(d);\n    if (!['HH:mm:ss', 'yyyy-MM-dd HH:mm:ss', 'yyyy-MM-dd HH:mm', 'HH:mm'].includes(format)) {\n      const newDate = new Date(y, m, d, 0, 0, 0);\n      fireOnChange(checkValidate(newDate) ? newDate : null, true);\n    }\n  }, [format, checkValidate, fireOnChange]);\n\n  const handleToDay = useCallback(() => {\n    const today = new Date();\n    setYear(today.getFullYear()); setMonth(today.getMonth()); setDay(today.getDate());\n    setHours(today.getHours()); setMinutes(today.getMinutes()); setSeconds(today.getSeconds());\n    if (!['HH:mm:ss', 'yyyy-MM-dd HH:mm:ss', 'yyyy-MM-dd HH:mm', 'HH:mm'].includes(format)) {\n      const newDate = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\n      fireOnChange(checkValidate(newDate) ? newDate : null, true);\n    }\n  }, [format, checkValidate, fireOnChange]);\n\n  const handleOkDay = useCallback(() => onDateUpdate(true), [onDateUpdate]);\n\n  const checkValiToday = useCallback(\n    (date?: Date) => checkDateValidate(date ?? new Date(), minDate, maxDate, week, 'day') ? '' : 'disabled',\n    [minDate, maxDate, week]\n  );\n\n  const handleHoursChange = useCallback((v: number) => setHours(v), []);\n  const handleMinutesChange = useCallback((v: number) => setMinutes(v), []);\n  const handleSecondsChange = useCallback((v: number) => setSeconds(v), []);\n\n  const hasDatePart = format.includes('yyyy');\n  const hasTimePart = format.includes('HH');\n  const hasDayPart = format.includes('dd');\n  const isMonthOnly = format === 'yyyy-MM';\n  const isYearOnly = format === 'yyyy';\n  const todayCls = checkValiToday();\n\n  const openMonthMenu = useCallback(() => { setShowMonth(true); setShowYear(false); setShowHms(false); }, []);\n  const openYearMenu = useCallback(() => { setShowYear(true); setShowHms(false); }, []);\n\n  const dataRangeMinHeight = hasDayPart ? 'min-h-[270px]' : (isMonthOnly ? 'min-h-[180px]' : 'min-h-[270px]');\n\n  return (\n    <div className={cn('relative inline-block text-sm text-[#333] bg-white rounded-[4px] leading-none border-none', format, className)}>\n      <div className=\"flex\">\n        {hasDatePart && (\n          <div className={cn('data-range', dataRangeMinHeight)} style={{ minWidth: isYearOnly ? 220 : 270 }}>\n            {/* Calendar with day grid, OR month-only picker */}\n            {!isYearOnly && (\n              <div className=\"relative\">\n                <table cellSpacing={0} cellPadding={0} className=\"dt p-[3px] rounded-[4px]\" style={{ width: isMonthOnly ? '100%' : 270 }}>\n                  {/* Month-only: show month picker with year header */}\n                  {isMonthOnly && !showYear && (\n                    <>\n                      <thead>\n                        <tr>\n                          <td className=\"text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px] btn prevy hover:text-[#0265ff] grid place-content-center\" colSpan={1} onClick={handleYearReduce}>\n                            <ChevronLeft size={14} className=\"inline\" />\n                          </td>\n                          <td className=\"text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px] year title font-bold\" colSpan={1}>\n                            <span className=\"title-year hover:text-[#0265ff] cursor-pointer\" onClick={openYearMenu}>{year}</span>\n                          </td>\n                          <td className=\"text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px] btn nexty hover:text-[#0265ff] grid place-content-center\" colSpan={1} onClick={handleYearAdd}>\n                            <ChevronRight size={14} className=\"inline\" />\n                          </td>\n                        </tr>\n                      </thead>\n                      <tbody>\n                        {[0, 1, 2].map((rowIdx) => (\n                          <tr key={rowIdx}>\n                            {[0, 1, 2].map((colIdx) => {\n                              const m = rowIdx * 3 + colIdx;\n                              const valid = checkValidate(new Date(year, m, 1), 'month');\n                              const isSelected = month === m;\n                              const isDisabled = !valid;\n                              return (\n                                <td\n                                  key={m}\n                                  className={cn(\n                                    'text-center p-0.5 min-w-[36px] h-[36px] cursor-pointer align-middle rounded-[4px] month hover:bg-[rgba(2,101,255,0.08)]',\n                                    isSelected && 'font-bold p-[1px] text-white border border-[#0265ff] bg-[#0265ff] hover:border-[#0265ff] hover:bg-[#0265ff]',\n                                    isDisabled && 'text-[#999] relative pointer-events-none before:absolute before:left-0 before:right-0 before:top-[14px] before:h-[28px] before:bg-[#f3f3f3] before:opacity-60 before:content-[\"\"]'\n                                  )}\n                                  onClick={() => { if (!isDisabled) handleMountOk(m); }}\n                                >\n                                  {MONTH_NAMES[m]}\n                                </td>\n                              );\n                            })}\n                          </tr>\n                        ))}\n                      </tbody>\n                    </>\n                  )}\n\n                  {/* Day grid: full calendar */}\n                  {hasDayPart && (\n                    <CalendarPanel\n                      year={year} month={month} day={day}\n                      format={format} minDate={minDate} maxDate={maxDate} week={week}\n                      onYearReduce={handleYearReduce} onYearAdd={handleYearAdd}\n                      onMonthReduce={handleMonthReduce} onMonthAdd={handleMonthAdd}\n                      onMonthMenu={openMonthMenu} onYearMenu={openYearMenu}\n                      onChangeDay={handleChangeDay}\n                    />\n                  )}\n                </table>\n\n                {/* Month picker overlay (for day formats) */}\n                {hasDayPart && !isMonthOnly && showMonth && !showYear && (\n                  <div className=\"absolute inset-0 z-[1]\">\n                    <MonthPanel\n                      year={year} month={month} showYear={showYear}\n                      position=\"absolute\" minDate={minDate} maxDate={maxDate} week={week}\n                      onYearReduce={handleYearReduce} onYearAdd={handleYearAdd}\n                      onYearMenu={openYearMenu} onMountOk={handleMountOk}\n                    />\n                  </div>\n                )}\n\n                {/* Year picker overlay (for day/month formats) */}\n                {!isYearOnly && showYear && (\n                  <div className={cn(isMonthOnly ? 'relative' : 'absolute inset-0 z-[1]')}>\n                    <YearPanel\n                      year={year} position={isMonthOnly ? 'relative' : 'absolute'}\n                      showYearLabel={isMonthOnly}\n                      minDate={minDate} maxDate={maxDate} week={week}\n                      onYearFReduce={handleYearFReduce} onYearFAdd={handleYearFAdd}\n                      onSelectYear={handleSelectYear}\n                    />\n                  </div>\n                )}\n              </div>\n            )}\n\n            {/* Year-only mode */}\n            {isYearOnly && (\n              <YearPanel\n                year={year} position=\"relative\" showYearLabel\n                minDate={minDate} maxDate={maxDate} week={week}\n                onYearFReduce={handleYearFReduce} onYearFAdd={handleYearFAdd}\n                onSelectYear={handleSelectYear}\n              />\n            )}\n          </div>\n        )}\n\n        {/* Time picker */}\n        {showHms && hasTimePart && (\n          <TimePanel\n            hours={hours} minutes={minutes} seconds={seconds}\n            year={year} month={month} day={day}\n            format={format} minDate={minDate} maxDate={maxDate}\n            startTime={startTime} endTime={endTime}\n            onHoursChange={handleHoursChange}\n            onMinutesChange={handleMinutesChange}\n            onSecondsChange={handleSecondsChange}\n          />\n        )}\n      </div>\n\n      {/* Footer */}\n      <FooterPanel\n        hasTime={hasTimePart}\n        hasDay={hasDayPart}\n        todayCls={todayCls}\n        onToday={handleToDay}\n        onOk={handleOkDay}\n      />\n    </div>\n  );\n}\n","import { useState, useCallback } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { CalendarIcon } from '../../icons/calendar-icon';\nimport { DatePicker } from './date-picker';\nimport { formatDateByFormat } from './utils';\nimport type { DateInputProps } from './types';\nimport { usePortalContainer } from '../../../hooks/use-portal-container';\n\nexport type { DateInputProps } from './types';\n\nexport function DateInput({\n  value,\n  onChange,\n  format = 'yyyy-MM-dd',\n  minDate,\n  maxDate,\n  week,\n  placeholder,\n  disabled,\n  className,\n}: DateInputProps) {\n  const [open, setOpen] = useState(false);\n\n  const handleChange = useCallback(\n    (date: Date | null, closeFloat?: boolean) => {\n      onChange?.(date);\n      if (closeFloat) {\n        setOpen(false);\n      }\n    },\n    [onChange]\n  );\n\n  const displayText = value ? formatDateByFormat(value, format) : '';\n  const defaultPlaceholder = placeholder ?? getPlaceholderByFormat(format);\n\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-date-input-portal');\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild disabled={disabled}>\n        <div\n          className={cn(\n            'flex items-center h-[34px] rounded-[4px] bg-white border border-[#e0e0e0] pl-[2px] pr-[10px] py-[2px] cursor-pointer',\n            'hover:border-[#0265FF]',\n            open && 'border-[#0265FF]',\n            disabled && 'opacity-50 cursor-not-allowed',\n            className\n          )}\n          ref={setTriggerRef}\n        >\n          <div className=\"flex-1 flex items-center justify-center h-[30px] px-[10px] py-[7px] rounded-[4px] min-w-0\">\n            <span\n              className={cn(\n                'flex-1 text-[14px] leading-[normal] truncate',\n                value ? 'text-[#030303]' : 'text-[#999999]'\n              )}\n            >\n              {displayText || defaultPlaceholder}\n            </span>\n          </div>\n          <CalendarIcon className=\"shrink-0 size-[16px] text-[#999999]\" />\n        </div>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\" portalContainer={portalContainer}>\n        <DatePicker\n          value={value}\n          onChange={handleChange}\n          format={format}\n          minDate={minDate}\n          maxDate={maxDate}\n          week={week}\n        />\n      </PopoverContent>\n    </Popover>\n  );\n}\n\nfunction getPlaceholderByFormat(format: string): string {\n  switch (format) {\n    case 'yyyy-MM-dd': return '请选择日期';\n    case 'yyyy-MM-dd HH:mm:ss': return '请选择日期时间';\n    case 'yyyy-MM-dd HH:mm': return '请选择日期时间';\n    case 'HH:mm:ss': return '请选择时间';\n    case 'HH:mm': return '请选择时间';\n    case 'yyyy-MM': return '请选择月份';\n    case 'yyyy': return '请选择年份';\n    default: return '请选择日期';\n  }\n}\n","import { useState, useCallback, useMemo, useRef } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport type { IField, FieldType, ISubformField } from '@baishuyun/types';\nimport { SearchIcon } from '../../bs-icons';\n\nconst ToggleIcon = ({ expanded }: { expanded: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: expanded ? 'rotate(0deg)' : 'rotate(-90deg)' }}\n  >\n    <path d=\"M5 7L8 10L11 7\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\nconst DropdownChevron = ({ open }: { open: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n  >\n    <path d=\"M4 6L8 10L12 6\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\n// ── FieldType → Badge Mapping ─────────────────────────────────────\n\ninterface BadgeStyle { label: string; bgColor: string; textColor: string }\n\nconst FIELD_TYPE_BADGE_MAP: Partial<Record<FieldType, BadgeStyle>> = {};\n\nconst textTypes: FieldType[] = [\n  'text', 'textarea', 'password', 'radio', 'radiogroup', 'combo', 'combocheck',\n  'checkboxgroup', 'address', 'location', 'button', 'separator', 'user',\n  'usergroup', 'dept', 'deptgroup', 'sn', 'formula', 'flowState', 'flowstate',\n  'subform', 'unknown',\n];\nconst numberTypes: FieldType[] = ['number'];\nconst datetimeTypes: FieldType[] = ['datetime'];\nconst fileTypes: FieldType[] = ['upload', 'image', 'linkdata', 'linkquery', 'dataload', 'signature'];\n\nfor (const t of textTypes) {\n  FIELD_TYPE_BADGE_MAP[t] = { label: '文本', bgColor: '#F0F6FF', textColor: '#0265FF' };\n}\nfor (const t of numberTypes) {\n  FIELD_TYPE_BADGE_MAP[t] = { label: '数字', bgColor: '#FDF4D9', textColor: '#F4B700' };\n}\nfor (const t of datetimeTypes) {\n  FIELD_TYPE_BADGE_MAP[t] = { label: '日期', bgColor: '#EEDEFE', textColor: '#8E24F9' };\n}\nfor (const t of fileTypes) {\n  FIELD_TYPE_BADGE_MAP[t] = { label: '附件', bgColor: '#DDF6DD', textColor: '#1EC31E' };\n}\n\n// ── Type Badge Component ──────────────────────────────────────────\n\nfunction TypeBadge({ style }: { style: BadgeStyle }) {\n  return (\n    <span\n      className=\"text-[12px] rounded-[100px] h-[20px] px-[6px] flex items-center justify-center shrink-0 leading-[normal]\"\n      style={{ backgroundColor: style.bgColor, color: style.textColor }}\n    >\n      {style.label}\n    </span>\n  );\n}\n\n// ── Tree Node Type ────────────────────────────────────────────────\n\ninterface FieldTreeNode {\n  key: string;\n  label: string;\n  field: IField | null;\n  fieldType?: FieldType;\n  depth: number;\n  children: FieldTreeNode[];\n  isExpandable?: boolean;\n  widgetName?: string;\n}\n\n// ── Tree Builder ──────────────────────────────────────────────────\n\nfunction buildNodeKey(field: IField, index: number): string {\n  return field.widget?.widgetName || String(index);\n}\n\nfunction buildItemNodeKey(parentKey: string, item: { widget?: { widgetName?: string }; value?: unknown; text?: string }, index: number): string {\n  return (item as { widget?: { widgetName?: string } }).widget?.widgetName || `${parentKey}-${index}`;\n}\n\nfunction buildFieldTree(fields: IField[], searchQuery: string): FieldTreeNode[] {\n  const q = searchQuery.toLowerCase().trim();\n\n  const nodes: FieldTreeNode[] = [];\n\n  for (let i = 0; i < fields.length; i++) {\n    const field = fields[i];\n    const label = field.label;\n    const parentWidgetName = field.widget?.widgetName;\n\n    // Only items with a 'widget' property (ISubformField) are expandable sub-fields\n    const items = field.widget?.items;\n    const subformItems = items?.filter(\n      (item): item is ISubformField => 'widget' in item\n    );\n    const hasItems = subformItems && subformItems.length > 0;\n    const rootKey = parentWidgetName || buildNodeKey(field, i);\n\n    const children: FieldTreeNode[] = [];\n    if (hasItems) {\n      for (let j = 0; j < subformItems!.length; j++) {\n        const item = subformItems![j];\n        const childWidgetName = item.widget?.widgetName || `${rootKey}-item-${j}`;\n        const fullWidgetName = `${parentWidgetName}.${childWidgetName}`;\n        children.push({\n          key: fullWidgetName,\n          label: item.label || `选项 ${j + 1}`,\n          field: field,\n          fieldType: item.widget?.type,\n          depth: 1,\n          children: [],\n          isExpandable: false,\n          widgetName: fullWidgetName,\n        });\n      }\n    }\n\n    const labelMatch = !q || label.toLowerCase().includes(q);\n    const childMatch = children.some((c) => c?.label?.toLowerCase().includes(q));\n\n    if (labelMatch || childMatch) {\n      nodes.push({\n        key: rootKey,\n        label,\n        field,\n        fieldType: field.widget?.type,\n        depth: 0,\n        children,\n        isExpandable: hasItems,\n        widgetName: parentWidgetName,\n      });\n    }\n  }\n\n  return nodes;\n}\n\n// ── FieldSelectPopover ────────────────────────────────────────────\n\nexport interface FieldSelectPopoverProps {\n  fields: IField[];\n  selectedKey?: string;\n  onSelect: (field: IField, nodeKey: string) => void;\n  searchPlaceholder?: string;\n  showTypeBadge?: boolean;\n  width?: number;\n  className?: string;\n}\n\nexport const FieldSelectPopover = ({\n  fields,\n  selectedKey,\n  onSelect,\n  searchPlaceholder = '搜索',\n  showTypeBadge = false,\n  width,\n  className,\n}: FieldSelectPopoverProps) => {\n  const [searchQuery, setSearchQuery] = useState('');\n  const [expandedKeys, setExpandedKeys] = useState<Set<string>>(() => {\n    const s = new Set<string>();\n    for (let i = 0; i < fields.length; i++) {\n      if (fields[i].widget?.items?.length) {\n        s.add(buildNodeKey(fields[i], i));\n      }\n    }\n    return s;\n  });\n\n  const tree = useMemo(\n    () => buildFieldTree(fields, searchQuery),\n    [fields, searchQuery]\n  );\n\n  const toggleExpanded = useCallback((key: string) => {\n    setExpandedKeys((prev) => {\n      const next = new Set(prev);\n      if (next.has(key)) next.delete(key);\n      else next.add(key);\n      return next;\n    });\n  }, []);\n\n  const handleSelect = useCallback(\n    (node: FieldTreeNode) => {\n      if (node.isExpandable) return;\n      if (node.field) {\n        onSelect(node.field, node.key);\n      }\n    },\n    [onSelect]\n  );\n\n  const renderNodeRow = useCallback(\n    (node: FieldTreeNode): JSX.Element => {\n      const isExpanded = expandedKeys.has(node.key);\n      const isSelected = selectedKey != null && node.key === selectedKey;\n      const paddingLeft = node.depth * 22 + 10;\n      const badge = node.fieldType && showTypeBadge\n        ? FIELD_TYPE_BADGE_MAP[node.fieldType]\n        : undefined;\n\n      const handleRowClick = () => {\n        if (node.isExpandable) {\n          toggleExpanded(node.key);\n        } else {\n          handleSelect(node);\n        }\n      };\n\n      const handleToggleClick = (e: React.MouseEvent) => {\n        e.stopPropagation();\n        toggleExpanded(node.key);\n      };\n\n      return (\n        <div key={node.key}>\n          <button\n            type=\"button\"\n            onClick={handleRowClick}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px] rounded-[4px] text-left',\n              'pr-[10px]',\n              transCls,\n              isSelected\n                ? 'bg-[#F0F6FF] text-[#0265FF]'\n                : 'text-[#030303] hover:bg-[#EFF0F6]'\n            )}\n            style={{ paddingLeft: `${paddingLeft}px`, paddingTop: 7, paddingBottom: 7 }}\n          >\n            <div className=\"flex items-center gap-[8px] min-w-0 flex-1\">\n              {/* Toggle arrow or spacer */}\n              {node.isExpandable ? (\n                <span onClick={handleToggleClick} className=\"flex items-center cursor-pointer\">\n                  <ToggleIcon expanded={isExpanded} />\n                </span>\n              ) : node.depth > 0 ? (\n                <span className=\"w-[16px] h-[16px] shrink-0\" />\n              ) : null}\n\n              <span className=\"text-[14px] truncate leading-[normal]\">\n                {node.label}\n              </span>\n            </div>\n\n            {badge && <TypeBadge style={badge} />}\n          </button>\n\n          {/* Children when expanded */}\n          {node.isExpandable && isExpanded && (\n            <div>\n              {node.children.map((child) => renderNodeRow(child))}\n            </div>\n          )}\n        </div>\n      );\n    },\n    [expandedKeys, selectedKey, showTypeBadge, handleSelect, toggleExpanded]\n  );\n\n  return (\n    <div\n      className={cn(\n        'bg-white drop-shadow-[0px_0px_8px_rgba(0,0,0,0.1)] rounded-[4px] p-[4px]',\n        'flex flex-col gap-[4px]',\n        className\n      )}\n      style={width ? { width } : undefined}\n    >\n      {/* Search input */}\n      <div className=\"flex items-center gap-[6px] border border-[#E0E0E0] rounded-[4px] h-[34px] px-[10px] py-[7px] shrink-0\">\n        <SearchIcon />\n        <input\n          type=\"text\"\n          value={searchQuery}\n          onChange={(e) => setSearchQuery(e.target.value)}\n          placeholder={searchPlaceholder}\n          className=\"flex-1 outline-none text-[14px] placeholder:text-[#999999] bg-transparent min-w-0 text-[#030303]\"\n        />\n      </div>\n\n      {/* Field list */}\n      <div className=\"max-h-[400px] overflow-y-auto flex flex-col\">\n        {tree.length > 0 ? (\n          tree.map((node) => renderNodeRow(node))\n        ) : (\n          <div className=\"flex items-center justify-center h-[60px] text-[12px] text-[#999999]\">\n            {searchQuery.trim() ? '未找到相关字段' : '暂无字段'}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\n// ── Key → Label Lookup ───────────────────────────────────────────\n\nfunction buildKeyLabelMap(fields: IField[]): Map<string, string> {\n  const map = new Map<string, string>();\n  for (let i = 0; i < fields.length; i++) {\n    const field = fields[i];\n    const rootKey = buildNodeKey(field, i);\n    map.set(rootKey, field.label);\n    const items = field.widget?.items;\n    if (items) {\n      for (let j = 0; j < items.length; j++) {\n        const item = items[j];\n        // For ISubformField items, use dot-joined widgetName as key\n        if ('widget' in item) {\n          const fullKey = `${field.widget?.widgetName}.${item.widget?.widgetName}`;\n          map.set(fullKey, item.label || `选项 ${j + 1}`);\n        } else {\n          const childKey = buildItemNodeKey(rootKey, item, j);\n          map.set(childKey, item.text || `选项 ${j + 1}`);\n        }\n      }\n    }\n  }\n  return map;\n}\n\nfunction getLabelByKey(fields: IField[], key: string | undefined): string | null {\n  if (!key) return null;\n  return buildKeyLabelMap(fields).get(key) ?? null;\n}\n\n// ── FieldSelect ───────────────────────────────────────────────────\n\nexport interface FieldSelectProps {\n  fields: IField[];\n  value?: string;\n  defaultValue?: string;\n  onChange?: (field: IField, nodeKey: string) => void;\n  placeholder?: string;\n  searchPlaceholder?: string;\n  disabled?: boolean;\n  showTypeBadge?: boolean;\n  className?: string;\n}\n\nexport const FieldSelect = ({\n  fields,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  placeholder = '请选择字段',\n  searchPlaceholder = '输入字段名称来搜索',\n  disabled = false,\n  showTypeBadge = true,\n  className,\n}: FieldSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [internalSelectedKey, setInternalSelectedKey] = useState<string | undefined>(defaultValue);\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n  const [triggerWidth, setTriggerWidth] = useState<number>(0);\n  const triggerBtnRef = useRef<HTMLButtonElement | null>(null);\n\n  const selectedKey = controlledValue !== undefined ? controlledValue : internalSelectedKey;\n  const displayLabel = useMemo(\n    () => getLabelByKey(fields, selectedKey),\n    [fields, selectedKey]\n  );\n\n  const handleSelect = useCallback(\n    (field: IField, nodeKey: string) => {\n      if (controlledValue === undefined) {\n        setInternalSelectedKey(nodeKey);\n      }\n      onChange?.(field, nodeKey);\n      setOpen(false);\n    },\n    [controlledValue, onChange]\n  );\n\n  const handleOpenChange = useCallback(\n    (nextOpen: boolean) => {\n      if (disabled) return;\n      setOpen(nextOpen);\n      if (nextOpen && triggerBtnRef.current) {\n        setTriggerWidth(triggerBtnRef.current.offsetWidth);\n      }\n    },\n    [disabled]\n  );\n\n  const setTriggerRef = useCallback((node: HTMLButtonElement | null) => {\n    triggerBtnRef.current = node;\n    if (node) setTriggerWidth(node.offsetWidth);\n    if (!node) { setPortalContainer(null); return; }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>('[data-bs-field-select-portal]');\n      if (existing) { setPortalContainer(existing); return; }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-field-select-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  return (\n    <div className={cn('relative', className)}>\n      <Popover open={open} onOpenChange={handleOpenChange}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px]',\n              'bg-white border rounded-[4px]',\n              'px-[10px] py-[7px]',\n              'text-left cursor-pointer',\n              'hover:border-[#0265FF]',\n              disabled && 'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0]',\n              transCls\n            )}\n          >\n            <span\n              className={cn(\n                'text-[14px] leading-[normal] truncate',\n                displayLabel ? 'text-[#030303]' : 'text-[#999999]'\n              )}\n            >\n              {displayLabel ?? placeholder}\n            </span>\n            <DropdownChevron open={open} />\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 !p-0\"\n          style={{ minWidth: triggerWidth || undefined }}\n        >\n          <FieldSelectPopover\n            fields={fields}\n            selectedKey={selectedKey}\n            onSelect={handleSelect}\n            searchPlaceholder={searchPlaceholder}\n            showTypeBadge={showTypeBadge}\n          />\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n};\n","import type { offsetType, DateFieldType } from '@baishuyun/types';\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from '../../ui/select';\n\nexport interface OffsetTypeOption {\n  value: offsetType;\n  label: string;\n}\n\nexport const OffsetTypeOptions: OffsetTypeOption[] = [\n  { value: 'before', label: '之前' },\n  { value: 'after', label: '之后' },\n  { value: 'day', label: '当天' },\n  { value: 'time', label: '当时' },\n];\n\nexport function getOffsetTypeOptions(dateFieldType: DateFieldType): OffsetTypeOption[] {\n  if (dateFieldType === 'date') {\n    return OffsetTypeOptions.filter((opt) => opt.value !== 'time');\n  }\n  return OffsetTypeOptions.filter((opt) => opt.value !== 'day');\n}\n\nexport interface OffsetTypeSelectProps {\n  value?: offsetType;\n  onChange?: (value: offsetType) => void;\n  dateFieldType: DateFieldType;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const OffsetTypeSelect = ({\n  value,\n  onChange,\n  dateFieldType,\n  placeholder = '请选择偏移类型',\n  disabled = false,\n  className,\n}: OffsetTypeSelectProps) => {\n  const options = getOffsetTypeOptions(dateFieldType);\n\n  return (\n    <Select\n      value={value}\n      onValueChange={(v) => onChange?.(v as offsetType)}\n      disabled={disabled}\n    >\n      <SelectTrigger className={className}>\n        <SelectValue placeholder={placeholder} />\n      </SelectTrigger>\n      <SelectContent>\n        {options.map((option) => (\n          <SelectItem key={option.value} value={option.value}>\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n","import type { offsetUnit } from '@baishuyun/types';\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from '../../ui/select';\n\nexport interface OffsetUnitOption {\n  value: offsetUnit;\n  label: string;\n}\n\nexport const OffsetUnitOptions: OffsetUnitOption[] = [\n  { value: 'minute', label: '分钟' },\n  { value: 'hour', label: '小时' },\n  { value: 'day', label: '天' },\n];\n\nexport interface OffsetUnitSelectProps {\n  value?: offsetUnit;\n  onChange?: (value: offsetUnit) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const OffsetUnitSelect = ({\n  value,\n  onChange,\n  placeholder = '请选择偏移单位',\n  disabled = false,\n  className,\n}: OffsetUnitSelectProps) => {\n  return (\n    <Select\n      value={value}\n      onValueChange={(v) => onChange?.(v as offsetUnit)}\n      disabled={disabled}\n    >\n      <SelectTrigger className={className}>\n        <SelectValue placeholder={placeholder} />\n      </SelectTrigger>\n      <SelectContent>\n        {OffsetUnitOptions.map((option) => (\n          <SelectItem key={option.value} value={option.value}>\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n","import { useState, useCallback, useRef, useEffect } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { OffsetTypeSelect } from '../offset-type-select';\nimport { OffsetUnitSelect } from '../offset-unit-select';\nimport { DateInput } from '../date-picker/date-input';\nimport type {\n  IOffsetPreference,\n  DateFieldType,\n  offsetType,\n  offsetUnit,\n} from '@baishuyun/types';\n\nexport interface OffsetPreferenceSelectProps {\n  value?: IOffsetPreference;\n  onChange?: (value: IOffsetPreference) => void;\n  dateFieldType: DateFieldType;\n  disabled?: boolean;\n  className?: string;\n}\n\nconst MINUTES_PER_DAY = 1440;\n\nconst NUMBER_INPUT_CLASSES = cn(\n  'h-[34px] px-[10px] py-[7px] rounded-[4px] bg-white border border-[#e0e0e0]',\n  'text-[14px] text-[#030303] placeholder:text-[#999999]',\n  'focus:outline-none focus:border-[#0265FF]',\n  'disabled:bg-[#EFF0F6] disabled:cursor-not-allowed',\n  '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none'\n);\n\nfunction getDefaults(dateFieldType: DateFieldType): IOffsetPreference {\n  return dateFieldType === 'date'\n    ? { dateFieldType: 'date', offsetType: 'day', offsetValue: 0, offsetUnit: 'minute' }\n    : { dateFieldType: 'datetime', offsetType: 'time', offsetValue: 0, offsetUnit: 'minute' };\n}\n\nfunction validOffsetType(type: offsetType, dateFieldType: DateFieldType): offsetType {\n  if (dateFieldType === 'date' && type === 'time') return 'day';\n  if (dateFieldType === 'datetime' && type === 'day') return 'time';\n  return type;\n}\n\nfunction minutesToTimeDate(minutes: number): Date {\n  const clamped = Math.max(0, Math.floor(minutes)) % MINUTES_PER_DAY;\n  const d = new Date(2024, 0, 1);\n  d.setHours(Math.floor(clamped / 60), clamped % 60, 0, 0);\n  return d;\n}\n\nfunction timeDateToMinutes(date: Date): number {\n  return date.getHours() * 60 + date.getMinutes();\n}\n\nexport function OffsetPreferenceSelect({\n  value,\n  onChange,\n  dateFieldType,\n  disabled = false,\n  className,\n}: OffsetPreferenceSelectProps) {\n  const isControlled = value !== undefined;\n\n  const [internalValue, setInternalValue] = useState<IOffsetPreference>(\n    () => value ?? getDefaults(dateFieldType)\n  );\n\n  const prevValue = useRef(value);\n  useEffect(() => {\n    if (value !== undefined) {\n      setInternalValue(value);\n    }\n    prevValue.current = value;\n  }, [value]);\n\n  const current: IOffsetPreference = value ?? internalValue;\n\n  const setValue = useCallback(\n    (newValue: IOffsetPreference) => {\n      if (!isControlled) setInternalValue(newValue);\n      onChange?.(newValue);\n    },\n    [isControlled, onChange]\n  );\n\n  const effectiveType = validOffsetType(current.offsetType, dateFieldType);\n\n  const showDaysInput = dateFieldType === 'date' && (effectiveType === 'before' || effectiveType === 'after');\n  const showNumberInput = dateFieldType === 'datetime' && (effectiveType === 'before' || effectiveType === 'after');\n  const showTimeInput = dateFieldType === 'date';\n  const showUnitSelect = dateFieldType === 'datetime' && (effectiveType === 'before' || effectiveType === 'after');\n\n  const timeInMinutes = dateFieldType === 'date'\n    ? (showDaysInput\n        ? current.offsetValue % MINUTES_PER_DAY\n        : current.offsetValue)\n    : 0;\n  const timeDate = minutesToTimeDate(timeInMinutes);\n\n  const daysCount = showDaysInput\n    ? Math.max(0, Math.floor(current.offsetValue / MINUTES_PER_DAY))\n    : 1;\n\n  const numberValue = showNumberInput ? current.offsetValue : 0;\n\n  const handleOffsetTypeChange = useCallback(\n    (newOffsetType: offsetType) => {\n      const valid = validOffsetType(newOffsetType, dateFieldType);\n\n      const timeInMin = current.offsetValue % MINUTES_PER_DAY;\n\n      if (dateFieldType === 'date') {\n        if (valid === 'day') {\n          setValue({\n            dateFieldType: 'date',\n            offsetType: 'day',\n            offsetValue: timeInMin,\n            offsetUnit: 'minute',\n          });\n        } else {\n          setValue({\n            dateFieldType: 'date',\n            offsetType: valid,\n            offsetValue: timeInMin,\n            offsetUnit: 'minute',\n          });\n        }\n      } else {\n        if (valid === 'time') {\n          setValue({\n            dateFieldType: 'datetime',\n            offsetType: 'time',\n            offsetValue: 0,\n            offsetUnit: 'minute',\n          });\n        } else {\n          setValue({\n            dateFieldType: 'datetime',\n            offsetType: valid,\n            offsetValue: current.offsetValue,\n            offsetUnit: current.offsetUnit,\n          });\n        }\n      }\n    },\n    [dateFieldType, current.offsetValue, current.offsetUnit, setValue]\n  );\n\n  const handleTimeChange = useCallback(\n    (date: Date | null) => {\n      if (!date) return;\n      const mins = timeDateToMinutes(date);\n\n      if (dateFieldType === 'date') {\n        if (effectiveType === 'day') {\n          setValue({\n            dateFieldType: 'date',\n            offsetType: 'day',\n            offsetValue: mins,\n            offsetUnit: 'minute',\n          });\n        } else {\n          const days = Math.max(0, Math.floor(current.offsetValue / MINUTES_PER_DAY));\n          setValue({\n            dateFieldType: 'date',\n            offsetType: effectiveType,\n            offsetValue: days * MINUTES_PER_DAY + mins,\n            offsetUnit: 'minute',\n          });\n        }\n      }\n    },\n    [dateFieldType, effectiveType, current.offsetValue, setValue]\n  );\n\n  const handleDaysChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      const raw = parseInt(e.target.value, 10);\n      const days = isNaN(raw) ? 0 : Math.max(0, raw);\n      const mins = current.offsetValue % MINUTES_PER_DAY;\n\n      setValue({\n        dateFieldType: 'date',\n        offsetType: effectiveType,\n        offsetValue: days * MINUTES_PER_DAY + mins,\n        offsetUnit: 'minute',\n      });\n    },\n    [effectiveType, current.offsetValue, setValue]\n  );\n\n  const handleNumberChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      const raw = parseInt(e.target.value, 10);\n      const val = isNaN(raw) ? 0 : Math.max(0, raw);\n\n      setValue({\n        dateFieldType: 'datetime',\n        offsetType: effectiveType,\n        offsetValue: val,\n        offsetUnit: current.offsetUnit,\n      });\n    },\n    [effectiveType, current.offsetUnit, setValue]\n  );\n\n  const handleUnitChange = useCallback(\n    (newUnit: offsetUnit) => {\n      setValue({\n        dateFieldType: 'datetime',\n        offsetType: effectiveType,\n        offsetValue: current.offsetValue,\n        offsetUnit: newUnit,\n      });\n    },\n    [effectiveType, current.offsetValue, setValue]\n  );\n\n  return (\n    <div className={cn('flex items-center gap-[10px]', className)}>\n      <OffsetTypeSelect\n        value={effectiveType}\n        onChange={handleOffsetTypeChange}\n        dateFieldType={dateFieldType}\n        disabled={disabled}\n      />\n      {showDaysInput && (\n        <input\n          type=\"number\"\n          value={daysCount}\n          onChange={handleDaysChange}\n          disabled={disabled}\n          min={0}\n          step={1}\n          className={cn(NUMBER_INPUT_CLASSES, 'w-[60px]')}\n        />\n      )}\n      {showDaysInput && (\n        <span className=\"text-[14px] text-[#030303] shrink-0\">天</span>\n      )}\n      {showNumberInput && (\n        <input\n          type=\"number\"\n          value={numberValue}\n          onChange={handleNumberChange}\n          disabled={disabled}\n          min={0}\n          step={1}\n          className={cn(NUMBER_INPUT_CLASSES, 'w-[80px]')}\n        />\n      )}\n      {showUnitSelect && (\n        <OffsetUnitSelect\n          value={current.offsetUnit}\n          onChange={handleUnitChange}\n          disabled={disabled}\n        />\n      )}\n      {showTimeInput && (\n        <DateInput\n          value={timeDate}\n          onChange={handleTimeChange}\n          format=\"HH:mm\"\n          disabled={disabled}\n        />\n      )}\n    </div>\n  );\n}\n","import { useCallback } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { TriggerTimeSourceTypeSelect } from '../trigger-time-source-type-select';\nimport { DateInput } from '../date-picker/date-input';\nimport { FormSelect } from '../form-select';\nimport type { FormSelectItem, FormSelectChangeResult } from '../form-select';\nimport { FieldSelect } from '../field-select';\nimport { OffsetPreferenceSelect } from '../offset-preference-select';\nimport type {\n  ITriggerTimePreference,\n  IDateFieldTriggerTimePayload,\n  triggerTimeSourceType,\n  IField,\n  IOffsetPreference,\n} from '@baishuyun/types';\nimport type { DateFormat } from '../date-picker/types';\n\nexport interface TriggerTimePreferenceSelectProps {\n  value?: ITriggerTimePreference;\n  onChange?: (value: ITriggerTimePreference) => void;\n  forms?: FormSelectItem[];\n  fields?: IField[];\n  dateFormat?: DateFormat;\n  disabled?: boolean;\n  className?: string;\n}\n\nfunction isDateFieldPayload(\n  payload: unknown,\n): payload is IDateFieldTriggerTimePayload {\n  return (\n    typeof payload === 'object' && payload !== null && 'formId' in payload\n  );\n}\n\nfunction buildDateFieldPayload(\n  overrides: Partial<IDateFieldTriggerTimePayload>,\n  existing?: IDateFieldTriggerTimePayload,\n): IDateFieldTriggerTimePayload {\n  return {\n    dateFieldType: 'datetime',\n    offsetType: 'time',\n    offsetValue: 0,\n    offsetUnit: 'minute',\n    ...existing,\n    ...overrides,\n    formId: overrides.formId ?? existing?.formId ?? '',\n    fieldId: overrides.fieldId ?? existing?.fieldId ?? '',\n  };\n}\n\nfunction parseDateFromPayload(payload: unknown): Date | undefined {\n  if (typeof payload === 'string' || typeof payload === 'number') {\n    const d = new Date(payload);\n    return isNaN(d.getTime()) ? undefined : d;\n  }\n  return undefined;\n}\n\nexport function TriggerTimePreferenceSelect({\n  value,\n  onChange,\n  forms = [],\n  fields = [],\n  dateFormat = 'yyyy-MM-dd',\n  disabled = false,\n  className,\n}: TriggerTimePreferenceSelectProps) {\n  const selectedType = value?.type;\n\n  const dateFieldPayload = isDateFieldPayload(value?.customTriggerTimePayload)\n    ? value.customTriggerTimePayload\n    : undefined;\n\n  const handleTypeChange = useCallback(\n    (type: triggerTimeSourceType) => {\n      onChange?.({ type });\n    },\n    [onChange],\n  );\n\n  const handleDateChange = useCallback(\n    (date: Date | null) => {\n      onChange?.({\n        type: 'custom',\n        customTriggerTimePayload: date ? date.toISOString() : undefined,\n      });\n    },\n    [onChange],\n  );\n\n  const handleFormChange = useCallback(\n    (result: FormSelectChangeResult) => {\n      const payload = buildDateFieldPayload(\n        { formId: result.form.id },\n        dateFieldPayload,\n      );\n      onChange?.({ type: 'date_field', customTriggerTimePayload: payload });\n    },\n    [onChange, dateFieldPayload],\n  );\n\n  const handleFieldChange = useCallback(\n    (_field: IField, nodeKey: string) => {\n      const payload = buildDateFieldPayload(\n        { fieldId: nodeKey },\n        dateFieldPayload,\n      );\n      onChange?.({ type: 'date_field', customTriggerTimePayload: payload });\n    },\n    [onChange, dateFieldPayload],\n  );\n\n  const handleOffsetPreferenceChange = useCallback(\n    (offsetPref: IOffsetPreference) => {\n      const payload = buildDateFieldPayload(\n        {\n          dateFieldType: offsetPref.dateFieldType,\n          offsetType: offsetPref.offsetType,\n          offsetValue: offsetPref.offsetValue,\n          offsetUnit: offsetPref.offsetUnit,\n        },\n        dateFieldPayload,\n      );\n      onChange?.({ type: 'date_field', customTriggerTimePayload: payload });\n    },\n    [onChange, dateFieldPayload],\n  );\n\n  return (\n    <div className={cn('flex flex-col gap-[10px]', className)}>\n      {/* Row 1 */}\n      <div className=\"flex gap-[22px] items-start w-full\">\n        <TriggerTimeSourceTypeSelect\n          className=\"flex-1 min-w-0\"\n          value={selectedType}\n          onChange={handleTypeChange}\n          disabled={disabled}\n        />\n\n        {selectedType === 'custom' && (\n          <DateInput\n            className=\"flex-1 min-w-0\"\n            value={parseDateFromPayload(value?.customTriggerTimePayload)}\n            onChange={handleDateChange}\n            format={dateFormat}\n            disabled={disabled}\n          />\n        )}\n\n        {selectedType === 'date_field' && (\n          <FormSelect\n            className=\"flex-1 min-w-0\"\n            items={forms}\n            value={dateFieldPayload?.formId}\n            onChange={handleFormChange}\n            disabled={disabled}\n          />\n        )}\n      </div>\n\n      {/* Row 2 - field select + offset preference, only for date_field */}\n      {selectedType === 'date_field' && (\n        <div className=\"flex items-start gap-[10px] w-full\">\n          <FieldSelect\n            className=\"w-[300px]\"\n            fields={fields}\n            value={dateFieldPayload?.fieldId}\n            onChange={handleFieldChange}\n            disabled={disabled}\n          />\n          {dateFieldPayload && (\n            <OffsetPreferenceSelect\n              value={{\n                dateFieldType: dateFieldPayload.dateFieldType,\n                offsetType: dateFieldPayload.offsetType,\n                offsetValue: dateFieldPayload.offsetValue,\n                offsetUnit: dateFieldPayload.offsetUnit,\n              }}\n              onChange={handleOffsetPreferenceChange}\n              dateFieldType={dateFieldPayload.dateFieldType}\n              disabled={disabled}\n            />\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n","import type { repeatPreferenceType } from '@baishuyun/types';\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from '../../ui/select';\n\nexport interface RepeatPreferenceTypeOption {\n  value: repeatPreferenceType;\n  label: string;\n}\n\nexport const RepeatPreferenceTypeOptions: RepeatPreferenceTypeOption[] = [\n  { value: 'none', label: '不重复触发' },\n  { value: 'daily', label: '每天触发一次' },\n  { value: 'weekly', label: '每周触发一次' },\n  { value: 'everyTwoWeeks', label: '每两周触发一次' },\n  { value: 'monthly', label: '每月触发一次' },\n  { value: 'yearly', label: '每年触发一次' },\n  { value: 'custom', label: '自定义重复' },\n];\n\nexport interface RepeatPreferenceTypeSelectProps {\n  value?: repeatPreferenceType;\n  onChange?: (value: repeatPreferenceType) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const RepeatPreferenceTypeSelect = ({\n  value,\n  onChange,\n  placeholder = '请选择重复类型',\n  disabled = false,\n  className,\n}: RepeatPreferenceTypeSelectProps) => {\n  return (\n    <Select\n      value={value}\n      onValueChange={(v) => onChange?.(v as repeatPreferenceType)}\n      disabled={disabled}\n    >\n      <SelectTrigger className={className}>\n        <SelectValue placeholder={placeholder} />\n      </SelectTrigger>\n      <SelectContent>\n        {RepeatPreferenceTypeOptions.map((option) => (\n          <SelectItem key={option.value} value={option.value}>\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n","export const ClearAllIcon = ({ className }: { className?: string }) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" className={className}>\n    <path d=\"M7 0C7.91925 -1.93718e-08 8.8295 0.18106 9.67878 0.532843C10.5281 0.884626 11.2997 1.40024 11.9497 2.05025C12.5998 2.70026 13.1154 3.47194 13.4672 4.32122C13.8189 5.17049 14 6.08075 14 7C14 7.91925 13.8189 8.8295 13.4672 9.67878C13.1154 10.5281 12.5998 11.2997 11.9497 11.9497C11.2997 12.5998 10.5281 13.1154 9.67878 13.4672C8.8295 13.8189 7.91925 14 7 14C3.13372 14 1.39103e-08 10.8658 0 7C0 3.13372 3.13372 1.39103e-08 7 0ZM10.1495 3.85C10.0301 3.7308 9.86825 3.66386 9.69953 3.66386C9.53081 3.66386 9.36898 3.7308 9.24956 3.85L7 6.10058L4.74993 3.85C4.6295 3.73566 4.46918 3.67288 4.30313 3.67503C4.13708 3.67718 3.97844 3.7441 3.86102 3.86153C3.7436 3.97895 3.67668 4.13759 3.67452 4.30364C3.67237 4.46968 3.73515 4.63001 3.84949 4.75044L6.10109 7L3.85 9.24956C3.73566 9.36999 3.67288 9.53031 3.67503 9.69636C3.67718 9.86241 3.7441 10.021 3.86153 10.1385C3.97895 10.2559 4.13759 10.3228 4.30364 10.325C4.46969 10.3271 4.63001 10.2643 4.75044 10.15L7 7.8984L9.24956 10.1495C9.37027 10.2621 9.52995 10.3234 9.69497 10.3205C9.85999 10.3177 10.0175 10.2509 10.1342 10.1342C10.2509 10.0175 10.3178 9.86008 10.3208 9.69507C10.3237 9.53005 10.2625 9.37033 10.15 9.24956L7.8984 7L10.1495 4.74993C10.2688 4.63049 10.3359 4.46856 10.3359 4.29971C10.3359 4.13086 10.2688 3.96892 10.1495 3.84949V3.85Z\" fill=\"#666666\"/>\n  </svg>\n);\n","import { useState, useCallback } from 'react';\nimport type { repeatByWeekDetail } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { SquareChecker } from '../../square-checker';\nimport { ClearAllIcon } from '../../icons/clear-all-icon';\nimport { usePortalContainer } from '../../../hooks/use-portal-container';\n\nexport interface WeekdaysOption {\n  value: repeatByWeekDetail;\n  label: string;\n}\n\nexport const WeekdaysOptions: WeekdaysOption[] = [\n  { value: 'mon', label: '星期一' },\n  { value: 'tue', label: '星期二' },\n  { value: 'wed', label: '星期三' },\n  { value: 'thu', label: '星期四' },\n  { value: 'fri', label: '星期五' },\n  { value: 'sat', label: '星期六' },\n  { value: 'sun', label: '星期日' },\n];\n\nexport interface WeekdaysSelectProps {\n  value?: repeatByWeekDetail[];\n  onChange?: (value: repeatByWeekDetail[]) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nconst CloseIcon = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M3 3L9 9M9 3L3 9\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nconst DropdownChevron = ({ open }: { open: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n  >\n    <path d=\"M4 6L8 10L12 6\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\nexport const WeekdaysSelect = ({\n  value = [],\n  onChange,\n  placeholder = '请选择工作日',\n  disabled = false,\n  className,\n}: WeekdaysSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [isHovering, setIsHovering] = useState(false);\n\n  const allSelected = value.length === WeekdaysOptions.length;\n  const someSelected = value.length > 0 && value.length < WeekdaysOptions.length;\n\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-weekdays-select-portal');\n\n  const handleToggle = useCallback(\n    (weekday: repeatByWeekDetail) => {\n      const next = value.includes(weekday)\n        ? value.filter((v) => v !== weekday)\n        : [...value, weekday];\n      onChange?.(next);\n    },\n    [value, onChange]\n  );\n\n  const handleSelectAll = useCallback(() => {\n    if (allSelected) {\n      onChange?.([]);\n    } else {\n      onChange?.(WeekdaysOptions.map((opt) => opt.value));\n    }\n  }, [allSelected, onChange]);\n\n  const handleClearAll = useCallback(\n    (e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.([]);\n    },\n    [onChange]\n  );\n\n  const handleRemove = useCallback(\n    (weekday: repeatByWeekDetail, e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.(value.filter((v) => v !== weekday));\n    },\n    [value, onChange]\n  );\n\n  const handleOpenChange = useCallback(\n    (nextOpen: boolean) => {\n      if (disabled) return;\n      setOpen(nextOpen);\n    },\n    [disabled]\n  );\n\n  const hasSelection = value.length > 0;\n  const showClear = hasSelection && isHovering;\n\n  return (\n    <div className={cn('relative', className)}>\n      <Popover open={open} onOpenChange={handleOpenChange}>\n        <PopoverTrigger asChild>\n          <button\n            type=\"button\"\n            disabled={disabled}\n            onMouseEnter={() => setIsHovering(true)}\n            onMouseLeave={() => setIsHovering(false)}\n            ref={setTriggerRef}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px] gap-2.5',\n              'bg-white border border-[#E0E0E0] rounded-[4px]',\n              'py-[7px]',\n              hasSelection ? 'pl-[4px] pr-[10px]' : 'px-[10px]',\n              'text-left cursor-pointer',\n              'hover:border-[#0265FF]',\n              disabled && 'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              open && 'border-[#0265FF]',\n              transCls\n            )}\n          >\n            {hasSelection ? (\n              <>\n                <div className=\"flex items-center gap-[4px] min-w-0 flex-1 overflow-x-auto scrollbar-hide\">\n                  {value.map((weekday) => {\n                    const opt = WeekdaysOptions.find((o) => o.value === weekday);\n                    return (\n                      <span\n                        key={weekday}\n                        className=\"flex items-center gap-[4px] bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px] shrink-0\"\n                      >\n                        <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                          {opt?.label}\n                        </span>\n                        <span\n                          className=\"cursor-pointer flex items-center shrink-0\"\n                          onClick={(e) => handleRemove(weekday, e)}\n                        >\n                          <CloseIcon />\n                        </span>\n                      </span>\n                    );\n                  })}\n                </div>\n                {showClear ? (\n                  <span\n                    className=\"cursor-pointer flex items-center shrink-0\"\n                    onClick={handleClearAll}\n                  >\n                    <ClearAllIcon />\n                  </span>\n                ) : (\n                  <DropdownChevron open={open} />\n                )}\n              </>\n            ) : (\n              <>\n                <span className=\"text-[14px] text-[#999999] leading-[normal] truncate\">\n                  {placeholder}\n                </span>\n                <DropdownChevron open={open} />\n              </>\n            )}\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          className=\"!border-0 rounded-[8px] shadow-[0px_6px_16px_rgba(0,0,0,0.06)] p-[4px]\"\n          portalContainer={portalContainer}\n        >\n          <div className=\"flex flex-col\">\n            <button\n              type=\"button\"\n              onClick={handleSelectAll}\n              className={cn(\n                'flex items-center gap-[6px] h-[34px] px-[10px] py-[7px] rounded-[4px] text-left',\n                'hover:bg-[#EFF0F6]',\n                transCls\n              )}\n            >\n              <SquareChecker\n                checked={allSelected}\n                intermediate={someSelected}\n                onCheckedChange={handleSelectAll}\n                className=\"shrink-0\"\n              />\n              <span className=\"text-[14px] font-bold text-[#0265FF] leading-[normal]\">\n                全选\n              </span>\n            </button>\n            {WeekdaysOptions.map((option) => {\n              const isSelected = value.includes(option.value);\n              return (\n                <button\n                  key={option.value}\n                  type=\"button\"\n                  onClick={() => handleToggle(option.value)}\n                  className={cn(\n                    'flex items-center gap-[6px] h-[34px] px-[10px] py-[7px] rounded-[4px] text-left',\n                    'hover:bg-[#EFF0F6]',\n                    transCls\n                  )}\n                >\n                  <SquareChecker\n                    checked={isSelected}\n                    onCheckedChange={() => handleToggle(option.value)}\n                    className=\"shrink-0\"\n                  />\n                  <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                    {option.label}\n                  </span>\n                </button>\n              );\n            })}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n};\n","import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '../../lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      'inline-flex items-center w-full gap-[2px] p-[2px] bg-[#EFF0F6] rounded-[4px]',\n      className\n    )}\n    {...props}\n  />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      'inline-flex items-center justify-center w-full h-[30px]',\n      'px-[10px] py-[7px] rounded-[4px]',\n      'text-[14px] text-[#121111] leading-normal',\n      'bg-transparent border border-solid border-[#EFF0F6]',\n      'transition-all duration-200 ease-out',\n      'outline-none cursor-pointer',\n      'hover:text-[#121111] hover:border-[#E0E0E0] hover:bg-white',\n      'data-[state=active]:text-[#0265FF] data-[state=active]:border-[#E0E0E0] data-[state=active]:bg-white',\n      'focus-visible:ring-2 focus-visible:ring-[#0265FF] focus-visible:ring-offset-1',\n      className\n    )}\n    {...props}\n  />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      'mt-2 outline-none',\n      'data-[state=inactive]:hidden',\n      className\n    )}\n    {...props}\n  />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { useState, useCallback, useMemo } from 'react';\nimport type { repeatByMonthDetail } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../ui/tabs';\nimport { SquareChecker } from '../../square-checker';\nimport { ClearAllIcon } from '../../icons/clear-all-icon';\nimport { usePortalContainer } from '../../../hooks/use-portal-container';\n\nexport interface MonthdaysOption {\n  value: repeatByMonthDetail;\n  label: string;\n}\n\nexport const MonthdaysOptions: MonthdaysOption[] = [\n  { value: 1, label: '1' },\n  { value: 2, label: '2' },\n  { value: 3, label: '3' },\n  { value: 4, label: '4' },\n  { value: 5, label: '5' },\n  { value: 6, label: '6' },\n  { value: 7, label: '7' },\n  { value: 8, label: '8' },\n  { value: 9, label: '9' },\n  { value: 10, label: '10' },\n  { value: 11, label: '11' },\n  { value: 12, label: '12' },\n  { value: 13, label: '13' },\n  { value: 14, label: '14' },\n  { value: 15, label: '15' },\n  { value: 16, label: '16' },\n  { value: 17, label: '17' },\n  { value: 18, label: '18' },\n  { value: 19, label: '19' },\n  { value: 20, label: '20' },\n  { value: 21, label: '21' },\n  { value: 22, label: '22' },\n  { value: 23, label: '23' },\n  { value: 24, label: '24' },\n  { value: 25, label: '25' },\n  { value: 26, label: '26' },\n  { value: 27, label: '27' },\n  { value: 28, label: '28' },\n  { value: 29, label: '29' },\n  { value: 30, label: '30' },\n  { value: 31, label: '31' },\n];\n\nconst LAST_DAY_OPTION: MonthdaysOption = { value: 'last', label: '最后一个自然日' };\n\nconst DAYS_PER_ROW = 7;\n\nexport interface MonthdaysSelectProps {\n  value?: repeatByMonthDetail[];\n  onChange?: (value: repeatByMonthDetail[]) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nconst CloseIcon = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M3 3L9 9M9 3L3 9\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nconst DropdownChevron = ({ open }: { open: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n  >\n    <path d=\"M4 6L8 10L12 6\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\nexport const MonthdaysSelect = ({\n  value = [],\n  onChange,\n  placeholder = '请选择日期',\n  disabled = false,\n  className,\n}: MonthdaysSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [isHovering, setIsHovering] = useState(false);\n  const [draftValue, setDraftValue] = useState<repeatByMonthDetail[]>(value);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-weekdays-select-portal');\n\n  const displayValue = open ? draftValue : value;\n\n  const numericSelected = useMemo(\n    () => displayValue.filter((v) => v !== 'last') as number[],\n    [displayValue]\n  );\n  const hasLast = useMemo(\n    () => displayValue.includes('last'),\n    [displayValue]\n  );\n\n  const allDaysSelected = numericSelected.length === 31;\n\n  const handleToggleDay = useCallback(\n    (day: repeatByMonthDetail) => {\n      setDraftValue((prev) =>\n        prev.includes(day) ? prev.filter((v) => v !== day) : [...prev, day]\n      );\n    },\n    []\n  );\n\n  const handleSelectAllDays = useCallback(() => {\n    setDraftValue((prev) => {\n      const prevNumeric = prev.filter((v) => v !== 'last') as number[];\n      if (prevNumeric.length === 31) {\n        return prev.filter((v) => v === 'last');\n      }\n      const allDays = MonthdaysOptions.map((o) => o.value);\n      const lastPart = prev.includes('last') ? (['last'] as const) : [];\n      return [...allDays, ...lastPart];\n    });\n  }, []);\n\n  const handleSelectToday = useCallback(() => {\n    const today = new Date().getDate();\n    setDraftValue((prev) => {\n      if (prev.includes(today as repeatByMonthDetail)) return prev;\n      return [...prev, today as repeatByMonthDetail];\n    });\n  }, []);\n\n  const handleToggleLast = useCallback(() => {\n    setDraftValue((prev) =>\n      prev.includes('last') ? prev.filter((v) => v !== 'last') : [...prev, 'last']\n    );\n  }, []);\n\n  const handleConfirm = useCallback(() => {\n    onChange?.(draftValue);\n    setOpen(false);\n  }, [draftValue, onChange]);\n\n  const handleOpenChange = useCallback(\n    (nextOpen: boolean) => {\n      if (disabled) return;\n      if (nextOpen) {\n        setDraftValue([...value]);\n      }\n      setOpen(nextOpen);\n    },\n    [disabled, value]\n  );\n\n  const handleClearAll = useCallback(\n    (e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.([]);\n    },\n    [onChange]\n  );\n\n  const handleRemove = useCallback(\n    (day: repeatByMonthDetail, e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.(value.filter((v) => v !== day));\n    },\n    [value, onChange]\n  );\n\n  const hasSelection = value.length > 0;\n  const showClear = hasSelection && isHovering;\n\n  const displayLabel = useCallback((v: repeatByMonthDetail) => {\n    if (v === 'last') return '最后一天';\n    return `${v}日`;\n  }, []);\n\n  const dayRows = useMemo(() => {\n    const rows: MonthdaysOption[][] = [];\n    for (let i = 0; i < MonthdaysOptions.length; i += DAYS_PER_ROW) {\n      rows.push(MonthdaysOptions.slice(i, i + DAYS_PER_ROW));\n    }\n    return rows;\n  }, []);\n\n  return (\n    <div className={cn('relative', className)}>\n      <Popover open={open} onOpenChange={handleOpenChange}>\n        <PopoverTrigger asChild>\n          <button\n            type=\"button\"\n            ref={setTriggerRef}\n            disabled={disabled}\n            onMouseEnter={() => setIsHovering(true)}\n            onMouseLeave={() => setIsHovering(false)}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px] gap-2.5',\n              'bg-white border border-[#E0E0E0] rounded-[4px]',\n              'py-[7px]',\n              hasSelection ? 'pl-[4px] pr-[10px]' : 'px-[10px]',\n              'text-left cursor-pointer',\n              'hover:border-[#0265FF]',\n              disabled && 'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              open && 'border-[#0265FF]',\n              transCls\n            )}\n          >\n            {hasSelection ? (\n              <>\n                <div className=\"flex items-center gap-[4px] min-w-0 flex-1 overflow-x-auto scrollbar-hide\">\n                  {value.map((day) => (\n                    <span\n                      key={day}\n                      className=\"flex items-center gap-[4px] bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px] shrink-0\"\n                    >\n                      <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                        {displayLabel(day)}\n                      </span>\n                      <span\n                        className=\"cursor-pointer flex items-center shrink-0\"\n                        onClick={(e) => handleRemove(day, e)}\n                      >\n                        <CloseIcon />\n                      </span>\n                    </span>\n                  ))}\n                </div>\n                {showClear ? (\n                  <span\n                    className=\"cursor-pointer flex items-center shrink-0\"\n                    onClick={handleClearAll}\n                  >\n                    <ClearAllIcon />\n                  </span>\n                ) : (\n                  <DropdownChevron open={open} />\n                )}\n              </>\n            ) : (\n              <>\n                <span className=\"text-[14px] text-[#999999] leading-[normal] truncate\">\n                  {placeholder}\n                </span>\n                <DropdownChevron open={open} />\n              </>\n            )}\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[8px] shadow-[0px_6px_16px_rgba(0,0,0,0.06)] p-0\"\n          style={{ width: '310px' }}\n        >\n          <Tabs defaultValue=\"specific\">\n            <div className=\"px-[4px] pt-[4px] flex justify-center\">\n              <TabsList>\n                <TabsTrigger value=\"specific\">指定日期</TabsTrigger>\n                <TabsTrigger value=\"relative\">相对日期</TabsTrigger>\n              </TabsList>\n            </div>\n\n            <TabsContent value=\"specific\" className=\"mt-0\">\n              <div className=\"px-[8px] pt-[8px] pb-[4px]\">\n                <button\n                  type=\"button\"\n                  onClick={handleSelectAllDays}\n                  className={cn(\n                    'flex items-center gap-[6px] w-full h-[34px] px-[10px] py-[7px] rounded-[4px] text-left mb-[4px]',\n                    'hover:bg-[#EFF0F6]',\n                    transCls\n                  )}\n                >\n                  <SquareChecker\n                    checked={allDaysSelected}\n                    intermediate={numericSelected.length > 0 && !allDaysSelected}\n                    onCheckedChange={handleSelectAllDays}\n                    className=\"shrink-0\"\n                  />\n                  <span className=\"text-[14px] font-bold text-[#0265FF] leading-[normal]\">\n                    全选\n                  </span>\n                </button>\n                <div className=\"flex flex-col gap-[2px]\">\n                  {dayRows.map((row, rowIdx) => (\n                    <div key={rowIdx} className=\"flex gap-[4px]\">\n                      {row.map((option) => {\n                        const isSelected = numericSelected.includes(option.value as number);\n                        return (\n                          <button\n                            key={option.value}\n                            type=\"button\"\n                            onClick={() => handleToggleDay(option.value)}\n                            className={cn(\n                              'flex items-center justify-center w-[36px] h-[30px] rounded-[4px]',\n                              'text-[14px] leading-[normal]',\n                              'transition-all duration-200 ease-out',\n                              isSelected\n                                ? 'bg-[#0265FF] text-white'\n                                : 'text-[#030303] hover:bg-[#EFF0F6]'\n                            )}\n                          >\n                            {option.label}\n                          </button>\n                        );\n                      })}\n                    </div>\n                  ))}\n                </div>\n              </div>\n              <div className=\"flex items-center justify-between px-[12px] py-[8px] border-t border-[#E0E0E0] mt-[4px]\">\n                <button\n                  type=\"button\"\n                  onClick={handleSelectToday}\n                  className={cn(\n                    'h-[28px] px-[12px] rounded-[4px] text-[14px]',\n                    'text-[#0265FF] hover:bg-[#EFF0F6]',\n                    transCls\n                  )}\n                >\n                  今天\n                </button>\n                <button\n                  type=\"button\"\n                  onClick={handleConfirm}\n                  className={cn(\n                    'h-[28px] px-[16px] rounded-[4px] text-[14px]',\n                    'bg-[#0265FF] text-white hover:bg-[#0255DD]',\n                    transCls\n                  )}\n                >\n                  确认\n                </button>\n              </div>\n            </TabsContent>\n\n            <TabsContent value=\"relative\" className=\"mt-0\">\n              <div className=\"px-[8px] pt-[8px] pb-[4px]\">\n                <button\n                  type=\"button\"\n                  onClick={handleToggleLast}\n                  className={cn(\n                    'flex items-center gap-[6px] w-full h-[34px] px-[10px] py-[7px] rounded-[4px] text-left',\n                    'hover:bg-[#EFF0F6]',\n                    transCls\n                  )}\n                >\n                  <SquareChecker\n                    checked={hasLast}\n                    onCheckedChange={handleToggleLast}\n                    className=\"shrink-0\"\n                  />\n                  <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                    {LAST_DAY_OPTION.label}\n                  </span>\n                </button>\n              </div>\n              <div className=\"flex items-center justify-center px-[12px] py-[8px] border-t border-[#E0E0E0] mt-[4px]\">\n                <button\n                  type=\"button\"\n                  onClick={handleConfirm}\n                  className={cn(\n                    'h-[28px] px-[16px] rounded-[4px] text-[14px]',\n                    'bg-[#0265FF] text-white hover:bg-[#0255DD]',\n                    transCls\n                  )}\n                >\n                  确认\n                </button>\n              </div>\n            </TabsContent>\n          </Tabs>\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n};\n","import type { repeatByType } from '@baishuyun/types';\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from '../../ui/select';\n\nexport interface RepeatByTypeOption {\n  value: repeatByType;\n  label: string;\n}\n\nexport const RepeatByTypeOptions: RepeatByTypeOption[] = [\n  { value: 'week', label: '按周重复' },\n  { value: 'month', label: '按月重复' },\n];\n\nexport interface RepeatByTypeSelectProps {\n  value?: repeatByType;\n  onChange?: (value: repeatByType) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const RepeatByTypeSelect = ({\n  value,\n  onChange,\n  placeholder = '请选择重复方式',\n  disabled = false,\n  className,\n}: RepeatByTypeSelectProps) => {\n  return (\n    <Select\n      value={value}\n      onValueChange={(v) => onChange?.(v as repeatByType)}\n      disabled={disabled}\n    >\n      <SelectTrigger className={className}>\n        <SelectValue placeholder={placeholder} />\n      </SelectTrigger>\n      <SelectContent>\n        {RepeatByTypeOptions.map((option) => (\n          <SelectItem key={option.value} value={option.value}>\n            {option.label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  );\n};\n","import { useCallback } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { RepeatPreferenceTypeSelect } from '../repeat-preference-type-select';\nimport { RepeatByTypeSelect } from '../repeat-by-type-select';\nimport { WeekdaysSelect } from '../weekdays-select';\nimport { MonthdaysSelect } from '../monthdays-select';\nimport type {\n  IRepeatPreference,\n  customRepeatPreference,\n  repeatPreferenceType,\n  repeatByType,\n  repeatByWeekDetail,\n  repeatByMonthDetail,\n} from '@baishuyun/types';\n\nexport interface RepeatPreferenceSelectProps {\n  value?: IRepeatPreference;\n  onChange?: (value: IRepeatPreference) => void;\n  disabled?: boolean;\n  className?: string;\n}\n\nconst NUMBER_INPUT_CLASSES = cn(\n  'h-[34px] px-[10px] py-[7px] rounded-[4px] bg-white border border-[#e0e0e0]',\n  'text-[14px] text-[#030303] placeholder:text-[#999999]',\n  'focus:outline-none focus:border-[#0265FF]',\n  'disabled:bg-[#EFF0F6] disabled:cursor-not-allowed',\n  '[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n  'w-[60px]',\n);\n\nfunction defaultCustomRepeatPreference(): customRepeatPreference {\n  return { repeatBy: 'week', interval: 1, repeatDetailDates: [] };\n}\n\nexport function RepeatPreferenceSelect({\n  value,\n  onChange,\n  disabled = false,\n  className,\n}: RepeatPreferenceSelectProps) {\n  const selectedType = value?.type;\n  const customPref = value?.customRepeatPreference;\n  const repeatBy = customPref?.repeatBy;\n\n  const handleTypeChange = useCallback(\n    (type: repeatPreferenceType) => {\n      if (type === 'custom') {\n        onChange?.({\n          type: 'custom',\n          customRepeatPreference: customPref ?? defaultCustomRepeatPreference(),\n        });\n      } else {\n        onChange?.({ type });\n      }\n    },\n    [onChange, customPref],\n  );\n\n  const handleRepeatByChange = useCallback(\n    (newRepeatBy: repeatByType) => {\n      if (!customPref) return;\n      onChange?.({\n        type: 'custom',\n        customRepeatPreference: {\n          ...customPref,\n          repeatBy: newRepeatBy,\n          repeatDetailDates: [],\n        },\n      });\n    },\n    [onChange, customPref],\n  );\n\n  const handleIntervalChange = useCallback(\n    (e: React.ChangeEvent<HTMLInputElement>) => {\n      if (!customPref) return;\n      const raw = parseInt(e.target.value, 10);\n      const interval = isNaN(raw) ? 1 : Math.max(1, raw);\n      onChange?.({\n        type: 'custom',\n        customRepeatPreference: { ...customPref, interval },\n      });\n    },\n    [onChange, customPref],\n  );\n\n  const handleWeekdaysChange = useCallback(\n    (days: repeatByWeekDetail[]) => {\n      if (!customPref) return;\n      onChange?.({\n        type: 'custom',\n        customRepeatPreference: { ...customPref, repeatDetailDates: days },\n      });\n    },\n    [onChange, customPref],\n  );\n\n  const handleMonthdaysChange = useCallback(\n    (days: repeatByMonthDetail[]) => {\n      if (!customPref) return;\n      onChange?.({\n        type: 'custom',\n        customRepeatPreference: { ...customPref, repeatDetailDates: days },\n      });\n    },\n    [onChange, customPref],\n  );\n\n  const weekdaysValue = (customPref?.repeatDetailDates ?? []) as repeatByWeekDetail[];\n  const monthdaysValue = (customPref?.repeatDetailDates ?? []) as repeatByMonthDetail[];\n\n  return (\n    <div className={cn('flex flex-col gap-[10px]', className)}>\n      <RepeatPreferenceTypeSelect\n        value={selectedType}\n        onChange={handleTypeChange}\n        disabled={disabled}\n      />\n\n      {selectedType === 'custom' && (\n        <div className=\"flex items-start gap-[10px] w-full\">\n          <RepeatByTypeSelect\n            className=\"w-[200px] shrink-0\"\n            value={repeatBy}\n            onChange={handleRepeatByChange}\n            disabled={disabled}\n          />\n          <span className=\"text-[14px] text-[#030303] leading-[34px] shrink-0\">每</span>\n          <input\n            type=\"number\"\n            value={customPref?.interval ?? 1}\n            onChange={handleIntervalChange}\n            disabled={disabled}\n            min={1}\n            step={1}\n            className={NUMBER_INPUT_CLASSES}\n          />\n          <span className=\"text-[14px] text-[#030303] leading-[34px] shrink-0\">\n            {repeatBy === 'month' ? '月' : '周'}\n          </span>\n          {repeatBy === 'week' && (\n            <WeekdaysSelect\n              className=\"flex-1 min-w-0\"\n              value={weekdaysValue}\n              onChange={handleWeekdaysChange}\n              disabled={disabled}\n            />\n          )}\n          {repeatBy === 'month' && (\n            <MonthdaysSelect\n              className=\"flex-1 min-w-0\"\n              value={monthdaysValue}\n              onChange={handleMonthdaysChange}\n              disabled={disabled}\n            />\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport interface FormDividerProps {\n  children?: ReactNode;\n  className?: string;\n}\n\nconst DecorativeLine = ({ flipped }: { flipped?: boolean }) => (\n  <svg\n    width=\"40\"\n    height=\"4\"\n    viewBox=\"0 0 40 4\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    style={{ display: 'block', flexShrink: 0 }}\n  >\n    {flipped ? (\n      <>\n        <circle cx=\"2\" cy=\"2\" r=\"2\" fill=\"#D9D9D9\" />\n        <path d=\"M10 2H40\" stroke=\"#E0E0E0\" />\n      </>\n    ) : (\n      <>\n        <path d=\"M0 2H30\" stroke=\"#E0E0E0\" />\n        <circle cx=\"38\" cy=\"2\" r=\"2\" fill=\"#D9D9D9\" />\n      </>\n    )}\n  </svg>\n);\n\nexport const FormDivider = ({ children, className }: FormDividerProps) => {\n  return (\n    <div className={cn('flex items-center justify-center gap-[10px]', className)}>\n      <DecorativeLine />\n      {children != null && (\n        <span className=\"text-[#999] text-[14px] whitespace-nowrap leading-[normal] shrink-0\">\n          {children}\n        </span>\n      )}\n      <DecorativeLine flipped />\n    </div>\n  );\n};\n","import { useState, useCallback, useMemo } from 'react';\nimport type { relationalOperator } from '@baishuyun/types';\nimport { OPERATOR_LABEL_MAP } from '@baishuyun/ai-feat-utils';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\n\nconst ALL_OPTIONS: Array<{ value: relationalOperator; label: string }> = [\n  { value: 'eq', label: OPERATOR_LABEL_MAP.eq },\n  { value: 'neq', label: OPERATOR_LABEL_MAP.neq },\n  { value: 'gt', label: OPERATOR_LABEL_MAP.gt },\n  { value: 'lt', label: OPERATOR_LABEL_MAP.lt },\n  { value: 'gte', label: OPERATOR_LABEL_MAP.gte },\n  { value: 'lte', label: OPERATOR_LABEL_MAP.lte },\n  { value: 'contains', label: OPERATOR_LABEL_MAP.contains },\n  { value: 'not_contains', label: OPERATOR_LABEL_MAP.not_contains },\n  { value: 'in', label: OPERATOR_LABEL_MAP.in },\n  { value: 'nin', label: OPERATOR_LABEL_MAP.nin },\n  { value: 'all', label: OPERATOR_LABEL_MAP.all },\n  { value: 'empty', label: OPERATOR_LABEL_MAP.empty },\n  { value: 'not_empty', label: OPERATOR_LABEL_MAP.not_empty },\n  { value: 'range', label: OPERATOR_LABEL_MAP.range },\n];\n\nexport interface IRelationalOperatorSelectProps {\n  value?: relationalOperator;\n  defaultValue?: relationalOperator;\n  onChange?: (value: relationalOperator) => void;\n  operators?: relationalOperator[];\n  borderless?: boolean;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const RelationalOperatorSelect = ({\n  value: controlledValue,\n  defaultValue = 'eq',\n  onChange,\n  operators,\n  borderless = false,\n  disabled = false,\n  className,\n}: IRelationalOperatorSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [internalValue, setInternalValue] = useState<relationalOperator>(defaultValue);\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n  const options = useMemo(() => {\n    if (!operators || operators.length === 0) return ALL_OPTIONS;\n    const set = new Set(operators);\n    return ALL_OPTIONS.filter((o) => set.has(o.value));\n  }, [operators]);\n\n  const resolvedValue = (() => {\n    const v = controlledValue !== undefined ? controlledValue : internalValue;\n    if (options.length > 0 && !options.find((o) => o.value === v)) {\n      return options[0].value;\n    }\n    return v;\n  })();\n\n  const selectedLabel = options.find((o) => o.value === resolvedValue)?.label ?? '';\n\n  const handleSelect = useCallback(\n    (v: relationalOperator) => {\n      if (controlledValue === undefined) setInternalValue(v);\n      onChange?.(v);\n      setOpen(false);\n    },\n    [controlledValue, onChange],\n  );\n\n  const setTriggerRef = useCallback((node: HTMLButtonElement | null) => {\n    if (!node) {\n      setPortalContainer(null);\n      return;\n    }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>(\n        '[data-bs-relational-operator-select-portal]',\n      );\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-relational-operator-select-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  return (\n    <div className={cn('relative inline-flex', className)}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between gap-[10px]',\n              'min-w-[82px] px-[10px] w-full',\n              'text-left cursor-pointer',\n              borderless\n                ? 'h-[34px] bg-transparent'\n                : cn(\n                    'h-[31px] bg-white border rounded-[4px]',\n                    open\n                      ? 'border-[#0265FF]'\n                      : 'border-[#E0E0E0] hover:border-[#0265FF]',\n                  ),\n              disabled &&\n                'opacity-50 cursor-not-allowed',\n              !disabled && !borderless && 'hover:border-[#0265FF]',\n              transCls,\n            )}\n          >\n            <span className=\"text-[14px] leading-[normal] text-[#030303] truncate\">\n              {selectedLabel}\n            </span>\n            <span\n              className={cn(\n                'shrink-0 flex items-center justify-center w-[16px] h-[16px] text-[#666666]',\n                transCls,\n                open && 'rotate-180',\n              )}\n            >\n              <svg\n                width=\"16\"\n                height=\"16\"\n                viewBox=\"0 0 16 16\"\n                fill=\"none\"\n              >\n                <path\n                  d=\"M4 6L8 10L12 6\"\n                  stroke=\"#666666\"\n                  strokeWidth=\"1.2\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                />\n              </svg>\n            </span>\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[4px] min-w-[82px]\"\n        >\n          <div className=\"flex flex-col gap-0 max-h-[320px] overflow-y-auto\">\n            {options.map((opt) => (\n              <button\n                key={opt.value}\n                type=\"button\"\n                onClick={() => handleSelect(opt.value)}\n                className={cn(\n                  'h-[34px] px-[10px] rounded-[4px] text-left text-[14px] leading-[normal] whitespace-nowrap shrink-0',\n                  resolvedValue === opt.value\n                    ? 'bg-[#F0F6FF] text-[#0265FF]'\n                    : 'text-[#030303] hover:bg-[#EFF0F6]',\n                  transCls,\n                )}\n              >\n                {opt.label}\n              </button>\n            ))}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n};\n","import { cn } from '../lib/utils';\nimport { ChatHeaderBgImgUrl } from '../const/ui';\nimport { IconBtn } from './icon-btn';\nimport { CloseIcon, DockIcon, FloatIcon } from './bs-icons';\n\nexport interface ChatAreaHeaderProps {\n  title?: string;\n  width?: number;\n  onDockClick?: () => void;\n  onCloseClick?: () => void;\n  avatar?: React.ReactNode;\n  draggable?: boolean;\n  isDragging?: boolean;\n  isDocked?: boolean;\n  onDragStart?: (e: React.MouseEvent) => void;\n}\n\nexport const ChatAreaHeader = ({\n  avatar,\n  width,\n  onDockClick,\n  onCloseClick,\n  draggable,\n  isDragging,\n  isDocked,\n  onDragStart,\n}: ChatAreaHeaderProps) => {\n  return (\n    <div\n      className={cn('flex items-center justify-between', 'px-4', 'h-[52px] min-w-[200px]', {\n        'w-full': !width,\n        [`w-[${width}px]`]: width,\n        'cursor-grab': draggable && !isDragging,\n        'cursor-grabbing': isDragging,\n      })}\n      style={{\n        backgroundImage: ChatHeaderBgImgUrl,\n        backgroundSize: 'cover',\n        backgroundRepeat: 'no-repeat',\n      }}\n      onMouseDown={draggable ? onDragStart : undefined}\n    >\n      {avatar}\n\n      <div className=\"actions flex items-center gap-2.5 text-[#666]\">\n        <IconBtn\n          onMouseDown={(e) => {\n            // 阻止事件冒泡，避免触发拖拽\n            e.stopPropagation();\n          }}\n          tooltip={isDocked ? '悬浮' : '右侧打开'}\n          // className=\"hover:!bg-[#ffffff]\"\n          icon={isDocked ? <FloatIcon /> : <DockIcon />}\n          onClick={onDockClick}\n        />\n        <IconBtn\n          // tooltip=\"关闭\"\n          // className=\"hover:!bg-[#ffffff]\"\n          icon={<CloseIcon />}\n          onClick={onCloseClick}\n        />\n      </div>\n    </div>\n  );\n};\n","import { useState } from 'react';\nimport { cn } from '../lib/utils';\nimport { CheckerInBoxIcon } from './bs-icons';\n\nexport interface CircleCheckerProps {\n  defaultChecked?: boolean;\n  checked?: boolean;\n  onCheckedChange?: (checked: boolean) => void;\n  children?: React.ReactNode;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const CircleChecker = ({\n  defaultChecked = false,\n  checked: controlledChecked,\n  onCheckedChange,\n  children,\n  disabled = false,\n  className,\n}: CircleCheckerProps) => {\n  const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n  const isControlled = controlledChecked !== undefined;\n  const isChecked = isControlled ? controlledChecked : internalChecked;\n\n  const handleClick = () => {\n    if (disabled) return;\n\n    const newChecked = !isChecked;\n    if (!isControlled) {\n      setInternalChecked(newChecked);\n    }\n    onCheckedChange?.(newChecked);\n  };\n\n  return (\n    <button\n      type=\"button\"\n      role=\"checkbox\"\n      aria-checked={isChecked}\n      disabled={disabled}\n      onClick={handleClick}\n      className={cn(\n        'inline-flex items-center gap-[6px] cursor-pointer select-none',\n        'text-[#121111] text-[14px]',\n        disabled && 'cursor-not-allowed opacity-50',\n        className\n      )}\n    >\n      <span\n        className={cn(\n          'inline-flex items-center justify-center w-4 h-4 rounded-full transition-colors duration-200 box-border border',\n          isChecked ? 'bg-[#2E60FF] border-transparent' : 'bg-white border-[#e0e0e0]'\n        )}\n      >\n        {isChecked && (\n          <span className=\"text-white\">\n            <CheckerInBoxIcon />\n          </span>\n        )}\n      </span>\n      {children && <span className=\"text-sm\">{children}</span>}\n    </button>\n  );\n};\n","import { useState } from 'react';\nimport { cn } from '../lib/utils';\nimport { CircleChecker, type CircleCheckerProps } from './circle-checker';\n\nexport interface RadioCardProps extends CircleCheckerProps {\n  title: string;\n  description: string;\n}\n\nexport const RadioCard = ({\n  defaultChecked = false,\n  checked: controlledChecked,\n  onCheckedChange,\n  title,\n  description,\n  disabled = false,\n  className,\n}: RadioCardProps) => {\n  const [internalChecked, setInternalChecked] = useState(defaultChecked);\n\n  const isControlled = controlledChecked !== undefined;\n  const isChecked = isControlled ? controlledChecked : internalChecked;\n\n  const handleClick = () => {\n    if (disabled) return;\n\n    const newChecked = !isChecked;\n    if (!isControlled) {\n      setInternalChecked(newChecked);\n    }\n    onCheckedChange?.(newChecked);\n  };\n\n  return (\n    <button\n      type=\"button\"\n      role=\"checkbox\"\n      aria-checked={isChecked}\n      disabled={disabled}\n      onClick={handleClick}\n      className={cn(\n        'flex flex-col gap-[6px] p-[10px] rounded-[4px] cursor-pointer select-none',\n        'border border-[#e0e0e0]',\n        disabled && 'cursor-not-allowed opacity-50',\n        className\n      )}\n    >\n      <div className=\"inline-flex items-center gap-[6px]\">\n        <CircleChecker\n          checked={isChecked}\n          onCheckedChange={(_) => {\n            if (!isChecked) {\n              handleClick();\n            }\n          }}\n          disabled={disabled}\n        />\n        <span className=\"text-[#030303] text-[14px]\">{title}</span>\n      </div>\n      <p className=\"text-[#666] text-[12px] pl-[22px]\">{description}</p>\n    </button>\n  );\n};\n","import { ReactNode, useState } from 'react';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { AnalysisIcon, ChevronIcon } from './bs-icons';\n\nexport interface CollapsibleTxtMsgProps {\n  title: string;\n  content?: string;\n  icon?: ReactNode;\n  defaultOpen?: boolean;\n  children?: ReactNode;\n\n  disableExpand?: boolean;\n}\n\nexport const CollapsibleTxtMsg = ({\n  title,\n  content,\n  icon,\n  disableExpand,\n  children,\n  defaultOpen,\n}: CollapsibleTxtMsgProps) => {\n  const [isOpen, setIsOpen] = useState(defaultOpen);\n\n  return (\n    <div className=\"bg-[#fafafa] border border-[#e0e0e0] border-solid flex flex-col gap-2.5 p-2.5 rounded-lg w-full\">\n      <div\n        className={cn('flex items-center justify-between w-full', {\n          'cursor-pointer': !disableExpand,\n        })}\n        onClick={() => {\n          if (disableExpand) return;\n\n          setIsOpen(!isOpen);\n        }}\n      >\n        <div className=\"flex gap-2.5 items-center\">\n          <div className=\"w-4 h-4 shrink-0 flex items-center\">{icon || <AnalysisIcon />}</div>\n          <p className=\"text-[#666] text-[14px] leading-normal\">{title}</p>\n        </div>\n        <button\n          onClick={() => {\n            if (disableExpand) return;\n            setIsOpen(!isOpen);\n          }}\n          className={cn(\n            'flex items-center justify-center w-5 h-5 rounded-[4px] cursor-pointer hover:bg-[#EFF0F6]',\n            transCls,\n            {\n              'pointer-events-none opacity-0': disableExpand,\n            }\n          )}\n        >\n          <ChevronIcon isOpen={isOpen} />\n        </button>\n      </div>\n      {isOpen && !disableExpand && (\n        <div className=\"text-[#121111] text-[14px] word-wrap\">{content || children}</div>\n      )}\n    </div>\n  );\n};\n","import {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from './ui/dialog';\nimport { QuestionIcon } from './bs-icons';\nimport { cn } from '../lib/utils';\nimport { BaseButton } from './base-button';\n\nexport interface ConfirmDialogProps {\n  open?: boolean;\n  onOpenChange?: (open: boolean) => void;\n  title: string;\n  description?: string;\n  /** Text for the left link button */\n  linkText?: string;\n  /** Callback when link button is clicked */\n  onLinkClick?: () => void;\n  /** Text for the cancel button */\n  cancelText?: string;\n  /** Callback when cancel button is clicked */\n  onCancel?: () => void;\n  /** Text for the confirm button */\n  confirmText?: string;\n  /** Callback when confirm button is clicked */\n  onConfirm?: () => void;\n  /** Whether to show the link button */\n  showLink?: boolean;\n  /** Whether to show the cancel button */\n  showCancel?: boolean;\n  /** Container element for the dialog portal */\n  container?: HTMLElement;\n}\n\nexport function ConfirmDialog({\n  open,\n  onOpenChange,\n  title,\n  description,\n  linkText = '留在此页',\n  onLinkClick,\n  cancelText = '不保存',\n  onCancel,\n  confirmText = '保存并继续',\n  onConfirm,\n  container,\n  showLink = true,\n  showCancel = true,\n}: ConfirmDialogProps) {\n  const btnStyle = {\n    borderRadius: 4,\n    padding: '6px 20px',\n  };\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogContent\n        container={container}\n        className={cn(\n          'w-[480px] max-w-[480px] p-0 gap-0 rounded-[10px] border-none',\n          'shadow-[0px_0px_10px_0px_rgba(0,0,0,0.04)]',\n          '[&>button]:hidden'\n        )}\n      >\n        <DialogHeader className=\"flex flex-row items-start gap-[10px] p-9 pb-0\">\n          <div className=\"size-[30px] shrink-0 text-[#0265FF]\">\n            <QuestionIcon />\n          </div>\n          <div className=\"flex flex-col gap-2\">\n            <DialogTitle className=\"text-[16px] font-[700] text-[#030303] leading-normal\">\n              {title}\n            </DialogTitle>\n            {description && (\n              <DialogDescription className=\"text-[14px] text-[#666] leading-normal\">\n                {description}\n              </DialogDescription>\n            )}\n          </div>\n        </DialogHeader>\n\n        <DialogFooter className=\"flex flex-row items-center !justify-between p-9 pt-6\">\n          {showLink ? (\n            <button\n              type=\"button\"\n              className=\"text-[14px] text-[#0265ff] hover:text-[#0265ff]/80 bg-transparent border-none cursor-pointer\"\n              onClick={onLinkClick || (() => {\n                console.log('Link clicked');\n\n                onOpenChange?.(false);\n              })}\n            >\n              {linkText}\n            </button>\n          ) : (\n            <div />\n          )}\n\n          <div className=\"flex items-center gap-3\">\n            {showCancel && (\n              <BaseButton\n                className=\"hover:text-[#121111]\"\n                onClick={onCancel}\n              >\n                {cancelText}\n              </BaseButton>\n              // <button\n              //   type=\"button\"\n              //   onClick={onCancel}\n              //   style={btnStyle}\n              //   className={cn(\n              //     'h-8 px-5 py-1.5 rounded border border-[#e0e0e0]',\n              //     'text-[14px] text-[#030303] bg-white',\n              //     'hover:bg-gray-50 cursor-pointer'\n              //   )}\n              // >\n              //   {cancelText}\n              // </button>\n            )}\n            <button\n              type=\"button\"\n              onClick={onConfirm}\n              style={btnStyle}\n              className={cn(\n                // 'h-8 px-5 py-1.5 rounded',\n                'text-[14px] text-white bg-[#0265ff]',\n                'hover:bg-[#0265ff]/80 cursor-pointer border-none'\n              )}\n            >\n              {confirmText}\n            </button>\n          </div>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n","import { useState, useCallback, useMemo } from 'react';\nimport { IFieldDesignInfo } from '@baishuyun/types';\nimport { cn } from '../lib/utils';\nimport { ChevronIcon } from './bs-icons';\n\ninterface FieldsDesignInfoTableProps {\n  fields: IFieldDesignInfo[];\n}\n\n/** Group fields into top-level items and subform groups */\nfunction groupFields(fields: IFieldDesignInfo[]) {\n  const groups: Array<\n    | { kind: 'field'; field: IFieldDesignInfo }\n    | { kind: 'subform'; parent: IFieldDesignInfo; children: IFieldDesignInfo[] }\n  > = [];\n\n  let i = 0;\n  while (i < fields.length) {\n    const f = fields[i];\n    if (f.isSubForm) {\n      const children: IFieldDesignInfo[] = [];\n      let j = i + 1;\n      while (\n        j < fields.length &&\n        fields[j].isFieldInSubForm &&\n        fields[j].parentFormName === f.fieldName\n      ) {\n        children.push(fields[j]);\n        j++;\n      }\n      groups.push({ kind: 'subform', parent: f, children });\n      i = j;\n    } else {\n      groups.push({ kind: 'field', field: f });\n      i++;\n    }\n  }\n  return groups;\n}\n\nconst cellCls = 'flex items-center px-1.5 py-2.5 text-xs leading-normal';\n\nfunction FieldRow({\n  field,\n  isSubFormChild = false,\n}: {\n  field: IFieldDesignInfo;\n  isSubFormChild?: boolean;\n}) {\n  return (\n    <div className=\"flex items-center w-full\">\n      {/* 名称 */}\n      <div className={cn(cellCls, 'w-20 shrink-0 min-h-[34px]')}>\n        {isSubFormChild && (\n          <span className=\"inline-flex items-center justify-center shrink-0 w-5 h-5 opacity-0\">\n            <ChevronIcon />\n          </span>\n        )}\n        <span>{field.fieldName}</span>\n      </div>\n      {/* 类型 */}\n      <div className={cn(cellCls, 'w-[72px] shrink-0 min-h-[34px]')}>\n        {field.type}\n      </div>\n      {/* 必填 */}\n      <div className={cn(cellCls, 'w-9 shrink-0 min-h-[34px]')}>\n        {field.required ? '是' : '否'}\n      </div>\n      {/* 说明 */}\n      <div className={cn(cellCls, 'flex-1 min-w-0 min-h-[34px]')}>\n        <span className=\"break-words min-w-0\">{field.description}</span>\n      </div>\n    </div>\n  );\n}\n\nfunction SubFormGroup({\n  parent,\n  children,\n}: {\n  parent: IFieldDesignInfo;\n  children: IFieldDesignInfo[];\n}) {\n  const [isOpen, setIsOpen] = useState(true);\n  const toggle = useCallback(() => setIsOpen((v) => !v), []);\n\n  return (\n    <>\n      {/* 子表单 parent row */}\n      <div className=\"flex items-center w-full\">\n        {/* 名称 */}\n        <div className={cn(cellCls, 'w-20 shrink-0 min-h-[34px]')}>\n          <button\n            type=\"button\"\n            onClick={toggle}\n            className=\"inline-flex items-center justify-center shrink-0 w-5 h-5 rounded cursor-pointer text-[#666] relative -left-[2px]\"\n          >\n            <ChevronIcon isOpen={isOpen} />\n          </button>\n          <span>{parent.fieldName}</span>\n        </div>\n        {/* 类型 */}\n        <div className={cn(cellCls, 'w-[72px] shrink-0 min-h-[34px] ')}>\n          {parent.type}\n        </div>\n        {/* 必填 */}\n        <div className={cn(cellCls, 'w-9 shrink-0 min-h-[34px]')}>\n          {parent.required ? '是' : '否'}\n        </div>\n        {/* 说明 */}\n        <div className={cn(cellCls, 'flex-1 min-w-0 min-h-[34px]')}>\n          <span className=\"break-words min-w-0\">{parent.description}</span>\n        </div>\n      </div>\n\n      {/* 子表单 children */}\n      {isOpen && children.map((child, idx) => <FieldRow key={idx} field={child} isSubFormChild />)}\n    </>\n  );\n}\n\nexport function FieldsDesignInfoTable({ fields }: FieldsDesignInfoTableProps) {\n  const groups = useMemo(() => groupFields(fields), [fields]);\n\n  return (\n    <div className=\"flex flex-col items-start w-full bg-white rounded-[10px] overflow-hidden text-black my-[10px] border border-[#E0E0E0]\">\n      {/* 表头 */}\n      <div className=\"flex items-center w-full shrink-0 bg-[#E5E6EB] rounded-t-[10px] border-b border-[#E0E0E0]\">\n        <div className={cn(cellCls, 'w-20 shrink-0 h-[34px] font-bold')}>\n          名称\n        </div>\n        <div className={cn(cellCls, 'w-[72px] shrink-0 h-[34px] font-bold')}>\n          类型\n        </div>\n        <div\n          className={cn(\n            cellCls,\n            'w-9 shrink-0 h-[34px] font-bold justify-center'\n          )}\n        >\n          必填\n        </div>\n        <div className={cn(cellCls, 'flex-1 min-w-0 h-[34px] font-bold')}>\n          说明\n        </div>\n      </div>\n\n      {/* 表体 */}\n      <div className=\"flex flex-col items-start w-full\">\n        {groups.map((g, idx) =>\n          g.kind === 'field' ? (\n            <FieldRow key={idx} field={g.field} />\n          ) : (\n            <SubFormGroup key={idx} parent={g.parent} children={g.children} />\n          )\n        )}\n      </div>\n    </div>\n  );\n}\n","import { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { BorderColorAnimation } from './border-color-animation';\nimport { MagicIcon } from './bs-icons';\n\nexport const DotAnimation = () => {\n  return (\n    <>\n      <div className=\"flex gap-[2px] flex-shrink-0 relative -left-[4px] top-[3px]\">\n        <div\n          className=\"w-[2px] h-[2px] rounded-full bg-[#0265FF] flex-shrink-0\"\n          style={{\n            animation: 'pulse 1.4s ease-in-out infinite',\n            animationDelay: '0s',\n            marginRight: '2px',\n          }}\n        />\n        <div\n          className=\"w-[2px] h-[2px] rounded-full bg-[#0265FF] flex-shrink-0\"\n          style={{\n            animation: 'pulse 1.4s ease-in-out infinite',\n            animationDelay: '0.2s',\n            marginRight: '2px',\n          }}\n        />\n        <div\n          className=\"w-[2px] h-[2px] rounded-full bg-[#0265FF] flex-shrink-0\"\n          style={{\n            animation: 'pulse 1.4s ease-in-out infinite',\n            animationDelay: '0.4s',\n          }}\n        />\n      </div>\n      <style>{`\n        @keyframes pulse {\n          0%, 60%, 100% {\n            opacity: 0.3;\n            transform: scale(1);\n          }\n          30% {\n            opacity: 1;\n            transform: scale(1.2);\n          }\n        }\n      `}</style>\n    </>\n  );\n};\n\nexport const FieldsGeneratingIndicator = ({\n  children,\n  loading = true,\n}: {\n  children?: React.ReactNode;\n  loading?: boolean;\n}) => {\n  const paddingAndGap = 16 * 2 + 6; // padding + gap\n  const animationWidth = loading ? 14 : 0;\n  const magicIconWidth = 16;\n  const textRef = useRef<HTMLSpanElement>(null);\n  const [textWidth, setWidth] = useState(0);\n\n  // get text width + padding + gap\n  const fullWidth = textWidth + paddingAndGap + animationWidth + magicIconWidth;\n\n  // when text changes, update width\n  useLayoutEffect(() => {\n    if (textRef.current) {\n      const rect = textRef.current.getBoundingClientRect();\n      setWidth(rect.width);\n    }\n  }, [children]);\n\n  // when text not change, get init width\n  useEffect(() => {\n    if (textRef.current) {\n      const rect = textRef.current.getBoundingClientRect();\n      console.log('rect.width', rect.width);\n      setWidth(rect.width);\n    }\n  }, []);\n\n  return (\n    <BorderColorAnimation borderRadius={100} width={fullWidth} height={34} borderWidth={1}>\n      <div className=\"flex items-center gap-[6px] h-[31px] ml-[16px]\">\n        <div className=\"shrink-0\">\n          <MagicIcon />\n        </div>\n        <span className=\"text-[14px] text-[#0265FF] shrink-0\" ref={textRef}>\n          {children || '字段生成中'}\n        </span>\n        {loading && <DotAnimation />}\n      </div>\n    </BorderColorAnimation>\n  );\n};\n","import { HTMLAttributes } from 'react';\nimport { cn } from '../lib/utils';\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement> & {\n  compact?: boolean;\n};\n\nexport const MessageContent = ({ children, className, ...props }: MessageContentProps) => (\n  <div\n    className={cn(\n      'flex flex-col gap-2.5 overflow-hidden p-0 text-foreground text-[14px]',\n      'group-[.is-user]:bg-primary group-[.is-user]:text-primary-foreground',\n      'group-[.is-assistant]:bg-secondary group-[.is-assistant]:text-foreground',\n      'is-user:dark overflow-visible',\n      className\n    )}\n    {...props}\n  >\n    {children}\n  </div>\n);\n","import { ReactNode } from 'react';\nimport { MessageContent } from './message-content';\nimport { cn } from '../lib/utils';\n\nexport const FakeBotMessage = ({\n  children,\n  headless,\n  className,\n}: {\n  children: ReactNode;\n  headless?: boolean;\n  offset?: boolean;\n  className?: string;\n}) => {\n  if (headless) {\n    return (\n      <div>\n        <MessageContent\n          className={cn(\n            'w-fit wrap-break-words rounded-2 bg-transparent px-0 py-0 text-left',\n            className\n          )}\n          data-testid=\"message-content\"\n        >\n          {children}\n        </MessageContent>\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={cn('group/message w-full')}\n      data-role=\"assistant\"\n      data-testid={`message-assistant`}\n    >\n      <div className=\"flex w-full flex-col items-start justify-start gap-2.5\">\n        <div className=\"flex flex-col min-w-0 grow gap-2.5 w-full\">\n          <MessageContent\n            className=\"w-full wrap-break-words rounded-2 bg-transparent px-0 py-0 text-left\"\n            data-testid=\"message-content\"\n          >\n            {children}\n          </MessageContent>\n        </div>\n      </div>\n    </div>\n  );\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export const LinearGradientColorBgAnimation = ({ \n  children,\n  width,\n  height,\n  style,\n  childrenContainerStyle,\n}: { \n  children?: React.ReactNode;\n  width?: string | number;\n  height?: string | number;\n  style?: React.CSSProperties;\n  childrenContainerStyle?: React.CSSProperties;\n}) => {\n  return (\n    <div\n      style={{\n        position: 'relative',\n        width: width ?? '100%',\n        height: height ?? '100%',\n        overflow: 'hidden',\n        borderRadius: '10px 10px 0 0',\n        ...style,\n      }}\n    >\n      <div\n        style={{\n          position: 'absolute',\n          width: '100%',\n          height: '100%',\n          top: 0,\n          left: 0,\n          background: '#F4FFFC',\n        }}\n      />\n      <div\n        style={{\n          position: 'absolute',\n          width: '100%',\n          height: '100%',\n          top: 0,\n          left: 0,\n          background: 'radial-gradient(circle at 25% -15%, #EEFFCE 0%, transparent 55%)',\n          filter: 'blur(70px)',\n          animation: 'floatCircle1 4s ease-in-out infinite',\n        }}\n      />\n      <div\n        style={{\n          position: 'absolute',\n          width: '100%',\n          height: '100%',\n          top: 0,\n          left: 0,\n          background: 'radial-gradient(circle at 80% 200%, #CEFFFB 0%, transparent 45%)',\n          filter: 'blur(70px)',\n          animation: 'floatCircle2 5s ease-in-out infinite 0.5s',\n        }}\n      />\n      <div style={{ position: 'relative', zIndex: 1, width: '100%', height: '100%', ...childrenContainerStyle }}>\n        {children}\n      </div>\n      <style>{`\n        @keyframes floatCircle1 {\n          0%, 100% {\n            transform: translate(0%, 0%) scale(1.2);\n            opacity: 1;\n          }\n          25% {\n            transform: translate(-15%, 20%) scale(1.6);\n            opacity: 0.95;\n          }\n          50% {\n            transform: translate(12%, -15%) scale(0.9);\n            opacity: 1;\n          }\n          75% {\n            transform: translate(-10%, 10%) scale(1.4);\n            opacity: 0.9;\n          }\n        }\n        \n        @keyframes floatCircle2 {\n          0%, 100% {\n            transform: translate(0%, 0%) scale(1.1);\n            opacity: 1;\n          }\n          30% {\n            transform: translate(18%, -12%) scale(1.5);\n            opacity: 1;\n          }\n          60% {\n            transform: translate(-12%, 15%) scale(0.85);\n            opacity: 0.95;\n          }\n          85% {\n            transform: translate(14%, -8%) scale(1.3);\n            opacity: 0.9;\n          }\n        }\n      `}</style>\n    </div>\n  );\n};\n","import { useState, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { IconBtn } from './icon-btn';\nimport { BackIcon, InfoIcon } from './bs-icons';\nimport { LinearGradientColorBgAnimation } from './linear-gradient-color-bg-animation';\nimport { ConfirmDialog } from './confirm-dialog';\nimport { Spinner } from './ui/spinner';\nimport { BaseButton } from './base-button';\nimport { BrushIcon } from './bs-icons';\nimport { cn } from '../lib/utils';\n\nexport interface PreviewerHeaderProps {\n  title: string;\n  tips?: string;\n  active?: boolean;\n  className?: string;\n  onBackClick?: () => void;\n  onSave?: (isConfirm?: boolean) => void;\n  onCancel?: () => void;\n  onClear?: () => void;\n  style?: React.CSSProperties;\n\n  confirmTitle?: string;\n  confirmContent?: string;\n  dialogContainer?: HTMLElement;\n  variant?: 'fields-previewer' | 'data-previewer';\n  closeBtnLabel?: string;\n\n  disableConfirm?: boolean;\n\n  disableOperation?: boolean;\n\n  customOperationElement?: React.ReactNode;\n\n}\n\nexport const PreviewerHeader = ({\n  title,\n  tips,\n  style,\n  confirmContent,\n  confirmTitle,\n  className,\n  active,\n  onBackClick,\n  onSave,\n  closeBtnLabel,\n  onCancel,\n  onClear,\n  variant = 'fields-previewer',\n  dialogContainer,\n  disableConfirm,\n  disableOperation,\n  customOperationElement,\n}: PreviewerHeaderProps) => {\n  const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n  const [loading, setLoading] = useState(false);\n\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n  const setRootRef = useCallback((node: HTMLElement | null) => {\n    if (!node) {\n      setPortalContainer(null);\n      return;\n    }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>('[data-bs-dialog-portal]');\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-dialog-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  const btnResetStyle = classNames(\n    'w-[94px] h-[34px] flex items-center justify-center rounded-[4px]'\n  );\n\n  const isData = variant === 'data-previewer';\n  const isFields = variant === 'fields-previewer';\n\n  const titleCls = classNames('font-[700]', {\n    'text-[16px]': isFields,\n    'text-[18px]': isData,\n  });\n\n  const effectiveContainer = dialogContainer || portalContainer || undefined;\n\n  const operations = customOperationElement ? (\n    customOperationElement\n  ) : (\n      <div className=\"flex items-center gap-[10px]\">\n        {onClear && (\n          <BaseButton\n            className={cn('w-[34px] h-[34px] text-[#8d8d8d] p-0 flex items-center justify-center hover:border-[#e0e0e0] hover:text-[#8d8d8d] border border-solid border-[#e0e0e0] ', {\n                'pointer-events-none opacity-50': disableOperation || loading,\n            })}\n            tooltip='清除全部'\n            icon={<BrushIcon />}\n            onClick={() => {\n              onClear?.();\n            }}\n          />\n        )}\n\n        {onSave && (\n          <button\n            onClick={async () => {\n              setLoading(true);\n              try {\n                await onSave();\n              } catch (error) {\n                console.error('Save failed:', error);\n              } finally {\n                setLoading(false);\n              }\n            }}\n            className={classNames(\n              btnResetStyle,\n              'flex items-center gap-[6px]',\n              'bg-[#0265FF] hover:opacity-90 text-white text-[14px]',\n              {\n                'w-[115px]': isData,\n                'pointer-events-none opacity-50': disableOperation || loading,\n              }\n            )}\n          >\n            {loading ? <Spinner /> : null}\n            {isFields ? '保存' : '添加到表单'}\n          </button>\n        )}\n        {onCancel && (\n          <button\n            onClick={() => {\n              // if (disableOperation) {\n              //   return;\n              // }\n\n              if (disableConfirm) {\n                onCancel?.();\n                onBackClick?.();\n                return;\n              }\n\n              setShowConfirmDialog(true);\n            }}\n            className={classNames(\n              btnResetStyle,\n              'text-[#121111] text-[14px] bg-[#fff] border border-solid border-[#e0e0e0] hover:bg-[#f0f0f0]',\n              {\n                'pointer-events-none opacity-50': loading,\n              }\n            )}\n          >\n            {closeBtnLabel || '取消'}\n          </button>\n        )}\n      </div>\n  )\n\n  const contentJsx = (\n    <>\n      <div className=\"flex items-center gap-3\">\n        {isData ? null : (\n          <IconBtn\n            icon={<BackIcon />}\n            onClick={() => {\n              // if (disableOperation) {\n              //   return;\n              // }\n\n              if (disableConfirm) {\n                onCancel?.();\n                onBackClick?.();\n                return;\n              }\n\n              setShowConfirmDialog(true);\n            }}\n            className=\"text-[#0265FF] hover:text-[#0265FF]\"\n          />\n        )}\n        <span className={titleCls}>{title}</span>\n        {tips && active && (\n          <div className=\"flex items-center gap-[6px] text-[#999999] text-[12px]\">\n            <InfoIcon />\n            {tips}\n          </div>\n        )}\n      </div>\n      {operations}\n      <ConfirmDialog\n        container={effectiveContainer}\n        open={showConfirmDialog}\n        onOpenChange={setShowConfirmDialog}\n        title={confirmTitle || 'AI表单搭建有修改，是否保存？'}\n        description={confirmContent || '您修改了AI表单搭建但没有保存，是否需要保存并继续？'}\n        onLinkClick={() => setShowConfirmDialog(false)}\n        onCancel={() => {\n          setShowConfirmDialog(false);\n          onCancel?.();\n          onBackClick?.();\n        }}\n        onConfirm={async () => {\n          setShowConfirmDialog(false);\n          setLoading(true);\n          try {\n            await onSave?.(true);\n          } catch (error) {\n            console.error('Save failed:', error);\n          } finally {\n            setLoading(false);\n          }\n        }}\n      />\n    </>\n  );\n\n  const borderCls = classNames({\n    'border-b border-solid border-[#e0e0e0]': !active && isFields,\n    'border-none': isData,\n  });\n\n  if (active) {\n    return (\n      <div ref={setRootRef}>\n        <LinearGradientColorBgAnimation\n          height={52}\n          style={style}\n          childrenContainerStyle={{\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'space-between',\n            padding: '0 20px',\n          }}\n        >\n          {contentJsx}\n        </LinearGradientColorBgAnimation>\n      </div>\n    );\n  }\n\n  const paddingCls = classNames({\n    'px-[20px]': isFields,\n    'px-[10px]': isData,\n  });\n\n  return (\n    <div\n      ref={setRootRef}\n      style={style}\n      className={classNames(\n        'w-full h-[52px] flex items-center justify-between',\n        paddingCls,\n        className,\n        borderCls\n      )}\n    >\n      {contentJsx}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport { forwardRef, useState } from 'react';\nimport { AbsFullscreenGradientBg } from './abs-fullscreen-gradient-bg';\nimport { BorderColorAnimation } from './border-color-animation';\nimport { FieldsGeneratingIndicator } from './fields-generating-indicator';\nimport { PreviewerHeader, PreviewerHeaderProps } from './previewer-header';\nimport { useShadow } from '../hooks/use-shadow';\nimport { TooltipProvider } from './ui/tooltip';\n\nexport interface FieldsPreviewerProps extends PreviewerHeaderProps {\n  fullscreen?: boolean;\n\n  rightSpaceWidth?: number;\n  rightSpaceRef?: (right: HTMLDivElement) => void;\n  rightElement?: React.ReactNode;\n\n  // generating fields\n  streaming?: boolean;\n  streamingText?: string;\n\n  empty?: boolean;\n\n  zIndex?: number;\n\n  padding?: number;\n\n  containerStyle?: string;\n\n  fullContent?: boolean;\n\n  // children means the content inside the previewer, not the right side components\n  children?: React.ReactNode;\n\n  readonly?: boolean;\n\n  disableShadowContainer?: boolean;\n}\n\nconst PlaceholderDashedBox = () => {\n  return (\n    <div\n      style={{\n        borderRadius: 10,\n        width: '100%',\n        height: '100%',\n        border: '1px dashed var(---e0e0e0, #E0E0E0)',\n      }}\n    />\n  );\n};\n\nexport const FieldsPreviewer = forwardRef<HTMLDivElement, FieldsPreviewerProps>(\n  ({\n    zIndex = 1,\n    children,\n    title,\n    tips,\n    active,\n    fullscreen,\n    padding = 10,\n    className,\n    empty,\n    rightSpaceWidth,\n    rightSpaceRef,\n    rightElement,\n    streaming,\n    streamingText,\n    onBackClick,\n    dialogContainer,\n    disableShadowContainer,\n    variant = 'fields-previewer',\n    onSave,\n    onCancel,\n    onClear,\n    style,\n    confirmContent,\n    fullContent,\n    confirmTitle,\n    containerStyle,\n    readonly,\n\n    closeBtnLabel,\n    disableOperation,\n    disableConfirm,\n\n    customOperationElement,\n  }: FieldsPreviewerProps, _) => {\n    const p = fullscreen ? 0 : padding;\n    const pr = fullscreen ? 0 : rightSpaceWidth;\n\n    // const absWrapperRef = useRef<HTMLDivElement>(null);\n    const [absContainer, setAbsContainer] = useState<HTMLDivElement | null>(null);\n\n    const isFields = variant === 'fields-previewer';\n    const isData = variant === 'data-previewer';\n\n    const contentCls = classNames({\n      'm-[20px]': isFields,\n      'mx-[12px] mb-[10px]': isData,\n      'p-[10px]': isFields,\n      'p-0': isData,\n      'opacity-60': streaming && isFields,\n      'w-[calc(100%-40px)] h-[calc(100%-90px)] relative overflow-x-hidden overflow-y-auto':\n        isFields,\n      'w-[calc(100%-24px)] h-[calc(100%-62px)] relative overflow-x-hidden overflow-y-auto': isData,\n      'rounded-[4px] bg-white': isData,\n    });\n\n    const fullContentStyle = fullContent\n      ? {\n          width: '100%',\n          height: '100%',\n          padding: 0,\n          margin: 0,\n        }\n      : {};\n\n    const { shadowContainer } = useShadow({\n      id: 'dialog-container',\n      rootEl: dialogContainer,\n      style: containerStyle,\n      wrapperStyle: {\n        zIndex: Date.now(),\n        position: 'absolute',\n        width: '100%',\n        height: '100%',\n        pointerEvents: 'none',\n      },\n    });\n\n    const contentJsx = (\n      <>\n        <PreviewerHeader\n          title={title}\n          tips={tips}\n          active={active}\n          variant={variant}\n          className={className}\n          onBackClick={onBackClick}\n          onSave={streaming ? undefined : onSave}\n          onCancel={streaming ? undefined : onCancel}\n          style={style}\n          dialogContainer={disableShadowContainer ? absContainer! : (shadowContainer || absContainer!)}\n          confirmTitle={confirmTitle}\n          confirmContent={confirmContent}\n          closeBtnLabel={closeBtnLabel}\n          disableOperation={disableOperation}\n          disableConfirm={disableConfirm}\n          onClear={onClear}\n          customOperationElement={customOperationElement}\n        />\n        <div className={contentCls} style={fullContentStyle}>\n          {empty && isFields ? <PlaceholderDashedBox /> : children}\n          {readonly && <div className=\"absolute inset-0 z-50 cursor-not-allowed\" />}\n        </div>\n        {streaming && (\n          // abs center\n          <div className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\">\n            <FieldsGeneratingIndicator>{streamingText}</FieldsGeneratingIndicator>\n          </div>\n        )}\n      </>\n    );\n\n    const content = isFields ? (\n      <BorderColorAnimation\n        width={pr ? `calc(100% - ${pr}px)` : '100%'}\n        style={{ overflow: 'hidden' }}\n      >\n        {contentJsx}\n      </BorderColorAnimation>\n    ) : (\n      <div className=\"h-full\" style={{ width: pr ? `calc(100% - ${pr}px)` : '100%' }}>\n        {contentJsx}\n      </div>\n    );\n\n    const rightArea = (\n      <div\n        style={{\n          width: fullscreen ? 0 : rightSpaceWidth,\n          position: 'absolute',\n          top: 0,\n          right: 0,\n          pointerEvents: fullscreen ? 'none' : 'auto',\n        }}\n        className=\"h-full\"\n        ref={(n) => {\n          if (n) {\n            rightSpaceRef?.(n);\n          }\n        }}\n      >\n        {rightElement}\n      </div>\n    );\n\n    return (\n      <TooltipProvider\n        delayDuration={100}\n        zIndex={zIndex}\n      >\n        <AbsFullscreenGradientBg\n          zIndex={zIndex}\n          padding={isFields ? p : 0}\n          disableGradient={fullscreen || !isFields}\n          bgColor={isFields ? '#fff' : '#F5F7FA'}\n          ref={setAbsContainer}\n        >\n          {fullscreen ? contentJsx : content}\n          {rightArea}\n        </AbsFullscreenGradientBg>\n      </TooltipProvider>\n    );\n  }\n);\n","import { useShadow } from '../hooks/use-shadow';\nimport { createPortal } from 'react-dom';\nimport { FieldsPreviewer, FieldsPreviewerProps } from './fields-previewer';\nimport { ReactPortal } from 'react';\n\nexport interface FieldsPortalProps extends FieldsPreviewerProps {\n  portalEl: HTMLElement;\n  children?: React.ReactNode;\n}\n\nexport const FieldsPortal = ({ portalEl, children, ...rest }: FieldsPortalProps): ReactPortal => {\n  const { shadowContainer: shadowEntry } = useShadow({\n    rootEl: portalEl,\n    id: 'chat-sdk-fields-portal',\n  });\n\n  return createPortal(<FieldsPreviewer {...rest}>{children}</FieldsPreviewer>, shadowEntry!);\n};\n","import { Button, ButtonProps } from './ui/button';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\n\nexport interface PrimaryConfirmBtnProps extends ButtonProps {\n  text?: string;\n  prefixDesc?: string;\n  icon?: React.ReactNode;\n  disabledWithInfo?: boolean;\n  light?: boolean;\n}\n\nexport const PrimaryConfirmBtn = ({\n  text = '确认',\n  prefixDesc,\n  className,\n  disabled,\n  light,\n  icon,\n  children,\n  ...rest\n}: PrimaryConfirmBtnProps) => {\n  const btn = (\n    <Button\n      {...rest}\n      variant=\"default\"\n      disabled={disabled}\n      className={cn(\n        'px-[10px] py-0 rounded-[100px] text-[14px] leading-normal h-[34px] min-w-[100px] cursor-pointer w-full disabled:opacity-100 gap-[6px] shadow-none',\n        disabled\n          ? 'bg-[#f0f0f0] text-[#999] cursor-not-allowed shadow-none'\n          : light\n            ? 'bg-[#F0F6FF] text-[#0265FF] hover:bg-[#0265FF] hover:text-white'\n            : 'bg-[#0265ff] text-white hover:bg-[#0265ff]/80',\n\n        transCls,\n        {\n          '!bg-[#E5E6EB] !text-[#121111] shadow-none font-[400]': rest.disabledWithInfo,\n        },\n        className\n      )}\n    >\n      {icon}\n      {children || text}\n    </Button>\n  );\n\n  if (!prefixDesc) {\n    return btn;\n  }\n\n  return (\n    <div className=\"flex flex-col items-start gap-2.5\">\n      <p className=\"text-[#4D609F]\">{prefixDesc}</p>\n      {btn}\n    </div>\n  );\n};\n","import { cn } from '../lib/utils';\nimport { FORM_ICON_OPTIONS, transCls } from '../const/ui';\nimport { useState, memo, useEffect } from 'react';\nimport { ChevronDownIcon } from './ui/icons';\nimport { PrimaryConfirmBtn } from './primary-confirm-btn';\nimport { EditIcon } from './bs-icons';\nimport { FontIcon } from './font-icon';\nimport { FormIconOption } from '../types';\n\nexport type { FormIconOption };\n\n// Form icon component with blue background - dynamically shows selected icon\nconst FormIcon = ({\n  size = 36,\n  code,\n  style,\n}: {\n  size?: number;\n  code?: string;\n  style?: React.CSSProperties;\n}) => {\n  const borderRadius = size * 0.238; // ~8.57px for 36px container\n  const fontSize = size * 0.6875; // Icon font size relative to container\n\n  return (\n    <div\n      className=\"relative flex items-center justify-center bg-[#0265ff] flex-shrink-0 text-white\"\n      style={{\n        width: size,\n        height: size,\n        borderRadius,\n        fontSize: fontSize,\n        ...style,\n      }}\n    >\n      <FontIcon code={code || FORM_ICON_OPTIONS[0].code} style={{ fontSize }} />\n    </div>\n  );\n};\n\nexport interface FormInfoEditorProps {\n  /** Form name */\n  name: string;\n  /** Callback when name changes */\n  onNameChange?: (name: string) => void;\n  /** Currently selected icon option */\n  selectedIcon?: FormIconOption;\n  /** Available icon options */\n  iconOptions?: FormIconOption[];\n  /** Callback when icon changes */\n  onIconChange?: (icon: FormIconOption) => void;\n  /** Callback when confirm button is clicked */\n  onConfirm?: (name: string, iconVal: number) => void;\n  /** Whether the editor is in expanded mode */\n  expanded?: boolean;\n  /** Callback when expanded state changes */\n  onExpandedChange?: (expanded: boolean) => void;\n  /** Custom class name */\n  className?: string;\n  onMount?: () => void;\n  readonly?: boolean;\n}\n\n/**\n * Form Info Editor Component\n * Displays form name and icon with an expandable editor interface\n */\nexport const FormInfoEditor = memo(\n  ({\n    name,\n    onNameChange,\n    onMount,\n    selectedIcon = FORM_ICON_OPTIONS[0],\n    iconOptions = [],\n    onIconChange,\n    readonly,\n    onConfirm,\n    expanded: controlledExpanded,\n    onExpandedChange,\n    className,\n  }: FormInfoEditorProps) => {\n    const [internalExpanded, setInternalExpanded] = useState(false);\n    const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n    const expanded = controlledExpanded ?? internalExpanded;\n    const setExpanded = (value: boolean) => {\n      setInternalExpanded(value);\n      onExpandedChange?.(value);\n    };\n\n    const [nameVal, setNameVal] = useState(name);\n    const [iconOpt, setIconOpt] = useState(selectedIcon);\n\n    useEffect(() => {\n      onMount?.();\n    }, []);\n\n    // Default Status (Collapsed)\n    if (!expanded || readonly) {\n      return (\n        <div\n          className={cn(\n            'bg-white hover:bg-[#fafafa] border border-[#e0e0e0] rounded-[10px] px-[10px] py-0 flex items-center justify-between h-[56px] cursor-pointer',\n            transCls,\n            className,\n            'duration-100'\n          )}\n          onClick={() => {\n            if (readonly) return;\n            setExpanded(true);\n          }}\n        >\n          {/* Left side: Form icon and name */}\n          <div className=\"flex items-center gap-[10px] min-w-0 flex-1 mr-[10px]\">\n            <FormIcon size={36} code={iconOpt?.code} />\n            <p className=\"text-[14px] text-black leading-normal truncate\">{nameVal}</p>\n          </div>\n\n          <button\n            onClick={() => {\n              if (readonly) return;\n              setExpanded(true);\n            }}\n            className={cn(\n              'w-[16px] h-[16px] flex items-center justify-center cursor-pointer hover:text-[#0265ff]',\n              transCls,\n              {\n                'pointer-events-none opacity-0': readonly,\n              }\n            )}\n          >\n            <EditIcon />\n          </button>\n        </div>\n      );\n    }\n\n    // Expanded Status (Edit mode)\n    return (\n      <div\n        className={cn(\n          'bg-[#fafafa] border border-[#e0e0e0] rounded-[10px] p-[12px] flex flex-col gap-[22px]',\n          transCls,\n          className,\n          'duration-100'\n        )}\n      >\n        {/* Name field */}\n        <div className=\"flex flex-col gap-[10px] w-full\">\n          <p className=\"text-[14px] text-[#030303] font-bold leading-normal\">名称</p>\n          <input\n            type=\"text\"\n            value={nameVal}\n            onChange={(e) => {\n              setNameVal(e.target.value);\n            }}\n            onBlur={() => {\n              onNameChange?.(nameVal);\n            }}\n            className={cn(\n              'bg-white border border-[#e0e0e0] rounded-[4px] h-[34px] px-[10px] py-[7px] w-full',\n              'text-[14px] text-[#030303] leading-normal outline-none',\n              'focus:border-[#0265ff]',\n              'hover:border-[#0265ff]',\n              transCls\n            )}\n          />\n        </div>\n\n        {/* Icon field */}\n        <div className=\"flex flex-col gap-[10px] w-full\">\n          <p className=\"text-[14px] text-[#030303] font-bold leading-normal\">图标</p>\n          <div className=\"relative\" style={{ zIndex: 10 }}>\n            <button\n              onClick={() => setIsDropdownOpen(!isDropdownOpen)}\n              className={cn(\n                'bg-white border border-[#e0e0e0] rounded-[4px] h-[34px] px-[10px] py-[7px] w-full',\n                'flex items-center justify-between cursor-pointer',\n                'hover:border-[#0265ff]',\n                transCls\n              )}\n            >\n              {/* Selected icon */}\n              <div className=\"flex items-center\">\n                <FormIcon size={16} code={iconOpt?.code} />\n              </div>\n\n              {/* Dropdown arrow */}\n              <div className={cn('text-[#666]', transCls, isDropdownOpen && 'rotate-180')}>\n                <ChevronDownIcon size={16} />\n              </div>\n            </button>\n\n            {/* Dropdown menu - Grid layout matching Figma design */}\n            {isDropdownOpen && iconOptions.length > 0 && (\n              <div\n                className={cn(\n                  'absolute top-full left-0 mt-[4px] bg-white rounded-[10px] shadow-md z-10 p-[12px]',\n                  transCls\n                )}\n              >\n                <div className=\"grid grid-cols-6 gap-[8px]\">\n                  {iconOptions.map((option) => (\n                    <button\n                      key={option.id}\n                      onClick={() => {\n                        onIconChange?.(option);\n                        setIconOpt(option);\n                        setIsDropdownOpen(false);\n                      }}\n                      className={cn(\n                        'aspect-square rounded-[9.5px] border flex items-center justify-center cursor-pointer overflow-hidden',\n                        iconOpt?.id === option.id\n                          ? 'border-[#0265ff] border-2'\n                          : 'border-[#e0e0e0] hover:bg-[#eff0f6]',\n                        transCls\n                      )}\n                      title={option.label}\n                    >\n                      <FormIcon\n                        code={option.code}\n                        style={{ background: 'transparent', color: '#0265ff' }}\n                      />\n                    </button>\n                  ))}\n                </div>\n              </div>\n            )}\n          </div>\n        </div>\n\n        {/* Confirm button */}\n        <PrimaryConfirmBtn\n          text=\"确认\"\n          onClick={() => {\n            onConfirm?.(nameVal, iconOpt?.value || 25);\n            setExpanded(false);\n          }}\n        />\n      </div>\n    );\n  },\n  (p1, p2) => {\n    return (\n      p1.name === p2.name &&\n      p1.selectedIcon?.id === p2.selectedIcon?.id &&\n      p1.expanded === p2.expanded &&\n      p1.iconOptions === p2.iconOptions\n    );\n  }\n);\n\nexport default FormInfoEditor;\n","/** number 类型字段可用的统计方式 */\nexport const NUMBER_FORMULA_OPS = [\n    'countDistinct',\n    'count',\n    'sum',\n    'max',\n    'min',\n    'average',\n];\n/** 非 number 类型字段可用的统计方式 */\nexport const DEFAULT_FORMULA_OPS = ['countDistinct', 'count'];\n/** 统计方式 → 中文标签 */\nexport const FORMULA_OP_LABEL = {\n    countDistinct: '去重计数',\n    count: '计数',\n    sum: '求和',\n    max: '最大值',\n    min: '最小值',\n    average: '平均',\n};\n","export var FreezeMode;\n(function (FreezeMode) {\n    FreezeMode[\"NONE\"] = \"none\";\n    FreezeMode[\"SHALLOW\"] = \"shallow\";\n    FreezeMode[\"DEEP\"] = \"deep\";\n})(FreezeMode || (FreezeMode = {}));\nexport class ChatAreaPlugin {\n    constructor(context) {\n        this.Context = context;\n    }\n}\nexport * from './query.js';\n","import { cn } from '../lib/utils';\nimport { type FormulaOp, FORMULA_OP_LABEL } from '@baishuyun/types';\n\n/** 统计方式 → 背景色 */\nconst FORMULA_OP_COLOR: Record<FormulaOp, string> = {\n  sum: '#3767F1',\n  max: '#F06648',\n  min: '#4ACC8C',\n  average: '#4AC0EC',\n  count: '#9362CE',\n  countDistinct: '#F168B6',\n};\n\nexport interface FormulaTagProps {\n  /** 统计方式 */\n  type: FormulaOp;\n  className?: string;\n}\n\nexport const FormulaTag = ({ type, className }: FormulaTagProps) => {\n  return (\n    <span\n      className={cn(\n        'inline-flex items-center justify-center rounded-[100px] px-[6px] text-[14px] leading-[20px] text-white',\n        className\n      )}\n      style={{ backgroundColor: FORMULA_OP_COLOR[type] }}\n    >\n      {FORMULA_OP_LABEL[type]}\n    </span>\n  );\n};\n","import classNames from \"classnames\";\n\nexport const GenerateAnimation = (props: { children?: React.ReactNode, className?: string }) => {\n  return (\n    <div className={classNames(\"flex items-center gap-[6px]\", props.className)}>\n      <div className=\"flex gap-[2px] flex-shrink-0\" style={{ marginRight: '6px' }}>\n        <div\n          className=\"w-[5px] h-[5px] rounded-full bg-[#999] flex-shrink-0\"\n          style={{\n            animation: 'pulse 1.0s ease-in-out infinite',\n            animationDelay: '0s',\n            width: '5px',\n            height: '5px',\n            background: '#999',\n            marginRight: '3px',\n          }}\n        />\n        <div\n          className=\"w-[5px] h-[5px] rounded-full bg-[#999] flex-shrink-0\"\n          style={{\n            animation: 'pulse 1.0s ease-in-out infinite',\n            width: '5px',\n            height: '5px',\n            background: '#999',\n            animationDelay: '0.2s',\n            marginRight: '3px',\n          }}\n        />\n        <div\n          className=\"w-[5px] h-[5px] rounded-full bg-[#999] flex-shrink-0\"\n          style={{\n            animation: 'pulse 1.0s ease-in-out infinite',\n            width: '5px',\n            height: '5px',\n            marginRight: '3px',\n            background: '#999',\n            animationDelay: '0.4s',\n          }}\n        />\n      </div>\n      <span className=\"text-[14px] text-[#999]\">{props.children || '生成中'}</span>\n      <style>{`\n        @keyframes pulse {\n          0%, 60%, 100% {\n            opacity: 0.3;\n            transform: scale(1);\n          }\n          30% {\n            opacity: 1;\n            transform: scale(1.2);\n          }\n        }\n      `}</style>\n    </div>\n  );\n};\n","import React, { CSSProperties, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { cn } from '../lib/utils';\nimport { CheckerIcon } from './bs-icons';\nimport { SquareChecker } from './square-checker';\n\nexport interface LineCheckerProps {\n  defaultChecked?: boolean;\n  checked?: boolean;\n  disabled?: boolean;\n  onCheckedChange?: (checked: boolean) => void;\n\n  icon?: React.ReactNode;\n  title: string;\n  shortDesc?: string;\n  className?: string;\n  extra?: React.ReactNode;\n\n  style?: CSSProperties;\n  streaming?: boolean;\n  confirmed?: boolean;\n  readonly?: boolean;\n}\n\nexport const LineChecker: React.FC<LineCheckerProps> = ({\n  defaultChecked = false,\n  checked: checkedProp,\n  disabled = false,\n  onCheckedChange,\n  icon,\n  className,\n  title,\n  extra,\n  style,\n  streaming,\n  confirmed,\n  readonly,\n  shortDesc,\n}) => {\n  const [checked, setChecked] = useState(defaultChecked);\n\n  useEffect(() => {\n    if (checkedProp !== undefined) {\n      setChecked(checkedProp);\n    }\n  }, [checkedProp]);\n\n  const handleClick = () => {\n    if (streaming || disabled) return;\n\n    const newChecked = !checked;\n    setChecked(newChecked);\n    onCheckedChange?.(newChecked);\n  };\n\n  const hasExtra = Boolean(extra);\n\n  const checker =\n    confirmed && checked ? (\n      <CheckerIcon className=\"grow-0 shrink-0 text-[#0265ff]\" />\n    ) : (\n      <SquareChecker\n        className={classNames('outline-none grow-0 shrink-0 cursor-pointer', {\n          'mt-[2px]': hasExtra,\n          'opacity-80 cursor-not-allowed': disabled,\n          'opacity-50': streaming,\n          'pointer-events-none': streaming,\n        })}\n        id={title}\n        checked={checked}\n        disabled={disabled || confirmed}\n        onCheckedChange={handleClick}\n      />\n    );\n\n  return (\n    <div\n      className={cn(\n        'flex items-center gap-[10px] px-4 py-[10px] rounded-[4px]',\n        'w-full transition-colors cursor-pointer',\n        {\n          'cursor-not-allowed': disabled,\n          'hover:bg-[#EFF0F6]': !disabled,\n          'items-start': hasExtra,\n          'items-center': !hasExtra,\n          'pointer-events-none': streaming || disabled || readonly || confirmed,\n        },\n        className\n      )}\n      style={style}\n      onClick={() => {\n        handleClick();\n      }}\n    >\n      {readonly ? null : checker}\n\n      <div\n        className={classNames('flex flex-col flex-1 min-w-0', {\n          'gap-2.5': hasExtra,\n        })}\n      >\n        <div\n          className={classNames('flex items-center justify-between w-full', {\n            'gap-1.5': !!icon,\n            'gap-2.5': !icon,\n          })}\n        >\n          <div\n            className={classNames('flex items-center gap-[6px] min-w-0', {\n              'flex-1': !!icon,\n              'w-[100px] flex-shrink-0': !icon,\n            })}\n          >\n            {/* Icon */}\n            {icon && (\n              <div className=\"w-4 h-4 flex-shrink-0 text-[#6F829E] leading-[16px]\">{icon}</div>\n            )}\n\n            {/* Title - truncates */}\n            <p\n              className={classNames(' min-w-0 text-sm text-[#121111] truncate text-[12px]', {\n                'flex-1': !!icon,\n                'flex-grow-1 flex-shrink-0': !icon,\n                '!text-[#666]': readonly,\n              })}\n            >\n              {title}\n            </p>\n          </div>\n\n          {shortDesc && (\n            <p\n              className={classNames('text-sm text-[#666] text-[12px]', {\n                'whitespace-nowrap flex-shrink-0': !!icon,\n                anywhere: !icon,\n                '!text-[#121111]': readonly,\n              })}\n            >\n              {shortDesc}\n            </p>\n          )}\n        </div>\n        {hasExtra ? (\n          <div\n            className={cn(\n              'overflow-x-auto whitespace-nowrap no-scrollbar flex items-center gap-2',\n              {\n                '!overflow-x-hidden': disabled || readonly || confirmed,\n              }\n            )}\n          >\n            {extra}\n          </div>\n        ) : null}\n      </div>\n    </div>\n  );\n};\n\nexport default LineChecker;\n","import { useEffect, useRef } from 'react';\nimport { LegacySlotRenderer } from '../types';\n\nexport interface LegacySlotProps {\n  renderLegacy: LegacySlotRenderer;\n  props: unknown;\n  shadow?: boolean;\n  injectedStyles?: string;\n  withHostStyles?: boolean;\n  onSetRef?: (ref: HTMLDivElement) => void;\n}\n\nconst STYLE_INJECTED_ATTR = 'data-style-injected';\n\nconst injectStylesIntoShadow = (currentElement: Node) => {\n  if (!currentElement) return;\n\n  let shadowRoot: ShadowRoot | null = null;\n\n  if (currentElement instanceof Element && currentElement.shadowRoot) {\n    shadowRoot = currentElement.shadowRoot;\n  } else {\n    let node: Node | null = currentElement.parentNode;\n    while (node) {\n      if (node instanceof ShadowRoot) {\n        shadowRoot = node;\n        break;\n      }\n      node = node.parentNode;\n    }\n  }\n\n  if (!shadowRoot) return;\n  if (shadowRoot.querySelector(`style[${STYLE_INJECTED_ATTR}]`)) return;\n\n  document.head.querySelectorAll('style').forEach((styleEl) => {\n    const cloned = styleEl.cloneNode(true) as HTMLElement;\n    cloned.setAttribute(STYLE_INJECTED_ATTR, '');\n    shadowRoot!.appendChild(cloned);\n  });\n\n  // if style is loaded by link tag, we also need to copy it into shadow DOM\n  document.head.querySelectorAll('link[rel=\"stylesheet\"]').forEach((linkEl) => {\n    const cloned = linkEl.cloneNode(true) as HTMLElement;\n    cloned.setAttribute(STYLE_INJECTED_ATTR, '');\n    shadowRoot!.appendChild(cloned);\n  });\n};\n\nexport function LegacySlot({\n  renderLegacy,\n  props,\n  shadow = false,\n  withHostStyles = false,\n  injectedStyles,\n  onSetRef,\n}: LegacySlotProps) {\n  const hostRef = useRef<HTMLDivElement>(null);\n  const cleanupRef = useRef<(() => void) | null>(null);\n  const mountPointRef = useRef<HTMLDivElement | null>(null);\n  const targetRef = useRef<HTMLElement | ShadowRoot | null>(null);\n\n  useEffect(() => {\n    if (!hostRef.current) return;\n\n    const host = hostRef.current;\n    onSetRef?.(host);\n    let target: HTMLElement | ShadowRoot = host;\n\n    if (shadow) {\n      const shadowRoot = host.shadowRoot || host.attachShadow({ mode: 'open' });\n      target = shadowRoot;\n\n      if (withHostStyles) {\n        injectStylesIntoShadow(host);\n      }\n      if (typeof injectedStyles === 'string') {\n        const styleEl = document.createElement('style');\n        styleEl.setAttribute('data-legacy-injected-raw', '');\n        styleEl.textContent = injectedStyles;\n        shadowRoot.appendChild(styleEl);\n      }\n    }\n\n    targetRef.current = target;\n\n    const mountPoint = document.createElement('div');\n    mountPoint.style.display = 'contents';\n    target.appendChild(mountPoint);\n    mountPointRef.current = mountPoint;\n\n    cleanupRef.current = renderLegacy(mountPoint, props as Record<string, any>);\n\n    return () => {\n      cleanupRef.current?.();\n      if (mountPointRef.current) {\n        mountPointRef.current.remove();\n        mountPointRef.current = null;\n      }\n      targetRef.current = null;\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!mountPointRef.current) return;\n    cleanupRef.current = renderLegacy(mountPointRef.current, props as Record<string, any>);\n  }, [props, renderLegacy]);\n\n  return <div ref={hostRef} style={{ display: 'contents' }} />;\n}\n","import React from 'react';\nimport { cn } from '../lib/utils';\n\nexport interface LinearGradientBorderBtnProps {\n    children?: React.ReactNode;\n    onClick?: () => void;\n    disabled?: boolean;\n    className?: string;\n}\n\nexport const LinearGradientBorderBtn: React.FC<LinearGradientBorderBtnProps> = ({\n    children,\n    onClick,\n    disabled = false,\n    className,\n}) => {\n    return (\n        <div\n            className={cn(\n                \"relative rounded-[6px] p-[1px] cursor-pointer h-[34px] flex items-center justify-center\",\n                \"bg-gradient-to-b from-[#84B4FF] to-[#B1FAFF]\",\n                className\n            )}\n            style={{\n                background: 'linear-gradient(180deg, #84B4FF 0%, #B1FAFF 100%)',\n            }}\n        >\n            <button\n                className={cn(\n                    \"w-full h-[32px] px-[10px]\",\n                    \"bg-white rounded-[5px]\",\n                    \"flex items-center justify-center\",\n                    \"text-[#0265ff] text-[14px]\",\n                    \"cursor-pointer\",\n                    \"transition-all duration-200\",\n                    \"hover:bg-[#f5f9ff]\",\n                    \"disabled:opacity-95 disabled:cursor-not-allowed\"\n                )}\n                onClick={onClick}\n                disabled={disabled}\n            >\n                {children}\n            </button>\n        </div>\n    );\n};\n\nexport default LinearGradientBorderBtn;\n","/**\n * marked v17.0.1 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function Z(u){T=u}var C={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var me=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Te=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,N=/(?:[*+-]|\\d{1,9}[.)])/,re=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,se=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Oe=k(re).replace(/bull/g,N).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),Q=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,ye=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=k(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,N).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",j=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",j).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ie=k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ie).getRegex(),U={blockquote:$e,code:be,def:ye,fences:Re,heading:Te,hr:I,html:Se,lheading:se,list:Pe,newline:xe,paragraph:ie,table:C,text:we},te=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...U,lheading:Oe,table:te,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",te).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...U,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",j).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:C,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(Q).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",se).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,oe=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,K=/[\\s\\p{P}\\p{S}]/u,ae=/[^\\s\\p{P}\\p{S}]/u,Ce=k(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,K).getRegex(),le=/(?!~)[\\p{P}\\p{S}]/u,Ie=/(?!~)[\\s\\p{P}\\p{S}]/u,Ee=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=k(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",me?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=k(ue,\"u\").replace(/punct/g,D).getRegex(),ve=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=k(pe,\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),He=k(pe,\"gu\").replace(/notPunctSpace/g,Ee).replace(/punctSpace/g,Ie).replace(/punct/g,le).getRegex(),Ze=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ae).replace(/punctSpace/g,K).replace(/punct/g,D).getRegex(),Ge=k(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qe=k(j).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=k(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ue=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),ne=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,W={_backpedal:C,anyPunctuation:Ge,autolink:Ne,blockSkip:Be,br:oe,code:ze,del:C,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ze,escape:Me,link:je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ue,tag:Fe,text:Ae,url:C},Ke={...W,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},G={...W,emStrongRDelimAst:He,emStrongLDelim:ve,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",ne).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",ne).getRegex()},We={...G,br:k(oe).replace(\"{2,}\",\"*\").getRegex(),text:k(G.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},E={normal:U,gfm:_e,pedantic:Le},M={normal:W,gfm:G,breaks:We,pedantic:Ke};var Xe={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ke=u=>Xe[u];function w(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function X(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function J(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(u,e,t){let n=u.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function de(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]===\"\\\\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function ge(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Je(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n    $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,O=>\" \".repeat(3*O.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let O=this.rules.other.nextBulletRegex(f),V=this.rules.other.hrRegex(f),Y=this.rules.other.fencesBeginRegex(f),ee=this.rules.other.headingBeginRegex(f),fe=this.rules.other.htmlBeginRegex(f);for(;e;){let H=e.split(`\n`,1)[0],A;if(h=H,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\"  \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\"    \"),Y.test(h)||ee.test(h)||fe.test(h)||O.test(h)||V.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\"    \").search(this.rules.other.nonSpaceChar)>=4||Y.test(g)||ee.test(g)||V.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),p+=H+`\n`,e=e.substring(H.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(g=>g.type===\"space\"),c=p.length>0&&p.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=J(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(J(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),ge(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return ge(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:E.normal,inline:M.normal};this.options.pedantic?(t.block=E.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=E.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:E,inline:M}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\"    \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(p=Math.min(p,g))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=X(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=X(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){let t=\"\";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(s.type)){t+=a||\"\";continue}}let i=r;switch(i.type){case\"space\":{t+=this.renderer.space(i);break}case\"hr\":{t+=this.renderer.hr(i);break}case\"heading\":{t+=this.renderer.heading(i);break}case\"code\":{t+=this.renderer.code(i);break}case\"table\":{t+=this.renderer.table(i);break}case\"blockquote\":{t+=this.renderer.blockquote(i);break}case\"list\":{t+=this.renderer.list(i);break}case\"checkbox\":{t+=this.renderer.checkbox(i);break}case\"html\":{t+=this.renderer.html(i);break}case\"def\":{t+=this.renderer.def(i);break}case\"paragraph\":{t+=this.renderer.paragraph(i);break}case\"text\":{t+=this.renderer.text(i);break}default:{let s='Token with \"'+i.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"checkbox\":{n+=t.checkbox(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];S.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,p);return l.call(i,g)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,p);return g===!1&&(g=await l.apply(i,p)),g})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(u,e){return _.parse(u,e)}d.options=d.setOptions=function(u){return _.setOptions(u),d.defaults=_.defaults,Z(d.defaults),d};d.getDefaults=L;d.defaults=T;d.use=function(...u){return _.use(...u),d.defaults=_.defaults,Z(d.defaults),d};d.walkTokens=function(u,e){return _.walkTokens(u,e)};d.parseInline=_.parseInline;d.Parser=b;d.parser=b.parse;d.Renderer=P;d.TextRenderer=$;d.Lexer=x;d.lexer=x.lex;d.Tokenizer=y;d.Hooks=S;d.parse=d;var Dt=d.options,Ht=d.setOptions,Zt=d.use,Gt=d.walkTokens,Nt=d.parseInline,Qt=d,Ft=b.parse,jt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,jt as lexer,d as marked,Dt as options,Qt as parse,Nt as parseInline,Ft as parser,Ht as setOptions,Zt as use,Gt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","export function deprecate(fn) {\n  return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n *   Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @returns {boolean}\n *   Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n  return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? contReJsx : contRe\n  return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n *   Identifier to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? nameReJsx : nameRe\n  return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n *   Thing to check (`Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n *   whose `value` field is checked.\n */\nexport function whitespace(thing) {\n  return typeof thing === 'object'\n    ? thing.type === 'text'\n      ? empty(thing.value)\n      : false\n    : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n  return value.replace(re, '') === ''\n}\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n  /**\n   * @param {SchemaType['property']} property\n   *   Property.\n   * @param {SchemaType['normal']} normal\n   *   Normal.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Schema.\n   */\n  constructor(property, normal, space) {\n    this.normal = normal\n    this.property = property\n\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n *   Definitions.\n * @param {Space | undefined} [space]\n *   Space.\n * @returns {Schema}\n *   Schema.\n */\nexport function merge(definitions, space) {\n  /** @type {Record<string, Info>} */\n  const property = {}\n  /** @type {Record<string, string>} */\n  const normal = {}\n\n  for (const definition of definitions) {\n    Object.assign(property, definition.property)\n    Object.assign(normal, definition.normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n *   An attribute-like or property-like name.\n * @returns {string}\n *   Value that can be used to look up the properly cased property on a\n *   `Schema`.\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n  /**\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute) {\n    this.attribute = attribute\n    this.property = property\n  }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n  Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @param {number | null | undefined} [mask]\n   *   Mask.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n *   Key type.\n * @param {DefinedInfo} values\n *   Info.\n * @param {Key} key\n *   Key.\n * @param {DefinedInfo[Key]} value\n *   Value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n *   Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n *   Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n *   Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n *   Property names to their types.\n * @property {Space | undefined} [space]\n *   Space.\n * @property {Transform} transform\n *   Transform a property name.\n */\n\n/**\n * @callback Transform\n *   Transform.\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n *   Definition.\n * @returns {Schema}\n *   Schema.\n */\nexport function create(definition) {\n  /** @type {Record<string, Info>} */\n  const properties = {}\n  /** @type {Record<string, string>} */\n  const normals = {}\n\n  for (const [property, value] of Object.entries(definition.properties)) {\n    const info = new DefinedInfo(\n      property,\n      definition.transform(definition.attributes || {}, property),\n      value,\n      definition.space\n    )\n\n    if (\n      definition.mustUseProperty &&\n      definition.mustUseProperty.includes(property)\n    ) {\n      info.mustUseProperty = true\n    }\n\n    properties[property] = info\n\n    normals[normalize(property)] = property\n    normals[normalize(info.attribute)] = property\n  }\n\n  return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  },\n  transform(_, property) {\n    return property === 'role'\n      ? property\n      : 'aria-' + property.slice(4).toLowerCase()\n  }\n})\n","/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} attribute\n *   Attribute.\n * @returns {string}\n *   Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  booleanish,\n  boolean,\n  commaSeparated,\n  number,\n  overloadedBoolean,\n  spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: overloadedBoolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  },\n  space: 'html',\n  transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  boolean,\n  commaOrSpaceSeparated,\n  commaSeparated,\n  number,\n  spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  },\n  space: 'svg',\n  transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  },\n  space: 'xlink',\n  transform(_, property) {\n    return 'xlink:' + property.slice(5).toLowerCase()\n  }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  properties: {xmlnsXLink: null, xmlns: null},\n  space: 'xmlns',\n  transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n  space: 'xml',\n  transform(_, property) {\n    return 'xml:' + property.slice(3).toLowerCase()\n  }\n})\n","/**\n * Special cases for React (`Record<string, string>`).\n *\n * `hast` is close to `React` but differs in a couple of cases.\n * To get a React property from a hast property,\n * check if it is in `hastToReact`.\n * If it is, use the corresponding value;\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n *   Schema;\n *   either the `html` or `svg` export.\n * @param {string} value\n *   An attribute-like or property-like name;\n *   it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n *   Info.\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let property = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Kebab.\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Camel.\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","'use strict';\n\n// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nfunction index (style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function (node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) ; else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n}\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n\nmodule.exports = index;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleToObject;\nconst inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n    let styleObject = null;\n    if (!style || typeof style !== 'string') {\n        return styleObject;\n    }\n    const declarations = (0, inline_style_parser_1.default)(style);\n    const hasIterator = typeof iterator === 'function';\n    declarations.forEach((declaration) => {\n        if (declaration.type !== 'declaration') {\n            return;\n        }\n        const { property, value } = declaration;\n        if (hasIterator) {\n            iterator(property, value, declaration);\n        }\n        else if (value) {\n            styleObject = styleObject || {};\n            styleObject[property] = value;\n        }\n    });\n    return styleObject;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n/**\n * Checks whether to skip camelCase.\n */\nvar skipCamelCase = function (property) {\n    return !property ||\n        NO_HYPHEN_REGEX.test(property) ||\n        CUSTOM_PROPERTY_REGEX.test(property);\n};\n/**\n * Replacer that capitalizes first character.\n */\nvar capitalize = function (match, character) {\n    return character.toUpperCase();\n};\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\n/**\n * CamelCases a CSS property.\n */\nvar camelCase = function (property, options) {\n    if (options === void 0) { options = {}; }\n    if (skipCamelCase(property)) {\n        return property;\n    }\n    property = property.toLowerCase();\n    if (options.reactCompat) {\n        // `-ms` vendor prefix should not be capitalized\n        property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    else {\n        // for non-React, remove first hyphen so vendor prefix is not capitalized\n        property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n    }\n    return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n//# sourceMappingURL=utilities.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style, options) {\n    var output = {};\n    if (!style || typeof style !== 'string') {\n        return output;\n    }\n    (0, style_to_object_1.default)(style, function (property, value) {\n        // skip CSS comment\n        if (property && value) {\n            output[(0, utilities_1.camelCase)(property, options)] = value;\n        }\n    });\n    return output;\n}\nStyleToJS.default = StyleToJS;\nmodule.exports = StyleToJS;\n//# sourceMappingURL=index.js.map","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nexport function position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` — error, file not usable\n     * * `false` — warning, change may be needed\n     * * `undefined` — change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file = ''\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual = undefined\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected = undefined\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note = undefined\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url = undefined\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, JsxElement, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToJs from 'style-to-js'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map<string, number>} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options} options\n *   Configuration (required).\n * @returns {JsxElement}\n *   JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n  if (!options || options.Fragment === undefined) {\n    throw new TypeError('Expected `Fragment` in options')\n  }\n\n  const filePath = options.filePath || undefined\n  /** @type {Create} */\n  let create\n\n  if (options.development) {\n    if (typeof options.jsxDEV !== 'function') {\n      throw new TypeError(\n        'Expected `jsxDEV` in options when `development: true`'\n      )\n    }\n\n    create = developmentCreate(filePath, options.jsxDEV)\n  } else {\n    if (typeof options.jsx !== 'function') {\n      throw new TypeError('Expected `jsx` in production options')\n    }\n\n    if (typeof options.jsxs !== 'function') {\n      throw new TypeError('Expected `jsxs` in production options')\n    }\n\n    create = productionCreate(filePath, options.jsx, options.jsxs)\n  }\n\n  /** @type {State} */\n  const state = {\n    Fragment: options.Fragment,\n    ancestors: [],\n    components: options.components || {},\n    create,\n    elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n    evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n    filePath,\n    ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n    passKeys: options.passKeys !== false,\n    passNode: options.passNode || false,\n    schema: options.space === 'svg' ? svg : html,\n    stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n    tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n  }\n\n  const result = one(state, tree, undefined)\n\n  // JSX element.\n  if (result && typeof result !== 'string') {\n    return result\n  }\n\n  // Text node or something that turned into nothing.\n  return state.create(\n    tree,\n    state.Fragment,\n    {children: result || undefined},\n    undefined\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Nodes} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction one(state, node, key) {\n  if (node.type === 'element') {\n    return element(state, node, key)\n  }\n\n  if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n    return mdxExpression(state, node)\n  }\n\n  if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n    return mdxJsxElement(state, node, key)\n  }\n\n  if (node.type === 'mdxjsEsm') {\n    return mdxEsm(state, node)\n  }\n\n  if (node.type === 'root') {\n    return root(state, node, key)\n  }\n\n  if (node.type === 'text') {\n    return text(state, node)\n  }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction element(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type = findComponentFromName(state, node.tagName, false)\n  const props = createElementProps(state, node)\n  let children = createChildren(state, node)\n\n  if (tableElements.has(node.tagName)) {\n    children = children.filter(function (child) {\n      return typeof child === 'string' ? !whitespace(child) : true\n    })\n  }\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxExpression(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    const program = node.data.estree\n    const expression = program.body[0]\n    assert(expression.type === 'ExpressionStatement')\n\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateExpression(expression.expression)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxjsEsmHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxEsm(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateProgram(node.data.estree)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.name === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type =\n    node.name === null\n      ? state.Fragment\n      : findComponentFromName(state, node.name, true)\n  const props = createJsxElementProps(state, node)\n  const children = createChildren(state, node)\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Root} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction root(state, node, key) {\n  /** @type {Props} */\n  const props = {}\n\n  addChildren(props, createChildren(state, node))\n\n  return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n *   Info passed around.\n * @param {Text} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction text(_, node) {\n  return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Props} props\n *   Props.\n * @param {unknown} type\n *   Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addNode(state, props, type, node) {\n  // If this is swapped out for a component:\n  if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n    props.node = node\n  }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n *   Props.\n * @param {Array<Child>} children\n *   Children.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChildren(props, children) {\n  if (children.length > 0) {\n    const value = children.length > 1 ? children : children[0]\n\n    if (value) {\n      props.children = value\n    }\n  }\n}\n\n/**\n * @param {string | undefined} _\n *   Path to file.\n * @param {Jsx} jsx\n *   Dynamic.\n * @param {Jsx} jsxs\n *   Static.\n * @returns {Create}\n *   Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n  return create\n  /** @type {Create} */\n  function create(_, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const fn = isStaticChildren ? jsxs : jsx\n    return key ? fn(type, props, key) : fn(type, props)\n  }\n}\n\n/**\n * @param {string | undefined} filePath\n *   Path to file.\n * @param {JsxDev} jsxDEV\n *   Development.\n * @returns {Create}\n *   Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n  return create\n  /** @type {Create} */\n  function create(node, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const point = pointStart(node)\n    return jsxDEV(\n      type,\n      props,\n      key,\n      isStaticChildren,\n      {\n        columnNumber: point ? point.column - 1 : undefined,\n        fileName: filePath,\n        lineNumber: point ? point.line : undefined\n      },\n      undefined\n    )\n  }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current element.\n * @returns {Props}\n *   Props.\n */\nfunction createElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n  /** @type {string | undefined} */\n  let alignValue\n  /** @type {string} */\n  let prop\n\n  for (prop in node.properties) {\n    if (prop !== 'children' && own.call(node.properties, prop)) {\n      const result = createProperty(state, prop, node.properties[prop])\n\n      if (result) {\n        const [key, value] = result\n\n        if (\n          state.tableCellAlignToStyle &&\n          key === 'align' &&\n          typeof value === 'string' &&\n          tableCellElement.has(node.tagName)\n        ) {\n          alignValue = value\n        } else {\n          props[key] = value\n        }\n      }\n    }\n  }\n\n  if (alignValue) {\n    // Assume style is an object.\n    const style = /** @type {Style} */ (props.style || (props.style = {}))\n    style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n      alignValue\n  }\n\n  return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current JSX element.\n * @returns {Props}\n *   Props.\n */\nfunction createJsxElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n\n  for (const attribute of node.attributes) {\n    if (attribute.type === 'mdxJsxExpressionAttribute') {\n      if (attribute.data && attribute.data.estree && state.evaluater) {\n        const program = attribute.data.estree\n        const expression = program.body[0]\n        assert(expression.type === 'ExpressionStatement')\n        const objectExpression = expression.expression\n        assert(objectExpression.type === 'ObjectExpression')\n        const property = objectExpression.properties[0]\n        assert(property.type === 'SpreadElement')\n\n        Object.assign(\n          props,\n          state.evaluater.evaluateExpression(property.argument)\n        )\n      } else {\n        crashEstree(state, node.position)\n      }\n    } else {\n      // For JSX, the author is responsible of passing in the correct values.\n      const name = attribute.name\n      /** @type {unknown} */\n      let value\n\n      if (attribute.value && typeof attribute.value === 'object') {\n        if (\n          attribute.value.data &&\n          attribute.value.data.estree &&\n          state.evaluater\n        ) {\n          const program = attribute.value.data.estree\n          const expression = program.body[0]\n          assert(expression.type === 'ExpressionStatement')\n          value = state.evaluater.evaluateExpression(expression.expression)\n        } else {\n          crashEstree(state, node.position)\n        }\n      } else {\n        value = attribute.value === null ? true : attribute.value\n      }\n\n      // Assume a prop.\n      props[name] = /** @type {Props[keyof Props]} */ (value)\n    }\n  }\n\n  return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Parents} node\n *   Current element.\n * @returns {Array<Child>}\n *   Children.\n */\nfunction createChildren(state, node) {\n  /** @type {Array<Child>} */\n  const children = []\n  let index = -1\n  /** @type {Map<string, number>} */\n  // Note: test this when Solid doesn’t want to merge my upcoming PR.\n  /* c8 ignore next */\n  const countsByName = state.passKeys ? new Map() : emptyMap\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n    /** @type {string | undefined} */\n    let key\n\n    if (state.passKeys) {\n      const name =\n        child.type === 'element'\n          ? child.tagName\n          : child.type === 'mdxJsxFlowElement' ||\n              child.type === 'mdxJsxTextElement'\n            ? child.name\n            : undefined\n\n      if (name) {\n        const count = countsByName.get(name) || 0\n        key = name + '-' + count\n        countsByName.set(name, count + 1)\n      }\n    }\n\n    const result = one(state, child, key)\n    if (result !== undefined) children.push(result)\n  }\n\n  return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Field | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n  const info = find(state.schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  // React only accepts `style` as object.\n  if (info.property === 'style') {\n    let styleObject =\n      typeof value === 'object' ? value : parseStyle(state, String(value))\n\n    if (state.stylePropertyNameCase === 'css') {\n      styleObject = transformStylesToCssCasing(styleObject)\n    }\n\n    return ['style', styleObject]\n  }\n\n  return [\n    state.elementAttributeNameCase === 'react' && info.space\n      ? hastToReact[info.property] || info.property\n      : info.attribute,\n    value\n  ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} value\n *   CSS declarations.\n * @returns {Style}\n *   Properties.\n * @throws\n *   Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n  try {\n    return styleToJs(value, {reactCompat: true})\n  } catch (error) {\n    if (state.ignoreInvalidStyle) {\n      return {}\n    }\n\n    const cause = /** @type {Error} */ (error)\n    const message = new VFileMessage('Cannot parse `style` attribute', {\n      ancestors: state.ancestors,\n      cause,\n      ruleId: 'style',\n      source: 'hast-util-to-jsx-runtime'\n    })\n    message.file = state.filePath || undefined\n    message.url = docs + '#cannot-parse-style-attribute'\n\n    throw message\n  }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n *   To do.\n * @param {string} name\n *   Name.\n * @param {boolean} allowExpression\n *   Allow member expressions and identifiers.\n * @returns {unknown}\n *   To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n  /** @type {Identifier | Literal | MemberExpression} */\n  let result\n\n  if (!allowExpression) {\n    result = {type: 'Literal', value: name}\n  } else if (name.includes('.')) {\n    const identifiers = name.split('.')\n    let index = -1\n    /** @type {Identifier | Literal | MemberExpression | undefined} */\n    let node\n\n    while (++index < identifiers.length) {\n      /** @type {Identifier | Literal} */\n      const prop = isIdentifierName(identifiers[index])\n        ? {type: 'Identifier', name: identifiers[index]}\n        : {type: 'Literal', value: identifiers[index]}\n      node = node\n        ? {\n            type: 'MemberExpression',\n            object: node,\n            property: prop,\n            computed: Boolean(index && prop.type === 'Literal'),\n            optional: false\n          }\n        : prop\n    }\n\n    assert(node, 'always a result')\n    result = node\n  } else {\n    result =\n      isIdentifierName(name) && !/^[a-z]/.test(name)\n        ? {type: 'Identifier', name}\n        : {type: 'Literal', value: name}\n  }\n\n  // Only literals can be passed in `components` currently.\n  // No identifiers / member expressions.\n  if (result.type === 'Literal') {\n    const name = /** @type {string | number} */ (result.value)\n    return own.call(state.components, name) ? state.components[name] : name\n  }\n\n  // Assume component.\n  if (state.evaluater) {\n    return state.evaluater.evaluateExpression(result)\n  }\n\n  crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n  const message = new VFileMessage(\n    'Cannot handle MDX estrees without `createEvaluater`',\n    {\n      ancestors: state.ancestors,\n      place,\n      ruleId: 'mdx-estree',\n      source: 'hast-util-to-jsx-runtime'\n    }\n  )\n  message.file = state.filePath || undefined\n  message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n  throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n  /** @type {Style} */\n  const cssCasing = {}\n  /** @type {string} */\n  let from\n\n  for (from in domCasing) {\n    if (own.call(domCasing, from)) {\n      cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n    }\n  }\n\n  return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n  let to = from.replace(cap, toDash)\n  // Handle `ms-xxx` -> `-ms-xxx`.\n  if (to.slice(0, 3) === 'ms-') to = '-' + to\n  return to\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n *   Capitalized ASCII leter.\n * @returns {string}\n *   Dash and lower letter.\n */\nfunction toDash($0) {\n  return '-' + $0.toLowerCase()\n}\n","/**\n * HTML URL properties.\n *\n * Each key is a property name and each value is a list of tag names it applies\n * to or `null` if it applies to all elements.\n *\n * @type {Record<string, Array<string> | null>}\n */\nexport const urlAttributes = {\n  action: ['form'],\n  cite: ['blockquote', 'del', 'ins', 'q'],\n  data: ['object'],\n  formAction: ['button', 'input'],\n  href: ['a', 'area', 'base', 'link'],\n  icon: ['menuitem'],\n  itemId: null,\n  manifest: ['html'],\n  ping: ['a', 'area'],\n  poster: ['video'],\n  src: [\n    'audio',\n    'embed',\n    'iframe',\n    'img',\n    'input',\n    'script',\n    'source',\n    'track',\n    'video'\n  ]\n}\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n","/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const character = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  if (\n    character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n    value !== 'semi'\n  ) {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  return character === characterReference ? false : character\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length;\n  let chunkStart = 0;\n  /** @type {Array<unknown>} */\n  let parameters;\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    // @ts-expect-error Hush, it’s fine.\n    list.splice(...parameters);\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove);\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000);\n      parameters.unshift(start, 0);\n      // @ts-expect-error Hush, it’s fine.\n      list.splice(...parameters);\n      chunkStart += 10000;\n      start += 10000;\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items);\n    return list;\n  }\n  return items;\n}","/**\n * @import {\n *   Extension,\n *   Handles,\n *   HtmlExtension,\n *   NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n *   List of constructs to merge into.\n * @param {Array<unknown>} list\n *   List of constructs to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return value\n  // Collapse markdown whitespace.\n  .replace(/[\\t\\n\\r ]+/g, \" \")\n  // Trim.\n  .replace(/^ | $/g, '')\n  // Some characters are considered “uppercase”, but if their lowercase\n  // counterpart is uppercased will result in a different uppercase\n  // character.\n  // Hence, to get that form, we perform both lower- and uppercase.\n  // Upper case makes sure keys will not interact with default prototypal\n  // methods: no method is uppercase.\n  .toLowerCase().toUpperCase();\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n *   URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n *   Allowed protocols.\n * @returns {string}\n *   Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''));\n  if (!protocol) {\n    return value;\n  }\n  const colon = value.indexOf(':');\n  const questionMark = value.indexOf('?');\n  const numberSign = value.indexOf('#');\n  const slash = value.indexOf('/');\n  if (\n  // If there is no protocol, it’s relative.\n  colon < 0 ||\n  // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n  slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n  // It is a protocol, it should be allowed.\n  protocol.test(value.slice(0, colon))) {\n    return value;\n  }\n  return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n *   URI to normalize.\n * @returns {string}\n *   Normalized URI.\n */\nexport function normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = [];\n  let index = -1;\n  let start = 0;\n  let skip = 0;\n  while (++index < value.length) {\n    const code = value.charCodeAt(index);\n    /** @type {string} */\n    let replace = '';\n\n    // A correct percent encoded value.\n    if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n      skip = 2;\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code);\n      }\n    }\n    // Astral.\n    else if (code > 55_295 && code < 57_344) {\n      const next = value.charCodeAt(index + 1);\n\n      // A correct surrogate pair.\n      if (code < 56_320 && next > 56_319 && next < 57_344) {\n        replace = String.fromCharCode(code, next);\n        skip = 1;\n      }\n      // Lone surrogate.\n      else {\n        replace = \"\\uFFFD\";\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code);\n    }\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace));\n      start = index + skip + 1;\n      replace = '';\n    }\n    if (skip) {\n      index += skip;\n      skip = 0;\n    }\n  }\n  return result.join('') + value.slice(start);\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return ok(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Initializer}\n *   Content.\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n  /** @type {Token} */\n  let previous;\n  return contentStart;\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter(\"paragraph\");\n    return lineStart(code);\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous\n    });\n    if (previous) {\n      previous.next = token;\n    }\n    previous = token;\n    return data(code);\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n\n    // Data.\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * @import {\n *   Construct,\n *   ContainerState,\n *   InitialConstruct,\n *   Initializer,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n *   Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeDocument(effects) {\n  const self = this;\n  /** @type {Array<StackItem>} */\n  const stack = [];\n  let continued = 0;\n  /** @type {TokenizeContext | undefined} */\n  let childFlow;\n  /** @type {Token | undefined} */\n  let childToken;\n  /** @type {number} */\n  let lineStartOffset;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self.containerState = item[1];\n      return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n    }\n\n    // Done.\n    return checkNewContainers(code);\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++;\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined;\n      if (childFlow) {\n        closeFlow();\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      let index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n      return checkNewContainers(code);\n    }\n    return start(code);\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code);\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code);\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n    }\n\n    // Check if there is a new container.\n    self.containerState = {};\n    return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow();\n    exitContainers(continued);\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length;\n    lineStartOffset = self.now().offset;\n    return flowStart(code);\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {};\n    return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++;\n    stack.push([self.currentConstruct, self.containerState]);\n    // Try another.\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow();\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    childFlow = childFlow || self.parser.flow(self.now());\n    effects.enter(\"chunkFlow\", {\n      _tokenizer: childFlow,\n      contentType: \"flow\",\n      previous: childToken\n    });\n    return flowContinue(code);\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      // Get ready for the next line.\n      continued = 0;\n      self.interrupt = undefined;\n      return start;\n    }\n    effects.consume(code);\n    return flowContinue;\n  }\n\n  /**\n   * @param {Token} token\n   *   Token.\n   * @param {boolean | undefined} [endOfFile]\n   *   Whether the token is at the end of the file (default: `false`).\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function writeToChild(token, endOfFile) {\n    const stream = self.sliceStream(token);\n    if (endOfFile) stream.push(null);\n    token.previous = childToken;\n    if (childToken) childToken.next = token;\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (\n        // The token starts before the line ending…\n        childFlow.events[index][1].start.offset < lineStartOffset && (\n        // …and either is not ended yet…\n        !childFlow.events[index][1].end ||\n        // …or ends after it.\n        childFlow.events[index][1].end.offset > lineStartOffset)) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return;\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {boolean | undefined} */\n      let seen;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n      // Discard the duplicate exits.\n      self.events.length = index;\n    }\n  }\n\n  /**\n   * @param {number} size\n   *   Size.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exitContainers(size) {\n    let index = stack.length;\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index];\n      self.containerState = entry[1];\n      entry[0].exit.call(self, effects);\n    }\n    stack.length = size;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = undefined;\n    childFlow = undefined;\n    self.containerState._closeFlow = undefined;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n *   Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n    return 1;\n  }\n  if (unicodePunctuation(code)) {\n    return 2;\n  }\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Event,\n *   Point,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  resolveAll: resolveAllAttention,\n  tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  /** @type {number} */\n  let open;\n  /** @type {Token} */\n  let group;\n  /** @type {Token} */\n  let text;\n  /** @type {Token} */\n  let openingSequence;\n  /** @type {Token} */\n  let closingSequence;\n  /** @type {number} */\n  let use;\n  /** @type {Array<Event>} */\n  let nextEvents;\n  /** @type {number} */\n  let offset;\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n      open = index;\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n        // If the markers are the same:\n        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n\n          // Number of markers to use from the sequence.\n          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = {\n            ...events[open][1].end\n          };\n          const end = {\n            ...events[index][1].start\n          };\n          movePoint(start, -use);\n          movePoint(end, use);\n          openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: {\n              ...events[open][1].end\n            }\n          };\n          closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: {\n              ...events[index][1].start\n            },\n            end\n          };\n          text = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: {\n              ...events[open][1].end\n            },\n            end: {\n              ...events[index][1].start\n            }\n          };\n          group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: {\n              ...openingSequence.start\n            },\n            end: {\n              ...closingSequence.end\n            }\n          };\n          events[open][1].end = {\n            ...openingSequence.start\n          };\n          events[index][1].start = {\n            ...closingSequence.end\n          };\n          nextEvents = [];\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n          // Closing.\n          nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n          } else {\n            offset = 0;\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data';\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n  const previous = this.previous;\n  const before = classifyCharacter(previous);\n\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code;\n    effects.enter('attentionSequence');\n    return inside(code);\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    const token = effects.exit('attentionSequence');\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code);\n\n    // Always populated by defaults.\n\n    const open = !after || after === 2 && before || attentionMarkers.includes(code);\n    const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code);\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n *   Point.\n * @param {number} offset\n *   Amount to move.\n * @returns {undefined}\n *   Nothing.\n */\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return schemeOrEmailAtext;\n    }\n    if (code === 64) {\n      return nok(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1;\n      return schemeInsideOrEmailAtext(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code);\n      size = 0;\n      return urlInside;\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n      effects.consume(code);\n      return schemeInsideOrEmailAtext;\n    }\n    size = 0;\n    return emailAtext(code);\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return urlInside;\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code);\n      return emailAtext;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code);\n      size = 0;\n      return emailAtSignOrDot;\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel;\n      effects.consume(code);\n      return next;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n  partial: true,\n  tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of blank line.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *     ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *       ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit,\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code);\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this;\n  return contStart;\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return contBefore(code);\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code);\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  /** @type {number} */\n  let max;\n  /** @type {(code: Code) => boolean} */\n  let test;\n  return start;\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code);\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code);\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n        return nok(code);\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code);\n      return value;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n  concrete: true,\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this;\n  /** @type {Construct} */\n  const closeStart = {\n    partial: true,\n    tokenize: tokenizeCloseStart\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code);\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++;\n      effects.consume(code);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFencedFence\");\n      return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code);\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return info;\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code);\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return meta;\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code);\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code);\n    }\n    effects.consume(code);\n    return contentChunk;\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit(\"codeFenced\");\n    return ok(code);\n  }\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0;\n    return startBefore;\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return start;\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter(\"codeFencedFence\");\n      return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++;\n        effects.consume(code);\n        return sequenceClose;\n      }\n      if (size >= sizeOpen) {\n        effects.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(\"codeFencedFence\");\n        return ok(code);\n      }\n      return nok(code);\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineStart;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n  partial: true,\n  tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter(\"codeIndented\");\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code);\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return inside;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(\"codeIndented\");\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this;\n  return furtherStart;\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return furtherStart;\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can’t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Previous,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  previous,\n  resolve: resolveCodeText,\n  tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  /** @type {number} */\n  let index;\n  /** @type {number | undefined} */\n  let enter;\n\n  // If we start and end with an EOL or a space.\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n    index = headEnterIndex;\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        // Then we have padding.\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = undefined;\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this;\n  let sizeOpen = 0;\n  /** @type {number} */\n  let size;\n  /** @type {Token} */\n  let token;\n  return start;\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code);\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code);\n    }\n\n    // To do: next major: don’t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === 32) {\n      effects.enter('space');\n      effects.consume(code);\n      effects.exit('space');\n      return between;\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size = 0;\n      return sequenceClose(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n\n    // Data.\n    effects.enter(\"codeTextData\");\n    return data(code);\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n      effects.exit(\"codeTextData\");\n      return between(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code);\n      size++;\n      return sequenceClose;\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code);\n    }\n\n    // More or less accents: mark as data.\n    token.type = \"codeTextData\";\n    return data(code);\n  }\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n *  - Array-length modifications at the high end of an array (push/pop) are\n *    expected to be common and are implemented in (amortized) time\n *    proportional to the number of elements added or removed, whereas\n *    other operations (shift/unshift and splice) are much less efficient.\n *  - Function arguments are passed on the stack, so adding tens of thousands\n *    of elements to an array with `arr.push(...newElements)` will frequently\n *    cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n *   Item type.\n */\nexport class SpliceBuffer {\n  /**\n   * @param {ReadonlyArray<T> | null | undefined} [initial]\n   *   Initial items (optional).\n   * @returns\n   *   Splice buffer.\n   */\n  constructor(initial) {\n    /** @type {Array<T>} */\n    this.left = initial ? [...initial] : [];\n    /** @type {Array<T>} */\n    this.right = [];\n  }\n\n  /**\n   * Array access;\n   * does not move the cursor.\n   *\n   * @param {number} index\n   *   Index.\n   * @return {T}\n   *   Item.\n   */\n  get(index) {\n    if (index < 0 || index >= this.left.length + this.right.length) {\n      throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n    }\n    if (index < this.left.length) return this.left[index];\n    return this.right[this.right.length - index + this.left.length - 1];\n  }\n\n  /**\n   * The length of the splice buffer, one greater than the largest index in the\n   * array.\n   */\n  get length() {\n    return this.left.length + this.right.length;\n  }\n\n  /**\n   * Remove and return `list[0]`;\n   * moves the cursor to `0`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  shift() {\n    this.setCursor(0);\n    return this.right.pop();\n  }\n\n  /**\n   * Slice the buffer to get an array;\n   * does not move the cursor.\n   *\n   * @param {number} start\n   *   Start.\n   * @param {number | null | undefined} [end]\n   *   End (optional).\n   * @returns {Array<T>}\n   *   Array of items.\n   */\n  slice(start, end) {\n    /** @type {number} */\n    const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n    if (stop < this.left.length) {\n      return this.left.slice(start, stop);\n    }\n    if (start > this.left.length) {\n      return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n    }\n    return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n  }\n\n  /**\n   * Mimics the behavior of Array.prototype.splice() except for the change of\n   * interface necessary to avoid segfaults when patching in very large arrays.\n   *\n   * This operation moves cursor is moved to `start` and results in the cursor\n   * placed after any inserted items.\n   *\n   * @param {number} start\n   *   Start;\n   *   zero-based index at which to start changing the array;\n   *   negative numbers count backwards from the end of the array and values\n   *   that are out-of bounds are clamped to the appropriate end of the array.\n   * @param {number | null | undefined} [deleteCount=0]\n   *   Delete count (default: `0`);\n   *   maximum number of elements to delete, starting from start.\n   * @param {Array<T> | null | undefined} [items=[]]\n   *   Items to include in place of the deleted items (default: `[]`).\n   * @return {Array<T>}\n   *   Any removed items.\n   */\n  splice(start, deleteCount, items) {\n    /** @type {number} */\n    const count = deleteCount || 0;\n    this.setCursor(Math.trunc(start));\n    const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n    if (items) chunkedPush(this.left, items);\n    return removed.reverse();\n  }\n\n  /**\n   * Remove and return the highest-numbered item in the array, so\n   * `list[list.length - 1]`;\n   * Moves the cursor to `length`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  pop() {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    return this.left.pop();\n  }\n\n  /**\n   * Inserts a single item to the high-numbered side of the array;\n   * moves the cursor to `length`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  push(item) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    this.left.push(item);\n  }\n\n  /**\n   * Inserts many items to the high-numbered side of the array.\n   * Moves the cursor to `length`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  pushMany(items) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    chunkedPush(this.left, items);\n  }\n\n  /**\n   * Inserts a single item to the low-numbered side of the array;\n   * Moves the cursor to `0`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshift(item) {\n    this.setCursor(0);\n    this.right.push(item);\n  }\n\n  /**\n   * Inserts many items to the low-numbered side of the array;\n   * moves the cursor to `0`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshiftMany(items) {\n    this.setCursor(0);\n    chunkedPush(this.right, items.reverse());\n  }\n\n  /**\n   * Move the cursor to a specific position in the array. Requires\n   * time proportional to the distance moved.\n   *\n   * If `n < 0`, the cursor will end up at the beginning.\n   * If `n > length`, the cursor will end up at the end.\n   *\n   * @param {number} n\n   *   Position.\n   * @return {undefined}\n   *   Nothing.\n   */\n  setCursor(n) {\n    if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n    if (n < this.left.length) {\n      // Move cursor to the this.left\n      const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.right, removed.reverse());\n    } else {\n      // Move cursor to the this.right\n      const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.left, removed.reverse());\n    }\n  }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n *   Item type.\n * @param {Array<T>} list\n *   List to inject into.\n * @param {ReadonlyArray<T>} right\n *   Items to inject.\n * @return {undefined}\n *   Nothing.\n */\nfunction chunkedPush(list, right) {\n  /** @type {number} */\n  let chunkStart = 0;\n  if (right.length < 10000) {\n    list.push(...right);\n  } else {\n    while (chunkStart < right.length) {\n      list.push(...right.slice(chunkStart, chunkStart + 10000));\n      chunkStart += 10000;\n    }\n  }\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n  /** @type {Record<string, number>} */\n  const jumps = {};\n  let index = -1;\n  /** @type {Event} */\n  let event;\n  /** @type {number | undefined} */\n  let lineIndex;\n  /** @type {number} */\n  let otherIndex;\n  /** @type {Event} */\n  let otherEvent;\n  /** @type {Array<Event>} */\n  let parameters;\n  /** @type {Array<Event>} */\n  let subevents;\n  /** @type {boolean | undefined} */\n  let more;\n  const events = new SpliceBuffer(eventsArray);\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events.get(index);\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = undefined;\n      while (otherIndex--) {\n        otherEvent = events.get(otherIndex);\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events.get(lineIndex)[1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n          // Move past.\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = {\n          ...events.get(lineIndex)[1].start\n        };\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        events.splice(lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n\n  // The changes to the `events` buffer must be copied back into the eventsArray\n  splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n  return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n *   Events.\n * @param {number} eventIndex\n *   Index.\n * @returns {Record<string, number>}\n *   Gaps.\n */\nfunction subcontent(events, eventIndex) {\n  const token = events.get(eventIndex)[1];\n  const context = events.get(eventIndex)[2];\n  let startPosition = eventIndex - 1;\n  /** @type {Array<number>} */\n  const startPositions = [];\n  let tokenizer = token._tokenizer;\n  if (!tokenizer) {\n    tokenizer = context.parser[token.contentType](token.start);\n    if (token._contentTypeTextTrailing) {\n      tokenizer._contentTypeTextTrailing = true;\n    }\n  }\n  const childEvents = tokenizer.events;\n  /** @type {Array<[number, number]>} */\n  const jumps = [];\n  /** @type {Record<string, number>} */\n  const gaps = {};\n  /** @type {Array<Chunk>} */\n  let stream;\n  /** @type {Token | undefined} */\n  let previous;\n  let index = -1;\n  /** @type {Token | undefined} */\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events.get(++startPosition)[1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n      }\n    }\n\n    // Unravel the next token.\n    previous = current;\n    current = current.next;\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token;\n  while (++index < childEvents.length) {\n    if (\n    // Find a void token that includes a break.\n    childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      // Help GC.\n      current._tokenizer = undefined;\n      current.previous = undefined;\n      current = current.next;\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = [];\n\n  // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined;\n    current.previous = undefined;\n  } else {\n    breaks.pop();\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start = startPositions.pop();\n    jumps.push([start, start + slice.length - 1]);\n    events.splice(start, 2, slice);\n  }\n  jumps.reverse();\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  resolve: resolveContent,\n  tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  partial: true,\n  tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous;\n  return chunkStart;\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter(\"content\");\n    previous = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code);\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code);\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n    }\n\n    // Data.\n    effects.consume(code);\n    return chunkInside;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code);\n    effects.exit(\"chunkContent\");\n    previous.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous\n    });\n    previous = previous.next;\n    return chunkInside;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this;\n  return startLookahead;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1];\n    if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code);\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n  }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code);\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code);\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code);\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? enclosedEscape : enclosed;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code);\n      return enclosed;\n    }\n    return enclosed(code);\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code);\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code);\n      balance++;\n      return raw;\n    }\n    if (code === 41) {\n      effects.consume(code);\n      balance--;\n      return raw;\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn’t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? rawEscape : raw;\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code);\n      return raw;\n    }\n    return raw(code);\n  }\n}","/**\n * @import {\n *   Effects,\n *   State,\n *   TokenizeContext,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this;\n  let size = 0;\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n    // To do: remove in the future once we’ve switched from\n    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n    // which doesn’t need this.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code);\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    if (!seen) seen = !markdownSpace(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Effects,\n *   State,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      marker = code === 40 ? 41 : code;\n      return begin;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code);\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code === null) {\n      return nok(code);\n    }\n\n    // Note: blank lines can’t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? escape : inside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code);\n      return inside;\n    }\n    return inside(code);\n  }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n    }\n    return ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n  partial: true,\n  tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this;\n  /** @type {string} */\n  let identifier;\n  return start;\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter(\"definition\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(self, effects, labelAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n    if (code === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(effects, destinationAfter,\n    // Note: we don’t need to reset the way `markdown-rs` does.\n    nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code);\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"definition\");\n\n      // Note: we don’t care about uniqueness.\n      // It’s likely that that doesn’t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier);\n\n      // To do: `markdown-rs` interrupt.\n      // // You’d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore;\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  resolve: resolveHeadingAtx,\n  tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n  /** @type {Token} */\n  let content;\n  /** @type {Token} */\n  let text;\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    content = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    text = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter(\"atxHeading\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code);\n      return sequenceOpen;\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"atxHeading\");\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code);\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter(\"atxHeadingText\");\n    return data(code);\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal “visible” hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code);\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n  concrete: true,\n  name: 'htmlFlow',\n  resolveTo: resolveToHtmlFlow,\n  tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  partial: true,\n  tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start;\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start;\n    // Remove the line prefix.\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this;\n  /** @type {number} */\n  let marker;\n  /** @type {boolean} */\n  let closingTag;\n  /** @type {string} */\n  let buffer;\n  /** @type {number} */\n  let index;\n  /** @type {Code} */\n  let markerB;\n  return start;\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      marker = 3;\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      marker = 4;\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      const slash = code === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code);\n          return basicSelfClosing;\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      marker = 7;\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return completeEnd;\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      markerB = code;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code);\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n      return completeAttributeNameAfter(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationCommentInside;\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code);\n      return continuationRawTagOpen;\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code);\n      return continuationClose;\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code);\n    }\n    effects.consume(code);\n    return continuation;\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code);\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code);\n      buffer = '';\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code);\n        return continuationClose;\n      }\n      return continuation(code);\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      // Always the case.\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return continuationClose;\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code);\n    }\n    effects.consume(code);\n    return continuationClose;\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit(\"htmlFlow\");\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  /** @type {number} */\n  let index;\n  /** @type {State} */\n  let returnState;\n  return start;\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instruction;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return declaration;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 45) {\n      effects.consume(code);\n      return commentClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return comment;\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return comment(code);\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return cdata;\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return declaration;\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return instruction;\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return tagCloseBetween(code);\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagCloseBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return end;\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      marker = code;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code);\n      marker = undefined;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code === null) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n      return nok(code);\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At eol.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   Event,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  resolveAll: resolveAllLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  const newEvents = [];\n  while (++index < events.length) {\n    const token = events[index][1];\n    newEvents.push(events[index]);\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      // Remove the marker.\n      const offset = token.type === \"labelImage\" ? 4 : 2;\n      token.type = \"data\";\n      index += offset;\n    }\n  }\n\n  // If the events are equal, we don't have to copy newEvents to events\n  if (events.length !== newEvents.length) {\n    splice(events, 0, events.length, newEvents);\n  }\n  return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  /** @type {Token} */\n  let token;\n  /** @type {number | undefined} */\n  let open;\n  /** @type {number | undefined} */\n  let close;\n  /** @type {Array<Event>} */\n  let media;\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1];\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n  const label = {\n    type: \"label\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[close][1].end\n    }\n  };\n  const text = {\n    type: \"labelText\",\n    start: {\n      ...events[open + offset + 2][1].end\n    },\n    end: {\n      ...events[close - 2][1].start\n    }\n  };\n  media = [['enter', group, context], ['enter', label, context]];\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3));\n\n  // Text open.\n  media = push(media, [['enter', text, context]]);\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n  // Text close, marker close, label close.\n  media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1));\n\n  // Media close.\n  media = push(media, [['exit', group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  /** @type {Token} */\n  let labelStart;\n  /** @type {boolean} */\n  let defined;\n\n  // Find an opening.\n  while (index--) {\n    if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n      labelStart = self.events[index][1];\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code);\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we’d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can’t have that, so it’s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code);\n    }\n    defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    })));\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code);\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code);\n  }\n\n  /**\n   * Done, it’s nothing.\n   *\n   * There was an okay opening, but we didn’t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true;\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code);\n    }\n    return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code);\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n    }\n    return resourceEnd(code);\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this;\n  return referenceFull;\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there’s a `[`.\n\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code);\n      effects.exit(\"labelMarker\");\n      effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn’t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelLink\");\n    return after;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n  }\n}","/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"thematicBreak\");\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code;\n    return atBreak(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code);\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code);\n      size++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd,\n  name: 'list',\n  tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  partial: true,\n  tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n  partial: true,\n  tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this;\n  const tail = self.events[self.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code);\n      }\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code);\n      return inside;\n    }\n    if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code);\n    effects.exit(\"listItemMarker\");\n    self.containerState.marker = self.containerState.marker || code;\n    return effects.check(blankLine,\n    // Can’t be empty when interrupting.\n    self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code);\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this;\n  self.containerState._closeFlow = undefined;\n  return effects.check(blankLine, onBlank, notBlank);\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined;\n      self.containerState.initialBlankLine = undefined;\n      return notInCurrentItem(code);\n    }\n    self.containerState.furtherBlankLines = undefined;\n    self.containerState.initialBlankLine = undefined;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true;\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined;\n    // Always populated by defaults.\n\n    return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this;\n\n  // Always populated by defaults.\n\n  return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n  }\n}","/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  resolveTo: resolveToSetextUnderline,\n  tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length;\n  /** @type {number | undefined} */\n  let content;\n  /** @type {number | undefined} */\n  let text;\n  /** @type {number | undefined} */\n  let definition;\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === \"content\") {\n        content = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text = index;\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === \"content\") {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1);\n      }\n      if (!definition && events[index][1].type === \"definition\") {\n        definition = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: {\n      ...events[content][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = \"setextHeadingText\";\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context]);\n    events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n    events[content][1].end = {\n      ...events[definition][1].end\n    };\n  } else {\n    events[content][1] = heading;\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context]);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length;\n    /** @type {boolean | undefined} */\n    let paragraph;\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n        paragraph = self.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code;\n      return before(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}","/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeFlow(effects) {\n  const self = this;\n  const initial = effects.attempt(\n  // Try to parse a blank line.\n  blankLine, atBlankEnding,\n  // Try to parse initial flow (essentially, only code).\n  effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n  return initial;\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n}","/**\n * @import {\n *   Code,\n *   InitialConstruct,\n *   Initializer,\n *   Resolver,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n  resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n *   Field.\n * @returns {InitialConstruct}\n *   Construct.\n */\nfunction initializeFactory(field) {\n  return {\n    resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n    tokenize: initializeText\n  };\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this;\n    const constructs = this.parser.constructs[field];\n    const text = effects.attempt(constructs, start, notText);\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code);\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code);\n      return data;\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(\"data\");\n        return text(code);\n      }\n\n      // Data.\n      effects.consume(code);\n      return data;\n    }\n\n    /**\n     * @param {Code} code\n     *   Code.\n     * @returns {boolean}\n     *   Whether the code is a break.\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true;\n      }\n      const list = constructs[code];\n      let index = -1;\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index];\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n *   Resolver.\n * @returns {Resolver}\n *   Resolver.\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1;\n    /** @type {number | undefined} */\n    let enter;\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = undefined;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0; // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size = 0;\n      /** @type {boolean | undefined} */\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++;\n            bufferIndex--;\n          }\n          if (bufferIndex) break;\n          bufferIndex = -1;\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true;\n          size++;\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++;\n          break;\n        }\n      }\n\n      // Allow final trailing whitespace.\n      if (context._contentTypeTextTrailing && eventIndex === events.length) {\n        size = 0;\n      }\n      if (size) {\n        const token = {\n          type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n            _index: data.start._index + index,\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size\n          },\n          end: {\n            ...data.end\n          }\n        };\n        data.end = {\n          ...token.start\n        };\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n          eventIndex += 2;\n        }\n      }\n      eventIndex++;\n    }\n  }\n  return events;\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n};","/**\n * @import {\n *   Chunk,\n *   Code,\n *   ConstructRecord,\n *   Construct,\n *   Effects,\n *   InitialConstruct,\n *   ParseContext,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n *   Restore the state.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef Info\n *   Info.\n * @property {Restore} restore\n *   Restore.\n * @property {number} from\n *   From.\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n *   Construct.\n * @param {Info} info\n *   Info.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n *   Parser.\n * @param {InitialConstruct} initialize\n *   Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n *   Point (optional).\n * @returns {TokenizeContext}\n *   Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = {\n    _bufferIndex: -1,\n    _index: 0,\n    line: from && from.line || 1,\n    column: from && from.column || 1,\n    offset: from && from.offset || 0\n  };\n  /** @type {Record<string, number>} */\n  const columnStart = {};\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = [];\n  /** @type {Array<Chunk>} */\n  let chunks = [];\n  /** @type {Array<Token>} */\n  let stack = [];\n  /** @type {boolean | undefined} */\n  let consumed = true;\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    consume,\n    enter,\n    exit,\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    code: null,\n    containerState: {},\n    defineSkip,\n    events: [],\n    now,\n    parser,\n    previous: null,\n    sliceSerialize,\n    sliceStream,\n    write\n  };\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects);\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode;\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    } = point;\n    return {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    };\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex;\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   *   Code.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function go(code) {\n    consumed = undefined;\n    expectedCode = code;\n    state = state(code);\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code !== -1) {\n      point.column++;\n      point.offset++;\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n\n      // At end of string chunk.\n      if (point._bufferIndex ===\n      // Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      /** @type {string} */\n      chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code;\n\n    // Mark as consumed.\n    consumed = true;\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push(['enter', token, context]);\n    stack.push(token);\n    return token;\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push(['exit', token, context]);\n    return token;\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   *   Callback.\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   *   Fields.\n   */\n  function constructFactory(onreturn, fields) {\n    return hook;\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | ConstructRecord | Construct} constructs\n     *   Constructs.\n     * @param {State} returnState\n     *   State.\n     * @param {State | undefined} [bogusState]\n     *   State.\n     * @returns {State}\n     *   State.\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {ReadonlyArray<Construct>} */\n      let listOfConstructs;\n      /** @type {number} */\n      let constructIndex;\n      /** @type {Construct} */\n      let currentConstruct;\n      /** @type {Info} */\n      let info;\n      return Array.isArray(constructs) ? /* c8 ignore next 1 */\n      handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n      // Looks like a construct.\n      handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleMapOfConstructs(map) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          const left = code !== null && map[code];\n          const all = code !== null && map.null;\n          const list = [\n          // To do: add more extension tests.\n          /* c8 ignore next 2 */\n          ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n          return handleListOfConstructs(list)(code);\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ReadonlyArray<Construct>} list\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list;\n        constructIndex = 0;\n        if (list.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list[constructIndex]);\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       *   Construct.\n       * @returns {State}\n       *   State.\n       */\n      function handleConstruct(construct) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n\n          // Always populated by defaults.\n\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok(code);\n          }\n          return construct.tokenize.call(\n          // If we do have fields, create an object w/ `context` as its\n          // prototype.\n          // This allows a “live binding”, which is needed for `interrupt`.\n          fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true;\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true;\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   *   Construct.\n   * @param {number} from\n   *   From.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   *   Info.\n   */\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      from: startEventsIndex,\n      restore\n    };\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n *   Token.\n * @returns {Array<Chunk>}\n *   Chunks.\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  /** @type {Array<Chunk>} */\n  let view;\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex);\n        /* c8 ignore next 4 -- used to be used, no longer */\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n *   Whether to expand tabs (default: `false`).\n * @returns {string}\n *   Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else switch (chunk) {\n      case -5:\n        {\n          value = \"\\r\";\n          break;\n        }\n      case -4:\n        {\n          value = \"\\n\";\n          break;\n        }\n      case -3:\n        {\n          value = \"\\r\" + \"\\n\";\n          break;\n        }\n      case -2:\n        {\n          value = expandTabs ? \" \" : \"\\t\";\n          break;\n        }\n      case -1:\n        {\n          if (!expandTabs && atTab) continue;\n          value = \" \";\n          break;\n        }\n      default:\n        {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk);\n        }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}","/**\n * @import {\n *   Create,\n *   FullNormalizedExtension,\n *   InitialConstruct,\n *   ParseContext,\n *   ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ParseContext}\n *   Parser.\n */\nexport function parse(options) {\n  const settings = options || {};\n  const constructs = /** @type {FullNormalizedExtension} */\n  combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n  /** @type {ParseContext} */\n  const parser = {\n    constructs,\n    content: create(content),\n    defined: [],\n    document: create(document),\n    flow: create(flow),\n    lazy: {},\n    string: create(string),\n    text: create(text)\n  };\n  return parser;\n\n  /**\n   * @param {InitialConstruct} initial\n   *   Construct to start with.\n   * @returns {Create}\n   *   Create a tokenizer.\n   */\n  function create(initial) {\n    return creator;\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n *   Events.\n * @returns {Array<Event>}\n *   Events.\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n *   Preprocess a value.\n * @param {Value} value\n *   Value.\n * @param {Encoding | null | undefined} [encoding]\n *   Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n *   Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n *   Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n *   Preprocess a value.\n */\nexport function preprocess() {\n  let column = 1;\n  let buffer = '';\n  /** @type {boolean | undefined} */\n  let start = true;\n  /** @type {boolean | undefined} */\n  let atCarriageReturn;\n  return preprocessor;\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = [];\n    /** @type {RegExpMatchArray | null} */\n    let match;\n    /** @type {number} */\n    let next;\n    /** @type {number} */\n    let startPosition;\n    /** @type {number} */\n    let endPosition;\n    /** @type {Code} */\n    let code;\n    value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n    startPosition = 0;\n    buffer = '';\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = undefined;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      match = search.exec(value);\n      endPosition = match && match.index !== undefined ? match.index : value.length;\n      code = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = undefined;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = undefined;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code) {\n          case 0:\n            {\n              chunks.push(65533);\n              column++;\n              break;\n            }\n          case 9:\n            {\n              next = Math.ceil(column / 4) * 4;\n              chunks.push(-2);\n              while (column++ < next) chunks.push(-1);\n              break;\n            }\n          case 10:\n            {\n              chunks.push(-4);\n              column = 1;\n              break;\n            }\n          default:\n            {\n              atCarriageReturn = true;\n              column = 1;\n            }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5);\n      if (buffer) chunks.push(buffer);\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @param {string} $1\n *   Character escape.\n * @param {string} $2\n *   Character reference.\n * @returns {string}\n *   Decoded value\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1;\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0);\n  if (head === 35) {\n    const head = $2.charCodeAt(1);\n    const hex = head === 120 || head === 88;\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n  }\n  return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @import {\n *   Break,\n *   Blockquote,\n *   Code,\n *   Definition,\n *   Emphasis,\n *   Heading,\n *   Html,\n *   Image,\n *   InlineCode,\n *   Link,\n *   ListItem,\n *   List,\n *   Nodes,\n *   Paragraph,\n *   PhrasingContent,\n *   ReferenceType,\n *   Root,\n *   Strong,\n *   Text,\n *   ThematicBreak\n * } from 'mdast'\n * @import {\n *   Encoding,\n *   Event,\n *   Token,\n *   Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n *   CompileContext,\n *   CompileData,\n *   Config,\n *   Extension,\n *   Handle,\n *   OnEnterError,\n *   Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding;\n    encoding = undefined;\n  }\n  return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      characterReference: onexitcharacterreference,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  };\n  configure(config, (options || {}).mdastExtensions || []);\n\n  /** @type {CompileData} */\n  const data = {};\n  return compile;\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    };\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    };\n    /** @type {Array<number>} */\n    const listStack = [];\n    let index = -1;\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === 'enter') {\n          listStack.push(index);\n        } else {\n          const tail = listStack.pop();\n          index = prepareList(events, tail, index);\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      const handler = config[events[index][0]];\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(Object.assign({\n          sliceSerialize: events[index][2].sliceSerialize\n        }, context), events[index][1]);\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1];\n      const handler = tail[1] || defaultOnError;\n      handler.call(context, undefined, tail[0]);\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(events.length > 0 ? events[0][1].start : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }),\n      end: point(events.length > 0 ? events[events.length - 2][1].end : {\n        line: 1,\n        column: 1,\n        offset: 0\n      })\n    };\n\n    // Call transforms.\n    index = -1;\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree;\n    }\n    return tree;\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1;\n    let containerBalance = -1;\n    let listSpread = false;\n    /** @type {Token | undefined} */\n    let listItem;\n    /** @type {number | undefined} */\n    let lineIndex;\n    /** @type {number | undefined} */\n    let firstBlankLineIndex;\n    /** @type {boolean | undefined} */\n    let atMarker;\n    while (++index <= length) {\n      const event = events[index];\n      switch (event[1].type) {\n        case \"listUnordered\":\n        case \"listOrdered\":\n        case \"blockQuote\":\n          {\n            if (event[0] === 'enter') {\n              containerBalance++;\n            } else {\n              containerBalance--;\n            }\n            atMarker = undefined;\n            break;\n          }\n        case \"lineEndingBlank\":\n          {\n            if (event[0] === 'enter') {\n              if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n                firstBlankLineIndex = index;\n              }\n              atMarker = undefined;\n            }\n            break;\n          }\n        case \"linePrefix\":\n        case \"listItemValue\":\n        case \"listItemMarker\":\n        case \"listItemPrefix\":\n        case \"listItemPrefixWhitespace\":\n          {\n            // Empty.\n\n            break;\n          }\n        default:\n          {\n            atMarker = undefined;\n          }\n      }\n      if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n        if (listItem) {\n          let tailIndex = index;\n          lineIndex = undefined;\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex];\n            if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n              if (tailEvent[0] === 'exit') continue;\n              if (lineIndex) {\n                events[lineIndex][1].type = \"lineEndingBlank\";\n                listSpread = true;\n              }\n              tailEvent[1].type = \"lineEnding\";\n              lineIndex = tailIndex;\n            } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n              // Empty\n            } else {\n              break;\n            }\n          }\n          if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n            listItem._spread = true;\n          }\n\n          // Fix position.\n          listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n          index++;\n          length++;\n        }\n\n        // Create a new list item.\n        if (event[1].type === \"listItemPrefix\") {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we’ll add `end` in a second.\n            end: undefined\n          };\n          listItem = item;\n          events.splice(index, 0, ['enter', item, event[2]]);\n          index++;\n          length++;\n          firstBlankLineIndex = undefined;\n          atMarker = true;\n        }\n      }\n    }\n    events[start][1]._spread = listSpread;\n    return length;\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token);\n      if (and) and.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['buffer']}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    });\n  }\n\n  /**\n   * @type {CompileContext['enter']}\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children;\n    siblings.push(node);\n    this.stack.push(node);\n    this.tokenStack.push([token, errorHandler || undefined]);\n    node.position = {\n      start: point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    };\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token);\n      exit.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['exit']}\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop();\n    const open = this.tokenStack.pop();\n    if (!open) {\n      throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n        start: token.start,\n        end: token.end\n      }) + '): it’s not open');\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0]);\n      } else {\n        const handler = open[1] || defaultOnError;\n        handler.call(this, token, open[0]);\n      }\n    }\n    node.position.end = point(token.end);\n  }\n\n  /**\n   * @type {CompileContext['resume']}\n   */\n  function resume() {\n    return toString(this.stack.pop());\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2];\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n      this.data.expectingFirstListItemValue = undefined;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.lang = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.meta = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return;\n    this.buffer();\n    this.data.flowCodeInside = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n    this.data.flowCodeInside = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.label = label;\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length;\n      node.depth = depth;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = node.children;\n    let tail = siblings[siblings.length - 1];\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text();\n      tail.position = {\n        start: point(token.start),\n        // @ts-expect-error: we’ll add `end` later.\n        end: undefined\n      };\n      siblings.push(tail);\n    }\n    this.stack.push(tail);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop();\n    tail.value += this.sliceSerialize(token);\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1];\n    // If we’re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1];\n      tail.position.end = point(token.end);\n      this.data.atHardBreak = undefined;\n      return;\n    }\n    if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n      onenterdata.call(this, token);\n      onexitdata.call(this, token);\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token);\n    const ancestor = this.stack[this.stack.length - 2];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string);\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1];\n    const value = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // Assume a reference.\n    this.data.inReference = true;\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children;\n      node.children = children;\n    } else {\n      node.alt = value;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label;\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n    this.data.referenceType = 'full';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token);\n    const type = this.data.characterReferenceType;\n    /** @type {string} */\n    let value;\n    if (type) {\n      value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n      this.data.characterReferenceType = undefined;\n    } else {\n      const result = decodeNamedCharacterReference(data);\n      value = result;\n    }\n    const tail = this.stack[this.stack.length - 1];\n    tail.value += value;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreference(token) {\n    const tail = this.stack.pop();\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = this.sliceSerialize(token);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = 'mailto:' + this.sliceSerialize(token);\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    };\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    };\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    };\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    };\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    };\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: []\n    };\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    };\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    };\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    };\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    };\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    };\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    };\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    };\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    };\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1;\n  while (++index < extensions.length) {\n    const value = extensions[index];\n    if (Array.isArray(value)) {\n      configure(combined, value);\n    } else {\n      extension(combined, value);\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key;\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'transforms':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'enter':\n        case 'exit':\n          {\n            const right = extension[key];\n            if (right) {\n              Object.assign(combined[key], right);\n            }\n            break;\n          }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n      start: left.start,\n      end: left.end\n    }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is open');\n  } else {\n    throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is still open');\n  }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  /** @type {Properties} */\n  const properties = {}\n  // Someone can write `js&#x20;python&#x9;ruby`.\n  const language = node.lang ? node.lang.split(/\\s+/) : []\n\n  // GH/CM still drop the non-first languages.\n  if (language.length > 0) {\n    properties.className = ['language-' + language[0]]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n","/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract<Nodes, Reference>} node\n *   Reference node (image, link).\n * @returns {Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n","export const VOID       = -1;\nexport const PRIMITIVE  = 0;\nexport const ARRAY      = 1;\nexport const OBJECT     = 2;\nexport const DATE       = 3;\nexport const REGEXP     = 4;\nexport const MAP        = 5;\nexport const SET        = 6;\nexport const ERROR      = 7;\nexport const BIGINT     = 8;\n// export const SYMBOL = 9;\n","import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value)\n          object[unpair(key)] = unpair(index);\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(new env[name](message), index);\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n      case 'ArrayBuffer':\n        return as(new Uint8Array(value).buffer, value);\n      case 'DataView': {\n        const { buffer } = new Uint8Array(value);\n        return as(new DataView(buffer), value);\n      }\n    }\n    return as(new env[type](value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n    case 'DataView':\n      return [ARRAY, asString];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (asString.includes('Error'))\n    return [ERROR, asString];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type) {\n          let spread = value;\n          if (type === 'DataView') {\n            spread = new Uint8Array(value.buffer);\n          }\n          else if (type === 'ArrayBuffer') {\n            spread = new Uint8Array(value);\n          }\n          return as([type, [...spread]], value);\n        }\n\n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize(any, options));\n  /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n *   Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array<ElementContent>} */\n  const result = [{type: 'text', value: '↩'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const definition = state.footnoteById.get(\n      state.footnoteOrder[referenceIndex]\n    )\n\n    if (!definition) {\n      continue\n    }\n\n    const content = state.all(definition)\n    const id = String(definition.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(definition, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...structuredClone(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node’s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test)\n          ? anyFactory(test)\n          : // Cast because `ReadonlyArray` goes into the above but `isArray`\n            // narrows to `Array`.\n            propertiesFactory(/** @type {Props} */ (test))\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return d\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray<infer T>\n *   ? MatchesOne<Value, T>\n *   : Check extends Array<infer T>\n *   ? MatchesOne<Value, T>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn’t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n            typeof value.name === 'string'\n            ? value.name\n            : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n","/**\n * @import {\n *   ElementContent as HastElementContent,\n *   Element as HastElement,\n *   Nodes as HastNodes,\n *   Properties as HastProperties,\n *   RootContent as HastRootContent,\n *   Text as HastText\n * } from 'hast'\n * @import {\n *   Definition as MdastDefinition,\n *   FootnoteDefinition as MdastFootnoteDefinition,\n *   Nodes as MdastNodes,\n *   Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n *   FootnoteBackContentTemplate,\n *   FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=\"x\"></p>\n *   <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n *   ```\n *\n *   The above example shows that elements are made available by browsers, by\n *   their ID, on the `window` object.\n *   This is a security risk because you might be expecting some other variable\n *   at that place.\n *   It can also break polyfills.\n *   Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n *   Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n *   Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackContent(_, rereferenceIndex) {\n *     const result = [{type: 'text', value: '↩'}]\n *\n *     if (rereferenceIndex > 1) {\n *       result.push({\n *         type: 'element',\n *         tagName: 'sup',\n *         properties: {},\n *         children: [{type: 'text', value: String(rereferenceIndex)}]\n *       })\n *     }\n *\n *     return result\n *   }\n *   ```\n *\n *   This content is used in the `a` element of each backreference (the `↩`\n *   links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n *   Label to describe the backreference back to references (default:\n *   `defaultFootnoteBackLabel`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n *    return (\n *      'Back to reference ' +\n *      (referenceIndex + 1) +\n *      (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n *    )\n *   }\n *   ```\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is used in the `ariaLabel` property on each backreference\n *   (the `↩` links).\n *   It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (default: `{className:\n *   ['sr-only']}`).\n *\n *   Change it to show the label and add other properties.\n *\n *   This label is typically hidden visually (assuming an `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass an empty string.\n *   You can also add different properties.\n *\n *   > **Note**: `id: 'footnote-label'` is always added, because footnote\n *   > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n *   Change it to match your document structure.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed)\n *   (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes (optional).\n *\n * @typedef State\n *   Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n *   Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n *   Transform an mdast node to hast.\n * @property {Options} options\n *   Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || emptyOptions\n  /** @type {Map<string, MdastDefinition>} */\n  const definitionById = new Map()\n  /** @type {Map<string, MdastFootnoteDefinition>} */\n  const footnoteById = new Map()\n  /** @type {Map<string, number>} */\n  const footnoteCounts = new Map()\n  /** @type {Handlers} */\n  // @ts-expect-error: the root handler returns a root.\n  // Hard to type.\n  const handlers = {...defaultHandlers, ...settings.handlers}\n\n  /** @type {State} */\n  const state = {\n    all,\n    applyData,\n    definitionById,\n    footnoteById,\n    footnoteCounts,\n    footnoteOrder: [],\n    handlers,\n    one,\n    options: settings,\n    patch,\n    wrap\n  }\n\n  visit(tree, function (node) {\n    if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n      const map = node.type === 'definition' ? definitionById : footnoteById\n      const id = String(node.identifier).toUpperCase()\n\n      // Mimick CM behavior of link definitions.\n      // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n      if (!map.has(id)) {\n        // @ts-expect-error: node type matches map.\n        map.set(id, node)\n      }\n    }\n  })\n\n  return state\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {Array<HastElementContent> | HastElementContent | undefined}\n   *   Resulting hast node.\n   */\n  function one(node, parent) {\n    const type = node.type\n    const handle = state.handlers[type]\n\n    if (own.call(state.handlers, type) && handle) {\n      return handle(state, node, parent)\n    }\n\n    if (state.options.passThrough && state.options.passThrough.includes(type)) {\n      if ('children' in node) {\n        const {children, ...shallow} = node\n        const result = structuredClone(shallow)\n        // @ts-expect-error: TS doesn’t understand…\n        result.children = state.all(node)\n        // @ts-expect-error: TS doesn’t understand…\n        return result\n      }\n\n      // @ts-expect-error: it’s custom.\n      return structuredClone(node)\n    }\n\n    const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n    return unknown(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function all(parent) {\n    /** @type {Array<HastElementContent>} */\n    const values = []\n\n    if ('children' in parent) {\n      const nodes = parent.children\n      let index = -1\n      while (++index < nodes.length) {\n        const result = state.one(nodes[index], parent)\n\n        // To do: see if we van clean this? Can we merge texts?\n        if (result) {\n          if (index && nodes[index - 1].type === 'break') {\n            if (!Array.isArray(result) && result.type === 'text') {\n              result.value = trimMarkdownSpaceStart(result.value)\n            }\n\n            if (!Array.isArray(result) && result.type === 'element') {\n              const head = result.children[0]\n\n              if (head && head.type === 'text') {\n                head.value = trimMarkdownSpaceStart(head.value)\n              }\n            }\n          }\n\n          if (Array.isArray(result)) {\n            values.push(...result)\n          } else {\n            values.push(result)\n          }\n        }\n      }\n    }\n\n    return values\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {HastElement | Type}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {HastElement | Type} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent of `hName` is to create an element, but likely also to keep\n      // the content around (otherwise: pass `hChildren`).\n      else {\n        /** @type {Array<HastElementContent>} */\n        // @ts-expect-error: assume no doctypes in `root`.\n        const children = 'children' in result ? result.children : [result]\n        result = {type: 'element', tagName: hName, properties: {}, children}\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      Object.assign(result.properties, structuredClone(hProperties))\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastElement | HastText}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastElement | HastText} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: state.all(node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n *   Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<HastText | Type>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n  let index = 0\n  let code = value.charCodeAt(index)\n\n  while (code === 9 || code === 32) {\n    index++\n    code = value.charCodeAt(index)\n  }\n\n  return value.slice(index)\n}\n","/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {HastNodes}\n *   hast tree.\n */\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, undefined)\n  const foot = footer(state)\n  /** @type {HastNodes} */\n  const result = Array.isArray(node)\n    ? {type: 'root', children: node}\n    : node || {type: 'root', children: []}\n\n  if (foot) {\n    // If there’s a footer, there were definitions, meaning block\n    // content.\n    // So `result` is a parent node.\n    assert('children' in result)\n    result.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  return result\n}\n","/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n *   Bridge-mode.\n *\n *   Runs the destination with the new hast tree.\n *   Discards result.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {Promise<undefined>}\n *   Nothing.\n *\n * @callback TransformMutate\n *  Mutate-mode.\n *\n *  Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {HastRoot}\n *   Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n *   runs the (rehype) plugins used on it with a hast tree,\n *   then discards the result (*bridge mode*)\n * * otherwise,\n *   returns a hast tree,\n *   the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**:\n * > It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n *   output the raw HTML.\n *   This is typically discouraged as noted by the option name but is useful if\n *   you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n *   into standard hast nodes (`element`, `text`, etc);\n *   this is a heavy task as it needs a full HTML parser,\n *   but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n *   (and doesn’t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n *   see later),\n *   create a hast `text` node\n * * otherwise,\n *   create a `<div>` element (which could be changed with `data.hName`),\n *   with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n *   Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n *   When a processor was given,\n *   configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n *   Transform.\n */\nexport default function remarkRehype(destination, options) {\n  if (destination && 'run' in destination) {\n    /**\n     * @type {TransformBridge}\n     */\n    return async function (tree, file) {\n      // Cast because root in -> root out.\n      const hastTree = /** @type {HastRoot} */ (\n        toHast(tree, {file, ...options})\n      )\n      await destination.run(hastTree, file)\n    }\n  }\n\n  /**\n   * @type {TransformMutate}\n   */\n  return function (tree, file) {\n    // Cast because root in -> root out.\n    // To do: in the future, disallow ` || options` fallback.\n    // With `unified-engine`, `destination` can be `undefined` but\n    // `options` will be the file set.\n    // We should not pass that as `options`.\n    return /** @type {HastRoot} */ (\n      toHast(tree, {file, ...(destination || options)})\n    )\n  }\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | null | undefined} [extname]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\n */\nfunction basename(path, extname) {\n  if (extname !== undefined && typeof extname !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let seenNonSlash\n\n  if (\n    extname === undefined ||\n    extname.length === 0 ||\n    extname.length > path.length\n  ) {\n    while (index--) {\n      if (path.codePointAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (extname === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extnameIndex = extname.length - 1\n\n  while (index--) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extnameIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n          if (extnameIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extnameIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.codePointAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.codePointAt(0) === 47 /* `/` */\n      ? '//'\n      : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.codePointAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string | undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.codePointAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number | undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.codePointAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n          result.codePointAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n *   File URL.\n * @returns {string}\n *   File URL.\n */\nexport function urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.codePointAt(index) === 37 /* `%` */ &&\n      pathname.codePointAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.codePointAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n    // the empty string will be overridden in the next block.\n    this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const field = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        field in options &&\n        options[field] !== undefined &&\n        options[field] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\n        this[field] = field === 'history' ? [...options[field]] : options[field]\n      }\n    }\n\n    /** @type {string} */\n    let field\n\n    // Set non-path related properties.\n    for (field in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(field)) {\n        // @ts-expect-error: fine to set other things.\n        this[field] = options[field]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path)\n      : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = minpath.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string'\n      ? minpath.dirname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = minpath.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string'\n      ? minpath.extname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(minpath.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","export const CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const value = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return value.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        // Not needed for us in `unified`: we only call this on the `copy`\n        // function,\n        // and we don't need to add its fields (`length`, `name`)\n        // over.\n        // See also: GH-246.\n        // const names = Object.getOwnPropertyNames(value)\n        //\n        // for (const p of names) {\n        //   const descriptor = Object.getOwnPropertyDescriptor(value, p)\n        //   if (descriptor) Object.defineProperty(apply, p, descriptor)\n        // }\n\n        return apply\n      }\n    )\n  )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@linkcode Node}\n *   and {@linkcode VFile} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you’re using a compiler that doesn’t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@linkcode CompileResultMap}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@linkcode VFile} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@linkcode Node}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it’s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > **Note**: you should likely ignore `next`: don’t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` — fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` — the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we’re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@linkcode Processor}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > **Note**: to register custom data in TypeScript, augment the\n   * > {@linkcode Data} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It’s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      assert(\n        typeof file !== 'function',\n        '`file` can’t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we’d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n          primary = extend(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n","/**\n * @import {Element, Nodes, Parents, Root} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {ComponentType, JSX, ReactElement, ReactNode} from 'react'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {BuildVisitor} from 'unist-util-visit'\n * @import {PluggableList, Processor} from 'unified'\n */\n\n/**\n * @callback AllowElement\n *   Filter elements.\n * @param {Readonly<Element>} element\n *   Element to check.\n * @param {number} index\n *   Index of `element` in `parent`.\n * @param {Readonly<Parents> | undefined} parent\n *   Parent of `element`.\n * @returns {boolean | null | undefined}\n *   Whether to allow `element` (default: `false`).\n */\n\n/**\n * @typedef ExtraProps\n *   Extra fields we pass.\n * @property {Element | undefined} [node]\n *   passed when `passNode` is on.\n */\n\n/**\n * @typedef {{\n *   [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key] & ExtraProps> | keyof JSX.IntrinsicElements\n * }} Components\n *   Map tag names to components.\n */\n\n/**\n * @typedef Deprecation\n *   Deprecation.\n * @property {string} from\n *   Old field.\n * @property {string} id\n *   ID in readme.\n * @property {keyof Options} [to]\n *   New field.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n *   Filter elements (optional);\n *   `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray<string> | null | undefined} [allowedElements]\n *   Tag names to allow (default: all tag names);\n *   cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n *   Markdown.\n * @property {Components | null | undefined} [components]\n *   Map tag names to components.\n * @property {ReadonlyArray<string> | null | undefined} [disallowedElements]\n *   Tag names to disallow (default: `[]`);\n *   cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n *   List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n *   List of remark plugins to use.\n * @property {Readonly<RemarkRehypeOptions> | null | undefined} [remarkRehypeOptions]\n *   Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n *   Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n *   Extract (unwrap) what’s in disallowed elements (default: `false`);\n *   normally when say `strong` is not allowed, it and it’s children are dropped,\n *   with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n *   Change URLs (default: `defaultUrlTransform`)\n */\n\n/**\n * @typedef HooksOptionsOnly\n *   Configuration specifically for {@linkcode MarkdownHooks}.\n * @property {ReactNode | null | undefined} [fallback]\n *   Content to render while the processor processing the markdown (optional).\n */\n\n/**\n * @typedef {Options & HooksOptionsOnly} HooksOptions\n *   Configuration for {@linkcode MarkdownHooks};\n *   extends the regular {@linkcode Options} with a `fallback` prop.\n */\n\n/**\n * @callback UrlTransform\n *   Transform all URLs.\n * @param {string} url\n *   URL.\n * @param {string} key\n *   Property name (example: `'href'`).\n * @param {Readonly<Element>} node\n *   Node.\n * @returns {string | null | undefined}\n *   Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport {useEffect, useState} from 'react'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly<RemarkRehypeOptions>} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray<Readonly<Deprecation>>} */\nconst deprecations = [\n  {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {\n    from: 'allowNode',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowElement'\n  },\n  {\n    from: 'allowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowedElements'\n  },\n  {from: 'className', id: 'remove-classname'},\n  {\n    from: 'disallowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'disallowedElements'\n  },\n  {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n  {\n    from: 'includeNodeIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  },\n  {from: 'linkTarget', id: 'remove-linktarget'},\n  {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n  {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n  {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n  {from: 'source', id: 'change-source-to-children', to: 'children'},\n  {from: 'sourcePos', id: '#remove-sourcepos'},\n  {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n  {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * This is a synchronous component.\n * When using async plugins,\n * see {@linkcode MarkdownAsync} or {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nexport function Markdown(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  return post(processor.runSync(processor.parse(file), file), options)\n}\n\n/**\n * Component to render markdown with support for async plugins\n * through async/await.\n *\n * Components returning promises are supported on the server.\n * For async support on the client,\n * see {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Promise<ReactElement>}\n *   Promise to a React element.\n */\nexport async function MarkdownAsync(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  const tree = await processor.run(processor.parse(file), file)\n  return post(tree, options)\n}\n\n/**\n * Component to render markdown with support for async plugins through hooks.\n *\n * This uses `useEffect` and `useState` hooks.\n * Hooks run on the client and do not immediately render something.\n * For async support on the server,\n * see {@linkcode MarkdownAsync}.\n *\n * @param {Readonly<HooksOptions>} options\n *   Props.\n * @returns {ReactNode}\n *   React node.\n */\nexport function MarkdownHooks(options) {\n  const processor = createProcessor(options)\n  const [error, setError] = useState(\n    /** @type {Error | undefined} */ (undefined)\n  )\n  const [tree, setTree] = useState(/** @type {Root | undefined} */ (undefined))\n\n  useEffect(\n    function () {\n      let cancelled = false\n      const file = createFile(options)\n\n      processor.run(processor.parse(file), file, function (error, tree) {\n        if (!cancelled) {\n          setError(error)\n          setTree(tree)\n        }\n      })\n\n      /**\n       * @returns {undefined}\n       *   Nothing.\n       */\n      return function () {\n        cancelled = true\n      }\n    },\n    [\n      options.children,\n      options.rehypePlugins,\n      options.remarkPlugins,\n      options.remarkRehypeOptions\n    ]\n  )\n\n  if (error) throw error\n\n  return tree ? post(tree, options) : options.fallback\n}\n\n/**\n * Set up the `unified` processor.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Processor<MdastRoot, MdastRoot, Root, undefined, undefined>}\n *   Result.\n */\nfunction createProcessor(options) {\n  const rehypePlugins = options.rehypePlugins || emptyPlugins\n  const remarkPlugins = options.remarkPlugins || emptyPlugins\n  const remarkRehypeOptions = options.remarkRehypeOptions\n    ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n    : emptyRemarkRehypeOptions\n\n  const processor = unified()\n    .use(remarkParse)\n    .use(remarkPlugins)\n    .use(remarkRehype, remarkRehypeOptions)\n    .use(rehypePlugins)\n\n  return processor\n}\n\n/**\n * Set up the virtual file.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {VFile}\n *   Result.\n */\nfunction createFile(options) {\n  const children = options.children || ''\n  const file = new VFile()\n\n  if (typeof children === 'string') {\n    file.value = children\n  } else {\n    unreachable(\n      'Unexpected value `' +\n        children +\n        '` for `children` prop, expected `string`'\n    )\n  }\n\n  return file\n}\n\n/**\n * Process the result from unified some more.\n *\n * @param {Nodes} tree\n *   Tree.\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nfunction post(tree, options) {\n  const allowedElements = options.allowedElements\n  const allowElement = options.allowElement\n  const components = options.components\n  const disallowedElements = options.disallowedElements\n  const skipHtml = options.skipHtml\n  const unwrapDisallowed = options.unwrapDisallowed\n  const urlTransform = options.urlTransform || defaultUrlTransform\n\n  for (const deprecation of deprecations) {\n    if (Object.hasOwn(options, deprecation.from)) {\n      unreachable(\n        'Unexpected `' +\n          deprecation.from +\n          '` prop, ' +\n          (deprecation.to\n            ? 'use `' + deprecation.to + '` instead'\n            : 'remove it') +\n          ' (see <' +\n          changelog +\n          '#' +\n          deprecation.id +\n          '> for more info)'\n      )\n    }\n  }\n\n  if (allowedElements && disallowedElements) {\n    unreachable(\n      'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n    )\n  }\n\n  visit(tree, transform)\n\n  return toJsxRuntime(tree, {\n    Fragment,\n    components,\n    ignoreInvalidStyle: true,\n    jsx,\n    jsxs,\n    passKeys: true,\n    passNode: true\n  })\n\n  /** @type {BuildVisitor<Root>} */\n  function transform(node, index, parent) {\n    if (node.type === 'raw' && parent && typeof index === 'number') {\n      if (skipHtml) {\n        parent.children.splice(index, 1)\n      } else {\n        parent.children[index] = {type: 'text', value: node.value}\n      }\n\n      return index\n    }\n\n    if (node.type === 'element') {\n      /** @type {string} */\n      let key\n\n      for (key in urlAttributes) {\n        if (\n          Object.hasOwn(urlAttributes, key) &&\n          Object.hasOwn(node.properties, key)\n        ) {\n          const value = node.properties[key]\n          const test = urlAttributes[key]\n          if (test === null || test.includes(node.tagName)) {\n            node.properties[key] = urlTransform(String(value || ''), key, node)\n          }\n        }\n      }\n    }\n\n    if (node.type === 'element') {\n      let remove = allowedElements\n        ? !allowedElements.includes(node.tagName)\n        : disallowedElements\n          ? disallowedElements.includes(node.tagName)\n          : false\n\n      if (!remove && allowElement && typeof index === 'number') {\n        remove = !allowElement(node, index, parent)\n      }\n\n      if (remove && parent && typeof index === 'number') {\n        if (unwrapDisallowed && node.children) {\n          parent.children.splice(index, 1, ...node.children)\n        } else {\n          parent.children.splice(index, 1)\n        }\n\n        return index\n      }\n    }\n  }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n *   URL.\n * @returns {string}\n *   Safe URL.\n */\nexport function defaultUrlTransform(value) {\n  // Same as:\n  // <https://github.com/micromark/micromark/blob/929275e/packages/micromark-util-sanitize-uri/dev/index.js#L34>\n  // But without the `encode` part.\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it’s relative.\n    colon === -1 ||\n    // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash !== -1 && colon > slash) ||\n    (questionMark !== -1 && colon > questionMark) ||\n    (numberSign !== -1 && colon > numberSign) ||\n    // It is a protocol, it should be allowed.\n    safeProtocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n","import { marked } from \"marked\";\nimport { memo, useMemo } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\n\nfunction parseMarkdownIntoBlocks(markdown: string): string[] {\n  const tokens = marked.lexer(markdown);\n  return tokens.map((token) => token.raw);\n}\n\nconst MemoizedMarkdownBlock = memo(\n  ({ content }: { content: string }) => {\n    return <ReactMarkdown>{content}</ReactMarkdown>;\n  },\n  (prevProps, nextProps) => {\n    if (prevProps.content !== nextProps.content) return false;\n    return true;\n  },\n);\n\nMemoizedMarkdownBlock.displayName = \"MemoizedMarkdownBlock\";\n\nexport const MemoizedMarkdown = memo(\n  ({ content, id }: { content: string; id: string }) => {\n    const blocks = useMemo(() => parseMarkdownIntoBlocks(content), [content]);\n\n    return blocks.map((block, index) => (\n      <MemoizedMarkdownBlock content={block} key={`${id}-block_${index}`} />\n    ));\n  },\n);\n\nMemoizedMarkdown.displayName = \"MemoizedMarkdown\";\n","import { cn } from '../lib/utils';\nimport { XlsxIcon } from './bs-icons';\n\nexport interface NumbersMsgPartProps {\n  /** File name to display (optional) */\n  fileName?: string;\n  className?: string;\n  /** Size in pixels (width & height), defaults to 102 */\n  size?: number;\n}\n\nexport const NumbersMsgPart = ({ fileName, className, size = 102 }: NumbersMsgPartProps) => {\n  // Calculate icon size proportionally (52/102 ≈ 51% of container)\n  const iconScale = size / 102;\n  const hasFileName = Boolean(fileName);\n\n  return (\n    <div\n      className={cn(\n        'relative flex flex-col items-center justify-center rounded-[10px] bg-[#EFF0F6] px-[10px]',\n        hasFileName && 'gap-[6px]',\n        className\n      )}\n      style={{ width: size, height: size }}\n    >\n      <div\n        className=\"shrink-0\"\n        style={{\n          transform: iconScale !== 1 ? `scale(${iconScale})` : undefined,\n          transformOrigin: 'center',\n        }}\n      >\n        <XlsxIcon />\n      </div>\n      {hasFileName && (\n        <p\n          className=\"block max-w-full shrink-0 truncate text-center text-[14px] leading-normal text-[#030303]\"\n          style={{ fontSize: 14 * iconScale, maxWidth: '100%', display: 'block' }}\n          title={fileName}\n        >\n          {fileName}\n        </p>\n      )}\n    </div>\n  );\n};\n","import { ReactNode } from \"react\";\n\nexport interface OptionItemProps {\n    bgColor?: string;\n    color?: string;\n    label?: ReactNode;\n    children?: ReactNode;\n}\n\nexport const OptionItem = ({\n    bgColor = \"#E8F4FF\",\n    color = \"#0265FF\",\n    label,\n    children,\n}: OptionItemProps\n) => {\n    return (\n        <div\n            className=\"flex items-center justify-center gap-1.5 px-1.5 h-[26px] rounded-[100px] text-[13px]\"\n            style={{\n                backgroundColor: bgColor,\n                color: color,\n            }}\n        >\n            {label || children}\n        </div>\n    )\n}","import { useState, useCallback } from 'react';\nimport type { FieldType, IAgentHelperOutputConfig, OutputParam, IField, ISubformField } from '@baishuyun/types';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { TrashIcon, SearchIcon } from '../components/bs-icons';\nimport { Popover, PopoverTrigger, PopoverContent } from './ui/popover';\nimport { usePortalContainer } from '../hooks/use-portal-container';\n\nconst PlusIcon = () => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M8 3.5v9M3.5 8h9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nconst CaretIcon = ({ className }: { className?: string }) => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n    <path d=\"M3 4.5l3 3 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\nconst ExpandArrowIcon = ({ className }: { className?: string }) => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n    <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\ninterface OutputFieldOption {\n  fieldName: string;\n  fieldDesc: string;\n  type: FieldType | '';\n  children?: OutputFieldOption[];\n}\n\ntype DropdownTarget = { index: number; field: 'source' | 'target' } | null;\n\nexport interface OutputConfigEditorProps {\n  value: Array<IAgentHelperOutputConfig>;\n  onChange?: (value: Array<IAgentHelperOutputConfig>) => void;\n\n  sourceFields?: OutputParam[];\n  targetFields?: IField[];\n  className?: string;\n}\n\nfunction outputParamsToOptions(params: OutputParam[]): OutputFieldOption[] {\n  return params.map(p => ({\n    fieldName: p.name,\n    fieldDesc: p.description || p.name,\n    type: p.type,\n    children: p.subformParams?.map(s => ({\n      fieldName: s.name,\n      fieldDesc: s.name,\n      type: s.type,\n    })),\n  }));\n}\n\nfunction fieldsToOptions(fields: IField[]): OutputFieldOption[] {\n  return fields.map(f => {\n    const subformItems = f.widget.items?.filter(\n      (item): item is ISubformField => 'widget' in item\n    );\n    return {\n      fieldName: f.widget.widgetName,\n      fieldDesc: f.label,\n      type: f.widget.type,\n      children: subformItems?.length ? subformItems.map(s => ({\n        fieldName: `${f.widget.widgetName}.${s.widget.widgetName}`,\n        fieldDesc: `${s.label}`,\n        type: s.widget.type,\n      })) : undefined,\n    };\n  });\n}\n\nfunction flattenSourceFields(fields: OutputFieldOption[]): OutputFieldOption[] {\n  const result: OutputFieldOption[] = [];\n  for (const field of fields) {\n    result.push(field);\n    if (field.children) {\n      for (const child of field.children) {\n        result.push({\n          ...child,\n          fieldName: `${field.fieldName}.${child.fieldName}`,\n          fieldDesc: `${field.fieldDesc}.${child.fieldDesc}`,\n        });\n      }\n    }\n  }\n  return result;\n}\n\nexport function OutputConfigEditor({ value, onChange, sourceFields, targetFields, className }: OutputConfigEditorProps) {\n  const [dropdownTarget, setDropdownTarget] = useState<DropdownTarget>(null);\n  const [searchText, setSearchText] = useState('');\n  const [collapsedParents, setCollapsedParents] = useState<Set<string>>(new Set());\n\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-output-config-portal');\n\n  const sourceOptions = sourceFields ? outputParamsToOptions(sourceFields) : [];\n  const targetOptions = targetFields ? fieldsToOptions(targetFields) : [];\n\n  const handleDropdownOpenChange = useCallback((index: number, field: 'source' | 'target', open: boolean) => {\n    if (open) {\n      setDropdownTarget({ index, field });\n      setSearchText('');\n      setCollapsedParents(new Set());\n    } else {\n      setDropdownTarget(null);\n      setSearchText('');\n      setCollapsedParents(new Set());\n    }\n  }, []);\n\n  const handleAdd = useCallback(() => {\n    onChange?.([...value, { sourceField: { fieldName: '', fieldDesc: '' }, targetField: { fieldName: '', fieldDesc: '' } }]);\n  }, [value, onChange]);\n\n  const handleDelete = useCallback((index: number) => {\n    onChange?.(value.filter((_, i) => i !== index));\n  }, [value, onChange]);\n\n  const handleSelectSourceField = useCallback((index: number, field: OutputFieldOption) => {\n    const newValue = [...value];\n    newValue[index] = { ...newValue[index], sourceField: { fieldName: field.fieldName, fieldDesc: field.fieldDesc } };\n    onChange?.(newValue);\n    setDropdownTarget(null);\n    setSearchText('');\n  }, [value, onChange]);\n\n  const handleSelectTargetField = useCallback((index: number, field: OutputFieldOption) => {\n    const newValue = [...value];\n    newValue[index] = { ...newValue[index], targetField: { fieldName: field.fieldName, fieldDesc: field.fieldDesc } };\n    onChange?.(newValue);\n    setDropdownTarget(null);\n    setSearchText('');\n  }, [value, onChange]);\n\n  const toggleParent = useCallback((fieldName: string) => {\n    setCollapsedParents(prev => {\n      const next = new Set(prev);\n      if (next.has(fieldName)) {\n        next.delete(fieldName);\n      } else {\n        next.add(fieldName);\n      }\n      return next;\n    });\n  }, []);\n\n  const matchSearch = (text: string) =>\n    !searchText || text?.toLowerCase().includes(searchText.toLowerCase());\n\n  const filterFields = (fields: OutputFieldOption[]): OutputFieldOption[] =>\n    fields.reduce<OutputFieldOption[]>((acc, f) => {\n      const selfMatches = matchSearch(f.fieldDesc) || matchSearch(f.fieldName);\n      const filteredChildren = f.children ? filterFields(f.children) : [];\n      if (selfMatches || filteredChildren.length > 0) {\n        acc.push({ ...f, children: filteredChildren.length > 0 ? filteredChildren : f.children });\n      }\n      return acc;\n    }, []);\n\n  const flatSourceFields = flattenSourceFields(sourceOptions);\n  const filteredSourceFields = flatSourceFields.filter(\n    f => matchSearch(f.fieldDesc) || matchSearch(f.fieldName)\n  );\n\n  const filteredTargetFields = filterFields(targetOptions);\n\n  const fieldRowCls = cn(\n    'bg-white border border-[#e0e0e0] rounded-[4px] h-[34px] px-[10px] py-[7px]',\n    'flex items-center min-w-0',\n    'text-[14px] text-[#030303] leading-normal',\n    'hover:border-[#0265ff]',\n    transCls,\n  );\n\n  const isDropdownOpen = (index: number, field: 'source' | 'target') =>\n    dropdownTarget?.index === index && dropdownTarget?.field === field;\n\n  if (value.length === 0) {\n    return (\n      <div className={className}>\n        <button\n          type=\"button\"\n          onClick={handleAdd}\n          className={cn(\n            'inline-flex items-center gap-[6px]',\n            'bg-transparent border-0 cursor-pointer p-0',\n            'text-[#0265ff] text-[14px] leading-normal',\n            'hover:opacity-80',\n            transCls,\n          )}\n        >\n          <PlusIcon />\n          <span>添加出参名称</span>\n        </button>\n      </div>\n    );\n  }\n\n  return (\n    <div ref={setTriggerRef} className={cn(\n      'bg-[#f5f5f5] border border-[#e0e0e0] border-dashed rounded-[4px] p-[10px]',\n      'flex flex-col gap-[10px]',\n      className,\n    )}>\n      {value.map((item, index) => (\n        <div key={index} className=\"flex gap-[10px] items-center\">\n          {/* Source field selector (JSON output field) */}\n          <Popover open={isDropdownOpen(index, 'source')} onOpenChange={(open) => handleDropdownOpenChange(index, 'source', open)}>\n            <PopoverTrigger asChild>\n              <button\n                type=\"button\"\n                className={cn(\n                  fieldRowCls,\n                  'w-full justify-between cursor-pointer',\n                  isDropdownOpen(index, 'source') ? 'border-[#0265ff]' : 'border-[#e0e0e0]',\n                )}\n              >\n                <span className=\"text-[14px] text-[#030303] leading-normal truncate\">\n                  {item.sourceField.fieldDesc || <span className=\"text-[#999]\">请选择字段</span>}\n                </span>\n                <CaretIcon className={cn(\n                  'shrink-0 text-[#666]',\n                  isDropdownOpen(index, 'source') && 'rotate-180',\n                  transCls,\n                )} />\n              </button>\n            </PopoverTrigger>\n            <PopoverContent\n              align=\"start\"\n              sideOffset={4}\n              portalContainer={portalContainer}\n              className=\"w-[216px] rounded-[4px] p-[4px] shadow-[0px_0px_16px_0px_rgba(0,0,0,0.1)]\"\n            >\n              <div className=\"relative flex items-center border border-[#e0e0e0] rounded-[4px] mb-[4px]\">\n                <span className=\"absolute left-[10px] top-1/2 -translate-y-1/2\">\n                  <SearchIcon />\n                </span>\n                <input\n                  type=\"text\"\n                  value={searchText}\n                  onChange={e => setSearchText(e.target.value)}\n                  placeholder=\"搜索\"\n                  className={cn(\n                    'w-full h-[34px] pl-[32px] pr-[10px]',\n                    'text-[14px] text-[#030303] leading-normal outline-none',\n                    'bg-transparent border-0 rounded-[4px]',\n                    'placeholder:text-[#999]',\n                  )}\n                />\n              </div>\n              <div className=\"max-h-[210px] overflow-auto\">\n                {filteredSourceFields.map((field) => (\n                  <button\n                    key={field.fieldName}\n                    type=\"button\"\n                    onClick={() => handleSelectSourceField(index, field)}\n                    className={cn(\n                      'flex items-center w-full px-[10px] py-[7px] h-[34px] rounded-[4px]',\n                      'text-[14px] text-[#030303] leading-normal',\n                      'hover:bg-[#EFF0F6] bg-transparent border-0 cursor-pointer',\n                      item.sourceField.fieldDesc === field.fieldDesc && 'bg-[#EFF0F6] text-[#0265ff]',\n                      transCls,\n                    )}\n                  >\n                    <span className=\"truncate\">{field.fieldDesc}</span>\n                  </button>\n                ))}\n                {filteredSourceFields.length === 0 && (\n                  <div className=\"px-[10px] py-[7px] text-[14px] text-[#999] leading-normal\">\n                    无匹配结果\n                  </div>\n                )}\n              </div>\n            </PopoverContent>\n          </Popover>\n\n          {/* \"设置为\" label */}\n          <div className=\"bg-[#d9d9d9] rounded-[4px] h-[34px] w-[98px] shrink-0 flex items-center justify-center\">\n            <span className=\"text-[14px] text-[#030303] leading-normal whitespace-nowrap\">设置为</span>\n          </div>\n\n          {/* Target field selector (Form field) */}\n          <Popover open={isDropdownOpen(index, 'target')} onOpenChange={(open) => handleDropdownOpenChange(index, 'target', open)}>\n            <PopoverTrigger asChild>\n              <button\n                type=\"button\"\n                className={cn(\n                  fieldRowCls,\n                  'w-full justify-between cursor-pointer',\n                  isDropdownOpen(index, 'target') ? 'border-[#0265ff]' : 'border-[#e0e0e0]',\n                )}\n              >\n                <span className=\"text-[14px] text-[#030303] leading-normal truncate\">\n                  {item.targetField.fieldDesc || <span className=\"text-[#999]\">请选择表单字段</span>}\n                </span>\n                <CaretIcon className={cn(\n                  'shrink-0 text-[#666]',\n                  isDropdownOpen(index, 'target') && 'rotate-180',\n                  transCls,\n                )} />\n              </button>\n            </PopoverTrigger>\n            <PopoverContent\n              align=\"start\"\n              sideOffset={4}\n              portalContainer={portalContainer}\n              className=\"w-[216px] rounded-[4px] p-[4px] shadow-[0px_0px_16px_0px_rgba(0,0,0,0.1)]\"\n            >\n              <div className=\"relative flex items-center border border-[#e0e0e0] rounded-[4px] mb-[4px]\">\n                <span className=\"absolute left-[10px] top-1/2 -translate-y-1/2\">\n                  <SearchIcon />\n                </span>\n                <input\n                  type=\"text\"\n                  value={searchText}\n                  onChange={e => setSearchText(e.target.value)}\n                  placeholder=\"搜索\"\n                  className={cn(\n                    'w-full h-[34px] pl-[32px] pr-[10px]',\n                    'text-[14px] text-[#030303] leading-normal outline-none',\n                    'bg-transparent border-0 rounded-[4px]',\n                    'placeholder:text-[#999]',\n                  )}\n                />\n              </div>\n              <div className=\"max-h-[210px] overflow-auto\">\n                {filteredTargetFields.map((field) => {\n                  const isParent = field.children && field.children.length > 0;\n                  const isCollapsed = collapsedParents.has(field.fieldName);\n\n                  return (\n                    <div key={field.fieldName}>\n                      {isParent ? (\n                        <button\n                          type=\"button\"\n                          onClick={() => toggleParent(field.fieldName)}\n                          className={cn(\n                            'flex items-center gap-[6px] w-full px-[10px] py-[7px] h-[34px] rounded-[4px]',\n                            'text-[14px] text-[#030303] leading-normal',\n                            'hover:bg-[#EFF0F6] bg-transparent border-0 cursor-pointer',\n                            transCls,\n                          )}\n                        >\n                          <ExpandArrowIcon className={cn(\n                            'shrink-0 text-[#999]',\n                            !isCollapsed && 'rotate-90',\n                            transCls,\n                          )} />\n                          <span className=\"truncate\">{field.fieldDesc}</span>\n                        </button>\n                      ) : (\n                        <button\n                          type=\"button\"\n                          onClick={() => handleSelectTargetField(index, field)}\n                          className={cn(\n                            'flex items-center w-full px-[10px] py-[7px] h-[34px] rounded-[4px]',\n                            'text-[14px] text-[#030303] leading-normal',\n                            'hover:bg-[#EFF0F6] bg-transparent border-0 cursor-pointer',\n                            item.targetField.fieldDesc === field.fieldDesc && 'bg-[#EFF0F6] text-[#0265ff]',\n                            transCls,\n                          )}\n                        >\n                          <span className=\"truncate\">{field.fieldDesc}</span>\n                        </button>\n                      )}\n                      {isParent && !isCollapsed && field.children!.map((child) => (\n                        <button\n                          key={child.fieldName}\n                          type=\"button\"\n                          onClick={() => handleSelectTargetField(index, child)}\n                          className={cn(\n                            'flex items-center w-full pl-[34px] pr-[10px] py-[7px] h-[34px] rounded-[4px]',\n                            'text-[14px] text-[#030303] leading-normal',\n                            'hover:bg-[#EFF0F6] bg-transparent border-0 cursor-pointer',\n                            item.targetField.fieldDesc === child.fieldDesc && 'bg-[#EFF0F6] text-[#0265ff]',\n                            transCls,\n                          )}\n                        >\n                          <span className=\"truncate\">{child.fieldDesc}</span>\n                        </button>\n                      ))}\n                    </div>\n                  );\n                })}\n                {filteredTargetFields.length === 0 && (\n                  <div className=\"px-[10px] py-[7px] text-[14px] text-[#999] leading-normal\">\n                    无匹配结果\n                  </div>\n                )}\n              </div>\n            </PopoverContent>\n          </Popover>\n\n          {/* Delete button */}\n          <button\n            type=\"button\"\n            onClick={() => handleDelete(index)}\n            className=\"shrink-0 cursor-pointer bg-transparent border-0 p-0\"\n          >\n            <span className=\"inline-flex items-center justify-center size-[16px] text-[#666] hover:text-[#FF4D4F] [&_svg_path]:fill-[#666] [&_svg_path]:hover:fill-[#FF4D4F]\">\n              <TrashIcon />\n            </span>\n          </button>\n        </div>\n      ))}\n\n      <button\n        type=\"button\"\n        onClick={handleAdd}\n        className={cn(\n          'inline-flex items-center gap-[6px] w-fit',\n          'bg-transparent border-0 cursor-pointer p-0',\n          'text-[#0265ff] text-[14px] leading-normal',\n          'hover:opacity-80',\n          transCls,\n        )}\n      >\n        <PlusIcon />\n        <span>添加出参名称</span>\n      </button>\n    </div>\n  );\n}\n","import { ReactNode } from 'react';\nimport { Button, ButtonProps } from './ui/button';\nimport { BotIcon } from './bot-icon';\nimport { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\n\nexport interface PrimaryEntryBtnProps extends ButtonProps {\n  minimal?: boolean;\n  entryVariant?: 'default' | 'ghost' | 'selected' | 'light';\n  icon?: ReactNode;\n}\n\nexport const PrimaryEntryBtn = ({\n  children,\n  className,\n  minimal,\n  entryVariant = 'default',\n  icon,\n  ...rest\n}: PrimaryEntryBtnProps) => {\n  const variantStyles = {\n    // background: linear-gradient(180deg, #267AFF 0%, #B2EEFF 100%);\n    default:\n      \"relative overflow-hidden bg-[linear-gradient(180deg,#DBE9FF_0%,#E9FFFD_100%)] h-[30px] hover:text-white before:content-[''] before:absolute before:inset-0 before:z-0 before:bg-[linear-gradient(180deg,#267AFF_0%,#B2EEFF_100%)] before:opacity-0 hover:before:opacity-100 before:transition-opacity before:duration-200 before:ease-out font-[500] text-[#0265ff]\",\n    ghost: 'bg-transparent text-[#030303] font-[400] px-[10px] hover:bg-[#EFF0F6] h-[34px]',\n    light: 'text-[#030303] font-[400] px-[10px] bg-[#F0F6FF] hover:bg-[#d8dde5] h-[34px]',\n    selected: 'bg-[#EFF0F6] text-[#030303] font-[400] px-[10px]',\n  };\n\n  return (\n    <Button\n      {...rest}\n      variant=\"entry\"\n      size=\"entry\"\n      className={cn(\n        'rounded-[4px] cursor-pointer',\n        transCls,\n        variantStyles[entryVariant],\n        className\n      )}\n    >\n      <span className=\"relative z-10 inline-flex items-center gap-1.5\">\n        {icon ?? <BotIcon />}\n        {minimal ? null : children}\n      </span>\n    </Button>\n  );\n};\n","import { cn } from '../lib/utils';\nimport { transCls } from '../const/ui';\nimport { ScrollArrowDownIcon } from './bs-icons';\n\nexport interface ScrollToBottomProps {\n  onClick?: () => void;\n  className?: string;\n}\n\nexport const ScrollToBottomBtn = ({ onClick, className }: ScrollToBottomProps) => {\n  return (\n    <button\n      type=\"button\"\n      onClick={onClick}\n      className={cn(\n        'inline-flex items-center justify-center',\n        'w-[36px] h-[36px] rounded-full',\n        'bg-white text-[#666] shadow-[0px_0px_14px_0px_rgba(0,0,0,0.1)]',\n        'hover:shadow-[0px_14px_14px_0px_rgba(0,0,0,0.14)]',\n        'cursor-pointer hover:text-[#333] aspect-square',\n        transCls,\n        className\n      )}\n    >\n      <ScrollArrowDownIcon />\n    </button>\n  );\n};\n","import { cn } from '../lib/utils';\n\nexport interface SplitLineProps {\n  className?: string;\n}\n\nexport const SplitLine = ({ className }: SplitLineProps) => {\n  return <div className={cn('h-[1px] w-full bg-[#E0E0E0]', className)} />;\n};\n","import * as React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\n\nimport { cn } from '../lib/utils';\nimport { BsTooltip } from './tooltip';\n\nexport interface TabRadioOption {\n  value: string;\n  label: React.ReactNode;\n  tooltips?: string;\n  className?: string;\n}\n\nexport interface TabRadioGroupProps extends Omit<\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>,\n  'children'\n> {\n  options: TabRadioOption[];\n}\n\nconst TabRadioGroup = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\n  TabRadioGroupProps\n>(({ className, options, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Root\n      ref={ref}\n      className={cn(\n        'flex flex-col items-start justify-center p-[2px] rounded-[4px] bg-[#EFF0F6]',\n        className\n      )}\n      {...props}\n    >\n      <div className=\"flex gap-[2px] items-center w-full\">\n        {options.map((option) => (\n          <TabRadioItem\n            key={option.value}\n            value={option.value}\n            tooltips={option.tooltips}\n            className={option.className}\n          >\n            {option.label}\n          </TabRadioItem>\n        ))}\n      </div>\n    </RadioGroupPrimitive.Root>\n  );\n});\nTabRadioGroup.displayName = 'TabRadioGroup';\n\ninterface TabRadioItemProps extends React.ComponentPropsWithoutRef<\n  typeof RadioGroupPrimitive.Item\n> {\n  children: React.ReactNode;\n  tooltips?: string;\n  className?: string;\n}\n\nconst TabRadioItem = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\n  TabRadioItemProps\n>(({ className, children, tooltips, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        'flex-1 h-[30px] flex items-center justify-center px-[10px] py-[7px] rounded-[4px] text-[14px] text-[#121111] cursor-pointer',\n        'border border-solid border-[#EFF0F6] bg-transparent',\n        'transition-all ease-out duration-200',\n        'outline-none',\n        'hover:text-[#121111] hover:border-[#E0E0E0] hover:bg-white',\n        'data-[state=checked]:text-[#0265FF] data-[state=checked]:border-[#E0E0E0] data-[state=checked]:bg-white',\n        className\n      )}\n      {...props}\n    >\n      {tooltips ? <BsTooltip content={tooltips}>{children}</BsTooltip> : children}\n    </RadioGroupPrimitive.Item>\n  );\n});\nTabRadioItem.displayName = 'TabRadioItem';\n\nexport { TabRadioGroup, TabRadioItem };\n","export interface UserTextMsgBubbleProps {\n  text?: string;\n  children?: string;\n}\n\nexport const UserTextMsgBubble = ({ text, children }: UserTextMsgBubbleProps) => {\n  return (\n    <div\n      className=\"px-2.5 py-[7px] text-[#0265FF] text-[14px] w-fit\"\n      style={{\n        borderRadius: `10px 0 10px 10px`,\n        wordWrap: 'break-word',\n        background: `linear-gradient(180deg, #DBE9FF 0%, #E9FFFD 100%)`,\n      }}\n    >\n      {text || children}\n    </div>\n  );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\ninterface UseResizableWidthOptions {\n  /** 宽度范围 [min, max]，单位 px */\n  range: [number, number];\n  /** 初始宽度，未指定时取 range 上限 */\n  initialWidth?: number;\n  /** 反转拖拽方向：拖拽鼠标向右时宽度减小而非增大 */\n  invertDrag?: boolean;\n}\n\ninterface UseResizableWidthResult {\n  /** 当前宽度 */\n  width: number;\n  /** 拖拽手柄的 onMouseDown 处理器 */\n  handleMouseDown: (e: React.MouseEvent) => void;\n  /** 是否正在拖拽 */\n  isDragging: boolean;\n  /** 是否到达边缘（最小或最大值） */\n  isAtEdge: boolean;\n}\n\n/**\n * 支持通过拖拽调整宽度的 Hook\n * @param options 配置项：宽度范围、初始宽度\n * @returns 当前宽度、拖拽处理器、拖拽状态\n */\nexport const useResizableWidth = ({\n  range,\n  initialWidth,\n  invertDrag,\n}: UseResizableWidthOptions): UseResizableWidthResult => {\n  const [minWidth, maxWidth] = range;\n  const [width, setWidth] = useState<number>(initialWidth ?? maxWidth);\n  const [isDragging, setIsDragging] = useState(false);\n\n  const stateRef = useRef({\n    startX: 0,\n    startWidth: 0,\n  });\n\n  const handleMouseMove = useCallback(\n    (e: MouseEvent) => {\n      const delta = e.clientX - stateRef.current.startX;\n      const adjustedDelta = invertDrag ? -delta : delta;\n      const newWidth = Math.min(\n        Math.max(stateRef.current.startWidth + adjustedDelta, minWidth),\n        maxWidth\n      );\n\n      setWidth(newWidth);\n    },\n    [minWidth, maxWidth, invertDrag]\n  );\n\n  const handleMouseUp = useCallback(() => {\n    setIsDragging(false);\n    document.body.style.userSelect = '';\n    document.removeEventListener('mousemove', handleMouseMove);\n    document.removeEventListener('mouseup', handleMouseUp);\n\n    window.dispatchEvent(new Event('resize'));\n    document.body.style.cursor = ''; // 恢复默认光标\n  }, [handleMouseMove]);\n\n  const handleMouseDown = useCallback(\n    (e: React.MouseEvent) => {\n      setIsDragging(true);\n      stateRef.current = {\n        startX: e.clientX,\n        startWidth: width,\n      };\n      document.body.style.userSelect = 'none';\n      document.addEventListener('mousemove', handleMouseMove);\n      document.addEventListener('mouseup', handleMouseUp);\n\n      document.body.style.cursor = 'col-resize'; // 设置全局拖拽光标\n    },\n    [width, handleMouseMove, handleMouseUp]\n  );\n\n  useEffect(() => {\n    return () => {\n      document.removeEventListener('mousemove', handleMouseMove);\n      document.removeEventListener('mouseup', handleMouseUp);\n      document.body.style.userSelect = '';\n\n      document.body.style.cursor = ''; // 清理光标样式\n    };\n  }, [handleMouseMove, handleMouseUp]);\n\n  const isAtEdge = width === minWidth || width === maxWidth;\n\n  return {\n    width,\n    handleMouseDown,\n    isDragging,\n    isAtEdge,\n  };\n};\n","import { useLayoutEffect, useRef, useState } from 'react';\n\nexport const TRANSITION = {\n  appearing: 'width 300ms cubic-bezier(0.4,0,0.2,1), opacity 250ms cubic-bezier(0.4,0,0.2,1) 100ms',\n  hiding: 'width 350ms cubic-bezier(0.4,0,0.2,1) 60ms, opacity 200ms ease-out',\n  neutral: 'width 350ms cubic-bezier(0.4,0,0.2,1), opacity 200ms ease-out',\n} as const;\n\n/** hiding 场景最长的 transition 耗时 (width 350ms + delay 60ms)，加少量余量用于 transitionend 兜底 */\nexport const TRANSITION_FALLBACK_MS = 500;\n\ninterface UseColumnAppearOptions {\n  /** 当前列是否处于隐藏状态 */\n  hidden: boolean;\n}\n\ninterface UseColumnAppearResult {\n  /** 列是否正在执行 appear (hidden→visible) 动画 */\n  appearing: boolean;\n  /** 附加到列最外层 DOM 元素的 ref，用于监听 transitionend */\n  colRef: React.RefObject<HTMLDivElement>;\n  /** 当前适用的 transition CSS 属性，直接展开到 style={} */\n  getTransitionStyle: React.CSSProperties;\n}\n\nexport const useColumnAppear = ({ hidden }: UseColumnAppearOptions): UseColumnAppearResult => {\n  const [appearing, setAppearing] = useState(false);\n  const prevHiddenRef = useRef<boolean | null>(null);\n  const colRef = useRef<HTMLDivElement>(null);\n\n  // 检测 hidden → visible 转换，触发 appearing\n  useLayoutEffect(() => {\n    if (prevHiddenRef.current === null) {\n      prevHiddenRef.current = hidden;\n      return;\n    }\n    if (prevHiddenRef.current && !hidden) {\n      setAppearing(true);\n    }\n    prevHiddenRef.current = hidden;\n  }, [hidden]);\n\n  // transitionend 监听 + 兜底 timeout 清除 appearing\n  useLayoutEffect(() => {\n    if (!appearing) return;\n    const el = colRef.current;\n    if (!el) return;\n\n    const onTransitionEnd = (e: TransitionEvent) => {\n      if (e.propertyName === 'width') {\n        setAppearing(false);\n      }\n\n      window.dispatchEvent(new Event('resize'));\n    };\n    el.addEventListener('transitionend', onTransitionEnd);\n\n    const fallback = setTimeout(() => setAppearing(false), TRANSITION_FALLBACK_MS);\n\n    return () => {\n      el.removeEventListener('transitionend', onTransitionEnd);\n      clearTimeout(fallback);\n    };\n  }, [appearing]);\n\n  // 计算当前适用的 transition 样式\n  const willChange = hidden || appearing ? ({ willChange: 'width, opacity' } as const) : {};\n  let transitionStyle: React.CSSProperties;\n  if (appearing) {\n    transitionStyle = { transition: TRANSITION.appearing, ...willChange };\n  } else if (hidden) {\n    transitionStyle = { transition: TRANSITION.hiding, ...willChange };\n  } else {\n    transitionStyle = { transition: TRANSITION.neutral };\n  }\n\n  return { appearing, colRef, getTransitionStyle: transitionStyle };\n};\n","import { FC, useCallback, useEffect, useRef } from 'react';\nimport { useResizableWidth } from '../hooks/use-resizable-width';\nimport { useColumnAppear } from '../hooks/use-column-appear';\nimport classNames from 'classnames';\n\nexport type FullScreenPart = 'leftCol' | 'rightCol' | 'none';\n\nexport interface IOfficeContainerProps {\n    headerHeight?: number;\n\n    hideLeftCol?: boolean;\n\n    leftColWidthRange?: [number, number];\n    rightColWidthRange?: [number, number];\n\n    leftColCls?: string;\n    rightColCls?: string;\n\n    leftColHeaderElement?: React.ReactNode;\n    leftColContentElement?: React.ReactNode;\n    rightColHeaderElement?: React.ReactNode;\n    rightColContentElement?: React.ReactNode;\n\n    fullscreenPart?: FullScreenPart;\n\n    children?: React.ReactNode;\n\n    onResize?: (leftColWid: number, rightColWid: number) => void; \n\n    className?: string;\n}\n\n\nexport const OfficeContainer: FC<IOfficeContainerProps> = ({\n    headerHeight = 64,\n    hideLeftCol = false,\n    leftColWidthRange = [360, 500],\n    rightColWidthRange,\n    leftColCls,\n    rightColCls,\n    children,\n    leftColHeaderElement,\n    leftColContentElement,\n    rightColHeaderElement,\n    rightColContentElement,\n    fullscreenPart = 'none',\n    className,\n    onResize,\n}) => {\n    const isRightResizable = !!rightColWidthRange;\n    const activeRange = rightColWidthRange ?? leftColWidthRange;\n\n    const transitioningRef = useRef(false);\n    const mountRef = useRef(true);\n\n    const { width, handleMouseDown, isDragging } = useResizableWidth({\n        range: activeRange,\n        initialWidth: activeRange[0],\n        invertDrag: isRightResizable,\n    });\n\n    const isLeftFullscreen = fullscreenPart === 'leftCol';\n    const isRightFullscreen = fullscreenPart === 'rightCol';\n    const isFullscreen = isLeftFullscreen || isRightFullscreen;\n\n    const leftHidden = hideLeftCol || isRightFullscreen;\n    const rightHidden = isLeftFullscreen;\n\n    // ---- column appear/hide animation ----\n\n    const {\n        colRef: leftColRef,\n        getTransitionStyle: leftTransitionStyle,\n    } = useColumnAppear({ hidden: leftHidden });\n\n    const {\n        colRef: rightColRef,\n        getTransitionStyle: rightTransitionStyle,\n    } = useColumnAppear({ hidden: rightHidden });\n\n    // ---- 列宽计算：始终返回明确像素值，避免 flex 计算宽与 transition 冲突 ----\n\n    const leftColInnerRef = useRef<HTMLDivElement>(null);\n    const rightColInnerRef = useRef<HTMLDivElement>(null);\n\n    const getColWidth = useCallback((col: 'left' | 'right'): number | string => {\n        if (col === 'left') {\n            if (hideLeftCol || isRightFullscreen) return 0;\n            if (isLeftFullscreen) return '100%';\n            if (isRightResizable) {\n                if (leftColInnerRef.current) return leftColInnerRef.current.offsetWidth;\n                return `calc(100% - ${width}px)`;\n            }\n            return width;\n        }\n        // right col\n        if (isLeftFullscreen) return 0;\n        if (isRightFullscreen) return '100%';\n        if (isRightResizable) return width;\n        if (rightColInnerRef.current) return rightColInnerRef.current.offsetWidth;\n        return `calc(100% - ${width}px)`;\n    }, [hideLeftCol, isLeftFullscreen, isRightFullscreen, isRightResizable, width]);\n\n    useEffect(() => {\n        if (!onResize || transitioningRef.current) return;\n        const raf = requestAnimationFrame(() => {\n            const leftW = leftColRef.current?.offsetWidth ?? 0;\n            const rightW = rightColRef.current?.offsetWidth ?? 0;\n            onResize(leftW, rightW);\n        });\n        return () => cancelAnimationFrame(raf);\n    }, [width, fullscreenPart, hideLeftCol, isRightResizable, onResize]);\n\n    // Set guard when fullscreen/hide triggers CSS transitions. Skip mount.\n    useEffect(() => {\n        if (mountRef.current) {\n            mountRef.current = false;\n            return;\n        }\n        transitioningRef.current = true;\n    }, [fullscreenPart, hideLeftCol]);\n\n    // Fire onResize after CSS width transitions complete\n    useEffect(() => {\n        if (!onResize) return;\n\n        let resolved = false;\n        const onWidthTransitionEnd = (e: TransitionEvent) => {\n            if (e.propertyName !== 'width' || resolved) return;\n            resolved = true;\n            transitioningRef.current = false;\n            const leftW = leftColRef.current?.offsetWidth ?? 0;\n            const rightW = rightColRef.current?.offsetWidth ?? 0;\n            onResize(leftW, rightW);\n        };\n\n        const leftEl = leftColRef.current;\n        const rightEl = rightColRef.current;\n\n        leftEl?.addEventListener('transitionend', onWidthTransitionEnd);\n        rightEl?.addEventListener('transitionend', onWidthTransitionEnd);\n\n        const fallback = setTimeout(() => {\n            if (resolved) return;\n            resolved = true;\n            transitioningRef.current = false;\n            const leftW = leftColRef.current?.offsetWidth ?? 0;\n            const rightW = rightColRef.current?.offsetWidth ?? 0;\n            onResize(leftW, rightW);\n        }, 500);\n\n        return () => {\n            leftEl?.removeEventListener('transitionend', onWidthTransitionEnd);\n            rightEl?.removeEventListener('transitionend', onWidthTransitionEnd);\n            clearTimeout(fallback);\n        };\n    }, [fullscreenPart, hideLeftCol, onResize]);\n\n    const borderColorCls = 'border-[#0265fc]';\n\n    // 全屏时补全 shrink-0，确保 width: 100% 或 width: 0 不会被 flex 容器挤压\n    const leftFlexCls = isFullscreen\n        ? 'shrink-0'\n        : isRightResizable\n            ? 'flex-1'\n            : 'shrink-0';\n    const rightFlexCls = isFullscreen\n        ? 'shrink-0'\n        : isRightResizable\n            ? 'shrink-0'\n            : 'flex-1';\n\n    // 滚动条使用 scrollbar-gutter: stable 预留空间，避免 overflow 切换时布局抖动\n    const contentCls = 'flex-1 min-h-0 overflow-auto w-full';\n    const contentStyle: React.CSSProperties = { /*scrollbarGutter: 'stable' */};\n\n    return (\n        <div className={classNames(\"relative h-full w-full flex overflow-hidden\", className)}>\n            {/* fullscreen overlay */}\n            {children && (\n                <div>\n                    {children}\n                </div>\n            )}\n\n            {/* left col */}\n            <div\n                ref={leftColRef}\n                className={classNames(\"h-full flex flex-col relative office-left-col\", leftColCls, leftFlexCls, {\n                    \"pointer-events-none\": hideLeftCol || isRightFullscreen,\n                    \"opacity-0\": hideLeftCol || isRightFullscreen,\n                    \"overflow-hidden\": /* isRightFullscreen */ true,\n                })}\n                style={{ ...leftTransitionStyle, width: getColWidth('left'), ...(isDragging ? { transition: 'none' } : {}) }}\n            >\n                <div\n                    ref={leftColInnerRef}\n                    className=\"shrink-0 w-full overflow-hidden\"\n                    style={{ height: headerHeight, background: '#fff' }}\n                >\n                    {leftColHeaderElement}\n                </div>\n                <div className={contentCls} style={contentStyle}>\n                    {leftColContentElement}\n                </div>\n                {/* resizer */}\n                {!isFullscreen && (\n                    <div\n                        className={classNames(`h-full w-5 cursor-col-resize z-10 flex justify-center group absolute top-0 right-0 hover:border-r hover:${borderColorCls}`, {\n                            [`border-r ${borderColorCls}`]: isDragging,\n                        })}\n                        onMouseDown={handleMouseDown}\n                    />\n                )}\n            </div>\n\n            {/* right col */}\n            <div\n                ref={rightColRef}\n                className={classNames(\"h-full flex flex-col min-w-0 office-right-col\", rightColCls, rightFlexCls, {\n                    \"pointer-events-none\": isLeftFullscreen,\n                    \"opacity-0\": isLeftFullscreen,\n                    \"overflow-hidden\": isLeftFullscreen,\n                })}\n                style={{ ...rightTransitionStyle, width: getColWidth('right'), ...(isDragging ? { transition: 'none' } : {}) }}\n            >\n                <div\n                    ref={rightColInnerRef}\n                    className=\"shrink-0 w-full\"\n                    style={{ height: headerHeight, background: \"#fff\" }}\n                >\n                    {rightColHeaderElement}\n                </div>\n                <div className={contentCls} style={contentStyle}>\n                    {rightColContentElement}\n                </div>\n            </div>\n        </div>\n    );\n};\n","import { cn } from '../lib/utils';\nimport { WarningImgUrl } from '../const/ui';\n\nexport interface WarningMessageProps {\n  message?: string;\n  className?: string;\n}\n\nexport const WarningMessage = ({\n  message = '程序错误，请刷新页面重试',\n  className,\n}: WarningMessageProps) => {\n  return (\n    <div className={cn('flex flex-col items-center gap-[10px]', className)}>\n      <div\n        className=\"bg-no-repeat bg-center\"\n        style={{\n          backgroundImage: WarningImgUrl,\n          backgroundSize: '100% 100%',\n          width: 120,\n          height: 77,\n        }}\n      />\n      <p className=\"text-[12px] text-[#999] leading-normal\">{message}</p>\n    </div>\n  );\n};\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","import { FIELD_ICON_CODE_MAP } from '../const/ui';\nimport { FieldType } from '@baishuyun/types';\nimport { FontIcon } from './font-icon';\nimport { FormulasIcon } from './bs-icons';\n\nexport const FieldIcon = ({ type }: { type: FieldType }) => {\n  const code = FIELD_ICON_CODE_MAP[type] || 'unknown';\n  if (type === 'formula') {\n    return <FormulasIcon />;\n  }\n\n  return <FontIcon code={code} />;\n};\n","import { memo, useEffect, useRef, useState } from 'react';\nimport { type FieldType, IField, type IFieldOption as Option } from '@baishuyun/types';\nimport { FieldTypeNameMap } from '../const/ui';\nimport LineChecker from './line-checker';\nimport { OptionItem } from './option-item';\nimport { FieldIcon } from './field-icon';\n\ntype Field = IField;\n\nexport interface FieldCheckerProps {\n  field: IField;\n  isSubField?: boolean;\n  disabled?: boolean;\n  icon?: React.ReactNode;\n  onChange?: (checked: boolean, field: Field, parentFieldName?: string, index?: number) => void;\n  value?: unknown;\n  checked?: boolean;\n  streaming?: boolean;\n  confirmed?: boolean;\n  onLoaded?: (field: Field) => void;\n}\n\nexport const FieldChecker = memo(\n  ({\n    field,\n    disabled,\n    isSubField,\n    onChange,\n    onLoaded,\n    icon,\n    value,\n    checked,\n    streaming,\n    confirmed,\n  }: FieldCheckerProps) => {\n    const { widget, label } = field;\n    if (!widget) {\n      return null;\n    }\n\n    const { type } = widget;\n\n    const t = type as FieldType;\n\n    if (!FieldTypeNameMap.hasOwnProperty(type)) {\n      return null;\n    }\n\n    const typeDesc = FieldTypeNameMap[t] || FieldTypeNameMap.unknown;\n\n    const isSubForm = type === 'subform';\n\n    const items = isSubForm ? [] : (widget.items as Option[]) || [];\n\n    // --- subform sub-field state management ---\n    const subFields = isSubForm ? (widget.items as Field[]) : [];\n    const [subCheckedMap, setSubCheckedMap] = useState<Record<number, boolean>>(() => {\n      const result: Record<number, boolean> = {};\n      subFields.forEach((_, i) => {\n        result[i] = true;\n      });\n      return result;\n    });\n\n    // When parent checked prop changes from outside, sync all sub-fields\n    const prevChecked = useRef(checked);\n    useEffect(() => {\n      if (isSubForm && checked !== prevChecked.current) {\n        prevChecked.current = checked;\n        if (checked !== undefined) {\n          const result: Record<number, boolean> = {};\n          subFields.forEach((_, i) => {\n            result[i] = checked;\n          });\n          setSubCheckedMap(result);\n        }\n      }\n    }, [checked, isSubForm, subFields.length]);\n\n    const handleSubFieldChange = (subChecked: boolean, subField: Field, index: number) => {\n      setSubCheckedMap((prev) => {\n        const next = { ...prev, [index]: subChecked };\n        // If all sub-fields are now unchecked, uncheck the parent subform\n        const allChecked = Object.values(next).every(Boolean);\n        if (allChecked) {\n          onChange?.(true, field);\n        }\n\n        const allUnchecked = Object.values(next).every((v) => v === false);\n        if (allUnchecked) {\n          onChange?.(false, field);\n        }\n\n        return next;\n      });\n      onChange?.(subChecked, subField, field.widget?.widgetName, index);\n    };\n    // --- end subform state management ---\n\n    useEffect(() => {\n      onLoaded?.(field);\n    }, []);\n\n    const handleCheck = (newChecked: boolean) => {\n      onChange?.(newChecked, field);\n    };\n\n    const extraPadding = isSubField ? 'pl-[38px]' : '';\n\n    // 表单填充\n    if (value) {\n      return (\n        <LineChecker\n          title={label}\n          disabled={disabled}\n          checked={checked}\n          defaultChecked={true}\n          onCheckedChange={handleCheck}\n          icon={icon}\n          className={extraPadding}\n          shortDesc={value as string}\n        />\n      );\n    }\n\n    return (\n      <>\n        <LineChecker\n          streaming={streaming}\n          confirmed={confirmed}\n          title={label}\n          disabled={disabled}\n          checked={checked}\n          defaultChecked={true}\n          onCheckedChange={handleCheck}\n          icon={icon}\n          shortDesc={typeDesc}\n          className={extraPadding}\n          extra={\n            items.length ? (\n              <>\n                {items.map(({ value, text, color }) => (\n                  <OptionItem key={value} color={color ? 'white' : undefined} bgColor={color}>\n                    {text}\n                  </OptionItem>\n                ))}\n              </>\n            ) : null\n          }\n        />\n        {isSubForm\n          ? subFields.map((subField: Field, index: number) => (\n              <FieldChecker\n                confirmed={confirmed}\n                streaming={streaming}\n                key={subField.label}\n                isSubField={true}\n                disabled={disabled}\n                checked={subCheckedMap[index]}\n                field={subField}\n                icon={<FieldIcon type={subField.widget?.type!} />}\n                onChange={(subChecked) => {\n                  handleSubFieldChange(subChecked, subField, index);\n                }}\n              />\n            ))\n          : null}\n      </>\n    );\n  },\n  (p1, p2) => {\n    return (\n      p1.field?.label === p2.field?.label &&\n      p1.disabled === p2.disabled &&\n      p1.checked === p2.checked &&\n      p1.confirmed === p2.confirmed &&\n      p1.streaming === p2.streaming\n    );\n  }\n);\n","import { memo, useCallback, useEffect, useState } from 'react';\nimport { FieldType, IField } from '@baishuyun/types';\nimport { FieldTypeNameMap } from '../const/ui';\nimport { toHumanReadable } from '../lib/utils';\nimport { Collapsible, CollapsibleContent } from './collapsible';\nimport LineChecker from './line-checker';\n\nconst Checker = ({\n  disabled,\n  onCheckedChange,\n\n  label,\n  val,\n  streaming,\n  readonly,\n}: {\n  label: string;\n  val: string;\n  onCheckedChange: (v: boolean) => void;\n  disabled?: boolean;\n  desc: string;\n  readonly?: boolean;\n  streaming?: boolean;\n}) => {\n  return (\n    <LineChecker\n      streaming={streaming}\n      readonly={readonly}\n      title={label}\n      disabled={disabled}\n      defaultChecked={true}\n      onCheckedChange={onCheckedChange}\n      className=\"pl-9\"\n      shortDesc={val}\n    />\n  );\n};\n\nconst SubFieldChecker = memo(\n  ({\n    field,\n    readonly,\n    onCheckedChange,\n    streaming,\n  }: {\n    onCheckedChange: (\n      checked: boolean,\n      field: IField,\n    ) => void;\n    readonly?: boolean;\n    streaming?: boolean;\n    field: IField;\n  }) => {\n    const { widget, label } = field;\n    if (!widget) {\n      return null;\n    }\n\n    const { type, value: v } = widget;\n    const t = type as FieldType;\n    if (!FieldTypeNameMap.hasOwnProperty(t)) {\n      return null;\n    }\n\n    const value = toHumanReadable(v, t);\n\n    const typeDesc = FieldTypeNameMap[t] || FieldTypeNameMap.unknown;\n\n    const handleCheckChange = useCallback(\n      (v: boolean) => {\n        onCheckedChange(v, field);\n      },\n      [field]\n    );\n\n    useEffect(() => {\n      // 默认勾选上\n      handleCheckChange(true);\n    }, []);\n\n    return (\n      <Checker\n        streaming={streaming}\n        readonly={readonly}\n        desc={typeDesc}\n        label={label}\n        val={value as string}\n        onCheckedChange={handleCheckChange}\n      />\n    );\n  },\n  (p1, p2) => {\n    const isNameEqual =\n      p1.field.widget?.widgetName === p2.field.widget?.widgetName &&\n      p1.readonly === p2.readonly &&\n      p1.streaming === p2.streaming;\n    return isNameEqual;\n  }\n);\n\ntype F = IField;\n\ninterface generatedField {\n  label: string;\n  fieldName: string;\n  fieldType: FieldType;\n  value: any;\n}\n\ntype onSubformFieldChangeParam = {\n  checked: boolean;\n  field: F;\n  parentFieldName: string;\n  row?: number;\n  col?: number;\n};\n\n/**\n * 专门渲染子表单下的字段勾选\n */\nexport const SubformFieldsValueChecker = ({\n  subformField,\n  onChange,\n  streaming,\n  readonly,\n}: {\n  onChange: (p: onSubformFieldChangeParam) => void;\n  subformField: IField;\n  streaming?: boolean;\n  readonly?: boolean;\n}) => {\n  const subformValue = subformField.widget?.value;\n  if (!Array.isArray(subformValue) || subformValue.length === 0) {\n    return null;\n  }\n\n  const subformRecords = subformValue as generatedField[][];\n\n  // 默认展开\n  const [openAll, setOpenAll] = useState(true);\n\n  return (\n    <Collapsible open={openAll} onOpenChange={setOpenAll}>\n      <CollapsibleContent>\n        {subformRecords.map((rowData: generatedField[], row: number) => {\n          if (!rowData || !rowData.length) {\n            return null;\n          }\n          return (\n            <Collapsible defaultOpen={true} key={row}>\n              <CollapsibleContent>\n                {rowData.map((fData: generatedField, col: number) => {\n                  return (\n                    <SubFieldChecker\n                      readonly={readonly}\n                      streaming={streaming}\n                      field={{\n                        label: fData.label,\n                        widget: {\n                          widgetName: fData.fieldName,\n                          type: fData.fieldType,\n                          value: fData.value,\n                        },\n                      }}\n                      onCheckedChange={(checked: boolean, field: F) => {\n                        onChange({\n                          checked,\n                          field,\n                          row,\n                          col,\n                          parentFieldName: subformField.widget?.widgetName ?? \"\",\n                        });\n                      }}\n                    />\n                  );\n                })}\n              </CollapsibleContent>\n            </Collapsible>\n          );\n        })}\n      </CollapsibleContent>\n    </Collapsible>\n  );\n};\n","import { memo, useEffect } from 'react';\nimport { FieldType, IField } from '@baishuyun/types';\nimport { FieldTypeNameMap } from '../const/ui';\nimport { isSubformFieldEqual, toHumanReadable } from '../lib/utils';\nimport { SubformFieldsValueChecker } from './subform-fields-value-checker';\nimport LineChecker from './line-checker';\n\ntype Field = IField;\n\nexport interface FieldValueCheckerProps {\n  field: IField;\n  isSubField?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  onChange?: (checked: boolean, field: Field, parentFieldName?: string, index?: number) => void;\n  onLoaded?: (field: Field) => void;\n  streaming?: boolean;\n}\n\nexport const FieldValueChecker = memo(\n  ({\n    field,\n    disabled,\n    isSubField,\n    readonly,\n    streaming,\n    onChange,\n    onLoaded,\n  }: FieldValueCheckerProps) => {\n    const { widget, label } = field;\n    if (!widget) {\n      return null;\n    }\n\n    const { type, value: v } = widget;\n\n    const t = type as FieldType;\n\n    const value = toHumanReadable(v, t);\n\n    if (!FieldTypeNameMap.hasOwnProperty(type)) {\n      return null;\n    }\n\n    const isSubForm = type === 'subform';\n\n    useEffect(() => {\n      onLoaded?.(field);\n    }, []);\n\n    const handleCheck = (checked: boolean) => {\n      onChange?.(checked, field);\n    };\n\n    const extraPadding = isSubField ? 'pl-6' : '';\n\n    return (\n      <>\n        <LineChecker\n          streaming={streaming}\n          title={label}\n          disabled={disabled}\n          defaultChecked={true}\n          onCheckedChange={handleCheck}\n          className={extraPadding}\n          readonly={readonly}\n          shortDesc={isSubForm ? '' : (value as string)}\n        />\n        {isSubForm && (\n          <SubformFieldsValueChecker\n            readonly={readonly}\n            subformField={field}\n            onChange={(detail) => {\n              onChange?.(detail.checked, detail.field, detail.parentFieldName, detail.row);\n            }}\n            streaming={streaming}\n          />\n        )}\n      </>\n    );\n  },\n  (p1, p2) => {\n    // 标签一致\n    const isLabelEqual = p1.field?.label === p2.field?.label;\n    if (!isLabelEqual) {\n      return false;\n    }\n\n    // id 一致\n    const isFieldNameEqual = p1.field?.widget?.widgetName === p2.field?.widget?.widgetName;\n    if (!isFieldNameEqual) {\n      return false;\n    }\n\n    // 禁用状态一致\n    const isDisabledEqual = p1.disabled === p2.disabled;\n    if (!isDisabledEqual) {\n      return false;\n    }\n\n    // 只读状态一致\n    const isReadonlyEqual = p1.readonly === p2.readonly;\n    if (!isReadonlyEqual) {\n      return false;\n    }\n\n    // 流式状态一致\n    const isStreamingEqual = p1.streaming === p2.streaming;\n    if (!isStreamingEqual) {\n      return false;\n    }\n\n    // 进一步比较子表单下的字段\n    return isSubformFieldEqual(p1?.field, p2?.field);\n  }\n);\n","import {\n  forwardRef,\n  memo,\n  ReactNode,\n  useCallback,\n  useImperativeHandle,\n  useMemo,\n  useState,\n} from 'react';\nimport { CollapsibleTxtMsg } from './collapsible-txt-msg';\nimport { FieldChecker, FieldCheckerProps } from './field-checker';\nimport { EditIcon, LetterAIcon } from './bs-icons';\nimport { FieldValueChecker, FieldValueCheckerProps } from './field-value-checker';\nimport { SquareChecker } from './square-checker';\nimport { cn } from '../lib/utils';\n\nexport interface FieldCheckerListMsgRef {\n  getCheckedFieldsLength: () => number;\n}\n\nexport const FieldCheckerListMsg = memo(\n  forwardRef<\n    FieldCheckerListMsgRef,\n    {\n      fields: Array<FieldCheckerProps>;\n      children?: ReactNode;\n      streaming: boolean;\n      confirmed?: boolean;\n    }\n  >(({ fields, children, streaming, confirmed }, ref) => {\n    // Track individual field checked states (all default to true)\n    const [checkedMap, setCheckedMap] = useState<Record<string, boolean>>(() => {\n      const map: Record<string, boolean> = {};\n      fields.forEach((f) => {\n        map[f.field?.label ?? ''] = true;\n      });\n      return map;\n    });\n\n    const allChecked = useMemo(\n      () => fields.length > 0 && fields.every((f) => checkedMap[f.field?.label ?? ''] !== false),\n      [checkedMap, fields]\n    );\n\n    const someChecked = useMemo(\n      () => fields.some((f) => checkedMap[f.field?.label ?? ''] !== false),\n      [checkedMap, fields]\n    );\n\n    const intermediate = streaming || (!allChecked && someChecked);\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        getCheckedFieldsLength: () =>\n          fields.filter((f) => checkedMap[f.field?.label ?? ''] !== false).length,\n      }),\n      [checkedMap, fields]\n    );\n\n    const handleToggleAll = useCallback(\n      (checked: boolean | 'indeterminate') => {\n        const value = checked === true;\n        const newMap: Record<string, boolean> = {};\n        fields.forEach((f) => {\n          newMap[f.field?.label ?? ''] = value;\n        });\n        setCheckedMap(newMap);\n        fields.forEach((f) => f.onChange?.(value, f.field));\n      },\n      [fields]\n    );\n\n    return (\n      <CollapsibleTxtMsg title=\"字段生成\" icon={<LetterAIcon />} defaultOpen>\n        {\n          <div\n            className={cn(\n              'flex gap-2.5 px-4 py-2.5 rounded-[4px] w-full transition-colors cursor-pointer hover:bg-[#EFF0F6] items-center',\n              {\n                'pointer-events-none': confirmed || streaming,\n              }\n            )}\n            onClick={() => {\n              if (confirmed) {\n                return;\n              }\n\n              const newChecked = !allChecked;\n              handleToggleAll(newChecked);\n            }}\n          >\n            <SquareChecker\n              readonly={confirmed || streaming}\n              checked={allChecked && !streaming}\n              onCheckedChange={handleToggleAll}\n              intermediate={intermediate}\n            >\n              <span className=\"text-[#0265ff]! font-bold!\">全选</span>\n            </SquareChecker>\n          </div>\n        }\n        {fields.map((f) => (\n          <FieldChecker\n            {...f}\n            key={f.field?.label}\n            checked={checkedMap[f.field?.label ?? '']}\n            streaming={streaming}\n            confirmed={confirmed}\n            onChange={(checked, field, parentFieldName, index) => {\n              const isSubField = index !== undefined && parentFieldName !== undefined;\n              if (!isSubField) {\n                setCheckedMap((prev) => ({ ...prev, [f.field?.label ?? '']: checked }));\n              }\n              f.onChange?.(checked, field, parentFieldName, index);\n            }}\n          />\n        ))}\n        {children}\n      </CollapsibleTxtMsg>\n    );\n  })\n);\n\nexport const FieldValueCheckerListMsg = memo(\n  ({\n    props,\n    readonly,\n    children,\n    streaming,\n  }: {\n    props: Array<FieldValueCheckerProps>;\n    children?: ReactNode;\n    readonly?: boolean;\n    streaming?: boolean;\n  }) => {\n    return (\n      <CollapsibleTxtMsg title=\"字段填写\" icon={<EditIcon />} defaultOpen>\n        {props.map((f) => (\n          <FieldValueChecker {...f} readonly={readonly} streaming={streaming} />\n        ))}\n        {children}\n      </CollapsibleTxtMsg>\n    );\n  }\n);\n","import { cn } from '../../../lib/utils';\n\n// ── Shared SVG Icons for FieldValueInput ────────────────────────────\n\nexport const DropdownChevron = ({ open }: { open: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0 transition-transform duration-200')}\n    style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n  >\n    <path d=\"M4 6L8 10L12 6\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\nexport const ClearIcon = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M3 3L11 11M11 3L3 11\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nexport const UploadIcon = () => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M8 10.5V2M4 6L8 2L12 6\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    <path d=\"M2 11V12.5C2 13.3284 2.67157 14 3.5 14H12.5C13.3284 14 14 13.3284 14 12.5V11\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nexport const CloseIcon = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M3 3L9 9M9 3L3 9\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nexport const CheckIcon = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M2 7L5.5 10.5L12 3.5\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n","import { useState, useRef, useCallback } from 'react';\nimport type { FieldValueInputProps } from './index';\nimport { FieldWrapper } from './index';\nimport { UploadIcon } from './icons';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { DateInput } from '../date-picker/date-input';\nimport type { DateFormat } from '../date-picker/types';\n\nconst inputBaseCls =\n  'h-[34px] px-[10px] py-[7px] rounded-[4px] bg-white border text-[14px] text-[#030303] placeholder:text-[#999999] focus:outline-none focus:border-[#0265FF] w-full disabled:bg-[#EFF0F6] disabled:cursor-not-allowed';\n\n// ── TextInput ───────────────────────────────────────────────────────\n\nexport function TextInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <input\n        type=\"text\"\n        value={typeof value === 'string' ? value : ''}\n        onChange={(e) => onChange?.(e.target.value)}\n        disabled={disabled}\n        placeholder={field.description ?? `请输入${field.label}`}\n        className={inputBaseCls}\n      />\n    </FieldWrapper>\n  );\n}\n\n// ── NumberInput ─────────────────────────────────────────────────────\n\nexport function NumberInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <input\n        type=\"number\"\n        value={typeof value === 'number' || typeof value === 'string' ? value : ''}\n        onChange={(e) => {\n          const v = e.target.value;\n          onChange?.(v === '' ? '' : Number(v));\n        }}\n        disabled={disabled}\n        placeholder={field.description ?? `请输入${field.label}`}\n        className={inputBaseCls}\n      />\n    </FieldWrapper>\n  );\n}\n\n// ── TextareaInput ───────────────────────────────────────────────────\n\nexport function TextareaInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <textarea\n        value={typeof value === 'string' ? value : ''}\n        onChange={(e) => onChange?.(e.target.value)}\n        disabled={disabled}\n        placeholder={field.description ?? `请输入${field.label}`}\n        rows={3}\n        className={cn(inputBaseCls, 'h-auto min-h-[68px] resize-y')}\n      />\n    </FieldWrapper>\n  );\n}\n\n// ── PasswordInput ───────────────────────────────────────────────────\n\nexport function PasswordInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  const [show, setShow] = useState(false);\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <div className=\"relative\">\n        <input\n          type={show ? 'text' : 'password'}\n          value={typeof value === 'string' ? value : ''}\n          onChange={(e) => onChange?.(e.target.value)}\n          disabled={disabled}\n          placeholder={field.description ?? `请输入${field.label}`}\n          className={cn(inputBaseCls, 'pr-[36px]')}\n        />\n        <button\n          type=\"button\"\n          onClick={() => setShow(!show)}\n          className=\"absolute right-[8px] top-1/2 -translate-y-1/2 text-[#999999] text-[12px] hover:text-[#666666]\"\n        >\n          {show ? '隐藏' : '显示'}\n        </button>\n      </div>\n    </FieldWrapper>\n  );\n}\n\n// ── DateTimeInput ───────────────────────────────────────────────────\n\nexport function DateTimeInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  const format: DateFormat = ((field.widget as unknown as Record<string, unknown> | undefined))?.format as DateFormat || 'yyyy-MM-dd';\n  const dateValue = typeof value === 'string' && value ? new Date(value) : undefined;\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <DateInput\n        value={dateValue}\n        onChange={(date) => onChange?.(date ? date.toISOString() : '')}\n        format={format}\n        disabled={disabled}\n      />\n    </FieldWrapper>\n  );\n}\n\n// ── RangeNumberInput ─────────────────────────────────────────────────\n\nexport function RangeNumberInput({ value, onChange, disabled }: FieldValueInputProps) {\n  const rangeValue = (value && typeof value === 'object' && !Array.isArray(value)\n    ? value\n    : { min: undefined, max: undefined }) as { min?: number; max?: number };\n\n  return (\n    <div className=\"flex items-center gap-[8px]\">\n      <input\n        type=\"number\"\n        value={rangeValue.min != null ? rangeValue.min : ''}\n        onChange={(e) => {\n          const v = e.target.value;\n          onChange?.({ ...rangeValue, min: v === '' ? undefined : Number(v) });\n        }}\n        disabled={disabled}\n        placeholder=\"最小值\"\n        className={cn(inputBaseCls, 'flex-1')}\n      />\n      <span className=\"text-[#999] text-[14px] shrink-0\">~</span>\n      <input\n        type=\"number\"\n        value={rangeValue.max != null ? rangeValue.max : ''}\n        onChange={(e) => {\n          const v = e.target.value;\n          onChange?.({ ...rangeValue, max: v === '' ? undefined : Number(v) });\n        }}\n        disabled={disabled}\n        placeholder=\"最大值\"\n        className={cn(inputBaseCls, 'flex-1')}\n      />\n    </div>\n  );\n}\n\n// ── RangeDateTimeInput ───────────────────────────────────────────────\n\nexport function RangeDateTimeInput({ value, onChange, disabled }: FieldValueInputProps) {\n  const rangeValue = (value && typeof value === 'object' && !Array.isArray(value)\n    ? value\n    : { min: undefined, max: undefined }) as { min?: string; max?: string };\n\n  const minDate = rangeValue.min ? new Date(rangeValue.min) : undefined;\n  const maxDate = rangeValue.max ? new Date(rangeValue.max) : undefined;\n\n  return (\n    <div className=\"flex items-center gap-[8px]\">\n      <DateInput\n        value={minDate}\n        onChange={(date) => onChange?.({ ...rangeValue, min: date ? date.toISOString() : undefined })}\n        format=\"yyyy-MM-dd\"\n        placeholder=\"开始日期\"\n        disabled={disabled}\n        className=\"flex-1\"\n      />\n      <span className=\"text-[#999] text-[14px] shrink-0\">~</span>\n      <DateInput\n        value={maxDate}\n        onChange={(date) => onChange?.({ ...rangeValue, max: date ? date.toISOString() : undefined })}\n        format=\"yyyy-MM-dd\"\n        placeholder=\"结束日期\"\n        disabled={disabled}\n        className=\"flex-1\"\n      />\n    </div>\n  );\n}\n\n// ── UploadInput ─────────────────────────────────────────────────────\n\nexport function UploadInput({ field, value, onChange, disabled, service, showLabel, showDescription }: FieldValueInputProps) {\n  const [uploading, setUploading] = useState(false);\n  const fileRef = useRef<HTMLInputElement>(null);\n\n  const handleFileChange = useCallback(\n    async (e: React.ChangeEvent<HTMLInputElement>) => {\n      const file = e.target.files?.[0];\n      if (!file) return;\n      if (service?.uploadFile) {\n        setUploading(true);\n        try {\n          const result = await service.uploadFile(file);\n          onChange?.({ url: result.url, name: result.name });\n        } finally {\n          setUploading(false);\n        }\n      } else {\n        onChange?.(file);\n      }\n    },\n    [onChange, service],\n  );\n\n  const currentFileName =\n    value && typeof value === 'object' && 'name' in (value as Record<string, unknown>)\n      ? (value as { name: string }).name\n      : value instanceof File\n        ? value.name\n        : null;\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <div className=\"flex items-center gap-[8px]\">\n        <button\n          type=\"button\"\n          disabled={disabled || uploading}\n          onClick={() => fileRef.current?.click()}\n          className={cn(\n            'inline-flex items-center gap-[6px] h-[34px] px-[14px] rounded-[4px] text-[14px]',\n            'bg-[#F0F6FF] text-[#0265FF] border border-[#0265FF]',\n            transCls,\n            'hover:bg-[#E0EEFF]',\n            (disabled || uploading) && 'opacity-50 cursor-not-allowed',\n          )}\n        >\n          <UploadIcon />\n          {uploading ? '上传中...' : '上传文件'}\n        </button>\n        {currentFileName && (\n          <span className=\"text-[14px] text-[#030303] truncate\">{currentFileName}</span>\n        )}\n        <input\n          ref={fileRef}\n          type=\"file\"\n          onChange={handleFileChange}\n          className=\"hidden\"\n          accept={field.widget?.type === 'image' ? 'image/*' : undefined}\n        />\n      </div>\n    </FieldWrapper>\n  );\n}\n","// Auto-generated from china.js CDN data\n// Type: Record<province, Record<city, district[]>>\nexport const chinaAddressData: Record<string, Record<string, string[]>> = {\n  \"北京市\": {\n    \"北京市\": [\n      \"东城区\",\n      \"西城区\",\n      \"朝阳区\",\n      \"丰台区\",\n      \"石景山区\",\n      \"海淀区\",\n      \"门头沟区\",\n      \"房山区\",\n      \"通州区\",\n      \"顺义区\",\n      \"昌平区\",\n      \"大兴区\",\n      \"怀柔区\",\n      \"平谷区\",\n      \"密云区\",\n      \"延庆区\"\n    ]\n  },\n  \"天津市\": {\n    \"天津市\": [\n      \"和平区\",\n      \"河东区\",\n      \"河西区\",\n      \"南开区\",\n      \"河北区\",\n      \"红桥区\",\n      \"东丽区\",\n      \"西青区\",\n      \"津南区\",\n      \"北辰区\",\n      \"武清区\",\n      \"宝坻区\",\n      \"滨海新区\",\n      \"宁河区\",\n      \"静海区\",\n      \"蓟州区\"\n    ]\n  },\n  \"河北省\": {\n    \"石家庄市\": [\n      \"长安区\",\n      \"桥西区\",\n      \"新华区\",\n      \"井陉矿区\",\n      \"裕华区\",\n      \"藁城区\",\n      \"鹿泉区\",\n      \"栾城区\",\n      \"井陉县\",\n      \"正定县\",\n      \"行唐县\",\n      \"灵寿县\",\n      \"高邑县\",\n      \"深泽县\",\n      \"赞皇县\",\n      \"无极县\",\n      \"平山县\",\n      \"元氏县\",\n      \"赵县\",\n      \"辛集市\",\n      \"晋州市\",\n      \"新乐市\"\n    ],\n    \"唐山市\": [\n      \"路南区\",\n      \"路北区\",\n      \"古冶区\",\n      \"开平区\",\n      \"丰南区\",\n      \"丰润区\",\n      \"曹妃甸区\",\n      \"滦南县\",\n      \"乐亭县\",\n      \"迁西县\",\n      \"玉田县\",\n      \"遵化市\",\n      \"迁安市\",\n      \"滦州市\"\n    ],\n    \"秦皇岛市\": [\n      \"海港区\",\n      \"山海关区\",\n      \"北戴河区\",\n      \"抚宁区\",\n      \"青龙满族自治县\",\n      \"昌黎县\",\n      \"卢龙县\"\n    ],\n    \"邯郸市\": [\n      \"邯山区\",\n      \"丛台区\",\n      \"复兴区\",\n      \"峰峰矿区\",\n      \"肥乡区\",\n      \"永年区\",\n      \"临漳县\",\n      \"成安县\",\n      \"大名县\",\n      \"涉县\",\n      \"磁县\",\n      \"邱县\",\n      \"鸡泽县\",\n      \"广平县\",\n      \"馆陶县\",\n      \"魏县\",\n      \"曲周县\",\n      \"武安市\",\n      \"邯郸经济技术开发区\",\n      \"邯郸冀南新区\"\n    ],\n    \"邢台市\": [\n      \"桥东区\",\n      \"桥西区\",\n      \"邢台县\",\n      \"临城县\",\n      \"内丘县\",\n      \"柏乡县\",\n      \"隆尧县\",\n      \"任县\",\n      \"南和县\",\n      \"宁晋县\",\n      \"巨鹿县\",\n      \"新河县\",\n      \"广宗县\",\n      \"平乡县\",\n      \"威县\",\n      \"清河县\",\n      \"临西县\",\n      \"南宫市\",\n      \"沙河市\"\n    ],\n    \"保定市\": [\n      \"竞秀区\",\n      \"莲池区\",\n      \"满城区\",\n      \"清苑区\",\n      \"徐水区\",\n      \"涞水县\",\n      \"阜平县\",\n      \"定兴县\",\n      \"唐县\",\n      \"高阳县\",\n      \"容城县\",\n      \"涞源县\",\n      \"望都县\",\n      \"安新县\",\n      \"易县\",\n      \"曲阳县\",\n      \"蠡县\",\n      \"顺平县\",\n      \"博野县\",\n      \"雄县\",\n      \"涿州市\",\n      \"定州市\",\n      \"安国市\",\n      \"高碑店市\"\n    ],\n    \"张家口市\": [\n      \"桥东区\",\n      \"桥西区\",\n      \"宣化区\",\n      \"下花园区\",\n      \"万全区\",\n      \"崇礼区\",\n      \"张北县\",\n      \"康保县\",\n      \"沽源县\",\n      \"尚义县\",\n      \"蔚县\",\n      \"阳原县\",\n      \"怀安县\",\n      \"怀来县\",\n      \"涿鹿县\",\n      \"赤城县\"\n    ],\n    \"承德市\": [\n      \"双桥区\",\n      \"双滦区\",\n      \"鹰手营子矿区\",\n      \"承德县\",\n      \"兴隆县\",\n      \"滦平县\",\n      \"隆化县\",\n      \"丰宁满族自治县\",\n      \"宽城满族自治县\",\n      \"围场满族蒙古族自治县\",\n      \"平泉市\"\n    ],\n    \"沧州市\": [\n      \"新华区\",\n      \"运河区\",\n      \"沧县\",\n      \"青县\",\n      \"东光县\",\n      \"海兴县\",\n      \"盐山县\",\n      \"肃宁县\",\n      \"南皮县\",\n      \"吴桥县\",\n      \"献县\",\n      \"孟村回族自治县\",\n      \"泊头市\",\n      \"任丘市\",\n      \"黄骅市\",\n      \"河间市\"\n    ],\n    \"廊坊市\": [\n      \"安次区\",\n      \"广阳区\",\n      \"固安县\",\n      \"永清县\",\n      \"香河县\",\n      \"大城县\",\n      \"文安县\",\n      \"大厂回族自治县\",\n      \"霸州市\",\n      \"三河市\",\n      \"廊坊经济技术开发区\"\n    ],\n    \"衡水市\": [\n      \"桃城区\",\n      \"冀州区\",\n      \"枣强县\",\n      \"武邑县\",\n      \"武强县\",\n      \"饶阳县\",\n      \"安平县\",\n      \"故城县\",\n      \"景县\",\n      \"阜城县\",\n      \"深州市\"\n    ]\n  },\n  \"山西省\": {\n    \"太原市\": [\n      \"小店区\",\n      \"迎泽区\",\n      \"杏花岭区\",\n      \"尖草坪区\",\n      \"万柏林区\",\n      \"晋源区\",\n      \"清徐县\",\n      \"阳曲县\",\n      \"娄烦县\",\n      \"古交市\"\n    ],\n    \"大同市\": [\n      \"新荣区\",\n      \"平城区\",\n      \"云冈区\",\n      \"云州区\",\n      \"阳高县\",\n      \"天镇县\",\n      \"广灵县\",\n      \"灵丘县\",\n      \"浑源县\",\n      \"左云县\"\n    ],\n    \"阳泉市\": [\n      \"城区\",\n      \"矿区\",\n      \"郊区\",\n      \"平定县\",\n      \"盂县\"\n    ],\n    \"长治市\": [\n      \"潞州区\",\n      \"上党区\",\n      \"屯留区\",\n      \"潞城区\",\n      \"襄垣县\",\n      \"平顺县\",\n      \"黎城县\",\n      \"壶关县\",\n      \"长子县\",\n      \"武乡县\",\n      \"沁县\",\n      \"沁源县\"\n    ],\n    \"晋城市\": [\n      \"城区\",\n      \"沁水县\",\n      \"阳城县\",\n      \"陵川县\",\n      \"泽州县\",\n      \"高平市\"\n    ],\n    \"朔州市\": [\n      \"朔城区\",\n      \"平鲁区\",\n      \"山阴县\",\n      \"应县\",\n      \"右玉县\",\n      \"怀仁市\"\n    ],\n    \"晋中市\": [\n      \"榆次区\",\n      \"太谷区\",\n      \"榆社县\",\n      \"左权县\",\n      \"和顺县\",\n      \"昔阳县\",\n      \"寿阳县\",\n      \"祁县\",\n      \"平遥县\",\n      \"灵石县\",\n      \"介休市\"\n    ],\n    \"运城市\": [\n      \"盐湖区\",\n      \"临猗县\",\n      \"万荣县\",\n      \"闻喜县\",\n      \"稷山县\",\n      \"新绛县\",\n      \"绛县\",\n      \"垣曲县\",\n      \"夏县\",\n      \"平陆县\",\n      \"芮城县\",\n      \"永济市\",\n      \"河津市\"\n    ],\n    \"忻州市\": [\n      \"忻府区\",\n      \"定襄县\",\n      \"五台县\",\n      \"代县\",\n      \"繁峙县\",\n      \"宁武县\",\n      \"静乐县\",\n      \"神池县\",\n      \"五寨县\",\n      \"岢岚县\",\n      \"河曲县\",\n      \"保德县\",\n      \"偏关县\",\n      \"原平市\"\n    ],\n    \"临汾市\": [\n      \"尧都区\",\n      \"曲沃县\",\n      \"翼城县\",\n      \"襄汾县\",\n      \"洪洞县\",\n      \"古县\",\n      \"安泽县\",\n      \"浮山县\",\n      \"吉县\",\n      \"乡宁县\",\n      \"大宁县\",\n      \"隰县\",\n      \"永和县\",\n      \"蒲县\",\n      \"汾西县\",\n      \"侯马市\",\n      \"霍州市\"\n    ],\n    \"吕梁市\": [\n      \"离石区\",\n      \"文水县\",\n      \"交城县\",\n      \"兴县\",\n      \"临县\",\n      \"柳林县\",\n      \"石楼县\",\n      \"岚县\",\n      \"方山县\",\n      \"中阳县\",\n      \"交口县\",\n      \"孝义市\",\n      \"汾阳市\"\n    ]\n  },\n  \"内蒙古自治区\": {\n    \"呼和浩特市\": [\n      \"新城区\",\n      \"回民区\",\n      \"玉泉区\",\n      \"赛罕区\",\n      \"土默特左旗\",\n      \"托克托县\",\n      \"和林格尔县\",\n      \"清水河县\",\n      \"武川县\"\n    ],\n    \"包头市\": [\n      \"东河区\",\n      \"昆都仑区\",\n      \"青山区\",\n      \"石拐区\",\n      \"白云鄂博矿区\",\n      \"九原区\",\n      \"土默特右旗\",\n      \"固阳县\",\n      \"达尔罕茂明安联合旗\"\n    ],\n    \"乌海市\": [\n      \"海勃湾区\",\n      \"海南区\",\n      \"乌达区\"\n    ],\n    \"赤峰市\": [\n      \"红山区\",\n      \"元宝山区\",\n      \"松山区\",\n      \"阿鲁科尔沁旗\",\n      \"巴林左旗\",\n      \"巴林右旗\",\n      \"林西县\",\n      \"克什克腾旗\",\n      \"翁牛特旗\",\n      \"喀喇沁旗\",\n      \"宁城县\",\n      \"敖汉旗\"\n    ],\n    \"通辽市\": [\n      \"科尔沁区\",\n      \"科尔沁左翼中旗\",\n      \"科尔沁左翼后旗\",\n      \"开鲁县\",\n      \"库伦旗\",\n      \"奈曼旗\",\n      \"扎鲁特旗\",\n      \"霍林郭勒市\"\n    ],\n    \"鄂尔多斯市\": [\n      \"东胜区\",\n      \"康巴什区\",\n      \"达拉特旗\",\n      \"准格尔旗\",\n      \"鄂托克前旗\",\n      \"鄂托克旗\",\n      \"杭锦旗\",\n      \"乌审旗\",\n      \"伊金霍洛旗\"\n    ],\n    \"呼伦贝尔市\": [\n      \"海拉尔区\",\n      \"扎赉诺尔区\",\n      \"阿荣旗\",\n      \"莫力达瓦达斡尔族自治旗\",\n      \"鄂伦春自治旗\",\n      \"鄂温克族自治旗\",\n      \"陈巴尔虎旗\",\n      \"新巴尔虎左旗\",\n      \"新巴尔虎右旗\",\n      \"满洲里市\",\n      \"牙克石市\",\n      \"扎兰屯市\",\n      \"额尔古纳市\",\n      \"根河市\"\n    ],\n    \"巴彦淖尔市\": [\n      \"临河区\",\n      \"五原县\",\n      \"磴口县\",\n      \"乌拉特前旗\",\n      \"乌拉特中旗\",\n      \"乌拉特后旗\",\n      \"杭锦后旗\"\n    ],\n    \"乌兰察布市\": [\n      \"集宁区\",\n      \"卓资县\",\n      \"化德县\",\n      \"商都县\",\n      \"兴和县\",\n      \"凉城县\",\n      \"察哈尔右翼前旗\",\n      \"察哈尔右翼中旗\",\n      \"察哈尔右翼后旗\",\n      \"四子王旗\",\n      \"丰镇市\"\n    ],\n    \"兴安盟\": [\n      \"乌兰浩特市\",\n      \"阿尔山市\",\n      \"科尔沁右翼前旗\",\n      \"科尔沁右翼中旗\",\n      \"扎赉特旗\",\n      \"突泉县\"\n    ],\n    \"锡林郭勒盟\": [\n      \"二连浩特市\",\n      \"锡林浩特市\",\n      \"阿巴嘎旗\",\n      \"苏尼特左旗\",\n      \"苏尼特右旗\",\n      \"东乌珠穆沁旗\",\n      \"西乌珠穆沁旗\",\n      \"太仆寺旗\",\n      \"镶黄旗\",\n      \"正镶白旗\",\n      \"正蓝旗\",\n      \"多伦县\",\n      \"乌拉盖管委会\"\n    ],\n    \"阿拉善盟\": [\n      \"阿拉善左旗\",\n      \"阿拉善右旗\",\n      \"额济纳旗\"\n    ]\n  },\n  \"辽宁省\": {\n    \"沈阳市\": [\n      \"和平区\",\n      \"沈河区\",\n      \"大东区\",\n      \"皇姑区\",\n      \"铁西区\",\n      \"苏家屯区\",\n      \"浑南区\",\n      \"沈北新区\",\n      \"于洪区\",\n      \"辽中区\",\n      \"康平县\",\n      \"法库县\",\n      \"新民市\"\n    ],\n    \"大连市\": [\n      \"中山区\",\n      \"西岗区\",\n      \"沙河口区\",\n      \"甘井子区\",\n      \"旅顺口区\",\n      \"金州区\",\n      \"普兰店区\",\n      \"长海县\",\n      \"瓦房店市\",\n      \"庄河市\"\n    ],\n    \"鞍山市\": [\n      \"铁东区\",\n      \"铁西区\",\n      \"立山区\",\n      \"千山区\",\n      \"台安县\",\n      \"岫岩满族自治县\",\n      \"海城市\"\n    ],\n    \"抚顺市\": [\n      \"新抚区\",\n      \"东洲区\",\n      \"望花区\",\n      \"顺城区\",\n      \"抚顺县\",\n      \"新宾满族自治县\",\n      \"清原满族自治县\"\n    ],\n    \"本溪市\": [\n      \"平山区\",\n      \"溪湖区\",\n      \"明山区\",\n      \"南芬区\",\n      \"本溪满族自治县\",\n      \"桓仁满族自治县\"\n    ],\n    \"丹东市\": [\n      \"元宝区\",\n      \"振兴区\",\n      \"振安区\",\n      \"宽甸满族自治县\",\n      \"东港市\",\n      \"凤城市\"\n    ],\n    \"锦州市\": [\n      \"古塔区\",\n      \"凌河区\",\n      \"太和区\",\n      \"黑山县\",\n      \"义县\",\n      \"凌海市\",\n      \"北镇市\"\n    ],\n    \"营口市\": [\n      \"站前区\",\n      \"西市区\",\n      \"鲅鱼圈区\",\n      \"老边区\",\n      \"盖州市\",\n      \"大石桥市\"\n    ],\n    \"阜新市\": [\n      \"海州区\",\n      \"新邱区\",\n      \"太平区\",\n      \"清河门区\",\n      \"细河区\",\n      \"阜新蒙古族自治县\",\n      \"彰武县\"\n    ],\n    \"辽阳市\": [\n      \"白塔区\",\n      \"文圣区\",\n      \"宏伟区\",\n      \"弓长岭区\",\n      \"太子河区\",\n      \"辽阳县\",\n      \"灯塔市\"\n    ],\n    \"盘锦市\": [\n      \"双台子区\",\n      \"兴隆台区\",\n      \"大洼区\",\n      \"盘山县\"\n    ],\n    \"铁岭市\": [\n      \"银州区\",\n      \"清河区\",\n      \"铁岭县\",\n      \"西丰县\",\n      \"昌图县\",\n      \"调兵山市\",\n      \"开原市\"\n    ],\n    \"朝阳市\": [\n      \"双塔区\",\n      \"龙城区\",\n      \"朝阳县\",\n      \"建平县\",\n      \"喀喇沁左翼蒙古族自治县\",\n      \"北票市\",\n      \"凌源市\"\n    ],\n    \"葫芦岛市\": [\n      \"连山区\",\n      \"龙港区\",\n      \"南票区\",\n      \"绥中县\",\n      \"建昌县\",\n      \"兴城市\"\n    ]\n  },\n  \"吉林省\": {\n    \"长春市\": [\n      \"南关区\",\n      \"宽城区\",\n      \"朝阳区\",\n      \"二道区\",\n      \"绿园区\",\n      \"双阳区\",\n      \"九台区\",\n      \"农安县\",\n      \"榆树市\",\n      \"德惠市\",\n      \"公主岭市\"\n    ],\n    \"吉林市\": [\n      \"昌邑区\",\n      \"龙潭区\",\n      \"船营区\",\n      \"丰满区\",\n      \"永吉县\",\n      \"蛟河市\",\n      \"桦甸市\",\n      \"舒兰市\",\n      \"磐石市\"\n    ],\n    \"四平市\": [\n      \"铁西区\",\n      \"铁东区\",\n      \"梨树县\",\n      \"伊通满族自治县\",\n      \"双辽市\"\n    ],\n    \"辽源市\": [\n      \"龙山区\",\n      \"西安区\",\n      \"东丰县\",\n      \"东辽县\"\n    ],\n    \"通化市\": [\n      \"东昌区\",\n      \"二道江区\",\n      \"通化县\",\n      \"辉南县\",\n      \"柳河县\",\n      \"梅河口市\",\n      \"集安市\"\n    ],\n    \"白山市\": [\n      \"浑江区\",\n      \"江源区\",\n      \"抚松县\",\n      \"靖宇县\",\n      \"长白朝鲜族自治县\",\n      \"临江市\"\n    ],\n    \"松原市\": [\n      \"宁江区\",\n      \"前郭尔罗斯蒙古族自治县\",\n      \"长岭县\",\n      \"乾安县\",\n      \"扶余市\"\n    ],\n    \"白城市\": [\n      \"洮北区\",\n      \"镇赉县\",\n      \"通榆县\",\n      \"洮南市\",\n      \"大安市\"\n    ],\n    \"延边朝鲜族自治州\": [\n      \"延吉市\",\n      \"图们市\",\n      \"敦化市\",\n      \"珲春市\",\n      \"龙井市\",\n      \"和龙市\",\n      \"汪清县\",\n      \"安图县\"\n    ]\n  },\n  \"黑龙江省\": {\n    \"哈尔滨市\": [\n      \"道里区\",\n      \"南岗区\",\n      \"道外区\",\n      \"平房区\",\n      \"松北区\",\n      \"香坊区\",\n      \"呼兰区\",\n      \"阿城区\",\n      \"双城区\",\n      \"依兰县\",\n      \"方正县\",\n      \"宾县\",\n      \"巴彦县\",\n      \"木兰县\",\n      \"通河县\",\n      \"延寿县\",\n      \"尚志市\",\n      \"五常市\"\n    ],\n    \"齐齐哈尔市\": [\n      \"龙沙区\",\n      \"建华区\",\n      \"铁锋区\",\n      \"昂昂溪区\",\n      \"富拉尔基区\",\n      \"碾子山区\",\n      \"梅里斯达斡尔族区\",\n      \"龙江县\",\n      \"依安县\",\n      \"泰来县\",\n      \"甘南县\",\n      \"富裕县\",\n      \"克山县\",\n      \"克东县\",\n      \"拜泉县\",\n      \"讷河市\"\n    ],\n    \"鸡西市\": [\n      \"鸡冠区\",\n      \"恒山区\",\n      \"滴道区\",\n      \"梨树区\",\n      \"城子河区\",\n      \"麻山区\",\n      \"鸡东县\",\n      \"虎林市\",\n      \"密山市\"\n    ],\n    \"鹤岗市\": [\n      \"向阳区\",\n      \"工农区\",\n      \"南山区\",\n      \"兴安区\",\n      \"东山区\",\n      \"兴山区\",\n      \"萝北县\",\n      \"绥滨县\"\n    ],\n    \"双鸭山市\": [\n      \"尖山区\",\n      \"岭东区\",\n      \"四方台区\",\n      \"宝山区\",\n      \"集贤县\",\n      \"友谊县\",\n      \"宝清县\",\n      \"饶河县\"\n    ],\n    \"大庆市\": [\n      \"萨尔图区\",\n      \"龙凤区\",\n      \"让胡路区\",\n      \"红岗区\",\n      \"大同区\",\n      \"肇州县\",\n      \"肇源县\",\n      \"林甸县\",\n      \"杜尔伯特蒙古族自治县\"\n    ],\n    \"伊春市\": [\n      \"伊美区\",\n      \"乌翠区\",\n      \"友好区\",\n      \"嘉荫县\",\n      \"汤旺县\",\n      \"丰林县\",\n      \"大箐山县\",\n      \"南岔县\",\n      \"金林区\",\n      \"铁力市\"\n    ],\n    \"佳木斯市\": [\n      \"向阳区\",\n      \"前进区\",\n      \"东风区\",\n      \"郊区\",\n      \"桦南县\",\n      \"桦川县\",\n      \"汤原县\",\n      \"同江市\",\n      \"富锦市\",\n      \"抚远市\"\n    ],\n    \"七台河市\": [\n      \"新兴区\",\n      \"桃山区\",\n      \"茄子河区\",\n      \"勃利县\"\n    ],\n    \"牡丹江市\": [\n      \"东安区\",\n      \"阳明区\",\n      \"爱民区\",\n      \"西安区\",\n      \"林口县\",\n      \"绥芬河市\",\n      \"海林市\",\n      \"宁安市\",\n      \"穆棱市\",\n      \"东宁市\"\n    ],\n    \"黑河市\": [\n      \"爱辉区\",\n      \"逊克县\",\n      \"孙吴县\",\n      \"北安市\",\n      \"五大连池市\",\n      \"嫩江市\"\n    ],\n    \"绥化市\": [\n      \"北林区\",\n      \"望奎县\",\n      \"兰西县\",\n      \"青冈县\",\n      \"庆安县\",\n      \"明水县\",\n      \"绥棱县\",\n      \"安达市\",\n      \"肇东市\",\n      \"海伦市\"\n    ],\n    \"大兴安岭地区\": [\n      \"漠河市\",\n      \"加格达奇区\",\n      \"呼玛县\",\n      \"塔河县\"\n    ]\n  },\n  \"上海市\": {\n    \"上海市\": [\n      \"黄浦区\",\n      \"徐汇区\",\n      \"长宁区\",\n      \"静安区\",\n      \"普陀区\",\n      \"虹口区\",\n      \"杨浦区\",\n      \"闵行区\",\n      \"宝山区\",\n      \"嘉定区\",\n      \"浦东新区\",\n      \"金山区\",\n      \"松江区\",\n      \"青浦区\",\n      \"奉贤区\",\n      \"崇明区\"\n    ]\n  },\n  \"江苏省\": {\n    \"南京市\": [\n      \"玄武区\",\n      \"秦淮区\",\n      \"建邺区\",\n      \"鼓楼区\",\n      \"浦口区\",\n      \"栖霞区\",\n      \"雨花台区\",\n      \"江宁区\",\n      \"六合区\",\n      \"溧水区\",\n      \"高淳区\"\n    ],\n    \"无锡市\": [\n      \"锡山区\",\n      \"惠山区\",\n      \"滨湖区\",\n      \"梁溪区\",\n      \"新吴区\",\n      \"江阴市\",\n      \"宜兴市\"\n    ],\n    \"徐州市\": [\n      \"鼓楼区\",\n      \"云龙区\",\n      \"贾汪区\",\n      \"泉山区\",\n      \"铜山区\",\n      \"丰县\",\n      \"沛县\",\n      \"睢宁县\",\n      \"新沂市\",\n      \"邳州市\"\n    ],\n    \"常州市\": [\n      \"天宁区\",\n      \"钟楼区\",\n      \"新北区\",\n      \"武进区\",\n      \"金坛区\",\n      \"溧阳市\"\n    ],\n    \"苏州市\": [\n      \"虎丘区\",\n      \"吴中区\",\n      \"相城区\",\n      \"姑苏区\",\n      \"吴江区\",\n      \"常熟市\",\n      \"张家港市\",\n      \"昆山市\",\n      \"太仓市\",\n      \"苏州工业园区\"\n    ],\n    \"南通市\": [\n      \"通州区\",\n      \"崇川区\",\n      \"海门区\",\n      \"如东县\",\n      \"启东市\",\n      \"如皋市\",\n      \"海安市\"\n    ],\n    \"连云港市\": [\n      \"连云区\",\n      \"海州区\",\n      \"赣榆区\",\n      \"东海县\",\n      \"灌云县\",\n      \"灌南县\"\n    ],\n    \"淮安市\": [\n      \"淮安区\",\n      \"淮阴区\",\n      \"清江浦区\",\n      \"洪泽区\",\n      \"涟水县\",\n      \"盱眙县\",\n      \"金湖县\"\n    ],\n    \"盐城市\": [\n      \"亭湖区\",\n      \"盐都区\",\n      \"大丰区\",\n      \"响水县\",\n      \"滨海县\",\n      \"阜宁县\",\n      \"射阳县\",\n      \"建湖县\",\n      \"东台市\"\n    ],\n    \"扬州市\": [\n      \"广陵区\",\n      \"邗江区\",\n      \"江都区\",\n      \"宝应县\",\n      \"仪征市\",\n      \"高邮市\"\n    ],\n    \"镇江市\": [\n      \"京口区\",\n      \"润州区\",\n      \"丹徒区\",\n      \"丹阳市\",\n      \"扬中市\",\n      \"句容市\"\n    ],\n    \"泰州市\": [\n      \"海陵区\",\n      \"高港区\",\n      \"姜堰区\",\n      \"兴化市\",\n      \"靖江市\",\n      \"泰兴市\"\n    ],\n    \"宿迁市\": [\n      \"宿城区\",\n      \"宿豫区\",\n      \"沭阳县\",\n      \"泗阳县\",\n      \"泗洪县\"\n    ]\n  },\n  \"浙江省\": {\n    \"杭州市\": [\n      \"上城区\",\n      \"拱墅区\",\n      \"西湖区\",\n      \"滨江区\",\n      \"萧山区\",\n      \"余杭区\",\n      \"富阳区\",\n      \"临安区\",\n      \"临平区\",\n      \"钱塘区\",\n      \"桐庐县\",\n      \"淳安县\",\n      \"建德市\"\n    ],\n    \"宁波市\": [\n      \"海曙区\",\n      \"江北区\",\n      \"北仑区\",\n      \"镇海区\",\n      \"鄞州区\",\n      \"奉化区\",\n      \"象山县\",\n      \"宁海县\",\n      \"余姚市\",\n      \"慈溪市\"\n    ],\n    \"温州市\": [\n      \"鹿城区\",\n      \"龙湾区\",\n      \"瓯海区\",\n      \"洞头区\",\n      \"永嘉县\",\n      \"平阳县\",\n      \"苍南县\",\n      \"文成县\",\n      \"泰顺县\",\n      \"瑞安市\",\n      \"乐清市\",\n      \"龙港市\"\n    ],\n    \"嘉兴市\": [\n      \"南湖区\",\n      \"秀洲区\",\n      \"嘉善县\",\n      \"海盐县\",\n      \"海宁市\",\n      \"平湖市\",\n      \"桐乡市\"\n    ],\n    \"湖州市\": [\n      \"吴兴区\",\n      \"南浔区\",\n      \"德清县\",\n      \"长兴县\",\n      \"安吉县\"\n    ],\n    \"绍兴市\": [\n      \"越城区\",\n      \"柯桥区\",\n      \"上虞区\",\n      \"新昌县\",\n      \"诸暨市\",\n      \"嵊州市\"\n    ],\n    \"金华市\": [\n      \"婺城区\",\n      \"金东区\",\n      \"武义县\",\n      \"浦江县\",\n      \"磐安县\",\n      \"兰溪市\",\n      \"义乌市\",\n      \"东阳市\",\n      \"永康市\"\n    ],\n    \"衢州市\": [\n      \"柯城区\",\n      \"衢江区\",\n      \"常山县\",\n      \"开化县\",\n      \"龙游县\",\n      \"江山市\"\n    ],\n    \"舟山市\": [\n      \"定海区\",\n      \"普陀区\",\n      \"岱山县\",\n      \"嵊泗县\"\n    ],\n    \"台州市\": [\n      \"椒江区\",\n      \"黄岩区\",\n      \"路桥区\",\n      \"三门县\",\n      \"天台县\",\n      \"仙居县\",\n      \"温岭市\",\n      \"临海市\",\n      \"玉环市\"\n    ],\n    \"丽水市\": [\n      \"莲都区\",\n      \"青田县\",\n      \"缙云县\",\n      \"遂昌县\",\n      \"松阳县\",\n      \"云和县\",\n      \"庆元县\",\n      \"景宁畲族自治县\",\n      \"龙泉市\"\n    ]\n  },\n  \"安徽省\": {\n    \"合肥市\": [\n      \"瑶海区\",\n      \"庐阳区\",\n      \"蜀山区\",\n      \"包河区\",\n      \"长丰县\",\n      \"肥东县\",\n      \"肥西县\",\n      \"庐江县\",\n      \"巢湖市\"\n    ],\n    \"芜湖市\": [\n      \"镜湖区\",\n      \"鸠江区\",\n      \"弋江区\",\n      \"湾沚区\",\n      \"繁昌区\",\n      \"南陵县\",\n      \"无为市\"\n    ],\n    \"蚌埠市\": [\n      \"龙子湖区\",\n      \"蚌山区\",\n      \"禹会区\",\n      \"淮上区\",\n      \"怀远县\",\n      \"五河县\",\n      \"固镇县\"\n    ],\n    \"淮南市\": [\n      \"大通区\",\n      \"田家庵区\",\n      \"谢家集区\",\n      \"八公山区\",\n      \"潘集区\",\n      \"凤台县\",\n      \"寿县\"\n    ],\n    \"马鞍山市\": [\n      \"花山区\",\n      \"雨山区\",\n      \"博望区\",\n      \"当涂县\",\n      \"含山县\",\n      \"和县\"\n    ],\n    \"淮北市\": [\n      \"杜集区\",\n      \"相山区\",\n      \"烈山区\",\n      \"濉溪县\"\n    ],\n    \"铜陵市\": [\n      \"铜官区\",\n      \"义安区\",\n      \"郊区\",\n      \"枞阳县\"\n    ],\n    \"安庆市\": [\n      \"迎江区\",\n      \"大观区\",\n      \"宜秀区\",\n      \"怀宁县\",\n      \"太湖县\",\n      \"宿松县\",\n      \"望江县\",\n      \"岳西县\",\n      \"桐城市\",\n      \"潜山市\"\n    ],\n    \"黄山市\": [\n      \"屯溪区\",\n      \"黄山区\",\n      \"徽州区\",\n      \"歙县\",\n      \"休宁县\",\n      \"黟县\",\n      \"祁门县\"\n    ],\n    \"滁州市\": [\n      \"琅琊区\",\n      \"南谯区\",\n      \"来安县\",\n      \"全椒县\",\n      \"定远县\",\n      \"凤阳县\",\n      \"天长市\",\n      \"明光市\"\n    ],\n    \"阜阳市\": [\n      \"颍州区\",\n      \"颍东区\",\n      \"颍泉区\",\n      \"临泉县\",\n      \"太和县\",\n      \"阜南县\",\n      \"颍上县\",\n      \"界首市\"\n    ],\n    \"宿州市\": [\n      \"埇桥区\",\n      \"砀山县\",\n      \"萧县\",\n      \"灵璧县\",\n      \"泗县\"\n    ],\n    \"六安市\": [\n      \"金安区\",\n      \"裕安区\",\n      \"叶集区\",\n      \"霍邱县\",\n      \"舒城县\",\n      \"金寨县\",\n      \"霍山县\"\n    ],\n    \"亳州市\": [\n      \"谯城区\",\n      \"涡阳县\",\n      \"蒙城县\",\n      \"利辛县\"\n    ],\n    \"池州市\": [\n      \"贵池区\",\n      \"东至县\",\n      \"石台县\",\n      \"青阳县\"\n    ],\n    \"宣城市\": [\n      \"宣州区\",\n      \"郎溪县\",\n      \"泾县\",\n      \"绩溪县\",\n      \"旌德县\",\n      \"宁国市\",\n      \"广德市\"\n    ]\n  },\n  \"福建省\": {\n    \"福州市\": [\n      \"鼓楼区\",\n      \"台江区\",\n      \"仓山区\",\n      \"马尾区\",\n      \"晋安区\",\n      \"长乐区\",\n      \"闽侯县\",\n      \"连江县\",\n      \"罗源县\",\n      \"闽清县\",\n      \"永泰县\",\n      \"平潭县\",\n      \"福清市\"\n    ],\n    \"厦门市\": [\n      \"思明区\",\n      \"海沧区\",\n      \"湖里区\",\n      \"集美区\",\n      \"同安区\",\n      \"翔安区\"\n    ],\n    \"莆田市\": [\n      \"城厢区\",\n      \"涵江区\",\n      \"荔城区\",\n      \"秀屿区\",\n      \"仙游县\"\n    ],\n    \"三明市\": [\n      \"三元区\",\n      \"明溪县\",\n      \"清流县\",\n      \"宁化县\",\n      \"大田县\",\n      \"尤溪县\",\n      \"沙县区\",\n      \"将乐县\",\n      \"泰宁县\",\n      \"建宁县\",\n      \"永安市\"\n    ],\n    \"泉州市\": [\n      \"鲤城区\",\n      \"丰泽区\",\n      \"洛江区\",\n      \"泉港区\",\n      \"惠安县\",\n      \"安溪县\",\n      \"永春县\",\n      \"德化县\",\n      \"金门县\",\n      \"石狮市\",\n      \"晋江市\",\n      \"南安市\"\n    ],\n    \"漳州市\": [\n      \"芗城区\",\n      \"龙文区\",\n      \"云霄县\",\n      \"漳浦县\",\n      \"诏安县\",\n      \"长泰区\",\n      \"东山县\",\n      \"南靖县\",\n      \"平和县\",\n      \"华安县\",\n      \"龙海区\"\n    ],\n    \"南平市\": [\n      \"延平区\",\n      \"建阳区\",\n      \"顺昌县\",\n      \"浦城县\",\n      \"光泽县\",\n      \"松溪县\",\n      \"政和县\",\n      \"邵武市\",\n      \"武夷山市\",\n      \"建瓯市\"\n    ],\n    \"龙岩市\": [\n      \"新罗区\",\n      \"永定区\",\n      \"长汀县\",\n      \"上杭县\",\n      \"武平县\",\n      \"连城县\",\n      \"漳平市\"\n    ],\n    \"宁德市\": [\n      \"蕉城区\",\n      \"霞浦县\",\n      \"古田县\",\n      \"屏南县\",\n      \"寿宁县\",\n      \"周宁县\",\n      \"柘荣县\",\n      \"福安市\",\n      \"福鼎市\"\n    ]\n  },\n  \"江西省\": {\n    \"南昌市\": [\n      \"东湖区\",\n      \"西湖区\",\n      \"青云谱区\",\n      \"青山湖区\",\n      \"新建区\",\n      \"红谷滩区\",\n      \"南昌县\",\n      \"安义县\",\n      \"进贤县\"\n    ],\n    \"景德镇市\": [\n      \"昌江区\",\n      \"珠山区\",\n      \"浮梁县\",\n      \"乐平市\"\n    ],\n    \"萍乡市\": [\n      \"安源区\",\n      \"湘东区\",\n      \"莲花县\",\n      \"上栗县\",\n      \"芦溪县\"\n    ],\n    \"九江市\": [\n      \"濂溪区\",\n      \"浔阳区\",\n      \"柴桑区\",\n      \"武宁县\",\n      \"修水县\",\n      \"永修县\",\n      \"德安县\",\n      \"都昌县\",\n      \"湖口县\",\n      \"彭泽县\",\n      \"瑞昌市\",\n      \"共青城市\",\n      \"庐山市\"\n    ],\n    \"新余市\": [\n      \"渝水区\",\n      \"分宜县\"\n    ],\n    \"鹰潭市\": [\n      \"月湖区\",\n      \"余江区\",\n      \"贵溪市\"\n    ],\n    \"赣州市\": [\n      \"章贡区\",\n      \"南康区\",\n      \"赣县区\",\n      \"信丰县\",\n      \"大余县\",\n      \"上犹县\",\n      \"崇义县\",\n      \"安远县\",\n      \"定南县\",\n      \"全南县\",\n      \"宁都县\",\n      \"于都县\",\n      \"兴国县\",\n      \"会昌县\",\n      \"寻乌县\",\n      \"石城县\",\n      \"瑞金市\",\n      \"龙南市\"\n    ],\n    \"吉安市\": [\n      \"吉州区\",\n      \"青原区\",\n      \"吉安县\",\n      \"吉水县\",\n      \"峡江县\",\n      \"新干县\",\n      \"永丰县\",\n      \"泰和县\",\n      \"遂川县\",\n      \"万安县\",\n      \"安福县\",\n      \"永新县\",\n      \"井冈山市\"\n    ],\n    \"宜春市\": [\n      \"袁州区\",\n      \"奉新县\",\n      \"万载县\",\n      \"上高县\",\n      \"宜丰县\",\n      \"靖安县\",\n      \"铜鼓县\",\n      \"丰城市\",\n      \"樟树市\",\n      \"高安市\"\n    ],\n    \"抚州市\": [\n      \"临川区\",\n      \"东乡区\",\n      \"南城县\",\n      \"黎川县\",\n      \"南丰县\",\n      \"崇仁县\",\n      \"乐安县\",\n      \"宜黄县\",\n      \"金溪县\",\n      \"资溪县\",\n      \"广昌县\"\n    ],\n    \"上饶市\": [\n      \"信州区\",\n      \"广丰区\",\n      \"广信区\",\n      \"玉山县\",\n      \"铅山县\",\n      \"横峰县\",\n      \"弋阳县\",\n      \"余干县\",\n      \"鄱阳县\",\n      \"万年县\",\n      \"婺源县\",\n      \"德兴市\"\n    ]\n  },\n  \"山东省\": {\n    \"济南市\": [\n      \"历下区\",\n      \"市中区\",\n      \"槐荫区\",\n      \"天桥区\",\n      \"历城区\",\n      \"长清区\",\n      \"章丘区\",\n      \"济阳区\",\n      \"莱芜区\",\n      \"钢城区\",\n      \"平阴县\",\n      \"商河县\"\n    ],\n    \"青岛市\": [\n      \"市南区\",\n      \"市北区\",\n      \"黄岛区\",\n      \"崂山区\",\n      \"李沧区\",\n      \"城阳区\",\n      \"即墨区\",\n      \"胶州市\",\n      \"平度市\",\n      \"莱西市\"\n    ],\n    \"淄博市\": [\n      \"淄川区\",\n      \"张店区\",\n      \"博山区\",\n      \"临淄区\",\n      \"周村区\",\n      \"桓台县\",\n      \"高青县\",\n      \"沂源县\"\n    ],\n    \"枣庄市\": [\n      \"市中区\",\n      \"薛城区\",\n      \"峄城区\",\n      \"台儿庄区\",\n      \"山亭区\",\n      \"滕州市\"\n    ],\n    \"东营市\": [\n      \"东营区\",\n      \"河口区\",\n      \"垦利区\",\n      \"利津县\",\n      \"广饶县\"\n    ],\n    \"烟台市\": [\n      \"芝罘区\",\n      \"福山区\",\n      \"牟平区\",\n      \"莱山区\",\n      \"蓬莱区\",\n      \"龙口市\",\n      \"莱阳市\",\n      \"莱州市\",\n      \"招远市\",\n      \"栖霞市\",\n      \"海阳市\"\n    ],\n    \"潍坊市\": [\n      \"潍城区\",\n      \"寒亭区\",\n      \"坊子区\",\n      \"奎文区\",\n      \"临朐县\",\n      \"昌乐县\",\n      \"青州市\",\n      \"诸城市\",\n      \"寿光市\",\n      \"安丘市\",\n      \"高密市\",\n      \"昌邑市\"\n    ],\n    \"济宁市\": [\n      \"任城区\",\n      \"兖州区\",\n      \"微山县\",\n      \"鱼台县\",\n      \"金乡县\",\n      \"嘉祥县\",\n      \"汶上县\",\n      \"泗水县\",\n      \"梁山县\",\n      \"曲阜市\",\n      \"邹城市\"\n    ],\n    \"泰安市\": [\n      \"泰山区\",\n      \"岱岳区\",\n      \"宁阳县\",\n      \"东平县\",\n      \"新泰市\",\n      \"肥城市\"\n    ],\n    \"威海市\": [\n      \"环翠区\",\n      \"文登区\",\n      \"荣成市\",\n      \"乳山市\"\n    ],\n    \"日照市\": [\n      \"东港区\",\n      \"岚山区\",\n      \"五莲县\",\n      \"莒县\"\n    ],\n    \"临沂市\": [\n      \"兰山区\",\n      \"罗庄区\",\n      \"河东区\",\n      \"沂南县\",\n      \"郯城县\",\n      \"沂水县\",\n      \"兰陵县\",\n      \"费县\",\n      \"平邑县\",\n      \"莒南县\",\n      \"蒙阴县\",\n      \"临沭县\"\n    ],\n    \"德州市\": [\n      \"德城区\",\n      \"陵城区\",\n      \"宁津县\",\n      \"庆云县\",\n      \"临邑县\",\n      \"齐河县\",\n      \"平原县\",\n      \"夏津县\",\n      \"武城县\",\n      \"乐陵市\",\n      \"禹城市\"\n    ],\n    \"聊城市\": [\n      \"东昌府区\",\n      \"茌平区\",\n      \"阳谷县\",\n      \"莘县\",\n      \"东阿县\",\n      \"冠县\",\n      \"高唐县\",\n      \"临清市\"\n    ],\n    \"滨州市\": [\n      \"滨城区\",\n      \"沾化区\",\n      \"惠民县\",\n      \"阳信县\",\n      \"无棣县\",\n      \"博兴县\",\n      \"邹平市\"\n    ],\n    \"菏泽市\": [\n      \"牡丹区\",\n      \"定陶区\",\n      \"曹县\",\n      \"单县\",\n      \"成武县\",\n      \"巨野县\",\n      \"郓城县\",\n      \"鄄城县\",\n      \"东明县\"\n    ]\n  },\n  \"河南省\": {\n    \"郑州市\": [\n      \"中原区\",\n      \"二七区\",\n      \"管城回族区\",\n      \"金水区\",\n      \"上街区\",\n      \"惠济区\",\n      \"中牟县\",\n      \"巩义市\",\n      \"荥阳市\",\n      \"新密市\",\n      \"新郑市\",\n      \"登封市\",\n      \"郑州经济技术开发区\",\n      \"郑州高新技术产业开发区\",\n      \"郑州航空港经济综合实验区\"\n    ],\n    \"开封市\": [\n      \"龙亭区\",\n      \"顺河回族区\",\n      \"鼓楼区\",\n      \"禹王台区\",\n      \"祥符区\",\n      \"杞县\",\n      \"通许县\",\n      \"尉氏县\",\n      \"兰考县\"\n    ],\n    \"洛阳市\": [\n      \"老城区\",\n      \"西工区\",\n      \"瀍河回族区\",\n      \"涧西区\",\n      \"孟津区\",\n      \"洛龙区\",\n      \"新安县\",\n      \"栾川县\",\n      \"嵩县\",\n      \"汝阳县\",\n      \"宜阳县\",\n      \"洛宁县\",\n      \"伊川县\",\n      \"偃师区\"\n    ],\n    \"平顶山市\": [\n      \"新华区\",\n      \"卫东区\",\n      \"石龙区\",\n      \"湛河区\",\n      \"宝丰县\",\n      \"叶县\",\n      \"鲁山县\",\n      \"郏县\",\n      \"舞钢市\",\n      \"汝州市\"\n    ],\n    \"安阳市\": [\n      \"文峰区\",\n      \"北关区\",\n      \"殷都区\",\n      \"龙安区\",\n      \"安阳县\",\n      \"汤阴县\",\n      \"滑县\",\n      \"内黄县\",\n      \"林州市\"\n    ],\n    \"鹤壁市\": [\n      \"鹤山区\",\n      \"山城区\",\n      \"淇滨区\",\n      \"浚县\",\n      \"淇县\"\n    ],\n    \"新乡市\": [\n      \"红旗区\",\n      \"卫滨区\",\n      \"凤泉区\",\n      \"牧野区\",\n      \"新乡县\",\n      \"获嘉县\",\n      \"原阳县\",\n      \"延津县\",\n      \"封丘县\",\n      \"卫辉市\",\n      \"辉县市\",\n      \"长垣市\"\n    ],\n    \"焦作市\": [\n      \"解放区\",\n      \"中站区\",\n      \"马村区\",\n      \"山阳区\",\n      \"修武县\",\n      \"博爱县\",\n      \"武陟县\",\n      \"温县\",\n      \"沁阳市\",\n      \"孟州市\"\n    ],\n    \"濮阳市\": [\n      \"华龙区\",\n      \"清丰县\",\n      \"南乐县\",\n      \"范县\",\n      \"台前县\",\n      \"濮阳县\"\n    ],\n    \"许昌市\": [\n      \"魏都区\",\n      \"建安区\",\n      \"鄢陵县\",\n      \"襄城县\",\n      \"禹州市\",\n      \"长葛市\"\n    ],\n    \"漯河市\": [\n      \"源汇区\",\n      \"郾城区\",\n      \"召陵区\",\n      \"舞阳县\",\n      \"临颍县\"\n    ],\n    \"三门峡市\": [\n      \"湖滨区\",\n      \"陕州区\",\n      \"渑池县\",\n      \"卢氏县\",\n      \"义马市\",\n      \"灵宝市\"\n    ],\n    \"南阳市\": [\n      \"宛城区\",\n      \"卧龙区\",\n      \"南召县\",\n      \"方城县\",\n      \"西峡县\",\n      \"镇平县\",\n      \"内乡县\",\n      \"淅川县\",\n      \"社旗县\",\n      \"唐河县\",\n      \"新野县\",\n      \"桐柏县\",\n      \"邓州市\"\n    ],\n    \"商丘市\": [\n      \"梁园区\",\n      \"睢阳区\",\n      \"民权县\",\n      \"睢县\",\n      \"宁陵县\",\n      \"柘城县\",\n      \"虞城县\",\n      \"夏邑县\",\n      \"永城市\"\n    ],\n    \"信阳市\": [\n      \"浉河区\",\n      \"平桥区\",\n      \"罗山县\",\n      \"光山县\",\n      \"新县\",\n      \"商城县\",\n      \"固始县\",\n      \"潢川县\",\n      \"淮滨县\",\n      \"息县\"\n    ],\n    \"周口市\": [\n      \"川汇区\",\n      \"淮阳区\",\n      \"扶沟县\",\n      \"西华县\",\n      \"商水县\",\n      \"沈丘县\",\n      \"郸城县\",\n      \"太康县\",\n      \"鹿邑县\",\n      \"项城市\"\n    ],\n    \"驻马店市\": [\n      \"驿城区\",\n      \"西平县\",\n      \"上蔡县\",\n      \"平舆县\",\n      \"正阳县\",\n      \"确山县\",\n      \"泌阳县\",\n      \"汝南县\",\n      \"遂平县\",\n      \"新蔡县\"\n    ],\n    \"济源市\": [\n      \"济源市\"\n    ]\n  },\n  \"湖北省\": {\n    \"武汉市\": [\n      \"江岸区\",\n      \"江汉区\",\n      \"硚口区\",\n      \"汉阳区\",\n      \"武昌区\",\n      \"青山区\",\n      \"洪山区\",\n      \"东西湖区\",\n      \"汉南区\",\n      \"蔡甸区\",\n      \"江夏区\",\n      \"黄陂区\",\n      \"新洲区\"\n    ],\n    \"黄石市\": [\n      \"黄石港区\",\n      \"西塞山区\",\n      \"下陆区\",\n      \"铁山区\",\n      \"阳新县\",\n      \"大冶市\"\n    ],\n    \"十堰市\": [\n      \"茅箭区\",\n      \"张湾区\",\n      \"郧阳区\",\n      \"郧西县\",\n      \"竹山县\",\n      \"竹溪县\",\n      \"房县\",\n      \"丹江口市\"\n    ],\n    \"宜昌市\": [\n      \"西陵区\",\n      \"伍家岗区\",\n      \"点军区\",\n      \"猇亭区\",\n      \"夷陵区\",\n      \"远安县\",\n      \"兴山县\",\n      \"秭归县\",\n      \"长阳土家族自治县\",\n      \"五峰土家族自治县\",\n      \"宜都市\",\n      \"当阳市\",\n      \"枝江市\"\n    ],\n    \"襄阳市\": [\n      \"襄城区\",\n      \"樊城区\",\n      \"襄州区\",\n      \"南漳县\",\n      \"谷城县\",\n      \"保康县\",\n      \"老河口市\",\n      \"枣阳市\",\n      \"宜城市\"\n    ],\n    \"鄂州市\": [\n      \"梁子湖区\",\n      \"华容区\",\n      \"鄂城区\"\n    ],\n    \"荆门市\": [\n      \"东宝区\",\n      \"掇刀区\",\n      \"沙洋县\",\n      \"钟祥市\",\n      \"京山市\"\n    ],\n    \"孝感市\": [\n      \"孝南区\",\n      \"孝昌县\",\n      \"大悟县\",\n      \"云梦县\",\n      \"应城市\",\n      \"安陆市\",\n      \"汉川市\"\n    ],\n    \"荆州市\": [\n      \"沙市区\",\n      \"荆州区\",\n      \"公安县\",\n      \"江陵县\",\n      \"石首市\",\n      \"洪湖市\",\n      \"松滋市\",\n      \"监利市\"\n    ],\n    \"黄冈市\": [\n      \"黄州区\",\n      \"团风县\",\n      \"红安县\",\n      \"罗田县\",\n      \"英山县\",\n      \"浠水县\",\n      \"蕲春县\",\n      \"黄梅县\",\n      \"麻城市\",\n      \"武穴市\"\n    ],\n    \"咸宁市\": [\n      \"咸安区\",\n      \"嘉鱼县\",\n      \"通城县\",\n      \"崇阳县\",\n      \"通山县\",\n      \"赤壁市\"\n    ],\n    \"随州市\": [\n      \"曾都区\",\n      \"随县\",\n      \"广水市\"\n    ],\n    \"恩施土家族苗族自治州\": [\n      \"恩施市\",\n      \"利川市\",\n      \"建始县\",\n      \"巴东县\",\n      \"宣恩县\",\n      \"咸丰县\",\n      \"来凤县\",\n      \"鹤峰县\"\n    ],\n    \"仙桃市\": [\n      \"仙桃市\"\n    ],\n    \"潜江市\": [\n      \"潜江市\"\n    ],\n    \"天门市\": [\n      \"天门市\"\n    ],\n    \"神农架林区\": [\n      \"神农架林区\"\n    ]\n  },\n  \"湖南省\": {\n    \"长沙市\": [\n      \"芙蓉区\",\n      \"天心区\",\n      \"岳麓区\",\n      \"开福区\",\n      \"雨花区\",\n      \"望城区\",\n      \"长沙县\",\n      \"浏阳市\",\n      \"宁乡市\"\n    ],\n    \"株洲市\": [\n      \"荷塘区\",\n      \"芦淞区\",\n      \"石峰区\",\n      \"天元区\",\n      \"渌口区\",\n      \"攸县\",\n      \"茶陵县\",\n      \"炎陵县\",\n      \"醴陵市\"\n    ],\n    \"湘潭市\": [\n      \"雨湖区\",\n      \"岳塘区\",\n      \"湘潭县\",\n      \"湘乡市\",\n      \"韶山市\"\n    ],\n    \"衡阳市\": [\n      \"珠晖区\",\n      \"雁峰区\",\n      \"石鼓区\",\n      \"蒸湘区\",\n      \"南岳区\",\n      \"衡阳县\",\n      \"衡南县\",\n      \"衡山县\",\n      \"衡东县\",\n      \"祁东县\",\n      \"耒阳市\",\n      \"常宁市\"\n    ],\n    \"邵阳市\": [\n      \"双清区\",\n      \"大祥区\",\n      \"北塔区\",\n      \"新邵县\",\n      \"邵阳县\",\n      \"隆回县\",\n      \"洞口县\",\n      \"绥宁县\",\n      \"新宁县\",\n      \"城步苗族自治县\",\n      \"武冈市\",\n      \"邵东市\"\n    ],\n    \"岳阳市\": [\n      \"岳阳楼区\",\n      \"云溪区\",\n      \"君山区\",\n      \"岳阳县\",\n      \"华容县\",\n      \"湘阴县\",\n      \"平江县\",\n      \"汨罗市\",\n      \"临湘市\"\n    ],\n    \"常德市\": [\n      \"武陵区\",\n      \"鼎城区\",\n      \"安乡县\",\n      \"汉寿县\",\n      \"澧县\",\n      \"临澧县\",\n      \"桃源县\",\n      \"石门县\",\n      \"津市市\"\n    ],\n    \"张家界市\": [\n      \"永定区\",\n      \"武陵源区\",\n      \"慈利县\",\n      \"桑植县\"\n    ],\n    \"益阳市\": [\n      \"资阳区\",\n      \"赫山区\",\n      \"南县\",\n      \"桃江县\",\n      \"安化县\",\n      \"沅江市\"\n    ],\n    \"郴州市\": [\n      \"北湖区\",\n      \"苏仙区\",\n      \"桂阳县\",\n      \"宜章县\",\n      \"永兴县\",\n      \"嘉禾县\",\n      \"临武县\",\n      \"汝城县\",\n      \"桂东县\",\n      \"安仁县\",\n      \"资兴市\"\n    ],\n    \"永州市\": [\n      \"零陵区\",\n      \"冷水滩区\",\n      \"祁阳市\",\n      \"东安县\",\n      \"双牌县\",\n      \"道县\",\n      \"江永县\",\n      \"宁远县\",\n      \"蓝山县\",\n      \"新田县\",\n      \"江华瑶族自治县\"\n    ],\n    \"怀化市\": [\n      \"鹤城区\",\n      \"中方县\",\n      \"沅陵县\",\n      \"辰溪县\",\n      \"溆浦县\",\n      \"会同县\",\n      \"麻阳苗族自治县\",\n      \"新晃侗族自治县\",\n      \"芷江侗族自治县\",\n      \"靖州苗族侗族自治县\",\n      \"通道侗族自治县\",\n      \"洪江市\"\n    ],\n    \"娄底市\": [\n      \"娄星区\",\n      \"双峰县\",\n      \"新化县\",\n      \"冷水江市\",\n      \"涟源市\"\n    ],\n    \"湘西土家族苗族自治州\": [\n      \"吉首市\",\n      \"泸溪县\",\n      \"凤凰县\",\n      \"花垣县\",\n      \"保靖县\",\n      \"古丈县\",\n      \"永顺县\",\n      \"龙山县\"\n    ]\n  },\n  \"广东省\": {\n    \"广州市\": [\n      \"荔湾区\",\n      \"越秀区\",\n      \"海珠区\",\n      \"天河区\",\n      \"白云区\",\n      \"黄埔区\",\n      \"番禺区\",\n      \"花都区\",\n      \"南沙区\",\n      \"从化区\",\n      \"增城区\"\n    ],\n    \"韶关市\": [\n      \"武江区\",\n      \"浈江区\",\n      \"曲江区\",\n      \"始兴县\",\n      \"仁化县\",\n      \"翁源县\",\n      \"乳源瑶族自治县\",\n      \"新丰县\",\n      \"乐昌市\",\n      \"南雄市\"\n    ],\n    \"深圳市\": [\n      \"罗湖区\",\n      \"福田区\",\n      \"南山区\",\n      \"宝安区\",\n      \"龙岗区\",\n      \"盐田区\",\n      \"龙华区\",\n      \"坪山区\",\n      \"光明区\"\n    ],\n    \"珠海市\": [\n      \"香洲区\",\n      \"斗门区\",\n      \"金湾区\"\n    ],\n    \"汕头市\": [\n      \"龙湖区\",\n      \"金平区\",\n      \"濠江区\",\n      \"潮阳区\",\n      \"潮南区\",\n      \"澄海区\",\n      \"南澳县\"\n    ],\n    \"佛山市\": [\n      \"禅城区\",\n      \"南海区\",\n      \"顺德区\",\n      \"三水区\",\n      \"高明区\"\n    ],\n    \"江门市\": [\n      \"蓬江区\",\n      \"江海区\",\n      \"新会区\",\n      \"台山市\",\n      \"开平市\",\n      \"鹤山市\",\n      \"恩平市\"\n    ],\n    \"湛江市\": [\n      \"赤坎区\",\n      \"霞山区\",\n      \"坡头区\",\n      \"麻章区\",\n      \"遂溪县\",\n      \"徐闻县\",\n      \"廉江市\",\n      \"雷州市\",\n      \"吴川市\"\n    ],\n    \"茂名市\": [\n      \"茂南区\",\n      \"电白区\",\n      \"高州市\",\n      \"化州市\",\n      \"信宜市\"\n    ],\n    \"肇庆市\": [\n      \"端州区\",\n      \"鼎湖区\",\n      \"高要区\",\n      \"广宁县\",\n      \"怀集县\",\n      \"封开县\",\n      \"德庆县\",\n      \"四会市\"\n    ],\n    \"惠州市\": [\n      \"惠城区\",\n      \"惠阳区\",\n      \"博罗县\",\n      \"惠东县\",\n      \"龙门县\"\n    ],\n    \"梅州市\": [\n      \"梅江区\",\n      \"梅县区\",\n      \"大埔县\",\n      \"丰顺县\",\n      \"五华县\",\n      \"平远县\",\n      \"蕉岭县\",\n      \"兴宁市\"\n    ],\n    \"汕尾市\": [\n      \"城区\",\n      \"海丰县\",\n      \"陆河县\",\n      \"陆丰市\"\n    ],\n    \"河源市\": [\n      \"源城区\",\n      \"紫金县\",\n      \"龙川县\",\n      \"连平县\",\n      \"和平县\",\n      \"东源县\"\n    ],\n    \"阳江市\": [\n      \"江城区\",\n      \"阳东区\",\n      \"阳西县\",\n      \"阳春市\"\n    ],\n    \"清远市\": [\n      \"清城区\",\n      \"清新区\",\n      \"佛冈县\",\n      \"阳山县\",\n      \"连山壮族瑶族自治县\",\n      \"连南瑶族自治县\",\n      \"英德市\",\n      \"连州市\"\n    ],\n    \"东莞市\": [\n      \"东莞市\"\n    ],\n    \"中山市\": [\n      \"中山市\"\n    ],\n    \"潮州市\": [\n      \"湘桥区\",\n      \"潮安区\",\n      \"饶平县\"\n    ],\n    \"揭阳市\": [\n      \"榕城区\",\n      \"揭东区\",\n      \"揭西县\",\n      \"惠来县\",\n      \"普宁市\"\n    ],\n    \"云浮市\": [\n      \"云城区\",\n      \"云安区\",\n      \"新兴县\",\n      \"郁南县\",\n      \"罗定市\"\n    ]\n  },\n  \"广西壮族自治区\": {\n    \"南宁市\": [\n      \"兴宁区\",\n      \"青秀区\",\n      \"江南区\",\n      \"西乡塘区\",\n      \"良庆区\",\n      \"邕宁区\",\n      \"武鸣区\",\n      \"隆安县\",\n      \"马山县\",\n      \"上林县\",\n      \"宾阳县\",\n      \"横州市\"\n    ],\n    \"柳州市\": [\n      \"城中区\",\n      \"鱼峰区\",\n      \"柳南区\",\n      \"柳北区\",\n      \"柳江区\",\n      \"柳城县\",\n      \"鹿寨县\",\n      \"融安县\",\n      \"融水苗族自治县\",\n      \"三江侗族自治县\"\n    ],\n    \"桂林市\": [\n      \"秀峰区\",\n      \"叠彩区\",\n      \"象山区\",\n      \"七星区\",\n      \"雁山区\",\n      \"临桂区\",\n      \"阳朔县\",\n      \"灵川县\",\n      \"全州县\",\n      \"兴安县\",\n      \"永福县\",\n      \"灌阳县\",\n      \"龙胜各族自治县\",\n      \"资源县\",\n      \"平乐县\",\n      \"恭城瑶族自治县\",\n      \"荔浦市\"\n    ],\n    \"梧州市\": [\n      \"万秀区\",\n      \"长洲区\",\n      \"龙圩区\",\n      \"苍梧县\",\n      \"藤县\",\n      \"蒙山县\",\n      \"岑溪市\"\n    ],\n    \"北海市\": [\n      \"海城区\",\n      \"银海区\",\n      \"铁山港区\",\n      \"合浦县\"\n    ],\n    \"防城港市\": [\n      \"港口区\",\n      \"防城区\",\n      \"上思县\",\n      \"东兴市\"\n    ],\n    \"钦州市\": [\n      \"钦南区\",\n      \"钦北区\",\n      \"灵山县\",\n      \"浦北县\"\n    ],\n    \"贵港市\": [\n      \"港北区\",\n      \"港南区\",\n      \"覃塘区\",\n      \"平南县\",\n      \"桂平市\"\n    ],\n    \"玉林市\": [\n      \"玉州区\",\n      \"福绵区\",\n      \"容县\",\n      \"陆川县\",\n      \"博白县\",\n      \"兴业县\",\n      \"北流市\"\n    ],\n    \"百色市\": [\n      \"右江区\",\n      \"田阳区\",\n      \"田东县\",\n      \"德保县\",\n      \"那坡县\",\n      \"凌云县\",\n      \"乐业县\",\n      \"田林县\",\n      \"西林县\",\n      \"隆林各族自治县\",\n      \"靖西市\",\n      \"平果市\"\n    ],\n    \"贺州市\": [\n      \"八步区\",\n      \"平桂区\",\n      \"昭平县\",\n      \"钟山县\",\n      \"富川瑶族自治县\"\n    ],\n    \"河池市\": [\n      \"金城江区\",\n      \"宜州区\",\n      \"南丹县\",\n      \"天峨县\",\n      \"凤山县\",\n      \"东兰县\",\n      \"罗城仫佬族自治县\",\n      \"环江毛南族自治县\",\n      \"巴马瑶族自治县\",\n      \"都安瑶族自治县\",\n      \"大化瑶族自治县\"\n    ],\n    \"来宾市\": [\n      \"兴宾区\",\n      \"忻城县\",\n      \"象州县\",\n      \"武宣县\",\n      \"金秀瑶族自治县\",\n      \"合山市\"\n    ],\n    \"崇左市\": [\n      \"江州区\",\n      \"扶绥县\",\n      \"宁明县\",\n      \"龙州县\",\n      \"大新县\",\n      \"天等县\",\n      \"凭祥市\"\n    ]\n  },\n  \"海南省\": {\n    \"海口市\": [\n      \"秀英区\",\n      \"龙华区\",\n      \"琼山区\",\n      \"美兰区\"\n    ],\n    \"三亚市\": [\n      \"海棠区\",\n      \"吉阳区\",\n      \"天涯区\",\n      \"崖州区\"\n    ],\n    \"三沙市\": [\n      \"西沙区\",\n      \"南沙区\"\n    ],\n    \"儋州市\": [\n      \"儋州市\"\n    ],\n    \"五指山市\": [\n      \"五指山市\"\n    ],\n    \"琼海市\": [\n      \"琼海市\"\n    ],\n    \"文昌市\": [\n      \"文昌市\"\n    ],\n    \"万宁市\": [\n      \"万宁市\"\n    ],\n    \"东方市\": [\n      \"东方市\"\n    ],\n    \"定安县\": [\n      \"定安县\"\n    ],\n    \"屯昌县\": [\n      \"屯昌县\"\n    ],\n    \"澄迈县\": [\n      \"澄迈县\"\n    ],\n    \"临高县\": [\n      \"临高县\"\n    ],\n    \"白沙黎族自治县\": [\n      \"白沙黎族自治县\"\n    ],\n    \"昌江黎族自治县\": [\n      \"昌江黎族自治县\"\n    ],\n    \"乐东黎族自治县\": [\n      \"乐东黎族自治县\"\n    ],\n    \"陵水黎族自治县\": [\n      \"陵水黎族自治县\"\n    ],\n    \"保亭黎族苗族自治县\": [\n      \"保亭黎族苗族自治县\"\n    ],\n    \"琼中黎族苗族自治县\": [\n      \"琼中黎族苗族自治县\"\n    ]\n  },\n  \"重庆市\": {\n    \"重庆市\": [\n      \"万州区\",\n      \"涪陵区\",\n      \"渝中区\",\n      \"大渡口区\",\n      \"江北区\",\n      \"沙坪坝区\",\n      \"九龙坡区\",\n      \"南岸区\",\n      \"北碚区\",\n      \"綦江区\",\n      \"大足区\",\n      \"渝北区\",\n      \"巴南区\",\n      \"黔江区\",\n      \"长寿区\",\n      \"江津区\",\n      \"合川区\",\n      \"永川区\",\n      \"南川区\",\n      \"璧山区\",\n      \"铜梁区\",\n      \"潼南区\",\n      \"荣昌区\",\n      \"开州区\",\n      \"梁平区\",\n      \"武隆区\",\n      \"城口县\",\n      \"丰都县\",\n      \"垫江县\",\n      \"忠县\",\n      \"云阳县\",\n      \"奉节县\",\n      \"巫山县\",\n      \"巫溪县\",\n      \"石柱土家族自治县\",\n      \"秀山土家族苗族自治县\",\n      \"酉阳土家族苗族自治县\",\n      \"彭水苗族土家族自治县\"\n    ]\n  },\n  \"四川省\": {\n    \"成都市\": [\n      \"锦江区\",\n      \"青羊区\",\n      \"金牛区\",\n      \"武侯区\",\n      \"成华区\",\n      \"龙泉驿区\",\n      \"青白江区\",\n      \"新都区\",\n      \"温江区\",\n      \"双流区\",\n      \"郫都区\",\n      \"新津区\",\n      \"金堂县\",\n      \"大邑县\",\n      \"蒲江县\",\n      \"都江堰市\",\n      \"彭州市\",\n      \"邛崃市\",\n      \"崇州市\",\n      \"简阳市\"\n    ],\n    \"自贡市\": [\n      \"自流井区\",\n      \"贡井区\",\n      \"大安区\",\n      \"沿滩区\",\n      \"荣县\",\n      \"富顺县\"\n    ],\n    \"攀枝花市\": [\n      \"东区\",\n      \"西区\",\n      \"仁和区\",\n      \"米易县\",\n      \"盐边县\"\n    ],\n    \"泸州市\": [\n      \"江阳区\",\n      \"纳溪区\",\n      \"龙马潭区\",\n      \"泸县\",\n      \"合江县\",\n      \"叙永县\",\n      \"古蔺县\"\n    ],\n    \"德阳市\": [\n      \"旌阳区\",\n      \"罗江区\",\n      \"中江县\",\n      \"广汉市\",\n      \"什邡市\",\n      \"绵竹市\"\n    ],\n    \"绵阳市\": [\n      \"涪城区\",\n      \"游仙区\",\n      \"安州区\",\n      \"三台县\",\n      \"盐亭县\",\n      \"梓潼县\",\n      \"北川羌族自治县\",\n      \"平武县\",\n      \"江油市\"\n    ],\n    \"广元市\": [\n      \"利州区\",\n      \"昭化区\",\n      \"朝天区\",\n      \"旺苍县\",\n      \"青川县\",\n      \"剑阁县\",\n      \"苍溪县\"\n    ],\n    \"遂宁市\": [\n      \"船山区\",\n      \"安居区\",\n      \"蓬溪县\",\n      \"大英县\",\n      \"射洪市\"\n    ],\n    \"内江市\": [\n      \"市中区\",\n      \"东兴区\",\n      \"威远县\",\n      \"资中县\",\n      \"隆昌市\"\n    ],\n    \"乐山市\": [\n      \"市中区\",\n      \"沙湾区\",\n      \"五通桥区\",\n      \"金口河区\",\n      \"犍为县\",\n      \"井研县\",\n      \"夹江县\",\n      \"沐川县\",\n      \"峨边彝族自治县\",\n      \"马边彝族自治县\",\n      \"峨眉山市\"\n    ],\n    \"南充市\": [\n      \"顺庆区\",\n      \"高坪区\",\n      \"嘉陵区\",\n      \"南部县\",\n      \"营山县\",\n      \"蓬安县\",\n      \"仪陇县\",\n      \"西充县\",\n      \"阆中市\"\n    ],\n    \"眉山市\": [\n      \"东坡区\",\n      \"彭山区\",\n      \"仁寿县\",\n      \"洪雅县\",\n      \"丹棱县\",\n      \"青神县\"\n    ],\n    \"宜宾市\": [\n      \"翠屏区\",\n      \"南溪区\",\n      \"叙州区\",\n      \"江安县\",\n      \"长宁县\",\n      \"高县\",\n      \"珙县\",\n      \"筠连县\",\n      \"兴文县\",\n      \"屏山县\"\n    ],\n    \"广安市\": [\n      \"广安区\",\n      \"前锋区\",\n      \"岳池县\",\n      \"武胜县\",\n      \"邻水县\",\n      \"华蓥市\"\n    ],\n    \"达州市\": [\n      \"通川区\",\n      \"达川区\",\n      \"宣汉县\",\n      \"开江县\",\n      \"大竹县\",\n      \"渠县\",\n      \"万源市\"\n    ],\n    \"雅安市\": [\n      \"雨城区\",\n      \"名山区\",\n      \"荥经县\",\n      \"汉源县\",\n      \"石棉县\",\n      \"天全县\",\n      \"芦山县\",\n      \"宝兴县\"\n    ],\n    \"巴中市\": [\n      \"巴州区\",\n      \"恩阳区\",\n      \"通江县\",\n      \"南江县\",\n      \"平昌县\"\n    ],\n    \"资阳市\": [\n      \"雁江区\",\n      \"安岳县\",\n      \"乐至县\"\n    ],\n    \"阿坝藏族羌族自治州\": [\n      \"马尔康市\",\n      \"汶川县\",\n      \"理县\",\n      \"茂县\",\n      \"松潘县\",\n      \"九寨沟县\",\n      \"金川县\",\n      \"小金县\",\n      \"黑水县\",\n      \"壤塘县\",\n      \"阿坝县\",\n      \"若尔盖县\",\n      \"红原县\"\n    ],\n    \"甘孜藏族自治州\": [\n      \"康定市\",\n      \"泸定县\",\n      \"丹巴县\",\n      \"九龙县\",\n      \"雅江县\",\n      \"道孚县\",\n      \"炉霍县\",\n      \"甘孜县\",\n      \"新龙县\",\n      \"德格县\",\n      \"白玉县\",\n      \"石渠县\",\n      \"色达县\",\n      \"理塘县\",\n      \"巴塘县\",\n      \"乡城县\",\n      \"稻城县\",\n      \"得荣县\"\n    ],\n    \"凉山彝族自治州\": [\n      \"西昌市\",\n      \"木里藏族自治县\",\n      \"盐源县\",\n      \"德昌县\",\n      \"会理市\",\n      \"会东县\",\n      \"宁南县\",\n      \"普格县\",\n      \"布拖县\",\n      \"金阳县\",\n      \"昭觉县\",\n      \"喜德县\",\n      \"冕宁县\",\n      \"越西县\",\n      \"甘洛县\",\n      \"美姑县\",\n      \"雷波县\"\n    ]\n  },\n  \"贵州省\": {\n    \"贵阳市\": [\n      \"南明区\",\n      \"云岩区\",\n      \"花溪区\",\n      \"乌当区\",\n      \"白云区\",\n      \"观山湖区\",\n      \"开阳县\",\n      \"息烽县\",\n      \"修文县\",\n      \"清镇市\"\n    ],\n    \"六盘水市\": [\n      \"钟山区\",\n      \"六枝特区\",\n      \"水城区\",\n      \"盘州市\"\n    ],\n    \"遵义市\": [\n      \"红花岗区\",\n      \"汇川区\",\n      \"播州区\",\n      \"桐梓县\",\n      \"绥阳县\",\n      \"正安县\",\n      \"道真仡佬族苗族自治县\",\n      \"务川仡佬族苗族自治县\",\n      \"凤冈县\",\n      \"湄潭县\",\n      \"余庆县\",\n      \"习水县\",\n      \"赤水市\",\n      \"仁怀市\"\n    ],\n    \"安顺市\": [\n      \"西秀区\",\n      \"平坝区\",\n      \"普定县\",\n      \"镇宁布依族苗族自治县\",\n      \"关岭布依族苗族自治县\",\n      \"紫云苗族布依族自治县\"\n    ],\n    \"毕节市\": [\n      \"七星关区\",\n      \"大方县\",\n      \"黔西市\",\n      \"金沙县\",\n      \"织金县\",\n      \"纳雍县\",\n      \"威宁彝族回族苗族自治县\",\n      \"赫章县\"\n    ],\n    \"铜仁市\": [\n      \"碧江区\",\n      \"万山区\",\n      \"江口县\",\n      \"玉屏侗族自治县\",\n      \"石阡县\",\n      \"思南县\",\n      \"印江土家族苗族自治县\",\n      \"德江县\",\n      \"沿河土家族自治县\",\n      \"松桃苗族自治县\"\n    ],\n    \"黔西南布依族苗族自治州\": [\n      \"兴义市\",\n      \"兴仁市\",\n      \"普安县\",\n      \"晴隆县\",\n      \"贞丰县\",\n      \"望谟县\",\n      \"册亨县\",\n      \"安龙县\"\n    ],\n    \"黔东南苗族侗族自治州\": [\n      \"凯里市\",\n      \"黄平县\",\n      \"施秉县\",\n      \"三穗县\",\n      \"镇远县\",\n      \"岑巩县\",\n      \"天柱县\",\n      \"锦屏县\",\n      \"剑河县\",\n      \"台江县\",\n      \"黎平县\",\n      \"榕江县\",\n      \"从江县\",\n      \"雷山县\",\n      \"麻江县\",\n      \"丹寨县\"\n    ],\n    \"黔南布依族苗族自治州\": [\n      \"都匀市\",\n      \"福泉市\",\n      \"荔波县\",\n      \"贵定县\",\n      \"瓮安县\",\n      \"独山县\",\n      \"平塘县\",\n      \"罗甸县\",\n      \"长顺县\",\n      \"龙里县\",\n      \"惠水县\",\n      \"三都水族自治县\"\n    ]\n  },\n  \"云南省\": {\n    \"昆明市\": [\n      \"五华区\",\n      \"盘龙区\",\n      \"官渡区\",\n      \"西山区\",\n      \"东川区\",\n      \"呈贡区\",\n      \"晋宁区\",\n      \"富民县\",\n      \"宜良县\",\n      \"石林彝族自治县\",\n      \"嵩明县\",\n      \"禄劝彝族苗族自治县\",\n      \"寻甸回族彝族自治县\",\n      \"安宁市\"\n    ],\n    \"曲靖市\": [\n      \"麒麟区\",\n      \"沾益区\",\n      \"马龙区\",\n      \"陆良县\",\n      \"师宗县\",\n      \"罗平县\",\n      \"富源县\",\n      \"会泽县\",\n      \"宣威市\"\n    ],\n    \"玉溪市\": [\n      \"红塔区\",\n      \"江川区\",\n      \"通海县\",\n      \"华宁县\",\n      \"易门县\",\n      \"峨山彝族自治县\",\n      \"新平彝族傣族自治县\",\n      \"元江哈尼族彝族傣族自治县\",\n      \"澄江市\"\n    ],\n    \"保山市\": [\n      \"隆阳区\",\n      \"施甸县\",\n      \"龙陵县\",\n      \"昌宁县\",\n      \"腾冲市\"\n    ],\n    \"昭通市\": [\n      \"昭阳区\",\n      \"鲁甸县\",\n      \"巧家县\",\n      \"盐津县\",\n      \"大关县\",\n      \"永善县\",\n      \"绥江县\",\n      \"镇雄县\",\n      \"彝良县\",\n      \"威信县\",\n      \"水富市\"\n    ],\n    \"丽江市\": [\n      \"古城区\",\n      \"玉龙纳西族自治县\",\n      \"永胜县\",\n      \"华坪县\",\n      \"宁蒗彝族自治县\"\n    ],\n    \"普洱市\": [\n      \"思茅区\",\n      \"宁洱哈尼族彝族自治县\",\n      \"墨江哈尼族自治县\",\n      \"景东彝族自治县\",\n      \"景谷傣族彝族自治县\",\n      \"镇沅彝族哈尼族拉祜族自治县\",\n      \"江城哈尼族彝族自治县\",\n      \"孟连傣族拉祜族佤族自治县\",\n      \"澜沧拉祜族自治县\",\n      \"西盟佤族自治县\"\n    ],\n    \"临沧市\": [\n      \"临翔区\",\n      \"凤庆县\",\n      \"云县\",\n      \"永德县\",\n      \"镇康县\",\n      \"双江拉祜族佤族布朗族傣族自治县\",\n      \"耿马傣族佤族自治县\",\n      \"沧源佤族自治县\"\n    ],\n    \"楚雄彝族自治州\": [\n      \"楚雄市\",\n      \"双柏县\",\n      \"牟定县\",\n      \"南华县\",\n      \"姚安县\",\n      \"大姚县\",\n      \"永仁县\",\n      \"元谋县\",\n      \"武定县\",\n      \"禄丰市\"\n    ],\n    \"红河哈尼族彝族自治州\": [\n      \"个旧市\",\n      \"开远市\",\n      \"蒙自市\",\n      \"弥勒市\",\n      \"屏边苗族自治县\",\n      \"建水县\",\n      \"石屏县\",\n      \"泸西县\",\n      \"元阳县\",\n      \"红河县\",\n      \"金平苗族瑶族傣族自治县\",\n      \"绿春县\",\n      \"河口瑶族自治县\"\n    ],\n    \"文山壮族苗族自治州\": [\n      \"文山市\",\n      \"砚山县\",\n      \"西畴县\",\n      \"麻栗坡县\",\n      \"马关县\",\n      \"丘北县\",\n      \"广南县\",\n      \"富宁县\"\n    ],\n    \"西双版纳傣族自治州\": [\n      \"景洪市\",\n      \"勐海县\",\n      \"勐腊县\"\n    ],\n    \"大理白族自治州\": [\n      \"大理市\",\n      \"漾濞彝族自治县\",\n      \"祥云县\",\n      \"宾川县\",\n      \"弥渡县\",\n      \"南涧彝族自治县\",\n      \"巍山彝族回族自治县\",\n      \"永平县\",\n      \"云龙县\",\n      \"洱源县\",\n      \"剑川县\",\n      \"鹤庆县\"\n    ],\n    \"德宏傣族景颇族自治州\": [\n      \"瑞丽市\",\n      \"芒市\",\n      \"梁河县\",\n      \"盈江县\",\n      \"陇川县\"\n    ],\n    \"怒江傈僳族自治州\": [\n      \"泸水市\",\n      \"福贡县\",\n      \"贡山独龙族怒族自治县\",\n      \"兰坪白族普米族自治县\"\n    ],\n    \"迪庆藏族自治州\": [\n      \"香格里拉市\",\n      \"德钦县\",\n      \"维西傈僳族自治县\"\n    ]\n  },\n  \"西藏自治区\": {\n    \"拉萨市\": [\n      \"城关区\",\n      \"堆龙德庆区\",\n      \"达孜区\",\n      \"林周县\",\n      \"当雄县\",\n      \"尼木县\",\n      \"曲水县\",\n      \"墨竹工卡县\"\n    ],\n    \"日喀则市\": [\n      \"桑珠孜区\",\n      \"南木林县\",\n      \"江孜县\",\n      \"定日县\",\n      \"萨迦县\",\n      \"拉孜县\",\n      \"昂仁县\",\n      \"谢通门县\",\n      \"白朗县\",\n      \"仁布县\",\n      \"康马县\",\n      \"定结县\",\n      \"仲巴县\",\n      \"亚东县\",\n      \"吉隆县\",\n      \"聂拉木县\",\n      \"萨嘎县\",\n      \"岗巴县\"\n    ],\n    \"昌都市\": [\n      \"卡若区\",\n      \"江达县\",\n      \"贡觉县\",\n      \"类乌齐县\",\n      \"丁青县\",\n      \"察雅县\",\n      \"八宿县\",\n      \"左贡县\",\n      \"芒康县\",\n      \"洛隆县\",\n      \"边坝县\"\n    ],\n    \"林芝市\": [\n      \"巴宜区\",\n      \"工布江达县\",\n      \"米林县\",\n      \"墨脱县\",\n      \"波密县\",\n      \"察隅县\",\n      \"朗县\"\n    ],\n    \"山南市\": [\n      \"乃东区\",\n      \"扎囊县\",\n      \"贡嘎县\",\n      \"桑日县\",\n      \"琼结县\",\n      \"曲松县\",\n      \"措美县\",\n      \"洛扎县\",\n      \"加查县\",\n      \"隆子县\",\n      \"错那县\",\n      \"浪卡子县\"\n    ],\n    \"那曲市\": [\n      \"色尼区\",\n      \"嘉黎县\",\n      \"比如县\",\n      \"聂荣县\",\n      \"安多县\",\n      \"申扎县\",\n      \"索县\",\n      \"班戈县\",\n      \"巴青县\",\n      \"尼玛县\",\n      \"双湖县\"\n    ],\n    \"阿里地区\": [\n      \"普兰县\",\n      \"札达县\",\n      \"噶尔县\",\n      \"日土县\",\n      \"革吉县\",\n      \"改则县\",\n      \"措勤县\"\n    ]\n  },\n  \"陕西省\": {\n    \"西安市\": [\n      \"新城区\",\n      \"碑林区\",\n      \"莲湖区\",\n      \"灞桥区\",\n      \"未央区\",\n      \"雁塔区\",\n      \"阎良区\",\n      \"临潼区\",\n      \"长安区\",\n      \"高陵区\",\n      \"鄠邑区\",\n      \"蓝田县\",\n      \"周至县\"\n    ],\n    \"铜川市\": [\n      \"王益区\",\n      \"印台区\",\n      \"耀州区\",\n      \"宜君县\"\n    ],\n    \"宝鸡市\": [\n      \"渭滨区\",\n      \"金台区\",\n      \"陈仓区\",\n      \"凤翔区\",\n      \"岐山县\",\n      \"扶风县\",\n      \"眉县\",\n      \"陇县\",\n      \"千阳县\",\n      \"麟游县\",\n      \"凤县\",\n      \"太白县\"\n    ],\n    \"咸阳市\": [\n      \"秦都区\",\n      \"杨陵区\",\n      \"渭城区\",\n      \"三原县\",\n      \"泾阳县\",\n      \"乾县\",\n      \"礼泉县\",\n      \"永寿县\",\n      \"长武县\",\n      \"旬邑县\",\n      \"淳化县\",\n      \"武功县\",\n      \"兴平市\",\n      \"彬州市\"\n    ],\n    \"渭南市\": [\n      \"临渭区\",\n      \"华州区\",\n      \"潼关县\",\n      \"大荔县\",\n      \"合阳县\",\n      \"澄城县\",\n      \"蒲城县\",\n      \"白水县\",\n      \"富平县\",\n      \"韩城市\",\n      \"华阴市\"\n    ],\n    \"延安市\": [\n      \"宝塔区\",\n      \"安塞区\",\n      \"延长县\",\n      \"延川县\",\n      \"志丹县\",\n      \"吴起县\",\n      \"甘泉县\",\n      \"富县\",\n      \"洛川县\",\n      \"宜川县\",\n      \"黄龙县\",\n      \"黄陵县\",\n      \"子长市\"\n    ],\n    \"汉中市\": [\n      \"汉台区\",\n      \"南郑区\",\n      \"城固县\",\n      \"洋县\",\n      \"西乡县\",\n      \"勉县\",\n      \"宁强县\",\n      \"略阳县\",\n      \"镇巴县\",\n      \"留坝县\",\n      \"佛坪县\"\n    ],\n    \"榆林市\": [\n      \"榆阳区\",\n      \"横山区\",\n      \"府谷县\",\n      \"靖边县\",\n      \"定边县\",\n      \"绥德县\",\n      \"米脂县\",\n      \"佳县\",\n      \"吴堡县\",\n      \"清涧县\",\n      \"子洲县\",\n      \"神木市\"\n    ],\n    \"安康市\": [\n      \"汉滨区\",\n      \"汉阴县\",\n      \"石泉县\",\n      \"宁陕县\",\n      \"紫阳县\",\n      \"岚皋县\",\n      \"平利县\",\n      \"镇坪县\",\n      \"旬阳市\",\n      \"白河县\"\n    ],\n    \"商洛市\": [\n      \"商州区\",\n      \"洛南县\",\n      \"丹凤县\",\n      \"商南县\",\n      \"山阳县\",\n      \"镇安县\",\n      \"柞水县\"\n    ]\n  },\n  \"甘肃省\": {\n    \"兰州市\": [\n      \"城关区\",\n      \"七里河区\",\n      \"西固区\",\n      \"安宁区\",\n      \"红古区\",\n      \"永登县\",\n      \"皋兰县\",\n      \"榆中县\"\n    ],\n    \"嘉峪关市\": [\n      \"嘉峪关市\"\n    ],\n    \"金昌市\": [\n      \"金川区\",\n      \"永昌县\"\n    ],\n    \"白银市\": [\n      \"白银区\",\n      \"平川区\",\n      \"靖远县\",\n      \"会宁县\",\n      \"景泰县\"\n    ],\n    \"天水市\": [\n      \"秦州区\",\n      \"麦积区\",\n      \"清水县\",\n      \"秦安县\",\n      \"甘谷县\",\n      \"武山县\",\n      \"张家川回族自治县\"\n    ],\n    \"武威市\": [\n      \"凉州区\",\n      \"民勤县\",\n      \"古浪县\",\n      \"天祝藏族自治县\"\n    ],\n    \"张掖市\": [\n      \"甘州区\",\n      \"肃南裕固族自治县\",\n      \"民乐县\",\n      \"临泽县\",\n      \"高台县\",\n      \"山丹县\"\n    ],\n    \"平凉市\": [\n      \"崆峒区\",\n      \"泾川县\",\n      \"灵台县\",\n      \"崇信县\",\n      \"庄浪县\",\n      \"静宁县\",\n      \"华亭市\"\n    ],\n    \"酒泉市\": [\n      \"肃州区\",\n      \"金塔县\",\n      \"瓜州县\",\n      \"肃北蒙古族自治县\",\n      \"阿克塞哈萨克族自治县\",\n      \"玉门市\",\n      \"敦煌市\"\n    ],\n    \"庆阳市\": [\n      \"西峰区\",\n      \"庆城县\",\n      \"环县\",\n      \"华池县\",\n      \"合水县\",\n      \"正宁县\",\n      \"宁县\",\n      \"镇原县\"\n    ],\n    \"定西市\": [\n      \"安定区\",\n      \"通渭县\",\n      \"陇西县\",\n      \"渭源县\",\n      \"临洮县\",\n      \"漳县\",\n      \"岷县\"\n    ],\n    \"陇南市\": [\n      \"武都区\",\n      \"成县\",\n      \"文县\",\n      \"宕昌县\",\n      \"康县\",\n      \"西和县\",\n      \"礼县\",\n      \"徽县\",\n      \"两当县\"\n    ],\n    \"临夏回族自治州\": [\n      \"临夏市\",\n      \"临夏县\",\n      \"康乐县\",\n      \"永靖县\",\n      \"广河县\",\n      \"和政县\",\n      \"东乡族自治县\",\n      \"积石山保安族东乡族撒拉族自治县\"\n    ],\n    \"甘南藏族自治州\": [\n      \"合作市\",\n      \"临潭县\",\n      \"卓尼县\",\n      \"舟曲县\",\n      \"迭部县\",\n      \"玛曲县\",\n      \"碌曲县\",\n      \"夏河县\"\n    ]\n  },\n  \"青海省\": {\n    \"西宁市\": [\n      \"城东区\",\n      \"城中区\",\n      \"城西区\",\n      \"城北区\",\n      \"湟中区\",\n      \"大通回族土族自治县\",\n      \"湟源县\"\n    ],\n    \"海东市\": [\n      \"乐都区\",\n      \"平安区\",\n      \"民和回族土族自治县\",\n      \"互助土族自治县\",\n      \"化隆回族自治县\",\n      \"循化撒拉族自治县\"\n    ],\n    \"海北藏族自治州\": [\n      \"门源回族自治县\",\n      \"祁连县\",\n      \"海晏县\",\n      \"刚察县\"\n    ],\n    \"黄南藏族自治州\": [\n      \"同仁市\",\n      \"尖扎县\",\n      \"泽库县\",\n      \"河南蒙古族自治县\"\n    ],\n    \"海南藏族自治州\": [\n      \"共和县\",\n      \"同德县\",\n      \"贵德县\",\n      \"兴海县\",\n      \"贵南县\"\n    ],\n    \"果洛藏族自治州\": [\n      \"玛沁县\",\n      \"班玛县\",\n      \"甘德县\",\n      \"达日县\",\n      \"久治县\",\n      \"玛多县\"\n    ],\n    \"玉树藏族自治州\": [\n      \"玉树市\",\n      \"杂多县\",\n      \"称多县\",\n      \"治多县\",\n      \"囊谦县\",\n      \"曲麻莱县\"\n    ],\n    \"海西蒙古族藏族自治州\": [\n      \"格尔木市\",\n      \"德令哈市\",\n      \"茫崖市\",\n      \"乌兰县\",\n      \"都兰县\",\n      \"天峻县\",\n      \"海西蒙古族藏族自治州直辖\"\n    ]\n  },\n  \"宁夏回族自治区\": {\n    \"银川市\": [\n      \"兴庆区\",\n      \"西夏区\",\n      \"金凤区\",\n      \"永宁县\",\n      \"贺兰县\",\n      \"灵武市\"\n    ],\n    \"石嘴山市\": [\n      \"大武口区\",\n      \"惠农区\",\n      \"平罗县\"\n    ],\n    \"吴忠市\": [\n      \"利通区\",\n      \"红寺堡区\",\n      \"盐池县\",\n      \"同心县\",\n      \"青铜峡市\"\n    ],\n    \"固原市\": [\n      \"原州区\",\n      \"西吉县\",\n      \"隆德县\",\n      \"泾源县\",\n      \"彭阳县\"\n    ],\n    \"中卫市\": [\n      \"沙坡头区\",\n      \"中宁县\",\n      \"海原县\"\n    ]\n  },\n  \"新疆维吾尔自治区\": {\n    \"乌鲁木齐市\": [\n      \"天山区\",\n      \"沙依巴克区\",\n      \"新市区\",\n      \"水磨沟区\",\n      \"头屯河区\",\n      \"达坂城区\",\n      \"米东区\",\n      \"乌鲁木齐县\"\n    ],\n    \"克拉玛依市\": [\n      \"独山子区\",\n      \"克拉玛依区\",\n      \"白碱滩区\",\n      \"乌尔禾区\"\n    ],\n    \"吐鲁番市\": [\n      \"高昌区\",\n      \"鄯善县\",\n      \"托克逊县\"\n    ],\n    \"哈密市\": [\n      \"伊州区\",\n      \"巴里坤哈萨克自治县\",\n      \"伊吾县\"\n    ],\n    \"昌吉回族自治州\": [\n      \"昌吉市\",\n      \"阜康市\",\n      \"呼图壁县\",\n      \"玛纳斯县\",\n      \"奇台县\",\n      \"吉木萨尔县\",\n      \"木垒哈萨克自治县\"\n    ],\n    \"博尔塔拉蒙古自治州\": [\n      \"博乐市\",\n      \"阿拉山口市\",\n      \"精河县\",\n      \"温泉县\"\n    ],\n    \"巴音郭楞蒙古自治州\": [\n      \"库尔勒市\",\n      \"轮台县\",\n      \"尉犁县\",\n      \"若羌县\",\n      \"且末县\",\n      \"焉耆回族自治县\",\n      \"和静县\",\n      \"和硕县\",\n      \"博湖县\"\n    ],\n    \"阿克苏地区\": [\n      \"阿克苏市\",\n      \"库车市\",\n      \"温宿县\",\n      \"沙雅县\",\n      \"新和县\",\n      \"拜城县\",\n      \"乌什县\",\n      \"阿瓦提县\",\n      \"柯坪县\"\n    ],\n    \"克孜勒苏柯尔克孜自治州\": [\n      \"阿图什市\",\n      \"阿克陶县\",\n      \"阿合奇县\",\n      \"乌恰县\"\n    ],\n    \"喀什地区\": [\n      \"喀什市\",\n      \"疏附县\",\n      \"疏勒县\",\n      \"英吉沙县\",\n      \"泽普县\",\n      \"莎车县\",\n      \"叶城县\",\n      \"麦盖提县\",\n      \"岳普湖县\",\n      \"伽师县\",\n      \"巴楚县\",\n      \"塔什库尔干塔吉克自治县\"\n    ],\n    \"和田地区\": [\n      \"和田市\",\n      \"和田县\",\n      \"墨玉县\",\n      \"皮山县\",\n      \"洛浦县\",\n      \"策勒县\",\n      \"于田县\",\n      \"民丰县\"\n    ],\n    \"伊犁哈萨克自治州\": [\n      \"伊宁市\",\n      \"奎屯市\",\n      \"霍尔果斯市\",\n      \"伊宁县\",\n      \"察布查尔锡伯自治县\",\n      \"霍城县\",\n      \"巩留县\",\n      \"新源县\",\n      \"昭苏县\",\n      \"特克斯县\",\n      \"尼勒克县\"\n    ],\n    \"塔城地区\": [\n      \"塔城市\",\n      \"乌苏市\",\n      \"额敏县\",\n      \"沙湾市\",\n      \"托里县\",\n      \"裕民县\",\n      \"和布克赛尔蒙古自治县\"\n    ],\n    \"阿勒泰地区\": [\n      \"阿勒泰市\",\n      \"布尔津县\",\n      \"富蕴县\",\n      \"福海县\",\n      \"哈巴河县\",\n      \"青河县\",\n      \"吉木乃县\"\n    ],\n    \"石河子市\": [\n      \"石河子市\"\n    ],\n    \"阿拉尔市\": [\n      \"阿拉尔市\"\n    ],\n    \"图木舒克市\": [\n      \"图木舒克市\"\n    ],\n    \"五家渠市\": [\n      \"五家渠市\"\n    ],\n    \"北屯市\": [\n      \"北屯市\"\n    ],\n    \"铁门关市\": [\n      \"铁门关市\"\n    ],\n    \"双河市\": [\n      \"双河市\"\n    ],\n    \"可克达拉市\": [\n      \"可克达拉市\"\n    ],\n    \"昆玉市\": [\n      \"昆玉市\"\n    ],\n    \"胡杨河市\": [\n      \"胡杨河市\"\n    ],\n    \"新星市\": [\n      \"新星市\"\n    ]\n  },\n  \"台湾省\": {\n    \"台北市\": [\n      \"大安区\",\n      \"大同区\",\n      \"内湖区\",\n      \"南港区\",\n      \"松山区\",\n      \"万华区\",\n      \"文山区\",\n      \"信义区\",\n      \"中山区\",\n      \"中正区\",\n      \"北投区\",\n      \"士林区\"\n    ],\n    \"新北市\": [\n      \"林口区\",\n      \"莺歌区\",\n      \"八里区\",\n      \"板桥区\",\n      \"淡水区\",\n      \"芦洲区\",\n      \"三重区\",\n      \"深坑区\",\n      \"树林区\",\n      \"泰山区\",\n      \"土城区\",\n      \"五股区\",\n      \"新庄区\",\n      \"永和区\",\n      \"中和区\",\n      \"万里区\",\n      \"金山区\",\n      \"石碇区\",\n      \"瑞芳区\",\n      \"贡寮区\",\n      \"坪林区\",\n      \"乌来区\",\n      \"三芝区\",\n      \"石门区\",\n      \"平溪区\",\n      \"双溪区\",\n      \"三峡区\",\n      \"汐止区\",\n      \"新店区\"\n    ],\n    \"台中市\": [\n      \"北区\",\n      \"北屯区\",\n      \"大安区\",\n      \"大肚区\",\n      \"大甲区\",\n      \"大里区\",\n      \"大雅区\",\n      \"东区\",\n      \"丰原区\",\n      \"后里区\",\n      \"龙井区\",\n      \"南区\",\n      \"南屯区\",\n      \"清水区\",\n      \"三义乡\",\n      \"沙鹿区\",\n      \"神冈区\",\n      \"石冈区\",\n      \"潭子区\",\n      \"通宵镇\",\n      \"外埔区\",\n      \"乌日区\",\n      \"梧栖区\",\n      \"西区\",\n      \"西屯区\",\n      \"苑里镇\",\n      \"中区\",\n      \"太平区\",\n      \"雾峰区\",\n      \"东势镇\",\n      \"和平乡\",\n      \"新社乡\"\n    ],\n    \"台南市\": [\n      \"安定区\",\n      \"安南区\",\n      \"安平区\",\n      \"北区\",\n      \"东区\",\n      \"永康区\",\n      \"归仁区\",\n      \"仁德区\",\n      \"关庙区\",\n      \"官田区\",\n      \"佳里区\",\n      \"六甲区\",\n      \"麻豆区\",\n      \"南区山\",\n      \"上区\",\n      \"善化区\",\n      \"西港区\",\n      \"西区\",\n      \"新市区\",\n      \"中区\",\n      \"新化区\",\n      \"新营区\",\n      \"左镇区\",\n      \"玉井区\",\n      \"南化区\",\n      \"楠西区\",\n      \"龙崎区\",\n      \"七股区\",\n      \"将军区\",\n      \"学甲区\",\n      \"北门区\",\n      \"后壁区\",\n      \"白河区\",\n      \"东山区\",\n      \"下营区\",\n      \"柳营区\",\n      \"盐水区\",\n      \"大内区\"\n    ],\n    \"高雄市\": [\n      \"阿莲区\",\n      \"大寮区\",\n      \"大社区\",\n      \"大树区\",\n      \"凤山区\",\n      \"冈山区\",\n      \"鼓山区\",\n      \"湖内区\",\n      \"林园区\",\n      \"苓雅区\",\n      \"路竹区\",\n      \"楠梓区\",\n      \"鸟松区\",\n      \"旗津区\",\n      \"前金区\",\n      \"前镇区\",\n      \"桥头区\",\n      \"仁武区\",\n      \"三民区\",\n      \"小港区\",\n      \"新兴区\",\n      \"盐埕区\",\n      \"燕巢区\",\n      \"永安区\",\n      \"梓官区\",\n      \"左营区\",\n      \"田寮乡\",\n      \"六龟乡\",\n      \"内门乡\",\n      \"茂林乡\",\n      \"桃源乡\",\n      \"甲仙乡\",\n      \"弥陀乡\",\n      \"旗山镇\",\n      \"美浓镇\",\n      \"那玛夏乡\",\n      \"茄萣乡\",\n      \"杉林乡\"\n    ],\n    \"基隆市\": [\n      \"七堵区\",\n      \"中山区\",\n      \"中正区\",\n      \"仁爱区\",\n      \"信义区\",\n      \"安乐区\",\n      \"暖暖区\"\n    ],\n    \"新竹市\": [\n      \"东区\",\n      \"北区\",\n      \"香山区\"\n    ],\n    \"嘉义市\": [\n      \"东区\",\n      \"西区\"\n    ],\n    \"桃园县\": [\n      \"桃园市\",\n      \"中坜市\",\n      \"平镇市\",\n      \"八德市\",\n      \"大溪镇\",\n      \"大园乡\",\n      \"观音乡\",\n      \"龟山乡\",\n      \"复兴乡\",\n      \"龙潭乡\",\n      \"芦竹乡\",\n      \"新屋乡\",\n      \"杨梅市\"\n    ],\n    \"新竹县\": [\n      \"竹北市\",\n      \"湖口乡\",\n      \"新丰乡\",\n      \"新埔镇\",\n      \"关西镇\",\n      \"芎林乡\",\n      \"竹东镇\",\n      \"峨眉乡\",\n      \"宝山乡\",\n      \"五峰乡\",\n      \"横山乡\",\n      \"北埔乡\",\n      \"尖石乡\"\n    ],\n    \"苗栗县\": [\n      \"竹南镇\",\n      \"头份镇\",\n      \"三湾乡\",\n      \"后龙镇\",\n      \"通霄镇\",\n      \"苑里镇\",\n      \"苗栗市\",\n      \"造桥乡\",\n      \"头屋乡\",\n      \"公馆乡\",\n      \"铜锣乡\",\n      \"三义乡\",\n      \"西湖乡\",\n      \"南庄乡\",\n      \"狮潭乡\",\n      \"大湖乡\",\n      \"泰安乡\",\n      \"卓兰镇\"\n    ],\n    \"彰化县\": [\n      \"北斗镇\",\n      \"草屯镇\",\n      \"大村乡\",\n      \"二水乡\",\n      \"芳苑乡\",\n      \"芬园乡\",\n      \"福兴乡\",\n      \"和美镇\",\n      \"花坛乡\",\n      \"鹿港镇\",\n      \"南投市\",\n      \"埤头乡\",\n      \"埔心乡\",\n      \"埔盐乡\",\n      \"社头乡\",\n      \"伸港乡\",\n      \"田尾乡\",\n      \"田中镇\",\n      \"溪湖镇\",\n      \"线西乡\",\n      \"秀水乡\",\n      \"永靖乡\",\n      \"员林镇\",\n      \"彰化市\",\n      \"二林镇\",\n      \"大城乡\",\n      \"竹塘乡\",\n      \"溪州乡\"\n    ],\n    \"南投县\": [\n      \"埔里镇\",\n      \"竹山镇\",\n      \"集集镇\",\n      \"名间乡\",\n      \"鹿谷乡\",\n      \"中寮乡\",\n      \"鱼池乡\",\n      \"国姓乡\",\n      \"水里乡\",\n      \"信义乡\",\n      \"仁爱乡\",\n      \"南投巿\",\n      \"草屯镇\",\n      \"琉球乡\"\n    ],\n    \"云林县\": [\n      \"大埤乡\",\n      \"土库镇\",\n      \"林内乡\",\n      \"莿桐乡\",\n      \"西螺镇\",\n      \"仑背乡\",\n      \"古坑乡\",\n      \"褒忠乡\",\n      \"东势乡\",\n      \"台西乡\",\n      \"麦寮乡\",\n      \"二仑乡\",\n      \"北港镇\",\n      \"水林乡\",\n      \"口湖乡\",\n      \"四湖乡\",\n      \"元长乡\",\n      \"斗六市\",\n      \"斗南镇\",\n      \"虎尾镇\"\n    ],\n    \"嘉义县\": [\n      \"竹崎乡\",\n      \"番路乡\",\n      \"梅山乡\",\n      \"阿里山乡\",\n      \"东石乡\",\n      \"大埔乡\",\n      \"溪口乡\",\n      \"义竹乡\",\n      \"布袋镇\",\n      \"大林镇\",\n      \"六脚乡\",\n      \"鹿草乡\",\n      \"民雄乡\",\n      \"朴子市\",\n      \"水上乡\",\n      \"太保市\",\n      \"新港乡\",\n      \"中埔乡\"\n    ],\n    \"屏东县\": [\n      \"屏东市\",\n      \"万丹乡\",\n      \"长治乡\",\n      \"内埔乡\",\n      \"潮州镇\",\n      \"三地门乡\",\n      \"来义乡\",\n      \"狮子乡\",\n      \"牡丹乡\",\n      \"高树乡\",\n      \"满州乡\",\n      \"万峦乡\",\n      \"春日乡\",\n      \"雾台乡\",\n      \"泰武乡\",\n      \"玛家乡\",\n      \"恒春镇\",\n      \"枋寮乡\",\n      \"东港镇\",\n      \"林边乡\",\n      \"枋山乡\",\n      \"里港乡\",\n      \"车城乡\",\n      \"盐埔乡\",\n      \"九如乡\",\n      \"新园乡\",\n      \"新埤乡\",\n      \"佳冬乡\",\n      \"竹田乡\",\n      \"南州乡\",\n      \"崁顶乡\",\n      \"麟洛乡\"\n    ],\n    \"宜兰县\": [\n      \"头城镇\",\n      \"宜兰市\",\n      \"礁溪乡\",\n      \"壮围乡\",\n      \"五结乡\",\n      \"罗东镇\",\n      \"员山乡\",\n      \"南澳乡\",\n      \"冬山乡\",\n      \"大同乡\",\n      \"三星乡\",\n      \"苏澳镇\"\n    ],\n    \"花莲县\": [\n      \"花莲巿\",\n      \"光复乡\",\n      \"玉里镇\",\n      \"新城乡\",\n      \"吉安乡\",\n      \"寿丰乡\",\n      \"凤林镇\",\n      \"丰滨乡\",\n      \"瑞穗乡\",\n      \"富里乡\",\n      \"秀林乡\",\n      \"万荣乡\",\n      \"卓溪乡\"\n    ],\n    \"台东县\": [\n      \"台东巿\",\n      \"成功镇\",\n      \"关山镇\",\n      \"卑南乡\",\n      \"大武乡\",\n      \"太麻里乡\",\n      \"东河乡\",\n      \"长滨乡\",\n      \"鹿野乡\",\n      \"池上乡\",\n      \"延平乡\",\n      \"海端乡\",\n      \"达仁乡\",\n      \"金峰乡\"\n    ],\n    \"澎湖县\": [\n      \"马公市\",\n      \"湖西乡\",\n      \"白沙乡\",\n      \"西屿乡\",\n      \"望安乡\",\n      \"七美乡\"\n    ],\n    \"金门县\": [\n      \"金城镇\",\n      \"金湖镇\",\n      \"金沙镇\",\n      \"金宁乡\",\n      \"烈屿乡\",\n      \"乌丘乡\"\n    ],\n    \"连江县\": [\n      \"南竿乡\",\n      \"北竿乡\",\n      \"莒光乡\",\n      \"东引乡\"\n    ]\n  },\n  \"香港特别行政区\": {\n    \"香港特别行政区\": [\n      \"中西區\",\n      \"灣仔區\",\n      \"東區\",\n      \"南區\",\n      \"油尖旺區\",\n      \"深水埗區\",\n      \"九龍城區\",\n      \"黃大仙區\",\n      \"觀塘區\",\n      \"荃灣區\",\n      \"屯門區\",\n      \"元朗區\",\n      \"北區\",\n      \"大埔區\",\n      \"西貢區\",\n      \"沙田區\",\n      \"葵青區\",\n      \"離島區\"\n    ]\n  },\n  \"澳门特别行政区\": {\n    \"澳门特别行政区\": [\n      \"花地瑪堂區\",\n      \"花王堂區\",\n      \"望德堂區\",\n      \"大堂區\",\n      \"風順堂區\",\n      \"嘉模堂區\",\n      \"路氹填海區\",\n      \"聖方濟各堂區\"\n    ]\n  },\n  \"海外\": {\n    \"其它\": [\n      \"其它\"\n    ]\n  }\n};\n","import { useState, useCallback, useEffect, useRef } from 'react';\nimport type {\n  IFieldValueService,\n  IUserOption,\n  IDeptOption,\n  ILinkDataOption,\n  IAddressOption,\n  ILocationOption,\n} from '@baishuyun/types';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { FieldWrapper, type FieldValueInputProps } from './index';\nimport { DropdownChevron, ClearIcon, CloseIcon, CheckIcon } from './icons';\nimport { SearchIcon } from '../../bs-icons';\nimport { ClearAllIcon } from '../../icons/clear-all-icon';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { chinaAddressData } from './china-address-data';\n\nconst inputBaseCls =\n  'h-[34px] px-[10px] py-[7px] rounded-[4px] bg-white border text-[14px] text-[#030303] placeholder:text-[#999999] focus:outline-none focus:border-[#0265FF] w-full disabled:bg-[#EFF0F6] disabled:cursor-not-allowed';\n\ninterface WidgetItem {\n  label: string;\n  value: string | number;\n}\n\nfunction getItems(field: FieldValueInputProps['field']): WidgetItem[] {\n  return field.widget?.items?.filter((it) => typeof it.label === 'string') as WidgetItem[] ?? [];\n}\n\nfunction usePortalContainer(attr: string) {\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n  const setTriggerRef = useCallback(\n    (node: HTMLButtonElement | null) => {\n      if (!node) { setPortalContainer(null); return; }\n      const rootNode = node.getRootNode();\n      if (rootNode instanceof ShadowRoot) {\n        const existing = rootNode.querySelector<HTMLElement>(`[${attr}]`);\n        if (existing) { setPortalContainer(existing); return; }\n        const container = document.createElement('div');\n        container.setAttribute(attr, 'true');\n        rootNode.appendChild(container);\n        setPortalContainer(container);\n      } else {\n        setPortalContainer(null);\n      }\n    },\n    [attr],\n  );\n  return { portalContainer, setTriggerRef };\n}\n\n// ── ComboInput (combo / linkdata / linkquery) ───────────────────────\n\nexport function ComboInput({ field, value, onChange, disabled, service, showLabel, showDescription }: FieldValueInputProps) {\n  const [open, setOpen] = useState(false);\n  const [asyncItems, setAsyncItems] = useState<ILinkDataOption[]>([]);\n  const [loading, setLoading] = useState(false);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-field-value-input-portal');\n\n  const staticItems = getItems(field);\n  const hasAsync = !!(field.widget?.type === 'linkdata' || field.widget?.type === 'linkquery');\n\n  const selectedLabel =\n    staticItems.find((it) => it.value === value)?.label ??\n    asyncItems.find((it) => it.value === value)?.label ??\n    '';\n\n  useEffect(() => {\n    if (hasAsync && open && service?.fetchLinkData) {\n      setLoading(true);\n      service.fetchLinkData(field.widget?.widgetName ?? '').then((data) => {\n        setAsyncItems(data);\n        setLoading(false);\n      });\n    }\n  }, [hasAsync, open, field.widget?.widgetName, service]);\n\n  const displayItems = hasAsync ? asyncItems : staticItems;\n\n  const handleSelect = useCallback(\n    (v: string | number) => {\n      onChange?.(v);\n      setOpen(false);\n    },\n    [onChange],\n  );\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between gap-[10px]',\n              inputBaseCls,\n              'text-left cursor-pointer',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0] hover:border-[#0265FF]',\n            )}\n          >\n            <span className={cn('truncate', !selectedLabel && 'text-[#999999]')}>\n              {selectedLabel || (field.description ?? `请选择${field.label}`)}\n            </span>\n            <DropdownChevron open={open} />\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[4px]\"\n          style={{ width: 'var(--radix-popover-trigger-width)' }}\n        >\n          {loading ? (\n            <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">加载中...</div>\n          ) : displayItems.length === 0 ? (\n            <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">暂无数据</div>\n          ) : (\n            <div className=\"flex flex-col gap-0 max-h-[240px] overflow-y-auto\">\n              {displayItems.map((item) => (\n                <button\n                  key={item.value}\n                  type=\"button\"\n                  onClick={() => handleSelect(item.value)}\n                  className={cn(\n                    'h-[34px] px-[10px] rounded-[4px] text-left text-[14px] leading-[normal]',\n                    value === item.value\n                      ? 'bg-[#F0F6FF] text-[#0265FF]'\n                      : 'text-[#030303] hover:bg-[#EFF0F6]',\n                    transCls,\n                  )}\n                >\n                  {item.label}\n                </button>\n              ))}\n            </div>\n          )}\n        </PopoverContent>\n      </Popover>\n    </FieldWrapper>\n  );\n}\n\n// ── CheckboxGroupInput ──────────────────────────────────────────────\n\nexport function CheckboxGroupInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  const items = getItems(field);\n  const selectedValues: string[] = Array.isArray(value) ? value.map(String) : [];\n\n  const toggle = useCallback(\n    (itemValue: string) => {\n      const next = selectedValues.includes(itemValue)\n        ? selectedValues.filter((v) => v !== itemValue)\n        : [...selectedValues, itemValue];\n      onChange?.(next);\n    },\n    [selectedValues, onChange],\n  );\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <div className=\"flex flex-col gap-[8px]\">\n        {items.map((item) => {\n          const checked = selectedValues.includes(String(item.value));\n          return (\n            <label\n              key={item.value}\n              className={cn(\n                'flex items-center gap-[8px] cursor-pointer text-[14px] text-[#030303]',\n                disabled && 'cursor-not-allowed opacity-50',\n              )}\n            >\n              <div\n                className={cn(\n                  'w-[16px] h-[16px] rounded-[2px] flex items-center justify-center shrink-0 border',\n                  transCls,\n                  checked ? 'bg-[#0265FF] border-[#0265FF]' : 'bg-white border-[#CCCCCC]',\n                  !disabled && 'hover:border-[#0265FF]',\n                )}\n              >\n                {checked && <CheckIcon />}\n              </div>\n              <input\n                type=\"checkbox\"\n                checked={checked}\n                onChange={() => toggle(String(item.value))}\n                disabled={disabled}\n                className=\"sr-only\"\n              />\n              {item.label}\n            </label>\n          );\n        })}\n      </div>\n    </FieldWrapper>\n  );\n}\n\n// ── RadioGroupInput ─────────────────────────────────────────────────\n\nexport function RadioGroupInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  const items = getItems(field);\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <div className=\"flex flex-col gap-[8px]\">\n        {items.map((item) => {\n          const checked = String(value) === String(item.value);\n          return (\n            <label\n              key={item.value}\n              className={cn(\n                'flex items-center gap-[8px] cursor-pointer text-[14px] text-[#030303]',\n                disabled && 'cursor-not-allowed opacity-50',\n              )}\n            >\n              <div\n                className={cn(\n                  'w-[16px] h-[16px] rounded-full flex items-center justify-center shrink-0 border',\n                  transCls,\n                  checked ? 'border-[#0265FF]' : 'border-[#CCCCCC]',\n                  !disabled && 'hover:border-[#0265FF]',\n                )}\n              >\n                {checked && <div className=\"w-[8px] h-[8px] rounded-full bg-[#0265FF]\" />}\n              </div>\n              <input\n                type=\"radio\"\n                checked={checked}\n                onChange={() => onChange?.(item.value)}\n                disabled={disabled}\n                className=\"sr-only\"\n              />\n              {item.label}\n            </label>\n          );\n        })}\n      </div>\n    </FieldWrapper>\n  );\n}\n\n// ── AsyncPicker (user / dept / usergroup / deptgroup) ──────────────\n\ntype PickerKind = 'user' | 'dept' | 'usergroup' | 'deptgroup';\n\ninterface AsyncPickerProps extends FieldValueInputProps {\n  kind: PickerKind;\n  multiple?: boolean;\n}\n\nfunction getSearchFn(kind: PickerKind, service?: IFieldValueService) {\n  switch (kind) {\n    case 'user': return service?.searchUsers;\n    case 'dept': return service?.searchDepts;\n    case 'usergroup': return service?.searchUserGroups;\n    case 'deptgroup': return service?.searchDeptGroups;\n  }\n}\n\nexport function AsyncPicker({ field, value, onChange, disabled, service, kind, multiple = false, showLabel, showDescription }: AsyncPickerProps) {\n  const [open, setOpen] = useState(false);\n  const [keyword, setKeyword] = useState('');\n  const [options, setOptions] = useState<Array<IUserOption | IDeptOption>>([]);\n  const [loading, setLoading] = useState(false);\n  const [selectedLabel, setSelectedLabel] = useState('');\n  const [nameMap, setNameMap] = useState<Record<string, string>>({});\n  const [isHovering, setIsHovering] = useState(false);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-field-value-picker-portal');\n\n  const searchFn = getSearchFn(kind, service);\n\n  const selectedIds: string[] = multiple\n    ? (Array.isArray(value) ? value.map(String) : [])\n    : [];\n  const selectedIdSet = new Set(selectedIds);\n\n  // Resolve labels for existing values\n  useEffect(() => {\n    if (multiple) {\n      if (!Array.isArray(value) || value.length === 0) {\n        setNameMap({});\n        return;\n      }\n      if (service?.searchUsers && kind === 'user') {\n        service.searchUsers('', { field: fieldName }).then((users) => {\n          const map: Record<string, string> = {};\n          users.forEach((u) => {\n            if (value.includes(u.id)) map[u.id] = u.name;\n          });\n          setNameMap(map);\n        });\n      }\n    } else {\n      if (!value || value === '') {\n        setSelectedLabel('');\n        return;\n      }\n      if (service?.searchUsers && kind === 'user') {\n        service.searchUsers('', { field: fieldName }).then((users) => {\n          const found = users.find((u) => u.id === value);\n          if (found) setSelectedLabel(found.name);\n        });\n      }\n    }\n  }, [value, service, kind, multiple]);\n\n  const fieldName = field.widget?.widgetName || \"\";\n  const doSearch = useCallback(\n    async (kw: string) => {\n      if (!searchFn) return;\n      setLoading(true);\n      try {\n        const results = await searchFn(kw, { field: fieldName });\n        setOptions(results);\n      } finally {\n        setLoading(false);\n      }\n    },\n    [searchFn],\n  );\n\n  useEffect(() => {\n    if (open) doSearch(keyword);\n  }, [open, keyword, doSearch]);\n\n  const handleSelect = useCallback(\n    (opt: IUserOption | IDeptOption) => {\n      if (multiple) {\n        const next = selectedIdSet.has(opt.id)\n          ? selectedIds.filter((id) => id !== opt.id)\n          : [...selectedIds, opt.id];\n        onChange?.(next);\n        setNameMap((prev) => {\n          if (selectedIdSet.has(opt.id)) {\n            const nextMap = { ...prev };\n            delete nextMap[opt.id];\n            return nextMap;\n          }\n          return { ...prev, [opt.id]: opt.name };\n        });\n      } else {\n        onChange?.(opt.id);\n        setSelectedLabel(opt.name);\n        setOpen(false);\n        setKeyword('');\n      }\n    },\n    [onChange, multiple, selectedIds, selectedIdSet],\n  );\n\n  const handleClear = useCallback(() => {\n    if (multiple) {\n      onChange?.([]);\n      setNameMap({});\n    } else {\n      onChange?.('');\n      setSelectedLabel('');\n    }\n  }, [onChange, multiple]);\n\n  const handleRemoveMultiple = useCallback(\n    (id: string, e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.(selectedIds.filter((v) => v !== id));\n      setNameMap((prev) => {\n        const next = { ...prev };\n        delete next[id];\n        return next;\n      });\n    },\n    [selectedIds, onChange],\n  );\n\n  const handleClearAllMultiple = useCallback(\n    (e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.([]);\n      setNameMap({});\n    },\n    [onChange],\n  );\n\n  const hasSelectionMulti = multiple && selectedIds.length > 0;\n  const showClearMulti = hasSelectionMulti && isHovering;\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            onMouseEnter={() => setIsHovering(true)}\n            onMouseLeave={() => setIsHovering(false)}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px] gap-2.5',\n              'bg-white border rounded-[4px]',\n              'py-[7px]',\n              (multiple ? hasSelectionMulti : !!selectedLabel) ? 'pl-[4px] pr-[10px]' : 'px-[10px]',\n              'text-left cursor-pointer',\n              'hover:border-[#0265FF]',\n              disabled && 'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0]',\n              transCls,\n            )}\n          >\n            {multiple ? (\n              hasSelectionMulti ? (\n                <>\n                  <div className=\"flex items-center gap-[4px] min-w-0 flex-1 overflow-x-auto scrollbar-hide\">\n                    {selectedIds.map((id) => (\n                      <span\n                        key={id}\n                        className=\"flex items-center gap-[4px] bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px] shrink-0\"\n                      >\n                        <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                          {nameMap[id] || id}\n                        </span>\n                        <span\n                          className=\"cursor-pointer flex items-center shrink-0\"\n                          onClick={(e) => handleRemoveMultiple(id, e)}\n                        >\n                          <CloseIcon />\n                        </span>\n                      </span>\n                    ))}\n                  </div>\n                  {showClearMulti ? (\n                    <span className=\"cursor-pointer flex items-center shrink-0\" onClick={handleClearAllMultiple}>\n                      <ClearAllIcon />\n                    </span>\n                  ) : (\n                    <DropdownChevron open={open} />\n                  )}\n                </>\n              ) : (\n                <>\n                  <span className=\"text-[14px] text-[#999999] leading-[normal] truncate\">\n                    {field.description ?? `请选择${field.label}`}\n                  </span>\n                  <DropdownChevron open={open} />\n                </>\n              )\n            ) : (\n              <>\n                <span className={cn('truncate', !selectedLabel && 'text-[#999999]')}>\n                  {selectedLabel || (field.description ?? `请选择${field.label}`)}\n                </span>\n                <div className=\"flex items-center gap-[4px] shrink-0\">\n                  {!!selectedLabel && (\n                    <span\n                      role=\"button\"\n                      tabIndex={-1}\n                      onClick={(e) => { e.stopPropagation(); handleClear(); }}\n                      className=\"flex items-center justify-center w-[18px] h-[18px] hover:bg-[#EFF0F6] rounded-full\"\n                    >\n                      <ClearIcon />\n                    </span>\n                  )}\n                  <DropdownChevron open={open} />\n                </div>\n              </>\n            )}\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[8px]\"\n          style={{ width: 'var(--radix-popover-trigger-width)' }}\n        >\n          <div className=\"flex items-center gap-[8px] px-[6px] mb-[4px] h-[34px] bg-[#F6F7FA] rounded-[4px]\">\n            <SearchIcon />\n            <input\n              type=\"text\"\n              value={keyword}\n              onChange={(e) => setKeyword(e.target.value)}\n              placeholder={`搜索${field.label}`}\n              className=\"flex-1 bg-transparent text-[14px] text-[#030303] placeholder:text-[#999999] outline-none border-none\"\n              autoFocus\n            />\n          </div>\n          <div className=\"flex flex-col gap-0 max-h-[200px] overflow-y-auto\">\n            {loading ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">搜索中...</div>\n            ) : options.length === 0 ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">暂无数据</div>\n            ) : (\n              options.map((opt) => {\n                const isSelected = multiple ? selectedIdSet.has(opt.id) : value === opt.id;\n                return (\n                <button\n                  key={opt.id}\n                  type=\"button\"\n                  onClick={() => handleSelect(opt)}\n                  className={cn(\n                    'flex items-center gap-[10px] h-[34px] px-[10px] rounded-[4px] text-left',\n                    isSelected\n                      ? 'bg-[#F0F6FF] text-[#0265FF]'\n                      : 'text-[#030303] hover:bg-[#EFF0F6]',\n                    transCls,\n                  )}\n                >\n                  {multiple && (\n                    <div\n                      className={cn(\n                        'w-[14px] h-[14px] rounded-[2px] flex items-center justify-center shrink-0 border',\n                        isSelected ? 'bg-[#0265FF] border-[#0265FF]' : 'bg-white border-[#CCCCCC]',\n                      )}\n                    >\n                      {isSelected && <CheckIcon />}\n                    </div>\n                  )}\n                  {'avatar' in opt && opt.avatar && (\n                    <img src={opt.avatar} alt=\"\" className=\"w-[20px] h-[20px] rounded-full\" />\n                  )}\n                  <span className=\"text-[14px]\">{opt.name}</span>\n                </button>\n                );\n              })\n            )}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </FieldWrapper>\n  );\n}\n\n// ── TextMultiSelect (in/nin operators for text fields) ───────────────\n\nexport function TextMultiSelect({ field, value, onChange, disabled, service, showLabel, showDescription }: FieldValueInputProps) {\n  const [open, setOpen] = useState(false);\n  const [keyword, setKeyword] = useState('');\n  const [options, setOptions] = useState<ILinkDataOption[]>([]);\n  const [loading, setLoading] = useState(false);\n  const [labelMap, setLabelMap] = useState<Record<string, string>>({});\n  const [isHovering, setIsHovering] = useState(false);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-field-value-picker-portal');\n\n  const selectedValues: string[] = Array.isArray(value) ? value.map(String) : [];\n  const selectedSet = new Set(selectedValues);\n\n  useEffect(() => {\n    if (open && service?.searchDistinctValues) {\n      setLoading(true);\n      service.searchDistinctValues(field, keyword).then((data) => {\n        setOptions(data);\n        const map: Record<string, string> = {};\n        data.forEach((opt) => { map[opt.value] = opt.label; });\n        setLabelMap(map);\n        setLoading(false);\n      });\n    }\n  }, [open, keyword, field, service]);\n\n  const handleToggle = useCallback(\n    (opt: ILinkDataOption) => {\n      const next = selectedSet.has(opt.value)\n        ? selectedValues.filter((v) => v !== opt.value)\n        : [...selectedValues, opt.value];\n      onChange?.(next);\n    },\n    [selectedValues, selectedSet, onChange],\n  );\n\n  const handleClearAll = useCallback(\n    (e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.([]);\n    },\n    [onChange],\n  );\n\n  const handleRemove = useCallback(\n    (val: string, e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.(selectedValues.filter((v) => v !== val));\n    },\n    [selectedValues, onChange],\n  );\n\n  const hasSelection = selectedValues.length > 0;\n  const showClear = hasSelection && isHovering;\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            onMouseEnter={() => setIsHovering(true)}\n            onMouseLeave={() => setIsHovering(false)}\n            className={cn(\n              'flex items-center justify-between w-full h-[34px] gap-2.5',\n              'bg-white border rounded-[4px]',\n              'py-[7px]',\n              hasSelection ? 'pl-[4px] pr-[10px]' : 'px-[10px]',\n              'text-left cursor-pointer',\n              'hover:border-[#0265FF]',\n              disabled && 'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0]',\n              transCls,\n            )}\n          >\n            {hasSelection ? (\n              <>\n                <div className=\"flex items-center gap-[4px] min-w-0 flex-1 overflow-x-auto scrollbar-hide\">\n                  {selectedValues.map((val) => (\n                    <span\n                      key={val}\n                      className=\"flex items-center gap-[4px] bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px] shrink-0\"\n                    >\n                      <span className=\"text-[14px] text-[#030303] leading-[normal]\">\n                        {labelMap[val] || val}\n                      </span>\n                      <span\n                        className=\"cursor-pointer flex items-center shrink-0\"\n                        onClick={(e) => handleRemove(val, e)}\n                      >\n                        <CloseIcon />\n                      </span>\n                    </span>\n                  ))}\n                </div>\n                {showClear ? (\n                  <span className=\"cursor-pointer flex items-center shrink-0\" onClick={handleClearAll}>\n                    <ClearAllIcon />\n                  </span>\n                ) : (\n                  <DropdownChevron open={open} />\n                )}\n              </>\n            ) : (\n              <>\n                <span className=\"text-[14px] text-[#999999] leading-[normal] truncate\">\n                  {field.description ?? `请输入${field.label}`}\n                </span>\n                <DropdownChevron open={open} />\n              </>\n            )}\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[8px]\"\n          style={{ width: 'var(--radix-popover-trigger-width)' }}\n        >\n          <div className=\"flex items-center gap-[8px] px-[6px] mb-[4px] h-[34px] bg-[#F6F7FA] rounded-[4px]\">\n            <SearchIcon />\n            <input\n              type=\"text\"\n              value={keyword}\n              onChange={(e) => setKeyword(e.target.value)}\n              placeholder=\"输入关键字搜索\"\n              className=\"flex-1 bg-transparent text-[14px] text-[#030303] placeholder:text-[#999999] outline-none border-none\"\n              autoFocus\n            />\n          </div>\n          <div className=\"flex flex-col gap-0 max-h-[200px] overflow-y-auto\">\n            {loading ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">搜索中...</div>\n            ) : options.length === 0 ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">暂无数据</div>\n            ) : (\n              options.map((opt) => {\n                const checked = selectedSet.has(opt.value);\n                return (\n                  <button\n                    key={opt.value}\n                    type=\"button\"\n                    onClick={() => handleToggle(opt)}\n                    className={cn(\n                      'flex items-center gap-[10px] h-[34px] px-[10px] rounded-[4px] text-left',\n                      checked\n                        ? 'bg-[#F0F6FF] text-[#0265FF]'\n                        : 'text-[#030303] hover:bg-[#EFF0F6]',\n                      transCls,\n                    )}\n                  >\n                    <div\n                      className={cn(\n                        'w-[14px] h-[14px] rounded-[2px] flex items-center justify-center shrink-0 border',\n                        checked ? 'bg-[#0265FF] border-[#0265FF]' : 'bg-white border-[#CCCCCC]',\n                      )}\n                    >\n                      {checked && <CheckIcon />}\n                    </div>\n                    <span className=\"text-[14px]\">{opt.label}</span>\n                  </button>\n                );\n              })\n            )}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </FieldWrapper>\n  );\n}\n\n// ── CascadingAddressInput (province → city → district) ──────────────\n\nconst provinceList = Object.keys(chinaAddressData);\n\ninterface AddressValue {\n  province?: string;\n  city?: string;\n  district?: string;\n}\n\nexport function CascadingAddressInput({ field, value, onChange, disabled, showLabel, showDescription }: FieldValueInputProps) {\n  const [open, setOpen] = useState(false);\n  const [isHovering, setIsHovering] = useState(false);\n  const provinceRef = useRef<HTMLDivElement>(null);\n  const cityRef = useRef<HTMLDivElement>(null);\n  const districtRef = useRef<HTMLDivElement>(null);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-field-value-picker-portal');\n\n  const addrValue: AddressValue =\n    value && typeof value === 'object' && !Array.isArray(value)\n      ? (value as AddressValue)\n      : {};\n\n  const selectedProvince = addrValue.province || '';\n  const selectedCity = addrValue.city || '';\n  const selectedDistrict = addrValue.district || '';\n\n  const cityList = selectedProvince && chinaAddressData[selectedProvince]\n    ? Object.keys(chinaAddressData[selectedProvince])\n    : [];\n  const districtList = selectedProvince && selectedCity && chinaAddressData[selectedProvince]?.[selectedCity]\n    ? chinaAddressData[selectedProvince][selectedCity]\n    : [];\n\n  const displayText =\n    selectedProvince\n      ? `${selectedProvince}${selectedCity ? ` ${selectedCity}` : ''}${selectedDistrict ? ` ${selectedDistrict}` : ''}`\n      : '';\n\n  const handleSelectProvince = useCallback(\n    (province: string) => {\n      if (province === selectedProvince) return;\n      onChange?.({ province, city: undefined, district: undefined });\n      setTimeout(() => {\n        const el = cityRef.current;\n        if (el) el.scrollTop = 0;\n      }, 0);\n    },\n    [onChange, selectedProvince],\n  );\n\n  const handleSelectCity = useCallback(\n    (city: string) => {\n      if (city === selectedCity) return;\n      onChange?.({ province: selectedProvince, city, district: undefined });\n      setTimeout(() => {\n        const el = districtRef.current;\n        if (el) el.scrollTop = 0;\n      }, 0);\n    },\n    [onChange, selectedProvince, selectedCity],\n  );\n\n  const handleSelectDistrict = useCallback(\n    (district: string) => {\n      onChange?.({ province: selectedProvince, city: selectedCity, district });\n      setOpen(false);\n    },\n    [onChange, selectedProvince, selectedCity],\n  );\n\n  const handleClear = useCallback(\n    (e: React.MouseEvent) => {\n      e.stopPropagation();\n      onChange?.({});\n    },\n    [onChange],\n  );\n\n  const scrollToSelected = useCallback(() => {\n    if (provinceRef.current) {\n      const idx = provinceList.indexOf(selectedProvince);\n      if (idx >= 0) provinceRef.current.scrollTop = idx * 32;\n    }\n    if (cityRef.current) {\n      const idx = cityList.indexOf(selectedCity);\n      if (idx >= 0) cityRef.current.scrollTop = idx * 32;\n    }\n    if (districtRef.current) {\n      const idx = districtList.indexOf(selectedDistrict);\n      if (idx >= 0) districtRef.current.scrollTop = idx * 32;\n    }\n  }, [selectedProvince, selectedCity, selectedDistrict, cityList, districtList]);\n\n  useEffect(() => {\n    if (open) scrollToSelected();\n  }, [open, scrollToSelected]);\n\n  const hasValue = !!displayText;\n  const showClear = hasValue && isHovering;\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            onMouseEnter={() => setIsHovering(true)}\n            onMouseLeave={() => setIsHovering(false)}\n            className={cn(\n              'flex items-center justify-between gap-[10px]',\n              inputBaseCls,\n              'text-left cursor-pointer',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0] hover:border-[#0265FF]',\n            )}\n          >\n            <span className={cn('truncate', !displayText && 'text-[#999999]')}>\n              {displayText || (field.description ?? `请选择${field.label}`)}\n            </span>\n            {showClear ? (\n              <span className=\"cursor-pointer flex items-center shrink-0\" onClick={handleClear}>\n                <ClearAllIcon />\n              </span>\n            ) : (\n              <DropdownChevron open={open} />\n            )}\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-0\"\n          style={{ width: '520px' }}\n        >\n          <div className=\"flex h-[280px]\">\n            {/* Province Column */}\n            <div className=\"flex-1 border-r border-[#F0F0F0] flex flex-col min-w-0\">\n              <div className=\"h-[34px] px-[12px] flex items-center text-[12px] text-[#999999] bg-[#FAFAFA] shrink-0 border-b border-[#F0F0F0]\">\n                省份\n              </div>\n              <div ref={provinceRef} className=\"flex-1 overflow-y-auto\">\n                {provinceList.map((province) => (\n                  <button\n                    key={province}\n                    type=\"button\"\n                    onClick={() => handleSelectProvince(province)}\n                    className={cn(\n                      'w-full h-[32px] px-[12px] flex items-center justify-between text-left text-[14px]',\n                      transCls,\n                      province === selectedProvince\n                        ? 'bg-[#F0F6FF] text-[#0265FF]'\n                        : 'text-[#030303] hover:bg-[#EFF0F6]',\n                    )}\n                  >\n                    <span className=\"truncate\">{province}</span>\n                    {chinaAddressData[province] && (\n                      <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0 ml-[4px]\">\n                        <path d=\"M4.5 2.5L8 6L4.5 9.5\" stroke={province === selectedProvince ? '#0265FF' : '#999999'} strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n                      </svg>\n                    )}\n                  </button>\n                ))}\n              </div>\n            </div>\n            {/* City Column */}\n            <div className=\"flex-1 border-r border-[#F0F0F0] flex flex-col min-w-0\">\n              <div className=\"h-[34px] px-[12px] flex items-center text-[12px] text-[#999999] bg-[#FAFAFA] shrink-0 border-b border-[#F0F0F0]\">\n                城市\n              </div>\n              <div ref={cityRef} className=\"flex-1 overflow-y-auto\">\n                {cityList.length === 0 ? (\n                  <div className=\"px-[12px] py-[16px] text-[14px] text-[#999999] text-center\">请选择省份</div>\n                ) : (\n                  cityList.map((city) => (\n                    <button\n                      key={city}\n                      type=\"button\"\n                      onClick={() => handleSelectCity(city)}\n                      className={cn(\n                        'w-full h-[32px] px-[12px] flex items-center justify-between text-left text-[14px]',\n                        transCls,\n                        city === selectedCity\n                          ? 'bg-[#F0F6FF] text-[#0265FF]'\n                          : 'text-[#030303] hover:bg-[#EFF0F6]',\n                      )}\n                    >\n                      <span className=\"truncate\">{city}</span>\n                      {selectedProvince && chinaAddressData[selectedProvince]?.[city] && (\n                        <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0 ml-[4px]\">\n                          <path d=\"M4.5 2.5L8 6L4.5 9.5\" stroke={city === selectedCity ? '#0265FF' : '#999999'} strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n                        </svg>\n                      )}\n                    </button>\n                  ))\n                )}\n              </div>\n            </div>\n            {/* District Column */}\n            <div className=\"flex-1 flex flex-col min-w-0\">\n              <div className=\"h-[34px] px-[12px] flex items-center text-[12px] text-[#999999] bg-[#FAFAFA] shrink-0 border-b border-[#F0F0F0]\">\n                区/县\n              </div>\n              <div ref={districtRef} className=\"flex-1 overflow-y-auto\">\n                {districtList.length === 0 ? (\n                  <div className=\"px-[12px] py-[16px] text-[14px] text-[#999999] text-center\">请选择城市</div>\n                ) : (\n                  districtList.map((district) => (\n                    <button\n                      key={district}\n                      type=\"button\"\n                      onClick={() => handleSelectDistrict(district)}\n                      className={cn(\n                        'w-full h-[32px] px-[12px] flex items-center text-left text-[14px]',\n                        transCls,\n                        district === selectedDistrict\n                          ? 'bg-[#F0F6FF] text-[#0265FF]'\n                          : 'text-[#030303] hover:bg-[#EFF0F6]',\n                      )}\n                    >\n                      <span className=\"truncate\">{district}</span>\n                    </button>\n                  ))\n                )}\n              </div>\n            </div>\n          </div>\n        </PopoverContent>\n      </Popover>\n    </FieldWrapper>\n  );\n}\n\n// ── AddressInput ────────────────────────────────────────────────────\n\nexport function AddressInput({ field, value, onChange, disabled, service, showLabel, showDescription }: FieldValueInputProps) {\n  const [open, setOpen] = useState(false);\n  const [keyword, setKeyword] = useState('');\n  const [options, setOptions] = useState<IAddressOption[]>([]);\n  const [loading, setLoading] = useState(false);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-field-value-picker-portal');\n\n  const selectedLabel =\n    value && typeof value === 'object' && 'province' in (value as Record<string, unknown>)\n      ? `${(value as IAddressOption).province}${(value as IAddressOption).city}${(value as IAddressOption).district}`\n      : typeof value === 'string'\n        ? value\n        : '';\n\n  useEffect(() => {\n    if (open && service?.searchAddress) {\n      setLoading(true);\n      service.searchAddress(keyword).then((data) => {\n        setOptions(data);\n        setLoading(false);\n      });\n    }\n  }, [open, keyword, service]);\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between gap-[10px]',\n              inputBaseCls,\n              'text-left cursor-pointer',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0] hover:border-[#0265FF]',\n            )}\n          >\n            <span className={cn('truncate', !selectedLabel && 'text-[#999999]')}>\n              {selectedLabel || (field.description ?? `请选择${field.label}`)}\n            </span>\n            <DropdownChevron open={open} />\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[8px]\"\n          style={{ width: 'var(--radix-popover-trigger-width)' }}\n        >\n          <div className=\"flex items-center gap-[8px] px-[6px] mb-[4px] h-[34px] bg-[#F6F7FA] rounded-[4px]\">\n            <SearchIcon />\n            <input\n              type=\"text\"\n              value={keyword}\n              onChange={(e) => setKeyword(e.target.value)}\n              placeholder={`搜索${field.label}`}\n              className=\"flex-1 bg-transparent text-[14px] text-[#030303] placeholder:text-[#999999] outline-none border-none\"\n              autoFocus\n            />\n          </div>\n          <div className=\"flex flex-col gap-0 max-h-[200px] overflow-y-auto\">\n            {loading ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">搜索中...</div>\n            ) : options.length === 0 ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">暂无数据</div>\n            ) : (\n              options.map((opt, i) => (\n                <button\n                  key={i}\n                  type=\"button\"\n                  onClick={() => {\n                    onChange?.(opt);\n                    setOpen(false);\n                    setKeyword('');\n                  }}\n                  className={cn(\n                    'h-[34px] px-[10px] rounded-[4px] text-left text-[14px] leading-[normal]',\n                    'text-[#030303] hover:bg-[#EFF0F6]',\n                    transCls,\n                  )}\n                >\n                  {opt.province}{opt.city}{opt.district}\n                </button>\n              ))\n            )}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </FieldWrapper>\n  );\n}\n\n// ── LocationInput ───────────────────────────────────────────────────\n\nexport function LocationInput({ field, value, onChange, disabled, service, showLabel, showDescription }: FieldValueInputProps) {\n  const [open, setOpen] = useState(false);\n  const [keyword, setKeyword] = useState('');\n  const [options, setOptions] = useState<ILocationOption[]>([]);\n  const [loading, setLoading] = useState(false);\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-field-value-picker-portal');\n\n  const selectedLabel =\n    value && typeof value === 'object' && 'detail' in (value as Record<string, unknown>)\n      ? (value as ILocationOption).detail\n      : typeof value === 'string'\n        ? value\n        : '';\n\n  useEffect(() => {\n    if (open && service?.searchLocation) {\n      setLoading(true);\n      service.searchLocation(keyword).then((data) => {\n        setOptions(data);\n        setLoading(false);\n      });\n    }\n  }, [open, keyword, service]);\n\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between gap-[10px]',\n              inputBaseCls,\n              'text-left cursor-pointer',\n              open ? 'border-[#0265FF]' : 'border-[#E0E0E0] hover:border-[#0265FF]',\n            )}\n          >\n            <span className={cn('truncate', !selectedLabel && 'text-[#999999]')}>\n              {selectedLabel || (field.description ?? `请选择${field.label}`)}\n            </span>\n            <DropdownChevron open={open} />\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[8px]\"\n          style={{ width: 'var(--radix-popover-trigger-width)' }}\n        >\n          <div className=\"flex items-center gap-[8px] px-[6px] mb-[4px] h-[34px] bg-[#F6F7FA] rounded-[4px]\">\n            <SearchIcon />\n            <input\n              type=\"text\"\n              value={keyword}\n              onChange={(e) => setKeyword(e.target.value)}\n              placeholder={`搜索${field.label}`}\n              className=\"flex-1 bg-transparent text-[14px] text-[#030303] placeholder:text-[#999999] outline-none border-none\"\n              autoFocus\n            />\n          </div>\n          <div className=\"flex flex-col gap-0 max-h-[200px] overflow-y-auto\">\n            {loading ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">搜索中...</div>\n            ) : options.length === 0 ? (\n              <div className=\"px-[10px] py-[8px] text-[14px] text-[#999999]\">暂无数据</div>\n            ) : (\n              options.map((opt, i) => (\n                <button\n                  key={i}\n                  type=\"button\"\n                  onClick={() => {\n                    onChange?.(opt);\n                    setOpen(false);\n                    setKeyword('');\n                  }}\n                  className={cn(\n                    'h-[34px] px-[10px] rounded-[4px] text-left text-[14px] leading-[normal]',\n                    'text-[#030303] hover:bg-[#EFF0F6]',\n                    transCls,\n                  )}\n                >\n                  {opt.province}{opt.city}{opt.district} {opt.detail}\n                </button>\n              ))\n            )}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </FieldWrapper>\n  );\n}\n","import type { IField } from '@baishuyun/types';\nimport { FieldWrapper } from './index';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\n\n// ── SeparatorDisplay ────────────────────────────────────────────────\n\nexport function SeparatorDisplay({ field }: { field: IField }) {\n  return (\n    <div className=\"flex items-center gap-[8px] py-[8px]\">\n      <div className=\"flex-1 h-px bg-[#E0E0E0]\" />\n      {field.label && (\n        <span className=\"text-[12px] text-[#999999] shrink-0\">{field.label}</span>\n      )}\n      <div className=\"flex-1 h-px bg-[#E0E0E0]\" />\n    </div>\n  );\n}\n\n// ── SerialNumberDisplay ─────────────────────────────────────────────\n\nexport function SerialNumberDisplay({ field, value, showLabel, showDescription }: {\n  field: IField;\n  value?: unknown;\n  showLabel?: boolean;\n  showDescription?: boolean;\n}) {\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <span className=\"text-[14px] text-[#999999] leading-[34px]\">\n        {typeof value === 'string' ? value : '系统自动生成'}\n      </span>\n    </FieldWrapper>\n  );\n}\n\n// ── ButtonDisplay ───────────────────────────────────────────────────\n\nexport function ButtonDisplay({ field }: { field: IField }) {\n  return (\n    <div className=\"pt-[20px]\">\n      <button\n        type=\"button\"\n        className={cn(\n          'inline-flex items-center justify-center h-[34px] px-[20px] rounded-[4px]',\n          'bg-[#0265FF] text-[14px] text-white',\n          'hover:bg-[#0255DF]',\n          transCls,\n        )}\n      >\n        {field.label}\n      </button>\n    </div>\n  );\n}\n\n// ── SubformPlaceholder ──────────────────────────────────────────────\n\nexport function SubformPlaceholder({ field, showLabel, showDescription }: {\n  field: IField;\n  showLabel?: boolean;\n  showDescription?: boolean;\n}) {\n  return (\n    <FieldWrapper field={field} showLabel={showLabel} showDescription={showDescription}>\n      <div className=\"h-[34px] px-[10px] rounded-[4px] bg-[#F6F7FA] border border-dashed border-[#CCCCCC] text-[14px] text-[#999999] leading-[34px] text-center\">\n        子表单字段（{field.widget?.widgetName ?? field.label}）\n      </div>\n    </FieldWrapper>\n  );\n}\n","import type { IField, IFieldValueService, relationalOperator } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\n\n// ── Sub-component imports ───────────────────────────────────────────\n\nimport { TextInput, NumberInput, TextareaInput, PasswordInput, DateTimeInput, UploadInput, RangeNumberInput, RangeDateTimeInput } from './inputs';\nimport { ComboInput, CheckboxGroupInput, RadioGroupInput, AsyncPicker, CascadingAddressInput, TextMultiSelect } from './picker-inputs';\nimport { SeparatorDisplay, ButtonDisplay, SubformPlaceholder } from './display';\n\n// ── Props ───────────────────────────────────────────────────────────\n\nexport interface FieldValueInputProps {\n  field: IField;\n  value?: unknown;\n  onChange?: (value: unknown) => void;\n  service?: IFieldValueService;\n  operator?: relationalOperator;\n  disabled?: boolean;\n  showLabel?: boolean;\n  showDescription?: boolean;\n  className?: string;\n}\n\n// ── Shared styles ───────────────────────────────────────────────────\n\nconst labelCls = 'text-[14px] font-bold text-[#030303] leading-[20px]';\nconst descriptionCls = 'text-[12px] text-[#999999] leading-[18px]';\nconst requiredCls = 'text-[#FF5631]';\n\n// ── Utility ─────────────────────────────────────────────────────────\n\nfunction isRequired(field: IField): boolean {\n  return field.widget?.allowBlank === false;\n}\n\n// ── Shared sub-components ───────────────────────────────────────────\n\nfunction FieldLabel({ field }: { field: IField }) {\n  return (\n    <label className={cn(labelCls, 'block mb-[4px]')}>\n      {isRequired(field) && <span className={requiredCls}>*</span>}\n      {field.label}\n    </label>\n  );\n}\n\nfunction FieldDescription({ field }: { field: IField }) {\n  if (!field.description) return null;\n  return <p className={cn(descriptionCls, 'mb-[6px]')}>{field.description}</p>;\n}\n\nexport function FieldWrapper({\n  field,\n  showLabel = false,\n  showDescription = false,\n  className,\n  children,\n}: {\n  field: IField;\n  showLabel?: boolean;\n  showDescription?: boolean;\n  className?: string;\n  children: React.ReactNode;\n}) {\n  return (\n    <div className={cn('flex flex-col', className)}>\n      {showLabel && <FieldLabel field={field} />}\n      {showDescription && <FieldDescription field={field} />}\n      {children}\n    </div>\n  );\n}\n\n// ── Main Component ──────────────────────────────────────────────────\n\nexport const FieldValueInput = (props: FieldValueInputProps) => {\n  const { field, operator } = props;\n  const widgetType = field.widget?.type;\n\n  switch (widgetType) {\n    // ── text / sn: in/nin → multi-select, otherwise → text input ──\n    case 'text':\n    case 'sn':\n      if (operator && (operator === 'in' || operator === 'nin')) {\n        return <TextMultiSelect {...props} />;\n      }\n      return <TextInput {...props} />;\n\n    // ── number: range → min/max, otherwise → single number input ──\n    case 'number':\n      if (operator === 'range') {\n        return <RangeNumberInput {...props} />;\n      }\n      return <NumberInput {...props} />;\n\n    // ── datetime: range → min/max, otherwise → single datetime input ──\n    case 'datetime':\n      if (operator === 'range') {\n        return <RangeDateTimeInput {...props} />;\n      }\n      return <DateTimeInput {...props} />;\n\n    // ── user / dept / usergroup / deptgroup: multi-op → multi-select ──\n    case 'user':\n      return <AsyncPicker {...props} kind=\"user\" multiple={operator === 'in' || operator === 'nin'} />;\n    case 'dept':\n      return <AsyncPicker {...props} kind=\"dept\" multiple={operator === 'in' || operator === 'nin'} />;\n    case 'usergroup':\n      return <AsyncPicker {...props} kind=\"usergroup\" multiple={operator === 'in' || operator === 'nin' || operator === 'all'} />;\n    case 'deptgroup':\n      return <AsyncPicker {...props} kind=\"deptgroup\" multiple={operator === 'in' || operator === 'nin' || operator === 'all'} />;\n\n    // ── Combo / linkdata / linkquery ──\n    case 'combo':\n    case 'linkdata':\n    case 'linkquery':\n      return <ComboInput {...props} />;\n    case 'combocheck':\n    case 'checkboxgroup':\n      return <CheckboxGroupInput {...props} />;\n    case 'radiogroup':\n      return <RadioGroupInput {...props} />;\n    case 'textarea':\n      return <TextareaInput {...props} />;\n    case 'password':\n      return <PasswordInput {...props} />;\n    case 'upload':\n    case 'image':\n      return <UploadInput {...props} />;\n    case 'address':\n    case 'location':\n      return <CascadingAddressInput {...props} />;\n    case 'separator':\n      return <SeparatorDisplay field={field} />;\n    case 'button':\n      return <ButtonDisplay field={field} />;\n    case 'subform':\n      return <SubformPlaceholder field={field} showLabel={props.showLabel} showDescription={props.showDescription} />;\n    default:\n      return <TextInput {...props} />;\n  }\n};\n\nFieldValueInput.displayName = 'FieldValueInput';\n","import { useEffect, useRef, useState, useCallback } from 'react';\nimport CodeMirror from 'codemirror';\nimport { cn } from '../../../lib/utils';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { FieldSelectPopover } from '../field-select';\nimport type { IField, ISubformField } from '@baishuyun/types';\n\n// ── Create a DOM node for the field tag (used inside CodeMirror) ────\n\nfunction createFieldTagDom(label: string): HTMLSpanElement {\n  const wrapper = document.createElement('span');\n  wrapper.className = 'prompt-field-tag';\n\n  const iconSpan = document.createElement('span');\n  iconSpan.className = 'prompt-field-tag-icon';\n  iconSpan.innerHTML =\n    '<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\"><rect x=\"2\" y=\"2\" width=\"10\" height=\"10\" rx=\"2\" stroke=\"#6F829E\" stroke-width=\"1.2\"/><path d=\"M5 5.5H9M5 7.5H8\" stroke=\"#6F829E\" stroke-width=\"1.2\" stroke-linecap=\"round\"/></svg>';\n\n  const textSpan = document.createElement('span');\n  textSpan.textContent = label;\n\n  wrapper.appendChild(iconSpan);\n  wrapper.appendChild(textSpan);\n  return wrapper;\n}\n\n// ── CodeMirror Helpers ──────────────────────────────────────────────\n\nfunction resolveFieldWidgetInfo(\n  fields: IField[],\n  key: string,\n): { widgetName: string; label: string } | undefined {\n  const dotIndex = key.indexOf('.');\n  if (dotIndex > 0) {\n    const parentName = key.substring(0, dotIndex);\n    const childName = key.substring(dotIndex + 1);\n    const parent = fields.find((f) => f.widget?.widgetName === parentName);\n    if (parent?.widget?.items) {\n      const child = parent.widget.items.find(\n        (item): item is ISubformField =>\n          'widget' in item && item.widget?.widgetName === childName,\n      );\n      if (child) {\n        return { widgetName: key, label: child.label };\n      }\n    }\n  } else {\n    const field = fields.find((f) => f.widget?.widgetName === key);\n    if (field) {\n      return { widgetName: key, label: field.label };\n    }\n  }\n  return undefined;\n}\n\nfunction addFieldToCM(\n  cm: CodeMirror.Editor,\n  widgetName: string,\n  displayLabel: string,\n): void {\n  const from = cm.getCursor('from');\n\n  cm.replaceSelection('${' + widgetName + '}');\n  const to = cm.getCursor();\n\n  const tagNode = createFieldTagDom(displayLabel);\n  tagNode.setAttribute('data-field-key', widgetName);\n\n  cm.markText(from, to, {\n    handleMouseEvents: true,\n    atomic: true,\n    replacedWith: tagNode,\n  });\n}\n\nfunction getTemplateFromCM(cm: CodeMirror.Editor): string {\n  const wrapper = cm.getWrapperElement();\n  const lineElements = wrapper.querySelectorAll('.CodeMirror-line');\n  const lines: string[] = [];\n\n  lineElements.forEach((lineEl) => {\n    let lineText = '';\n    walkLineNode(lineEl);\n    lines.push(lineText);\n\n    function walkLineNode(node: Node): void {\n      if (node instanceof HTMLElement) {\n        const key = node.getAttribute('data-field-key');\n        if (key && node.classList.contains('prompt-field-tag')) {\n          lineText += '${' + key + '}';\n          return;\n        }\n      }\n      const children = Array.from(node.childNodes);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.nodeType === Node.TEXT_NODE) {\n          lineText += child.textContent || '';\n        } else {\n          walkLineNode(child);\n        }\n      }\n    }\n  });\n\n  return lines.join('\\n').trim();\n}\n\nfunction setTemplateToCM(\n  cm: CodeMirror.Editor,\n  template: string,\n  fields: IField[],\n): void {\n  cm.setValue('');\n  if (!template) {\n    cm.refresh();\n    return;\n  }\n\n  const normalized = template.trim().replace(/\\s{2,}/g, ' ');\n  const parts = normalized.split(/(\\$\\{[^${}]*\\})/g);\n\n  for (const part of parts) {\n    const match = part.match(/^\\$\\{([^${}]*)\\}$/);\n    if (match) {\n      const info = resolveFieldWidgetInfo(fields, match[1]);\n      if (info) {\n        addFieldToCM(cm, info.widgetName, info.label);\n      } else {\n        cm.replaceSelection(part);\n      }\n    } else {\n      cm.replaceSelection(part);\n    }\n  }\n\n  cm.refresh();\n}\n\n// ── PromptInput Component ──────────────────────────────────────────\n\nexport interface PromptInputProps {\n  fields: IField[];\n  value?: string;\n  defaultValue?: string;\n  onChange?: (template: string) => void;\n  placeholder?: string;\n  className?: string;\n  disabled?: boolean;\n}\n\nexport const PromptInput = ({\n  fields,\n  value,\n  defaultValue,\n  onChange,\n  placeholder = '示例：放配置时候的提示词内容进行引导说明',\n  className,\n  disabled = false,\n}: PromptInputProps) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const cmRef = useRef<CodeMirror.Editor | null>(null);\n  const [open, setOpen] = useState(false);\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n  const insertBtnRef = useRef<HTMLButtonElement | null>(null);\n  const isInternalUpdateRef = useRef(false);\n\n  // Create field key cache ref to avoid stale closure in CM callbacks\n  const fieldsRef = useRef(fields);\n  fieldsRef.current = fields;\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  // Initialize CodeMirror\n  useEffect(() => {\n    const container = containerRef.current;\n    if (!container) return;\n\n    const cm = CodeMirror(container, {\n      mode: undefined,\n      lineWrapping: true,\n      lineNumbers: false,\n      smartIndent: false,\n      autofocus: false,\n      extraKeys: {\n        Enter: (instance: CodeMirror.Editor) => {\n          // Allow regular newlines\n          instance.replaceSelection('\\n');\n        },\n      },\n    } as CodeMirror.EditorConfiguration);\n\n    cmRef.current = cm;\n\n    const initialValue = value ?? defaultValue ?? '';\n    if (initialValue) {\n      isInternalUpdateRef.current = true;\n      setTemplateToCM(cm, initialValue, fieldsRef.current);\n      isInternalUpdateRef.current = false;\n    }\n\n    cm.on('changes', () => {\n      if (isInternalUpdateRef.current) return;\n      const template = getTemplateFromCM(cm);\n      onChangeRef.current?.(template);\n    });\n\n    // Toggle placeholder visibility\n    const wrapper = cm.getWrapperElement();\n    const updatePlaceholder = () => {\n      const text = getTemplateFromCM(cm);\n      const isEmpty = text === '';\n      if (isEmpty) {\n        wrapper.setAttribute('data-placeholder', placeholder);\n        wrapper.classList.add('cm-empty');\n      } else {\n        wrapper.removeAttribute('data-placeholder');\n        wrapper.classList.remove('cm-empty');\n      }\n    };\n    cm.on('change', updatePlaceholder);\n    updatePlaceholder();\n\n    return () => {\n      // CodeMirror created from div (not textarea) doesn't have toTextArea\n      const wrapper = cm.getWrapperElement();\n      if (wrapper?.parentNode) {\n        wrapper.parentNode.removeChild(wrapper);\n      }\n    };\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  // Handle controlled value updates\n  const prevFieldsLenRef = useRef(0);\n  useEffect(() => {\n    const cm = cmRef.current;\n    if (!cm || value === undefined) return;\n    const currentTemplate = getTemplateFromCM(cm);\n    const fieldsBecameAvailable = prevFieldsLenRef.current === 0 && fields.length > 0;\n    prevFieldsLenRef.current = fields.length;\n    if (currentTemplate !== value || fieldsBecameAvailable) {\n      isInternalUpdateRef.current = true;\n      setTemplateToCM(cm, value, fields);\n      isInternalUpdateRef.current = false;\n    }\n  }, [value, fields]);\n\n  // Update placeholder when prop changes\n  useEffect(() => {\n    const cm = cmRef.current;\n    if (!cm) return;\n    const wrapper = cm.getWrapperElement();\n    const isEmpty = getTemplateFromCM(cm) === '';\n    if (isEmpty) {\n      wrapper.setAttribute('data-placeholder', placeholder);\n    }\n  }, [placeholder]);\n\n  const handleFieldSelect = useCallback(\n    (_field: IField, nodeKey: string) => {\n      const cm = cmRef.current;\n      if (!cm) return;\n      const info = resolveFieldWidgetInfo(fieldsRef.current, nodeKey);\n      if (!info) return;\n      cm.focus();\n      isInternalUpdateRef.current = true;\n      addFieldToCM(cm, info.widgetName, info.label);\n      isInternalUpdateRef.current = false;\n      const template = getTemplateFromCM(cm);\n      onChangeRef.current?.(template);\n      setOpen(false);\n    },\n    [],\n  );\n\n  const setInsertBtnRef = useCallback((node: HTMLButtonElement | null) => {\n    insertBtnRef.current = node;\n    if (!node) {\n      setPortalContainer(null);\n      return;\n    }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>(\n        '[data-bs-prompt-input-portal]',\n      );\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-prompt-input-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  return (\n    <div className={cn('prompt-input-root relative', className)}>\n      {/* CodeMirror editor area */}\n      <div\n        ref={containerRef}\n        className=\"prompt-input-codemirror\"\n      />\n\n      {/* Insert Field button - absolute top-right */}\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setInsertBtnRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'absolute top-[-26px] right-[10px] z-10',\n              'text-[14px] text-[#0265ff] leading-[normal]',\n              'cursor-pointer bg-transparent border-0',\n              'hover:opacity-80',\n              disabled && 'opacity-50 cursor-not-allowed',\n            )}\n          >\n            插入字段\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"end\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 !p-0\"\n        >\n          <FieldSelectPopover\n            fields={fields}\n            onSelect={handleFieldSelect}\n            showTypeBadge\n          />\n        </PopoverContent>\n      </Popover>\n\n      {/* Inline styles — includes CodeMirror base + component overrides */}\n      <style>{`\n        /* ═══════════════════════════════════════════════════════════════\n           CodeMirror base styles (inlined from codemirror/lib/codemirror.css)\n           ═══════════════════════════════════════════════════════════════ */\n        .CodeMirror {\n          font-family: monospace;\n          height: 300px;\n          color: black;\n          direction: ltr;\n          position: relative;\n          overflow: hidden;\n          background: white;\n        }\n        .CodeMirror-lines { padding: 4px 0; cursor: text; min-height: 1px; }\n        .CodeMirror pre.CodeMirror-line,\n        .CodeMirror pre.CodeMirror-line-like {\n          padding: 0 4px;\n          -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n          border-width: 0;\n          background: transparent;\n          font-family: inherit;\n          font-size: inherit;\n          margin: 0;\n          white-space: pre;\n          word-wrap: normal;\n          line-height: inherit;\n          color: inherit;\n          z-index: 2;\n          position: relative;\n          overflow: visible;\n          -webkit-tap-highlight-color: transparent;\n          -webkit-font-variant-ligatures: contextual;\n          font-variant-ligatures: contextual;\n        }\n        .CodeMirror-wrap pre.CodeMirror-line,\n        .CodeMirror-wrap pre.CodeMirror-line-like {\n          word-wrap: break-word;\n          white-space: pre-wrap;\n          word-break: normal;\n        }\n        .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; }\n        .CodeMirror-gutters {\n          border-right: 1px solid #ddd;\n          background-color: #f7f7f7;\n          white-space: nowrap;\n          position: absolute; left: 0; top: 0;\n          min-height: 100%;\n          z-index: 3;\n        }\n        .CodeMirror-linenumber {\n          padding: 0 3px 0 5px;\n          min-width: 20px;\n          text-align: right;\n          color: #999;\n          white-space: nowrap;\n        }\n        .CodeMirror-guttermarker { color: black; }\n        .CodeMirror-guttermarker-subtle { color: #999; }\n        .CodeMirror-cursor {\n          border-left: 1px solid black;\n          border-right: none;\n          width: 0;\n          position: absolute;\n          pointer-events: none;\n        }\n        .CodeMirror div.CodeMirror-secondarycursor { border-left: 1px solid silver; }\n        .cm-fat-cursor .CodeMirror-cursor { width: auto; border: 0 !important; background: #7e7; }\n        .cm-fat-cursor div.CodeMirror-cursors { z-index: 1; }\n        .cm-fat-cursor .CodeMirror-line::selection,\n        .cm-fat-cursor .CodeMirror-line > span::selection,\n        .cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }\n        .cm-fat-cursor .CodeMirror-line::-moz-selection,\n        .cm-fat-cursor .CodeMirror-line > span::-moz-selection,\n        .cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }\n        .cm-fat-cursor { caret-color: transparent; }\n        @-moz-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} }\n        @-webkit-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} }\n        @keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} }\n        .cm-tab { display: inline-block; text-decoration: inherit; }\n        .CodeMirror-rulers {\n          position: absolute;\n          left: 0; right: 0; top: -50px; bottom: 0;\n          overflow: hidden;\n        }\n        .CodeMirror-ruler { border-left: 1px solid #ccc; top: 0; bottom: 0; position: absolute; }\n        .cm-s-default .cm-header { color: blue; }\n        .cm-s-default .cm-quote { color: #090; }\n        .cm-negative { color: #d44; }\n        .cm-positive { color: #292; }\n        .cm-header, .cm-strong { font-weight: bold; }\n        .cm-em { font-style: italic; }\n        .cm-link { text-decoration: underline; }\n        .cm-strikethrough { text-decoration: line-through; }\n        .cm-s-default .cm-keyword { color: #708; }\n        .cm-s-default .cm-atom { color: #219; }\n        .cm-s-default .cm-number { color: #164; }\n        .cm-s-default .cm-def { color: #00f; }\n        .cm-s-default .cm-variable-2 { color: #05a; }\n        .cm-s-default .cm-variable-3, .cm-s-default .cm-type { color: #085; }\n        .cm-s-default .cm-comment { color: #a50; }\n        .cm-s-default .cm-string { color: #a11; }\n        .cm-s-default .cm-string-2 { color: #f50; }\n        .cm-s-default .cm-meta { color: #555; }\n        .cm-s-default .cm-qualifier { color: #555; }\n        .cm-s-default .cm-builtin { color: #30a; }\n        .cm-s-default .cm-bracket { color: #997; }\n        .cm-s-default .cm-tag { color: #170; }\n        .cm-s-default .cm-attribute { color: #00c; }\n        .cm-s-default .cm-hr { color: #999; }\n        .cm-s-default .cm-link { color: #00c; }\n        .cm-s-default .cm-error { color: #f00; }\n        .cm-invalidchar { color: #f00; }\n        .CodeMirror-composing { border-bottom: 2px solid; }\n        div.CodeMirror span.CodeMirror-matchingbracket { color: #0b0; }\n        div.CodeMirror span.CodeMirror-nonmatchingbracket { color: #a22; }\n        .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n        .CodeMirror-activeline-background { background: #e8f2ff; }\n        .CodeMirror-scroll {\n          overflow: scroll !important;\n          margin-bottom: -50px; margin-right: -50px;\n          padding-bottom: 50px;\n          height: 100%;\n          outline: none;\n          position: relative;\n          z-index: 0;\n        }\n        .CodeMirror-sizer {\n          position: relative;\n          border-right: 50px solid transparent;\n        }\n        .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n          position: absolute;\n          z-index: 6;\n          display: none;\n          outline: none;\n        }\n        .CodeMirror-vscrollbar { right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; }\n        .CodeMirror-hscrollbar { bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; }\n        .CodeMirror-scrollbar-filler { right: 0; bottom: 0; }\n        .CodeMirror-gutter-filler { left: 0; bottom: 0; }\n        .CodeMirror-gutter {\n          white-space: normal;\n          height: 100%;\n          display: inline-block;\n          vertical-align: top;\n          margin-bottom: -50px;\n        }\n        .CodeMirror-gutter-wrapper {\n          position: absolute;\n          z-index: 4;\n          background: none !important;\n          border: none !important;\n        }\n        .CodeMirror-gutter-background { position: absolute; top: 0; bottom: 0; z-index: 4; }\n        .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }\n        .CodeMirror-gutter-wrapper ::selection { background-color: transparent; }\n        .CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent; }\n        .CodeMirror-linebackground {\n          position: absolute;\n          left: 0; right: 0; top: 0; bottom: 0;\n          z-index: 0;\n        }\n        .CodeMirror-linewidget { position: relative; z-index: 2; padding: 0.1px; }\n        .CodeMirror-rtl pre { direction: rtl; }\n        .CodeMirror-code { outline: none; }\n        .CodeMirror-scroll,\n        .CodeMirror-sizer,\n        .CodeMirror-gutter,\n        .CodeMirror-gutters,\n        .CodeMirror-linenumber {\n          -moz-box-sizing: content-box;\n          box-sizing: content-box;\n        }\n        .CodeMirror-measure {\n          position: absolute;\n          width: 100%;\n          height: 0;\n          overflow: hidden;\n          visibility: hidden;\n        }\n        .CodeMirror-measure pre { position: static; }\n        div.CodeMirror-cursors {\n          visibility: hidden;\n          position: relative;\n          z-index: 3;\n        }\n        div.CodeMirror-dragcursors { visibility: visible; }\n        .CodeMirror-focused div.CodeMirror-cursors { visibility: visible; }\n        .CodeMirror-selected { background: #d9d9d9; }\n        .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n        .CodeMirror-crosshair { cursor: crosshair; }\n        .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n        .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n        .cm-searching { background-color: #ffa; background-color: rgba(255, 255, 0, .4); }\n        .cm-force-border { padding-right: .1px; }\n        @media print {\n          .CodeMirror div.CodeMirror-cursors { visibility: hidden; }\n        }\n        .cm-tab-wrap-hack:after { content: ''; }\n        span.CodeMirror-selectedtext { background: none; }\n\n        /* ── Outer wrapper ── */\n        .prompt-input-root {\n          border: 1px solid #E0E0E0;\n          border-radius: 4px;\n          min-height: 120px;\n          position: relative;\n        }\n\n        /* ── CodeMirror container ── */\n        .prompt-input-codemirror {\n          height: 100%;\n          min-height: 120px;\n        }\n\n        .prompt-input-codemirror .CodeMirror {\n          height: 100%;\n          min-height: 120px;\n          border: 0;\n          border-radius: 4px;\n          font-family: inherit;\n          font-size: 14px;\n          line-height: 1.6;\n          color: #030303;\n          background: transparent;\n        }\n\n        .prompt-input-codemirror .CodeMirror-scroll {\n          min-height: 120px;\n          overflow: hidden !important;\n        }\n\n        .prompt-input-codemirror .CodeMirror-lines {\n          padding: 10px 80px 10px 10px;\n        }\n\n        .prompt-input-codemirror .CodeMirror pre.CodeMirror-line,\n        .prompt-input-codemirror .CodeMirror pre.CodeMirror-line-like {\n          padding: 0;\n        }\n\n        .prompt-input-codemirror .CodeMirror .CodeMirror-cursor {\n          border-left: 1px solid #030303;\n        }\n\n        /* ── Placeholder ── */\n        .prompt-input-codemirror .CodeMirror.cm-empty .CodeMirror-lines::before {\n          content: attr(data-placeholder);\n          position: absolute;\n          left: 10px;\n          top: 10px;\n          color: #999999;\n          font-size: 14px;\n          pointer-events: none;\n          z-index: 1;\n        }\n\n        /* ── Field tag widget ── */\n        .prompt-field-tag {\n          display: inline-flex;\n          align-items: center;\n          gap: 6px;\n          height: 26px;\n          padding: 0 6px;\n          background: #EFF0F6;\n          border-radius: 4px;\n          font-size: 14px;\n          margin: 3px 3px;                                                                                                                                                                 \n          line-height: normal;\n          color: #000000;\n          white-space: nowrap;\n          user-select: none;\n          vertical-align: middle;\n        }\n\n        // .CodeMirror-widget + .CodeMirror-widget > .prompt-field-tag {                                                                                                                        \n        //   margin-left: 0;\n        // }\n\n        .CodeMirror-line {\n          line-height: 1.4;          /* 设置一个符合你字体大小的行高，例如 20px */\n        }\n\n        .CodeMirror-cursor {\n          height: 1.4em;\n          border-left: 1px solid black;\n        }\n\n        .prompt-field-tag-icon {\n          display: inline-flex;\n          align-items: center;\n          justify-content: center;\n          width: 14px;\n          height: 14px;\n          flex-shrink: 0;\n        }\n      `}</style>\n    </div>\n  );\n};\n","import React from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport interface IAgentHelperMainLayoutProps {\n  className?: string;\n  children?: React.ReactNode;\n}\n\nexport const AgentHelperMainLayout = ({ className, children }: IAgentHelperMainLayoutProps) => {\n  return (\n    <div className={cn('flex flex-col h-full w-full', className)}>\n      {children}\n    </div>\n  );\n};\n\ninterface ISlotProps {\n  className?: string;\n  children?: React.ReactNode;\n}\n\nconst TopBar = ({ className, children }: ISlotProps) => {\n  return (\n    <div className={cn('h-[52px] shrink-0 bg-white border-b border-[#E0E0E0] flex items-center', className)}>\n      {children}\n    </div>\n  );\n};\nTopBar.displayName = 'AgentHelperMainLayout.TopBar';\nAgentHelperMainLayout.TopBar = TopBar;\n\nconst Main = ({ className, children }: ISlotProps) => {\n  return (\n    <div className={cn('flex flex-1 min-h-0', className)}>\n      {children}\n    </div>\n  );\n};\nMain.displayName = 'AgentHelperMainLayout.Main';\nAgentHelperMainLayout.Main = Main;\n\nconst SideBar = ({ className, children }: ISlotProps) => {\n  return (\n    <div className={cn('w-[280px] shrink-0 bg-white border-r border-[#E0E0E0] flex flex-col', className)}>\n      {children}\n    </div>\n  );\n};\nSideBar.displayName = 'AgentHelperMainLayout.SideBar';\nAgentHelperMainLayout.SideBar = SideBar;\n\nconst Content = ({ className, children }: ISlotProps) => {\n  return (\n    <div className={cn('flex-1 min-w-0 bg-[#F5F7FA] overflow-auto', className)}>\n      {children}\n    </div>\n  );\n};\nContent.displayName = 'AgentHelperMainLayout.Content';\nAgentHelperMainLayout.Content = Content;\n","import { useState, useCallback } from 'react';\nimport type { quantifier } from '@baishuyun/types';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\n\nconst OPTIONS: Array<{ value: quantifier; label: string }> = [\n  { value: 'all', label: '所有' },\n  { value: 'any', label: '任意' },\n];\n\nexport interface IConditonQuantifierSelectProps {\n  value?: quantifier;\n  defaultValue?: quantifier;\n  onChange?: (value: quantifier) => void;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const ConditonQuantifierSelect = ({\n  value: controlledValue,\n  defaultValue = 'all',\n  onChange,\n  disabled = false,\n  className,\n}: IConditonQuantifierSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [internalValue, setInternalValue] = useState<quantifier>(defaultValue);\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n  const resolvedValue = controlledValue !== undefined ? controlledValue : internalValue;\n  const selectedLabel = OPTIONS.find((o) => o.value === resolvedValue)?.label ?? '';\n\n  const handleSelect = useCallback(\n    (v: quantifier) => {\n      if (controlledValue === undefined) setInternalValue(v);\n      onChange?.(v);\n      setOpen(false);\n    },\n    [controlledValue, onChange],\n  );\n\n  const setTriggerRef = useCallback((node: HTMLButtonElement | null) => {\n    if (!node) {\n      setPortalContainer(null);\n      return;\n    }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>(\n        '[data-bs-quantifier-select-portal]',\n      );\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-quantifier-select-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  return (\n    <div className={cn('relative inline-flex', className)}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <button\n            ref={setTriggerRef}\n            type=\"button\"\n            disabled={disabled}\n            className={cn(\n              'flex items-center justify-between gap-[10px]',\n              'min-w-[82px] h-[31px] px-[10px]',\n              'bg-white border rounded-[4px]',\n              'text-left cursor-pointer',\n              open\n                ? 'border-[#0265FF]'\n                : 'border-[#E0E0E0] hover:border-[#0265FF]',\n              disabled &&\n                'opacity-50 cursor-not-allowed hover:border-[#E0E0E0]',\n              transCls,\n            )}\n          >\n            <span className=\"text-[14px] leading-[normal] text-[#030303] truncate\">\n              {selectedLabel}\n            </span>\n            <span\n              className={cn(\n                'shrink-0 flex items-center justify-center w-[16px] h-[16px] text-[#666666]',\n                transCls,\n                open && 'rotate-180',\n              )}\n            >\n              <svg\n                width=\"16\"\n                height=\"16\"\n                viewBox=\"0 0 16 16\"\n                fill=\"none\"\n              >\n                <path\n                  d=\"M4 6L8 10L12 6\"\n                  stroke=\"#666666\"\n                  strokeWidth=\"1.2\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                />\n              </svg>\n            </span>\n          </button>\n        </PopoverTrigger>\n        <PopoverContent\n          align=\"start\"\n          sideOffset={4}\n          portalContainer={portalContainer}\n          className=\"!border-0 rounded-[10px] shadow-[0px_0px_5px_rgba(0,0,0,0.04)] p-[4px] min-w-[82px]\"\n        >\n          <div className=\"flex flex-col gap-0\">\n            {OPTIONS.map((opt) => (\n              <button\n                key={opt.value}\n                type=\"button\"\n                onClick={() => handleSelect(opt.value)}\n                className={cn(\n                  'h-[34px] px-[10px] rounded-[4px] text-left text-[14px] leading-[normal]',\n                  resolvedValue === opt.value\n                    ? 'bg-[#F0F6FF] text-[#0265FF]'\n                    : 'text-[#030303] hover:bg-[#EFF0F6]',\n                  transCls,\n                )}\n              >\n                {opt.label}\n              </button>\n            ))}\n          </div>\n        </PopoverContent>\n      </Popover>\n    </div>\n  );\n};\n","import type { quantifier } from '@baishuyun/types';\nimport { ConditonQuantifierSelect } from '../condition-quantifier-select';\nimport { cn } from '../../../lib/utils';\n\nexport interface IConditonTriggerDescriptionProps {\n  targetName: string;\n  quantifier?: quantifier;\n  defaultQuantifier?: quantifier;\n  onQuantifierChange?: (value: quantifier) => void;\n  quantifierPrefixStr?: string;\n  quantifierSuffixStr?: string;\n  className?: string;\n}\n\nexport const ConditonTriggerDescription = ({\n  targetName,\n  quantifier,\n  defaultQuantifier = 'all',\n  onQuantifierChange,\n  quantifierPrefixStr = '的数据符合以下',\n  quantifierSuffixStr = '条件时，触发后续动作',\n  className,\n}: IConditonTriggerDescriptionProps) => {\n  return (\n    <div\n      className={cn(\n        'flex items-center gap-[10px]',\n        className,\n      )}\n    >\n      <span className=\"text-[14px] leading-[normal] text-[#4D609F] shrink-0 whitespace-nowrap\">\n        {targetName}\n      </span>\n      <span className=\"flex items-center gap-[10px] shrink-0\">\n        <span className=\"text-[14px] leading-[normal] text-black whitespace-nowrap\">\n          {quantifierPrefixStr}\n        </span>\n        <ConditonQuantifierSelect\n          value={quantifier}\n          defaultValue={defaultQuantifier}\n          onChange={onQuantifierChange}\n        />\n        <span className=\"text-[14px] leading-[normal] text-black whitespace-nowrap\">\n          {quantifierSuffixStr}\n        </span>\n      </span>\n    </div>\n  );\n};\n","import { useState, useCallback, useRef, useMemo } from 'react';\nimport type { IField, IConditionItem, relationalOperator, IFieldValueService } from '@baishuyun/types';\nimport { getAvailableOperators, getDefaultOperator } from '@baishuyun/ai-feat-utils';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { FieldSelect } from '../field-select';\nimport { RelationalOperatorSelect } from '../relational-operator-select';\nimport { FieldValueInput } from '../field-value-input';\nimport { TrashIcon } from '../../bs-icons';\n\n// ── Helpers ──────────────────────────────────────────────────────────\n\nfunction findFieldKey(_: IField[], targetField: IField): string | undefined {\n  return targetField.widget?.widgetName;\n\n  // for (let i = 0; i < fields.length; i++) {\n  //   if (fields[i] === targetField) return targetField.widget?.widgetName || String(i);\n  // }\n  // return undefined;\n}\n\nfunction generateId(): string {\n  return `cond-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\n// ── Props ────────────────────────────────────────────────────────────\n\nexport interface ConditionItemProps {\n  fields: IField[];\n  value?: IConditionItem;\n  defaultValue?: IConditionItem;\n  onChange?: (item: IConditionItem) => void;\n  onRemoveClick?: () => void;\n  service?: IFieldValueService;\n  disabled?: boolean;\n  className?: string;\n}\n\n// ── Component ────────────────────────────────────────────────────────\n\nexport const ConditionItem = ({\n  fields,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  onRemoveClick,\n  service,\n  disabled = false,\n  className,\n}: ConditionItemProps) => {\n  const idRef = useRef<string>(controlledValue?.id || defaultValue?.id || generateId());\n\n  const [internalField, setInternalField] = useState<IField | undefined>(\n    defaultValue?.field,\n  );\n  const [internalKey, setInternalKey] = useState<string | undefined>(() =>\n    defaultValue?.field ? findFieldKey(fields, defaultValue.field) : undefined,\n  );\n  const [internalOperator, setInternalOperator] = useState<relationalOperator>(\n    defaultValue?.operator ||\n      getDefaultOperator(defaultValue?.field?.widget?.type),\n  );\n  const [internalValue, setInternalValue] = useState<unknown>(\n    defaultValue?.value,\n  );\n\n  const isControlled = controlledValue !== undefined;\n\n  const currentField = isControlled ? controlledValue.field : internalField;\n  const currentKey = useMemo(() => {\n    if (isControlled && controlledValue.field) {\n      return findFieldKey(fields, controlledValue.field);\n    }\n    return internalKey;\n  }, [isControlled, controlledValue?.field, fields, internalKey]);\n  const currentOperator = isControlled\n    ? controlledValue.operator\n    : internalOperator;\n  const currentValue = isControlled ? controlledValue.value : internalValue;\n\n  const fieldType = currentField?.widget?.type;\n  const availableOperators = useMemo(\n    () => getAvailableOperators(fieldType),\n    [fieldType],\n  );\n\n  const emitChange = useCallback(\n    (field: IField, operator: relationalOperator, value: unknown) => {\n      onChange?.({\n        id: idRef.current,\n        field,\n        operator,\n        value,\n      });\n    },\n    [onChange],\n  );\n\n  // ── Handlers ──────────────────────────────────────────────────\n\n  const handleFieldChange = useCallback(\n    (field: IField, nodeKey: string) => {\n      const newOperator = getDefaultOperator(field.widget?.type);\n\n      if (!isControlled) {\n        setInternalField(field);\n        setInternalKey(nodeKey);\n        setInternalOperator(newOperator);\n        setInternalValue(undefined);\n      }\n\n      emitChange(field, newOperator, undefined);\n    },\n    [isControlled, emitChange],\n  );\n\n  const handleOperatorChange = useCallback(\n    (operator: relationalOperator) => {\n      const isEmptyOp = operator === 'empty' || operator === 'not_empty';\n      const isRangeOp = operator === 'range';\n      const isMultiOp = operator === 'in' || operator === 'nin' || operator === 'all';\n\n      let newValue: unknown;\n      if (isEmptyOp) {\n        newValue = undefined;\n      } else if (isRangeOp) {\n        newValue = { min: undefined, max: undefined };\n      } else if (isMultiOp) {\n        newValue = [];\n      } else if (\n        typeof currentValue === 'object' &&\n        currentValue !== null &&\n        !Array.isArray(currentValue)\n      ) {\n        newValue = undefined;\n      } else {\n        newValue = currentValue;\n      }\n\n      if (!isControlled) {\n        setInternalOperator(operator);\n        if (isEmptyOp || isRangeOp || isMultiOp) setInternalValue(newValue);\n      }\n\n      if (currentField) {\n        emitChange(currentField, operator, newValue);\n      }\n    },\n    [isControlled, currentField, currentValue, emitChange],\n  );\n\n  const handleValueChange = useCallback(\n    (value: unknown) => {\n      if (!isControlled) {\n        setInternalValue(value);\n      }\n\n      if (currentField) {\n        emitChange(currentField, currentOperator, value);\n      }\n    },\n    [isControlled, currentField, currentOperator, emitChange],\n  );\n\n  const hideValueInput =\n    currentField != null &&\n    (currentOperator === 'empty' || currentOperator === 'not_empty');\n\n  return (\n    <div className={cn('flex items-center gap-[10px]', className)}>\n      <FieldSelect\n        fields={fields}\n        value={currentKey}\n        onChange={handleFieldChange}\n        placeholder=\"请选择字段\"\n        searchPlaceholder=\"输入字段名称来搜索\"\n        disabled={disabled}\n        showTypeBadge\n        className=\"w-[200px] shrink-0\"\n      />\n\n      <RelationalOperatorSelect\n        value={currentOperator}\n        onChange={handleOperatorChange}\n        operators={availableOperators}\n        borderless\n        disabled={disabled}\n        className=\"w-[120px] shrink-0\"\n      />\n\n      {hideValueInput ? (\n        <div className=\"flex-1 min-w-0 h-[34px]\" />\n      ) : currentField ? (\n        <div className=\"flex-1 min-w-0\">\n          <FieldValueInput\n            field={currentField}\n            value={currentValue}\n            onChange={handleValueChange}\n            operator={currentOperator}\n            service={service}\n            disabled={disabled}\n          />\n        </div>\n      ) : (\n        <div\n          className={cn(\n            'flex-1 min-w-0 flex items-center',\n            'bg-white border border-[#E0E0E0] rounded-[4px]',\n            'h-[34px] px-[10px] py-[7px]',\n          )}\n        >\n          <span className=\"text-[14px] leading-[normal] text-[#999] truncate\">\n            请选择\n          </span>\n        </div>\n      )}\n\n      {onRemoveClick && (\n        <button\n          type=\"button\"\n          onClick={onRemoveClick}\n          disabled={disabled}\n          className={cn(\n            'shrink-0 flex items-center justify-center size-[16px]',\n            'text-[#999] hover:text-[#FF5631]',\n            disabled && 'opacity-50 cursor-not-allowed',\n            transCls,\n          )}\n        >\n          <TrashIcon />\n        </button>\n      )}\n    </div>\n  );\n};\n\nConditionItem.displayName = 'ConditionItem';\n","import { useCallback } from 'react';\nimport type { IField, ICondition, IConditionItem, IFieldValueService } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\nimport { ConditionItem } from '../condition-item';\n\nexport interface ConditionGroupProps {\n  fields: IField[];\n  value?: ICondition;\n  defaultValue?: ICondition;\n  onChange?: (condition: ICondition) => void;\n  service?: IFieldValueService;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const ConditionGroup = ({\n  fields,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  service,\n  disabled = false,\n  className,\n}: ConditionGroupProps) => {\n  const isControlled = controlledValue !== undefined;\n  const currentValue = isControlled ? controlledValue : defaultValue;\n\n  const handleItemChange = useCallback(\n    (index: number, item: IConditionItem) => {\n      if (!currentValue) return;\n      const nextItems = [...currentValue.items];\n      nextItems[index] = item;\n      onChange?.({ ...currentValue, items: nextItems });\n    },\n    [currentValue, onChange],\n  );\n\n  const handleRemoveItem = useCallback(\n    (index: number) => {\n      if (!currentValue) return;\n      const nextItems = currentValue.items.filter((_, i) => i !== index);\n      onChange?.({ ...currentValue, items: nextItems });\n    },\n    [currentValue, onChange],\n  );\n\n  if (!currentValue || currentValue.items.length === 0) {\n    return null;\n  }\n\n  return (\n    <div\n      className={cn(\n        'bg-[#f5f5f5] border border-[#e0e0e0] border-dashed',\n        'rounded-[4px] p-[10px]',\n        'flex flex-col gap-[10px]',\n        className,\n      )}\n    >\n      {currentValue.items.map((item, index) => (\n        <ConditionItem\n          key={item.id}\n          fields={fields}\n          value={item}\n          onChange={(nextItem) => handleItemChange(index, nextItem)}\n          onRemoveClick={() => handleRemoveItem(index)}\n          service={service}\n          disabled={disabled}\n        />\n      ))}\n    </div>\n  );\n};\n\nConditionGroup.displayName = 'ConditionGroup';\n","import { useState, useCallback, useRef } from 'react';\nimport type { IField, ICondition, IConditionItem, quantifier, IFieldValueService, FieldType } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { ConditonTriggerDescription } from '../condition-trigger-description';\nimport { ConditionGroup } from '../condition-group';\nimport { AddIcon } from '../../bs-icons';\nimport {\n  conditionStringify2bsCondition,\n  bsConditionParse2Condition,\n} from '@baishuyun/ai-feat-utils';\n\nfunction generateId(): string {\n  return `cond-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n}\n\nfunction createEmptyItem(): IConditionItem {\n  return {\n    id: generateId(),\n    field: undefined as unknown as IField,\n    operator: 'eq',\n    value: undefined,\n  };\n}\n\nconst FilterFieldTypeBlacklist: Array<FieldType> = [\n  'button',\n  'separator',\n  'subform',\n  'upload',\n];\n\nexport interface ConditionInputProps {\n  targetName: string;\n  fields: IField[];\n  value?: ICondition;\n  defaultValue?: ICondition;\n  onChange?: (condition: ICondition) => void;\n  service?: IFieldValueService;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const ConditionInput = ({\n  targetName,\n  fields: allFields,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  service,\n  disabled = false,\n  className,\n}: ConditionInputProps) => {\n  const defaultCondition = useRef<ICondition>(\n    defaultValue || {\n      targetName,\n      quantifier: 'all',\n      items: [],\n    },\n  ).current;\n\n  const fields = allFields.filter(\n    (f) => !FilterFieldTypeBlacklist.includes(f.widget?.type as FieldType),\n  );\n\n  const [internalValue, setInternalValue] = useState<ICondition>(defaultCondition);\n  const isControlled = controlledValue !== undefined;\n  const currentValue = isControlled ? controlledValue : internalValue;\n\n  const updateValue = useCallback(\n    (next: ICondition) => {\n      if (!isControlled) setInternalValue(next);\n      onChange?.(next);\n    },\n    [isControlled, onChange],\n  );\n\n  const handleQuantifierChange = useCallback(\n    (nextQuantifier: quantifier) => {\n      updateValue({ ...currentValue, quantifier: nextQuantifier });\n    },\n    [currentValue, updateValue],\n  );\n\n  const handleAddCondition = useCallback(() => {\n    const newItem = createEmptyItem();\n    updateValue({ ...currentValue, items: [...currentValue.items, newItem] });\n  }, [currentValue, updateValue]);\n\n  const handleDeleteAll = useCallback(() => {\n    updateValue({ ...currentValue, items: [] });\n  }, [currentValue, updateValue]);\n\n  const showDeleteAll = currentValue.items.length >= 3;\n\n  return (\n    <div className={cn('flex flex-col gap-[10px]', className)}>\n      <ConditonTriggerDescription\n        targetName={targetName}\n        quantifier={currentValue.quantifier}\n        onQuantifierChange={handleQuantifierChange}\n      />\n\n      <div className=\"flex items-center justify-between\">\n        <button\n          type=\"button\"\n          onClick={handleAddCondition}\n          disabled={disabled}\n          className={cn(\n            'flex items-center gap-[6px]',\n            'text-[14px] leading-[normal] text-[#0265FF]',\n            'hover:opacity-80',\n            disabled && 'opacity-50 cursor-not-allowed',\n            transCls,\n          )}\n        >\n          <AddIcon />\n          添加条件\n        </button>\n\n        {showDeleteAll && (\n          <button\n            type=\"button\"\n            onClick={handleDeleteAll}\n            disabled={disabled}\n            className={cn(\n              'text-[14px] leading-[normal] text-[#FF5631]',\n              'hover:opacity-80',\n              disabled && 'opacity-50 cursor-not-allowed',\n              transCls,\n            )}\n          >\n            删除全部\n          </button>\n        )}\n      </div>\n\n      <ConditionGroup\n        fields={fields}\n        value={currentValue}\n        onChange={updateValue}\n        service={service}\n        disabled={disabled}\n      />\n    </div>\n  );\n};\n\nConditionInput.displayName = 'ConditionInput';\n\n// ── BsConditionInput (IBsCondition string ↔ ICondition adapter) ──────────────\n\nfunction parseBsCondition(\n  str: string | undefined,\n  targetName: string,\n): ICondition {\n  if (str) {\n    try {\n      const parsed = bsConditionParse2Condition(str);\n      return { ...parsed, targetName };\n    } catch {\n      // invalid JSON, fall through to default\n    }\n  }\n  return {\n    targetName,\n    quantifier: 'all',\n    items: [],\n  };\n}\n\nfunction defaultBsConditionString(targetName: string): string {\n  return conditionStringify2bsCondition({\n    targetName,\n    quantifier: 'all',\n    items: [],\n  });\n}\n\nexport interface BsConditionInputProps {\n  targetName: string;\n  fields: IField[];\n  value?: string;\n  defaultValue?: string;\n  onChange?: (condition: string) => void;\n  service?: IFieldValueService;\n  disabled?: boolean;\n  className?: string;\n}\n\nexport const BsConditionInput = ({\n  targetName,\n  fields,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  service,\n  disabled = false,\n  className,\n}: BsConditionInputProps) => {\n  const defaultBS = useRef<string>(\n    defaultValue ?? defaultBsConditionString(targetName),\n  ).current;\n\n  const [internalValue, setInternalValue] = useState<string>(defaultBS);\n  const isControlled = controlledValue !== undefined;\n  const currentBS = isControlled ? controlledValue : internalValue;\n\n  const currentCondition = parseBsCondition(currentBS, targetName);\n\n  const handleChange = useCallback(\n    (cond: ICondition) => {\n      const bsStr = conditionStringify2bsCondition({ ...cond, targetName });\n      if (!isControlled) setInternalValue(bsStr);\n      onChange?.(bsStr);\n    },\n    [isControlled, onChange, targetName],\n  );\n\n  return (\n    <ConditionInput\n      targetName={targetName}\n      fields={fields}\n      value={currentCondition}\n      onChange={handleChange}\n      service={service}\n      disabled={disabled}\n      className={className}\n    />\n  );\n};\n\nBsConditionInput.displayName = 'BsConditionInput';\n","import { useState, useCallback, useRef } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { transCls } from '../../../const/ui';\nimport { Popover, PopoverTrigger, PopoverContent } from '../../ui/popover';\nimport { FieldSelectPopover } from '../field-select';\nimport type { IField } from '@baishuyun/types';\nimport type { FormActionFieldEditPreference } from '@baishuyun/types';\n\n// ── Inline SVG Icons ──────────────────────────────────────────────\n\nconst RadioUnchecked = () => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n    <circle cx=\"8\" cy=\"8\" r=\"7.5\" stroke=\"#CCCCCC\" />\n  </svg>\n);\n\nconst RadioChecked = () => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n    <circle cx=\"8\" cy=\"8\" r=\"7.5\" stroke=\"#0265FF\" />\n    <circle cx=\"8\" cy=\"8\" r=\"4\" fill=\"#0265FF\" />\n  </svg>\n);\n\nconst CloseIcon = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" className=\"shrink-0\">\n    <path d=\"M3 3L9 9M9 3L3 9\" stroke=\"#999999\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n  </svg>\n);\n\nconst DropdownChevron = ({ open }: { open: boolean }) => (\n  <svg\n    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n    className={cn('shrink-0', transCls)}\n    style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)' }}\n  >\n    <path d=\"M4 6L8 10L12 6\" stroke=\"#666666\" strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n  </svg>\n);\n\n// ── Chip Component ─────────────────────────────────────────────────\n\nfunction FieldChip({ label, onRemove }: { label: string; onRemove: () => void }) {\n  return (\n    <span\n      className={cn(\n        'bg-[#EEEEEE] rounded-[2px] h-[26px] px-[6px]',\n        'flex items-center gap-[4px] shrink-0'\n      )}\n    >\n      <span className=\"text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n        {label}\n      </span>\n      <span onClick={(e) => {\n        e.stopPropagation();\n        onRemove?.();\n      }} className=\"flex items-center cursor-pointer\">\n        <CloseIcon />\n      </span>\n    </span>\n  );\n}\n\n// ── Types ─────────────────────────────────────────────────────────\n\nexport interface FieldEditPreferenceSelectProps {\n  fields: IField[];\n  value?: FormActionFieldEditPreference;\n  defaultValue?: FormActionFieldEditPreference;\n  onChange?: (value: FormActionFieldEditPreference) => void;\n  disabled?: boolean;\n  className?: string;\n}\n\n// ── Main Component ────────────────────────────────────────────────\n\nexport const FieldEditPreferenceSelect = ({\n  fields,\n  value: controlledValue,\n  defaultValue,\n  onChange,\n  disabled = false,\n  className,\n}: FieldEditPreferenceSelectProps) => {\n  const [open, setOpen] = useState(false);\n  const [internalValue, setInternalValue] = useState<FormActionFieldEditPreference>(\n    defaultValue ?? 'edit_any_field'\n  );\n  const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n  const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n  const currentValue = controlledValue !== undefined ? controlledValue : internalValue;\n  const mode: 'any' | 'specified' = typeof currentValue === 'string' ? 'any' : 'specified';\n  const selectedFields: IField[] =\n    mode === 'specified'\n      ? (currentValue as { type: 'edit_any_specified_field'; fields: IField[] }).fields\n      : [];\n\n  const setValue = useCallback(\n    (newValue: FormActionFieldEditPreference) => {\n      if (controlledValue === undefined) {\n        setInternalValue(newValue);\n      }\n      onChange?.(newValue);\n    },\n    [controlledValue, onChange]\n  );\n\n  const handleModeChange = useCallback(\n    (newMode: 'any' | 'specified') => {\n      if (disabled) return;\n      if (newMode === 'any') {\n        setValue('edit_any_field');\n      } else {\n        setValue({ type: 'edit_any_specified_field', fields: selectedFields });\n      }\n    },\n    [disabled, setValue, selectedFields]\n  );\n\n  const handleAddField = useCallback(\n    (field: IField, _nodeKey: string) => {\n      if (selectedFields.some((f) => f.label === field.label)) {\n        setOpen(false);\n        return;\n      }\n      const newFields = [...selectedFields, field];\n      setValue({ type: 'edit_any_specified_field', fields: newFields });\n      setOpen(false);\n    },\n    [setValue, selectedFields]\n  );\n\n  const handleRemoveField = useCallback(\n    (index: number) => {\n      const newFields = selectedFields.filter((_, i) => i !== index);\n      setValue({ type: 'edit_any_specified_field', fields: newFields });\n    },\n    [setValue, selectedFields]\n  );\n\n  const setTriggerRef = useCallback((node: HTMLButtonElement | null) => {\n    triggerRef.current = node;\n    if (!node) {\n      setPortalContainer(null);\n      return;\n    }\n    const rootNode = node.getRootNode();\n    if (rootNode instanceof ShadowRoot) {\n      const existing = rootNode.querySelector<HTMLElement>(\n        '[data-bs-field-edit-preference-portal]'\n      );\n      if (existing) {\n        setPortalContainer(existing);\n        return;\n      }\n      const container = document.createElement('div');\n      container.setAttribute('data-bs-field-edit-preference-portal', 'true');\n      rootNode.appendChild(container);\n      setPortalContainer(container);\n    } else {\n      setPortalContainer(null);\n    }\n  }, []);\n\n  // ── Render ──────────────────────────────────────────────────────\n\n  const isAny = mode === 'any';\n  const isSpecified = mode === 'specified';\n\n  return (\n    <div\n      className={cn(\n        'inline-flex items-start gap-[30px] min-w-0 w-full',\n        disabled && 'opacity-50 cursor-not-allowed',\n        className\n      )}\n    >\n      {/* \"任意字段\" option — independent bordered box */}\n      <button\n        type=\"button\"\n        disabled={disabled}\n        onClick={() => handleModeChange('any')}\n        className={cn(\n          'flex items-center gap-[6px] h-[34px] pl-[10px] pr-[20px] shrink-0 w-[200px]',\n          'bg-white border rounded-[4px]',\n          'shrink-0',\n          'text-left cursor-pointer',\n          isAny ? 'border-[#0265FF]' : 'border-[#E0E0E0]',\n          transCls\n        )}\n      >\n        {isAny ? <RadioChecked /> : <RadioUnchecked />}\n        <span className=\"text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n          任意字段\n        </span>\n      </button>\n\n      {/* \"任意指定字段\" option — compound control when selected */}\n      <div\n        className={cn(\n          'flex items-stretch bg-white border rounded-[4px] min-w-0 flex-1',\n          'grow min-w-0',\n          isSpecified ? 'border-[#0265FF]' : 'border-[#E0E0E0]',\n          transCls\n        )}\n      >\n        {/* Label portion — clickable to switch mode */}\n        <button\n          type=\"button\"\n          disabled={disabled}\n          onClick={() => handleModeChange('specified')}\n          className={cn(\n            'flex items-center gap-[6px] h-[32px] p-[10px] shrink-0 w-[200px]',\n            'text-left cursor-pointer bg-white rounded-[4px]',\n            transCls\n          )}\n        >\n          {isSpecified ? <RadioChecked /> : <RadioUnchecked />}\n          <span className=\"text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n            任意指定字段\n          </span>\n        </button>\n\n        {/* Chips area + dropdown */}\n        <div className=\"flex items-center gap-[4px] pl-[4px] pr-[10px] py-[7px] min-w-0 flex-1 bg-white rounded-br-[4px] rounded-tr-[4px] h-[32px] border-l border-[#E0E0E0]\">\n          {/* Dropdown trigger */}\n          <Popover open={open} onOpenChange={setOpen}>\n            <PopoverTrigger asChild>\n              <div className=\"flex items-center gap-[4px] min-w-0 flex-1\">\n              {/* Selected field chips */}\n              <div className=\"flex items-center gap-[4px] min-w-0 flex-1 overflow-x-auto scrollbar-hide\" onClick={() => {\n                if (disabled) {\n                  return;\n                }\n\n                setOpen(() => !open);\n              }}>\n                {isSpecified && selectedFields.map((field, index) => (\n                  <FieldChip\n                    key={index}\n                    label={field.label}\n                    onRemove={() => handleRemoveField(index)}\n                  />\n                ))}\n                {isSpecified && selectedFields.length === 0 && (\n                  <span className=\"text-[14px] text-[#999999] leading-[normal] whitespace-nowrap\">\n                    请选择字段\n                  </span>\n                )}\n                {!isSpecified && (\n                  <span className=\"text-[14px] text-[#999999] leading-[normal] whitespace-nowrap\">\n                    请选择字段\n                  </span>\n                )}\n              </div>\n\n              <button\n                ref={setTriggerRef}\n                type=\"button\"\n                disabled={disabled}\n                className={cn(\n                  'flex items-center justify-center shrink-0',\n                  'w-[16px] h-[16px]',\n                  'cursor-pointer',\n                  disabled && 'cursor-not-allowed'\n                )}\n              >\n                <DropdownChevron open={open} />\n              </button>\n              </div>\n            </PopoverTrigger>\n            <PopoverContent\n              align=\"start\"\n              sideOffset={4}\n              portalContainer={portalContainer}\n              className=\"!border-0 !p-0\"\n              style={{ minWidth: 240 }}\n            >\n              <FieldSelectPopover\n                fields={fields}\n                onSelect={handleAddField}\n                searchPlaceholder=\"输入字段名称来搜索\"\n                showTypeBadge\n              />\n            </PopoverContent>\n          </Popover>\n        </div>\n      </div>\n    </div>\n  );\n};\n","export const EmptyTableIcon = () => (\n  <svg width=\"226\" height=\"140\" viewBox=\"0 0 226 140\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<mask id=\"mask0_27318_12913\" style={{maskType: 'alpha'}} maskUnits=\"userSpaceOnUse\" x=\"2\" y=\"104\" width=\"224\" height=\"26\">\n<rect x=\"2\" y=\"104\" width=\"224\" height=\"26\" fill=\"white\"/>\n</mask>\n<g mask=\"url(#mask0_27318_12913)\">\n<ellipse cx=\"114\" cy=\"125.388\" rx=\"112\" ry=\"21.3877\" fill=\"url(#paint0_linear_27318_12913)\"/>\n</g>\n<ellipse cx=\"180.5\" cy=\"88\" rx=\"9.5\" ry=\"13\" fill=\"url(#paint1_linear_27318_12913)\"/>\n<path d=\"M180.174 115.619V76.75L181.313 115.619H180.174Z\" fill=\"#D5DDF4\"/>\n<path d=\"M180.335 98.452L174.316 92.9456L180.335 96.6705V98.452Z\" fill=\"#D5DDF4\"/>\n<path d=\"M183.263 87.1152L180.335 90.3543V91.488L183.263 87.1152Z\" fill=\"#D5DDF4\"/>\n<path d=\"M180.361 114.658L151.396 115.619H180.361V114.658Z\" fill=\"url(#paint2_linear_27318_12913)\"/>\n<ellipse cx=\"57.0939\" cy=\"96.3957\" rx=\"5.5\" ry=\"7\" transform=\"rotate(-4.32208 57.0939 96.3957)\" fill=\"url(#paint3_linear_27318_12913)\"/>\n<path d=\"M57.9574 110.568L56.5527 91.9824L56.609 110.429L57.9574 110.568Z\" fill=\"#D5DDF4\"/>\n<path d=\"M57.2532 102.29L59.9123 99.4604L57.1893 101.444L57.2532 102.29Z\" fill=\"#D5DDF4\"/>\n<path d=\"M55.4569 97.0143L56.9627 98.4465L57.0034 98.9846L55.4569 97.0143Z\" fill=\"#D5DDF4\"/>\n<path d=\"M57.7578 109.621L25.897 112.752L57.8303 110.58L57.7578 109.621Z\" fill=\"url(#paint4_linear_27318_12913)\"/>\n<g filter=\"url(#filter0_f_27318_12913)\">\n<ellipse cx=\"114\" cy=\"105\" rx=\"32\" ry=\"3\" fill=\"#D9E3FF\"/>\n</g>\n<path d=\"M100.076 41.8107C99.8672 41.319 99.9595 40.8175 100.317 40.4996C101.071 39.8294 102.543 40.2799 102.984 41.3161L108.731 54.7977C109.054 55.5548 108.657 56.2807 107.846 56.418C107.036 56.5551 106.119 56.053 105.798 55.2965L100.076 41.8107Z\" fill=\"#90ACF8\"/>\n<path d=\"M100.076 41.8107C99.8672 41.319 99.9595 40.8175 100.317 40.4996C101.071 39.8294 102.543 40.2799 102.984 41.3161L108.731 54.7977C109.054 55.5548 108.657 56.2807 107.846 56.418C107.036 56.5551 106.119 56.053 105.798 55.2965L100.076 41.8107Z\" fill=\"#90ACF8\" fillOpacity=\"0.2\"/>\n<path d=\"M128.076 41.8107C127.867 41.319 127.96 40.8175 128.317 40.4996C129.071 39.8294 130.543 40.2799 130.984 41.3161L136.731 54.7977C137.054 55.5548 136.657 56.2807 135.846 56.418C135.036 56.5551 134.119 56.053 133.798 55.2965L128.076 41.8107Z\" fill=\"#90ACF8\"/>\n<path d=\"M128.076 41.8107C127.867 41.319 127.96 40.8175 128.317 40.4996C129.071 39.8294 130.543 40.2799 130.984 41.3161L136.731 54.7977C137.054 55.5548 136.657 56.2807 135.846 56.418C135.036 56.5551 134.119 56.053 133.798 55.2965L128.076 41.8107Z\" fill=\"#90ACF8\" fillOpacity=\"0.2\"/>\n<rect x=\"83\" y=\"49.0039\" width=\"62\" height=\"56\" rx=\"6\" fill=\"#A1BCFF\"/>\n<path d=\"M83 55.0039C83 51.6902 85.6863 49.0039 89 49.0039H139C142.314 49.0039 145 51.6902 145 55.0039V99.0039C145 102.318 142.314 105.004 139 105.004H89C85.6863 105.004 83 102.318 83 99.0039V55.0039Z\" fill=\"#6590F8\" fillOpacity=\"0.2\"/>\n<rect x=\"85\" y=\"51.0039\" width=\"58\" height=\"52\" rx=\"6\" fill=\"white\"/>\n<mask id=\"mask1_27318_12913\" style={{maskType: 'alpha'}} maskUnits=\"userSpaceOnUse\" x=\"85\" y=\"51\" width=\"58\" height=\"53\">\n<rect x=\"85\" y=\"51.0039\" width=\"58\" height=\"52\" rx=\"6\" fill=\"white\"/>\n</mask>\n<g mask=\"url(#mask1_27318_12913)\">\n<g filter=\"url(#filter4_f_27318_12913)\">\n<circle cx=\"94.5\" cy=\"50.5039\" r=\"22.5\" fill=\"#B9FAFF\"/>\n</g>\n</g>\n<path d=\"M99.2387 41.3748C99.5599 40.6177 100.478 40.1151 101.289 40.2524C102.1 40.3896 102.496 41.1146 102.175 41.8717L96.5177 55.2053C96.1965 55.9624 95.2787 56.4649 94.4678 56.3277C93.6569 56.1905 93.2599 55.4655 93.5811 54.7084L99.2387 41.3748Z\" fill=\"#90ACF8\"/>\n<path d=\"M99.2387 41.3748C99.5599 40.6177 100.478 40.1151 101.289 40.2524C102.1 40.3896 102.496 41.1146 102.175 41.8717L96.5177 55.2053C96.1965 55.9624 95.2787 56.4649 94.4678 56.3277C93.6569 56.1905 93.2599 55.4655 93.5811 54.7084L99.2387 41.3748Z\" fill=\"#90ACF8\" fillOpacity=\"0.2\"/>\n<path d=\"M127.239 41.3748C127.56 40.6177 128.478 40.1151 129.289 40.2524C130.1 40.3896 130.496 41.1146 130.175 41.8717L124.518 55.2053C124.196 55.9624 123.279 56.4649 122.468 56.3277C121.657 56.1905 121.26 55.4655 121.581 54.7084L127.239 41.3748Z\" fill=\"#90ACF8\"/>\n<path d=\"M127.239 41.3748C127.56 40.6177 128.478 40.1151 129.289 40.2524C130.1 40.3896 130.496 41.1146 130.175 41.8717L124.518 55.2053C124.196 55.9624 123.279 56.4649 122.468 56.3277C121.657 56.1905 121.26 55.4655 121.581 54.7084L127.239 41.3748Z\" fill=\"#90ACF8\" fillOpacity=\"0.2\"/>\n<path d=\"M93 72C95.5455 72 122.061 72 135 72\" stroke=\"#CEDCF6\" strokeWidth=\"0.5\"/>\n<path d=\"M93 78C95.5455 78 122.061 78 135 78\" stroke=\"#CEDCF6\" strokeWidth=\"0.5\"/>\n<path d=\"M93 84C95.5455 84 122.061 84 135 84\" stroke=\"#CEDCF6\" strokeWidth=\"0.5\"/>\n<path d=\"M93 90C95.5455 90 122.061 90 135 90\" stroke=\"#CEDCF6\" strokeWidth=\"0.5\"/>\n<path d=\"M93 65C93 63.8954 93.8954 63 95 63H133C134.105 63 135 63.8954 135 65V67H93V65Z\" fill=\"#90ACF8\"/>\n<path d=\"M81.1403 34.5888C79.9314 33.9913 77.705 34.2123 77.705 34.2123C77.705 34.2123 78.8677 36.5458 80.2271 37.3255C81.4631 38.0345 83.8153 38.0059 83.8153 38.0059C83.8153 38.0059 82.6624 35.3412 81.1403 34.5888Z\" fill=\"url(#paint5_linear_27318_12913)\"/>\n<path d=\"M87.2808 35.0187C87.3779 34.2182 86.8061 33.009 86.8061 33.009C86.8061 33.009 85.7135 34.1317 85.5431 35.0534C85.3882 35.8916 85.876 37.2102 85.876 37.2102C85.876 37.2102 87.1586 36.0266 87.2808 35.0187Z\" fill=\"url(#paint6_linear_27318_12913)\"/>\n<path d=\"M153.928 47.3664C156.181 46.1202 158.244 42.3936 158.244 42.3936C158.244 42.3936 153.297 41.6869 150.592 42.9715C148.133 44.1394 145.63 47.8547 145.63 47.8547C145.63 47.8547 151.09 48.9356 153.928 47.3664Z\" fill=\"url(#paint7_linear_27318_12913)\"/>\n<path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M153.637 76.3923L155.699 72.8501L157.686 76.4173L153.637 76.3923ZM153.367 88.8968L153.492 76.9325L157.821 76.9591L157.696 88.9234L153.367 88.8968ZM157.667 91.6253C157.661 92.2343 157.202 92.7251 156.642 92.7217L154.342 92.7084C153.782 92.7049 153.333 92.2083 153.339 91.5994L153.362 89.4388L157.691 89.4654L157.667 91.6253Z\" fill=\"url(#paint8_linear_27318_12913)\"/>\n<path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M153.637 76.3923L155.699 72.8501L157.686 76.4173L153.637 76.3923ZM153.367 88.8968L153.492 76.9325L157.821 76.9591L157.696 88.9234L153.367 88.8968ZM157.667 91.6253C157.661 92.2343 157.202 92.7251 156.642 92.7217L154.342 92.7084C153.782 92.7049 153.333 92.2083 153.339 91.5994L153.362 89.4388L157.691 89.4654L157.667 91.6253Z\" fill=\"url(#paint9_linear_27318_12913)\" fillOpacity=\"0.2\"/>\n<defs>\n<filter id=\"filter0_f_27318_12913\" x=\"78\" y=\"98\" width=\"72\" height=\"14\" filterUnits=\"userSpaceOnUse\" colorInterpolationFilters=\"sRGB\">\n<feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\"/>\n<feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/>\n<feGaussianBlur stdDeviation=\"2\" result=\"effect1_foregroundBlur_27318_12913\"/>\n</filter>\n<filter id=\"filter4_f_27318_12913\" x=\"8\" y=\"-35.9961\" width=\"173\" height=\"173\" filterUnits=\"userSpaceOnUse\" colorInterpolationFilters=\"sRGB\">\n<feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\"/>\n<feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\"/>\n<feGaussianBlur stdDeviation=\"32\" result=\"effect1_foregroundBlur_27318_12913\"/>\n</filter>\n<linearGradient id=\"paint0_linear_27318_12913\" x1=\"114\" y1=\"104\" x2=\"114\" y2=\"125.628\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#E6EEFF\"/>\n<stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\"/>\n</linearGradient>\n<linearGradient id=\"paint1_linear_27318_12913\" x1=\"180.5\" y1=\"75\" x2=\"180.5\" y2=\"101\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#E7EFFF\"/>\n<stop offset=\"1\" stopColor=\"#F3F7FD\"/>\n</linearGradient>\n<linearGradient id=\"paint2_linear_27318_12913\" x1=\"180.361\" y1=\"115.139\" x2=\"151.396\" y2=\"115.139\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#D5DDF4\"/>\n<stop offset=\"1\" stopColor=\"#EDF2FF\"/>\n</linearGradient>\n<linearGradient id=\"paint3_linear_27318_12913\" x1=\"57.0939\" y1=\"89.3957\" x2=\"57.0939\" y2=\"103.396\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#E7EFFF\"/>\n<stop offset=\"1\" stopColor=\"#F3F7FD\"/>\n</linearGradient>\n<linearGradient id=\"paint4_linear_27318_12913\" x1=\"57.5801\" y1=\"109.876\" x2=\"25.8608\" y2=\"112.273\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#D5DDF4\"/>\n<stop offset=\"1\" stopColor=\"#EDF2FF\"/>\n</linearGradient>\n<linearGradient id=\"paint5_linear_27318_12913\" x1=\"80.3215\" y1=\"37.4237\" x2=\"81.2554\" y2=\"34.6\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#DBE6FF\"/>\n<stop offset=\"1\" stopColor=\"#F1F5FF\"/>\n</linearGradient>\n<linearGradient id=\"paint6_linear_27318_12913\" x1=\"85.5063\" y1=\"35.1263\" x2=\"87.2977\" y2=\"35.0905\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#DBE6FF\"/>\n<stop offset=\"1\" stopColor=\"#F1F5FF\"/>\n</linearGradient>\n<linearGradient id=\"paint7_linear_27318_12913\" x1=\"150.335\" y1=\"43.013\" x2=\"153.754\" y2=\"47.5582\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#DBE6FF\"/>\n<stop offset=\"1\" stopColor=\"#F1F5FF\"/>\n</linearGradient>\n<linearGradient id=\"paint8_linear_27318_12913\" x1=\"151.15\" y1=\"98.5161\" x2=\"150.2\" y2=\"78.1749\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#6893F9\"/>\n<stop offset=\"1\" stopColor=\"#92B3FD\"/>\n</linearGradient>\n<linearGradient id=\"paint9_linear_27318_12913\" x1=\"151.15\" y1=\"98.5161\" x2=\"150.2\" y2=\"78.1749\" gradientUnits=\"userSpaceOnUse\">\n<stop stopColor=\"#6893F9\"/>\n<stop offset=\"1\" stopColor=\"#92B3FD\"/>\n</linearGradient>\n</defs>\n</svg>\n);\n","import { cn } from '../../../lib/utils';\nimport {\n  useReactTable,\n  getCoreRowModel,\n  flexRender,\n  type ColumnDef,\n  type TableOptions,\n createColumnHelper,\n} from '@tanstack/react-table';\nimport { EmptyTableIcon } from '../../icons/empty-table-icon';\n\nexport {\n  createColumnHelper,\n}\n\nexport interface DataTableProps<TData> {\n  columns: ColumnDef<TData, any>[];\n  data: TData[];\n  emptyText?: string;\n  emptyIcon?: React.ReactNode;\n  className?: string;\n  tableOptions?: Omit<\n    Partial<TableOptions<TData>>,\n    'columns' | 'data' | 'getCoreRowModel'\n  >;\n}\n\nexport function DataTable<TData>({\n  columns,\n  data,\n  emptyText = '暂无数据',\n  emptyIcon,\n  className,\n  tableOptions,\n}: DataTableProps<TData>) {\n  const table = useReactTable({\n    columns,\n    data,\n    getCoreRowModel: getCoreRowModel(),\n    ...tableOptions,\n  });\n\n  const headerGroups = table.getHeaderGroups();\n  const rows = table.getRowModel().rows;\n  const isEmpty = data.length === 0;\n\n  return (\n    <div\n      className={cn(\n        'rounded-[10px] border border-[#e0e0e0] overflow-hidden bg-white',\n        className,\n      )}\n    >\n      <table className=\"w-full h-full border-collapse\">\n        <thead>\n          {headerGroups.map((headerGroup) => (\n            <tr key={headerGroup.id}>\n              {headerGroup.headers.map((header, index) => (\n                <th\n                  key={header.id}\n                  className={cn(\n                    'bg-[#f5f7fa] h-[34px] px-[10px] text-left text-[14px] font-normal text-[#030303] border-b border-[#e0e0e0] align-middle whitespace-nowrap',\n                    index !== 0 && 'border-l border-[#e0e0e0]',\n                  )}\n                  style={{\n                    width:\n                      header.getSize() !== 150 ? header.getSize() : undefined,\n                  }}\n                >\n                  {flexRender(\n                    header.column.columnDef.header,\n                    header.getContext(),\n                  )}\n                </th>\n              ))}\n            </tr>\n          ))}\n        </thead>\n        <tbody>\n          {isEmpty ? (\n            <tr>\n              <td\n                colSpan={columns.length}\n                className=\"py-[60px] text-center align-middle\"\n              >\n                <div className=\"flex flex-col items-center gap-[12px]\">\n                  {emptyIcon || <EmptyTableIcon />}\n                  <span className=\"text-[14px] text-[#999]\">{emptyText}</span>\n                </div>\n              </td>\n            </tr>\n          ) : (\n            rows.map((row) => (\n              <tr key={row.id}>\n                {row.getVisibleCells().map((cell, index) => (\n                  <td\n                    key={cell.id}\n                    className={cn(\n                      'p-[10px] text-[14px] text-[#030303]',\n                      index !== 0 && 'border-l border-[#e0e0e0]',\n                      'border-b border-[#e0e0e0]',\n                    )}\n                  >\n                    {flexRender(cell.column.columnDef.cell, cell.getContext())}\n                  </td>\n                ))}\n              </tr>\n            ))\n          )}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n","import { useState, useCallback } from 'react';\nimport { format } from 'date-fns';\nimport { cn } from '../lib/utils';\nimport { CalendarIcon } from './icons/calendar-icon';\nimport { Popover, PopoverTrigger, PopoverContent } from './ui/popover';\nimport { Calendar } from './ui/calendar';\nimport type { DateRange } from 'react-day-picker';\n\nexport interface DateRangePickerProps {\n  value?: DateRange;\n  onChange?: (range: DateRange | undefined) => void;\n  className?: string;\n}\n\nexport function DateRangePicker({\n  value,\n  onChange,\n  className,\n}: DateRangePickerProps) {\n  const [open, setOpen] = useState(false);\n\n  const handleSelect = useCallback(\n    (range: DateRange | undefined) => {\n      onChange?.(range);\n      if (range?.from && range?.to) {\n        setOpen(false);\n      }\n    },\n    [onChange]\n  );\n\n  return (\n    <Popover open={open} onOpenChange={setOpen}>\n      <PopoverTrigger asChild>\n        <div\n          className={cn(\n            'flex items-center h-[34px] rounded-[4px] bg-white border border-[#e0e0e0] pl-[2px] pr-[10px] py-[2px] cursor-pointer',\n            'hover:border-[#0265FF]',\n            open && 'border-[#0265FF]',\n            className\n          )}\n        >\n          <div className=\"flex flex-1 items-center min-w-0\">\n            <div className=\"flex-1 flex items-center justify-center h-[30px] px-[10px] py-[7px] rounded-[4px] min-w-0\">\n              <span\n                className={cn(\n                  'flex-1 text-[14px] leading-[normal] truncate',\n                  value?.from\n                    ? 'text-[#030303]'\n                    : 'text-[#999999]'\n                )}\n              >\n                {value?.from\n                  ? format(value.from, 'yyyy-MM-dd')\n                  : '开始日期'}\n              </span>\n            </div>\n            <div className=\"shrink-0 flex items-center justify-center w-[12px] h-[30px]\">\n              <span className=\"text-[14px] text-[#030303] whitespace-nowrap leading-[normal]\">\n                ~\n              </span>\n            </div>\n            <div className=\"flex-1 flex items-center justify-center h-[30px] px-[10px] py-[7px] rounded-[4px] min-w-0\">\n              <span\n                className={cn(\n                  'flex-1 text-[14px] leading-[normal] truncate',\n                  value?.to\n                    ? 'text-[#030303]'\n                    : 'text-[#999999]'\n                )}\n              >\n                {value?.to\n                  ? format(value.to, 'yyyy-MM-dd')\n                  : '结束日期'}\n              </span>\n            </div>\n          </div>\n          <CalendarIcon className=\"shrink-0 size-[16px] text-[#999999]\" />\n        </div>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-auto p-0\" align=\"start\">\n        <Calendar\n          mode=\"range\"\n          selected={value}\n          onSelect={handleSelect}\n          numberOfMonths={2}\n        />\n      </PopoverContent>\n    </Popover>\n  );\n}\n","import { useState, useCallback } from 'react';\nimport type { triggerType } from '@baishuyun/types';\nimport { cn } from '../../../lib/utils';\nimport { DateInput } from '../date-picker';\nimport {\n  Select,\n  SelectTrigger,\n  SelectValue,\n  SelectContent,\n  SelectItem,\n} from '../../ui/select';\n\nimport { usePortalContainer } from '../../../hooks/use-portal-container';\n\nconst TRIGGER_TYPE_OPTIONS: Array<{ value: triggerType; label: string }> = [\n  { value: 'universal', label: '通用型' },\n  { value: 'form_field', label: '表单字段触发' },\n  { value: 'form_action', label: '表单动作触发' },\n  { value: 'form_flow_node', label: '表单流程节点触发' },\n  { value: 'scheduler', label: '计划任务触发' },\n];\n\nexport interface ExecLogFilterValue {\n  startDate?: Date;\n  endDate?: Date;\n  execUserId?: string;\n  triggerType?: triggerType;\n  execResult?: string;\n}\n\nexport interface ExecLogFilterProps {\n  value?: ExecLogFilterValue;\n  onChange?: (value: ExecLogFilterValue) => void;\n  onFilter?: (value: ExecLogFilterValue) => void;\n  execUserOptions?: Array<{ value: string; label: string }>;\n  execResultOptions?: Array<{ value: string; label: string }>;\n  className?: string;\n}\n\nexport function ExecLogFilter({\n  value,\n  onChange,\n  onFilter,\n  execUserOptions = [],\n  execResultOptions = [],\n  className,\n}: ExecLogFilterProps) {\n  const [startDate, setStartDate] = useState<Date | undefined>(\n    value?.startDate\n  );\n  const [endDate, setEndDate] = useState<Date | undefined>(\n    value?.endDate\n  );\n  const [execUserId, setExecUserId] = useState<string>(\n    value?.execUserId ?? 'all'\n  );\n  const [triggerType, setTriggerType] = useState<triggerType | 'all'>(\n    value?.triggerType ?? 'all'\n  );\n  const [execResult, setExecResult] = useState<string>(\n    value?.execResult ?? 'all'\n  );\n\n  const handleStartDateChange = useCallback(\n    (date: Date | null) => {\n      const d = date ?? undefined;\n      setStartDate(d);\n      onChange?.({ startDate: d, endDate, execUserId, triggerType: triggerType === 'all' ? undefined : triggerType, execResult: execResult === 'all' ? undefined : execResult });\n    },\n    [onChange, execUserId, triggerType, execResult, endDate]\n  );\n\n  const handleEndDateChange = useCallback(\n    (date: Date | null) => {\n      const d = date ?? undefined;\n      setEndDate(d);\n      onChange?.({ startDate, endDate: d, execUserId, triggerType: triggerType === 'all' ? undefined : triggerType, execResult: execResult === 'all' ? undefined : execResult });\n    },\n    [onChange, execUserId, triggerType, execResult, startDate]\n  );\n\n  const handleExecUserIdChange = useCallback(\n    (v: string) => {\n      setExecUserId(v);\n      onChange?.({ startDate, endDate, execUserId: v, triggerType: triggerType === 'all' ? undefined : triggerType, execResult: execResult === 'all' ? undefined : execResult });\n    },\n    [onChange, startDate, endDate, triggerType, execResult]\n  );\n\n  const handleTriggerTypeChange = useCallback(\n    (v: triggerType | 'all') => {\n      setTriggerType(v);\n      onChange?.({ startDate, endDate, execUserId, triggerType: v === 'all' ? undefined : v, execResult: execResult === 'all' ? undefined : execResult });\n    },\n    [onChange, startDate, endDate, execUserId, execResult]\n  );\n\n  const handleExecResultChange = useCallback(\n    (v: string) => {\n      setExecResult(v);\n      onChange?.({ startDate, endDate, execUserId, triggerType: triggerType === 'all' ? undefined : triggerType, execResult: v === 'all' ? undefined : v });\n    },\n    [onChange, startDate, endDate, execUserId, triggerType]\n  );\n\n  const handleFilter = useCallback(() => {\n    onFilter?.({\n      startDate,\n      endDate,\n      execUserId: execUserId === 'all' ? undefined : execUserId,\n      triggerType: triggerType === 'all' ? undefined : triggerType,\n      execResult: execResult === 'all' ? undefined : execResult,\n    });\n  }, [onFilter, startDate, endDate, execUserId, triggerType, execResult]);\n\n  const allExecUserOptions = [\n    { value: 'all', label: '全部' },\n    ...execUserOptions,\n  ];\n\n  const allExecResultOptions = [\n    { value: 'all', label: '全部' },\n    ...execResultOptions,\n  ];\n\n  const allTriggerTypeOptions = [\n    { value: 'all' as const, label: '全部' },\n    ...TRIGGER_TYPE_OPTIONS,\n  ];\n\n\n  const { portalContainer, setTriggerRef } = usePortalContainer('data-bs-exec-user-select-portal');\n  const { portalContainer: triggerTypePortalContainer, setTriggerRef: setTriggerTypeTriggerRef } = usePortalContainer('data-bs-trigger-type-select-portal');\n  const { portalContainer: execResultPortalContainer, setTriggerRef: setExecResultTriggerRef } = usePortalContainer('data-bs-exec-result-select-portal');\n\n  return (\n    <div\n      className={cn(\n        'flex items-start gap-[22px]',\n        className\n      )}\n    >\n      {/* 执行时间 */}\n      <div className=\"shrink-0 flex items-center gap-[10px] w-[426px]\">\n        <span className=\"shrink-0 text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n          执行时间\n        </span>\n        <DateInput\n          value={startDate}\n          onChange={handleStartDateChange}\n          placeholder=\"开始日期\"\n          className=\"flex-1 min-w-0\"\n          format='yyyy-MM-dd HH:mm:ss'\n        />\n        <span className=\"shrink-0 text-[14px] text-[#030303] leading-[normal]\">~</span>\n        <DateInput\n          value={endDate}\n          onChange={handleEndDateChange}\n          placeholder=\"结束日期\"\n          className=\"flex-1 min-w-0\"\n          format='yyyy-MM-dd HH:mm:ss'\n        />\n      </div>\n\n      {/* 执行人 */}\n      <div className=\"flex-1 min-w-[120px] flex items-center gap-[10px]\">\n        <span className=\"shrink-0 text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n          执行人\n        </span>\n        <Select value={execUserId} onValueChange={handleExecUserIdChange}>\n          <SelectTrigger className=\"flex-1 min-w-0\">\n            <SelectValue placeholder=\"请输入\" ref={setTriggerRef} />\n          </SelectTrigger>\n          <SelectContent container={portalContainer}>\n            {allExecUserOptions.map((opt) => (\n              <SelectItem key={opt.value} value={opt.value}>\n                {opt.label}\n              </SelectItem>\n            ))}\n          </SelectContent>\n        </Select>\n      </div>\n\n      {/* 触发类型 */}\n      <div className=\"flex-1 min-w-[120px] flex items-center gap-[10px]\">\n        <span className=\"shrink-0 text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n          触发类型\n        </span>\n        <Select value={triggerType} onValueChange={handleTriggerTypeChange}>\n          <SelectTrigger className=\"flex-1 min-w-0\">\n            <SelectValue placeholder=\"全部\" ref={setTriggerTypeTriggerRef} />\n          </SelectTrigger>\n          <SelectContent container={triggerTypePortalContainer}>\n            {allTriggerTypeOptions.map((opt) => (\n              <SelectItem key={opt.value} value={opt.value}>\n                {opt.label}\n              </SelectItem>\n            ))}\n          </SelectContent>\n        </Select>\n      </div>\n\n      {/* 执行结果 */}\n      <div className=\"shrink-0 flex items-center gap-[10px] w-[280px]\">\n        <span className=\"shrink-0 text-[14px] text-[#030303] leading-[normal] whitespace-nowrap\">\n          执行结果\n        </span>\n        <Select value={execResult} onValueChange={handleExecResultChange}>\n          <SelectTrigger className=\"flex-1 min-w-0\">\n            <SelectValue placeholder=\"请输入\" ref={setExecResultTriggerRef} />\n          </SelectTrigger>\n          <SelectContent container={execResultPortalContainer}>\n            {allExecResultOptions.map((opt) => (\n              <SelectItem key={opt.value} value={opt.value}>\n                {opt.label}\n              </SelectItem>\n            ))}\n          </SelectContent>\n        </Select>\n      </div>\n\n      {/* 筛选按钮 */}\n      <button\n        type=\"button\"\n        className=\"shrink-0 flex items-center justify-center h-[34px] px-[20px] py-[7px] rounded-[4px] bg-[#0265FF] text-[14px] text-white leading-[normal] whitespace-nowrap hover:bg-[#0252CC] cursor-pointer transition-colors duration-200\"\n        onClick={handleFilter}\n      >\n        筛选\n      </button>\n    </div>\n  );\n}\n"],"names":["r","f","n","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","twMerge","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","cn","inputs","copyTextToClipboard","text","textarea","success","error","isOptionArray","item","toHumanReadable","type","v","lnglatXY","isSubformFieldEqual","f1","f2","widgetArrKey","_a","_b","subFields1","subFields2","subField1","subField2","useShadow","id","style","rootEl","containerClasses","wrapperClasses","wrapperStyle","extraHtml","shadowContainer","setShadowContainer","useState","wrapperRef","useRef","useEffect","wrapperEl","shadowRoot","styleEl","containerEl","BotImgUrl","WarningImgUrl","ChatHeaderBgImgUrl","transCls","FORM_ICON_OPTIONS","FieldTypeNameMap","FIELD_ICON_CODE_MAP","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","maybeKey","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","x","testStringCoercion","checkKeyStringCoercion","JSCompiler_inline_result","e","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","CalendarIcon","jsx","setRef","ref","composeRefs","refs","hasCleanup","cleanups","cleanup","useComposedRefs","createSlot","ownerName","Slot2","forwardedRef","slotProps","slottableElement","hasSlottable","newChildren","isLazyComponent","use","maybeSlottable","isSlottable","slottable","child","getSlottableElementFromSlottable","slottableElementRef","getElementRef","composedRef","createSlottableError","createSlotError","mergedProps","mergeProps","Slot","SLOTTABLE_IDENTIFIER","createSlottable","Slottable2","child2","childProps","overrideProps","slotPropValue","childPropValue","element","mayWarn","isPromiseLike","falsyToString","cx","buttonVariants","base","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","Button","size","asChild","Comp","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","createContext2","rootComponentName","defaultContext","Context","Provider","context","useContext2","consumerName","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","scope","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","useReactId","count","useId","deterministicId","setId","useLayoutEffect","reactId","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","NODES","Primitive","primitive","Node","primitiveProps","dispatchDiscreteCustomEvent","target","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","handler","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","array","updatedArray","items","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useStateMachine","initialState","machine","state","nextState","Presence","present","presence","usePresence","React2","useStableComposedRefs","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","refsRef","currentRefs","guards","useFocusGuards","createFocusGuard","start","end","__assign","s","p","__rest","t","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","a","innerCreateMedium","defaults","middleware","buffer","assigned","medium","data","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","options","SideCar","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","css","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","left","top","right","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","gap","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","err","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","direction","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","y","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","el","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","selection","anchorNode","isTouchingSelection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","parentNode","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","defaultOpen","onOpenChange","modal","triggerRef","contentRef","open","setOpen","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","jsxs","Fragment","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","createContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Trigger","Overlay","Content","Title","Description","Close","DialogPrimitive.Root","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Close","DialogPrimitive.Overlay","DialogPrimitive.Content","DialogHeader","DialogFooter","DialogPrimitive.Title","DialogPrimitive.Description","__insertCSS","code","DrawerContext","React__default","useDrawerContext","isMobileFirefox","userAgent","isMac","testPlatform","isIPhone","isSafari","isIPad","isIOS","re","KEYBOARD_BUFFER","chain$1","visualViewport","getScrollParent","nonTextInputTypes","preventScrollCount","restore","usePreventScroll","isDisabled","preventScrollMobileSafari","scrollable","lastY","onTouchStart","onTouchMove","bottom","onTouchEnd","isInput","onFocus","scrollIntoView","onWindowScroll","scrollX","scrollY","restoreStyles","setStyle","removeEvents","addEvent","cur","root","scrollableTop","targetTop","targetBottom","keyboardHeight","set","ignoreCache","originalStyles","reset","isVertical","getTranslate","transform","mat","dampenValue","assignStyle","prevStyle","chain","fns","fn","TRANSITIONS","VELOCITY_THRESHOLD","CLOSE_THRESHOLD","SCROLL_LOCK_TIMEOUT","BORDER_RADIUS","NESTED_DISPLACEMENT","WINDOW_TOP_OFFSET","DRAG_CLASS","uncontrolledState","handleChange","useSnapPoints","activeSnapPointProp","setActiveSnapPointProp","snapPoints","drawerRef","overlayRef","fadeFromIndex","onSnapPointChange","snapToSequentialPoint","activeSnapPoint","setActiveSnapPoint","windowDimensions","setWindowDimensions","onResize","isLastSnapPoint","activeSnapPointIndex","_snapPoints_findIndex","snapPoint","shouldFade","snapPointsOffset","containerSize","_snapPoints_map","isPx","snapPointAsNumber","height","width","activeSnapPointOffset","snapToPoint","dimension","_snapPointsOffset_findIndex","newSnapPointIndex","snapPointDim","newIndex","onRelease","draggedDistance","closeDrawer","velocity","dismissible","currentPosition","isOverlaySnapPoint","isFirst","hasDraggedUp","closestSnapPoint","prev","curr","dim","dragDirection","onDrag","getPercentageDragged","absDraggedDistance","isDraggingDown","targetSnapPointIndex","snapPointDistance","percentageDragged","noop","useScaleBackground","isOpen","shouldScaleBackground","setBackgroundColorOnScale","noBodyStyles","timeoutIdRef","initialBackgroundColor","useMemo","getScale","wrapper","wrapperStylesCleanup","previousBodyPosition","usePositionFixed","nested","hasBeenOpened","preventScrollRestoration","activeUrl","setActiveUrl","scrollPos","setPositionFixed","innerHeight","bottomBarHeight","restorePositionSetting","onScroll","onDragProp","onReleaseProp","closeThreshold","scrollLockTimeout","handleOnly","fixed","onClose","disablePreventScroll","repositionInputs","onAnimationEnd","autoFocus","_drawerRef_current","_drawerRef_current1","setIsOpen","o","setHasBeenOpened","isDragging","setIsDragging","justReleased","setJustReleased","openTime","dragStartTime","dragEndTime","lastTimeDragPrevented","isAllowedToDrag","nestedOpenChangeTimer","pointerStart","keyboardIsOpen","shouldAnimate","previousDiffFromInitial","drawerHeightRef","drawerWidthRef","initialDrawerHeight","onReleaseSnapPoints","onDragSnapPoints","getSnapPointsPercentageDragged","onPress","shouldDrag","isDraggingInDirection","_window_getSelection","highlightedText","swipeAmount","date","directionMultiplier","noCloseSnapPointsPreCondition","drawerDimension","snapPointPercentageDragged","dampenedDraggedDistance","translateValue","opacityValue","scaleValue","borderRadiusValue","_window_visualViewport","onVisualViewportChange","visualViewportHeight","totalHeight","diffFromInitial","drawerHeight","isTallEnough","offsetFromTop","activeSnapPointHeight","newDrawerHeight","fromWithin","cancelDrag","resetDrawer","currentSwipeAmount","timeTaken","distMoved","_drawerRef_current_getBoundingClientRect_height","visibleDrawerHeight","_drawerRef_current_getBoundingClientRect_width","visibleDrawerWidth","isHorizontalSwipe","onNestedOpenChange","scale","initialTranslate","onNestedDrag","initialScale","newScale","newTranslate","onNestedRelease","translate","hasSnapPoints","onMouseUp","delayedSnapPoints","setDelayedSnapPoints","pointerStartRef","lastKnownPointerEventRef","wasBeyondThePointRef","isDeltaInDirection","threshold","isDeltaX","dFactor","handleOnPointerUp","yPosition","xPosition","swipeStartThreshold","LONG_HANDLE_PRESS_TIMEOUT","DOUBLE_TAP_TIMEOUT","Handle","preventCycle","closeTimeoutIdRef","shouldCancelInteractionRef","handleStartCycle","handleCancelInteraction","handleCycleSnapPoints","currentSnapIndex","point","nextSnapPoint","handleStartInteraction","Drawer","sides","min","max","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","placement","getAlignment","getOppositeAxis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","commonX","commonY","commonAlign","coords","computePosition","strategy","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","detectOverflow","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","b","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","_e","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","_io","refresh","skip","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","isClient","deepEqual","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","whileElementsMounted","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","useSize","setSize","entry","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","placementState","setPlacementState","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","onAnchorChange","anchorRef","previousAnchor","sideAndAlign","getSideAndAlignFromPlacement","placedSide","placedAlign","PopperContentProvider","useContentContext","PopperContent","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","handlePlaced","arrowX","_c","arrowY","_d","cannotCenterArrow","contentZIndex","setContentZIndex","_f","_g","_h","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","VISUALLY_HIDDEN_STYLES","VisuallyHidden","createTooltipContext","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayedRef","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","openTimerRef","wasOpenDelayedRef","open2","stateAttribute","handleOpen","handleClose","handleDelayedOpen","PopperPrimitive.Root","TooltipTrigger","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","TooltipPortal","TooltipContent","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","Slottable","ariaLabel","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","TooltipArrow","PopperPrimitive.Arrow","polygon","inside","j","ii","jj","xi","yi","xj","yj","points","newPoints","getHullPresorted","upperHull","q","lowerHull","Root3","Content2","Arrow2","TooltipZIndexContext","zIndex","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","portalContainer","zIndexFromProvider","TooltipPrimitive.Portal","TooltipPrimitive.Content","TooltipPrimitive.Arrow","BsTooltip","setPortalContainer","triggerEl","rootNode","existing","IconBtn","forwardRef","icon","tooltip","rounded","btn","DockIcon","FloatIcon","CloseIcon","UserIcon","BagIcon","BuildingIcon","PlaneIcon","ExportIcon","AddIcon","TrashIcon","AnalysisIcon","MagicIcon","ChevronIcon","SNIcon","TextIcon","NumberIcon","SubformIcon","EmptyCardIcon","MultilineTextIcon","FormFieldIcon","DatetimeIcon","RadioButtonIcon","ImgIcon","AttachmentIcon","MultiUserIcon","AddressIcon","LocationIcon","LetterAIcon","LeftArrowIcon","SolidArrowDownIcon","DividerIcon","MicrophoneIcon","UploadIcon","StopIcon","SearchIcon","EditIcon","QuestionIcon","InfoIcon","ExcelIcon","ColorfulEditIcon","RemoveCircleIcon","BackIcon","RefreshIcon","CopyIcon","XlsxIcon","UnknownFileIcon","CsvFileIcon","TxtFileIcon","CheckerInBoxIcon","CheckerIcon","StatsIcon","DataTableIcon","DefaultFormIcon","FormulasIcon","ScrollArrowDownIcon","AggregateTableIcon","GanttIcon","DashLayoutContainerIcon","DataViewIcon","DataReportIcon","BrushIcon","AIIcon","SettingIcon","FullscreenIcon","MenuLinesIcon","HCollapseIcon","HExpandIcon","CommonTypeIcon","fill","FlowNodeTypeIcon","ScheduleTypeIcon","FormTypeIcon","GoToFormIcon","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","DrawerContent","autoContainer","setAutoContainer","setDetectorRef","vaulStyle","cloned","effectiveContainer","DrawerHeader","DrawerBody","bodyRef","handleWheel","atTop","atBottom","observer","DrawerFooter","DrawerTitle","DrawerDescription","DrawerCloseButton","POPOVER_NAME","createPopoverContext","PopoverProvider","usePopoverContext","Popover","__scopePopover","hasCustomAnchor","setHasCustomAnchor","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopoverTrigger","PopoverPortal","PopoverContent","PopoverContentModal","PopoverContentNonModal","isRightClickOutsideRef","PopoverContentImpl","isRightClick","PopoverClose","PopoverArrow","Anchor2","PopoverPrimitive.Root","PopoverPrimitive.Trigger","PopoverPrimitive.Anchor","onWheel","PopoverPrimitive.Portal","PopoverPrimitive.Content","toKebabCase","toCamelCase","match","p1","p2","toPascalCase","camelCase","mergeClasses","classes","hasA11yProp","defaultAttributes","Icon","color","strokeWidth","absoluteStrokeWidth","iconNode","createElement","attrs","createLucideIcon","iconName","Component","Check","ChevronDown","ChevronLeft","ChevronRight","ChevronUp","ChevronsLeft","ChevronsRight","LoaderCircle","Spinner","Loader2Icon","Label","required","LabelPrimitive.Root","Input","Textarea","createCollection","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","CollectionSlot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","DirectionContext","useDirection","localDir","globalDir","usePrevious","OPEN_KEYS","SELECTION_KEYS","SELECT_NAME","Collection","createSelectContext","SelectProviderImpl","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","SelectProvider","__scopeSelect","valueProp","onValueChange","dir","autoComplete","disabled","form","internal_do_not_use_render","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","triggerPointerDownPosRef","isFormControl","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","option","handleNativeOptionAdd","handleNativeOptionRemove","optionsSet","Select","providerProps","Fragment2","SelectBubbleInput","SelectTrigger","getItems","pointerTypeRef","searchRef","handleTypeaheadSearch","resetTypeahead","useTypeaheadSearch","search","enabledItems","currentItem","nextItem","findNextItem","pointerEvent","shouldShowPlaceholder","isTypingAhead","VALUE_NAME","SelectValue","placeholder","valueProps","onValueNodeHasChildrenChange","hasChildren","showPlaceholder","ICON_NAME","SelectIcon","iconProps","SelectPortal","SelectContent","fragment","setFragment","SelectContentImpl","SelectContentFragment","SelectContentProvider","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","viewport","setViewport","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","setIsPositioned","firstValidItemFoundRef","firstItem","restItems","lastItem","PREVIOUSLY_FOCUSED_ELEMENT","focusSelectedItem","pointerMoveDelta","handlePointerMove","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","isModifierKey","candidateNodes","currentElement","currentIndex","ITEM_ALIGNED_POSITION_NAME","popperProps","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","GROUP_NAME","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupProps","groupId","LABEL_NAME","SelectLabel","labelProps","groupContext","ITEM_NAME","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","itemProps","isSelected","textValue","setTextValue","isFocused","setIsFocused","textId","handleSelect","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","textContent","nativeOption","onNativeOptionAdd","onNativeOptionRemove","ITEM_INDICATOR_NAME","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","activeItem","SEPARATOR_NAME","SelectSeparator","separatorProps","SelectArrow","BUBBLE_INPUT_NAME","nativeOptions","selectValue","prevValue","selectProto","onSearchChange","handleSearchChange","timerRef","updateSearch","normalizedSearch","char","currentItemIndex","wrappedItems","wrapArray","_","SelectPrimitive.Root","SelectPrimitive.Group","SelectPrimitive.Value","SelectPrimitive.Trigger","SelectPrimitive.Icon","SelectPrimitive.ScrollUpButton","SelectPrimitive.ScrollDownButton","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Label","SelectPrimitive.Item","SelectPrimitive.ItemText","SelectPrimitive.Separator","tzName","timeZone","format","offsetFormatCache","offsetCache","tzOffset","offsetStr","calcOffset","captures","offsetRe","cacheStr","values","hours","minutes","seconds","TZDateMini","adjustToSystemTZ","syncToInternal","tz","time","method","utcMethod","syncFromInternal","baseOffset","prevHour","systemOffset","prevHourSystemOffset","systemDSTChange","dstShift","offsetDiff","systemDate","systemSecondsOffset","secondsOffset","postBaseOffset","postOffset","postOffsetDiff","offsetChanged","postDiff","newBaseOffset","newOffset","offsetChange","TZDate","sign","day","month","year","locales","millisecondsInWeek","millisecondsInDay","constructFromSymbol","constructFrom","toDate","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","diff","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","addWeeks","addYears","date_","isSameDay","dateLeft_","dateRight_","isDate","isValid","differenceInCalendarMonths","yearsDiff","monthsDiff","endOfMonth","normalizeInterval","interval","eachMonthOfInterval","reversed","endTime","step","startOfMonth","endOfYear","startOfYear","eachYearOfInterval","endOfWeek","endOfISOWeek","formatDistanceLocale","formatDistance","token","tokenValue","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","localize","dirtyNumber","number","rem100","quarter","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","predicate","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","delimiter","absOffset","dateLongFormatter","timeLongFormatter","longFormatters","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","input","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","_j","_i","_r","_q","_n","_m","_l","_k","_p","_o","originalDate","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","formatter","matched","getDaysInMonth","monthIndex","lastDayOfMonth","getMonth","getYear","isAfter","dateToCompare","isBefore","isSameMonth","isSameYear","setMonth","midMonth","setYear","FIVE_WEEKS","FOUR_WEEKS","getBroadcastWeeksInMonth","dateLib","firstDayOfMonth","firstDayOfWeek","broadcastStartDate","lastDateOfLastWeek","startOfBroadcastWeek","firstOfMonth","endOfBroadcastWeek","startDate","numberOfWeeks","dateFnsEnUS","formatDate","weekNumber","DateLib","overrides","dateLeft","dateRight","years","uniqueYears","yearsArray","formatted","_dateLib","numerals","digitMap","digit","localeCode","defaultDateLib","CalendarDay","displayMonth","CalendarMonth","weeks","CalendarWeek","days","CaptionLabel","Chevron","orientation","Day","tdProps","DayButton","buttonProps","UI","DayFlag","SelectionState","Animation","Dropdown","components","selectProps","cssClassSelect","selectedOption","DropdownNav","Footer","Month","calendarMonth","displayIndex","divProps","MonthCaption","MonthGrid","Months","dayPickerContext","useDayPicker","useContext","MonthsDropdown","Nav","onPreviousClick","onNextClick","previousMonth","nextMonth","navProps","labelPrevious","labelNext","handleNextClick","useCallback","handlePreviousClick","NextMonthButton","Option","PreviousMonthButton","rootRef","Week","trProps","Weekday","Weekdays","WeekNumber","thProps","WeekNumberHeader","Weeks","YearsDropdown","rangeIncludesDate","range","excludeEnds","isDateInterval","matcher","isDateRange","isDateAfterType","isDateBeforeType","isDayOfWeekType","isDatesArray","dateMatchModifiers","matchers","matchersArr","matcherDate","diffBefore","diffAfter","isDayBefore","isDayAfter","createGetModifiers","navStart","navEnd","hidden","showOutsideDays","broadcastCalendar","today","computedNavStart","computedNavEnd","internalModifiersMap","customModifiersMap","isOutside","isBeforeNavStart","isAfterNavEnd","isToday","modifierValue","dayFlags","customModifiers","getClassNamesForModifiers","modifiersClassNames","active","previousValue","getComponents","customComponents","getDataAttributes","dataAttributes","val","getDefaultClassNames","formatCaption","formatMonthCaption","formatDay","formatMonthDropdown","formatWeekdayName","weekday","formatWeekNumber","formatWeekNumberHeader","formatYearDropdown","getFormatters","customFormatters","defaultFormatters","labelDayButton","labelDay","labelGrid","labelCaption","labelGridcell","labelMonthDropdown","labelNav","defaultLabel","_month","labelWeekday","labelWeekNumber","labelWeekNumberHeader","labelYearDropdown","resolveLabel","customLabel","localeLabel","_args","getLabels","customLabels","localeLabels","defaultLabels","defaultLabels.labelDayButton","defaultLabels.labelMonthDropdown","defaultLabels.labelNext","defaultLabels.labelPrevious","defaultLabels.labelWeekNumber","defaultLabels.labelYearDropdown","defaultLabels.labelGrid","defaultLabels.labelGridcell","defaultLabels.labelNav","defaultLabels.labelWeekNumberHeader","defaultLabels.labelWeekday","getMonthOptions","getStyleForModifiers","dayModifiers","modifiersStyles","getWeekdays","ISOWeek","referenceToday","getYearOptions","reverse","firstNavYear","lastNavYear","createNoonOverrides","fallbackWeekStartsOn","toNoonTZDate","normalizedDate","toCalendarDate","zoned","weekStartsOnValue","cursor","endKey","getWeekFn","getISOWeekFn","differenceInCalendarDaysFn","differenceInCalendarMonthsFn","asHtmlElement","queryMonthEls","queryMonthEl","queryCaptionEl","queryWeeksEl","queryNavEl","queryWeekdaysEl","useAnimation","rootElRef","months","focused","previousRootElSnapshotRef","previousMonthsRef","animatingRef","previousMonths","isAfterPreviousMonth","captionAnimationClass","weeksAnimationClass","previousRootElSnapshot","rootElSnapshot","currentMonthElSnapshot","previousMonthElSnapshot","captionEl","weeksEl","previousMonthEls","currentMonthEls","navEl","currentMonthEl","previousMonthEl","cleanUp","previousWeekdaysEl","previousCaptionEl","previousWeeksEl","getDates","displayMonths","maxDate","firstMonth","lastMonth","fixedWeeks","startWeekFirstDate","displayMonthsWeekEnd","constraintWeekEnd","gridEndDate","nOfDays","nOfMonths","extraDates","daysToAdd","getDays","calendarMonths","initialDays","weekDays","getDisplayMonths","firstDisplayedMonth","calendarEndMonth","numberOfMonths","getInitialMonth","defaultMonth","initialMonth","getMonths","dayPickerMonths","firstDateOfFirstWeek","monthDates","nrOfDaysWithFixedWeeks","dayPickerMonth","getNavMonths","startMonth","endMonth","newDate","fromYear","toYear","fromMonth","toMonth","hasYearDropdown","getNextMonth","pagedNavigation","getPreviousMonth","calendarStartMonth","getWeeks","initialWeeks","useControlledValue","controlledValue","uncontrolledValue","useCalendar","setFirstMonth","newInitialMonth","disableNavigation","onMonthChange","isDayInCalendar","goToMonth","newMonth","FocusTargetPriority","isFocusableDay","calculateFocusTarget","getModifiers","lastFocused","focusTarget","foundFocusTargetPriority","getFocusableDate","moveBy","moveDir","refDate","focusableDate","getNextFocus","refDay","attempt","targetMonth","focusDay","useFocus","calendar","setLastFocused","focusedDay","setFocused","nextFocus","useMulti","initiallySelected","onSelect","internallySelected","setSelected","selected","triggerDate","newDates","addToRange","initialRange","rangeContainsDayOfWeek","dayOfWeekArr","totalDays","totalDaysLimit","rangeOverlaps","rangeLeft","rangeRight","rangeContainsModifiers","functionMatchers","useRange","excludeDisabled","newRange","useSingle","compareDate","useSelection","single","multi","toTimeZone","toZoneNoon","noonSafe","convertMatcher","convertMatchersToTimeZone","DayPicker","initialProps","nextModifiers","labels","noonOverrides","captionLayout","mode","navLayout","onDayBlur","onDayClick","onDayFocus","onDayKeyDown","onDayMouseEnter","onDayMouseLeave","onPrevClick","showWeekNumber","selectedValue","blur","isFocusTarget","moveFocus","weekdays","isInteractive","handleDayClick","m","handleDayFocus","handleDayBlur","handleDayKeyDown","keyMap","handleDayMouseEnter","handleDayMouseLeave","handleMonthChange","selectedMonth","handleYearChange","selectedYear","contextValue","monthControl","yearControl","Calendar","isCheckBoxInput","isDateObject","isNullOrUndefined","isObjectType","isObject","getEventValue","getFieldArrayParentNames","names","matches","isPlainObject","tempObject","prototypeCopy","isWeb","cloneObject","isFileListInstance","isArray","copy","isKey","isUndefined","compact","stringToPath","get","isBoolean","tempPath","lastIndex","objValue","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","FORM_ERROR_TYPE","ROOT_ERROR_TYPE","HookFormControlContext","useFormControlContext","getProxyFormState","formState","control","localProxyFormState","isRoot","_key","useFormState","formControl","exact","updateFormState","_localProxyFormState","isString","generateWatchOutput","_names","formValues","isGlobal","fieldName","isPrimitive","object1","object2","visited","keys1","keys2","val1","val2","useWatch","compute","_defaultValue","_compute","_computeFormValues","_prevControl","_prevName","updateValue","getCurrentOutput","refreshValue","computedFormValues","controlChanged","prevName","computedOutput","nameChanged","useController","shouldUnregister","isArrayField","defaultValueMemo","_props","_registerProps","fieldState","onBlur","elm","field","_shouldUnregisterField","updateMounted","Controller","HookFormContext","useFormContext","FormProvider","watch","getValues","getFieldState","setError","clearErrors","setValues","resetField","handleSubmit","unregister","register","setFocus","subscribe","memoizedValue","appendErrors","validateAllFieldCriteria","errors","convertToArrayPayload","createSubject","_observers","extractFormValues","fieldsState","fieldValue","nestedFieldsState","isEmptyObject","isFileInput","isMultipleSelect","isRadioInput","isRadioOrCheckbox","live","baseGet","updatePath","isEmptyArray","obj","unset","paths","childObject","objectHasFunction","isTraversable","markFieldsDirty","fields","pruneDirtyFields","pruned","getDirtyFields","dirtyFieldsFromValues","formValue","defaultResult","validResult","getCheckboxValue","getFieldValueAs","valueAsNumber","valueAsDate","setValueAs","defaultReturn","getRadioValue","previous","getFieldValue","getResolverOptions","fieldsNames","_fields","criteriaMode","shouldUseNativeValidation","isRegex","getRuleValue","rule","getValidationModes","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","validateFunction","hasValidation","isWatched","isBlurEvent","watchName","iterateFieldsByAction","action","abortEarly","currentField","schemaErrorLookup","foundError","shouldRenderFormState","formStateData","_proxyFormState","shouldSubscribeByName","signalName","currentName","skipValidation","isTouched","isSubmitted","reValidateMode","unsetEmptyArray","updateFieldArrayRootError","fieldArrayErrors","getValidateError","getValueAndMessage","validationData","validateField","disabledFieldNames","isFieldArray","maxLength","minLength","validate","mount","inputValue","inputRef","setCustomValidity","isRadio","isCheckBox","isEmpty","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueNumber","valueDate","convertTimeToDate","isTime","isWeek","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","DEFAULT_FORM_STATE","createFormControl","_formState","_defaultValues","_formValues","_state","delayErrorCallback","timer","defaultProxyFormState","_proxySubscribeFormState","_subjects","shouldDisplayAllAssociatedErrors","debounce","wait","_setValid","shouldUpdateValid","_runSchema","_updateIsValidating","executeBuiltInValidation","isValidating","_updateDirtyFields","_setFieldArray","shouldSetValues","shouldUpdateFieldsAndState","fieldValues","touchedFields","_getDirty","updateErrors","_setErrors","hasExplicitNullIntermediate","segments","defaultValues","updateValidAndValue","shouldSkipSetValueAs","wasUnsetInFormValues","setFieldValue","updateTouchAndDirty","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","previousFieldError","updatedFormState","executeSchemaAndUpdateState","validateForm","eventType","onlyCheckValid","isFieldArrayRoot","isPromiseFunction","shouldTrackIsValidatingState","fieldError","_removeUnmounted","_getWatch","_getFieldArray","optionRef","checkboxRef","radioRef","setFieldValues","fieldKey","cloneValue","isValueUnchanged","watched","arrayName","updatedFormValues","isFieldValueUpdated","_updateIsFieldValueUpdated","validationModeBeforeSubmit","validationModeAfterSubmit","shouldSkipValidation","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","inputName","currentError","currentRef","restOfErrorTree","payload","_subscribe","_setFormState","snapshot","_setDisabledField","disabledStateChanged","disabledIsDefined","shouldRevalidateRemount","fieldRef","radioOrCheckbox","_focusError","_disableForm","onValid","onInvalid","onValidError","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","fieldsToCheck","isDirty","existingValue","methods","useForm","_formControl","_values","sub","FormFieldContext","FormItemContext","useFormField","fieldContext","Form","formMethods","FormField","FormItem","FormLabel","formItemId","FormControl","formDescriptionId","formMessageId","FormDescription","FormMessage","AbsFullscreenGradientBg","disableGradient","bgColor","AgentSelect","agents","showSearch","activeAgent","searchQuery","setSearchQuery","groups","systemAgents","customAgents","g","agent","groupIndex","isActive","AgentScrollSelector","showSlider","scrollRef","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","popoverOpen","setPopoverOpen","setTriggerRef","checkScroll","slider","ImgMsgPart","url","alt","onClick","FILE_TYPE_MAP","DEFAULT_FILE_CONFIG","isImageType","mediaType","getFileConfig","fileName","getDisplayFileName","FileMsgPart","iconSize","scaledIconSize","iconScale","hasFileName","AttachmentPart","iconOnly","handleClick","AttachmentPartGroup","onPartClick","LoaderIcon","ChevronDownIcon","ChevronRightIcon","ChevronLeftIcon","NavButton","GradientOverlay","visible","isLeft","AttachmentsPreviewer","attachments","imageSize","onImageClick","onImageRemove","showLeftNav","setShowLeftNav","showRightNav","setShowRightNav","scrollAmount","newScrollLeft","attachment","BaseButton","hoverTextCls","DEPTH_PADDING","getDepthPadding","depth","getEntryIconClass","newStr","buildEntryTreeFromAliasMap","appDetail","entryIdAliasMap","entryMap","aliasKeys","childrenByParent","parentKey","allParentValues","rootParents","lowerQuery","buildRecursive","parentId","childIds","aliasItem","entryDetail","isGroup","selfMatch","rootId","filterTreeBySearch","nameMatch","filteredChildren","SearchInput","BaseSearch","EntryItem","TreeItemNode","selectedEntryId","appId","section","expanded","setExpanded","ScrollSlider","appDetails","currentAppId","onOverflowChange","showCurrentAppEntriesOnly","activeGroup","setActiveGroup","groupSearchQuery","setGroupSearchQuery","popoverStyle","setPopoverStyle","popoverRef","groupPillRefs","groupPortalContainer","setGroupPortalContainer","flatNodes","appIds","currentFirst","otherNodes","tree","mapped","merged","filteredGroupTree","canLeft","canRight","hasOverflow","descendantToGroupId","map","collectDescendants","targetId","pill","updatePopoverPosition","closeGroupPopover","openGroupPopover","flatNode","handleGroupPopoverSelect","handleClickOutside","handleEscape","hasGroupSearch","isLeaf","isGroupActive","setPillRef","createPortal","AppGroupFolder","hasSearch","OtherAppSection","EntryPopover","currentAppTree","otherAppIds","hasCurrentApp","hasOtherApps","hasAnyContent","BsEntrySelect","_placeholder","internalValue","setInternalValue","sliderHasOverflow","setSliderHasOverflow","handleOverflowChange","handleToggle","handleResize","defaultGradient","BorderAnimation","duration","borderRadius","beamWidth","beamHeight","gradient","borderWidth","borderColor","BorderColorAnimation","bgInset","isNumSize","safeSize","safeInset","BotIcon","BotAvatarAndName","variantStyles","iconJsx","CardField","CardFieldsWrapper","Card","title","desc","iconCode","IconCard","iconBgColor","description","badge","AgentTag","TriggerConfigList","TriggerTypeIcon","triggerType","c","minIcon","TriggerSelect","configList","COLLAPSIBLE_NAME","createCollapsibleContext","CollapsibleProvider","useCollapsibleContext","Collapsible","__scopeCollapsible","collapsibleProps","CollapsibleTrigger","CollapsibleContent","CollapsibleContentImpl","isPresent","setIsPresent","heightRef","widthRef","isMountAnimationPreventedRef","originalStylesRef","rAF","CHECKBOX_NAME","createCheckboxContext","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","defaultChecked","onCheckedChange","checked","setChecked","setControl","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isIndeterminate","CheckboxTrigger","onKeyDown","checkboxProps","initialCheckedStateRef","prevChecked","Checkbox","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","indicatorProps","controlSize","inputProto","bubbles","defaultCheckedRef","ENTRY_FOCUS","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","RovingFocusGroupImpl","__scopeRovingFocusGroup","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","currentTabStopId","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","tabStopId","prevCount","isKeyboardFocus","entryFocusEvent","RovingFocusGroupItem","focusable","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","preventScroll","Item","RADIO_NAME","createRadioContext","createRadioScope","RadioProviderImpl","useRadioContext","RadioProvider","__scopeRadio","onCheck","RadioTrigger","radioProps","Radio","RadioBubbleInput","RadioIndicator","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","__scopeRadioGroup","rovingFocusGroupScope","jsx2","RovingFocusGroup.Root","Primitive2","ITEM_PROVIDER_NAME","ITEM_TRIGGER_NAME","ITEM_BUBBLE_INPUT_NAME","RadioGroupItemProvider","radioScope","RadioGroupItemTrigger","useComposedRefs2","isArrowKeyPressedRef","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","RadioGroupItem","jsxs2","RadioGroupItemBubbleInput","bubbleProps","INDICATOR_NAME2","RadioGroupIndicator","SWITCH_NAME","createSwitchContext","SwitchProviderImpl","useSwitchContext","SwitchProvider","__scopeSwitch","SwitchTrigger","switchProps","Switch","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","TABS_NAME","createTabsContext","TabsProvider","useTabsContext","Tabs","__scopeTabs","activationMode","tabsProps","TAB_LIST_NAME","TabsList","listProps","TabsTrigger","triggerId","makeTriggerId","makeContentId","isAutomaticActivation","TabsContent","baseId","List","SwitchPrimitive.Root","SwitchPrimitive.Thumb","FORM_ACTION_LABELS","FLOW_NODE_ACTION_LABELS","buildTriggerDescription","helper","actions","buildAgentInfo","agentName","agentIcon","AgentHelperCard","onEnabledChange","onViewLogs","onEdit","onCopy","onDelete","line","AgentHelperCardList","getAgentName","getAgentIcon","PlusIcon","PlaceholderCard","detailAddress","btnLabel","onCreateClick","AgentEntryCard","onLogClick","GridsIcon","CATEGORY_ITEMS","AgentCategorySelectMenu","usePortalContainer","portalName","z","C","K","X","P","M","Z","u","V","N","te","getFormIconClass","AppIcon","FontIcon","getIconUnicode","SORT_OPTIONS","AgentSortSelect","currentLabel","FolderIcon","buildFormTree","allItemIds","allParentKeys","childItems","FormEntryItem","FormTreeItemNode","selectedFormId","FormPopover","FormSelect","selectedForm","reactRoot","eventTarget","rafId","poll","blockEvents","SquareInBoxIcon","SquareChecker","readonly","intermediate","generatedId","checkboxId","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","groupsToAppTreeNodes","app","ToggleIcon","MoreIcon","DropdownChevron","ALL_APPS_VALUE","flattenNodes","walk","AppSelect","popoverContentOnly","showAll","searchPlaceholder","maxVisibleChips","triggerWidth","setTriggerWidth","triggerBtnRef","expandedIds","setExpandedIds","initExpand","nodeMap","selectedIds","selectedLabels","selectedAppLabel","filteredNodes","filterTree","labelMatch","toggleExpanded","nodeId","currentIds","idx","handleRemoveChip","handleOpenChange","nextOpen","multiSelectedLabels","visibleChips","overflowCount","renderNodeRow","isExpanded","leftPad","hasMultiSelection","popoverContent","ids","CheckCard","controlledChecked","internalChecked","setInternalChecked","isChecked","isCheckedRef","newChecked","FORM_ACTION_CONFIG_LIST","FormActionTriggerSelect","multiple","selectedList","FLOW_NODE_ACTION_CONFIG_LIST","FlowNodeActionTriggerSelect","TriggerTimeSourceTypeOptions","TriggerTimeSourceTypeSelect","MIN_YEAR","MAX_YEAR","MONTH_NAMES","WEEK_NAMES","getFirstMondayOfMonth","daysToSubtract","checkTimeValidate","curTotal","startTotal","endTotal","checkDateValidate","minDate","minY","minM","maxY","maxM","getCloserDate","mn","mx","checkBeforeMenuClick","checkAfterMenuClick","formatDateByFormat","h","tdBase","tdDisabled","CalendarPanel","onYearReduce","onYearAdd","onMonthReduce","onMonthAdd","onMonthMenu","onYearMenu","onChangeDay","hasDayPart","calendarData","firstMonday","todayStr","rows","row","w","cell","ri","isOday","isWeekend","MonthPanel","showYear","onMountOk","checkValidate","rowIdx","colIdx","valid","YearPanel","showYearLabel","onYearFReduce","onYearFAdd","onSelectYear","startYear","endYear","yearGrid","colItemBase","TimePanel","startTime","onHoursChange","onMinutesChange","onSecondsChange","hasMinutePart","hasSecondPart","renderColumn","colLen","currentVal","isMinBoundary","isMaxBoundary","FooterPanel","hasTime","hasDay","todayCls","onToday","onOk","DatePicker","minDateProp","maxDateProp","weekProp","initialDate","setDay","setHours","setMinutes","setSeconds","showMonth","setShowMonth","setShowYear","showHms","setShowHms","closerDate","fireOnChange","closeFloat","onDateUpdate","handleMonthReduce","newYear","newDay","handleMonthAdd","handleYearReduce","handleYearAdd","handleYearFReduce","handleYearFAdd","handleSelectYear","handleMountOk","handleChangeDay","handleToDay","handleOkDay","checkValiToday","handleHoursChange","handleMinutesChange","handleSecondsChange","hasDatePart","hasTimePart","isMonthOnly","isYearOnly","openMonthMenu","openYearMenu","dataRangeMinHeight","DateInput","displayText","defaultPlaceholder","getPlaceholderByFormat","FIELD_TYPE_BADGE_MAP","textTypes","numberTypes","datetimeTypes","fileTypes","TypeBadge","buildNodeKey","buildItemNodeKey","buildFieldTree","parentWidgetName","subformItems","hasItems","rootKey","childWidgetName","fullWidgetName","childMatch","FieldSelectPopover","selectedKey","showTypeBadge","expandedKeys","setExpandedKeys","paddingLeft","handleRowClick","handleToggleClick","buildKeyLabelMap","fullKey","childKey","getLabelByKey","FieldSelect","internalSelectedKey","setInternalSelectedKey","displayLabel","nodeKey","OffsetTypeOptions","getOffsetTypeOptions","dateFieldType","opt","OffsetTypeSelect","OffsetUnitOptions","OffsetUnitSelect","MINUTES_PER_DAY","NUMBER_INPUT_CLASSES","getDefaults","validOffsetType","minutesToTimeDate","clamped","timeDateToMinutes","OffsetPreferenceSelect","effectiveType","showDaysInput","showNumberInput","showTimeInput","showUnitSelect","timeInMinutes","timeDate","daysCount","numberValue","handleOffsetTypeChange","newOffsetType","timeInMin","handleTimeChange","mins","handleDaysChange","raw","handleNumberChange","handleUnitChange","newUnit","isDateFieldPayload","buildDateFieldPayload","parseDateFromPayload","TriggerTimePreferenceSelect","forms","dateFormat","selectedType","dateFieldPayload","handleTypeChange","handleDateChange","handleFormChange","handleFieldChange","_field","handleOffsetPreferenceChange","offsetPref","RepeatPreferenceTypeOptions","RepeatPreferenceTypeSelect","ClearAllIcon","WeekdaysOptions","WeekdaysSelect","isHovering","setIsHovering","allSelected","someSelected","handleSelectAll","handleClearAll","handleRemove","hasSelection","showClear","TabsPrimitive.Root","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content","MonthdaysOptions","LAST_DAY_OPTION","DAYS_PER_ROW","MonthdaysSelect","draftValue","setDraftValue","displayValue","numericSelected","hasLast","allDaysSelected","handleToggleDay","handleSelectAllDays","allDays","lastPart","handleSelectToday","handleToggleLast","handleConfirm","dayRows","RepeatByTypeOptions","RepeatByTypeSelect","defaultCustomRepeatPreference","RepeatPreferenceSelect","customPref","repeatBy","handleRepeatByChange","newRepeatBy","handleIntervalChange","handleWeekdaysChange","handleMonthdaysChange","weekdaysValue","monthdaysValue","DecorativeLine","flipped","FormDivider","ALL_OPTIONS","OPERATOR_LABEL_MAP","RelationalOperatorSelect","operators","borderless","selectedLabel","ChatAreaHeader","avatar","onDockClick","onCloseClick","draggable","isDocked","onDragStart","CircleChecker","RadioCard","CollapsibleTxtMsg","disableExpand","ConfirmDialog","linkText","onLinkClick","cancelText","onCancel","confirmText","onConfirm","showLink","showCancel","btnStyle","groupFields","cellCls","FieldRow","isSubFormChild","SubFormGroup","toggle","FieldsDesignInfoTable","DotAnimation","FieldsGeneratingIndicator","loading","animationWidth","magicIconWidth","textRef","textWidth","setWidth","fullWidth","MessageContent","FakeBotMessage","headless","hasOwn","arg","appendClass","parseValue","newClass","module","LinearGradientColorBgAnimation","childrenContainerStyle","PreviewerHeader","tips","confirmContent","confirmTitle","onBackClick","onSave","closeBtnLabel","onClear","dialogContainer","disableConfirm","disableOperation","customOperationElement","showConfirmDialog","setShowConfirmDialog","setLoading","setRootRef","btnResetStyle","isData","isFields","titleCls","operations","contentJsx","borderCls","paddingCls","PlaceholderDashedBox","FieldsPreviewer","fullscreen","empty","rightSpaceWidth","rightSpaceRef","rightElement","streaming","streamingText","disableShadowContainer","fullContent","containerStyle","pr","absContainer","setAbsContainer","contentCls","fullContentStyle","rightArea","FieldsPortal","portalEl","shadowEntry","PrimaryConfirmBtn","prefixDesc","light","FormIcon","fontSize","FormInfoEditor","memo","onNameChange","onMount","selectedIcon","iconOptions","onIconChange","controlledExpanded","onExpandedChange","internalExpanded","setInternalExpanded","isDropdownOpen","setIsDropdownOpen","nameVal","setNameVal","iconOpt","setIconOpt","FORMULA_OP_LABEL","FreezeMode","FORMULA_OP_COLOR","FormulaTag","GenerateAnimation","LineChecker","extra","confirmed","shortDesc","hasExtra","checker","STYLE_INJECTED_ATTR","injectStylesIntoShadow","linkEl","LegacySlot","renderLegacy","shadow","withHostStyles","injectedStyles","onSetRef","hostRef","cleanupRef","mountPointRef","targetRef","host","mountPoint","LinearGradientBorderBtn","L","T","me","xe","be","Re","I","Te","se","Oe","Q","we","F","ye","Pe","Se","ie","$e","U","Le","Me","ze","oe","Ae","D","ae","Ce","le","Ie","Ee","Be","ue","qe","ve","pe","De","He","Ze","Ge","Ne","Qe","Fe","je","ce","he","Ue","ne","W","Ke","G","We","E","Xe","ke","J","de","ge","Je","__publicField","R","O","Y","ee","fe","H","A","S","B","ok","unreachable","stringify","settings","nameRe","nameReJsx","emptyOptions","whitespace","thing","Schema","normal","space","merge","definitions","definition","Info","attribute","powers","boolean","increment","booleanish","overloadedBoolean","spaceSeparated","commaSeparated","commaOrSpaceSeparated","checks","types","DefinedInfo","mask","mark","check","create","properties","normals","info","aria","caseSensitiveTransform","attributes","caseInsensitiveTransform","svg","xlink","xmlns","xml","hastToReact","cap","dash","find","schema","Type","camelcase","dashes","kebab","$0","htmlBase","svgBase","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","ASTERISK","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","lineno","column","updatePosition","str","lines","Position","msg","comments","rules","comment","pos","declaration","ret","trim","declarations","decls","decl","cjs","__importDefault","this","StyleToObject","inline_style_parser_1","iterator","styleObject","hasIterator","utilities","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","skipCamelCase","capitalize","character","trimHyphen","style_to_object_1","utilities_1","StyleToJS","pointEnd","pointStart","stringifyPosition","VFileMessage","causeOrReason","optionsOrParentOrPlace","origin","reason","legacyCause","own","emptyMap","tableCellElement","docs","toJsxRuntime","filePath","developmentCreate","productionCreate","one","mdxExpression","mdxJsxElement","mdxEsm","parentSchema","findComponentFromName","createElementProps","createChildren","addNode","addChildren","expression","assert","crashEstree","createJsxElementProps","jsxDEV","alignValue","createProperty","objectExpression","countsByName","commas","spaces","parseStyle","transformStylesToCssCasing","styleToJs","cause","allowExpression","identifiers","isIdentifierName","place","domCasing","cssCasing","transformStyleToCssCasing","toDash","urlAttributes","toString","includeImageAlt","includeHtml","all","decodeNamedCharacterReference","characterReference","splice","remove","chunkStart","parameters","push","combineExtensions","extensions","syntaxExtension","extension","hook","constructs","before","decodeNumericCharacterReference","normalizeIdentifier","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","normalizeUri","replace","factorySpace","effects","limit","initializeContent","contentStart","afterContentStartConstruct","paragraphInitial","lineStart","document","initializeDocument","containerConstruct","tokenizeContainer","self","continued","childFlow","childToken","lineStartOffset","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","flowStart","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","endOfFile","stream","seen","nok","classifyCharacter","resolveAll","events","called","resolve","attention","resolveAllAttention","tokenizeAttention","openingSequence","closingSequence","nextEvents","movePoint","attentionMarkers","marker","after","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","blankLine","tokenizeBlankLine","blockQuote","tokenizeBlockQuoteContinuation","exit","tokenizeBlockQuoteStart","contStart","contBefore","characterEscape","tokenizeCharacterEscape","tokenizeCharacterReference","test","numeric","nonLazyContinuation","tokenizeNonLazyContinuation","codeFenced","tokenizeCodeFenced","closeStart","tokenizeCloseStart","initialPrefix","sizeOpen","beforeSequenceOpen","tail","sequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","startBefore","beforeSequenceClose","sequenceClose","sequenceCloseAfter","codeIndented","tokenizeCodeIndented","furtherStart","tokenizeFurtherStart","afterPrefix","atBreak","codeText","resolveCodeText","tokenizeCodeText","tailExitIndex","headEnterIndex","enter","between","SpliceBuffer","initial","stop","deleteCount","removed","chunkedPush","subtokenize","eventsArray","jumps","lineIndex","otherIndex","otherEvent","subevents","more","subcontent","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","adjust","breaks","slice","resolveContent","tokenizeContent","continuationConstruct","tokenizeContinuation","chunkInside","contentEnd","contentContinue","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","begin","escape","factoryWhitespace","tokenizeDefinition","titleBefore","tokenizeTitleBefore","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","beforeMarker","titleAfter","titleAfterOptionalWhitespace","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","resolveHeadingAtx","tokenizeHeadingAtx","sequenceFurther","htmlBlockNames","htmlRawNames","htmlFlow","resolveToHtmlFlow","tokenizeHtmlFlow","blankLineBefore","tokenizeBlankLineBefore","nonLazyContinuationStart","tokenizeNonLazyContinuationStart","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","continuation","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationAfter","continuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","htmlText","tokenizeHtmlText","returnState","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelEnd","resolveAllLabelEnd","resolveToLabelEnd","tokenizeLabelEnd","resourceConstruct","tokenizeResource","referenceFullConstruct","tokenizeReferenceFull","referenceCollapsedConstruct","tokenizeReferenceCollapsed","newEvents","media","labelStart","defined","labelEndNok","labelEndOk","referenceNotFull","resourceStart","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFull","referenceFullAfter","referenceFullMissing","referenceCollapsedStart","referenceCollapsedOpen","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak","tokenizeThematicBreak","sequence","tokenizeListContinuation","tokenizeListEnd","tokenizeListStart","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","kind","atMarker","onBlank","endOfPrefix","otherPrefix","notBlank","notInCurrentItem","setextUnderline","resolveToSetextUnderline","tokenizeSetextUnderline","heading","paragraph","flow","initializeFlow","atBlankEnding","afterConstruct","resolver","createResolver","initializeFactory","resolveAllLineSuffixes","initializeText","notText","extraResolver","resolveAllText","chunks","bufferIndex","tabs","chunk","resolveText","createTokenizer","parser","initialize","columnStart","resolveAllConstructs","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","consume","defineSkip","now","sliceSerialize","sliceStream","write","main","addResult","expandTabs","serializeChunks","sliceChunks","_bufferIndex","_index","accountForPotentialSkip","chunkIndex","go","construct","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","handleConstruct","store","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","startBufferIndex","endIndex","endBufferIndex","view","atTab","defaultConstructs","creator","postprocess","preprocess","atCarriageReturn","preprocessor","encoding","endPosition","characterEscapeOrReference","decodeString","decode","$1","$2","hex","fromMarkdown","compiler","opener","link","onenterdata","codeFlow","emphasis","hardBreak","image","listItem","onenterlistitemvalue","onenterlistordered","onenterreference","strong","closer","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","onexitdata","onexitcharacterreferencemarker","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","onexitsetextheadinglinesequence","onexitsetextheadingtext","configure","compile","resume","listStack","prepareList","defaultOnError","containerBalance","listSpread","firstBlankLineIndex","tailIndex","tailEvent","and","errorHandler","onExitError","siblings","referenceType","combined","remarkParse","blockquote","language","strikethrough","footnoteReference","clobberPrefix","safeId","reuseCounter","sup","revert","subtype","suffix","contents","imageReference","inlineCode","linkReference","results","loose","listLoose","listItemLoose","spread","table","firstRow","tableContent","tableRow","cellIndex","cells","tableCell","tab","trimLines","source","trimLine","handlers","ignore","VOID","PRIMITIVE","ARRAY","OBJECT","DATE","REGEXP","MAP","SET","ERROR","BIGINT","env","deserializer","as","out","unpair","arr","flags","deserialize","serialized","EMPTY","typeOf","asString","shouldSkip","TYPE","serializer","strict","json","pair","serialize","lossy","structuredClone$1","any","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","referenceIndex","footer","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","backReferences","counts","tailTail","structuredClone","convert","castFactory","anyFactory","propertiesFactory","typeFactory","tests","checkAsRecord","nodeAsRecord","testFunction","looksLikeANode","CONTINUE","EXIT","SKIP","visitParents","visitor","is","factory","parents","visit","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","overload","createState","definitionById","footnoteById","footnoteCounts","defaultHandlers","applyData","patch","wrap","handle","shallow","defaultUnknownHandler","trimMarkdownSpaceStart","hName","hChildren","hProperties","toHast","foot","remarkRehype","destination","file","hastTree","bail","toStr","defineProperty","gOPD","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","extend","src","copyIsArray","clone","prototype","trough","pipeline","run","middlewareIndex","middelware","wrapped","fnExpectsCallback","done","exception","then","minpath","basename","dirname","extname","join","assertPath","seenNonSlash","firstNonSlashEnd","extnameIndex","unmatchedSlash","startPart","startDot","preDotState","joined","absolute","normalizeString","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","minproc","cwd","isUrl","fileUrlOrPath","urlToPath","getPathFromURLPosix","pathname","third","order","VFile","isUint8Array","assertNonEmpty","assertPart","stem","CallableInstance","proto","Processor","attacher","assertUnfrozen","transformer","realFile","vfile","assertParser","assertCompiler","executor","reject","parseTree","realDone","compileTree","compileResult","looksLikeAValue","complete","assertDone","assertNode","transformers","outputTree","resultingTree","attachers","namespace","addPlugin","addList","addPreset","add","plugin","plugins","entryIndex","primary","currentPrimary","isPlainObj","unified","frozen","asyncName","looksLikeAVFile","changelog","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","processor","createProcessor","createFile","post","rehypePlugins","remarkPlugins","remarkRehypeOptions","allowedElements","allowElement","disallowedElements","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","deprecation","colon","questionMark","numberSign","parseMarkdownIntoBlocks","markdown","marked","MemoizedMarkdownBlock","ReactMarkdown","prevProps","nextProps","MemoizedMarkdown","block","NumbersMsgPart","OptionItem","CaretIcon","ExpandArrowIcon","outputParamsToOptions","params","fieldsToOptions","flattenSourceFields","OutputConfigEditor","sourceFields","targetFields","dropdownTarget","setDropdownTarget","searchText","setSearchText","collapsedParents","setCollapsedParents","sourceOptions","targetOptions","handleDropdownOpenChange","handleAdd","handleDelete","handleSelectSourceField","handleSelectTargetField","toggleParent","matchSearch","filterFields","selfMatches","filteredSourceFields","filteredTargetFields","fieldRowCls","isParent","isCollapsed","PrimaryEntryBtn","minimal","entryVariant","ScrollToBottomBtn","SplitLine","TabRadioGroup","RadioGroupPrimitive.Root","TabRadioItem","tooltips","RadioGroupPrimitive.Item","UserTextMsgBubble","useResizableWidth","initialWidth","invertDrag","minWidth","maxWidth","stateRef","handleMouseMove","adjustedDelta","newWidth","handleMouseUp","handleMouseDown","TRANSITION","TRANSITION_FALLBACK_MS","useColumnAppear","appearing","setAppearing","prevHiddenRef","colRef","onTransitionEnd","fallback","willChange","transitionStyle","OfficeContainer","headerHeight","hideLeftCol","leftColWidthRange","rightColWidthRange","leftColCls","rightColCls","leftColHeaderElement","leftColContentElement","rightColHeaderElement","rightColContentElement","fullscreenPart","isRightResizable","activeRange","transitioningRef","mountRef","isLeftFullscreen","isRightFullscreen","isFullscreen","leftHidden","rightHidden","leftColRef","leftTransitionStyle","rightColRef","rightTransitionStyle","leftColInnerRef","rightColInnerRef","getColWidth","col","raf","leftW","rightW","resolved","onWidthTransitionEnd","leftEl","rightEl","borderColorCls","leftFlexCls","rightFlexCls","WarningMessage","CollapsiblePrimitive.Root","CollapsiblePrimitive.CollapsibleTrigger","CollapsiblePrimitive.CollapsibleContent","FieldIcon","FieldChecker","isSubField","onLoaded","widget","typeDesc","isSubForm","subFields","subCheckedMap","setSubCheckedMap","handleSubFieldChange","subChecked","subField","handleCheck","extraPadding","Checker","SubFieldChecker","handleCheckChange","SubformFieldsValueChecker","subformField","subformValue","subformRecords","openAll","setOpenAll","rowData","fData","FieldValueChecker","FieldCheckerListMsg","checkedMap","setCheckedMap","allChecked","someChecked","useImperativeHandle","handleToggleAll","newMap","parentFieldName","FieldValueCheckerListMsg","ClearIcon","CheckIcon","inputBaseCls","TextInput","showLabel","showDescription","FieldWrapper","NumberInput","TextareaInput","PasswordInput","show","setShow","DateTimeInput","dateValue","RangeNumberInput","rangeValue","RangeDateTimeInput","UploadInput","service","uploading","setUploading","fileRef","handleFileChange","currentFileName","chinaAddressData","it","ComboInput","asyncItems","setAsyncItems","staticItems","hasAsync","displayItems","CheckboxGroupInput","selectedValues","itemValue","RadioGroupInput","getSearchFn","AsyncPicker","keyword","setKeyword","setOptions","setSelectedLabel","nameMap","setNameMap","searchFn","selectedIdSet","users","found","doSearch","kw","nextMap","handleClear","handleRemoveMultiple","handleClearAllMultiple","hasSelectionMulti","showClearMulti","TextMultiSelect","labelMap","setLabelMap","selectedSet","provinceList","CascadingAddressInput","provinceRef","cityRef","districtRef","addrValue","selectedProvince","selectedCity","selectedDistrict","cityList","districtList","handleSelectProvince","province","handleSelectCity","city","handleSelectDistrict","district","scrollToSelected","SeparatorDisplay","ButtonDisplay","SubformPlaceholder","labelCls","descriptionCls","requiredCls","isRequired","FieldLabel","FieldDescription","FieldValueInput","operator","createFieldTagDom","iconSpan","textSpan","resolveFieldWidgetInfo","dotIndex","parentName","childName","addFieldToCM","cm","widgetName","tagNode","getTemplateFromCM","lineElements","lineEl","lineText","walkLineNode","setTemplateToCM","template","PromptInput","cmRef","insertBtnRef","isInternalUpdateRef","fieldsRef","CodeMirror","instance","updatePlaceholder","prevFieldsLenRef","currentTemplate","fieldsBecameAvailable","handleFieldSelect","setInsertBtnRef","AgentHelperMainLayout","TopBar","Main","SideBar","OPTIONS","ConditonQuantifierSelect","ConditonTriggerDescription","targetName","quantifier","defaultQuantifier","onQuantifierChange","quantifierPrefixStr","quantifierSuffixStr","findFieldKey","targetField","generateId","ConditionItem","onRemoveClick","idRef","internalField","setInternalField","internalKey","setInternalKey","internalOperator","setInternalOperator","getDefaultOperator","currentKey","currentOperator","currentValue","fieldType","availableOperators","getAvailableOperators","emitChange","newOperator","handleOperatorChange","isEmptyOp","isRangeOp","isMultiOp","handleValueChange","hideValueInput","ConditionGroup","handleItemChange","nextItems","handleRemoveItem","createEmptyItem","FilterFieldTypeBlacklist","ConditionInput","allFields","defaultCondition","handleQuantifierChange","nextQuantifier","handleAddCondition","newItem","handleDeleteAll","showDeleteAll","parseBsCondition","bsConditionParse2Condition","defaultBsConditionString","conditionStringify2bsCondition","BsConditionInput","defaultBS","currentCondition","cond","bsStr","RadioUnchecked","RadioChecked","FieldChip","onRemove","FieldEditPreferenceSelect","selectedFields","handleModeChange","newMode","handleAddField","_nodeKey","newFields","handleRemoveField","isSpecified","EmptyTableIcon","DataTable","columns","emptyText","emptyIcon","tableOptions","useReactTable","getCoreRowModel","headerGroups","headerGroup","header","flexRender","DateRangePicker","TRIGGER_TYPE_OPTIONS","ExecLogFilter","onFilter","execUserOptions","execResultOptions","setStartDate","endDate","setEndDate","execUserId","setExecUserId","setTriggerType","execResult","setExecResult","handleStartDateChange","handleEndDateChange","handleExecUserIdChange","handleTriggerTypeChange","handleExecResultChange","handleFilter","allExecUserOptions","allExecResultOptions","allTriggerTypeOptions","triggerTypePortalContainer","setTriggerTypeTriggerRef","execResultPortalContainer","setExecResultTriggerRef"],"mappings":"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AAAj0J,EAAiB,SAChC,UAAWjB,EACT,kFACA,sDACA4C,EACA,sBACCsoD,GAAY8pG,IAAc,+BAAA,EAG7B,SAAA,CAAA1tJ,EAAAA,IAACs5C,GAAA,EAAW,EACXo0G,EAAY,SAAW,MAAA,CAAA,CAAA,EAEzBI,GACC9tJ,EAAAA,IAAC,OAAA,CAAK,UAAU,sCAAuC,SAAA8tJ,EAAgB,EAEzE9tJ,EAAAA,IAAC,QAAA,CACC,IAAK4tJ,EACL,KAAK,OACL,SAAUC,EACV,UAAU,SACV,SAAQl0J,EAAAylF,EAAM,SAAN,YAAAzlF,EAAc,QAAS,QAAU,UAAY,MAAA,CAAA,CACvD,CAAA,CACF,CAAA,CACF,CAEJ,CCjPO,MAAMo0J,GAA6D,CACxE,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,KAAQ,CACN,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,OACA,OACA,MACA,UACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,MACA,YACA,QAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,SACA,MACA,MACA,MACA,MACA,UACA,UACA,aACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,UACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,MACA,WAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,KACA,KACA,KACA,MACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KAAA,EAEF,IAAO,CACL,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,OAAU,CACR,MAAS,CACP,MACA,MACA,MACA,MACA,QACA,OACA,QACA,OACA,KAAA,EAEF,IAAO,CACL,MACA,OACA,MACA,MACA,SACA,MACA,QACA,MACA,WAAA,EAEF,IAAO,CACL,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,OACA,MACA,SACA,OACA,OACA,MACA,QACA,OACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,UACA,UACA,MACA,MACA,MACA,OACA,OAAA,EAEF,MAAS,CACP,MACA,OACA,OACA,OACA,QACA,OACA,MACA,MACA,OAAA,EAEF,MAAS,CACP,OACA,QACA,MACA,cACA,SACA,UACA,QACA,SACA,SACA,OACA,OACA,OACA,QACA,KAAA,EAEF,MAAS,CACP,MACA,MACA,MACA,QACA,QACA,QACA,MAAA,EAEF,MAAS,CACP,MACA,MACA,MACA,MACA,MACA,MACA,UACA,UACA,UACA,OACA,KAAA,EAEF,IAAO,CACL,QACA,OACA,UACA,UACA,OACA,KAAA,EAEF,MAAS,CACP,QACA,QACA,OACA,QACA,QACA,SACA,SACA,OACA,MACA,OACA,MACA,MACA,QAAA,EAEF,KAAQ,CACN,QACA,QACA,MAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,OACA,MACA,OACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,OACA,OACA,OACA,MACA,OACA,MACA,OACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,UACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,UACA,SAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,UACA,SAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,UACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,OACA,MACA,MACA,MAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,WACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,OACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,cACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,UACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,OACA,MACA,MACA,MACA,OACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,WACA,KAAA,EAEF,IAAO,CACL,MACA,cACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,SAAY,CACV,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,KAAQ,CACN,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,MAAS,CACP,MACA,MACA,MACA,OACA,QACA,OACA,WACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,OACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,YAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,OACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,QACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,OAAU,CACR,MACA,QACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,QAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,OACA,OACA,OACA,MACA,MACA,IAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,MACA,KACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,MACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,OACA,OACA,MACA,OACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,KAAA,EAEF,IAAO,CACL,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,KACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,QACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,YACA,cACA,cAAA,EAEF,IAAO,CACL,MACA,QACA,MACA,OACA,MACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,QACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,OACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MAAA,EAEF,IAAO,CACL,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,WACA,WACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,KACA,KAAA,EAEF,WAAc,CACZ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,MAAS,CACP,OAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,OACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,SAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,UACA,UACA,UACA,YACA,UACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,KAAA,EAEF,WAAc,CACZ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,YACA,UACA,MACA,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,QAAW,CACT,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,SAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,OACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,SAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,MACA,MACA,MACA,WACA,WACA,UACA,UACA,SAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,UACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,KAAQ,CACN,MAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,IAAO,CACL,KAAA,EAEF,QAAW,CACT,SAAA,EAEF,QAAW,CACT,SAAA,EAEF,QAAW,CACT,SAAA,EAEF,QAAW,CACT,SAAA,EAEF,UAAa,CACX,WAAA,EAEF,UAAa,CACX,WAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,WACA,aACA,aACA,YAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,MACA,KACA,KAAA,EAEF,KAAQ,CACN,KACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,OACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,OACA,OACA,MACA,MACA,MACA,MACA,UACA,UACA,MAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KAAA,EAEF,UAAa,CACX,OACA,MACA,KACA,KACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,KAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,QAAW,CACT,MACA,UACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,MACA,MACA,MACA,aACA,aACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,aACA,aACA,YAAA,EAEF,IAAO,CACL,OACA,MACA,MACA,MACA,MACA,MACA,cACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,UACA,MACA,MACA,aACA,MACA,WACA,SAAA,EAEF,YAAe,CACb,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,WAAc,CACZ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,WAAc,CACZ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,SAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,YACA,YACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,UACA,YACA,eACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,WACA,MACA,MACA,SAAA,EAEF,IAAO,CACL,MACA,aACA,WACA,UACA,YACA,gBACA,aACA,eACA,WACA,SAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,MACA,MACA,kBACA,YACA,SAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,WAAc,CACZ,MACA,MACA,MACA,MACA,UACA,MACA,MACA,MACA,MACA,MACA,cACA,MACA,SAAA,EAEF,UAAa,CACX,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KAAA,EAEF,UAAa,CACX,MACA,MACA,KAAA,EAEF,QAAW,CACT,MACA,UACA,MACA,MACA,MACA,UACA,YACA,MACA,MACA,MACA,MACA,KAAA,EAEF,WAAc,CACZ,MACA,KACA,MACA,MACA,KAAA,EAEF,SAAY,CACV,MACA,MACA,aACA,YAAA,EAEF,QAAW,CACT,QACA,MACA,UAAA,CACF,EAEF,MAAS,CACP,IAAO,CACL,MACA,QACA,MACA,MACA,MACA,MACA,MACA,OAAA,EAEF,KAAQ,CACN,OACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,QACA,MACA,MACA,MACA,MACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,OACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,MAAA,EAEF,IAAO,CACL,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,UAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,SAAA,EAEF,IAAO,CACL,MACA,WACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,WACA,aACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,KACA,MACA,MACA,MACA,KACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KACA,IAAA,EAEF,IAAO,CACL,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,KAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,MACA,MACA,SACA,iBAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,YACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,YACA,UACA,UACA,UAAA,EAEF,QAAW,CACT,UACA,MACA,MACA,KAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,UAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,KAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,QAAW,CACT,MACA,MACA,MACA,MACA,MACA,MAAA,EAEF,WAAc,CACZ,OACA,OACA,MACA,MACA,MACA,MACA,cAAA,CACF,EAEF,QAAW,CACT,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,KAAQ,CACN,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,OACA,MACA,MACA,MAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,OACA,MACA,KAAA,CACF,EAEF,SAAY,CACV,MAAS,CACP,MACA,QACA,MACA,OACA,OACA,OACA,MACA,OAAA,EAEF,MAAS,CACP,OACA,QACA,OACA,MAAA,EAEF,KAAQ,CACN,MACA,MACA,MAAA,EAEF,IAAO,CACL,MACA,YACA,KAAA,EAEF,QAAW,CACT,MACA,MACA,OACA,OACA,MACA,QACA,UAAA,EAEF,UAAa,CACX,MACA,QACA,MACA,KAAA,EAEF,UAAa,CACX,OACA,MACA,MACA,MACA,MACA,UACA,MACA,MACA,KAAA,EAEF,MAAS,CACP,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,KAAA,EAEF,YAAe,CACb,OACA,OACA,OACA,KAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,OACA,MACA,MACA,MACA,OACA,OACA,MACA,MACA,aAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,SAAY,CACV,MACA,MACA,QACA,MACA,YACA,MACA,MACA,MACA,MACA,OACA,MAAA,EAEF,KAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,YAAA,EAEF,MAAS,CACP,OACA,OACA,MACA,MACA,OACA,MACA,MAAA,EAEF,KAAQ,CACN,MAAA,EAEF,KAAQ,CACN,MAAA,EAEF,MAAS,CACP,OAAA,EAEF,KAAQ,CACN,MAAA,EAEF,IAAO,CACL,KAAA,EAEF,KAAQ,CACN,MAAA,EAEF,IAAO,CACL,KAAA,EAEF,MAAS,CACP,OAAA,EAEF,IAAO,CACL,KAAA,EAEF,KAAQ,CACN,MAAA,EAEF,IAAO,CACL,KAAA,CACF,EAEF,IAAO,CACL,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,KACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,KACA,KACA,KAAA,EAEF,IAAO,CACL,KACA,IAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KAAA,EAEF,IAAO,CACL,MACA,MACA,MACA,MACA,MACA,K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","x_google_ignoreList":[0,1,5,6,7,9,10,11,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,49,50,51,52,53,54,55,56,57,58,59,65,67,68,69,70,71,72,73,74,75,76,77,78,80,84,85,86,87,88,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,252,282,283,284,285,286,287,337,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485]}