@dropins/tools 0.21.1 → 0.21.2-alpha2
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/components/Accordion/Accordion.d.ts +25 -0
- package/components/Accordion/Accordion.d.ts.map +1 -0
- package/components/Accordion/Accordion.jsx +59 -0
- package/components/Accordion/Accordion.stories.d.ts +22 -0
- package/components/Accordion/Accordion.stories.d.ts.map +1 -0
- package/components/Accordion/Accordion.stories.jsx +320 -0
- package/components/Accordion/Accordion.test.d.ts +3 -0
- package/components/Accordion/Accordion.test.d.ts.map +1 -0
- package/components/Accordion/Accordion.test.jsx +79 -0
- package/components/Accordion/index.d.ts +3 -0
- package/components/Accordion/index.d.ts.map +1 -0
- package/components/Accordion/index.js +2 -0
- package/components/ActionButton/ActionButton.d.ts +11 -0
- package/components/ActionButton/ActionButton.d.ts.map +1 -0
- package/components/ActionButton/ActionButton.jsx +14 -0
- package/components/ActionButton/ActionButton.stories.d.ts +16 -0
- package/components/ActionButton/ActionButton.stories.d.ts.map +1 -0
- package/components/ActionButton/ActionButton.stories.jsx +119 -0
- package/components/ActionButton/ActionButton.test.d.ts +3 -0
- package/components/ActionButton/ActionButton.test.d.ts.map +1 -0
- package/components/ActionButton/ActionButton.test.jsx +47 -0
- package/components/ActionButton/index.d.ts +2 -0
- package/components/ActionButton/index.d.ts.map +1 -0
- package/components/ActionButton/index.js +1 -0
- package/components/ActionButtonGroup/ActionButtonGroup.d.ts +20 -0
- package/components/ActionButtonGroup/ActionButtonGroup.d.ts.map +1 -0
- package/components/ActionButtonGroup/ActionButtonGroup.jsx +39 -0
- package/components/ActionButtonGroup/ActionButtonGroup.stories.d.ts +16 -0
- package/components/ActionButtonGroup/ActionButtonGroup.stories.d.ts.map +1 -0
- package/components/ActionButtonGroup/ActionButtonGroup.stories.jsx +72 -0
- package/components/ActionButtonGroup/ActionButtonGroup.test.d.ts +3 -0
- package/components/ActionButtonGroup/ActionButtonGroup.test.d.ts.map +1 -0
- package/components/ActionButtonGroup/ActionButtonGroup.test.jsx +78 -0
- package/components/ActionButtonGroup/index.d.ts +2 -0
- package/components/ActionButtonGroup/index.d.ts.map +1 -0
- package/components/ActionButtonGroup/index.js +1 -0
- package/components/AlertBanner/AlertBanner.d.ts +15 -0
- package/components/AlertBanner/AlertBanner.d.ts.map +1 -0
- package/components/AlertBanner/AlertBanner.jsx +30 -0
- package/components/AlertBanner/AlertBanner.stories.d.ts +17 -0
- package/components/AlertBanner/AlertBanner.stories.d.ts.map +1 -0
- package/components/AlertBanner/AlertBanner.stories.jsx +128 -0
- package/components/AlertBanner/AlertBanner.test.d.ts +3 -0
- package/components/AlertBanner/AlertBanner.test.d.ts.map +1 -0
- package/components/AlertBanner/AlertBanner.test.jsx +40 -0
- package/components/AlertBanner/index.d.ts +3 -0
- package/components/AlertBanner/index.d.ts.map +1 -0
- package/components/AlertBanner/index.js +2 -0
- package/components/Breadcrumbs/Breadcrumbs.d.ts +9 -0
- package/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/components/Breadcrumbs/Breadcrumbs.jsx +26 -0
- package/components/Breadcrumbs/Breadcrumbs.stories.d.ts +15 -0
- package/components/Breadcrumbs/Breadcrumbs.stories.d.ts.map +1 -0
- package/components/Breadcrumbs/Breadcrumbs.stories.jsx +110 -0
- package/components/Breadcrumbs/Breadcrumbs.test.d.ts +3 -0
- package/components/Breadcrumbs/Breadcrumbs.test.d.ts.map +1 -0
- package/components/Breadcrumbs/Breadcrumbs.test.jsx +67 -0
- package/components/Breadcrumbs/index.d.ts +3 -0
- package/components/Breadcrumbs/index.d.ts.map +1 -0
- package/components/Breadcrumbs/index.js +2 -0
- package/components/Button/Button.d.ts +15 -0
- package/components/Button/Button.d.ts.map +1 -0
- package/components/Button/Button.jsx +59 -0
- package/components/Button/Button.stories.d.ts +135 -0
- package/components/Button/Button.stories.d.ts.map +1 -0
- package/components/Button/Button.stories.jsx +354 -0
- package/components/Button/Button.test.d.ts +2 -0
- package/components/Button/Button.test.d.ts.map +1 -0
- package/components/Button/Button.test.jsx +134 -0
- package/components/Button/index.d.ts +3 -0
- package/components/Button/index.d.ts.map +1 -0
- package/components/Button/index.js +2 -0
- package/components/Card/Card.d.ts +9 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/Card.jsx +7 -0
- package/components/Card/Card.stories.d.ts +16 -0
- package/components/Card/Card.stories.d.ts.map +1 -0
- package/components/Card/Card.stories.jsx +47 -0
- package/components/Card/Card.test.d.ts +3 -0
- package/components/Card/Card.test.d.ts.map +1 -0
- package/components/Card/Card.test.jsx +26 -0
- package/components/Card/index.d.ts +2 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +1 -0
- package/components/CartItem/CartItem.d.ts +25 -0
- package/components/CartItem/CartItem.d.ts.map +1 -0
- package/components/CartItem/CartItem.jsx +124 -0
- package/components/CartItem/CartItem.stories.d.ts +54 -0
- package/components/CartItem/CartItem.stories.d.ts.map +1 -0
- package/components/CartItem/CartItem.stories.jsx +309 -0
- package/components/CartItem/CartItem.test.d.ts +3 -0
- package/components/CartItem/CartItem.test.d.ts.map +1 -0
- package/components/CartItem/CartItem.test.jsx +71 -0
- package/components/CartItem/CartItemSkeleton.d.ts +3 -0
- package/components/CartItem/CartItemSkeleton.d.ts.map +1 -0
- package/components/CartItem/CartItemSkeleton.jsx +25 -0
- package/components/CartItem/CartItemSkeleton.test.d.ts +3 -0
- package/components/CartItem/CartItemSkeleton.test.d.ts.map +1 -0
- package/components/CartItem/CartItemSkeleton.test.jsx +11 -0
- package/components/CartItem/index.d.ts +4 -0
- package/components/CartItem/index.d.ts.map +1 -0
- package/components/CartItem/index.js +3 -0
- package/components/CartList/CartList.d.ts +7 -0
- package/components/CartList/CartList.d.ts.map +1 -0
- package/components/CartList/CartList.jsx +14 -0
- package/components/CartList/CartList.stories.d.ts +17 -0
- package/components/CartList/CartList.stories.d.ts.map +1 -0
- package/components/CartList/CartList.stories.jsx +54 -0
- package/components/CartList/CartList.test.d.ts +3 -0
- package/components/CartList/CartList.test.d.ts.map +1 -0
- package/components/CartList/CartList.test.jsx +12 -0
- package/components/CartList/index.d.ts +3 -0
- package/components/CartList/index.d.ts.map +1 -0
- package/components/CartList/index.js +2 -0
- package/components/Checkbox/Checkbox.d.ts +13 -0
- package/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/components/Checkbox/Checkbox.jsx +51 -0
- package/components/Checkbox/Checkbox.stories.d.ts +22 -0
- package/components/Checkbox/Checkbox.stories.d.ts.map +1 -0
- package/components/Checkbox/Checkbox.stories.jsx +157 -0
- package/components/Checkbox/Checkbox.test.d.ts +3 -0
- package/components/Checkbox/Checkbox.test.d.ts.map +1 -0
- package/components/Checkbox/Checkbox.test.jsx +136 -0
- package/components/Checkbox/index.d.ts +2 -0
- package/components/Checkbox/index.d.ts.map +1 -0
- package/components/Checkbox/index.js +1 -0
- package/components/ColorSwatch/ColorSwatch.d.ts +20 -0
- package/components/ColorSwatch/ColorSwatch.d.ts.map +1 -0
- package/components/ColorSwatch/ColorSwatch.jsx +57 -0
- package/components/ColorSwatch/ColorSwatch.stories.d.ts +20 -0
- package/components/ColorSwatch/ColorSwatch.stories.d.ts.map +1 -0
- package/components/ColorSwatch/ColorSwatch.stories.jsx +206 -0
- package/components/ColorSwatch/ColorSwatch.test.d.ts +3 -0
- package/components/ColorSwatch/ColorSwatch.test.d.ts.map +1 -0
- package/components/ColorSwatch/ColorSwatch.test.jsx +87 -0
- package/components/ColorSwatch/index.d.ts +3 -0
- package/components/ColorSwatch/index.d.ts.map +1 -0
- package/components/ColorSwatch/index.js +2 -0
- package/components/Divider/Divider.d.ts +8 -0
- package/components/Divider/Divider.d.ts.map +1 -0
- package/components/Divider/Divider.jsx +9 -0
- package/components/Divider/Divider.stories.d.ts +11 -0
- package/components/Divider/Divider.stories.d.ts.map +1 -0
- package/components/Divider/Divider.stories.jsx +43 -0
- package/components/Divider/Divider.test.d.ts +2 -0
- package/components/Divider/Divider.test.d.ts.map +1 -0
- package/components/Divider/Divider.test.jsx +19 -0
- package/components/Divider/index.d.ts +3 -0
- package/components/Divider/index.d.ts.map +1 -0
- package/components/Divider/index.js +2 -0
- package/components/Field/Field.d.ts +14 -0
- package/components/Field/Field.d.ts.map +1 -0
- package/components/Field/Field.jsx +29 -0
- package/components/Field/Field.stories.d.ts +37 -0
- package/components/Field/Field.stories.d.ts.map +1 -0
- package/components/Field/Field.stories.jsx +174 -0
- package/components/Field/Field.test.d.ts +3 -0
- package/components/Field/Field.test.d.ts.map +1 -0
- package/components/Field/Field.test.jsx +91 -0
- package/components/Field/index.d.ts +2 -0
- package/components/Field/index.d.ts.map +1 -0
- package/components/Field/index.js +1 -0
- package/components/Icon/Icon.d.ts +11 -0
- package/components/Icon/Icon.d.ts.map +1 -0
- package/components/Icon/Icon.jsx +57 -0
- package/components/Icon/Icon.stories.d.ts +16 -0
- package/components/Icon/Icon.stories.d.ts.map +1 -0
- package/components/Icon/Icon.stories.helpers.d.ts +4 -0
- package/components/Icon/Icon.stories.helpers.d.ts.map +1 -0
- package/components/Icon/Icon.stories.helpers.jsx +7 -0
- package/components/Icon/Icon.stories.jsx +48 -0
- package/components/Icon/Icon.test.d.ts +3 -0
- package/components/Icon/Icon.test.d.ts.map +1 -0
- package/components/Icon/Icon.test.jsx +67 -0
- package/components/Icon/index.d.ts +2 -0
- package/components/Icon/index.d.ts.map +1 -0
- package/components/Icon/index.js +1 -0
- package/components/IllustratedMessage/IllustratedMessage.d.ts +13 -0
- package/components/IllustratedMessage/IllustratedMessage.d.ts.map +1 -0
- package/components/IllustratedMessage/IllustratedMessage.jsx +21 -0
- package/components/IllustratedMessage/IllustratedMessage.stories.d.ts +10 -0
- package/components/IllustratedMessage/IllustratedMessage.stories.d.ts.map +1 -0
- package/components/IllustratedMessage/IllustratedMessage.stories.jsx +90 -0
- package/components/IllustratedMessage/IllustratedMessage.test.d.ts +3 -0
- package/components/IllustratedMessage/IllustratedMessage.test.d.ts.map +1 -0
- package/components/IllustratedMessage/IllustratedMessage.test.jsx +42 -0
- package/components/IllustratedMessage/index.d.ts +3 -0
- package/components/IllustratedMessage/index.d.ts.map +1 -0
- package/components/IllustratedMessage/index.js +2 -0
- package/components/Image/Image.d.ts +11 -0
- package/components/Image/Image.d.ts.map +1 -0
- package/components/Image/Image.jsx +26 -0
- package/components/Image/Image.stories.d.ts +11 -0
- package/components/Image/Image.stories.d.ts.map +1 -0
- package/components/Image/Image.stories.jsx +66 -0
- package/components/Image/Image.test.d.ts +3 -0
- package/components/Image/Image.test.d.ts.map +1 -0
- package/components/Image/Image.test.jsx +82 -0
- package/components/Image/index.d.ts +2 -0
- package/components/Image/index.d.ts.map +1 -0
- package/components/Image/index.js +1 -0
- package/components/ImageSwatch/ImageSwatch.d.ts +20 -0
- package/components/ImageSwatch/ImageSwatch.d.ts.map +1 -0
- package/components/ImageSwatch/ImageSwatch.jsx +49 -0
- package/components/ImageSwatch/ImageSwatch.stories.d.ts +20 -0
- package/components/ImageSwatch/ImageSwatch.stories.d.ts.map +1 -0
- package/components/ImageSwatch/ImageSwatch.stories.jsx +206 -0
- package/components/ImageSwatch/ImageSwatch.test.d.ts +3 -0
- package/components/ImageSwatch/ImageSwatch.test.d.ts.map +1 -0
- package/components/ImageSwatch/ImageSwatch.test.jsx +64 -0
- package/components/ImageSwatch/index.d.ts +3 -0
- package/components/ImageSwatch/index.d.ts.map +1 -0
- package/components/ImageSwatch/index.js +2 -0
- package/components/InLineAlert/InLineAlert.d.ts +16 -0
- package/components/InLineAlert/InLineAlert.d.ts.map +1 -0
- package/components/InLineAlert/InLineAlert.jsx +38 -0
- package/components/InLineAlert/InLineAlert.stories.d.ts +86 -0
- package/components/InLineAlert/InLineAlert.stories.d.ts.map +1 -0
- package/components/InLineAlert/InLineAlert.stories.jsx +193 -0
- package/components/InLineAlert/InLineAlert.test.d.ts +3 -0
- package/components/InLineAlert/InLineAlert.test.d.ts.map +1 -0
- package/components/InLineAlert/InLineAlert.test.jsx +77 -0
- package/components/InLineAlert/index.d.ts +3 -0
- package/components/InLineAlert/index.d.ts.map +1 -0
- package/components/InLineAlert/index.js +2 -0
- package/components/Incrementer/Incrementer.d.ts +17 -0
- package/components/Incrementer/Incrementer.d.ts.map +1 -0
- package/components/Incrementer/Incrementer.jsx +87 -0
- package/components/Incrementer/Incrementer.stories.d.ts +10 -0
- package/components/Incrementer/Incrementer.stories.d.ts.map +1 -0
- package/components/Incrementer/Incrementer.stories.jsx +68 -0
- package/components/Incrementer/Incrementer.test.d.ts +3 -0
- package/components/Incrementer/Incrementer.test.d.ts.map +1 -0
- package/components/Incrementer/Incrementer.test.jsx +112 -0
- package/components/Incrementer/index.d.ts +2 -0
- package/components/Incrementer/index.d.ts.map +1 -0
- package/components/Incrementer/index.js +1 -0
- package/components/Input/Input.d.ts +19 -0
- package/components/Input/Input.d.ts.map +1 -0
- package/components/Input/Input.jsx +73 -0
- package/components/Input/Input.stories.d.ts +11 -0
- package/components/Input/Input.stories.d.ts.map +1 -0
- package/components/Input/Input.stories.jsx +115 -0
- package/components/Input/Input.test.d.ts +3 -0
- package/components/Input/Input.test.d.ts.map +1 -0
- package/components/Input/Input.test.jsx +111 -0
- package/components/Input/index.d.ts +3 -0
- package/components/Input/index.d.ts.map +1 -0
- package/components/Input/index.js +2 -0
- package/components/Modal/Modal.d.ts +15 -0
- package/components/Modal/Modal.d.ts.map +1 -0
- package/components/Modal/Modal.jsx +93 -0
- package/components/Modal/Modal.stories.d.ts +56 -0
- package/components/Modal/Modal.stories.d.ts.map +1 -0
- package/components/Modal/Modal.stories.jsx +189 -0
- package/components/Modal/Modal.test.d.ts +3 -0
- package/components/Modal/Modal.test.d.ts.map +1 -0
- package/components/Modal/Modal.test.jsx +85 -0
- package/components/Modal/index.d.ts +2 -0
- package/components/Modal/index.d.ts.map +1 -0
- package/components/Modal/index.js +14 -0
- package/components/Picker/Picker.d.ts +26 -0
- package/components/Picker/Picker.d.ts.map +1 -0
- package/components/Picker/Picker.jsx +81 -0
- package/components/Picker/Picker.stories.d.ts +22 -0
- package/components/Picker/Picker.stories.d.ts.map +1 -0
- package/components/Picker/Picker.stories.jsx +236 -0
- package/components/Picker/Picker.test.d.ts +2 -0
- package/components/Picker/Picker.test.d.ts.map +1 -0
- package/components/Picker/Picker.test.jsx +190 -0
- package/components/Picker/index.d.ts +2 -0
- package/components/Picker/index.d.ts.map +1 -0
- package/components/Picker/index.js +1 -0
- package/components/Price/Price.d.ts +17 -0
- package/components/Price/Price.d.ts.map +1 -0
- package/components/Price/Price.jsx +24 -0
- package/components/Price/Price.stories.d.ts +17 -0
- package/components/Price/Price.stories.d.ts.map +1 -0
- package/components/Price/Price.stories.jsx +78 -0
- package/components/Price/Price.test.d.ts +3 -0
- package/components/Price/Price.test.d.ts.map +1 -0
- package/components/Price/Price.test.jsx +68 -0
- package/components/Price/index.d.ts +2 -0
- package/components/Price/index.d.ts.map +1 -0
- package/components/Price/index.js +1 -0
- package/components/PriceRange/PriceRange.d.ts +17 -0
- package/components/PriceRange/PriceRange.d.ts.map +1 -0
- package/components/PriceRange/PriceRange.jsx +75 -0
- package/components/PriceRange/PriceRange.stories.d.ts +107 -0
- package/components/PriceRange/PriceRange.stories.d.ts.map +1 -0
- package/components/PriceRange/PriceRange.stories.jsx +210 -0
- package/components/PriceRange/PriceRange.test.d.ts +3 -0
- package/components/PriceRange/PriceRange.test.d.ts.map +1 -0
- package/components/PriceRange/PriceRange.test.jsx +188 -0
- package/components/PriceRange/index.d.ts +3 -0
- package/components/PriceRange/index.d.ts.map +1 -0
- package/components/PriceRange/index.js +2 -0
- package/components/PriceSummary/PriceSummary.d.ts +43 -0
- package/components/PriceSummary/PriceSummary.d.ts.map +1 -0
- package/components/PriceSummary/PriceSummary.jsx +228 -0
- package/components/PriceSummary/PriceSummary.stories.d.ts +127 -0
- package/components/PriceSummary/PriceSummary.stories.d.ts.map +1 -0
- package/components/PriceSummary/PriceSummary.stories.jsx +456 -0
- package/components/PriceSummary/PriceSummary.test.d.ts +3 -0
- package/components/PriceSummary/PriceSummary.test.d.ts.map +1 -0
- package/components/PriceSummary/PriceSummary.test.jsx +275 -0
- package/components/PriceSummary/index.d.ts +3 -0
- package/components/PriceSummary/index.d.ts.map +1 -0
- package/components/PriceSummary/index.js +2 -0
- package/components/ProgressSpinner/ProgressSpinner.d.ts +14 -0
- package/components/ProgressSpinner/ProgressSpinner.d.ts.map +1 -0
- package/components/ProgressSpinner/ProgressSpinner.jsx +31 -0
- package/components/ProgressSpinner/ProgressSpinner.stories.d.ts +19 -0
- package/components/ProgressSpinner/ProgressSpinner.stories.d.ts.map +1 -0
- package/components/ProgressSpinner/ProgressSpinner.stories.jsx +195 -0
- package/components/ProgressSpinner/ProgressSpinner.test.d.ts +3 -0
- package/components/ProgressSpinner/ProgressSpinner.test.d.ts.map +1 -0
- package/components/ProgressSpinner/ProgressSpinner.test.jsx +40 -0
- package/components/ProgressSpinner/index.d.ts +3 -0
- package/components/ProgressSpinner/index.d.ts.map +1 -0
- package/components/ProgressSpinner/index.js +2 -0
- package/components/RadioButton/RadioButton.d.ts +15 -0
- package/components/RadioButton/RadioButton.d.ts.map +1 -0
- package/components/RadioButton/RadioButton.jsx +31 -0
- package/components/RadioButton/RadioButton.stories.d.ts +15 -0
- package/components/RadioButton/RadioButton.stories.d.ts.map +1 -0
- package/components/RadioButton/RadioButton.stories.jsx +92 -0
- package/components/RadioButton/RadioButton.test.d.ts +3 -0
- package/components/RadioButton/RadioButton.test.d.ts.map +1 -0
- package/components/RadioButton/RadioButton.test.jsx +62 -0
- package/components/RadioButton/index.d.ts +3 -0
- package/components/RadioButton/index.d.ts.map +1 -0
- package/components/RadioButton/index.js +2 -0
- package/components/Skeleton/Skeleton.d.ts +17 -0
- package/components/Skeleton/Skeleton.d.ts.map +1 -0
- package/components/Skeleton/Skeleton.jsx +52 -0
- package/components/Skeleton/Skeleton.stories.d.ts +67 -0
- package/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
- package/components/Skeleton/Skeleton.stories.jsx +184 -0
- package/components/Skeleton/Skeleton.test.d.ts +3 -0
- package/components/Skeleton/Skeleton.test.d.ts.map +1 -0
- package/components/Skeleton/Skeleton.test.jsx +62 -0
- package/components/Skeleton/index.d.ts +2 -0
- package/components/Skeleton/index.d.ts.map +1 -0
- package/components/Skeleton/index.js +1 -0
- package/components/TextSwatch/TextSwatch.d.ts +18 -0
- package/components/TextSwatch/TextSwatch.d.ts.map +1 -0
- package/components/TextSwatch/TextSwatch.jsx +56 -0
- package/components/TextSwatch/TextSwatch.stories.d.ts +21 -0
- package/components/TextSwatch/TextSwatch.stories.d.ts.map +1 -0
- package/components/TextSwatch/TextSwatch.stories.jsx +211 -0
- package/components/TextSwatch/TextSwatch.test.d.ts +3 -0
- package/components/TextSwatch/TextSwatch.test.d.ts.map +1 -0
- package/components/TextSwatch/TextSwatch.test.jsx +85 -0
- package/components/TextSwatch/index.d.ts +3 -0
- package/components/TextSwatch/index.d.ts.map +1 -0
- package/components/TextSwatch/index.js +2 -0
- package/components/UIProvider/UIProvider.d.ts +18 -0
- package/components/UIProvider/UIProvider.d.ts.map +1 -0
- package/components/UIProvider/UIProvider.jsx +26 -0
- package/components/UIProvider/UIProvider.test.d.ts +2 -0
- package/components/UIProvider/UIProvider.test.d.ts.map +1 -0
- package/components/UIProvider/UIProvider.test.jsx +9 -0
- package/components/UIProvider/index.d.ts +2 -0
- package/components/UIProvider/index.d.ts.map +1 -0
- package/components/UIProvider/index.js +1 -0
- package/components/index.d.ts +34 -0
- package/components/index.d.ts.map +1 -0
- package/components/index.js +33 -0
- package/docs/Design/designBlocks.d.ts +21 -0
- package/docs/Design/designBlocks.d.ts.map +1 -0
- package/docs/Design/designBlocks.jsx +59 -0
- package/docs/Design/getTokenData.d.ts +7 -0
- package/docs/Design/getTokenData.d.ts.map +1 -0
- package/docs/Design/getTokenData.js +18 -0
- package/docs/Design/getTokenData.test.d.ts +2 -0
- package/docs/Design/getTokenData.test.d.ts.map +1 -0
- package/docs/Design/getTokenData.test.js +92 -0
- package/event-bus.js +49 -1
- package/fetch-graphql.js +62 -1
- package/i18n/en_US.json +112 -0
- package/i18n/index.d.ts +341 -0
- package/i18n/index.d.ts.map +1 -0
- package/i18n/index.js +12 -0
- package/i18n/index.test.d.ts +2 -0
- package/i18n/index.test.d.ts.map +1 -0
- package/i18n/index.test.js +11 -0
- package/icons/index.d.ts +35 -0
- package/icons/index.d.ts.map +1 -0
- package/icons/index.js +34 -0
- package/initializer.js +61 -1
- package/lib/classes.d.ts +5 -0
- package/lib/classes.d.ts.map +1 -0
- package/lib/classes.js +16 -0
- package/lib/classes.test.d.ts +2 -0
- package/lib/classes.test.d.ts.map +1 -0
- package/lib/classes.test.js +18 -0
- package/lib/config.d.ts +7 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +12 -0
- package/lib/config.test.d.ts +2 -0
- package/lib/config.test.d.ts.map +1 -0
- package/lib/config.test.js +12 -0
- package/lib/debounce.d.ts +2 -0
- package/lib/debounce.d.ts.map +1 -0
- package/lib/debounce.js +7 -0
- package/lib/debounce.test.d.ts +2 -0
- package/lib/debounce.test.d.ts.map +1 -0
- package/lib/debounce.test.js +40 -0
- package/lib/deepmerge.d.ts +2 -0
- package/lib/deepmerge.d.ts.map +1 -0
- package/lib/deepmerge.js +1 -0
- package/lib/form-values.d.ts +5 -0
- package/lib/form-values.d.ts.map +1 -0
- package/lib/form-values.js +17 -0
- package/lib/form-values.test.d.ts +2 -0
- package/lib/form-values.test.d.ts.map +1 -0
- package/lib/form-values.test.jsx +29 -0
- package/lib/i18n.d.ts +8 -0
- package/lib/i18n.d.ts.map +1 -0
- package/lib/i18n.js +9 -0
- package/lib/i18n.test.d.ts +2 -0
- package/lib/i18n.test.d.ts.map +1 -0
- package/lib/i18n.test.jsx +8 -0
- package/lib/image-params-keymap.d.ts +4 -0
- package/lib/image-params-keymap.d.ts.map +1 -0
- package/lib/image-params-keymap.js +19 -0
- package/lib/image-params-keymap.test.d.ts +2 -0
- package/lib/image-params-keymap.test.d.ts.map +1 -0
- package/lib/image-params-keymap.test.js +7 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +13 -0
- package/lib/initializer.d.ts +78 -0
- package/lib/initializer.d.ts.map +1 -0
- package/lib/initializer.js +93 -0
- package/lib/initializer.test.d.ts +2 -0
- package/lib/initializer.test.d.ts.map +1 -0
- package/lib/initializer.test.js +64 -0
- package/lib/render.d.ts +10 -0
- package/lib/render.d.ts.map +1 -0
- package/lib/render.jsx +34 -0
- package/lib/render.test.d.ts +2 -0
- package/lib/render.test.d.ts.map +1 -0
- package/lib/render.test.jsx +70 -0
- package/lib/resolve-image.d.ts +10 -0
- package/lib/resolve-image.d.ts.map +1 -0
- package/lib/resolve-image.js +57 -0
- package/lib/resolve-image.test.d.ts +2 -0
- package/lib/resolve-image.test.d.ts.map +1 -0
- package/lib/resolve-image.test.jsx +146 -0
- package/lib/slot.d.ts +43 -0
- package/lib/slot.d.ts.map +1 -0
- package/lib/slot.jsx +184 -0
- package/lib/slot.test.d.ts +2 -0
- package/lib/slot.test.d.ts.map +1 -0
- package/lib/slot.test.jsx +325 -0
- package/lib/tests.d.ts +4 -0
- package/lib/tests.d.ts.map +1 -0
- package/lib/tests.jsx +19 -0
- package/lib/tests.test.d.ts +2 -0
- package/lib/tests.test.d.ts.map +1 -0
- package/lib/tests.test.jsx +13 -0
- package/lib/types.d.ts +9 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +1 -0
- package/lib/vcomponent.d.ts +8 -0
- package/lib/vcomponent.d.ts.map +1 -0
- package/lib/vcomponent.jsx +27 -0
- package/lib/vcomponent.test.d.ts +2 -0
- package/lib/vcomponent.test.d.ts.map +1 -0
- package/lib/vcomponent.test.jsx +51 -0
- package/package.json +1 -1
- package/preact-compat.js +93 -1
- package/preact-hooks.js +40 -1
- package/preact-jsx-runtime.js +35 -1
- package/preact.js +21 -1
- package/runtime.js +69 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { debounce } from './debounce';
|
|
2
|
+
jest.useFakeTimers();
|
|
3
|
+
describe('debounce()', () => {
|
|
4
|
+
const mockCallback = jest.fn();
|
|
5
|
+
const debouncedFn = debounce(mockCallback, 500);
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
jest.clearAllMocks();
|
|
8
|
+
});
|
|
9
|
+
test('runs the callback', () => {
|
|
10
|
+
debouncedFn();
|
|
11
|
+
expect(mockCallback).not.toHaveBeenCalled();
|
|
12
|
+
jest.runAllTimers();
|
|
13
|
+
expect(mockCallback).toHaveBeenCalledTimes(1);
|
|
14
|
+
});
|
|
15
|
+
test('runs the callback after a set amount of time and not before', () => {
|
|
16
|
+
debouncedFn();
|
|
17
|
+
jest.advanceTimersByTime(250);
|
|
18
|
+
expect(mockCallback).not.toHaveBeenCalled();
|
|
19
|
+
jest.advanceTimersByTime(250);
|
|
20
|
+
expect(mockCallback).toHaveBeenCalledTimes(1);
|
|
21
|
+
});
|
|
22
|
+
test('does not run callback on multiple calls within a short period', () => {
|
|
23
|
+
// Initial call
|
|
24
|
+
debouncedFn();
|
|
25
|
+
jest.advanceTimersByTime(250);
|
|
26
|
+
expect(mockCallback).not.toHaveBeenCalled();
|
|
27
|
+
// Second call
|
|
28
|
+
debouncedFn();
|
|
29
|
+
jest.advanceTimersByTime(250);
|
|
30
|
+
expect(mockCallback).not.toHaveBeenCalled();
|
|
31
|
+
// Third call
|
|
32
|
+
debouncedFn();
|
|
33
|
+
jest.advanceTimersByTime(250);
|
|
34
|
+
expect(mockCallback).not.toHaveBeenCalled();
|
|
35
|
+
// Last call then exceed timeout - callback should only have been called once
|
|
36
|
+
debouncedFn();
|
|
37
|
+
jest.advanceTimersByTime(500);
|
|
38
|
+
expect(mockCallback).toHaveBeenCalledTimes(1);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepmerge.d.ts","sourceRoot":"","sources":["../../src/lib/deepmerge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
package/lib/deepmerge.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as deepmerge } from 'deepmerge';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-values.d.ts","sourceRoot":"","sources":["../../src/lib/form-values.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,SAAU,eAAe;;CAIlD,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,eAAe,OAelD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const getFormValues = (form) => {
|
|
2
|
+
const formData = new FormData(form);
|
|
3
|
+
const result = Object.fromEntries(formData);
|
|
4
|
+
return result;
|
|
5
|
+
};
|
|
6
|
+
export const getFormErrors = (form) => {
|
|
7
|
+
const formData = new FormData(form);
|
|
8
|
+
const data = Object.fromEntries(formData);
|
|
9
|
+
const result = Object.entries(data).reduce((result, [key]) => {
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
const field = form.elements[key];
|
|
12
|
+
return field?.validationMessage
|
|
13
|
+
? { ...result, [key]: field.validationMessage }
|
|
14
|
+
: { ...result };
|
|
15
|
+
}, {});
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-values.test.d.ts","sourceRoot":"","sources":["../../src/lib/form-values.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { render } from '@adobe/elsie/lib/tests';
|
|
2
|
+
import { getFormValues, getFormErrors } from './form-values';
|
|
3
|
+
describe('form-values()', () => {
|
|
4
|
+
test('getFormValues()', () => {
|
|
5
|
+
const { container } = render(<form>
|
|
6
|
+
<input name="foo" required value="Foo"/>
|
|
7
|
+
<input name="bar" required value="Bar"/>
|
|
8
|
+
</form>);
|
|
9
|
+
const formElement = container.querySelector('form');
|
|
10
|
+
const values = getFormValues(formElement);
|
|
11
|
+
expect(values).toEqual({ bar: 'Bar', foo: 'Foo' });
|
|
12
|
+
});
|
|
13
|
+
test('getFormErrors()', () => {
|
|
14
|
+
const { container } = render(<form>
|
|
15
|
+
<input name="foo" required value="Foo"/>
|
|
16
|
+
<input name="bar" required/>
|
|
17
|
+
<input name="age" type="number" value="uno"/>
|
|
18
|
+
<input name="website" type="url" value="url"/>
|
|
19
|
+
<input name="e-mail" type="email" value="email@"/>
|
|
20
|
+
</form>);
|
|
21
|
+
const formElement = container.querySelector('form');
|
|
22
|
+
const errors = getFormErrors(formElement);
|
|
23
|
+
expect(errors).toEqual({
|
|
24
|
+
bar: 'Constraints not satisfied',
|
|
25
|
+
website: 'Constraints not satisfied',
|
|
26
|
+
'e-mail': 'Constraints not satisfied',
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
package/lib/i18n.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert locale from Magento standard to react-intl BCP 47 language tag
|
|
3
|
+
*
|
|
4
|
+
* @param {string} locale - A locale (e.g. `fr_FR`).
|
|
5
|
+
* @returns {string} A BCP 47 language tag (e.g. `fr-FR`).
|
|
6
|
+
*/
|
|
7
|
+
export declare const toLanguageTag: (locale: string) => string;
|
|
8
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/lib/i18n.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAAY,MAAM,WAE3C,CAAC"}
|
package/lib/i18n.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert locale from Magento standard to react-intl BCP 47 language tag
|
|
3
|
+
*
|
|
4
|
+
* @param {string} locale - A locale (e.g. `fr_FR`).
|
|
5
|
+
* @returns {string} A BCP 47 language tag (e.g. `fr-FR`).
|
|
6
|
+
*/
|
|
7
|
+
export const toLanguageTag = (locale) => {
|
|
8
|
+
return locale.replace('_', '-');
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.test.d.ts","sourceRoot":"","sources":["../../src/lib/i18n.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-params-keymap.d.ts","sourceRoot":"","sources":["../../src/lib/image-params-keymap.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAgB,oBAAoB,UAVrB,OAAO,IAAI,CAAC,IAAI,WAUe,oBAAoB;;aACpD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class ImageParamsKeyMap {
|
|
2
|
+
_map;
|
|
3
|
+
get map() {
|
|
4
|
+
return this._map;
|
|
5
|
+
}
|
|
6
|
+
set map(value) {
|
|
7
|
+
this._map = value;
|
|
8
|
+
}
|
|
9
|
+
getMethods() {
|
|
10
|
+
return {
|
|
11
|
+
setMap: (value) => {
|
|
12
|
+
this.map = value;
|
|
13
|
+
},
|
|
14
|
+
getMap: () => this.map,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const keyMap = new ImageParamsKeyMap();
|
|
19
|
+
export const { setMap: setImageParamsKeyMap, getMap: getImageParamsKeyMap } = keyMap.getMethods();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-params-keymap.test.d.ts","sourceRoot":"","sources":["../../src/lib/image-params-keymap.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { setImageParamsKeyMap, getImageParamsKeyMap, } from './image-params-keymap';
|
|
2
|
+
describe('ImageParamsKeyMap', () => {
|
|
3
|
+
test('setImageParamsKeyMap() should set the map and getImageParamsKeyMap() should get the map', () => {
|
|
4
|
+
setImageParamsKeyMap({ width: 'w' });
|
|
5
|
+
expect(getImageParamsKeyMap()).toEqual({ width: 'w' });
|
|
6
|
+
});
|
|
7
|
+
});
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from '@adobe/elsie/lib/form-values';
|
|
2
|
+
export * from '@adobe/elsie/lib/classes';
|
|
3
|
+
export * from '@adobe/elsie/lib/deepmerge';
|
|
4
|
+
export * from '@adobe/elsie/lib/debounce';
|
|
5
|
+
export * from '@adobe/elsie/lib/resolve-image';
|
|
6
|
+
export * from '@adobe/elsie/lib/render';
|
|
7
|
+
export * from '@adobe/elsie/lib/i18n';
|
|
8
|
+
export * from '@adobe/elsie/lib/initializer';
|
|
9
|
+
export * from '@adobe/elsie/lib/config';
|
|
10
|
+
export * from '@adobe/elsie/lib/types';
|
|
11
|
+
export * from '@adobe/elsie/lib/slot';
|
|
12
|
+
export * from '@adobe/elsie/lib/vcomponent';
|
|
13
|
+
export * from '@adobe/elsie/lib/image-params-keymap';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from '@adobe/elsie/lib/form-values';
|
|
2
|
+
export * from '@adobe/elsie/lib/classes';
|
|
3
|
+
export * from '@adobe/elsie/lib/deepmerge';
|
|
4
|
+
export * from '@adobe/elsie/lib/debounce';
|
|
5
|
+
export * from '@adobe/elsie/lib/resolve-image';
|
|
6
|
+
export * from '@adobe/elsie/lib/render';
|
|
7
|
+
export * from '@adobe/elsie/lib/i18n';
|
|
8
|
+
export * from '@adobe/elsie/lib/initializer';
|
|
9
|
+
export * from '@adobe/elsie/lib/config';
|
|
10
|
+
export * from '@adobe/elsie/lib/types';
|
|
11
|
+
export * from '@adobe/elsie/lib/slot';
|
|
12
|
+
export * from '@adobe/elsie/lib/vcomponent';
|
|
13
|
+
export * from '@adobe/elsie/lib/image-params-keymap';
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Config } from '@adobe/elsie/lib';
|
|
2
|
+
type Listener = {
|
|
3
|
+
off(): void;
|
|
4
|
+
};
|
|
5
|
+
type Listeners<T> = (config?: T) => Array<Listener | undefined>;
|
|
6
|
+
type Init<T> = (config?: T) => Promise<void>;
|
|
7
|
+
type Options<T> = {
|
|
8
|
+
init: Init<T>;
|
|
9
|
+
listeners: Listeners<T>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* `Initializer` is a class that represents an initializer.
|
|
13
|
+
* An initializer is responsible for setting up event listeners and initializing a module.
|
|
14
|
+
*
|
|
15
|
+
* @class
|
|
16
|
+
*
|
|
17
|
+
* @property {Function} listeners - A method that accepts a config object and returns an array of listeners.
|
|
18
|
+
* @property {Function} init - A method that initializes the module. It accepts an options object.
|
|
19
|
+
* @property {Config} config - A Config object that stores the configuration for the module.
|
|
20
|
+
*
|
|
21
|
+
* @method constructor - Constructs a new Initializer. Accepts an options object with `init` and `listeners` properties.
|
|
22
|
+
*/
|
|
23
|
+
export declare class Initializer<T> {
|
|
24
|
+
private _listeners;
|
|
25
|
+
listeners: Listeners<T>;
|
|
26
|
+
init: Init<T>;
|
|
27
|
+
config: Config<T>;
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new Initializer.
|
|
30
|
+
*
|
|
31
|
+
* @param {Object} options - The options for the Initializer.
|
|
32
|
+
* @param {Function} options.listeners - A function that accepts a config object and returns an array of listeners.
|
|
33
|
+
* @param {Function} options.init - A function that initializes the module. It accepts an options object.
|
|
34
|
+
*/
|
|
35
|
+
constructor({ init, listeners }: Options<T>);
|
|
36
|
+
}
|
|
37
|
+
type Initializers = [Initializer<any>, {
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
} | undefined][];
|
|
40
|
+
/**
|
|
41
|
+
* Class representing initializers.
|
|
42
|
+
*
|
|
43
|
+
* @class
|
|
44
|
+
*
|
|
45
|
+
* @method register - Registers a new initializer. If the initializers have already been mounted, it also immediately binds the event listeners and initializes the API for the new initializer.
|
|
46
|
+
* @method mount - Mounts all registered initializers. This involves binding the event listeners and initializing the APIs for each initializer, in that order.
|
|
47
|
+
* @method setImageParamKeys - Sets the image parameter keys. These keys are used when initializing the APIs for the initializers.
|
|
48
|
+
*/
|
|
49
|
+
export declare class initializers {
|
|
50
|
+
static _initializers: Initializers;
|
|
51
|
+
static _mounted: boolean;
|
|
52
|
+
static _imageParamsKeyMap: {
|
|
53
|
+
[key: string]: string;
|
|
54
|
+
} | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Registers a new initializer.
|
|
57
|
+
*
|
|
58
|
+
* @param initializer - The initializer to register. This should be an object with `listeners` and `init` methods.
|
|
59
|
+
* @param options - An optional object with additional options. These options are passed to the `listeners` and `init` methods of the initializer.
|
|
60
|
+
*/
|
|
61
|
+
static register(initializer: Initializer<any>, options?: {
|
|
62
|
+
[key: string]: any;
|
|
63
|
+
}): void;
|
|
64
|
+
/**
|
|
65
|
+
* Mounts all registered initializers.
|
|
66
|
+
*/
|
|
67
|
+
static mount(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Sets the image parameter keys.
|
|
70
|
+
*
|
|
71
|
+
* @param params - An object mapping keys to values.
|
|
72
|
+
*/
|
|
73
|
+
static setImageParamKeys(params: {
|
|
74
|
+
[key: string]: any;
|
|
75
|
+
}): void;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=initializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializer.d.ts","sourceRoot":"","sources":["../../src/lib/initializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwB,MAAM,kBAAkB,CAAC;AAEhE,KAAK,QAAQ,GAAG;IAAE,GAAG,IAAI,IAAI,CAAA;CAAE,CAAC;AAEhC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;AAEhE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7C,KAAK,OAAO,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAE7D;;;;;;;;;;;GAWG;AAEH,qBAAa,WAAW,CAAC,CAAC;IACxB,OAAO,CAAC,UAAU,CAAkB;IACpC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,YAA4B;IAElC;;;;;;OAMG;gBACS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAe5C;AAED,KAAK,YAAY,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,CAAC,EAAE,CAAC;AAE7E;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,MAAM,CAAC,aAAa,EAAE,YAAY,CAAM;IACxC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAS;IACjC,MAAM,CAAC,kBAAkB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,CAAa;IAE7E;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CACb,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,EAC7B,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IASlC;;OAEG;IACH,MAAM,CAAC,KAAK;IAiBZ;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAGxD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Config, setImageParamsKeyMap } from '@adobe/elsie/lib';
|
|
2
|
+
/**
|
|
3
|
+
* `Initializer` is a class that represents an initializer.
|
|
4
|
+
* An initializer is responsible for setting up event listeners and initializing a module.
|
|
5
|
+
*
|
|
6
|
+
* @class
|
|
7
|
+
*
|
|
8
|
+
* @property {Function} listeners - A method that accepts a config object and returns an array of listeners.
|
|
9
|
+
* @property {Function} init - A method that initializes the module. It accepts an options object.
|
|
10
|
+
* @property {Config} config - A Config object that stores the configuration for the module.
|
|
11
|
+
*
|
|
12
|
+
* @method constructor - Constructs a new Initializer. Accepts an options object with `init` and `listeners` properties.
|
|
13
|
+
*/
|
|
14
|
+
export class Initializer {
|
|
15
|
+
_listeners = [];
|
|
16
|
+
listeners;
|
|
17
|
+
init;
|
|
18
|
+
config = new Config({});
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new Initializer.
|
|
21
|
+
*
|
|
22
|
+
* @param {Object} options - The options for the Initializer.
|
|
23
|
+
* @param {Function} options.listeners - A function that accepts a config object and returns an array of listeners.
|
|
24
|
+
* @param {Function} options.init - A function that initializes the module. It accepts an options object.
|
|
25
|
+
*/
|
|
26
|
+
constructor({ init, listeners }) {
|
|
27
|
+
this.listeners = (config) => {
|
|
28
|
+
// Unbind existing listeners
|
|
29
|
+
this._listeners.forEach((listener) => listener.off());
|
|
30
|
+
// Bind new listeners
|
|
31
|
+
return (this._listeners = listeners(config));
|
|
32
|
+
};
|
|
33
|
+
this.init = (options) => {
|
|
34
|
+
const { imageParamsKeyMap, ...rest } = options;
|
|
35
|
+
this.config.setConfig({ ...this.config.getConfig(), ...rest });
|
|
36
|
+
setImageParamsKeyMap(imageParamsKeyMap);
|
|
37
|
+
return init(options);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Class representing initializers.
|
|
43
|
+
*
|
|
44
|
+
* @class
|
|
45
|
+
*
|
|
46
|
+
* @method register - Registers a new initializer. If the initializers have already been mounted, it also immediately binds the event listeners and initializes the API for the new initializer.
|
|
47
|
+
* @method mount - Mounts all registered initializers. This involves binding the event listeners and initializing the APIs for each initializer, in that order.
|
|
48
|
+
* @method setImageParamKeys - Sets the image parameter keys. These keys are used when initializing the APIs for the initializers.
|
|
49
|
+
*/
|
|
50
|
+
export class initializers {
|
|
51
|
+
static _initializers = [];
|
|
52
|
+
static _mounted = false;
|
|
53
|
+
static _imageParamsKeyMap = undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Registers a new initializer.
|
|
56
|
+
*
|
|
57
|
+
* @param initializer - The initializer to register. This should be an object with `listeners` and `init` methods.
|
|
58
|
+
* @param options - An optional object with additional options. These options are passed to the `listeners` and `init` methods of the initializer.
|
|
59
|
+
*/
|
|
60
|
+
static register(initializer, options) {
|
|
61
|
+
if (initializers._mounted) {
|
|
62
|
+
initializer.listeners?.(options);
|
|
63
|
+
initializer.init?.(options);
|
|
64
|
+
}
|
|
65
|
+
initializers._initializers.push([initializer, options]);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Mounts all registered initializers.
|
|
69
|
+
*/
|
|
70
|
+
static mount() {
|
|
71
|
+
initializers._mounted = true;
|
|
72
|
+
// In this specific order
|
|
73
|
+
// 1. Bind events
|
|
74
|
+
initializers._initializers?.forEach(([initializer, options]) => {
|
|
75
|
+
initializer.listeners?.(options);
|
|
76
|
+
});
|
|
77
|
+
// 2. Initialize APIs
|
|
78
|
+
initializers._initializers?.forEach(([initializer, options]) => {
|
|
79
|
+
initializer.init?.({
|
|
80
|
+
imageParamsKeyMap: initializers._imageParamsKeyMap,
|
|
81
|
+
...options,
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Sets the image parameter keys.
|
|
87
|
+
*
|
|
88
|
+
* @param params - An object mapping keys to values.
|
|
89
|
+
*/
|
|
90
|
+
static setImageParamKeys(params) {
|
|
91
|
+
initializers._imageParamsKeyMap = params;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializer.test.d.ts","sourceRoot":"","sources":["../../src/lib/initializer.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { setImageParamsKeyMap } from './image-params-keymap';
|
|
2
|
+
import { Initializer, initializers } from './initializer';
|
|
3
|
+
jest.mock('@adobe/elsie/lib/image-params-keymap', () => ({
|
|
4
|
+
setImageParamsKeyMap: jest.fn(),
|
|
5
|
+
}));
|
|
6
|
+
describe('Initializer', () => {
|
|
7
|
+
test('init', async () => {
|
|
8
|
+
const init = jest.fn();
|
|
9
|
+
const initializer = new Initializer({ init, listeners: () => [] });
|
|
10
|
+
await initializer.init({ foo: 'bar' });
|
|
11
|
+
expect(init).toHaveBeenCalledWith({ foo: 'bar' });
|
|
12
|
+
});
|
|
13
|
+
test('listeners', () => {
|
|
14
|
+
const listenerOffMock = jest.fn();
|
|
15
|
+
const listenerMock = { off: listenerOffMock };
|
|
16
|
+
const listeners = jest.fn().mockReturnValue([listenerMock]);
|
|
17
|
+
const initializer = new Initializer({
|
|
18
|
+
init: () => Promise.resolve(),
|
|
19
|
+
listeners,
|
|
20
|
+
});
|
|
21
|
+
initializer.listeners({ foo: 'bar' });
|
|
22
|
+
expect(listenerOffMock).not.toHaveBeenCalled();
|
|
23
|
+
expect(listeners).toHaveBeenCalledWith({ foo: 'bar' });
|
|
24
|
+
initializer.listeners({ foo: 'bar' });
|
|
25
|
+
// Make sure it unbinds existing listeners
|
|
26
|
+
expect(listenerOffMock).toHaveBeenCalledTimes(1);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('initializers', () => {
|
|
30
|
+
test('should call every init and listener on mount', async () => {
|
|
31
|
+
const init = jest.fn();
|
|
32
|
+
const listeners = jest.fn().mockReturnValue([]);
|
|
33
|
+
const initializer = new Initializer({ init, listeners });
|
|
34
|
+
initializers.register(initializer, { foo: 'bar' });
|
|
35
|
+
initializers.mount();
|
|
36
|
+
expect(init).toHaveBeenCalledWith({ foo: 'bar' });
|
|
37
|
+
expect(listeners).toHaveBeenCalledWith({ foo: 'bar' });
|
|
38
|
+
});
|
|
39
|
+
test('should call init and listeners if registered after mount', async () => {
|
|
40
|
+
const init = jest.fn();
|
|
41
|
+
const listeners = jest.fn().mockReturnValue([]);
|
|
42
|
+
const initializer = new Initializer({ init, listeners });
|
|
43
|
+
initializers.mount();
|
|
44
|
+
expect(init).not.toHaveBeenCalledWith({ foo: 'bar' });
|
|
45
|
+
expect(listeners).not.toHaveBeenCalledWith({ foo: 'bar' });
|
|
46
|
+
initializers.register(initializer, { foo: 'bar' });
|
|
47
|
+
expect(init).toHaveBeenCalledWith({ foo: 'bar' });
|
|
48
|
+
expect(listeners).toHaveBeenCalledWith({ foo: 'bar' });
|
|
49
|
+
});
|
|
50
|
+
describe('setImageParamKeys()', () => {
|
|
51
|
+
test('should pass imageParamKeys to keymap class', async () => {
|
|
52
|
+
const init = jest.fn();
|
|
53
|
+
const listeners = jest.fn().mockReturnValue([]);
|
|
54
|
+
const initializer = new Initializer({ init, listeners });
|
|
55
|
+
initializers.setImageParamKeys({ width: 'w' });
|
|
56
|
+
initializers.register(initializer, { foo: 'bar' });
|
|
57
|
+
initializers.mount();
|
|
58
|
+
expect(setImageParamsKeyMap).toHaveBeenCalledWith({
|
|
59
|
+
width: 'w',
|
|
60
|
+
});
|
|
61
|
+
expect(init).toHaveBeenCalledWith({ foo: 'bar' });
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
package/lib/render.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VNode } from 'preact';
|
|
2
|
+
import { Container } from '@adobe/elsie/lib';
|
|
3
|
+
export declare class Render {
|
|
4
|
+
private _provider;
|
|
5
|
+
constructor(provider: VNode<any>);
|
|
6
|
+
render<T>(Component: Container<T>, props: T): (rootElement: HTMLElement) => Promise<void>;
|
|
7
|
+
unmount(rootElement: HTMLElement): void;
|
|
8
|
+
toString<T>(Component: Container<T>, props: T, options?: T): Promise<string>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/lib/render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAc,MAAM,kBAAkB,CAAC;AAEzD,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAa;gBAElB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC;IAIhC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,iBACd,WAAW;IAexC,OAAO,CAAC,WAAW,EAAE,WAAW;IAM1B,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;CAajE"}
|
package/lib/render.jsx
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { render } from 'preact';
|
|
2
|
+
import renderToString from 'preact-render-to-string';
|
|
3
|
+
import { VComponent } from '@adobe/elsie/lib';
|
|
4
|
+
export class Render {
|
|
5
|
+
_provider;
|
|
6
|
+
constructor(provider) {
|
|
7
|
+
this._provider = provider;
|
|
8
|
+
}
|
|
9
|
+
render(Component, props) {
|
|
10
|
+
return async (rootElement) => {
|
|
11
|
+
if (!Component)
|
|
12
|
+
throw new Error('Component is not defined');
|
|
13
|
+
if (!rootElement)
|
|
14
|
+
throw new Error('Root element is not defined');
|
|
15
|
+
const initialData = (await Component.getInitialData?.(props)) ?? {};
|
|
16
|
+
render(<VComponent node={this._provider} {...this._provider.props}>
|
|
17
|
+
<Component {...props} initialData={initialData}/>
|
|
18
|
+
</VComponent>, rootElement);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
unmount(rootElement) {
|
|
22
|
+
if (!rootElement)
|
|
23
|
+
throw new Error('Root element is not defined');
|
|
24
|
+
render(null, rootElement);
|
|
25
|
+
}
|
|
26
|
+
async toString(Component, props, options) {
|
|
27
|
+
if (!Component)
|
|
28
|
+
throw new Error('Component is not defined');
|
|
29
|
+
const initialData = (await Component.getInitialData?.(props)) ?? {};
|
|
30
|
+
return renderToString(<VComponent node={this._provider} {...this._provider.props}>
|
|
31
|
+
<Component {...props} initialData={initialData}/>
|
|
32
|
+
</VComponent>, {}, { ...options });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.test.d.ts","sourceRoot":"","sources":["../../src/lib/render.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Render } from './render';
|
|
2
|
+
import { render } from 'preact';
|
|
3
|
+
import renderToString from 'preact-render-to-string';
|
|
4
|
+
import { VComponent } from '.';
|
|
5
|
+
jest.mock('preact');
|
|
6
|
+
jest.mock('preact-render-to-string');
|
|
7
|
+
describe('Render', () => {
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
jest.clearAllMocks();
|
|
10
|
+
});
|
|
11
|
+
test('render', async () => {
|
|
12
|
+
const provider = new Render(<div />);
|
|
13
|
+
await provider.render(() => <span />, {})(document.createElement('div'));
|
|
14
|
+
expect(render).toHaveBeenCalled();
|
|
15
|
+
});
|
|
16
|
+
test('render without rootElement', async () => {
|
|
17
|
+
const provider = new Render(<div />);
|
|
18
|
+
//@ts-ignore
|
|
19
|
+
// eslint-disable-next-line jest/valid-expect
|
|
20
|
+
expect(provider.render(() => <span />)(null)).rejects.toThrowError('Root element is not defined');
|
|
21
|
+
});
|
|
22
|
+
test('render wihtout component', async () => {
|
|
23
|
+
const provider = new Render(<div />);
|
|
24
|
+
//@ts-ignore
|
|
25
|
+
// eslint-disable-next-line jest/valid-expect
|
|
26
|
+
expect(provider.render(null)(null)).rejects.toThrowError('Component is not defined');
|
|
27
|
+
});
|
|
28
|
+
test('unmount', async () => {
|
|
29
|
+
const provider = new Render(<div />);
|
|
30
|
+
const root = document.createElement('div');
|
|
31
|
+
provider.unmount(root);
|
|
32
|
+
expect(render).toHaveBeenCalledWith(null, root);
|
|
33
|
+
});
|
|
34
|
+
test('unmount without rootElement', async () => {
|
|
35
|
+
const provider = new Render(<div />);
|
|
36
|
+
//@ts-ignore
|
|
37
|
+
// eslint-disable-next-line jest/valid-expect
|
|
38
|
+
expect(() => provider.unmount()).toThrow('Root element is not defined');
|
|
39
|
+
});
|
|
40
|
+
test('toString', async () => {
|
|
41
|
+
const provider = new Render(<div />);
|
|
42
|
+
const ChildTestComponent = () => <span />;
|
|
43
|
+
await provider.toString(ChildTestComponent, {});
|
|
44
|
+
const newComponent = (<VComponent node={<div />}>
|
|
45
|
+
{(() => (<ChildTestComponent initialData={{}}/>))()}
|
|
46
|
+
</VComponent>);
|
|
47
|
+
// Remove the internal __v properties of components so they can be compared
|
|
48
|
+
const deepOmitInternalProperties = (obj) => {
|
|
49
|
+
if (Array.isArray(obj)) {
|
|
50
|
+
return obj.map(deepOmitInternalProperties);
|
|
51
|
+
}
|
|
52
|
+
else if (obj !== null && typeof obj === 'object') {
|
|
53
|
+
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
|
54
|
+
const { __v, ...rest } = obj;
|
|
55
|
+
Object.keys(rest).forEach((key) => {
|
|
56
|
+
rest[key] = deepOmitInternalProperties(rest[key]);
|
|
57
|
+
});
|
|
58
|
+
return rest;
|
|
59
|
+
}
|
|
60
|
+
return obj;
|
|
61
|
+
};
|
|
62
|
+
expect(deepOmitInternalProperties(renderToString.mock.calls[0][0])).toEqual(deepOmitInternalProperties(newComponent));
|
|
63
|
+
});
|
|
64
|
+
test('toString without component', async () => {
|
|
65
|
+
const provider = new Render(<div />);
|
|
66
|
+
//@ts-ignore
|
|
67
|
+
// eslint-disable-next-line jest/valid-expect
|
|
68
|
+
expect(provider.toString(null)).rejects.toThrowError('Component is not defined');
|
|
69
|
+
});
|
|
70
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ResolveImageUrlOptions {
|
|
2
|
+
width: number;
|
|
3
|
+
height?: number;
|
|
4
|
+
auto?: string;
|
|
5
|
+
quality?: number;
|
|
6
|
+
crop?: boolean;
|
|
7
|
+
fit?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const generateSrcset: (imageURL: string, options: ResolveImageUrlOptions) => string | undefined;
|
|
10
|
+
//# sourceMappingURL=resolve-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-image.d.ts","sourceRoot":"","sources":["../../src/lib/resolve-image.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAqCD,eAAO,MAAM,cAAc,aACf,MAAM,WACP,sBAAsB,uBAqBhC,CAAC"}
|