geoiq-frontend-ui-kit 2.0.3 → 2.0.4
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/components/atoms/accordion/accordion.d.ts +1 -2
- package/dist/components/atoms/accordion/accordion.d.ts.map +1 -1
- package/dist/components/atoms/avatar/avatar.d.ts +1 -2
- package/dist/components/atoms/avatar/avatar.d.ts.map +1 -1
- package/dist/components/atoms/badge/badge.d.ts +2 -2
- package/dist/components/atoms/badge/badge.d.ts.map +1 -1
- package/dist/components/atoms/skeleton/skeleton.d.ts +1 -1
- package/dist/components/atoms/skeleton/skeleton.d.ts.map +1 -1
- package/dist/components/atoms/tooltip/tooltip.d.ts +2 -2
- package/dist/components/atoms/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/molecules/breadcrumb/breadcrumb-components.d.ts +2 -2
- package/dist/components/molecules/breadcrumb/breadcrumb.d.ts +1 -2
- package/dist/components/molecules/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts +1 -2
- package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts.map +1 -1
- package/dist/components/molecules/dropdown-menu/dropdown-menu-components.d.ts +1 -1
- package/dist/components/molecules/dropdown-menu/dropdown-menu.d.ts +1 -2
- package/dist/components/molecules/dropdown-menu/dropdown-menu.d.ts.map +1 -1
- package/dist/components/molecules/multi-combobox/index.d.ts +2 -2
- package/dist/components/molecules/multi-combobox/index.d.ts.map +1 -1
- package/dist/components/molecules/multi-select/index.d.ts +2 -2
- package/dist/components/molecules/multi-select/index.d.ts.map +1 -1
- package/dist/components/molecules/pagination/pagination-components.d.ts +4 -4
- package/dist/components/molecules/single-combobox/single-combobox.d.ts +2 -2
- package/dist/components/molecules/single-combobox/single-combobox.d.ts.map +1 -1
- package/dist/components/molecules/stepper/stepper-components.d.ts +1 -1
- package/dist/components/molecules/stepper/stepper-components.d.ts.map +1 -1
- package/dist/components/molecules/stepper/stepper.d.ts +1 -2
- package/dist/components/molecules/stepper/stepper.d.ts.map +1 -1
- package/dist/components/molecules/stepper/stepper.mock.d.ts +2 -2
- package/dist/components/molecules/stepper/stepper.mock.d.ts.map +1 -1
- package/dist/components/molecules/swatch-grid/swatch-grid.d.ts +1 -2
- package/dist/components/molecules/swatch-grid/swatch-grid.d.ts.map +1 -1
- package/dist/components/molecules/toast/assets/svgs/danger-icon.d.ts +1 -3
- package/dist/components/molecules/toast/assets/svgs/danger-icon.d.ts.map +1 -1
- package/dist/components/molecules/toast/assets/svgs/info-icon.d.ts +1 -3
- package/dist/components/molecules/toast/assets/svgs/info-icon.d.ts.map +1 -1
- package/dist/components/molecules/toast/assets/svgs/success-icon.d.ts +1 -3
- package/dist/components/molecules/toast/assets/svgs/success-icon.d.ts.map +1 -1
- package/dist/components/molecules/toast/assets/svgs/warning-icon.d.ts +1 -3
- package/dist/components/molecules/toast/assets/svgs/warning-icon.d.ts.map +1 -1
- package/dist/components/molecules/toast/toast-components.d.ts +1 -1
- package/dist/components/molecules/toast/toast.d.ts +1 -2
- package/dist/components/molecules/toast/toast.d.ts.map +1 -1
- package/dist/components/molecules/toggle-multi-select/index.d.ts +2 -2
- package/dist/components/molecules/toggle-multi-select/index.d.ts.map +1 -1
- package/dist/components/organisms/alert-dialog/alert-dialog-components.d.ts +2 -2
- package/dist/components/organisms/alert-dialog/alert-dialog.d.ts +1 -2
- package/dist/components/organisms/alert-dialog/alert-dialog.d.ts.map +1 -1
- package/dist/components/organisms/dialog/dialog-components.d.ts +2 -2
- package/dist/components/organisms/dialog/dialog.d.ts +1 -2
- package/dist/components/organisms/dialog/dialog.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/color-picker.d.ts +1 -3
- package/dist/components/organisms/image-editor/components/color-picker.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/layers-list.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/layers-list.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/line-session-bar.d.ts +20 -0
- package/dist/components/organisms/image-editor/components/line-session-bar.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/panel-adjust.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/panel-adjust.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/panel-crop.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/panel-crop.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/panel-insert.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/panel-selected.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/panel.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/ribbon.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/ribbon.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/status-bar.d.ts +1 -2
- package/dist/components/organisms/image-editor/components/status-bar.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/image-editor-modal.d.ts +1 -2
- package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/image-editor.types.d.ts +73 -0
- package/dist/components/organisms/image-editor/image-editor.types.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/use-image-editor.d.ts.map +1 -1
- package/dist/components/organisms/sheet/sheet-components.d.ts +2 -2
- package/dist/components/organisms/sheet/sheet.d.ts +1 -2
- package/dist/components/organisms/sheet/sheet.d.ts.map +1 -1
- package/dist/components/organisms/sidebar/sidebar.d.ts +1 -2
- package/dist/components/organisms/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts +1 -1
- package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts.map +1 -1
- package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts +1 -2
- package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts.map +1 -1
- package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts +1 -2
- package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts.map +1 -1
- package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts +1 -2
- package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts.map +1 -1
- package/dist/components/ui/star-score/star-score.d.ts +1 -2
- package/dist/components/ui/star-score/star-score.d.ts.map +1 -1
- package/dist/components/unstyled/calendar/calendar.d.ts +1 -1
- package/dist/components/unstyled/calendar/calendar.d.ts.map +1 -1
- package/dist/components/unstyled/command/index.d.ts +2 -2
- package/dist/components/unstyled/command/index.d.ts.map +1 -1
- package/dist/components/unstyled/date-picker/date-picker.d.ts +2 -2
- package/dist/components/unstyled/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/unstyled/hover-card/hover-card.d.ts +1 -2
- package/dist/components/unstyled/hover-card/hover-card.d.ts.map +1 -1
- package/dist/components/unstyled/popover/popover.d.ts +1 -2
- package/dist/components/unstyled/popover/popover.d.ts.map +1 -1
- package/dist/components/unstyled/table/table.d.ts +2 -2
- package/dist/components/unstyled/table/table.d.ts.map +1 -1
- package/dist/index.es.js +88 -88
- package/dist/{index10.es.js → index.es10.js} +3 -3
- package/dist/{index10.es.js.map → index.es10.js.map} +1 -1
- package/dist/index.es100.js +152 -0
- package/dist/index.es100.js.map +1 -0
- package/dist/{index101.es.js → index.es101.js} +1 -1
- package/dist/{index101.es.js.map → index.es101.js.map} +1 -1
- package/dist/{index136.es.js → index.es102.js} +1 -1
- package/dist/{index136.es.js.map → index.es102.js.map} +1 -1
- package/dist/{index133.es.js → index.es103.js} +1 -1
- package/dist/{index133.es.js.map → index.es103.js.map} +1 -1
- package/dist/{index134.es.js → index.es104.js} +1 -1
- package/dist/{index134.es.js.map → index.es104.js.map} +1 -1
- package/dist/{index135.es.js → index.es105.js} +3 -3
- package/dist/{index135.es.js.map → index.es105.js.map} +1 -1
- package/dist/{index97.es.js → index.es106.js} +1 -1
- package/dist/index.es106.js.map +1 -0
- package/dist/{index107.es.js → index.es107.js} +5 -5
- package/dist/{index107.es.js.map → index.es107.js.map} +1 -1
- package/dist/{index99.es.js → index.es108.js} +1 -1
- package/dist/index.es108.js.map +1 -0
- package/dist/{index103.es.js → index.es109.js} +2 -2
- package/dist/{index103.es.js.map → index.es109.js.map} +1 -1
- package/dist/{index11.es.js → index.es11.js} +4 -4
- package/dist/{index11.es.js.map → index.es11.js.map} +1 -1
- package/dist/{index115.es.js → index.es110.js} +2 -2
- package/dist/{index115.es.js.map → index.es110.js.map} +1 -1
- package/dist/{index116.es.js → index.es111.js} +6 -6
- package/dist/{index116.es.js.map → index.es111.js.map} +1 -1
- package/dist/{index98.es.js → index.es112.js} +1 -1
- package/dist/index.es112.js.map +1 -0
- package/dist/{index106.es.js → index.es113.js} +1 -1
- package/dist/{index106.es.js.map → index.es113.js.map} +1 -1
- package/dist/{index132.es.js → index.es114.js} +3 -3
- package/dist/{index132.es.js.map → index.es114.js.map} +1 -1
- package/dist/{index130.es.js → index.es115.js} +3 -3
- package/dist/{index130.es.js.map → index.es115.js.map} +1 -1
- package/dist/{index128.es.js → index.es116.js} +1 -1
- package/dist/{index128.es.js.map → index.es116.js.map} +1 -1
- package/dist/{index129.es.js → index.es117.js} +5 -5
- package/dist/{index129.es.js.map → index.es117.js.map} +1 -1
- package/dist/{index108.es.js → index.es118.js} +1 -1
- package/dist/{index108.es.js.map → index.es118.js.map} +1 -1
- package/dist/{index105.es.js → index.es119.js} +1 -1
- package/dist/{index105.es.js.map → index.es119.js.map} +1 -1
- package/dist/{index12.es.js → index.es12.js} +3 -3
- package/dist/{index12.es.js.map → index.es12.js.map} +1 -1
- package/dist/{index121.es.js → index.es120.js} +4 -4
- package/dist/{index121.es.js.map → index.es120.js.map} +1 -1
- package/dist/{index122.es.js → index.es121.js} +3 -3
- package/dist/{index122.es.js.map → index.es121.js.map} +1 -1
- package/dist/{index123.es.js → index.es122.js} +3 -3
- package/dist/{index123.es.js.map → index.es122.js.map} +1 -1
- package/dist/{index124.es.js → index.es123.js} +3 -3
- package/dist/{index124.es.js.map → index.es123.js.map} +1 -1
- package/dist/{index125.es.js → index.es124.js} +10 -10
- package/dist/{index125.es.js.map → index.es124.js.map} +1 -1
- package/dist/{index126.es.js → index.es125.js} +10 -10
- package/dist/{index126.es.js.map → index.es125.js.map} +1 -1
- package/dist/{index127.es.js → index.es126.js} +5 -5
- package/dist/{index127.es.js.map → index.es126.js.map} +1 -1
- package/dist/{index110.es.js → index.es127.js} +4 -4
- package/dist/{index110.es.js.map → index.es127.js.map} +1 -1
- package/dist/{index111.es.js → index.es128.js} +4 -4
- package/dist/{index111.es.js.map → index.es128.js.map} +1 -1
- package/dist/{index112.es.js → index.es129.js} +5 -5
- package/dist/{index112.es.js.map → index.es129.js.map} +1 -1
- package/dist/{index13.es.js → index.es13.js} +3 -3
- package/dist/{index13.es.js.map → index.es13.js.map} +1 -1
- package/dist/{index113.es.js → index.es130.js} +2 -2
- package/dist/{index113.es.js.map → index.es130.js.map} +1 -1
- package/dist/{index114.es.js → index.es131.js} +3 -3
- package/dist/{index114.es.js.map → index.es131.js.map} +1 -1
- package/dist/{index109.es.js → index.es132.js} +1 -1
- package/dist/{index109.es.js.map → index.es132.js.map} +1 -1
- package/dist/{index100.es.js → index.es133.js} +1 -1
- package/dist/{index100.es.js.map → index.es133.js.map} +1 -1
- package/dist/{index102.es.js → index.es134.js} +2 -2
- package/dist/{index102.es.js.map → index.es134.js.map} +1 -1
- package/dist/{index104.es.js → index.es135.js} +1 -1
- package/dist/{index104.es.js.map → index.es135.js.map} +1 -1
- package/dist/{index131.es.js → index.es136.js} +5 -5
- package/dist/{index131.es.js.map → index.es136.js.map} +1 -1
- package/dist/{index143.es.js → index.es137.js} +1 -1
- package/dist/{index143.es.js.map → index.es137.js.map} +1 -1
- package/dist/{index144.es.js → index.es138.js} +12 -11
- package/dist/index.es138.js.map +1 -0
- package/dist/{index145.es.js → index.es139.js} +3 -3
- package/dist/{index145.es.js.map → index.es139.js.map} +1 -1
- package/dist/{index14.es.js → index.es14.js} +2 -2
- package/dist/{index14.es.js.map → index.es14.js.map} +1 -1
- package/dist/{index146.es.js → index.es140.js} +2 -2
- package/dist/{index146.es.js.map → index.es140.js.map} +1 -1
- package/dist/index.es141.js +77 -0
- package/dist/index.es141.js.map +1 -0
- package/dist/{index147.es.js → index.es142.js} +1 -1
- package/dist/{index147.es.js.map → index.es142.js.map} +1 -1
- package/dist/{index148.es.js → index.es143.js} +1 -1
- package/dist/{index148.es.js.map → index.es143.js.map} +1 -1
- package/dist/{index149.es.js → index.es144.js} +10 -7
- package/dist/index.es144.js.map +1 -0
- package/dist/index.es145.js +408 -0
- package/dist/index.es145.js.map +1 -0
- package/dist/{index151.es.js → index.es146.js} +16 -12
- package/dist/index.es146.js.map +1 -0
- package/dist/{index152.es.js → index.es147.js} +5 -5
- package/dist/{index152.es.js.map → index.es147.js.map} +1 -1
- package/dist/{index153.es.js → index.es148.js} +17 -16
- package/dist/index.es148.js.map +1 -0
- package/dist/{index154.es.js → index.es149.js} +2 -2
- package/dist/{index154.es.js.map → index.es149.js.map} +1 -1
- package/dist/{index15.es.js → index.es15.js} +3 -3
- package/dist/{index15.es.js.map → index.es15.js.map} +1 -1
- package/dist/{index155.es.js → index.es150.js} +4 -4
- package/dist/{index155.es.js.map → index.es150.js.map} +1 -1
- package/dist/index.es151.js +215 -0
- package/dist/index.es151.js.map +1 -0
- package/dist/{index157.es.js → index.es152.js} +5 -5
- package/dist/{index157.es.js.map → index.es152.js.map} +1 -1
- package/dist/index.es153.js +147 -0
- package/dist/index.es153.js.map +1 -0
- package/dist/index.es154.js +50 -0
- package/dist/index.es154.js.map +1 -0
- package/dist/index.es155.js +358 -0
- package/dist/index.es155.js.map +1 -0
- package/dist/{index137.es.js → index.es156.js} +2 -2
- package/dist/{index137.es.js.map → index.es156.js.map} +1 -1
- package/dist/{index138.es.js → index.es157.js} +1 -1
- package/dist/{index138.es.js.map → index.es157.js.map} +1 -1
- package/dist/{index159.es.js → index.es158.js} +1 -1
- package/dist/{index159.es.js.map → index.es158.js.map} +1 -1
- package/dist/{index139.es.js → index.es159.js} +3 -3
- package/dist/{index139.es.js.map → index.es159.js.map} +1 -1
- package/dist/{index16.es.js → index.es16.js} +8 -8
- package/dist/{index16.es.js.map → index.es16.js.map} +1 -1
- package/dist/{index140.es.js → index.es160.js} +1 -1
- package/dist/{index140.es.js.map → index.es160.js.map} +1 -1
- package/dist/{index141.es.js → index.es161.js} +1 -1
- package/dist/{index141.es.js.map → index.es161.js.map} +1 -1
- package/dist/{index142.es.js → index.es162.js} +1 -1
- package/dist/{index142.es.js.map → index.es162.js.map} +1 -1
- package/dist/{index160.es.js → index.es163.js} +1 -1
- package/dist/{index160.es.js.map → index.es163.js.map} +1 -1
- package/dist/{index161.es.js → index.es164.js} +1 -1
- package/dist/{index161.es.js.map → index.es164.js.map} +1 -1
- package/dist/{index162.es.js → index.es165.js} +1 -1
- package/dist/{index162.es.js.map → index.es165.js.map} +1 -1
- package/dist/{index164.es.js → index.es166.js} +2 -2
- package/dist/{index164.es.js.map → index.es166.js.map} +1 -1
- package/dist/{index165.es.js → index.es167.js} +2 -2
- package/dist/{index165.es.js.map → index.es167.js.map} +1 -1
- package/dist/{index166.es.js → index.es168.js} +4 -4
- package/dist/{index166.es.js.map → index.es168.js.map} +1 -1
- package/dist/{index167.es.js → index.es169.js} +4 -4
- package/dist/{index167.es.js.map → index.es169.js.map} +1 -1
- package/dist/{index17.es.js → index.es17.js} +3 -3
- package/dist/{index17.es.js.map → index.es17.js.map} +1 -1
- package/dist/index.es170.js +101 -0
- package/dist/index.es170.js.map +1 -0
- package/dist/index.es171.js +259 -0
- package/dist/index.es171.js.map +1 -0
- package/dist/index.es172.js +66 -0
- package/dist/index.es172.js.map +1 -0
- package/dist/{index170.es.js → index.es173.js} +19 -19
- package/dist/{index170.es.js.map → index.es173.js.map} +1 -1
- package/dist/{index171.es.js → index.es174.js} +4 -4
- package/dist/{index171.es.js.map → index.es174.js.map} +1 -1
- package/dist/{index172.es.js → index.es175.js} +2 -2
- package/dist/{index172.es.js.map → index.es175.js.map} +1 -1
- package/dist/{index180.es.js → index.es176.js} +1 -1
- package/dist/{index180.es.js.map → index.es176.js.map} +1 -1
- package/dist/{index181.es.js → index.es177.js} +2 -2
- package/dist/{index181.es.js.map → index.es177.js.map} +1 -1
- package/dist/{index173.es.js → index.es178.js} +6 -6
- package/dist/{index173.es.js.map → index.es178.js.map} +1 -1
- package/dist/{index174.es.js → index.es179.js} +16 -17
- package/dist/{index174.es.js.map → index.es179.js.map} +1 -1
- package/dist/{index18.es.js → index.es18.js} +2 -2
- package/dist/{index18.es.js.map → index.es18.js.map} +1 -1
- package/dist/{index175.es.js → index.es180.js} +26 -27
- package/dist/{index175.es.js.map → index.es180.js.map} +1 -1
- package/dist/{index176.es.js → index.es181.js} +12 -13
- package/dist/{index176.es.js.map → index.es181.js.map} +1 -1
- package/dist/{index177.es.js → index.es182.js} +5 -5
- package/dist/{index177.es.js.map → index.es182.js.map} +1 -1
- package/dist/{index178.es.js → index.es183.js} +26 -27
- package/dist/{index178.es.js.map → index.es183.js.map} +1 -1
- package/dist/{index179.es.js → index.es184.js} +29 -30
- package/dist/{index179.es.js.map → index.es184.js.map} +1 -1
- package/dist/{index182.es.js → index.es185.js} +1 -1
- package/dist/{index182.es.js.map → index.es185.js.map} +1 -1
- package/dist/{index19.es.js → index.es19.js} +4 -4
- package/dist/{index19.es.js.map → index.es19.js.map} +1 -1
- package/dist/{index2.es.js → index.es2.js} +5 -5
- package/dist/{index2.es.js.map → index.es2.js.map} +1 -1
- package/dist/{index20.es.js → index.es20.js} +5 -5
- package/dist/{index20.es.js.map → index.es20.js.map} +1 -1
- package/dist/{index21.es.js → index.es21.js} +6 -6
- package/dist/{index21.es.js.map → index.es21.js.map} +1 -1
- package/dist/{index22.es.js → index.es22.js} +2 -2
- package/dist/{index22.es.js.map → index.es22.js.map} +1 -1
- package/dist/{index23.es.js → index.es23.js} +7 -7
- package/dist/{index23.es.js.map → index.es23.js.map} +1 -1
- package/dist/{index24.es.js → index.es24.js} +7 -7
- package/dist/{index24.es.js.map → index.es24.js.map} +1 -1
- package/dist/{index25.es.js → index.es25.js} +3 -3
- package/dist/{index25.es.js.map → index.es25.js.map} +1 -1
- package/dist/{index26.es.js → index.es26.js} +2 -2
- package/dist/{index26.es.js.map → index.es26.js.map} +1 -1
- package/dist/{index27.es.js → index.es27.js} +7 -7
- package/dist/{index27.es.js.map → index.es27.js.map} +1 -1
- package/dist/{index28.es.js → index.es28.js} +9 -9
- package/dist/{index28.es.js.map → index.es28.js.map} +1 -1
- package/dist/{index29.es.js → index.es29.js} +5 -5
- package/dist/{index29.es.js.map → index.es29.js.map} +1 -1
- package/dist/{index3.es.js → index.es3.js} +3 -3
- package/dist/{index3.es.js.map → index.es3.js.map} +1 -1
- package/dist/{index30.es.js → index.es30.js} +3 -3
- package/dist/{index30.es.js.map → index.es30.js.map} +1 -1
- package/dist/{index31.es.js → index.es31.js} +1 -1
- package/dist/{index31.es.js.map → index.es31.js.map} +1 -1
- package/dist/{index32.es.js → index.es32.js} +2 -2
- package/dist/{index32.es.js.map → index.es32.js.map} +1 -1
- package/dist/{index33.es.js → index.es33.js} +3 -3
- package/dist/{index33.es.js.map → index.es33.js.map} +1 -1
- package/dist/{index34.es.js → index.es34.js} +5 -5
- package/dist/{index34.es.js.map → index.es34.js.map} +1 -1
- package/dist/{index35.es.js → index.es35.js} +6 -6
- package/dist/{index35.es.js.map → index.es35.js.map} +1 -1
- package/dist/{index36.es.js → index.es36.js} +5 -5
- package/dist/{index36.es.js.map → index.es36.js.map} +1 -1
- package/dist/{index37.es.js → index.es37.js} +6 -6
- package/dist/{index37.es.js.map → index.es37.js.map} +1 -1
- package/dist/{index38.es.js → index.es38.js} +2 -2
- package/dist/{index38.es.js.map → index.es38.js.map} +1 -1
- package/dist/{index39.es.js → index.es39.js} +3 -3
- package/dist/{index39.es.js.map → index.es39.js.map} +1 -1
- package/dist/{index4.es.js → index.es4.js} +2 -2
- package/dist/{index4.es.js.map → index.es4.js.map} +1 -1
- package/dist/{index40.es.js → index.es40.js} +4 -4
- package/dist/{index40.es.js.map → index.es40.js.map} +1 -1
- package/dist/{index41.es.js → index.es41.js} +5 -5
- package/dist/{index41.es.js.map → index.es41.js.map} +1 -1
- package/dist/{index42.es.js → index.es42.js} +4 -4
- package/dist/{index42.es.js.map → index.es42.js.map} +1 -1
- package/dist/{index43.es.js → index.es43.js} +2 -2
- package/dist/{index43.es.js.map → index.es43.js.map} +1 -1
- package/dist/{index44.es.js → index.es44.js} +2 -2
- package/dist/{index44.es.js.map → index.es44.js.map} +1 -1
- package/dist/index.es45.js +69 -0
- package/dist/index.es45.js.map +1 -0
- package/dist/{index46.es.js → index.es46.js} +9 -9
- package/dist/{index46.es.js.map → index.es46.js.map} +1 -1
- package/dist/{index47.es.js → index.es47.js} +7 -7
- package/dist/{index47.es.js.map → index.es47.js.map} +1 -1
- package/dist/{index48.es.js → index.es48.js} +10 -10
- package/dist/{index48.es.js.map → index.es48.js.map} +1 -1
- package/dist/{index49.es.js → index.es49.js} +2 -2
- package/dist/{index49.es.js.map → index.es49.js.map} +1 -1
- package/dist/{index5.es.js → index.es5.js} +2 -2
- package/dist/{index5.es.js.map → index.es5.js.map} +1 -1
- package/dist/{index50.es.js → index.es50.js} +1 -1
- package/dist/{index50.es.js.map → index.es50.js.map} +1 -1
- package/dist/{index51.es.js → index.es51.js} +2 -2
- package/dist/{index51.es.js.map → index.es51.js.map} +1 -1
- package/dist/{index52.es.js → index.es52.js} +3 -3
- package/dist/{index52.es.js.map → index.es52.js.map} +1 -1
- package/dist/{index53.es.js → index.es53.js} +7 -7
- package/dist/{index53.es.js.map → index.es53.js.map} +1 -1
- package/dist/{index54.es.js → index.es54.js} +4 -4
- package/dist/{index54.es.js.map → index.es54.js.map} +1 -1
- package/dist/{index55.es.js → index.es55.js} +5 -5
- package/dist/{index55.es.js.map → index.es55.js.map} +1 -1
- package/dist/{index56.es.js → index.es56.js} +3 -3
- package/dist/{index56.es.js.map → index.es56.js.map} +1 -1
- package/dist/{index57.es.js → index.es57.js} +9 -9
- package/dist/{index57.es.js.map → index.es57.js.map} +1 -1
- package/dist/{index58.es.js → index.es58.js} +3 -4
- package/dist/{index58.es.js.map → index.es58.js.map} +1 -1
- package/dist/{index59.es.js → index.es59.js} +2 -2
- package/dist/{index59.es.js.map → index.es59.js.map} +1 -1
- package/dist/{index6.es.js → index.es6.js} +2 -2
- package/dist/{index6.es.js.map → index.es6.js.map} +1 -1
- package/dist/{index60.es.js → index.es60.js} +3 -3
- package/dist/{index60.es.js.map → index.es60.js.map} +1 -1
- package/dist/{index61.es.js → index.es61.js} +2 -2
- package/dist/{index61.es.js.map → index.es61.js.map} +1 -1
- package/dist/{index62.es.js → index.es62.js} +2 -2
- package/dist/{index62.es.js.map → index.es62.js.map} +1 -1
- package/dist/{index63.es.js → index.es63.js} +2 -2
- package/dist/{index63.es.js.map → index.es63.js.map} +1 -1
- package/dist/{index64.es.js → index.es64.js} +3 -3
- package/dist/{index64.es.js.map → index.es64.js.map} +1 -1
- package/dist/{index65.es.js → index.es65.js} +3 -3
- package/dist/{index65.es.js.map → index.es65.js.map} +1 -1
- package/dist/{index66.es.js → index.es66.js} +2 -2
- package/dist/{index66.es.js.map → index.es66.js.map} +1 -1
- package/dist/{index67.es.js → index.es67.js} +3 -3
- package/dist/{index67.es.js.map → index.es67.js.map} +1 -1
- package/dist/{index68.es.js → index.es68.js} +3 -3
- package/dist/{index68.es.js.map → index.es68.js.map} +1 -1
- package/dist/{index69.es.js → index.es69.js} +6 -6
- package/dist/{index69.es.js.map → index.es69.js.map} +1 -1
- package/dist/{index7.es.js → index.es7.js} +2 -2
- package/dist/{index7.es.js.map → index.es7.js.map} +1 -1
- package/dist/{index70.es.js → index.es70.js} +6 -6
- package/dist/{index70.es.js.map → index.es70.js.map} +1 -1
- package/dist/{index71.es.js → index.es71.js} +4 -4
- package/dist/{index71.es.js.map → index.es71.js.map} +1 -1
- package/dist/{index72.es.js → index.es72.js} +8 -8
- package/dist/{index72.es.js.map → index.es72.js.map} +1 -1
- package/dist/{index73.es.js → index.es73.js} +5 -5
- package/dist/{index73.es.js.map → index.es73.js.map} +1 -1
- package/dist/{index74.es.js → index.es74.js} +1 -1
- package/dist/{index74.es.js.map → index.es74.js.map} +1 -1
- package/dist/{index75.es.js → index.es75.js} +1 -1
- package/dist/{index75.es.js.map → index.es75.js.map} +1 -1
- package/dist/{index76.es.js → index.es76.js} +1 -1
- package/dist/{index76.es.js.map → index.es76.js.map} +1 -1
- package/dist/{index77.es.js → index.es77.js} +1 -1
- package/dist/{index77.es.js.map → index.es77.js.map} +1 -1
- package/dist/{index78.es.js → index.es78.js} +2 -2
- package/dist/{index78.es.js.map → index.es78.js.map} +1 -1
- package/dist/{index79.es.js → index.es79.js} +1 -1
- package/dist/{index79.es.js.map → index.es79.js.map} +1 -1
- package/dist/{index8.es.js → index.es8.js} +3 -3
- package/dist/{index8.es.js.map → index.es8.js.map} +1 -1
- package/dist/{index80.es.js → index.es80.js} +3 -3
- package/dist/{index80.es.js.map → index.es80.js.map} +1 -1
- package/dist/{index81.es.js → index.es81.js} +4 -4
- package/dist/{index81.es.js.map → index.es81.js.map} +1 -1
- package/dist/{index82.es.js → index.es82.js} +1 -1
- package/dist/{index82.es.js.map → index.es82.js.map} +1 -1
- package/dist/{index83.es.js → index.es83.js} +1 -1
- package/dist/{index83.es.js.map → index.es83.js.map} +1 -1
- package/dist/{index84.es.js.map → index.es84.js.map} +1 -1
- package/dist/{index85.es.js → index.es85.js} +2 -2
- package/dist/{index85.es.js.map → index.es85.js.map} +1 -1
- package/dist/{index86.es.js → index.es86.js} +2 -2
- package/dist/{index86.es.js.map → index.es86.js.map} +1 -1
- package/dist/{index87.es.js → index.es87.js} +1 -1
- package/dist/{index87.es.js.map → index.es87.js.map} +1 -1
- package/dist/index.es88.js +5 -0
- package/dist/index.es88.js.map +1 -0
- package/dist/{index89.es.js → index.es89.js} +1 -1
- package/dist/{index89.es.js.map → index.es89.js.map} +1 -1
- package/dist/{index9.es.js → index.es9.js} +4 -4
- package/dist/{index9.es.js.map → index.es9.js.map} +1 -1
- package/dist/{index90.es.js → index.es90.js} +2 -2
- package/dist/{index90.es.js.map → index.es90.js.map} +1 -1
- package/dist/{index91.es.js → index.es91.js} +3 -3
- package/dist/{index91.es.js.map → index.es91.js.map} +1 -1
- package/dist/{index92.es.js → index.es92.js} +1 -1
- package/dist/{index92.es.js.map → index.es92.js.map} +1 -1
- package/dist/{index93.es.js → index.es93.js} +1 -1
- package/dist/{index93.es.js.map → index.es93.js.map} +1 -1
- package/dist/{index94.es.js → index.es94.js} +1 -1
- package/dist/{index94.es.js.map → index.es94.js.map} +1 -1
- package/dist/{index95.es.js → index.es95.js} +1 -1
- package/dist/{index95.es.js.map → index.es95.js.map} +1 -1
- package/dist/{index96.es.js → index.es96.js} +1 -1
- package/dist/{index96.es.js.map → index.es96.js.map} +1 -1
- package/dist/{index117.es.js → index.es97.js} +1 -1
- package/dist/index.es97.js.map +1 -0
- package/dist/{index118.es.js → index.es98.js} +24 -23
- package/dist/index.es98.js.map +1 -0
- package/dist/{index119.es.js → index.es99.js} +1 -1
- package/dist/index.es99.js.map +1 -0
- package/dist/styles.css +72 -11
- package/package.json +1 -1
- package/dist/index117.es.js.map +0 -1
- package/dist/index118.es.js.map +0 -1
- package/dist/index119.es.js.map +0 -1
- package/dist/index120.es.js +0 -105
- package/dist/index120.es.js.map +0 -1
- package/dist/index144.es.js.map +0 -1
- package/dist/index149.es.js.map +0 -1
- package/dist/index150.es.js +0 -325
- package/dist/index150.es.js.map +0 -1
- package/dist/index151.es.js.map +0 -1
- package/dist/index153.es.js.map +0 -1
- package/dist/index156.es.js +0 -146
- package/dist/index156.es.js.map +0 -1
- package/dist/index158.es.js +0 -50
- package/dist/index158.es.js.map +0 -1
- package/dist/index163.es.js +0 -216
- package/dist/index163.es.js.map +0 -1
- package/dist/index168.es.js +0 -94
- package/dist/index168.es.js.map +0 -1
- package/dist/index169.es.js +0 -120
- package/dist/index169.es.js.map +0 -1
- package/dist/index45.es.js +0 -67
- package/dist/index45.es.js.map +0 -1
- package/dist/index88.es.js +0 -5
- package/dist/index88.es.js.map +0 -1
- package/dist/index97.es.js.map +0 -1
- package/dist/index98.es.js.map +0 -1
- package/dist/index99.es.js.map +0 -1
- package/dist/{index84.es.js → index.es84.js} +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"index.es182.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/repeatable-group/index.tsx"],"sourcesContent":["// components/form-fields/RepeatableGroup.tsx\nimport React from 'react'\nimport { Typography } from '@/components/atoms/typography'\nimport { Button } from '@/components/atoms/button'\n\nimport { FormField } from '../../index' // Import your existing FormField component\nimport { useFormValues } from '../../../../context/form-values'\nimport { FormValues, RepeatableGroupField } from '../../../../form.types'\nimport { Plus } from 'lucide-react'\n\ninterface FormFieldProps {\n field: RepeatableGroupField\n}\n\nexport const RepeatableGroup: React.FC<FormFieldProps> = ({ field }) => {\n const { values, setValue, setFormValues } = useFormValues()\n\n // Get all entries for this repeatable group\n const getEntries = () => {\n const entries: FormValues[] = []\n const prefix = `${field.id}||`\n\n // Find all entry indices in one pass\n const entryIndices = new Set<number>()\n Object.keys(values).forEach((key) => {\n if (key.startsWith(prefix)) {\n const match = key.match(new RegExp(`^${field.id}\\\\|\\\\|(\\\\d+)\\\\|\\\\|`))\n if (match && match[1]) {\n entryIndices.add(parseInt(match[1]))\n }\n }\n })\n\n // Sort indices numerically\n const sortedIndices = Array.from(entryIndices).sort((a, b) => a - b)\n\n // Build entry objects\n for (const index of sortedIndices) {\n const entryObject: FormValues = {}\n\n // Collect all subfields for this entry\n for (const subField of field.options) {\n const key = `${field.id}||${index}||${subField.id}`\n if (key in values) {\n entryObject[subField.id] = values[key]\n }\n }\n\n entries.push(entryObject)\n }\n\n return entries\n }\n\n const entries = getEntries()\n\n const handleAddEntry = () => {\n const newIndex = entries.length\n // Initialize new entry by setting values for each subfield\n field.options.forEach((subField) => {\n setValue(`${field.id}||${newIndex}||${subField.id}`, undefined)\n })\n }\n\n const handleRemoveEntry = (indexToRemove: number) => {\n const newValues = { ...values }\n\n // Step 1: Find all keys associated with all entries of this repeatable group\n const groupPrefix = `${field.id}||`\n const allGroupKeys = Object.keys(values).filter((key) =>\n key.startsWith(groupPrefix)\n )\n\n // Step 2: Process each key - either remove it or reindex it\n allGroupKeys.forEach((key) => {\n // Extract entry index from the key\n const match = key.match(new RegExp(`^${field.id}\\\\|\\\\|(\\\\d+)\\\\|\\\\|`))\n if (match && match[1]) {\n const entryIndex = parseInt(match[1])\n\n if (entryIndex === indexToRemove) {\n // Delete keys for the entry being removed\n delete newValues[key]\n } else if (entryIndex > indexToRemove) {\n // Reindex entries that come after the removed one\n const remainingPart = key.substring(\n key.indexOf('||', groupPrefix.length)\n )\n\n const newKey = `${field.id}||${entryIndex - 1}${remainingPart}`\n\n // Copy the value to the new index\n newValues[newKey] = values[key]\n\n // Remove the old key\n delete newValues[key]\n }\n }\n })\n\n // Update form values with a single call\n setFormValues(newValues)\n }\n\n // Rest of your component remains largely the same\n return (\n <div className=\"flex flex-col gap-4\">\n {entries.length === 0 && (\n <div className=\"flex items-center justify-between\">\n <Typography variant={'body1'} className=\"text-light-4\">\n No entry added yet.\n </Typography>\n <Button\n size=\"sm\"\n prefixIcon={<Plus size={20} />}\n variant=\"secondary\"\n onClick={handleAddEntry}\n className=\"capitalize w-fit\"\n title={`Add `}\n />\n </div>\n )}\n\n {entries.map((_, entryIndex) => (\n <div key={`${field.id}-entry-${entryIndex}`}>\n <div className=\"flex items-center justify-between mb-3\">\n <Typography variant=\"body2\" className=\"text-light-4\">\n Entry {entryIndex + 1}\n </Typography>\n <Button\n size=\"sm\"\n variant=\"link-secondary\"\n onClick={() => handleRemoveEntry(entryIndex)}\n className=\"w-fit text-danger-1\"\n >\n Remove\n </Button>\n </div>\n\n <div className=\"flex flex-col gap-3\">\n {field.options.map((subField) => {\n const uniqueId = `${field.id}||${entryIndex}||${subField.id}`\n const modifiedField = {\n ...subField,\n id: uniqueId,\n }\n return <FormField key={uniqueId} field={modifiedField} />\n })}\n </div>\n </div>\n ))}\n {entries.length ? (\n <div className=\"flex justify-end\">\n <Button\n size=\"sm\"\n prefixIcon={<Plus size={20} />}\n variant=\"secondary\"\n onClick={handleAddEntry}\n className=\"mt-2 capitalize w-fit\"\n title={`Add more ${field.name}`}\n />\n </div>\n ) : null}\n </div>\n )\n}\n"],"names":["RepeatableGroup","field","values","setValue","setFormValues","useFormValues","entries","prefix","entryIndices","key","match","sortedIndices","a","b","index","entryObject","subField","handleAddEntry","newIndex","handleRemoveEntry","indexToRemove","newValues","groupPrefix","entryIndex","remainingPart","newKey","React","Typography","Button","Plus","_","uniqueId","modifiedField","FormField"],"mappings":";;;;;;AAcO,MAAMA,IAA4C,CAAC,EAAE,OAAAC,QAAY;AACtE,QAAM,EAAE,QAAAC,GAAQ,UAAAC,GAAU,eAAAC,EAAA,IAAkBC,EAAA,GAuCtCC,KApCa,MAAM;AACvB,UAAMA,IAAwB,CAAA,GACxBC,IAAS,GAAGN,EAAM,EAAE,MAGpBO,wBAAmB,IAAA;AACzB,WAAO,KAAKN,CAAM,EAAE,QAAQ,CAACO,MAAQ;AACnC,UAAIA,EAAI,WAAWF,CAAM,GAAG;AAC1B,cAAMG,IAAQD,EAAI,MAAM,IAAI,OAAO,IAAIR,EAAM,EAAE,oBAAoB,CAAC;AACpE,QAAIS,KAASA,EAAM,CAAC,KAClBF,EAAa,IAAI,SAASE,EAAM,CAAC,CAAC,CAAC;AAAA,MAEvC;AAAA,IACF,CAAC;AAGD,UAAMC,IAAgB,MAAM,KAAKH,CAAY,EAAE,KAAK,CAACI,GAAGC,MAAMD,IAAIC,CAAC;AAGnE,eAAWC,KAASH,GAAe;AACjC,YAAMI,IAA0B,CAAA;AAGhC,iBAAWC,KAAYf,EAAM,SAAS;AACpC,cAAMQ,IAAM,GAAGR,EAAM,EAAE,KAAKa,CAAK,KAAKE,EAAS,EAAE;AACjD,QAAIP,KAAOP,MACTa,EAAYC,EAAS,EAAE,IAAId,EAAOO,CAAG;AAAA,MAEzC;AAEAH,MAAAA,EAAQ,KAAKS,CAAW;AAAA,IAC1B;AAEA,WAAOT;AAAAA,EACT,GAEgB,GAEVW,IAAiB,MAAM;AAC3B,UAAMC,IAAWZ,EAAQ;AAEzB,IAAAL,EAAM,QAAQ,QAAQ,CAACe,MAAa;AAClC,MAAAb,EAAS,GAAGF,EAAM,EAAE,KAAKiB,CAAQ,KAAKF,EAAS,EAAE,IAAI,MAAS;AAAA,IAChE,CAAC;AAAA,EACH,GAEMG,IAAoB,CAACC,MAA0B;AACnD,UAAMC,IAAY,EAAE,GAAGnB,EAAA,GAGjBoB,IAAc,GAAGrB,EAAM,EAAE;AAM/B,IALqB,OAAO,KAAKC,CAAM,EAAE;AAAA,MAAO,CAACO,MAC/CA,EAAI,WAAWa,CAAW;AAAA,IAAA,EAIf,QAAQ,CAACb,MAAQ;AAE5B,YAAMC,IAAQD,EAAI,MAAM,IAAI,OAAO,IAAIR,EAAM,EAAE,oBAAoB,CAAC;AACpE,UAAIS,KAASA,EAAM,CAAC,GAAG;AACrB,cAAMa,IAAa,SAASb,EAAM,CAAC,CAAC;AAEpC,YAAIa,MAAeH;AAEjB,iBAAOC,EAAUZ,CAAG;AAAA,iBACXc,IAAaH,GAAe;AAErC,gBAAMI,IAAgBf,EAAI;AAAA,YACxBA,EAAI,QAAQ,MAAMa,EAAY,MAAM;AAAA,UAAA,GAGhCG,IAAS,GAAGxB,EAAM,EAAE,KAAKsB,IAAa,CAAC,GAAGC,CAAa;AAG7D,UAAAH,EAAUI,CAAM,IAAIvB,EAAOO,CAAG,GAG9B,OAAOY,EAAUZ,CAAG;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAC,GAGDL,EAAciB,CAAS;AAAA,EACzB;AAGA,yCACG,OAAA,EAAI,WAAU,yBACZf,EAAQ,WAAW,KAClBoB,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,oCAAA,mCACZC,GAAA,EAAW,SAAS,SAAS,WAAU,eAAA,GAAe,qBAEvD,GACAD,gBAAAA,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAYF,gBAAAA,EAAA,cAACG,GAAA,EAAK,MAAM,IAAI;AAAA,MAC5B,SAAQ;AAAA,MACR,SAASZ;AAAA,MACT,WAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,EAAA,CAEX,GAGDX,EAAQ,IAAI,CAACwB,GAAGP,MACfG,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAK,GAAGzB,EAAM,EAAE,UAAUsB,CAAU,GAAA,GACvCG,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,yCAAA,GACbA,gBAAAA,EAAA,cAACC,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBAAe,UAC5CJ,IAAa,CACtB,GACAG,gBAAAA,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,SAAS,MAAMT,EAAkBI,CAAU;AAAA,MAC3C,WAAU;AAAA,IAAA;AAAA,IACX;AAAA,EAAA,CAGH,GAEAG,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,yBACZzB,EAAM,QAAQ,IAAI,CAACe,MAAa;AAC/B,UAAMe,IAAW,GAAG9B,EAAM,EAAE,KAAKsB,CAAU,KAAKP,EAAS,EAAE,IACrDgB,IAAgB;AAAA,MACpB,GAAGhB;AAAA,MACH,IAAIe;AAAA,IAAA;AAEN,WAAOL,gBAAAA,EAAA,cAACO,GAAA,EAAU,KAAKF,GAAU,OAAOC,GAAe;AAAA,EACzD,CAAC,CACH,CACF,CACD,GACA1B,EAAQ,SACPoB,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACbA,gBAAAA,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAYF,gBAAAA,EAAA,cAACG,GAAA,EAAK,MAAM,IAAI;AAAA,MAC5B,SAAQ;AAAA,MACR,SAASZ;AAAA,MACT,WAAU;AAAA,MACV,OAAO,YAAYhB,EAAM,IAAI;AAAA,IAAA;AAAA,EAAA,CAEjC,IACE,IACN;AAEJ;"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { Typography as g } from "./
|
|
2
|
-
import
|
|
3
|
-
import "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
const q = ({
|
|
1
|
+
import { Typography as g } from "./index.es19.js";
|
|
2
|
+
import { Spinner as $ } from "./index.es64.js";
|
|
3
|
+
import { SingleCombobox as x } from "./index.es27.js";
|
|
4
|
+
import { Upload as T, Pen as R, X as S } from "lucide-react";
|
|
5
|
+
import e, { useState as _, useRef as C } from "react";
|
|
6
|
+
import { useFormValues as M } from "./index.es161.js";
|
|
7
|
+
import { useToast as P } from "./index.es87.js";
|
|
8
|
+
const X = ({
|
|
10
9
|
id: h,
|
|
11
10
|
onChange: c,
|
|
12
11
|
value: l = [],
|
|
@@ -15,9 +14,9 @@ const q = ({
|
|
|
15
14
|
maxImages: a = 20,
|
|
16
15
|
options: E
|
|
17
16
|
}) => {
|
|
18
|
-
const { onAssetUpload: u, onToggleImageEditor: f } =
|
|
17
|
+
const { onAssetUpload: u, onToggleImageEditor: f } = M(), { toast: o } = P(), [n, b] = _(!1), m = C(null), N = async (s) => {
|
|
19
18
|
const t = s.target.files;
|
|
20
|
-
if (!(!t?.length ||
|
|
19
|
+
if (!(!t?.length || n)) {
|
|
21
20
|
if (l.length + t.length > a) {
|
|
22
21
|
o({
|
|
23
22
|
title: "Alert!",
|
|
@@ -47,29 +46,29 @@ const q = ({
|
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
48
|
}, w = () => {
|
|
50
|
-
!
|
|
49
|
+
!n && l.length < a ? m.current?.click() : l.length >= a && o({
|
|
51
50
|
title: "Alert!",
|
|
52
51
|
description: `Maximum ${a} images allowed.`,
|
|
53
52
|
icon: "warning"
|
|
54
53
|
});
|
|
55
54
|
}, k = (s) => {
|
|
56
|
-
if (!
|
|
55
|
+
if (!n) {
|
|
57
56
|
const t = [...l];
|
|
58
57
|
t.splice(s, 1), c(t);
|
|
59
58
|
}
|
|
60
59
|
}, v = (s, t) => {
|
|
61
|
-
const r = [...l],
|
|
62
|
-
r.splice(t, 1, { ...
|
|
60
|
+
const r = [...l], i = r[t];
|
|
61
|
+
r.splice(t, 1, { ...i, ...s }), c(r);
|
|
63
62
|
};
|
|
64
|
-
return /* @__PURE__ */ e.createElement("div", { className: "relative" },
|
|
63
|
+
return /* @__PURE__ */ e.createElement("div", { className: "relative" }, n && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement($, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement(
|
|
65
64
|
"button",
|
|
66
65
|
{
|
|
67
66
|
className: "w-full",
|
|
68
67
|
onClick: w,
|
|
69
68
|
type: "button",
|
|
70
|
-
disabled:
|
|
69
|
+
disabled: n || l.length >= a
|
|
71
70
|
},
|
|
72
|
-
/* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(
|
|
71
|
+
/* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(T, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(g, { variant: "body1", className: "text-gray-600" }, n ? "Uploading..." : l.length >= a ? `Maximum ${a} images reached` : "Add Images"), l.length > 0 && /* @__PURE__ */ e.createElement(g, { variant: "body1", className: "text-gray-500" }, l.length, " of ", a, " images"))
|
|
73
72
|
), /* @__PURE__ */ e.createElement(
|
|
74
73
|
"input",
|
|
75
74
|
{
|
|
@@ -77,7 +76,7 @@ const q = ({
|
|
|
77
76
|
id: `${h}-gallery`,
|
|
78
77
|
type: "file",
|
|
79
78
|
accept: y,
|
|
80
|
-
disabled:
|
|
79
|
+
disabled: n || l.length >= a,
|
|
81
80
|
onChange: N,
|
|
82
81
|
className: "hidden",
|
|
83
82
|
multiple: !0
|
|
@@ -102,18 +101,18 @@ const q = ({
|
|
|
102
101
|
},
|
|
103
102
|
className: "absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100"
|
|
104
103
|
},
|
|
105
|
-
/* @__PURE__ */ e.createElement(
|
|
104
|
+
/* @__PURE__ */ e.createElement(R, { size: 16, className: "stroke-danger" })
|
|
106
105
|
), /* @__PURE__ */ e.createElement(
|
|
107
106
|
"button",
|
|
108
107
|
{
|
|
109
108
|
onClick: () => k(t),
|
|
110
109
|
className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100",
|
|
111
110
|
type: "button",
|
|
112
|
-
disabled:
|
|
111
|
+
disabled: n
|
|
113
112
|
},
|
|
114
|
-
/* @__PURE__ */ e.createElement(
|
|
113
|
+
/* @__PURE__ */ e.createElement(S, { size: 16, className: "stroke-danger" })
|
|
115
114
|
)), /* @__PURE__ */ e.createElement(
|
|
116
|
-
|
|
115
|
+
x,
|
|
117
116
|
{
|
|
118
117
|
options: E.map((r) => ({
|
|
119
118
|
id: r,
|
|
@@ -121,14 +120,14 @@ const q = ({
|
|
|
121
120
|
})),
|
|
122
121
|
value: s.tag,
|
|
123
122
|
onChange: (r) => {
|
|
124
|
-
const
|
|
125
|
-
|
|
123
|
+
const i = [...l];
|
|
124
|
+
i[t].tag = r, c(i);
|
|
126
125
|
},
|
|
127
126
|
placeholder: "Select "
|
|
128
127
|
}
|
|
129
128
|
)))));
|
|
130
129
|
};
|
|
131
130
|
export {
|
|
132
|
-
|
|
131
|
+
X as TaggableMultiImagePicker
|
|
133
132
|
};
|
|
134
|
-
//# sourceMappingURL=
|
|
133
|
+
//# sourceMappingURL=index.es183.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index178.es.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/taggable-multi-image-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { SingleCombobox } from '@/components/molecules/single-combobox'\n\nimport { Upload, X, Pen } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue, TaggableAssetValue } from '../../../../form.types'\n\ninterface TaggableMultiImagePickerProps {\n id: string\n onChange: (data: TaggableAssetValue[]) => void\n value?: TaggableAssetValue[]\n accept?: string\n error?: string\n maxImages?: number\n options: string[]\n}\n\nconst TaggableMultiImagePicker: React.FC<TaggableMultiImagePickerProps> = ({\n id,\n onChange,\n value = [],\n accept = 'image/*',\n error,\n maxImages = 20,\n options,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (!files?.length || isLoading) return\n\n if (value.length + files.length > maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n return\n }\n\n if (onAssetUpload) {\n setIsLoading(true)\n\n try {\n const uploads = Array.from(files).map((file) => onAssetUpload(file))\n const results = await Promise.all(uploads)\n\n const TaggedResults = results.map((result) => ({ ...result, tag: '' }))\n\n onChange([...value, ...TaggedResults])\n\n toast({\n title: 'Alert!',\n description: `${files.length} ${files.length === 1 ? 'image' : 'images'} uploaded successfully.`,\n icon: 'success',\n })\n } catch (error) {\n toast({\n title: 'Alert!',\n description: `Error uploading images`,\n icon: 'warning',\n })\n } finally {\n setIsLoading(false)\n // Reset the file input so the same files can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n }\n }\n }\n\n const handleClick = () => {\n if (!isLoading && value.length < maxImages) {\n fileInputRef.current?.click()\n } else if (value.length >= maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n }\n }\n\n const removeImage = (index: number) => {\n if (!isLoading) {\n const newImages = [...value]\n newImages.splice(index, 1)\n onChange(newImages)\n }\n }\n\n const onReplaceImage = (data: AssetValue, index: number) => {\n const newValue = [...value]\n const existingImage = newValue[index]\n\n newValue.splice(index, 1, { ...existingImage, ...data })\n onChange(newValue)\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button\n className=\"w-full\"\n onClick={handleClick}\n type=\"button\"\n disabled={isLoading || value.length >= maxImages}\n >\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value.length >= maxImages\n ? `Maximum ${maxImages} images reached`\n : 'Add Images'}\n </Typography>\n {value.length > 0 && (\n <Typography variant=\"body1\" className=\"text-gray-500\">\n {value.length} of {maxImages} images\n </Typography>\n )}\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading || value.length >= maxImages}\n onChange={handleImageSelect}\n className=\"hidden\"\n multiple\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n\n {value.length > 0 && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n {value.map((image, index) => (\n <div key={image.private_url} className=\"flex flex-col gap-2\">\n <div key={index} className=\"relative flex rounded\">\n <img\n src={image.public_url}\n alt={`Preview ${index + 1}`}\n className=\"object-cover w-full h-24 rounded\"\n />\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: image.public_url,\n index,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n <button\n onClick={() => removeImage(index)}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n type=\"button\"\n disabled={isLoading}\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n <SingleCombobox\n options={options.map((option) => ({\n id: option,\n name: option,\n }))}\n value={image.tag}\n onChange={(data) => {\n const newImages = [...value]\n newImages[index].tag = data\n onChange(newImages)\n }}\n placeholder={'Select '}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { TaggableMultiImagePicker }\n"],"names":["TaggableMultiImagePicker","id","onChange","value","accept","error","maxImages","options","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","files","uploads","file","TaggedResults","result","handleClick","removeImage","index","newImages","onReplaceImage","data","newValue","existingImage","React","Spinner","Upload","Typography","image","Pen","X","SingleCombobox","option"],"mappings":";;;;;;;;AAoBA,MAAMA,IAAoE,CAAC;AAAA,EACzE,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC,IAAQ,CAAA;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,SAAAC;AACF,MAAM;AACJ,QAAM,EAAE,eAAAC,GAAe,qBAAAC,EAAA,IAAwBC,EAAA,GACzC,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZ,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAeC,EAAyB,IAAI,GAE5CC,IAAoB,OAAOC,MAA2C;AAC1E,UAAMC,IAAQD,EAAE,OAAO;AACvB,QAAI,GAACC,GAAO,UAAUP,IAEtB;AAAA,UAAIV,EAAM,SAASiB,EAAM,SAASd,GAAW;AAC3C,QAAAK,EAAM;AAAA,UACJ,OAAO;AAAA,UACP,aAAa,WAAWL,CAAS;AAAA,UACjC,MAAM;AAAA,QAAA,CACP;AACD;AAAA,MACF;AAEA,UAAIE,GAAe;AACjB,QAAAM,EAAa,EAAI;AAEjB,YAAI;AACF,gBAAMO,IAAU,MAAM,KAAKD,CAAK,EAAE,IAAI,CAACE,MAASd,EAAcc,CAAI,CAAC,GAG7DC,KAFU,MAAM,QAAQ,IAAIF,CAAO,GAEX,IAAI,CAACG,OAAY,EAAE,GAAGA,GAAQ,KAAK,GAAA,EAAK;AAEtE,UAAAtB,EAAS,CAAC,GAAGC,GAAO,GAAGoB,CAAa,CAAC,GAErCZ,EAAM;AAAA,YACJ,OAAO;AAAA,YACP,aAAa,GAAGS,EAAM,MAAM,IAAIA,EAAM,WAAW,IAAI,UAAU,QAAQ;AAAA,YACvE,MAAM;AAAA,UAAA,CACP;AAAA,QACH,QAAgB;AACd,UAAAT,EAAM;AAAA,YACJ,OAAO;AAAA,YACP,aAAa;AAAA,YACb,MAAM;AAAA,UAAA,CACP;AAAA,QACH,UAAA;AACE,UAAAG,EAAa,EAAK,GAEdE,EAAa,YACfA,EAAa,QAAQ,QAAQ;AAAA,QAEjC;AAAA,MACF;AAAA;AAAA,EACF,GAEMS,IAAc,MAAM;AACxB,IAAI,CAACZ,KAAaV,EAAM,SAASG,IAC/BU,EAAa,SAAS,MAAA,IACbb,EAAM,UAAUG,KACzBK,EAAM;AAAA,MACJ,OAAO;AAAA,MACP,aAAa,WAAWL,CAAS;AAAA,MACjC,MAAM;AAAA,IAAA,CACP;AAAA,EAEL,GAEMoB,IAAc,CAACC,MAAkB;AACrC,QAAI,CAACd,GAAW;AACd,YAAMe,IAAY,CAAC,GAAGzB,CAAK;AAC3B,MAAAyB,EAAU,OAAOD,GAAO,CAAC,GACzBzB,EAAS0B,CAAS;AAAA,IACpB;AAAA,EACF,GAEMC,IAAiB,CAACC,GAAkBH,MAAkB;AAC1D,UAAMI,IAAW,CAAC,GAAG5B,CAAK,GACpB6B,IAAgBD,EAASJ,CAAK;AAEpC,IAAAI,EAAS,OAAOJ,GAAO,GAAG,EAAE,GAAGK,GAAe,GAAGF,GAAM,GACvD5B,EAAS6B,CAAQ;AAAA,EACnB;AAEA,yCACG,OAAA,EAAI,WAAU,cACZlB,KACCoB,gBAAAA,EAAA,cAAC,SAAI,WAAU,gFAAA,GACbA,gBAAAA,EAAA,cAACC,GAAA,EAAQ,WAAU,yBAAA,CAAyB,CAC9C,GAEFD,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,+EAAA,GACbA,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAASR;AAAA,MACT,MAAK;AAAA,MACL,UAAUZ,KAAaV,EAAM,UAAUG;AAAA,IAAA;AAAA,IAEvC2B,gBAAAA,EAAA,cAAC,SAAI,WAAU,+CAAA,mCACZ,OAAA,EAAI,WAAU,8BACbA,gBAAAA,EAAA,cAACE,GAAA,EAAO,WAAU,wBAAA,CAAwB,CAC5C,GACAF,gBAAAA,EAAA,cAACG,GAAA,EAAW,SAAQ,SAAQ,WAAU,mBACnCvB,IACG,iBACAV,EAAM,UAAUG,IACd,WAAWA,CAAS,oBACpB,YACR,GACCH,EAAM,SAAS,KACd8B,gBAAAA,EAAA,cAACG,KAAW,SAAQ,SAAQ,WAAU,gBAAA,GACnCjC,EAAM,QAAO,QAAKG,GAAU,SAC/B,CAEJ;AAAA,EAAA,GAEF2B,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKjB;AAAA,MACL,IAAI,GAAGf,CAAE;AAAA,MACT,MAAK;AAAA,MACL,QAAAG;AAAA,MACA,UAAUS,KAAaV,EAAM,UAAUG;AAAA,MACvC,UAAUY;AAAA,MACV,WAAU;AAAA,MACV,UAAQ;AAAA,IAAA;AAAA,EAAA,GAGTb,KACC4B,gBAAAA,EAAA,cAACG,GAAA,EAAW,SAAQ,SAAQ,WAAU,wBACnC/B,CACH,CAEJ,GAECF,EAAM,SAAS,qCACb,OAAA,EAAI,WAAU,4DAAA,GACZA,EAAM,IAAI,CAACkC,GAAOV,MACjBM,gBAAAA,EAAA,cAAC,SAAI,KAAKI,EAAM,aAAa,WAAU,yBACrCJ,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAKN,GAAO,WAAU,2BACzBM,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKI,EAAM;AAAA,MACX,KAAK,WAAWV,IAAQ,CAAC;AAAA,MACzB,WAAU;AAAA,IAAA;AAAA,EAAA,GAEXlB,KACCwB,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,CAACd,MAAM;AACd,QAAAA,EAAE,cAAc,KAAA,GAChBV,EAAoB;AAAA,UAClB,UAAU4B,EAAM;AAAA,UAChB,OAAAV;AAAA,UACA,gBAAAE;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,WAAU;AAAA,IAAA;AAAA,IAEVI,gBAAAA,EAAA,cAACK,GAAA,EAAI,MAAM,IAAI,WAAU,gBAAA,CAAgB;AAAA,EAAA,GAG7CL,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAMP,EAAYC,CAAK;AAAA,MAChC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,UAAUd;AAAA,IAAA;AAAA,IAEVoB,gBAAAA,EAAA,cAACM,GAAA,EAAE,MAAM,IAAI,WAAU,gBAAA,CAAgB;AAAA,EAAA,CAE3C,GACAN,gBAAAA,EAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,SAASjC,EAAQ,IAAI,CAACkC,OAAY;AAAA,QAChC,IAAIA;AAAA,QACJ,MAAMA;AAAA,MAAA,EACN;AAAA,MACF,OAAOJ,EAAM;AAAA,MACb,UAAU,CAACP,MAAS;AAClB,cAAMF,IAAY,CAAC,GAAGzB,CAAK;AAC3B,QAAAyB,EAAUD,CAAK,EAAE,MAAMG,GACvB5B,EAAS0B,CAAS;AAAA,MACpB;AAAA,MACA,aAAa;AAAA,IAAA;AAAA,EAAA,CAEjB,CACD,CACH,CAEJ;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"index.es183.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/taggable-multi-image-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { SingleCombobox } from '@/components/molecules/single-combobox'\n\nimport { Upload, X, Pen } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue, TaggableAssetValue } from '../../../../form.types'\n\ninterface TaggableMultiImagePickerProps {\n id: string\n onChange: (data: TaggableAssetValue[]) => void\n value?: TaggableAssetValue[]\n accept?: string\n error?: string\n maxImages?: number\n options: string[]\n}\n\nconst TaggableMultiImagePicker: React.FC<TaggableMultiImagePickerProps> = ({\n id,\n onChange,\n value = [],\n accept = 'image/*',\n error,\n maxImages = 20,\n options,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (!files?.length || isLoading) return\n\n if (value.length + files.length > maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n return\n }\n\n if (onAssetUpload) {\n setIsLoading(true)\n\n try {\n const uploads = Array.from(files).map((file) => onAssetUpload(file))\n const results = await Promise.all(uploads)\n\n const TaggedResults = results.map((result) => ({ ...result, tag: '' }))\n\n onChange([...value, ...TaggedResults])\n\n toast({\n title: 'Alert!',\n description: `${files.length} ${files.length === 1 ? 'image' : 'images'} uploaded successfully.`,\n icon: 'success',\n })\n } catch (error) {\n toast({\n title: 'Alert!',\n description: `Error uploading images`,\n icon: 'warning',\n })\n } finally {\n setIsLoading(false)\n // Reset the file input so the same files can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n }\n }\n }\n\n const handleClick = () => {\n if (!isLoading && value.length < maxImages) {\n fileInputRef.current?.click()\n } else if (value.length >= maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n }\n }\n\n const removeImage = (index: number) => {\n if (!isLoading) {\n const newImages = [...value]\n newImages.splice(index, 1)\n onChange(newImages)\n }\n }\n\n const onReplaceImage = (data: AssetValue, index: number) => {\n const newValue = [...value]\n const existingImage = newValue[index]\n\n newValue.splice(index, 1, { ...existingImage, ...data })\n onChange(newValue)\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button\n className=\"w-full\"\n onClick={handleClick}\n type=\"button\"\n disabled={isLoading || value.length >= maxImages}\n >\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value.length >= maxImages\n ? `Maximum ${maxImages} images reached`\n : 'Add Images'}\n </Typography>\n {value.length > 0 && (\n <Typography variant=\"body1\" className=\"text-gray-500\">\n {value.length} of {maxImages} images\n </Typography>\n )}\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading || value.length >= maxImages}\n onChange={handleImageSelect}\n className=\"hidden\"\n multiple\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n\n {value.length > 0 && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n {value.map((image, index) => (\n <div key={image.private_url} className=\"flex flex-col gap-2\">\n <div key={index} className=\"relative flex rounded\">\n <img\n src={image.public_url}\n alt={`Preview ${index + 1}`}\n className=\"object-cover w-full h-24 rounded\"\n />\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: image.public_url,\n index,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n <button\n onClick={() => removeImage(index)}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n type=\"button\"\n disabled={isLoading}\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n <SingleCombobox\n options={options.map((option) => ({\n id: option,\n name: option,\n }))}\n value={image.tag}\n onChange={(data) => {\n const newImages = [...value]\n newImages[index].tag = data\n onChange(newImages)\n }}\n placeholder={'Select '}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { TaggableMultiImagePicker }\n"],"names":["TaggableMultiImagePicker","id","onChange","value","accept","error","maxImages","options","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","files","uploads","file","TaggedResults","result","handleClick","removeImage","index","newImages","onReplaceImage","data","newValue","existingImage","React","Spinner","Upload","Typography","image","Pen","X","SingleCombobox","option"],"mappings":"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"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import * as e from "react";
|
|
2
2
|
import { useState as $, useRef as T } from "react";
|
|
3
|
-
import { Input as x } from "./
|
|
4
|
-
import { Typography as g } from "./
|
|
5
|
-
import "./
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
const W = ({
|
|
3
|
+
import { Input as x } from "./index.es11.js";
|
|
4
|
+
import { Typography as g } from "./index.es19.js";
|
|
5
|
+
import { Spinner as R } from "./index.es64.js";
|
|
6
|
+
import { Upload as U, Pen as I, X as z } from "lucide-react";
|
|
7
|
+
import { useFormValues as C } from "./index.es161.js";
|
|
8
|
+
import { useToast as M } from "./index.es87.js";
|
|
9
|
+
const q = ({
|
|
11
10
|
id: p,
|
|
12
|
-
onChange:
|
|
11
|
+
onChange: c,
|
|
13
12
|
value: r = [],
|
|
14
13
|
accept: E = "image/*",
|
|
15
14
|
error: u,
|
|
16
15
|
maxImages: l = 20,
|
|
17
16
|
placeholder: f
|
|
18
17
|
}) => {
|
|
19
|
-
const { onAssetUpload: h, onToggleImageEditor: y } =
|
|
18
|
+
const { onAssetUpload: h, onToggleImageEditor: y } = C(), { toast: o } = M(), [n, b] = $(!1), m = T(null), N = async (a) => {
|
|
20
19
|
const t = a.target.files;
|
|
21
|
-
if (!(!t?.length ||
|
|
20
|
+
if (!(!t?.length || n)) {
|
|
22
21
|
if (r.length + t.length > l) {
|
|
23
|
-
|
|
22
|
+
o({
|
|
24
23
|
title: "Alert!",
|
|
25
24
|
description: `Maximum ${l} images allowed.`,
|
|
26
25
|
icon: "warning"
|
|
@@ -31,13 +30,13 @@ const W = ({
|
|
|
31
30
|
b(!0);
|
|
32
31
|
try {
|
|
33
32
|
const s = Array.from(t).map((d) => h(d)), A = (await Promise.all(s)).map((d) => ({ ...d, tag: "" }));
|
|
34
|
-
|
|
33
|
+
c([...r, ...A]), o({
|
|
35
34
|
title: "Alert!",
|
|
36
35
|
description: `${t.length} ${t.length === 1 ? "image" : "images"} uploaded successfully.`,
|
|
37
36
|
icon: "success"
|
|
38
37
|
});
|
|
39
38
|
} catch {
|
|
40
|
-
|
|
39
|
+
o({
|
|
41
40
|
title: "Alert!",
|
|
42
41
|
description: "Error uploading images",
|
|
43
42
|
icon: "warning"
|
|
@@ -48,29 +47,29 @@ const W = ({
|
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
}, w = () => {
|
|
51
|
-
!
|
|
50
|
+
!n && r.length < l ? m.current?.click() : r.length >= l && o({
|
|
52
51
|
title: "Alert!",
|
|
53
52
|
description: `Maximum ${l} images allowed.`,
|
|
54
53
|
icon: "warning"
|
|
55
54
|
});
|
|
56
55
|
}, v = (a) => {
|
|
57
|
-
if (!
|
|
56
|
+
if (!n) {
|
|
58
57
|
const t = [...r];
|
|
59
|
-
t.splice(a, 1),
|
|
58
|
+
t.splice(a, 1), c(t);
|
|
60
59
|
}
|
|
61
60
|
}, k = (a, t) => {
|
|
62
|
-
const s = [...r],
|
|
63
|
-
s.splice(t, 1, { ...
|
|
61
|
+
const s = [...r], i = s[t];
|
|
62
|
+
s.splice(t, 1, { ...i, ...a }), c(s);
|
|
64
63
|
};
|
|
65
|
-
return /* @__PURE__ */ e.createElement("div", { className: "relative" },
|
|
64
|
+
return /* @__PURE__ */ e.createElement("div", { className: "relative" }, n && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(R, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement(
|
|
66
65
|
"button",
|
|
67
66
|
{
|
|
68
67
|
className: "w-full",
|
|
69
68
|
onClick: w,
|
|
70
69
|
type: "button",
|
|
71
|
-
disabled:
|
|
70
|
+
disabled: n || r.length >= l
|
|
72
71
|
},
|
|
73
|
-
/* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(
|
|
72
|
+
/* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(U, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(g, { variant: "body1", className: "text-gray-600" }, n ? "Uploading..." : r.length >= l ? `Maximum ${l} images reached` : "Add Images"), r.length > 0 && /* @__PURE__ */ e.createElement(g, { variant: "body1", className: "text-gray-500" }, r.length, " of ", l, " images"))
|
|
74
73
|
), /* @__PURE__ */ e.createElement(
|
|
75
74
|
"input",
|
|
76
75
|
{
|
|
@@ -78,7 +77,7 @@ const W = ({
|
|
|
78
77
|
id: `${p}-gallery`,
|
|
79
78
|
type: "file",
|
|
80
79
|
accept: E,
|
|
81
|
-
disabled:
|
|
80
|
+
disabled: n || r.length >= l,
|
|
82
81
|
onChange: N,
|
|
83
82
|
className: "hidden",
|
|
84
83
|
multiple: !0
|
|
@@ -103,16 +102,16 @@ const W = ({
|
|
|
103
102
|
},
|
|
104
103
|
className: "absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100"
|
|
105
104
|
},
|
|
106
|
-
/* @__PURE__ */ e.createElement(
|
|
105
|
+
/* @__PURE__ */ e.createElement(I, { size: 16, className: "stroke-danger" })
|
|
107
106
|
), /* @__PURE__ */ e.createElement(
|
|
108
107
|
"button",
|
|
109
108
|
{
|
|
110
109
|
onClick: () => v(t),
|
|
111
110
|
className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100",
|
|
112
111
|
type: "button",
|
|
113
|
-
disabled:
|
|
112
|
+
disabled: n
|
|
114
113
|
},
|
|
115
|
-
/* @__PURE__ */ e.createElement(
|
|
114
|
+
/* @__PURE__ */ e.createElement(z, { size: 16, className: "stroke-danger" })
|
|
116
115
|
)), /* @__PURE__ */ e.createElement(
|
|
117
116
|
x,
|
|
118
117
|
{
|
|
@@ -122,13 +121,13 @@ const W = ({
|
|
|
122
121
|
value: a.tag,
|
|
123
122
|
required: !0,
|
|
124
123
|
onChange: (s) => {
|
|
125
|
-
const
|
|
126
|
-
|
|
124
|
+
const i = [...r];
|
|
125
|
+
i[t].tag = s.target.value, c(i);
|
|
127
126
|
}
|
|
128
127
|
}
|
|
129
128
|
)))));
|
|
130
129
|
};
|
|
131
130
|
export {
|
|
132
|
-
|
|
131
|
+
q as TaggableImageUploadFieldWithInput
|
|
133
132
|
};
|
|
134
|
-
//# sourceMappingURL=
|
|
133
|
+
//# sourceMappingURL=index.es184.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index179.es.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/taggable-multi-image-picker-with-input/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Input } from '@/components/atoms/input'\nimport { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { useFormValues } from '@/components/ui/form-renderer/context/form-values'\nimport {\n AssetValue,\n TaggableAssetValue,\n} from '@/components/ui/form-renderer/form.types'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { Upload, X, Pen } from 'lucide-react'\nimport { useRef, useState } from 'react'\n\ninterface TaggableImageUploadFieldWithInputProps {\n id: string\n onChange: (data: TaggableAssetValue[]) => void\n value?: TaggableAssetValue[]\n accept?: string\n error?: string\n maxImages?: number\n placeholder?: string\n}\n\nconst TaggableImageUploadFieldWithInput: React.FC<\n TaggableImageUploadFieldWithInputProps\n> = ({\n id,\n onChange,\n value = [],\n accept = 'image/*',\n error,\n maxImages = 20,\n placeholder,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (!files?.length || isLoading) return\n\n if (value.length + files.length > maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n return\n }\n\n if (onAssetUpload) {\n setIsLoading(true)\n\n try {\n const uploads = Array.from(files).map((file) => onAssetUpload(file))\n const results = await Promise.all(uploads)\n\n const TaggedResults = results.map((result) => ({ ...result, tag: '' }))\n\n onChange([...value, ...TaggedResults])\n\n toast({\n title: 'Alert!',\n description: `${files.length} ${files.length === 1 ? 'image' : 'images'} uploaded successfully.`,\n icon: 'success',\n })\n } catch (error) {\n toast({\n title: 'Alert!',\n description: `Error uploading images`,\n icon: 'warning',\n })\n } finally {\n setIsLoading(false)\n // Reset the file input so the same files can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n }\n }\n }\n\n const handleClick = () => {\n if (!isLoading && value.length < maxImages) {\n fileInputRef.current?.click()\n } else if (value.length >= maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n }\n }\n\n const removeImage = (index: number) => {\n if (!isLoading) {\n const newImages = [...value]\n newImages.splice(index, 1)\n onChange(newImages)\n }\n }\n\n const onReplaceImage = (data: AssetValue, index: number) => {\n const newValue = [...value]\n const existingImage = newValue[index]\n\n newValue.splice(index, 1, { ...existingImage, ...data })\n onChange(newValue)\n }\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button\n className=\"w-full\"\n onClick={handleClick}\n type=\"button\"\n disabled={isLoading || value.length >= maxImages}\n >\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value.length >= maxImages\n ? `Maximum ${maxImages} images reached`\n : 'Add Images'}\n </Typography>\n {value.length > 0 && (\n <Typography variant=\"body1\" className=\"text-gray-500\">\n {value.length} of {maxImages} images\n </Typography>\n )}\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading || value.length >= maxImages}\n onChange={handleImageSelect}\n className=\"hidden\"\n multiple\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n\n {value.length > 0 && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n {value.map((image, index) => (\n <div key={image.private_url} className=\"flex flex-col gap-2\">\n <div key={index} className=\"relative flex rounded\">\n <img\n src={image.public_url}\n alt={`Preview ${index + 1}`}\n className=\"object-cover w-full h-24 rounded\"\n />\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: image.public_url,\n index,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n <button\n onClick={() => removeImage(index)}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n type=\"button\"\n disabled={isLoading}\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n <Input\n id={id + index}\n type=\"text\"\n placeholder={placeholder ? placeholder : ''}\n value={image.tag}\n required={true}\n onChange={(e) => {\n const newImages = [...value]\n newImages[index].tag = e.target.value\n onChange(newImages)\n }}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { TaggableImageUploadFieldWithInput }\n"],"names":["TaggableImageUploadFieldWithInput","id","onChange","value","accept","error","maxImages","placeholder","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","files","uploads","file","TaggedResults","result","handleClick","removeImage","index","newImages","onReplaceImage","data","newValue","existingImage","React","Spinner","Upload","Typography","image","Pen","X","Input"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es184.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/taggable-multi-image-picker-with-input/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Input } from '@/components/atoms/input'\nimport { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { useFormValues } from '@/components/ui/form-renderer/context/form-values'\nimport {\n AssetValue,\n TaggableAssetValue,\n} from '@/components/ui/form-renderer/form.types'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { Upload, X, Pen } from 'lucide-react'\nimport { useRef, useState } from 'react'\n\ninterface TaggableImageUploadFieldWithInputProps {\n id: string\n onChange: (data: TaggableAssetValue[]) => void\n value?: TaggableAssetValue[]\n accept?: string\n error?: string\n maxImages?: number\n placeholder?: string\n}\n\nconst TaggableImageUploadFieldWithInput: React.FC<\n TaggableImageUploadFieldWithInputProps\n> = ({\n id,\n onChange,\n value = [],\n accept = 'image/*',\n error,\n maxImages = 20,\n placeholder,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (!files?.length || isLoading) return\n\n if (value.length + files.length > maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n return\n }\n\n if (onAssetUpload) {\n setIsLoading(true)\n\n try {\n const uploads = Array.from(files).map((file) => onAssetUpload(file))\n const results = await Promise.all(uploads)\n\n const TaggedResults = results.map((result) => ({ ...result, tag: '' }))\n\n onChange([...value, ...TaggedResults])\n\n toast({\n title: 'Alert!',\n description: `${files.length} ${files.length === 1 ? 'image' : 'images'} uploaded successfully.`,\n icon: 'success',\n })\n } catch (error) {\n toast({\n title: 'Alert!',\n description: `Error uploading images`,\n icon: 'warning',\n })\n } finally {\n setIsLoading(false)\n // Reset the file input so the same files can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n }\n }\n }\n\n const handleClick = () => {\n if (!isLoading && value.length < maxImages) {\n fileInputRef.current?.click()\n } else if (value.length >= maxImages) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxImages} images allowed.`,\n icon: 'warning',\n })\n }\n }\n\n const removeImage = (index: number) => {\n if (!isLoading) {\n const newImages = [...value]\n newImages.splice(index, 1)\n onChange(newImages)\n }\n }\n\n const onReplaceImage = (data: AssetValue, index: number) => {\n const newValue = [...value]\n const existingImage = newValue[index]\n\n newValue.splice(index, 1, { ...existingImage, ...data })\n onChange(newValue)\n }\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button\n className=\"w-full\"\n onClick={handleClick}\n type=\"button\"\n disabled={isLoading || value.length >= maxImages}\n >\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value.length >= maxImages\n ? `Maximum ${maxImages} images reached`\n : 'Add Images'}\n </Typography>\n {value.length > 0 && (\n <Typography variant=\"body1\" className=\"text-gray-500\">\n {value.length} of {maxImages} images\n </Typography>\n )}\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading || value.length >= maxImages}\n onChange={handleImageSelect}\n className=\"hidden\"\n multiple\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n\n {value.length > 0 && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n {value.map((image, index) => (\n <div key={image.private_url} className=\"flex flex-col gap-2\">\n <div key={index} className=\"relative flex rounded\">\n <img\n src={image.public_url}\n alt={`Preview ${index + 1}`}\n className=\"object-cover w-full h-24 rounded\"\n />\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: image.public_url,\n index,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n <button\n onClick={() => removeImage(index)}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n type=\"button\"\n disabled={isLoading}\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n <Input\n id={id + index}\n type=\"text\"\n placeholder={placeholder ? placeholder : ''}\n value={image.tag}\n required={true}\n onChange={(e) => {\n const newImages = [...value]\n newImages[index].tag = e.target.value\n onChange(newImages)\n }}\n />\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { TaggableImageUploadFieldWithInput }\n"],"names":["TaggableImageUploadFieldWithInput","id","onChange","value","accept","error","maxImages","placeholder","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","files","uploads","file","TaggedResults","result","handleClick","removeImage","index","newImages","onReplaceImage","data","newValue","existingImage","React","Spinner","Upload","Typography","image","Pen","X","Input"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"index.es185.js","sources":["../src/components/organisms/navbar/components/notification-panel/components/notification-card/notification.utils.ts"],"sourcesContent":["import { format } from 'date-fns'\n\nconst convertEpochTime = (epochTime: number) => {\n const date = new Date(epochTime * 1000)\n return format(date, 'dd MMM yyyy, hh:mm a')\n}\n\nexport { convertEpochTime }\n"],"names":["convertEpochTime","epochTime","date","format"],"mappings":";AAEA,MAAMA,IAAmB,CAACC,MAAsB;AAC9C,QAAMC,IAAO,IAAI,KAAKD,IAAY,GAAI;AACtC,SAAOE,EAAOD,GAAM,sBAAsB;AAC5C;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as o from "react";
|
|
2
|
-
import { cn as n } from "./
|
|
3
|
-
import { TypographyVariants as y } from "./
|
|
4
|
-
import { variantElementMap as i, defaultTypographyVariant as c } from "./
|
|
2
|
+
import { cn as n } from "./index.es89.js";
|
|
3
|
+
import { TypographyVariants as y } from "./index.es85.js";
|
|
4
|
+
import { variantElementMap as i, defaultTypographyVariant as c } from "./index.es108.js";
|
|
5
5
|
const f = o.forwardRef(({ className: t, variant: r = c, id: e, ...a }, p) => {
|
|
6
6
|
const m = i[r];
|
|
7
7
|
return /* @__PURE__ */ o.createElement(
|
|
@@ -20,4 +20,4 @@ export {
|
|
|
20
20
|
f as Typography,
|
|
21
21
|
y as TypographyVariants
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=index.es19.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"index.es19.js","sources":["../src/components/atoms/typography/typography.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '@/lib/utils'\nimport { TypographyVariants } from './typography.styles'\nimport { TypographyProps } from './typography.types'\nimport {\n defaultTypographyVariant,\n variantElementMap,\n} from './typography.config'\n\nconst Typography = React.forwardRef<\n HTMLHeadingElement | HTMLParagraphElement,\n TypographyProps\n>(({ className, variant = defaultTypographyVariant, id, ...props }, ref) => {\n const Comp: React.ElementType = variantElementMap[\n variant as keyof typeof variantElementMap\n ] as React.ElementType\n\n return (\n <Comp\n className={cn(TypographyVariants({ variant, className }))}\n ref={ref}\n id={id}\n {...props}\n >\n {props.children}\n </Comp>\n )\n})\n\nTypography.displayName = 'Typography'\n\nexport { Typography, TypographyVariants }\n"],"names":["Typography","React","className","variant","defaultTypographyVariant","id","props","ref","Comp","variantElementMap","cn","TypographyVariants"],"mappings":";;;;AASA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,SAAAC,IAAUC,GAA0B,IAAAC,GAAI,GAAGC,EAAA,GAASC,MAAQ;AAC1E,QAAMC,IAA0BC,EAC9BN,CACF;AAEA,SACE,gBAAAF,EAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,WAAWE,EAAGC,EAAmB,EAAE,SAAAR,GAAS,WAAAD,EAAA,CAAW,CAAC;AAAA,MACxD,KAAAK;AAAA,MACA,IAAAF;AAAA,MACC,GAAGC;AAAA,IAAA;AAAA,IAEHA,EAAM;AAAA,EAAA;AAGb,CAAC;AAEDN,EAAW,cAAc;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import t, { useState as h, useEffect as C } from "react";
|
|
2
|
-
import { _Dialog as R } from "./
|
|
3
|
-
import { Typography as f } from "./
|
|
4
|
-
import { Button as p } from "./
|
|
5
|
-
import { Input as w } from "./
|
|
2
|
+
import { _Dialog as R } from "./index.es41.js";
|
|
3
|
+
import { Typography as f } from "./index.es19.js";
|
|
4
|
+
import { Button as p } from "./index.es9.js";
|
|
5
|
+
import { Input as w } from "./index.es11.js";
|
|
6
6
|
const j = ["5", "10", "20", "50", ">50"], T = ({
|
|
7
7
|
open: c,
|
|
8
8
|
onClose: _,
|
|
@@ -122,4 +122,4 @@ const j = ["5", "10", "20", "50", ">50"], T = ({
|
|
|
122
122
|
export {
|
|
123
123
|
T as RequestCreditsDialog
|
|
124
124
|
};
|
|
125
|
-
//# sourceMappingURL=
|
|
125
|
+
//# sourceMappingURL=index.es2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.es.js","sources":["../src/components/ui/request-credits-view/component/request-credit-dialog.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { Dialog } from '@/components/organisms/dialog'\nimport { Typography } from '@/components/atoms/typography'\nimport { Button } from '@/components/atoms/button'\nimport { Input } from '@/components/atoms/input'\nimport { RequestCreditsDialogProps } from './request-credit-dialog.types'\n\nconst DefaultBuyCreditsOptions = ['5', '10', '20', '50', '>50']\n\nexport const RequestCreditsDialog: React.FC<RequestCreditsDialogProps> = ({\n open,\n onClose,\n onRequestCredits,\n onProceedToPayment,\n dialogClassName,\n buyCreditsOptions = DefaultBuyCreditsOptions,\n minimumCreditsToBuy = 5,\n requestOnly = false,\n}) => {\n const [selectedCredit, setSelectedCredit] = useState('')\n const [phoneNumber, setPhoneNumber] = useState('')\n const [phoneError, setPhoneError] = useState('')\n\n // Largest plain numeric option (e.g. 50). Anything above it is a request.\n const numericOptions = buyCreditsOptions \n .map((option) => {\n if (option.startsWith('>')) {\n return Number(option.replace('>', ''))\n }\n return Number(option)\n })\n const maxCredit = numericOptions.length ? Math.max(...numericOptions) : 50\n\n const exceedsMaxCredit =\n selectedCredit.startsWith('>') || Number(selectedCredit) > maxCredit\n\n const isRequestAction = requestOnly || exceedsMaxCredit\n\n const creditError =\n selectedCredit &&\n !isRequestAction &&\n Number(selectedCredit) < minimumCreditsToBuy\n ? `Minimum number of credits is ${minimumCreditsToBuy}`\n : ''\n\n // Validate phone on every change\n useEffect(() => {\n if (isRequestAction) {\n const error = validatePhone(phoneNumber)\n setPhoneError(error)\n } else {\n setPhoneError('')\n }\n }, [phoneNumber, isRequestAction])\n\n const validatePhone = (phone: string) => {\n if (!phone) return ''\n const numberOnly = phone.startsWith('+91') ? phone.substring(3) : phone\n if (!/^[6-9]\\d{9}$/.test(numberOnly))\n return 'Number should start with 6-9 and be 10 digits'\n return ''\n }\n\n const handlePhoneChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value.replace(/\\D/g, '') // keep only digits\n setPhoneNumber(value)\n }\n\n const handleCreditChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value.replace(/\\D/g, '') // keep only digits\n setSelectedCredit(value)\n }\n\n const handleSubmit = () => {\n // Only the '>50' style option appends '+'; a typed value is sent as-is\n const credit = selectedCredit.startsWith('>')\n ? selectedCredit.replace('>', '') + '+'\n : selectedCredit\n if (isRequestAction) {\n onRequestCredits(credit, phoneNumber)\n } else {\n if (onProceedToPayment) {\n onProceedToPayment(credit, phoneNumber)\n } else {\n onRequestCredits(credit, phoneNumber)\n }\n }\n reset()\n }\n\n const reset = () => {\n onClose()\n setTimeout(() => {\n setPhoneNumber('')\n setPhoneError('')\n setSelectedCredit('')\n }, 100)\n }\n\n useEffect(() => {\n if (!open) {\n setTimeout(() => {\n setPhoneNumber('')\n setPhoneError('')\n setSelectedCredit('')\n }, 100)\n }\n }, [open])\n\n const buttonText = isRequestAction\n ? `Request ${selectedCredit}`\n : `Proceed to Payment ${selectedCredit} `\n\n // Button should be disabled if no credit entered, or phone is invalid for a request\n const isButtonDisabled =\n !selectedCredit ||\n Number(selectedCredit) <= 0 ||\n !!creditError ||\n (isRequestAction && (!!phoneError || !phoneNumber))\n\n // Highlight the '>50' style option whenever the entered value exceeds the\n // largest buyable option; plain options match exactly.\n const isOptionSelected = (credit: string) =>\n credit.startsWith('>') ? exceedsMaxCredit : credit === selectedCredit\n\n return (\n <Dialog\n open={open}\n onOpenChange={reset}\n onOpenAutoFocus={(e) => e.preventDefault()}\n trigger={null}\n contentClassName=\"w-min\"\n body={\n <div className=\"w-72 md:w-[570px] flex items-center \">\n <div className=\"items-center justify-center\">\n <img\n src=\"https://frontend-static-files.geoiq.io/strapi/Group_427319313_e054593ef1/Group_427319313_e054593ef1.svg\"\n alt=\"lock\"\n className={dialogClassName}\n />\n </div>\n <div className=\"px-4 py-2 w-72 md:w-[400px]\">\n <div className=\"flex flex-col gap-2\">\n <Typography variant={'h3'} className=\"text-light-2\">\n How many credits do you need?\n </Typography>\n <Typography variant={'body4'} className=\"text-light-4\">\n <span className=\"underline\">Note:</span> One credit is needed to\n unlock a site report.{' '}\n {isRequestAction\n ? ' Please provide your phone number to make a request'\n : ''}\n </Typography>\n </div>\n\n <div className=\"mt-3\">\n <Input\n id=\"creditValue\"\n type=\"text\"\n value={selectedCredit.startsWith('>') ? '' : selectedCredit}\n onChange={handleCreditChange}\n className=\"h-10\"\n placeholder=\"Enter number of credits\"\n maxLength={6}\n isError={!!creditError}\n message={creditError}\n />\n </div>\n\n <div className=\"flex flex-row gap-2 mt-3\">\n {buyCreditsOptions.map((credit) => (\n <Button\n variant={isOptionSelected(credit) ? 'primary' : 'secondary'}\n key={credit}\n className={\n isOptionSelected(credit) ? 'w-10' : 'w-10 bg-light-2'\n }\n size={'sm'}\n onClick={() => setSelectedCredit(credit)}\n >\n {credit}\n </Button>\n ))}\n </div>\n {isRequestAction && (\n <div className=\"flex flex-col mt-4\">\n <Typography className=\"mb-1 text-sm font-medium text-light-2\">\n Phone Number *\n </Typography>\n <Input\n id=\"phoneNumber\"\n type=\"text\" // use text for maxLength\n value={phoneNumber}\n onChange={handlePhoneChange}\n className=\"h-10\"\n placeholder=\"Enter phone number\"\n maxLength={10}\n isError={!!phoneError}\n message={phoneError}\n />\n </div>\n )}\n </div>\n </div>\n }\n footer={\n <div className=\"flex w-full gap-2 justify-evenly\">\n <Button variant=\"secondary\" onClick={reset} title={'Cancel'} />\n <Button\n variant=\"primary\"\n suffixIcon={\n <img\n src={\n 'https://frontend-static-files.geoiq.io/strapi/navbar_credits_247858e26a.svg'\n }\n width={16}\n height={16}\n alt=\"coin icon\"\n className=\"ml-1 mr-2 md:mr-0\"\n />\n }\n title={buttonText}\n onClick={handleSubmit}\n disabled={isButtonDisabled}\n />\n </div>\n }\n />\n )\n}\n"],"names":["DefaultBuyCreditsOptions","RequestCreditsDialog","open","onClose","onRequestCredits","onProceedToPayment","dialogClassName","buyCreditsOptions","minimumCreditsToBuy","requestOnly","selectedCredit","setSelectedCredit","useState","phoneNumber","setPhoneNumber","phoneError","setPhoneError","numericOptions","option","maxCredit","exceedsMaxCredit","isRequestAction","creditError","useEffect","error","validatePhone","phone","numberOnly","handlePhoneChange","value","handleCreditChange","handleSubmit","credit","reset","buttonText","isButtonDisabled","isOptionSelected","React","Dialog","Typography","Input","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es2.js","sources":["../src/components/ui/request-credits-view/component/request-credit-dialog.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { Dialog } from '@/components/organisms/dialog'\nimport { Typography } from '@/components/atoms/typography'\nimport { Button } from '@/components/atoms/button'\nimport { Input } from '@/components/atoms/input'\nimport { RequestCreditsDialogProps } from './request-credit-dialog.types'\n\nconst DefaultBuyCreditsOptions = ['5', '10', '20', '50', '>50']\n\nexport const RequestCreditsDialog: React.FC<RequestCreditsDialogProps> = ({\n open,\n onClose,\n onRequestCredits,\n onProceedToPayment,\n dialogClassName,\n buyCreditsOptions = DefaultBuyCreditsOptions,\n minimumCreditsToBuy = 5,\n requestOnly = false,\n}) => {\n const [selectedCredit, setSelectedCredit] = useState('')\n const [phoneNumber, setPhoneNumber] = useState('')\n const [phoneError, setPhoneError] = useState('')\n\n // Largest plain numeric option (e.g. 50). Anything above it is a request.\n const numericOptions = buyCreditsOptions \n .map((option) => {\n if (option.startsWith('>')) {\n return Number(option.replace('>', ''))\n }\n return Number(option)\n })\n const maxCredit = numericOptions.length ? Math.max(...numericOptions) : 50\n\n const exceedsMaxCredit =\n selectedCredit.startsWith('>') || Number(selectedCredit) > maxCredit\n\n const isRequestAction = requestOnly || exceedsMaxCredit\n\n const creditError =\n selectedCredit &&\n !isRequestAction &&\n Number(selectedCredit) < minimumCreditsToBuy\n ? `Minimum number of credits is ${minimumCreditsToBuy}`\n : ''\n\n // Validate phone on every change\n useEffect(() => {\n if (isRequestAction) {\n const error = validatePhone(phoneNumber)\n setPhoneError(error)\n } else {\n setPhoneError('')\n }\n }, [phoneNumber, isRequestAction])\n\n const validatePhone = (phone: string) => {\n if (!phone) return ''\n const numberOnly = phone.startsWith('+91') ? phone.substring(3) : phone\n if (!/^[6-9]\\d{9}$/.test(numberOnly))\n return 'Number should start with 6-9 and be 10 digits'\n return ''\n }\n\n const handlePhoneChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value.replace(/\\D/g, '') // keep only digits\n setPhoneNumber(value)\n }\n\n const handleCreditChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value.replace(/\\D/g, '') // keep only digits\n setSelectedCredit(value)\n }\n\n const handleSubmit = () => {\n // Only the '>50' style option appends '+'; a typed value is sent as-is\n const credit = selectedCredit.startsWith('>')\n ? selectedCredit.replace('>', '') + '+'\n : selectedCredit\n if (isRequestAction) {\n onRequestCredits(credit, phoneNumber)\n } else {\n if (onProceedToPayment) {\n onProceedToPayment(credit, phoneNumber)\n } else {\n onRequestCredits(credit, phoneNumber)\n }\n }\n reset()\n }\n\n const reset = () => {\n onClose()\n setTimeout(() => {\n setPhoneNumber('')\n setPhoneError('')\n setSelectedCredit('')\n }, 100)\n }\n\n useEffect(() => {\n if (!open) {\n setTimeout(() => {\n setPhoneNumber('')\n setPhoneError('')\n setSelectedCredit('')\n }, 100)\n }\n }, [open])\n\n const buttonText = isRequestAction\n ? `Request ${selectedCredit}`\n : `Proceed to Payment ${selectedCredit} `\n\n // Button should be disabled if no credit entered, or phone is invalid for a request\n const isButtonDisabled =\n !selectedCredit ||\n Number(selectedCredit) <= 0 ||\n !!creditError ||\n (isRequestAction && (!!phoneError || !phoneNumber))\n\n // Highlight the '>50' style option whenever the entered value exceeds the\n // largest buyable option; plain options match exactly.\n const isOptionSelected = (credit: string) =>\n credit.startsWith('>') ? exceedsMaxCredit : credit === selectedCredit\n\n return (\n <Dialog\n open={open}\n onOpenChange={reset}\n onOpenAutoFocus={(e) => e.preventDefault()}\n trigger={null}\n contentClassName=\"w-min\"\n body={\n <div className=\"w-72 md:w-[570px] flex items-center \">\n <div className=\"items-center justify-center\">\n <img\n src=\"https://frontend-static-files.geoiq.io/strapi/Group_427319313_e054593ef1/Group_427319313_e054593ef1.svg\"\n alt=\"lock\"\n className={dialogClassName}\n />\n </div>\n <div className=\"px-4 py-2 w-72 md:w-[400px]\">\n <div className=\"flex flex-col gap-2\">\n <Typography variant={'h3'} className=\"text-light-2\">\n How many credits do you need?\n </Typography>\n <Typography variant={'body4'} className=\"text-light-4\">\n <span className=\"underline\">Note:</span> One credit is needed to\n unlock a site report.{' '}\n {isRequestAction\n ? ' Please provide your phone number to make a request'\n : ''}\n </Typography>\n </div>\n\n <div className=\"mt-3\">\n <Input\n id=\"creditValue\"\n type=\"text\"\n value={selectedCredit.startsWith('>') ? '' : selectedCredit}\n onChange={handleCreditChange}\n className=\"h-10\"\n placeholder=\"Enter number of credits\"\n maxLength={6}\n isError={!!creditError}\n message={creditError}\n />\n </div>\n\n <div className=\"flex flex-row gap-2 mt-3\">\n {buyCreditsOptions.map((credit) => (\n <Button\n variant={isOptionSelected(credit) ? 'primary' : 'secondary'}\n key={credit}\n className={\n isOptionSelected(credit) ? 'w-10' : 'w-10 bg-light-2'\n }\n size={'sm'}\n onClick={() => setSelectedCredit(credit)}\n >\n {credit}\n </Button>\n ))}\n </div>\n {isRequestAction && (\n <div className=\"flex flex-col mt-4\">\n <Typography className=\"mb-1 text-sm font-medium text-light-2\">\n Phone Number *\n </Typography>\n <Input\n id=\"phoneNumber\"\n type=\"text\" // use text for maxLength\n value={phoneNumber}\n onChange={handlePhoneChange}\n className=\"h-10\"\n placeholder=\"Enter phone number\"\n maxLength={10}\n isError={!!phoneError}\n message={phoneError}\n />\n </div>\n )}\n </div>\n </div>\n }\n footer={\n <div className=\"flex w-full gap-2 justify-evenly\">\n <Button variant=\"secondary\" onClick={reset} title={'Cancel'} />\n <Button\n variant=\"primary\"\n suffixIcon={\n <img\n src={\n 'https://frontend-static-files.geoiq.io/strapi/navbar_credits_247858e26a.svg'\n }\n width={16}\n height={16}\n alt=\"coin icon\"\n className=\"ml-1 mr-2 md:mr-0\"\n />\n }\n title={buttonText}\n onClick={handleSubmit}\n disabled={isButtonDisabled}\n />\n </div>\n }\n />\n )\n}\n"],"names":["DefaultBuyCreditsOptions","RequestCreditsDialog","open","onClose","onRequestCredits","onProceedToPayment","dialogClassName","buyCreditsOptions","minimumCreditsToBuy","requestOnly","selectedCredit","setSelectedCredit","useState","phoneNumber","setPhoneNumber","phoneError","setPhoneError","numericOptions","option","maxCredit","exceedsMaxCredit","isRequestAction","creditError","useEffect","error","validatePhone","phone","numberOnly","handlePhoneChange","value","handleCreditChange","handleSubmit","credit","reset","buttonText","isButtonDisabled","isOptionSelected","React","Dialog","Typography","Input","Button"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as e from "react";
|
|
2
|
-
import { cn as s } from "./
|
|
3
|
-
import { AlertVariants as v, AlertContentVariants as h, AlertButtonVariants as u } from "./
|
|
4
|
-
import { Button as _ } from "./
|
|
5
|
-
import { Typography as N } from "./
|
|
2
|
+
import { cn as s } from "./index.es89.js";
|
|
3
|
+
import { AlertVariants as v, AlertContentVariants as h, AlertButtonVariants as u } from "./index.es133.js";
|
|
4
|
+
import { Button as _ } from "./index.es9.js";
|
|
5
|
+
import { Typography as N } from "./index.es19.js";
|
|
6
6
|
const n = e.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ e.createElement(
|
|
7
7
|
"h5",
|
|
8
8
|
{
|
|
@@ -74,4 +74,4 @@ export {
|
|
|
74
74
|
x as Alert,
|
|
75
75
|
v as AlertVariants
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=
|
|
77
|
+
//# sourceMappingURL=index.es20.js.map
|