@levo-so/react 0.1.34 → 0.1.35

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.
Files changed (48) hide show
  1. package/dist/Checbox-sq-atGlJ.js.map +1 -0
  2. package/dist/CheckboxWidget-BrVNbP0R.js.map +1 -0
  3. package/dist/CollectionFormBuilder-CkD8uVKZ.js.map +1 -0
  4. package/dist/CurrencyWidget-D_q2AYWu.js.map +1 -0
  5. package/dist/DateTimeWidget-CsuCisSs.js.map +1 -0
  6. package/dist/DefaultFormVariant-rv38sBOZ.js.map +1 -0
  7. package/dist/DropdownWidget-CsTQ0Ojo.js.map +1 -0
  8. package/dist/EmailWidget-Did2OUyB.js.map +1 -0
  9. package/dist/FormCaptcha-C_DxR2za.js.map +1 -0
  10. package/dist/GeocoderWidget-CyzcaWxa.js.map +1 -0
  11. package/dist/Input-Vv7mKQFt.js.map +1 -0
  12. package/dist/MultiGeocoderWidget-DgwiZ330.js.map +1 -0
  13. package/dist/MultiTextWidget-Dic46WBU.js.map +1 -0
  14. package/dist/PhoneWidget-DKH-Wzgz.js.map +1 -0
  15. package/dist/RadioWidget-CTgWKCg2.js.map +1 -0
  16. package/dist/RichTextWidget-C30H7mVF.js.map +1 -0
  17. package/dist/Sonner-t6JVKA0a.js.map +1 -0
  18. package/dist/Spinner-BcBoT-J5.js.map +1 -0
  19. package/dist/StepsFormVariant-myT97AwJ.js.map +1 -0
  20. package/dist/SwitchWidget-BS-rmHiq.js.map +1 -0
  21. package/dist/TextWidget-aNB-0vc-.js.map +1 -0
  22. package/dist/TextareaWidget-CEH-97Oj.js.map +1 -0
  23. package/dist/ToggleCheckboxWidget-C0buyS29.js.map +1 -0
  24. package/dist/Tooltip-DoWyn3Ho.js.map +1 -0
  25. package/dist/URLWidget-DrZlRAD7.js.map +1 -0
  26. package/dist/UploadWidget-Bw7urh-7.js.map +1 -0
  27. package/dist/audience/hooks/useDownloadSpeed.d.ts.map +1 -1
  28. package/dist/audience/hooks/usePerformanceMetrics.d.ts +8 -11
  29. package/dist/audience/hooks/usePerformanceMetrics.d.ts.map +1 -1
  30. package/dist/audience/hooks/useTrackClicks.d.ts.map +1 -1
  31. package/dist/audience/index.js +1 -1
  32. package/dist/audience/index.js.map +1 -0
  33. package/dist/byteToSize-BFKZSBu1.js.map +1 -0
  34. package/dist/cn-C9QoOYNG.js.map +1 -0
  35. package/dist/collection/index.js.map +1 -0
  36. package/dist/components/index.js.map +1 -0
  37. package/dist/errorHandler-_34Yv8wA.js.map +1 -0
  38. package/dist/index.js +1 -1
  39. package/dist/index.js.map +1 -0
  40. package/dist/isEmptyObject-C5s4GzLE.js.map +1 -0
  41. package/dist/jsx-runtime-B6kdoens.js.map +1 -0
  42. package/dist/membership/index.js.map +1 -0
  43. package/dist/page-t8PpNiSB.js +567 -0
  44. package/dist/page-t8PpNiSB.js.map +1 -0
  45. package/dist/providers/index.js.map +1 -0
  46. package/dist/utils/index.js.map +1 -0
  47. package/package.json +4 -4
  48. package/dist/page-BaAkHGtG.js +0 -562
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormCaptcha-C_DxR2za.js","sources":["../src/collection/utils/storage.ts","../src/collection/lib/SaveDraftValues.tsx","../src/collection/lib/hooks/useLevoForm.tsx","../src/collection/components/FormCaptcha.tsx"],"sourcesContent":["export const STORAGE_KEYS = {\n FORM_DIRTY: \"form-dirty\",\n FORM_VALUES: \"form-values\",\n} as const;\n\nexport const getFormValues = (id: string) => {\n const formValues = localStorage.getItem(`${id}-${STORAGE_KEYS.FORM_VALUES}`);\n return formValues ? JSON.parse(formValues) : {};\n};\n\nexport const setFormValues = (id: string, values: Record<string, any>) => {\n localStorage.setItem(\n `${id}-${STORAGE_KEYS.FORM_VALUES}`,\n JSON.stringify(values),\n );\n};\n\nexport const clearFormValues = (id: string) => {\n localStorage.removeItem(`${id}-${STORAGE_KEYS.FORM_VALUES}`);\n};\n\nexport const getFormDirty = (id: string) => {\n const formDirty = localStorage.getItem(`${id}-${STORAGE_KEYS.FORM_DIRTY}`);\n return formDirty ? JSON.parse(formDirty) : false;\n};\n\nexport const setFormDirty = (id: string, dirty: boolean) => {\n localStorage.setItem(\n `${id}-${STORAGE_KEYS.FORM_DIRTY}`,\n JSON.stringify(dirty),\n );\n};\n\nexport const clearFormDirty = (id: string) => {\n localStorage.removeItem(`${id}-${STORAGE_KEYS.FORM_DIRTY}`);\n};\n","import type { IResponseSingle } from \"@levo-so/core\";\nimport { useEffect } from \"react\";\nimport { useFormContext, useWatch } from \"react-hook-form\";\nimport { useDebouncedCallback } from \"use-debounce\";\n\nimport { useLevo } from \"../../providers/LevoProvider\";\nimport * as FormStorage from \"../utils/storage\";\n\nimport { useLevoFormContext } from \"./provider/LevoFormProvider\";\n\ninterface IDraftEntry {\n _id: string;\n _account: string;\n _status: \"draft\" | \"submitted\";\n [x: string]: any;\n created_at: string;\n updated_at: string;\n}\n\nconst SaveDraftValues: React.FC<{\n currentValues: Record<string, any>;\n isError: boolean;\n getContentId: (id: string) => void;\n}> = ({ currentValues, isError, getContentId }) => {\n const { schema, isLoggedIn } = useLevoFormContext();\n const methods = useFormContext();\n\n const formValues = useWatch();\n\n const { client } = useLevo();\n\n const debounceSaveValueInStorage = useDebouncedCallback((values: any) => {\n if (schema?.key && !isError) {\n if (schema?.allow_draft) {\n if (isLoggedIn) {\n fetch(`${client.apiUrl}/v1/bevy/content/${schema?.key}/save-entry`, {\n method: \"POST\",\n body: JSON.stringify({ ...values }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((res) => res.json())\n .then((data) => {\n if (data?.content?.data?._id) {\n getContentId(data?.content?.data?._id);\n }\n })\n .catch(() => {\n console.error(\"saving entry failed\");\n });\n } else {\n FormStorage.setFormValues(schema?.key, values);\n }\n }\n }\n }, 2500);\n\n useEffect(() => {\n if (!isError) {\n if (methods?.formState?.isDirty) {\n if (Object?.keys(formValues || {})?.length > 0) {\n debounceSaveValueInStorage.cancel();\n\n debounceSaveValueInStorage({\n ...currentValues,\n ...formValues,\n });\n }\n }\n }\n }, [methods?.formState?.isDirty, isError, isLoggedIn, formValues]);\n\n return null;\n};\n\nexport default SaveDraftValues;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\"use client\";\n\nimport type { ILemaCollection } from \"@levo-so/core\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\n\nimport { successToast } from \"../../../components/Sonner\";\nimport { useLevo } from \"../../../providers/LevoProvider\";\nimport { errorHandler } from \"../../../utils/errorHandler\";\nimport { isEmptyObject } from \"../../../utils/isEmptyObject\";\nimport type { IFormErrors } from \"../../types/errors\";\nimport { getDefaultValuesByKind, submitDataParser } from \"../../utils\";\nimport { setFormErrors } from \"../../utils/setFormErrors\";\nimport * as FormStorage from \"../../utils/storage\";\nimport { useLevoFormContext } from \"../provider/LevoFormProvider\";\n\nexport const useLevoForm = ({\n schema,\n saveToRemote,\n onSubmit,\n onSubmitSuccess,\n onSubmitError,\n}: {\n schema: ILemaCollection | null;\n saveToRemote?: boolean;\n onSubmit?: (v: any) => void;\n onSubmitSuccess?: () => void;\n onSubmitError?: (e: IFormErrors[]) => void;\n}) => {\n const { collection } = useLevo();\n\n const {\n toastConfig,\n onSuccess,\n onError,\n isLoggedIn,\n isDisabled,\n externalInitialValues = {},\n } = useLevoFormContext();\n\n const [initialValues, setInitialValues] = useState<any>({});\n const [contentId, setContentId] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const allFormValues = useRef<any>({});\n\n const methods = useForm({\n mode: \"all\",\n disabled: isDisabled,\n defaultValues: initialValues,\n values: initialValues,\n resetOptions: {\n keepErrors: true,\n },\n });\n\n const handleSubmit = methods.handleSubmit(async (data) => {\n allFormValues.current = {\n ...(allFormValues.current || {}),\n ...data,\n };\n\n if (saveToRemote && collection) {\n if (schema) {\n try {\n const parsedData = submitDataParser(allFormValues?.current, schema);\n\n let response: any = null;\n\n if (contentId) {\n response = await collection\n ?.submitDraftEntry(schema?.key, parsedData)\n .catch((err) => {\n errorHandler(err);\n return null;\n });\n } else {\n response = await collection\n ?.saveCollectionData({\n collection_id: schema?.id,\n data: parsedData,\n })\n .catch((err) => {\n errorHandler(err);\n return null;\n });\n }\n\n if (response?.content?.data) {\n if (toastConfig?.showSuccessToast) {\n successToast(\n toastConfig.successToastText || \"Form submitted successfully.\",\n );\n }\n\n allFormValues.current = isEmptyObject(externalInitialValues)\n ? {}\n : { ...externalInitialValues };\n FormStorage?.clearFormValues(schema?.key);\n setContentId(null);\n\n if (onSuccess)\n onSuccess({\n schemaId: schema?.id,\n response: response?.content?.data,\n });\n\n if (onSubmitSuccess) onSubmitSuccess();\n methods.reset();\n methods.clearErrors();\n\n return true;\n }\n\n throw new Error(\"Failed to save form details, API response invalid\");\n } catch (error: any) {\n const formErrors = error?.response?.data?.content?.errors;\n\n setFormErrors(formErrors as IFormErrors[], methods.setError);\n\n if (onSubmitError) onSubmitError(formErrors);\n if (onError) onError(error?.response?.data || error);\n\n return false;\n }\n }\n\n return false;\n }\n\n if (data && onSubmit) {\n onSubmit(data);\n }\n });\n\n const handleContentId = (id: string) => {\n if (id && id !== contentId) {\n setContentId(id);\n }\n };\n\n useEffect(() => {\n if (schema && collection) {\n const defaultValues = getDefaultValuesByKind(schema);\n\n allFormValues.current = {\n ...defaultValues,\n ...(externalInitialValues || {}),\n ...(allFormValues.current || {}),\n };\n\n // only check draft entry once\n if (!contentId) {\n if (schema?.allow_draft) {\n if (isLoggedIn) {\n setIsLoading(true);\n collection\n ?.getDraftEntry(schema?.key as string)\n .then((data) => {\n if (data === null) {\n setIsError(true);\n return;\n }\n\n setIsError(false);\n\n const filteredDrafts = Array.isArray(data)\n ? data?.filter((item) => item?._status === \"draft\")\n : [];\n\n if (filteredDrafts?.length > 0) {\n const draftData = filteredDrafts?.[0] || {};\n\n if (draftData?._id) {\n allFormValues.current = {\n ...(allFormValues.current || {}),\n ...draftData,\n };\n\n setContentId(draftData?._id);\n }\n }\n })\n .catch(() => {\n return null;\n })\n .finally(() => {\n setInitialValues({\n ...allFormValues?.current,\n });\n setIsLoading(false);\n });\n\n return;\n }\n\n const savedValues = FormStorage.getFormValues(schema?.key);\n\n if (savedValues) {\n allFormValues.current = {\n ...(allFormValues.current || {}),\n ...savedValues,\n };\n }\n }\n }\n\n setInitialValues({\n ...(allFormValues?.current || {}),\n });\n }\n }, [schema]);\n\n useEffect(() => {\n if (schema && contentId) {\n FormStorage.clearFormValues(schema?.key);\n }\n }, [contentId]);\n\n return {\n methods,\n isLoading,\n isError,\n contentId,\n allFormValues: allFormValues.current,\n handleContentId,\n handleSubmit,\n };\n};\n","import { useEffect, useRef } from \"react\";\n// Importing altcha package will introduce a new element <altcha-widget>\nimport \"altcha\";\nimport { useController } from \"react-hook-form\";\n\nimport { useLevoFormContext } from \"../lib/provider/LevoFormProvider\";\nimport { useLevo } from \"../../providers/LevoProvider\";\n\nimport FieldWrapper from \"./widgets/FieldWrapper\";\n\nconst FormCaptcha = () => {\n const { isInternal } = useLevoFormContext();\n const { client } = useLevo();\n\n const widgetRef = useRef<HTMLElement>(null);\n\n const {\n field: { onChange },\n fieldState: { error },\n } = useController({\n name: \"__captcha\",\n rules: {\n required: isInternal ? false : \"Verification is required\",\n },\n });\n\n useEffect(() => {\n const handleStateChange = (ev: Event | CustomEvent) => {\n if (\"detail\" in ev) {\n onChange(ev.detail.state || null);\n }\n };\n\n const { current } = widgetRef;\n\n if (current) {\n current.addEventListener(\"statechange\", handleStateChange);\n return () =>\n current.removeEventListener(\"statechange\", handleStateChange);\n }\n }, []);\n\n /* Configure your `challengeurl` and remove the `test` attribute, see docs: https://altcha.org/docs/website-integration/#using-altcha-widget */\n return (\n <FieldWrapper error={error?.message}>\n <altcha-widget\n ref={widgetRef}\n style={{\n \"--altcha-max-width\": \"100%\",\n }}\n hidelogo\n auto=\"onfocus\"\n hidefooter\n challengeurl={`${client.apiUrl}/v1/identity/captcha/create-challenge`}\n verifyurl={`${client.apiUrl}/v1/identity/captcha/verify-challenge`}\n />\n </FieldWrapper>\n );\n};\n\nexport default FormCaptcha;\n"],"names":["STORAGE_KEYS","getFormValues","id","formValues","setFormValues","values","clearFormValues","SaveDraftValues","currentValues","isError","getContentId","schema","isLoggedIn","useLevoFormContext","methods","useFormContext","useWatch","client","useLevo","debounceSaveValueInStorage","useDebouncedCallback","res","data","_b","_a","_d","_c","FormStorage.setFormValues","useEffect","useLevoForm","saveToRemote","onSubmit","onSubmitSuccess","onSubmitError","collection","toastConfig","onSuccess","onError","isDisabled","externalInitialValues","initialValues","setInitialValues","useState","contentId","setContentId","isLoading","setIsLoading","setIsError","allFormValues","useRef","useForm","handleSubmit","parsedData","submitDataParser","response","err","errorHandler","successToast","isEmptyObject","FormStorage?.clearFormValues","error","formErrors","_e","setFormErrors","_f","handleContentId","defaultValues","getDefaultValuesByKind","filteredDrafts","item","draftData","savedValues","FormStorage.getFormValues","FormStorage.clearFormValues","FormCaptcha","isInternal","widgetRef","onChange","useController","handleStateChange","ev","current","jsx","FieldWrapper"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeocoderWidget-CyzcaWxa.js","sources":["../src/collection/components/widgets/geocoderWidget/GeocoderWidget.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ILemaField } from \"@levo-so/core\";\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { BiLoaderAlt } from \"react-icons/bi\";\n\nimport getFieldValidations from \"../../../utils/getFieldValidations\";\nimport Input from \"../../core/Input/Input\";\nimport FieldWrapper from \"../FieldWrapper\";\nimport FormLabel from \"../FormLabel\";\nimport { useLevo } from \"../../../../providers/LevoProvider\";\n\nexport interface IGeocoderWidgetProps {\n field: ILemaField;\n}\n\nexport const GeocoderWidget: React.FC<IGeocoderWidgetProps> = ({ field }) => {\n const [fieldText, setFieldText] = useState(\"\");\n const [hasSelected, setHasSelected] = useState(false);\n const [placePredictions, setPlacePredictions] = useState<any[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const { client } = useLevo();\n\n const { key = \"\", label = \"\", helper_text = \"\", readonly = false } = field;\n\n const {\n field: { value, onBlur, onChange, ...rest },\n fieldState,\n } = useController({\n name: key,\n rules: getFieldValidations(field),\n });\n\n const isRequired = !!field?.required;\n const error = fieldState?.error?.message;\n\n const selectPlace = (place: google.maps.places.AutocompletePrediction) => {\n setIsLoading(true);\n setHasSelected(true);\n client?.fetch\n .url(`/v1/bevy/content/location/${place?.place_id}/get-location-details`)\n .get()\n .json<{ content: { data: any } }>()\n .then((res) => {\n if (onChange) {\n onChange(res?.content?.data);\n }\n })\n .finally(() => setIsLoading(false));\n };\n\n useEffect(() => {\n if (fieldText && !hasSelected) {\n setIsLoading(true);\n client?.fetch\n .url(\"/v1/bevy/content/location/search-location\")\n .post({\n search: fieldText,\n where: field?.options?.location_type\n ? {\n location_type: field?.options?.location_type,\n }\n : {},\n })\n .json<{ content: { data: any[] } }>()\n .then((res) => {\n setPlacePredictions(res?.content?.data);\n })\n .finally(() => setIsLoading(false));\n }\n }, [fieldText, hasSelected]);\n\n useEffect(() => {\n if (value?.place_name) {\n setFieldText(value?.place_name);\n setHasSelected(true);\n }\n }, [value]);\n\n return (\n <FieldWrapper error={error} helperText={helper_text} readOnly={readonly}>\n <div className=\"relative w-full\">\n {label && (\n <FormLabel htmlFor={key} isRequired={isRequired}>\n {label}\n </FormLabel>\n )}\n <Input\n id={key}\n value={fieldText}\n onChange={(event) => {\n setHasSelected(false);\n setFieldText(event.target.value);\n }}\n onBlur={() => {\n onBlur();\n }}\n rightIcon={\n isLoading && <BiLoaderAlt size=\"20px\" className=\"animate-spin\" />\n }\n readOnly={readonly}\n {...rest}\n />\n {fieldText && !isLoading && !hasSelected && (\n <div className=\"absolute left-[-1px] z-50 w-full rounded-[6px] bg-white p-[4px] shadow-[0_0_8px_rgba(0,0,0,0.25)]\">\n {placePredictions?.length ? (\n placePredictions.map((result) => (\n <p\n className=\"text-md cursor-pointer rounded-[6px] p-[8px] text-black hover:bg-gray-200\"\n onClick={() => selectPlace(result)}\n key={result.place_id}\n >\n {result.description}\n </p>\n ))\n ) : (\n <p className=\"text-md p-[8px] text-muted-foreground\">\n No results found\n </p>\n )}\n </div>\n )}\n </div>\n </FieldWrapper>\n );\n};\n\nexport default GeocoderWidget;\n"],"names":["GeocoderWidget","field","fieldText","setFieldText","useState","hasSelected","setHasSelected","placePredictions","setPlacePredictions","isLoading","setIsLoading","client","useLevo","key","label","helper_text","readonly","value","onBlur","onChange","rest","fieldState","useController","getFieldValidations","isRequired","error","_a","selectPlace","place","res","useEffect","_b","jsx","FieldWrapper","jsxs","FormLabel","Input","event","BiLoaderAlt","result"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input-Vv7mKQFt.js","sources":["../src/collection/components/core/Input/Input.tsx"],"sourcesContent":["import React from \"react\";\n\nimport cn from \"../../../../utils/cn\";\n\nexport interface IInputProps extends React.ComponentPropsWithRef<\"input\"> {\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n leftIconBoxStyles?: string;\n rightIconBoxStyles?: string;\n containerStyles?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, IInputProps>(\n (\n {\n className,\n leftIcon,\n rightIcon,\n leftIconBoxStyles,\n rightIconBoxStyles,\n containerStyles,\n ...rest\n },\n ref,\n ) => {\n return (\n <div className={cn(\"relative w-full\", containerStyles)}>\n {leftIcon ? (\n <div\n className={cn(\n \"absolute bottom-0 left-0 top-0 flex w-9 items-center justify-center overflow-hidden rounded-l-md\",\n \"border border-transparent\",\n leftIconBoxStyles,\n )}\n >\n {leftIcon}\n </div>\n ) : null}\n <input\n ref={ref}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n rest.readOnly ? \"focus-visible:ring-0\" : \"\",\n leftIcon ? \"pl-11\" : \"\",\n rightIcon ? \"pr-11\" : \"\",\n className,\n )}\n {...rest}\n />\n {rightIcon ? (\n <div\n className={cn(\n \"absolute bottom-0 right-0 top-0 flex w-9 items-center justify-center overflow-hidden rounded-r-md\",\n \"border border-transparent\",\n rightIconBoxStyles,\n )}\n >\n {rightIcon}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nexport default Input;\n"],"names":["Input","React","className","leftIcon","rightIcon","leftIconBoxStyles","rightIconBoxStyles","containerStyles","rest","ref","cn","jsx"],"mappings":";;;AAYA,MAAMA,IAAQC,EAAM;AAAA,EAClB,CACE;AAAA,IACE,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,GAAGC;AAAA,KAELC,6BAGG,OAAI,EAAA,WAAWC,EAAG,mBAAmBH,CAAe,GAClD,UAAA;AAAA,IACCJ,IAAAQ,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACAL;AAAA,QACF;AAAA,QAEC,UAAAF;AAAA,MAAA;AAAA,IAAA,IAED;AAAA,IACJQ,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWC;AAAA,UACT;AAAA,UACAF,EAAK,WAAW,yBAAyB;AAAA,UACzCL,IAAW,UAAU;AAAA,UACrBC,IAAY,UAAU;AAAA,UACtBF;AAAA,QACF;AAAA,QACC,GAAGM;AAAA,MAAA;AAAA,IACN;AAAA,IACCJ,IACCO,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,UACAJ;AAAA,QACF;AAAA,QAEC,UAAAF;AAAA,MAAA;AAAA,IAAA,IAED;AAAA,EACN,EAAA,CAAA;AAGN;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiGeocoderWidget-DgwiZ330.js","sources":["../src/collection/components/widgets/multiGeocoderWidget/MultiGeocoderWidget.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ILemaField } from \"@levo-so/core\";\nimport { Plus } from \"lucide-react\";\nimport type React from \"react\";\nimport { useFieldArray } from \"react-hook-form\";\n\nimport { Button } from \"../../../../components/button\";\nimport FormLabel from \"../FormLabel\";\nimport GeocoderWidget from \"../geocoderWidget/GeocoderWidget\";\n\nexport interface IMultiGeocoderWidgetProps {\n field: ILemaField;\n}\n\nexport const MultiGeocoderWidget: React.FC<IMultiGeocoderWidgetProps> = ({\n field,\n}) => {\n const { key = \"\", label = \"\" } = field;\n\n const { fields: fieldValue, ...arrayHelpers } = useFieldArray({\n name: key,\n });\n\n return (\n <div className=\"relative w-full\">\n {label && <FormLabel htmlFor={key}>{label}</FormLabel>}\n <div className=\"flex flex-col gap-2\">\n {fieldValue?.map((sub, index: number) => (\n <GeocoderWidget\n key={sub.id}\n field={{\n ...field,\n key: `${key}.${index}`,\n label: \"\",\n }}\n />\n ))}\n <Button\n variant=\"ghost\"\n size=\"xs\"\n className=\"shrink-0 grow-0 self-start\"\n onClick={() => {\n arrayHelpers.append(null);\n }}\n >\n <Plus className=\"mr-1 inline-block\" size=\"14px\" />\n Add\n </Button>\n </div>\n </div>\n );\n};\n\nexport default MultiGeocoderWidget;\n"],"names":["MultiGeocoderWidget","field","key","label","fieldValue","arrayHelpers","useFieldArray","jsxs","jsx","FormLabel","sub","index","GeocoderWidget","Button","Plus"],"mappings":";;;;;;;AAeO,MAAMA,IAA2D,CAAC;AAAA,EACvE,OAAAC;AACF,MAAM;AACJ,QAAM,EAAE,KAAAC,IAAM,IAAI,OAAAC,IAAQ,OAAOF,GAE3B,EAAE,QAAQG,GAAY,GAAGC,EAAA,IAAiBC,EAAc;AAAA,IAC5D,MAAMJ;AAAA,EAAA,CACP;AAGC,SAAAK,gBAAAA,EAAA,KAAC,OAAI,EAAA,WAAU,mBACZ,UAAA;AAAA,IAAAJ,KAAUK,gBAAAA,EAAA,IAAAC,GAAA,EAAU,SAASP,GAAM,UAAMC,GAAA;AAAA,IAC1CI,gBAAAA,EAAAA,KAAC,OAAI,EAAA,WAAU,uBACZ,UAAA;AAAA,MAAYH,KAAA,gBAAAA,EAAA,IAAI,CAACM,GAAKC,MACrBH,gBAAAA,EAAA;AAAA,QAACI;AAAA,QAAA;AAAA,UAEC,OAAO;AAAA,YACL,GAAGX;AAAA,YACH,KAAK,GAAGC,CAAG,IAAIS,CAAK;AAAA,YACpB,OAAO;AAAA,UACT;AAAA,QAAA;AAAA,QALKD,EAAI;AAAA,MAAA;AAAA,MAQbH,gBAAAA,EAAA;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM;AACb,YAAAR,EAAa,OAAO,IAAI;AAAA,UAC1B;AAAA,UAEA,UAAA;AAAA,YAAAG,gBAAAA,EAAA,IAACM,GAAK,EAAA,WAAU,qBAAoB,MAAK,QAAO;AAAA,YAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAEpD;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiTextWidget-Dic46WBU.js","sources":["../src/collection/components/widgets/multiTextWidget/MultiTextWidget.tsx"],"sourcesContent":["import type { ILemaField } from \"@levo-so/core\";\nimport { useController } from \"react-hook-form\";\n\nimport { getFieldValidations } from \"../../../utils/getFieldValidations\";\nimport Input from \"../../core/Input/Input\";\nimport FieldWrapper from \"../FieldWrapper\";\nimport FormLabel from \"../FormLabel\";\n\nexport interface IMultiTextWidgetProps {\n field: ILemaField;\n}\n\nconst MultiTextWidget: React.FC<IMultiTextWidgetProps> = ({ field }) => {\n const { key = \"\", label = \"\", helper_text = \"\", readonly = false } = field;\n\n const name = key;\n\n const {\n field: { value, onChange, ...restForm },\n fieldState,\n } = useController({\n name,\n rules: getFieldValidations(field),\n });\n\n const isRequired = !!field?.required;\n const error = fieldState?.error?.message;\n\n const transformedValue = Array.isArray(value) ? value?.join(\",\") : \"\";\n\n return (\n <FieldWrapper error={error} helperText={helper_text}>\n {label && (\n <FormLabel htmlFor={name} isRequired={isRequired}>\n {label}\n </FormLabel>\n )}\n <Input\n id={name}\n readOnly={readonly}\n value={transformedValue}\n onChange={(e) => {\n onChange(e.target?.value?.split(\",\")?.map((item) => item?.trim()));\n }}\n {...restForm}\n />\n </FieldWrapper>\n );\n};\n\nexport default MultiTextWidget;\n"],"names":["MultiTextWidget","field","key","label","helper_text","readonly","name","value","onChange","restForm","fieldState","useController","getFieldValidations","isRequired","error","_a","transformedValue","jsxs","FieldWrapper","jsx","FormLabel","Input","e","_c","_b","item"],"mappings":";;;;AAYA,MAAMA,IAAmD,CAAC,EAAE,OAAAC,QAAY;;AAChE,QAAA,EAAE,KAAAC,IAAM,IAAI,OAAAC,IAAQ,IAAI,aAAAC,IAAc,IAAI,UAAAC,IAAW,GAAU,IAAAJ,GAE/DK,IAAOJ,GAEP;AAAA,IACJ,OAAO,EAAE,OAAAK,GAAO,UAAAC,GAAU,GAAGC,EAAS;AAAA,IACtC,YAAAC;AAAA,MACEC,EAAc;AAAA,IAChB,MAAAL;AAAA,IACA,OAAOM,EAAoBX,CAAK;AAAA,EAAA,CACjC,GAEKY,IAAa,CAAC,EAACZ,KAAA,QAAAA,EAAO,WACtBa,KAAQC,IAAAL,KAAA,gBAAAA,EAAY,UAAZ,gBAAAK,EAAmB,SAE3BC,IAAmB,MAAM,QAAQT,CAAK,IAAIA,KAAA,gBAAAA,EAAO,KAAK,OAAO;AAEnE,SACGU,gBAAAA,EAAAA,KAAAC,GAAA,EAAa,OAAAJ,GAAc,YAAYV,GACrC,UAAA;AAAA,IAAAD,KACEgB,gBAAAA,EAAAA,IAAAC,GAAA,EAAU,SAASd,GAAM,YAAAO,GACvB,UACHV,GAAA;AAAA,IAEFgB,gBAAAA,EAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,IAAIf;AAAA,QACJ,UAAUD;AAAA,QACV,OAAOW;AAAA,QACP,UAAU,CAACM,MAAM;;AACf,UAAAd,GAASe,KAAAC,KAAAT,IAAAO,EAAE,WAAF,gBAAAP,EAAU,UAAV,gBAAAS,EAAiB,MAAM,SAAvB,gBAAAD,EAA6B,IAAI,CAACE,MAASA,KAAA,gBAAAA,EAAM,OAAO;AAAA,QACnE;AAAA,QACC,GAAGhB;AAAA,MAAA;AAAA,IACN;AAAA,EACF,EAAA,CAAA;AAEJ;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhoneWidget-DKH-Wzgz.js","sources":["../src/collection/components/widgets/phoneWidget/PhoneWidget.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ILemaField } from \"@levo-so/core\";\nimport type React from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { PhoneInput } from \"react-international-phone\";\n\nimport cn from \"../../../../utils/cn\";\nimport getFieldValidations from \"../../../utils/getFieldValidations\";\nimport FieldWrapper from \"../FieldWrapper\";\nimport FormLabel from \"../FormLabel\";\n\nexport interface IPhoneWidgetProps {\n field: ILemaField;\n}\n\nexport const PhoneWidget: React.FC<IPhoneWidgetProps> = ({ field }) => {\n const { key = \"\", label = \"\", helper_text = \"\", readonly = false } = field;\n\n const name = key;\n\n const {\n field: { value, onBlur, onChange, ...rest },\n fieldState: { error: fieldError },\n } = useController({\n name,\n rules: getFieldValidations(field),\n });\n\n const isRequired = !!field?.required;\n const error = fieldError?.message;\n\n return (\n <FieldWrapper error={error} helperText={helper_text} readOnly={readonly}>\n {label && (\n <FormLabel htmlFor={name} isRequired={isRequired}>\n {label}\n </FormLabel>\n )}\n <PhoneInput\n defaultCountry=\"in\"\n value={value}\n className={cn(\n \"w-full\",\n readonly ? \"pointer-events-none focus-visible:ring-0\" : \"\",\n )}\n inputClassName={cn(\n \"w-full border border-input !bg-transparent text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 !text-text-1\",\n )}\n onChange={(value) => {\n if (onChange) {\n onChange(value);\n }\n }}\n onBlur={() => {\n if (onBlur) {\n onBlur();\n }\n }}\n style={\n {\n \"--react-international-phone-height\": \"2.25rem\",\n \"--react-international-phone-border-radius\":\n \"calc(var(--radius) - 2px)\",\n } as React.CSSProperties\n }\n disableDialCodePrefill\n {...rest}\n />\n </FieldWrapper>\n );\n};\n\nexport default PhoneWidget;\n"],"names":["PhoneWidget","field","key","label","helper_text","readonly","name","value","onBlur","onChange","rest","fieldError","useController","getFieldValidations","isRequired","error","FieldWrapper","jsx","FormLabel","PhoneInput","cn"],"mappings":";;;;;;AAgBO,MAAMA,IAA2C,CAAC,EAAE,OAAAC,QAAY;AAC/D,QAAA,EAAE,KAAAC,IAAM,IAAI,OAAAC,IAAQ,IAAI,aAAAC,IAAc,IAAI,UAAAC,IAAW,GAAU,IAAAJ,GAE/DK,IAAOJ,GAEP;AAAA,IACJ,OAAO,EAAE,OAAAK,GAAO,QAAAC,GAAQ,UAAAC,GAAU,GAAGC,EAAK;AAAA,IAC1C,YAAY,EAAE,OAAOC,EAAW;AAAA,MAC9BC,EAAc;AAAA,IAChB,MAAAN;AAAA,IACA,OAAOO,EAAoBZ,CAAK;AAAA,EAAA,CACjC,GAEKa,IAAa,CAAC,EAACb,KAAA,QAAAA,EAAO,WACtBc,IAAQJ,KAAA,gBAAAA,EAAY;AAE1B,gCACGK,GAAa,EAAA,OAAAD,GAAc,YAAYX,GAAa,UAAUC,GAC5D,UAAA;AAAA,IAAAF,KACEc,gBAAAA,EAAAA,IAAAC,GAAA,EAAU,SAASZ,GAAM,YAAAQ,GACvB,UACHX,GAAA;AAAA,IAEFc,gBAAAA,EAAA;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,OAAAZ;AAAA,QACA,WAAWa;AAAA,UACT;AAAA,UACAf,IAAW,6CAA6C;AAAA,QAC1D;AAAA,QACA,gBAAgBe;AAAA,UACd;AAAA,QACF;AAAA,QACA,UAAU,CAACb,MAAU;AACnB,UAAIE,KACFA,EAASF,CAAK;AAAA,QAElB;AAAA,QACA,QAAQ,MAAM;AACZ,UAAIC,KACKA;QAEX;AAAA,QACA,OACE;AAAA,UACE,sCAAsC;AAAA,UACtC,6CACE;AAAA,QACJ;AAAA,QAEF,wBAAsB;AAAA,QACrB,GAAGE;AAAA,MAAA;AAAA,IACN;AAAA,EACF,EAAA,CAAA;AAEJ;"}