@miso.ai/client-sdk-ui 1.13.2-beta.1 → 1.14.0-beta.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/dist/cjs/asset/svgs.js +17 -4
- package/dist/cjs/combo/ask/index.js +2 -2
- package/dist/cjs/constants.js +120 -98
- package/dist/cjs/defaults/ask/controls.js +1 -1
- package/dist/cjs/defaults/hybrid-search/answer-box.js +4 -4
- package/dist/cjs/defaults.js +259 -0
- package/dist/cjs/element/container/index.js +28 -0
- package/dist/cjs/element/container/miso-ask.js +3 -3
- package/dist/cjs/element/container/miso-conversation.js +21 -0
- package/dist/cjs/element/container/miso-explore.js +1 -1
- package/dist/cjs/element/container/miso-history.js +21 -0
- package/dist/cjs/element/container/miso-hybrid-search.js +1 -1
- package/dist/cjs/element/container/miso-message-item.js +91 -0
- package/dist/cjs/element/container/miso-recommendation.js +1 -1
- package/dist/cjs/element/container/miso-search.js +1 -1
- package/dist/cjs/element/container/miso-thread-item.js +91 -0
- package/dist/cjs/element/context/miso-follow-ups.js +1 -1
- package/dist/cjs/element/role/index.js +49 -0
- package/dist/cjs/element/role/miso-delete.js +20 -0
- package/dist/cjs/element/role/miso-messages.js +20 -0
- package/dist/cjs/element/role/miso-new-thread.js +20 -0
- package/dist/cjs/element/role/miso-rename.js +20 -0
- package/dist/cjs/element/role/miso-subscription.js +20 -0
- package/dist/cjs/element/role/miso-threads.js +20 -0
- package/dist/cjs/element/role/miso-title.js +20 -0
- package/dist/cjs/layout/affiliation/affiliation.js +1 -1
- package/dist/cjs/layout/banner/banner.js +2 -1
- package/dist/cjs/layout/button/button.js +170 -0
- package/dist/cjs/layout/button/checkbox.js +116 -0
- package/dist/cjs/layout/button/more-button.js +3 -3
- package/dist/cjs/layout/container/container.js +1 -1
- package/dist/cjs/layout/container/item-container.js +99 -0
- package/dist/cjs/layout/error/error.js +2 -1
- package/dist/cjs/layout/index.js +42 -0
- package/dist/cjs/layout/input/facets.js +4 -3
- package/dist/cjs/layout/input/option-list.js +3 -2
- package/dist/cjs/layout/input/search-box.js +50 -12
- package/dist/cjs/layout/input/select.js +2 -1
- package/dist/cjs/layout/list/cards.js +2 -1
- package/dist/cjs/layout/list/carousel.js +2 -1
- package/dist/cjs/layout/list/collection.js +13 -1
- package/dist/cjs/layout/list/gallery.js +2 -1
- package/dist/cjs/layout/list/horizontal.js +2 -1
- package/dist/cjs/layout/list/list.js +2 -1
- package/dist/cjs/layout/list/messages.js +359 -0
- package/dist/cjs/layout/list/threads.js +199 -0
- package/dist/cjs/layout/mixin/trackable.js +4 -5
- package/dist/cjs/layout/mixin/triggerable.js +2 -2
- package/dist/cjs/layout/radio/feedback.js +4 -3
- package/dist/cjs/layout/templates.js +97 -0
- package/dist/cjs/layout/text/question.js +71 -0
- package/dist/cjs/layout/text/text.js +2 -1
- package/dist/cjs/layout/text/typewriter/index.js +18 -23
- package/dist/cjs/plugin.js +43 -104
- package/dist/cjs/util/confirm.js +33 -0
- package/dist/cjs/util/dom.js +21 -0
- package/dist/cjs/util/modal.js +48 -0
- package/dist/cjs/util/prompt.js +47 -0
- package/dist/cjs/version.js +1 -1
- package/package.json +5 -4
- package/src/CLAUDE.md +51 -104
- package/src/asset/svgs.js +16 -3
- package/src/combo/ask/index.js +2 -2
- package/src/constants.js +39 -147
- package/src/defaults/ask/controls.js +1 -1
- package/src/defaults/hybrid-search/answer-box.js +2 -2
- package/src/defaults.js +174 -0
- package/src/element/container/index.js +4 -0
- package/src/element/container/miso-ask.js +3 -3
- package/src/element/container/miso-conversation.js +19 -0
- package/src/element/container/miso-explore.js +1 -1
- package/src/element/container/miso-history.js +19 -0
- package/src/element/container/miso-hybrid-search.js +1 -1
- package/src/element/container/miso-message-item.js +94 -0
- package/src/element/container/miso-recommendation.js +1 -1
- package/src/element/container/miso-search.js +1 -1
- package/src/element/container/miso-thread-item.js +94 -0
- package/src/element/context/miso-follow-ups.js +1 -1
- package/src/element/role/index.js +7 -0
- package/src/element/role/miso-delete.js +16 -0
- package/src/element/role/miso-messages.js +16 -0
- package/src/element/role/miso-new-thread.js +16 -0
- package/src/element/role/miso-rename.js +16 -0
- package/src/element/role/miso-subscription.js +16 -0
- package/src/element/role/miso-threads.js +16 -0
- package/src/element/role/miso-title.js +16 -0
- package/src/layout/affiliation/affiliation.js +2 -2
- package/src/layout/banner/banner.js +2 -1
- package/src/layout/button/button.js +152 -0
- package/src/layout/button/checkbox.js +92 -0
- package/src/layout/button/more-button.js +3 -3
- package/src/layout/container/container.js +2 -2
- package/src/layout/container/item-container.js +99 -0
- package/src/layout/error/error.js +2 -1
- package/src/layout/index.js +6 -0
- package/src/layout/input/facets.js +3 -2
- package/src/layout/input/option-list.js +3 -2
- package/src/layout/input/search-box.js +45 -8
- package/src/layout/input/select.js +2 -1
- package/src/layout/list/cards.js +2 -1
- package/src/layout/list/carousel.js +2 -1
- package/src/layout/list/collection.js +15 -2
- package/src/layout/list/gallery.js +2 -1
- package/src/layout/list/horizontal.js +2 -1
- package/src/layout/list/list.js +2 -1
- package/src/layout/list/messages.js +316 -0
- package/src/layout/list/threads.js +166 -0
- package/src/layout/mixin/trackable.js +2 -3
- package/src/layout/mixin/triggerable.js +1 -1
- package/src/layout/radio/feedback.js +3 -2
- package/src/layout/templates.js +97 -0
- package/src/layout/text/question.js +58 -0
- package/src/layout/text/text.js +2 -1
- package/src/layout/text/typewriter/index.js +15 -18
- package/src/plugin.js +31 -117
- package/src/util/confirm.js +28 -0
- package/src/util/dom.js +16 -0
- package/src/util/modal.js +49 -0
- package/src/util/prompt.js +42 -0
- package/src/version.js +1 -1
- package/dist/cjs/actor/data.js +0 -132
- package/dist/cjs/actor/feedback.js +0 -29
- package/dist/cjs/actor/fields.js +0 -57
- package/dist/cjs/actor/filters.js +0 -161
- package/dist/cjs/actor/hub.js +0 -57
- package/dist/cjs/actor/index.js +0 -73
- package/dist/cjs/actor/interactions.js +0 -36
- package/dist/cjs/actor/sessions.js +0 -25
- package/dist/cjs/actor/tracker-states.js +0 -61
- package/dist/cjs/actor/tracker.js +0 -109
- package/dist/cjs/actor/trackers.js +0 -52
- package/dist/cjs/actor/utils.js +0 -15
- package/dist/cjs/actor/view.js +0 -294
- package/dist/cjs/actor/views.js +0 -209
- package/dist/cjs/source.js +0 -27
- package/dist/cjs/util/proxy.js +0 -88
- package/dist/cjs/util/trackers.js +0 -88
- package/dist/cjs/workflow/affiliations.js +0 -140
- package/dist/cjs/workflow/answer-based.js +0 -337
- package/dist/cjs/workflow/ask.js +0 -319
- package/dist/cjs/workflow/asks.js +0 -150
- package/dist/cjs/workflow/autocompletable.js +0 -63
- package/dist/cjs/workflow/autocomplete.js +0 -120
- package/dist/cjs/workflow/base.js +0 -418
- package/dist/cjs/workflow/context.js +0 -19
- package/dist/cjs/workflow/explore.js +0 -210
- package/dist/cjs/workflow/explores.js +0 -21
- package/dist/cjs/workflow/hybrid-search-answer.js +0 -88
- package/dist/cjs/workflow/hybrid-search-views.js +0 -109
- package/dist/cjs/workflow/hybrid-search.js +0 -213
- package/dist/cjs/workflow/index.js +0 -41
- package/dist/cjs/workflow/options/api.js +0 -41
- package/dist/cjs/workflow/options/auto-query.js +0 -97
- package/dist/cjs/workflow/options/configurable.js +0 -45
- package/dist/cjs/workflow/options/data-processor.js +0 -20
- package/dist/cjs/workflow/options/filters.js +0 -15
- package/dist/cjs/workflow/options/index.js +0 -126
- package/dist/cjs/workflow/options/interactions.js +0 -41
- package/dist/cjs/workflow/options/layouts.js +0 -79
- package/dist/cjs/workflow/options/options.js +0 -156
- package/dist/cjs/workflow/options/pagination.js +0 -25
- package/dist/cjs/workflow/options/roles.js +0 -15
- package/dist/cjs/workflow/options/templates.js +0 -30
- package/dist/cjs/workflow/options/trackers.js +0 -83
- package/dist/cjs/workflow/options/utils.js +0 -33
- package/dist/cjs/workflow/processors.js +0 -607
- package/dist/cjs/workflow/recommendation.js +0 -57
- package/dist/cjs/workflow/recommendations.js +0 -18
- package/dist/cjs/workflow/search-based.js +0 -337
- package/dist/cjs/workflow/search.js +0 -64
- package/dist/cjs/workflow/unit.js +0 -57
- package/dist/cjs/workflow/units.js +0 -42
- package/dist/cjs/workflow/use-link.js +0 -49
- package/src/actor/data.js +0 -106
- package/src/actor/feedback.js +0 -28
- package/src/actor/fields.js +0 -51
- package/src/actor/filters.js +0 -149
- package/src/actor/hub.js +0 -47
- package/src/actor/index.js +0 -10
- package/src/actor/interactions.js +0 -32
- package/src/actor/sessions.js +0 -21
- package/src/actor/tracker-states.js +0 -57
- package/src/actor/tracker.js +0 -104
- package/src/actor/trackers.js +0 -45
- package/src/actor/utils.js +0 -7
- package/src/actor/view.js +0 -272
- package/src/actor/views.js +0 -224
- package/src/source.js +0 -17
- package/src/util/proxy.js +0 -81
- package/src/util/trackers.js +0 -84
- package/src/workflow/affiliations.js +0 -121
- package/src/workflow/answer-based.js +0 -312
- package/src/workflow/ask.js +0 -284
- package/src/workflow/asks.js +0 -143
- package/src/workflow/autocompletable.js +0 -67
- package/src/workflow/autocomplete.js +0 -114
- package/src/workflow/base.js +0 -396
- package/src/workflow/context.js +0 -16
- package/src/workflow/explore.js +0 -194
- package/src/workflow/explores.js +0 -18
- package/src/workflow/hybrid-search-answer.js +0 -73
- package/src/workflow/hybrid-search-views.js +0 -116
- package/src/workflow/hybrid-search.js +0 -230
- package/src/workflow/index.js +0 -5
- package/src/workflow/options/api.js +0 -31
- package/src/workflow/options/auto-query.js +0 -70
- package/src/workflow/options/configurable.js +0 -48
- package/src/workflow/options/data-processor.js +0 -15
- package/src/workflow/options/filters.js +0 -10
- package/src/workflow/options/index.js +0 -11
- package/src/workflow/options/interactions.js +0 -36
- package/src/workflow/options/layouts.js +0 -73
- package/src/workflow/options/options.js +0 -175
- package/src/workflow/options/pagination.js +0 -18
- package/src/workflow/options/roles.js +0 -12
- package/src/workflow/options/templates.js +0 -27
- package/src/workflow/options/trackers.js +0 -80
- package/src/workflow/options/utils.js +0 -26
- package/src/workflow/processors.js +0 -490
- package/src/workflow/recommendation.js +0 -63
- package/src/workflow/recommendations.js +0 -14
- package/src/workflow/search-based.js +0 -329
- package/src/workflow/search.js +0 -73
- package/src/workflow/unit.js +0 -51
- package/src/workflow/units.js +0 -43
- package/src/workflow/use-link.js +0 -41
package/dist/cjs/asset/svgs.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.TRIANGLE_EQ = exports.TRIANGLE = exports.SEND = exports.SEARCH = exports.ICON_NAMES = exports.CHEVRON_NEGATIVE = exports.CHEVRON = exports.BULB = void 0;
|
|
7
7
|
exports.getIcon = getIcon;
|
|
8
|
+
var _commons = require("@miso.ai/commons");
|
|
8
9
|
var _version = _interopRequireDefault(require("../version.js"));
|
|
9
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
11
|
function trianglePath(r) {
|
|
@@ -22,7 +23,13 @@ const ICON_NAME = {
|
|
|
22
23
|
TRIANGLE_EQ: 'triangle-eq',
|
|
23
24
|
CHEVRON: 'chevron',
|
|
24
25
|
CHEVRON_NEGATIVE: 'chevron-negative',
|
|
25
|
-
BULB: 'bulb'
|
|
26
|
+
BULB: 'bulb',
|
|
27
|
+
DOTS_VERTICAL: 'dots-vertical',
|
|
28
|
+
PLUS: 'plus',
|
|
29
|
+
PENCIL: 'pencil',
|
|
30
|
+
BELL: 'bell',
|
|
31
|
+
BELL_FILL: 'bell-fill',
|
|
32
|
+
TRASH: 'trash'
|
|
26
33
|
};
|
|
27
34
|
|
|
28
35
|
// CC0 SVGs
|
|
@@ -36,8 +43,14 @@ const ICON_CHEVRON = `<symbol id="${PREFIX}-${ICON_NAME.CHEVRON}" viewBox="-100
|
|
|
36
43
|
const ICON_CHEVRON_NEGATIVE = `<symbol id="${PREFIX}-${ICON_NAME.CHEVRON_NEGATIVE}" viewBox="-100 -100 200 200"><path d="M100 100V-200H-200V200H200ZM-10.61 -43.94A15 15,0,0,1,10.61 -43.94L60.61 6.06A15 15,0,0,1,39.39 27.27L0 -12.12L-39.39 27.27A15 15,0,0,1,-60.61 6.06L-10.61 -43.94Z"/></symbol>`;
|
|
37
44
|
|
|
38
45
|
// from Bootstrap Icons (MIT)
|
|
39
|
-
const ICON_BULB = `<symbol id="${PREFIX}-${ICON_NAME.BULB}" viewBox="0 0 16 16"><path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1"/></symbol>`;
|
|
40
|
-
const
|
|
46
|
+
const ICON_BULB = `<symbol id="${PREFIX}-${ICON_NAME.BULB}" viewBox="0 0 16 16"><path fill="currentColor" d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a2 2 0 0 0-.453-.618A5.98 5.98 0 0 1 2 6m6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1"/></symbol>`;
|
|
47
|
+
const ICON_DOTS_VERTICAL = `<symbol id="${PREFIX}-${ICON_NAME.DOTS_VERTICAL}" viewBox="0 0 16 16"><path fill="currentColor" d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0"/></symbol>`;
|
|
48
|
+
const ICON_PLUS = `<symbol id="${PREFIX}-${ICON_NAME.PLUS}" viewBox="0 0 16 16"><path fill="currentColor" d="M8 2a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 8 2"/></symbol>`;
|
|
49
|
+
const ICON_PENCIL = `<symbol id="${PREFIX}-${ICON_NAME.PENCIL}" viewBox="0 0 16 16"><path fill="currentColor" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.325-.175"/></symbol>`;
|
|
50
|
+
const ICON_BELL = `<symbol id="${PREFIX}-${ICON_NAME.BELL}" viewBox="0 0 16 16"><path fill="currentColor" d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2M8 1.918l-.797.161A4 4 0 0 0 4 6c0 .628-.134 2.197-.459 3.742-.16.767-.376 1.566-.663 2.258h10.244c-.287-.692-.502-1.49-.663-2.258C12.134 8.197 12 6.628 12 6a4 4 0 0 0-3.203-3.92zM14.22 12c.223.447.481.801.78 1H1c.299-.199.557-.553.78-1C2.68 10.2 3 6.88 3 6c0-2.42 1.72-4.44 4.005-4.901a1 1 0 1 1 1.99 0A5 5 0 0 1 13 6c0 .88.32 4.2 1.22 6"/></symbol>`;
|
|
51
|
+
const ICON_BELL_FILL = `<symbol id="${PREFIX}-${ICON_NAME.BELL_FILL}" viewBox="0 0 16 16"><path fill="currentColor" d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2m.995-14.901a1 1 0 1 0-1.99 0A5 5 0 0 0 3 6c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901"/></symbol>`;
|
|
52
|
+
const ICON_TRASH = `<symbol id="${PREFIX}-${ICON_NAME.TRASH}" viewBox="0 0 16 16"><path fill="currentColor" d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path fill="currentColor" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></symbol>`;
|
|
53
|
+
const ICONS = [ICON_SEND, ICON_SEARCH, ICON_TRIANGLE, ICON_TRIANGLE_EQ, ICON_CHEVRON, ICON_CHEVRON_NEGATIVE, ICON_BULB, ICON_DOTS_VERTICAL, ICON_PLUS, ICON_PENCIL, ICON_BELL, ICON_BELL_FILL, ICON_TRASH];
|
|
41
54
|
const SPRITES_SVG = `<svg id="${ID}" style="display:none;">${ICONS.join('')}</svg>`;
|
|
42
55
|
let loaded = false;
|
|
43
56
|
function loadSvgSprites() {
|
|
@@ -47,7 +60,7 @@ function loadSvgSprites() {
|
|
|
47
60
|
loaded = true;
|
|
48
61
|
document.head.insertAdjacentHTML('beforeend', SPRITES_SVG);
|
|
49
62
|
}
|
|
50
|
-
loadSvgSprites();
|
|
63
|
+
_commons.isInBrowser && loadSvgSprites();
|
|
51
64
|
function _icon(name) {
|
|
52
65
|
return `<svg class="miso-ui-icon miso-ui-icon-${name}"><use href="#${PREFIX}-${name}"></use></svg>`;
|
|
53
66
|
}
|
|
@@ -117,8 +117,8 @@ class AskCombo extends _base.default {
|
|
|
117
117
|
features = {},
|
|
118
118
|
api
|
|
119
119
|
} = options;
|
|
120
|
-
const context = client.
|
|
121
|
-
const rootWorkflow = client.
|
|
120
|
+
const context = client.workflows.asks;
|
|
121
|
+
const rootWorkflow = client.workflows.ask;
|
|
122
122
|
if (api) {
|
|
123
123
|
context.useApi(api);
|
|
124
124
|
}
|
package/dist/cjs/constants.js
CHANGED
|
@@ -3,109 +3,131 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
exports
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
exports.ATTR_DATA_MISO_UNIT_ID = exports.ATTR_DATA_MISO_PRODUCT_ID = void 0;
|
|
7
|
+
Object.defineProperty(exports, "DEFAULT_UNIT_ID", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _clientSdkWorkflow.DEFAULT_UNIT_ID;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "DIRECT_TRACKING_EVENT_TYPES", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () {
|
|
16
|
+
return _clientSdkWorkflow.DIRECT_TRACKING_EVENT_TYPES;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "EVENT_TYPE", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return _clientSdkWorkflow.EVENT_TYPE;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
exports.LAYOUT_TYPE = void 0;
|
|
26
|
+
Object.defineProperty(exports, "PERFORMANCE_EVENT_TYPES", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () {
|
|
29
|
+
return _clientSdkWorkflow.PERFORMANCE_EVENT_TYPES;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "QUESTION_SOURCE", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _clientSdkWorkflow.QUESTION_SOURCE;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "REQUEST_TYPE", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () {
|
|
41
|
+
return _clientSdkWorkflow.REQUEST_TYPE;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(exports, "ROLE", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function () {
|
|
47
|
+
return _clientSdkWorkflow.ROLE;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(exports, "STATUS", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
get: function () {
|
|
53
|
+
return _clientSdkWorkflow.STATUS;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(exports, "TRACKING_EVENT_TYPES", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function () {
|
|
59
|
+
return _clientSdkWorkflow.TRACKING_EVENT_TYPES;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(exports, "TRACKING_STATUS", {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
get: function () {
|
|
65
|
+
return _clientSdkWorkflow.TRACKING_STATUS;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(exports, "WORKFLOW_CONFIGURABLE", {
|
|
69
|
+
enumerable: true,
|
|
70
|
+
get: function () {
|
|
71
|
+
return _clientSdkWorkflow.WORKFLOW_CONFIGURABLE;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
Object.defineProperty(exports, "isDataRole", {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
get: function () {
|
|
77
|
+
return _clientSdkWorkflow.isDataRole;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
Object.defineProperty(exports, "isPerformanceEventType", {
|
|
81
|
+
enumerable: true,
|
|
82
|
+
get: function () {
|
|
83
|
+
return _clientSdkWorkflow.isPerformanceEventType;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
Object.defineProperty(exports, "isProductRole", {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
get: function () {
|
|
89
|
+
return _clientSdkWorkflow.isProductRole;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
Object.defineProperty(exports, "validateEventType", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
get: function () {
|
|
95
|
+
return _clientSdkWorkflow.validateEventType;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
Object.defineProperty(exports, "validateTrackingStatus", {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function () {
|
|
101
|
+
return _clientSdkWorkflow.validateTrackingStatus;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
var _clientSdkWorkflow = require("@miso.ai/client-sdk-workflow");
|
|
105
|
+
// workflow-level constants live in the workflow package; re-exported here for convenience
|
|
106
|
+
|
|
12
107
|
const ATTR_DATA_MISO_UNIT_ID = exports.ATTR_DATA_MISO_UNIT_ID = `data-miso-unit-id`;
|
|
13
108
|
const ATTR_DATA_MISO_PRODUCT_ID = exports.ATTR_DATA_MISO_PRODUCT_ID = `data-miso-product-id`;
|
|
14
|
-
const
|
|
15
|
-
const ROLE = exports.ROLE = Object.freeze({
|
|
109
|
+
const LAYOUT_TYPE = exports.LAYOUT_TYPE = Object.freeze({
|
|
16
110
|
CONTAINER: 'container',
|
|
111
|
+
ITEM_CONTAINER: 'item-container',
|
|
112
|
+
ERROR: 'error',
|
|
17
113
|
BANNER: 'banner',
|
|
18
|
-
QUERY: 'query',
|
|
19
|
-
FEEDBACK: 'feedback',
|
|
20
|
-
PRODUCTS: 'products',
|
|
21
|
-
CATEGORIES: 'categories',
|
|
22
|
-
ATTRIBUTES: 'attributes',
|
|
23
|
-
RESULTS: 'results',
|
|
24
|
-
ITEMS: 'items',
|
|
25
|
-
QUESTION: 'question',
|
|
26
|
-
ANSWER: 'answer',
|
|
27
|
-
REASONING: 'reasoning',
|
|
28
|
-
IMAGES: 'images',
|
|
29
|
-
SOURCES: 'sources',
|
|
30
|
-
RELATED_RESOURCES: 'related_resources',
|
|
31
|
-
FOLLOW_UP_QUESTIONS: 'follow_up_questions',
|
|
32
|
-
QUERY_SUGGESTIONS: 'query_suggestions',
|
|
33
|
-
RELATED_QUESTIONS: 'related_questions',
|
|
34
114
|
AFFILIATION: 'affiliation',
|
|
35
|
-
|
|
115
|
+
LIST: 'list',
|
|
116
|
+
THREADS: 'threads',
|
|
117
|
+
MESSAGES: 'messages',
|
|
118
|
+
HORIZONTAL: 'horizontal',
|
|
119
|
+
CARDS: 'cards',
|
|
120
|
+
CAROUSEL: 'carousel',
|
|
121
|
+
GALLERY: 'gallery',
|
|
122
|
+
SEARCH_BOX: 'search-box',
|
|
123
|
+
OPTION_LIST: 'option-list',
|
|
36
124
|
FACETS: 'facets',
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
});
|
|
42
|
-
const DATA_ROLE_SET = new Set([ROLE.PRODUCTS, ROLE.CATEGORIES, ROLE.ATTRIBUTES, ROLE.RESULTS, ROLE.ITEMS, ROLE.QUESTION, ROLE.ANSWER, ROLE.REASONING, ROLE.IMAGES, ROLE.SOURCES, ROLE.RELATED_RESOURCES, ROLE.FOLLOW_UP_QUESTIONS, ROLE.QUERY_SUGGESTIONS, ROLE.RELATED_QUESTIONS, ROLE.AFFILIATION, ROLE.FACETS, ROLE.TOTAL]);
|
|
43
|
-
function isDataRole(role) {
|
|
44
|
-
return DATA_ROLE_SET.has(role);
|
|
45
|
-
}
|
|
46
|
-
const PRODUCT_ROLE_SET = new Set([ROLE.PRODUCTS, ROLE.IMAGES, ROLE.SOURCES, ROLE.RELATED_RESOURCES]);
|
|
47
|
-
function isProductRole(role) {
|
|
48
|
-
return PRODUCT_ROLE_SET.has(role);
|
|
49
|
-
}
|
|
50
|
-
const EVENT_TYPE = exports.EVENT_TYPE = Object.freeze({
|
|
51
|
-
IMPRESSION: 'impression',
|
|
52
|
-
VIEWABLE: 'viewable',
|
|
53
|
-
CLICK: 'click',
|
|
54
|
-
SUBMIT: 'submit',
|
|
125
|
+
SELECT: 'select',
|
|
126
|
+
MORE_BUTTON: 'more-button',
|
|
127
|
+
BUTTON: 'button',
|
|
128
|
+
CHECKBOX: 'checkbox',
|
|
55
129
|
FEEDBACK: 'feedback',
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const TRACKING_EVENT_TYPES = exports.TRACKING_EVENT_TYPES = [EVENT_TYPE.IMPRESSION, EVENT_TYPE.VIEWABLE, EVENT_TYPE.CLICK, EVENT_TYPE.SUBMIT, EVENT_TYPE.FEEDBACK, EVENT_TYPE.HEARTBEAT];
|
|
60
|
-
const PERFORMANCE_EVENT_TYPES = exports.PERFORMANCE_EVENT_TYPES = [EVENT_TYPE.IMPRESSION, EVENT_TYPE.VIEWABLE, EVENT_TYPE.CLICK];
|
|
61
|
-
const DIRECT_TRACKING_EVENT_TYPES = exports.DIRECT_TRACKING_EVENT_TYPES = [EVENT_TYPE.SUBMIT, EVENT_TYPE.HEARTBEAT, EVENT_TYPE.GENERIC_CLICK];
|
|
62
|
-
const PERFORMANCE_EVENT_TYPE_SET = new Set(PERFORMANCE_EVENT_TYPES);
|
|
63
|
-
function isPerformanceEventType(type) {
|
|
64
|
-
return PERFORMANCE_EVENT_TYPE_SET.has(type);
|
|
65
|
-
}
|
|
66
|
-
const TRACKING_STATUS = exports.TRACKING_STATUS = Object.freeze({
|
|
67
|
-
UNTRACKED: 'untracked',
|
|
68
|
-
TRACKING: 'tracking',
|
|
69
|
-
TRIGGERED: 'triggered'
|
|
70
|
-
});
|
|
71
|
-
const STATUS = exports.STATUS = Object.freeze({
|
|
72
|
-
INITIAL: 'initial',
|
|
73
|
-
LOADING: 'loading',
|
|
74
|
-
ERRONEOUS: 'erroneous',
|
|
75
|
-
READY: 'ready',
|
|
76
|
-
ONGOING: 'ongoing',
|
|
77
|
-
DONE: 'done',
|
|
78
|
-
EMPTY: 'empty',
|
|
79
|
-
NONEMPTY: 'nonempty',
|
|
80
|
-
UNANSWERABLE: 'unanswerable'
|
|
81
|
-
});
|
|
82
|
-
const QUESTION_SOURCE = exports.QUESTION_SOURCE = Object.freeze({
|
|
83
|
-
ORGANIC: '_organic',
|
|
84
|
-
SUGGESTED_QUESTIONS: '_suggested_questions',
|
|
85
|
-
INLINE_QUESTION_LINK: '_inline_question_link'
|
|
86
|
-
});
|
|
87
|
-
function validateEventType(value) {
|
|
88
|
-
if (TRACKING_EVENT_TYPES.indexOf(value) < 0) {
|
|
89
|
-
throw new Error(`Unrecognized event type: ${value}`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
function validateTrackingStatus(value) {
|
|
93
|
-
if (value !== TRACKING_STATUS.UNTRACKED && value !== TRACKING_STATUS.TRACKING && value !== TRACKING_STATUS.TRIGGERED) {
|
|
94
|
-
throw new Error(`Unrecognized tracking status: ${value}`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
const WORKFLOW_CONFIGURABLE = exports.WORKFLOW_CONFIGURABLE = Object.freeze({
|
|
98
|
-
API: 'api',
|
|
99
|
-
LAYOUTS: 'layouts',
|
|
100
|
-
DATA_PROCESSOR: 'dataProcessor',
|
|
101
|
-
TRACKERS: 'trackers',
|
|
102
|
-
INTERACTIONS: 'interactions',
|
|
103
|
-
FILTERS: 'filters',
|
|
104
|
-
PAGINATION: 'pagination',
|
|
105
|
-
TEMPLATES: 'templates'
|
|
106
|
-
});
|
|
107
|
-
const REQUEST_TYPE = exports.REQUEST_TYPE = Object.freeze({
|
|
108
|
-
QUERY: 'query',
|
|
109
|
-
REFINE: 'refine',
|
|
110
|
-
MORE: 'more'
|
|
130
|
+
TEXT: 'text',
|
|
131
|
+
QUESTION: 'question',
|
|
132
|
+
TYPEWRITER: 'typewriter'
|
|
111
133
|
});
|
|
@@ -28,7 +28,7 @@ function setFollowUpTemplate(client, _ref = {}) {
|
|
|
28
28
|
if (template === _templates.followUp && !hasExtraOptions) {
|
|
29
29
|
return; // same as default
|
|
30
30
|
}
|
|
31
|
-
client.
|
|
31
|
+
client.workflows.asks.useTemplates({
|
|
32
32
|
followUp: hasExtraOptions ? args => template(Object.assign({}, options, args)) : template
|
|
33
33
|
});
|
|
34
34
|
}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _constants = require("./constants.js");
|
|
8
8
|
var _constants2 = require("../../constants.js");
|
|
9
|
-
var
|
|
9
|
+
var _clientSdkWorkflow = require("@miso.ai/client-sdk-workflow");
|
|
10
10
|
var _phrases = require("./phrases.js");
|
|
11
11
|
const CLASS_OPEN = 'answer-box-open';
|
|
12
12
|
const CLASS_SHOWN = 'answer-box-shown';
|
|
@@ -18,7 +18,7 @@ class AnswerBox {
|
|
|
18
18
|
hideWhenUnanswerable = true
|
|
19
19
|
} = {}) {
|
|
20
20
|
this._client = client;
|
|
21
|
-
this._workflow = client.
|
|
21
|
+
this._workflow = client.workflows.hybridSearch;
|
|
22
22
|
this._element = element;
|
|
23
23
|
this._classPrefix = classPrefix;
|
|
24
24
|
this._phrases = phrases;
|
|
@@ -47,7 +47,7 @@ class AnswerBox {
|
|
|
47
47
|
this._syncButtonText();
|
|
48
48
|
this._unsubscribes = [() => element.removeEventListener('click', callback),
|
|
49
49
|
// cling to data rather than view, as we may miss view event when tab is inactive due to raf
|
|
50
|
-
workflow._answer._hub.on(
|
|
50
|
+
workflow._answer._hub.on(_clientSdkWorkflow.fields.data(), () => this._syncWofkflowStatus())];
|
|
51
51
|
}
|
|
52
52
|
_handleClick({
|
|
53
53
|
target,
|
|
@@ -69,7 +69,7 @@ class AnswerBox {
|
|
|
69
69
|
meta: {
|
|
70
70
|
unanswerable = false
|
|
71
71
|
} = {}
|
|
72
|
-
} = this._workflow._answer._hub.states[
|
|
72
|
+
} = this._workflow._answer._hub.states[_clientSdkWorkflow.fields.data()];
|
|
73
73
|
switch (status) {
|
|
74
74
|
case _constants2.STATUS.ERRONEOUS:
|
|
75
75
|
case _constants2.STATUS.READY:
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.defaultLayouts = void 0;
|
|
7
|
+
var _commons = require("@miso.ai/commons");
|
|
8
|
+
var _constants = require("./constants.js");
|
|
9
|
+
var _templates = require("./layout/templates.js");
|
|
10
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
12
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
13
|
+
/**
|
|
14
|
+
* Default layout options of each workflow, keyed by workflow name. The UI
|
|
15
|
+
* plugin seeds the workflow plugin's defaults store with these values at
|
|
16
|
+
* install. The tables mirror the workflow class hierarchy.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const BASE_LAYOUTS = {
|
|
20
|
+
[_constants.ROLE.CONTAINER]: _constants.LAYOUT_TYPE.CONTAINER,
|
|
21
|
+
[_constants.ROLE.ERROR]: _constants.LAYOUT_TYPE.ERROR
|
|
22
|
+
};
|
|
23
|
+
const ANSWER_BASED_LAYOUTS = Object.assign({}, BASE_LAYOUTS, {
|
|
24
|
+
[_constants.ROLE.QUERY]: [_constants.LAYOUT_TYPE.SEARCH_BOX, {
|
|
25
|
+
placeholder: 'Ask a question'
|
|
26
|
+
}],
|
|
27
|
+
[_constants.ROLE.QUESTION]: [_constants.LAYOUT_TYPE.TEXT, {
|
|
28
|
+
tag: 'h2'
|
|
29
|
+
}],
|
|
30
|
+
[_constants.ROLE.ANSWER]: _constants.LAYOUT_TYPE.TYPEWRITER,
|
|
31
|
+
[_constants.ROLE.FEEDBACK]: _constants.LAYOUT_TYPE.FEEDBACK,
|
|
32
|
+
[_constants.ROLE.IMAGES]: [_constants.LAYOUT_TYPE.GALLERY, {
|
|
33
|
+
incremental: true,
|
|
34
|
+
itemType: 'image'
|
|
35
|
+
}],
|
|
36
|
+
[_constants.ROLE.SOURCES]: [_constants.LAYOUT_TYPE.LIST, {
|
|
37
|
+
incremental: true,
|
|
38
|
+
itemType: 'article',
|
|
39
|
+
templates: {
|
|
40
|
+
ordered: true
|
|
41
|
+
}
|
|
42
|
+
}],
|
|
43
|
+
[_constants.ROLE.AFFILIATION]: [_constants.LAYOUT_TYPE.AFFILIATION, {
|
|
44
|
+
incremental: true,
|
|
45
|
+
itemType: 'affiliation',
|
|
46
|
+
link: {
|
|
47
|
+
rel: 'noopener nofollow'
|
|
48
|
+
}
|
|
49
|
+
}]
|
|
50
|
+
});
|
|
51
|
+
function totalContent(layout, {
|
|
52
|
+
value
|
|
53
|
+
}) {
|
|
54
|
+
if (value === undefined) {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
const {
|
|
58
|
+
formatNumber
|
|
59
|
+
} = layout.templates.helpers;
|
|
60
|
+
const formatted = formatNumber(value);
|
|
61
|
+
const label = value === 1 ? 'result' : 'results';
|
|
62
|
+
return `${formatted} ${label}`;
|
|
63
|
+
}
|
|
64
|
+
const _ROLE$QUERY = _constants.ROLE.QUERY,
|
|
65
|
+
MESSAGE_LAYOUTS = _objectWithoutPropertiesLoose(ANSWER_BASED_LAYOUTS, [_ROLE$QUERY].map(_toPropertyKey));
|
|
66
|
+
|
|
67
|
+
// the rename/delete button controls of a thread (the conversation header's,
|
|
68
|
+
// and a thread list item's context menu's): mapped to the thread record —
|
|
69
|
+
// the dialogs work with its title, and the buttons disable while the record
|
|
70
|
+
// has no thread id yet (a thread being created is not addressable until
|
|
71
|
+
// resolved; the workflows guard all the same)
|
|
72
|
+
const THREAD_CONTROL_OPTIONS = Object.freeze({
|
|
73
|
+
value: thread => thread && thread.title,
|
|
74
|
+
disabled: thread => !(thread && thread.thread_id)
|
|
75
|
+
});
|
|
76
|
+
const THREAD_RENAME_PROMPT = Object.freeze({
|
|
77
|
+
title: 'Rename thread',
|
|
78
|
+
placeholder: 'Thread name',
|
|
79
|
+
confirmText: 'Rename'
|
|
80
|
+
});
|
|
81
|
+
const THREAD_DELETE_CONFIRM = Object.freeze({
|
|
82
|
+
title: 'Delete thread',
|
|
83
|
+
message: title => `Are you sure you want to delete "${title || 'this thread'}"? This cannot be undone.`,
|
|
84
|
+
confirmText: 'Delete',
|
|
85
|
+
danger: true
|
|
86
|
+
});
|
|
87
|
+
const SEARCH_BASED_LAYOUTS = Object.assign({}, BASE_LAYOUTS, {
|
|
88
|
+
[_constants.ROLE.QUERY]: [_constants.LAYOUT_TYPE.SEARCH_BOX],
|
|
89
|
+
[_constants.ROLE.PRODUCTS]: [_constants.LAYOUT_TYPE.LIST, {
|
|
90
|
+
incremental: true,
|
|
91
|
+
infiniteScroll: true
|
|
92
|
+
}],
|
|
93
|
+
[_constants.ROLE.KEYWORDS]: [_constants.LAYOUT_TYPE.TEXT, {
|
|
94
|
+
raw: true
|
|
95
|
+
}],
|
|
96
|
+
[_constants.ROLE.TOTAL]: [_constants.LAYOUT_TYPE.TEXT, {
|
|
97
|
+
raw: true,
|
|
98
|
+
templates: {
|
|
99
|
+
content: totalContent
|
|
100
|
+
}
|
|
101
|
+
}],
|
|
102
|
+
[_constants.ROLE.FACETS]: [_constants.LAYOUT_TYPE.FACETS],
|
|
103
|
+
[_constants.ROLE.SORT]: [_constants.LAYOUT_TYPE.SELECT],
|
|
104
|
+
[_constants.ROLE.MORE]: [_constants.LAYOUT_TYPE.MORE_BUTTON]
|
|
105
|
+
});
|
|
106
|
+
const defaultLayouts = exports.defaultLayouts = Object.freeze({
|
|
107
|
+
'ask': Object.freeze(Object.assign({}, ANSWER_BASED_LAYOUTS, {
|
|
108
|
+
[_constants.ROLE.QUERY]: [_constants.LAYOUT_TYPE.SEARCH_BOX, {
|
|
109
|
+
templates: {
|
|
110
|
+
buttonIcon: 'send'
|
|
111
|
+
}
|
|
112
|
+
}],
|
|
113
|
+
[_constants.ROLE.REASONING]: _constants.LAYOUT_TYPE.TYPEWRITER,
|
|
114
|
+
[_constants.ROLE.RELATED_RESOURCES]: [_constants.LAYOUT_TYPE.LIST, {
|
|
115
|
+
incremental: true,
|
|
116
|
+
itemType: 'article'
|
|
117
|
+
}],
|
|
118
|
+
[_constants.ROLE.QUERY_SUGGESTIONS]: _constants.LAYOUT_TYPE.OPTION_LIST,
|
|
119
|
+
[_constants.ROLE.FOLLOW_UP_QUESTIONS]: _constants.LAYOUT_TYPE.OPTION_LIST
|
|
120
|
+
})),
|
|
121
|
+
'search': Object.freeze(Object.assign({}, SEARCH_BASED_LAYOUTS)),
|
|
122
|
+
'hybrid-search': Object.freeze(Object.assign({}, ANSWER_BASED_LAYOUTS, SEARCH_BASED_LAYOUTS, {
|
|
123
|
+
[_constants.ROLE.QUERY]: [_constants.LAYOUT_TYPE.SEARCH_BOX, {
|
|
124
|
+
placeholder: ''
|
|
125
|
+
}],
|
|
126
|
+
[_constants.ROLE.QUESTION]: [_constants.LAYOUT_TYPE.TEXT, {
|
|
127
|
+
raw: true
|
|
128
|
+
}],
|
|
129
|
+
[_constants.ROLE.SOURCES]: [_constants.LAYOUT_TYPE.HORIZONTAL, {
|
|
130
|
+
incremental: true,
|
|
131
|
+
itemType: 'article',
|
|
132
|
+
templates: {
|
|
133
|
+
ordered: true,
|
|
134
|
+
article: _templates.compactArticle,
|
|
135
|
+
articleInfoBlock: _templates.compactArticleInfoBlock
|
|
136
|
+
}
|
|
137
|
+
}]
|
|
138
|
+
})),
|
|
139
|
+
'recommendation': Object.freeze(Object.assign({}, BASE_LAYOUTS, {
|
|
140
|
+
[_constants.ROLE.PRODUCTS]: _constants.LAYOUT_TYPE.LIST
|
|
141
|
+
})),
|
|
142
|
+
'explore': Object.freeze(Object.assign({}, BASE_LAYOUTS, {
|
|
143
|
+
[_constants.ROLE.RELATED_QUESTIONS]: [_constants.LAYOUT_TYPE.LIST, {
|
|
144
|
+
itemType: 'question',
|
|
145
|
+
link: {
|
|
146
|
+
rel: 'noopener nofollow'
|
|
147
|
+
}
|
|
148
|
+
}],
|
|
149
|
+
// TODO: should define by useLink()
|
|
150
|
+
[_constants.ROLE.QUERY]: [_constants.LAYOUT_TYPE.SEARCH_BOX, {
|
|
151
|
+
placeholder: 'Ask a question'
|
|
152
|
+
}]
|
|
153
|
+
})),
|
|
154
|
+
// the thread list's own roles plus its thread item subworkflows' — the
|
|
155
|
+
// items share the history workflow's options, so one bag serves both.
|
|
156
|
+
// The item roles: the item-container layout (the standard container
|
|
157
|
+
// duties plus the items' context menus, driven by the item-menu
|
|
158
|
+
// data-role contract — it only ever drives its own item's menu, so
|
|
159
|
+
// hosting it on the panel is inert, and the panel never triggers the
|
|
160
|
+
// auto logo either, having no main-role component), the title text
|
|
161
|
+
// (with a presentation fallback for untitled threads), the context
|
|
162
|
+
// menu's rename (ask-then-submit through the prompt dialog) and delete
|
|
163
|
+
// (confirm-then-submit) buttons, and its subscription toggle — a menu
|
|
164
|
+
// item like the other two, so text only, labeled by the action a click
|
|
165
|
+
// takes rather than by the state
|
|
166
|
+
'history': Object.freeze(Object.assign({}, BASE_LAYOUTS, {
|
|
167
|
+
[_constants.ROLE.CONTAINER]: [_constants.LAYOUT_TYPE.ITEM_CONTAINER, {
|
|
168
|
+
logo: false
|
|
169
|
+
}],
|
|
170
|
+
[_constants.ROLE.THREADS]: [_constants.LAYOUT_TYPE.THREADS, {
|
|
171
|
+
itemType: 'thread',
|
|
172
|
+
incremental: true,
|
|
173
|
+
infiniteScroll: true
|
|
174
|
+
}],
|
|
175
|
+
[_constants.ROLE.NEW_THREAD]: [_constants.LAYOUT_TYPE.BUTTON, {
|
|
176
|
+
icon: 'plus',
|
|
177
|
+
text: 'New chat'
|
|
178
|
+
}],
|
|
179
|
+
[_constants.ROLE.TITLE]: [_constants.LAYOUT_TYPE.TEXT, {
|
|
180
|
+
tag: 'div',
|
|
181
|
+
templates: {
|
|
182
|
+
content: (layout, {
|
|
183
|
+
value
|
|
184
|
+
}) => (0, _commons.escapeHtml)(value || 'Untitled')
|
|
185
|
+
}
|
|
186
|
+
}],
|
|
187
|
+
[_constants.ROLE.RENAME]: [_constants.LAYOUT_TYPE.BUTTON, Object.assign({}, THREAD_CONTROL_OPTIONS, {
|
|
188
|
+
text: 'Rename',
|
|
189
|
+
prompt: THREAD_RENAME_PROMPT
|
|
190
|
+
})],
|
|
191
|
+
[_constants.ROLE.DELETE]: [_constants.LAYOUT_TYPE.BUTTON, Object.assign({}, THREAD_CONTROL_OPTIONS, {
|
|
192
|
+
text: 'Delete',
|
|
193
|
+
confirm: THREAD_DELETE_CONFIRM
|
|
194
|
+
})],
|
|
195
|
+
[_constants.ROLE.SUBSCRIPTION]: [_constants.LAYOUT_TYPE.CHECKBOX, {
|
|
196
|
+
text: 'Subscribe',
|
|
197
|
+
checkedText: 'Unsubscribe'
|
|
198
|
+
}]
|
|
199
|
+
})),
|
|
200
|
+
// the conversation panel's own roles plus its message item subworkflows'
|
|
201
|
+
// — the items share the conversation workflow's options, so one bag
|
|
202
|
+
// serves both. The message roles: the answer-based layouts minus the
|
|
203
|
+
// query role (a message has no query flow of its own; the query entry
|
|
204
|
+
// below is the panel's composer), with the question layout (text plus
|
|
205
|
+
// authorship attributes, off the whole record), the answer typewriter
|
|
206
|
+
// with `instant: true` (an already-finished answer renders in one shot),
|
|
207
|
+
// and the sources as the compact horizontal cards of the hybrid-search
|
|
208
|
+
// UI. logo: false turns the per-message banner off; the panel never
|
|
209
|
+
// triggers the auto logo anyway, having no main-role component
|
|
210
|
+
'conversation': Object.freeze(Object.assign({}, MESSAGE_LAYOUTS, {
|
|
211
|
+
[_constants.ROLE.CONTAINER]: [_constants.LAYOUT_TYPE.CONTAINER, {
|
|
212
|
+
logo: false
|
|
213
|
+
}],
|
|
214
|
+
[_constants.ROLE.QUESTION]: _constants.LAYOUT_TYPE.QUESTION,
|
|
215
|
+
[_constants.ROLE.ANSWER]: [_constants.LAYOUT_TYPE.TYPEWRITER, {
|
|
216
|
+
instant: true
|
|
217
|
+
}],
|
|
218
|
+
[_constants.ROLE.SOURCES]: [_constants.LAYOUT_TYPE.HORIZONTAL, {
|
|
219
|
+
incremental: true,
|
|
220
|
+
itemType: 'article',
|
|
221
|
+
templates: {
|
|
222
|
+
ordered: true,
|
|
223
|
+
article: _templates.compactArticle,
|
|
224
|
+
articleInfoBlock: _templates.compactArticleInfoBlock
|
|
225
|
+
}
|
|
226
|
+
}],
|
|
227
|
+
[_constants.ROLE.MESSAGES]: [_constants.LAYOUT_TYPE.MESSAGES, {
|
|
228
|
+
itemType: 'message',
|
|
229
|
+
incremental: true,
|
|
230
|
+
infiniteScroll: true
|
|
231
|
+
}],
|
|
232
|
+
[_constants.ROLE.QUERY]: [_constants.LAYOUT_TYPE.SEARCH_BOX, {
|
|
233
|
+
placeholder: 'Ask a follow-up question',
|
|
234
|
+
clearOnSubmit: true,
|
|
235
|
+
blurOnSubmit: false,
|
|
236
|
+
disableWhenOngoing: true,
|
|
237
|
+
templates: {
|
|
238
|
+
buttonIcon: 'send'
|
|
239
|
+
}
|
|
240
|
+
}],
|
|
241
|
+
[_constants.ROLE.TITLE]: [_constants.LAYOUT_TYPE.TEXT, {
|
|
242
|
+
tag: 'div'
|
|
243
|
+
}],
|
|
244
|
+
[_constants.ROLE.RENAME]: [_constants.LAYOUT_TYPE.BUTTON, Object.assign({}, THREAD_CONTROL_OPTIONS, {
|
|
245
|
+
icon: 'pencil',
|
|
246
|
+
prompt: THREAD_RENAME_PROMPT
|
|
247
|
+
})],
|
|
248
|
+
[_constants.ROLE.DELETE]: [_constants.LAYOUT_TYPE.BUTTON, Object.assign({}, THREAD_CONTROL_OPTIONS, {
|
|
249
|
+
icon: 'trash',
|
|
250
|
+
confirm: THREAD_DELETE_CONFIRM
|
|
251
|
+
})],
|
|
252
|
+
[_constants.ROLE.SUBSCRIPTION]: [_constants.LAYOUT_TYPE.CHECKBOX, {
|
|
253
|
+
icon: 'bell',
|
|
254
|
+
text: 'Subscribe',
|
|
255
|
+
checkedIcon: 'bell-fill',
|
|
256
|
+
checkedText: 'Subscribed'
|
|
257
|
+
}]
|
|
258
|
+
}))
|
|
259
|
+
});
|
|
@@ -9,18 +9,36 @@ Object.defineProperty(exports, "MisoAskElement", {
|
|
|
9
9
|
return _misoAsk.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "MisoConversationElement", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _misoConversation.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "MisoExploreElement", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function () {
|
|
15
21
|
return _misoExplore.default;
|
|
16
22
|
}
|
|
17
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "MisoHistoryElement", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _misoHistory.default;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
18
30
|
Object.defineProperty(exports, "MisoHybridSearchElement", {
|
|
19
31
|
enumerable: true,
|
|
20
32
|
get: function () {
|
|
21
33
|
return _misoHybridSearch.default;
|
|
22
34
|
}
|
|
23
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "MisoMessageItemElement", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _misoMessageItem.default;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
24
42
|
Object.defineProperty(exports, "MisoRecommendationElement", {
|
|
25
43
|
enumerable: true,
|
|
26
44
|
get: function () {
|
|
@@ -33,8 +51,18 @@ Object.defineProperty(exports, "MisoSearchElement", {
|
|
|
33
51
|
return _misoSearch.default;
|
|
34
52
|
}
|
|
35
53
|
});
|
|
54
|
+
Object.defineProperty(exports, "MisoThreadItemElement", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _misoThreadItem.default;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
36
60
|
var _misoAsk = _interopRequireDefault(require("./miso-ask.js"));
|
|
37
61
|
var _misoExplore = _interopRequireDefault(require("./miso-explore.js"));
|
|
62
|
+
var _misoHistory = _interopRequireDefault(require("./miso-history.js"));
|
|
63
|
+
var _misoConversation = _interopRequireDefault(require("./miso-conversation.js"));
|
|
64
|
+
var _misoMessageItem = _interopRequireDefault(require("./miso-message-item.js"));
|
|
65
|
+
var _misoThreadItem = _interopRequireDefault(require("./miso-thread-item.js"));
|
|
38
66
|
var _misoHybridSearch = _interopRequireDefault(require("./miso-hybrid-search.js"));
|
|
39
67
|
var _misoSearch = _interopRequireDefault(require("./miso-search.js"));
|
|
40
68
|
var _misoRecommendation = _interopRequireDefault(require("./miso-recommendation.js"));
|
|
@@ -19,12 +19,12 @@ class MisoAskElement extends _misoContainer.default {
|
|
|
19
19
|
}
|
|
20
20
|
_getWorkflow(client) {
|
|
21
21
|
if (this.boundToActiveWorkflow) {
|
|
22
|
-
return client.
|
|
22
|
+
return client.workflows.asks.active;
|
|
23
23
|
}
|
|
24
24
|
return this._getWorkflowByParentQuestionId(client, this.parentQuestionId);
|
|
25
25
|
}
|
|
26
26
|
_getWorkflowByParentQuestionId(client, id) {
|
|
27
|
-
return client.
|
|
27
|
+
return client.workflows.asks.getByParentQuestionId(id, {
|
|
28
28
|
autoCreate: true
|
|
29
29
|
});
|
|
30
30
|
}
|
|
@@ -62,7 +62,7 @@ class MisoAskElement extends _misoContainer.default {
|
|
|
62
62
|
await super.connectedCallback();
|
|
63
63
|
if (document.body.contains(this)) {
|
|
64
64
|
// in case already disconnected
|
|
65
|
-
const context = this._client.
|
|
65
|
+
const context = this._client.workflows.asks;
|
|
66
66
|
this._unsubscribes = [...(this._unsubscribes || []), context.on('active', event => {
|
|
67
67
|
if (!this.boundToActiveWorkflow) {
|
|
68
68
|
return;
|