@myinterview/chatbot 0.1.80 → 0.1.81-beta-315cde9
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-B3qvOjlP.js → index-B29QmbNA.js} +2 -2
- package/dist/{index-B3qvOjlP.js.map → index-B29QmbNA.js.map} +1 -1
- package/dist/{index-CgagZHP2.js → index-BjpyGBxK.js} +13 -13
- package/dist/{index-CgagZHP2.js.map → index-BjpyGBxK.js.map} +1 -1
- package/dist/{index-wcX8ELvS.js → index-Bus0NiFk.js} +2 -2
- package/dist/{index-wcX8ELvS.js.map → index-Bus0NiFk.js.map} +1 -1
- package/dist/{index-Bi4zhAvw.js → index-C6mDg4J5.js} +9 -9
- package/dist/{index-Bi4zhAvw.js.map → index-C6mDg4J5.js.map} +1 -1
- package/dist/{index-BBC5IpJ-.js → index-CO0esXGv.js} +16812 -16000
- package/dist/index-CO0esXGv.js.map +1 -0
- package/dist/{index-DPBBnx4n.js → index-C_AAXAxL.js} +2 -2
- package/dist/{index-DPBBnx4n.js.map → index-C_AAXAxL.js.map} +1 -1
- package/dist/{index-BwJ_kdjo.js → index-DMFTfT34.js} +6 -6
- package/dist/{index-BwJ_kdjo.js.map → index-DMFTfT34.js.map} +1 -1
- package/dist/{index-G-642gJS.js → index-qrc0WwVd.js} +2 -2
- package/dist/{index-G-642gJS.js.map → index-qrc0WwVd.js.map} +1 -1
- package/dist/{index-DjCYQhv3.js → index-u0xLuPM-.js} +2 -2
- package/dist/{index-DjCYQhv3.js.map → index-u0xLuPM-.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{main.react-BrHBHisx.js → main.react-XgTfP79g.js} +24261 -23558
- package/dist/{main.react-BrHBHisx.js.map → main.react-XgTfP79g.js.map} +1 -1
- package/package.json +4 -4
- package/dist/index-BBC5IpJ-.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { P as l } from "./main.react-
|
|
2
|
+
import { P as l } from "./main.react-XgTfP79g.js";
|
|
3
3
|
const s = ({ data: i, completed: o, customAction: c }) => {
|
|
4
4
|
var e;
|
|
5
5
|
return t("div", { className: "myinterview-chatbot-tnc-module", children: t(l, { size: "small", onClick: c, disabled: o, children: ((e = i.buttonText) == null ? void 0 : e.cta) ?? "Review Terms" }) });
|
|
@@ -7,4 +7,4 @@ const s = ({ data: i, completed: o, customAction: c }) => {
|
|
|
7
7
|
export {
|
|
8
8
|
s as default
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=index-
|
|
10
|
+
//# sourceMappingURL=index-B29QmbNA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-B29QmbNA.js","sources":["../src/components/modules/Tnc/index.tsx"],"sourcesContent":["import { Button } from '@myinterview/component-library';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\n\nconst Tnc = ({ data, completed, customAction }: MessageModuleProps<ModuleType.TNC>) => (\n <div className=\"myinterview-chatbot-tnc-module\">\n <Button\n size=\"small\"\n onClick={customAction}\n disabled={completed}\n >\n {data.buttonText?.cta ?? 'Review Terms'}\n </Button>\n </div>\n);\n\nexport default Tnc;\n"],"names":["Tnc","data","completed","customAction","_jsx","Button","_a"],"mappings":";;AAIA,MAAMA,IAAM,CAAC,EAAE,MAAAC,GAAM,WAAAC,GAAW,cAAAC,EAAA,MAAY;;AAC1CC,SAAAA,EAAA,OAAA,EAAK,WAAU,kCAAgC,UAC7CA,EAACC,GAAM,EACL,MAAK,SACL,SAASF,GACT,UAAUD,GAAS,YAElBI,IAAAL,EAAK,eAAL,gBAAAK,EAAiB,QAAO,eAAA,CAAc,GAChC;AAAA;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as s, jsxs as N, Fragment as
|
|
2
|
-
import { useState as c, useRef as I, useEffect as T, useCallback as
|
|
3
|
-
import { D as v, a as z, u as X, c as g, B as E,
|
|
1
|
+
import { jsx as s, jsxs as N, Fragment as H } from "react/jsx-runtime";
|
|
2
|
+
import { useState as c, useRef as I, useEffect as T, useCallback as J } from "react";
|
|
3
|
+
import { D as v, a as z, u as X, c as g, B as E, t as M, S as K, P as Q, b as U } from "./main.react-XgTfP79g.js";
|
|
4
4
|
const Y = (i) => {
|
|
5
5
|
const a = /* @__PURE__ */ new Map();
|
|
6
6
|
return i.available_slots.forEach(({ start: r }) => {
|
|
@@ -34,7 +34,7 @@ const Y = (i) => {
|
|
|
34
34
|
}
|
|
35
35
|
const m = t - h.current;
|
|
36
36
|
b((p) => Math.min(Math.max(p + m, y), 0)), h.current = t;
|
|
37
|
-
},
|
|
37
|
+
}, V = () => {
|
|
38
38
|
h.current = null;
|
|
39
39
|
}, k = (e) => {
|
|
40
40
|
o.current.style.transitionDuration = "300ms";
|
|
@@ -44,7 +44,7 @@ const Y = (i) => {
|
|
|
44
44
|
T(() => {
|
|
45
45
|
D("");
|
|
46
46
|
}, [u]);
|
|
47
|
-
const
|
|
47
|
+
const q = async () => {
|
|
48
48
|
var e;
|
|
49
49
|
try {
|
|
50
50
|
x(!0);
|
|
@@ -53,15 +53,15 @@ const Y = (i) => {
|
|
|
53
53
|
} finally {
|
|
54
54
|
x(!1);
|
|
55
55
|
}
|
|
56
|
-
},
|
|
56
|
+
}, $ = J((e) => {
|
|
57
57
|
var t;
|
|
58
58
|
if (o.current = e, !o.current) {
|
|
59
59
|
(t = S.current) == null || t.disconnect();
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
S.current = new ResizeObserver(([m]) => {
|
|
63
|
-
const { clientWidth: p, scrollWidth:
|
|
64
|
-
O(p -
|
|
63
|
+
const { clientWidth: p, scrollWidth: G } = m.target;
|
|
64
|
+
O(p - G), b(0);
|
|
65
65
|
}), S.current.observe(o.current);
|
|
66
66
|
}, []);
|
|
67
67
|
return T(() => {
|
|
@@ -70,18 +70,18 @@ const Y = (i) => {
|
|
|
70
70
|
const { clientWidth: e, scrollWidth: t } = o.current;
|
|
71
71
|
O(e - t), b(0);
|
|
72
72
|
}, [n]), s("div", { className: "myinterview-chatbot-scheduling myinterview-chatbot-no-select", children: (C || (n == null ? void 0 : n.size)) && N("div", { className: g("myinterview-chatbot-scheduling__wrapper", { "myinterview-chatbot-scheduling__wrapper--disabled": f || _ || a }), children: [N("div", { className: g("myinterview-chatbot-scheduling__days", { "myinterview-chatbot-scheduling__days--prev-scroll": d, "myinterview-chatbot-scheduling__days--next-scroll": y < d }), children: [n && !!d && s(E, { classNames: "myinterview-chatbot-scheduling__navigation-button", onClick: () => k(1) }), s("div", {
|
|
73
|
-
ref:
|
|
73
|
+
ref: $,
|
|
74
74
|
className: "myinterview-chatbot-scheduling__days-scrollable",
|
|
75
75
|
style: { transform: `translate3d(${d}px, 0px, 0px)` },
|
|
76
76
|
// onMouseMove={handleMouseMove}
|
|
77
77
|
onTouchStart: P,
|
|
78
78
|
onTouchMove: j,
|
|
79
|
-
onTouchEnd:
|
|
79
|
+
onTouchEnd: V,
|
|
80
80
|
role: "presentation",
|
|
81
|
-
children: (n ? Array.from(n.keys()) : [...Array(5)]).map((e, t) => s("div", { className: g("myinterview-chatbot-scheduling__day", { "myinterview-chatbot-scheduling--selected-item": e === u }, { "myinterview-chatbot-scheduling--disabled": C }), onClick: () => W(e), role: "presentation", children: n ? N(
|
|
82
|
-
}), n && y < d && s(E, { classNames: "myinterview-chatbot-scheduling__navigation-button myinterview-chatbot-scheduling__navigation-button--next", onClick: () => k(-1) })] }), (n == null ? void 0 : n.get(u)) && s("div", { className: "myinterview-chatbot-scheduling__times", children: n.get(u).map((e) => s("div", { className: g("myinterview-chatbot-scheduling__time", { "myinterview-chatbot-scheduling--selected-item": e === w }), onClick: () => B(e), role: "presentation", children: s(M, { className: "myinterview-chatbot-scheduling__time-value", size: "P1-M", children: v.fromISO(e).toLocaleString(v.TIME_SIMPLE) }) }, e)) }), !!u && s(Q, { className: "myinterview-chatbot-scheduling__submit-buttton", size: "small", disabled: !w || f || _, onClick:
|
|
81
|
+
children: (n ? Array.from(n.keys()) : [...Array(5)]).map((e, t) => s("div", { className: g("myinterview-chatbot-scheduling__day", { "myinterview-chatbot-scheduling--selected-item": e === u }, { "myinterview-chatbot-scheduling--disabled": C }), onClick: () => W(e), role: "presentation", children: n ? N(H, { children: [s(M, { className: "myinterview-chatbot-scheduling__day-value", size: "P1-M", children: v.fromISO(e).toFormat("ccc") }), s(M, { className: "myinterview-chatbot-scheduling__day-value", size: "P1-M", children: v.fromISO(e).toFormat("LLL dd") })] }) : s(K, {}) }, e ?? t))
|
|
82
|
+
}), n && y < d && s(E, { classNames: "myinterview-chatbot-scheduling__navigation-button myinterview-chatbot-scheduling__navigation-button--next", onClick: () => k(-1) })] }), (n == null ? void 0 : n.get(u)) && s("div", { className: "myinterview-chatbot-scheduling__times", children: n.get(u).map((e) => s("div", { className: g("myinterview-chatbot-scheduling__time", { "myinterview-chatbot-scheduling--selected-item": e === w }), onClick: () => B(e), role: "presentation", children: s(M, { className: "myinterview-chatbot-scheduling__time-value", size: "P1-M", children: v.fromISO(e).toLocaleString(v.TIME_SIMPLE) }) }, e)) }), !!u && s(Q, { className: "myinterview-chatbot-scheduling__submit-buttton", size: "small", disabled: !w || f || _, onClick: q, children: f ? "Scheduled" : _ ? "Scheduling..." : "Schedule" })] }) });
|
|
83
83
|
};
|
|
84
84
|
export {
|
|
85
85
|
ce as default
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=index-
|
|
87
|
+
//# sourceMappingURL=index-BjpyGBxK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-CgagZHP2.js","sources":["../src/utils/scheduling.utils.ts","../src/services/scheduling.service.ts","../src/components/modules/Scheduling/index.tsx"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { CronofyCalendarAvailabilityResponse } from '../interfaces/modules/schedule';\n\nexport const transformCalendarRequest = (data: CronofyCalendarAvailabilityResponse['data']['data']) => {\n const results: Map<string, string[]> = new Map();\n\n data.available_slots.forEach(({ start }) => {\n const day = DateTime.fromISO(start).startOf('day').toISO() as string;\n results.set(day, (results.get(day) ?? []).concat(start));\n });\n\n return results;\n};\n","import { ReduxConversationAttributes, ReduxMessageAttributes } from '../interfaces/mainInterface';\nimport { CreateMeetingResponse, CronofyCalendarAvailabilityResponse } from '../interfaces/modules/schedule';\nimport { transformCalendarRequest } from '../utils/scheduling.utils';\nimport { axiosInstanceVius } from './axiosInstances.service';\n\nexport const getCalendarAvailability = async (authorization: string) => {\n const response: CronofyCalendarAvailabilityResponse = await axiosInstanceVius.get('/modules/cronofy/availability', { headers: { authorization } });\n return transformCalendarRequest(response.data.data);\n};\n\nexport const scheduleInterview = async (date: string, authorization: string, conversation_attributes: ReduxConversationAttributes, module_id:ReduxMessageAttributes['module_id']):Promise<CreateMeetingResponse> => axiosInstanceVius.post(\n '/modules/cronofy/meeting',\n { start: date, conversation_attributes },\n {\n headers: { authorization },\n params: { type: 'chatbot', module_id },\n },\n);\n","/* eslint-disable react/no-array-index-key */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { DateTime } from 'luxon';\nimport classNames from 'classnames';\nimport { Button, /* Loader */ Text } from '@myinterview/component-library';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\nimport { getCalendarAvailability, scheduleInterview } from '../../../services/scheduling.service';\nimport { useAppSelector } from '../../../store/hooks';\nimport { conversationsMap } from '../../../utils/sdkObject.utils';\nimport { ReduxConversationAttributes } from '../../../interfaces/mainInterface';\nimport Skeleton from '../../ui/Skeleton';\nimport BackButton from '../../common/BackButton';\n\nconst ARROW_MOVE_DISTANCE = 75;\n\nconst Scheduling = ({ id, completed }: MessageModuleProps<ModuleType.SCHEDULE_MEETING>) => {\n const auth = useAppSelector((state) => state.chatbotConfig.auth);\n const selectedConversationId = useAppSelector((state) => state.main.selectedConversationId);\n const [timePoints, setTimePoints] = useState<Map<string, string[]>>();\n const [isFetching, setIsFetching] = useState<boolean>(true);\n const [isSubmiting, setIsSubmiting] = useState<boolean>(false);\n const [isScheduled, setIsScheduled] = useState<boolean>(completed);\n const [selectedDay, setSelectedDay] = useState<string>('');\n const [selectedTimePoint, setSelectedTimePoint] = useState<string>('');\n const [offsetX, setOffsetX] = useState<number>(0);\n const [translateX, setTranslateX] = useState<number>(0);\n const lastTouchX = useRef<number | null>(null);\n const daysRef = useRef<HTMLDivElement>();\n const resizeObserver = useRef<ResizeObserver | null>(null);\n\n useEffect(() => {\n getCalendarAvailability(auth).then((res) => {\n setTimePoints(res);\n setIsFetching(false);\n });\n }, []);\n\n const onDaySelected = (day: string) => {\n setSelectedDay(day);\n };\n\n const onSelectTimePoint = (timepoint: string) => {\n setSelectedTimePoint(timepoint);\n };\n\n // const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n // if (!e.buttons) return;\n // const { movementX } = e;\n // setTranslateX((prev) => Math.min(Math.max(prev + movementX, offsetX), 0));\n // };\n\n const resetTransitionDuration = () => {\n daysRef.current!.style.transitionDuration = '0ms';\n };\n\n const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n const touchX = e.touches[0].pageX;\n if (lastTouchX.current === null) {\n lastTouchX.current = touchX;\n return;\n }\n const movementX = (touchX - lastTouchX.current);\n setTranslateX((prev) => Math.min(Math.max(prev + movementX, offsetX), 0));\n lastTouchX.current = touchX;\n };\n\n const handleTouchEnd = () => {\n lastTouchX.current = null;\n };\n\n const onNavigate = (value: 1 | -1) => {\n daysRef.current!.style.transitionDuration = '300ms';\n const movementX = value * ARROW_MOVE_DISTANCE;\n setTranslateX((prev) => Math.min(Math.max(prev + movementX, offsetX), 0));\n };\n\n useEffect(() => {\n setSelectedTimePoint('');\n }, [selectedDay]);\n\n const onSubmitDate = async () => {\n try {\n setIsSubmiting(true);\n const conversationAttributes = (conversationsMap.get(selectedConversationId)?.attributes as ReduxConversationAttributes);\n await scheduleInterview(selectedTimePoint, auth, conversationAttributes, id);\n setIsScheduled(true);\n } finally {\n setIsSubmiting(false);\n }\n };\n\n const handleDayRef = useCallback((node: HTMLDivElement) => {\n daysRef.current = node;\n if (!daysRef.current) {\n resizeObserver.current?.disconnect();\n return;\n }\n resizeObserver.current = new ResizeObserver(([entry]) => {\n const { clientWidth, scrollWidth } = entry.target;\n setOffsetX(clientWidth - scrollWidth);\n setTranslateX(0);\n });\n\n resizeObserver.current.observe(daysRef.current);\n }, []);\n\n useEffect(() => {\n if (!daysRef.current) return;\n const { clientWidth, scrollWidth } = daysRef.current;\n setOffsetX(clientWidth - scrollWidth);\n setTranslateX(0);\n }, [timePoints]);\n\n return (\n <div className=\"myinterview-chatbot-scheduling myinterview-chatbot-no-select\">\n {(isFetching || timePoints?.size) && (\n <div className={classNames('myinterview-chatbot-scheduling__wrapper', { 'myinterview-chatbot-scheduling__wrapper--disabled': isScheduled || isSubmiting || completed })}>\n <div className={classNames('myinterview-chatbot-scheduling__days', { 'myinterview-chatbot-scheduling__days--prev-scroll': translateX, 'myinterview-chatbot-scheduling__days--next-scroll': offsetX < translateX })}>\n {timePoints && !!translateX && <BackButton classNames=\"myinterview-chatbot-scheduling__navigation-button\" onClick={() => onNavigate(1)} />}\n <div\n ref={handleDayRef}\n className=\"myinterview-chatbot-scheduling__days-scrollable\"\n style={{ transform: `translate3d(${translateX}px, 0px, 0px)` }}\n // onMouseMove={handleMouseMove}\n onTouchStart={resetTransitionDuration}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n role=\"presentation\"\n >\n {(timePoints ? Array.from(timePoints.keys()) : [...Array(5)]).map((day, idx) => (\n <div\n key={day ?? idx}\n className={classNames(\n 'myinterview-chatbot-scheduling__day',\n { 'myinterview-chatbot-scheduling--selected-item': day === selectedDay },\n { 'myinterview-chatbot-scheduling--disabled': isFetching },\n )}\n onClick={() => onDaySelected(day)}\n role=\"presentation\"\n >\n {timePoints ? (\n <>\n <Text className=\"myinterview-chatbot-scheduling__day-value\" size=\"P1-M\">{DateTime.fromISO(day).toFormat('ccc')}</Text>\n <Text className=\"myinterview-chatbot-scheduling__day-value\" size=\"P1-M\">{DateTime.fromISO(day).toFormat('LLL dd')}</Text>\n </>\n )\n : <Skeleton />}\n </div>\n ))}\n </div>\n {timePoints && offsetX < translateX && <BackButton classNames=\"myinterview-chatbot-scheduling__navigation-button myinterview-chatbot-scheduling__navigation-button--next\" onClick={() => onNavigate(-1)} />}\n\n </div>\n\n {timePoints?.get(selectedDay) && (\n <div className=\"myinterview-chatbot-scheduling__times\">\n {timePoints.get(selectedDay)!.map((timePoint) => (\n <div\n key={timePoint}\n className={classNames('myinterview-chatbot-scheduling__time', { 'myinterview-chatbot-scheduling--selected-item': timePoint === selectedTimePoint })}\n onClick={() => onSelectTimePoint(timePoint)}\n role=\"presentation\"\n >\n <Text className=\"myinterview-chatbot-scheduling__time-value\" size=\"P1-M\">{DateTime.fromISO(timePoint).toLocaleString(DateTime.TIME_SIMPLE)}</Text>\n </div>\n ))}\n </div>\n )}\n\n {!!selectedDay && (\n <Button\n className=\"myinterview-chatbot-scheduling__submit-buttton\"\n size=\"small\"\n disabled={!selectedTimePoint || isScheduled || isSubmiting}\n onClick={onSubmitDate}\n >\n {isScheduled ? 'Scheduled' : isSubmiting ? 'Scheduling...' : 'Schedule'}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Scheduling;\n"],"names":["transformCalendarRequest","data","results","start","day","DateTime","getCalendarAvailability","authorization","response","axiosInstanceVius","scheduleInterview","date","conversation_attributes","module_id","ARROW_MOVE_DISTANCE","Scheduling","id","completed","auth","useAppSelector","state","selectedConversationId","timePoints","setTimePoints","useState","isFetching","setIsFetching","isSubmiting","setIsSubmiting","isScheduled","setIsScheduled","selectedDay","setSelectedDay","selectedTimePoint","setSelectedTimePoint","offsetX","setOffsetX","translateX","setTranslateX","lastTouchX","useRef","daysRef","resizeObserver","useEffect","res","onDaySelected","onSelectTimePoint","timepoint","resetTransitionDuration","handleTouchMove","touchX","movementX","prev","handleTouchEnd","onNavigate","value","onSubmitDate","conversationAttributes","_a","conversationsMap","handleDayRef","useCallback","node","entry","clientWidth","scrollWidth","_jsx","_jsxs","classNames","BackButton","idx","_Fragment","Text","Skeleton","timePoint","Button"],"mappings":";;;AAGO,MAAMA,IAA2B,CAACC,MAA6D;AACpG,QAAMC,wBAAqC,IAAA;AAE3C,SAAAD,EAAK,gBAAgB,QAAQ,CAAC,EAAE,OAAAE,QAAW;AACzC,UAAMC,IAAMC,EAAS,QAAQF,CAAK,EAAE,QAAQ,KAAK,EAAE,MAAA;AACnD,IAAAD,EAAQ,IAAIE,IAAMF,EAAQ,IAAIE,CAAG,KAAK,CAAA,GAAI,OAAOD,CAAK,CAAC;AAAA,EACzD,CAAC,GAEMD;AACT,GCPaI,IAA0B,OAAOC,MAAyB;AACrE,QAAMC,IAAgD,MAAMC,EAAkB,IAAI,iCAAiC,EAAE,SAAS,EAAE,eAAAF,EAAA,GAAiB;AACjJ,SAAOP,EAAyBQ,EAAS,KAAK,IAAI;AACpD,GAEaE,KAAoB,OAAOC,GAAcJ,GAAuBK,GAAsDC,MAAiFJ,EAAkB,KACpO,4BACA,EAAE,OAAOE,GAAM,yBAAAC,KACf;AAAA,EACE,SAAS,EAAE,eAAAL,EAAA;AAAA,EACX,QAAQ,EAAE,MAAM,WAAW,WAAAM,EAAA;AAC5B,CAAA,GCFGC,KAAsB,IAEtBC,KAAa,CAAC,EAAE,IAAAC,GAAI,WAAAC,QAAgE;AACxF,QAAMC,IAAOC,EAAe,CAACC,MAAUA,EAAM,cAAc,IAAI,GACzDC,IAAyBF,EAAe,CAACC,MAAUA,EAAM,KAAK,sBAAsB,GACpF,CAACE,GAAYC,CAAa,IAAIC,EAAA,GAC9B,CAACC,GAAYC,CAAa,IAAIF,EAAkB,EAAI,GACpD,CAACG,GAAaC,CAAc,IAAIJ,EAAkB,EAAK,GACvD,CAACK,GAAaC,CAAc,IAAIN,EAAkBP,CAAS,GAC3D,CAACc,GAAaC,CAAc,IAAIR,EAAiB,EAAE,GACnD,CAACS,GAAmBC,CAAoB,IAAIV,EAAiB,EAAE,GAC/D,CAACW,GAASC,CAAU,IAAIZ,EAAiB,CAAC,GAC1C,CAACa,GAAYC,CAAa,IAAId,EAAiB,CAAC,GAChDe,IAAaC,EAAsB,IAAI,GACvCC,IAAUD,EAAA,GACVE,IAAiBF,EAA8B,IAAI;AAEzD,EAAAG,EAAU,MAAK;AACb,IAAArC,EAAwBY,CAAI,EAAE,KAAK,CAAC0B,MAAO;AACzC,MAAArB,EAAcqB,CAAG,GACjBlB,EAAc,EAAK;AAAA,IACrB,CAAC;AAAA,EACH,GAAG,CAAA,CAAE;AAEL,QAAMmB,IAAgB,CAACzC,MAAe;AACpC,IAAA4B,EAAe5B,CAAG;AAAA,EACpB,GAEM0C,IAAoB,CAACC,MAAqB;AAC9C,IAAAb,EAAqBa,CAAS;AAAA,EAChC,GAQMC,IAA0B,MAAK;AACnC,IAAAP,EAAQ,QAAS,MAAM,qBAAqB;AAAA,EAC9C,GAEMQ,IAAkB,CAAC,MAAuC;AAC9D,UAAMC,IAAS,EAAE,QAAQ,CAAC,EAAE;AAC5B,QAAIX,EAAW,YAAY,MAAM;AAC/B,MAAAA,EAAW,UAAUW;AACrB;AAAA,IACF;AACA,UAAMC,IAAaD,IAASX,EAAW;AACvC,IAAAD,EAAc,CAACc,MAAS,KAAK,IAAI,KAAK,IAAIA,IAAOD,GAAWhB,CAAO,GAAG,CAAC,CAAC,GACxEI,EAAW,UAAUW;AAAA,EACvB,GAEMG,IAAiB,MAAK;AAC1B,IAAAd,EAAW,UAAU;AAAA,EACvB,GAEMe,IAAa,CAACC,MAAiB;AACnC,IAAAd,EAAQ,QAAS,MAAM,qBAAqB;AAC5C,UAAMU,IAAYI,IAAQzC;AAC1B,IAAAwB,EAAc,CAACc,MAAS,KAAK,IAAI,KAAK,IAAIA,IAAOD,GAAWhB,CAAO,GAAG,CAAC,CAAC;AAAA,EAC1E;AAEA,EAAAQ,EAAU,MAAK;AACb,IAAAT,EAAqB,EAAE;AAAA,EACzB,GAAG,CAACH,CAAW,CAAC;AAEhB,QAAMyB,IAAe,YAAW;;AAC9B,QAAI;AACF,MAAA5B,EAAe,EAAI;AACnB,YAAM6B,KAA0BC,IAAAC,EAAiB,IAAItC,CAAsB,MAA3C,gBAAAqC,EAA8C;AAC9E,YAAMhD,GAAkBuB,GAAmBf,GAAMuC,GAAwBzC,CAAE,GAC3Ec,EAAe,EAAI;AAAA,IACrB,UAAA;AACE,MAAAF,EAAe,EAAK;AAAA,IACtB;AAAA,EACF,GAEMgC,IAAeC,EAAY,CAACC,MAAwB;;AAExD,QADArB,EAAQ,UAAUqB,GACd,CAACrB,EAAQ,SAAS;AACpB,OAAAiB,IAAAhB,EAAe,YAAf,QAAAgB,EAAwB;AACxB;AAAA,IACF;AACA,IAAAhB,EAAe,UAAU,IAAI,eAAe,CAAC,CAACqB,CAAK,MAAK;AACtD,YAAM,EAAE,aAAAC,GAAa,aAAAC,EAAA,IAAgBF,EAAM;AAC3C,MAAA3B,EAAW4B,IAAcC,CAAW,GACpC3B,EAAc,CAAC;AAAA,IACjB,CAAC,GAEDI,EAAe,QAAQ,QAAQD,EAAQ,OAAO;AAAA,EAChD,GAAG,CAAA,CAAE;AAEL,SAAAE,EAAU,MAAK;AACb,QAAI,CAACF,EAAQ;AAAS;AACtB,UAAM,EAAE,aAAAuB,GAAa,aAAAC,EAAA,IAAgBxB,EAAQ;AAC7C,IAAAL,EAAW4B,IAAcC,CAAW,GACpC3B,EAAc,CAAC;AAAA,EACjB,GAAG,CAAChB,CAAU,CAAC,GAGb4C,WAAK,WAAU,gEAA8D,WACzEzC,MAAcH,KAAA,gBAAAA,EAAY,UAC5B6C,EAAA,OAAA,EAAK,WAAWC,EAAW,2CAA2C,EAAE,qDAAqDvC,KAAeF,KAAeV,EAAA,CAAW,GAAC,UAAA,CACrKkD,EAAA,OAAA,EAAK,WAAWC,EAAW,wCAAwC,EAAE,qDAAqD/B,GAAY,qDAAqDF,IAAUE,GAAY,GAAC,UAAA,CAC/Mf,KAAc,CAAC,CAACe,KAAc6B,EAACG,GAAU,EAAC,YAAW,qDAAoD,SAAS,MAAMf,EAAW,CAAC,EAAA,CAAC,GACtIY;IACE,KAAKN;AAAA,IACL,WAAU;AAAA,IACV,OAAO,EAAE,WAAW,eAAevB,CAAU,gBAAA;AAAA;AAAA,IAE7C,cAAcW;AAAA,IACd,aAAaC;AAAA,IACb,YAAYI;AAAA,IACZ,MAAK;AAAA,IAAc,WAEjB/B,IAAa,MAAM,KAAKA,EAAW,KAAA,CAAM,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAClB,GAAKkE,MACtEJ,EAAA,OAAA,EAEE,WAAWE,EACT,uCACA,EAAE,iDAAiDhE,MAAQ2B,EAAA,GAC3D,EAAE,4CAA4CN,GAAY,GAE5D,SAAS,MAAMoB,EAAczC,CAAG,GAChC,MAAK,gBAAc,UAElBkB,IACC6C,EAAAI,GAAA,EAAA,UAAA,CACEL,EAACM,GAAI,EAAC,WAAU,6CAA4C,MAAK,kBAAQnE,EAAS,QAAQD,CAAG,EAAE,SAAS,KAAK,EAAA,CAAC,GAC9G8D,EAACM,GAAI,EAAC,WAAU,6CAA4C,MAAK,QAAM,UAAEnE,EAAS,QAAQD,CAAG,EAAE,SAAS,QAAQ,GAAC,CAAQ,OAGzH8D,EAACO,UAfArE,KAAOkE,CAAG,CAiBlB;AAAA,EAAA,CAAC,GAEHhD,KAAca,IAAUE,KAAc6B,EAACG,GAAU,EAAC,YAAW,6GAA4G,SAAS,MAAMf,EAAW,EAAE,EAAA,CAAC,CAAI,EAAA,CAAA,IAI5MhC,KAAA,gBAAAA,EAAY,IAAIS,OACjBmC,EAAA,OAAA,EAAK,WAAU,yCAAuC,UACnD5C,EAAW,IAAIS,CAAW,EAAG,IAAI,CAAC2C,MACjCR,WAEE,WAAWE,EAAW,wCAAwC,EAAE,iDAAiDM,MAAczC,GAAmB,GAClJ,SAAS,MAAMa,EAAkB4B,CAAS,GAC1C,MAAK,0BAELR,EAACM,KAAK,WAAU,8CAA6C,MAAK,QAAM,UAAEnE,EAAS,QAAQqE,CAAS,EAAE,eAAerE,EAAS,WAAW,EAAA,CAAC,EAAA,GALrIqE,CAAS,CAOjB,GAAC,GAIH,CAAC,CAAC3C,KACHmC,EAACS,GAAM,EACL,WAAU,kDACV,MAAK,SACL,UAAU,CAAC1C,KAAqBJ,KAAeF,GAC/C,SAAS6B,GAAY,UAEpB3B,IAAc,cAAcF,IAAc,kBAAkB,WAAA,CAAU,CAExE,EAAA,IAEF;AAGP;"}
|
|
1
|
+
{"version":3,"file":"index-BjpyGBxK.js","sources":["../src/utils/scheduling.utils.ts","../src/services/scheduling.service.ts","../src/components/modules/Scheduling/index.tsx"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { CronofyCalendarAvailabilityResponse } from '../interfaces/modules/schedule';\n\nexport const transformCalendarRequest = (data: CronofyCalendarAvailabilityResponse['data']['data']) => {\n const results: Map<string, string[]> = new Map();\n\n data.available_slots.forEach(({ start }) => {\n const day = DateTime.fromISO(start).startOf('day').toISO() as string;\n results.set(day, (results.get(day) ?? []).concat(start));\n });\n\n return results;\n};\n","import { ReduxConversationAttributes, ReduxMessageAttributes } from '../interfaces/mainInterface';\nimport { CreateMeetingResponse, CronofyCalendarAvailabilityResponse } from '../interfaces/modules/schedule';\nimport { transformCalendarRequest } from '../utils/scheduling.utils';\nimport { axiosInstanceVius } from './axiosInstances.service';\n\nexport const getCalendarAvailability = async (authorization: string) => {\n const response: CronofyCalendarAvailabilityResponse = await axiosInstanceVius.get('/modules/cronofy/availability', { headers: { authorization } });\n return transformCalendarRequest(response.data.data);\n};\n\nexport const scheduleInterview = async (date: string, authorization: string, conversation_attributes: ReduxConversationAttributes, module_id:ReduxMessageAttributes['module_id']):Promise<CreateMeetingResponse> => axiosInstanceVius.post(\n '/modules/cronofy/meeting',\n { start: date, conversation_attributes },\n {\n headers: { authorization },\n params: { type: 'chatbot', module_id },\n },\n);\n","/* eslint-disable react/no-array-index-key */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { DateTime } from 'luxon';\nimport classNames from 'classnames';\nimport { Button, /* Loader */ Text } from '@myinterview/component-library';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\nimport { getCalendarAvailability, scheduleInterview } from '../../../services/scheduling.service';\nimport { useAppSelector } from '../../../store/hooks';\nimport { conversationsMap } from '../../../utils/sdkObject.utils';\nimport { ReduxConversationAttributes } from '../../../interfaces/mainInterface';\nimport Skeleton from '../../ui/Skeleton';\nimport BackButton from '../../common/BackButton';\n\nconst ARROW_MOVE_DISTANCE = 75;\n\nconst Scheduling = ({ id, completed }: MessageModuleProps<ModuleType.SCHEDULE_MEETING>) => {\n const auth = useAppSelector((state) => state.chatbotConfig.auth);\n const selectedConversationId = useAppSelector((state) => state.main.selectedConversationId);\n const [timePoints, setTimePoints] = useState<Map<string, string[]>>();\n const [isFetching, setIsFetching] = useState<boolean>(true);\n const [isSubmiting, setIsSubmiting] = useState<boolean>(false);\n const [isScheduled, setIsScheduled] = useState<boolean>(completed);\n const [selectedDay, setSelectedDay] = useState<string>('');\n const [selectedTimePoint, setSelectedTimePoint] = useState<string>('');\n const [offsetX, setOffsetX] = useState<number>(0);\n const [translateX, setTranslateX] = useState<number>(0);\n const lastTouchX = useRef<number | null>(null);\n const daysRef = useRef<HTMLDivElement>();\n const resizeObserver = useRef<ResizeObserver | null>(null);\n\n useEffect(() => {\n getCalendarAvailability(auth).then((res) => {\n setTimePoints(res);\n setIsFetching(false);\n });\n }, []);\n\n const onDaySelected = (day: string) => {\n setSelectedDay(day);\n };\n\n const onSelectTimePoint = (timepoint: string) => {\n setSelectedTimePoint(timepoint);\n };\n\n // const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n // if (!e.buttons) return;\n // const { movementX } = e;\n // setTranslateX((prev) => Math.min(Math.max(prev + movementX, offsetX), 0));\n // };\n\n const resetTransitionDuration = () => {\n daysRef.current!.style.transitionDuration = '0ms';\n };\n\n const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n const touchX = e.touches[0].pageX;\n if (lastTouchX.current === null) {\n lastTouchX.current = touchX;\n return;\n }\n const movementX = (touchX - lastTouchX.current);\n setTranslateX((prev) => Math.min(Math.max(prev + movementX, offsetX), 0));\n lastTouchX.current = touchX;\n };\n\n const handleTouchEnd = () => {\n lastTouchX.current = null;\n };\n\n const onNavigate = (value: 1 | -1) => {\n daysRef.current!.style.transitionDuration = '300ms';\n const movementX = value * ARROW_MOVE_DISTANCE;\n setTranslateX((prev) => Math.min(Math.max(prev + movementX, offsetX), 0));\n };\n\n useEffect(() => {\n setSelectedTimePoint('');\n }, [selectedDay]);\n\n const onSubmitDate = async () => {\n try {\n setIsSubmiting(true);\n const conversationAttributes = (conversationsMap.get(selectedConversationId)?.attributes as ReduxConversationAttributes);\n await scheduleInterview(selectedTimePoint, auth, conversationAttributes, id);\n setIsScheduled(true);\n } finally {\n setIsSubmiting(false);\n }\n };\n\n const handleDayRef = useCallback((node: HTMLDivElement) => {\n daysRef.current = node;\n if (!daysRef.current) {\n resizeObserver.current?.disconnect();\n return;\n }\n resizeObserver.current = new ResizeObserver(([entry]) => {\n const { clientWidth, scrollWidth } = entry.target;\n setOffsetX(clientWidth - scrollWidth);\n setTranslateX(0);\n });\n\n resizeObserver.current.observe(daysRef.current);\n }, []);\n\n useEffect(() => {\n if (!daysRef.current) return;\n const { clientWidth, scrollWidth } = daysRef.current;\n setOffsetX(clientWidth - scrollWidth);\n setTranslateX(0);\n }, [timePoints]);\n\n return (\n <div className=\"myinterview-chatbot-scheduling myinterview-chatbot-no-select\">\n {(isFetching || timePoints?.size) && (\n <div className={classNames('myinterview-chatbot-scheduling__wrapper', { 'myinterview-chatbot-scheduling__wrapper--disabled': isScheduled || isSubmiting || completed })}>\n <div className={classNames('myinterview-chatbot-scheduling__days', { 'myinterview-chatbot-scheduling__days--prev-scroll': translateX, 'myinterview-chatbot-scheduling__days--next-scroll': offsetX < translateX })}>\n {timePoints && !!translateX && <BackButton classNames=\"myinterview-chatbot-scheduling__navigation-button\" onClick={() => onNavigate(1)} />}\n <div\n ref={handleDayRef}\n className=\"myinterview-chatbot-scheduling__days-scrollable\"\n style={{ transform: `translate3d(${translateX}px, 0px, 0px)` }}\n // onMouseMove={handleMouseMove}\n onTouchStart={resetTransitionDuration}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n role=\"presentation\"\n >\n {(timePoints ? Array.from(timePoints.keys()) : [...Array(5)]).map((day, idx) => (\n <div\n key={day ?? idx}\n className={classNames(\n 'myinterview-chatbot-scheduling__day',\n { 'myinterview-chatbot-scheduling--selected-item': day === selectedDay },\n { 'myinterview-chatbot-scheduling--disabled': isFetching },\n )}\n onClick={() => onDaySelected(day)}\n role=\"presentation\"\n >\n {timePoints ? (\n <>\n <Text className=\"myinterview-chatbot-scheduling__day-value\" size=\"P1-M\">{DateTime.fromISO(day).toFormat('ccc')}</Text>\n <Text className=\"myinterview-chatbot-scheduling__day-value\" size=\"P1-M\">{DateTime.fromISO(day).toFormat('LLL dd')}</Text>\n </>\n )\n : <Skeleton />}\n </div>\n ))}\n </div>\n {timePoints && offsetX < translateX && <BackButton classNames=\"myinterview-chatbot-scheduling__navigation-button myinterview-chatbot-scheduling__navigation-button--next\" onClick={() => onNavigate(-1)} />}\n\n </div>\n\n {timePoints?.get(selectedDay) && (\n <div className=\"myinterview-chatbot-scheduling__times\">\n {timePoints.get(selectedDay)!.map((timePoint) => (\n <div\n key={timePoint}\n className={classNames('myinterview-chatbot-scheduling__time', { 'myinterview-chatbot-scheduling--selected-item': timePoint === selectedTimePoint })}\n onClick={() => onSelectTimePoint(timePoint)}\n role=\"presentation\"\n >\n <Text className=\"myinterview-chatbot-scheduling__time-value\" size=\"P1-M\">{DateTime.fromISO(timePoint).toLocaleString(DateTime.TIME_SIMPLE)}</Text>\n </div>\n ))}\n </div>\n )}\n\n {!!selectedDay && (\n <Button\n className=\"myinterview-chatbot-scheduling__submit-buttton\"\n size=\"small\"\n disabled={!selectedTimePoint || isScheduled || isSubmiting}\n onClick={onSubmitDate}\n >\n {isScheduled ? 'Scheduled' : isSubmiting ? 'Scheduling...' : 'Schedule'}\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Scheduling;\n"],"names":["transformCalendarRequest","data","results","start","day","DateTime","getCalendarAvailability","authorization","response","axiosInstanceVius","scheduleInterview","date","conversation_attributes","module_id","ARROW_MOVE_DISTANCE","Scheduling","id","completed","auth","useAppSelector","state","selectedConversationId","timePoints","setTimePoints","useState","isFetching","setIsFetching","isSubmiting","setIsSubmiting","isScheduled","setIsScheduled","selectedDay","setSelectedDay","selectedTimePoint","setSelectedTimePoint","offsetX","setOffsetX","translateX","setTranslateX","lastTouchX","useRef","daysRef","resizeObserver","useEffect","res","onDaySelected","onSelectTimePoint","timepoint","resetTransitionDuration","handleTouchMove","touchX","movementX","prev","handleTouchEnd","onNavigate","value","onSubmitDate","conversationAttributes","_a","conversationsMap","handleDayRef","useCallback","node","entry","clientWidth","scrollWidth","_jsx","_jsxs","classNames","BackButton","idx","_Fragment","Text","Skeleton","timePoint","Button"],"mappings":";;;AAGO,MAAMA,IAA2B,CAACC,MAA6D;AACpG,QAAMC,wBAAqC,IAAA;AAE3C,SAAAD,EAAK,gBAAgB,QAAQ,CAAC,EAAE,OAAAE,QAAW;AACzC,UAAMC,IAAMC,EAAS,QAAQF,CAAK,EAAE,QAAQ,KAAK,EAAE,MAAA;AACnD,IAAAD,EAAQ,IAAIE,IAAMF,EAAQ,IAAIE,CAAG,KAAK,CAAA,GAAI,OAAOD,CAAK,CAAC;AAAA,EACzD,CAAC,GAEMD;AACT,GCPaI,IAA0B,OAAOC,MAAyB;AACrE,QAAMC,IAAgD,MAAMC,EAAkB,IAAI,iCAAiC,EAAE,SAAS,EAAE,eAAAF,EAAA,GAAiB;AACjJ,SAAOP,EAAyBQ,EAAS,KAAK,IAAI;AACpD,GAEaE,KAAoB,OAAOC,GAAcJ,GAAuBK,GAAsDC,MAAiFJ,EAAkB,KACpO,4BACA,EAAE,OAAOE,GAAM,yBAAAC,KACf;AAAA,EACE,SAAS,EAAE,eAAAL,EAAA;AAAA,EACX,QAAQ,EAAE,MAAM,WAAW,WAAAM,EAAA;AAC5B,CAAA,GCFGC,KAAsB,IAEtBC,KAAa,CAAC,EAAE,IAAAC,GAAI,WAAAC,QAAgE;AACxF,QAAMC,IAAOC,EAAe,CAACC,MAAUA,EAAM,cAAc,IAAI,GACzDC,IAAyBF,EAAe,CAACC,MAAUA,EAAM,KAAK,sBAAsB,GACpF,CAACE,GAAYC,CAAa,IAAIC,EAAA,GAC9B,CAACC,GAAYC,CAAa,IAAIF,EAAkB,EAAI,GACpD,CAACG,GAAaC,CAAc,IAAIJ,EAAkB,EAAK,GACvD,CAACK,GAAaC,CAAc,IAAIN,EAAkBP,CAAS,GAC3D,CAACc,GAAaC,CAAc,IAAIR,EAAiB,EAAE,GACnD,CAACS,GAAmBC,CAAoB,IAAIV,EAAiB,EAAE,GAC/D,CAACW,GAASC,CAAU,IAAIZ,EAAiB,CAAC,GAC1C,CAACa,GAAYC,CAAa,IAAId,EAAiB,CAAC,GAChDe,IAAaC,EAAsB,IAAI,GACvCC,IAAUD,EAAA,GACVE,IAAiBF,EAA8B,IAAI;AAEzD,EAAAG,EAAU,MAAK;AACb,IAAArC,EAAwBY,CAAI,EAAE,KAAK,CAAC0B,MAAO;AACzC,MAAArB,EAAcqB,CAAG,GACjBlB,EAAc,EAAK;AAAA,IACrB,CAAC;AAAA,EACH,GAAG,CAAA,CAAE;AAEL,QAAMmB,IAAgB,CAACzC,MAAe;AACpC,IAAA4B,EAAe5B,CAAG;AAAA,EACpB,GAEM0C,IAAoB,CAACC,MAAqB;AAC9C,IAAAb,EAAqBa,CAAS;AAAA,EAChC,GAQMC,IAA0B,MAAK;AACnC,IAAAP,EAAQ,QAAS,MAAM,qBAAqB;AAAA,EAC9C,GAEMQ,IAAkB,CAAC,MAAuC;AAC9D,UAAMC,IAAS,EAAE,QAAQ,CAAC,EAAE;AAC5B,QAAIX,EAAW,YAAY,MAAM;AAC/B,MAAAA,EAAW,UAAUW;AACrB;AAAA,IACF;AACA,UAAMC,IAAaD,IAASX,EAAW;AACvC,IAAAD,EAAc,CAACc,MAAS,KAAK,IAAI,KAAK,IAAIA,IAAOD,GAAWhB,CAAO,GAAG,CAAC,CAAC,GACxEI,EAAW,UAAUW;AAAA,EACvB,GAEMG,IAAiB,MAAK;AAC1B,IAAAd,EAAW,UAAU;AAAA,EACvB,GAEMe,IAAa,CAACC,MAAiB;AACnC,IAAAd,EAAQ,QAAS,MAAM,qBAAqB;AAC5C,UAAMU,IAAYI,IAAQzC;AAC1B,IAAAwB,EAAc,CAACc,MAAS,KAAK,IAAI,KAAK,IAAIA,IAAOD,GAAWhB,CAAO,GAAG,CAAC,CAAC;AAAA,EAC1E;AAEA,EAAAQ,EAAU,MAAK;AACb,IAAAT,EAAqB,EAAE;AAAA,EACzB,GAAG,CAACH,CAAW,CAAC;AAEhB,QAAMyB,IAAe,YAAW;;AAC9B,QAAI;AACF,MAAA5B,EAAe,EAAI;AACnB,YAAM6B,KAA0BC,IAAAC,EAAiB,IAAItC,CAAsB,MAA3C,gBAAAqC,EAA8C;AAC9E,YAAMhD,GAAkBuB,GAAmBf,GAAMuC,GAAwBzC,CAAE,GAC3Ec,EAAe,EAAI;AAAA,IACrB,UAAA;AACE,MAAAF,EAAe,EAAK;AAAA,IACtB;AAAA,EACF,GAEMgC,IAAeC,EAAY,CAACC,MAAwB;;AAExD,QADArB,EAAQ,UAAUqB,GACd,CAACrB,EAAQ,SAAS;AACpB,OAAAiB,IAAAhB,EAAe,YAAf,QAAAgB,EAAwB;AACxB;AAAA,IACF;AACA,IAAAhB,EAAe,UAAU,IAAI,eAAe,CAAC,CAACqB,CAAK,MAAK;AACtD,YAAM,EAAE,aAAAC,GAAa,aAAAC,EAAA,IAAgBF,EAAM;AAC3C,MAAA3B,EAAW4B,IAAcC,CAAW,GACpC3B,EAAc,CAAC;AAAA,IACjB,CAAC,GAEDI,EAAe,QAAQ,QAAQD,EAAQ,OAAO;AAAA,EAChD,GAAG,CAAA,CAAE;AAEL,SAAAE,EAAU,MAAK;AACb,QAAI,CAACF,EAAQ;AAAS;AACtB,UAAM,EAAE,aAAAuB,GAAa,aAAAC,EAAA,IAAgBxB,EAAQ;AAC7C,IAAAL,EAAW4B,IAAcC,CAAW,GACpC3B,EAAc,CAAC;AAAA,EACjB,GAAG,CAAChB,CAAU,CAAC,GAGb4C,WAAK,WAAU,gEAA8D,WACzEzC,MAAcH,KAAA,gBAAAA,EAAY,UAC5B6C,EAAA,OAAA,EAAK,WAAWC,EAAW,2CAA2C,EAAE,qDAAqDvC,KAAeF,KAAeV,EAAA,CAAW,GAAC,UAAA,CACrKkD,EAAA,OAAA,EAAK,WAAWC,EAAW,wCAAwC,EAAE,qDAAqD/B,GAAY,qDAAqDF,IAAUE,GAAY,GAAC,UAAA,CAC/Mf,KAAc,CAAC,CAACe,KAAc6B,EAACG,GAAU,EAAC,YAAW,qDAAoD,SAAS,MAAMf,EAAW,CAAC,EAAA,CAAC,GACtIY;IACE,KAAKN;AAAA,IACL,WAAU;AAAA,IACV,OAAO,EAAE,WAAW,eAAevB,CAAU,gBAAA;AAAA;AAAA,IAE7C,cAAcW;AAAA,IACd,aAAaC;AAAA,IACb,YAAYI;AAAA,IACZ,MAAK;AAAA,IAAc,WAEjB/B,IAAa,MAAM,KAAKA,EAAW,KAAA,CAAM,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAClB,GAAKkE,MACtEJ,EAAA,OAAA,EAEE,WAAWE,EACT,uCACA,EAAE,iDAAiDhE,MAAQ2B,EAAA,GAC3D,EAAE,4CAA4CN,GAAY,GAE5D,SAAS,MAAMoB,EAAczC,CAAG,GAChC,MAAK,gBAAc,UAElBkB,IACC6C,EAAAI,GAAA,EAAA,UAAA,CACEL,EAACM,GAAI,EAAC,WAAU,6CAA4C,MAAK,kBAAQnE,EAAS,QAAQD,CAAG,EAAE,SAAS,KAAK,EAAA,CAAC,GAC9G8D,EAACM,GAAI,EAAC,WAAU,6CAA4C,MAAK,QAAM,UAAEnE,EAAS,QAAQD,CAAG,EAAE,SAAS,QAAQ,GAAC,CAAQ,OAGzH8D,EAACO,UAfArE,KAAOkE,CAAG,CAiBlB;AAAA,EAAA,CAAC,GAEHhD,KAAca,IAAUE,KAAc6B,EAACG,GAAU,EAAC,YAAW,6GAA4G,SAAS,MAAMf,EAAW,EAAE,EAAA,CAAC,CAAI,EAAA,CAAA,IAI5MhC,KAAA,gBAAAA,EAAY,IAAIS,OACjBmC,EAAA,OAAA,EAAK,WAAU,yCAAuC,UACnD5C,EAAW,IAAIS,CAAW,EAAG,IAAI,CAAC2C,MACjCR,WAEE,WAAWE,EAAW,wCAAwC,EAAE,iDAAiDM,MAAczC,GAAmB,GAClJ,SAAS,MAAMa,EAAkB4B,CAAS,GAC1C,MAAK,0BAELR,EAACM,KAAK,WAAU,8CAA6C,MAAK,QAAM,UAAEnE,EAAS,QAAQqE,CAAS,EAAE,eAAerE,EAAS,WAAW,EAAA,CAAC,EAAA,GALrIqE,CAAS,CAOjB,GAAC,GAIH,CAAC,CAAC3C,KACHmC,EAACS,GAAM,EACL,WAAU,kDACV,MAAK,SACL,UAAU,CAAC1C,KAAqBJ,KAAeF,GAC/C,SAAS6B,GAAY,UAEpB3B,IAAc,cAAcF,IAAc,kBAAkB,WAAA,CAAU,CAExE,EAAA,IAEF;AAGP;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
-
import { P as r } from "./main.react-
|
|
2
|
+
import { P as r } from "./main.react-XgTfP79g.js";
|
|
3
3
|
import { useState as h } from "react";
|
|
4
4
|
const p = ({ data: i, completed: c, onSubmitAnswer: a }) => {
|
|
5
5
|
const [d, m] = h(c), n = (e) => {
|
|
@@ -15,4 +15,4 @@ const p = ({ data: i, completed: c, onSubmitAnswer: a }) => {
|
|
|
15
15
|
export {
|
|
16
16
|
p as default
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=index-
|
|
18
|
+
//# sourceMappingURL=index-Bus0NiFk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-Bus0NiFk.js","sources":["../src/components/modules/YesNo/index.tsx"],"sourcesContent":["import { Button } from '@myinterview/component-library';\nimport { useState } from 'react';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\n\nconst SingleSelect = ({ data, completed, onSubmitAnswer }: MessageModuleProps<ModuleType.YES_NO>) => { // TODO: Disable buttons after seleted / completed: true\n const [isDisabled, setIsDisabled] = useState<boolean>(completed);\n\n const handleClick = (selectedOption: typeof data.options[number]) => {\n const { id, title } = selectedOption;\n onSubmitAnswer({\n ...data,\n options: data.options.map((option) => ({ ...option, selected: option.id === id })),\n selected_id: id,\n }, title);\n setIsDisabled(true);\n };\n\n return (\n <div className=\"myinterview-chatbot-yes-no\">\n <div className=\"myinterview-chatbot-yes-no__list\">\n {data.options.map((option) => (\n <Button\n key={option.id}\n size=\"small\"\n className=\"myinterview-chatbot-yes-no__item\"\n onClick={() => handleClick(option)}\n value={option.id}\n disabled={isDisabled}\n >\n {option.title}\n </Button>\n ))}\n </div>\n </div>\n );\n};\n\nexport default SingleSelect;\n"],"names":["SingleSelect","data","completed","onSubmitAnswer","isDisabled","setIsDisabled","useState","handleClick","selectedOption","id","title","option","_jsx","Button"],"mappings":";;;AAKA,MAAMA,IAAe,CAAC,EAAE,MAAAC,GAAM,WAAAC,GAAW,gBAAAC,QAA2D;AAClG,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAkBJ,CAAS,GAEzDK,IAAc,CAACC,MAA+C;AAClE,UAAM,EAAE,IAAAC,GAAI,OAAAC,EAAA,IAAUF;AACtB,IAAAL,EAAe;AAAA,MACb,GAAGF;AAAA,MACH,SAASA,EAAK,QAAQ,IAAI,CAACU,OAAY,EAAE,GAAGA,GAAQ,UAAUA,EAAO,OAAOF,IAAK;AAAA,MACjF,aAAaA;AAAA,IAAA,GACZC,CAAK,GACRL,EAAc,EAAI;AAAA,EACpB;AAEA,SACEO,EAAA,OAAA,EAAK,WAAU,8BAA4B,UACzCA,EAAA,OAAA,EAAK,WAAU,oCAAkC,UAC9CX,EAAK,QAAQ,IAAI,CAACU,MACjBC,EAACC,GAAM,EAEL,MAAK,SACL,WAAU,oCACV,SAAS,MAAMN,EAAYI,CAAM,GACjC,OAAOA,EAAO,IACd,UAAUP,GAAU,UAEnBO,EAAO,MAAA,GAPHA,EAAO,EAAE,CASjB,EAAA,CAAC,GACE;AAGZ;"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { jsxs as c, jsx as i } from "react/jsx-runtime";
|
|
2
|
-
import { c as n,
|
|
2
|
+
import { c as n, _ as b, t as v, P as g } from "./main.react-XgTfP79g.js";
|
|
3
3
|
import { useState as a } from "react";
|
|
4
|
-
const
|
|
5
|
-
const [l,
|
|
4
|
+
const f = ({ data: s, completed: r, onSubmitAnswer: m }) => {
|
|
5
|
+
const [l, d] = a(r), [t, o] = a(), h = (e) => {
|
|
6
6
|
l || o(e);
|
|
7
|
-
},
|
|
8
|
-
t && (
|
|
7
|
+
}, _ = () => {
|
|
8
|
+
t && (m({
|
|
9
9
|
...s,
|
|
10
10
|
options: s.options.map((e) => ({ ...e, selected: e.id === t.id })),
|
|
11
11
|
selected_id: t.id
|
|
12
|
-
}, t.title),
|
|
12
|
+
}, t.title), d(!0));
|
|
13
13
|
};
|
|
14
|
-
return c("div", { className: "myinterview-chatbot-single-select", children: [i("div", { className: n("myinterview-chatbot-single-select__list", { "myinterview-chatbot-single-select__list--disabled": l }), children: s.options.map((e) => c("div", { className: "myinterview-chatbot-single-select__item", onClick: () => h(e), role: "presentation", children: [i("div", { className: n("myinterview-chatbot-single-select__checkmark", { "myinterview-chatbot-single-select__checkmark--selected": e.id === (t == null ? void 0 : t.id) }), children: i(
|
|
14
|
+
return c("div", { className: "myinterview-chatbot-single-select", children: [i("div", { className: n("myinterview-chatbot-single-select__list", { "myinterview-chatbot-single-select__list--disabled": l }), children: s.options.map((e) => c("div", { className: "myinterview-chatbot-single-select__item", onClick: () => h(e), role: "presentation", children: [i("div", { className: n("myinterview-chatbot-single-select__checkmark", { "myinterview-chatbot-single-select__checkmark--selected": e.id === (t == null ? void 0 : t.id) }), children: i(b, {}) }), i(v, { className: "myinterview-chatbot-single-select__title", children: e.title })] }, e.id)) }), i(g, { size: "small", onClick: _, disabled: l || !t, children: s.buttonText || "Submit" })] });
|
|
15
15
|
};
|
|
16
16
|
export {
|
|
17
|
-
|
|
17
|
+
f as default
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=index-
|
|
19
|
+
//# sourceMappingURL=index-C6mDg4J5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-C6mDg4J5.js","sources":["../src/components/modules/SingleSelect/index.tsx"],"sourcesContent":["import { Button, Check, Text } from '@myinterview/component-library';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport { MessageModuleProps } from '../../../interfaces/modules';\nimport { ModuleType } from '../../../interfaces/modules/generic';\n\nconst SingleSelect = ({ data, completed, onSubmitAnswer }: MessageModuleProps<ModuleType.SINGLE_SELECT>) => {\n const [isDisabled, setIsDisabled] = useState<boolean>(completed);\n const [selectedOption, setSelectedOption] = useState<typeof data['options'][number] | null>();\n\n const handleChange = (option: typeof data['options'][number]) => {\n if (isDisabled) return;\n setSelectedOption(option);\n };\n\n const handleSubmit = () => {\n if (!selectedOption) return;\n onSubmitAnswer(\n {\n ...data,\n options: data.options.map((option) => ({ ...option, selected: option.id === selectedOption.id })),\n selected_id: selectedOption.id,\n },\n selectedOption.title,\n );\n setIsDisabled(true);\n };\n\n return (\n <div className=\"myinterview-chatbot-single-select\">\n <div className={classNames('myinterview-chatbot-single-select__list', { 'myinterview-chatbot-single-select__list--disabled': isDisabled })}>\n {data.options.map((option) => (\n <div\n key={option.id}\n className=\"myinterview-chatbot-single-select__item\"\n onClick={() => handleChange(option)}\n role=\"presentation\"\n >\n <div className={classNames('myinterview-chatbot-single-select__checkmark', { 'myinterview-chatbot-single-select__checkmark--selected': option.id === selectedOption?.id })}>\n <Check />\n </div>\n <Text className=\"myinterview-chatbot-single-select__title\">{option.title}</Text>\n </div>\n ))}\n </div>\n\n <Button\n size=\"small\"\n onClick={handleSubmit}\n disabled={isDisabled || !selectedOption}\n >\n {data.buttonText || 'Submit'}\n </Button>\n </div>\n );\n};\n\nexport default SingleSelect;\n"],"names":["SingleSelect","data","completed","onSubmitAnswer","isDisabled","setIsDisabled","useState","selectedOption","setSelectedOption","handleChange","option","handleSubmit","_jsxs","_jsx","classNames","Check","Text","Button"],"mappings":";;;AAMA,MAAMA,IAAe,CAAC,EAAE,MAAAC,GAAM,WAAAC,GAAW,gBAAAC,QAAkE;AACzG,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAkBJ,CAAS,GACzD,CAACK,GAAgBC,CAAiB,IAAIF,EAAA,GAEtCG,IAAe,CAACC,MAA0C;AAC9D,IAAIN,KACJI,EAAkBE,CAAM;AAAA,EAC1B,GAEMC,IAAe,MAAK;AACxB,IAAKJ,MACLJ,EACE;AAAA,MACE,GAAGF;AAAA,MACH,SAASA,EAAK,QAAQ,IAAI,CAACS,OAAY,EAAE,GAAGA,GAAQ,UAAUA,EAAO,OAAOH,EAAe,KAAK;AAAA,MAChG,aAAaA,EAAe;AAAA,IAAA,GAE9BA,EAAe,KAAK,GAEtBF,EAAc,EAAI;AAAA,EACpB;AAEA,SACEO,EAAA,OAAA,EAAK,WAAU,qCAAmC,UAAA,CAChDC,EAAA,OAAA,EAAK,WAAWC,EAAW,2CAA2C,EAAE,qDAAqDV,EAAA,CAAY,GAAC,UACvIH,EAAK,QAAQ,IAAI,CAACS,MACjBE,EAAA,OAAA,EAEE,WAAU,2CACV,SAAS,MAAMH,EAAaC,CAAM,GAClC,MAAK,gBAAc,UAAA,CAEnBG,EAAA,OAAA,EAAK,WAAWC,EAAW,gDAAgD,EAAE,0DAA0DJ,EAAO,QAAOH,KAAA,gBAAAA,EAAgB,IAAA,CAAI,GAAC,UACxKM,EAACE,GAAK,EAAA,GAAG,GAEXF,EAACG,GAAI,EAAC,WAAU,4CAA0C,UAAEN,EAAO,MAAA,CAAK,CAAQ,EAAA,GAR3EA,EAAO,EAAE,CAUjB,EAAA,CAAC,GAGJG,EAACI,GAAM,EACL,MAAK,SACL,SAASN,GACT,UAAUP,KAAc,CAACG,GAAc,UAEtCN,EAAK,cAAc,UAAQ,CACrB,GAAA;AAGf;"}
|