@123usmanhaider321/ui 0.1.0 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/duration.js +5 -0
- package/dist/_virtual/duration.js.map +1 -0
- package/dist/_virtual/index.js +2 -2
- package/dist/_virtual/isBetween.js +5 -0
- package/dist/_virtual/isBetween.js.map +1 -0
- package/dist/_virtual/relativeTime.js +5 -0
- package/dist/_virtual/relativeTime.js.map +1 -0
- package/dist/_virtual/use-sync-external-store-shim.development.js +5 -0
- package/dist/_virtual/use-sync-external-store-shim.development.js.map +1 -0
- package/dist/_virtual/use-sync-external-store-shim.production.js +5 -0
- package/dist/_virtual/use-sync-external-store-shim.production.js.map +1 -0
- package/dist/_virtual/with-selector.development.js +5 -0
- package/dist/_virtual/with-selector.development.js.map +1 -0
- package/dist/_virtual/with-selector.production.js +5 -0
- package/dist/_virtual/with-selector.production.js.map +1 -0
- package/dist/components/Alert/Alert.d.ts +2 -2
- package/dist/components/Alert/Alert.js +18 -21
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Button/Button.js +14 -14
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +12 -12
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.js +22 -22
- package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/dist/components/ConfirmationModal/ConfirmationModal.js +37 -39
- package/dist/components/ConfirmationModal/ConfirmationModal.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +35 -37
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/EventAddForm/AddEventLayout.d.ts +58 -0
- package/dist/components/EventAddForm/AddEventLayout.js +227 -0
- package/dist/components/EventAddForm/AddEventLayout.js.map +1 -0
- package/dist/components/EventAddForm/AddEventStepper.d.ts +15 -0
- package/dist/components/EventAddForm/AddEventStepper.js +719 -0
- package/dist/components/EventAddForm/AddEventStepper.js.map +1 -0
- package/dist/components/EventAddForm/common/ConfirmationModal.d.ts +14 -0
- package/dist/components/EventAddForm/common/ConfirmationModal.js +136 -0
- package/dist/components/EventAddForm/common/ConfirmationModal.js.map +1 -0
- package/dist/components/EventAddForm/common/DescriptionModal.d.ts +8 -0
- package/dist/components/EventAddForm/common/DescriptionModal.js +70 -0
- package/dist/components/EventAddForm/common/DescriptionModal.js.map +1 -0
- package/dist/components/EventAddForm/components/AnimatedBackground.d.ts +8 -0
- package/dist/components/EventAddForm/components/ApprovalConfirmationModal.d.ts +7 -0
- package/dist/components/EventAddForm/components/CheckboxGroup.d.ts +23 -0
- package/dist/components/EventAddForm/components/CheckboxGroup.js +92 -0
- package/dist/components/EventAddForm/components/CheckboxGroup.js.map +1 -0
- package/dist/components/EventAddForm/components/CustomMeetingForm.d.ts +18 -0
- package/dist/components/EventAddForm/components/CustomMeetingForm.js +237 -0
- package/dist/components/EventAddForm/components/CustomMeetingForm.js.map +1 -0
- package/dist/components/EventAddForm/components/DateTimeField.d.ts +23 -0
- package/dist/components/EventAddForm/components/DateTimeField.js +173 -0
- package/dist/components/EventAddForm/components/DateTimeField.js.map +1 -0
- package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.d.ts +33 -0
- package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.js +366 -0
- package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.js.map +1 -0
- package/dist/components/EventAddForm/components/FileUpload.d.ts +14 -0
- package/dist/components/EventAddForm/components/FileUpload.js +412 -0
- package/dist/components/EventAddForm/components/FileUpload.js.map +1 -0
- package/dist/components/EventAddForm/components/FormBuilderProceedModal.d.ts +10 -0
- package/dist/components/EventAddForm/components/FormBuilderProceedModal.js +197 -0
- package/dist/components/EventAddForm/components/FormBuilderProceedModal.js.map +1 -0
- package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.d.ts +38 -0
- package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.js +1179 -0
- package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.js.map +1 -0
- package/dist/components/EventAddForm/components/InputField.d.ts +15 -0
- package/dist/components/EventAddForm/components/RadioGroupButton.d.ts +14 -0
- package/dist/components/EventAddForm/components/SelectField.d.ts +19 -0
- package/dist/components/EventAddForm/components/SingleDateTimeInput.d.ts +27 -0
- package/dist/components/EventAddForm/components/SingleDateTimeInput.js +102 -0
- package/dist/components/EventAddForm/components/SingleDateTimeInput.js.map +1 -0
- package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.d.ts +10 -0
- package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.js +277 -0
- package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.js.map +1 -0
- package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.d.ts +37 -0
- package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.js +148 -0
- package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.js.map +1 -0
- package/dist/components/EventAddForm/components/TicketTierForm.d.ts +29 -0
- package/dist/components/EventAddForm/components/TicketTierForm.js +418 -0
- package/dist/components/EventAddForm/components/TicketTierForm.js.map +1 -0
- package/dist/components/EventAddForm/components/TicketTypeSelection.d.ts +7 -0
- package/dist/components/EventAddForm/components/TicketTypeSelection.js +93 -0
- package/dist/components/EventAddForm/components/TicketTypeSelection.js.map +1 -0
- package/dist/components/EventAddForm/hooks/useStepperForm.d.ts +81 -0
- package/dist/components/EventAddForm/hooks/useStepperForm.js +371 -0
- package/dist/components/EventAddForm/hooks/useStepperForm.js.map +1 -0
- package/dist/components/EventAddForm/hooks/useTicketTierForm.d.ts +87 -0
- package/dist/components/EventAddForm/hooks/useTicketTierForm.js +237 -0
- package/dist/components/EventAddForm/hooks/useTicketTierForm.js.map +1 -0
- package/dist/components/EventAddForm/index.d.ts +3 -0
- package/dist/components/EventAddForm/index.js +41 -0
- package/dist/components/EventAddForm/index.js.map +1 -0
- package/dist/components/EventAddForm/schemas/index.d.ts +2 -0
- package/dist/components/EventAddForm/schemas/step1.js +135 -0
- package/dist/components/EventAddForm/schemas/step1.js.map +1 -0
- package/dist/components/EventAddForm/schemas/step2.d.ts +138 -0
- package/dist/components/EventAddForm/schemas/step2.js +94 -0
- package/dist/components/EventAddForm/schemas/step2.js.map +1 -0
- package/dist/components/EventAddForm/schemas/utils.js.map +1 -0
- package/dist/components/EventAddForm/steps/IndividualFormStep.d.ts +26 -0
- package/dist/components/EventAddForm/steps/IndividualFormStep.js +85 -0
- package/dist/components/EventAddForm/steps/IndividualFormStep.js.map +1 -0
- package/dist/components/EventAddForm/steps/SocialProfilesStep.d.ts +18 -0
- package/dist/components/EventAddForm/steps/SocialProfilesStep.js +123 -0
- package/dist/components/EventAddForm/steps/SocialProfilesStep.js.map +1 -0
- package/dist/components/EventAddForm/steps/StepOne.d.ts +18 -0
- package/dist/components/EventAddForm/steps/StepOne.js +462 -0
- package/dist/components/EventAddForm/steps/StepOne.js.map +1 -0
- package/dist/components/EventAddForm/steps/StepTwo.d.ts +17 -0
- package/dist/components/EventAddForm/steps/StepTwo.js +173 -0
- package/dist/components/EventAddForm/steps/StepTwo.js.map +1 -0
- package/dist/components/EventAddForm/steps/TeamFormStep.d.ts +19 -0
- package/dist/components/EventAddForm/steps/TeamFormStep.js +13 -0
- package/dist/components/EventAddForm/steps/TeamFormStep.js.map +1 -0
- package/dist/components/FormBuilder/CategoryList.js +26 -26
- package/dist/components/FormBuilder/CategoryList.js.map +1 -1
- package/dist/components/FormBuilder/DiscountInput.js +38 -39
- package/dist/components/FormBuilder/DiscountInput.js.map +1 -1
- package/dist/components/FormBuilder/FormBuilder.js +71 -74
- package/dist/components/FormBuilder/FormBuilder.js.map +1 -1
- package/dist/components/FormBuilder/OptionList.js +19 -19
- package/dist/components/FormBuilder/OptionList.js.map +1 -1
- package/dist/components/FormBuilder/PaymentPreview.js +19 -19
- package/dist/components/FormBuilder/PaymentPreview.js.map +1 -1
- package/dist/components/FormBuilder/PreviewInput.js +18 -29
- package/dist/components/FormBuilder/PreviewInput.js.map +1 -1
- package/dist/components/FormBuilder/QuestionCard.js +66 -67
- package/dist/components/FormBuilder/QuestionCard.js.map +1 -1
- package/dist/components/FormBuilder/QuestionEditor.js +16 -16
- package/dist/components/FormBuilder/QuestionEditor.js.map +1 -1
- package/dist/components/FormBuilder/RequiredToggle.js +14 -14
- package/dist/components/FormBuilder/RequiredToggle.js.map +1 -1
- package/dist/components/FormBuilder/SortableQuestionList.js +4 -4
- package/dist/components/FormBuilder/SortableQuestionList.js.map +1 -1
- package/dist/components/FormBuilder/utils.js.map +1 -1
- package/dist/components/FormInput/FormInput.js +28 -28
- package/dist/components/FormInput/FormInput.js.map +1 -1
- package/dist/components/ImageCropModal/index.d.ts +14 -0
- package/dist/components/ImageCropModal/index.js +464 -0
- package/dist/components/ImageCropModal/index.js.map +1 -0
- package/dist/components/InformationPopover/InformationPopover.js +4 -4
- package/dist/components/InformationPopover/InformationPopover.js.map +1 -1
- package/dist/components/InformationPopover.d.ts +7 -0
- package/dist/components/InformationPopover.js +19 -0
- package/dist/components/InformationPopover.js.map +1 -0
- package/dist/components/InputErrorMessage/InputErrorMessage.js +5 -6
- package/dist/components/InputErrorMessage/InputErrorMessage.js.map +1 -1
- package/dist/components/Modal/Modal.js +24 -25
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Radio/Radio.js +9 -9
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Spinner/spinner.d.ts +2 -0
- package/dist/components/Spinner/spinner.js +22 -0
- package/dist/components/Spinner/spinner.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +13 -14
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/common/FallbackImage.d.ts +9 -0
- package/dist/components/common/FallbackImage.js +47 -0
- package/dist/components/common/FallbackImage.js.map +1 -0
- package/dist/components/ui/Calendar/calendar-utils.d.ts +3 -0
- package/dist/components/ui/Calendar/calendar-utils.js +51 -0
- package/dist/components/ui/Calendar/calendar-utils.js.map +1 -0
- package/dist/components/ui/Calendar/index.d.ts +14 -0
- package/dist/components/ui/Calendar/index.js +142 -0
- package/dist/components/ui/Calendar/index.js.map +1 -0
- package/dist/components/ui/Checkbox.d.ts +9 -0
- package/dist/components/ui/Checkbox.js +50 -0
- package/dist/components/ui/Checkbox.js.map +1 -0
- package/dist/components/ui/DatePicker/index.d.ts +15 -0
- package/dist/components/ui/DatePicker/index.js +188 -0
- package/dist/components/ui/DatePicker/index.js.map +1 -0
- package/dist/components/ui/FormInput.d.ts +28 -0
- package/dist/components/ui/FormInput.js +129 -0
- package/dist/components/ui/FormInput.js.map +1 -0
- package/dist/components/ui/InputErrorMessage.d.ts +7 -0
- package/dist/components/ui/InputErrorMessage.js +21 -0
- package/dist/components/ui/InputErrorMessage.js.map +1 -0
- package/dist/components/ui/Modal/index.d.ts +14 -0
- package/dist/components/ui/Modal/index.js +73 -0
- package/dist/components/ui/Modal/index.js.map +1 -0
- package/dist/components/ui/Radio.d.ts +6 -0
- package/dist/components/ui/Radio.js +35 -0
- package/dist/components/ui/Radio.js.map +1 -0
- package/dist/components/ui/RichTextEditor.d.ts +13 -0
- package/dist/components/ui/RichTextEditor.js +242 -0
- package/dist/components/ui/RichTextEditor.js.map +1 -0
- package/dist/components/ui/TimePicker/index.d.ts +19 -0
- package/dist/components/ui/TimePicker/index.js +215 -0
- package/dist/components/ui/TimePicker/index.js.map +1 -0
- package/dist/components/ui/TimeSelector/index.d.ts +11 -0
- package/dist/components/ui/TimeSelector/index.js +138 -0
- package/dist/components/ui/TimeSelector/index.js.map +1 -0
- package/dist/components/ui/Tooltip/index.d.ts +12 -0
- package/dist/components/ui/Tooltip.d.ts +12 -0
- package/dist/components/ui/Tooltip.js +136 -0
- package/dist/components/ui/Tooltip.js.map +1 -0
- package/dist/hooks/useDropdownPosition.d.ts +11 -0
- package/dist/hooks/useFirebaseAuthState.d.ts +6 -0
- package/dist/hooks/useFirebaseAuthState.js +23 -0
- package/dist/hooks/useFirebaseAuthState.js.map +1 -0
- package/dist/hooks/useTicketTierForm.d.ts +61 -0
- package/dist/index.d.ts +8 -15
- package/dist/index.js +9 -49
- package/dist/index.js.map +1 -1
- package/dist/lib/actions.d.ts +318 -0
- package/dist/lib/actions.js +32 -0
- package/dist/lib/actions.js.map +1 -0
- package/dist/lib/constants.d.ts +72 -0
- package/dist/lib/cropImage.d.ts +28 -0
- package/dist/lib/cropImage.js +113 -0
- package/dist/lib/cropImage.js.map +1 -0
- package/dist/lib/imageAnalysis.d.ts +16 -0
- package/dist/lib/imageAnalysis.js +58 -0
- package/dist/lib/imageAnalysis.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/node_modules/@dnd-kit/core/dist/core.esm.js +2 -2
- package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +2 -2
- package/dist/node_modules/@firebase/app/dist/esm/index.esm.js +768 -0
- package/dist/node_modules/@firebase/app/dist/esm/index.esm.js.map +1 -0
- package/dist/node_modules/@firebase/component/dist/esm/index.esm.js +340 -0
- package/dist/node_modules/@firebase/component/dist/esm/index.esm.js.map +1 -0
- package/dist/node_modules/@firebase/logger/dist/esm/index.esm.js +123 -0
- package/dist/node_modules/@firebase/logger/dist/esm/index.esm.js.map +1 -0
- package/dist/node_modules/@firebase/storage/dist/index.esm.js +2623 -0
- package/dist/node_modules/@firebase/storage/dist/index.esm.js.map +1 -0
- package/dist/node_modules/@firebase/util/dist/index.esm.js +658 -0
- package/dist/node_modules/@firebase/util/dist/index.esm.js.map +1 -0
- package/dist/node_modules/@firebase/util/dist/postinstall.js +5 -0
- package/dist/node_modules/@firebase/util/dist/postinstall.js.map +1 -0
- package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js +2 -2
- package/dist/node_modules/@heroicons/react/20/solid/esm/CheckIcon.js +27 -0
- package/dist/node_modules/@heroicons/react/20/solid/esm/CheckIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js +27 -0
- package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/MapPinIcon.js +33 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/MapPinIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/VideoCameraIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/VideoCameraIcon.js.map +1 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js +29 -0
- package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js.map +1 -0
- package/dist/node_modules/@tiptap/core/dist/index.js +5446 -0
- package/dist/node_modules/@tiptap/core/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +21 -0
- package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js +78 -0
- package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-bold/dist/index.js +100 -0
- package/dist/node_modules/@tiptap/extension-bold/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-code/dist/index.js +70 -0
- package/dist/node_modules/@tiptap/extension-code/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-code-block/dist/index.js +317 -0
- package/dist/node_modules/@tiptap/extension-code-block/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-document/dist/index.js +16 -0
- package/dist/node_modules/@tiptap/extension-document/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js +66 -0
- package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-heading/dist/index.js +86 -0
- package/dist/node_modules/@tiptap/extension-heading/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js +80 -0
- package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-italic/dist/index.js +98 -0
- package/dist/node_modules/@tiptap/extension-italic/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-link/dist/index.js +423 -0
- package/dist/node_modules/@tiptap/extension-link/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-list/dist/index.js +1039 -0
- package/dist/node_modules/@tiptap/extension-list/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js +61 -0
- package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-placeholder/dist/index.js +7 -0
- package/dist/node_modules/@tiptap/extension-placeholder/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-strike/dist/index.js +79 -0
- package/dist/node_modules/@tiptap/extension-strike/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-text/dist/index.js +16 -0
- package/dist/node_modules/@tiptap/extension-text/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extension-underline/dist/index.js +76 -0
- package/dist/node_modules/@tiptap/extension-underline/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/extensions/dist/index.js +376 -0
- package/dist/node_modules/@tiptap/extensions/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/react/dist/index.js +650 -0
- package/dist/node_modules/@tiptap/react/dist/index.js.map +1 -0
- package/dist/node_modules/@tiptap/starter-kit/dist/index.js +97 -0
- package/dist/node_modules/@tiptap/starter-kit/dist/index.js.map +1 -0
- package/dist/node_modules/dayjs/dayjs.min.js +1 -1
- package/dist/node_modules/dayjs/plugin/duration.js +137 -0
- package/dist/node_modules/dayjs/plugin/duration.js.map +1 -0
- package/dist/node_modules/dayjs/plugin/isBetween.js +20 -0
- package/dist/node_modules/dayjs/plugin/isBetween.js.map +1 -0
- package/dist/node_modules/dayjs/plugin/relativeTime.js +49 -0
- package/dist/node_modules/dayjs/plugin/relativeTime.js.map +1 -0
- package/dist/node_modules/fast-equals/dist/es/index.js +442 -0
- package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -0
- package/dist/node_modules/idb/build/index.js +70 -0
- package/dist/node_modules/idb/build/index.js.map +1 -0
- package/dist/node_modules/idb/build/wrap-idb-value.js +149 -0
- package/dist/node_modules/idb/build/wrap-idb-value.js.map +1 -0
- package/dist/node_modules/linkifyjs/dist/linkify.js +1159 -0
- package/dist/node_modules/linkifyjs/dist/linkify.js.map +1 -0
- package/dist/node_modules/orderedmap/dist/index.js +120 -0
- package/dist/node_modules/orderedmap/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-commands/dist/index.js +527 -0
- package/dist/node_modules/prosemirror-commands/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-dropcursor/dist/index.js +137 -0
- package/dist/node_modules/prosemirror-dropcursor/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-gapcursor/dist/index.js +221 -0
- package/dist/node_modules/prosemirror-gapcursor/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-history/dist/index.js +357 -0
- package/dist/node_modules/prosemirror-history/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-keymap/dist/index.js +84 -0
- package/dist/node_modules/prosemirror-keymap/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-model/dist/index.js +3209 -0
- package/dist/node_modules/prosemirror-model/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-schema-list/dist/index.js +131 -0
- package/dist/node_modules/prosemirror-schema-list/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-state/dist/index.js +936 -0
- package/dist/node_modules/prosemirror-state/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-transform/dist/index.js +1881 -0
- package/dist/node_modules/prosemirror-transform/dist/index.js.map +1 -0
- package/dist/node_modules/prosemirror-view/dist/index.js +5232 -0
- package/dist/node_modules/prosemirror-view/dist/index.js.map +1 -0
- package/dist/node_modules/rope-sequence/dist/index.js +184 -0
- package/dist/node_modules/rope-sequence/dist/index.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +82 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +78 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +78 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +63 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js +13 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/shim/with-selector.js +13 -0
- package/dist/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -0
- package/dist/node_modules/w3c-keyname/index.js +106 -0
- package/dist/node_modules/w3c-keyname/index.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/coerce.js +10 -0
- package/dist/node_modules/zod/v4/classic/coerce.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +22 -4
- package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -1
- package/dist/node_modules/zod/v4/core/api.js +18 -0
- package/dist/node_modules/zod/v4/core/api.js.map +1 -1
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +4 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -1
- package/dist/node_modules/zod/v4/core/regexes.js +2 -0
- package/dist/node_modules/zod/v4/core/regexes.js.map +1 -1
- package/dist/node_modules/zod/v4/core/schemas.js +25 -3
- package/dist/node_modules/zod/v4/core/schemas.js.map +1 -1
- package/dist/redux/baseQuery.d.ts +1 -0
- package/dist/redux/baseQuery.js +24 -0
- package/dist/redux/baseQuery.js.map +1 -0
- package/dist/services/eventApi.d.ts +4383 -0
- package/dist/services/eventApi.js +411 -0
- package/dist/services/eventApi.js.map +1 -0
- package/dist/services/helpers.d.ts +50 -0
- package/dist/services/helpers.js +115 -0
- package/dist/services/helpers.js.map +1 -0
- package/dist/services/initialize-firebase.d.ts +2 -0
- package/dist/services/initialize-firebase.js +20 -0
- package/dist/services/initialize-firebase.js.map +1 -0
- package/dist/services/process-image-on-server.d.ts +1 -0
- package/dist/services/process-image-on-server.js +30 -0
- package/dist/services/process-image-on-server.js.map +1 -0
- package/dist/services/remote-config.d.ts +5 -0
- package/dist/services/remote-config.js +9 -0
- package/dist/services/remote-config.js.map +1 -0
- package/dist/services/single-event-api.d.ts +4287 -0
- package/dist/services/single-event-api.js +301 -0
- package/dist/services/single-event-api.js.map +1 -0
- package/dist/services/utils.d.ts +35 -0
- package/dist/services/utils.js +107 -0
- package/dist/services/utils.js.map +1 -0
- package/dist/stories/Alert.stories.d.ts +1 -1
- package/dist/styles.css +3531 -96
- package/dist/types/events.d.ts +60 -0
- package/dist/types/question.d.ts +37 -0
- package/dist/types/redux-types.d.ts +15 -0
- package/dist/types/types.d.ts +60 -0
- package/dist/types/types.js +10 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/cn.js +2 -2
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/date-range.d.ts +4 -0
- package/dist/utils/date-range.js +13 -0
- package/dist/utils/date-range.js.map +1 -0
- package/dist/utils/single-event-helpers.d.ts +50 -0
- package/dist/utils/single-event-helpers.js +18 -0
- package/dist/utils/single-event-helpers.js.map +1 -0
- package/dist/utils/social-validation.d.ts +10 -0
- package/dist/utils/social-validation.js +42 -0
- package/dist/utils/social-validation.js.map +1 -0
- package/dist/utils/utils.d.ts +59 -0
- package/dist/utils/utils.js +20 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +18 -2
- package/dist/_virtual/index2.js +0 -5
- package/dist/_virtual/index2.js.map +0 -1
- package/dist/_virtual/jsx-runtime.js +0 -5
- package/dist/_virtual/jsx-runtime.js.map +0 -1
- package/dist/_virtual/react-is.development.js +0 -5
- package/dist/_virtual/react-is.development.js.map +0 -1
- package/dist/_virtual/react-is.production.min.js +0 -5
- package/dist/_virtual/react-is.production.min.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.development.js +0 -5
- package/dist/_virtual/react-jsx-runtime.development.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.production.js +0 -5
- package/dist/_virtual/react-jsx-runtime.production.js.map +0 -1
- package/dist/_virtual/use-sync-external-store-with-selector.development.js +0 -5
- package/dist/_virtual/use-sync-external-store-with-selector.development.js.map +0 -1
- package/dist/_virtual/use-sync-external-store-with-selector.production.js +0 -5
- package/dist/_virtual/use-sync-external-store-with-selector.production.js.map +0 -1
- package/dist/components/StepperForm/AddEventLayout.d.ts +0 -66
- package/dist/components/StepperForm/AddEventLayout.js +0 -220
- package/dist/components/StepperForm/AddEventLayout.js.map +0 -1
- package/dist/components/StepperForm/EventSubmissionConfirmationModal.d.ts +0 -19
- package/dist/components/StepperForm/EventSubmissionConfirmationModal.js +0 -296
- package/dist/components/StepperForm/EventSubmissionConfirmationModal.js.map +0 -1
- package/dist/components/StepperForm/index.d.ts +0 -8
- package/dist/components/StepperForm/schemas/step1.js +0 -130
- package/dist/components/StepperForm/schemas/step1.js.map +0 -1
- package/dist/components/StepperForm/schemas/step2.d.ts +0 -138
- package/dist/components/StepperForm/schemas/step2.js +0 -95
- package/dist/components/StepperForm/schemas/step2.js.map +0 -1
- package/dist/components/StepperForm/schemas/utils.js.map +0 -1
- package/dist/components/StepperForm/useStepperForm.d.ts +0 -81
- package/dist/components/StepperForm/useStepperForm.js +0 -366
- package/dist/components/StepperForm/useStepperForm.js.map +0 -1
- package/dist/components/Toggle/Toggle.js +0 -67
- package/dist/components/Toggle/Toggle.js.map +0 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +0 -538
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +0 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +0 -626
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +0 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js +0 -510
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.js.map +0 -1
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js +0 -17
- package/dist/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js.map +0 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +0 -269
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +0 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +0 -177
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +0 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +0 -150
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/description/description.js +0 -40
- package/dist/node_modules/@headlessui/react/dist/components/description/description.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/dialog/dialog.js +0 -111
- package/dist/node_modules/@headlessui/react/dist/components/dialog/dialog.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js +0 -133
- package/dist/node_modules/@headlessui/react/dist/components/focus-trap/focus-trap.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/keyboard.js +0 -5
- package/dist/node_modules/@headlessui/react/dist/components/keyboard.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/label/label.js +0 -62
- package/dist/node_modules/@headlessui/react/dist/components/label/label.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js +0 -22
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine-glue.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js +0 -127
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu-machine.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu.js +0 -206
- package/dist/node_modules/@headlessui/react/dist/components/menu/menu.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/mouse.js +0 -5
- package/dist/node_modules/@headlessui/react/dist/components/mouse.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/portal/portal.js +0 -65
- package/dist/node_modules/@headlessui/react/dist/components/portal/portal.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js +0 -136
- package/dist/node_modules/@headlessui/react/dist/components/transition/transition.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js +0 -15
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js +0 -53
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js +0 -39
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js +0 -13
- package/dist/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js +0 -34
- package/dist/node_modules/@headlessui/react/dist/hooks/use-active-press.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js +0 -10
- package/dist/node_modules/@headlessui/react/dist/hooks/use-disposables.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js +0 -16
- package/dist/node_modules/@headlessui/react/dist/hooks/use-document-event.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js +0 -27
- package/dist/node_modules/@headlessui/react/dist/hooks/use-element-size.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-escape.js +0 -13
- package/dist/node_modules/@headlessui/react/dist/hooks/use-escape.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event-listener.js +0 -16
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event-listener.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js +0 -10
- package/dist/node_modules/@headlessui/react/dist/hooks/use-event.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/hooks/use-flags.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-handle-toggle.js +0 -16
- package/dist/node_modules/@headlessui/react/dist/hooks/use-handle-toggle.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js +0 -42
- package/dist/node_modules/@headlessui/react/dist/hooks/use-inert-others.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-mounted.js +0 -12
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-mounted.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js +0 -14
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-touch-device.js +0 -17
- package/dist/node_modules/@headlessui/react/dist/hooks/use-is-touch-device.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js +0 -12
- package/dist/node_modules/@headlessui/react/dist/hooks/use-latest-value.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js +0 -29
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js +0 -15
- package/dist/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js +0 -39
- package/dist/node_modules/@headlessui/react/dist/hooks/use-outside-click.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/hooks/use-owner.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js +0 -33
- package/dist/node_modules/@headlessui/react/dist/hooks/use-quick-release.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js +0 -13
- package/dist/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-root-containers.js +0 -39
- package/dist/node_modules/@headlessui/react/dist/hooks/use-root-containers.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js +0 -13
- package/dist/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js +0 -17
- package/dist/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-slot.js +0 -8
- package/dist/node_modules/@headlessui/react/dist/hooks/use-slot.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-store.js +0 -8
- package/dist/node_modules/@headlessui/react/dist/hooks/use-store.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js +0 -21
- package/dist/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tab-direction.js +0 -14
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tab-direction.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-text-value.js +0 -18
- package/dist/node_modules/@headlessui/react/dist/hooks/use-text-value.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js +0 -17
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js +0 -74
- package/dist/node_modules/@headlessui/react/dist/hooks/use-transition.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js +0 -19
- package/dist/node_modules/@headlessui/react/dist/hooks/use-tree-walker.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-watch.js +0 -16
- package/dist/node_modules/@headlessui/react/dist/hooks/use-watch.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js +0 -16
- package/dist/node_modules/@headlessui/react/dist/hooks/use-window-event.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/close-provider.js +0 -10
- package/dist/node_modules/@headlessui/react/dist/internal/close-provider.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/disabled.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/internal/disabled.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/floating.js +0 -155
- package/dist/node_modules/@headlessui/react/dist/internal/floating.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/hidden.js +0 -14
- package/dist/node_modules/@headlessui/react/dist/internal/hidden.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/id.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/internal/id.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js +0 -20
- package/dist/node_modules/@headlessui/react/dist/internal/open-closed.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/internal/portal-force-root.js +0 -13
- package/dist/node_modules/@headlessui/react/dist/internal/portal-force-root.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/machine.js +0 -83
- package/dist/node_modules/@headlessui/react/dist/machine.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/machines/stack-machine.js +0 -39
- package/dist/node_modules/@headlessui/react/dist/machines/stack-machine.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/react-glue.js +0 -13
- package/dist/node_modules/@headlessui/react/dist/react-glue.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/active-element-history.js +0 -16
- package/dist/node_modules/@headlessui/react/dist/utils/active-element-history.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/bugs.js +0 -20
- package/dist/node_modules/@headlessui/react/dist/utils/bugs.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/calculate-active-index.js +0 -41
- package/dist/node_modules/@headlessui/react/dist/utils/calculate-active-index.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/class-names.js +0 -7
- package/dist/node_modules/@headlessui/react/dist/utils/class-names.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/default-map.js +0 -14
- package/dist/node_modules/@headlessui/react/dist/utils/default-map.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/disposables.js +0 -41
- package/dist/node_modules/@headlessui/react/dist/utils/disposables.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/document-ready.js +0 -10
- package/dist/node_modules/@headlessui/react/dist/utils/document-ready.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/dom.js +0 -47
- package/dist/node_modules/@headlessui/react/dist/utils/dom.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/element-movement.js +0 -23
- package/dist/node_modules/@headlessui/react/dist/utils/element-movement.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/env.js +0 -39
- package/dist/node_modules/@headlessui/react/dist/utils/env.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js +0 -98
- package/dist/node_modules/@headlessui/react/dist/utils/focus-management.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/get-text-value.js +0 -32
- package/dist/node_modules/@headlessui/react/dist/utils/get-text-value.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/match.js +0 -12
- package/dist/node_modules/@headlessui/react/dist/utils/match.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js +0 -9
- package/dist/node_modules/@headlessui/react/dist/utils/micro-task.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/owner.js +0 -23
- package/dist/node_modules/@headlessui/react/dist/utils/owner.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/platform.js +0 -15
- package/dist/node_modules/@headlessui/react/dist/utils/platform.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/render.js +0 -134
- package/dist/node_modules/@headlessui/react/dist/utils/render.js.map +0 -1
- package/dist/node_modules/@headlessui/react/dist/utils/store.js +0 -15
- package/dist/node_modules/@headlessui/react/dist/utils/store.js.map +0 -1
- package/dist/node_modules/@react-aria/focus/dist/useFocusRing.js +0 -49
- package/dist/node_modules/@react-aria/focus/dist/useFocusRing.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.js +0 -42
- package/dist/node_modules/@react-aria/interactions/dist/useFocus.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.js +0 -170
- package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.js +0 -76
- package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/useHover.js +0 -125
- package/dist/node_modules/@react-aria/interactions/dist/useHover.js.map +0 -1
- package/dist/node_modules/@react-aria/interactions/dist/utils.js +0 -86
- package/dist/node_modules/@react-aria/interactions/dist/utils.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.js +0 -37
- package/dist/node_modules/@react-aria/utils/dist/DOMFunctions.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/domHelpers.js +0 -21
- package/dist/node_modules/@react-aria/utils/dist/domHelpers.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/focusWithoutScrolling.js +0 -56
- package/dist/node_modules/@react-aria/utils/dist/focusWithoutScrolling.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/isVirtualEvent.js +0 -10
- package/dist/node_modules/@react-aria/utils/dist/isVirtualEvent.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/openLink.js +0 -35
- package/dist/node_modules/@react-aria/utils/dist/openLink.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/platform.js +0 -57
- package/dist/node_modules/@react-aria/utils/dist/platform.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.js +0 -44
- package/dist/node_modules/@react-aria/utils/dist/useGlobalListeners.js.map +0 -1
- package/dist/node_modules/@react-aria/utils/dist/useLayoutEffect.js +0 -7
- package/dist/node_modules/@react-aria/utils/dist/useLayoutEffect.js.map +0 -1
- package/dist/node_modules/@react-stately/flags/dist/import.js +0 -8
- package/dist/node_modules/@react-stately/flags/dist/import.js.map +0 -1
- package/dist/node_modules/clsx/dist/clsx.js +0 -17
- package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js +0 -85
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js +0 -50
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js +0 -87
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js +0 -20
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js +0 -15
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js +0 -10
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js +0 -16
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js +0 -6
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js +0 -9
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js +0 -15
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js +0 -430
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js +0 -39
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js +0 -94
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js +0 -36
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js +0 -32
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js +0 -216
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js +0 -51
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js +0 -39
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js +0 -62
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js +0 -42
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js +0 -43
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js +0 -18
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js +0 -22
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js +0 -112
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js +0 -12
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js +0 -16
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js +0 -67
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js +0 -34
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/index.js +0 -70
- package/dist/node_modules/framer-motion/dist/es/motion/index.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js +0 -37
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js +0 -109
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js +0 -67
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js +0 -40
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js +0 -36
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js +0 -8
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js +0 -14
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js +0 -22
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js +0 -32
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js +0 -30
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js +0 -45
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js +0 -10
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js +0 -31
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js +0 -25
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js +0 -9
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js +0 -11
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js +0 -5
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.js +0 -39
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js +0 -12
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js.map +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js +0 -7
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js.map +0 -1
- package/dist/node_modules/imask/esm/controls/html-contenteditable-mask-element.js +0 -52
- package/dist/node_modules/imask/esm/controls/html-contenteditable-mask-element.js.map +0 -1
- package/dist/node_modules/imask/esm/controls/html-input-mask-element.js +0 -33
- package/dist/node_modules/imask/esm/controls/html-input-mask-element.js.map +0 -1
- package/dist/node_modules/imask/esm/controls/html-mask-element.js +0 -79
- package/dist/node_modules/imask/esm/controls/html-mask-element.js.map +0 -1
- package/dist/node_modules/imask/esm/controls/input-history.js +0 -37
- package/dist/node_modules/imask/esm/controls/input-history.js.map +0 -1
- package/dist/node_modules/imask/esm/controls/input.js +0 -309
- package/dist/node_modules/imask/esm/controls/input.js.map +0 -1
- package/dist/node_modules/imask/esm/controls/mask-element.js +0 -44
- package/dist/node_modules/imask/esm/controls/mask-element.js.map +0 -1
- package/dist/node_modules/imask/esm/core/action-details.js +0 -58
- package/dist/node_modules/imask/esm/core/action-details.js.map +0 -1
- package/dist/node_modules/imask/esm/core/change-details.js +0 -41
- package/dist/node_modules/imask/esm/core/change-details.js.map +0 -1
- package/dist/node_modules/imask/esm/core/continuous-tail-details.js +0 -53
- package/dist/node_modules/imask/esm/core/continuous-tail-details.js.map +0 -1
- package/dist/node_modules/imask/esm/core/holder.js +0 -7
- package/dist/node_modules/imask/esm/core/holder.js.map +0 -1
- package/dist/node_modules/imask/esm/core/utils.js +0 -71
- package/dist/node_modules/imask/esm/core/utils.js.map +0 -1
- package/dist/node_modules/imask/esm/index.js +0 -51
- package/dist/node_modules/imask/esm/index.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/base.js +0 -359
- package/dist/node_modules/imask/esm/masked/base.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/date.js +0 -132
- package/dist/node_modules/imask/esm/masked/date.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/dynamic.js +0 -318
- package/dist/node_modules/imask/esm/masked/dynamic.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/enum.js +0 -99
- package/dist/node_modules/imask/esm/masked/enum.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/factory.js +0 -63
- package/dist/node_modules/imask/esm/masked/factory.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/function.js +0 -24
- package/dist/node_modules/imask/esm/masked/function.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/number.js +0 -287
- package/dist/node_modules/imask/esm/masked/number.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/pattern/chunk-tail-details.js +0 -139
- package/dist/node_modules/imask/esm/masked/pattern/chunk-tail-details.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/pattern/cursor.js +0 -122
- package/dist/node_modules/imask/esm/masked/pattern/cursor.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/pattern/fixed-definition.js +0 -147
- package/dist/node_modules/imask/esm/masked/pattern/fixed-definition.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/pattern/input-definition.js +0 -177
- package/dist/node_modules/imask/esm/masked/pattern/input-definition.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/pattern.js +0 -432
- package/dist/node_modules/imask/esm/masked/pattern.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/pipe.js +0 -32
- package/dist/node_modules/imask/esm/masked/pipe.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/range.js +0 -110
- package/dist/node_modules/imask/esm/masked/range.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/regexp.js +0 -23
- package/dist/node_modules/imask/esm/masked/regexp.js.map +0 -1
- package/dist/node_modules/imask/esm/masked/repeat.js +0 -133
- package/dist/node_modules/imask/esm/masked/repeat.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/Icon.js +0 -39
- package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/context.js +0 -7
- package/dist/node_modules/lucide-react/dist/esm/context.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +0 -31
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +0 -21
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js +0 -19
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/clipboard-list.js +0 -27
- package/dist/node_modules/lucide-react/dist/esm/icons/clipboard-list.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/copy.js +0 -17
- package/dist/node_modules/lucide-react/dist/esm/icons/copy.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -23
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/info.js +0 -18
- package/dist/node_modules/lucide-react/dist/esm/icons/info.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.js +0 -17
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js +0 -20
- package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js +0 -24
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/user.js +0 -17
- package/dist/node_modules/lucide-react/dist/esm/icons/user.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/users.js +0 -19
- package/dist/node_modules/lucide-react/dist/esm/icons/users.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/x.js +0 -17
- package/dist/node_modules/lucide-react/dist/esm/icons/x.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js +0 -18
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js +0 -13
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js +0 -11
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js +0 -15
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js +0 -159
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js +0 -300
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js +0 -165
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js +0 -52
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js +0 -18
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js +0 -68
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js +0 -38
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js +0 -247
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js +0 -70
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js +0 -72
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js +0 -38
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js +0 -23
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js +0 -109
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js +0 -133
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js +0 -14
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js +0 -23
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js +0 -44
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js +0 -28
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js +0 -32
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js +0 -32
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js +0 -34
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js +0 -21
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js +0 -23
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js +0 -19
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js +0 -27
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js +0 -38
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js +0 -20
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js +0 -68
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js +0 -6
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js +0 -65
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js +0 -26
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js +0 -63
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js +0 -63
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js +0 -19
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js +0 -33
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js +0 -61
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js +0 -27
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js +0 -20
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js +0 -88
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js +0 -58
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js +0 -41
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js +0 -35
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js +0 -29
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js +0 -1123
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js +0 -88
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js +0 -27
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js +0 -26
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js +0 -37
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js +0 -25
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js +0 -21
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js +0 -19
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js +0 -12
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js +0 -432
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js +0 -38
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js +0 -84
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js +0 -42
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js +0 -43
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js +0 -49
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js +0 -20
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/store.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/render/store.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js +0 -46
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js +0 -60
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js +0 -29
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js +0 -18
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js +0 -229
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js +0 -27
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js +0 -14
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js +0 -14
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js +0 -25
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js +0 -34
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js +0 -21
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js +0 -26
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js +0 -26
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js +0 -63
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js +0 -32
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/resize/index.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/resize/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js +0 -18
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js +0 -54
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js +0 -45
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js +0 -84
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js +0 -17
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js +0 -6
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/index.js +0 -290
- package/dist/node_modules/motion-dom/dist/es/value/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js +0 -38
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js +0 -40
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js +0 -27
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js +0 -19
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js +0 -22
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js +0 -28
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js +0 -93
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js +0 -13
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js +0 -11
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js +0 -9
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js +0 -29
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js +0 -71
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js +0 -32
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js +0 -20
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js +0 -24
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js +0 -15
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js +0 -10
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js +0 -7
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js +0 -5
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js +0 -16
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js.map +0 -1
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js +0 -8
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/array.js +0 -14
- package/dist/node_modules/motion-utils/dist/es/array.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/clamp.js +0 -11
- package/dist/node_modules/motion-utils/dist/es/clamp.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js +0 -6
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/back.js +0 -12
- package/dist/node_modules/motion-utils/dist/es/easing/back.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js +0 -11
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js +0 -29
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js +0 -10
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js +0 -39
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/errors.js +0 -23
- package/dist/node_modules/motion-utils/dist/es/errors.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/global-config.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/global-config.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/is-object.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/is-object.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/memo.js +0 -13
- package/dist/node_modules/motion-utils/dist/es/memo.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/noop.js +0 -5
- package/dist/node_modules/motion-utils/dist/es/noop.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/pipe.js +0 -6
- package/dist/node_modules/motion-utils/dist/es/pipe.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/progress.js +0 -8
- package/dist/node_modules/motion-utils/dist/es/progress.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js +0 -33
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js +0 -7
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js.map +0 -1
- package/dist/node_modules/motion-utils/dist/es/warn-once.js +0 -12
- package/dist/node_modules/motion-utils/dist/es/warn-once.js.map +0 -1
- package/dist/node_modules/object-assign/index.js +0 -79
- package/dist/node_modules/object-assign/index.js.map +0 -1
- package/dist/node_modules/prop-types/checkPropTypes.js +0 -69
- package/dist/node_modules/prop-types/checkPropTypes.js.map +0 -1
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js +0 -59
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +0 -1
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +0 -452
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +0 -1
- package/dist/node_modules/prop-types/index.js +0 -18
- package/dist/node_modules/prop-types/index.js.map +0 -1
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +0 -13
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +0 -1
- package/dist/node_modules/prop-types/lib/has.js +0 -12
- package/dist/node_modules/prop-types/lib/has.js.map +0 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +0 -166
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +0 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +0 -107
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
- package/dist/node_modules/prop-types/node_modules/react-is/index.js +0 -18
- package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +0 -271
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.js +0 -42
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.js.map +0 -1
- package/dist/node_modules/react/jsx-runtime.js +0 -13
- package/dist/node_modules/react/jsx-runtime.js.map +0 -1
- package/dist/node_modules/react-icons/fa/index.js +0 -9
- package/dist/node_modules/react-icons/fa/index.js.map +0 -1
- package/dist/node_modules/react-icons/fi/index.js +0 -9
- package/dist/node_modules/react-icons/fi/index.js.map +0 -1
- package/dist/node_modules/react-icons/lib/iconBase.js +0 -110
- package/dist/node_modules/react-icons/lib/iconBase.js.map +0 -1
- package/dist/node_modules/react-icons/lib/iconContext.js +0 -14
- package/dist/node_modules/react-icons/lib/iconContext.js.map +0 -1
- package/dist/node_modules/react-imask/esm/input.js +0 -28
- package/dist/node_modules/react-imask/esm/input.js.map +0 -1
- package/dist/node_modules/react-imask/esm/mixin.js +0 -172
- package/dist/node_modules/react-imask/esm/mixin.js.map +0 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2467
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js +0 -81
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js +0 -77
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/with-selector.js +0 -13
- package/dist/node_modules/use-sync-external-store/with-selector.js.map +0 -1
- /package/dist/components/{StepperForm → EventAddForm}/schemas/step1.d.ts +0 -0
- /package/dist/components/{StepperForm → EventAddForm}/schemas/utils.d.ts +0 -0
- /package/dist/components/{StepperForm → EventAddForm}/schemas/utils.js +0 -0
- /package/dist/components/{StepperForm → EventAddForm}/types.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilder.js","sources":["../../../src/components/FormBuilder/FormBuilder.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\n\"use client\";\n\nimport { useState, useMemo, useEffect, useRef, useCallback, forwardRef, useImperativeHandle, memo } from 'react';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n arrayMove,\n} from '@dnd-kit/sortable';\nimport { Plus, ChevronDown, ClipboardList } from 'lucide-react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { InformationCircleIcon } from '@heroicons/react/24/outline';\n\nimport { QuestionDraft } from './types';\nimport { SortableQuestionList } from './SortableQuestionList';\nimport QuestionCard from './QuestionCard';\nimport { normalizeFormSchema, denormalizeFormSchema, getDiscountFilePath, validateQuestionError } from './utils';\nimport { Alert } from '../Alert/Alert';\nimport { Button } from '../Button';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { cn } from '../../utils/cn';\n\nexport interface FormBuilderProps {\n eventId: string;\n initialFields: any[]; // Raw API fields\n participationType?: string;\n scope?: 'INDIVIDUAL' | 'TEAM';\n isSameQuestionTitleAllowed?: boolean;\n allowedDiscountQuestions?: number;\n onQuestionsChange?: (questions: any[]) => void;\n onBusyStateChange?: (isBusy: boolean) => void;\n onPolluted?: () => void;\n discountFilePath?: string;\n individualDiscountFilePath?: string;\n userUid?: string;\n \n // API Callbacks (Required for persistence)\n addQuestion?: (payload: any) => Promise<any>;\n editQuestion?: (payload: any) => Promise<any>;\n deleteQuestion?: (payload: any) => Promise<any>;\n updateOrder?: (payload: any) => Promise<any>;\n \n // Services\n storageService?: {\n uploadFile: (path: string, file: File) => Promise<void>;\n downloadFile: (path: string) => Promise<Blob>;\n };\n}\n\nexport interface FormBuilderRef {\n save: () => Promise<void>;\n validateNavigation: () => boolean;\n isSaving: () => boolean;\n isDirty: () => boolean;\n}\n\nconst EmptyState = ({ onAdd, isAddingNew }: { onAdd: () => void, isAddingNew: boolean }) => (\n <div className=\"ui-flex ui-flex-col ui-items-center ui-justify-center ui-py-12 ui-px-4 ui-border-2 ui-border-dashed ui-border-grey-200 ui-rounded-xl ui-bg-grey-50/50 ui-text-center\">\n <div className=\"ui-bg-white ui-p-3 ui-rounded-full ui-shadow-sm ui-mb-4\">\n <ClipboardList className=\"ui-w-6 ui-h-6 ui-text-purple-600\" />\n </div>\n <h3 className=\"ui-text-lg ui-font-semibold ui-text-gray-900 ui-mb-1\">No questions yet</h3>\n <p className=\"ui-text-sm ui-text-grey-500 ui-mb-6 ui-max-w-sm\">\n Start building your form by adding your first question.\n </p>\n <Button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); if (!isAddingNew) onAdd(); }}\n disabled={isAddingNew}\n className={cn(\"ui-gap-2\", isAddingNew && \"ui-opacity-50 ui-cursor-not-allowed\")}\n >\n <Plus className=\"ui-w-4 ui-h-4\" />\n Add Question\n </Button>\n </div>\n);\n\nconst FormBuilder = forwardRef<FormBuilderRef, FormBuilderProps>(({ \n eventId, \n initialFields, \n participationType, \n scope, \n isSameQuestionTitleAllowed = true, \n allowedDiscountQuestions = 1, \n onQuestionsChange, \n onBusyStateChange, \n onPolluted, \n discountFilePath, \n individualDiscountFilePath,\n userUid,\n addQuestion,\n editQuestion,\n deleteQuestion,\n updateOrder,\n storageService\n}, ref) => {\n \n // Local State\n const [questions, setQuestions] = useState<Record<string, QuestionDraft>>({});\n const [questionOrder, setQuestionOrder] = useState<string[]>([]);\n const [isLocked, setIsLocked] = useState(false);\n const [isLoaded, setIsLoaded] = useState(false);\n\n // Refs for Auto-Save\n const questionsRef = useRef(questions);\n const questionOrderRef = useRef(questionOrder);\n\n useEffect(() => {\n questionsRef.current = questions;\n }, [questions]);\n\n useEffect(() => {\n questionOrderRef.current = questionOrder;\n }, [questionOrder]);\n\n const dirtyQuestionsRef = useRef<Set<string>>(new Set());\n const newQuestionsRef = useRef<Set<string>>(new Set()); \n const isOrderDirtyRef = useRef(false);\n const [isDirtyForUI, setIsDirtyForUI] = useState(false); \n\n const snapshotRef = useRef<QuestionDraft | null>(null);\n const isCurrentSessionNewRef = useRef(false);\n const isSavingRef = useRef(false);\n\n // UI State\n const [editingQuestionId, setEditingQuestionId] = useState<string | null>(null);\n const [showValidationErrors, setShowValidationErrors] = useState(false);\n const [activeId, setActiveId] = useState<string | null>(null); \n const [alertState, setAlertState] = useState<{ isVisible: boolean; message: string; type: 'success' | 'error' }>({\n isVisible: false, message: '', type: 'success'\n });\n\n const [isTeamOpen, setIsTeamOpen] = useState<boolean>(true);\n const [isIndividualOpen, setIsIndividualOpen] = useState<boolean>(true);\n const [isTeamMemberOpen, setIsTeamMemberOpen] = useState(true);\n\n const isBusy = (isSavingRef.current || isDirtyForUI);\n\n useEffect(() => {\n if (onBusyStateChange) {\n onBusyStateChange(isBusy);\n }\n }, [isBusy, onBusyStateChange]);\n\n const showAlert = useCallback((message: string, type: 'success' | 'error') => {\n setAlertState({ isVisible: true, message, type });\n setTimeout(() => setAlertState(prev => ({ ...prev, isVisible: false })), 3000);\n }, []);\n\n const formId = useMemo(() => `event-form-${eventId || 'new'}`, [eventId]);\n\n useEffect(() => {\n if (initialFields) {\n const hasUnsavedChanges = dirtyQuestionsRef.current.size > 0 || isOrderDirtyRef.current || newQuestionsRef.current.size > 0;\n\n if (!isLoaded || !hasUnsavedChanges) {\n const normalizedData = normalizeFormSchema(initialFields, discountFilePath, individualDiscountFilePath);\n setQuestions(normalizedData.questions || {});\n setQuestionOrder(normalizedData.questionOrder || []);\n setIsLocked(normalizedData.status === 'LOCKED' as any);\n\n if (!isLoaded) setIsLoaded(true);\n }\n }\n }, [initialFields, isLoaded]);\n\n const notifyParentOfChange = useCallback((newQuestions: Record<string, QuestionDraft>, newOrder: string[]) => {\n if (onQuestionsChange) {\n const arrayFormat = denormalizeFormSchema(newQuestions, newOrder);\n onQuestionsChange(arrayFormat);\n }\n }, [onQuestionsChange]);\n\n const isTeamEvent = participationType === '2' || participationType === 'TEAM';\n\n const discountQuestionsCount = useMemo(() => {\n return Object.values(questions).filter(q => {\n if (q.kind !== 'DISCOUNT') return false;\n if (scope) {\n if (scope === 'INDIVIDUAL') {\n const isBothParticipation = participationType === '3' || participationType === 'BOTH';\n return q.scope === 'INDIVIDUAL' || (isBothParticipation && q.scope === 'BOTH');\n } else if (scope === 'TEAM') {\n return q.scope === 'TEAM' || q.scope === 'BOTH';\n }\n }\n if (participationType === 'INDIVIDUAL') {\n return q.scope === 'INDIVIDUAL' || q.scope === 'BOTH';\n } else if (isTeamEvent) {\n return q.scope === 'TEAM' || q.scope === 'BOTH';\n }\n return true;\n }).length;\n }, [questions, scope, participationType, isTeamEvent]);\n\n const disableDiscountOption = discountQuestionsCount >= allowedDiscountQuestions;\n\n const { teamQuestionsOrder, teamMemberQuestionsOrder, individualQuestionsOrder } = useMemo(() => {\n const team: string[] = []; \n const teamMember: string[] = []; \n const individual: string[] = []; \n\n questionOrder.forEach(id => {\n const q = questions[id];\n if (!q) return;\n\n if (scope) {\n if (scope === 'INDIVIDUAL') {\n const isBothParticipation = participationType === '3' || participationType === 'BOTH';\n if (q.scope === 'INDIVIDUAL' || (isBothParticipation && q.scope === 'BOTH')) {\n individual.push(id);\n }\n }\n else if (scope === 'TEAM' && (q.scope === 'TEAM' || q.scope === 'BOTH')) {\n if (q.individual === false) team.push(id);\n else teamMember.push(id);\n }\n return;\n }\n\n if (participationType === 'INDIVIDUAL') {\n if (q.scope === 'INDIVIDUAL' || q.scope === 'BOTH') individual.push(id);\n } else if (isTeamEvent) {\n if (q.scope === 'TEAM' || q.scope === 'BOTH') {\n if (q.individual === false) team.push(id);\n else teamMember.push(id);\n }\n } else {\n if (q.individual === false) team.push(id);\n else individual.push(id);\n }\n });\n\n return { \n teamQuestionsOrder: team, \n teamMemberQuestionsOrder: teamMember, \n individualQuestionsOrder: individual \n };\n }, [questionOrder, questions, scope, participationType, isTeamEvent]);\n\n const autoSaveTimerRef = useRef<NodeJS.Timeout | null>(null);\n\n const markDirty = (desc: string, delay = 30000) => {\n setIsDirtyForUI(true);\n if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);\n autoSaveTimerRef.current = setTimeout(() => {\n saveRoutine();\n }, delay);\n };\n\n useEffect(() => {\n return () => {\n if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);\n };\n }, []);\n\n const saveRoutine = async (retryCount = 0): Promise<void> => {\n if (isSavingRef.current) {\n return new Promise((resolve) => {\n const check = () => {\n if (!isSavingRef.current) resolve();\n else setTimeout(check, 100);\n };\n check();\n });\n }\n isSavingRef.current = true;\n autoSaveTimerRef.current = null;\n\n const dirtyIds = Array.from(dirtyQuestionsRef.current);\n const orderDirty = isOrderDirtyRef.current;\n\n if (dirtyIds.length === 0 && !orderDirty) {\n setIsDirtyForUI(false);\n isSavingRef.current = false;\n return;\n }\n\n const questionPromises = [];\n let hasSkippedQuestions = false;\n\n for (const id of dirtyIds) {\n const q = questionsRef.current[id];\n if (!q) {\n dirtyQuestionsRef.current.delete(id);\n continue;\n }\n\n const stateBeingSaved = JSON.stringify(q);\n const isNew = newQuestionsRef.current.has(id);\n const isChoice = ['MULTIPLE_CHOICE', 'CHECKBOX', 'DROPDOWN'].includes(q.kind);\n const isPayment = ['PAYMENT', 'PAYMENT_CHECKBOX'].includes(q.kind);\n const effectiveScope = scope || q.scope || (q.individual === false ? 'TEAM' : 'INDIVIDUAL');\n\n const path = `/data/${userUid}/events/discounts/${eventId}.csv`;\n const individualPath = `/data/${userUid}/events/discounts/${eventId}_individual.csv`;\n const discountPath = userUid ? path : q.discount_file_path;\n const individualDiscountPath = userUid ? individualPath : discountPath;\n\n if (q.kind === 'DISCOUNT' && q.file && userUid && storageService) {\n try {\n const targetUploadPath = getDiscountFilePath(eventId, userUid, participationType, scope, q);\n await storageService.uploadFile(targetUploadPath, q.file);\n } catch (err) {\n console.error(\"Failed to upload discount file\", err);\n showAlert(\"Failed to upload discount file\", \"error\");\n continue;\n }\n }\n\n const basePayload: any = {\n event_id: eventId,\n question_type: q.kind,\n placeholder: q.placeholder || \"\",\n validation: q.required,\n individual: q.individual !== false,\n scope: effectiveScope,\n conditions: {},\n options: isChoice ? (q.options?.map(o => ({ value: o.value || o.label })) || []) : [],\n Categories: isPayment ? (q.Categories?.map(c => ({ name: c.name, price: c.price })) || []) : [],\n additional_fee: isPayment,\n applies_on: q.kind === 'DISCOUNT' ? (q.applies_on || []) : [],\n discount_file_path: (effectiveScope === 'TEAM' || effectiveScope === 'BOTH' || effectiveScope === 'INDIVIDUAL') ? (discountPath || \"\") : \"\",\n individual_discount_file_path: (effectiveScope === 'INDIVIDUAL' || effectiveScope === 'BOTH') ? (individualDiscountPath || \"\") : \"\",\n };\n\n if (isNew) {\n if (addQuestion) {\n const apiPayload = { ...basePayload, question: q.label };\n \n if (!apiPayload.question || \n (isChoice && apiPayload.options.length === 0) ||\n (isPayment && apiPayload.Categories.length === 0) ||\n (q.kind === 'DISCOUNT' && apiPayload.applies_on.length === 0) ||\n (q.kind === 'DISCOUNT' && effectiveScope === \"TEAM\" && !apiPayload.discount_file_path) ||\n (q.kind === 'DISCOUNT' && effectiveScope === \"INDIVIDUAL\" && !apiPayload.individual_discount_file_path)\n ) {\n hasSkippedQuestions = true;\n continue;\n }\n\n questionPromises.push(\n addQuestion(apiPayload).then(() => {\n const currentState = JSON.stringify(questionsRef.current[id]);\n newQuestionsRef.current.delete(id);\n setQuestions(prev => {\n if (!prev[id]) return prev;\n return { ...prev, [id]: { ...prev[id], originalLabel: q.label } };\n });\n if (currentState === stateBeingSaved) dirtyQuestionsRef.current.delete(id);\n if (onPolluted) onPolluted();\n })\n );\n }\n } else {\n if (editQuestion) {\n const apiPayload = { \n ...basePayload, \n question: q.originalLabel || q.label, \n new_question: q.label \n };\n\n if (!apiPayload.new_question ||\n (isChoice && apiPayload.options.length === 0) ||\n (isPayment && apiPayload.Categories.length === 0) ||\n (q.kind === 'DISCOUNT' && apiPayload.applies_on.length === 0)\n ) {\n hasSkippedQuestions = true;\n continue;\n }\n\n questionPromises.push(\n editQuestion(apiPayload).then(() => {\n const currentState = JSON.stringify(questionsRef.current[id]);\n setQuestions(prev => {\n if (!prev[id]) return prev;\n return { ...prev, [id]: { ...prev[id], originalLabel: q.label } };\n });\n if (currentState === stateBeingSaved) dirtyQuestionsRef.current.delete(id);\n if (onPolluted) onPolluted();\n })\n );\n }\n }\n }\n\n try {\n if (questionPromises.length > 0) await Promise.all(questionPromises);\n if (orderDirty && !hasSkippedQuestions && updateOrder) {\n const orderSnapshot = [...questionOrderRef.current];\n const orderPayload = {\n event_id: eventId,\n questions: orderSnapshot.map((id, index) => {\n const q = questionsRef.current[id];\n return q ? { question: q.label, order: 900 + index } : null;\n }).filter(Boolean)\n };\n\n await updateOrder(orderPayload).then(() => {\n const currentOrderJSON = JSON.stringify(questionOrderRef.current);\n const sentOrderJSON = JSON.stringify(orderSnapshot);\n if (currentOrderJSON === sentOrderJSON) isOrderDirtyRef.current = false;\n if (onPolluted) onPolluted();\n });\n }\n\n if (dirtyQuestionsRef.current.size === 0 && !isOrderDirtyRef.current) {\n setIsDirtyForUI(false);\n }\n } catch (e) {\n console.error(\"Auto-save failed\", e);\n if (!autoSaveTimerRef.current && retryCount < 3) {\n autoSaveTimerRef.current = setTimeout(() => {\n saveRoutine(retryCount + 1);\n }, 30000);\n setIsDirtyForUI(true);\n } else {\n showAlert(\"Failed to save changes. Please try again.\", \"error\");\n }\n } finally {\n isSavingRef.current = false;\n }\n };\n\n useImperativeHandle(ref, () => ({\n save: async () => {\n if (editingQuestionId) {\n handleCancel(editingQuestionId);\n setShowValidationErrors(false);\n }\n if (!isSameQuestionTitleAllowed) {\n const titles = new Set();\n const duplicates = new Set();\n Object.values(questions).forEach(q => {\n const normalized = q.label?.trim().toLowerCase();\n if (!normalized) return;\n if (titles.has(normalized)) duplicates.add(q.label);\n titles.add(normalized);\n });\n if (duplicates.size > 0) {\n const dupList = Array.from(duplicates).join(\", \");\n showAlert(`Duplicate titles: ${dupList}`, \"error\");\n throw new Error(`Duplicate titles: ${dupList}`);\n }\n }\n return await saveRoutine();\n },\n validateNavigation: () => {\n if (editingQuestionId) {\n handleCancel(editingQuestionId);\n setShowValidationErrors(false);\n }\n return true;\n },\n isSaving: () => isSavingRef.current || isBusy,\n isDirty: () => isDirtyForUI\n }));\n\n useEffect(() => {\n if (!isDirtyForUI) return;\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n e.preventDefault();\n e.returnValue = '';\n saveRoutine();\n };\n window.addEventListener('beforeunload', handleBeforeUnload);\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\n }, [isDirtyForUI]);\n\n const updateQuestionLocal = (id: string, updates: Partial<QuestionDraft>) => {\n setQuestions(prev => {\n const current = prev[id];\n if (!current) return prev;\n const updated = { ...prev, [id]: { ...current, ...updates } };\n questionsRef.current = updated;\n\n if (updates.options || updates.Categories || updates.label !== undefined || updates.file !== undefined || updates.applies_on !== undefined) {\n setShowValidationErrors(false);\n }\n\n if (onQuestionsChange) {\n clearTimeout((window as any)._notifyTimer);\n (window as any)._notifyTimer = setTimeout(() => {\n notifyParentOfChange(updated, questionOrderRef.current);\n }, 500);\n }\n return updated;\n });\n dirtyQuestionsRef.current.add(id);\n markDirty(\"update\");\n };\n\n const addQuestionLocal = (question: QuestionDraft, indexToInsert?: number) => {\n const updatedQuestions = { ...questionsRef.current, [question.id]: question };\n setQuestions(updatedQuestions);\n questionsRef.current = updatedQuestions;\n\n setQuestionOrder(prev => {\n const newOrder = [...prev];\n if (typeof indexToInsert === 'number') newOrder.splice(indexToInsert, 0, question.id);\n else newOrder.push(question.id);\n questionOrderRef.current = newOrder;\n notifyParentOfChange(questionsRef.current, newOrder);\n return newOrder;\n });\n\n newQuestionsRef.current.add(question.id);\n dirtyQuestionsRef.current.add(question.id);\n isOrderDirtyRef.current = true;\n markDirty(\"add\");\n };\n\n const deleteQuestionLocal = async (id: string) => {\n const q = questions[id];\n if (!q) return;\n if (['TEAM_SIZE', 'NAME_ON_TICKET'].includes(q.kind)) {\n showAlert(\"System questions cannot be deleted\", \"error\");\n return;\n }\n\n const nextQuestions = { ...questionsRef.current };\n delete nextQuestions[id];\n setQuestions(nextQuestions);\n questionsRef.current = nextQuestions;\n\n const nextOrder = questionOrderRef.current.filter(qid => qid !== id);\n setQuestionOrder(nextOrder);\n questionOrderRef.current = nextOrder;\n notifyParentOfChange(nextQuestions, nextOrder);\n\n if (editingQuestionId === id) setEditingQuestionId(null);\n if (newQuestionsRef.current.has(id)) {\n dirtyQuestionsRef.current.delete(id);\n newQuestionsRef.current.delete(id);\n return;\n }\n\n if (deleteQuestion) {\n try {\n await deleteQuestion({ event_id: eventId, question: q.originalLabel || q.label });\n dirtyQuestionsRef.current.delete(id);\n newQuestionsRef.current.delete(id);\n if (onPolluted) onPolluted();\n } catch (e) {\n console.error(\"Delete failed\", e);\n }\n }\n };\n\n const startEditing = (id: string, questionOverride?: QuestionDraft) => {\n const q = questionOverride || questions[id];\n if (q) {\n snapshotRef.current = JSON.parse(JSON.stringify(q));\n isCurrentSessionNewRef.current = false;\n }\n setEditingQuestionId(id);\n };\n\n const handleCancel = (id: string) => {\n if (isCurrentSessionNewRef.current) {\n const nextQuestions = { ...questionsRef.current };\n delete nextQuestions[id];\n setQuestions(nextQuestions);\n questionsRef.current = nextQuestions;\n\n const nextOrder = questionOrderRef.current.filter(qid => qid !== id);\n setQuestionOrder(nextOrder);\n questionOrderRef.current = nextOrder;\n\n dirtyQuestionsRef.current.delete(id);\n newQuestionsRef.current.delete(id);\n setEditingQuestionId(null);\n setShowValidationErrors(false);\n return;\n }\n\n if (snapshotRef.current) {\n setQuestions(prev => {\n const updated = { ...prev, [id]: { ...snapshotRef.current!, file: undefined } };\n questionsRef.current = updated;\n return updated;\n });\n }\n dirtyQuestionsRef.current.delete(id);\n if (dirtyQuestionsRef.current.size === 0 && !isOrderDirtyRef.current) setIsDirtyForUI(false);\n setEditingQuestionId(null);\n setShowValidationErrors(false);\n };\n\n const triggerSave = () => {\n snapshotRef.current = null;\n isCurrentSessionNewRef.current = false;\n if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);\n autoSaveTimerRef.current = setTimeout(() => saveRoutine(), 100);\n };\n\n const handleSetActiveQuestion = (newId: string | null) => {\n if (newId === null) {\n if (editingQuestionId) handleCancel(editingQuestionId);\n return;\n }\n if (editingQuestionId && editingQuestionId !== newId) {\n const current = questions[editingQuestionId];\n if (!current) {\n startEditing(newId);\n setShowValidationErrors(false);\n return;\n }\n if (validateQuestionError(current, questions, participationType, isSameQuestionTitleAllowed) !== null) {\n setShowValidationErrors(true);\n showAlert(\"Please complete the current question to proceed.\", \"error\");\n return;\n } else {\n triggerSave();\n setShowValidationErrors(false);\n }\n }\n startEditing(newId);\n setShowValidationErrors(false);\n };\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 3 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n );\n\n const handleDragStart = (event: DragStartEvent) => {\n setActiveId(event.active.id as string);\n if (editingQuestionId) setEditingQuestionId(null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n setActiveId(null);\n if (!over || active.id === over.id) return;\n\n const oldIndex = questionOrder.indexOf(active.id as string);\n const newIndex = questionOrder.indexOf(over.id as string);\n const activeQ = questions[active.id];\n const overQ = questions[over.id];\n\n if (isTeamEvent && activeQ && overQ && activeQ.individual !== overQ.individual) return;\n if (['TEAM_SIZE', 'NAME_ON_TICKET'].includes(activeQ?.kind)) return;\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newOrder = arrayMove(questionOrder, oldIndex, newIndex);\n setQuestionOrder(newOrder);\n questionOrderRef.current = newOrder;\n isOrderDirtyRef.current = true;\n markDirty(\"reorder\");\n notifyParentOfChange(questions, newOrder);\n }\n };\n\n const handleAddClick = (isIndividual: boolean = true) => {\n if (editingQuestionId) {\n const q = questions[editingQuestionId];\n if (q && validateQuestionError(q, questions, participationType, isSameQuestionTitleAllowed) !== null) {\n setShowValidationErrors(true);\n showAlert(\"Please complete the current question to proceed.\", \"error\");\n return;\n }\n triggerSave();\n setShowValidationErrors(false);\n }\n\n const newId = crypto.randomUUID();\n let defaultScope: 'INDIVIDUAL' | 'TEAM' = scope || (isTeamEvent ? 'TEAM' : 'INDIVIDUAL');\n\n const newQuestion: QuestionDraft = {\n id: newId,\n kind: 'INPUT_STR',\n label: '',\n required: false,\n options: [],\n individual: isIndividual,\n scope: defaultScope,\n };\n\n addQuestionLocal(newQuestion);\n isCurrentSessionNewRef.current = true;\n snapshotRef.current = JSON.parse(JSON.stringify(newQuestion));\n setEditingQuestionId(newId);\n };\n\n const handleDuplicate = (id: string) => {\n const original = questions[id];\n if (!original) return;\n if (['TEAM_SIZE', 'NAME_ON_TICKET'].includes(original.kind)) {\n showAlert(\"System questions cannot be duplicated\", \"error\");\n return;\n }\n\n const newId = crypto.randomUUID();\n const baseName = (original.label || '').replace(/\\s+copy\\s+\\(\\d+\\)$/i, '').trim();\n let nextNumber = 1;\n const labels = Object.values(questions).map(q => q.label?.toLowerCase() || \"\");\n while (labels.includes(`${baseName} copy (${nextNumber})`.toLowerCase())) nextNumber++;\n\n const newQuestion: QuestionDraft = {\n ...original,\n id: newId,\n label: `${baseName} copy (${nextNumber})`,\n options: original.options?.map(o => ({ ...o, id: crypto.randomUUID() })) || [],\n Categories: original.Categories?.map(c => ({ ...c, id: crypto.randomUUID() })) || [],\n };\n\n const originalIndex = questionOrder.indexOf(id);\n const newOrder = [...questionOrder];\n newOrder.splice(originalIndex + 1, 0, newId);\n\n setQuestions(prev => {\n const updated = { ...prev, [newId]: newQuestion };\n questionsRef.current = updated;\n return updated;\n });\n setQuestionOrder(newOrder);\n questionOrderRef.current = newOrder;\n\n newQuestionsRef.current.add(newId);\n dirtyQuestionsRef.current.add(newId);\n isOrderDirtyRef.current = true;\n markDirty(\"duplicate\");\n isCurrentSessionNewRef.current = true;\n setEditingQuestionId(newId);\n };\n\n const handleManualSave = (id: string) => {\n const q = questions[id];\n if (!q) return;\n if (validateQuestionError(q, questions, participationType, isSameQuestionTitleAllowed) !== null) {\n setShowValidationErrors(true);\n return;\n }\n triggerSave();\n setShowValidationErrors(false);\n setEditingQuestionId(null);\n };\n\n const activeQuestionProps = (id: string) => {\n const q = questions[id];\n const err = validateQuestionError(q, questions, participationType, isSameQuestionTitleAllowed);\n return {\n isDirty: dirtyQuestionsRef.current.has(id),\n isSaving: isSavingRef.current,\n isNew: newQuestionsRef.current.has(id),\n isValid: err === null,\n errorMessage: showValidationErrors ? (err || undefined) : undefined\n };\n };\n\n const handleSectionToggle = (section: 'TEAM' | 'TEAM_MEMBER' | 'INDIVIDUAL') => {\n let currentIsOpen = false;\n let setOpen: (open: boolean) => void = () => {};\n let qOrder: string[] = [];\n\n if (section === 'TEAM') { currentIsOpen = isTeamOpen; setOpen = setIsTeamOpen; qOrder = teamQuestionsOrder; }\n else if (section === 'TEAM_MEMBER') { currentIsOpen = isTeamMemberOpen; setOpen = setIsTeamMemberOpen; qOrder = teamMemberQuestionsOrder; }\n else { currentIsOpen = isIndividualOpen; setOpen = setIsIndividualOpen; qOrder = individualQuestionsOrder; }\n\n if (currentIsOpen && editingQuestionId && qOrder.includes(editingQuestionId)) {\n handleSetActiveQuestion(null);\n }\n setOpen(!currentIsOpen);\n };\n\n if (!isLoaded && initialFields) return <div className=\"ui-p-8 ui-text-center ui-text-gray-500\">Loading Form Builder...</div>;\n\n const isAddingNew = editingQuestionId ? newQuestionsRef.current.has(editingQuestionId) : false;\n\n return (\n <div className=\"ui-flex ui-flex-col ui-gap-6 ui-relative\">\n <Alert\n isVisible={alertState.isVisible}\n message={alertState.message}\n type={alertState.type}\n onClose={() => setAlertState(prev => ({ ...prev, isVisible: false }))}\n />\n\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n {(scope === 'TEAM' || (isTeamEvent && !scope)) && (\n <div className=\"ui-space-y-8 ui-overflow-y-hidden\">\n <div className=\"ui-border ui-border-gray-200 ui-rounded-xl ui-bg-white\">\n <div className=\"ui-p-4 ui-flex ui-items-center ui-space-x-2 ui-cursor-pointer ui-transition-colors\"\n onClick={() => handleSectionToggle('TEAM')}\n >\n <ChevronDown className={cn(\"ui-w-5 ui-h-5 ui-text-gray-900 ui-transition-transform ui-duration-300\",\n isTeamOpen ? \"ui-rotate-180\" : \"ui-rotate-0\"\n )} />\n <div className=\"ui-flex ui-items-center ui-gap-2\">\n <h3 className=\"ui-text-xl ui-font-semibold ui-text-gray-800 ui-flex ui-items-center ui-gap-2\">\n Team questions\n </h3>\n <Tooltip\n placement=\"bottom\"\n content=\"Questions that apply to the entire team and only need to be specified once\"\n >\n <InformationCircleIcon className=\"ui-h-5 ui-w-5 ui-text-gray-400\" />\n </Tooltip>\n </div>\n </div>\n\n <AnimatePresence initial={false}>\n {isTeamOpen && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2 }}\n >\n <div className=\"ui-p-6 ui-pt-0\">\n {teamQuestionsOrder.length > 0 ? (\n <>\n <SortableContext items={teamQuestionsOrder} strategy={verticalListSortingStrategy}>\n <SortableQuestionList\n questions={questions}\n questionOrder={teamQuestionsOrder}\n formId={formId}\n eventId={eventId}\n userUid={userUid}\n storageService={storageService}\n isLocked={isLocked}\n activeQuestionId={editingQuestionId}\n onSetActiveQuestion={handleSetActiveQuestion}\n onDelete={deleteQuestionLocal}\n onDuplicate={handleDuplicate}\n onSave={handleManualSave}\n onUpdate={updateQuestionLocal}\n onCancel={handleCancel}\n activeQuestionProps={editingQuestionId ? activeQuestionProps(editingQuestionId) : undefined}\n disabled={isAddingNew}\n scope={scope}\n participationType={participationType}\n disableDiscountOption={disableDiscountOption}\n showValidationErrors={showValidationErrors}\n />\n </SortableContext>\n {!activeId && !isLocked && (\n <div className=\"ui-flex ui-justify-center ui-mt-6\">\n <Button\n type=\"button\"\n variant='outline'\n onClick={(e) => { e.stopPropagation(); if (!isAddingNew) handleAddClick(false); }}\n size='lg'\n className={cn(\"ui-gap-x-2 ui-px-4 ui-py-2.5 ui-text-sm\", isAddingNew && \"ui-opacity-50 ui-cursor-not-allowed\")}\n disabled={isAddingNew}\n >\n <Plus className=\"ui-font-bold ui-w-5 ui-h-5\" />\n Add New Question\n </Button>\n </div>\n )}\n </>\n ) : (\n <EmptyState onAdd={() => handleAddClick(false)} isAddingNew={isAddingNew} />\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n\n <div className=\"ui-border ui-border-gray-200 ui-rounded-xl ui-bg-white\">\n <div className=\"ui-p-4 ui-flex ui-items-center ui-space-x-2 ui-cursor-pointer ui-transition-colors\"\n onClick={() => handleSectionToggle('TEAM_MEMBER')}\n >\n <ChevronDown className={cn(\"ui-w-5 ui-h-5 ui-text-gray-900 ui-transition-transform ui-duration-300\",\n isTeamMemberOpen ? \"ui-rotate-180\" : \"ui-rotate-0\"\n )} />\n <div className=\"ui-flex ui-items-center ui-gap-2\">\n <h3 className=\"ui-text-xl ui-font-semibold ui-text-gray-800 ui-flex ui-items-center ui-gap-2\">\n Team Member Questions\n </h3>\n <Tooltip\n placement=\"bottom\"\n content=\"Questions that are specific to each individual team member and need to be asked separately for each person.\"\n >\n <InformationCircleIcon className=\"ui-h-5 ui-w-5 ui-text-gray-400\" />\n </Tooltip>\n </div>\n </div>\n\n <AnimatePresence initial={false}>\n {isTeamMemberOpen && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2 }}\n >\n <div className=\"ui-p-6 ui-pt-0\">\n {teamMemberQuestionsOrder.length > 0 ? (\n <>\n <SortableContext items={teamMemberQuestionsOrder} strategy={verticalListSortingStrategy}>\n <SortableQuestionList\n questions={questions}\n questionOrder={teamMemberQuestionsOrder}\n formId={formId}\n eventId={eventId}\n userUid={userUid}\n storageService={storageService}\n isLocked={isLocked}\n activeQuestionId={editingQuestionId}\n onSetActiveQuestion={handleSetActiveQuestion}\n onDelete={deleteQuestionLocal}\n onDuplicate={handleDuplicate}\n onSave={handleManualSave}\n onUpdate={updateQuestionLocal}\n onCancel={handleCancel}\n activeQuestionProps={editingQuestionId ? activeQuestionProps(editingQuestionId) : undefined}\n disabled={isAddingNew}\n scope={scope}\n participationType={participationType}\n disableDiscountOption={disableDiscountOption}\n showValidationErrors={showValidationErrors}\n />\n </SortableContext>\n {!activeId && !isLocked && (\n <div className=\"ui-flex ui-justify-center ui-mt-6\">\n <Button\n type=\"button\"\n variant='outline'\n onClick={(e) => { e.stopPropagation(); if (!isAddingNew) handleAddClick(true); }}\n size='lg'\n className={cn(\"ui-gap-x-2 ui-px-4 ui-py-2.5 ui-text-sm\", isAddingNew && \"ui-opacity-50 ui-cursor-not-allowed\")}\n disabled={isAddingNew}\n >\n <Plus className=\"ui-font-bold ui-w-5 ui-h-5\" />\n Add New Question\n </Button>\n </div>\n )}\n </>\n ) : (\n <EmptyState onAdd={() => handleAddClick(true)} isAddingNew={isAddingNew} />\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </div>\n )}\n\n {(scope === 'INDIVIDUAL' || (!isTeamEvent && !scope)) && (\n <div className=\"ui-border ui-border-gray-200 ui-rounded-xl ui-bg-white ui-overflow-y-hidden\">\n <div className=\"ui-p-4 ui-flex ui-items-center ui-space-x-2 ui-cursor-pointer ui-transition-colors\"\n onClick={() => handleSectionToggle('INDIVIDUAL')}\n >\n <ChevronDown className={cn(\"ui-w-5 ui-h-5 ui-text-gray-900 ui-transition-transform ui-duration-300\",\n isIndividualOpen ? \"ui-rotate-180\" : \"ui-rotate-0\"\n )} />\n <h3 className=\"ui-text-xl ui-font-semibold ui-text-gray-800 ui-flex ui-items-center ui-gap-2\">\n Individual questions\n </h3>\n </div>\n\n <AnimatePresence initial={false}>\n {isIndividualOpen && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: \"auto\", opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{ duration: 0.2 }}\n >\n <div className=\"ui-p-6 ui-pt-0\">\n {individualQuestionsOrder.length > 0 ? (\n <>\n <SortableContext items={individualQuestionsOrder} strategy={verticalListSortingStrategy}>\n <SortableQuestionList\n questions={questions}\n questionOrder={individualQuestionsOrder}\n formId={formId}\n eventId={eventId}\n userUid={userUid}\n storageService={storageService}\n isLocked={isLocked}\n activeQuestionId={editingQuestionId}\n onSetActiveQuestion={handleSetActiveQuestion}\n onDelete={deleteQuestionLocal}\n onDuplicate={handleDuplicate}\n onSave={handleManualSave}\n onUpdate={updateQuestionLocal}\n onCancel={handleCancel}\n activeQuestionProps={editingQuestionId ? activeQuestionProps(editingQuestionId) : undefined}\n disabled={isAddingNew}\n scope={scope}\n participationType={participationType}\n disableDiscountOption={disableDiscountOption}\n showValidationErrors={showValidationErrors}\n />\n </SortableContext>\n {!activeId && !isLocked && (\n <div className=\"ui-flex ui-justify-center ui-mt-6\">\n <Button\n type=\"button\"\n onClick={() => !isAddingNew && handleAddClick(true)}\n variant='outline'\n size='lg'\n className={cn(\"ui-gap-x-2 ui-px-4 ui-py-2.5 ui-text-sm\", isAddingNew && \"ui-opacity-50 ui-cursor-not-allowed\")}\n disabled={isAddingNew}\n >\n <Plus className=\"ui-font-bold ui-w-5 ui-h-5\" />\n Add New Question\n </Button>\n </div>\n )}\n </>\n ) : (\n <EmptyState onAdd={() => handleAddClick(true)} isAddingNew={isAddingNew} />\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )}\n\n <DragOverlay>\n {activeId && questions[activeId] ? (\n <div className=\"ui-opacity-80 ui-rotate-2 ui-cursor-grabbing\">\n <QuestionCard\n question={questions[activeId]}\n formId={formId}\n eventId={eventId}\n isLocked={isLocked}\n isOpen={false}\n onToggle={() => { }}\n onDelete={() => { }}\n onUpdate={() => { }}\n />\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n </div>\n );\n});\n\nFormBuilder.displayName = \"FormBuilder\";\n\nexport default memo(FormBuilder);\n"],"names":["jsxs","jsx","_a","InformationCircleIcon","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormBuilder.js","sources":["../../../src/components/FormBuilder/FormBuilder.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\n\"use client\";\r\n\r\nimport { useState, useMemo, useEffect, useRef, useCallback, forwardRef, useImperativeHandle, memo } from 'react';\r\nimport {\r\n DndContext,\r\n closestCenter,\r\n KeyboardSensor,\r\n PointerSensor,\r\n useSensor,\r\n useSensors,\r\n DragEndEvent,\r\n DragStartEvent,\r\n DragOverlay,\r\n} from '@dnd-kit/core';\r\nimport {\r\n SortableContext,\r\n sortableKeyboardCoordinates,\r\n verticalListSortingStrategy,\r\n arrayMove,\r\n} from '@dnd-kit/sortable';\r\nimport { Plus, ChevronDown, ClipboardList } from 'lucide-react';\r\nimport { motion, AnimatePresence } from 'framer-motion';\r\nimport { InformationCircleIcon } from '@heroicons/react/24/outline';\r\n\r\nimport { QuestionDraft } from './types';\r\nimport { SortableQuestionList } from './SortableQuestionList';\r\nimport QuestionCard from './QuestionCard';\r\nimport { normalizeFormSchema, denormalizeFormSchema, getDiscountFilePath, validateQuestionError } from './utils';\r\nimport Alert from '../Alert/Alert';\r\nimport { Button } from '../Button';\r\nimport { Tooltip } from '../Tooltip/Tooltip';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface FormBuilderProps {\r\n eventId: string;\r\n initialFields: any[]; // Raw API fields\r\n participationType?: string;\r\n scope?: 'INDIVIDUAL' | 'TEAM';\r\n isSameQuestionTitleAllowed?: boolean;\r\n allowedDiscountQuestions?: number;\r\n onQuestionsChange?: (questions: any[]) => void;\r\n onBusyStateChange?: (isBusy: boolean) => void;\r\n onPolluted?: () => void;\r\n discountFilePath?: string;\r\n individualDiscountFilePath?: string;\r\n userUid?: string;\r\n\r\n // API Callbacks (Required for persistence)\r\n addQuestion?: (payload: any) => Promise<any>;\r\n editQuestion?: (payload: any) => Promise<any>;\r\n deleteQuestion?: (payload: any) => Promise<any>;\r\n updateOrder?: (payload: any) => Promise<any>;\r\n\r\n // Services\r\n storageService?: {\r\n uploadFile: (path: string, file: File) => Promise<void>;\r\n downloadFile: (path: string) => Promise<Blob>;\r\n };\r\n}\r\n\r\nexport interface FormBuilderRef {\r\n save: () => Promise<void>;\r\n validateNavigation: () => boolean;\r\n isSaving: () => boolean;\r\n isDirty: () => boolean;\r\n}\r\n\r\nconst EmptyState = ({ onAdd, isAddingNew }: { onAdd: () => void, isAddingNew: boolean }) => (\r\n <div className=\"flex flex-col items-center justify-center py-12 px-4 border-2 border-dashed border-grey-200 rounded-xl bg-grey-50/50 text-center\">\r\n <div className=\"bg-white p-3 rounded-full shadow-sm mb-4\">\r\n <ClipboardList className=\"w-6 h-6 text-purple-600\" />\r\n </div>\r\n <h3 className=\"text-lg font-semibold text-gray-900 mb-1\">No questions yet</h3>\r\n <p className=\"text-sm text-grey-500 mb-6 max-w-sm\">\r\n Start building your form by adding your first question.\r\n </p>\r\n <Button\r\n type=\"button\"\r\n onClick={(e) => { e.stopPropagation(); if (!isAddingNew) onAdd(); }}\r\n disabled={isAddingNew}\r\n className={cn(\"gap-2\", isAddingNew && \"opacity-50 cursor-not-allowed\")}\r\n >\r\n <Plus className=\"w-4 h-4\" />\r\n Add Question\r\n </Button>\r\n </div>\r\n);\r\n\r\nconst FormBuilder = forwardRef<FormBuilderRef, FormBuilderProps>(({\r\n eventId,\r\n initialFields,\r\n participationType,\r\n scope,\r\n isSameQuestionTitleAllowed = true,\r\n allowedDiscountQuestions = 1,\r\n onQuestionsChange,\r\n onBusyStateChange,\r\n onPolluted,\r\n discountFilePath,\r\n individualDiscountFilePath,\r\n userUid,\r\n addQuestion,\r\n editQuestion,\r\n deleteQuestion,\r\n updateOrder,\r\n storageService\r\n}, ref) => {\r\n\r\n // Local State\r\n const [questions, setQuestions] = useState<Record<string, QuestionDraft>>({});\r\n const [questionOrder, setQuestionOrder] = useState<string[]>([]);\r\n const [isLocked, setIsLocked] = useState(false);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n\r\n // Refs for Auto-Save\r\n const questionsRef = useRef(questions);\r\n const questionOrderRef = useRef(questionOrder);\r\n\r\n useEffect(() => {\r\n questionsRef.current = questions;\r\n }, [questions]);\r\n\r\n useEffect(() => {\r\n questionOrderRef.current = questionOrder;\r\n }, [questionOrder]);\r\n\r\n const dirtyQuestionsRef = useRef<Set<string>>(new Set());\r\n const newQuestionsRef = useRef<Set<string>>(new Set());\r\n const isOrderDirtyRef = useRef(false);\r\n const [isDirtyForUI, setIsDirtyForUI] = useState(false);\r\n\r\n const snapshotRef = useRef<QuestionDraft | null>(null);\r\n const isCurrentSessionNewRef = useRef(false);\r\n const isSavingRef = useRef(false);\r\n\r\n // UI State\r\n const [editingQuestionId, setEditingQuestionId] = useState<string | null>(null);\r\n const [showValidationErrors, setShowValidationErrors] = useState(false);\r\n const [activeId, setActiveId] = useState<string | null>(null);\r\n const [alertState, setAlertState] = useState<{ isVisible: boolean; message: string; type: 'success' | 'error' }>({\r\n isVisible: false, message: '', type: 'success'\r\n });\r\n\r\n const [isTeamOpen, setIsTeamOpen] = useState<boolean>(true);\r\n const [isIndividualOpen, setIsIndividualOpen] = useState<boolean>(true);\r\n const [isTeamMemberOpen, setIsTeamMemberOpen] = useState(true);\r\n\r\n const isBusy = (isSavingRef.current || isDirtyForUI);\r\n\r\n useEffect(() => {\r\n if (onBusyStateChange) {\r\n onBusyStateChange(isBusy);\r\n }\r\n }, [isBusy, onBusyStateChange]);\r\n\r\n const showAlert = useCallback((message: string, type: 'success' | 'error') => {\r\n setAlertState({ isVisible: true, message, type });\r\n setTimeout(() => setAlertState(prev => ({ ...prev, isVisible: false })), 3000);\r\n }, []);\r\n\r\n const formId = useMemo(() => `event-form-${eventId || 'new'}`, [eventId]);\r\n\r\n useEffect(() => {\r\n if (initialFields) {\r\n const hasUnsavedChanges = dirtyQuestionsRef.current.size > 0 || isOrderDirtyRef.current || newQuestionsRef.current.size > 0;\r\n\r\n if (!isLoaded || !hasUnsavedChanges) {\r\n const normalizedData = normalizeFormSchema(initialFields, discountFilePath, individualDiscountFilePath);\r\n setQuestions(normalizedData.questions || {});\r\n setQuestionOrder(normalizedData.questionOrder || []);\r\n setIsLocked(normalizedData.status === 'LOCKED' as any);\r\n\r\n if (!isLoaded) setIsLoaded(true);\r\n }\r\n }\r\n }, [initialFields, isLoaded]);\r\n\r\n const notifyParentOfChange = useCallback((newQuestions: Record<string, QuestionDraft>, newOrder: string[]) => {\r\n if (onQuestionsChange) {\r\n const arrayFormat = denormalizeFormSchema(newQuestions, newOrder);\r\n onQuestionsChange(arrayFormat);\r\n }\r\n }, [onQuestionsChange]);\r\n\r\n const isTeamEvent = participationType === '2' || participationType === 'TEAM';\r\n\r\n const discountQuestionsCount = useMemo(() => {\r\n return Object.values(questions).filter(q => {\r\n if (q.kind !== 'DISCOUNT') return false;\r\n if (scope) {\r\n if (scope === 'INDIVIDUAL') {\r\n const isBothParticipation = participationType === '3' || participationType === 'BOTH';\r\n return q.scope === 'INDIVIDUAL' || (isBothParticipation && q.scope === 'BOTH');\r\n } else if (scope === 'TEAM') {\r\n return q.scope === 'TEAM' || q.scope === 'BOTH';\r\n }\r\n }\r\n if (participationType === 'INDIVIDUAL') {\r\n return q.scope === 'INDIVIDUAL' || q.scope === 'BOTH';\r\n } else if (isTeamEvent) {\r\n return q.scope === 'TEAM' || q.scope === 'BOTH';\r\n }\r\n return true;\r\n }).length;\r\n }, [questions, scope, participationType, isTeamEvent]);\r\n\r\n const disableDiscountOption = discountQuestionsCount >= allowedDiscountQuestions;\r\n\r\n const { teamQuestionsOrder, teamMemberQuestionsOrder, individualQuestionsOrder } = useMemo(() => {\r\n const team: string[] = [];\r\n const teamMember: string[] = [];\r\n const individual: string[] = [];\r\n\r\n questionOrder.forEach(id => {\r\n const q = questions[id];\r\n if (!q) return;\r\n\r\n if (scope) {\r\n if (scope === 'INDIVIDUAL') {\r\n const isBothParticipation = participationType === '3' || participationType === 'BOTH';\r\n if (q.scope === 'INDIVIDUAL' || (isBothParticipation && q.scope === 'BOTH')) {\r\n individual.push(id);\r\n }\r\n }\r\n else if (scope === 'TEAM' && (q.scope === 'TEAM' || q.scope === 'BOTH')) {\r\n if (q.individual === false) team.push(id);\r\n else teamMember.push(id);\r\n }\r\n return;\r\n }\r\n\r\n if (participationType === 'INDIVIDUAL') {\r\n if (q.scope === 'INDIVIDUAL' || q.scope === 'BOTH') individual.push(id);\r\n } else if (isTeamEvent) {\r\n if (q.scope === 'TEAM' || q.scope === 'BOTH') {\r\n if (q.individual === false) team.push(id);\r\n else teamMember.push(id);\r\n }\r\n } else {\r\n if (q.individual === false) team.push(id);\r\n else individual.push(id);\r\n }\r\n });\r\n\r\n return {\r\n teamQuestionsOrder: team,\r\n teamMemberQuestionsOrder: teamMember,\r\n individualQuestionsOrder: individual\r\n };\r\n }, [questionOrder, questions, scope, participationType, isTeamEvent]);\r\n\r\n const autoSaveTimerRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const markDirty = (desc: string, delay = 30000) => {\r\n setIsDirtyForUI(true);\r\n if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);\r\n autoSaveTimerRef.current = setTimeout(() => {\r\n saveRoutine();\r\n }, delay);\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);\r\n };\r\n }, []);\r\n\r\n const saveRoutine = async (retryCount = 0): Promise<void> => {\r\n if (isSavingRef.current) {\r\n return new Promise((resolve) => {\r\n const check = () => {\r\n if (!isSavingRef.current) resolve();\r\n else setTimeout(check, 100);\r\n };\r\n check();\r\n });\r\n }\r\n isSavingRef.current = true;\r\n autoSaveTimerRef.current = null;\r\n\r\n const dirtyIds = Array.from(dirtyQuestionsRef.current);\r\n const orderDirty = isOrderDirtyRef.current;\r\n\r\n if (dirtyIds.length === 0 && !orderDirty) {\r\n setIsDirtyForUI(false);\r\n isSavingRef.current = false;\r\n return;\r\n }\r\n\r\n const questionPromises = [];\r\n let hasSkippedQuestions = false;\r\n\r\n for (const id of dirtyIds) {\r\n const q = questionsRef.current[id];\r\n if (!q) {\r\n dirtyQuestionsRef.current.delete(id);\r\n continue;\r\n }\r\n\r\n const stateBeingSaved = JSON.stringify(q);\r\n const isNew = newQuestionsRef.current.has(id);\r\n const isChoice = ['MULTIPLE_CHOICE', 'CHECKBOX', 'DROPDOWN'].includes(q.kind);\r\n const isPayment = ['PAYMENT', 'PAYMENT_CHECKBOX'].includes(q.kind);\r\n const effectiveScope = scope || q.scope || (q.individual === false ? 'TEAM' : 'INDIVIDUAL');\r\n\r\n const path = `/data/${userUid}/events/discounts/${eventId}.csv`;\r\n const individualPath = `/data/${userUid}/events/discounts/${eventId}_individual.csv`;\r\n const discountPath = userUid ? path : q.discount_file_path;\r\n const individualDiscountPath = userUid ? individualPath : discountPath;\r\n\r\n if (q.kind === 'DISCOUNT' && q.file && userUid && storageService) {\r\n try {\r\n const targetUploadPath = getDiscountFilePath(eventId, userUid, participationType, scope, q);\r\n await storageService.uploadFile(targetUploadPath, q.file);\r\n } catch (err) {\r\n console.error(\"Failed to upload discount file\", err);\r\n showAlert(\"Failed to upload discount file\", \"error\");\r\n continue;\r\n }\r\n }\r\n\r\n const basePayload: any = {\r\n event_id: eventId,\r\n question_type: q.kind,\r\n placeholder: q.placeholder || \"\",\r\n validation: q.required,\r\n individual: q.individual !== false,\r\n scope: effectiveScope,\r\n conditions: {},\r\n options: isChoice ? (q.options?.map(o => ({ value: o.value || o.label })) || []) : [],\r\n Categories: isPayment ? (q.Categories?.map(c => ({ name: c.name, price: c.price })) || []) : [],\r\n additional_fee: isPayment,\r\n applies_on: q.kind === 'DISCOUNT' ? (q.applies_on || []) : [],\r\n discount_file_path: (effectiveScope === 'TEAM' || effectiveScope === 'BOTH' || effectiveScope === 'INDIVIDUAL') ? (discountPath || \"\") : \"\",\r\n individual_discount_file_path: (effectiveScope === 'INDIVIDUAL' || effectiveScope === 'BOTH') ? (individualDiscountPath || \"\") : \"\",\r\n };\r\n\r\n if (isNew) {\r\n if (addQuestion) {\r\n const apiPayload = { ...basePayload, question: q.label };\r\n\r\n if (!apiPayload.question ||\r\n (isChoice && apiPayload.options.length === 0) ||\r\n (isPayment && apiPayload.Categories.length === 0) ||\r\n (q.kind === 'DISCOUNT' && apiPayload.applies_on.length === 0) ||\r\n (q.kind === 'DISCOUNT' && effectiveScope === \"TEAM\" && !apiPayload.discount_file_path) ||\r\n (q.kind === 'DISCOUNT' && effectiveScope === \"INDIVIDUAL\" && !apiPayload.individual_discount_file_path)\r\n ) {\r\n hasSkippedQuestions = true;\r\n continue;\r\n }\r\n\r\n questionPromises.push(\r\n addQuestion(apiPayload).then(() => {\r\n const currentState = JSON.stringify(questionsRef.current[id]);\r\n newQuestionsRef.current.delete(id);\r\n setQuestions(prev => {\r\n if (!prev[id]) return prev;\r\n return { ...prev, [id]: { ...prev[id], originalLabel: q.label } };\r\n });\r\n if (currentState === stateBeingSaved) dirtyQuestionsRef.current.delete(id);\r\n if (onPolluted) onPolluted();\r\n })\r\n );\r\n }\r\n } else {\r\n if (editQuestion) {\r\n const apiPayload = {\r\n ...basePayload,\r\n question: q.originalLabel || q.label,\r\n new_question: q.label\r\n };\r\n\r\n if (!apiPayload.new_question ||\r\n (isChoice && apiPayload.options.length === 0) ||\r\n (isPayment && apiPayload.Categories.length === 0) ||\r\n (q.kind === 'DISCOUNT' && apiPayload.applies_on.length === 0)\r\n ) {\r\n hasSkippedQuestions = true;\r\n continue;\r\n }\r\n\r\n questionPromises.push(\r\n editQuestion(apiPayload).then(() => {\r\n const currentState = JSON.stringify(questionsRef.current[id]);\r\n setQuestions(prev => {\r\n if (!prev[id]) return prev;\r\n return { ...prev, [id]: { ...prev[id], originalLabel: q.label } };\r\n });\r\n if (currentState === stateBeingSaved) dirtyQuestionsRef.current.delete(id);\r\n if (onPolluted) onPolluted();\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n try {\r\n if (questionPromises.length > 0) await Promise.all(questionPromises);\r\n if (orderDirty && !hasSkippedQuestions && updateOrder) {\r\n const orderSnapshot = [...questionOrderRef.current];\r\n const orderPayload = {\r\n event_id: eventId,\r\n questions: orderSnapshot.map((id, index) => {\r\n const q = questionsRef.current[id];\r\n return q ? { question: q.label, order: 900 + index } : null;\r\n }).filter(Boolean)\r\n };\r\n\r\n await updateOrder(orderPayload).then(() => {\r\n const currentOrderJSON = JSON.stringify(questionOrderRef.current);\r\n const sentOrderJSON = JSON.stringify(orderSnapshot);\r\n if (currentOrderJSON === sentOrderJSON) isOrderDirtyRef.current = false;\r\n if (onPolluted) onPolluted();\r\n });\r\n }\r\n\r\n if (dirtyQuestionsRef.current.size === 0 && !isOrderDirtyRef.current) {\r\n setIsDirtyForUI(false);\r\n }\r\n } catch (e) {\r\n console.error(\"Auto-save failed\", e);\r\n if (!autoSaveTimerRef.current && retryCount < 3) {\r\n autoSaveTimerRef.current = setTimeout(() => {\r\n saveRoutine(retryCount + 1);\r\n }, 30000);\r\n setIsDirtyForUI(true);\r\n } else {\r\n showAlert(\"Failed to save changes. Please try again.\", \"error\");\r\n }\r\n } finally {\r\n isSavingRef.current = false;\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n save: async () => {\r\n if (editingQuestionId) {\r\n handleCancel(editingQuestionId);\r\n setShowValidationErrors(false);\r\n }\r\n if (!isSameQuestionTitleAllowed) {\r\n const titles = new Set();\r\n const duplicates = new Set();\r\n Object.values(questions).forEach(q => {\r\n const normalized = q.label?.trim().toLowerCase();\r\n if (!normalized) return;\r\n if (titles.has(normalized)) duplicates.add(q.label);\r\n titles.add(normalized);\r\n });\r\n if (duplicates.size > 0) {\r\n const dupList = Array.from(duplicates).join(\", \");\r\n showAlert(`Duplicate titles: ${dupList}`, \"error\");\r\n throw new Error(`Duplicate titles: ${dupList}`);\r\n }\r\n }\r\n return await saveRoutine();\r\n },\r\n validateNavigation: () => {\r\n if (editingQuestionId) {\r\n handleCancel(editingQuestionId);\r\n setShowValidationErrors(false);\r\n }\r\n return true;\r\n },\r\n isSaving: () => isSavingRef.current || isBusy,\r\n isDirty: () => isDirtyForUI\r\n }));\r\n\r\n useEffect(() => {\r\n if (!isDirtyForUI) return;\r\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\r\n e.preventDefault();\r\n e.returnValue = '';\r\n saveRoutine();\r\n };\r\n window.addEventListener('beforeunload', handleBeforeUnload);\r\n return () => window.removeEventListener('beforeunload', handleBeforeUnload);\r\n }, [isDirtyForUI]);\r\n\r\n const updateQuestionLocal = (id: string, updates: Partial<QuestionDraft>) => {\r\n setQuestions(prev => {\r\n const current = prev[id];\r\n if (!current) return prev;\r\n const updated = { ...prev, [id]: { ...current, ...updates } };\r\n questionsRef.current = updated;\r\n\r\n if (updates.options || updates.Categories || updates.label !== undefined || updates.file !== undefined || updates.applies_on !== undefined) {\r\n setShowValidationErrors(false);\r\n }\r\n\r\n if (onQuestionsChange) {\r\n clearTimeout((window as any)._notifyTimer);\r\n (window as any)._notifyTimer = setTimeout(() => {\r\n notifyParentOfChange(updated, questionOrderRef.current);\r\n }, 500);\r\n }\r\n return updated;\r\n });\r\n dirtyQuestionsRef.current.add(id);\r\n markDirty(\"update\");\r\n };\r\n\r\n const addQuestionLocal = (question: QuestionDraft, indexToInsert?: number) => {\r\n const updatedQuestions = { ...questionsRef.current, [question.id]: question };\r\n setQuestions(updatedQuestions);\r\n questionsRef.current = updatedQuestions;\r\n\r\n setQuestionOrder(prev => {\r\n const newOrder = [...prev];\r\n if (typeof indexToInsert === 'number') newOrder.splice(indexToInsert, 0, question.id);\r\n else newOrder.push(question.id);\r\n questionOrderRef.current = newOrder;\r\n notifyParentOfChange(questionsRef.current, newOrder);\r\n return newOrder;\r\n });\r\n\r\n newQuestionsRef.current.add(question.id);\r\n dirtyQuestionsRef.current.add(question.id);\r\n isOrderDirtyRef.current = true;\r\n markDirty(\"add\");\r\n };\r\n\r\n const deleteQuestionLocal = async (id: string) => {\r\n const q = questions[id];\r\n if (!q) return;\r\n if (['TEAM_SIZE', 'NAME_ON_TICKET'].includes(q.kind)) {\r\n showAlert(\"System questions cannot be deleted\", \"error\");\r\n return;\r\n }\r\n\r\n const nextQuestions = { ...questionsRef.current };\r\n delete nextQuestions[id];\r\n setQuestions(nextQuestions);\r\n questionsRef.current = nextQuestions;\r\n\r\n const nextOrder = questionOrderRef.current.filter(qid => qid !== id);\r\n setQuestionOrder(nextOrder);\r\n questionOrderRef.current = nextOrder;\r\n notifyParentOfChange(nextQuestions, nextOrder);\r\n\r\n if (editingQuestionId === id) setEditingQuestionId(null);\r\n if (newQuestionsRef.current.has(id)) {\r\n dirtyQuestionsRef.current.delete(id);\r\n newQuestionsRef.current.delete(id);\r\n return;\r\n }\r\n\r\n if (deleteQuestion) {\r\n try {\r\n await deleteQuestion({ event_id: eventId, question: q.originalLabel || q.label });\r\n dirtyQuestionsRef.current.delete(id);\r\n newQuestionsRef.current.delete(id);\r\n if (onPolluted) onPolluted();\r\n } catch (e) {\r\n console.error(\"Delete failed\", e);\r\n }\r\n }\r\n };\r\n\r\n const startEditing = (id: string, questionOverride?: QuestionDraft) => {\r\n const q = questionOverride || questions[id];\r\n if (q) {\r\n snapshotRef.current = JSON.parse(JSON.stringify(q));\r\n isCurrentSessionNewRef.current = false;\r\n }\r\n setEditingQuestionId(id);\r\n };\r\n\r\n const handleCancel = (id: string) => {\r\n if (isCurrentSessionNewRef.current) {\r\n const nextQuestions = { ...questionsRef.current };\r\n delete nextQuestions[id];\r\n setQuestions(nextQuestions);\r\n questionsRef.current = nextQuestions;\r\n\r\n const nextOrder = questionOrderRef.current.filter(qid => qid !== id);\r\n setQuestionOrder(nextOrder);\r\n questionOrderRef.current = nextOrder;\r\n\r\n dirtyQuestionsRef.current.delete(id);\r\n newQuestionsRef.current.delete(id);\r\n setEditingQuestionId(null);\r\n setShowValidationErrors(false);\r\n return;\r\n }\r\n\r\n if (snapshotRef.current) {\r\n setQuestions(prev => {\r\n const updated = { ...prev, [id]: { ...snapshotRef.current!, file: undefined } };\r\n questionsRef.current = updated;\r\n return updated;\r\n });\r\n }\r\n dirtyQuestionsRef.current.delete(id);\r\n if (dirtyQuestionsRef.current.size === 0 && !isOrderDirtyRef.current) setIsDirtyForUI(false);\r\n setEditingQuestionId(null);\r\n setShowValidationErrors(false);\r\n };\r\n\r\n const triggerSave = () => {\r\n snapshotRef.current = null;\r\n isCurrentSessionNewRef.current = false;\r\n if (autoSaveTimerRef.current) clearTimeout(autoSaveTimerRef.current);\r\n autoSaveTimerRef.current = setTimeout(() => saveRoutine(), 100);\r\n };\r\n\r\n const handleSetActiveQuestion = (newId: string | null) => {\r\n if (newId === null) {\r\n if (editingQuestionId) handleCancel(editingQuestionId);\r\n return;\r\n }\r\n if (editingQuestionId && editingQuestionId !== newId) {\r\n const current = questions[editingQuestionId];\r\n if (!current) {\r\n startEditing(newId);\r\n setShowValidationErrors(false);\r\n return;\r\n }\r\n if (validateQuestionError(current, questions, participationType, isSameQuestionTitleAllowed) !== null) {\r\n setShowValidationErrors(true);\r\n showAlert(\"Please complete the current question to proceed.\", \"error\");\r\n return;\r\n } else {\r\n triggerSave();\r\n setShowValidationErrors(false);\r\n }\r\n }\r\n startEditing(newId);\r\n setShowValidationErrors(false);\r\n };\r\n\r\n const sensors = useSensors(\r\n useSensor(PointerSensor, { activationConstraint: { distance: 3 } }),\r\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\r\n );\r\n\r\n const handleDragStart = (event: DragStartEvent) => {\r\n setActiveId(event.active.id as string);\r\n if (editingQuestionId) setEditingQuestionId(null);\r\n };\r\n\r\n const handleDragEnd = (event: DragEndEvent) => {\r\n const { active, over } = event;\r\n setActiveId(null);\r\n if (!over || active.id === over.id) return;\r\n\r\n const oldIndex = questionOrder.indexOf(active.id as string);\r\n const newIndex = questionOrder.indexOf(over.id as string);\r\n const activeQ = questions[active.id];\r\n const overQ = questions[over.id];\r\n\r\n if (isTeamEvent && activeQ && overQ && activeQ.individual !== overQ.individual) return;\r\n if (['TEAM_SIZE', 'NAME_ON_TICKET'].includes(activeQ?.kind)) return;\r\n\r\n if (oldIndex !== -1 && newIndex !== -1) {\r\n const newOrder = arrayMove(questionOrder, oldIndex, newIndex);\r\n setQuestionOrder(newOrder);\r\n questionOrderRef.current = newOrder;\r\n isOrderDirtyRef.current = true;\r\n markDirty(\"reorder\");\r\n notifyParentOfChange(questions, newOrder);\r\n }\r\n };\r\n\r\n const handleAddClick = (isIndividual: boolean = true) => {\r\n if (editingQuestionId) {\r\n const q = questions[editingQuestionId];\r\n if (q && validateQuestionError(q, questions, participationType, isSameQuestionTitleAllowed) !== null) {\r\n setShowValidationErrors(true);\r\n showAlert(\"Please complete the current question to proceed.\", \"error\");\r\n return;\r\n }\r\n triggerSave();\r\n setShowValidationErrors(false);\r\n }\r\n\r\n const newId = crypto.randomUUID();\r\n let defaultScope: 'INDIVIDUAL' | 'TEAM' = scope || (isTeamEvent ? 'TEAM' : 'INDIVIDUAL');\r\n\r\n const newQuestion: QuestionDraft = {\r\n id: newId,\r\n kind: 'INPUT_STR',\r\n label: '',\r\n required: false,\r\n options: [],\r\n individual: isIndividual,\r\n scope: defaultScope,\r\n };\r\n\r\n addQuestionLocal(newQuestion);\r\n isCurrentSessionNewRef.current = true;\r\n snapshotRef.current = JSON.parse(JSON.stringify(newQuestion));\r\n setEditingQuestionId(newId);\r\n };\r\n\r\n const handleDuplicate = (id: string) => {\r\n const original = questions[id];\r\n if (!original) return;\r\n if (['TEAM_SIZE', 'NAME_ON_TICKET'].includes(original.kind)) {\r\n showAlert(\"System questions cannot be duplicated\", \"error\");\r\n return;\r\n }\r\n\r\n const newId = crypto.randomUUID();\r\n const baseName = (original.label || '').replace(/\\s+copy\\s+\\(\\d+\\)$/i, '').trim();\r\n let nextNumber = 1;\r\n const labels = Object.values(questions).map(q => q.label?.toLowerCase() || \"\");\r\n while (labels.includes(`${baseName} copy (${nextNumber})`.toLowerCase())) nextNumber++;\r\n\r\n const newQuestion: QuestionDraft = {\r\n ...original,\r\n id: newId,\r\n label: `${baseName} copy (${nextNumber})`,\r\n options: original.options?.map(o => ({ ...o, id: crypto.randomUUID() })) || [],\r\n Categories: original.Categories?.map(c => ({ ...c, id: crypto.randomUUID() })) || [],\r\n };\r\n\r\n const originalIndex = questionOrder.indexOf(id);\r\n const newOrder = [...questionOrder];\r\n newOrder.splice(originalIndex + 1, 0, newId);\r\n\r\n setQuestions(prev => {\r\n const updated = { ...prev, [newId]: newQuestion };\r\n questionsRef.current = updated;\r\n return updated;\r\n });\r\n setQuestionOrder(newOrder);\r\n questionOrderRef.current = newOrder;\r\n\r\n newQuestionsRef.current.add(newId);\r\n dirtyQuestionsRef.current.add(newId);\r\n isOrderDirtyRef.current = true;\r\n markDirty(\"duplicate\");\r\n isCurrentSessionNewRef.current = true;\r\n setEditingQuestionId(newId);\r\n };\r\n\r\n const handleManualSave = (id: string) => {\r\n const q = questions[id];\r\n if (!q) return;\r\n if (validateQuestionError(q, questions, participationType, isSameQuestionTitleAllowed) !== null) {\r\n setShowValidationErrors(true);\r\n return;\r\n }\r\n triggerSave();\r\n setShowValidationErrors(false);\r\n setEditingQuestionId(null);\r\n };\r\n\r\n const activeQuestionProps = (id: string) => {\r\n const q = questions[id];\r\n const err = validateQuestionError(q, questions, participationType, isSameQuestionTitleAllowed);\r\n return {\r\n isDirty: dirtyQuestionsRef.current.has(id),\r\n isSaving: isSavingRef.current,\r\n isNew: newQuestionsRef.current.has(id),\r\n isValid: err === null,\r\n errorMessage: showValidationErrors ? (err || undefined) : undefined\r\n };\r\n };\r\n\r\n const handleSectionToggle = (section: 'TEAM' | 'TEAM_MEMBER' | 'INDIVIDUAL') => {\r\n let currentIsOpen = false;\r\n let setOpen: (open: boolean) => void = () => { };\r\n let qOrder: string[] = [];\r\n\r\n if (section === 'TEAM') { currentIsOpen = isTeamOpen; setOpen = setIsTeamOpen; qOrder = teamQuestionsOrder; }\r\n else if (section === 'TEAM_MEMBER') { currentIsOpen = isTeamMemberOpen; setOpen = setIsTeamMemberOpen; qOrder = teamMemberQuestionsOrder; }\r\n else { currentIsOpen = isIndividualOpen; setOpen = setIsIndividualOpen; qOrder = individualQuestionsOrder; }\r\n\r\n if (currentIsOpen && editingQuestionId && qOrder.includes(editingQuestionId)) {\r\n handleSetActiveQuestion(null);\r\n }\r\n setOpen(!currentIsOpen);\r\n };\r\n\r\n if (!isLoaded && initialFields) return <div className=\"p-8 text-center text-gray-500\">Loading Form Builder...</div>;\r\n\r\n const isAddingNew = editingQuestionId ? newQuestionsRef.current.has(editingQuestionId) : false;\r\n\r\n return (\r\n <div className=\"flex flex-col gap-6 relative\">\r\n <Alert\r\n isVisible={alertState.isVisible}\r\n message={alertState.message}\r\n type={alertState.type}\r\n onClose={() => setAlertState(prev => ({ ...prev, isVisible: false }))}\r\n />\r\n\r\n <DndContext\r\n sensors={sensors}\r\n collisionDetection={closestCenter}\r\n onDragStart={handleDragStart}\r\n onDragEnd={handleDragEnd}\r\n >\r\n {(scope === 'TEAM' || (isTeamEvent && !scope)) && (\r\n <div className=\"space-y-8 overflow-y-hidden\">\r\n <div className=\"border border-gray-200 rounded-xl bg-white\">\r\n <div className=\"p-4 flex items-center space-x-2 cursor-pointer transition-colors\"\r\n onClick={() => handleSectionToggle('TEAM')}\r\n >\r\n <ChevronDown className={cn(\"w-5 h-5 text-gray-900 transition-transform duration-300\",\r\n isTeamOpen ? \"rotate-180\" : \"rotate-0\"\r\n )} />\r\n <div className=\"flex items-center gap-2\">\r\n <h3 className=\"text-xl font-semibold text-gray-800 flex items-center gap-2\">\r\n Team questions\r\n </h3>\r\n <Tooltip\r\n placement=\"bottom\"\r\n content=\"Questions that apply to the entire team and only need to be specified once\"\r\n >\r\n <InformationCircleIcon className=\"h-5 w-5 text-gray-400\" />\r\n </Tooltip>\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence initial={false}>\r\n {isTeamOpen && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"p-6 pt-0\">\r\n {teamQuestionsOrder.length > 0 ? (\r\n <>\r\n <SortableContext items={teamQuestionsOrder} strategy={verticalListSortingStrategy}>\r\n <SortableQuestionList\r\n questions={questions}\r\n questionOrder={teamQuestionsOrder}\r\n formId={formId}\r\n eventId={eventId}\r\n userUid={userUid}\r\n storageService={storageService}\r\n isLocked={isLocked}\r\n activeQuestionId={editingQuestionId}\r\n onSetActiveQuestion={handleSetActiveQuestion}\r\n onDelete={deleteQuestionLocal}\r\n onDuplicate={handleDuplicate}\r\n onSave={handleManualSave}\r\n onUpdate={updateQuestionLocal}\r\n onCancel={handleCancel}\r\n activeQuestionProps={editingQuestionId ? activeQuestionProps(editingQuestionId) : undefined}\r\n disabled={isAddingNew}\r\n scope={scope}\r\n participationType={participationType}\r\n disableDiscountOption={disableDiscountOption}\r\n showValidationErrors={showValidationErrors}\r\n />\r\n </SortableContext>\r\n {!activeId && !isLocked && (\r\n <div className=\"flex justify-center mt-6\">\r\n <Button\r\n type=\"button\"\r\n variant='outline'\r\n onClick={(e) => { e.stopPropagation(); if (!isAddingNew) handleAddClick(false); }}\r\n size='lg'\r\n className={cn(\"gap-x-2 px-4 py-2.5 text-sm\", isAddingNew && \"opacity-50 cursor-not-allowed\")}\r\n disabled={isAddingNew}\r\n >\r\n <Plus className=\"font-bold w-5 h-5\" />\r\n Add New Question\r\n </Button>\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <EmptyState onAdd={() => handleAddClick(false)} isAddingNew={isAddingNew} />\r\n )}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n\r\n <div className=\"border border-gray-200 rounded-xl bg-white\">\r\n <div className=\"p-4 flex items-center space-x-2 cursor-pointer transition-colors\"\r\n onClick={() => handleSectionToggle('TEAM_MEMBER')}\r\n >\r\n <ChevronDown className={cn(\"w-5 h-5 text-gray-900 transition-transform duration-300\",\r\n isTeamMemberOpen ? \"rotate-180\" : \"rotate-0\"\r\n )} />\r\n <div className=\"flex items-center gap-2\">\r\n <h3 className=\"text-xl font-semibold text-gray-800 flex items-center gap-2\">\r\n Team Member Questions\r\n </h3>\r\n <Tooltip\r\n placement=\"bottom\"\r\n content=\"Questions that are specific to each individual team member and need to be asked separately for each person.\"\r\n >\r\n <InformationCircleIcon className=\"h-5 w-5 text-gray-400\" />\r\n </Tooltip>\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence initial={false}>\r\n {isTeamMemberOpen && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"p-6 pt-0\">\r\n {teamMemberQuestionsOrder.length > 0 ? (\r\n <>\r\n <SortableContext items={teamMemberQuestionsOrder} strategy={verticalListSortingStrategy}>\r\n <SortableQuestionList\r\n questions={questions}\r\n questionOrder={teamMemberQuestionsOrder}\r\n formId={formId}\r\n eventId={eventId}\r\n userUid={userUid}\r\n storageService={storageService}\r\n isLocked={isLocked}\r\n activeQuestionId={editingQuestionId}\r\n onSetActiveQuestion={handleSetActiveQuestion}\r\n onDelete={deleteQuestionLocal}\r\n onDuplicate={handleDuplicate}\r\n onSave={handleManualSave}\r\n onUpdate={updateQuestionLocal}\r\n onCancel={handleCancel}\r\n activeQuestionProps={editingQuestionId ? activeQuestionProps(editingQuestionId) : undefined}\r\n disabled={isAddingNew}\r\n scope={scope}\r\n participationType={participationType}\r\n disableDiscountOption={disableDiscountOption}\r\n showValidationErrors={showValidationErrors}\r\n />\r\n </SortableContext>\r\n {!activeId && !isLocked && (\r\n <div className=\"flex justify-center mt-6\">\r\n <Button\r\n type=\"button\"\r\n variant='outline'\r\n onClick={(e) => { e.stopPropagation(); if (!isAddingNew) handleAddClick(true); }}\r\n size='lg'\r\n className={cn(\"gap-x-2 px-4 py-2.5 text-sm\", isAddingNew && \"opacity-50 cursor-not-allowed\")}\r\n disabled={isAddingNew}\r\n >\r\n <Plus className=\"font-bold w-5 h-5\" />\r\n Add New Question\r\n </Button>\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <EmptyState onAdd={() => handleAddClick(true)} isAddingNew={isAddingNew} />\r\n )}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {(scope === 'INDIVIDUAL' || (!isTeamEvent && !scope)) && (\r\n <div className=\"border border-gray-200 rounded-xl bg-white overflow-y-hidden\">\r\n <div className=\"p-4 flex items-center space-x-2 cursor-pointer transition-colors\"\r\n onClick={() => handleSectionToggle('INDIVIDUAL')}\r\n >\r\n <ChevronDown className={cn(\"w-5 h-5 text-gray-900 transition-transform duration-300\",\r\n isIndividualOpen ? \"rotate-180\" : \"rotate-0\"\r\n )} />\r\n <h3 className=\"text-xl font-semibold text-gray-800 flex items-center gap-2\">\r\n Individual questions\r\n </h3>\r\n </div>\r\n\r\n <AnimatePresence initial={false}>\r\n {isIndividualOpen && (\r\n <motion.div\r\n initial={{ height: 0, opacity: 0 }}\r\n animate={{ height: \"auto\", opacity: 1 }}\r\n exit={{ height: 0, opacity: 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <div className=\"p-6 pt-0\">\r\n {individualQuestionsOrder.length > 0 ? (\r\n <>\r\n <SortableContext items={individualQuestionsOrder} strategy={verticalListSortingStrategy}>\r\n <SortableQuestionList\r\n questions={questions}\r\n questionOrder={individualQuestionsOrder}\r\n formId={formId}\r\n eventId={eventId}\r\n userUid={userUid}\r\n storageService={storageService}\r\n isLocked={isLocked}\r\n activeQuestionId={editingQuestionId}\r\n onSetActiveQuestion={handleSetActiveQuestion}\r\n onDelete={deleteQuestionLocal}\r\n onDuplicate={handleDuplicate}\r\n onSave={handleManualSave}\r\n onUpdate={updateQuestionLocal}\r\n onCancel={handleCancel}\r\n activeQuestionProps={editingQuestionId ? activeQuestionProps(editingQuestionId) : undefined}\r\n disabled={isAddingNew}\r\n scope={scope}\r\n participationType={participationType}\r\n disableDiscountOption={disableDiscountOption}\r\n showValidationErrors={showValidationErrors}\r\n />\r\n </SortableContext>\r\n {!activeId && !isLocked && (\r\n <div className=\"flex justify-center mt-6\">\r\n <Button\r\n type=\"button\"\r\n onClick={() => !isAddingNew && handleAddClick(true)}\r\n variant='outline'\r\n size='lg'\r\n className={cn(\"gap-x-2 px-4 py-2.5 text-sm\", isAddingNew && \"opacity-50 cursor-not-allowed\")}\r\n disabled={isAddingNew}\r\n >\r\n <Plus className=\"font-bold w-5 h-5\" />\r\n Add New Question\r\n </Button>\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <EmptyState onAdd={() => handleAddClick(true)} isAddingNew={isAddingNew} />\r\n )}\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n </div>\r\n )}\r\n\r\n <DragOverlay>\r\n {activeId && questions[activeId] ? (\r\n <div className=\"opacity-80 rotate-2 cursor-grabbing\">\r\n <QuestionCard\r\n question={questions[activeId]}\r\n formId={formId}\r\n eventId={eventId}\r\n isLocked={isLocked}\r\n isOpen={false}\r\n onToggle={() => { }}\r\n onDelete={() => { }}\r\n onUpdate={() => { }}\r\n />\r\n </div>\r\n ) : null}\r\n </DragOverlay>\r\n </DndContext>\r\n </div>\r\n );\r\n});\r\n\r\nFormBuilder.displayName = \"FormBuilder\";\r\n\r\nexport default memo(FormBuilder);\r\n"],"names":["_a","InformationCircleIcon"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useSensors, useSensor, DndContext, closestCenter
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useSensors, useSensor, PointerSensor, DndContext, closestCenter } from "../../node_modules/@dnd-kit/core/dist/core.esm.js";
|
|
3
3
|
import { SortableContext, verticalListSortingStrategy, arrayMove, useSortable } from "../../node_modules/@dnd-kit/sortable/dist/sortable.esm.js";
|
|
4
4
|
import { CSS } from "../../node_modules/@dnd-kit/utilities/dist/utilities.esm.js";
|
|
5
5
|
import { cn } from "../../utils/cn.js";
|
|
@@ -45,8 +45,8 @@ const OptionList = ({ question, onUpdate, showError }) => {
|
|
|
45
45
|
onUpdate(question.id, { options: newOptions });
|
|
46
46
|
};
|
|
47
47
|
const isLastOptionEmpty = options.length > 0 && !options[options.length - 1].label.trim();
|
|
48
|
-
return /* @__PURE__ */
|
|
49
|
-
/* @__PURE__ */
|
|
48
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
49
|
+
/* @__PURE__ */ jsx(DndContext, { sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx(SortableContext, { items: options.map((o) => o.id), strategy: verticalListSortingStrategy, children: options.map((option, index) => /* @__PURE__ */ jsx(
|
|
50
50
|
SortableOptionItem,
|
|
51
51
|
{
|
|
52
52
|
option,
|
|
@@ -59,14 +59,14 @@ const OptionList = ({ question, onUpdate, showError }) => {
|
|
|
59
59
|
},
|
|
60
60
|
option.id
|
|
61
61
|
)) }) }),
|
|
62
|
-
/* @__PURE__ */
|
|
62
|
+
/* @__PURE__ */ jsxs(
|
|
63
63
|
"button",
|
|
64
64
|
{
|
|
65
65
|
onClick: handleAddOption,
|
|
66
66
|
disabled: isLastOptionEmpty,
|
|
67
|
-
className: `
|
|
67
|
+
className: `flex items-center gap-2 text-sm font-medium mt-1 pl-1 ${isLastOptionEmpty ? "text-gray-400 cursor-not-allowed" : "text-primaryx-600 hover:text-primaryx-700"}`,
|
|
68
68
|
children: [
|
|
69
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faPlus, className: "text-xs" }),
|
|
70
70
|
"Add Option"
|
|
71
71
|
]
|
|
72
72
|
}
|
|
@@ -80,17 +80,17 @@ function SortableOptionItem({ option, index, kind, onUpdateLabel, onDelete, isDe
|
|
|
80
80
|
transition,
|
|
81
81
|
opacity: isDragging ? 0.5 : 1
|
|
82
82
|
};
|
|
83
|
-
return /* @__PURE__ */
|
|
84
|
-
/* @__PURE__ */
|
|
85
|
-
/* @__PURE__ */
|
|
86
|
-
kind === "MULTIPLE_CHOICE" && /* @__PURE__ */
|
|
87
|
-
kind === "CHECKBOX" && /* @__PURE__ */
|
|
88
|
-
kind === "DROPDOWN" && /* @__PURE__ */
|
|
83
|
+
return /* @__PURE__ */ jsxs("div", { ref: setNodeRef, style, className: "flex items-center gap-2 group", children: [
|
|
84
|
+
/* @__PURE__ */ jsx("div", { ...attributes, ...listeners, className: "sm:block hidden text-gray-300 cursor-move hover:text-gray-500 px-1 opacity-0 group-hover:opacity-100 transition-opacity", children: /* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faGripVertical }) }),
|
|
85
|
+
/* @__PURE__ */ jsxs("div", { className: "text-gray-400", children: [
|
|
86
|
+
kind === "MULTIPLE_CHOICE" && /* @__PURE__ */ jsx("div", { className: "w-4 h-4 rounded-full border border-gray-300" }),
|
|
87
|
+
kind === "CHECKBOX" && /* @__PURE__ */ jsx("div", { className: "w-4 h-4 rounded border border-gray-300" }),
|
|
88
|
+
kind === "DROPDOWN" && /* @__PURE__ */ jsxs("span", { className: "text-xs font-mono", children: [
|
|
89
89
|
index + 1,
|
|
90
90
|
"."
|
|
91
91
|
] })
|
|
92
92
|
] }),
|
|
93
|
-
/* @__PURE__ */
|
|
93
|
+
/* @__PURE__ */ jsx(
|
|
94
94
|
"input",
|
|
95
95
|
{
|
|
96
96
|
type: "text",
|
|
@@ -98,18 +98,18 @@ function SortableOptionItem({ option, index, kind, onUpdateLabel, onDelete, isDe
|
|
|
98
98
|
placeholder: `Option ${index + 1}`,
|
|
99
99
|
onChange: (e) => onUpdateLabel(option.id, e.target.value),
|
|
100
100
|
className: cn(
|
|
101
|
-
"
|
|
102
|
-
isError ? "
|
|
101
|
+
"text-sm flex-1 bg-transparent rounded-md border-b focus:border-primaryx-500 outline-none py-1 hover:border-primaryx-300 transition-colors",
|
|
102
|
+
isError ? "border-red-500 text-red-600 placeholder:text-red-300" : "border-gray-200"
|
|
103
103
|
)
|
|
104
104
|
}
|
|
105
105
|
),
|
|
106
|
-
/* @__PURE__ */
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
107
|
"button",
|
|
108
108
|
{
|
|
109
109
|
onClick: () => onDelete(option.id),
|
|
110
110
|
disabled: !isDeletable,
|
|
111
|
-
className: `
|
|
112
|
-
children: /* @__PURE__ */
|
|
111
|
+
className: `px-2 transition-opacity ${isDeletable ? "text-gray-300 hover:text-red-500 opacity-0 group-hover:opacity-100" : "text-gray-200 cursor-not-allowed opacity-0"}`,
|
|
112
|
+
children: /* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faTimes })
|
|
113
113
|
}
|
|
114
114
|
)
|
|
115
115
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionList.js","sources":["../../../src/components/FormBuilder/OptionList.tsx"],"sourcesContent":["import React from 'react';\nimport { DndContext, closestCenter, DragEndEvent, PointerSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport { SortableContext, verticalListSortingStrategy, arrayMove, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { cn } from '../../utils/cn';\nimport { QuestionDraft, OptionDraft } from './types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faGripVertical, faTimes, faPlus } from '@fortawesome/free-solid-svg-icons';\n\ninterface OptionListProps {\n question: QuestionDraft;\n onUpdate: (questionId: string, updates: Partial<QuestionDraft>) => void;\n showError?: boolean;\n}\n\nexport const OptionList: React.FC<OptionListProps> = ({ question, onUpdate, showError }) => {\n const options = question.options || [];\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 3 } })\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (active.id !== over?.id && options) {\n const oldIndex = options.findIndex(o => o.id === active.id);\n const newIndex = options.findIndex(o => o.id === over?.id);\n if (oldIndex !== -1 && newIndex !== -1) {\n const newOptions = arrayMove(options, oldIndex, newIndex);\n onUpdate(question.id, { options: newOptions });\n }\n }\n };\n\n const handleAddOption = () => {\n if (options.length > 0) {\n const lastOption = options[options.length - 1];\n if (!lastOption.label.trim()) {\n return;\n }\n }\n\n const newOption: OptionDraft = {\n id: crypto.randomUUID(),\n label: ``\n };\n const newOptions = [...options, newOption];\n onUpdate(question.id, { options: newOptions });\n };\n\n const updateOptionLabel = (optionId: string, label: string) => {\n const newOptions = options.map(o => o.id === optionId ? { ...o, label } : o);\n onUpdate(question.id, { options: newOptions });\n };\n\n const deleteOption = (optionId: string) => {\n if (options.length <= 1) return;\n const newOptions = options.filter(o => o.id !== optionId);\n onUpdate(question.id, { options: newOptions });\n };\n\n const isLastOptionEmpty = options.length > 0 && !options[options.length - 1].label.trim();\n\n return (\n <div className=\"
|
|
1
|
+
{"version":3,"file":"OptionList.js","sources":["../../../src/components/FormBuilder/OptionList.tsx"],"sourcesContent":["import React from 'react';\r\nimport { DndContext, closestCenter, DragEndEvent, PointerSensor, useSensor, useSensors } from '@dnd-kit/core';\r\nimport { SortableContext, verticalListSortingStrategy, arrayMove, useSortable } from '@dnd-kit/sortable';\r\nimport { CSS } from '@dnd-kit/utilities';\r\nimport { cn } from '../../utils/cn';\r\nimport { QuestionDraft, OptionDraft } from './types';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faGripVertical, faTimes, faPlus } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface OptionListProps {\r\n question: QuestionDraft;\r\n onUpdate: (questionId: string, updates: Partial<QuestionDraft>) => void;\r\n showError?: boolean;\r\n}\r\n\r\nexport const OptionList: React.FC<OptionListProps> = ({ question, onUpdate, showError }) => {\r\n const options = question.options || [];\r\n\r\n const sensors = useSensors(\r\n useSensor(PointerSensor, { activationConstraint: { distance: 3 } })\r\n );\r\n\r\n const handleDragEnd = (event: DragEndEvent) => {\r\n const { active, over } = event;\r\n if (active.id !== over?.id && options) {\r\n const oldIndex = options.findIndex(o => o.id === active.id);\r\n const newIndex = options.findIndex(o => o.id === over?.id);\r\n if (oldIndex !== -1 && newIndex !== -1) {\r\n const newOptions = arrayMove(options, oldIndex, newIndex);\r\n onUpdate(question.id, { options: newOptions });\r\n }\r\n }\r\n };\r\n\r\n const handleAddOption = () => {\r\n if (options.length > 0) {\r\n const lastOption = options[options.length - 1];\r\n if (!lastOption.label.trim()) {\r\n return;\r\n }\r\n }\r\n\r\n const newOption: OptionDraft = {\r\n id: crypto.randomUUID(),\r\n label: ``\r\n };\r\n const newOptions = [...options, newOption];\r\n onUpdate(question.id, { options: newOptions });\r\n };\r\n\r\n const updateOptionLabel = (optionId: string, label: string) => {\r\n const newOptions = options.map(o => o.id === optionId ? { ...o, label } : o);\r\n onUpdate(question.id, { options: newOptions });\r\n };\r\n\r\n const deleteOption = (optionId: string) => {\r\n if (options.length <= 1) return;\r\n const newOptions = options.filter(o => o.id !== optionId);\r\n onUpdate(question.id, { options: newOptions });\r\n };\r\n\r\n const isLastOptionEmpty = options.length > 0 && !options[options.length - 1].label.trim();\r\n\r\n return (\r\n <div className=\"flex flex-col gap-2\">\r\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\r\n <SortableContext items={options.map(o => o.id)} strategy={verticalListSortingStrategy}>\r\n {options.map((option, index) => (\r\n <SortableOptionItem\r\n key={option.id}\r\n option={option}\r\n index={index}\r\n kind={question.kind}\r\n onUpdateLabel={updateOptionLabel}\r\n onDelete={deleteOption}\r\n isDeletable={options.length > 1}\r\n isError={showError && !option.label.trim()}\r\n />\r\n ))}\r\n </SortableContext>\r\n </DndContext>\r\n\r\n <button\r\n onClick={handleAddOption}\r\n disabled={isLastOptionEmpty}\r\n className={`flex items-center gap-2 text-sm font-medium mt-1 pl-1 ${isLastOptionEmpty ? 'text-gray-400 cursor-not-allowed' : 'text-primaryx-600 hover:text-primaryx-700'}`}\r\n >\r\n <FontAwesomeIcon icon={faPlus} className=\"text-xs\" />\r\n Add Option\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\ninterface SortableOptionItemProps {\r\n option: OptionDraft;\r\n index: number;\r\n kind: string;\r\n onUpdateLabel: (id: string, label: string) => void;\r\n onDelete: (id: string) => void;\r\n isDeletable: boolean;\r\n isError?: boolean;\r\n}\r\n\r\nfunction SortableOptionItem({ option, index, kind, onUpdateLabel, onDelete, isDeletable, isError }: SortableOptionItemProps) {\r\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: option.id });\r\n\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition,\r\n opacity: isDragging ? 0.5 : 1,\r\n };\r\n\r\n return (\r\n <div ref={setNodeRef} style={style} className=\"flex items-center gap-2 group\">\r\n {/* Drag Handle */}\r\n <div {...attributes} {...listeners} className=\"sm:block hidden text-gray-300 cursor-move hover:text-gray-500 px-1 opacity-0 group-hover:opacity-100 transition-opacity\">\r\n <FontAwesomeIcon icon={faGripVertical} />\r\n </div>\r\n\r\n {/* Visual Indicator */}\r\n <div className=\"text-gray-400\">\r\n {kind === 'MULTIPLE_CHOICE' && <div className=\"w-4 h-4 rounded-full border border-gray-300\" />}\r\n {kind === 'CHECKBOX' && <div className=\"w-4 h-4 rounded border border-gray-300\" />}\r\n {kind === 'DROPDOWN' && <span className=\"text-xs font-mono\">{index + 1}.</span>}\r\n </div>\r\n\r\n {/* Input */}\r\n <input\r\n type=\"text\"\r\n value={option.label}\r\n placeholder={`Option ${index + 1}`}\r\n onChange={(e) => onUpdateLabel(option.id, e.target.value)}\r\n className={cn(\r\n \"text-sm flex-1 bg-transparent rounded-md border-b focus:border-primaryx-500 outline-none py-1 hover:border-primaryx-300 transition-colors\",\r\n isError ? \"border-red-500 text-red-600 placeholder:text-red-300\" : \"border-gray-200\"\r\n )}\r\n />\r\n\r\n {/* Delete */}\r\n <button\r\n onClick={() => onDelete(option.id)}\r\n disabled={!isDeletable}\r\n className={`px-2 transition-opacity ${isDeletable ? 'text-gray-300 hover:text-red-500 opacity-0 group-hover:opacity-100' : 'text-gray-200 cursor-not-allowed opacity-0'}`}\r\n >\r\n <FontAwesomeIcon icon={faTimes} />\r\n </button>\r\n </div>\r\n );\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../../utils/cn.js";
|
|
3
3
|
import { memo } from "react";
|
|
4
4
|
const PaymentCategoryCard = memo(function PaymentCategoryCard2({
|
|
@@ -7,37 +7,37 @@ const PaymentCategoryCard = memo(function PaymentCategoryCard2({
|
|
|
7
7
|
price,
|
|
8
8
|
isCheckbox = false
|
|
9
9
|
}) {
|
|
10
|
-
return /* @__PURE__ */
|
|
10
|
+
return /* @__PURE__ */ jsx(
|
|
11
11
|
"div",
|
|
12
12
|
{
|
|
13
13
|
onClick,
|
|
14
|
-
className: "
|
|
15
|
-
children: /* @__PURE__ */
|
|
16
|
-
/* @__PURE__ */
|
|
14
|
+
className: "group cursor-pointer rounded-xl border flex-1 justify-between h-full transition-all duration-200 overflow-hidden border-gray-200 hover:border-gray-300 bg-white",
|
|
15
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex-1 h-full flex flex-col", children: [
|
|
16
|
+
/* @__PURE__ */ jsxs(
|
|
17
17
|
"div",
|
|
18
18
|
{
|
|
19
19
|
className: cn(
|
|
20
|
-
"
|
|
20
|
+
"flex justify-between items-center p-3 pb-0"
|
|
21
21
|
),
|
|
22
22
|
children: [
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
"
|
|
26
|
-
isCheckbox ? "
|
|
27
|
-
), children: /* @__PURE__ */
|
|
28
|
-
"
|
|
29
|
-
isCheckbox ? "
|
|
23
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx("span", { className: "font-medium text-gray-900", children: name }) }),
|
|
24
|
+
/* @__PURE__ */ jsx("div", { className: cn(
|
|
25
|
+
"w-4 h-4 border flex items-center justify-center border-gray-300",
|
|
26
|
+
isCheckbox ? "rounded" : "rounded-full"
|
|
27
|
+
), children: /* @__PURE__ */ jsx("div", { className: cn(
|
|
28
|
+
"w-full h-full border border-gray-200",
|
|
29
|
+
isCheckbox ? "rounded" : "rounded-full"
|
|
30
30
|
) }) })
|
|
31
31
|
]
|
|
32
32
|
}
|
|
33
33
|
),
|
|
34
|
-
/* @__PURE__ */
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
35
|
"div",
|
|
36
36
|
{
|
|
37
37
|
className: cn(
|
|
38
|
-
"
|
|
38
|
+
"flex-1 p-3 pt-0 space-y-3 bg-white"
|
|
39
39
|
),
|
|
40
|
-
children: /* @__PURE__ */
|
|
40
|
+
children: /* @__PURE__ */ jsxs("span", { className: "text-md font-bold text-gray-900", children: [
|
|
41
41
|
"PKR ",
|
|
42
42
|
price.toLocaleString()
|
|
43
43
|
] })
|
|
@@ -48,8 +48,8 @@ const PaymentCategoryCard = memo(function PaymentCategoryCard2({
|
|
|
48
48
|
);
|
|
49
49
|
});
|
|
50
50
|
const PaymentPreview = ({ categories, isCheckbox }) => {
|
|
51
|
-
return /* @__PURE__ */
|
|
52
|
-
categories.map((category, index) => /* @__PURE__ */
|
|
51
|
+
return /* @__PURE__ */ jsxs("div", { className: `grid sm:grid-cols-2 gap-3`, children: [
|
|
52
|
+
categories.map((category, index) => /* @__PURE__ */ jsx(
|
|
53
53
|
PaymentCategoryCard,
|
|
54
54
|
{
|
|
55
55
|
onClick: () => {
|
|
@@ -60,7 +60,7 @@ const PaymentPreview = ({ categories, isCheckbox }) => {
|
|
|
60
60
|
},
|
|
61
61
|
category.id || index
|
|
62
62
|
)),
|
|
63
|
-
categories.length === 0 && /* @__PURE__ */
|
|
63
|
+
categories.length === 0 && /* @__PURE__ */ jsx("div", { className: "col-span-2 text-center text-gray-400 py-8 border-2 border-dashed border-gray-200 rounded-lg", children: "No payment categories defined" })
|
|
64
64
|
] });
|
|
65
65
|
};
|
|
66
66
|
const PaymentPreview$1 = memo(PaymentPreview);
|