@mieweb/ui 0.7.1-dev.15 → 0.7.1-dev.17
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/{chunk-XCVBCY7L.cjs → chunk-26DPQUSB.cjs} +4 -4
- package/dist/{chunk-XCVBCY7L.cjs.map → chunk-26DPQUSB.cjs.map} +1 -1
- package/dist/{chunk-477Z2DYN.js → chunk-3SRBIXQX.js} +4 -4
- package/dist/{chunk-477Z2DYN.js.map → chunk-3SRBIXQX.js.map} +1 -1
- package/dist/{chunk-UXBRRSJ6.js → chunk-5BDCQBYW.js} +3 -3
- package/dist/{chunk-UXBRRSJ6.js.map → chunk-5BDCQBYW.js.map} +1 -1
- package/dist/{chunk-C7I3ZGMQ.cjs → chunk-6J7UGYT5.cjs} +4 -4
- package/dist/{chunk-C7I3ZGMQ.cjs.map → chunk-6J7UGYT5.cjs.map} +1 -1
- package/dist/{chunk-JJNCQMR5.js → chunk-BMRQ4VME.js} +3 -3
- package/dist/{chunk-JJNCQMR5.js.map → chunk-BMRQ4VME.js.map} +1 -1
- package/dist/{chunk-QA6ZDHFP.js → chunk-BOOJDRJO.js} +35 -11
- package/dist/chunk-BOOJDRJO.js.map +1 -0
- package/dist/{chunk-34LGPMO4.js → chunk-DLBV42JD.js} +3 -3
- package/dist/{chunk-34LGPMO4.js.map → chunk-DLBV42JD.js.map} +1 -1
- package/dist/{chunk-4G3NJLQA.js → chunk-EGWWTIWS.js} +117 -73
- package/dist/chunk-EGWWTIWS.js.map +1 -0
- package/dist/{chunk-IXWRD4AP.js → chunk-EKRT7K2K.js} +3 -3
- package/dist/{chunk-IXWRD4AP.js.map → chunk-EKRT7K2K.js.map} +1 -1
- package/dist/{chunk-MHD5HZ4X.js → chunk-FDV7EQWH.js} +3 -3
- package/dist/{chunk-MHD5HZ4X.js.map → chunk-FDV7EQWH.js.map} +1 -1
- package/dist/{chunk-GDBPFHNX.js → chunk-HIDV32ZX.js} +3 -3
- package/dist/{chunk-GDBPFHNX.js.map → chunk-HIDV32ZX.js.map} +1 -1
- package/dist/{chunk-ZDEYV373.cjs → chunk-MYFZYUPR.cjs} +35 -11
- package/dist/chunk-MYFZYUPR.cjs.map +1 -0
- package/dist/{chunk-I2BKK3AQ.js → chunk-NGLI2MSM.js} +3 -3
- package/dist/{chunk-I2BKK3AQ.js.map → chunk-NGLI2MSM.js.map} +1 -1
- package/dist/{chunk-EDBGSGUK.cjs → chunk-OAHORW4N.cjs} +117 -73
- package/dist/chunk-OAHORW4N.cjs.map +1 -0
- package/dist/{chunk-IS5PNYR7.js → chunk-P6L74SKG.js} +3 -3
- package/dist/{chunk-IS5PNYR7.js.map → chunk-P6L74SKG.js.map} +1 -1
- package/dist/{chunk-GKWWFJDB.cjs → chunk-Q5VBO3I5.cjs} +5 -5
- package/dist/{chunk-GKWWFJDB.cjs.map → chunk-Q5VBO3I5.cjs.map} +1 -1
- package/dist/{chunk-UTCFBBOD.cjs → chunk-QI2SB6U3.cjs} +7 -7
- package/dist/{chunk-UTCFBBOD.cjs.map → chunk-QI2SB6U3.cjs.map} +1 -1
- package/dist/{chunk-U4HA2WHA.cjs → chunk-RBS3GHDZ.cjs} +4 -4
- package/dist/{chunk-U4HA2WHA.cjs.map → chunk-RBS3GHDZ.cjs.map} +1 -1
- package/dist/{chunk-YXHX2DAK.cjs → chunk-RYQ3S3KO.cjs} +5 -5
- package/dist/{chunk-YXHX2DAK.cjs.map → chunk-RYQ3S3KO.cjs.map} +1 -1
- package/dist/{chunk-C2NNNOSU.cjs → chunk-VVI32P7L.cjs} +4 -4
- package/dist/{chunk-C2NNNOSU.cjs.map → chunk-VVI32P7L.cjs.map} +1 -1
- package/dist/{chunk-BZMBCKW2.cjs → chunk-VWCMOWGH.cjs} +8 -8
- package/dist/{chunk-BZMBCKW2.cjs.map → chunk-VWCMOWGH.cjs.map} +1 -1
- package/dist/{chunk-OJEXXH5D.cjs → chunk-ZBI52NP2.cjs} +4 -4
- package/dist/{chunk-OJEXXH5D.cjs.map → chunk-ZBI52NP2.cjs.map} +1 -1
- package/dist/components/Autocomplete/index.cjs +3 -3
- package/dist/components/Autocomplete/index.js +2 -2
- package/dist/components/CountryCodeDropdown/index.cjs +5 -5
- package/dist/components/CountryCodeDropdown/index.js +2 -2
- package/dist/components/DateInput/index.cjs +3 -3
- package/dist/components/DateInput/index.d.cts +3 -1
- package/dist/components/DateInput/index.d.ts +3 -1
- package/dist/components/DateInput/index.js +2 -2
- package/dist/components/Dropdown/index.cjs +8 -8
- package/dist/components/Dropdown/index.d.cts +1 -1
- package/dist/components/Dropdown/index.d.ts +1 -1
- package/dist/components/Dropdown/index.js +2 -2
- package/dist/components/MediaEditor/index.cjs +8 -8
- package/dist/components/MediaEditor/index.js +3 -3
- package/dist/components/RichTextEditor/index.cjs +6 -6
- package/dist/components/RichTextEditor/index.js +3 -3
- package/dist/components/Select/index.cjs +4 -4
- package/dist/components/Select/index.js +2 -2
- package/dist/components/SuperChat/index.cjs +8 -8
- package/dist/components/SuperChat/index.js +3 -3
- package/dist/components/SuperChat/plugins/index.cjs +4 -4
- package/dist/components/SuperChat/plugins/index.js +3 -3
- package/dist/esheet.cjs +7 -7
- package/dist/esheet.js +4 -4
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.d.cts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +802 -161
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +53 -4
- package/dist/index.d.ts +53 -4
- package/dist/index.js +664 -24
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/{useAnchoredPosition-nXdSFKHf.d.cts → useAnchoredPosition-C7PNglzD.d.cts} +6 -2
- package/dist/{useAnchoredPosition-nXdSFKHf.d.ts → useAnchoredPosition-C7PNglzD.d.ts} +6 -2
- package/package.json +1 -1
- package/dist/chunk-4G3NJLQA.js.map +0 -1
- package/dist/chunk-EDBGSGUK.cjs.map +0 -1
- package/dist/chunk-QA6ZDHFP.js.map +0 -1
- package/dist/chunk-ZDEYV373.cjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -28,17 +28,17 @@ import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
|
|
|
28
28
|
export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
|
|
29
29
|
import { SparklesIcon, RefreshIcon, CloseIcon, AIMessageDisplay } from './chunk-RZJXCI53.js';
|
|
30
30
|
export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-RZJXCI53.js';
|
|
31
|
-
import { EmptyState } from './chunk-
|
|
32
|
-
export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingIndicator } from './chunk-
|
|
33
|
-
import { MessageComposer } from './chunk-
|
|
34
|
-
export { AttachmentPicker, AttachmentPreviewItem, CameraButton, CharacterCounter, DragDropZone, MessageComposer, SendButton, generateAttachmentId, getFileType, sendButtonVariants, validateFile } from './chunk-
|
|
31
|
+
import { EmptyState } from './chunk-FDV7EQWH.js';
|
|
32
|
+
export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingIndicator } from './chunk-FDV7EQWH.js';
|
|
33
|
+
import { MessageComposer } from './chunk-EKRT7K2K.js';
|
|
34
|
+
export { AttachmentPicker, AttachmentPreviewItem, CameraButton, CharacterCounter, DragDropZone, MessageComposer, SendButton, generateAttachmentId, getFileType, sendButtonVariants, validateFile } from './chunk-EKRT7K2K.js';
|
|
35
35
|
export { PhoneInput, PhoneInputGroup } from './chunk-3D4ITDLO.js';
|
|
36
36
|
import { Progress } from './chunk-CEQJGUAS.js';
|
|
37
37
|
export { CircularProgress, Progress, circularProgressVariants, progressBarFillVariants, progressBarTrackVariants } from './chunk-CEQJGUAS.js';
|
|
38
38
|
export { QuickAction, QuickActionGroup, QuickActionIcons, quickActionIconVariants, quickActionVariants } from './chunk-5U6GETAW.js';
|
|
39
39
|
import { RecordButton } from './chunk-VNWJTCBQ.js';
|
|
40
40
|
export { RecordButton, formatDuration, recordButtonVariants } from './chunk-VNWJTCBQ.js';
|
|
41
|
-
export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-
|
|
41
|
+
export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-5BDCQBYW.js';
|
|
42
42
|
export { Separator, separatorVariants } from './chunk-OQWZYKJM.js';
|
|
43
43
|
export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';
|
|
44
44
|
export { ScrollArea, scrollAreaVariants } from './chunk-HS25RPDW.js';
|
|
@@ -49,7 +49,7 @@ export { HtmlPreviewBlock } from './chunk-MWPPOX6F.js';
|
|
|
49
49
|
export { MermaidBlock } from './chunk-NU6QKULE.js';
|
|
50
50
|
export { SurveyBlock } from './chunk-VE6OUO7X.js';
|
|
51
51
|
export { FenceBlock } from './chunk-RZFSJD67.js';
|
|
52
|
-
export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-
|
|
52
|
+
export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-NGLI2MSM.js';
|
|
53
53
|
export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-OTQ72WX3.js';
|
|
54
54
|
import './chunk-RISZWWEQ.js';
|
|
55
55
|
export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-PS5INHGC.js';
|
|
@@ -59,24 +59,24 @@ import { Checkbox } from './chunk-KFLDXJEE.js';
|
|
|
59
59
|
export { Checkbox, CheckboxGroup, checkboxVariants } from './chunk-KFLDXJEE.js';
|
|
60
60
|
export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-SVSHA7XV.js';
|
|
61
61
|
export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-BJKAVWED.js';
|
|
62
|
-
export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-
|
|
63
|
-
import { Dropdown, DropdownItem, DropdownSeparator, DropdownHeader } from './chunk-
|
|
64
|
-
export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator } from './chunk-
|
|
62
|
+
export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-BMRQ4VME.js';
|
|
63
|
+
import { Dropdown, DropdownItem, DropdownSeparator, DropdownHeader } from './chunk-HIDV32ZX.js';
|
|
64
|
+
export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator } from './chunk-HIDV32ZX.js';
|
|
65
65
|
import { Alert, AlertTitle, AlertDescription } from './chunk-6EWJGRC3.js';
|
|
66
66
|
export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-6EWJGRC3.js';
|
|
67
67
|
import { AlertDialog } from './chunk-H3HF36ZL.js';
|
|
68
68
|
export { AlertDialog } from './chunk-H3HF36ZL.js';
|
|
69
69
|
export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-XO3WLK65.js';
|
|
70
70
|
export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
|
|
71
|
-
export { Autocomplete } from './chunk-
|
|
71
|
+
export { Autocomplete } from './chunk-P6L74SKG.js';
|
|
72
72
|
import { Avatar } from './chunk-DCBMTFLE.js';
|
|
73
73
|
export { Avatar, AvatarGroup, avatarVariants, getInitials } from './chunk-DCBMTFLE.js';
|
|
74
74
|
import './chunk-IQ4KQJAO.js';
|
|
75
75
|
export { Breadcrumb, BreadcrumbSlash } from './chunk-5Y5FSR4N.js';
|
|
76
76
|
import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
|
|
77
77
|
export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
|
|
78
|
-
import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-
|
|
79
|
-
export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-
|
|
78
|
+
import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-3SRBIXQX.js';
|
|
79
|
+
export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-3SRBIXQX.js';
|
|
80
80
|
import { Textarea } from './chunk-AFGADE3B.js';
|
|
81
81
|
export { Textarea, textareaVariants } from './chunk-AFGADE3B.js';
|
|
82
82
|
import { Tooltip } from './chunk-FJ7YPVKV.js';
|
|
@@ -85,12 +85,12 @@ import { RadioGroup, Radio } from './chunk-QUUBTNMH.js';
|
|
|
85
85
|
export { Radio, RadioGroup, radioVariants } from './chunk-QUUBTNMH.js';
|
|
86
86
|
import { Label } from './chunk-I3WGZPI6.js';
|
|
87
87
|
export { Label, labelVariants } from './chunk-I3WGZPI6.js';
|
|
88
|
-
import { Select } from './chunk-
|
|
89
|
-
export { Select, selectTriggerVariants } from './chunk-
|
|
88
|
+
import { Select } from './chunk-DLBV42JD.js';
|
|
89
|
+
export { Select, selectTriggerVariants } from './chunk-DLBV42JD.js';
|
|
90
90
|
import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
|
|
91
91
|
export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-QYSUYB3S.js';
|
|
92
|
-
import { DateInput } from './chunk-
|
|
93
|
-
export { DateInput } from './chunk-
|
|
92
|
+
import { DateInput } from './chunk-EGWWTIWS.js';
|
|
93
|
+
export { DateInput } from './chunk-EGWWTIWS.js';
|
|
94
94
|
import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-XMCIXHGH.js';
|
|
95
95
|
export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-XMCIXHGH.js';
|
|
96
96
|
import { Input, inputVariants } from './chunk-YXCE2HSK.js';
|
|
@@ -116,8 +116,8 @@ import { useEscapeKey } from './chunk-T4ME7QCT.js';
|
|
|
116
116
|
export { useEscapeKey } from './chunk-T4ME7QCT.js';
|
|
117
117
|
import { useClickOutside } from './chunk-62ZOA6PX.js';
|
|
118
118
|
export { useClickOutside } from './chunk-62ZOA6PX.js';
|
|
119
|
-
import { useAnchoredPosition } from './chunk-
|
|
120
|
-
export { useAnchoredPosition } from './chunk-
|
|
119
|
+
import { useAnchoredPosition } from './chunk-BOOJDRJO.js';
|
|
120
|
+
export { useAnchoredPosition } from './chunk-BOOJDRJO.js';
|
|
121
121
|
import './chunk-7XUN3OQT.js';
|
|
122
122
|
export { formatPhoneNumber, isPhoneNumberEmpty, isValidPhoneNumber, unformatPhoneNumber } from './chunk-ZVPJ2MH6.js';
|
|
123
123
|
export { isHtmlEmpty, stripHtmlTags } from './chunk-ERLPVXOV.js';
|
|
@@ -134,7 +134,7 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
|
134
134
|
import { cva } from 'class-variance-authority';
|
|
135
135
|
import * as ReactDOM from 'react-dom';
|
|
136
136
|
import { createPortal } from 'react-dom';
|
|
137
|
-
import { FileUp, X, AlertCircle as AlertCircle$1, Calendar as Calendar$1, ChevronLeft, ChevronRight as ChevronRight$1, ChevronDown as ChevronDown$1, FolderUp, Upload, Edit2,
|
|
137
|
+
import { FileUp, X, AlertCircle as AlertCircle$1, ChevronUp as ChevronUp$1, Check, Calendar as Calendar$1, ChevronLeft, ChevronRight as ChevronRight$1, ChevronDown as ChevronDown$1, FolderUp, Upload, Edit2, Phone as Phone$1, Mail as Mail$1, Clock as Clock$1, MapPin, Shield, Building2, SlidersHorizontal, Trash2 as Trash2$1, Pencil as Pencil$1, Plus as Plus$1, Link as Link$1, AlertTriangle as AlertTriangle$1, RefreshCw as RefreshCw$1 } from 'lucide-react';
|
|
138
138
|
|
|
139
139
|
var SEX_OPTIONS = [
|
|
140
140
|
{ value: "F", label: "Female" },
|
|
@@ -5580,6 +5580,329 @@ function VisitScribe({
|
|
|
5580
5580
|
}
|
|
5581
5581
|
);
|
|
5582
5582
|
}
|
|
5583
|
+
var MENU_OFFSET_PX = 6;
|
|
5584
|
+
var MENU_MAX_HEIGHT_PX = 320;
|
|
5585
|
+
function optionKey(option) {
|
|
5586
|
+
return `${option.provider}\0${option.model}`;
|
|
5587
|
+
}
|
|
5588
|
+
function renderedOptionKey(option, index) {
|
|
5589
|
+
return `${option.id ?? optionKey(option)}\0${index}`;
|
|
5590
|
+
}
|
|
5591
|
+
function groupByProvider(models) {
|
|
5592
|
+
const groups = /* @__PURE__ */ new Map();
|
|
5593
|
+
for (const model of models) {
|
|
5594
|
+
const group = groups.get(model.provider);
|
|
5595
|
+
if (group) {
|
|
5596
|
+
group.push(model);
|
|
5597
|
+
} else {
|
|
5598
|
+
groups.set(model.provider, [model]);
|
|
5599
|
+
}
|
|
5600
|
+
}
|
|
5601
|
+
return Array.from(groups, ([provider, options]) => ({ provider, options }));
|
|
5602
|
+
}
|
|
5603
|
+
function getProviderLabel(models, provider) {
|
|
5604
|
+
return models.find((model) => model.provider === provider && model.providerLabel)?.providerLabel ?? provider;
|
|
5605
|
+
}
|
|
5606
|
+
function ComposerModelSelector({
|
|
5607
|
+
models,
|
|
5608
|
+
value,
|
|
5609
|
+
providerFilter,
|
|
5610
|
+
onProviderFilterChange,
|
|
5611
|
+
onChange,
|
|
5612
|
+
disabled = false,
|
|
5613
|
+
className,
|
|
5614
|
+
boundaryRef,
|
|
5615
|
+
placeholder = "Model",
|
|
5616
|
+
anyLabel = "Any",
|
|
5617
|
+
emptyLabel = "No models",
|
|
5618
|
+
ariaLabel = "Model"
|
|
5619
|
+
}) {
|
|
5620
|
+
const [open, setOpen] = React10.useState(false);
|
|
5621
|
+
const [internalProviderFilter, setInternalProviderFilter] = React10.useState(null);
|
|
5622
|
+
const [highlightedIndex, setHighlightedIndex] = React10.useState(0);
|
|
5623
|
+
const listRef = React10.useRef(null);
|
|
5624
|
+
const menuId = React10.useId();
|
|
5625
|
+
const {
|
|
5626
|
+
anchorRef: triggerRef,
|
|
5627
|
+
floatingRef: menuRef,
|
|
5628
|
+
style: menuStyle
|
|
5629
|
+
} = useAnchoredPosition({
|
|
5630
|
+
open,
|
|
5631
|
+
placement: "top-start",
|
|
5632
|
+
offset: MENU_OFFSET_PX,
|
|
5633
|
+
matchMinWidth: true,
|
|
5634
|
+
maxHeight: MENU_MAX_HEIGHT_PX,
|
|
5635
|
+
allowFlip: false,
|
|
5636
|
+
boundaryRef
|
|
5637
|
+
});
|
|
5638
|
+
const activeProviderFilter = providerFilter === void 0 ? internalProviderFilter : providerFilter;
|
|
5639
|
+
const selectedKey = value ? optionKey(value) : null;
|
|
5640
|
+
const selectedOption = models.find(
|
|
5641
|
+
(model) => optionKey(model) === selectedKey
|
|
5642
|
+
);
|
|
5643
|
+
const providers = React10.useMemo(
|
|
5644
|
+
() => Array.from(new Set(models.map((model) => model.provider))),
|
|
5645
|
+
[models]
|
|
5646
|
+
);
|
|
5647
|
+
const providerLabels = React10.useMemo(
|
|
5648
|
+
() => new Map(
|
|
5649
|
+
providers.map((provider) => [
|
|
5650
|
+
provider,
|
|
5651
|
+
getProviderLabel(models, provider)
|
|
5652
|
+
])
|
|
5653
|
+
),
|
|
5654
|
+
[models, providers]
|
|
5655
|
+
);
|
|
5656
|
+
const filteredModels = React10.useMemo(
|
|
5657
|
+
() => activeProviderFilter === null ? models : models.filter((model) => model.provider === activeProviderFilter),
|
|
5658
|
+
[activeProviderFilter, models]
|
|
5659
|
+
);
|
|
5660
|
+
const groupedModels = React10.useMemo(
|
|
5661
|
+
() => groupByProvider(filteredModels),
|
|
5662
|
+
[filteredModels]
|
|
5663
|
+
);
|
|
5664
|
+
const groupedRenderedModels = React10.useMemo(() => {
|
|
5665
|
+
let index = 0;
|
|
5666
|
+
return groupedModels.map((group) => ({
|
|
5667
|
+
provider: group.provider,
|
|
5668
|
+
options: group.options.map((option) => {
|
|
5669
|
+
const rendered = {
|
|
5670
|
+
option,
|
|
5671
|
+
index,
|
|
5672
|
+
key: renderedOptionKey(option, index)
|
|
5673
|
+
};
|
|
5674
|
+
index += 1;
|
|
5675
|
+
return rendered;
|
|
5676
|
+
})
|
|
5677
|
+
}));
|
|
5678
|
+
}, [groupedModels]);
|
|
5679
|
+
const renderedModels = React10.useMemo(
|
|
5680
|
+
() => groupedRenderedModels.flatMap((group) => group.options),
|
|
5681
|
+
[groupedRenderedModels]
|
|
5682
|
+
);
|
|
5683
|
+
const getOptionId = React10.useCallback(
|
|
5684
|
+
(index) => `${menuId}-option-${index}`,
|
|
5685
|
+
[menuId]
|
|
5686
|
+
);
|
|
5687
|
+
const activeOptionId = open && renderedModels[highlightedIndex] ? getOptionId(highlightedIndex) : void 0;
|
|
5688
|
+
const selectedRenderedIndex = React10.useMemo(
|
|
5689
|
+
() => selectedKey ? renderedModels.findIndex(
|
|
5690
|
+
(renderedModel) => optionKey(renderedModel.option) === selectedKey
|
|
5691
|
+
) : -1,
|
|
5692
|
+
[renderedModels, selectedKey]
|
|
5693
|
+
);
|
|
5694
|
+
const setProvider = React10.useCallback(
|
|
5695
|
+
(provider) => {
|
|
5696
|
+
if (providerFilter === void 0) {
|
|
5697
|
+
setInternalProviderFilter(provider);
|
|
5698
|
+
}
|
|
5699
|
+
onProviderFilterChange?.(provider);
|
|
5700
|
+
},
|
|
5701
|
+
[onProviderFilterChange, providerFilter]
|
|
5702
|
+
);
|
|
5703
|
+
const close = React10.useCallback(
|
|
5704
|
+
(restoreFocus = true) => {
|
|
5705
|
+
setOpen(false);
|
|
5706
|
+
if (restoreFocus) {
|
|
5707
|
+
triggerRef.current?.focus({ preventScroll: true });
|
|
5708
|
+
}
|
|
5709
|
+
},
|
|
5710
|
+
[triggerRef]
|
|
5711
|
+
);
|
|
5712
|
+
const selectModel = React10.useCallback(
|
|
5713
|
+
(model) => {
|
|
5714
|
+
onChange({ provider: model.provider, model: model.model });
|
|
5715
|
+
close();
|
|
5716
|
+
},
|
|
5717
|
+
[close, onChange]
|
|
5718
|
+
);
|
|
5719
|
+
const outsideRefs = React10.useMemo(
|
|
5720
|
+
() => [triggerRef, menuRef],
|
|
5721
|
+
[triggerRef, menuRef]
|
|
5722
|
+
);
|
|
5723
|
+
useClickOutside(outsideRefs, () => close(false), open);
|
|
5724
|
+
useEscapeKey(close, open);
|
|
5725
|
+
React10.useEffect(() => {
|
|
5726
|
+
if (!open) return;
|
|
5727
|
+
setHighlightedIndex(selectedRenderedIndex >= 0 ? selectedRenderedIndex : 0);
|
|
5728
|
+
}, [activeProviderFilter, open, selectedRenderedIndex]);
|
|
5729
|
+
React10.useEffect(() => {
|
|
5730
|
+
if (!open) return;
|
|
5731
|
+
setHighlightedIndex(
|
|
5732
|
+
(current) => Math.min(current, Math.max(renderedModels.length - 1, 0))
|
|
5733
|
+
);
|
|
5734
|
+
}, [open, renderedModels.length]);
|
|
5735
|
+
React10.useEffect(() => {
|
|
5736
|
+
if (!open) return;
|
|
5737
|
+
requestAnimationFrame(
|
|
5738
|
+
() => listRef.current?.focus({ preventScroll: true })
|
|
5739
|
+
);
|
|
5740
|
+
}, [open]);
|
|
5741
|
+
const handleTriggerKeyDown = (event) => {
|
|
5742
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
5743
|
+
event.preventDefault();
|
|
5744
|
+
setOpen(true);
|
|
5745
|
+
}
|
|
5746
|
+
};
|
|
5747
|
+
const handleMenuKeyDown = (event) => {
|
|
5748
|
+
if (renderedModels.length === 0) return;
|
|
5749
|
+
if (event.key === "ArrowDown") {
|
|
5750
|
+
event.preventDefault();
|
|
5751
|
+
setHighlightedIndex((current) => (current + 1) % renderedModels.length);
|
|
5752
|
+
}
|
|
5753
|
+
if (event.key === "ArrowUp") {
|
|
5754
|
+
event.preventDefault();
|
|
5755
|
+
setHighlightedIndex(
|
|
5756
|
+
(current) => (current - 1 + renderedModels.length) % renderedModels.length
|
|
5757
|
+
);
|
|
5758
|
+
}
|
|
5759
|
+
if (event.key === "Home") {
|
|
5760
|
+
event.preventDefault();
|
|
5761
|
+
setHighlightedIndex(0);
|
|
5762
|
+
}
|
|
5763
|
+
if (event.key === "End") {
|
|
5764
|
+
event.preventDefault();
|
|
5765
|
+
setHighlightedIndex(renderedModels.length - 1);
|
|
5766
|
+
}
|
|
5767
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
5768
|
+
event.preventDefault();
|
|
5769
|
+
const highlightedModel = renderedModels[highlightedIndex]?.option;
|
|
5770
|
+
if (highlightedModel) {
|
|
5771
|
+
selectModel(highlightedModel);
|
|
5772
|
+
}
|
|
5773
|
+
}
|
|
5774
|
+
};
|
|
5775
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5776
|
+
/* @__PURE__ */ jsxs(
|
|
5777
|
+
"button",
|
|
5778
|
+
{
|
|
5779
|
+
ref: triggerRef,
|
|
5780
|
+
type: "button",
|
|
5781
|
+
disabled,
|
|
5782
|
+
"aria-haspopup": "listbox",
|
|
5783
|
+
"aria-expanded": open,
|
|
5784
|
+
"aria-controls": open ? menuId : void 0,
|
|
5785
|
+
onClick: () => setOpen((current) => !current),
|
|
5786
|
+
onKeyDown: handleTriggerKeyDown,
|
|
5787
|
+
"data-slot": "composer-model-selector-trigger",
|
|
5788
|
+
className: cn(
|
|
5789
|
+
"inline-flex h-8 max-w-full items-center gap-1.5 rounded-full border px-2.5 text-sm font-medium",
|
|
5790
|
+
"border-border bg-background text-foreground shadow-sm",
|
|
5791
|
+
"hover:bg-muted/50",
|
|
5792
|
+
"focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
|
|
5793
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
5794
|
+
className
|
|
5795
|
+
),
|
|
5796
|
+
children: [
|
|
5797
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: selectedOption?.label ?? selectedOption?.model ?? placeholder }),
|
|
5798
|
+
/* @__PURE__ */ jsx(ChevronUp$1, { "aria-hidden": "true", className: "h-3.5 w-3.5 shrink-0" })
|
|
5799
|
+
]
|
|
5800
|
+
}
|
|
5801
|
+
),
|
|
5802
|
+
open && createPortal(
|
|
5803
|
+
/* @__PURE__ */ jsxs(
|
|
5804
|
+
"div",
|
|
5805
|
+
{
|
|
5806
|
+
ref: menuRef,
|
|
5807
|
+
style: menuStyle,
|
|
5808
|
+
"data-slot": "composer-model-selector-menu",
|
|
5809
|
+
className: cn(
|
|
5810
|
+
"border-border bg-card text-card-foreground flex w-80 max-w-full flex-col rounded-lg border shadow-lg",
|
|
5811
|
+
"animate-in fade-in overflow-hidden duration-100"
|
|
5812
|
+
),
|
|
5813
|
+
children: [
|
|
5814
|
+
/* @__PURE__ */ jsx(
|
|
5815
|
+
"div",
|
|
5816
|
+
{
|
|
5817
|
+
"data-slot": "composer-model-selector-provider-filter",
|
|
5818
|
+
className: "border-border flex min-h-9 items-center gap-1 overflow-x-auto overflow-y-hidden border-b p-2",
|
|
5819
|
+
children: [null, ...providers].map((provider) => {
|
|
5820
|
+
const selected = activeProviderFilter === provider;
|
|
5821
|
+
return /* @__PURE__ */ jsx(
|
|
5822
|
+
"button",
|
|
5823
|
+
{
|
|
5824
|
+
type: "button",
|
|
5825
|
+
"aria-pressed": selected,
|
|
5826
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
5827
|
+
onClick: () => setProvider(provider),
|
|
5828
|
+
className: cn(
|
|
5829
|
+
"inline-flex h-6 shrink-0 items-center justify-center rounded-full px-2.5 text-xs font-medium whitespace-nowrap transition-colors",
|
|
5830
|
+
"focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
|
|
5831
|
+
selected ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
5832
|
+
),
|
|
5833
|
+
children: provider === null ? anyLabel : providerLabels.get(provider) ?? provider
|
|
5834
|
+
},
|
|
5835
|
+
provider ?? "all-providers"
|
|
5836
|
+
);
|
|
5837
|
+
})
|
|
5838
|
+
}
|
|
5839
|
+
),
|
|
5840
|
+
/* @__PURE__ */ jsx(
|
|
5841
|
+
"div",
|
|
5842
|
+
{
|
|
5843
|
+
ref: listRef,
|
|
5844
|
+
id: menuId,
|
|
5845
|
+
role: "listbox",
|
|
5846
|
+
"aria-label": ariaLabel,
|
|
5847
|
+
"aria-activedescendant": activeOptionId,
|
|
5848
|
+
tabIndex: -1,
|
|
5849
|
+
onKeyDown: handleMenuKeyDown,
|
|
5850
|
+
className: "min-h-0 flex-1 overflow-y-auto p-1",
|
|
5851
|
+
children: groupedModels.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-4 text-center text-sm", children: emptyLabel }) : groupedRenderedModels.map((group) => /* @__PURE__ */ jsxs(
|
|
5852
|
+
"div",
|
|
5853
|
+
{
|
|
5854
|
+
role: "group",
|
|
5855
|
+
"aria-label": providerLabels.get(group.provider) ?? group.provider,
|
|
5856
|
+
children: [
|
|
5857
|
+
/* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-1.5 text-xs font-semibold uppercase", children: providerLabels.get(group.provider) ?? group.provider }),
|
|
5858
|
+
group.options.map((renderedModel) => {
|
|
5859
|
+
const { index, key, option: model } = renderedModel;
|
|
5860
|
+
const selected = optionKey(model) === selectedKey;
|
|
5861
|
+
const highlighted = index === highlightedIndex;
|
|
5862
|
+
return /* @__PURE__ */ jsxs(
|
|
5863
|
+
"button",
|
|
5864
|
+
{
|
|
5865
|
+
id: getOptionId(index),
|
|
5866
|
+
type: "button",
|
|
5867
|
+
role: "option",
|
|
5868
|
+
"aria-selected": selected,
|
|
5869
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
5870
|
+
onClick: () => selectModel(model),
|
|
5871
|
+
onMouseEnter: () => setHighlightedIndex(index),
|
|
5872
|
+
className: cn(
|
|
5873
|
+
"flex w-full items-center gap-2 rounded-md px-3 py-2 text-start text-sm",
|
|
5874
|
+
"focus-visible:ring-ring transition-colors focus-visible:ring-2 focus-visible:outline-none",
|
|
5875
|
+
highlighted && "bg-muted",
|
|
5876
|
+
selected && "bg-primary/10 text-primary"
|
|
5877
|
+
),
|
|
5878
|
+
children: [
|
|
5879
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: model.label ?? model.model }),
|
|
5880
|
+
selected && /* @__PURE__ */ jsx(
|
|
5881
|
+
Check,
|
|
5882
|
+
{
|
|
5883
|
+
"aria-hidden": "true",
|
|
5884
|
+
className: "text-primary h-4 w-4 shrink-0"
|
|
5885
|
+
}
|
|
5886
|
+
)
|
|
5887
|
+
]
|
|
5888
|
+
},
|
|
5889
|
+
key
|
|
5890
|
+
);
|
|
5891
|
+
})
|
|
5892
|
+
]
|
|
5893
|
+
},
|
|
5894
|
+
group.provider
|
|
5895
|
+
))
|
|
5896
|
+
}
|
|
5897
|
+
)
|
|
5898
|
+
]
|
|
5899
|
+
}
|
|
5900
|
+
),
|
|
5901
|
+
document.body
|
|
5902
|
+
)
|
|
5903
|
+
] });
|
|
5904
|
+
}
|
|
5905
|
+
ComposerModelSelector.displayName = "ComposerModelSelector";
|
|
5583
5906
|
function normalizeString(value) {
|
|
5584
5907
|
return value.trim().replace(/\s+/g, " ").toLowerCase();
|
|
5585
5908
|
}
|
|
@@ -9690,6 +10013,50 @@ function LoadingSpinner({ className }) {
|
|
|
9690
10013
|
}
|
|
9691
10014
|
);
|
|
9692
10015
|
}
|
|
10016
|
+
|
|
10017
|
+
// src/components/BusinessHoursEditor/scheduleRules.ts
|
|
10018
|
+
function generateId2() {
|
|
10019
|
+
return Math.random().toString(36).substring(2, 9);
|
|
10020
|
+
}
|
|
10021
|
+
function ruleSignature(slot) {
|
|
10022
|
+
return `${slot.start}\0${slot.end}\0${slot.description ?? ""}`;
|
|
10023
|
+
}
|
|
10024
|
+
function scheduleToRules(schedule) {
|
|
10025
|
+
const rulesBySignature = /* @__PURE__ */ new Map();
|
|
10026
|
+
const orderedRules = [];
|
|
10027
|
+
for (const day of schedule) {
|
|
10028
|
+
for (const slot of day.hours) {
|
|
10029
|
+
const signature = ruleSignature(slot);
|
|
10030
|
+
const candidates = rulesBySignature.get(signature) ?? [];
|
|
10031
|
+
let rule = candidates.find((r) => !r.days.includes(day.day));
|
|
10032
|
+
if (!rule) {
|
|
10033
|
+
rule = {
|
|
10034
|
+
id: `rule-${orderedRules.length}`,
|
|
10035
|
+
days: [],
|
|
10036
|
+
start: slot.start,
|
|
10037
|
+
end: slot.end,
|
|
10038
|
+
description: slot.description
|
|
10039
|
+
};
|
|
10040
|
+
candidates.push(rule);
|
|
10041
|
+
rulesBySignature.set(signature, candidates);
|
|
10042
|
+
orderedRules.push(rule);
|
|
10043
|
+
}
|
|
10044
|
+
rule.days.push(day.day);
|
|
10045
|
+
}
|
|
10046
|
+
}
|
|
10047
|
+
return orderedRules;
|
|
10048
|
+
}
|
|
10049
|
+
function rulesToSchedule(rules) {
|
|
10050
|
+
return Array.from({ length: 7 }, (_, day) => ({
|
|
10051
|
+
day,
|
|
10052
|
+
hours: rules.filter((rule) => rule.days.includes(day)).map((rule, index) => ({
|
|
10053
|
+
id: `slot-${day}-${index}`,
|
|
10054
|
+
start: rule.start,
|
|
10055
|
+
end: rule.end,
|
|
10056
|
+
...rule.description ? { description: rule.description } : {}
|
|
10057
|
+
}))
|
|
10058
|
+
}));
|
|
10059
|
+
}
|
|
9693
10060
|
var DAY_NAMES = {
|
|
9694
10061
|
0: "Sunday",
|
|
9695
10062
|
1: "Monday",
|
|
@@ -9957,6 +10324,63 @@ function DayScheduleRow({
|
|
|
9957
10324
|
}
|
|
9958
10325
|
);
|
|
9959
10326
|
}
|
|
10327
|
+
function GroupedScheduleRows({
|
|
10328
|
+
officeHours,
|
|
10329
|
+
useShortDayNames = false,
|
|
10330
|
+
use24Hour = false
|
|
10331
|
+
}) {
|
|
10332
|
+
const normalized = officeHours.map((dayHours) => ({
|
|
10333
|
+
day: parseDayToNumber(dayHours.day),
|
|
10334
|
+
hours: (dayHours.hours ?? []).map((range) => ({
|
|
10335
|
+
start: range.start ?? "",
|
|
10336
|
+
end: range.end ?? "",
|
|
10337
|
+
...range.description ? { description: range.description } : {}
|
|
10338
|
+
}))
|
|
10339
|
+
}));
|
|
10340
|
+
const rules = scheduleToRules(normalized);
|
|
10341
|
+
const closedDays = normalized.filter((dayHours) => dayHours.hours.length === 0).map((dayHours) => dayHours.day);
|
|
10342
|
+
const dayNames = useShortDayNames ? DAY_NAMES_SHORT : DAY_NAMES;
|
|
10343
|
+
const formatDays = (days) => days.map((day) => dayNames[day]).join(", ");
|
|
10344
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10345
|
+
rules.map((rule) => /* @__PURE__ */ jsxs(
|
|
10346
|
+
"div",
|
|
10347
|
+
{
|
|
10348
|
+
"data-slot": "business-hours-grouped-row",
|
|
10349
|
+
className: cn(dayRowVariants({ isToday: false })),
|
|
10350
|
+
children: [
|
|
10351
|
+
/* @__PURE__ */ jsx(
|
|
10352
|
+
"span",
|
|
10353
|
+
{
|
|
10354
|
+
"data-slot": "business-hours-day-name",
|
|
10355
|
+
className: "min-w-[80px] font-medium",
|
|
10356
|
+
children: formatDays(rule.days)
|
|
10357
|
+
}
|
|
10358
|
+
),
|
|
10359
|
+
/* @__PURE__ */ jsx("div", { "data-slot": "business-hours-day-hours", className: "text-end", children: /* @__PURE__ */ jsx(TimeRangeDisplay, { range: rule, use24Hour }) })
|
|
10360
|
+
]
|
|
10361
|
+
},
|
|
10362
|
+
rule.id
|
|
10363
|
+
)),
|
|
10364
|
+
closedDays.length > 0 && /* @__PURE__ */ jsxs(
|
|
10365
|
+
"div",
|
|
10366
|
+
{
|
|
10367
|
+
"data-slot": "business-hours-grouped-row",
|
|
10368
|
+
className: cn(dayRowVariants({ isToday: false })),
|
|
10369
|
+
children: [
|
|
10370
|
+
/* @__PURE__ */ jsx(
|
|
10371
|
+
"span",
|
|
10372
|
+
{
|
|
10373
|
+
"data-slot": "business-hours-day-name",
|
|
10374
|
+
className: "min-w-[80px] font-medium",
|
|
10375
|
+
children: formatDays(closedDays)
|
|
10376
|
+
}
|
|
10377
|
+
),
|
|
10378
|
+
/* @__PURE__ */ jsx("div", { "data-slot": "business-hours-day-hours", className: "text-end", children: /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Closed" }) })
|
|
10379
|
+
]
|
|
10380
|
+
}
|
|
10381
|
+
)
|
|
10382
|
+
] });
|
|
10383
|
+
}
|
|
9960
10384
|
function BusinessHours({
|
|
9961
10385
|
schedule,
|
|
9962
10386
|
variant = "default",
|
|
@@ -9965,6 +10389,7 @@ function BusinessHours({
|
|
|
9965
10389
|
highlightToday = true,
|
|
9966
10390
|
useShortDayNames = false,
|
|
9967
10391
|
use24Hour = false,
|
|
10392
|
+
groupDays = false,
|
|
9968
10393
|
showHeader = true,
|
|
9969
10394
|
headerText = "Hours",
|
|
9970
10395
|
className
|
|
@@ -10100,7 +10525,14 @@ function BusinessHours({
|
|
|
10100
10525
|
{
|
|
10101
10526
|
"data-slot": "business-hours-schedule",
|
|
10102
10527
|
className: "space-y-1 divide-y divide-neutral-100 dark:divide-neutral-800",
|
|
10103
|
-
children:
|
|
10528
|
+
children: groupDays ? /* @__PURE__ */ jsx(
|
|
10529
|
+
GroupedScheduleRows,
|
|
10530
|
+
{
|
|
10531
|
+
officeHours: schedule.officeHours,
|
|
10532
|
+
useShortDayNames,
|
|
10533
|
+
use24Hour
|
|
10534
|
+
}
|
|
10535
|
+
) : schedule.officeHours.map((dayHours, idx) => /* @__PURE__ */ jsx(
|
|
10104
10536
|
DayScheduleRow,
|
|
10105
10537
|
{
|
|
10106
10538
|
dayHours,
|
|
@@ -10237,9 +10669,6 @@ var DAY_NAMES2 = [
|
|
|
10237
10669
|
"Saturday"
|
|
10238
10670
|
];
|
|
10239
10671
|
var DAY_NAMES_SHORT2 = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
10240
|
-
function generateId2() {
|
|
10241
|
-
return Math.random().toString(36).substring(2, 9);
|
|
10242
|
-
}
|
|
10243
10672
|
function getOrderedDays(weekStartsOn) {
|
|
10244
10673
|
if (weekStartsOn === 1) {
|
|
10245
10674
|
return [1, 2, 3, 4, 5, 6, 0];
|
|
@@ -10255,6 +10684,15 @@ function ensureAllDays(schedule) {
|
|
|
10255
10684
|
return result;
|
|
10256
10685
|
}
|
|
10257
10686
|
function BusinessHoursEditor({
|
|
10687
|
+
variant = "days",
|
|
10688
|
+
...props
|
|
10689
|
+
}) {
|
|
10690
|
+
if (variant === "rules") {
|
|
10691
|
+
return /* @__PURE__ */ jsx(BusinessHoursRulesEditor, { ...props });
|
|
10692
|
+
}
|
|
10693
|
+
return /* @__PURE__ */ jsx(BusinessHoursDaysEditor, { ...props });
|
|
10694
|
+
}
|
|
10695
|
+
function BusinessHoursDaysEditor({
|
|
10258
10696
|
value,
|
|
10259
10697
|
onChange,
|
|
10260
10698
|
disabled = false,
|
|
@@ -10524,6 +10962,208 @@ function BusinessHoursEditor({
|
|
|
10524
10962
|
}
|
|
10525
10963
|
);
|
|
10526
10964
|
}
|
|
10965
|
+
function normalizeSchedule(schedule) {
|
|
10966
|
+
return JSON.stringify(
|
|
10967
|
+
ensureAllDays(schedule).map((day) => ({
|
|
10968
|
+
day: day.day,
|
|
10969
|
+
hours: day.hours.map((slot) => ({
|
|
10970
|
+
start: slot.start,
|
|
10971
|
+
end: slot.end,
|
|
10972
|
+
description: slot.description ?? ""
|
|
10973
|
+
}))
|
|
10974
|
+
}))
|
|
10975
|
+
);
|
|
10976
|
+
}
|
|
10977
|
+
function BusinessHoursRulesEditor({
|
|
10978
|
+
value,
|
|
10979
|
+
onChange,
|
|
10980
|
+
disabled = false,
|
|
10981
|
+
showDescription = true,
|
|
10982
|
+
use24Hour = false,
|
|
10983
|
+
weekStartsOn = 0,
|
|
10984
|
+
className,
|
|
10985
|
+
addHoursLabel = "Add Hours"
|
|
10986
|
+
}) {
|
|
10987
|
+
const [rules, setRules] = React10.useState(
|
|
10988
|
+
() => scheduleToRules(value)
|
|
10989
|
+
);
|
|
10990
|
+
const timeFormat = use24Hour ? "24-hour" : "12-hour";
|
|
10991
|
+
const lastScheduleRef = React10.useRef(normalizeSchedule(value));
|
|
10992
|
+
React10.useEffect(() => {
|
|
10993
|
+
const incoming = normalizeSchedule(value);
|
|
10994
|
+
if (incoming !== lastScheduleRef.current) {
|
|
10995
|
+
lastScheduleRef.current = incoming;
|
|
10996
|
+
setRules(scheduleToRules(value));
|
|
10997
|
+
}
|
|
10998
|
+
}, [value]);
|
|
10999
|
+
const emit = useCallback(
|
|
11000
|
+
(nextRules) => {
|
|
11001
|
+
setRules(nextRules);
|
|
11002
|
+
const schedule = rulesToSchedule(nextRules);
|
|
11003
|
+
const normalized = normalizeSchedule(schedule);
|
|
11004
|
+
if (normalized !== lastScheduleRef.current) {
|
|
11005
|
+
lastScheduleRef.current = normalized;
|
|
11006
|
+
onChange(schedule);
|
|
11007
|
+
}
|
|
11008
|
+
},
|
|
11009
|
+
[onChange]
|
|
11010
|
+
);
|
|
11011
|
+
const handleAddRule = useCallback(() => {
|
|
11012
|
+
emit([
|
|
11013
|
+
...rules,
|
|
11014
|
+
{ id: generateId2(), days: [], start: "09:00", end: "17:00" }
|
|
11015
|
+
]);
|
|
11016
|
+
}, [emit, rules]);
|
|
11017
|
+
const handleRemoveRule = useCallback(
|
|
11018
|
+
(ruleId) => {
|
|
11019
|
+
emit(rules.filter((rule) => rule.id !== ruleId));
|
|
11020
|
+
},
|
|
11021
|
+
[emit, rules]
|
|
11022
|
+
);
|
|
11023
|
+
const handleToggleDay = useCallback(
|
|
11024
|
+
(ruleId, day) => {
|
|
11025
|
+
emit(
|
|
11026
|
+
rules.map(
|
|
11027
|
+
(rule) => rule.id === ruleId ? {
|
|
11028
|
+
...rule,
|
|
11029
|
+
days: rule.days.includes(day) ? rule.days.filter((d) => d !== day) : [...rule.days, day]
|
|
11030
|
+
} : rule
|
|
11031
|
+
)
|
|
11032
|
+
);
|
|
11033
|
+
},
|
|
11034
|
+
[emit, rules]
|
|
11035
|
+
);
|
|
11036
|
+
const handleRuleChange = useCallback(
|
|
11037
|
+
(ruleId, field, value2) => {
|
|
11038
|
+
emit(
|
|
11039
|
+
rules.map(
|
|
11040
|
+
(rule) => rule.id === ruleId ? { ...rule, [field]: value2 } : rule
|
|
11041
|
+
)
|
|
11042
|
+
);
|
|
11043
|
+
},
|
|
11044
|
+
[emit, rules]
|
|
11045
|
+
);
|
|
11046
|
+
const orderedDays = getOrderedDays(weekStartsOn);
|
|
11047
|
+
return /* @__PURE__ */ jsxs(
|
|
11048
|
+
"div",
|
|
11049
|
+
{
|
|
11050
|
+
"data-slot": "business-hours-editor",
|
|
11051
|
+
className: cn("business-hours-editor space-y-3", className),
|
|
11052
|
+
children: [
|
|
11053
|
+
rules.map((rule) => /* @__PURE__ */ jsxs(
|
|
11054
|
+
"fieldset",
|
|
11055
|
+
{
|
|
11056
|
+
"data-slot": "business-hours-rule",
|
|
11057
|
+
className: "flex flex-wrap items-center gap-2 border-b border-gray-200 pb-3 last:border-0 dark:border-gray-700",
|
|
11058
|
+
children: [
|
|
11059
|
+
/* @__PURE__ */ jsx("legend", { className: "sr-only", children: "Availability rule" }),
|
|
11060
|
+
/* @__PURE__ */ jsx(
|
|
11061
|
+
"div",
|
|
11062
|
+
{
|
|
11063
|
+
"data-slot": "business-hours-rule-days",
|
|
11064
|
+
className: "flex shrink-0 gap-1",
|
|
11065
|
+
children: orderedDays.map((day) => {
|
|
11066
|
+
const selected = rule.days.includes(day);
|
|
11067
|
+
return /* @__PURE__ */ jsx(
|
|
11068
|
+
"button",
|
|
11069
|
+
{
|
|
11070
|
+
type: "button",
|
|
11071
|
+
"aria-pressed": selected,
|
|
11072
|
+
"aria-label": DAY_NAMES2[day],
|
|
11073
|
+
disabled,
|
|
11074
|
+
onClick: () => handleToggleDay(rule.id, day),
|
|
11075
|
+
className: cn(
|
|
11076
|
+
"inline-flex h-7 w-9 items-center justify-center rounded-full border text-xs font-medium transition-colors",
|
|
11077
|
+
"focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
|
|
11078
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
11079
|
+
selected ? "border-primary-800 bg-primary-800 text-white" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
11080
|
+
),
|
|
11081
|
+
children: DAY_NAMES_SHORT2[day]
|
|
11082
|
+
},
|
|
11083
|
+
day
|
|
11084
|
+
);
|
|
11085
|
+
})
|
|
11086
|
+
}
|
|
11087
|
+
),
|
|
11088
|
+
/* @__PURE__ */ jsx("div", { className: "w-32 sm:w-36", children: /* @__PURE__ */ jsx(
|
|
11089
|
+
DateInput,
|
|
11090
|
+
{
|
|
11091
|
+
inputType: "time",
|
|
11092
|
+
timeFormat,
|
|
11093
|
+
minuteStep: 15,
|
|
11094
|
+
value: rule.start,
|
|
11095
|
+
onChange: (time) => handleRuleChange(rule.id, "start", time),
|
|
11096
|
+
disabled,
|
|
11097
|
+
size: "sm",
|
|
11098
|
+
className: "text-sm",
|
|
11099
|
+
label: "Start time",
|
|
11100
|
+
hideLabel: true
|
|
11101
|
+
}
|
|
11102
|
+
) }),
|
|
11103
|
+
/* @__PURE__ */ jsx("span", { "data-slot": "business-hours-separator", className: "text-gray-400", children: "\u2013" }),
|
|
11104
|
+
/* @__PURE__ */ jsx("div", { className: "w-32 sm:w-36", children: /* @__PURE__ */ jsx(
|
|
11105
|
+
DateInput,
|
|
11106
|
+
{
|
|
11107
|
+
inputType: "time",
|
|
11108
|
+
timeFormat,
|
|
11109
|
+
minuteStep: 15,
|
|
11110
|
+
value: rule.end,
|
|
11111
|
+
onChange: (time) => handleRuleChange(rule.id, "end", time),
|
|
11112
|
+
disabled,
|
|
11113
|
+
size: "sm",
|
|
11114
|
+
className: "text-sm",
|
|
11115
|
+
label: "End time",
|
|
11116
|
+
hideLabel: true
|
|
11117
|
+
}
|
|
11118
|
+
) }),
|
|
11119
|
+
showDescription && /* @__PURE__ */ jsx("div", { className: "min-w-[120px] flex-1", children: /* @__PURE__ */ jsx(
|
|
11120
|
+
Input,
|
|
11121
|
+
{
|
|
11122
|
+
type: "text",
|
|
11123
|
+
value: rule.description || "",
|
|
11124
|
+
onChange: (e) => handleRuleChange(rule.id, "description", e.target.value),
|
|
11125
|
+
placeholder: "Description (optional)",
|
|
11126
|
+
disabled,
|
|
11127
|
+
className: "text-sm",
|
|
11128
|
+
"aria-label": "Description"
|
|
11129
|
+
}
|
|
11130
|
+
) }),
|
|
11131
|
+
/* @__PURE__ */ jsx(
|
|
11132
|
+
Button,
|
|
11133
|
+
{
|
|
11134
|
+
type: "button",
|
|
11135
|
+
variant: "ghost",
|
|
11136
|
+
size: "sm",
|
|
11137
|
+
onClick: () => handleRemoveRule(rule.id),
|
|
11138
|
+
disabled,
|
|
11139
|
+
className: "text-red-500 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20",
|
|
11140
|
+
"aria-label": "Remove availability rule",
|
|
11141
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "h-4 w-4" })
|
|
11142
|
+
}
|
|
11143
|
+
)
|
|
11144
|
+
]
|
|
11145
|
+
},
|
|
11146
|
+
rule.id
|
|
11147
|
+
)),
|
|
11148
|
+
/* @__PURE__ */ jsxs(
|
|
11149
|
+
Button,
|
|
11150
|
+
{
|
|
11151
|
+
type: "button",
|
|
11152
|
+
variant: "ghost",
|
|
11153
|
+
size: "sm",
|
|
11154
|
+
onClick: handleAddRule,
|
|
11155
|
+
disabled,
|
|
11156
|
+
className: "text-xs",
|
|
11157
|
+
children: [
|
|
11158
|
+
/* @__PURE__ */ jsx(PlusIcon2, { className: "me-1 h-3 w-3" }),
|
|
11159
|
+
addHoursLabel
|
|
11160
|
+
]
|
|
11161
|
+
}
|
|
11162
|
+
)
|
|
11163
|
+
]
|
|
11164
|
+
}
|
|
11165
|
+
);
|
|
11166
|
+
}
|
|
10527
11167
|
function createDefaultSchedule() {
|
|
10528
11168
|
return [
|
|
10529
11169
|
{ day: 0, hours: [] },
|
|
@@ -42774,6 +43414,6 @@ function WebsiteInputGroup({
|
|
|
42774
43414
|
}
|
|
42775
43415
|
WebsiteInputGroup.displayName = "WebsiteInputGroup";
|
|
42776
43416
|
|
|
42777
|
-
export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PillSelect, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getVoiceprints, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
|
|
43417
|
+
export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ComposerModelSelector, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PillSelect, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getVoiceprints, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
|
|
42778
43418
|
//# sourceMappingURL=index.js.map
|
|
42779
43419
|
//# sourceMappingURL=index.js.map
|