@myinterview/chatbot 0.1.80-experimental-b272a13 → 0.1.80-experimental-4b0293a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-BBScjU_-.js → index--Ycp__SI.js} +6 -6
- package/dist/{index-BBScjU_-.js.map → index--Ycp__SI.js.map} +1 -1
- package/dist/{index-CAaobxbO.js → index-B8qXX0DY.js} +16444 -15865
- package/dist/index-B8qXX0DY.js.map +1 -0
- package/dist/{index-CTFmqlsw.js → index-BJosptgk.js} +9 -9
- package/dist/{index-CTFmqlsw.js.map → index-BJosptgk.js.map} +1 -1
- package/dist/{index-iWyfg0Yv.js → index-BbogRbnv.js} +2 -2
- package/dist/{index-iWyfg0Yv.js.map → index-BbogRbnv.js.map} +1 -1
- package/dist/{index-CVuVtymx.js → index-BrKTIs13.js} +2 -2
- package/dist/{index-CVuVtymx.js.map → index-BrKTIs13.js.map} +1 -1
- package/dist/{index-ThdOT9fN.js → index-CeqXSrRz.js} +2 -2
- package/dist/{index-ThdOT9fN.js.map → index-CeqXSrRz.js.map} +1 -1
- package/dist/{index-ZrXBoZ0G.js → index-DLrRz5Uj.js} +2 -2
- package/dist/{index-ZrXBoZ0G.js.map → index-DLrRz5Uj.js.map} +1 -1
- package/dist/{index-eAzLJwpd.js → index-Dp8FmHza.js} +2 -2
- package/dist/{index-eAzLJwpd.js.map → index-Dp8FmHza.js.map} +1 -1
- package/dist/{index-iPpCZ5w1.js → index-Dw-wI3pp.js} +13 -13
- package/dist/{index-iPpCZ5w1.js.map → index-Dw-wI3pp.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{main.react-C8D3q93_.js → main.react-CzBwL_ph.js} +22446 -21867
- package/dist/{main.react-C8D3q93_.js.map → main.react-CzBwL_ph.js.map} +1 -1
- package/package.json +3 -3
- package/dist/index-CAaobxbO.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsxs as b, jsx as e, Fragment as X } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as i, useState as S, useCallback as d, useEffect as j, useMemo as $ } from "react";
|
|
3
|
-
import { i as k, B as O, c as P,
|
|
4
|
-
const
|
|
3
|
+
import { i as k, B as O, c as P, t as B, P as U, A as F } from "./main.react-CzBwL_ph.js";
|
|
4
|
+
const H = 300, J = 0.25, L = 2, V = 30, G = ({ children: c, sliderHeight: o, currentIndex: a = 0, itemSize: p = 1 / 0, gap: m = 0, onIndexChanged: _ }) => {
|
|
5
5
|
const n = i(), h = i(null), u = i(a), [N, y] = S(0), w = i(null), r = i(0), s = i(0), x = i(0), g = i(0), v = Math.min(p, N) + m, R = d(() => {
|
|
6
6
|
n.current && (n.current.style.transform = `translate3d(${s.current}px, 0px, 0px)`);
|
|
7
7
|
}, []), T = d(() => {
|
|
8
8
|
if (!n.current)
|
|
9
9
|
return;
|
|
10
10
|
const t = Math.min(Math.max(Math.round(-s.current / v) + g.current, 0), c.length - 1);
|
|
11
|
-
u.current = Math.min(Math.max(t, u.current - 1), u.current + 1), s.current = -u.current * v, n.current.style.transitionDuration = `${
|
|
11
|
+
u.current = Math.min(Math.max(t, u.current - 1), u.current + 1), s.current = -u.current * v, n.current.style.transitionDuration = `${H}ms`, _(u.current), R();
|
|
12
12
|
}, [v]);
|
|
13
13
|
j(() => {
|
|
14
14
|
x.current = v * (c.length - 1) - m, T();
|
|
@@ -27,7 +27,7 @@ const F = 300, H = 0.25, L = 2, V = 30, G = ({ children: c, sliderHeight: o, cur
|
|
|
27
27
|
}, []), D = d((t) => {
|
|
28
28
|
const { pageX: l } = t.touches[0], f = l - w.current;
|
|
29
29
|
w.current = l, r.current = t.timeStamp;
|
|
30
|
-
const I = s.current + f, C = I > 0 || -I > x.current ?
|
|
30
|
+
const I = s.current + f, C = I > 0 || -I > x.current ? J : 1;
|
|
31
31
|
s.current += f * C, g.current = Math.abs(f) < L ? 0 : f < 0 ? 1 : -1, R();
|
|
32
32
|
}, []), E = d((t) => {
|
|
33
33
|
t.preventDefault();
|
|
@@ -70,9 +70,9 @@ const F = 300, H = 0.25, L = 2, V = 30, G = ({ children: c, sliderHeight: o, cur
|
|
|
70
70
|
return e("div", { ref: w, className: "myinterview-chatbot-page-dots-indicator", children: e("div", { ref: n, className: "myinterview-chatbot-page-dots-indicator__wrapper", style: { gap: `${p}px`, "--myinterview-chatbot-dot-size": `${a}px` }, children: m.map((r) => e("span", { className: P("myinterview-chatbot-page-dots-indicator__item", { "myinterview-chatbot-page-dots-indicator__item--selected": r === o }) }, r)) }) });
|
|
71
71
|
}, Y = ({ completed: c, data: o }) => {
|
|
72
72
|
const [a, p] = S(0);
|
|
73
|
-
return console.log("JOBS::completed", c), e("div", { className: "myinterview-chatbot-jobs", children: b("div", { className: "myinterview-chatbot-jobs__main", children: [e(G, { sliderHeight: 230, currentIndex: a, gap: 20, onIndexChanged: p, children: o.jobs.map((m) => b("div", { className: "myinterview-chatbot-jobs__item", children: [e(B, { size: "H5", className: "myinterview-chatbot-jobs__item-header", children: m.title }), b("div", { className: "myinterview-chatbot-jobs__item-info", children: [e("span", { children: "USA" }), e("span", { children: "2 Days ago" })] }), b("div", { className: "myinterview-chatbot-jobs__item-actions", children: [e(
|
|
73
|
+
return console.log("JOBS::completed", c), e("div", { className: "myinterview-chatbot-jobs", children: b("div", { className: "myinterview-chatbot-jobs__main", children: [e(G, { sliderHeight: 230, currentIndex: a, gap: 20, onIndexChanged: p, children: o.jobs.map((m) => b("div", { className: "myinterview-chatbot-jobs__item", children: [e(B, { size: "H5", className: "myinterview-chatbot-jobs__item-header", children: m.title }), b("div", { className: "myinterview-chatbot-jobs__item-info", children: [e("span", { children: "USA" }), e("span", { children: "2 Days ago" })] }), b("div", { className: "myinterview-chatbot-jobs__item-actions", children: [e(U, { size: "small", children: "I'm interested" }), b("div", { className: "myinterview-chatbot-jobs__item-read-more", children: [e("span", { children: "Read more" }), e(F, {})] })] })] }, m.job_id ?? m.id)) }), e(W, { totalDots: o.jobs.length, currentDotIndex: a })] }) });
|
|
74
74
|
};
|
|
75
75
|
export {
|
|
76
76
|
Y as default
|
|
77
77
|
};
|
|
78
|
-
//# sourceMappingURL=index
|
|
78
|
+
//# sourceMappingURL=index--Ycp__SI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-BBScjU_-.js","sources":["../src/components/ui/Slider/index.tsx","../src/components/ui/PageDotsIndicator/index.tsx","../src/components/modules/Jobs/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport BackButton from '../../common/BackButton';\nimport { isMobile } from '../../../utils/device.utils';\n\ninterface ISlider {\n children: JSX.Element[];\n sliderHeight: number;\n currentIndex: number;\n itemSize?: number;\n gap?: number;\n onIndexChanged: (index: number) => void;\n}\n\nconst TRANSITION_DURATION = 300; // ms\nconst EDGE_TRANFORM_RATIO = 0.25;\nconst PREDICTION_DISTANCE = 2;\nconst PREDICTION_TIMEOUT = 30; // ms\n\nconst Slider = ({ children, sliderHeight, currentIndex = 0, itemSize = Infinity, gap = 0, onIndexChanged }: ISlider) => {\n const listRef = useRef<HTMLDivElement>();\n const resizeObserver = useRef<ResizeObserver | null>(null);\n const indexRef = useRef<number>(currentIndex);\n const [viewSize, setViewSize] = useState<number>(0);\n const lastTouchX = useRef<number | null>(null);\n const lastTouchTime = useRef<number>(0);\n const transformX = useRef<number>(0);\n const maxOffsetX = useRef<number>(0);\n const predictionValue = useRef<-1 | 0 | 1>(0);\n const itemWidth = Math.min(itemSize, viewSize) + gap;\n\n const updatePosition = useCallback(() => {\n if (!listRef.current) return;\n listRef.current.style.transform = `translate3d(${transformX.current}px, 0px, 0px)`;\n }, []);\n\n const adjustTransform = useCallback(() => {\n if (!listRef.current) return;\n const idx = Math.min(Math.max(Math.round(-transformX.current / (itemWidth)) + predictionValue.current, 0), children.length - 1);\n indexRef.current = Math.min(Math.max(idx, indexRef.current - 1), indexRef.current + 1);\n transformX.current = -indexRef.current * (itemWidth);\n listRef.current.style.transitionDuration = `${TRANSITION_DURATION}ms`;\n onIndexChanged(indexRef.current);\n updatePosition();\n }, [itemWidth]);\n\n useEffect(() => {\n maxOffsetX.current = itemWidth * (children.length - 1) - gap;\n adjustTransform();\n }, [itemWidth]);\n\n const handleListRef = useCallback((node: HTMLDivElement) => {\n listRef.current = node;\n if (!listRef.current) {\n resizeObserver.current?.disconnect();\n return;\n }\n resizeObserver.current = new ResizeObserver(([entry]) => {\n setViewSize(entry.contentRect.width);\n });\n resizeObserver.current.observe(listRef.current);\n }, []);\n\n const handleTouchStart = useCallback((e: React.TouchEvent<HTMLDivElement>) => {\n e.currentTarget.style.transitionDuration = '0ms';\n lastTouchX.current = e.touches[0].pageX;\n }, []);\n\n const handleTouchMove = useCallback((e: React.TouchEvent<HTMLDivElement>) => {\n const { pageX } = e.touches[0];\n const movmentX = pageX - lastTouchX.current!;\n lastTouchX.current = pageX;\n lastTouchTime.current = e.timeStamp;\n const posX = transformX.current + movmentX;\n const movementRatio = (posX > 0) || (-posX > maxOffsetX.current) ? EDGE_TRANFORM_RATIO : 1;\n transformX.current += movmentX * movementRatio;\n predictionValue.current = Math.abs(movmentX) < PREDICTION_DISTANCE ? 0 : movmentX < 0 ? 1 : -1;\n updatePosition();\n }, []);\n\n const handleTouchEnd = useCallback((e: React.TouchEvent<HTMLDivElement>) => {\n e.preventDefault();\n const { timeStamp } = e;\n if (timeStamp - lastTouchTime.current > PREDICTION_TIMEOUT) {\n predictionValue.current = 0;\n }\n adjustTransform();\n }, [adjustTransform]);\n\n const onNavigate = (value: 1 | -1) => {\n predictionValue.current = value;\n adjustTransform();\n };\n\n return (\n <div className=\"myinterview-chatbot-slider\">\n {!isMobile\n && (\n <>\n {currentIndex !== 0 && <BackButton size={20} classNames=\"myinterview-chatbot-slider__navigation-button\" onClick={() => onNavigate(-1)} />}\n {currentIndex !== children.length - 1 && <BackButton size={20} classNames=\"myinterview-chatbot-slider__navigation-button myinterview-chatbot-slider__navigation-button--next\" onClick={() => onNavigate(1)} />}\n </>\n )}\n <div\n ref={handleListRef}\n className=\"myinterview-chatbot-slider__list\"\n style={{ height: `${sliderHeight}px` }}\n /* TODO: check passive optimization */\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n >\n {children.map((c, idx) => (\n <div\n key={c.key}\n className=\"myinterview-chatbot-slider__item\"\n style={{\n transform: `translate3d(${idx * (itemWidth)}px, 0px, 0px)`,\n width: `${itemWidth - gap}px`,\n }}\n >\n {c}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default Slider;\n","import classNames from 'classnames';\nimport { CSSProperties, useCallback, useEffect, useMemo, useRef } from 'react';\n\ninterface IPageDotsIndicator {\n totalDots: number;\n currentDotIndex: number;\n dotSize?: number;\n gap?: number;\n}\n\nconst PageDotsIndicator = ({ totalDots, currentDotIndex, dotSize = 8, gap = 4 }: IPageDotsIndicator) => {\n const dots = useMemo(() => [...Array(totalDots)].map((_, idx) => idx), [totalDots]);\n const mainRef = useRef<HTMLDivElement>();\n const dotsRef = useRef<HTMLDivElement>(null);\n const resizeObserver = useRef<ResizeObserver | null>(null);\n const viewSize = useRef<number>(0);\n const itemSize = dotSize + gap;\n\n const adjustDots = useCallback(() => {\n if (!dotsRef.current) return;\n const offset = Math.min(dotsRef.current.offsetLeft, 0);\n const transformX = Math.min(Math.max(-currentDotIndex * itemSize - offset + viewSize.current / 2, offset), -offset);\n dotsRef.current.style.transform = `translate3d(${transformX}px, 0px, 0px)`;\n }, [currentDotIndex, itemSize]);\n\n useEffect(adjustDots, [currentDotIndex, adjustDots]);\n\n const handleMainRef = useCallback((node: HTMLDivElement) => {\n mainRef.current = node;\n if (!mainRef.current) {\n resizeObserver.current?.disconnect();\n return;\n }\n\n resizeObserver.current = new ResizeObserver(([entry]) => {\n viewSize.current = entry.contentRect.width;\n adjustDots();\n });\n resizeObserver.current.observe(mainRef.current);\n }, []);\n\n return (\n <div ref={handleMainRef} className=\"myinterview-chatbot-page-dots-indicator\">\n <div\n ref={dotsRef}\n className=\"myinterview-chatbot-page-dots-indicator__wrapper\"\n style={{ gap: `${gap}px`, '--myinterview-chatbot-dot-size': `${dotSize}px` } as CSSProperties}\n >\n {dots.map((dot) => (\n <span\n key={dot}\n className={classNames(\n 'myinterview-chatbot-page-dots-indicator__item',\n { 'myinterview-chatbot-page-dots-indicator__item--selected': dot === currentDotIndex },\n )}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default PageDotsIndicator;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\nimport { Button, Text } from '@myinterview/component-library';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\nimport Slider from '../../ui/Slider';\nimport ArrowIcon from '../../ui/icons/ArrowIcon';\nimport PageDotsIndicator from '../../ui/PageDotsIndicator';\n\nconst Jobs = ({ completed, data }: MessageModuleProps<ModuleType.JOBS>) => {\n const [currentIndex, setCorrentIndex] = useState<number>(0);\n console.log('JOBS::completed', completed);\n\n return (\n <div className=\"myinterview-chatbot-jobs\">\n <div className=\"myinterview-chatbot-jobs__main\">\n <Slider\n sliderHeight={230}\n currentIndex={currentIndex}\n gap={20}\n onIndexChanged={setCorrentIndex}\n >\n {data.jobs.map((job) => (\n <div\n key={job.job_id ?? (job as any).id}\n className=\"myinterview-chatbot-jobs__item\"\n >\n <Text size=\"H5\" className=\"myinterview-chatbot-jobs__item-header\">\n {job.title}\n </Text>\n <div className=\"myinterview-chatbot-jobs__item-info\">\n <span>USA</span>\n <span>2 Days ago</span>\n </div>\n <div className=\"myinterview-chatbot-jobs__item-actions\">\n <Button size=\"small\">I'm interested</Button>\n <div className=\"myinterview-chatbot-jobs__item-read-more\">\n <span>Read more</span>\n <ArrowIcon />\n </div>\n </div>\n </div>\n ))}\n </Slider>\n\n <PageDotsIndicator totalDots={data.jobs.length} currentDotIndex={currentIndex} />\n </div>\n </div>\n );\n};\n\nexport default Jobs;\n"],"names":["TRANSITION_DURATION","EDGE_TRANFORM_RATIO","PREDICTION_DISTANCE","PREDICTION_TIMEOUT","Slider","children","sliderHeight","currentIndex","itemSize","gap","onIndexChanged","listRef","useRef","resizeObserver","indexRef","viewSize","setViewSize","useState","lastTouchX","lastTouchTime","transformX","maxOffsetX","predictionValue","itemWidth","updatePosition","useCallback","adjustTransform","idx","useEffect","handleListRef","node","_a","entry","handleTouchStart","e","handleTouchMove","pageX","movmentX","posX","movementRatio","handleTouchEnd","timeStamp","onNavigate","value","_jsxs","isMobile","_jsx","BackButton","c","PageDotsIndicator","totalDots","currentDotIndex","dotSize","dots","useMemo","_","mainRef","dotsRef","adjustDots","offset","handleMainRef","dot","classNames","Jobs","completed","data","setCorrentIndex","job","Text","Button","ArrowIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index--Ycp__SI.js","sources":["../src/components/ui/Slider/index.tsx","../src/components/ui/PageDotsIndicator/index.tsx","../src/components/modules/Jobs/index.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport BackButton from '../../common/BackButton';\nimport { isMobile } from '../../../utils/device.utils';\n\ninterface ISlider {\n children: JSX.Element[];\n sliderHeight: number;\n currentIndex: number;\n itemSize?: number;\n gap?: number;\n onIndexChanged: (index: number) => void;\n}\n\nconst TRANSITION_DURATION = 300; // ms\nconst EDGE_TRANFORM_RATIO = 0.25;\nconst PREDICTION_DISTANCE = 2;\nconst PREDICTION_TIMEOUT = 30; // ms\n\nconst Slider = ({ children, sliderHeight, currentIndex = 0, itemSize = Infinity, gap = 0, onIndexChanged }: ISlider) => {\n const listRef = useRef<HTMLDivElement>();\n const resizeObserver = useRef<ResizeObserver | null>(null);\n const indexRef = useRef<number>(currentIndex);\n const [viewSize, setViewSize] = useState<number>(0);\n const lastTouchX = useRef<number | null>(null);\n const lastTouchTime = useRef<number>(0);\n const transformX = useRef<number>(0);\n const maxOffsetX = useRef<number>(0);\n const predictionValue = useRef<-1 | 0 | 1>(0);\n const itemWidth = Math.min(itemSize, viewSize) + gap;\n\n const updatePosition = useCallback(() => {\n if (!listRef.current) return;\n listRef.current.style.transform = `translate3d(${transformX.current}px, 0px, 0px)`;\n }, []);\n\n const adjustTransform = useCallback(() => {\n if (!listRef.current) return;\n const idx = Math.min(Math.max(Math.round(-transformX.current / (itemWidth)) + predictionValue.current, 0), children.length - 1);\n indexRef.current = Math.min(Math.max(idx, indexRef.current - 1), indexRef.current + 1);\n transformX.current = -indexRef.current * (itemWidth);\n listRef.current.style.transitionDuration = `${TRANSITION_DURATION}ms`;\n onIndexChanged(indexRef.current);\n updatePosition();\n }, [itemWidth]);\n\n useEffect(() => {\n maxOffsetX.current = itemWidth * (children.length - 1) - gap;\n adjustTransform();\n }, [itemWidth]);\n\n const handleListRef = useCallback((node: HTMLDivElement) => {\n listRef.current = node;\n if (!listRef.current) {\n resizeObserver.current?.disconnect();\n return;\n }\n resizeObserver.current = new ResizeObserver(([entry]) => {\n setViewSize(entry.contentRect.width);\n });\n resizeObserver.current.observe(listRef.current);\n }, []);\n\n const handleTouchStart = useCallback((e: React.TouchEvent<HTMLDivElement>) => {\n e.currentTarget.style.transitionDuration = '0ms';\n lastTouchX.current = e.touches[0].pageX;\n }, []);\n\n const handleTouchMove = useCallback((e: React.TouchEvent<HTMLDivElement>) => {\n const { pageX } = e.touches[0];\n const movmentX = pageX - lastTouchX.current!;\n lastTouchX.current = pageX;\n lastTouchTime.current = e.timeStamp;\n const posX = transformX.current + movmentX;\n const movementRatio = (posX > 0) || (-posX > maxOffsetX.current) ? EDGE_TRANFORM_RATIO : 1;\n transformX.current += movmentX * movementRatio;\n predictionValue.current = Math.abs(movmentX) < PREDICTION_DISTANCE ? 0 : movmentX < 0 ? 1 : -1;\n updatePosition();\n }, []);\n\n const handleTouchEnd = useCallback((e: React.TouchEvent<HTMLDivElement>) => {\n e.preventDefault();\n const { timeStamp } = e;\n if (timeStamp - lastTouchTime.current > PREDICTION_TIMEOUT) {\n predictionValue.current = 0;\n }\n adjustTransform();\n }, [adjustTransform]);\n\n const onNavigate = (value: 1 | -1) => {\n predictionValue.current = value;\n adjustTransform();\n };\n\n return (\n <div className=\"myinterview-chatbot-slider\">\n {!isMobile\n && (\n <>\n {currentIndex !== 0 && <BackButton size={20} classNames=\"myinterview-chatbot-slider__navigation-button\" onClick={() => onNavigate(-1)} />}\n {currentIndex !== children.length - 1 && <BackButton size={20} classNames=\"myinterview-chatbot-slider__navigation-button myinterview-chatbot-slider__navigation-button--next\" onClick={() => onNavigate(1)} />}\n </>\n )}\n <div\n ref={handleListRef}\n className=\"myinterview-chatbot-slider__list\"\n style={{ height: `${sliderHeight}px` }}\n /* TODO: check passive optimization */\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n >\n {children.map((c, idx) => (\n <div\n key={c.key}\n className=\"myinterview-chatbot-slider__item\"\n style={{\n transform: `translate3d(${idx * (itemWidth)}px, 0px, 0px)`,\n width: `${itemWidth - gap}px`,\n }}\n >\n {c}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default Slider;\n","import classNames from 'classnames';\nimport { CSSProperties, useCallback, useEffect, useMemo, useRef } from 'react';\n\ninterface IPageDotsIndicator {\n totalDots: number;\n currentDotIndex: number;\n dotSize?: number;\n gap?: number;\n}\n\nconst PageDotsIndicator = ({ totalDots, currentDotIndex, dotSize = 8, gap = 4 }: IPageDotsIndicator) => {\n const dots = useMemo(() => [...Array(totalDots)].map((_, idx) => idx), [totalDots]);\n const mainRef = useRef<HTMLDivElement>();\n const dotsRef = useRef<HTMLDivElement>(null);\n const resizeObserver = useRef<ResizeObserver | null>(null);\n const viewSize = useRef<number>(0);\n const itemSize = dotSize + gap;\n\n const adjustDots = useCallback(() => {\n if (!dotsRef.current) return;\n const offset = Math.min(dotsRef.current.offsetLeft, 0);\n const transformX = Math.min(Math.max(-currentDotIndex * itemSize - offset + viewSize.current / 2, offset), -offset);\n dotsRef.current.style.transform = `translate3d(${transformX}px, 0px, 0px)`;\n }, [currentDotIndex, itemSize]);\n\n useEffect(adjustDots, [currentDotIndex, adjustDots]);\n\n const handleMainRef = useCallback((node: HTMLDivElement) => {\n mainRef.current = node;\n if (!mainRef.current) {\n resizeObserver.current?.disconnect();\n return;\n }\n\n resizeObserver.current = new ResizeObserver(([entry]) => {\n viewSize.current = entry.contentRect.width;\n adjustDots();\n });\n resizeObserver.current.observe(mainRef.current);\n }, []);\n\n return (\n <div ref={handleMainRef} className=\"myinterview-chatbot-page-dots-indicator\">\n <div\n ref={dotsRef}\n className=\"myinterview-chatbot-page-dots-indicator__wrapper\"\n style={{ gap: `${gap}px`, '--myinterview-chatbot-dot-size': `${dotSize}px` } as CSSProperties}\n >\n {dots.map((dot) => (\n <span\n key={dot}\n className={classNames(\n 'myinterview-chatbot-page-dots-indicator__item',\n { 'myinterview-chatbot-page-dots-indicator__item--selected': dot === currentDotIndex },\n )}\n />\n ))}\n </div>\n </div>\n );\n};\n\nexport default PageDotsIndicator;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\nimport { Button, Text } from '@myinterview/component-library';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\nimport Slider from '../../ui/Slider';\nimport ArrowIcon from '../../ui/icons/ArrowIcon';\nimport PageDotsIndicator from '../../ui/PageDotsIndicator';\n\nconst Jobs = ({ completed, data }: MessageModuleProps<ModuleType.JOBS>) => {\n const [currentIndex, setCorrentIndex] = useState<number>(0);\n console.log('JOBS::completed', completed);\n\n return (\n <div className=\"myinterview-chatbot-jobs\">\n <div className=\"myinterview-chatbot-jobs__main\">\n <Slider\n sliderHeight={230}\n currentIndex={currentIndex}\n gap={20}\n onIndexChanged={setCorrentIndex}\n >\n {data.jobs.map((job) => (\n <div\n key={job.job_id ?? (job as any).id}\n className=\"myinterview-chatbot-jobs__item\"\n >\n <Text size=\"H5\" className=\"myinterview-chatbot-jobs__item-header\">\n {job.title}\n </Text>\n <div className=\"myinterview-chatbot-jobs__item-info\">\n <span>USA</span>\n <span>2 Days ago</span>\n </div>\n <div className=\"myinterview-chatbot-jobs__item-actions\">\n <Button size=\"small\">I'm interested</Button>\n <div className=\"myinterview-chatbot-jobs__item-read-more\">\n <span>Read more</span>\n <ArrowIcon />\n </div>\n </div>\n </div>\n ))}\n </Slider>\n\n <PageDotsIndicator totalDots={data.jobs.length} currentDotIndex={currentIndex} />\n </div>\n </div>\n );\n};\n\nexport default Jobs;\n"],"names":["TRANSITION_DURATION","EDGE_TRANFORM_RATIO","PREDICTION_DISTANCE","PREDICTION_TIMEOUT","Slider","children","sliderHeight","currentIndex","itemSize","gap","onIndexChanged","listRef","useRef","resizeObserver","indexRef","viewSize","setViewSize","useState","lastTouchX","lastTouchTime","transformX","maxOffsetX","predictionValue","itemWidth","updatePosition","useCallback","adjustTransform","idx","useEffect","handleListRef","node","_a","entry","handleTouchStart","e","handleTouchMove","pageX","movmentX","posX","movementRatio","handleTouchEnd","timeStamp","onNavigate","value","_jsxs","isMobile","_jsx","BackButton","c","PageDotsIndicator","totalDots","currentDotIndex","dotSize","dots","useMemo","_","mainRef","dotsRef","adjustDots","offset","handleMainRef","dot","classNames","Jobs","completed","data","setCorrentIndex","job","Text","Button","ArrowIcon"],"mappings":"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"}
|