@salt-ds/embla-carousel 0.1.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/css/salt-embla-carousel.css +54 -27
  3. package/dist-cjs/Carousel.js +30 -9
  4. package/dist-cjs/Carousel.js.map +1 -1
  5. package/dist-cjs/CarouselAutoplayIndicator.css.js +1 -1
  6. package/dist-cjs/CarouselAutoplayIndicator.js.map +1 -1
  7. package/dist-cjs/CarouselAutoplayIndicatorSVG.js +12 -24
  8. package/dist-cjs/CarouselAutoplayIndicatorSVG.js.map +1 -1
  9. package/dist-cjs/CarouselCard.css.js +1 -1
  10. package/dist-cjs/CarouselCard.js +23 -9
  11. package/dist-cjs/CarouselCard.js.map +1 -1
  12. package/dist-cjs/CarouselContext.js.map +1 -1
  13. package/dist-cjs/CarouselNextButton.js +4 -1
  14. package/dist-cjs/CarouselNextButton.js.map +1 -1
  15. package/dist-cjs/CarouselPreviousButton.js +4 -1
  16. package/dist-cjs/CarouselPreviousButton.js.map +1 -1
  17. package/dist-cjs/CarouselProgressLabel.js +11 -33
  18. package/dist-cjs/CarouselProgressLabel.js.map +1 -1
  19. package/dist-cjs/CarouselSlides.css.js +1 -1
  20. package/dist-cjs/CarouselSlides.js +148 -25
  21. package/dist-cjs/CarouselSlides.js.map +1 -1
  22. package/dist-cjs/CarouselTab.css.js +1 -1
  23. package/dist-cjs/CarouselTab.js +1 -5
  24. package/dist-cjs/CarouselTab.js.map +1 -1
  25. package/dist-cjs/CarouselTabList.css.js +1 -1
  26. package/dist-cjs/CarouselTabList.js +47 -27
  27. package/dist-cjs/CarouselTabList.js.map +1 -1
  28. package/dist-cjs/createCustomSettle.js +1 -1
  29. package/dist-cjs/createCustomSettle.js.map +1 -1
  30. package/dist-cjs/getSlideDescription.js +32 -0
  31. package/dist-cjs/getSlideDescription.js.map +1 -0
  32. package/dist-cjs/getVisibleSlideDescription.js +26 -0
  33. package/dist-cjs/getVisibleSlideDescription.js.map +1 -0
  34. package/dist-cjs/getVisibleSlideIndexes.js +33 -0
  35. package/dist-cjs/getVisibleSlideIndexes.js.map +1 -0
  36. package/dist-cjs/index.js +0 -3
  37. package/dist-cjs/index.js.map +1 -1
  38. package/dist-cjs/usePrevNextButtons.js +3 -1
  39. package/dist-cjs/usePrevNextButtons.js.map +1 -1
  40. package/dist-es/Carousel.js +32 -11
  41. package/dist-es/Carousel.js.map +1 -1
  42. package/dist-es/CarouselAutoplayIndicator.css.js +1 -1
  43. package/dist-es/CarouselAutoplayIndicator.js.map +1 -1
  44. package/dist-es/CarouselAutoplayIndicatorSVG.js +13 -25
  45. package/dist-es/CarouselAutoplayIndicatorSVG.js.map +1 -1
  46. package/dist-es/CarouselCard.css.js +1 -1
  47. package/dist-es/CarouselCard.js +23 -9
  48. package/dist-es/CarouselCard.js.map +1 -1
  49. package/dist-es/CarouselContext.js.map +1 -1
  50. package/dist-es/CarouselNextButton.js +4 -1
  51. package/dist-es/CarouselNextButton.js.map +1 -1
  52. package/dist-es/CarouselPreviousButton.js +4 -1
  53. package/dist-es/CarouselPreviousButton.js.map +1 -1
  54. package/dist-es/CarouselProgressLabel.js +12 -34
  55. package/dist-es/CarouselProgressLabel.js.map +1 -1
  56. package/dist-es/CarouselSlides.css.js +1 -1
  57. package/dist-es/CarouselSlides.js +150 -27
  58. package/dist-es/CarouselSlides.js.map +1 -1
  59. package/dist-es/CarouselTab.css.js +1 -1
  60. package/dist-es/CarouselTab.js +1 -5
  61. package/dist-es/CarouselTab.js.map +1 -1
  62. package/dist-es/CarouselTabList.css.js +1 -1
  63. package/dist-es/CarouselTabList.js +48 -28
  64. package/dist-es/CarouselTabList.js.map +1 -1
  65. package/dist-es/createCustomSettle.js +1 -1
  66. package/dist-es/createCustomSettle.js.map +1 -1
  67. package/dist-es/getSlideDescription.js +30 -0
  68. package/dist-es/getSlideDescription.js.map +1 -0
  69. package/dist-es/getVisibleSlideDescription.js +24 -0
  70. package/dist-es/getVisibleSlideDescription.js.map +1 -0
  71. package/dist-es/getVisibleSlideIndexes.js +30 -0
  72. package/dist-es/getVisibleSlideIndexes.js.map +1 -0
  73. package/dist-es/index.js +0 -1
  74. package/dist-es/index.js.map +1 -1
  75. package/dist-es/usePrevNextButtons.js +3 -1
  76. package/dist-es/usePrevNextButtons.js.map +1 -1
  77. package/dist-types/Carousel.d.ts +7 -1
  78. package/dist-types/CarouselContext.d.ts +31 -0
  79. package/dist-types/CarouselTab.d.ts +0 -6
  80. package/dist-types/CarouselTabList.d.ts +4 -0
  81. package/dist-types/getSlideDescription.d.ts +7 -0
  82. package/dist-types/getVisibleSlideDescription.d.ts +7 -0
  83. package/dist-types/getVisibleSlideIndexes.d.ts +8 -0
  84. package/dist-types/index.d.ts +0 -1
  85. package/package.json +2 -2
  86. package/dist-cjs/CarouselAnnouncementPlugin.js +0 -52
  87. package/dist-cjs/CarouselAnnouncementPlugin.js.map +0 -1
  88. package/dist-cjs/CarouselProgressLabel.css.js +0 -6
  89. package/dist-cjs/CarouselProgressLabel.css.js.map +0 -1
  90. package/dist-es/CarouselAnnouncementPlugin.js +0 -49
  91. package/dist-es/CarouselAnnouncementPlugin.js.map +0 -1
  92. package/dist-es/CarouselProgressLabel.css.js +0 -4
  93. package/dist-es/CarouselProgressLabel.css.js.map +0 -1
  94. package/dist-types/CarouselAnnouncementPlugin.d.ts +0 -24
@@ -1 +0,0 @@
1
- {"version":3,"file":"CarouselAnnouncementPlugin.js","sources":["../src/CarouselAnnouncementPlugin.ts"],"sourcesContent":["import { useAriaAnnouncer } from \"@salt-ds/core\";\nimport type {\n CreateOptionsType,\n CreatePluginType,\n EmblaCarouselType,\n} from \"embla-carousel\";\nimport { useCallback } from \"react\";\n\ndeclare module \"embla-carousel\" {\n interface EmblaPluginsType {\n announcement: CarouselAnnouncementType;\n }\n}\n\n/**\n * Type definition for the parameters of the getSlideLabel function.\n * @returns A string that describes the slide, including its index and total count.\n */\nexport type GetSlideLabelProps = (emblaApi: EmblaCarouselType) => string;\n\n/** * Generates a label for a carousel slide based on ARIA attributes.\n * This function retrieves the slide's ARIA label or text content and formats it into a descriptive string.\n * @param slideElement\n * @param slideIndex\n * @param slideCount\n * @returns A string description of the slide, including its position and ARIA label or text content.\n */\nexport const getSlideLabel: GetSlideLabelProps = (emblaApi): string => {\n const slideCount = emblaApi?.slideNodes().length ?? 0;\n const slideIndexInView = emblaApi?.slidesInView()?.[0] ?? 0;\n const slideElement = emblaApi?.slideNodes()[slideIndexInView];\n\n let description = slideElement?.getAttribute(\"aria-label\");\n if (!description) {\n const labelledById = slideElement?.getAttribute(\"aria-labelledby\");\n const { ownerDocument } = emblaApi.internalEngine();\n if (labelledById) {\n const labelledByElement = ownerDocument.getElementById(labelledById);\n description =\n labelledByElement?.textContent || \"No description available\";\n } else {\n description = \"No description available\";\n }\n }\n return `slide ${slideIndexInView + 1} of ${slideCount}. ${description}`;\n};\n\n// biome-ignore lint/complexity/noBannedTypes: Replicated from embla docs/code\ntype OptionsType = CreateOptionsType<{}>;\n// biome-ignore lint/complexity/noBannedTypes: Replicated from embla docs/code\nexport type CarouselAnnouncementType = CreatePluginType<{}, OptionsType>;\n\nexport type CarouselAnnouncementOptionsType =\n CarouselAnnouncementType[\"options\"];\n\nexport function CarouselAnnouncement(\n userOptions: CarouselAnnouncementOptionsType = {},\n): CarouselAnnouncementType {\n let emblaApi: EmblaCarouselType;\n\n const { announce } = useAriaAnnouncer();\n\n const handleSettle = useCallback(\n (emblaApi: EmblaCarouselType) => {\n const slideLabel = getSlideLabel(emblaApi);\n announce(slideLabel);\n },\n [announce],\n );\n\n function init(emblaApiInstance: EmblaCarouselType): void {\n emblaApi = emblaApiInstance;\n emblaApi.on(\"settle\", handleSettle);\n }\n\n function destroy(): void {\n emblaApi.off(\"settle\", handleSettle);\n }\n\n const self: CarouselAnnouncementType = {\n name: \"announcement\",\n options: userOptions,\n init,\n destroy,\n };\n return self;\n}\n"],"names":["emblaApi"],"mappings":";;;AA2Ba,MAAA,aAAA,GAAoC,CAAC,QAAqB,KAAA;AA3BvE,EAAA,IAAA,EAAA;AA4BE,EAAM,MAAA,UAAA,GAAA,CAAa,QAAU,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,UAAA,EAAA,CAAa,MAAU,KAAA,CAAA;AACpD,EAAA,MAAM,gBAAmB,GAAA,CAAA,CAAA,EAAA,GAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,YAAV,EAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAA2B,CAAM,CAAA,KAAA,CAAA;AAC1D,EAAM,MAAA,YAAA,GAAe,qCAAU,UAAa,EAAA,CAAA,gBAAA,CAAA;AAE5C,EAAI,IAAA,WAAA,GAAc,6CAAc,YAAa,CAAA,YAAA,CAAA;AAC7C,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAM,MAAA,YAAA,GAAe,6CAAc,YAAa,CAAA,iBAAA,CAAA;AAChD,IAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,QAAA,CAAS,cAAe,EAAA;AAClD,IAAA,IAAI,YAAc,EAAA;AAChB,MAAM,MAAA,iBAAA,GAAoB,aAAc,CAAA,cAAA,CAAe,YAAY,CAAA;AACnE,MAAA,WAAA,GAAA,CACE,uDAAmB,WAAe,KAAA,0BAAA;AAAA,KAC/B,MAAA;AACL,MAAc,WAAA,GAAA,0BAAA;AAAA;AAChB;AAEF,EAAA,OAAO,SAAS,gBAAmB,GAAA,CAAC,CAAO,IAAA,EAAA,UAAU,KAAK,WAAW,CAAA,CAAA;AACvE;AAUgB,SAAA,oBAAA,CACd,WAA+C,GAAA,EACrB,EAAA;AAC1B,EAAI,IAAA,QAAA;AAEJ,EAAM,MAAA,EAAE,QAAS,EAAA,GAAI,gBAAiB,EAAA;AAEtC,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAACA,SAAgC,KAAA;AAC/B,MAAM,MAAA,UAAA,GAAa,cAAcA,SAAQ,CAAA;AACzC,MAAA,QAAA,CAAS,UAAU,CAAA;AAAA,KACrB;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,SAAS,KAAK,gBAA2C,EAAA;AACvD,IAAW,QAAA,GAAA,gBAAA;AACX,IAAS,QAAA,CAAA,EAAA,CAAG,UAAU,YAAY,CAAA;AAAA;AAGpC,EAAA,SAAS,OAAgB,GAAA;AACvB,IAAS,QAAA,CAAA,GAAA,CAAI,UAAU,YAAY,CAAA;AAAA;AAGrC,EAAA,MAAM,IAAiC,GAAA;AAAA,IACrC,IAAM,EAAA,cAAA;AAAA,IACN,OAAS,EAAA,WAAA;AAAA,IACT,IAAA;AAAA,IACA;AAAA,GACF;AACA,EAAO,OAAA,IAAA;AACT;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltCarouselTabList.saltText {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=CarouselProgressLabel.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CarouselProgressLabel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,24 +0,0 @@
1
- import type { CreateOptionsType, CreatePluginType, EmblaCarouselType } from "embla-carousel";
2
- declare module "embla-carousel" {
3
- interface EmblaPluginsType {
4
- announcement: CarouselAnnouncementType;
5
- }
6
- }
7
- /**
8
- * Type definition for the parameters of the getSlideLabel function.
9
- * @returns A string that describes the slide, including its index and total count.
10
- */
11
- export type GetSlideLabelProps = (emblaApi: EmblaCarouselType) => string;
12
- /** * Generates a label for a carousel slide based on ARIA attributes.
13
- * This function retrieves the slide's ARIA label or text content and formats it into a descriptive string.
14
- * @param slideElement
15
- * @param slideIndex
16
- * @param slideCount
17
- * @returns A string description of the slide, including its position and ARIA label or text content.
18
- */
19
- export declare const getSlideLabel: GetSlideLabelProps;
20
- type OptionsType = CreateOptionsType<{}>;
21
- export type CarouselAnnouncementType = CreatePluginType<{}, OptionsType>;
22
- export type CarouselAnnouncementOptionsType = CarouselAnnouncementType["options"];
23
- export declare function CarouselAnnouncement(userOptions?: CarouselAnnouncementOptionsType): CarouselAnnouncementType;
24
- export {};