@seamly/web-ui 19.0.0 → 19.1.3
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/build/dist/lib/index.debug.js +150 -62
- package/build/dist/lib/index.debug.min.js +1 -1
- package/build/dist/lib/index.debug.min.js.LICENSE.txt +40 -8
- package/build/dist/lib/index.js +493 -413
- package/build/dist/lib/index.min.js +1 -1
- package/build/dist/lib/standalone.js +581 -432
- package/build/dist/lib/standalone.min.js +1 -1
- package/build/dist/lib/style-guide.js +1875 -1791
- package/build/dist/lib/style-guide.min.js +1 -1
- package/package.json +1 -1
- package/src/javascripts/api/errors/seamly-base-error.js +17 -0
- package/src/javascripts/api/errors/seamly-configuration-error.js +4 -6
- package/src/javascripts/api/errors/seamly-general-error.js +4 -6
- package/src/javascripts/api/errors/seamly-offline-error.js +4 -6
- package/src/javascripts/api/errors/seamly-session-expired-error.js +4 -6
- package/src/javascripts/api/errors/seamly-unauthorized-error.js +4 -6
- package/src/javascripts/api/errors/seamly-unavailable-error.js +17 -0
- package/src/javascripts/api/index.js +10 -11
- package/src/javascripts/api/producer.js +5 -1
- package/src/javascripts/domains/app/actions.js +27 -17
- package/src/javascripts/domains/app/index.js +2 -1
- package/src/javascripts/domains/config/reducer.js +1 -0
- package/src/javascripts/domains/config/selectors.js +1 -1
- package/src/javascripts/domains/errors/index.js +33 -0
- package/src/javascripts/domains/i18n/reducer.js +6 -0
- package/src/javascripts/domains/interrupt/middleware.js +2 -0
- package/src/javascripts/domains/interrupt/reducer.js +10 -9
- package/src/javascripts/domains/store/index.js +6 -1
- package/src/javascripts/domains/store/state-reducer.js +10 -6
- package/src/javascripts/domains/visibility/actions.js +73 -0
- package/src/javascripts/domains/visibility/constants.js +8 -0
- package/src/javascripts/domains/visibility/hooks.js +24 -0
- package/src/javascripts/domains/visibility/index.js +8 -0
- package/src/javascripts/domains/visibility/reducer.js +19 -0
- package/src/javascripts/domains/visibility/selectors.js +9 -0
- package/src/javascripts/domains/visibility/utils.js +42 -0
- package/src/javascripts/index.js +3 -12
- package/src/javascripts/lib/engine/index.js +1 -0
- package/src/javascripts/lib/redux-helpers/index.js +1 -5
- package/src/javascripts/style-guide/components/app.js +1 -1
- package/src/javascripts/style-guide/components/static-core.js +13 -0
- package/src/javascripts/style-guide/states.js +48 -21
- package/src/javascripts/ui/components/conversation/conversation.js +2 -2
- package/src/javascripts/ui/components/conversation/event/hooks/use-text-rendering.js +1 -8
- package/src/javascripts/ui/components/conversation/event/text.js +19 -13
- package/src/javascripts/ui/components/core/seamly-core.js +3 -0
- package/src/javascripts/ui/components/core/seamly-event-subscriber.js +3 -3
- package/src/javascripts/ui/components/core/seamly-initializer.js +2 -6
- package/src/javascripts/ui/components/core/seamly-instance-functions-loader.js +2 -3
- package/src/javascripts/ui/components/core/seamly-new-notifications.js +2 -2
- package/src/javascripts/ui/components/core/seamly-read-state.js +2 -2
- package/src/javascripts/ui/components/entry/toggle-button.js +2 -2
- package/src/javascripts/ui/components/layout/agent-info.js +2 -2
- package/src/javascripts/ui/components/layout/app-frame.js +2 -3
- package/src/javascripts/ui/components/layout/chat-frame.js +2 -2
- package/src/javascripts/ui/components/layout/modal-wrapper.js +3 -6
- package/src/javascripts/ui/components/layout/view.js +3 -6
- package/src/javascripts/ui/hooks/seamly-hooks.js +0 -2
- package/src/javascripts/ui/hooks/use-seamly-chat.js +3 -5
- package/src/javascripts/ui/hooks/use-seamly-commands.js +7 -29
- package/src/javascripts/ui/hooks/use-seamly-idle-detach-countdown.js +2 -2
- package/src/javascripts/ui/utils/general-utils.js +0 -9
- package/src/javascripts/ui/utils/seamly-utils.js +0 -66
- package/src/.DS_Store +0 -0
- package/src/javascripts/ui/hooks/use-seamly-stored-visibility.js +0 -31
- package/src/javascripts/ui/hooks/use-seamly-visibility.js +0 -98
|
@@ -87,15 +87,6 @@ export const microsecondsToMilliseconds = (microseconds) => {
|
|
|
87
87
|
return Math.ceil(microseconds / 1000)
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
export const sanitizeText = (text) =>
|
|
91
|
-
text
|
|
92
|
-
.replace(/&/g, '&')
|
|
93
|
-
.replace(/</g, '<')
|
|
94
|
-
.replace(/>/g, '>')
|
|
95
|
-
.replace(/"/g, '"')
|
|
96
|
-
.replace(/'/g, ''')
|
|
97
|
-
.replace(/\//g, '/')
|
|
98
|
-
|
|
99
90
|
export const getTimeFromSeconds = (seconds) => {
|
|
100
91
|
const minutes = Math.floor(seconds / 60)
|
|
101
92
|
const secondsPartial = seconds - minutes * 60
|
|
@@ -26,13 +26,6 @@ export const entryTypes = {
|
|
|
26
26
|
upload: 'upload',
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export const visibilityStates = {
|
|
30
|
-
hidden: 'hidden',
|
|
31
|
-
minimized: 'minimized',
|
|
32
|
-
open: 'open',
|
|
33
|
-
initialize: null,
|
|
34
|
-
}
|
|
35
|
-
|
|
36
29
|
export const readStates = {
|
|
37
30
|
received: 'received',
|
|
38
31
|
read: 'read',
|
|
@@ -85,7 +78,6 @@ export const seamlyActions = {
|
|
|
85
78
|
SET_PARTICIPANT: 'SET_PARTICIPANT',
|
|
86
79
|
SET_HEADER_TITLE: 'SET_HEADER_TITLE',
|
|
87
80
|
SET_HEADER_SUB_TITLE: 'SET_HEADER_SUB_TITLE',
|
|
88
|
-
SET_VISIBILITY: 'SET_VISIBILITY',
|
|
89
81
|
RESET_HISTORY_LOADED_FLAG: 'RESET_HISTORY_LOADED_FLAG',
|
|
90
82
|
SET_ACTIVE_SERVICE: 'SET_ACTIVE_SERVICE',
|
|
91
83
|
INIT_IDLE_DETACH_COUNTDOWN: 'INIT_IDLE_DETACH_COUNTDOWN',
|
|
@@ -114,8 +106,6 @@ export const seamlyActions = {
|
|
|
114
106
|
SET_UPLOAD_ERROR: 'SET_UPLOAD_ERROR',
|
|
115
107
|
CLEAR_UPLOAD: 'CLEAR_UPLOAD',
|
|
116
108
|
CLEAR_ALL_UPLOADS: 'CLEAR_ALL_UPLOADS',
|
|
117
|
-
RESET_UPLOAD_STATE: 'RESET_UPLOAD_STATE',
|
|
118
|
-
RESET_ENTRY_STATE: 'RESET_ENTRY_STATE',
|
|
119
109
|
SET_SEAMLY_CONTAINER_ELEMENT: 'SET_SEAMLY_CONTAINER_ELEMENT',
|
|
120
110
|
}
|
|
121
111
|
|
|
@@ -136,7 +126,6 @@ const {
|
|
|
136
126
|
SET_PARTICIPANT,
|
|
137
127
|
SET_HEADER_TITLE,
|
|
138
128
|
SET_HEADER_SUB_TITLE,
|
|
139
|
-
SET_VISIBILITY,
|
|
140
129
|
RESET_HISTORY_LOADED_FLAG,
|
|
141
130
|
SET_ACTIVE_SERVICE,
|
|
142
131
|
INIT_IDLE_DETACH_COUNTDOWN,
|
|
@@ -164,8 +153,6 @@ const {
|
|
|
164
153
|
SET_UPLOAD_ERROR,
|
|
165
154
|
CLEAR_UPLOAD,
|
|
166
155
|
CLEAR_ALL_UPLOADS,
|
|
167
|
-
RESET_UPLOAD_STATE,
|
|
168
|
-
RESET_ENTRY_STATE,
|
|
169
156
|
SET_SEAMLY_CONTAINER_ELEMENT,
|
|
170
157
|
} = seamlyActions
|
|
171
158
|
|
|
@@ -594,8 +581,6 @@ export const seamlyStateReducer = (state, action) => {
|
|
|
594
581
|
...state,
|
|
595
582
|
resumeConversationPrompt: false,
|
|
596
583
|
}
|
|
597
|
-
case SET_VISIBILITY:
|
|
598
|
-
return { ...state, visible: action.visible }
|
|
599
584
|
case SET_PARTICIPANT:
|
|
600
585
|
case CLEAR_PARTICIPANTS:
|
|
601
586
|
return {
|
|
@@ -820,25 +805,6 @@ export const seamlyStateReducer = (state, action) => {
|
|
|
820
805
|
...state,
|
|
821
806
|
currentUploads: [],
|
|
822
807
|
}
|
|
823
|
-
case RESET_UPLOAD_STATE:
|
|
824
|
-
return {
|
|
825
|
-
...state,
|
|
826
|
-
showFileUpload: false,
|
|
827
|
-
currentUploads: [],
|
|
828
|
-
}
|
|
829
|
-
case RESET_ENTRY_STATE: {
|
|
830
|
-
return {
|
|
831
|
-
...state,
|
|
832
|
-
entryMeta: {
|
|
833
|
-
default: payloadTypes.text,
|
|
834
|
-
active: payloadTypes.text,
|
|
835
|
-
userSelected: null,
|
|
836
|
-
blockAutoEntrySwitch: false,
|
|
837
|
-
options: {},
|
|
838
|
-
optionsOverride: {},
|
|
839
|
-
},
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
808
|
case SET_SEAMLY_CONTAINER_ELEMENT: {
|
|
843
809
|
return {
|
|
844
810
|
...state,
|
|
@@ -849,35 +815,3 @@ export const seamlyStateReducer = (state, action) => {
|
|
|
849
815
|
return state
|
|
850
816
|
}
|
|
851
817
|
}
|
|
852
|
-
|
|
853
|
-
export const calculateVisibility = ({
|
|
854
|
-
hasResponded,
|
|
855
|
-
previousVisibility,
|
|
856
|
-
requestedVisibility,
|
|
857
|
-
config,
|
|
858
|
-
}) => {
|
|
859
|
-
const { defaults, layoutMode, hideOnNoUserResponse } = config
|
|
860
|
-
|
|
861
|
-
const { visible: defaultVisibility } = defaults || {}
|
|
862
|
-
|
|
863
|
-
// Requesting open should override the responded check.
|
|
864
|
-
if (
|
|
865
|
-
layoutMode === 'window' &&
|
|
866
|
-
hideOnNoUserResponse &&
|
|
867
|
-
requestedVisibility !== visibilityStates.open
|
|
868
|
-
) {
|
|
869
|
-
return hasResponded
|
|
870
|
-
? requestedVisibility || previousVisibility || visibilityStates.open
|
|
871
|
-
: visibilityStates.hidden
|
|
872
|
-
}
|
|
873
|
-
|
|
874
|
-
const baseVisibility =
|
|
875
|
-
layoutMode === 'inline' ? visibilityStates.open : visibilityStates.minimized
|
|
876
|
-
|
|
877
|
-
return (
|
|
878
|
-
requestedVisibility ||
|
|
879
|
-
previousVisibility ||
|
|
880
|
-
defaultVisibility ||
|
|
881
|
-
baseVisibility
|
|
882
|
-
)
|
|
883
|
-
}
|
package/src/.DS_Store
DELETED
|
Binary file
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'preact/hooks'
|
|
2
|
-
import { useSeamlyObjectStore } from './seamly-api-hooks'
|
|
3
|
-
import { useConfig } from '../../domains/config'
|
|
4
|
-
|
|
5
|
-
const useSeamlyStoredVisibility = () => {
|
|
6
|
-
const { layoutMode } = useConfig()
|
|
7
|
-
const key = 'visibility'
|
|
8
|
-
const { get, set } = useSeamlyObjectStore()
|
|
9
|
-
|
|
10
|
-
let storedVisibilityObj = {}
|
|
11
|
-
const savedVisibility = get ? get(key) : {}
|
|
12
|
-
|
|
13
|
-
if (savedVisibility) {
|
|
14
|
-
storedVisibilityObj = savedVisibility
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const setStoredVisibility = useCallback(
|
|
18
|
-
(state) => {
|
|
19
|
-
const saved = get ? get(key) : {}
|
|
20
|
-
set(key, { ...saved, [layoutMode]: state })
|
|
21
|
-
},
|
|
22
|
-
[set, get, layoutMode],
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
return [
|
|
26
|
-
layoutMode ? storedVisibilityObj[layoutMode] : null,
|
|
27
|
-
set && layoutMode ? setStoredVisibility : null,
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default useSeamlyStoredVisibility
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'preact/hooks'
|
|
2
|
-
import {
|
|
3
|
-
useSeamlyStateContext,
|
|
4
|
-
useSeamlyUnreadCount,
|
|
5
|
-
} from './seamly-state-hooks'
|
|
6
|
-
import useSeamlyCommands from './use-seamly-commands'
|
|
7
|
-
import useSeamlyDispatchContext from './use-seamly-dispatch'
|
|
8
|
-
import { useSeamlyHasConversation } from './seamly-api-hooks'
|
|
9
|
-
import useSeamlyStoredVisibility from './use-seamly-stored-visibility'
|
|
10
|
-
import {
|
|
11
|
-
calculateVisibility,
|
|
12
|
-
seamlyActions,
|
|
13
|
-
visibilityStates,
|
|
14
|
-
} from '../utils/seamly-utils'
|
|
15
|
-
import { useConfig } from '../../domains/config'
|
|
16
|
-
import { useUserHasResponded } from '../../domains/app'
|
|
17
|
-
|
|
18
|
-
const { SET_VISIBILITY } = seamlyActions
|
|
19
|
-
|
|
20
|
-
const useSeamlyVisibility = () => {
|
|
21
|
-
const config = useConfig()
|
|
22
|
-
const { layoutMode, visibilityCallback } = config
|
|
23
|
-
const { visible } = useSeamlyStateContext()
|
|
24
|
-
const { emitEvent } = useSeamlyCommands()
|
|
25
|
-
const dispatch = useSeamlyDispatchContext()
|
|
26
|
-
const [storedVisibility, setStoredVisibility] = useSeamlyStoredVisibility()
|
|
27
|
-
const hasResponded = useUserHasResponded()
|
|
28
|
-
const hasConversation = useSeamlyHasConversation()
|
|
29
|
-
const unreadMessageCount = useSeamlyUnreadCount()
|
|
30
|
-
const isVisible = visible ? visible !== visibilityStates.hidden : false
|
|
31
|
-
|
|
32
|
-
const isOpen =
|
|
33
|
-
visible && layoutMode
|
|
34
|
-
? visible === visibilityStates.open ||
|
|
35
|
-
(layoutMode === 'inline' && visible !== visibilityStates.hidden)
|
|
36
|
-
: false
|
|
37
|
-
|
|
38
|
-
const setVisibility = useCallback(
|
|
39
|
-
(visibility) => {
|
|
40
|
-
const visibilityFn = visibilityCallback || calculateVisibility
|
|
41
|
-
const requestedVisibility = visibilityFn({
|
|
42
|
-
hasConversation,
|
|
43
|
-
hasResponded,
|
|
44
|
-
previousVisibility: storedVisibility || null,
|
|
45
|
-
requestedVisibility: visibility,
|
|
46
|
-
config,
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
if (
|
|
50
|
-
![
|
|
51
|
-
visibilityStates.open,
|
|
52
|
-
visibilityStates.minimized,
|
|
53
|
-
visibilityStates.hidden,
|
|
54
|
-
].includes(requestedVisibility)
|
|
55
|
-
) {
|
|
56
|
-
console.error(
|
|
57
|
-
'The visibilityCallback function should return "open", "minimized" or "hidden".',
|
|
58
|
-
)
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (requestedVisibility !== visible) {
|
|
63
|
-
if (setStoredVisibility) {
|
|
64
|
-
setStoredVisibility(requestedVisibility)
|
|
65
|
-
}
|
|
66
|
-
// Don't broadcast the init visibility state
|
|
67
|
-
if (visibility) {
|
|
68
|
-
emitEvent('ui.visible', requestedVisibility, {
|
|
69
|
-
visibility: requestedVisibility,
|
|
70
|
-
hasConversation,
|
|
71
|
-
hasResponded,
|
|
72
|
-
unreadMessageCount,
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
dispatch({
|
|
76
|
-
type: SET_VISIBILITY,
|
|
77
|
-
visible: requestedVisibility,
|
|
78
|
-
})
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
[
|
|
82
|
-
visible,
|
|
83
|
-
emitEvent,
|
|
84
|
-
dispatch,
|
|
85
|
-
hasConversation,
|
|
86
|
-
hasResponded,
|
|
87
|
-
storedVisibility,
|
|
88
|
-
visibilityCallback,
|
|
89
|
-
config,
|
|
90
|
-
setStoredVisibility,
|
|
91
|
-
unreadMessageCount,
|
|
92
|
-
],
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
return { isVisible, isOpen, visible, setVisibility }
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export default useSeamlyVisibility
|