geoiq-frontend-ui-kit 2.0.0 → 2.0.2
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/badge/badge.styles.d.ts +2 -2
- package/dist/components/atoms/button/button.styles.d.ts +2 -2
- package/dist/components/atoms/checkbox/checkbox.styles.d.ts +2 -2
- package/dist/components/atoms/switch/switch.styles.d.ts +2 -2
- package/dist/components/molecules/alert/alert.styles.d.ts +1 -1
- package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts +4 -0
- package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts.map +1 -0
- package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.types.d.ts +49 -0
- package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.types.d.ts.map +1 -0
- package/dist/components/molecules/creatable-multi-combobox/index.d.ts +4 -0
- package/dist/components/molecules/creatable-multi-combobox/index.d.ts.map +1 -0
- package/dist/components/molecules/single-select/index.d.ts.map +1 -1
- package/dist/components/molecules/single-select/single-select-components.d.ts +3 -1
- package/dist/components/molecules/single-select/single-select-components.d.ts.map +1 -1
- package/dist/components/molecules/single-select/single-select.types.d.ts +9 -0
- package/dist/components/molecules/single-select/single-select.types.d.ts.map +1 -1
- package/dist/components/molecules/split-button/split-button.styles.d.ts +3 -3
- package/dist/components/molecules/swatch-grid/index.d.ts +3 -0
- package/dist/components/molecules/swatch-grid/index.d.ts.map +1 -0
- package/dist/components/molecules/swatch-grid/swatch-grid.d.ts +4 -0
- package/dist/components/molecules/swatch-grid/swatch-grid.d.ts.map +1 -0
- package/dist/components/molecules/swatch-grid/swatch-grid.types.d.ts +17 -0
- package/dist/components/molecules/swatch-grid/swatch-grid.types.d.ts.map +1 -0
- package/dist/components/molecules/tabs/tabs.d.ts.map +1 -1
- package/dist/components/molecules/tabs/tabs.styles.d.ts +2 -2
- package/dist/components/molecules/tabs/tabs.types.d.ts +1 -0
- package/dist/components/molecules/tabs/tabs.types.d.ts.map +1 -1
- package/dist/components/organisms/dialog/dialog.d.ts +1 -1
- package/dist/components/organisms/dialog/dialog.d.ts.map +1 -1
- package/dist/components/organisms/dialog/dialog.types.d.ts +9 -0
- package/dist/components/organisms/dialog/dialog.types.d.ts.map +1 -1
- package/dist/components/organisms/image-editor/components/color-picker.d.ts +7 -0
- package/dist/components/organisms/image-editor/components/color-picker.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/layers-list.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/layers-list.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/panel-adjust.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/panel-adjust.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/panel-crop.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/panel-crop.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/panel-insert.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/panel-selected.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/panel.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/portal-context.d.ts +3 -0
- package/dist/components/organisms/image-editor/components/portal-context.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/ribbon.d.ts +9 -0
- package/dist/components/organisms/image-editor/components/ribbon.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/shape-icons.d.ts +4 -0
- package/dist/components/organisms/image-editor/components/shape-icons.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/stage.d.ts +18 -0
- package/dist/components/organisms/image-editor/components/stage.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/components/status-bar.d.ts +6 -0
- package/dist/components/organisms/image-editor/components/status-bar.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/image-editor-modal.d.ts +10 -0
- package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/image-editor.d.ts +5 -0
- package/dist/components/organisms/image-editor/image-editor.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/image-editor.types.d.ts +182 -0
- package/dist/components/organisms/image-editor/image-editor.types.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/index.d.ts +4 -0
- package/dist/components/organisms/image-editor/index.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/native-bridge.d.ts +3 -0
- package/dist/components/organisms/image-editor/native-bridge.d.ts.map +1 -0
- package/dist/components/organisms/image-editor/picture-studio-engine.d.ts +16 -0
- package/dist/components/organisms/image-editor/use-image-editor.d.ts +4 -0
- package/dist/components/organisms/image-editor/use-image-editor.d.ts.map +1 -0
- package/dist/components/organisms/navbar/navbar-desktop.d.ts.map +1 -1
- package/dist/components/organisms/navbar/navbar-extended.d.ts.map +1 -1
- package/dist/components/organisms/navbar/navbar-mobile.d.ts.map +1 -1
- package/dist/components/organisms/navbar/navbar.types.d.ts +17 -0
- package/dist/components/organisms/navbar/navbar.types.d.ts.map +1 -1
- package/dist/components/organisms/sheet/sheet.d.ts +1 -1
- package/dist/components/organisms/sheet/sheet.d.ts.map +1 -1
- package/dist/components/organisms/sheet/sheet.types.d.ts +1 -0
- package/dist/components/organisms/sheet/sheet.types.d.ts.map +1 -1
- package/dist/components/organisms/sidebar/sidebar-components.d.ts +1 -1
- package/dist/components/ui/brand-switcher/brand-switcher.d.ts +5 -0
- package/dist/components/ui/brand-switcher/brand-switcher.d.ts.map +1 -0
- package/dist/components/ui/brand-switcher/brand-switcher.types.d.ts +29 -0
- package/dist/components/ui/brand-switcher/brand-switcher.types.d.ts.map +1 -0
- package/dist/components/ui/brand-switcher/index.d.ts +3 -0
- package/dist/components/ui/brand-switcher/index.d.ts.map +1 -0
- package/dist/components/ui/credit-sheet/credit-sheet.d.ts.map +1 -1
- package/dist/components/ui/credit-sheet/credit-sheet.types.d.ts +3 -0
- package/dist/components/ui/credit-sheet/credit-sheet.types.d.ts.map +1 -1
- package/dist/components/ui/credits-indicator/credits-indicator.d.ts +6 -0
- package/dist/components/ui/credits-indicator/credits-indicator.d.ts.map +1 -0
- package/dist/components/ui/credits-indicator/credits-indicator.styles.d.ts +7 -0
- package/dist/components/ui/credits-indicator/credits-indicator.styles.d.ts.map +1 -0
- package/dist/components/ui/credits-indicator/credits-indicator.types.d.ts +14 -0
- package/dist/components/ui/credits-indicator/credits-indicator.types.d.ts.map +1 -0
- package/dist/components/ui/credits-indicator/index.d.ts +3 -0
- package/dist/components/ui/credits-indicator/index.d.ts.map +1 -0
- package/dist/components/ui/form-renderer/components/form-fields/components/multi-image-picker/index.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/components/form-fields/components/single-image-picker/index.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/components/form-fields/components/taggable-multi-image-picker/index.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/components/form-fields/components/taggable-multi-image-picker-with-input/index.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/components/form-fields/index.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/components/form-read-only-view.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/context/form-values/form-values.context.d.ts +4 -0
- package/dist/components/ui/form-renderer/context/form-values/form-values.context.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/context/form-values/form-values.provider.d.ts +2 -0
- package/dist/components/ui/form-renderer/context/form-values/form-values.provider.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/form-renderer.d.ts +10 -0
- package/dist/components/ui/form-renderer/form-renderer.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/form.enums.d.ts +1 -0
- package/dist/components/ui/form-renderer/form.enums.d.ts.map +1 -1
- package/dist/components/ui/form-renderer/form.types.d.ts +20 -1
- package/dist/components/ui/form-renderer/form.types.d.ts.map +1 -1
- package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts +1 -1
- package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts.map +1 -1
- package/dist/components/ui/report-snippet-view/report-snippet-view-components.d.ts.map +1 -1
- package/dist/components/ui/request-credits-view/component/request-credit-dialog.d.ts.map +1 -1
- package/dist/components/ui/request-credits-view/component/request-credit-dialog.types.d.ts +3 -0
- package/dist/components/ui/request-credits-view/component/request-credit-dialog.types.d.ts.map +1 -1
- package/dist/components/ui/request-credits-view/index.d.ts +1 -0
- package/dist/components/ui/request-credits-view/index.d.ts.map +1 -1
- package/dist/components/ui/request-credits-view/request-credits-view.d.ts.map +1 -1
- package/dist/components/ui/request-credits-view/request-credits-view.types.d.ts +3 -0
- package/dist/components/ui/request-credits-view/request-credits-view.types.d.ts.map +1 -1
- package/dist/components/unstyled/spinner/spinner.styles.d.ts +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +210 -193
- package/dist/index.es.js.map +1 -1
- package/dist/index.es10.js +30 -23
- package/dist/index.es10.js.map +1 -1
- package/dist/index.es100.js +120 -10
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +16 -97
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +41 -60
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +13 -54
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +68 -5
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +32 -9
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +19 -32
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +18 -61
- package/dist/index.es107.js.map +1 -1
- package/dist/index.es108.js +12 -22
- package/dist/index.es108.js.map +1 -1
- package/dist/index.es109.js +98 -22
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es11.js +77 -25
- package/dist/index.es11.js.map +1 -1
- package/dist/index.es110.js +62 -21
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +48 -174
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +39 -37
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +10 -40
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +88 -37
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +15 -13
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +88 -261
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +14 -9
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es118.js +101 -67
- package/dist/index.es118.js.map +1 -1
- package/dist/index.es119.js +23 -185
- package/dist/index.es119.js.map +1 -1
- package/dist/index.es12.js +26 -14
- package/dist/index.es12.js.map +1 -1
- package/dist/index.es120.js +25 -23
- package/dist/index.es120.js.map +1 -1
- package/dist/index.es121.js +22 -177
- package/dist/index.es121.js.map +1 -1
- package/dist/index.es122.js +43 -7
- package/dist/index.es122.js.map +1 -1
- package/dist/index.es123.js +32 -84
- package/dist/index.es123.js.map +1 -1
- package/dist/index.es124.js +63 -37
- package/dist/index.es124.js.map +1 -1
- package/dist/index.es125.js +180 -11
- package/dist/index.es125.js.map +1 -1
- package/dist/index.es126.js +13 -35
- package/dist/index.es126.js.map +1 -1
- package/dist/index.es127.js +9 -16
- package/dist/index.es127.js.map +1 -1
- package/dist/index.es128.js +68 -5
- package/dist/index.es128.js.map +1 -1
- package/dist/index.es129.js +185 -10
- package/dist/index.es129.js.map +1 -1
- package/dist/index.es13.js +27 -19
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es130.js +22 -10
- package/dist/index.es130.js.map +1 -1
- package/dist/index.es131.js +203 -2
- package/dist/index.es131.js.map +1 -1
- package/dist/index.es132.js +40 -22
- package/dist/index.es132.js.map +1 -1
- package/dist/index.es133.js +11 -257
- package/dist/index.es133.js.map +1 -1
- package/dist/index.es134.js +7 -35
- package/dist/index.es134.js.map +1 -1
- package/dist/index.es135.js +34 -8
- package/dist/index.es135.js.map +1 -1
- package/dist/index.es136.js +36 -78
- package/dist/index.es136.js.map +1 -1
- package/dist/index.es137.js +2 -76
- package/dist/index.es137.js.map +1 -1
- package/dist/index.es138.js +21 -110
- package/dist/index.es138.js.map +1 -1
- package/dist/index.es139.js +14 -107
- package/dist/index.es139.js.map +1 -1
- package/dist/index.es14.js +16 -46
- package/dist/index.es14.js.map +1 -1
- package/dist/index.es140.js +7 -87
- package/dist/index.es140.js.map +1 -1
- package/dist/index.es141.js +21 -128
- package/dist/index.es141.js.map +1 -1
- package/dist/index.es142.js +155 -114
- package/dist/index.es142.js.map +1 -1
- package/dist/index.es143.js +82 -6
- package/dist/index.es143.js.map +1 -1
- package/dist/index.es144.js +8 -0
- package/dist/index.es144.js.map +1 -0
- package/dist/index.es145.js +59 -0
- package/dist/index.es145.js.map +1 -0
- package/dist/index.es146.js +120 -0
- package/dist/index.es146.js.map +1 -0
- package/dist/index.es147.js +325 -0
- package/dist/index.es147.js.map +1 -0
- package/dist/index.es148.js +31 -0
- package/dist/index.es148.js.map +1 -0
- package/dist/index.es149.js +71 -0
- package/dist/index.es149.js.map +1 -0
- package/dist/index.es15.js +18 -21
- package/dist/index.es15.js.map +1 -1
- package/dist/index.es150.js +35 -0
- package/dist/index.es150.js.map +1 -0
- package/dist/index.es151.js +28 -0
- package/dist/index.es151.js.map +1 -0
- package/dist/index.es152.js +41 -0
- package/dist/index.es152.js.map +1 -0
- package/dist/index.es153.js +146 -0
- package/dist/index.es153.js.map +1 -0
- package/dist/index.es154.js +147 -0
- package/dist/index.es154.js.map +1 -0
- package/dist/index.es155.js +50 -0
- package/dist/index.es155.js.map +1 -0
- package/dist/index.es156.js +15 -0
- package/dist/index.es156.js.map +1 -0
- package/dist/index.es157.js +47 -0
- package/dist/index.es157.js.map +1 -0
- package/dist/index.es158.js +8 -0
- package/dist/index.es158.js.map +1 -0
- package/dist/index.es159.js +14 -0
- package/dist/index.es159.js.map +1 -0
- package/dist/index.es16.js +44 -22
- package/dist/index.es16.js.map +1 -1
- package/dist/index.es160.js +14 -0
- package/dist/index.es160.js.map +1 -0
- package/dist/index.es161.js +5 -0
- package/dist/index.es161.js.map +1 -0
- package/dist/index.es162.js +94 -0
- package/dist/index.es162.js.map +1 -0
- package/dist/index.es163.js +216 -0
- package/dist/index.es163.js.map +1 -0
- package/dist/index.es164.js +57 -0
- package/dist/index.es164.js.map +1 -0
- package/dist/index.es165.js +39 -0
- package/dist/index.es165.js.map +1 -0
- package/dist/index.es166.js +36 -0
- package/dist/index.es166.js.map +1 -0
- package/dist/index.es167.js +36 -0
- package/dist/index.es167.js.map +1 -0
- package/dist/index.es168.js +94 -0
- package/dist/index.es168.js.map +1 -0
- package/dist/index.es169.js +120 -0
- package/dist/index.es169.js.map +1 -0
- package/dist/index.es17.js +22 -20
- package/dist/index.es17.js.map +1 -1
- package/dist/index.es170.js +289 -0
- package/dist/index.es170.js.map +1 -0
- package/dist/index.es171.js +38 -0
- package/dist/index.es171.js.map +1 -0
- package/dist/index.es172.js +14 -0
- package/dist/index.es172.js.map +1 -0
- package/dist/index.es173.js +87 -0
- package/dist/index.es173.js.map +1 -0
- package/dist/index.es174.js +79 -0
- package/dist/index.es174.js.map +1 -0
- package/dist/index.es175.js +118 -0
- package/dist/index.es175.js.map +1 -0
- package/dist/index.es176.js +112 -0
- package/dist/index.es176.js.map +1 -0
- package/dist/index.es177.js +90 -0
- package/dist/index.es177.js.map +1 -0
- package/dist/index.es178.js +133 -0
- package/dist/index.es178.js.map +1 -0
- package/dist/index.es179.js +133 -0
- package/dist/index.es179.js.map +1 -0
- package/dist/index.es18.js +23 -73
- package/dist/index.es18.js.map +1 -1
- package/dist/index.es180.js +29 -0
- package/dist/index.es180.js.map +1 -0
- package/dist/index.es181.js +27 -0
- package/dist/index.es181.js.map +1 -0
- package/dist/index.es182.js +9 -0
- package/dist/index.es182.js.map +1 -0
- package/dist/index.es19.js +18 -48
- package/dist/index.es19.js.map +1 -1
- package/dist/index.es2.js +120 -22
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es20.js +70 -45
- package/dist/index.es20.js.map +1 -1
- package/dist/index.es21.js +43 -122
- package/dist/index.es21.js.map +1 -1
- package/dist/index.es22.js +39 -96
- package/dist/index.es22.js.map +1 -1
- package/dist/index.es23.js +113 -152
- package/dist/index.es23.js.map +1 -1
- package/dist/index.es24.js +98 -64
- package/dist/index.es24.js.map +1 -1
- package/dist/index.es25.js +160 -77
- package/dist/index.es25.js.map +1 -1
- package/dist/index.es26.js +69 -51
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es27.js +82 -17
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es28.js +274 -2
- package/dist/index.es28.js.map +1 -1
- package/dist/index.es29.js +55 -5
- package/dist/index.es29.js.map +1 -1
- package/dist/index.es3.js +40 -41
- package/dist/index.es3.js.map +1 -1
- package/dist/index.es30.js +16 -75
- package/dist/index.es30.js.map +1 -1
- package/dist/index.es31.js +2 -28
- package/dist/index.es31.js.map +1 -1
- package/dist/index.es32.js +4 -84
- package/dist/index.es32.js.map +1 -1
- package/dist/index.es33.js +72 -43
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es34.js +25 -68
- package/dist/index.es34.js.map +1 -1
- package/dist/index.es35.js +85 -12
- package/dist/index.es35.js.map +1 -1
- package/dist/index.es36.js +47 -85
- package/dist/index.es36.js.map +1 -1
- package/dist/index.es37.js +63 -32
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +49 -40
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +12 -98
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es4.js +17 -17
- package/dist/index.es4.js.map +1 -1
- package/dist/index.es40.js +81 -156
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +39 -226
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +40 -269
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +97 -21
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +15 -9
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +64 -20
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +159 -61
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +226 -123
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es48.js +300 -109
- package/dist/index.es48.js.map +1 -1
- package/dist/index.es49.js +19 -31
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es5.js +33 -31
- package/dist/index.es5.js.map +1 -1
- package/dist/index.es50.js +8 -142
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +18 -70
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +69 -21
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +143 -103
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +123 -11
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +103 -18
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es56.js +73 -11
- package/dist/index.es56.js.map +1 -1
- package/dist/index.es57.js +141 -16
- package/dist/index.es57.js.map +1 -1
- package/dist/index.es58.js +67 -40
- package/dist/index.es58.js.map +1 -1
- package/dist/index.es59.js +22 -86
- package/dist/index.es59.js.map +1 -1
- package/dist/index.es6.js +19 -23
- package/dist/index.es6.js.map +1 -1
- package/dist/index.es60.js +104 -7
- package/dist/index.es60.js.map +1 -1
- package/dist/index.es61.js +11 -41
- package/dist/index.es61.js.map +1 -1
- package/dist/index.es62.js +19 -79
- package/dist/index.es62.js.map +1 -1
- package/dist/index.es63.js +10 -35
- package/dist/index.es63.js.map +1 -1
- package/dist/index.es64.js +16 -86
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +43 -58
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +86 -69
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +7 -32
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +39 -65
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +79 -28
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es7.js +38 -43
- package/dist/index.es7.js.map +1 -1
- package/dist/index.es70.js +66 -84
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +88 -11
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +59 -46
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +65 -108
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +30 -15
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +56 -35
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +18 -19
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +30 -38
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +85 -28
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +10 -94
- package/dist/index.es79.js.map +1 -1
- package/dist/index.es8.js +26 -33
- package/dist/index.es8.js.map +1 -1
- package/dist/index.es80.js +47 -2
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +113 -6
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +16 -26
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +42 -109
- package/dist/index.es83.js.map +1 -1
- package/dist/index.es84.js +27 -22
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +39 -18
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +27 -18
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +94 -18
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +1 -18
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +6 -49
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es9.js +37 -72
- package/dist/index.es9.js.map +1 -1
- package/dist/index.es90.js +23 -84
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +96 -99
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +24 -16
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +16 -22
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +17 -100
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +16 -71
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +16 -42
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +9 -32
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +269 -15
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +85 -17
- package/dist/index.es99.js.map +1 -1
- package/dist/lib/constants.d.ts +2 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/styles.css +363 -31
- package/dist/ui-kit-preset.js +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Typography as m } from "./index.es19.js";
|
|
2
|
+
import { Spinner as v } from "./index.es64.js";
|
|
3
|
+
import { Upload as A, X as $, Pen as x } from "lucide-react";
|
|
4
|
+
import e, { useState as M, useRef as P } from "react";
|
|
5
|
+
import { useFormValues as R } from "./index.es160.js";
|
|
6
|
+
import { useToast as T } from "./index.es87.js";
|
|
7
|
+
const L = ({
|
|
8
|
+
id: f,
|
|
9
|
+
onChange: o,
|
|
10
|
+
value: l = [],
|
|
11
|
+
accept: h = "image/*",
|
|
12
|
+
error: d,
|
|
13
|
+
maxImages: r = 20
|
|
14
|
+
}) => {
|
|
15
|
+
const { onAssetUpload: g, onToggleImageEditor: p } = R(), { toast: s } = T(), [a, u] = M(!1), c = P(null), y = async (i) => {
|
|
16
|
+
const t = i.target.files;
|
|
17
|
+
if (!(!t?.length || a)) {
|
|
18
|
+
if (l.length + t.length > r) {
|
|
19
|
+
s({
|
|
20
|
+
title: "Alert!",
|
|
21
|
+
description: `Maximum ${r} images allowed.`,
|
|
22
|
+
icon: "warning"
|
|
23
|
+
});
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (g) {
|
|
27
|
+
u(!0);
|
|
28
|
+
try {
|
|
29
|
+
const n = Array.from(t).map((k) => g(k)), w = await Promise.all(n);
|
|
30
|
+
o([...l, ...w]), s({
|
|
31
|
+
title: "Alert!",
|
|
32
|
+
description: `${t.length} ${t.length === 1 ? "image" : "images"} uploaded successfully.`,
|
|
33
|
+
icon: "success"
|
|
34
|
+
});
|
|
35
|
+
} catch {
|
|
36
|
+
s({
|
|
37
|
+
title: "Alert!",
|
|
38
|
+
description: "Error uploading images",
|
|
39
|
+
icon: "warning"
|
|
40
|
+
});
|
|
41
|
+
} finally {
|
|
42
|
+
u(!1), c.current && (c.current.value = "");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, b = () => {
|
|
47
|
+
!a && l.length < r ? c.current?.click() : l.length >= r && s({
|
|
48
|
+
title: "Alert!",
|
|
49
|
+
description: `Maximum ${r} images allowed.`,
|
|
50
|
+
icon: "warning"
|
|
51
|
+
});
|
|
52
|
+
}, E = (i) => {
|
|
53
|
+
if (!a) {
|
|
54
|
+
const t = [...l];
|
|
55
|
+
t.splice(i, 1), o(t);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
function N(i, t) {
|
|
59
|
+
const n = [...l];
|
|
60
|
+
n.splice(t, 1, i), o(n);
|
|
61
|
+
}
|
|
62
|
+
return /* @__PURE__ */ e.createElement("div", { className: "relative" }, a && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(v, { 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(
|
|
63
|
+
"button",
|
|
64
|
+
{
|
|
65
|
+
className: "w-full",
|
|
66
|
+
onClick: b,
|
|
67
|
+
type: "button",
|
|
68
|
+
disabled: a || l.length >= r
|
|
69
|
+
},
|
|
70
|
+
/* @__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(A, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "text-gray-600" }, a ? "Uploading..." : l.length >= r ? `Maximum ${r} images reached` : "Add Images"), l.length > 0 && /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "text-gray-500" }, l.length, " of ", r, " images"))
|
|
71
|
+
), /* @__PURE__ */ e.createElement(
|
|
72
|
+
"input",
|
|
73
|
+
{
|
|
74
|
+
ref: c,
|
|
75
|
+
id: `${f}-gallery`,
|
|
76
|
+
type: "file",
|
|
77
|
+
accept: h,
|
|
78
|
+
disabled: a || l.length >= r,
|
|
79
|
+
onChange: y,
|
|
80
|
+
className: "hidden",
|
|
81
|
+
multiple: !0
|
|
82
|
+
}
|
|
83
|
+
), d && /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "mt-1 text-danger-1" }, d)), l.length > 0 && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4" }, l.map((i, t) => /* @__PURE__ */ e.createElement("div", { key: t, className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
|
|
84
|
+
"img",
|
|
85
|
+
{
|
|
86
|
+
src: i.public_url,
|
|
87
|
+
alt: `Preview ${t + 1}`,
|
|
88
|
+
className: "object-cover w-full h-24 rounded"
|
|
89
|
+
}
|
|
90
|
+
), /* @__PURE__ */ e.createElement(
|
|
91
|
+
"button",
|
|
92
|
+
{
|
|
93
|
+
onClick: () => E(t),
|
|
94
|
+
className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100",
|
|
95
|
+
type: "button",
|
|
96
|
+
disabled: a
|
|
97
|
+
},
|
|
98
|
+
/* @__PURE__ */ e.createElement($, { size: 16, className: "stroke-danger" })
|
|
99
|
+
), p && /* @__PURE__ */ e.createElement(
|
|
100
|
+
"button",
|
|
101
|
+
{
|
|
102
|
+
type: "button",
|
|
103
|
+
onClick: (n) => {
|
|
104
|
+
n.currentTarget.blur(), p({
|
|
105
|
+
imageUrl: i.public_url,
|
|
106
|
+
index: t,
|
|
107
|
+
onReplaceImage: N
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
className: "absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100"
|
|
111
|
+
},
|
|
112
|
+
/* @__PURE__ */ e.createElement(x, { size: 16, className: "stroke-danger" })
|
|
113
|
+
)))));
|
|
114
|
+
};
|
|
115
|
+
export {
|
|
116
|
+
L as MultiImagePicker
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=index.es175.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es175.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/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 { Upload, X, Pen } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface MultiImagePickerProps {\n id: string\n onChange: (data: AssetValue[]) => void\n value?: AssetValue[]\n accept?: string\n error?: string\n maxImages?: number\n}\n\nconst MultiImagePicker: React.FC<MultiImagePickerProps> = ({\n id,\n onChange,\n value = [],\n accept = 'image/*',\n error,\n maxImages = 20,\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 onChange([...value, ...results])\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 function onReplaceImage(data: AssetValue, index: number) {\n const newValue = [...value]\n newValue.splice(index, 1, 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={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 <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 {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 </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { MultiImagePicker }\n"],"names":["MultiImagePicker","id","onChange","value","accept","error","maxImages","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","files","uploads","file","results","handleClick","removeImage","index","newImages","onReplaceImage","data","newValue","React","Spinner","Upload","Typography","image","X","Pen"],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Video as v, X as w } from "lucide-react";
|
|
2
|
+
import e, { useState as k, useRef as A } from "react";
|
|
3
|
+
import { Typography as o } from "./index.es19.js";
|
|
4
|
+
import { Spinner as $ } from "./index.es64.js";
|
|
5
|
+
import { useFormValues as x } from "./index.es160.js";
|
|
6
|
+
import { useToast as L } from "./index.es87.js";
|
|
7
|
+
const z = ({
|
|
8
|
+
id: u,
|
|
9
|
+
onChange: c,
|
|
10
|
+
value: t = [],
|
|
11
|
+
accept: f = "video/*",
|
|
12
|
+
error: d,
|
|
13
|
+
maxVideos: l = 10
|
|
14
|
+
}) => {
|
|
15
|
+
const { onAssetUpload: m } = x(), { toast: i } = L(), [a, g] = k(!1), s = A(null), h = async (n) => {
|
|
16
|
+
const r = n.target.files;
|
|
17
|
+
if (!(!r?.length || a)) {
|
|
18
|
+
if (t.length + r.length > l) {
|
|
19
|
+
i({
|
|
20
|
+
title: "Alert!",
|
|
21
|
+
description: `Maximum ${l} videos allowed.`,
|
|
22
|
+
icon: "warning"
|
|
23
|
+
});
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (m) {
|
|
27
|
+
g(!0);
|
|
28
|
+
try {
|
|
29
|
+
const p = Array.from(r).map((N) => m(N)), E = await Promise.all(p);
|
|
30
|
+
c([...t, ...E]), i({
|
|
31
|
+
title: "Alert!",
|
|
32
|
+
description: `${r.length} ${r.length === 1 ? "video" : "videos"} uploaded successfully.`,
|
|
33
|
+
icon: "success"
|
|
34
|
+
});
|
|
35
|
+
} catch {
|
|
36
|
+
i({
|
|
37
|
+
title: "Alert!",
|
|
38
|
+
description: "Error uploading videos",
|
|
39
|
+
icon: "warning"
|
|
40
|
+
});
|
|
41
|
+
} finally {
|
|
42
|
+
g(!1), s.current && (s.current.value = "");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, y = () => {
|
|
47
|
+
!a && t.length < l ? s.current?.click() : t.length >= l && i({
|
|
48
|
+
title: "Alert!",
|
|
49
|
+
description: `Maximum ${l} videos allowed.`,
|
|
50
|
+
icon: "warning"
|
|
51
|
+
});
|
|
52
|
+
}, b = (n) => {
|
|
53
|
+
if (!a) {
|
|
54
|
+
const r = [...t];
|
|
55
|
+
r.splice(n, 1), c(r);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
return /* @__PURE__ */ e.createElement("div", { className: "relative" }, a && /* @__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-12 h-12 animate-spin 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(
|
|
59
|
+
"button",
|
|
60
|
+
{
|
|
61
|
+
className: "w-full",
|
|
62
|
+
onClick: y,
|
|
63
|
+
type: "button",
|
|
64
|
+
disabled: a || t.length >= l
|
|
65
|
+
},
|
|
66
|
+
/* @__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(v, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(o, { variant: "body1", className: "text-gray-600" }, a ? "Uploading..." : t.length >= l ? `Maximum ${l} videos reached` : "Add Videos"), t.length > 0 && /* @__PURE__ */ e.createElement(o, { variant: "body1", className: "text-gray-500" }, t.length, " of ", l, " videos"))
|
|
67
|
+
), /* @__PURE__ */ e.createElement(
|
|
68
|
+
"input",
|
|
69
|
+
{
|
|
70
|
+
ref: s,
|
|
71
|
+
id: `${u}-gallery`,
|
|
72
|
+
type: "file",
|
|
73
|
+
accept: f,
|
|
74
|
+
disabled: a || t.length >= l,
|
|
75
|
+
onChange: h,
|
|
76
|
+
className: "hidden",
|
|
77
|
+
multiple: !0
|
|
78
|
+
}
|
|
79
|
+
), d && /* @__PURE__ */ e.createElement(o, { variant: "body1", className: "mt-1 text-danger-1" }, d)), t.length > 0 && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-2 md:grid-cols-2" }, t.map((n, r) => /* @__PURE__ */ e.createElement("div", { key: r, className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
|
|
80
|
+
"video",
|
|
81
|
+
{
|
|
82
|
+
src: n.public_url,
|
|
83
|
+
className: "object-cover w-full h-32 rounded",
|
|
84
|
+
controls: !0,
|
|
85
|
+
controlsList: "nodownload",
|
|
86
|
+
preload: "metadata"
|
|
87
|
+
},
|
|
88
|
+
/* @__PURE__ */ e.createElement(
|
|
89
|
+
"track",
|
|
90
|
+
{
|
|
91
|
+
kind: "captions",
|
|
92
|
+
label: "English captions",
|
|
93
|
+
srcLang: "en",
|
|
94
|
+
src: "",
|
|
95
|
+
default: !0
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
), /* @__PURE__ */ e.createElement(
|
|
99
|
+
"button",
|
|
100
|
+
{
|
|
101
|
+
onClick: () => b(r),
|
|
102
|
+
className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100",
|
|
103
|
+
type: "button",
|
|
104
|
+
disabled: a
|
|
105
|
+
},
|
|
106
|
+
/* @__PURE__ */ e.createElement(w, { size: 16, className: "stroke-danger" })
|
|
107
|
+
)))));
|
|
108
|
+
};
|
|
109
|
+
export {
|
|
110
|
+
z as MultiVideoPicker
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=index.es176.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es176.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/multi-video-picker/index.tsx"],"sourcesContent":["import { X, Video } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\nimport { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\n\ninterface MultiVideoPickerProps {\n id: string\n onChange: (data: AssetValue[]) => void\n value?: AssetValue[]\n accept?: string\n error?: string\n maxVideos?: number\n}\n\nconst MultiVideoPicker: React.FC<MultiVideoPickerProps> = ({\n id,\n onChange,\n value = [],\n accept = 'video/*',\n error,\n maxVideos = 10,\n}) => {\n const { onAssetUpload } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleVideoSelect = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (!files?.length || isLoading) return\n\n if (value.length + files.length > maxVideos) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxVideos} videos 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 onChange([...value, ...results])\n\n toast({\n title: 'Alert!',\n description: `${files.length} ${files.length === 1 ? 'video' : 'videos'} uploaded successfully.`,\n icon: 'success',\n })\n } catch (error) {\n toast({\n title: 'Alert!',\n description: `Error uploading videos`,\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 < maxVideos) {\n fileInputRef.current?.click()\n } else if (value.length >= maxVideos) {\n toast({\n title: 'Alert!',\n description: `Maximum ${maxVideos} videos allowed.`,\n icon: 'warning',\n })\n }\n }\n\n const removeVideo = (index: number) => {\n if (!isLoading) {\n const newVideos = [...value]\n newVideos.splice(index, 1)\n onChange(newVideos)\n }\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-12 h-12 animate-spin text-primary-1\" />\n </div>\n )}\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 >= maxVideos}\n >\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Video 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 >= maxVideos\n ? `Maximum ${maxVideos} videos reached`\n : 'Add Videos'}\n </Typography>\n {value.length > 0 && (\n <Typography variant=\"body1\" className=\"text-gray-500\">\n {value.length} of {maxVideos} videos\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 >= maxVideos}\n onChange={handleVideoSelect}\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-2 md:grid-cols-2\">\n {value.map((video, index) => (\n <div key={index} className=\"relative flex rounded\">\n <video\n src={video.public_url}\n className=\"object-cover w-full h-32 rounded\"\n controls={true}\n controlsList=\"nodownload\"\n preload=\"metadata\"\n >\n <track\n kind=\"captions\"\n label=\"English captions\"\n srcLang=\"en\"\n src=\"\"\n default\n />\n </video>\n <button\n onClick={() => removeVideo(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 ))}\n </div>\n )}\n </div>\n )\n}\n\nexport { MultiVideoPicker }\n"],"names":["MultiVideoPicker","id","onChange","value","accept","error","maxVideos","onAssetUpload","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleVideoSelect","e","files","uploads","file","results","handleClick","removeVideo","index","newVideos","React","Spinner","Video","Typography","video","X"],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import t from "react";
|
|
2
|
+
import { Typography as u } from "./index.es19.js";
|
|
3
|
+
import { Button as p } from "./index.es9.js";
|
|
4
|
+
import { FormField as x } from "./index.es170.js";
|
|
5
|
+
import { Plus as E } from "lucide-react";
|
|
6
|
+
import { useFormValues as v } from "./index.es160.js";
|
|
7
|
+
const R = ({ field: n }) => {
|
|
8
|
+
const { values: i, setValue: h, setFormValues: y } = v(), m = (() => {
|
|
9
|
+
const r = [], s = `${n.id}||`, o = /* @__PURE__ */ new Set();
|
|
10
|
+
Object.keys(i).forEach((e) => {
|
|
11
|
+
if (e.startsWith(s)) {
|
|
12
|
+
const a = e.match(new RegExp(`^${n.id}\\|\\|(\\d+)\\|\\|`));
|
|
13
|
+
a && a[1] && o.add(parseInt(a[1]));
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
const l = Array.from(o).sort((e, a) => e - a);
|
|
17
|
+
for (const e of l) {
|
|
18
|
+
const a = {};
|
|
19
|
+
for (const c of n.options) {
|
|
20
|
+
const d = `${n.id}||${e}||${c.id}`;
|
|
21
|
+
d in i && (a[c.id] = i[d]);
|
|
22
|
+
}
|
|
23
|
+
r.push(a);
|
|
24
|
+
}
|
|
25
|
+
return r;
|
|
26
|
+
})(), f = () => {
|
|
27
|
+
const r = m.length;
|
|
28
|
+
n.options.forEach((s) => {
|
|
29
|
+
h(`${n.id}||${r}||${s.id}`, void 0);
|
|
30
|
+
});
|
|
31
|
+
}, $ = (r) => {
|
|
32
|
+
const s = { ...i }, o = `${n.id}||`;
|
|
33
|
+
Object.keys(i).filter(
|
|
34
|
+
(e) => e.startsWith(o)
|
|
35
|
+
).forEach((e) => {
|
|
36
|
+
const a = e.match(new RegExp(`^${n.id}\\|\\|(\\d+)\\|\\|`));
|
|
37
|
+
if (a && a[1]) {
|
|
38
|
+
const c = parseInt(a[1]);
|
|
39
|
+
if (c === r)
|
|
40
|
+
delete s[e];
|
|
41
|
+
else if (c > r) {
|
|
42
|
+
const d = e.substring(
|
|
43
|
+
e.indexOf("||", o.length)
|
|
44
|
+
), g = `${n.id}||${c - 1}${d}`;
|
|
45
|
+
s[g] = i[e], delete s[e];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}), y(s);
|
|
49
|
+
};
|
|
50
|
+
return /* @__PURE__ */ t.createElement("div", { className: "flex flex-col gap-4" }, m.length === 0 && /* @__PURE__ */ t.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ t.createElement(u, { variant: "body1", className: "text-light-4" }, "No entry added yet."), /* @__PURE__ */ t.createElement(
|
|
51
|
+
p,
|
|
52
|
+
{
|
|
53
|
+
size: "sm",
|
|
54
|
+
prefixIcon: /* @__PURE__ */ t.createElement(E, { size: 20 }),
|
|
55
|
+
variant: "secondary",
|
|
56
|
+
onClick: f,
|
|
57
|
+
className: "capitalize w-fit",
|
|
58
|
+
title: "Add "
|
|
59
|
+
}
|
|
60
|
+
)), m.map((r, s) => /* @__PURE__ */ t.createElement("div", { key: `${n.id}-entry-${s}` }, /* @__PURE__ */ t.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ t.createElement(u, { variant: "body2", className: "text-light-4" }, "Entry ", s + 1), /* @__PURE__ */ t.createElement(
|
|
61
|
+
p,
|
|
62
|
+
{
|
|
63
|
+
size: "sm",
|
|
64
|
+
variant: "link-secondary",
|
|
65
|
+
onClick: () => $(s),
|
|
66
|
+
className: "w-fit text-danger-1"
|
|
67
|
+
},
|
|
68
|
+
"Remove"
|
|
69
|
+
)), /* @__PURE__ */ t.createElement("div", { className: "flex flex-col gap-3" }, n.options.map((o) => {
|
|
70
|
+
const l = `${n.id}||${s}||${o.id}`, e = {
|
|
71
|
+
...o,
|
|
72
|
+
id: l
|
|
73
|
+
};
|
|
74
|
+
return /* @__PURE__ */ t.createElement(x, { key: l, field: e });
|
|
75
|
+
})))), m.length ? /* @__PURE__ */ t.createElement("div", { className: "flex justify-end" }, /* @__PURE__ */ t.createElement(
|
|
76
|
+
p,
|
|
77
|
+
{
|
|
78
|
+
size: "sm",
|
|
79
|
+
prefixIcon: /* @__PURE__ */ t.createElement(E, { size: 20 }),
|
|
80
|
+
variant: "secondary",
|
|
81
|
+
onClick: f,
|
|
82
|
+
className: "mt-2 capitalize w-fit",
|
|
83
|
+
title: `Add more ${n.name}`
|
|
84
|
+
}
|
|
85
|
+
)) : null);
|
|
86
|
+
};
|
|
87
|
+
export {
|
|
88
|
+
R as RepeatableGroup
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=index.es177.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es177.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":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
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.es160.js";
|
|
7
|
+
import { useToast as P } from "./index.es87.js";
|
|
8
|
+
const X = ({
|
|
9
|
+
id: h,
|
|
10
|
+
onChange: c,
|
|
11
|
+
value: l = [],
|
|
12
|
+
accept: y = "image/*",
|
|
13
|
+
error: p,
|
|
14
|
+
maxImages: a = 20,
|
|
15
|
+
options: E
|
|
16
|
+
}) => {
|
|
17
|
+
const { onAssetUpload: u, onToggleImageEditor: f } = M(), { toast: o } = P(), [n, b] = _(!1), m = C(null), N = async (s) => {
|
|
18
|
+
const t = s.target.files;
|
|
19
|
+
if (!(!t?.length || n)) {
|
|
20
|
+
if (l.length + t.length > a) {
|
|
21
|
+
o({
|
|
22
|
+
title: "Alert!",
|
|
23
|
+
description: `Maximum ${a} images allowed.`,
|
|
24
|
+
icon: "warning"
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (u) {
|
|
29
|
+
b(!0);
|
|
30
|
+
try {
|
|
31
|
+
const r = Array.from(t).map((d) => u(d)), A = (await Promise.all(r)).map((d) => ({ ...d, tag: "" }));
|
|
32
|
+
c([...l, ...A]), o({
|
|
33
|
+
title: "Alert!",
|
|
34
|
+
description: `${t.length} ${t.length === 1 ? "image" : "images"} uploaded successfully.`,
|
|
35
|
+
icon: "success"
|
|
36
|
+
});
|
|
37
|
+
} catch {
|
|
38
|
+
o({
|
|
39
|
+
title: "Alert!",
|
|
40
|
+
description: "Error uploading images",
|
|
41
|
+
icon: "warning"
|
|
42
|
+
});
|
|
43
|
+
} finally {
|
|
44
|
+
b(!1), m.current && (m.current.value = "");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}, w = () => {
|
|
49
|
+
!n && l.length < a ? m.current?.click() : l.length >= a && o({
|
|
50
|
+
title: "Alert!",
|
|
51
|
+
description: `Maximum ${a} images allowed.`,
|
|
52
|
+
icon: "warning"
|
|
53
|
+
});
|
|
54
|
+
}, k = (s) => {
|
|
55
|
+
if (!n) {
|
|
56
|
+
const t = [...l];
|
|
57
|
+
t.splice(s, 1), c(t);
|
|
58
|
+
}
|
|
59
|
+
}, v = (s, t) => {
|
|
60
|
+
const r = [...l], i = r[t];
|
|
61
|
+
r.splice(t, 1, { ...i, ...s }), c(r);
|
|
62
|
+
};
|
|
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(
|
|
64
|
+
"button",
|
|
65
|
+
{
|
|
66
|
+
className: "w-full",
|
|
67
|
+
onClick: w,
|
|
68
|
+
type: "button",
|
|
69
|
+
disabled: n || l.length >= a
|
|
70
|
+
},
|
|
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"))
|
|
72
|
+
), /* @__PURE__ */ e.createElement(
|
|
73
|
+
"input",
|
|
74
|
+
{
|
|
75
|
+
ref: m,
|
|
76
|
+
id: `${h}-gallery`,
|
|
77
|
+
type: "file",
|
|
78
|
+
accept: y,
|
|
79
|
+
disabled: n || l.length >= a,
|
|
80
|
+
onChange: N,
|
|
81
|
+
className: "hidden",
|
|
82
|
+
multiple: !0
|
|
83
|
+
}
|
|
84
|
+
), p && /* @__PURE__ */ e.createElement(g, { variant: "body1", className: "mt-1 text-danger-1" }, p)), l.length > 0 && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4" }, l.map((s, t) => /* @__PURE__ */ e.createElement("div", { key: s.private_url, className: "flex flex-col gap-2" }, /* @__PURE__ */ e.createElement("div", { key: t, className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
|
|
85
|
+
"img",
|
|
86
|
+
{
|
|
87
|
+
src: s.public_url,
|
|
88
|
+
alt: `Preview ${t + 1}`,
|
|
89
|
+
className: "object-cover w-full h-24 rounded"
|
|
90
|
+
}
|
|
91
|
+
), f && /* @__PURE__ */ e.createElement(
|
|
92
|
+
"button",
|
|
93
|
+
{
|
|
94
|
+
type: "button",
|
|
95
|
+
onClick: (r) => {
|
|
96
|
+
r.currentTarget.blur(), f({
|
|
97
|
+
imageUrl: s.public_url,
|
|
98
|
+
index: t,
|
|
99
|
+
onReplaceImage: v
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
className: "absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100"
|
|
103
|
+
},
|
|
104
|
+
/* @__PURE__ */ e.createElement(R, { size: 16, className: "stroke-danger" })
|
|
105
|
+
), /* @__PURE__ */ e.createElement(
|
|
106
|
+
"button",
|
|
107
|
+
{
|
|
108
|
+
onClick: () => k(t),
|
|
109
|
+
className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100",
|
|
110
|
+
type: "button",
|
|
111
|
+
disabled: n
|
|
112
|
+
},
|
|
113
|
+
/* @__PURE__ */ e.createElement(S, { size: 16, className: "stroke-danger" })
|
|
114
|
+
)), /* @__PURE__ */ e.createElement(
|
|
115
|
+
x,
|
|
116
|
+
{
|
|
117
|
+
options: E.map((r) => ({
|
|
118
|
+
id: r,
|
|
119
|
+
name: r
|
|
120
|
+
})),
|
|
121
|
+
value: s.tag,
|
|
122
|
+
onChange: (r) => {
|
|
123
|
+
const i = [...l];
|
|
124
|
+
i[t].tag = r, c(i);
|
|
125
|
+
},
|
|
126
|
+
placeholder: "Select "
|
|
127
|
+
}
|
|
128
|
+
)))));
|
|
129
|
+
};
|
|
130
|
+
export {
|
|
131
|
+
X as TaggableMultiImagePicker
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=index.es178.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es178.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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"}
|