@drivy/cobalt 0.14.8 → 0.14.9
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/cjs/tokens/icons.js +1 -0
- package/cjs/tokens/icons.js.map +1 -1
- package/cjs/tokens/index.js.map +1 -1
- package/components/Accordion/ToggleIcon.js.map +1 -1
- package/components/Accordion/index.js.map +1 -1
- package/components/Alerter/Alert.js.map +1 -1
- package/components/Alerter/index.js.map +1 -1
- package/components/BasicCell/index.js.map +1 -1
- package/components/BulletList/index.js.map +1 -1
- package/components/Button/Button.js.map +1 -1
- package/components/Button/Link.js.map +1 -1
- package/components/Button/index.js.map +1 -1
- package/components/Buttons/BrandButton/index.js.map +1 -1
- package/components/Buttons/ButtonComponent.js.map +1 -1
- package/components/Buttons/ButtonsGroup.js.map +1 -1
- package/components/Buttons/DefaultButton/index.js.map +1 -1
- package/components/Buttons/GhostButton/index.js.map +1 -1
- package/components/Buttons/InversedButton/index.js.map +1 -1
- package/components/Buttons/helpers.js.map +1 -1
- package/components/Calendar/CalendarRangePicker/CalendarRangePicker.js.map +1 -1
- package/components/Calendar/CalendarRangePicker/CalendarRangePickerDay.js.map +1 -1
- package/components/Calendar/CalendarRangePicker/CalendarRangePickerMonth.js.map +1 -1
- package/components/Calendar/CalendarView/CalendarViewMonth.js.map +1 -1
- package/components/Calendar/CalendarView/index.js.map +1 -1
- package/components/Callout/index.js.map +1 -1
- package/components/Card/index.js.map +1 -1
- package/components/CdwChoice/index.js.map +1 -1
- package/components/Cell/index.js.map +1 -1
- package/components/Chip/index.js.map +1 -1
- package/components/EmptyState/index.js.map +1 -1
- package/components/Flag/index.js.map +1 -1
- package/components/Flash/index.js.map +1 -1
- package/components/Form/Autocomplete/index.js.map +1 -1
- package/components/Form/CheckablePill.js.map +1 -1
- package/components/Form/Checkmark.js.map +1 -1
- package/components/Form/ComposedField.js.map +1 -1
- package/components/Form/Fieldset.js.map +1 -1
- package/components/Form/Hint.js.map +1 -1
- package/components/Form/RadioWithDetails.js.map +1 -1
- package/components/Form/Select.js.map +1 -1
- package/components/Form/Slider.js.map +1 -1
- package/components/Form/Stepper.js.map +1 -1
- package/components/Form/TextArea.js.map +1 -1
- package/components/Form/TextInput.js.map +1 -1
- package/components/Form/ToggleSwitch.js.map +1 -1
- package/components/Form/field.js.map +1 -1
- package/components/Helper/index.js.map +1 -1
- package/components/HorizontalList/index.js.map +1 -1
- package/components/Icon/__generated__/AirportIcon.js.map +1 -1
- package/components/Icon/__generated__/ArrowLeftIcon.js.map +1 -1
- package/components/Icon/__generated__/ArrowRightIcon.js.map +1 -1
- package/components/Icon/__generated__/BinIcon.js.map +1 -1
- package/components/Icon/__generated__/BriefcaseIcon.js.map +1 -1
- package/components/Icon/__generated__/BulbIcon.js.map +1 -1
- package/components/Icon/__generated__/CameraIcon.js.map +1 -1
- package/components/Icon/__generated__/CarAddIcon.js.map +1 -1
- package/components/Icon/__generated__/CarCheckIcon.js.map +1 -1
- package/components/Icon/__generated__/CarDrivyOpenIcon.js.map +1 -1
- package/components/Icon/__generated__/CarGroupIcon.js.map +1 -1
- package/components/Icon/__generated__/CarIcon.js.map +1 -1
- package/components/Icon/__generated__/CarLockIcon.js.map +1 -1
- package/components/Icon/__generated__/CarReturnIcon.js.map +1 -1
- package/components/Icon/__generated__/CarSearchIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeAntiqueIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeCabrioletIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeCampervanIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeCityIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeConvertibleIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeCoupeIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeFamilyIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeFourFourIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeMinibusIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeSedanIcon.js.map +1 -1
- package/components/Icon/__generated__/CarTypeUtilityIcon.js.map +1 -1
- package/components/Icon/__generated__/CheckCircleIcon.js.map +1 -1
- package/components/Icon/__generated__/CheckIcon.js.map +1 -1
- package/components/Icon/__generated__/ChevronDownIcon.js.map +1 -1
- package/components/Icon/__generated__/ChevronLeftIcon.js.map +1 -1
- package/components/Icon/__generated__/ChevronRightIcon.js.map +1 -1
- package/components/Icon/__generated__/ChevronUpIcon.js.map +1 -1
- package/components/Icon/__generated__/CloseIcon.js.map +1 -1
- package/components/Icon/__generated__/ContactMailIcon.js.map +1 -1
- package/components/Icon/__generated__/ContactPhoneIcon.js.map +1 -1
- package/components/Icon/__generated__/ContextualPaperclipIcon.js.map +1 -1
- package/components/Icon/__generated__/ContextualQuestionIcon.js.map +1 -1
- package/components/Icon/__generated__/ContextualWarningCircleFilledIcon.js.map +1 -1
- package/components/Icon/__generated__/ContextualWarningCircleIcon.js.map +1 -1
- package/components/Icon/__generated__/CreditCardIcon.js.map +1 -1
- package/components/Icon/__generated__/DirectionsIcon.js.map +1 -1
- package/components/Icon/__generated__/DocumentIcon.js.map +1 -1
- package/components/Icon/__generated__/DotsHorizontalIcon.js.map +1 -1
- package/components/Icon/__generated__/DotsVerticalIcon.js.map +1 -1
- package/components/Icon/__generated__/DownloadIcon.js.map +1 -1
- package/components/Icon/__generated__/EarthIcon.js.map +1 -1
- package/components/Icon/__generated__/EditIcon.js.map +1 -1
- package/components/Icon/__generated__/ExternalLinkIcon.js.map +1 -1
- package/components/Icon/__generated__/EyeIcon.js.map +1 -1
- package/components/Icon/__generated__/FiltersIcon.js.map +1 -1
- package/components/Icon/__generated__/FlagIcon.js.map +1 -1
- package/components/Icon/__generated__/GeolocationIcon.js.map +1 -1
- package/components/Icon/__generated__/GraphUpIcon.js.map +1 -1
- package/components/Icon/__generated__/IncidentIcon.js.map +1 -1
- package/components/Icon/__generated__/InfoFilledIcon.js.map +1 -1
- package/components/Icon/__generated__/InfoIcon.js.map +1 -1
- package/components/Icon/__generated__/InstantIcon.js.map +1 -1
- package/components/Icon/__generated__/KeyIcon.js.map +1 -1
- package/components/Icon/__generated__/LoadingIcon.js.map +1 -1
- package/components/Icon/__generated__/LocalityIcon.js.map +1 -1
- package/components/Icon/__generated__/LocationMapIcon.js.map +1 -1
- package/components/Icon/__generated__/LocationParkingIcon.js.map +1 -1
- package/components/Icon/__generated__/LocationPinIcon.js.map +1 -1
- package/components/Icon/__generated__/LogoutIcon.js.map +1 -1
- package/components/Icon/__generated__/MapIcon.js.map +1 -1
- package/components/Icon/__generated__/MeetDriverIcon.js.map +1 -1
- package/components/Icon/__generated__/MeetOwnerIcon.js.map +1 -1
- package/components/Icon/__generated__/MenuListIcon.js.map +1 -1
- package/components/Icon/__generated__/MileageIcon.js.map +1 -1
- package/components/Icon/__generated__/MiscGiftIcon.js.map +1 -1
- package/components/Icon/__generated__/NotificationIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionAirConditioningIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionAndroidAutoIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionAppleCarplayIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionAudioInputIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionBabySeatIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionBikeRackIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionBluetoothAudioIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionCdPlayerIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionChainsIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionCruiseControlIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionDashcamIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionGpsIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionHasTrailerIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionHitchIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionRoofBoxIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionSkiRackIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionSnowTireIcon.js.map +1 -1
- package/components/Icon/__generated__/OptionWheelchairAccessibleIcon.js.map +1 -1
- package/components/Icon/__generated__/PeopleUserIcon.js.map +1 -1
- package/components/Icon/__generated__/PhotosIcon.js.map +1 -1
- package/components/Icon/__generated__/PlugIcon.js.map +1 -1
- package/components/Icon/__generated__/PlusIcon.js.map +1 -1
- package/components/Icon/__generated__/RaceFlagIcon.js.map +1 -1
- package/components/Icon/__generated__/RefreshIcon.js.map +1 -1
- package/components/Icon/__generated__/ResetIcon.js.map +1 -1
- package/components/Icon/__generated__/RideIcon.js.map +1 -1
- package/components/Icon/__generated__/SearchIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceBatteryIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceCleaningIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceFuelIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceHealingIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceLockedIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceTollsIcon.js.map +1 -1
- package/components/Icon/__generated__/ServiceUnlockedIcon.js.map +1 -1
- package/components/Icon/__generated__/SettingsIcon.js.map +1 -1
- package/components/Icon/__generated__/ShareIcon.js.map +1 -1
- package/components/Icon/__generated__/ShopIcon.js.map +1 -1
- package/components/Icon/__generated__/SocialFacebookIcon.js.map +1 -1
- package/components/Icon/__generated__/SocialLinkedinIcon.js.map +1 -1
- package/components/Icon/__generated__/SocialTwitterIcon.js.map +1 -1
- package/components/Icon/__generated__/SocialWhatsappIcon.js.map +1 -1
- package/components/Icon/__generated__/StarIcon.js.map +1 -1
- package/components/Icon/__generated__/SubwayIcon.js.map +1 -1
- package/components/Icon/__generated__/TimeAlertIcon.js.map +1 -1
- package/components/Icon/__generated__/TimeBackwardsIcon.js.map +1 -1
- package/components/Icon/__generated__/TimeCalendarIcon.js.map +1 -1
- package/components/Icon/__generated__/TimeForwardIcon.js.map +1 -1
- package/components/Icon/__generated__/TrainIcon.js.map +1 -1
- package/components/Icon/__generated__/UserShieldIcon.js.map +1 -1
- package/components/Icon/__generated__/VerifiedSealIcon.js.map +1 -1
- package/components/Icon/__generated__/WalletIcon.js +23 -0
- package/components/Icon/__generated__/WalletIcon.js.map +1 -0
- package/components/Icon/__generated__/WrenchIcon.js.map +1 -1
- package/components/Icon/index.js.map +1 -1
- package/components/Modal/ModalBody.js.map +1 -1
- package/components/Modal/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader.js.map +1 -1
- package/components/Modal/index.js.map +1 -1
- package/components/ModalOpenerButton/index.js.map +1 -1
- package/components/Note/index.js.map +1 -1
- package/components/PhotoDropzone/index.js.map +1 -1
- package/components/Pill/index.js.map +1 -1
- package/components/Popover/LazyTippy.js.map +1 -1
- package/components/Popover/index.js.map +1 -1
- package/components/PriceTable/index.js.map +1 -1
- package/components/ProgressBar/index.js.map +1 -1
- package/components/Tabs/index.js.map +1 -1
- package/components/Tag/index.js.map +1 -1
- package/components/TextContainer/index.js.map +1 -1
- package/components/utils/Timer.js.map +1 -1
- package/components/utils/capitalize.js.map +1 -1
- package/components/utils/dom.js.map +1 -1
- package/components/utils/eqSet.js.map +1 -1
- package/components/utils/px.js.map +1 -1
- package/components/utils/validateFile.js.map +1 -1
- package/hooks/useBreakpoint.js.map +1 -1
- package/hooks/useElementHeight.js.map +1 -1
- package/icons/index.js +1 -0
- package/icons/index.js.map +1 -1
- package/icons/wallet.js +4 -0
- package/icons/wallet.js.map +1 -0
- package/icons/wallet.svg +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +20 -20
- package/tokens/icons.js +1 -0
- package/tokens/icons.js.map +1 -1
- package/tokens/index.js.map +1 -1
- package/types/components/Button/index.d.ts +8 -8
- package/types/components/Buttons/BrandButton/index.d.ts +2 -2
- package/types/components/Buttons/DefaultButton/index.d.ts +2 -2
- package/types/components/Buttons/GhostButton/index.d.ts +2 -2
- package/types/components/Form/Autocomplete/index.d.ts +2 -2
- package/types/components/Form/TextInput.d.ts +3 -3
- package/types/components/Icon/__generated__/WalletIcon.d.ts +10 -0
- package/types/components/Icon/__generated__/index.d.ts +1 -0
- package/types/components/Icon/index.d.ts +1 -1
- package/types/icons/index.d.ts +1 -0
- package/types/tokens/index.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserShieldIcon.js","sources":["../../../../src/components/Icon/__generated__/UserShieldIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"userShield\"\n\nconst UserShieldIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 4a3 3 0 110 6 3 3 0 010-6zm5.13 12A9.69 9.69 0 0112 20.92 9.69 9.69 0 016.87 17c-.34-.5-.63-1-.87-1.53 0-1.65 2.71-3 6-3s6 1.32 6 3c-.24.53-.53 1.03-.87 1.53z\" />\n </svg>\n )\n}\n\nexport default UserShieldIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"UserShieldIcon.js","sources":["../../../../src/components/Icon/__generated__/UserShieldIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"userShield\"\n\nconst UserShieldIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 4a3 3 0 110 6 3 3 0 010-6zm5.13 12A9.69 9.69 0 0112 20.92 9.69 9.69 0 016.87 17c-.34-.5-.63-1-.87-1.53 0-1.65 2.71-3 6-3s6 1.32 6 3c-.24.53-.53 1.03-.87 1.53z\" />\n </svg>\n )\n}\n\nexport default UserShieldIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,YAAY,CAAA;AAEzB,IAAA,cAAc,GAAG,UAAC,EAKZ,EAAA;;AAJV,IAAA,IAAA,KAAK,WAAA,EACL,EAAA,GAAA,EAAA,CAAA,IAAS,EAAT,IAAI,mBAAG,EAAE,GAAA,EAAA,EACT,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,GAAA,EAAA,EACjB,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAET,IAAM,iBAAiB,GAAG,EAAE,CAC1B,SAAS,EACT,2BAAA,CAAA,MAAA,CAA4B,UAAU,CAAE,GAAA,EAAA,GAAA,EAAA;AAEtC,QAAA,EAAA,CAAC,4BAAqB,UAAU,CAAC,KAAK,CAAC,CAAE,IAAG,KAAK;QACjD,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;AAClC,QAAA,EAAA,CAAA,wBAAA,CAAwB,GAAE,SAAS;YAEtC,CAAA;AAED,IAAA,IAAM,IAAI,GAAG,UAAC,OAAwB,EAAA,EAAK,QACzC,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,iBAAiB,EAAG,EAAA,OAAO,CAAQ,EACrD,EAAA,CAAA;IAED,OAAO,IAAI,CACT,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAA;AACzD,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,mOAAmO,EAAG,CAAA,CAC1O,CACP,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifiedSealIcon.js","sources":["../../../../src/components/Icon/__generated__/VerifiedSealIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"verifiedSeal\"\n\nconst VerifiedSealIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m22 11.51-2.218-2.528.309-3.346-3.282-.745-1.718-2.891-3.091 1.327-3.09-1.327-1.72 2.89-3.28.737.308 3.346-2.218 2.536 2.218 2.527-.309 3.355 3.282.745 1.718 2.891 3.091-1.336 3.09 1.327 1.72-2.89 3.28-.746-.308-3.346zm-11.818 4.545-3.637-3.637 1.282-1.282 2.355 2.346 5.99-5.991 1.283 1.29z\"\n fillRule=\"evenodd\"\n />\n </svg>\n )\n}\n\nexport default VerifiedSealIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"VerifiedSealIcon.js","sources":["../../../../src/components/Icon/__generated__/VerifiedSealIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"verifiedSeal\"\n\nconst VerifiedSealIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m22 11.51-2.218-2.528.309-3.346-3.282-.745-1.718-2.891-3.091 1.327-3.09-1.327-1.72 2.89-3.28.737.308 3.346-2.218 2.536 2.218 2.527-.309 3.355 3.282.745 1.718 2.891 3.091-1.336 3.09 1.327 1.72-2.89 3.28-.746-.308-3.346zm-11.818 4.545-3.637-3.637 1.282-1.282 2.355 2.346 5.99-5.991 1.283 1.29z\"\n fillRule=\"evenodd\"\n />\n </svg>\n )\n}\n\nexport default VerifiedSealIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,cAAc,CAAA;AAE3B,IAAA,gBAAgB,GAAG,UAAC,EAKd,EAAA;;AAJV,IAAA,IAAA,KAAK,WAAA,EACL,EAAA,GAAA,EAAA,CAAA,IAAS,EAAT,IAAI,mBAAG,EAAE,GAAA,EAAA,EACT,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,GAAA,EAAA,EACjB,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAET,IAAM,iBAAiB,GAAG,EAAE,CAC1B,SAAS,EACT,2BAAA,CAAA,MAAA,CAA4B,UAAU,CAAE,GAAA,EAAA,GAAA,EAAA;AAEtC,QAAA,EAAA,CAAC,4BAAqB,UAAU,CAAC,KAAK,CAAC,CAAE,IAAG,KAAK;QACjD,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;AAClC,QAAA,EAAA,CAAA,wBAAA,CAAwB,GAAE,SAAS;YAEtC,CAAA;AAED,IAAA,IAAM,IAAI,GAAG,UAAC,OAAwB,EAAA,EAAK,QACzC,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,iBAAiB,EAAG,EAAA,OAAO,CAAQ,EACrD,EAAA,CAAA;IAED,OAAO,IAAI,CACT,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAA;QACzD,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,qSAAqS,EACvS,QAAQ,EAAC,SAAS,EAAA,CAClB,CACE,CACP,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import capitalize from '../../utils/capitalize.js';
|
|
3
|
+
import 'lodash.throttle';
|
|
4
|
+
import cx from 'classnames';
|
|
5
|
+
|
|
6
|
+
var iconSource = "wallet";
|
|
7
|
+
var WalletIcon = function (_a) {
|
|
8
|
+
var _b;
|
|
9
|
+
var color = _a.color, _c = _a.size, size = _c === void 0 ? 24 : _c, _d = _a.contained, contained = _d === void 0 ? false : _d, className = _a.className;
|
|
10
|
+
var computedClassName = cx(className, "cobalt-Icon cobalt-Icon--".concat(iconSource), (_b = {},
|
|
11
|
+
_b["cobalt-Icon--color".concat(capitalize(color))] = color,
|
|
12
|
+
_b["cobalt-Icon--size16"] = size === 16,
|
|
13
|
+
_b["cobalt-Icon--size20"] = size === 20,
|
|
14
|
+
_b["cobalt-Icon--size32"] = size === 32,
|
|
15
|
+
_b["cobalt-Icon--contained"] = contained,
|
|
16
|
+
_b));
|
|
17
|
+
var wrap = function (content) { return (React.createElement("span", { className: computedClassName }, content)); };
|
|
18
|
+
return wrap(React.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
19
|
+
React.createElement("path", { d: "M21 18v1c0 1.1-.9 2-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14c1.1 0 2 .9 2 2v1h-9a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9Zm-9-2h10V8H12v8Zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5Z" })));
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { WalletIcon as default };
|
|
23
|
+
//# sourceMappingURL=WalletIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletIcon.js","sources":["../../../../src/components/Icon/__generated__/WalletIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"wallet\"\n\nconst WalletIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21 18v1c0 1.1-.9 2-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14c1.1 0 2 .9 2 2v1h-9a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h9Zm-9-2h10V8H12v8Zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5Z\" />\n </svg>\n )\n}\n\nexport default WalletIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,QAAQ,CAAA;AAErB,IAAA,UAAU,GAAG,UAAC,EAKR,EAAA;;AAJV,IAAA,IAAA,KAAK,WAAA,EACL,EAAA,GAAA,EAAA,CAAA,IAAS,EAAT,IAAI,mBAAG,EAAE,GAAA,EAAA,EACT,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,GAAA,EAAA,EACjB,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAET,IAAM,iBAAiB,GAAG,EAAE,CAC1B,SAAS,EACT,2BAAA,CAAA,MAAA,CAA4B,UAAU,CAAE,GAAA,EAAA,GAAA,EAAA;AAEtC,QAAA,EAAA,CAAC,4BAAqB,UAAU,CAAC,KAAK,CAAC,CAAE,IAAG,KAAK;QACjD,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;AAClC,QAAA,EAAA,CAAA,wBAAA,CAAwB,GAAE,SAAS;YAEtC,CAAA;AAED,IAAA,IAAM,IAAI,GAAG,UAAC,OAAwB,EAAA,EAAK,QACzC,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,iBAAiB,EAAG,EAAA,OAAO,CAAQ,EACrD,EAAA,CAAA;IAED,OAAO,IAAI,CACT,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,4BAA4B,EAAA;AACzD,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,8MAA8M,EAAG,CAAA,CACrN,CACP,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WrenchIcon.js","sources":["../../../../src/components/Icon/__generated__/WrenchIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"wrench\"\n\nconst WrenchIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M6.53 3.53a6 6 0 0 1 7.885 8.057l6 5.999a2 2 0 0 1-2.83 2.828l-5.998-5.999A6 6 0 0 1 3.53 6.53L8 11l3-3-4.47-4.47z\" />\n </svg>\n )\n}\n\nexport default WrenchIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"WrenchIcon.js","sources":["../../../../src/components/Icon/__generated__/WrenchIcon.tsx"],"sourcesContent":["import React from \"react\"\nimport { IconColors } from \"../\"\nimport { capitalize } from \"../../utils\"\nimport cx from \"classnames\"\nexport type IconProps = {\n color?: IconColors\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\nconst iconSource = \"wrench\"\n\nconst WrenchIcon = ({\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${iconSource}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const wrap = (content: React.ReactNode) => (\n <span className={computedClassName}>{content}</span>\n )\n\n return wrap(\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M6.53 3.53a6 6 0 0 1 7.885 8.057l6 5.999a2 2 0 0 1-2.83 2.828l-5.998-5.999A6 6 0 0 1 3.53 6.53L8 11l3-3-4.47-4.47z\" />\n </svg>\n )\n}\n\nexport default WrenchIcon\n"],"names":[],"mappings":";;;;;AAUA,IAAM,UAAU,GAAG,QAAQ,CAAA;AAErB,IAAA,UAAU,GAAG,UAAC,EAKR,EAAA;;AAJV,IAAA,IAAA,KAAK,WAAA,EACL,EAAA,GAAA,EAAA,CAAA,IAAS,EAAT,IAAI,mBAAG,EAAE,GAAA,EAAA,EACT,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,GAAA,EAAA,EACjB,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAET,IAAM,iBAAiB,GAAG,EAAE,CAC1B,SAAS,EACT,2BAAA,CAAA,MAAA,CAA4B,UAAU,CAAE,GAAA,EAAA,GAAA,EAAA;AAEtC,QAAA,EAAA,CAAC,4BAAqB,UAAU,CAAC,KAAK,CAAC,CAAE,IAAG,KAAK;QACjD,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;AAClC,QAAA,EAAA,CAAA,wBAAA,CAAwB,GAAE,SAAS;YAEtC,CAAA;AAED,IAAA,IAAM,IAAI,GAAG,UAAC,OAAwB,EAAA,EAAK,QACzC,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,iBAAiB,EAAG,EAAA,OAAO,CAAQ,EACrD,EAAA,CAAA;IAED,OAAO,IAAI,CACT,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW,EAAA;AACzD,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,oHAAoH,EAAG,CAAA,CAC3H,CACP,CAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Icon/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\nimport { icons as iconTokens } from \"../../tokens\"\n\nimport * as icons from \"../../icons\"\nimport { eqSet, capitalize } from \"../utils\"\n\nif (\n !eqSet<string>(\n new Set(Object.keys(icons)),\n new Set(Object.keys(iconTokens.icons))\n )\n)\n throw new Error(\n \"Icon sources and tokens are not consistent. Did you add the source, export it and run 'yarn run icons:update'\"\n )\n\ninterface IconsMap {\n [name: string]: string | undefined\n}\n\nexport const BUNDLED_ICONS: IconsMap = Object.freeze(\n Object.keys(iconTokens.icons).reduce(\n (bundledIcons, name) => ({\n ...bundledIcons,\n [name]: (icons as IconsMap)[name],\n }),\n {}\n )\n)\n\nexport type IconSources = keyof typeof iconTokens.icons\n\nexport const IconColorsOptions = [\n \"aller\",\n \"amber\",\n \"asphalt\",\n \"asphaltLight\",\n \"blue\",\n \"coral\",\n \"essence\",\n \"graphite\",\n \"graphiteLight\",\n \"green\",\n \"greenDark\",\n \"greenLight\",\n \"grey\",\n \"greyDark\",\n \"greyLight\",\n \"greyLighter\",\n \"indigo\",\n \"indigoDark\",\n \"purple\",\n \"purpleLight\",\n \"red\",\n \"signal\",\n \"turquoise\",\n \"white\",\n] as const\n\nexport type IconColors = typeof IconColorsOptions[number]\n\nexport interface IconProps {\n source: IconSources\n /**\n * Available colors\n * @default asphaltLight\n */\n color?: IconColors\n /**\n * Available size in px\n * @default 24\n */\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\n\nexport const isIconSource = (source: string): source is IconSources =>\n Object.keys(iconTokens.icons).includes(source)\n\nexport const Icon = ({\n source,\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${source}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const iconSource = BUNDLED_ICONS[source]\n\n if (iconSource == null)\n throw new Error(\n `Icon '${source}' can not be found. Did you add the source, export it and run 'yarn run icons:update'?`\n )\n\n return (\n <span\n className={computedClassName}\n dangerouslySetInnerHTML={{ __html: iconSource }}\n />\n )\n}\n\nexport * from \"./__generated__/index\"\n\nexport default Icon\n"],"names":["icons","iconTokens"],"mappings":";;;;;;;;;AAOA,IACE,CAAC,KAAK,CACJ,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAACA,KAAK,CAAC,CAAC,EAC3B,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAACC,KAAU,CAAC,KAAK,CAAC,CAAC,CACvC;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Icon/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\nimport { icons as iconTokens } from \"../../tokens\"\n\nimport * as icons from \"../../icons\"\nimport { eqSet, capitalize } from \"../utils\"\n\nif (\n !eqSet<string>(\n new Set(Object.keys(icons)),\n new Set(Object.keys(iconTokens.icons))\n )\n)\n throw new Error(\n \"Icon sources and tokens are not consistent. Did you add the source, export it and run 'yarn run icons:update'\"\n )\n\ninterface IconsMap {\n [name: string]: string | undefined\n}\n\nexport const BUNDLED_ICONS: IconsMap = Object.freeze(\n Object.keys(iconTokens.icons).reduce(\n (bundledIcons, name) => ({\n ...bundledIcons,\n [name]: (icons as IconsMap)[name],\n }),\n {}\n )\n)\n\nexport type IconSources = keyof typeof iconTokens.icons\n\nexport const IconColorsOptions = [\n \"aller\",\n \"amber\",\n \"asphalt\",\n \"asphaltLight\",\n \"blue\",\n \"coral\",\n \"essence\",\n \"graphite\",\n \"graphiteLight\",\n \"green\",\n \"greenDark\",\n \"greenLight\",\n \"grey\",\n \"greyDark\",\n \"greyLight\",\n \"greyLighter\",\n \"indigo\",\n \"indigoDark\",\n \"purple\",\n \"purpleLight\",\n \"red\",\n \"signal\",\n \"turquoise\",\n \"white\",\n] as const\n\nexport type IconColors = typeof IconColorsOptions[number]\n\nexport interface IconProps {\n source: IconSources\n /**\n * Available colors\n * @default asphaltLight\n */\n color?: IconColors\n /**\n * Available size in px\n * @default 24\n */\n size?: 16 | 20 | 24 | 32\n contained?: boolean\n className?: string\n}\n\nexport const isIconSource = (source: string): source is IconSources =>\n Object.keys(iconTokens.icons).includes(source)\n\nexport const Icon = ({\n source,\n color,\n size = 24,\n contained = false,\n className,\n}: IconProps) => {\n const computedClassName = cx(\n className,\n `cobalt-Icon cobalt-Icon--${source}`,\n {\n [`cobalt-Icon--color${capitalize(color)}`]: color,\n \"cobalt-Icon--size16\": size === 16,\n \"cobalt-Icon--size20\": size === 20,\n \"cobalt-Icon--size32\": size === 32,\n \"cobalt-Icon--contained\": contained,\n }\n )\n\n const iconSource = BUNDLED_ICONS[source]\n\n if (iconSource == null)\n throw new Error(\n `Icon '${source}' can not be found. Did you add the source, export it and run 'yarn run icons:update'?`\n )\n\n return (\n <span\n className={computedClassName}\n dangerouslySetInnerHTML={{ __html: iconSource }}\n />\n )\n}\n\nexport * from \"./__generated__/index\"\n\nexport default Icon\n"],"names":["icons","iconTokens"],"mappings":";;;;;;;;;AAOA,IACE,CAAC,KAAK,CACJ,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAACA,KAAK,CAAC,CAAC,EAC3B,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAACC,KAAU,CAAC,KAAK,CAAC,CAAC,CACvC;AAED,IAAA,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAA;IAMU,aAAa,GAAa,MAAM,CAAC,MAAM,CAClD,MAAM,CAAC,IAAI,CAACA,KAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAClC,UAAC,YAAY,EAAE,IAAI,EAAA;;IAAK,QAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACnB,YAAY,CACd,GAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CAAA,IAAI,IAAID,KAAkB,CAAC,IAAI,CAAC,EACjC,EAAA,EAAA,EAAA;AAHsB,CAGtB,EACF,EAAE,CACH,EACF;AAIY,IAAA,iBAAiB,GAAG;IAC/B,OAAO;IACP,OAAO;IACP,SAAS;IACT,cAAc;IACd,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,eAAe;IACf,OAAO;IACP,WAAW;IACX,YAAY;IACZ,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,KAAK;IACL,QAAQ;IACR,WAAW;IACX,OAAO;EACC;AAoBH,IAAM,YAAY,GAAG,UAAC,MAAc,EAAA;AACzC,IAAA,OAAA,MAAM,CAAC,IAAI,CAACC,KAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAA9C,EAA8C;AAEzC,IAAM,IAAI,GAAG,UAAC,EAMT,EAAA;;QALV,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,EAAS,GAAA,EAAA,CAAA,IAAA,EAAT,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,EAAE,KAAA,EACT,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,KAAK,GAAA,EAAA,EACjB,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAET,IAAM,iBAAiB,GAAG,EAAE,CAC1B,SAAS,EACT,2BAAA,CAAA,MAAA,CAA4B,MAAM,CAAE,GAAA,EAAA,GAAA,EAAA;AAElC,QAAA,EAAA,CAAC,4BAAqB,UAAU,CAAC,KAAK,CAAC,CAAE,IAAG,KAAK;QACjD,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;QAClC,EAAqB,CAAA,qBAAA,CAAA,GAAE,IAAI,KAAK,EAAE;AAClC,QAAA,EAAA,CAAA,wBAAA,CAAwB,GAAE,SAAS;YAEtC,CAAA;AAED,IAAA,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAExC,IAAI,UAAU,IAAI,IAAI;AACpB,QAAA,MAAM,IAAI,KAAK,CACb,gBAAS,MAAM,EAAA,wFAAA,CAAwF,CACxG,CAAA;AAEH,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,iBAAiB,EAC5B,uBAAuB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAA,CAC/C,EACH;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalBody.js","sources":["../../../src/components/Modal/ModalBody.tsx"],"sourcesContent":["import React, { FunctionComponent } from \"react\"\nimport cx from \"classnames\"\n\nconst ModalBody: FunctionComponent<{\n bodySpacing?: boolean\n hasHeader: boolean\n hasFooter: boolean\n}> = ({ children, bodySpacing = true, hasHeader, hasFooter }) => (\n <div\n className={cx(\"cobalt-modal-body\", {\n \"cobalt-modal-body--bodySpacing\": bodySpacing,\n \"cobalt-modal-body--hasHeader\": hasHeader,\n \"cobalt-modal-body--hasFooter\": hasFooter,\n })}\n >\n {children}\n </div>\n)\n\nexport default ModalBody\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ModalBody.js","sources":["../../../src/components/Modal/ModalBody.tsx"],"sourcesContent":["import React, { FunctionComponent } from \"react\"\nimport cx from \"classnames\"\n\nconst ModalBody: FunctionComponent<{\n bodySpacing?: boolean\n hasHeader: boolean\n hasFooter: boolean\n}> = ({ children, bodySpacing = true, hasHeader, hasFooter }) => (\n <div\n className={cx(\"cobalt-modal-body\", {\n \"cobalt-modal-body--bodySpacing\": bodySpacing,\n \"cobalt-modal-body--hasHeader\": hasHeader,\n \"cobalt-modal-body--hasFooter\": hasFooter,\n })}\n >\n {children}\n </div>\n)\n\nexport default ModalBody\n"],"names":[],"mappings":";;;AAGM,IAAA,SAAS,GAIV,UAAC,EAAsD,EAAA;AAApD,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,EAAkB,GAAA,EAAA,CAAA,WAAA,EAAlB,WAAW,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,IAAI,GAAA,EAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;AAAO,IAAA,QAC/D,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE;AACjC,YAAA,gCAAgC,EAAE,WAAW;AAC7C,YAAA,8BAA8B,EAAE,SAAS;AACzC,YAAA,8BAA8B,EAAE,SAAS;SAC1C,CAAC,EAAA,EAED,QAAQ,CACL,EACP;AAVgE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalFooter.js","sources":["../../../src/components/Modal/ModalFooter.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\"\nimport cx from \"classnames\"\n\nexport type ModalFooterPropsType = PropsWithChildren<{ className?: string }>\n\nconst ModalFooter = ({ children, className }: ModalFooterPropsType) => {\n return <div className={cx(\"cobalt-modal-footer\", className)}>{children}</div>\n}\n\nexport default ModalFooter\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ModalFooter.js","sources":["../../../src/components/Modal/ModalFooter.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\"\nimport cx from \"classnames\"\n\nexport type ModalFooterPropsType = PropsWithChildren<{ className?: string }>\n\nconst ModalFooter = ({ children, className }: ModalFooterPropsType) => {\n return <div className={cx(\"cobalt-modal-footer\", className)}>{children}</div>\n}\n\nexport default ModalFooter\n"],"names":[],"mappings":";;;AAKM,IAAA,WAAW,GAAG,UAAC,EAA6C,EAAA;QAA3C,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;AACxC,IAAA,OAAO,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAAA,EAAG,QAAQ,CAAO,CAAA;AAC/E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHeader.js","sources":["../../../src/components/Modal/ModalHeader.tsx"],"sourcesContent":["import React from \"react\"\nimport VisuallyHidden from \"@reach/visually-hidden\"\n\nimport { Icon } from \"../Icon\"\n\nconst ModalHeader = ({\n title,\n close,\n}: {\n title?: string\n close?: () => void\n}) => (\n <div className=\"cobalt-modal-header\">\n <h2 className=\"cobalt-modal-header__title\">{title}</h2>\n {close && (\n <button\n type=\"button\"\n className=\"cobalt-modal-header__close-button\"\n onClick={close}\n >\n <VisuallyHidden>Close</VisuallyHidden>\n <span aria-hidden>\n <Icon source=\"close\" color=\"graphiteLight\" />\n </span>\n </button>\n )}\n </div>\n)\n\nexport default ModalHeader\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ModalHeader.js","sources":["../../../src/components/Modal/ModalHeader.tsx"],"sourcesContent":["import React from \"react\"\nimport VisuallyHidden from \"@reach/visually-hidden\"\n\nimport { Icon } from \"../Icon\"\n\nconst ModalHeader = ({\n title,\n close,\n}: {\n title?: string\n close?: () => void\n}) => (\n <div className=\"cobalt-modal-header\">\n <h2 className=\"cobalt-modal-header__title\">{title}</h2>\n {close && (\n <button\n type=\"button\"\n className=\"cobalt-modal-header__close-button\"\n onClick={close}\n >\n <VisuallyHidden>Close</VisuallyHidden>\n <span aria-hidden>\n <Icon source=\"close\" color=\"graphiteLight\" />\n </span>\n </button>\n )}\n </div>\n)\n\nexport default ModalHeader\n"],"names":[],"mappings":";;;;AAKM,IAAA,WAAW,GAAG,UAAC,EAMpB,EAAA;QALC,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA;AAID,IAAA,QACJ,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA;AAClC,QAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,4BAA4B,EAAA,EAAE,KAAK,CAAM;AACtD,QAAA,KAAK,KACJ,KACE,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mCAAmC,EAC7C,OAAO,EAAE,KAAK,EAAA;AAEd,YAAA,KAAA,CAAA,aAAA,CAAC,cAAc,EAAuB,IAAA,EAAA,OAAA,CAAA;AACtC,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA;AACE,gBAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAC,eAAe,EAAG,CAAA,CACxC,CACA,CACV,CACG,EACP;AAhBK;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Modal/index.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef } from \"react\"\nimport cx from \"classnames\"\nimport { DialogOverlay, DialogContent } from \"@reach/dialog\"\nimport { useTransition, animated } from \"@react-spring/web\"\n\nimport useBreakpoint from \"../../hooks/useBreakpoint\"\nimport ModalHeader from \"./ModalHeader\"\nimport ModalBody from \"./ModalBody\"\nimport ModalFooter, { ModalFooterPropsType } from \"./ModalFooter\"\nimport { getScrollbarWidth } from \"../utils/\"\n\nexport type ModalPropsType = {\n /**\n * mandatory for A11y\n */\n [\"aria-label\"]: string\n /**\n * Function called to close the modal, providing it make the modal closeable\n */\n close?: () => void\n /**\n * React.ref of the element to focus first when the modal opens\n */\n initialFocusRef?: React.RefObject<HTMLElement>\n /**\n * State to show or hide the modal/dialog\n */\n isOpen: boolean\n /**\n * Action to fire if the user try to dismiss when the modal is not closeable\n */\n onDismissAttempt?: () => void\n /**\n * Listener called when the modal has been fully hidden\n */\n onHidden?: () => void\n /**\n * Listener called when the modal begins to show\n */\n onShow?: () => void\n /**\n * Modal title\n */\n title?: string\n /**\n * Disable/Enable body paddings (enabled by default)\n */\n bodySpacing?: boolean\n /**\n * Disable/Enable hidding overflowing absolute elements (enabled by default)\n */\n overflowHidden?: boolean\n /**\n * Disable enter/leave animation (animation enabled by default)\n */\n skipAnimation?: {\n enter: boolean\n leave: boolean\n }\n /**\n * Modal body content\n */\n children: React.ReactNode\n}\n\n// Only for the API, render nothing, we use ModalFooterInternal internally\nexport const ModalFooterAPI = (_props: ModalFooterPropsType) => null\n\nexport const isModalFooterAPIComponent = (\n component: React.ReactNode\n): component is React.ReactElement<ModalFooterPropsType> =>\n React.isValidElement(component) && component.type === ModalFooterAPI\n\nconst _Modal = forwardRef<HTMLDivElement, ModalPropsType>(\n (\n {\n [\"aria-label\"]: ariaLabel,\n children,\n isOpen,\n close,\n overflowHidden = true,\n initialFocusRef,\n bodySpacing,\n onDismissAttempt,\n onHidden,\n onShow,\n title,\n skipAnimation = { enter: false, leave: false },\n }: ModalPropsType,\n ref\n ) => {\n const defaultBodyStyle = useRef({\n paddingRight: document.body.style.paddingRight,\n overflow: document.body.style.overflow,\n isRestored: false,\n })\n\n const restoreDefaultBodyStyle = () => {\n if (defaultBodyStyle.current && !defaultBodyStyle.current.isRestored) {\n const { overflow, paddingRight } = defaultBodyStyle.current\n\n document.body.style.overflow = overflow\n document.body.style.paddingRight = paddingRight\n\n defaultBodyStyle.current.isRestored = true\n }\n }\n\n useEffect(() => {\n // disable / enable body scroll\n // default reach ui solution to lock body scroll is broken with range inputs on mobile (no drag)\n // https://github.com/reach/reach-ui/issues/678\n // dangerouslyBypassScrollLock is used to disabled it\n // + fake scrollbar width to avoid visual layout shift\n if (isOpen) {\n defaultBodyStyle.current.isRestored = false\n\n document.body.style.paddingRight = `${\n getScrollbarWidth() +\n parseInt(window.getComputedStyle(document.body).paddingRight, 10)\n }px` // to avoid visual shift due to removing an existing scrollbar\n\n document.body.style.overflow = \"hidden\"\n }\n return () => {\n isOpen && restoreDefaultBodyStyle()\n }\n }, [isOpen])\n\n const { isMobile } = useBreakpoint()\n\n const transformTransitionOut = isMobile ? 500 : -20\n\n const springConfig = { tension: 300, friction: 30, clamp: true }\n\n const transition = useTransition(isOpen, {\n from: {\n overlayOpacity: 0,\n modalTransform: transformTransitionOut,\n },\n enter: {\n immediate: skipAnimation.enter,\n overlayOpacity: 1,\n modalTransform: 0,\n config: springConfig,\n },\n leave: {\n immediate: skipAnimation.leave,\n overlayOpacity: 0,\n modalTransform: transformTransitionOut,\n config: springConfig,\n },\n onStart: () => {\n if (onShow) onShow()\n },\n onDestroyed: (isTransitioned) => {\n !isOpen && restoreDefaultBodyStyle()\n if (onHidden && isTransitioned) onHidden()\n },\n })\n\n const AnimatedDialogOverlay = animated(DialogOverlay)\n const AnimatedDialogContent = animated(DialogContent)\n\n const modalFooter = React.Children.toArray(children).find((c) =>\n isModalFooterAPIComponent(c)\n )\n\n let header: React.ReactNode = null\n if (title || close) {\n header = <ModalHeader title={title} {...(close ? { close } : {})} />\n }\n const hasHeader = !!title || !!close\n\n let footer: React.ReactNode = null\n if (React.isValidElement(modalFooter)) {\n footer = <ModalFooter {...modalFooter.props} />\n }\n\n const getDismissHandler = (onClose?: ModalPropsType[\"close\"]) => {\n if (onClose) return onClose\n if (onDismissAttempt) return onDismissAttempt\n return\n }\n\n return (\n <>\n {transition(\n (styles, isOpenState) =>\n isOpenState && (\n <AnimatedDialogOverlay\n initialFocusRef={initialFocusRef}\n onDismiss={getDismissHandler(close)}\n className=\"cobalt-modal__overlay\"\n style={{ opacity: styles.overlayOpacity }}\n onTouchEnd={(e) => e.stopPropagation()}\n onMouseUp={(e) => e.stopPropagation()}\n dangerouslyBypassScrollLock\n >\n <AnimatedDialogContent\n className={cx(\"cobalt-modal\", {\n \"cobalt-modal--desktop\": !isMobile,\n \"cobalt-modal--mobile\": isMobile,\n \"cobalt-modal--overflowHidden\": overflowHidden,\n })}\n aria-label={ariaLabel}\n style={{ translateY: styles.modalTransform }}\n ref={ref}\n >\n {header}\n <ModalBody\n bodySpacing={bodySpacing}\n hasHeader={hasHeader}\n hasFooter={!!footer}\n >\n {children}\n </ModalBody>\n {footer}\n </AnimatedDialogContent>\n </AnimatedDialogOverlay>\n )\n )}\n </>\n )\n }\n)\n\n_Modal.displayName = \"Modal\"\n\nconst Modal = Object.assign(_Modal, { Footer: ModalFooterAPI })\n\nexport default Modal\n"],"names":[],"mappings":";;;;;;;;;;;;AAiEA;IACa,cAAc,GAAG,UAAC,MAA4B,IAAK,OAAA,IAAI,IAAA;IAEvD,yBAAyB,GAAG,UACvC,SAA0B;IAE1B,OAAA,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc;AAApE,EAAoE;AAEtE,IAAM,MAAM,GAAG,UAAU,CACvB,UACE,EAaiB,EACjB,GAAG;QAbe,SAAS,mBAAA,EACzB,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,KAAK,WAAA,EACL,sBAAqB,EAArB,cAAc,mBAAG,IAAI,KAAA,EACrB,eAAe,qBAAA,EACf,WAAW,iBAAA,EACX,gBAAgB,sBAAA,EAChB,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,KAAK,WAAA,EACL,qBAA8C,EAA9C,aAAa,mBAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAA;IAIhD,IAAM,gBAAgB,GAAG,MAAM,CAAC;QAC9B,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;QAC9C,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;QACtC,UAAU,EAAE,KAAK;KAClB,CAAC,CAAA;IAEF,IAAM,uBAAuB,GAAG;QAC9B,IAAI,gBAAgB,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE;YAC9D,IAAA,KAA6B,gBAAgB,CAAC,OAAO,EAAnD,QAAQ,cAAA,EAAE,YAAY,kBAA6B,CAAA;YAE3D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;YACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAA;YAE/C,gBAAgB,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;SAC3C;KACF,CAAA;IAED,SAAS,CAAC;;;;;;QAMR,IAAI,MAAM,EAAE;YACV,gBAAgB,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA;YAE3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UACjC,iBAAiB,EAAE;gBACnB,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,OAC/D,CAAA;YAEJ,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;SACxC;QACD,OAAO;YACL,MAAM,IAAI,uBAAuB,EAAE,CAAA;SACpC,CAAA;KACF,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEJ,IAAA,QAAQ,GAAK,aAAa,EAAE,SAApB,CAAoB;IAEpC,IAAM,sBAAsB,GAAG,QAAQ,GAAG,GAAG,GAAG,CAAC,EAAE,CAAA;IAEnD,IAAM,YAAY,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAEhE,IAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE;QACvC,IAAI,EAAE;YACJ,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,sBAAsB;SACvC;QACD,KAAK,EAAE;YACL,SAAS,EAAE,aAAa,CAAC,KAAK;YAC9B,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,YAAY;SACrB;QACD,KAAK,EAAE;YACL,SAAS,EAAE,aAAa,CAAC,KAAK;YAC9B,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,sBAAsB;YACtC,MAAM,EAAE,YAAY;SACrB;QACD,OAAO,EAAE;YACP,IAAI,MAAM;gBAAE,MAAM,EAAE,CAAA;SACrB;QACD,WAAW,EAAE,UAAC,cAAc;YAC1B,CAAC,MAAM,IAAI,uBAAuB,EAAE,CAAA;YACpC,IAAI,QAAQ,IAAI,cAAc;gBAAE,QAAQ,EAAE,CAAA;SAC3C;KACF,CAAC,CAAA;IAEF,IAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;IACrD,IAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;IAErD,IAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;QAC1D,OAAA,yBAAyB,CAAC,CAAC,CAAC;KAAA,CAC7B,CAAA;IAED,IAAI,MAAM,GAAoB,IAAI,CAAA;IAClC,IAAI,KAAK,IAAI,KAAK,EAAE;QAClB,MAAM,GAAG,oBAAC,WAAW,aAAC,KAAK,EAAE,KAAK,KAAO,KAAK,GAAG,EAAE,KAAK,OAAA,EAAE,GAAG,EAAE,GAAK,CAAA;KACrE;IACD,IAAM,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAA;IAEpC,IAAI,MAAM,GAAoB,IAAI,CAAA;IAClC,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;QACrC,MAAM,GAAG,oBAAC,WAAW,eAAK,WAAW,CAAC,KAAK,EAAI,CAAA;KAChD;IAED,IAAM,iBAAiB,GAAG,UAAC,OAAiC;QAC1D,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;QAC3B,IAAI,gBAAgB;YAAE,OAAO,gBAAgB,CAAA;QAC7C,OAAM;KACP,CAAA;IAED,QACE,0CACG,UAAU,CACT,UAAC,MAAM,EAAE,WAAW;QAClB,OAAA,WAAW,KACT,oBAAC,qBAAqB,IACpB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,EACnC,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,EACzC,UAAU,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,GAAA,EACtC,SAAS,EAAE,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,eAAe,EAAE,GAAA,EACrC,2BAA2B;YAE3B,oBAAC,qBAAqB,IACpB,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE;oBAC5B,uBAAuB,EAAE,CAAC,QAAQ;oBAClC,sBAAsB,EAAE,QAAQ;oBAChC,8BAA8B,EAAE,cAAc;iBAC/C,CAAC,gBACU,SAAS,EACrB,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,EAC5C,GAAG,EAAE,GAAG;gBAEP,MAAM;gBACP,oBAAC,SAAS,IACR,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,CAAC,CAAC,MAAM,IAElB,QAAQ,CACC;gBACX,MAAM,CACe,CACF,CACzB;KAAA,CACJ,CACA,EACJ;AACH,CAAC,CACF,CAAA;AAED,MAAM,CAAC,WAAW,GAAG,OAAO,CAAA;IAEtB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Modal/index.tsx"],"sourcesContent":["import React, { forwardRef, useEffect, useRef } from \"react\"\nimport cx from \"classnames\"\nimport { DialogOverlay, DialogContent } from \"@reach/dialog\"\nimport { useTransition, animated } from \"@react-spring/web\"\n\nimport useBreakpoint from \"../../hooks/useBreakpoint\"\nimport ModalHeader from \"./ModalHeader\"\nimport ModalBody from \"./ModalBody\"\nimport ModalFooter, { ModalFooterPropsType } from \"./ModalFooter\"\nimport { getScrollbarWidth } from \"../utils/\"\n\nexport type ModalPropsType = {\n /**\n * mandatory for A11y\n */\n [\"aria-label\"]: string\n /**\n * Function called to close the modal, providing it make the modal closeable\n */\n close?: () => void\n /**\n * React.ref of the element to focus first when the modal opens\n */\n initialFocusRef?: React.RefObject<HTMLElement>\n /**\n * State to show or hide the modal/dialog\n */\n isOpen: boolean\n /**\n * Action to fire if the user try to dismiss when the modal is not closeable\n */\n onDismissAttempt?: () => void\n /**\n * Listener called when the modal has been fully hidden\n */\n onHidden?: () => void\n /**\n * Listener called when the modal begins to show\n */\n onShow?: () => void\n /**\n * Modal title\n */\n title?: string\n /**\n * Disable/Enable body paddings (enabled by default)\n */\n bodySpacing?: boolean\n /**\n * Disable/Enable hidding overflowing absolute elements (enabled by default)\n */\n overflowHidden?: boolean\n /**\n * Disable enter/leave animation (animation enabled by default)\n */\n skipAnimation?: {\n enter: boolean\n leave: boolean\n }\n /**\n * Modal body content\n */\n children: React.ReactNode\n}\n\n// Only for the API, render nothing, we use ModalFooterInternal internally\nexport const ModalFooterAPI = (_props: ModalFooterPropsType) => null\n\nexport const isModalFooterAPIComponent = (\n component: React.ReactNode\n): component is React.ReactElement<ModalFooterPropsType> =>\n React.isValidElement(component) && component.type === ModalFooterAPI\n\nconst _Modal = forwardRef<HTMLDivElement, ModalPropsType>(\n (\n {\n [\"aria-label\"]: ariaLabel,\n children,\n isOpen,\n close,\n overflowHidden = true,\n initialFocusRef,\n bodySpacing,\n onDismissAttempt,\n onHidden,\n onShow,\n title,\n skipAnimation = { enter: false, leave: false },\n }: ModalPropsType,\n ref\n ) => {\n const defaultBodyStyle = useRef({\n paddingRight: document.body.style.paddingRight,\n overflow: document.body.style.overflow,\n isRestored: false,\n })\n\n const restoreDefaultBodyStyle = () => {\n if (defaultBodyStyle.current && !defaultBodyStyle.current.isRestored) {\n const { overflow, paddingRight } = defaultBodyStyle.current\n\n document.body.style.overflow = overflow\n document.body.style.paddingRight = paddingRight\n\n defaultBodyStyle.current.isRestored = true\n }\n }\n\n useEffect(() => {\n // disable / enable body scroll\n // default reach ui solution to lock body scroll is broken with range inputs on mobile (no drag)\n // https://github.com/reach/reach-ui/issues/678\n // dangerouslyBypassScrollLock is used to disabled it\n // + fake scrollbar width to avoid visual layout shift\n if (isOpen) {\n defaultBodyStyle.current.isRestored = false\n\n document.body.style.paddingRight = `${\n getScrollbarWidth() +\n parseInt(window.getComputedStyle(document.body).paddingRight, 10)\n }px` // to avoid visual shift due to removing an existing scrollbar\n\n document.body.style.overflow = \"hidden\"\n }\n return () => {\n isOpen && restoreDefaultBodyStyle()\n }\n }, [isOpen])\n\n const { isMobile } = useBreakpoint()\n\n const transformTransitionOut = isMobile ? 500 : -20\n\n const springConfig = { tension: 300, friction: 30, clamp: true }\n\n const transition = useTransition(isOpen, {\n from: {\n overlayOpacity: 0,\n modalTransform: transformTransitionOut,\n },\n enter: {\n immediate: skipAnimation.enter,\n overlayOpacity: 1,\n modalTransform: 0,\n config: springConfig,\n },\n leave: {\n immediate: skipAnimation.leave,\n overlayOpacity: 0,\n modalTransform: transformTransitionOut,\n config: springConfig,\n },\n onStart: () => {\n if (onShow) onShow()\n },\n onDestroyed: (isTransitioned) => {\n !isOpen && restoreDefaultBodyStyle()\n if (onHidden && isTransitioned) onHidden()\n },\n })\n\n const AnimatedDialogOverlay = animated(DialogOverlay)\n const AnimatedDialogContent = animated(DialogContent)\n\n const modalFooter = React.Children.toArray(children).find((c) =>\n isModalFooterAPIComponent(c)\n )\n\n let header: React.ReactNode = null\n if (title || close) {\n header = <ModalHeader title={title} {...(close ? { close } : {})} />\n }\n const hasHeader = !!title || !!close\n\n let footer: React.ReactNode = null\n if (React.isValidElement(modalFooter)) {\n footer = <ModalFooter {...modalFooter.props} />\n }\n\n const getDismissHandler = (onClose?: ModalPropsType[\"close\"]) => {\n if (onClose) return onClose\n if (onDismissAttempt) return onDismissAttempt\n return\n }\n\n return (\n <>\n {transition(\n (styles, isOpenState) =>\n isOpenState && (\n <AnimatedDialogOverlay\n initialFocusRef={initialFocusRef}\n onDismiss={getDismissHandler(close)}\n className=\"cobalt-modal__overlay\"\n style={{ opacity: styles.overlayOpacity }}\n onTouchEnd={(e) => e.stopPropagation()}\n onMouseUp={(e) => e.stopPropagation()}\n dangerouslyBypassScrollLock\n >\n <AnimatedDialogContent\n className={cx(\"cobalt-modal\", {\n \"cobalt-modal--desktop\": !isMobile,\n \"cobalt-modal--mobile\": isMobile,\n \"cobalt-modal--overflowHidden\": overflowHidden,\n })}\n aria-label={ariaLabel}\n style={{ translateY: styles.modalTransform }}\n ref={ref}\n >\n {header}\n <ModalBody\n bodySpacing={bodySpacing}\n hasHeader={hasHeader}\n hasFooter={!!footer}\n >\n {children}\n </ModalBody>\n {footer}\n </AnimatedDialogContent>\n </AnimatedDialogOverlay>\n )\n )}\n </>\n )\n }\n)\n\n_Modal.displayName = \"Modal\"\n\nconst Modal = Object.assign(_Modal, { Footer: ModalFooterAPI })\n\nexport default Modal\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/ModalOpenerButton/index.tsx"],"sourcesContent":["import React, { useState } from \"react\"\n\nimport { Button, ButtonPropsType } from \"../Button\"\nimport Modal, { ModalPropsType } from \"../Modal\"\n\ntype ModalOpenerButtonType = {\n label: React.ReactNode\n children: ({ close }: { close: () => void }) => JSX.Element\n} & Omit<ButtonPropsType, \"children\">\n\nconst ModalOpenerButton = ({\n label,\n children,\n ...buttonProps\n}: ModalOpenerButtonType) => {\n const [showModal, setShowModal] = useState(false)\n const open = () => setShowModal(true)\n const close = () => setShowModal(false)\n\n const renderedModal = children({ close })\n const modalProps = {\n ...renderedModal.props,\n isOpen: showModal,\n }\n\n return (\n <>\n <Button {...buttonProps} onClick={open}>\n {label}\n </Button>\n <Modal {...modalProps} />\n </>\n )\n}\n\n/** For API only, render nothing */\nconst ModalAPI = (_props: Omit<ModalPropsType, \"isOpen\">) => null\nModalOpenerButton.Modal = ModalAPI\n\nexport default ModalOpenerButton\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/ModalOpenerButton/index.tsx"],"sourcesContent":["import React, { useState } from \"react\"\n\nimport { Button, ButtonPropsType } from \"../Button\"\nimport Modal, { ModalPropsType } from \"../Modal\"\n\ntype ModalOpenerButtonType = {\n label: React.ReactNode\n children: ({ close }: { close: () => void }) => JSX.Element\n} & Omit<ButtonPropsType, \"children\">\n\nconst ModalOpenerButton = ({\n label,\n children,\n ...buttonProps\n}: ModalOpenerButtonType) => {\n const [showModal, setShowModal] = useState(false)\n const open = () => setShowModal(true)\n const close = () => setShowModal(false)\n\n const renderedModal = children({ close })\n const modalProps = {\n ...renderedModal.props,\n isOpen: showModal,\n }\n\n return (\n <>\n <Button {...buttonProps} onClick={open}>\n {label}\n </Button>\n <Modal {...modalProps} />\n </>\n )\n}\n\n/** For API only, render nothing */\nconst ModalAPI = (_props: Omit<ModalPropsType, \"isOpen\">) => null\nModalOpenerButton.Modal = ModalAPI\n\nexport default ModalOpenerButton\n"],"names":[],"mappings":";;;;;AAUM,IAAA,iBAAiB,GAAG,UAAC,EAIH,EAAA;IAHtB,IAAA,KAAK,WAAA,EACL,QAAQ,cAAA,EACL,WAAW,GAHW,MAAA,CAAA,EAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAI1B,CADe,CAAA;AAER,IAAA,IAAA,EAAA,GAAA,MAAA,CAA4B,QAAQ,CAAC,KAAK,CAAC,EAAA,CAAA,CAAA,EAA1C,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,QAAmB,CAAA;IACjD,IAAM,IAAI,GAAG,YAAA,EAAM,OAAA,YAAY,CAAC,IAAI,CAAC,CAAlB,EAAkB,CAAA;IACrC,IAAM,KAAK,GAAG,YAAA,EAAM,OAAA,YAAY,CAAC,KAAK,CAAC,CAAnB,EAAmB,CAAA;IAEvC,IAAM,aAAa,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAA,KAAA,EAAE,CAAC,CAAA;IACzC,IAAM,UAAU,GACX,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,aAAa,CAAC,KAAK,KACtB,MAAM,EAAE,SAAS,EAAA,CAClB,CAAA;AAED,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;QACE,KAAC,CAAA,aAAA,CAAA,MAAM,eAAK,WAAW,EAAA,EAAE,OAAO,EAAE,IAAI,EACnC,CAAA,EAAA,KAAK,CACC;AACT,QAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAK,QAAA,CAAA,EAAA,EAAA,UAAU,CAAI,CAAA,CACxB,EACJ;AACH,EAAC;AAED;AACA,IAAM,QAAQ,GAAG,UAAC,MAAsC,IAAK,OAAA,IAAI,CAAJ,EAAI,CAAA;AACjE,iBAAiB,CAAC,KAAK,GAAG,QAAQ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Note/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\n\nexport interface NoteProps {\n children: React.ReactNode\n /**\n * will fill available width\n * @default false\n */\n fullWidth?: boolean\n className?: string\n}\n\nexport const Note = ({ children, fullWidth = false, className }: NoteProps) => (\n <div\n className={cx(\"cobalt-Note\", className, {\n \"cobalt-Note--fullWidth\": fullWidth,\n })}\n >\n {children}\n </div>\n)\n\nexport default Note\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Note/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\n\nexport interface NoteProps {\n children: React.ReactNode\n /**\n * will fill available width\n * @default false\n */\n fullWidth?: boolean\n className?: string\n}\n\nexport const Note = ({ children, fullWidth = false, className }: NoteProps) => (\n <div\n className={cx(\"cobalt-Note\", className, {\n \"cobalt-Note--fullWidth\": fullWidth,\n })}\n >\n {children}\n </div>\n)\n\nexport default Note\n"],"names":[],"mappings":";;;AAaO,IAAM,IAAI,GAAG,UAAC,EAAqD,EAAA;QAAnD,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,EAAA,GAAA,EAAA,CAAA,SAAiB,EAAjB,SAAS,mBAAG,KAAK,GAAA,EAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;IAAkB,QAC7E,6BACE,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE;AACtC,YAAA,wBAAwB,EAAE,SAAS;SACpC,CAAC,EAAA,EAED,QAAQ,CACL,EACP;AAR8E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/PhotoDropzone/index.tsx"],"sourcesContent":["import VisuallyHidden from \"@reach/visually-hidden\"\nimport React, {\n useState,\n DragEvent as ReactDragEvent,\n useRef,\n TouchEvent as ReactTouchEvent,\n ChangeEvent as ReactChangeEvent,\n MouseEvent as ReactMouseEvent,\n KeyboardEvent as ReactKeyboardEvent,\n ReactNode,\n} from \"react\"\nimport cx from \"classnames\"\nimport {\n PlusIcon,\n BinIcon,\n LoadingIcon,\n ContextualWarningCircleFilledIcon,\n} from \"../Icon\"\nimport { validateFile } from \"../utils/validateFile\"\nimport Popover from \"../Popover\"\n\nconst ACCEPTED_MAX_SIZE_MB = 10\nconst ACCEPTED_PHOTOS_TYPES = [\"jpg\", \"jpeg\", \"png\", \"gif\"]\nconst ERROR_DISPLAY_TIME = 6000\nconst ACCEPTED_TYPES_LOCALE_STRING = ACCEPTED_PHOTOS_TYPES.join(\", \")\n\nexport type PhotoDropzonePropsType = {\n className?: string\n description: string\n deletePopoverContent: (onDelete: () => void, close: () => void) => ReactNode\n errorContent: (acceptedTypes: string, maxFileSize: number) => ReactNode\n onDropped: (file: File) => Promise<void> | void\n onPhotoDelete?: () => void\n initialImageUrl?: string\n}\n\nconst preventEventDefaults = (\n e: ReactDragEvent | ReactMouseEvent | ReactKeyboardEvent | ReactTouchEvent\n) => {\n e.preventDefault && e.preventDefault()\n e.stopPropagation && e.stopPropagation()\n}\n\nconst isEnterOrSpaceKey = (event: ReactKeyboardEvent) =>\n event.key === \"Enter\" || event.key === \" \"\n\nconst PhotoDropzone = ({\n className,\n description,\n deletePopoverContent,\n errorContent,\n onDropped,\n onPhotoDelete,\n initialImageUrl = \"\",\n}: PhotoDropzonePropsType) => {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const deleteButtonRef = useRef<HTMLButtonElement>(null)\n const [isDragging, setIsDragging] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [isErrored, setIsErrored] = useState(false)\n const [imagePreviewUrl, setImagePreviewUrl] = useState(initialImageUrl)\n const [displayDeletion, setDisplayDeletion] = useState(false)\n const [showDeletePopover, setShowDeletePopover] = useState(false)\n\n const openDeletePopover = (\n event?: ReactMouseEvent | ReactKeyboardEvent | ReactTouchEvent\n ) => {\n event && preventEventDefaults(event)\n setShowDeletePopover(true)\n }\n const closeDeletePopover = (event?: ReactMouseEvent | ReactTouchEvent) => {\n event && preventEventDefaults(event)\n setShowDeletePopover(false)\n }\n\n const onDropzoneMouseEnter = (event?: ReactMouseEvent) => {\n event && preventEventDefaults(event)\n if (imagePreviewUrl) setDisplayDeletion(true)\n }\n\n const onDropzoneMouseLeave = (event?: ReactMouseEvent) => {\n event && preventEventDefaults(event)\n if (displayDeletion && !showDeletePopover) setDisplayDeletion(false)\n }\n\n const onDropzoneClick = (event?: ReactMouseEvent | ReactTouchEvent) => {\n event && preventEventDefaults(event)\n if (isLoading) return\n if (isErrored) setIsErrored(false)\n if (imagePreviewUrl) {\n if (showDeletePopover) closeDeletePopover()\n return setDisplayDeletion(!displayDeletion)\n }\n fileInputRef.current?.click()\n }\n\n const onDropzoneKey = (event: ReactKeyboardEvent) => {\n if (showDeletePopover) return\n if (isEnterOrSpaceKey(event)) {\n onDropzoneClick()\n }\n }\n\n const onDeleteKey = (event: ReactKeyboardEvent) => {\n if (isEnterOrSpaceKey(event)) {\n openDeletePopover(event)\n }\n }\n\n const onDelete = () => {\n if (fileInputRef.current) fileInputRef.current.value = \"\"\n closeDeletePopover()\n setImagePreviewUrl(\"\")\n onPhotoDelete && onPhotoDelete()\n }\n\n const onDragEnter = (event: ReactDragEvent) => {\n preventEventDefaults(event)\n if (isErrored) setIsErrored(false)\n !imagePreviewUrl && setIsDragging(true)\n }\n\n const onDragLeave = (event: ReactDragEvent) => {\n preventEventDefaults(event)\n setIsDragging(false)\n }\n\n const processFile = async (fileToProcess: File) => {\n setIsDragging(false)\n setIsErrored(false)\n setIsLoading(true)\n\n const isValidFile = await validateFile(\n fileToProcess,\n (fileToValidate, extension) => {\n const maxFileSize = ACCEPTED_MAX_SIZE_MB * 1000 * 1000\n const acceptedFileTypes = ACCEPTED_PHOTOS_TYPES\n\n if (fileToValidate.size > maxFileSize) {\n return false\n } else if (!extension || !acceptedFileTypes.includes(extension)) {\n return false\n } else {\n return true\n }\n }\n )\n\n if (isValidFile) {\n const imageSrc = URL.createObjectURL(fileToProcess)\n setImagePreviewUrl(imageSrc)\n await onDropped(fileToProcess)\n setIsLoading(false)\n } else {\n setIsLoading(false)\n setIsErrored(true)\n setTimeout(() => {\n setIsErrored(false)\n }, ERROR_DISPLAY_TIME)\n }\n }\n\n const onFileInputChanged = (event: ReactChangeEvent<HTMLInputElement>) => {\n if (event.target.files?.length) {\n processFile(event.target.files[0])\n }\n }\n\n const onDrop = (event: ReactDragEvent<HTMLDivElement>) => {\n preventEventDefaults(event)\n if (event.dataTransfer?.files?.length && !imagePreviewUrl) {\n processFile(event.dataTransfer.files[0])\n }\n }\n\n const onDeleteButtonClick = showDeletePopover\n ? closeDeletePopover\n : openDeletePopover\n\n return (\n <div\n tabIndex={0}\n className={cx(\"cobalt-photo-dropzone\", className, {\n \"cobalt-photo-dropzone--filled\": imagePreviewUrl,\n \"cobalt-photo-dropzone--dragging\": isDragging,\n \"cobalt-photo-dropzone--loading\": isLoading,\n \"cobalt-photo-dropzone--errored\": isErrored,\n })}\n onMouseEnter={onDropzoneMouseEnter}\n onMouseLeave={onDropzoneMouseLeave}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n // Not on click because we also use mouseEnter listener\n onMouseUp={onDropzoneClick}\n onTouchEnd={onDropzoneClick}\n onKeyUp={onDropzoneKey}\n onDrop={onDrop}\n // Need to reset those listeners to avoid default browser behaviour\n onDragStart={preventEventDefaults}\n onDragEnd={preventEventDefaults}\n onDragOver={preventEventDefaults}\n >\n {isErrored && (\n <div className=\"cobalt-photo-dropzone__description\">\n <ContextualWarningCircleFilledIcon color=\"red\" />\n {errorContent(ACCEPTED_TYPES_LOCALE_STRING, ACCEPTED_MAX_SIZE_MB)}\n </div>\n )}\n {isLoading && (\n <div className=\"cobalt-photo-dropzone__description\">\n <LoadingIcon />\n </div>\n )}\n {!isLoading &&\n !isErrored &&\n (imagePreviewUrl ? (\n <>\n <img\n className=\"cobalt-photo-dropzone__preview\"\n src={imagePreviewUrl}\n />\n <div>\n <button\n className={cx(\"cobalt-photo-dropzone__delete-button\", {\n \"cobalt-photo-dropzone__delete-button--triggered\":\n displayDeletion,\n })}\n ref={deleteButtonRef}\n // Must follow the click listeners on the dropzone,\n // in order to have the correct events bubbling\n onTouchEnd={onDeleteButtonClick}\n onMouseUp={onDeleteButtonClick}\n onKeyUp={onDeleteKey}\n >\n <VisuallyHidden>Delete</VisuallyHidden>\n <BinIcon color=\"indigo\" />\n </button>\n <Popover\n targetRef={deleteButtonRef}\n isOpen={showDeletePopover}\n close={closeDeletePopover}\n placement=\"left-start\"\n distance={12}\n bodySpacing={false}\n arrow\n >\n {deletePopoverContent(onDelete, closeDeletePopover)}\n </Popover>\n </div>\n </>\n ) : (\n <div className=\"cobalt-photo-dropzone__description cobalt-photo-dropzone__description--strong\">\n <p>{description}</p>\n <PlusIcon />\n </div>\n ))}\n <VisuallyHidden>\n <input\n ref={fileInputRef}\n type=\"file\"\n onChange={onFileInputChanged}\n accept={ACCEPTED_PHOTOS_TYPES.map((ext) => `.${ext}`).join(\",\")}\n multiple={false}\n />\n </VisuallyHidden>\n </div>\n )\n}\n\nexport default PhotoDropzone\n"],"names":[],"mappings":";;;;;;;;;;;;AAqBA,IAAM,oBAAoB,GAAG,EAAE,CAAA;AAC/B,IAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC3D,IAAM,kBAAkB,GAAG,IAAI,CAAA;AAC/B,IAAM,4BAA4B,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAYrE,IAAM,oBAAoB,GAAG,UAC3B,CAA0E;IAE1E,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,EAAE,CAAA;IACtC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,IAAM,iBAAiB,GAAG,UAAC,KAAyB;IAClD,OAAA,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;AAA1C,CAA0C,CAAA;IAEtC,aAAa,GAAG,UAAC,EAQE;QAPvB,SAAS,eAAA,EACT,WAAW,iBAAA,EACX,oBAAoB,0BAAA,EACpB,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,aAAa,mBAAA,EACb,uBAAoB,EAApB,eAAe,mBAAG,EAAE,KAAA;IAEpB,IAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAA;IACnD,IAAM,eAAe,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IACjD,IAAA,KAAA,OAA8B,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA5C,UAAU,QAAA,EAAE,aAAa,QAAmB,CAAA;IAC7C,IAAA,KAAA,OAA4B,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAA;IAC3C,IAAA,KAAA,OAA4B,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA1C,SAAS,QAAA,EAAE,YAAY,QAAmB,CAAA;IAC3C,IAAA,KAAA,OAAwC,QAAQ,CAAC,eAAe,CAAC,IAAA,EAAhE,eAAe,QAAA,EAAE,kBAAkB,QAA6B,CAAA;IACjE,IAAA,KAAA,OAAwC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAAtD,eAAe,QAAA,EAAE,kBAAkB,QAAmB,CAAA;IACvD,IAAA,KAAA,OAA4C,QAAQ,CAAC,KAAK,CAAC,IAAA,EAA1D,iBAAiB,QAAA,EAAE,oBAAoB,QAAmB,CAAA;IAEjE,IAAM,iBAAiB,GAAG,UACxB,KAA8D;QAE9D,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACpC,oBAAoB,CAAC,IAAI,CAAC,CAAA;KAC3B,CAAA;IACD,IAAM,kBAAkB,GAAG,UAAC,KAAyC;QACnE,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACpC,oBAAoB,CAAC,KAAK,CAAC,CAAA;KAC5B,CAAA;IAED,IAAM,oBAAoB,GAAG,UAAC,KAAuB;QACnD,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,eAAe;YAAE,kBAAkB,CAAC,IAAI,CAAC,CAAA;KAC9C,CAAA;IAED,IAAM,oBAAoB,GAAG,UAAC,KAAuB;QACnD,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,eAAe,IAAI,CAAC,iBAAiB;YAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA;KACrE,CAAA;IAED,IAAM,eAAe,GAAG,UAAC,KAAyC;;QAChE,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,SAAS;YAAE,OAAM;QACrB,IAAI,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,eAAe,EAAE;YACnB,IAAI,iBAAiB;gBAAE,kBAAkB,EAAE,CAAA;YAC3C,OAAO,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAA;SAC5C;QACD,MAAA,YAAY,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA;KAC9B,CAAA;IAED,IAAM,aAAa,GAAG,UAAC,KAAyB;QAC9C,IAAI,iBAAiB;YAAE,OAAM;QAC7B,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAC5B,eAAe,EAAE,CAAA;SAClB;KACF,CAAA;IAED,IAAM,WAAW,GAAG,UAAC,KAAyB;QAC5C,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAC5B,iBAAiB,CAAC,KAAK,CAAC,CAAA;SACzB;KACF,CAAA;IAED,IAAM,QAAQ,GAAG;QACf,IAAI,YAAY,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;QACzD,kBAAkB,EAAE,CAAA;QACpB,kBAAkB,CAAC,EAAE,CAAC,CAAA;QACtB,aAAa,IAAI,aAAa,EAAE,CAAA;KACjC,CAAA;IAED,IAAM,WAAW,GAAG,UAAC,KAAqB;QACxC,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC,eAAe,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;KACxC,CAAA;IAED,IAAM,WAAW,GAAG,UAAC,KAAqB;QACxC,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3B,aAAa,CAAC,KAAK,CAAC,CAAA;KACrB,CAAA;IAED,IAAM,WAAW,GAAG,UAAO,aAAmB;;;;;oBAC5C,aAAa,CAAC,KAAK,CAAC,CAAA;oBACpB,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,YAAY,CAAC,IAAI,CAAC,CAAA;oBAEE,qBAAM,YAAY,CACpC,aAAa,EACb,UAAC,cAAc,EAAE,SAAS;4BACxB,IAAM,WAAW,GAAG,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAA;4BACtD,IAAM,iBAAiB,GAAG,qBAAqB,CAAA;4BAE/C,IAAI,cAAc,CAAC,IAAI,GAAG,WAAW,EAAE;gCACrC,OAAO,KAAK,CAAA;6BACb;iCAAM,IAAI,CAAC,SAAS,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gCAC/D,OAAO,KAAK,CAAA;6BACb;iCAAM;gCACL,OAAO,IAAI,CAAA;6BACZ;yBACF,CACF,EAAA;;oBAdK,WAAW,GAAG,SAcnB;yBAEG,WAAW,EAAX,wBAAW;oBACP,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;oBACnD,kBAAkB,CAAC,QAAQ,CAAC,CAAA;oBAC5B,qBAAM,SAAS,CAAC,aAAa,CAAC,EAAA;;oBAA9B,SAA8B,CAAA;oBAC9B,YAAY,CAAC,KAAK,CAAC,CAAA;;;oBAEnB,YAAY,CAAC,KAAK,CAAC,CAAA;oBACnB,YAAY,CAAC,IAAI,CAAC,CAAA;oBAClB,UAAU,CAAC;wBACT,YAAY,CAAC,KAAK,CAAC,CAAA;qBACpB,EAAE,kBAAkB,CAAC,CAAA;;;;;SAEzB,CAAA;IAED,IAAM,kBAAkB,GAAG,UAAC,KAAyC;;QACnE,IAAI,MAAA,KAAK,CAAC,MAAM,CAAC,KAAK,0CAAE,MAAM,EAAE;YAC9B,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SACnC;KACF,CAAA;IAED,IAAM,MAAM,GAAG,UAAC,KAAqC;;QACnD,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,CAAA,MAAA,MAAA,KAAK,CAAC,YAAY,0CAAE,KAAK,0CAAE,MAAM,KAAI,CAAC,eAAe,EAAE;YACzD,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SACzC;KACF,CAAA;IAED,IAAM,mBAAmB,GAAG,iBAAiB;UACzC,kBAAkB;UAClB,iBAAiB,CAAA;IAErB,QACE,6BACE,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,EAAE;YAChD,+BAA+B,EAAE,eAAe;YAChD,iCAAiC,EAAE,UAAU;YAC7C,gCAAgC,EAAE,SAAS;YAC3C,gCAAgC,EAAE,SAAS;SAC5C,CAAC,EACF,YAAY,EAAE,oBAAoB,EAClC,YAAY,EAAE,oBAAoB,EAClC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW;;QAExB,SAAS,EAAE,eAAe,EAC1B,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM;;QAEd,WAAW,EAAE,oBAAoB,EACjC,SAAS,EAAE,oBAAoB,EAC/B,UAAU,EAAE,oBAAoB;QAE/B,SAAS,KACR,6BAAK,SAAS,EAAC,oCAAoC;YACjD,oBAAC,iCAAiC,IAAC,KAAK,EAAC,KAAK,GAAG;YAChD,YAAY,CAAC,4BAA4B,EAAE,oBAAoB,CAAC,CAC7D,CACP;QACA,SAAS,KACR,6BAAK,SAAS,EAAC,oCAAoC;YACjD,oBAAC,WAAW,OAAG,CACX,CACP;QACA,CAAC,SAAS;YACT,CAAC,SAAS;aACT,eAAe,IACd;gBACE,6BACE,SAAS,EAAC,gCAAgC,EAC1C,GAAG,EAAE,eAAe,GACpB;gBACF;oBACE,gCACE,SAAS,EAAE,EAAE,CAAC,sCAAsC,EAAE;4BACpD,iDAAiD,EAC/C,eAAe;yBAClB,CAAC,EACF,GAAG,EAAE,eAAe;;;wBAGpB,UAAU,EAAE,mBAAmB,EAC/B,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,WAAW;wBAEpB,oBAAC,cAAc,iBAAwB;wBACvC,oBAAC,OAAO,IAAC,KAAK,EAAC,QAAQ,GAAG,CACnB;oBACT,oBAAC,OAAO,IACN,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAC,YAAY,EACtB,QAAQ,EAAE,EAAE,EACZ,WAAW,EAAE,KAAK,EAClB,KAAK,UAEJ,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAC3C,CACN,CACL,KAEH,6BAAK,SAAS,EAAC,+EAA+E;gBAC5F,+BAAI,WAAW,CAAK;gBACpB,oBAAC,QAAQ,OAAG,CACR,CACP,CAAC;QACJ,oBAAC,cAAc;YACb,+BACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,WAAI,GAAG,CAAE,GAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC/D,QAAQ,EAAE,KAAK,GACf,CACa,CACb,EACP;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/PhotoDropzone/index.tsx"],"sourcesContent":["import VisuallyHidden from \"@reach/visually-hidden\"\nimport React, {\n useState,\n DragEvent as ReactDragEvent,\n useRef,\n TouchEvent as ReactTouchEvent,\n ChangeEvent as ReactChangeEvent,\n MouseEvent as ReactMouseEvent,\n KeyboardEvent as ReactKeyboardEvent,\n ReactNode,\n} from \"react\"\nimport cx from \"classnames\"\nimport {\n PlusIcon,\n BinIcon,\n LoadingIcon,\n ContextualWarningCircleFilledIcon,\n} from \"../Icon\"\nimport { validateFile } from \"../utils/validateFile\"\nimport Popover from \"../Popover\"\n\nconst ACCEPTED_MAX_SIZE_MB = 10\nconst ACCEPTED_PHOTOS_TYPES = [\"jpg\", \"jpeg\", \"png\", \"gif\"]\nconst ERROR_DISPLAY_TIME = 6000\nconst ACCEPTED_TYPES_LOCALE_STRING = ACCEPTED_PHOTOS_TYPES.join(\", \")\n\nexport type PhotoDropzonePropsType = {\n className?: string\n description: string\n deletePopoverContent: (onDelete: () => void, close: () => void) => ReactNode\n errorContent: (acceptedTypes: string, maxFileSize: number) => ReactNode\n onDropped: (file: File) => Promise<void> | void\n onPhotoDelete?: () => void\n initialImageUrl?: string\n}\n\nconst preventEventDefaults = (\n e: ReactDragEvent | ReactMouseEvent | ReactKeyboardEvent | ReactTouchEvent\n) => {\n e.preventDefault && e.preventDefault()\n e.stopPropagation && e.stopPropagation()\n}\n\nconst isEnterOrSpaceKey = (event: ReactKeyboardEvent) =>\n event.key === \"Enter\" || event.key === \" \"\n\nconst PhotoDropzone = ({\n className,\n description,\n deletePopoverContent,\n errorContent,\n onDropped,\n onPhotoDelete,\n initialImageUrl = \"\",\n}: PhotoDropzonePropsType) => {\n const fileInputRef = useRef<HTMLInputElement>(null)\n const deleteButtonRef = useRef<HTMLButtonElement>(null)\n const [isDragging, setIsDragging] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [isErrored, setIsErrored] = useState(false)\n const [imagePreviewUrl, setImagePreviewUrl] = useState(initialImageUrl)\n const [displayDeletion, setDisplayDeletion] = useState(false)\n const [showDeletePopover, setShowDeletePopover] = useState(false)\n\n const openDeletePopover = (\n event?: ReactMouseEvent | ReactKeyboardEvent | ReactTouchEvent\n ) => {\n event && preventEventDefaults(event)\n setShowDeletePopover(true)\n }\n const closeDeletePopover = (event?: ReactMouseEvent | ReactTouchEvent) => {\n event && preventEventDefaults(event)\n setShowDeletePopover(false)\n }\n\n const onDropzoneMouseEnter = (event?: ReactMouseEvent) => {\n event && preventEventDefaults(event)\n if (imagePreviewUrl) setDisplayDeletion(true)\n }\n\n const onDropzoneMouseLeave = (event?: ReactMouseEvent) => {\n event && preventEventDefaults(event)\n if (displayDeletion && !showDeletePopover) setDisplayDeletion(false)\n }\n\n const onDropzoneClick = (event?: ReactMouseEvent | ReactTouchEvent) => {\n event && preventEventDefaults(event)\n if (isLoading) return\n if (isErrored) setIsErrored(false)\n if (imagePreviewUrl) {\n if (showDeletePopover) closeDeletePopover()\n return setDisplayDeletion(!displayDeletion)\n }\n fileInputRef.current?.click()\n }\n\n const onDropzoneKey = (event: ReactKeyboardEvent) => {\n if (showDeletePopover) return\n if (isEnterOrSpaceKey(event)) {\n onDropzoneClick()\n }\n }\n\n const onDeleteKey = (event: ReactKeyboardEvent) => {\n if (isEnterOrSpaceKey(event)) {\n openDeletePopover(event)\n }\n }\n\n const onDelete = () => {\n if (fileInputRef.current) fileInputRef.current.value = \"\"\n closeDeletePopover()\n setImagePreviewUrl(\"\")\n onPhotoDelete && onPhotoDelete()\n }\n\n const onDragEnter = (event: ReactDragEvent) => {\n preventEventDefaults(event)\n if (isErrored) setIsErrored(false)\n !imagePreviewUrl && setIsDragging(true)\n }\n\n const onDragLeave = (event: ReactDragEvent) => {\n preventEventDefaults(event)\n setIsDragging(false)\n }\n\n const processFile = async (fileToProcess: File) => {\n setIsDragging(false)\n setIsErrored(false)\n setIsLoading(true)\n\n const isValidFile = await validateFile(\n fileToProcess,\n (fileToValidate, extension) => {\n const maxFileSize = ACCEPTED_MAX_SIZE_MB * 1000 * 1000\n const acceptedFileTypes = ACCEPTED_PHOTOS_TYPES\n\n if (fileToValidate.size > maxFileSize) {\n return false\n } else if (!extension || !acceptedFileTypes.includes(extension)) {\n return false\n } else {\n return true\n }\n }\n )\n\n if (isValidFile) {\n const imageSrc = URL.createObjectURL(fileToProcess)\n setImagePreviewUrl(imageSrc)\n await onDropped(fileToProcess)\n setIsLoading(false)\n } else {\n setIsLoading(false)\n setIsErrored(true)\n setTimeout(() => {\n setIsErrored(false)\n }, ERROR_DISPLAY_TIME)\n }\n }\n\n const onFileInputChanged = (event: ReactChangeEvent<HTMLInputElement>) => {\n if (event.target.files?.length) {\n processFile(event.target.files[0])\n }\n }\n\n const onDrop = (event: ReactDragEvent<HTMLDivElement>) => {\n preventEventDefaults(event)\n if (event.dataTransfer?.files?.length && !imagePreviewUrl) {\n processFile(event.dataTransfer.files[0])\n }\n }\n\n const onDeleteButtonClick = showDeletePopover\n ? closeDeletePopover\n : openDeletePopover\n\n return (\n <div\n tabIndex={0}\n className={cx(\"cobalt-photo-dropzone\", className, {\n \"cobalt-photo-dropzone--filled\": imagePreviewUrl,\n \"cobalt-photo-dropzone--dragging\": isDragging,\n \"cobalt-photo-dropzone--loading\": isLoading,\n \"cobalt-photo-dropzone--errored\": isErrored,\n })}\n onMouseEnter={onDropzoneMouseEnter}\n onMouseLeave={onDropzoneMouseLeave}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n // Not on click because we also use mouseEnter listener\n onMouseUp={onDropzoneClick}\n onTouchEnd={onDropzoneClick}\n onKeyUp={onDropzoneKey}\n onDrop={onDrop}\n // Need to reset those listeners to avoid default browser behaviour\n onDragStart={preventEventDefaults}\n onDragEnd={preventEventDefaults}\n onDragOver={preventEventDefaults}\n >\n {isErrored && (\n <div className=\"cobalt-photo-dropzone__description\">\n <ContextualWarningCircleFilledIcon color=\"red\" />\n {errorContent(ACCEPTED_TYPES_LOCALE_STRING, ACCEPTED_MAX_SIZE_MB)}\n </div>\n )}\n {isLoading && (\n <div className=\"cobalt-photo-dropzone__description\">\n <LoadingIcon />\n </div>\n )}\n {!isLoading &&\n !isErrored &&\n (imagePreviewUrl ? (\n <>\n <img\n className=\"cobalt-photo-dropzone__preview\"\n src={imagePreviewUrl}\n />\n <div>\n <button\n className={cx(\"cobalt-photo-dropzone__delete-button\", {\n \"cobalt-photo-dropzone__delete-button--triggered\":\n displayDeletion,\n })}\n ref={deleteButtonRef}\n // Must follow the click listeners on the dropzone,\n // in order to have the correct events bubbling\n onTouchEnd={onDeleteButtonClick}\n onMouseUp={onDeleteButtonClick}\n onKeyUp={onDeleteKey}\n >\n <VisuallyHidden>Delete</VisuallyHidden>\n <BinIcon color=\"indigo\" />\n </button>\n <Popover\n targetRef={deleteButtonRef}\n isOpen={showDeletePopover}\n close={closeDeletePopover}\n placement=\"left-start\"\n distance={12}\n bodySpacing={false}\n arrow\n >\n {deletePopoverContent(onDelete, closeDeletePopover)}\n </Popover>\n </div>\n </>\n ) : (\n <div className=\"cobalt-photo-dropzone__description cobalt-photo-dropzone__description--strong\">\n <p>{description}</p>\n <PlusIcon />\n </div>\n ))}\n <VisuallyHidden>\n <input\n ref={fileInputRef}\n type=\"file\"\n onChange={onFileInputChanged}\n accept={ACCEPTED_PHOTOS_TYPES.map((ext) => `.${ext}`).join(\",\")}\n multiple={false}\n />\n </VisuallyHidden>\n </div>\n )\n}\n\nexport default PhotoDropzone\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Pill/index.tsx"],"sourcesContent":["import React, { Children } from \"react\"\nimport cx from \"classnames\"\nimport { Icon, IconColors, IconSources } from \"../Icon\"\n\nconst ICON_SIZE = 20\nexport interface PillPropsType {\n children: React.ReactNode\n icon?: IconSources\n color?: IconColors\n size?: \"large\"\n overlayed?: boolean\n className?: string\n}\n\nexport const Pill = ({\n icon,\n color = \"indigo\",\n children,\n overlayed,\n className,\n size,\n}: PillPropsType) => {\n const iconMarkup = icon ? (\n <span className=\"cobalt-Pill__Icon\">\n <Icon\n source={icon}\n size={ICON_SIZE}\n color={overlayed ? \"white\" : color}\n />\n </span>\n ) : null\n\n return (\n <div\n className={cx(className, \"cobalt-Pill\", {\n \"cobalt-Pill--colorAller\": color === \"aller\",\n \"cobalt-Pill--overlayed\": overlayed,\n \"cobalt-Pill--large\": size === \"large\",\n })}\n >\n {iconMarkup} {children}\n </div>\n )\n}\n\nexport interface PillGroupPropsType {\n children: React.ReactNode\n}\n\nexport const PillGroup = ({ children }: PillGroupPropsType) => {\n return (\n <div className=\"cobalt-PillGroup\">\n {Children.toArray(children).map((child, index) => (\n <div className=\"cobalt-PillGroup__Item\" key={index}>\n {child}\n </div>\n ))}\n </div>\n )\n}\n\nexport default Pill\n"],"names":[],"mappings":";;;;AAIA,IAAM,SAAS,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Pill/index.tsx"],"sourcesContent":["import React, { Children } from \"react\"\nimport cx from \"classnames\"\nimport { Icon, IconColors, IconSources } from \"../Icon\"\n\nconst ICON_SIZE = 20\nexport interface PillPropsType {\n children: React.ReactNode\n icon?: IconSources\n color?: IconColors\n size?: \"large\"\n overlayed?: boolean\n className?: string\n}\n\nexport const Pill = ({\n icon,\n color = \"indigo\",\n children,\n overlayed,\n className,\n size,\n}: PillPropsType) => {\n const iconMarkup = icon ? (\n <span className=\"cobalt-Pill__Icon\">\n <Icon\n source={icon}\n size={ICON_SIZE}\n color={overlayed ? \"white\" : color}\n />\n </span>\n ) : null\n\n return (\n <div\n className={cx(className, \"cobalt-Pill\", {\n \"cobalt-Pill--colorAller\": color === \"aller\",\n \"cobalt-Pill--overlayed\": overlayed,\n \"cobalt-Pill--large\": size === \"large\",\n })}\n >\n {iconMarkup} {children}\n </div>\n )\n}\n\nexport interface PillGroupPropsType {\n children: React.ReactNode\n}\n\nexport const PillGroup = ({ children }: PillGroupPropsType) => {\n return (\n <div className=\"cobalt-PillGroup\">\n {Children.toArray(children).map((child, index) => (\n <div className=\"cobalt-PillGroup__Item\" key={index}>\n {child}\n </div>\n ))}\n </div>\n )\n}\n\nexport default Pill\n"],"names":[],"mappings":";;;;AAIA,IAAM,SAAS,GAAG,EAAE,CAAA;AAUb,IAAM,IAAI,GAAG,UAAC,EAOL,EAAA;AANd,IAAA,IAAA,IAAI,UAAA,EACJ,EAAA,GAAA,EAAA,CAAA,KAAgB,EAAhB,KAAK,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,QAAQ,GAAA,EAAA,EAChB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;IAEJ,IAAM,UAAU,GAAG,IAAI,IACrB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mBAAmB,EAAA;AACjC,QAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EACH,MAAM,EAAE,IAAI,EACZ,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,KAAK,EAAA,CAClC,CACG,IACL,IAAI,CAAA;IAER,QACE,6BACE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE;YACtC,yBAAyB,EAAE,KAAK,KAAK,OAAO;AAC5C,YAAA,wBAAwB,EAAE,SAAS;YACnC,oBAAoB,EAAE,IAAI,KAAK,OAAO;SACvC,CAAC,EAAA;QAED,UAAU;;QAAG,QAAQ,CAClB,EACP;AACH,EAAC;AAMM,IAAM,SAAS,GAAG,UAAC,EAAgC,EAAA;AAA9B,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;AAClC,IAAA,QACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kBAAkB,IAC9B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK,EAAK,EAAA,QAChD,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,EAAC,GAAG,EAAE,KAAK,EAC/C,EAAA,KAAK,CACF,EACP,EAAA,CAAC,CACE,EACP;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyTippy.js","sources":["../../../src/components/Popover/LazyTippy.tsx"],"sourcesContent":["// Will only render the `content` or `render` elements if the tippy is mounted to the DOM.\n// Replace <Tippy /> with <LazyTippy /> component and it should work the same.\n\nimport React from \"react\"\n\nimport Tippy, { TippyProps } from \"@tippyjs/react\"\n\nconst LazyTippy = (props: TippyProps) => {\n return props.visible ? <Tippy {...props} /> : null\n}\n\nexport default LazyTippy\n"],"names":[],"mappings":";;;;AAAA;
|
|
1
|
+
{"version":3,"file":"LazyTippy.js","sources":["../../../src/components/Popover/LazyTippy.tsx"],"sourcesContent":["// Will only render the `content` or `render` elements if the tippy is mounted to the DOM.\n// Replace <Tippy /> with <LazyTippy /> component and it should work the same.\n\nimport React from \"react\"\n\nimport Tippy, { TippyProps } from \"@tippyjs/react\"\n\nconst LazyTippy = (props: TippyProps) => {\n return props.visible ? <Tippy {...props} /> : null\n}\n\nexport default LazyTippy\n"],"names":[],"mappings":";;;;AAAA;AAOM,IAAA,SAAS,GAAG,UAAC,KAAiB,EAAA;AAClC,IAAA,OAAO,KAAK,CAAC,OAAO,GAAG,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI,CAAA,GAAG,IAAI,CAAA;AACpD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Popover/index.tsx"],"sourcesContent":["import React, { useEffect, useCallback, PropsWithChildren } from \"react\"\nimport Tippy, { TippyProps } from \"@tippyjs/react\"\nimport { sticky } from \"tippy.js\"\n\nimport useBreakpoint from \"../../hooks/useBreakpoint\"\nimport Modal, { ModalPropsType } from \"../Modal\"\nimport LazyTippy from \"./LazyTippy\"\nimport { zIndexes } from \"../../tokens\"\n\nexport type PopoverPropsType = PropsWithChildren<{\n isOpen: boolean\n close: () => void\n \"aria-label\"?: string\n bodySpacing?: boolean\n onShow?: () => void\n onHidden?: () => void\n // Desktop props\n targetRef: TippyProps[\"reference\"]\n arrow?: boolean\n placement?: TippyProps[\"placement\"]\n theme?: string\n distance?: number\n zIndex?: number\n /**\n * __Only for desktop popover__\n *\n * Allow to render the content only when the popover is mounted in the DOM\n * Useful to render async content in the popover\n */\n lazy?: boolean\n}>\n\nconst ESC_KEY_CODE = 27\n\nconst defaultTippyProps: Omit<TippyProps, \"content\" | \"children\" | \"visible\"> =\n {\n animation: \"shift-away-subtle\",\n interactive: true,\n interactiveBorder: 10,\n delay: [0, 0],\n duration: [200, 150],\n maxWidth: 500,\n sticky: true,\n plugins: [sticky],\n theme: \"light cobalt-popover\",\n inertia: true,\n }\n\nconst MobilePopover = ({\n isOpen,\n children,\n ariaLabel = \"Popover mobile modal\",\n onDismiss,\n bodySpacing,\n onShow,\n onHidden,\n}: PropsWithChildren<{\n ariaLabel?: ModalPropsType[\"aria-label\"]\n isOpen: ModalPropsType[\"isOpen\"]\n onDismiss?: () => void\n bodySpacing: ModalPropsType[\"bodySpacing\"]\n onShow: ModalPropsType[\"onShow\"]\n onHidden: ModalPropsType[\"onHidden\"]\n}>) => {\n return (\n <Modal\n aria-label={ariaLabel}\n isOpen={isOpen}\n onDismissAttempt={onDismiss}\n bodySpacing={bodySpacing}\n onShow={onShow}\n onHidden={onHidden}\n >\n {children}\n </Modal>\n )\n}\n\nconst Popover = ({\n isOpen,\n targetRef,\n close,\n \"aria-label\": ariaLabel,\n children,\n bodySpacing = true,\n onShow,\n onHidden,\n // Desktop props\n arrow = false,\n placement = \"bottom-start\",\n theme = \"\",\n distance = 8,\n zIndex = zIndexes.dropdown,\n lazy,\n}: PopoverPropsType) => {\n const { breakpoint } = useBreakpoint()\n const isMobile = breakpoint === \"sm\" || breakpoint === \"xs\"\n\n const escListener = useCallback(\n (event: KeyboardEvent) => {\n if (event.keyCode === ESC_KEY_CODE && isOpen) close()\n },\n [isOpen, close]\n )\n\n useEffect(() => {\n window.addEventListener(\"keydown\", escListener)\n\n return () => window.removeEventListener(\"keydown\", escListener)\n }, [escListener])\n\n const onTippyClose = () => {\n if (onHidden) onHidden()\n }\n\n const onTippyOpen = () => {\n if (onShow) onShow()\n }\n\n const TippyComp = lazy ? LazyTippy : Tippy\n\n return isMobile ? (\n <MobilePopover\n isOpen={isOpen}\n onDismiss={close}\n bodySpacing={bodySpacing}\n ariaLabel={ariaLabel}\n onShow={onShow}\n onHidden={onHidden}\n >\n {children}\n </MobilePopover>\n ) : (\n <TippyComp\n content={\n bodySpacing ? (\n <div className=\"cobalt-popover--bodySpacing\">{children}</div>\n ) : (\n children\n )\n }\n {...defaultTippyProps}\n visible={isOpen}\n reference={targetRef}\n theme={`${defaultTippyProps.theme} ${theme}`}\n offset={[0, distance]}\n {...{ arrow, placement, zIndex }}\n onHidden={onTippyClose}\n onShow={onTippyOpen}\n onClickOutside={close}\n />\n )\n}\n\nexport default Popover\n"],"names":[],"mappings":";;;;;;;;;AAgCA,IAAM,YAAY,GAAG,EAAE,CAAA;AAEvB,IAAM,iBAAiB,GACrB;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Popover/index.tsx"],"sourcesContent":["import React, { useEffect, useCallback, PropsWithChildren } from \"react\"\nimport Tippy, { TippyProps } from \"@tippyjs/react\"\nimport { sticky } from \"tippy.js\"\n\nimport useBreakpoint from \"../../hooks/useBreakpoint\"\nimport Modal, { ModalPropsType } from \"../Modal\"\nimport LazyTippy from \"./LazyTippy\"\nimport { zIndexes } from \"../../tokens\"\n\nexport type PopoverPropsType = PropsWithChildren<{\n isOpen: boolean\n close: () => void\n \"aria-label\"?: string\n bodySpacing?: boolean\n onShow?: () => void\n onHidden?: () => void\n // Desktop props\n targetRef: TippyProps[\"reference\"]\n arrow?: boolean\n placement?: TippyProps[\"placement\"]\n theme?: string\n distance?: number\n zIndex?: number\n /**\n * __Only for desktop popover__\n *\n * Allow to render the content only when the popover is mounted in the DOM\n * Useful to render async content in the popover\n */\n lazy?: boolean\n}>\n\nconst ESC_KEY_CODE = 27\n\nconst defaultTippyProps: Omit<TippyProps, \"content\" | \"children\" | \"visible\"> =\n {\n animation: \"shift-away-subtle\",\n interactive: true,\n interactiveBorder: 10,\n delay: [0, 0],\n duration: [200, 150],\n maxWidth: 500,\n sticky: true,\n plugins: [sticky],\n theme: \"light cobalt-popover\",\n inertia: true,\n }\n\nconst MobilePopover = ({\n isOpen,\n children,\n ariaLabel = \"Popover mobile modal\",\n onDismiss,\n bodySpacing,\n onShow,\n onHidden,\n}: PropsWithChildren<{\n ariaLabel?: ModalPropsType[\"aria-label\"]\n isOpen: ModalPropsType[\"isOpen\"]\n onDismiss?: () => void\n bodySpacing: ModalPropsType[\"bodySpacing\"]\n onShow: ModalPropsType[\"onShow\"]\n onHidden: ModalPropsType[\"onHidden\"]\n}>) => {\n return (\n <Modal\n aria-label={ariaLabel}\n isOpen={isOpen}\n onDismissAttempt={onDismiss}\n bodySpacing={bodySpacing}\n onShow={onShow}\n onHidden={onHidden}\n >\n {children}\n </Modal>\n )\n}\n\nconst Popover = ({\n isOpen,\n targetRef,\n close,\n \"aria-label\": ariaLabel,\n children,\n bodySpacing = true,\n onShow,\n onHidden,\n // Desktop props\n arrow = false,\n placement = \"bottom-start\",\n theme = \"\",\n distance = 8,\n zIndex = zIndexes.dropdown,\n lazy,\n}: PopoverPropsType) => {\n const { breakpoint } = useBreakpoint()\n const isMobile = breakpoint === \"sm\" || breakpoint === \"xs\"\n\n const escListener = useCallback(\n (event: KeyboardEvent) => {\n if (event.keyCode === ESC_KEY_CODE && isOpen) close()\n },\n [isOpen, close]\n )\n\n useEffect(() => {\n window.addEventListener(\"keydown\", escListener)\n\n return () => window.removeEventListener(\"keydown\", escListener)\n }, [escListener])\n\n const onTippyClose = () => {\n if (onHidden) onHidden()\n }\n\n const onTippyOpen = () => {\n if (onShow) onShow()\n }\n\n const TippyComp = lazy ? LazyTippy : Tippy\n\n return isMobile ? (\n <MobilePopover\n isOpen={isOpen}\n onDismiss={close}\n bodySpacing={bodySpacing}\n ariaLabel={ariaLabel}\n onShow={onShow}\n onHidden={onHidden}\n >\n {children}\n </MobilePopover>\n ) : (\n <TippyComp\n content={\n bodySpacing ? (\n <div className=\"cobalt-popover--bodySpacing\">{children}</div>\n ) : (\n children\n )\n }\n {...defaultTippyProps}\n visible={isOpen}\n reference={targetRef}\n theme={`${defaultTippyProps.theme} ${theme}`}\n offset={[0, distance]}\n {...{ arrow, placement, zIndex }}\n onHidden={onTippyClose}\n onShow={onTippyOpen}\n onClickOutside={close}\n />\n )\n}\n\nexport default Popover\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/PriceTable/index.tsx"],"sourcesContent":["import React from \"react\"\nimport classNames from \"classnames\"\n\nexport const PriceTable = ({ children }: { children: React.ReactNode }) => (\n <div className=\"cobalt-PriceTable\">{children}</div>\n)\n\ninterface PriceTableRowProps {\n label: string\n value: string\n discounted?: boolean\n}\n\nexport const PriceTableRow = ({\n label,\n value,\n discounted = false,\n}: PriceTableRowProps) => (\n <div className=\"cobalt-PriceTable__Row\">\n <div className=\"cobalt-PriceTable__Label\">{label}</div>\n <div\n className={classNames(\"cobalt-PriceTable__Value\", {\n \"cobalt-PriceTable__Value--discount\": discounted,\n })}\n >\n {value}\n </div>\n </div>\n)\n"],"names":["classNames"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/PriceTable/index.tsx"],"sourcesContent":["import React from \"react\"\nimport classNames from \"classnames\"\n\nexport const PriceTable = ({ children }: { children: React.ReactNode }) => (\n <div className=\"cobalt-PriceTable\">{children}</div>\n)\n\ninterface PriceTableRowProps {\n label: string\n value: string\n discounted?: boolean\n}\n\nexport const PriceTableRow = ({\n label,\n value,\n discounted = false,\n}: PriceTableRowProps) => (\n <div className=\"cobalt-PriceTable__Row\">\n <div className=\"cobalt-PriceTable__Label\">{label}</div>\n <div\n className={classNames(\"cobalt-PriceTable__Value\", {\n \"cobalt-PriceTable__Value--discount\": discounted,\n })}\n >\n {value}\n </div>\n </div>\n)\n"],"names":["classNames"],"mappings":";;;AAGO,IAAM,UAAU,GAAG,UAAC,EAA2C,EAAA;AAAzC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;IAAsC,QACzE,6BAAK,SAAS,EAAC,mBAAmB,EAAE,EAAA,QAAQ,CAAO,EACpD;AAF0E,EAE1E;AAQM,IAAM,aAAa,GAAG,UAAC,EAIT,EAAA;QAHnB,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,kBAAkB,EAAlB,UAAU,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,KAAK,GAAA,EAAA,CAAA;AACM,IAAA,QACxB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA;AACrC,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,EAAE,KAAK,CAAO;AACvD,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAEA,EAAU,CAAC,0BAA0B,EAAE;AAChD,gBAAA,oCAAoC,EAAE,UAAU;AACjD,aAAA,CAAC,EAED,EAAA,KAAK,CACF,CACF,EACP;AAXyB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/ProgressBar/index.tsx"],"sourcesContent":["import React from \"react\"\n\nexport interface ProgressBarProps {\n children: React.ReactNode\n progress: number\n /**\n * Visual tick at the end of the progress bar\n * @default false\n */\n tick?: boolean\n}\n\nexport const ProgressBar = ({\n progress,\n tick = false,\n children,\n}: ProgressBarProps) => (\n <div>\n <div className=\"cobalt-ProgressBar__TitleSection\">\n <div>\n <div className=\"cobalt-ProgressBar__Progression\">{progress}%</div>\n <div className=\"cobalt-ProgressBar__Title\">{children}</div>\n </div>\n {progress === 100 && (\n <div className=\"cobalt-ProgressBar__CompletedCheckbox\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth=\"1\">\n <path\n d=\"M12,22 C17.5228475,22 22,17.5228475 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,17.5228475 6.4771525,22 12,22 Z M10.039794,16.4579825 L10.3868138,16.8048824 C10.7382605,17.1562077 11.3079394,17.1562077 11.6593861,16.8048824 L12.0064058,16.4579825 L18.3862862,10.0803058 C18.7379046,9.72880879 18.7379046,9.15879074 18.3862862,8.80729375 L17.6922467,8.11349398 C17.3408,7.76216867 16.771121,7.76216867 16.4196743,8.11349398 L11.0398301,13.5249288 L8.08032565,10.5664466 C7.72887895,10.2151213 7.15920001,10.2151213 6.80775331,10.5664466 L6.11371383,11.2602463 C5.76209539,11.6117433 5.76209539,12.1817614 6.11371383,12.5332584 L10.039794,16.4579825 Z\"\n fill=\"#b4bbc6\"\n />\n </g>\n </svg>\n </div>\n )}\n </div>\n <div className=\"cobalt-ProgressBar__Container\">\n <div\n className=\"cobalt-ProgressBar__Foreground\"\n style={{ width: `${progress}%` }}\n />\n {tick && <div className=\"cobalt-ProgressBar__Tick\" />}\n </div>\n </div>\n)\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/ProgressBar/index.tsx"],"sourcesContent":["import React from \"react\"\n\nexport interface ProgressBarProps {\n children: React.ReactNode\n progress: number\n /**\n * Visual tick at the end of the progress bar\n * @default false\n */\n tick?: boolean\n}\n\nexport const ProgressBar = ({\n progress,\n tick = false,\n children,\n}: ProgressBarProps) => (\n <div>\n <div className=\"cobalt-ProgressBar__TitleSection\">\n <div>\n <div className=\"cobalt-ProgressBar__Progression\">{progress}%</div>\n <div className=\"cobalt-ProgressBar__Title\">{children}</div>\n </div>\n {progress === 100 && (\n <div className=\"cobalt-ProgressBar__CompletedCheckbox\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth=\"1\">\n <path\n d=\"M12,22 C17.5228475,22 22,17.5228475 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,17.5228475 6.4771525,22 12,22 Z M10.039794,16.4579825 L10.3868138,16.8048824 C10.7382605,17.1562077 11.3079394,17.1562077 11.6593861,16.8048824 L12.0064058,16.4579825 L18.3862862,10.0803058 C18.7379046,9.72880879 18.7379046,9.15879074 18.3862862,8.80729375 L17.6922467,8.11349398 C17.3408,7.76216867 16.771121,7.76216867 16.4196743,8.11349398 L11.0398301,13.5249288 L8.08032565,10.5664466 C7.72887895,10.2151213 7.15920001,10.2151213 6.80775331,10.5664466 L6.11371383,11.2602463 C5.76209539,11.6117433 5.76209539,12.1817614 6.11371383,12.5332584 L10.039794,16.4579825 Z\"\n fill=\"#b4bbc6\"\n />\n </g>\n </svg>\n </div>\n )}\n </div>\n <div className=\"cobalt-ProgressBar__Container\">\n <div\n className=\"cobalt-ProgressBar__Foreground\"\n style={{ width: `${progress}%` }}\n />\n {tick && <div className=\"cobalt-ProgressBar__Tick\" />}\n </div>\n </div>\n)\n"],"names":[],"mappings":";;AAYO,IAAM,WAAW,GAAG,UAAC,EAIT,EAAA;QAHjB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,EAAA,GAAA,EAAA,CAAA,IAAY,EAAZ,IAAI,mBAAG,KAAK,GAAA,EAAA,EACZ,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;AACc,IAAA,QACtB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;QACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kCAAkC,EAAA;AAC/C,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;gBACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,iCAAiC,EAAA;oBAAE,QAAQ;AAAQ,oBAAA,GAAA,CAAA;AAClE,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2BAA2B,EAAE,EAAA,QAAQ,CAAO,CACvD;AACL,YAAA,QAAQ,KAAK,GAAG,KACf,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,uCAAuC,EAAA;AACpD,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,EAAA;AAElC,oBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,EAAA;AAC7D,wBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,sqBAAsqB,EACxqB,IAAI,EAAC,SAAS,EAAA,CACd,CACA,CACA,CACF,CACP,CACG;QACN,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,+BAA+B,EAAA;AAC5C,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,gCAAgC,EAC1C,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA,CAAA,MAAA,CAAG,QAAQ,EAAA,GAAA,CAAG,EAAE,EAChC,CAAA;YACD,IAAI,IAAI,6BAAK,SAAS,EAAC,0BAA0B,EAAG,CAAA,CACjD,CACF,EACP;AAjCuB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Tabs/index.tsx"],"sourcesContent":["import React, {\n FC,\n useRef,\n useLayoutEffect,\n useState,\n useCallback,\n} from \"react\"\nimport {\n Tabs as ReachTabs,\n TabList as ReachTabList,\n Tab as ReachTab,\n TabPanels as ReachTabPanels,\n TabPanel as ReachTabPanel,\n} from \"@reach/tabs\"\nimport cx from \"classnames\"\nimport { useSpring } from \"@react-spring/web\"\n\nimport { throttle } from \"../utils\"\nimport { Icon } from \"../Icon\"\n\nconst SCROLL_STEP = 150\n\nexport type TabsPropsType = {\n /**\n * Index of the initial actived tab (first tab by default)\n */\n defaultTabIndex?: number\n /**\n * Method to be run on tab change\n */\n onChange?: (index: number) => void\n /**\n * Left aligned tabs with no uppercased labels\n */\n subLevel?: boolean\n}\n\ntype TabPropsType = {\n /**\n * Label/title of the tab\n */\n label: string | React.ReactNode | ((isSelected?: boolean) => React.ReactNode)\n /**\n * Hypertext link. If provided, the tab will be an anchor\n */\n href?: string\n}\n\ntype InternalTabPropsType = {\n isSelected?: boolean // Provided by Reach TabList component\n href?: string\n children: TabPropsType[\"label\"]\n}\n\n// Only for the API, render nothing, we use InternalTab component internally\nexport const Tab: FC<TabPropsType> = () => null\nTab.displayName = \"Tab\"\n\nconst isTabComponent = (\n component: React.ReactNode\n): component is React.ReactElement<React.PropsWithChildren<TabPropsType>> =>\n React.isValidElement(component) && component.type === Tab\n\nconst InternalTab = (props: InternalTabPropsType) => {\n const { href, children, isSelected } = props\n return (\n <ReachTab\n {...props}\n {...(href ? { href, as: \"a\" } : { as: \"button\" })}\n className={cx(\"cobalt-tabs__label\", {\n \"cobalt-tabs__label--selected\": isSelected,\n })}\n >\n {typeof children === \"function\" ? children(isSelected) : children}\n </ReachTab>\n )\n}\nInternalTab.displayName = \"InternalTab\"\n\nexport const Tabs: FC<TabsPropsType> & { Tab: FC<TabPropsType> } = ({\n children,\n defaultTabIndex,\n onChange,\n subLevel,\n}) => {\n const [scrollDistance, setScrollDistance] = useState(0)\n const [scrollButtonsEnabled, setScrollButtonsEnabled] = useState({\n prev: false,\n next: true,\n })\n\n const labelListRef = useRef<HTMLDivElement>(null)\n\n const [, scrollLeftSpringRef] = useSpring(() => ({\n config: { tension: 300, friction: 30, clamp: true },\n springScrollLeft: 0,\n onChange: {\n springScrollLeft: (springScrollLeft) => {\n if (labelListRef?.current) {\n labelListRef.current.scrollLeft =\n springScrollLeft as unknown as number\n }\n },\n },\n }))\n\n const updateScrollDistance = () => {\n const scrollWidth = labelListRef?.current?.scrollWidth || 0\n const clientWidth = labelListRef?.current?.clientWidth || 0\n setScrollDistance(scrollWidth && clientWidth && scrollWidth - clientWidth)\n }\n\n const updateScrollButtonsState = () => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n if (labelListRef.current.scrollLeft <= 0) {\n newScrollButtonStates.prev = false\n }\n if (scrollDistance && labelListRef.current.scrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n }\n setScrollButtonsEnabled(newScrollButtonStates)\n }\n }\n\n const updateStates = () => {\n updateScrollDistance()\n updateScrollButtonsState()\n }\n\n useLayoutEffect(() => {\n const throttledUpdate = throttle(updateStates, 300)\n window.addEventListener(\"resize\", throttledUpdate)\n return () => window.removeEventListener(\"resize\", throttledUpdate)\n }, [scrollDistance])\n\n // When the bar became scrollable/not scrollable, the scrollWidth will change\n // so we update states according to its change\n useLayoutEffect(() => {\n updateStates()\n }, [labelListRef?.current?.scrollWidth])\n\n const tabsPropsArray: TabPropsType[] = []\n const tabsChildren: typeof children[] = []\n let matchedHrefIndex: number | undefined = undefined\n React.Children.forEach(children, (child, index) => {\n if (isTabComponent(child)) {\n const { children: tabChildren, ...tabProps } = child.props\n tabsPropsArray.push(tabProps)\n // if no children, it will be null, nothing will be rendered\n tabsChildren.push(tabChildren)\n if (tabProps.href === window.location.pathname) {\n matchedHrefIndex = index\n }\n }\n })\n\n const scrollTabs = (scrollAmount: number) => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n const computedScrollLeft = labelListRef.current.scrollLeft + scrollAmount\n let newScrollLeft = computedScrollLeft\n\n // not scrolled at all\n if (computedScrollLeft <= 0) {\n newScrollButtonStates.prev = false\n newScrollLeft = 0\n }\n // scrolled at maximum\n if (scrollDistance && computedScrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n newScrollLeft = scrollDistance\n }\n\n setScrollButtonsEnabled(newScrollButtonStates)\n scrollLeftSpringRef.start({\n springScrollLeft: newScrollLeft,\n immediate: false,\n })\n }\n }\n const onScrollPrev = useCallback(\n () => scrollTabs(-SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n const onScrollNext = useCallback(\n () => scrollTabs(SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n\n const isScrollable = !!scrollDistance\n\n const handleWheel = throttle(() => {\n if (labelListRef?.current) {\n updateScrollButtonsState()\n // Don't animate\n scrollLeftSpringRef.set({\n springScrollLeft: labelListRef.current.scrollLeft,\n })\n }\n }, 300)\n\n return (\n <ReachTabs\n className=\"cobalt-tabs\"\n defaultIndex={matchedHrefIndex || defaultTabIndex}\n onChange={onChange}\n >\n <ReachTabList\n className={cx(\"cobalt-tabs__labels\", {\n \"cobalt-tabs__labels--scrollable\": isScrollable,\n \"cobalt-tabs__labels--subLevel\": subLevel,\n })}\n onWheel={handleWheel}\n ref={labelListRef}\n >\n {tabsPropsArray.map((props, index) => (\n <InternalTab key={index} href={props.href}>\n {props.label}\n </InternalTab>\n ))}\n </ReachTabList>\n {isScrollable && (\n <>\n <button\n className=\"cobalt-tabs__nav-prev\"\n onClick={onScrollPrev}\n disabled={!scrollButtonsEnabled.prev}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <Icon source=\"chevronLeft\" color=\"indigo\" />\n </span>\n </button>\n <button\n className=\"cobalt-tabs__nav-next\"\n onClick={onScrollNext}\n disabled={!scrollButtonsEnabled.next}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <Icon source=\"chevronRight\" color=\"indigo\" />\n </span>\n </button>\n </>\n )}\n {!!tabsChildren.length && (\n <ReachTabPanels>\n {tabsChildren.map((tabChildren, index) => (\n <ReachTabPanel className=\"cobalt-tabs__panel\" key={index}>\n {tabChildren}\n </ReachTabPanel>\n ))}\n </ReachTabPanels>\n )}\n </ReachTabs>\n )\n}\nTabs.Tab = Tab\nTabs.displayName = \"Tabs\"\n\nexport default Tabs\n"],"names":["ReachTab","ReachTabs","ReachTabList","ReachTabPanels","ReachTabPanel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Tabs/index.tsx"],"sourcesContent":["import React, {\n FC,\n useRef,\n useLayoutEffect,\n useState,\n useCallback,\n} from \"react\"\nimport {\n Tabs as ReachTabs,\n TabList as ReachTabList,\n Tab as ReachTab,\n TabPanels as ReachTabPanels,\n TabPanel as ReachTabPanel,\n} from \"@reach/tabs\"\nimport cx from \"classnames\"\nimport { useSpring } from \"@react-spring/web\"\n\nimport { throttle } from \"../utils\"\nimport { Icon } from \"../Icon\"\n\nconst SCROLL_STEP = 150\n\nexport type TabsPropsType = {\n /**\n * Index of the initial actived tab (first tab by default)\n */\n defaultTabIndex?: number\n /**\n * Method to be run on tab change\n */\n onChange?: (index: number) => void\n /**\n * Left aligned tabs with no uppercased labels\n */\n subLevel?: boolean\n}\n\ntype TabPropsType = {\n /**\n * Label/title of the tab\n */\n label: string | React.ReactNode | ((isSelected?: boolean) => React.ReactNode)\n /**\n * Hypertext link. If provided, the tab will be an anchor\n */\n href?: string\n}\n\ntype InternalTabPropsType = {\n isSelected?: boolean // Provided by Reach TabList component\n href?: string\n children: TabPropsType[\"label\"]\n}\n\n// Only for the API, render nothing, we use InternalTab component internally\nexport const Tab: FC<TabPropsType> = () => null\nTab.displayName = \"Tab\"\n\nconst isTabComponent = (\n component: React.ReactNode\n): component is React.ReactElement<React.PropsWithChildren<TabPropsType>> =>\n React.isValidElement(component) && component.type === Tab\n\nconst InternalTab = (props: InternalTabPropsType) => {\n const { href, children, isSelected } = props\n return (\n <ReachTab\n {...props}\n {...(href ? { href, as: \"a\" } : { as: \"button\" })}\n className={cx(\"cobalt-tabs__label\", {\n \"cobalt-tabs__label--selected\": isSelected,\n })}\n >\n {typeof children === \"function\" ? children(isSelected) : children}\n </ReachTab>\n )\n}\nInternalTab.displayName = \"InternalTab\"\n\nexport const Tabs: FC<TabsPropsType> & { Tab: FC<TabPropsType> } = ({\n children,\n defaultTabIndex,\n onChange,\n subLevel,\n}) => {\n const [scrollDistance, setScrollDistance] = useState(0)\n const [scrollButtonsEnabled, setScrollButtonsEnabled] = useState({\n prev: false,\n next: true,\n })\n\n const labelListRef = useRef<HTMLDivElement>(null)\n\n const [, scrollLeftSpringRef] = useSpring(() => ({\n config: { tension: 300, friction: 30, clamp: true },\n springScrollLeft: 0,\n onChange: {\n springScrollLeft: (springScrollLeft) => {\n if (labelListRef?.current) {\n labelListRef.current.scrollLeft =\n springScrollLeft as unknown as number\n }\n },\n },\n }))\n\n const updateScrollDistance = () => {\n const scrollWidth = labelListRef?.current?.scrollWidth || 0\n const clientWidth = labelListRef?.current?.clientWidth || 0\n setScrollDistance(scrollWidth && clientWidth && scrollWidth - clientWidth)\n }\n\n const updateScrollButtonsState = () => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n if (labelListRef.current.scrollLeft <= 0) {\n newScrollButtonStates.prev = false\n }\n if (scrollDistance && labelListRef.current.scrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n }\n setScrollButtonsEnabled(newScrollButtonStates)\n }\n }\n\n const updateStates = () => {\n updateScrollDistance()\n updateScrollButtonsState()\n }\n\n useLayoutEffect(() => {\n const throttledUpdate = throttle(updateStates, 300)\n window.addEventListener(\"resize\", throttledUpdate)\n return () => window.removeEventListener(\"resize\", throttledUpdate)\n }, [scrollDistance])\n\n // When the bar became scrollable/not scrollable, the scrollWidth will change\n // so we update states according to its change\n useLayoutEffect(() => {\n updateStates()\n }, [labelListRef?.current?.scrollWidth])\n\n const tabsPropsArray: TabPropsType[] = []\n const tabsChildren: typeof children[] = []\n let matchedHrefIndex: number | undefined = undefined\n React.Children.forEach(children, (child, index) => {\n if (isTabComponent(child)) {\n const { children: tabChildren, ...tabProps } = child.props\n tabsPropsArray.push(tabProps)\n // if no children, it will be null, nothing will be rendered\n tabsChildren.push(tabChildren)\n if (tabProps.href === window.location.pathname) {\n matchedHrefIndex = index\n }\n }\n })\n\n const scrollTabs = (scrollAmount: number) => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n const computedScrollLeft = labelListRef.current.scrollLeft + scrollAmount\n let newScrollLeft = computedScrollLeft\n\n // not scrolled at all\n if (computedScrollLeft <= 0) {\n newScrollButtonStates.prev = false\n newScrollLeft = 0\n }\n // scrolled at maximum\n if (scrollDistance && computedScrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n newScrollLeft = scrollDistance\n }\n\n setScrollButtonsEnabled(newScrollButtonStates)\n scrollLeftSpringRef.start({\n springScrollLeft: newScrollLeft,\n immediate: false,\n })\n }\n }\n const onScrollPrev = useCallback(\n () => scrollTabs(-SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n const onScrollNext = useCallback(\n () => scrollTabs(SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n\n const isScrollable = !!scrollDistance\n\n const handleWheel = throttle(() => {\n if (labelListRef?.current) {\n updateScrollButtonsState()\n // Don't animate\n scrollLeftSpringRef.set({\n springScrollLeft: labelListRef.current.scrollLeft,\n })\n }\n }, 300)\n\n return (\n <ReachTabs\n className=\"cobalt-tabs\"\n defaultIndex={matchedHrefIndex || defaultTabIndex}\n onChange={onChange}\n >\n <ReachTabList\n className={cx(\"cobalt-tabs__labels\", {\n \"cobalt-tabs__labels--scrollable\": isScrollable,\n \"cobalt-tabs__labels--subLevel\": subLevel,\n })}\n onWheel={handleWheel}\n ref={labelListRef}\n >\n {tabsPropsArray.map((props, index) => (\n <InternalTab key={index} href={props.href}>\n {props.label}\n </InternalTab>\n ))}\n </ReachTabList>\n {isScrollable && (\n <>\n <button\n className=\"cobalt-tabs__nav-prev\"\n onClick={onScrollPrev}\n disabled={!scrollButtonsEnabled.prev}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <Icon source=\"chevronLeft\" color=\"indigo\" />\n </span>\n </button>\n <button\n className=\"cobalt-tabs__nav-next\"\n onClick={onScrollNext}\n disabled={!scrollButtonsEnabled.next}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <Icon source=\"chevronRight\" color=\"indigo\" />\n </span>\n </button>\n </>\n )}\n {!!tabsChildren.length && (\n <ReachTabPanels>\n {tabsChildren.map((tabChildren, index) => (\n <ReachTabPanel className=\"cobalt-tabs__panel\" key={index}>\n {tabChildren}\n </ReachTabPanel>\n ))}\n </ReachTabPanels>\n )}\n </ReachTabs>\n )\n}\nTabs.Tab = Tab\nTabs.displayName = \"Tabs\"\n\nexport default Tabs\n"],"names":["ReachTab","ReachTabs","ReachTabList","ReachTabPanels","ReachTabPanel"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Tag/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\n\nexport interface TagProps {\n children: React.ReactNode\n variant?: \"muted\" | \"important\"\n}\n\nexport const Tag = ({ children, variant }: TagProps) => (\n <div\n className={cx(\"cobalt-Tag\", {\n \"cobalt-Tag--muted\": variant === \"muted\",\n \"cobalt-Tag--important\": variant === \"important\",\n })}\n >\n {children}\n </div>\n)\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Tag/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\n\nexport interface TagProps {\n children: React.ReactNode\n variant?: \"muted\" | \"important\"\n}\n\nexport const Tag = ({ children, variant }: TagProps) => (\n <div\n className={cx(\"cobalt-Tag\", {\n \"cobalt-Tag--muted\": variant === \"muted\",\n \"cobalt-Tag--important\": variant === \"important\",\n })}\n >\n {children}\n </div>\n)\n"],"names":[],"mappings":";;;AAQO,IAAM,GAAG,GAAG,UAAC,EAA+B,EAAA;QAA7B,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;AAAiB,IAAA,QACtD,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE;YAC1B,mBAAmB,EAAE,OAAO,KAAK,OAAO;YACxC,uBAAuB,EAAE,OAAO,KAAK,WAAW;SACjD,CAAC,EAAA,EAED,QAAQ,CACL,EACP;AATuD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/TextContainer/index.tsx"],"sourcesContent":["import React from \"react\"\n\nexport interface TextContainer {\n children: React.ReactNode\n}\n\nexport const TextContainer = ({ children }: TextContainer) => (\n <div className=\"cobalt-TextContainer\">{children}</div>\n)\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/TextContainer/index.tsx"],"sourcesContent":["import React from \"react\"\n\nexport interface TextContainer {\n children: React.ReactNode\n}\n\nexport const TextContainer = ({ children }: TextContainer) => (\n <div className=\"cobalt-TextContainer\">{children}</div>\n)\n"],"names":[],"mappings":";;AAMO,IAAM,aAAa,GAAG,UAAC,EAA2B,EAAA;AAAzB,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;IAAsB,QAC5D,6BAAK,SAAS,EAAC,sBAAsB,EAAE,EAAA,QAAQ,CAAO,EACvD;AAF6D;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sources":["../../../src/components/utils/Timer.ts"],"sourcesContent":["/**\n * Timer object enhancing setTimeout with start, pause, resume features *\n */\nclass Timer {\n private timerID?: number\n private start?: number\n private remaining: number\n private callback: (...args: any) => any\n\n constructor(callback: (...args: any) => any, delay: number) {\n this.remaining = delay\n this.callback = callback\n }\n\n pause = () => {\n if (this.start) {\n window.clearTimeout(this.timerID)\n this.remaining -= Number(new Date()) - this.start\n }\n }\n\n run = () => {\n this.start = Number(new Date())\n if (this.timerID) window.clearTimeout(this.timerID)\n this.timerID = window.setTimeout(this.callback, this.remaining)\n }\n}\n\nexport default Timer\n"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Timer.js","sources":["../../../src/components/utils/Timer.ts"],"sourcesContent":["/**\n * Timer object enhancing setTimeout with start, pause, resume features *\n */\nclass Timer {\n private timerID?: number\n private start?: number\n private remaining: number\n private callback: (...args: any) => any\n\n constructor(callback: (...args: any) => any, delay: number) {\n this.remaining = delay\n this.callback = callback\n }\n\n pause = () => {\n if (this.start) {\n window.clearTimeout(this.timerID)\n this.remaining -= Number(new Date()) - this.start\n }\n }\n\n run = () => {\n this.start = Number(new Date())\n if (this.timerID) window.clearTimeout(this.timerID)\n this.timerID = window.setTimeout(this.callback, this.remaining)\n }\n}\n\nexport default Timer\n"],"names":[],"mappings":"AAAA;;AAEG;AACH,IAAA,KAAA,kBAAA,YAAA;IAME,SAAY,KAAA,CAAA,QAA+B,EAAE,KAAa,EAAA;QAA1D,IAGC,KAAA,GAAA,IAAA,CAAA;AAED,QAAA,IAAA,CAAA,KAAK,GAAG,YAAA;YACN,IAAI,KAAI,CAAC,KAAK,EAAE;AACd,gBAAA,MAAM,CAAC,YAAY,CAAC,KAAI,CAAC,OAAO,CAAC,CAAA;AACjC,gBAAA,KAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,KAAI,CAAC,KAAK,CAAA;AAClD,aAAA;AACH,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,GAAG,GAAG,YAAA;YACJ,KAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;YAC/B,IAAI,KAAI,CAAC,OAAO;AAAE,gBAAA,MAAM,CAAC,YAAY,CAAC,KAAI,CAAC,OAAO,CAAC,CAAA;AACnD,YAAA,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAI,CAAC,QAAQ,EAAE,KAAI,CAAC,SAAS,CAAC,CAAA;AACjE,SAAC,CAAA;AAfC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;KACzB;IAcH,OAAC,KAAA,CAAA;AAAD,CAAC,EAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capitalize.js","sources":["../../../src/components/utils/capitalize.ts"],"sourcesContent":["function capitalize(s: string | undefined): string {\n if (typeof s !== \"string\") return \"\"\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport default capitalize\n"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,CAAqB;IACvC,IAAI,OAAO,CAAC,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"capitalize.js","sources":["../../../src/components/utils/capitalize.ts"],"sourcesContent":["function capitalize(s: string | undefined): string {\n if (typeof s !== \"string\") return \"\"\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n\nexport default capitalize\n"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,CAAqB,EAAA;IACvC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,EAAE,CAAA;AACpC,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC/C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sources":["../../../src/components/utils/dom.ts"],"sourcesContent":["export function getScrollbarWidth() {\n const documentWidth = document.documentElement.clientWidth\n const windowWidth = window.innerWidth\n return windowWidth - documentWidth\n}\n"],"names":[],"mappings":"SAAgB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"dom.js","sources":["../../../src/components/utils/dom.ts"],"sourcesContent":["export function getScrollbarWidth() {\n const documentWidth = document.documentElement.clientWidth\n const windowWidth = window.innerWidth\n return windowWidth - documentWidth\n}\n"],"names":[],"mappings":"SAAgB,iBAAiB,GAAA;AAC/B,IAAA,IAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAA;AAC1D,IAAA,IAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAA;IACrC,OAAO,WAAW,GAAG,aAAa,CAAA;AACpC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eqSet.js","sources":["../../../src/components/utils/eqSet.ts"],"sourcesContent":["function eqSet<T = any>(a: Set<T>, b: Set<T>) {\n if (a.size !== b.size) return false\n for (const v of a) if (!b.has(v)) return false\n return true\n}\n\nexport default eqSet\n"],"names":[],"mappings":";;AAAA,SAAS,KAAK,CAAU,CAAS,EAAE,CAAS;;
|
|
1
|
+
{"version":3,"file":"eqSet.js","sources":["../../../src/components/utils/eqSet.ts"],"sourcesContent":["function eqSet<T = any>(a: Set<T>, b: Set<T>) {\n if (a.size !== b.size) return false\n for (const v of a) if (!b.has(v)) return false\n return true\n}\n\nexport default eqSet\n"],"names":[],"mappings":";;AAAA,SAAS,KAAK,CAAU,CAAS,EAAE,CAAS,EAAA;;AAC1C,IAAA,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK,CAAA;;AACnC,QAAA,KAAgB,IAAA,GAAA,GAAA,QAAA,CAAA,CAAC,CAAA,EAAA,KAAA,GAAA,GAAA,CAAA,IAAA,EAAA,EAAA,CAAA,KAAA,CAAA,IAAA,EAAA,KAAA,GAAA,GAAA,CAAA,IAAA,EAAA,EAAA;AAAZ,YAAA,IAAM,CAAC,GAAA,KAAA,CAAA,KAAA,CAAA;AAAO,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAA;AAAA,SAAA;;;;;;;;;AAC9C,IAAA,OAAO,IAAI,CAAA;AACb;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"px.js","sources":["../../../src/components/utils/px.ts"],"sourcesContent":["const DEFAULT_FONT_SIZE = 16\n\nexport const remToPx = (rem: number) => rem * DEFAULT_FONT_SIZE\n"],"names":[],"mappings":"AAAA,IAAM,iBAAiB,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"px.js","sources":["../../../src/components/utils/px.ts"],"sourcesContent":["const DEFAULT_FONT_SIZE = 16\n\nexport const remToPx = (rem: number) => rem * DEFAULT_FONT_SIZE\n"],"names":[],"mappings":"AAAA,IAAM,iBAAiB,GAAG,EAAE,CAAA;AAErB,IAAM,OAAO,GAAG,UAAC,GAAW,EAAK,EAAA,OAAA,GAAG,GAAG,iBAAiB,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateFile.js","sources":["../../../src/components/utils/validateFile.ts"],"sourcesContent":["import typer from \"media-typer\"\n\nconst MIME_SUBTYPE_TO_EXTENSION: Record<string, string> = {\n gif: \"gif\",\n jpeg: \"jpg\",\n pdf: \"pdf\",\n png: \"png\",\n zip: \"zip\",\n csv: \"csv\",\n}\n\nconst getFileSignature = (blob: Blob): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n try {\n const fileReader: FileReader = new FileReader()\n fileReader.onloadend = (_e: Event) => {\n let header = \"\"\n const result: ArrayBuffer = fileReader.result as ArrayBuffer\n const arr = new Uint8Array(result)\n\n for (let i = 0; i < arr.length; i++) {\n header += arr[i].toString(16)\n }\n resolve(header)\n }\n fileReader.readAsArrayBuffer(blob.slice(0, 4))\n } catch (e) {\n reject(e)\n }\n })\n}\n\nconst getMimetypeFromSignature = (signature: string): string | null => {\n switch (signature.toUpperCase()) {\n case \"89504E47\":\n return \"image/png\"\n case \"47494638\":\n return \"image/gif\"\n case \"25504446\":\n return \"application/pdf\"\n case \"FFD8FFDB\":\n case \"FFD8FFEE\":\n case \"FFD8FFE0\":\n case \"FFD8FFE1\":\n case \"FFD8FFE2\":\n case \"FFD8FFE3\":\n case \"FFD8FFE8\":\n return \"image/jpeg\"\n case \"504B0304\":\n return \"application/zip\"\n default:\n return null\n }\n}\n\nconst getMimeType = (file: Blob): Promise<string | null> => {\n return new Promise((resolve, reject) => {\n getFileSignature(file).then(\n (signature) => {\n resolve(getMimetypeFromSignature(signature))\n },\n (error) => {\n reject(error)\n }\n )\n })\n}\n\nconst getFileExtensionFromFileName = (fileName: string): string | null => {\n const fileTypeFromFileNameRegExp = new RegExp(`(\\\\.)(.+)$`, \"i\")\n\n const fromName = fileTypeFromFileNameRegExp.exec(fileName)\n if (fromName && fromName.length > 1 && fromName[2]) {\n return fromName[2]\n }\n\n return null\n}\n\nconst getFileExtensionFromMimeType = (mimeType: string): string | null => {\n try {\n const type = typer.parse(mimeType).subtype\n return MIME_SUBTYPE_TO_EXTENSION[type] || null\n } catch (_e) {\n return null\n }\n}\n\n// If this function\n// - return falsy => the file is correct, file process will abort\n// - return true => the file is valid to continue the file process\nexport const validateFile = async (\n file: File,\n fileTypeValidator: (\n file: File,\n extension: string | null\n ) => boolean | undefined | null\n) => {\n const mimeType = await getMimeType(file)\n const extension =\n (mimeType && getFileExtensionFromMimeType(mimeType)) ||\n getFileExtensionFromMimeType(file.type) ||\n getFileExtensionFromFileName(file.name)\n\n return fileTypeValidator(file, extension)\n}\n"],"names":[],"mappings":";;;AAEA,IAAM,yBAAyB,GAA2B;
|
|
1
|
+
{"version":3,"file":"validateFile.js","sources":["../../../src/components/utils/validateFile.ts"],"sourcesContent":["import typer from \"media-typer\"\n\nconst MIME_SUBTYPE_TO_EXTENSION: Record<string, string> = {\n gif: \"gif\",\n jpeg: \"jpg\",\n pdf: \"pdf\",\n png: \"png\",\n zip: \"zip\",\n csv: \"csv\",\n}\n\nconst getFileSignature = (blob: Blob): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n try {\n const fileReader: FileReader = new FileReader()\n fileReader.onloadend = (_e: Event) => {\n let header = \"\"\n const result: ArrayBuffer = fileReader.result as ArrayBuffer\n const arr = new Uint8Array(result)\n\n for (let i = 0; i < arr.length; i++) {\n header += arr[i].toString(16)\n }\n resolve(header)\n }\n fileReader.readAsArrayBuffer(blob.slice(0, 4))\n } catch (e) {\n reject(e)\n }\n })\n}\n\nconst getMimetypeFromSignature = (signature: string): string | null => {\n switch (signature.toUpperCase()) {\n case \"89504E47\":\n return \"image/png\"\n case \"47494638\":\n return \"image/gif\"\n case \"25504446\":\n return \"application/pdf\"\n case \"FFD8FFDB\":\n case \"FFD8FFEE\":\n case \"FFD8FFE0\":\n case \"FFD8FFE1\":\n case \"FFD8FFE2\":\n case \"FFD8FFE3\":\n case \"FFD8FFE8\":\n return \"image/jpeg\"\n case \"504B0304\":\n return \"application/zip\"\n default:\n return null\n }\n}\n\nconst getMimeType = (file: Blob): Promise<string | null> => {\n return new Promise((resolve, reject) => {\n getFileSignature(file).then(\n (signature) => {\n resolve(getMimetypeFromSignature(signature))\n },\n (error) => {\n reject(error)\n }\n )\n })\n}\n\nconst getFileExtensionFromFileName = (fileName: string): string | null => {\n const fileTypeFromFileNameRegExp = new RegExp(`(\\\\.)(.+)$`, \"i\")\n\n const fromName = fileTypeFromFileNameRegExp.exec(fileName)\n if (fromName && fromName.length > 1 && fromName[2]) {\n return fromName[2]\n }\n\n return null\n}\n\nconst getFileExtensionFromMimeType = (mimeType: string): string | null => {\n try {\n const type = typer.parse(mimeType).subtype\n return MIME_SUBTYPE_TO_EXTENSION[type] || null\n } catch (_e) {\n return null\n }\n}\n\n// If this function\n// - return falsy => the file is correct, file process will abort\n// - return true => the file is valid to continue the file process\nexport const validateFile = async (\n file: File,\n fileTypeValidator: (\n file: File,\n extension: string | null\n ) => boolean | undefined | null\n) => {\n const mimeType = await getMimeType(file)\n const extension =\n (mimeType && getFileExtensionFromMimeType(mimeType)) ||\n getFileExtensionFromMimeType(file.type) ||\n getFileExtensionFromFileName(file.name)\n\n return fileTypeValidator(file, extension)\n}\n"],"names":[],"mappings":"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"}
|