@smwb/ui-solid 0.2.2 → 0.3.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 (50) hide show
  1. package/dist/components/dataDisplay/carousel/carousel.js +7 -7
  2. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  3. package/dist/components/dataDisplay/chat/chatAttachmentImage.js +17 -17
  4. package/dist/components/dataDisplay/chat/chatAttachmentImage.js.map +1 -1
  5. package/dist/components/dataDisplay/chat/chatShell.js +16 -16
  6. package/dist/components/dataDisplay/chat/chatShell.js.map +1 -1
  7. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +25 -25
  8. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  9. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +15 -15
  10. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  11. package/dist/components/feedBack/modal/modal.js +29 -29
  12. package/dist/components/feedBack/modal/modal.js.map +1 -1
  13. package/dist/components/inputs/datePicker/datePicker.js +43 -43
  14. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  15. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +46 -46
  16. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  17. package/dist/components/inputs/selectField/dropdownMenu.js +30 -30
  18. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  19. package/dist/components/inputs/slider/slider.js +48 -48
  20. package/dist/components/inputs/slider/slider.js.map +1 -1
  21. package/dist/components/inputs/timePicker/timePicker.js +31 -31
  22. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  23. package/dist/components/layout/sheet/sheet.js +29 -29
  24. package/dist/components/layout/sheet/sheet.js.map +1 -1
  25. package/dist/headless/components/dataDisplay/carousel/carousel.js +20 -20
  26. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  27. package/dist/headless/components/dataDisplay/chat/chatAttachmentImage.js +17 -17
  28. package/dist/headless/components/dataDisplay/chat/chatAttachmentImage.js.map +1 -1
  29. package/dist/headless/components/dataDisplay/chat/chatShell.js +16 -16
  30. package/dist/headless/components/dataDisplay/chat/chatShell.js.map +1 -1
  31. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +25 -25
  32. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  33. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +15 -15
  34. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  35. package/dist/headless/components/feedBack/modal/modal.js +25 -25
  36. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  37. package/dist/headless/components/inputs/datePicker/datePicker.js +43 -43
  38. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  39. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +46 -46
  40. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  41. package/dist/headless/components/inputs/selectField/dropdownMenu.js +30 -30
  42. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  43. package/dist/headless/components/inputs/slider/slider.js +90 -90
  44. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  45. package/dist/headless/components/inputs/timePicker/timePicker.js +31 -31
  46. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  47. package/dist/headless/components/layout/sheet/sheet.js +29 -29
  48. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  49. package/dist/ssr.ssr-spec.d.ts +1 -0
  50. package/package.json +3 -2
@@ -2,7 +2,7 @@ import { addEventListener as k, use as Y, insert as g, createComponent as v, eff
2
2
  import '../../../assets/styles/less/components/carousel/carousel.entry.css';/* empty css */
3
3
  import { mergeProps as Me, splitProps as ze, children as De, createSignal as b, createUniqueId as Le, createEffect as A, createMemo as le, onCleanup as ae, Show as y, For as W } from "solid-js";
4
4
  import p from "clsx";
5
- import { toCssLength as K, toCssNumber as Ae, dragPrevent as ie, getSlideStyle as He, getStartSlide as Ne, getSlidesToShow as Re, clamp as Oe, getSlideIndexForMultipleParts as ce, coordX as q, coordY as ue, getSlideWidth as Ye, isMouseEvent as de, isTouchEvent as Ve } from "./utils.js";
5
+ import { toCssLength as K, toCssNumber as Ae, dragPrevent as ie, getSlideStyle as Ne, getStartSlide as He, getSlidesToShow as Re, clamp as Oe, getSlideIndexForMultipleParts as ce, coordX as q, coordY as ue, getSlideWidth as Ye, isMouseEvent as de, isTouchEvent as Ve } from "./utils.js";
6
6
  import { mergeRefs as We } from "../../../primitives/mergeRefs.js";
7
7
  import { Icon as T } from "../../base/icon/icon.js";
8
8
  import { Modal as Ke } from "../../feedBack/modal/modal.js";
@@ -19,7 +19,7 @@ function ot(he) {
19
19
  autoplayInterval: 4e3,
20
20
  pauseOnHover: !0,
21
21
  enableFullscreen: !1
22
- }, he), [s] = ze(ve, ["slidesToShow", "startSlide", "children", "class", "showNavigation", "showArrows", "arrowsSize", "navigationClassName", "onSlideChange", "navigationDotRenderer", "aria-label", "autoplay", "autoplayInterval", "pauseOnHover", "cellHeight", "aspectRatio", "gap", "maxWidth", "enableFullscreen", "ref"]), ge = De(() => s.children), H = () => ge.toArray(), o = () => H().length, d = () => Re(s.slidesToShow, o()), G = () => Ne(s.startSlide, o()), U = () => !!s.showArrows && o() > 1, F = () => Math.max(0, o() - d()), [w, j] = b(G()), [N, R] = b(void 0), [we, J] = b(!1), [_e, Q] = b(0), [be, Z] = b(!1), [x, M] = b(null), [pe, ee] = b(0), [xe, te] = b(!1);
22
+ }, he), [s] = ze(ve, ["slidesToShow", "startSlide", "children", "class", "showNavigation", "showArrows", "arrowsSize", "navigationClassName", "onSlideChange", "navigationDotRenderer", "aria-label", "autoplay", "autoplayInterval", "pauseOnHover", "cellHeight", "aspectRatio", "gap", "maxWidth", "enableFullscreen", "ref"]), ge = De(() => s.children), N = () => ge.toArray(), o = () => N().length, d = () => Re(s.slidesToShow, o()), G = () => He(s.startSlide, o()), U = () => !!s.showArrows && o() > 1, F = () => Math.max(0, o() - d()), [w, j] = b(G()), [H, R] = b(void 0), [we, J] = b(!1), [_e, Q] = b(0), [be, Z] = b(!1), [x, M] = b(null), [pe, ee] = b(0), [xe, te] = b(!1);
23
23
  let z, _;
24
24
  const i = {
25
25
  isPressed: !1,
@@ -36,7 +36,7 @@ function ot(he) {
36
36
  d(), R(!1);
37
37
  }), A(() => {
38
38
  const e = G();
39
- j(e), s.onSlideChange?.(e), N() !== void 0 && R(!0);
39
+ j(e), s.onSlideChange?.(e), H() !== void 0 && R(!0);
40
40
  });
41
41
  const $ = (e) => {
42
42
  const t = Oe(e, 0, F());
@@ -117,7 +117,7 @@ function ot(he) {
117
117
  }), E = (e) => {
118
118
  const t = x();
119
119
  t !== null && M((t + e + o()) % o());
120
- }, Xe = le(() => H().map((e) => e instanceof Node ? e.cloneNode(!0) : e == null ? "" : String(e)));
120
+ }, Xe = le(() => N().map((e) => typeof Node < "u" && e instanceof Node ? e.cloneNode(!0) : e == null ? "" : String(e)));
121
121
  A(() => {
122
122
  if (!s.autoplay || o() <= 1 || s.pauseOnHover && we() || x() !== null)
123
123
  return;
@@ -170,12 +170,12 @@ function ot(he) {
170
170
  }
171
171
  }), a), k(a, "dragend", ie), k(a, "dragstart", ie), a.$$touchstart = se, a.$$mousedown = se, Y((r) => _ = r, a), g(c, v(W, {
172
172
  get each() {
173
- return H();
173
+ return N();
174
174
  },
175
175
  children: (r, n) => (() => {
176
176
  var l = Ge(), m = l.firstChild;
177
177
  return k(m, "click", s.enableFullscreen ? () => Ce(n()) : void 0, !0), g(m, r), I((f) => {
178
- var h = `${Se}${n()}`, X = He(d()), ne = p("smwb-carousel__slide-inner", s.enableFullscreen && "smwb-carousel__slide-inner_clickable");
178
+ var h = `${Se}${n()}`, X = Ne(d()), ne = p("smwb-carousel__slide-inner", s.enableFullscreen && "smwb-carousel__slide-inner_clickable");
179
179
  return h !== f.e && V(l, "id", f.e = h), f.t = oe(l, X, f.t), ne !== f.a && D(m, f.a = ne), f;
180
180
  }, {
181
181
  e: void 0,
@@ -289,7 +289,7 @@ function ot(he) {
289
289
  });
290
290
  }
291
291
  }), null), I((r) => {
292
- var n = p("smwb-carousel", s.class), l = s["aria-label"], m = Ee(), f = `translateX(calc(-${ye()}% + ${_e()}px))`, h = be() || N() === void 0 ? "none" : N() ? "transform 500ms cubic-bezier(.1, 0, .25, 1)" : "none";
292
+ var n = p("smwb-carousel", s.class), l = s["aria-label"], m = Ee(), f = `translateX(calc(-${ye()}% + ${_e()}px))`, h = be() || H() === void 0 ? "none" : H() ? "transform 500ms cubic-bezier(.1, 0, .25, 1)" : "none";
293
293
  return n !== r.e && D(e, r.e = n), l !== r.t && V(e, "aria-label", r.t = l), r.a = oe(e, m, r.a), f !== r.o && L(c, "transform", r.o = f), h !== r.i && L(c, "transition", r.i = h), r;
294
294
  }, {
295
295
  e: void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","sources":["../../../../src/components/dataDisplay/carousel/carousel.tsx"],"sourcesContent":["import {\n type JSX,\n type ParentProps,\n For,\n Show,\n children as resolveChildren,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { Modal } from \"../../feedBack/modal\";\nimport {\n clamp,\n coordX,\n coordY,\n dragPrevent,\n getSlideIndexForMultipleParts,\n getSlideStyle,\n getSlideWidth,\n getSlidesToShow,\n getStartSlide,\n isMouseEvent,\n isTouchEvent,\n toCssLength,\n toCssNumber,\n} from \"./utils\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface CarouselProps {\n slidesToShow?: number;\n startSlide?: number;\n class?: string;\n showNavigation?: boolean;\n showArrows?: boolean;\n arrowsSize?: number;\n navigationClassName?: string;\n onSlideChange?: (slideIndex: number) => void;\n navigationDotRenderer?: (index: number, isActive: boolean, onClick: (index: number) => void) => JSX.Element;\n \"aria-label\"?: string;\n autoplay?: boolean;\n autoplayInterval?: number;\n pauseOnHover?: boolean;\n /** Height of each cell/photo. Number is treated as px. Overrides the default 205px. */\n cellHeight?: number | string;\n /** Aspect ratio of each cell/photo (e.g. 0.9 or \"16 / 9\"). Overrides the default 0.9. */\n aspectRatio?: number | string;\n /** Per-side spacing around each slide. Number is treated as px (default 4). */\n gap?: number | string;\n /** Max width of the carousel. Number is treated as px (default 412). */\n maxWidth?: number | string;\n /** Open the clicked slide in a fullscreen lightbox (arrows / swipe / Esc to navigate & close). */\n enableFullscreen?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\ntype Axis = \"x\" | \"y\" | null;\n\ninterface Motion {\n isPressed: boolean;\n startX: number;\n startY: number;\n lastX: number;\n lastT: number;\n axis: Axis;\n dragged: boolean;\n}\n\nconst TAP_THRESHOLD = 8;\nconst FLICK_VELOCITY = 0.4;\n\nconst now = (): number => (typeof performance !== \"undefined\" ? performance.now() : Date.now());\n\nexport function Carousel(props: ParentProps<CarouselProps>): JSX.Element {\n const merged = mergeProps(\n {\n slidesToShow: 3,\n startSlide: 0,\n showNavigation: true,\n arrowsSize: 30,\n \"aria-label\": \"Carousel\",\n autoplay: false,\n autoplayInterval: 4000,\n pauseOnHover: true,\n enableFullscreen: false,\n },\n props\n );\n const [local] = splitProps(merged, [\n \"slidesToShow\",\n \"startSlide\",\n \"children\",\n \"class\",\n \"showNavigation\",\n \"showArrows\",\n \"arrowsSize\",\n \"navigationClassName\",\n \"onSlideChange\",\n \"navigationDotRenderer\",\n \"aria-label\",\n \"autoplay\",\n \"autoplayInterval\",\n \"pauseOnHover\",\n \"cellHeight\",\n \"aspectRatio\",\n \"gap\",\n \"maxWidth\",\n \"enableFullscreen\",\n \"ref\",\n ]);\n\n const resolved = resolveChildren(() => local.children);\n const slides = (): unknown[] => resolved.toArray();\n const slidesCount = (): number => slides().length;\n const slidesToShow = (): number => getSlidesToShow(local.slidesToShow, slidesCount());\n const startSlide = (): number => getStartSlide(local.startSlide, slidesCount());\n const showArrows = (): boolean => !!local.showArrows && slidesCount() > 1;\n const maxShift = (): number => Math.max(0, slidesCount() - slidesToShow());\n\n const [activeSlideIndex, setActiveSlideIndex] = createSignal(startSlide());\n const [animation, setAnimation] = createSignal<boolean | undefined>(undefined);\n const [isHovered, setIsHovered] = createSignal(false);\n const [dragPx, setDragPx] = createSignal(0);\n const [isDragging, setIsDragging] = createSignal(false);\n const [fullscreenIndex, setFullscreenIndex] = createSignal<number | null>(null);\n const [fullscreenDragPx, setFullscreenDragPx] = createSignal(0);\n const [isFullscreenDragging, setIsFullscreenDragging] = createSignal(false);\n\n let rootEl: HTMLDivElement | undefined;\n let trackEl: HTMLDivElement | undefined;\n const motion: Motion = { isPressed: false, startX: 0, startY: 0, lastX: 0, lastT: 0, axis: null, dragged: false };\n let fullscreenTouchX: number | null = null;\n const slideId = createUniqueId();\n\n createEffect(() => {\n slidesToShow();\n setAnimation(false);\n });\n\n createEffect(() => {\n const start = startSlide();\n setActiveSlideIndex(start);\n local.onSlideChange?.(start);\n if (animation() !== undefined) setAnimation(true);\n });\n\n const goToSlide = (index: number): void => {\n const target = clamp(index, 0, maxShift());\n setActiveSlideIndex(target);\n setAnimation(true);\n local.onSlideChange?.(target);\n };\n\n const detachListeners = (mouse: boolean): void => {\n if (!trackEl) return;\n trackEl.removeEventListener(mouse ? \"mousemove\" : \"touchmove\", onMove as EventListener);\n trackEl.removeEventListener(mouse ? \"mouseup\" : \"touchend\", onEnd as EventListener);\n if (mouse) trackEl.removeEventListener(\"mouseleave\", onEnd as EventListener);\n };\n\n const onMove = (event: MouseEvent | TouchEvent): void => {\n if (!rootEl || !motion.isPressed) return;\n if (isTouchEvent(event) && event.touches.length > 1) {\n onEnd(event);\n return;\n }\n\n const clientX = coordX(event);\n const clientY = coordY(event);\n const shiftX = clientX - motion.startX;\n const shiftY = clientY - motion.startY;\n\n if (motion.axis === null) {\n if (Math.abs(shiftX) < TAP_THRESHOLD && Math.abs(shiftY) < TAP_THRESHOLD) return;\n motion.axis = Math.abs(shiftX) >= Math.abs(shiftY) ? \"x\" : \"y\";\n motion.dragged = true;\n if (motion.axis === \"y\") {\n onEnd(event);\n return;\n }\n if (slidesCount() > 1) setIsDragging(true);\n }\n\n if (motion.axis !== \"x\") return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (slidesCount() > 1) {\n const atStart = activeSlideIndex() <= 0;\n const atEnd = activeSlideIndex() >= maxShift();\n const offset = (atStart && shiftX > 0) || (atEnd && shiftX < 0) ? shiftX * 0.35 : shiftX;\n setDragPx(offset);\n }\n\n motion.lastX = clientX;\n motion.lastT = now();\n };\n\n const onEnd = (event: MouseEvent | TouchEvent): void => {\n if (!motion.isPressed) return;\n\n const mouse = isMouseEvent(event);\n detachListeners(mouse);\n\n const { axis, dragged, startX, lastX, lastT } = motion;\n motion.isPressed = false;\n setIsDragging(false);\n\n if (axis === \"x\" && dragged && slidesCount() > 1 && rootEl) {\n const clientX = coordX(event);\n const totalShift = clientX - startX;\n const widthPerSlide = rootEl.offsetWidth / slidesToShow();\n const velocity = lastT ? (clientX - lastX) / Math.max(1, now() - lastT) : 0;\n\n let movedSlides = widthPerSlide > 0 ? Math.round(-totalShift / widthPerSlide) : 0;\n if (movedSlides === 0 && Math.abs(velocity) > FLICK_VELOCITY) {\n movedSlides = velocity < 0 ? 1 : -1;\n }\n goToSlide(activeSlideIndex() + movedSlides);\n }\n\n setDragPx(0);\n };\n\n const onStart: JSX.EventHandler<HTMLDivElement, MouseEvent | TouchEvent> = (event) => {\n if (!trackEl) return;\n const mouse = isMouseEvent(event);\n if (mouse && (event as MouseEvent).button !== 0) return;\n event.stopPropagation();\n\n motion.isPressed = true;\n motion.startX = coordX(event);\n motion.startY = coordY(event);\n motion.lastX = motion.startX;\n motion.lastT = now();\n motion.axis = null;\n motion.dragged = false;\n\n trackEl.addEventListener(mouse ? \"mousemove\" : \"touchmove\", onMove as EventListener, { passive: false });\n trackEl.addEventListener(mouse ? \"mouseup\" : \"touchend\", onEnd as EventListener);\n if (mouse) trackEl.addEventListener(\"mouseleave\", onEnd as EventListener);\n };\n\n const onSlideClick = (index: number): void => {\n if (motion.dragged) return;\n if (local.enableFullscreen) setFullscreenIndex(index);\n };\n\n const getNextIndex = (direction: 1 | -1): number => {\n const isSingle = slidesToShow() === 1;\n const totalGroups = isSingle ? slidesCount() : Math.ceil(slidesCount() / slidesToShow());\n const activeIndex = activeSlideIndex() + slidesToShow();\n const isNextDisabled = slidesCount() - slidesToShow() <= activeSlideIndex();\n const currentIndex = getSlideIndexForMultipleParts(activeIndex, slidesToShow(), slidesCount(), isNextDisabled);\n const nextIndex = (currentIndex + direction + totalGroups) % totalGroups;\n return isSingle ? nextIndex : nextIndex * slidesToShow();\n };\n\n const dots = (): Array<{ index: number; nextIndex: number; isActive: boolean }> => {\n const isNextDisabled = slidesCount() - slidesToShow() <= activeSlideIndex();\n const isSingle = slidesToShow() === 1;\n const count = isSingle ? slidesCount() : Math.ceil(slidesCount() / slidesToShow());\n const result: Array<{ index: number; nextIndex: number; isActive: boolean }> = [];\n for (let index = 0; index < count; index++) {\n let nextIndex = index;\n let currentIndex = activeSlideIndex();\n if (!isSingle) {\n const isLast = index === count - 1;\n const activeIndex = activeSlideIndex() + slidesToShow();\n nextIndex = isLast ? slidesCount() - slidesToShow() : index * slidesToShow();\n currentIndex = getSlideIndexForMultipleParts(activeIndex, slidesToShow(), slidesCount(), isNextDisabled);\n }\n result.push({ index, nextIndex, isActive: currentIndex === index });\n }\n return result;\n };\n\n const indent = (): number => {\n const shiftSlides = activeSlideIndex() > maxShift() ? maxShift() : activeSlideIndex();\n return getSlideWidth(slidesToShow()) * shiftSlides;\n };\n\n const rootStyle = createMemo<JSX.CSSProperties>(() => {\n const style: Record<string, string> = {};\n const cellHeightValue = toCssLength(local.cellHeight);\n const aspectRatioValue = toCssNumber(local.aspectRatio);\n const gapValue = toCssLength(local.gap);\n const maxWidthValue = toCssLength(local.maxWidth);\n if (cellHeightValue) style[\"--smwb-carousel-cell-height\"] = cellHeightValue;\n if (aspectRatioValue) style[\"--smwb-carousel-aspect-ratio\"] = aspectRatioValue;\n if (gapValue) style[\"--smwb-carousel-gap\"] = gapValue;\n if (maxWidthValue) style[\"--smwb-carousel-max-width\"] = maxWidthValue;\n return style;\n });\n\n const moveFullscreen = (direction: 1 | -1): void => {\n const prev = fullscreenIndex();\n if (prev === null) return;\n setFullscreenIndex((prev + direction + slidesCount()) % slidesCount());\n };\n\n // A DOM node can only live in one place, so the carousel's own slide nodes\n // can't be reused inside the modal — render clones of every slide into a\n // sliding track so navigation animates smoothly instead of swapping nodes.\n const fullscreenClones = createMemo<Array<Node | string>>(() =>\n slides().map((node) => {\n if (node instanceof Node) return node.cloneNode(true);\n return node == null ? \"\" : String(node);\n })\n );\n\n // Autoplay\n createEffect(() => {\n if (!local.autoplay || slidesCount() <= 1 || (local.pauseOnHover && isHovered()) || fullscreenIndex() !== null) {\n return;\n }\n const timer = window.setInterval(() => goToSlide(getNextIndex(1)), local.autoplayInterval);\n onCleanup(() => window.clearInterval(timer));\n });\n\n // Keyboard navigation while the lightbox is open.\n createEffect(() => {\n if (fullscreenIndex() === null || slidesCount() <= 1) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowLeft\") moveFullscreen(-1);\n else if (event.key === \"ArrowRight\") moveFullscreen(1);\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const onFullscreenTouchStart = (event: TouchEvent): void => {\n fullscreenTouchX = event.touches[0]?.clientX ?? null;\n };\n\n const onFullscreenTouchMove = (event: TouchEvent): void => {\n if (fullscreenTouchX === null || slidesCount() <= 1) return;\n const delta = (event.touches[0]?.clientX ?? fullscreenTouchX) - fullscreenTouchX;\n setIsFullscreenDragging(true);\n setFullscreenDragPx(delta);\n };\n\n const onFullscreenTouchEnd = (event: TouchEvent): void => {\n const startX = fullscreenTouchX;\n fullscreenTouchX = null;\n setIsFullscreenDragging(false);\n setFullscreenDragPx(0);\n if (startX === null || slidesCount() <= 1) return;\n const delta = (event.changedTouches[0]?.clientX ?? startX) - startX;\n if (Math.abs(delta) > 40) moveFullscreen(delta < 0 ? 1 : -1);\n };\n\n return (\n <div\n class={cn(\"smwb-carousel\", local.class)}\n data-testid=\"carousel\"\n ref={mergeRefs(local.ref)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={local[\"aria-label\"]}\n style={rootStyle()}\n onMouseEnter={local.pauseOnHover ? () => setIsHovered(true) : undefined}\n onMouseLeave={local.pauseOnHover ? () => setIsHovered(false) : undefined}\n >\n <div class=\"smwb-carousel__inner\" ref={(el) => (rootEl = el)}>\n <Show when={showArrows()}>\n <Icon\n name=\"chevron_left\"\n size={local.arrowsSize}\n class={cn(\"smwb-carousel__arrow\", \"smwb-carousel__arrow_prev\")}\n style={{ top: `calc(50% - ${local.arrowsSize / 2}px)`, left: `${-local.arrowsSize / 2}px` }}\n onClick={() => goToSlide(getNextIndex(-1))}\n />\n </Show>\n <div\n ref={(el) => (trackEl = el)}\n class=\"smwb-carousel__track\"\n onMouseDown={onStart}\n onTouchStart={onStart}\n onDragStart={dragPrevent}\n onDragEnd={dragPrevent}\n >\n <div\n class=\"smwb-carousel__layer\"\n style={{\n transform: `translateX(calc(-${indent()}% + ${dragPx()}px))`,\n transition:\n isDragging() || animation() === undefined\n ? \"none\"\n : animation()\n ? \"transform 500ms cubic-bezier(.1, 0, .25, 1)\"\n : \"none\",\n }}\n >\n <For each={slides()}>\n {(child, index) => (\n <div id={`${slideId}${index()}`} class=\"smwb-carousel__slide\" style={getSlideStyle(slidesToShow())}>\n <div\n class={cn(\n \"smwb-carousel__slide-inner\",\n local.enableFullscreen && \"smwb-carousel__slide-inner_clickable\"\n )}\n onClick={local.enableFullscreen ? () => onSlideClick(index()) : undefined}\n >\n {child as JSX.Element}\n </div>\n </div>\n )}\n </For>\n </div>\n </div>\n <Show when={showArrows()}>\n <Icon\n name=\"chevron_right\"\n size={local.arrowsSize}\n class={cn(\"smwb-carousel__arrow\", \"smwb-carousel__arrow_next\")}\n style={{ top: `calc(50% - ${local.arrowsSize / 2}px)`, right: `${-local.arrowsSize / 2}px` }}\n onClick={() => goToSlide(getNextIndex(1))}\n />\n </Show>\n </div>\n <Show when={local.showNavigation}>\n <div class={cn(\"smwb-carousel__navigation\", local.navigationClassName)}>\n <For each={dots()}>\n {(dot) =>\n local.navigationDotRenderer ? (\n local.navigationDotRenderer(dot.index, dot.isActive, (i) => goToSlide(i))\n ) : (\n <div\n class={cn(\"smwb-carousel__navigation__dot\", dot.isActive && \"current\")}\n onClick={() => goToSlide(dot.nextIndex)}\n />\n )\n }\n </For>\n </div>\n </Show>\n <Show when={local.enableFullscreen}>\n <Modal\n open={fullscreenIndex() !== null}\n size=\"fullscreen\"\n backdrop=\"darkBlured\"\n class=\"smwb-carousel__fullscreen\"\n onClose={() => setFullscreenIndex(null)}\n aria-label=\"Image viewer\"\n >\n <div class=\"smwb-carousel__fullscreen-content\">\n <Show when={slidesCount() > 1}>\n <Icon\n name=\"chevron_left\"\n size={40}\n class={cn(\"smwb-carousel__fullscreen-arrow\", \"smwb-carousel__fullscreen-arrow_prev\")}\n onClick={() => moveFullscreen(-1)}\n />\n </Show>\n <div\n class=\"smwb-carousel__fullscreen-stage\"\n onTouchStart={onFullscreenTouchStart}\n onTouchMove={onFullscreenTouchMove}\n onTouchEnd={onFullscreenTouchEnd}\n >\n <div\n class=\"smwb-carousel__fullscreen-track\"\n style={{\n transform: `translateX(calc(-${(fullscreenIndex() ?? 0) * 100}% + ${fullscreenDragPx()}px))`,\n transition: isFullscreenDragging() ? \"none\" : \"transform 350ms cubic-bezier(.22, .61, .36, 1)\",\n }}\n >\n <For each={fullscreenClones()}>\n {(node, index) => (\n <div class=\"smwb-carousel__fullscreen-slide\" aria-hidden={index() !== fullscreenIndex()}>\n {node as JSX.Element}\n </div>\n )}\n </For>\n </div>\n </div>\n <Show when={slidesCount() > 1}>\n <Icon\n name=\"chevron_right\"\n size={40}\n class={cn(\"smwb-carousel__fullscreen-arrow\", \"smwb-carousel__fullscreen-arrow_next\")}\n onClick={() => moveFullscreen(1)}\n />\n </Show>\n <Icon\n name=\"close\"\n size={32}\n class=\"smwb-carousel__fullscreen-close\"\n onClick={() => setFullscreenIndex(null)}\n />\n </div>\n </Modal>\n </Show>\n </div>\n );\n}\n\nexport default Carousel;\n"],"names":["TAP_THRESHOLD","FLICK_VELOCITY","now","performance","Date","Carousel","props","merged","mergeProps","slidesToShow","startSlide","showNavigation","arrowsSize","autoplay","autoplayInterval","pauseOnHover","enableFullscreen","local","splitProps","resolved","resolveChildren","children","slides","toArray","slidesCount","length","getSlidesToShow","getStartSlide","showArrows","maxShift","Math","max","activeSlideIndex","setActiveSlideIndex","createSignal","animation","setAnimation","undefined","isHovered","setIsHovered","dragPx","setDragPx","isDragging","setIsDragging","fullscreenIndex","setFullscreenIndex","fullscreenDragPx","setFullscreenDragPx","isFullscreenDragging","setIsFullscreenDragging","rootEl","trackEl","motion","isPressed","startX","startY","lastX","lastT","axis","dragged","fullscreenTouchX","slideId","createUniqueId","createEffect","start","onSlideChange","goToSlide","index","target","clamp","detachListeners","mouse","removeEventListener","onMove","onEnd","event","isTouchEvent","touches","clientX","coordX","clientY","coordY","shiftX","shiftY","abs","preventDefault","stopPropagation","atStart","atEnd","offset","isMouseEvent","totalShift","widthPerSlide","offsetWidth","velocity","movedSlides","round","onStart","button","addEventListener","passive","onSlideClick","getNextIndex","direction","isSingle","totalGroups","ceil","activeIndex","isNextDisabled","nextIndex","getSlideIndexForMultipleParts","dots","count","result","currentIndex","isLast","push","isActive","indent","shiftSlides","getSlideWidth","rootStyle","createMemo","style","cellHeightValue","toCssLength","cellHeight","aspectRatioValue","toCssNumber","aspectRatio","gapValue","gap","maxWidthValue","maxWidth","moveFullscreen","prev","fullscreenClones","map","node","Node","cloneNode","String","timer","window","setInterval","onCleanup","clearInterval","onKeyDown","key","document","onFullscreenTouchStart","onFullscreenTouchMove","delta","onFullscreenTouchEnd","changedTouches","_el$","_tmpl$3","_el$2","firstChild","_el$3","_el$4","_$addEventListener","_ref$","mergeRefs","ref","_$use","el","_$insert","_$createComponent","Show","when","Icon","name","size","cn","top","left","onClick","dragPrevent","$$touchstart","$$mousedown","For","each","child","_el$9","_tmpl$4","_el$0","_$effect","_p$","_v$8","_v$9","getSlideStyle","_v$0","e","_$setAttribute","t","_$style","a","_$className","right","_el$5","_tmpl$","dot","navigationDotRenderer","i","_el$1","$$click","navigationClassName","Modal","open","backdrop","onClose","_el$6","_tmpl$2","_el$7","_el$8","$$touchend","$$touchmove","_el$10","_tmpl$5","_v$","_v$2","_$setStyleProperty","_v$3","class","_v$4","_v$5","_v$6","_v$7","o","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"carousel.js","sources":["../../../../src/components/dataDisplay/carousel/carousel.tsx"],"sourcesContent":["import {\n type JSX,\n type ParentProps,\n For,\n Show,\n children as resolveChildren,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { Modal } from \"../../feedBack/modal\";\nimport {\n clamp,\n coordX,\n coordY,\n dragPrevent,\n getSlideIndexForMultipleParts,\n getSlideStyle,\n getSlideWidth,\n getSlidesToShow,\n getStartSlide,\n isMouseEvent,\n isTouchEvent,\n toCssLength,\n toCssNumber,\n} from \"./utils\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface CarouselProps {\n slidesToShow?: number;\n startSlide?: number;\n class?: string;\n showNavigation?: boolean;\n showArrows?: boolean;\n arrowsSize?: number;\n navigationClassName?: string;\n onSlideChange?: (slideIndex: number) => void;\n navigationDotRenderer?: (index: number, isActive: boolean, onClick: (index: number) => void) => JSX.Element;\n \"aria-label\"?: string;\n autoplay?: boolean;\n autoplayInterval?: number;\n pauseOnHover?: boolean;\n /** Height of each cell/photo. Number is treated as px. Overrides the default 205px. */\n cellHeight?: number | string;\n /** Aspect ratio of each cell/photo (e.g. 0.9 or \"16 / 9\"). Overrides the default 0.9. */\n aspectRatio?: number | string;\n /** Per-side spacing around each slide. Number is treated as px (default 4). */\n gap?: number | string;\n /** Max width of the carousel. Number is treated as px (default 412). */\n maxWidth?: number | string;\n /** Open the clicked slide in a fullscreen lightbox (arrows / swipe / Esc to navigate & close). */\n enableFullscreen?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\ntype Axis = \"x\" | \"y\" | null;\n\ninterface Motion {\n isPressed: boolean;\n startX: number;\n startY: number;\n lastX: number;\n lastT: number;\n axis: Axis;\n dragged: boolean;\n}\n\nconst TAP_THRESHOLD = 8;\nconst FLICK_VELOCITY = 0.4;\n\nconst now = (): number => (typeof performance !== \"undefined\" ? performance.now() : Date.now());\n\nexport function Carousel(props: ParentProps<CarouselProps>): JSX.Element {\n const merged = mergeProps(\n {\n slidesToShow: 3,\n startSlide: 0,\n showNavigation: true,\n arrowsSize: 30,\n \"aria-label\": \"Carousel\",\n autoplay: false,\n autoplayInterval: 4000,\n pauseOnHover: true,\n enableFullscreen: false,\n },\n props\n );\n const [local] = splitProps(merged, [\n \"slidesToShow\",\n \"startSlide\",\n \"children\",\n \"class\",\n \"showNavigation\",\n \"showArrows\",\n \"arrowsSize\",\n \"navigationClassName\",\n \"onSlideChange\",\n \"navigationDotRenderer\",\n \"aria-label\",\n \"autoplay\",\n \"autoplayInterval\",\n \"pauseOnHover\",\n \"cellHeight\",\n \"aspectRatio\",\n \"gap\",\n \"maxWidth\",\n \"enableFullscreen\",\n \"ref\",\n ]);\n\n const resolved = resolveChildren(() => local.children);\n const slides = (): unknown[] => resolved.toArray();\n const slidesCount = (): number => slides().length;\n const slidesToShow = (): number => getSlidesToShow(local.slidesToShow, slidesCount());\n const startSlide = (): number => getStartSlide(local.startSlide, slidesCount());\n const showArrows = (): boolean => !!local.showArrows && slidesCount() > 1;\n const maxShift = (): number => Math.max(0, slidesCount() - slidesToShow());\n\n const [activeSlideIndex, setActiveSlideIndex] = createSignal(startSlide());\n const [animation, setAnimation] = createSignal<boolean | undefined>(undefined);\n const [isHovered, setIsHovered] = createSignal(false);\n const [dragPx, setDragPx] = createSignal(0);\n const [isDragging, setIsDragging] = createSignal(false);\n const [fullscreenIndex, setFullscreenIndex] = createSignal<number | null>(null);\n const [fullscreenDragPx, setFullscreenDragPx] = createSignal(0);\n const [isFullscreenDragging, setIsFullscreenDragging] = createSignal(false);\n\n let rootEl: HTMLDivElement | undefined;\n let trackEl: HTMLDivElement | undefined;\n const motion: Motion = { isPressed: false, startX: 0, startY: 0, lastX: 0, lastT: 0, axis: null, dragged: false };\n let fullscreenTouchX: number | null = null;\n const slideId = createUniqueId();\n\n createEffect(() => {\n slidesToShow();\n setAnimation(false);\n });\n\n createEffect(() => {\n const start = startSlide();\n setActiveSlideIndex(start);\n local.onSlideChange?.(start);\n if (animation() !== undefined) setAnimation(true);\n });\n\n const goToSlide = (index: number): void => {\n const target = clamp(index, 0, maxShift());\n setActiveSlideIndex(target);\n setAnimation(true);\n local.onSlideChange?.(target);\n };\n\n const detachListeners = (mouse: boolean): void => {\n if (!trackEl) return;\n trackEl.removeEventListener(mouse ? \"mousemove\" : \"touchmove\", onMove as EventListener);\n trackEl.removeEventListener(mouse ? \"mouseup\" : \"touchend\", onEnd as EventListener);\n if (mouse) trackEl.removeEventListener(\"mouseleave\", onEnd as EventListener);\n };\n\n const onMove = (event: MouseEvent | TouchEvent): void => {\n if (!rootEl || !motion.isPressed) return;\n if (isTouchEvent(event) && event.touches.length > 1) {\n onEnd(event);\n return;\n }\n\n const clientX = coordX(event);\n const clientY = coordY(event);\n const shiftX = clientX - motion.startX;\n const shiftY = clientY - motion.startY;\n\n if (motion.axis === null) {\n if (Math.abs(shiftX) < TAP_THRESHOLD && Math.abs(shiftY) < TAP_THRESHOLD) return;\n motion.axis = Math.abs(shiftX) >= Math.abs(shiftY) ? \"x\" : \"y\";\n motion.dragged = true;\n if (motion.axis === \"y\") {\n onEnd(event);\n return;\n }\n if (slidesCount() > 1) setIsDragging(true);\n }\n\n if (motion.axis !== \"x\") return;\n\n event.preventDefault();\n event.stopPropagation();\n\n if (slidesCount() > 1) {\n const atStart = activeSlideIndex() <= 0;\n const atEnd = activeSlideIndex() >= maxShift();\n const offset = (atStart && shiftX > 0) || (atEnd && shiftX < 0) ? shiftX * 0.35 : shiftX;\n setDragPx(offset);\n }\n\n motion.lastX = clientX;\n motion.lastT = now();\n };\n\n const onEnd = (event: MouseEvent | TouchEvent): void => {\n if (!motion.isPressed) return;\n\n const mouse = isMouseEvent(event);\n detachListeners(mouse);\n\n const { axis, dragged, startX, lastX, lastT } = motion;\n motion.isPressed = false;\n setIsDragging(false);\n\n if (axis === \"x\" && dragged && slidesCount() > 1 && rootEl) {\n const clientX = coordX(event);\n const totalShift = clientX - startX;\n const widthPerSlide = rootEl.offsetWidth / slidesToShow();\n const velocity = lastT ? (clientX - lastX) / Math.max(1, now() - lastT) : 0;\n\n let movedSlides = widthPerSlide > 0 ? Math.round(-totalShift / widthPerSlide) : 0;\n if (movedSlides === 0 && Math.abs(velocity) > FLICK_VELOCITY) {\n movedSlides = velocity < 0 ? 1 : -1;\n }\n goToSlide(activeSlideIndex() + movedSlides);\n }\n\n setDragPx(0);\n };\n\n const onStart: JSX.EventHandler<HTMLDivElement, MouseEvent | TouchEvent> = (event) => {\n if (!trackEl) return;\n const mouse = isMouseEvent(event);\n if (mouse && (event as MouseEvent).button !== 0) return;\n event.stopPropagation();\n\n motion.isPressed = true;\n motion.startX = coordX(event);\n motion.startY = coordY(event);\n motion.lastX = motion.startX;\n motion.lastT = now();\n motion.axis = null;\n motion.dragged = false;\n\n trackEl.addEventListener(mouse ? \"mousemove\" : \"touchmove\", onMove as EventListener, { passive: false });\n trackEl.addEventListener(mouse ? \"mouseup\" : \"touchend\", onEnd as EventListener);\n if (mouse) trackEl.addEventListener(\"mouseleave\", onEnd as EventListener);\n };\n\n const onSlideClick = (index: number): void => {\n if (motion.dragged) return;\n if (local.enableFullscreen) setFullscreenIndex(index);\n };\n\n const getNextIndex = (direction: 1 | -1): number => {\n const isSingle = slidesToShow() === 1;\n const totalGroups = isSingle ? slidesCount() : Math.ceil(slidesCount() / slidesToShow());\n const activeIndex = activeSlideIndex() + slidesToShow();\n const isNextDisabled = slidesCount() - slidesToShow() <= activeSlideIndex();\n const currentIndex = getSlideIndexForMultipleParts(activeIndex, slidesToShow(), slidesCount(), isNextDisabled);\n const nextIndex = (currentIndex + direction + totalGroups) % totalGroups;\n return isSingle ? nextIndex : nextIndex * slidesToShow();\n };\n\n const dots = (): Array<{ index: number; nextIndex: number; isActive: boolean }> => {\n const isNextDisabled = slidesCount() - slidesToShow() <= activeSlideIndex();\n const isSingle = slidesToShow() === 1;\n const count = isSingle ? slidesCount() : Math.ceil(slidesCount() / slidesToShow());\n const result: Array<{ index: number; nextIndex: number; isActive: boolean }> = [];\n for (let index = 0; index < count; index++) {\n let nextIndex = index;\n let currentIndex = activeSlideIndex();\n if (!isSingle) {\n const isLast = index === count - 1;\n const activeIndex = activeSlideIndex() + slidesToShow();\n nextIndex = isLast ? slidesCount() - slidesToShow() : index * slidesToShow();\n currentIndex = getSlideIndexForMultipleParts(activeIndex, slidesToShow(), slidesCount(), isNextDisabled);\n }\n result.push({ index, nextIndex, isActive: currentIndex === index });\n }\n return result;\n };\n\n const indent = (): number => {\n const shiftSlides = activeSlideIndex() > maxShift() ? maxShift() : activeSlideIndex();\n return getSlideWidth(slidesToShow()) * shiftSlides;\n };\n\n const rootStyle = createMemo<JSX.CSSProperties>(() => {\n const style: Record<string, string> = {};\n const cellHeightValue = toCssLength(local.cellHeight);\n const aspectRatioValue = toCssNumber(local.aspectRatio);\n const gapValue = toCssLength(local.gap);\n const maxWidthValue = toCssLength(local.maxWidth);\n if (cellHeightValue) style[\"--smwb-carousel-cell-height\"] = cellHeightValue;\n if (aspectRatioValue) style[\"--smwb-carousel-aspect-ratio\"] = aspectRatioValue;\n if (gapValue) style[\"--smwb-carousel-gap\"] = gapValue;\n if (maxWidthValue) style[\"--smwb-carousel-max-width\"] = maxWidthValue;\n return style;\n });\n\n const moveFullscreen = (direction: 1 | -1): void => {\n const prev = fullscreenIndex();\n if (prev === null) return;\n setFullscreenIndex((prev + direction + slidesCount()) % slidesCount());\n };\n\n // A DOM node can only live in one place, so the carousel's own slide nodes\n // can't be reused inside the modal — render clones of every slide into a\n // sliding track so navigation animates smoothly instead of swapping nodes.\n const fullscreenClones = createMemo<Array<Node | string>>(() =>\n slides().map((node) => {\n // `Node` is a browser global — guard it so this memo (which is evaluated\n // during render) does not throw `Node is not defined` under SSR.\n if (typeof Node !== \"undefined\" && node instanceof Node) return node.cloneNode(true);\n return node == null ? \"\" : String(node);\n })\n );\n\n // Autoplay\n createEffect(() => {\n if (!local.autoplay || slidesCount() <= 1 || (local.pauseOnHover && isHovered()) || fullscreenIndex() !== null) {\n return;\n }\n const timer = window.setInterval(() => goToSlide(getNextIndex(1)), local.autoplayInterval);\n onCleanup(() => window.clearInterval(timer));\n });\n\n // Keyboard navigation while the lightbox is open.\n createEffect(() => {\n if (fullscreenIndex() === null || slidesCount() <= 1) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowLeft\") moveFullscreen(-1);\n else if (event.key === \"ArrowRight\") moveFullscreen(1);\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const onFullscreenTouchStart = (event: TouchEvent): void => {\n fullscreenTouchX = event.touches[0]?.clientX ?? null;\n };\n\n const onFullscreenTouchMove = (event: TouchEvent): void => {\n if (fullscreenTouchX === null || slidesCount() <= 1) return;\n const delta = (event.touches[0]?.clientX ?? fullscreenTouchX) - fullscreenTouchX;\n setIsFullscreenDragging(true);\n setFullscreenDragPx(delta);\n };\n\n const onFullscreenTouchEnd = (event: TouchEvent): void => {\n const startX = fullscreenTouchX;\n fullscreenTouchX = null;\n setIsFullscreenDragging(false);\n setFullscreenDragPx(0);\n if (startX === null || slidesCount() <= 1) return;\n const delta = (event.changedTouches[0]?.clientX ?? startX) - startX;\n if (Math.abs(delta) > 40) moveFullscreen(delta < 0 ? 1 : -1);\n };\n\n return (\n <div\n class={cn(\"smwb-carousel\", local.class)}\n data-testid=\"carousel\"\n ref={mergeRefs(local.ref)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={local[\"aria-label\"]}\n style={rootStyle()}\n onMouseEnter={local.pauseOnHover ? () => setIsHovered(true) : undefined}\n onMouseLeave={local.pauseOnHover ? () => setIsHovered(false) : undefined}\n >\n <div class=\"smwb-carousel__inner\" ref={(el) => (rootEl = el)}>\n <Show when={showArrows()}>\n <Icon\n name=\"chevron_left\"\n size={local.arrowsSize}\n class={cn(\"smwb-carousel__arrow\", \"smwb-carousel__arrow_prev\")}\n style={{ top: `calc(50% - ${local.arrowsSize / 2}px)`, left: `${-local.arrowsSize / 2}px` }}\n onClick={() => goToSlide(getNextIndex(-1))}\n />\n </Show>\n <div\n ref={(el) => (trackEl = el)}\n class=\"smwb-carousel__track\"\n onMouseDown={onStart}\n onTouchStart={onStart}\n onDragStart={dragPrevent}\n onDragEnd={dragPrevent}\n >\n <div\n class=\"smwb-carousel__layer\"\n style={{\n transform: `translateX(calc(-${indent()}% + ${dragPx()}px))`,\n transition:\n isDragging() || animation() === undefined\n ? \"none\"\n : animation()\n ? \"transform 500ms cubic-bezier(.1, 0, .25, 1)\"\n : \"none\",\n }}\n >\n <For each={slides()}>\n {(child, index) => (\n <div id={`${slideId}${index()}`} class=\"smwb-carousel__slide\" style={getSlideStyle(slidesToShow())}>\n <div\n class={cn(\n \"smwb-carousel__slide-inner\",\n local.enableFullscreen && \"smwb-carousel__slide-inner_clickable\"\n )}\n onClick={local.enableFullscreen ? () => onSlideClick(index()) : undefined}\n >\n {child as JSX.Element}\n </div>\n </div>\n )}\n </For>\n </div>\n </div>\n <Show when={showArrows()}>\n <Icon\n name=\"chevron_right\"\n size={local.arrowsSize}\n class={cn(\"smwb-carousel__arrow\", \"smwb-carousel__arrow_next\")}\n style={{ top: `calc(50% - ${local.arrowsSize / 2}px)`, right: `${-local.arrowsSize / 2}px` }}\n onClick={() => goToSlide(getNextIndex(1))}\n />\n </Show>\n </div>\n <Show when={local.showNavigation}>\n <div class={cn(\"smwb-carousel__navigation\", local.navigationClassName)}>\n <For each={dots()}>\n {(dot) =>\n local.navigationDotRenderer ? (\n local.navigationDotRenderer(dot.index, dot.isActive, (i) => goToSlide(i))\n ) : (\n <div\n class={cn(\"smwb-carousel__navigation__dot\", dot.isActive && \"current\")}\n onClick={() => goToSlide(dot.nextIndex)}\n />\n )\n }\n </For>\n </div>\n </Show>\n <Show when={local.enableFullscreen}>\n <Modal\n open={fullscreenIndex() !== null}\n size=\"fullscreen\"\n backdrop=\"darkBlured\"\n class=\"smwb-carousel__fullscreen\"\n onClose={() => setFullscreenIndex(null)}\n aria-label=\"Image viewer\"\n >\n <div class=\"smwb-carousel__fullscreen-content\">\n <Show when={slidesCount() > 1}>\n <Icon\n name=\"chevron_left\"\n size={40}\n class={cn(\"smwb-carousel__fullscreen-arrow\", \"smwb-carousel__fullscreen-arrow_prev\")}\n onClick={() => moveFullscreen(-1)}\n />\n </Show>\n <div\n class=\"smwb-carousel__fullscreen-stage\"\n onTouchStart={onFullscreenTouchStart}\n onTouchMove={onFullscreenTouchMove}\n onTouchEnd={onFullscreenTouchEnd}\n >\n <div\n class=\"smwb-carousel__fullscreen-track\"\n style={{\n transform: `translateX(calc(-${(fullscreenIndex() ?? 0) * 100}% + ${fullscreenDragPx()}px))`,\n transition: isFullscreenDragging() ? \"none\" : \"transform 350ms cubic-bezier(.22, .61, .36, 1)\",\n }}\n >\n <For each={fullscreenClones()}>\n {(node, index) => (\n <div class=\"smwb-carousel__fullscreen-slide\" aria-hidden={index() !== fullscreenIndex()}>\n {node as JSX.Element}\n </div>\n )}\n </For>\n </div>\n </div>\n <Show when={slidesCount() > 1}>\n <Icon\n name=\"chevron_right\"\n size={40}\n class={cn(\"smwb-carousel__fullscreen-arrow\", \"smwb-carousel__fullscreen-arrow_next\")}\n onClick={() => moveFullscreen(1)}\n />\n </Show>\n <Icon\n name=\"close\"\n size={32}\n class=\"smwb-carousel__fullscreen-close\"\n onClick={() => setFullscreenIndex(null)}\n />\n </div>\n </Modal>\n </Show>\n </div>\n );\n}\n\nexport default Carousel;\n"],"names":["TAP_THRESHOLD","FLICK_VELOCITY","now","performance","Date","Carousel","props","merged","mergeProps","slidesToShow","startSlide","showNavigation","arrowsSize","autoplay","autoplayInterval","pauseOnHover","enableFullscreen","local","splitProps","resolved","resolveChildren","children","slides","toArray","slidesCount","length","getSlidesToShow","getStartSlide","showArrows","maxShift","Math","max","activeSlideIndex","setActiveSlideIndex","createSignal","animation","setAnimation","undefined","isHovered","setIsHovered","dragPx","setDragPx","isDragging","setIsDragging","fullscreenIndex","setFullscreenIndex","fullscreenDragPx","setFullscreenDragPx","isFullscreenDragging","setIsFullscreenDragging","rootEl","trackEl","motion","isPressed","startX","startY","lastX","lastT","axis","dragged","fullscreenTouchX","slideId","createUniqueId","createEffect","start","onSlideChange","goToSlide","index","target","clamp","detachListeners","mouse","removeEventListener","onMove","onEnd","event","isTouchEvent","touches","clientX","coordX","clientY","coordY","shiftX","shiftY","abs","preventDefault","stopPropagation","atStart","atEnd","offset","isMouseEvent","totalShift","widthPerSlide","offsetWidth","velocity","movedSlides","round","onStart","button","addEventListener","passive","onSlideClick","getNextIndex","direction","isSingle","totalGroups","ceil","activeIndex","isNextDisabled","nextIndex","getSlideIndexForMultipleParts","dots","count","result","currentIndex","isLast","push","isActive","indent","shiftSlides","getSlideWidth","rootStyle","createMemo","style","cellHeightValue","toCssLength","cellHeight","aspectRatioValue","toCssNumber","aspectRatio","gapValue","gap","maxWidthValue","maxWidth","moveFullscreen","prev","fullscreenClones","map","node","Node","cloneNode","String","timer","window","setInterval","onCleanup","clearInterval","onKeyDown","key","document","onFullscreenTouchStart","onFullscreenTouchMove","delta","onFullscreenTouchEnd","changedTouches","_el$","_tmpl$3","_el$2","firstChild","_el$3","_el$4","_$addEventListener","_ref$","mergeRefs","ref","_$use","el","_$insert","_$createComponent","Show","when","Icon","name","size","cn","top","left","onClick","dragPrevent","$$touchstart","$$mousedown","For","each","child","_el$9","_tmpl$4","_el$0","_$effect","_p$","_v$8","_v$9","getSlideStyle","_v$0","e","_$setAttribute","t","_$style","a","_$className","right","_el$5","_tmpl$","dot","navigationDotRenderer","i","_el$1","$$click","navigationClassName","Modal","open","backdrop","onClose","_el$6","_tmpl$2","_el$7","_el$8","$$touchend","$$touchmove","_el$10","_tmpl$5","_v$","_v$2","_$setStyleProperty","_v$3","class","_v$4","_v$5","_v$6","_v$7","o","_$delegateEvents"],"mappings":";;;;;;;;;AA0EA,MAAMA,KAAgB,GAChBC,KAAiB,KAEjBC,IAAMA,MAAe,OAAOC,cAAgB,MAAcA,YAAYD,IAAAA,IAAQE,KAAKF,IAAAA;AAElF,SAASG,GAASC,IAAgD;AACvE,QAAMC,KAASC,GACb;AAAA,IACEC,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IACZ,cAAc;AAAA,IACdC,UAAU;AAAA,IACVC,kBAAkB;AAAA,IAClBC,cAAc;AAAA,IACdC,kBAAkB;AAAA,EAAA,GAEpBV,EACF,GACM,CAACW,CAAK,IAAIC,GAAWX,IAAQ,CACjC,gBACA,cACA,YACA,SACA,kBACA,cACA,cACA,uBACA,iBACA,yBACA,cACA,YACA,oBACA,gBACA,cACA,eACA,OACA,YACA,oBACA,KAAK,CACN,GAEKY,KAAWC,GAAgB,MAAMH,EAAMI,QAAQ,GAC/CC,IAASA,MAAiBH,GAASI,QAAAA,GACnCC,IAAcA,MAAcF,EAAAA,EAASG,QACrChB,IAAeA,MAAciB,GAAgBT,EAAMR,cAAce,GAAa,GAC9Ed,IAAaA,MAAciB,GAAcV,EAAMP,YAAYc,GAAa,GACxEI,IAAaA,MAAe,CAAC,CAACX,EAAMW,cAAcJ,MAAgB,GAClEK,IAAWA,MAAcC,KAAKC,IAAI,GAAGP,EAAAA,IAAgBf,GAAc,GAEnE,CAACuB,GAAkBC,CAAmB,IAAIC,EAAaxB,GAAY,GACnE,CAACyB,GAAWC,CAAY,IAAIF,EAAkCG,MAAS,GACvE,CAACC,IAAWC,CAAY,IAAIL,EAAa,EAAK,GAC9C,CAACM,IAAQC,CAAS,IAAIP,EAAa,CAAC,GACpC,CAACQ,IAAYC,CAAa,IAAIT,EAAa,EAAK,GAChD,CAACU,GAAiBC,CAAkB,IAAIX,EAA4B,IAAI,GACxE,CAACY,IAAkBC,EAAmB,IAAIb,EAAa,CAAC,GACxD,CAACc,IAAsBC,EAAuB,IAAIf,EAAa,EAAK;AAE1E,MAAIgB,GACAC;AACJ,QAAMC,IAAiB;AAAA,IAAEC,WAAW;AAAA,IAAOC,QAAQ;AAAA,IAAGC,QAAQ;AAAA,IAAGC,OAAO;AAAA,IAAGC,OAAO;AAAA,IAAGC,MAAM;AAAA,IAAMC,SAAS;AAAA,EAAA;AAC1G,MAAIC,IAAkC;AACtC,QAAMC,KAAUC,GAAAA;AAEhBC,EAAAA,EAAa,MAAM;AACjBtD,IAAAA,EAAAA,GACA2B,EAAa,EAAK;AAAA,EACpB,CAAC,GAED2B,EAAa,MAAM;AACjB,UAAMC,IAAQtD,EAAAA;AACduB,IAAAA,EAAoB+B,CAAK,GACzB/C,EAAMgD,gBAAgBD,CAAK,GACvB7B,EAAAA,MAAgBE,UAAWD,EAAa,EAAI;AAAA,EAClD,CAAC;AAED,QAAM8B,IAAYA,CAACC,MAAwB;AACzC,UAAMC,IAASC,GAAMF,GAAO,GAAGtC,GAAU;AACzCI,IAAAA,EAAoBmC,CAAM,GAC1BhC,EAAa,EAAI,GACjBnB,EAAMgD,gBAAgBG,CAAM;AAAA,EAC9B,GAEME,KAAkBA,CAACC,MAAyB;AAChD,IAAKpB,MACLA,EAAQqB,oBAAoBD,IAAQ,cAAc,aAAaE,EAAuB,GACtFtB,EAAQqB,oBAAoBD,IAAQ,YAAY,YAAYG,CAAsB,GAC9EH,KAAOpB,EAAQqB,oBAAoB,cAAcE,CAAsB;AAAA,EAC7E,GAEMD,KAASA,CAACE,MAAyC;AACvD,QAAI,CAACzB,KAAU,CAACE,EAAOC,UAAW;AAClC,QAAIuB,GAAaD,CAAK,KAAKA,EAAME,QAAQpD,SAAS,GAAG;AACnDiD,MAAAA,EAAMC,CAAK;AACX;AAAA,IACF;AAEA,UAAMG,IAAUC,EAAOJ,CAAK,GACtBK,IAAUC,GAAON,CAAK,GACtBO,IAASJ,IAAU1B,EAAOE,QAC1B6B,IAASH,IAAU5B,EAAOG;AAEhC,QAAIH,EAAOM,SAAS,MAAM;AACxB,UAAI5B,KAAKsD,IAAIF,CAAM,IAAIlF,MAAiB8B,KAAKsD,IAAID,CAAM,IAAInF,GAAe;AAG1E,UAFAoD,EAAOM,OAAO5B,KAAKsD,IAAIF,CAAM,KAAKpD,KAAKsD,IAAID,CAAM,IAAI,MAAM,KAC3D/B,EAAOO,UAAU,IACbP,EAAOM,SAAS,KAAK;AACvBgB,QAAAA,EAAMC,CAAK;AACX;AAAA,MACF;AACA,MAAInD,EAAAA,IAAgB,KAAGmB,EAAc,EAAI;AAAA,IAC3C;AAEA,QAAIS,EAAOM,SAAS,KAKpB;AAAA,UAHAiB,EAAMU,eAAAA,GACNV,EAAMW,gBAAAA,GAEF9D,EAAAA,IAAgB,GAAG;AACrB,cAAM+D,IAAUvD,OAAsB,GAChCwD,IAAQxD,EAAAA,KAAsBH,EAAAA,GAC9B4D,IAAUF,KAAWL,IAAS,KAAOM,KAASN,IAAS,IAAKA,IAAS,OAAOA;AAClFzC,QAAAA,EAAUgD,CAAM;AAAA,MAClB;AAEArC,MAAAA,EAAOI,QAAQsB,GACf1B,EAAOK,QAAQvD,EAAAA;AAAAA;AAAAA,EACjB,GAEMwE,IAAQA,CAACC,MAAyC;AACtD,QAAI,CAACvB,EAAOC,UAAW;AAEvB,UAAMkB,IAAQmB,GAAaf,CAAK;AAChCL,IAAAA,GAAgBC,CAAK;AAErB,UAAM;AAAA,MAAEb,MAAAA;AAAAA,MAAMC,SAAAA;AAAAA,MAASL,QAAAA;AAAAA,MAAQE,OAAAA;AAAAA,MAAOC,OAAAA;AAAAA,IAAAA,IAAUL;AAIhD,QAHAA,EAAOC,YAAY,IACnBV,EAAc,EAAK,GAEfe,MAAS,OAAOC,KAAWnC,EAAAA,IAAgB,KAAK0B,GAAQ;AAC1D,YAAM4B,IAAUC,EAAOJ,CAAK,GACtBgB,IAAab,IAAUxB,GACvBsC,IAAgB1C,EAAO2C,cAAcpF,EAAAA,GACrCqF,IAAWrC,KAASqB,IAAUtB,KAAS1B,KAAKC,IAAI,GAAG7B,MAAQuD,CAAK,IAAI;AAE1E,UAAIsC,IAAcH,IAAgB,IAAI9D,KAAKkE,MAAM,CAACL,IAAaC,CAAa,IAAI;AAChF,MAAIG,MAAgB,KAAKjE,KAAKsD,IAAIU,CAAQ,IAAI7F,OAC5C8F,IAAcD,IAAW,IAAI,IAAI,KAEnC5B,EAAUlC,EAAAA,IAAqB+D,CAAW;AAAA,IAC5C;AAEAtD,IAAAA,EAAU,CAAC;AAAA,EACb,GAEMwD,KAAsEtB,CAAAA,MAAU;AACpF,QAAI,CAACxB,EAAS;AACd,UAAMoB,IAAQmB,GAAaf,CAAK;AAChC,IAAIJ,KAAUI,EAAqBuB,WAAW,MAC9CvB,EAAMW,gBAAAA,GAENlC,EAAOC,YAAY,IACnBD,EAAOE,SAASyB,EAAOJ,CAAK,GAC5BvB,EAAOG,SAAS0B,GAAON,CAAK,GAC5BvB,EAAOI,QAAQJ,EAAOE,QACtBF,EAAOK,QAAQvD,EAAAA,GACfkD,EAAOM,OAAO,MACdN,EAAOO,UAAU,IAEjBR,EAAQgD,iBAAiB5B,IAAQ,cAAc,aAAaE,IAAyB;AAAA,MAAE2B,SAAS;AAAA,IAAA,CAAO,GACvGjD,EAAQgD,iBAAiB5B,IAAQ,YAAY,YAAYG,CAAsB,GAC3EH,KAAOpB,EAAQgD,iBAAiB,cAAczB,CAAsB;AAAA,EAC1E,GAEM2B,KAAeA,CAAClC,MAAwB;AAC5C,IAAIf,EAAOO,WACP1C,EAAMD,oBAAkB6B,EAAmBsB,CAAK;AAAA,EACtD,GAEMmC,IAAeA,CAACC,MAA8B;AAClD,UAAMC,IAAW/F,QAAmB,GAC9BgG,IAAcD,IAAWhF,EAAAA,IAAgBM,KAAK4E,KAAKlF,MAAgBf,GAAc,GACjFkG,IAAc3E,EAAAA,IAAqBvB,EAAAA,GACnCmG,IAAiBpF,EAAAA,IAAgBf,EAAAA,KAAkBuB,EAAAA,GAEnD6E,KADeC,GAA8BH,GAAalG,KAAgBe,EAAAA,GAAeoF,CAAc,IAC3EL,IAAYE,KAAeA;AAC7D,WAAOD,IAAWK,IAAYA,IAAYpG,EAAAA;AAAAA,EAC5C,GAEMsG,KAAOA,MAAsE;AACjF,UAAMH,IAAiBpF,EAAAA,IAAgBf,EAAAA,KAAkBuB,EAAAA,GACnDwE,IAAW/F,QAAmB,GAC9BuG,IAAQR,IAAWhF,EAAAA,IAAgBM,KAAK4E,KAAKlF,MAAgBf,GAAc,GAC3EwG,IAAyE,CAAA;AAC/E,aAAS9C,IAAQ,GAAGA,IAAQ6C,GAAO7C,KAAS;AAC1C,UAAI0C,IAAY1C,GACZ+C,IAAelF,EAAAA;AACnB,UAAI,CAACwE,GAAU;AACb,cAAMW,IAAShD,MAAU6C,IAAQ,GAC3BL,IAAc3E,EAAAA,IAAqBvB,EAAAA;AACzCoG,QAAAA,IAAYM,IAAS3F,EAAAA,IAAgBf,EAAAA,IAAiB0D,IAAQ1D,EAAAA,GAC9DyG,IAAeJ,GAA8BH,GAAalG,EAAAA,GAAgBe,EAAAA,GAAeoF,CAAc;AAAA,MACzG;AACAK,MAAAA,EAAOG,KAAK;AAAA,QAAEjD,OAAAA;AAAAA,QAAO0C,WAAAA;AAAAA,QAAWQ,UAAUH,MAAiB/C;AAAAA,MAAAA,CAAO;AAAA,IACpE;AACA,WAAO8C;AAAAA,EACT,GAEMK,KAASA,MAAc;AAC3B,UAAMC,IAAcvF,EAAAA,IAAqBH,MAAaA,EAAAA,IAAaG,EAAAA;AACnE,WAAOwF,GAAc/G,EAAAA,CAAc,IAAI8G;AAAAA,EACzC,GAEME,KAAYC,GAA8B,MAAM;AACpD,UAAMC,IAAgC,CAAA,GAChCC,IAAkBC,EAAY5G,EAAM6G,UAAU,GAC9CC,IAAmBC,GAAY/G,EAAMgH,WAAW,GAChDC,IAAWL,EAAY5G,EAAMkH,GAAG,GAChCC,IAAgBP,EAAY5G,EAAMoH,QAAQ;AAChD,WAAIT,MAAiBD,EAAM,6BAA6B,IAAIC,IACxDG,MAAkBJ,EAAM,8BAA8B,IAAII,IAC1DG,MAAUP,EAAM,qBAAqB,IAAIO,IACzCE,MAAeT,EAAM,2BAA2B,IAAIS,IACjDT;AAAAA,EACT,CAAC,GAEKW,IAAiBA,CAAC/B,MAA4B;AAClD,UAAMgC,IAAO3F,EAAAA;AACb,IAAI2F,MAAS,QACb1F,GAAoB0F,IAAOhC,IAAY/E,EAAAA,KAAiBA,GAAa;AAAA,EACvE,GAKMgH,KAAmBd,GAAiC,MACxDpG,EAAAA,EAASmH,IAAKC,CAAAA,MAGR,OAAOC,OAAS,OAAeD,aAAgBC,OAAaD,EAAKE,UAAU,EAAI,IAC5EF,KAAQ,OAAO,KAAKG,OAAOH,CAAI,CACvC,CACH;AAGA3E,EAAAA,EAAa,MAAM;AACjB,QAAI,CAAC9C,EAAMJ,YAAYW,EAAAA,KAAiB,KAAMP,EAAMF,gBAAgBuB,GAAAA,KAAgBM,EAAAA,MAAsB;AACxG;AAEF,UAAMkG,IAAQC,OAAOC,YAAY,MAAM9E,EAAUoC,EAAa,CAAC,CAAC,GAAGrF,EAAMH,gBAAgB;AACzFmI,IAAAA,GAAU,MAAMF,OAAOG,cAAcJ,CAAK,CAAC;AAAA,EAC7C,CAAC,GAGD/E,EAAa,MAAM;AACjB,QAAInB,EAAAA,MAAsB,QAAQpB,EAAAA,KAAiB,EAAG;AACtD,UAAM2H,IAAYA,CAACxE,MAA+B;AAChD,MAAIA,EAAMyE,QAAQ,cAAad,EAAe,EAAE,IACvC3D,EAAMyE,QAAQ,gBAAcd,EAAe,CAAC;AAAA,IACvD;AACAe,aAASlD,iBAAiB,WAAWgD,CAAS,GAC9CF,GAAU,MAAMI,SAAS7E,oBAAoB,WAAW2E,CAAS,CAAC;AAAA,EACpE,CAAC;AAED,QAAMG,KAAyBA,CAAC3E,MAA4B;AAC1Df,IAAAA,IAAmBe,EAAME,QAAQ,CAAC,GAAGC,WAAW;AAAA,EAClD,GAEMyE,KAAwBA,CAAC5E,MAA4B;AACzD,QAAIf,MAAqB,QAAQpC,EAAAA,KAAiB,EAAG;AACrD,UAAMgI,KAAS7E,EAAME,QAAQ,CAAC,GAAGC,WAAWlB,KAAoBA;AAChEX,IAAAA,GAAwB,EAAI,GAC5BF,GAAoByG,CAAK;AAAA,EAC3B,GAEMC,KAAuBA,CAAC9E,MAA4B;AACxD,UAAMrB,IAASM;AAIf,QAHAA,IAAmB,MACnBX,GAAwB,EAAK,GAC7BF,GAAoB,CAAC,GACjBO,MAAW,QAAQ9B,EAAAA,KAAiB,EAAG;AAC3C,UAAMgI,KAAS7E,EAAM+E,eAAe,CAAC,GAAG5E,WAAWxB,KAAUA;AAC7D,IAAIxB,KAAKsD,IAAIoE,CAAK,IAAI,MAAIlB,EAAekB,IAAQ,IAAI,IAAI,EAAE;AAAA,EAC7D;AAEA,UAAA,MAAA;AAAA,QAAAG,IAAAC,MAAAC,IAAAF,EAAAG,YAAAC,IAAAF,EAAAC,YAAAE,IAAAD,EAAAD;AAAAG,IAAAA,EAAAN,GAAA,cAUkB1I,EAAMF,eAAe,MAAMwB,EAAa,EAAK,IAAIF,MAAS,GAAA4H,EAAAN,GAAA,cAD1D1I,EAAMF,eAAe,MAAMwB,EAAa,EAAI,IAAIF,MAAS;AAAA,QAAA6H,IALlEC,GAAUlJ,EAAMmJ,GAAG;AAAC,kBAAAF,KAAA,cAAAG,EAAAH,GAAAP,CAAA,GAAAU,EAQeC,CAAAA,MAAQpH,IAASoH,GAAGT,CAAA,GAAAU,EAAAV,GAAAW,EACzDC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE9I,EAAAA;AAAAA,MAAY;AAAA,MAAA,IAAAP,WAAA;AAAA,eAAAmJ,EACrBG,GAAI;AAAA,UACHC,MAAI;AAAA,UAAA,IACJC,OAAI;AAAA,mBAAE5J,EAAML;AAAAA,UAAU;AAAA,UAAA,IAAA,QAAA;AAAA,mBACfkK,EAAG,wBAAwB,2BAA2B;AAAA,UAAC;AAAA,UAAA,IAC9DnD,QAAK;AAAA,mBAAE;AAAA,cAAEoD,KAAK,cAAc9J,EAAML,aAAa,CAAC;AAAA,cAAOoK,MAAM,GAAG,CAAC/J,EAAML,aAAa,CAAC;AAAA,YAAA;AAAA,UAAM;AAAA,UAC3FqK,SAASA,MAAM/G,EAAUoC,EAAa,EAAE,CAAC;AAAA,QAAA,CAAC;AAAA,MAAA;AAAA,IAAA,CAAA,GAAAyD,CAAA,GAAAE,EAAAF,GAAA,WASjCmB,EAAW,GAAAjB,EAAAF,GAAA,aADTmB,EAAW,GAAAnB,EAAAoB,eADVlF,IAAO8D,EAAAqB,cADRnF,IAAOoE,EAFdC,CAAAA,MAAQnH,IAAUmH,GAAGP,CAAA,GAAAQ,EAAAP,GAAAQ,EAmBxBa,GAAG;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEhK,EAAAA;AAAAA,MAAQ;AAAA,MAAAD,UAChBA,CAACkK,GAAOpH,OAAK,MAAA;AAAA,YAAAqH,IAAAC,GAAAA,GAAAC,IAAAF,EAAA1B;AAAAG,eAAAA,EAAAyB,GAAA,SAOCzK,EAAMD,mBAAmB,MAAMqF,GAAalC,EAAAA,CAAO,IAAI9B,QAAS,EAAA,GAAAkI,EAAAmB,GAExEH,CAAoB,GAAAI,EAAAC,CAAAA,MAAA;AAAA,cAAAC,IARhB,GAAGhI,EAAO,GAAGM,EAAAA,CAAO,IAAE2H,IAAsCC,GAActL,EAAAA,CAAc,GAACuL,KAEvFlB,EACL,8BACA7J,EAAMD,oBAAoB,sCAC5B;AAAC6K,iBAAAA,MAAAD,EAAAK,KAAAC,EAAAV,GAAA,MAAAI,EAAAK,IAAAJ,CAAA,GAAAD,EAAAO,IAAAC,GAAAZ,GAAAM,GAAAF,EAAAO,CAAA,GAAAH,OAAAJ,EAAAS,KAAAC,EAAAZ,GAAAE,EAAAS,IAAAL,EAAA,GAAAJ;AAAAA,QAAA,GAAA;AAAA,UAAAK,GAAA5J;AAAAA,UAAA8J,GAAA9J;AAAAA,UAAAgK,GAAAhK;AAAAA,QAAAA,CAAA,GAAAmJ;AAAAA,MAAA,GAAA;AAAA,IAAA,CAMN,CAAA,GAAAjB,EAAAV,GAAAW,EAINC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAE9I,EAAAA;AAAAA,MAAY;AAAA,MAAA,IAAAP,WAAA;AAAA,eAAAmJ,EACrBG,GAAI;AAAA,UACHC,MAAI;AAAA,UAAA,IACJC,OAAI;AAAA,mBAAE5J,EAAML;AAAAA,UAAU;AAAA,UAAA,IAAA,QAAA;AAAA,mBACfkK,EAAG,wBAAwB,2BAA2B;AAAA,UAAC;AAAA,UAAA,IAC9DnD,QAAK;AAAA,mBAAE;AAAA,cAAEoD,KAAK,cAAc9J,EAAML,aAAa,CAAC;AAAA,cAAO2L,OAAO,GAAG,CAACtL,EAAML,aAAa,CAAC;AAAA,YAAA;AAAA,UAAM;AAAA,UAC5FqK,SAASA,MAAM/G,EAAUoC,EAAa,CAAC,CAAC;AAAA,QAAA,CAAC;AAAA,MAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAiE,EAAAZ,GAAAa,EAI9CC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzJ,EAAMN;AAAAA,MAAc;AAAA,MAAA,IAAAU,WAAA;AAAA,YAAAmL,IAAAC,GAAAA;AAAAlC,eAAAA,EAAAiC,GAAAhC,EAE3Ba,GAAG;AAAA,UAAA,IAACC,OAAI;AAAA,mBAAEvE,GAAAA;AAAAA,UAAM;AAAA,UAAA1F,UACbqL,CAAAA,MACAzL,EAAM0L,wBACJ1L,EAAM0L,sBAAsBD,EAAIvI,OAAOuI,EAAIrF,UAAWuF,CAAAA,MAAM1I,EAAU0I,CAAC,CAAC,KAAC,MAAA;AAAA,gBAAAC,IAAAJ,GAAAA;AAAAI,mBAAAA,EAAAC,UAI9D,MAAM5I,EAAUwI,EAAI7F,SAAS,GAAC8E,EAAA,MAAAW,EAAAO,GADhC/B,EAAG,kCAAkC4B,EAAIrF,YAAY,SAAS,CAAC,CAAA,GAAAwF;AAAAA,UAAA,GAAA;AAAA,QAAA,CAGzE,CAAA,GAAAlB,EAAA,MAAAW,EAAAE,GAVK1B,EAAG,6BAA6B7J,EAAM8L,mBAAmB,CAAC,CAAA,GAAAP;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAjC,EAAAZ,GAAAa,EAevEC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEzJ,EAAMD;AAAAA,MAAgB;AAAA,MAAA,IAAAK,WAAA;AAAA,eAAAmJ,EAC/BwC,IAAK;AAAA,UAAA,IACJC,OAAI;AAAA,mBAAErK,QAAsB;AAAA,UAAI;AAAA,UAChCiI,MAAI;AAAA,UACJqC,UAAQ;AAAA,UAAA,OAAA;AAAA,UAERC,SAASA,MAAMtK,EAAmB,IAAI;AAAA,UAAC,cAAA;AAAA,UAAA,IAAAxB,WAAA;AAAA,gBAAA+L,IAAAC,GAAAA,GAAAC,IAAAF,EAAAtD,YAAAyD,IAAAD,EAAAxD;AAAAS,mBAAAA,EAAA6C,GAAA5C,EAIpCC,GAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAElJ,MAAgB;AAAA,cAAC;AAAA,cAAA,IAAAH,WAAA;AAAA,uBAAAmJ,EAC1BG,GAAI;AAAA,kBACHC,MAAI;AAAA,kBACJC,MAAM;AAAA,kBAAE,IAAA,QAAA;AAAA,2BACDC,EAAG,mCAAmC,sCAAsC;AAAA,kBAAC;AAAA,kBACpFG,SAASA,MAAM3C,EAAe,EAAE;AAAA,gBAAA,CAAC;AAAA,cAAA;AAAA,YAAA,CAAA,GAAAgF,CAAA,GAAAA,EAAAE,aAOvB/D,IAAoB6D,EAAAG,cADnBlE,IAAqB+D,EAAAnC,eADpB7B,IAAsBiB,EAAAgD,GAAA/C,EAWjCa,GAAG;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAE9C,GAAAA;AAAAA,cAAkB;AAAA,cAAAnH,UAC1BA,CAACqH,GAAMvE,OAAK,MAAA;AAAA,oBAAAuJ,IAAAC,GAAAA;AAAApD,uBAAAA,EAAAmD,GAERhF,CAAmB,GAAAiD,EAAA,MAAAO,EAAAwB,GAAA,eADoCvJ,QAAYvB,EAAAA,CAAiB,CAAA,GAAA8K;AAAAA,cAAA,GAAA;AAAA,YAAA,CAGxF,CAAA,GAAAnD,EAAA6C,GAAA5C,EAINC,GAAI;AAAA,cAAA,IAACC,OAAI;AAAA,uBAAElJ,MAAgB;AAAA,cAAC;AAAA,cAAA,IAAAH,WAAA;AAAA,uBAAAmJ,EAC1BG,GAAI;AAAA,kBACHC,MAAI;AAAA,kBACJC,MAAM;AAAA,kBAAE,IAAA,QAAA;AAAA,2BACDC,EAAG,mCAAmC,sCAAsC;AAAA,kBAAC;AAAA,kBACpFG,SAASA,MAAM3C,EAAe,CAAC;AAAA,gBAAA,CAAC;AAAA,cAAA;AAAA,YAAA,CAAA,GAAA,IAAA,GAAAiC,EAAA6C,GAAA5C,EAGnCG,GAAI;AAAA,cACHC,MAAI;AAAA,cACJC,MAAM;AAAA,cAAE,OAAA;AAAA,cAERI,SAASA,MAAMpI,EAAmB,IAAI;AAAA,YAAA,CAAC,GAAA,IAAA,GAAA8I,EAAAC,CAAAA,MAAA;AAAA,kBAAAgC,IAzBxB,qBAAqBhL,EAAAA,KAAqB,KAAK,GAAG,OAAOE,GAAAA,CAAkB,QAAM+K,IAChF7K,GAAAA,IAAyB,SAAS;AAAgD4K,qBAAAA,MAAAhC,EAAAK,KAAA6B,EAAAP,GAAA,aAAA3B,EAAAK,IAAA2B,CAAA,GAAAC,MAAAjC,EAAAO,KAAA2B,EAAAP,GAAA,cAAA3B,EAAAO,IAAA0B,CAAA,GAAAjC;AAAAA,YAAA,GAAA;AAAA,cAAAK,GAAA5J;AAAAA,cAAA8J,GAAA9J;AAAAA,YAAAA,CAAA,GAAA+K;AAAAA,UAAA;AAAA,QAAA,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAzB,EAAAC,CAAAA,MAAA;AAAA,UAAAmC,IA/GnGjD,EAAG,iBAAiB7J,EAAM+M,KAAK,GAACC,IAK3BhN,EAAM,YAAY,GAACiN,IACxBzG,GAAAA,GAAW0G,IAyBC,oBAAoB7G,GAAAA,CAAQ,OAAO9E,GAAAA,CAAQ,QAAM4L,IAE1D1L,GAAAA,KAAgBP,EAAAA,MAAgBE,SAC5B,SACAF,EAAAA,IACE,gDACA;AAAM4L,aAAAA,MAAAnC,EAAAK,KAAAK,EAAA3C,GAAAiC,EAAAK,IAAA8B,CAAA,GAAAE,MAAArC,EAAAO,KAAAD,EAAAvC,GAAA,cAAAiC,EAAAO,IAAA8B,CAAA,GAAArC,EAAAS,IAAAD,GAAAzC,GAAAuE,GAAAtC,EAAAS,CAAA,GAAA8B,MAAAvC,EAAAyC,KAAAP,EAAA9D,GAAA,aAAA4B,EAAAyC,IAAAF,CAAA,GAAAC,MAAAxC,EAAAgB,KAAAkB,EAAA9D,GAAA,cAAA4B,EAAAgB,IAAAwB,CAAA,GAAAxC;AAAAA,IAAA,GAAA;AAAA,MAAAK,GAAA5J;AAAAA,MAAA8J,GAAA9J;AAAAA,MAAAgK,GAAAhK;AAAAA,MAAAgM,GAAAhM;AAAAA,MAAAuK,GAAAvK;AAAAA,IAAAA,CAAA,GAAAsH;AAAAA,EAAA,GAAA;AAyG5B;AAEwB2E,GAAA,CAAA,aAAA,cAAA,aAAA,YAAA,OAAA,CAAA;"}
@@ -1,10 +1,10 @@
1
- import { createComponent as l, effect as d, className as g, setAttribute as r, Portal as _, template as f, delegateEvents as y } from "solid-js/web";
2
- import { createSignal as k, Show as u } from "solid-js";
1
+ import { createComponent as l, effect as d, className as g, setAttribute as r, Portal as _, isServer as y, template as f, delegateEvents as k } from "solid-js/web";
2
+ import { createSignal as C, Show as u } from "solid-js";
3
3
  import b from "clsx";
4
- import { createCssTransition as C } from "../../../primitives/createCssTransition.js";
5
- var $ = /* @__PURE__ */ f("<button type=button data-testid=chat-attachment-image><img class=smwb-chat-attachment-image__img>"), A = /* @__PURE__ */ f("<div role=dialog aria-modal=true data-testid=chat-attachment-image-overlay><img class=smwb-chat-attachment-image__overlay-img>");
6
- function D(a) {
7
- const [w, s] = k(!1), h = C({
4
+ import { createCssTransition as $ } from "../../../primitives/createCssTransition.js";
5
+ var A = /* @__PURE__ */ f("<button type=button data-testid=chat-attachment-image><img class=smwb-chat-attachment-image__img>"), S = /* @__PURE__ */ f("<div role=dialog aria-modal=true data-testid=chat-attachment-image-overlay><img class=smwb-chat-attachment-image__overlay-img>");
6
+ function E(a) {
7
+ const [w, s] = C(!1), v = $({
8
8
  in: w,
9
9
  timeout: {
10
10
  enter: 150,
@@ -19,11 +19,11 @@ function D(a) {
19
19
  get when() {
20
20
  return a.attachment.url;
21
21
  },
22
- children: (v) => [(() => {
23
- var e = $(), n = e.firstChild;
22
+ children: (h) => [(() => {
23
+ var e = A(), n = e.firstChild;
24
24
  return e.$$click = () => s(!0), d((t) => {
25
- var m = b("smwb-chat-attachment-image", a.class), i = a.attachment.name, c = v(), o = a.attachment.name;
26
- return m !== t.e && g(e, t.e = m), i !== t.t && r(e, "aria-label", t.t = i), c !== t.a && r(n, "src", t.a = c), o !== t.o && r(n, "alt", t.o = o), t;
25
+ var i = b("smwb-chat-attachment-image", a.class), m = a.attachment.name, c = h(), o = a.attachment.name;
26
+ return i !== t.e && g(e, t.e = i), m !== t.t && r(e, "aria-label", t.t = m), c !== t.a && r(n, "src", t.a = c), o !== t.o && r(n, "alt", t.o = o), t;
27
27
  }, {
28
28
  e: void 0,
29
29
  t: void 0,
@@ -32,18 +32,18 @@ function D(a) {
32
32
  }), e;
33
33
  })(), l(u, {
34
34
  get when() {
35
- return h.mounted();
35
+ return v.mounted();
36
36
  },
37
37
  get children() {
38
38
  return l(_, {
39
39
  get mount() {
40
- return document.body;
40
+ return y ? void 0 : document.body;
41
41
  },
42
42
  get children() {
43
- var e = A(), n = e.firstChild;
43
+ var e = S(), n = e.firstChild;
44
44
  return e.$$click = () => s(!1), n.$$click = (t) => t.stopPropagation(), d((t) => {
45
- var m = b("smwb-chat-attachment-image__overlay", "smwb-dark", h.classes()), i = a.attachment.name, c = v(), o = a.attachment.name;
46
- return m !== t.e && g(e, t.e = m), i !== t.t && r(e, "aria-label", t.t = i), c !== t.a && r(n, "src", t.a = c), o !== t.o && r(n, "alt", t.o = o), t;
45
+ var i = b("smwb-chat-attachment-image__overlay", "smwb-dark", v.classes()), m = a.attachment.name, c = h(), o = a.attachment.name;
46
+ return i !== t.e && g(e, t.e = i), m !== t.t && r(e, "aria-label", t.t = m), c !== t.a && r(n, "src", t.a = c), o !== t.o && r(n, "alt", t.o = o), t;
47
47
  }, {
48
48
  e: void 0,
49
49
  t: void 0,
@@ -56,8 +56,8 @@ function D(a) {
56
56
  })]
57
57
  });
58
58
  }
59
- y(["click"]);
59
+ k(["click"]);
60
60
  export {
61
- D as ChatAttachmentImage
61
+ E as ChatAttachmentImage
62
62
  };
63
63
  //# sourceMappingURL=chatAttachmentImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatAttachmentImage.js","sources":["../../../../src/components/dataDisplay/chat/chatAttachmentImage.tsx"],"sourcesContent":["import { type JSX, Show, createSignal } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport type { ChatAttachment } from \"./types\";\n\nexport interface ChatAttachmentImageProps {\n attachment: ChatAttachment;\n class?: string | undefined;\n}\n\nexport function ChatAttachmentImage(props: ChatAttachmentImageProps): JSX.Element {\n const [open, setOpen] = createSignal(false);\n\n const transition = createCssTransition({\n in: open,\n timeout: { enter: 150, exit: 150 },\n classNames: {\n enterActive: \"smwb-chat-attachment-image__overlay_enter-active\",\n enterDone: \"smwb-chat-attachment-image__overlay_enter-done\",\n },\n });\n\n return (\n <Show when={props.attachment.url}>\n {(url) => (\n <>\n <button\n type=\"button\"\n class={cn(\"smwb-chat-attachment-image\", props.class)}\n onClick={() => setOpen(true)}\n data-testid=\"chat-attachment-image\"\n aria-label={props.attachment.name}\n >\n <img src={url()} alt={props.attachment.name} class=\"smwb-chat-attachment-image__img\" />\n </button>\n <Show when={transition.mounted()}>\n <Portal mount={document.body}>\n <div\n class={cn(\"smwb-chat-attachment-image__overlay\", \"smwb-dark\", transition.classes())}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={props.attachment.name}\n data-testid=\"chat-attachment-image-overlay\"\n onClick={() => setOpen(false)}\n >\n <img\n src={url()}\n alt={props.attachment.name}\n class=\"smwb-chat-attachment-image__overlay-img\"\n onClick={(event) => event.stopPropagation()}\n />\n </div>\n </Portal>\n </Show>\n </>\n )}\n </Show>\n );\n}\n\nexport default ChatAttachmentImage;\n"],"names":["ChatAttachmentImage","props","open","setOpen","createSignal","transition","createCssTransition","in","timeout","enter","exit","classNames","enterActive","enterDone","_$createComponent","Show","when","attachment","url","children","_el$","_tmpl$","_el$2","firstChild","$$click","_$effect","_p$","_v$","cn","class","_v$2","name","_v$3","_v$4","e","_$className","t","_$setAttribute","a","o","undefined","mounted","Portal","mount","document","body","_el$3","_tmpl$2","_el$4","event","stopPropagation","_v$5","classes","_v$6","_v$7","_v$8","_$delegateEvents"],"mappings":";;;;;AAWO,SAASA,EAAoBC,GAA8C;AAChF,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAa,EAAK,GAEpCC,IAAaC,EAAoB;AAAA,IACrCC,IAAIL;AAAAA,IACJM,SAAS;AAAA,MAAEC,OAAO;AAAA,MAAKC,MAAM;AAAA,IAAA;AAAA,IAC7BC,YAAY;AAAA,MACVC,aAAa;AAAA,MACbC,WAAW;AAAA,IAAA;AAAA,EACb,CACD;AAED,SAAAC,EACGC,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEf,EAAMgB,WAAWC;AAAAA,IAAG;AAAA,IAAAC,UAC5BD,CAAAA,MAAG,EAAA,MAAA;AAAA,UAAAE,IAAAC,EAAAA,GAAAC,IAAAF,EAAAG;AAAAH,aAAAA,EAAAI,UAKU,MAAMrB,EAAQ,EAAI,GAACsB,EAAAC,CAAAA,MAAA;AAAA,YAAAC,IADrBC,EAAG,8BAA8B3B,EAAM4B,KAAK,GAACC,IAGxC7B,EAAMgB,WAAWc,MAAIC,IAEvBd,EAAAA,GAAKe,IAAOhC,EAAMgB,WAAWc;AAAIJ,eAAAA,MAAAD,EAAAQ,KAAAC,EAAAf,GAAAM,EAAAQ,IAAAP,CAAA,GAAAG,MAAAJ,EAAAU,KAAAC,EAAAjB,GAAA,cAAAM,EAAAU,IAAAN,CAAA,GAAAE,MAAAN,EAAAY,KAAAD,EAAAf,GAAA,OAAAI,EAAAY,IAAAN,CAAA,GAAAC,MAAAP,EAAAa,KAAAF,EAAAf,GAAA,OAAAI,EAAAa,IAAAN,CAAA,GAAAP;AAAAA,MAAA,GAAA;AAAA,QAAAQ,GAAAM;AAAAA,QAAAJ,GAAAI;AAAAA,QAAAF,GAAAE;AAAAA,QAAAD,GAAAC;AAAAA,MAAAA,CAAA,GAAApB;AAAAA,IAAA,GAAA,GAAAN,EAE5CC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEX,EAAWoC,QAAAA;AAAAA,MAAS;AAAA,MAAA,IAAAtB,WAAA;AAAA,eAAAL,EAC7B4B,GAAM;AAAA,UAAA,IAACC,QAAK;AAAA,mBAAEC,SAASC;AAAAA,UAAI;AAAA,UAAA,IAAA1B,WAAA;AAAA,gBAAA2B,IAAAC,EAAAA,GAAAC,IAAAF,EAAAvB;AAAAuB,mBAAAA,EAAAtB,UAOf,MAAMrB,EAAQ,EAAK,GAAC6C,EAAAxB,UAMjByB,CAAAA,MAAUA,EAAMC,gBAAAA,GAAiBzB,EAAAC,CAAAA,MAAA;AAAA,kBAAAyB,IAXtCvB,EAAG,uCAAuC,aAAavB,EAAW+C,SAAS,GAACC,IAGvEpD,EAAMgB,WAAWc,MAAIuB,IAK1BpC,KAAKqC,IACLtD,EAAMgB,WAAWc;AAAIoB,qBAAAA,MAAAzB,EAAAQ,KAAAC,EAAAW,GAAApB,EAAAQ,IAAAiB,CAAA,GAAAE,MAAA3B,EAAAU,KAAAC,EAAAS,GAAA,cAAApB,EAAAU,IAAAiB,CAAA,GAAAC,MAAA5B,EAAAY,KAAAD,EAAAW,GAAA,OAAAtB,EAAAY,IAAAgB,CAAA,GAAAC,MAAA7B,EAAAa,KAAAF,EAAAW,GAAA,OAAAtB,EAAAa,IAAAgB,CAAA,GAAA7B;AAAAA,YAAA,GAAA;AAAA,cAAAQ,GAAAM;AAAAA,cAAAJ,GAAAI;AAAAA,cAAAF,GAAAE;AAAAA,cAAAD,GAAAC;AAAAA,YAAAA,CAAA,GAAAM;AAAAA,UAAA;AAAA,QAAA,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA,CAAA;AAAA,EAAA,CAQrC;AAGP;AAEmCU,EAAA,CAAA,OAAA,CAAA;"}
1
+ {"version":3,"file":"chatAttachmentImage.js","sources":["../../../../src/components/dataDisplay/chat/chatAttachmentImage.tsx"],"sourcesContent":["import { type JSX, Show, createSignal } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport type { ChatAttachment } from \"./types\";\n\nexport interface ChatAttachmentImageProps {\n attachment: ChatAttachment;\n class?: string | undefined;\n}\n\nexport function ChatAttachmentImage(props: ChatAttachmentImageProps): JSX.Element {\n const [open, setOpen] = createSignal(false);\n\n const transition = createCssTransition({\n in: open,\n timeout: { enter: 150, exit: 150 },\n classNames: {\n enterActive: \"smwb-chat-attachment-image__overlay_enter-active\",\n enterDone: \"smwb-chat-attachment-image__overlay_enter-done\",\n },\n });\n\n return (\n <Show when={props.attachment.url}>\n {(url) => (\n <>\n <button\n type=\"button\"\n class={cn(\"smwb-chat-attachment-image\", props.class)}\n onClick={() => setOpen(true)}\n data-testid=\"chat-attachment-image\"\n aria-label={props.attachment.name}\n >\n <img src={url()} alt={props.attachment.name} class=\"smwb-chat-attachment-image__img\" />\n </button>\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class={cn(\"smwb-chat-attachment-image__overlay\", \"smwb-dark\", transition.classes())}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={props.attachment.name}\n data-testid=\"chat-attachment-image-overlay\"\n onClick={() => setOpen(false)}\n >\n <img\n src={url()}\n alt={props.attachment.name}\n class=\"smwb-chat-attachment-image__overlay-img\"\n onClick={(event) => event.stopPropagation()}\n />\n </div>\n </Portal>\n </Show>\n </>\n )}\n </Show>\n );\n}\n\nexport default ChatAttachmentImage;\n"],"names":["ChatAttachmentImage","props","open","setOpen","createSignal","transition","createCssTransition","in","timeout","enter","exit","classNames","enterActive","enterDone","_$createComponent","Show","when","attachment","url","children","_el$","_tmpl$","_el$2","firstChild","$$click","_$effect","_p$","_v$","cn","class","_v$2","name","_v$3","_v$4","e","_$className","t","_$setAttribute","a","o","undefined","mounted","Portal","mount","isServer","document","body","_el$3","_tmpl$2","_el$4","event","stopPropagation","_v$5","classes","_v$6","_v$7","_v$8","_$delegateEvents"],"mappings":";;;;;AAWO,SAASA,EAAoBC,GAA8C;AAChF,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAa,EAAK,GAEpCC,IAAaC,EAAoB;AAAA,IACrCC,IAAIL;AAAAA,IACJM,SAAS;AAAA,MAAEC,OAAO;AAAA,MAAKC,MAAM;AAAA,IAAA;AAAA,IAC7BC,YAAY;AAAA,MACVC,aAAa;AAAA,MACbC,WAAW;AAAA,IAAA;AAAA,EACb,CACD;AAED,SAAAC,EACGC,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEf,EAAMgB,WAAWC;AAAAA,IAAG;AAAA,IAAAC,UAC5BD,CAAAA,MAAG,EAAA,MAAA;AAAA,UAAAE,IAAAC,EAAAA,GAAAC,IAAAF,EAAAG;AAAAH,aAAAA,EAAAI,UAKU,MAAMrB,EAAQ,EAAI,GAACsB,EAAAC,CAAAA,MAAA;AAAA,YAAAC,IADrBC,EAAG,8BAA8B3B,EAAM4B,KAAK,GAACC,IAGxC7B,EAAMgB,WAAWc,MAAIC,IAEvBd,EAAAA,GAAKe,IAAOhC,EAAMgB,WAAWc;AAAIJ,eAAAA,MAAAD,EAAAQ,KAAAC,EAAAf,GAAAM,EAAAQ,IAAAP,CAAA,GAAAG,MAAAJ,EAAAU,KAAAC,EAAAjB,GAAA,cAAAM,EAAAU,IAAAN,CAAA,GAAAE,MAAAN,EAAAY,KAAAD,EAAAf,GAAA,OAAAI,EAAAY,IAAAN,CAAA,GAAAC,MAAAP,EAAAa,KAAAF,EAAAf,GAAA,OAAAI,EAAAa,IAAAN,CAAA,GAAAP;AAAAA,MAAA,GAAA;AAAA,QAAAQ,GAAAM;AAAAA,QAAAJ,GAAAI;AAAAA,QAAAF,GAAAE;AAAAA,QAAAD,GAAAC;AAAAA,MAAAA,CAAA,GAAApB;AAAAA,IAAA,GAAA,GAAAN,EAE5CC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEX,EAAWoC,QAAAA;AAAAA,MAAS;AAAA,MAAA,IAAAtB,WAAA;AAAA,eAAAL,EAC7B4B,GAAM;AAAA,UAAA,IAACC,QAAK;AAAA,mBAAGC,IAAWJ,SAAYK,SAASC;AAAAA,UAAa;AAAA,UAAA,IAAA3B,WAAA;AAAA,gBAAA4B,IAAAC,EAAAA,GAAAC,IAAAF,EAAAxB;AAAAwB,mBAAAA,EAAAvB,UAOhD,MAAMrB,EAAQ,EAAK,GAAC8C,EAAAzB,UAMjB0B,CAAAA,MAAUA,EAAMC,gBAAAA,GAAiB1B,EAAAC,CAAAA,MAAA;AAAA,kBAAA0B,IAXtCxB,EAAG,uCAAuC,aAAavB,EAAWgD,SAAS,GAACC,IAGvErD,EAAMgB,WAAWc,MAAIwB,IAK1BrC,KAAKsC,IACLvD,EAAMgB,WAAWc;AAAIqB,qBAAAA,MAAA1B,EAAAQ,KAAAC,EAAAY,GAAArB,EAAAQ,IAAAkB,CAAA,GAAAE,MAAA5B,EAAAU,KAAAC,EAAAU,GAAA,cAAArB,EAAAU,IAAAkB,CAAA,GAAAC,MAAA7B,EAAAY,KAAAD,EAAAY,GAAA,OAAAvB,EAAAY,IAAAiB,CAAA,GAAAC,MAAA9B,EAAAa,KAAAF,EAAAY,GAAA,OAAAvB,EAAAa,IAAAiB,CAAA,GAAA9B;AAAAA,YAAA,GAAA;AAAA,cAAAQ,GAAAM;AAAAA,cAAAJ,GAAAI;AAAAA,cAAAF,GAAAE;AAAAA,cAAAD,GAAAC;AAAAA,YAAAA,CAAA,GAAAO;AAAAA,UAAA;AAAA,QAAA,CAAA;AAAA,MAAA;AAAA,IAAA,CAAA,CAAA;AAAA,EAAA,CAQrC;AAGP;AAEmCU,EAAA,CAAA,OAAA,CAAA;"}
@@ -1,27 +1,27 @@
1
- import { createComponent as o, Portal as m, spread as i, mergeProps as u, insert as l, template as a } from "solid-js/web";
2
- import { mergeProps as f, splitProps as p, createEffect as b, onCleanup as v, Show as n } from "solid-js";
3
- import y from "clsx";
4
- var g = /* @__PURE__ */ a("<div class=smwb-chat-shell__header>"), w = /* @__PURE__ */ a("<div class=smwb-chat-shell__footer>"), _ = /* @__PURE__ */ a("<div><div class=smwb-chat-shell__body>");
5
- function z(c) {
6
- const h = f({
1
+ import { createComponent as o, Portal as m, isServer as i, spread as u, mergeProps as f, insert as l, template as a } from "solid-js/web";
2
+ import { mergeProps as p, splitProps as b, createEffect as v, onCleanup as y, Show as n } from "solid-js";
3
+ import g from "clsx";
4
+ var w = /* @__PURE__ */ a("<div class=smwb-chat-shell__header>"), _ = /* @__PURE__ */ a("<div class=smwb-chat-shell__footer>"), $ = /* @__PURE__ */ a("<div><div class=smwb-chat-shell__body>");
5
+ function x(c) {
6
+ const h = p({
7
7
  anchor: "bottom-right",
8
8
  themeMode: "inherit",
9
9
  embedded: !1,
10
10
  overlayContext: !1,
11
11
  fileDropzoneActive: !1
12
- }, c), [e] = p(h, ["class", "layout", "anchor", "themeMode", "embedded", "overlayContext", "header", "footer", "children", "fileDropzoneRootProps", "fileDropzoneActive"]);
13
- b(() => {
12
+ }, c), [e] = b(h, ["class", "layout", "anchor", "themeMode", "embedded", "overlayContext", "header", "footer", "children", "fileDropzoneRootProps", "fileDropzoneActive"]);
13
+ v(() => {
14
14
  if (e.layout !== "fullscreen") return;
15
15
  const t = document.body.style.overflow;
16
- document.body.style.overflow = "hidden", v(() => {
16
+ document.body.style.overflow = "hidden", y(() => {
17
17
  document.body.style.overflow = t;
18
18
  });
19
19
  });
20
20
  const s = () => (() => {
21
- var t = _(), d = t.firstChild;
22
- return i(t, u(() => e.fileDropzoneRootProps ?? {}, {
21
+ var t = $(), d = t.firstChild;
22
+ return u(t, f(() => e.fileDropzoneRootProps ?? {}, {
23
23
  get class() {
24
- return y("smwb-chat-shell", `smwb-chat-shell_${e.layout}`, !e.embedded && `smwb-chat-shell_${e.anchor}`, {
24
+ return g("smwb-chat-shell", `smwb-chat-shell_${e.layout}`, !e.embedded && `smwb-chat-shell_${e.anchor}`, {
25
25
  "smwb-dark": e.themeMode === "dark",
26
26
  "smwb-chat-shell_embedded": e.embedded,
27
27
  "smwb-chat-shell_overlay-context": e.overlayContext,
@@ -37,7 +37,7 @@ function z(c) {
37
37
  return e.header;
38
38
  },
39
39
  get children() {
40
- var r = g();
40
+ var r = w();
41
41
  return l(r, () => e.header), r;
42
42
  }
43
43
  }), d), l(d, () => e.children), l(t, o(n, {
@@ -45,7 +45,7 @@ function z(c) {
45
45
  return e.footer;
46
46
  },
47
47
  get children() {
48
- var r = w();
48
+ var r = _();
49
49
  return l(r, () => e.footer), r;
50
50
  }
51
51
  }), null), t;
@@ -65,7 +65,7 @@ function z(c) {
65
65
  get children() {
66
66
  return o(m, {
67
67
  get mount() {
68
- return document.body;
68
+ return i ? void 0 : document.body;
69
69
  },
70
70
  get children() {
71
71
  return s();
@@ -77,6 +77,6 @@ function z(c) {
77
77
  });
78
78
  }
79
79
  export {
80
- z as ChatShell
80
+ x as ChatShell
81
81
  };
82
82
  //# sourceMappingURL=chatShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatShell.js","sources":["../../../../src/components/dataDisplay/chat/chatShell.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport type { ChatAnchor, ChatLayoutMode, ChatThemeMode } from \"./types\";\n\nexport interface ChatShellProps extends ParentProps {\n class?: string | undefined;\n layout: ChatLayoutMode;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n header?: JSX.Element;\n footer?: JSX.Element;\n fileDropzoneRootProps?: JSX.HTMLAttributes<HTMLDivElement> | undefined;\n fileDropzoneActive?: boolean | undefined;\n}\n\nexport function ChatShell(props: ChatShellProps): JSX.Element {\n const merged = mergeProps(\n { anchor: \"bottom-right\" as const, themeMode: \"inherit\" as const, embedded: false, overlayContext: false, fileDropzoneActive: false },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"layout\",\n \"anchor\",\n \"themeMode\",\n \"embedded\",\n \"overlayContext\",\n \"header\",\n \"footer\",\n \"children\",\n \"fileDropzoneRootProps\",\n \"fileDropzoneActive\",\n ]);\n\n // Lock body scroll while a fullscreen chat is mounted.\n createEffect(() => {\n if (local.layout !== \"fullscreen\") return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n onCleanup(() => {\n document.body.style.overflow = prev;\n });\n });\n\n const panel = (): JSX.Element => (\n <div\n {...(local.fileDropzoneRootProps ?? {})}\n class={cn(\n \"smwb-chat-shell\",\n `smwb-chat-shell_${local.layout}`,\n !local.embedded && `smwb-chat-shell_${local.anchor}`,\n {\n \"smwb-dark\": local.themeMode === \"dark\",\n \"smwb-chat-shell_embedded\": local.embedded,\n \"smwb-chat-shell_overlay-context\": local.overlayContext,\n \"smwb-chat-dropzone_active\": local.fileDropzoneActive,\n },\n local.class\n )}\n data-testid=\"chat-shell\"\n data-layout={local.layout}\n >\n <Show when={local.header}>\n <div class=\"smwb-chat-shell__header\">{local.header}</div>\n </Show>\n <div class=\"smwb-chat-shell__body\">{local.children}</div>\n <Show when={local.footer}>\n <div class=\"smwb-chat-shell__footer\">{local.footer}</div>\n </Show>\n </div>\n );\n\n return (\n <Show when={local.layout !== \"closed\"}>\n <Show when={local.layout === \"fullscreen\"} fallback={panel()}>\n <Portal mount={document.body}>{panel()}</Portal>\n </Show>\n </Show>\n );\n}\n\nexport default ChatShell;\n"],"names":["ChatShell","props","merged","mergeProps","anchor","themeMode","embedded","overlayContext","fileDropzoneActive","local","splitProps","createEffect","layout","prev","document","body","style","overflow","onCleanup","panel","_el$","_tmpl$3","_el$3","firstChild","_$spread","_$mergeProps","fileDropzoneRootProps","cn","class","_$insert","_$createComponent","Show","when","header","children","_el$2","_tmpl$","footer","_el$4","_tmpl$2","fallback","Portal","mount"],"mappings":";;;;AAkBO,SAASA,EAAUC,GAAoC;AAC5D,QAAMC,IAASC,EACb;AAAA,IAAEC,QAAQ;AAAA,IAAyBC,WAAW;AAAA,IAAoBC,UAAU;AAAA,IAAOC,gBAAgB;AAAA,IAAOC,oBAAoB;AAAA,EAAA,GAC9HP,CACF,GACM,CAACQ,CAAK,IAAIC,EAAWR,GAAQ,CACjC,SACA,UACA,UACA,aACA,YACA,kBACA,UACA,UACA,YACA,yBACA,oBAAoB,CACrB;AAGDS,EAAAA,EAAa,MAAM;AACjB,QAAIF,EAAMG,WAAW,aAAc;AACnC,UAAMC,IAAOC,SAASC,KAAKC,MAAMC;AACjCH,aAASC,KAAKC,MAAMC,WAAW,UAC/BC,EAAU,MAAM;AACdJ,eAASC,KAAKC,MAAMC,WAAWJ;AAAAA,IACjC,CAAC;AAAA,EACH,CAAC;AAED,QAAMM,IAAQA,OAAe,MAAA;AAAA,QAAAC,IAAAC,EAAAA,GAAAC,IAAAF,EAAAG;AAAAC,WAAAA,EAAAJ,GAAAK,EAAA,MAEpBhB,EAAMiB,yBAAyB,CAAA,GAAE;AAAA,MAAA,IAAA,QAAA;AAAA,eAC/BC,EACL,mBACA,mBAAmBlB,EAAMG,MAAM,IAC/B,CAACH,EAAMH,YAAY,mBAAmBG,EAAML,MAAM,IAClD;AAAA,UACE,aAAaK,EAAMJ,cAAc;AAAA,UACjC,4BAA4BI,EAAMH;AAAAA,UAClC,mCAAmCG,EAAMF;AAAAA,UACzC,6BAA6BE,EAAMD;AAAAA,QAAAA,GAErCC,EAAMmB,KACR;AAAA,MAAC;AAAA,MAAA,eACW;AAAA,MAAY,IAAA,gBAAA;AAAA,eACXnB,EAAMG;AAAAA,MAAM;AAAA,IAAA,CAAA,GAAA,IAAA,EAAA,GAAAiB,EAAAT,GAAAU,EAExBC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEvB,EAAMwB;AAAAA,MAAM;AAAA,MAAA,IAAAC,WAAA;AAAA,YAAAC,IAAAC,EAAAA;AAAAP,eAAAA,EAAAM,GAAA,MACgB1B,EAAMwB,MAAM,GAAAE;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAb,CAAA,GAAAO,EAAAP,GAAA,MAEhBb,EAAMyB,QAAQ,GAAAL,EAAAT,GAAAU,EACjDC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEvB,EAAM4B;AAAAA,MAAM;AAAA,MAAA,IAAAH,WAAA;AAAA,YAAAI,IAAAC,EAAAA;AAAAV,eAAAA,EAAAS,GAAA,MACgB7B,EAAM4B,MAAM,GAAAC;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAlB;AAAAA,EAAA,GAAA;AAKxD,SAAAU,EACGC,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEvB,EAAMG,WAAW;AAAA,IAAQ;AAAA,IAAA,IAAAsB,WAAA;AAAA,aAAAJ,EAClCC,GAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAEvB,EAAMG,WAAW;AAAA,QAAY;AAAA,QAAA,IAAE4B,WAAQ;AAAA,iBAAErB,EAAAA;AAAAA,QAAO;AAAA,QAAA,IAAAe,WAAA;AAAA,iBAAAJ,EACzDW,GAAM;AAAA,YAAA,IAACC,QAAK;AAAA,qBAAE5B,SAASC;AAAAA,YAAI;AAAA,YAAA,IAAAmB,WAAA;AAAA,qBAAGf,EAAAA;AAAAA,YAAO;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAI9C;"}
1
+ {"version":3,"file":"chatShell.js","sources":["../../../../src/components/dataDisplay/chat/chatShell.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport type { ChatAnchor, ChatLayoutMode, ChatThemeMode } from \"./types\";\n\nexport interface ChatShellProps extends ParentProps {\n class?: string | undefined;\n layout: ChatLayoutMode;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n header?: JSX.Element;\n footer?: JSX.Element;\n fileDropzoneRootProps?: JSX.HTMLAttributes<HTMLDivElement> | undefined;\n fileDropzoneActive?: boolean | undefined;\n}\n\nexport function ChatShell(props: ChatShellProps): JSX.Element {\n const merged = mergeProps(\n { anchor: \"bottom-right\" as const, themeMode: \"inherit\" as const, embedded: false, overlayContext: false, fileDropzoneActive: false },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"layout\",\n \"anchor\",\n \"themeMode\",\n \"embedded\",\n \"overlayContext\",\n \"header\",\n \"footer\",\n \"children\",\n \"fileDropzoneRootProps\",\n \"fileDropzoneActive\",\n ]);\n\n // Lock body scroll while a fullscreen chat is mounted.\n createEffect(() => {\n if (local.layout !== \"fullscreen\") return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n onCleanup(() => {\n document.body.style.overflow = prev;\n });\n });\n\n const panel = (): JSX.Element => (\n <div\n {...(local.fileDropzoneRootProps ?? {})}\n class={cn(\n \"smwb-chat-shell\",\n `smwb-chat-shell_${local.layout}`,\n !local.embedded && `smwb-chat-shell_${local.anchor}`,\n {\n \"smwb-dark\": local.themeMode === \"dark\",\n \"smwb-chat-shell_embedded\": local.embedded,\n \"smwb-chat-shell_overlay-context\": local.overlayContext,\n \"smwb-chat-dropzone_active\": local.fileDropzoneActive,\n },\n local.class\n )}\n data-testid=\"chat-shell\"\n data-layout={local.layout}\n >\n <Show when={local.header}>\n <div class=\"smwb-chat-shell__header\">{local.header}</div>\n </Show>\n <div class=\"smwb-chat-shell__body\">{local.children}</div>\n <Show when={local.footer}>\n <div class=\"smwb-chat-shell__footer\">{local.footer}</div>\n </Show>\n </div>\n );\n\n return (\n <Show when={local.layout !== \"closed\"}>\n <Show when={local.layout === \"fullscreen\"} fallback={panel()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>{panel()}</Portal>\n </Show>\n </Show>\n );\n}\n\nexport default ChatShell;\n"],"names":["ChatShell","props","merged","mergeProps","anchor","themeMode","embedded","overlayContext","fileDropzoneActive","local","splitProps","createEffect","layout","prev","document","body","style","overflow","onCleanup","panel","_el$","_tmpl$3","_el$3","firstChild","_$spread","_$mergeProps","fileDropzoneRootProps","cn","class","_$insert","_$createComponent","Show","when","header","children","_el$2","_tmpl$","footer","_el$4","_tmpl$2","fallback","Portal","mount","isServer","undefined"],"mappings":";;;;AAkBO,SAASA,EAAUC,GAAoC;AAC5D,QAAMC,IAASC,EACb;AAAA,IAAEC,QAAQ;AAAA,IAAyBC,WAAW;AAAA,IAAoBC,UAAU;AAAA,IAAOC,gBAAgB;AAAA,IAAOC,oBAAoB;AAAA,EAAA,GAC9HP,CACF,GACM,CAACQ,CAAK,IAAIC,EAAWR,GAAQ,CACjC,SACA,UACA,UACA,aACA,YACA,kBACA,UACA,UACA,YACA,yBACA,oBAAoB,CACrB;AAGDS,EAAAA,EAAa,MAAM;AACjB,QAAIF,EAAMG,WAAW,aAAc;AACnC,UAAMC,IAAOC,SAASC,KAAKC,MAAMC;AACjCH,aAASC,KAAKC,MAAMC,WAAW,UAC/BC,EAAU,MAAM;AACdJ,eAASC,KAAKC,MAAMC,WAAWJ;AAAAA,IACjC,CAAC;AAAA,EACH,CAAC;AAED,QAAMM,IAAQA,OAAe,MAAA;AAAA,QAAAC,IAAAC,EAAAA,GAAAC,IAAAF,EAAAG;AAAAC,WAAAA,EAAAJ,GAAAK,EAAA,MAEpBhB,EAAMiB,yBAAyB,CAAA,GAAE;AAAA,MAAA,IAAA,QAAA;AAAA,eAC/BC,EACL,mBACA,mBAAmBlB,EAAMG,MAAM,IAC/B,CAACH,EAAMH,YAAY,mBAAmBG,EAAML,MAAM,IAClD;AAAA,UACE,aAAaK,EAAMJ,cAAc;AAAA,UACjC,4BAA4BI,EAAMH;AAAAA,UAClC,mCAAmCG,EAAMF;AAAAA,UACzC,6BAA6BE,EAAMD;AAAAA,QAAAA,GAErCC,EAAMmB,KACR;AAAA,MAAC;AAAA,MAAA,eACW;AAAA,MAAY,IAAA,gBAAA;AAAA,eACXnB,EAAMG;AAAAA,MAAM;AAAA,IAAA,CAAA,GAAA,IAAA,EAAA,GAAAiB,EAAAT,GAAAU,EAExBC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEvB,EAAMwB;AAAAA,MAAM;AAAA,MAAA,IAAAC,WAAA;AAAA,YAAAC,IAAAC,EAAAA;AAAAP,eAAAA,EAAAM,GAAA,MACgB1B,EAAMwB,MAAM,GAAAE;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAAb,CAAA,GAAAO,EAAAP,GAAA,MAEhBb,EAAMyB,QAAQ,GAAAL,EAAAT,GAAAU,EACjDC,GAAI;AAAA,MAAA,IAACC,OAAI;AAAA,eAAEvB,EAAM4B;AAAAA,MAAM;AAAA,MAAA,IAAAH,WAAA;AAAA,YAAAI,IAAAC,EAAAA;AAAAV,eAAAA,EAAAS,GAAA,MACgB7B,EAAM4B,MAAM,GAAAC;AAAAA,MAAA;AAAA,IAAA,CAAA,GAAA,IAAA,GAAAlB;AAAAA,EAAA,GAAA;AAKxD,SAAAU,EACGC,GAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEvB,EAAMG,WAAW;AAAA,IAAQ;AAAA,IAAA,IAAAsB,WAAA;AAAA,aAAAJ,EAClCC,GAAI;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAEvB,EAAMG,WAAW;AAAA,QAAY;AAAA,QAAA,IAAE4B,WAAQ;AAAA,iBAAErB,EAAAA;AAAAA,QAAO;AAAA,QAAA,IAAAe,WAAA;AAAA,iBAAAJ,EACzDW,GAAM;AAAA,YAAA,IAACC,QAAK;AAAA,qBAAGC,IAAWC,SAAY9B,SAASC;AAAAA,YAAa;AAAA,YAAA,IAAAmB,WAAA;AAAA,qBAAGf,EAAAA;AAAAA,YAAO;AAAA,UAAA,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAI/E;"}
@@ -1,13 +1,13 @@
1
- import { createComponent as o, insert as r, Portal as L, addEventListener as P, template as m, use as S, effect as B, className as A, memo as h, delegateEvents as D } from "solid-js/web";
1
+ import { createComponent as o, insert as r, Portal as L, addEventListener as S, isServer as P, template as m, use as B, effect as A, className as D, memo as h, delegateEvents as T } from "solid-js/web";
2
2
  import '../../../assets/styles/less/components/expansionPanel/expansionPanel.entry.css';/* empty css */
3
- import { mergeProps as T, splitProps as I, createEffect as y, onCleanup as E, Show as $ } from "solid-js";
4
- import K from "clsx";
5
- import { createControllableState as N } from "../../../primitives/createControllableState.js";
6
- import { mergeRefs as U } from "../../../primitives/mergeRefs.js";
3
+ import { mergeProps as I, splitProps as K, createEffect as y, onCleanup as E, Show as $ } from "solid-js";
4
+ import N from "clsx";
5
+ import { createControllableState as U } from "../../../primitives/createControllableState.js";
6
+ import { mergeRefs as V } from "../../../primitives/mergeRefs.js";
7
7
  import { Button as u } from "../../inputs/button/button.js";
8
8
  import { Icon as _ } from "../../base/icon/icon.js";
9
- var V = /* @__PURE__ */ m("<div class=smwb-expansion-panel__controls>"), j = /* @__PURE__ */ m("<div data-testid=expansion-panel><div class=smwb-expansion-panel__head><div class=smwb-expansion-panel__header></div></div><div class=smwb-expansion-panel__body>"), q = /* @__PURE__ */ m("<div class=smwb-expansion-panel__placeholder data-testid=expansion-panel-placeholder><span>"), G = /* @__PURE__ */ m('<div class="smwb-expansion-panel__overlay smwb-dark"role=dialog aria-modal=true data-testid=expansion-panel-overlay><div class=smwb-expansion-panel__dialog><div class=smwb-expansion-panel__head><div class=smwb-expansion-panel__header></div></div><div class="smwb-expansion-panel__body smwb-expansion-panel__body_fullscreen">');
10
- const H = {
9
+ var j = /* @__PURE__ */ m("<div class=smwb-expansion-panel__controls>"), q = /* @__PURE__ */ m("<div data-testid=expansion-panel><div class=smwb-expansion-panel__head><div class=smwb-expansion-panel__header></div></div><div class=smwb-expansion-panel__body>"), G = /* @__PURE__ */ m("<div class=smwb-expansion-panel__placeholder data-testid=expansion-panel-placeholder><span>"), H = /* @__PURE__ */ m('<div class="smwb-expansion-panel__overlay smwb-dark"role=dialog aria-modal=true data-testid=expansion-panel-overlay><div class=smwb-expansion-panel__dialog><div class=smwb-expansion-panel__head><div class=smwb-expansion-panel__header></div></div><div class="smwb-expansion-panel__body smwb-expansion-panel__body_fullscreen">');
10
+ const J = {
11
11
  expandRow: "Expand to full row",
12
12
  collapseRow: "Collapse to grid",
13
13
  expandFullscreen: "Expand to fullscreen",
@@ -15,30 +15,30 @@ const H = {
15
15
  placeholder: "Panel is open in fullscreen",
16
16
  placeholderClose: "Close"
17
17
  };
18
- function le(F) {
19
- const k = T({
18
+ function te(F) {
19
+ const k = I({
20
20
  defaultMode: "tile",
21
21
  disableExpand: !1,
22
22
  noControls: !1,
23
23
  closeOnOutsideClick: !0,
24
24
  closeOnEsc: !0
25
- }, F), [n] = I(k, ["class", "header", "mode", "defaultMode", "onModeChange", "disableExpand", "noControls", "renderControls", "closeOnOutsideClick", "closeOnEsc", "labels", "children", "ref"]), [R, s] = N({
25
+ }, F), [n] = K(k, ["class", "header", "mode", "defaultMode", "onModeChange", "disableExpand", "noControls", "renderControls", "closeOnOutsideClick", "closeOnEsc", "labels", "children", "ref"]), [R, s] = U({
26
26
  value: () => n.mode,
27
27
  defaultValue: n.defaultMode,
28
28
  onChange: (e) => n.onModeChange?.(e)
29
29
  }), t = () => ({
30
- ...H,
30
+ ...J,
31
31
  ...n.labels
32
- }), c = () => n.disableExpand ? "tile" : R(), a = () => c() === "row", f = () => c() === "fullscreen", b = () => s((e) => e === "row" ? "tile" : "row"), w = () => s("fullscreen"), x = () => s("tile"), O = (e) => ({
32
+ }), c = () => n.disableExpand ? "tile" : R(), a = () => c() === "row", f = () => c() === "fullscreen", b = () => s((e) => e === "row" ? "tile" : "row"), w = () => s("fullscreen"), v = () => s("tile"), O = (e) => ({
33
33
  mode: c(),
34
34
  isFullscreen: e,
35
35
  isFullRow: e ? !1 : a(),
36
36
  setMode: s,
37
37
  toggleRow: b,
38
38
  openFullscreen: w,
39
- closeFullscreen: x,
39
+ closeFullscreen: v,
40
40
  labels: t()
41
- }), v = (e) => {
41
+ }), x = (e) => {
42
42
  const l = {
43
43
  mode: c(),
44
44
  isFullscreen: e,
@@ -55,7 +55,7 @@ function le(F) {
55
55
  get title() {
56
56
  return t().closeFullscreen;
57
57
  },
58
- onClick: x,
58
+ onClick: v,
59
59
  "data-testid": "expansion-panel-close",
60
60
  get icon() {
61
61
  return o(_, {
@@ -110,7 +110,7 @@ function le(F) {
110
110
  return o($, {
111
111
  when: l,
112
112
  children: (i) => (() => {
113
- var d = V();
113
+ var d = j();
114
114
  return r(d, () => i()), d;
115
115
  })()
116
116
  });
@@ -129,8 +129,8 @@ function le(F) {
129
129
  document.addEventListener("keydown", e), E(() => document.removeEventListener("keydown", e));
130
130
  });
131
131
  const M = () => (() => {
132
- var e = j(), l = e.firstChild, i = l.firstChild, d = l.nextSibling, p = U(n.ref);
133
- return typeof p == "function" && S(p, e), r(i, () => n.header), r(l, () => C(!1), null), r(d, () => v(!1)), B(() => A(e, K("smwb-expansion-panel", {
132
+ var e = q(), l = e.firstChild, i = l.firstChild, d = l.nextSibling, p = V(n.ref);
133
+ return typeof p == "function" && B(p, e), r(i, () => n.header), r(l, () => C(!1), null), r(d, () => x(!1)), A(() => D(e, N("smwb-expansion-panel", {
134
134
  "smwb-expansion-panel_row": a()
135
135
  }, n.class))), e;
136
136
  })();
@@ -143,7 +143,7 @@ function le(F) {
143
143
  },
144
144
  get children() {
145
145
  return [(() => {
146
- var e = q(), l = e.firstChild;
146
+ var e = G(), l = e.firstChild;
147
147
  return r(l, () => t().placeholder), r(e, o(u, {
148
148
  type: "button",
149
149
  variant: "outlined",
@@ -155,20 +155,20 @@ function le(F) {
155
155
  }), null), e;
156
156
  })(), o(L, {
157
157
  get mount() {
158
- return document.body;
158
+ return P ? void 0 : document.body;
159
159
  },
160
160
  get children() {
161
- var e = G(), l = e.firstChild, i = l.firstChild, d = i.firstChild, p = i.nextSibling;
162
- return P(e, "click", n.closeOnOutsideClick ? (g) => {
161
+ var e = H(), l = e.firstChild, i = l.firstChild, d = i.firstChild, p = i.nextSibling;
162
+ return S(e, "click", n.closeOnOutsideClick ? (g) => {
163
163
  g.target === g.currentTarget && s("tile");
164
- } : void 0, !0), r(d, () => n.header), r(i, () => C(!0), null), r(p, () => v(!0)), e;
164
+ } : void 0, !0), r(d, () => n.header), r(i, () => C(!0), null), r(p, () => x(!0)), e;
165
165
  }
166
166
  })];
167
167
  }
168
168
  });
169
169
  }
170
- D(["click"]);
170
+ T(["click"]);
171
171
  export {
172
- le as ExpansionPanel
172
+ te as ExpansionPanel
173
173
  };
174
174
  //# sourceMappingURL=expansionPanel.js.map