@admin-layout/ai-chat-ext-browser 12.2.4-alpha.94 → 12.2.5-alpha.15
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/lib/components/MessageWidgets/MessageFlights.d.ts +47 -0
- package/lib/components/MessageWidgets/MessageFlights.d.ts.map +1 -0
- package/lib/components/MessageWidgets/MessageFlights.js +328 -0
- package/lib/components/MessageWidgets/MessageFlights.js.map +1 -0
- package/lib/components/MessageWidgets/MessageMedia.d.ts +7 -5
- package/lib/components/MessageWidgets/MessageMedia.d.ts.map +1 -1
- package/lib/components/MessageWidgets/MessageMedia.js +86 -54
- package/lib/components/MessageWidgets/MessageMedia.js.map +1 -1
- package/lib/components/MessageWidgets/MessageResults.d.ts +54 -0
- package/lib/components/MessageWidgets/MessageResults.d.ts.map +1 -0
- package/lib/components/MessageWidgets/MessageResults.js +163 -0
- package/lib/components/MessageWidgets/MessageResults.js.map +1 -0
- package/lib/components/MessageWidgets/MessageTravel.d.ts +2 -0
- package/lib/components/MessageWidgets/MessageTravel.d.ts.map +1 -1
- package/lib/components/MessageWidgets/MessageTravel.js +22 -2
- package/lib/components/MessageWidgets/MessageTravel.js.map +1 -1
- package/lib/components/MessageWidgets/ResultCards.d.ts +19 -0
- package/lib/components/MessageWidgets/ResultCards.d.ts.map +1 -0
- package/lib/components/MessageWidgets/ResultCards.js +543 -0
- package/lib/components/MessageWidgets/ResultCards.js.map +1 -0
- package/lib/components/MessageWidgets/ResultRow.d.ts +57 -0
- package/lib/components/MessageWidgets/ResultRow.d.ts.map +1 -0
- package/lib/components/MessageWidgets/ResultRow.js +216 -0
- package/lib/components/MessageWidgets/ResultRow.js.map +1 -0
- package/lib/components/MessageWidgets/index.d.ts +7 -0
- package/lib/components/MessageWidgets/index.d.ts.map +1 -1
- package/lib/components/MessageWidgets/mediaUtils.d.ts +21 -0
- package/lib/components/MessageWidgets/mediaUtils.d.ts.map +1 -0
- package/lib/components/MessageWidgets/mediaUtils.js +76 -0
- package/lib/components/MessageWidgets/mediaUtils.js.map +1 -0
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.d.ts.map +1 -1
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/interfaces/ai-chat.interface.d.ts +11 -1
- package/lib/interfaces/ai-chat.interface.d.ts.map +1 -1
- package/lib/interfaces/index.d.ts +1 -1
- package/lib/interfaces/index.d.ts.map +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +13 -1
- package/lib/module.js.map +1 -1
- package/lib/slot-fill/chat-settings-fill.js +1 -1
- package/lib/slot-fill/chat-settings-fill.js.map +1 -1
- package/lib/slot-fill/index.d.ts +4 -0
- package/lib/slot-fill/index.d.ts.map +1 -1
- package/lib/slot-fill/message-ai-assistant-fill.js +1 -1
- package/lib/slot-fill/message-ai-assistant-fill.js.map +1 -1
- package/lib/slot-fill/message-codeblock-fill.js +1 -1
- package/lib/slot-fill/message-codeblock-fill.js.map +1 -1
- package/lib/slot-fill/message-connector-fill.js +1 -1
- package/lib/slot-fill/message-connector-fill.js.map +1 -1
- package/lib/slot-fill/message-generic-fill.js +1 -1
- package/lib/slot-fill/message-generic-fill.js.map +1 -1
- package/lib/slot-fill/message-jobs-fill.d.ts +4 -0
- package/lib/slot-fill/message-jobs-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-jobs-fill.js +6 -0
- package/lib/slot-fill/message-jobs-fill.js.map +1 -0
- package/lib/slot-fill/message-media-fill.js +1 -1
- package/lib/slot-fill/message-media-fill.js.map +1 -1
- package/lib/slot-fill/message-movies-fill.d.ts +4 -0
- package/lib/slot-fill/message-movies-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-movies-fill.js +6 -0
- package/lib/slot-fill/message-movies-fill.js.map +1 -0
- package/lib/slot-fill/message-resume-fill.d.ts +4 -0
- package/lib/slot-fill/message-resume-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-resume-fill.js +6 -0
- package/lib/slot-fill/message-resume-fill.js.map +1 -0
- package/lib/slot-fill/message-service-fill.js +1 -1
- package/lib/slot-fill/message-service-fill.js.map +1 -1
- package/lib/slot-fill/message-shopping-fill.d.ts +4 -0
- package/lib/slot-fill/message-shopping-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-shopping-fill.js +6 -0
- package/lib/slot-fill/message-shopping-fill.js.map +1 -0
- package/lib/slot-fill/message-thinking-fill.js +1 -1
- package/lib/slot-fill/message-thinking-fill.js.map +1 -1
- package/lib/slot-fill/message-tooluse-fill.js +1 -1
- package/lib/slot-fill/message-tooluse-fill.js.map +1 -1
- package/lib/slot-fill/message-travel-fill.js +1 -1
- package/lib/slot-fill/message-travel-fill.js.map +1 -1
- package/lib/slot-fill/message-workflow-fill.js +1 -1
- package/lib/slot-fill/message-workflow-fill.js.map +1 -1
- package/lib/utils/parseWidgetPost.d.ts.map +1 -1
- package/lib/utils/parseWidgetPost.js +1 -1
- package/lib/utils/parseWidgetPost.js.map +1 -1
- package/package.json +7 -5
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React, { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { IPost } from 'common';
|
|
3
|
+
import { ResultCardBase, ResultSetLike, ResultSort, ResultSummary } from '@admin-layout/client';
|
|
4
|
+
import { IResultCardProps } from './ResultCards';
|
|
5
|
+
/**
|
|
6
|
+
* Every list-shaped result vertical, described once: how to turn the
|
|
7
|
+
* attachment into cards, how to summarise it, which card draws one, and
|
|
8
|
+
* which icon names it. The chat row and the side-panel list both read this.
|
|
9
|
+
*/
|
|
10
|
+
export type ResultVertical = 'stays' | 'cars' | 'ground' | 'shopping' | 'movies' | 'jobs';
|
|
11
|
+
interface VerticalSpec {
|
|
12
|
+
toCards: (a: ResultSetLike) => ResultCardBase[];
|
|
13
|
+
summary: (a: ResultSetLike, cards: ResultCardBase[]) => ResultSummary;
|
|
14
|
+
Card: ComponentType<IResultCardProps<any>>;
|
|
15
|
+
icon: (a: ResultSetLike, cards: ResultCardBase[]) => ReactNode;
|
|
16
|
+
sorts: ResultSort[];
|
|
17
|
+
}
|
|
18
|
+
export declare const VERTICALS: Record<ResultVertical, VerticalSpec>;
|
|
19
|
+
/** Which vertical a travel attachment that is not flights belongs to. */
|
|
20
|
+
export declare const travelVertical: (a?: ResultSetLike) => ResultVertical;
|
|
21
|
+
export declare const RESULT_SORT_LABELS: Record<ResultSort, string>;
|
|
22
|
+
export interface IMessageResultsProps {
|
|
23
|
+
message: IPost;
|
|
24
|
+
vertical: ResultVertical;
|
|
25
|
+
/** Defaults to the message's own attachment. */
|
|
26
|
+
attachment?: ResultSetLike;
|
|
27
|
+
/** Opens the full result set (the side rail or the vertical's page). */
|
|
28
|
+
onMessageClick?: (ref: IPost) => void;
|
|
29
|
+
}
|
|
30
|
+
/** The chat row for one result vertical. */
|
|
31
|
+
export declare const MessageResults: ({ message, vertical, attachment, onMessageClick }: IMessageResultsProps) => React.JSX.Element;
|
|
32
|
+
export interface IResultCardListProps {
|
|
33
|
+
vertical: ResultVertical;
|
|
34
|
+
attachment: ResultSetLike;
|
|
35
|
+
sort?: ResultSort;
|
|
36
|
+
onOpen?: () => void;
|
|
37
|
+
}
|
|
38
|
+
/** Every result as a full-width vertical list, for a side panel or a results page. */
|
|
39
|
+
export declare const ResultCardList: ({ vertical, attachment, sort, onOpen }: IResultCardListProps) => React.JSX.Element;
|
|
40
|
+
/** The header strip for a side panel: the same summary the chat row shows. */
|
|
41
|
+
export declare const resultSummaryOf: (vertical: ResultVertical, attachment: ResultSetLike) => ResultSummary;
|
|
42
|
+
export declare const resultIconOf: (vertical: ResultVertical, attachment: ResultSetLike) => ReactNode;
|
|
43
|
+
export interface IMessageVerticalProps {
|
|
44
|
+
message: IPost;
|
|
45
|
+
index?: number;
|
|
46
|
+
onMessageClick?: (ref: IPost) => void;
|
|
47
|
+
}
|
|
48
|
+
export declare const MessageShopping: (props: IMessageVerticalProps) => React.JSX.Element;
|
|
49
|
+
export declare const MessageMovies: (props: IMessageVerticalProps) => React.JSX.Element;
|
|
50
|
+
export declare const MessageJobs: (props: IMessageVerticalProps) => React.JSX.Element;
|
|
51
|
+
/** The resume document card: one artifact, opened in the studio or downloaded. */
|
|
52
|
+
export declare const MessageResume: ({ message, onMessageClick }: IMessageVerticalProps) => React.JSX.Element;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=MessageResults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageResults.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/MessageResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAQjE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EACH,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EAgBhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGH,gBAAgB,EAMnB,MAAM,eAAe,CAAC;AAGvB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1F,UAAU,YAAY;IAClB,OAAO,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,cAAc,EAAE,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,aAAa,CAAC;IACtE,IAAI,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,SAAS,CAAC;IAC/D,KAAK,EAAE,UAAU,EAAE,CAAC;CACvB;AAID,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,CA2C1D,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,cAAc,GAAI,IAAI,aAAa,KAAG,cAGlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOzD,CAAC;AAKF,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,KAAK,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,gDAAgD;IAChD,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,wEAAwE;IACxE,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CACzC;AAED,4CAA4C;AAC5C,eAAO,MAAM,cAAc,GAAI,mDAAmD,oBAAoB,sBAuBrG,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,sFAAsF;AACtF,eAAO,MAAM,cAAc,GAAI,wCAAwD,oBAAoB,sBAe1G,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,eAAe,GAAI,UAAU,cAAc,EAAE,YAAY,aAAa,KAAG,aAGrF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,UAAU,cAAc,EAAE,YAAY,aAAa,KAAG,SAGlF,CAAC;AAIF,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,qBAAqB,sBAAsD,CAAC;AACnH,eAAO,MAAM,aAAa,GAAI,OAAO,qBAAqB,sBAAoD,CAAC;AAC/G,eAAO,MAAM,WAAW,GAAI,OAAO,qBAAqB,sBAAkD,CAAC;AAE3G,kFAAkF;AAClF,eAAO,MAAM,aAAa,GAAI,6BAA6B,qBAAqB,sBAM/E,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import React,{useMemo}from'react';import {FaBed}from'@react-icons/all-files/fa/FaBed.js';import {FaBus}from'@react-icons/all-files/fa/FaBus.js';import {FaCar}from'@react-icons/all-files/fa/FaCar.js';import {FaTrain}from'@react-icons/all-files/fa/FaTrain.js';import {FiBriefcase}from'@react-icons/all-files/fi/FiBriefcase.js';import {FiFilm}from'@react-icons/all-files/fi/FiFilm.js';import {FiShoppingBag}from'@react-icons/all-files/fi/FiShoppingBag.js';import {toResumeCard,toMovieCards,toProductCards,toGroundCards,toCarCards,toStayCards,travelResultKind,jobSummary,toJobCards,movieSummary,productSummary,groundSummary,carSummary,staySummary,sortResultCards}from'@admin-layout/client';import {ResumeCard,JobCard,MovieCard,ProductCard,GroundCard,CarCard,StayCard}from'./ResultCards.js';import {ResultRow}from'./ResultRow.js';const ICON = 'h-4 w-4';
|
|
2
|
+
const VERTICALS = {
|
|
3
|
+
stays: {
|
|
4
|
+
toCards: toStayCards,
|
|
5
|
+
summary: (a, c) => staySummary(a, c),
|
|
6
|
+
Card: StayCard,
|
|
7
|
+
icon: () => React.createElement(FaBed, {
|
|
8
|
+
className: ICON
|
|
9
|
+
}),
|
|
10
|
+
sorts: ['recommended', 'cheapest', 'rating']
|
|
11
|
+
},
|
|
12
|
+
cars: {
|
|
13
|
+
toCards: toCarCards,
|
|
14
|
+
summary: (a, c) => carSummary(a, c),
|
|
15
|
+
Card: CarCard,
|
|
16
|
+
icon: () => React.createElement(FaCar, {
|
|
17
|
+
className: ICON
|
|
18
|
+
}),
|
|
19
|
+
sorts: ['recommended', 'cheapest', 'rating']
|
|
20
|
+
},
|
|
21
|
+
ground: {
|
|
22
|
+
toCards: toGroundCards,
|
|
23
|
+
summary: (a, c) => groundSummary(a, c),
|
|
24
|
+
Card: GroundCard,
|
|
25
|
+
icon: (_a, c) => c[0]?.mode === 'bus' ? React.createElement(FaBus, {
|
|
26
|
+
className: ICON
|
|
27
|
+
}) : React.createElement(FaTrain, {
|
|
28
|
+
className: ICON
|
|
29
|
+
}),
|
|
30
|
+
sorts: ['recommended', 'cheapest', 'fastest', 'departure']
|
|
31
|
+
},
|
|
32
|
+
shopping: {
|
|
33
|
+
toCards: toProductCards,
|
|
34
|
+
summary: (a, c) => productSummary(a, c),
|
|
35
|
+
Card: ProductCard,
|
|
36
|
+
icon: () => React.createElement(FiShoppingBag, {
|
|
37
|
+
className: ICON
|
|
38
|
+
}),
|
|
39
|
+
sorts: ['recommended', 'cheapest', 'rating']
|
|
40
|
+
},
|
|
41
|
+
movies: {
|
|
42
|
+
toCards: toMovieCards,
|
|
43
|
+
summary: (a, c) => movieSummary(a, c),
|
|
44
|
+
Card: MovieCard,
|
|
45
|
+
icon: () => React.createElement(FiFilm, {
|
|
46
|
+
className: ICON
|
|
47
|
+
}),
|
|
48
|
+
sorts: ['recommended', 'rating']
|
|
49
|
+
},
|
|
50
|
+
jobs: {
|
|
51
|
+
toCards: a => toJobCards(a),
|
|
52
|
+
summary: (a, c) => jobSummary(a, c),
|
|
53
|
+
Card: JobCard,
|
|
54
|
+
icon: () => React.createElement(FiBriefcase, {
|
|
55
|
+
className: ICON
|
|
56
|
+
}),
|
|
57
|
+
sorts: ['recommended', 'newest']
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
/** Which vertical a travel attachment that is not flights belongs to. */
|
|
61
|
+
const travelVertical = a => {
|
|
62
|
+
const kind = travelResultKind(a);
|
|
63
|
+
return kind === 'car' ? 'cars' : kind === 'train' || kind === 'bus' ? 'ground' : 'stays';
|
|
64
|
+
};
|
|
65
|
+
const RESULT_SORT_LABELS = {
|
|
66
|
+
recommended: 'Top picks',
|
|
67
|
+
cheapest: 'Cheapest',
|
|
68
|
+
fastest: 'Fastest',
|
|
69
|
+
rating: 'Top rated',
|
|
70
|
+
departure: 'Departure',
|
|
71
|
+
newest: 'Newest'
|
|
72
|
+
};
|
|
73
|
+
const attachmentOf = message => message?.propsConfiguration?.contents?.attachment;
|
|
74
|
+
/** The chat row for one result vertical. */
|
|
75
|
+
const MessageResults = ({
|
|
76
|
+
message,
|
|
77
|
+
vertical,
|
|
78
|
+
attachment,
|
|
79
|
+
onMessageClick
|
|
80
|
+
}) => {
|
|
81
|
+
const a = attachment ?? attachmentOf(message);
|
|
82
|
+
const spec = VERTICALS[vertical];
|
|
83
|
+
const cards = useMemo(() => a ? spec.toCards(a) : [], [a, spec]);
|
|
84
|
+
const summary = useMemo(() => a ? spec.summary(a, cards) : null, [a, spec, cards]);
|
|
85
|
+
if (!a || !summary || cards.length === 0) return null;
|
|
86
|
+
const open = onMessageClick ? () => onMessageClick(message) : undefined;
|
|
87
|
+
const {
|
|
88
|
+
Card
|
|
89
|
+
} = spec;
|
|
90
|
+
return React.createElement(ResultRow, {
|
|
91
|
+
icon: spec.icon(a, cards),
|
|
92
|
+
title: summary.title,
|
|
93
|
+
subtitle: summary.subtitle,
|
|
94
|
+
picks: cards.length > 2 ? summary.picks : [],
|
|
95
|
+
count: summary.count,
|
|
96
|
+
onViewAll: open,
|
|
97
|
+
ariaLabel: summary.title
|
|
98
|
+
}, highlighted => cards.map(c => React.createElement(Card, {
|
|
99
|
+
key: c.key,
|
|
100
|
+
card: c,
|
|
101
|
+
onOpen: open,
|
|
102
|
+
highlighted: highlighted === c.key
|
|
103
|
+
})));
|
|
104
|
+
};
|
|
105
|
+
/** Every result as a full-width vertical list, for a side panel or a results page. */
|
|
106
|
+
const ResultCardList = ({
|
|
107
|
+
vertical,
|
|
108
|
+
attachment,
|
|
109
|
+
sort = 'recommended',
|
|
110
|
+
onOpen
|
|
111
|
+
}) => {
|
|
112
|
+
const spec = VERTICALS[vertical];
|
|
113
|
+
const cards = useMemo(() => spec.toCards(attachment), [attachment, spec]);
|
|
114
|
+
const ordered = useMemo(() => sortResultCards(cards, sort), [cards, sort]);
|
|
115
|
+
if (cards.length === 0) return null;
|
|
116
|
+
const {
|
|
117
|
+
Card
|
|
118
|
+
} = spec;
|
|
119
|
+
return React.createElement("ul", {
|
|
120
|
+
className: "space-y-3",
|
|
121
|
+
"aria-label": attachment.title || 'Results'
|
|
122
|
+
}, ordered.map(c => React.createElement("li", {
|
|
123
|
+
key: c.key
|
|
124
|
+
}, React.createElement(Card, {
|
|
125
|
+
card: c,
|
|
126
|
+
onOpen: onOpen,
|
|
127
|
+
fullWidth: true
|
|
128
|
+
}))));
|
|
129
|
+
};
|
|
130
|
+
/** The header strip for a side panel: the same summary the chat row shows. */
|
|
131
|
+
const resultSummaryOf = (vertical, attachment) => {
|
|
132
|
+
const spec = VERTICALS[vertical];
|
|
133
|
+
return spec.summary(attachment, spec.toCards(attachment));
|
|
134
|
+
};
|
|
135
|
+
const resultIconOf = (vertical, attachment) => {
|
|
136
|
+
const spec = VERTICALS[vertical];
|
|
137
|
+
return spec.icon(attachment, spec.toCards(attachment));
|
|
138
|
+
};
|
|
139
|
+
const MessageShopping = props => React.createElement(MessageResults, {
|
|
140
|
+
...props,
|
|
141
|
+
vertical: "shopping"
|
|
142
|
+
});
|
|
143
|
+
const MessageMovies = props => React.createElement(MessageResults, {
|
|
144
|
+
...props,
|
|
145
|
+
vertical: "movies"
|
|
146
|
+
});
|
|
147
|
+
const MessageJobs = props => React.createElement(MessageResults, {
|
|
148
|
+
...props,
|
|
149
|
+
vertical: "jobs"
|
|
150
|
+
});
|
|
151
|
+
/** The resume document card: one artifact, opened in the studio or downloaded. */
|
|
152
|
+
const MessageResume = ({
|
|
153
|
+
message,
|
|
154
|
+
onMessageClick
|
|
155
|
+
}) => {
|
|
156
|
+
const a = message?.propsConfiguration?.contents?.attachment;
|
|
157
|
+
const card = useMemo(() => toResumeCard(a), [a]);
|
|
158
|
+
if (!card) return null;
|
|
159
|
+
return React.createElement(ResumeCard, {
|
|
160
|
+
card: card,
|
|
161
|
+
onOpen: onMessageClick ? () => onMessageClick(message) : undefined
|
|
162
|
+
});
|
|
163
|
+
};export{MessageJobs,MessageMovies,MessageResults,MessageResume,MessageShopping,RESULT_SORT_LABELS,ResultCardList,VERTICALS,resultIconOf,resultSummaryOf,travelVertical};//# sourceMappingURL=MessageResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageResults.js","sources":["../../../src/components/MessageWidgets/MessageResults.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export interface IMessageTravelProps {
|
|
|
5
5
|
index: number;
|
|
6
6
|
/** Fired when the card is clicked — the consumer opens the travel side panel. */
|
|
7
7
|
onMessageClick?: (ref: IPost) => void;
|
|
8
|
+
/** Render stays as the older compact list instead of the card row. */
|
|
9
|
+
legacyStayList?: boolean;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Travel listings card — summary + property rows from yantra-resortifi connector results.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageTravel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageTravel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAM/B,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,sEAAsE;IACtE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAuBD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,mBAAmB,sBAyIvD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from'react';import {FiMapPin}from'@react-icons/all-files/fi/FiMapPin.js';import {FiStar}from'@react-icons/all-files/fi/FiStar.js';import {FiChevronRight}from'@react-icons/all-files/fi/FiChevronRight.js';const LIST_PREVIEW = 5;
|
|
1
|
+
import React from'react';import {FiMapPin}from'@react-icons/all-files/fi/FiMapPin.js';import {FiStar}from'@react-icons/all-files/fi/FiStar.js';import {FiChevronRight}from'@react-icons/all-files/fi/FiChevronRight.js';import {MessageFlights}from'./MessageFlights.js';import {MessageResults,travelVertical}from'./MessageResults.js';import {isFlightAttachment}from'@admin-layout/client';const LIST_PREVIEW = 5;
|
|
2
2
|
const formatPrice = p => p.priceLabel ?? (typeof p.price === 'number' ? `$${Math.round(p.price)}` : undefined);
|
|
3
3
|
const formatSource = source => {
|
|
4
4
|
if (!source) return undefined;
|
|
@@ -19,7 +19,8 @@ const priceRange = a => {
|
|
|
19
19
|
const MessageTravel = props => {
|
|
20
20
|
const {
|
|
21
21
|
message,
|
|
22
|
-
onMessageClick
|
|
22
|
+
onMessageClick,
|
|
23
|
+
legacyStayList = false
|
|
23
24
|
} = props;
|
|
24
25
|
const {
|
|
25
26
|
attachment
|
|
@@ -27,6 +28,25 @@ const MessageTravel = props => {
|
|
|
27
28
|
if (!attachment || !Array.isArray(attachment.properties) || attachment.properties.length === 0) {
|
|
28
29
|
return null;
|
|
29
30
|
}
|
|
31
|
+
// Flight offers render as their own card row; stays, cars, trains and
|
|
32
|
+
// buses each get theirs from the shared result row.
|
|
33
|
+
if (isFlightAttachment(attachment)) {
|
|
34
|
+
return React.createElement(MessageFlights, {
|
|
35
|
+
message: message,
|
|
36
|
+
attachment: attachment,
|
|
37
|
+
onMessageClick: onMessageClick
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (!legacyStayList) {
|
|
41
|
+
// Travel rows carry more than the interface names (operator, departTime ...).
|
|
42
|
+
const rows = attachment;
|
|
43
|
+
return React.createElement(MessageResults, {
|
|
44
|
+
message: message,
|
|
45
|
+
vertical: travelVertical(rows),
|
|
46
|
+
attachment: rows,
|
|
47
|
+
onMessageClick: onMessageClick
|
|
48
|
+
});
|
|
49
|
+
}
|
|
30
50
|
const properties = attachment.properties;
|
|
31
51
|
const count = attachment.totalCount ?? properties.length;
|
|
32
52
|
const city = attachment.city || properties.find(p => p.city)?.city;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageTravel.js","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MessageTravel.js","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"sourcesContent":[null],"names":[],"mappings":"+XAmBA,MAAM,YAAY,GAAG,CAAC;AAEtB,MAAM,WAAW,GAAG,CAAC,KAA6C,CAC9D,UAAE,YAAe,CAAA,CAAO,UAAO,QAAK,GAAS,CAAC,CAAC,EAAA,IAAI,CAAA,KAAK,CAAA,CAAK,CAAC,KAAE,CAAA,CAAK,CAAC,GAAG,SAAE,CAAA;AAE/E,MAAM,YAAY,GAAG,MAAC,IAAqC;AACvD,EAAA,IAAA,CAAA,MAAK,EAAM,OAAA,SAAA;AAAE,EAAA,IAAA,MAAA,gBAAiB,EAAA,OAAA,WAAA;SAC1B,aAAW,CAAA,CAAA,CAAA,CAAA,WAAW,EAAA,GAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAAE,CAAA;AAC5B,MAAA,aAAc,CAAA,IAAM;AACxB,EAAE,MAAA,MAAA,GAAA,CAAA,CAAA,CAAA,UAAA,IAAA,EAAA,EAAA,GAAA,CAAA,CAAA,IAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,CAAA,IAAA,OAAA,CAAA,KAAA,QAAA,IAAA,MAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAEF,EAAA,MAAM,IAAA,GAAA,CAAU,CAAA,SAAyD,KAAA,MAAA,CAAA,MAAA,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,MAAA,CAAA,GAAA,SAAA,CAAA;QACrE,EAAM,GAAA,CAAA,CAAA,OAAY,KAAA,MAAU,CAAA,MAAO,GAAA,IAAA,CAAA,GAAA,CAAA,GAAA,MAAA,CAAA,GAAA,SAAA,CAAA;UAC9B,IAAK,MAAM,OAAO,SAAC;AACnB,EAAA,OAAA,EAAA,IAAM,QAAqB,OAAO,IAAC,GAAK,CAAA,CAAA,EAAA,IAAQ,CAAA,UAAW,CAAA,CAAA,EAAA,EAAA,IAAW,CAAC,KAAC,CAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;;;AAG3D;AAClB;AACF,MAAA,aAAA,GAAA,KAAA,IAAA;AAEF,EAAA,MAAA;;;AAGG,IAAA,cAAA,GAAA;AACH,GAAA,GAAM,KAAC;QACH;AACA,IAAA;MAIA,0BAA0B,EAAA,QAAQ,IAAA,EAAU;AACxC,EAAA,IAAA,CAAA,cAAY,CAAA,KAAA,CAAA,OAAA,CAAA,UAAA,CAAA,UAAA,CAAA,IAAA,UAAA,CAAA,UAAA,CAAA,MAAA,KAAA,CAAA,EAAA;IAChB,OAAC,IAAA;;;AAID;AACI,EAAA,IAAA,kBAAO,CAAA,UAAC,CAAA,EAAA;IACZ,OAAC,KAAA,CAAA,aAAA,CAAA,cAAA,EAAA;MACD,OAAK,EAAA,OAAA;gBACD,EAAA,UAAA;oBACU,EAAG;;;AAWjB,EAAA,IAAA,CAAA,cAAgB,EAAG;;IAEnB,MAAM,IAAI,GAAG,UAAU;AACvB,IAAA,YAAW,CAAA,aAAc,CAAA,cAAgB,EAAC;AAC1C,MAAA,SAAW,OAAG;AACd,MAAA,wBAAoB,CAAA,IAAW,CAAA;MAC/B,UAAY,MAAG;MACf,cAAe,EAAG;KAElB,CAAA;AAEA,EAAA;QAES,aAAa,UACV,CAAA,UAAA;QAEQ,KAAA,GAAA,UAAA,CAAA,UAAA,IAAA,UAAA,CAAA,MAAA;AACA,EAAA,MAAA,IAAA,GAAA,UAAA,CAAA,IAAA,IAAA,UACW,CAAA,IAAE,CAAI,CAAC,IACd,CAAG,CAAA,WAAY;QAS/B,KAAA,GAAA,UAAA,CAAA,KAAA,KAAA,IACI,GAAI,CAAA,SAAS,EACb,IAAA,CAAA,CAAA,GAAS,OACT,CAAA;aAEA,GAAA,UAAA,CAAA,UAAA,CAAA;mBACI,GAAA,UAAA,CAAA,WAAA,IAAK,YAAU;AACX,EAAA,MAAA,MAAA,GAAA,UAAA,CAAA,MAAA,CAAA,CAAA,IAAC,UAAQ,CAAA,CAAC,KAAA,CAAA,CAAA,EAAS,CAAA,CAAC;iBAExB,GAAA,UAAA,CAAA,KAAA,CAAA,CAAA,EAAA,YAAK,CAAA;AACD,EAAA,MAAA,IAAA,GAAA,MAAA,cAAA,GAAA,OAAA,CAAA;4BACA,CAAA,KAAA,EAAA;;;;;;qBAMC,CAAA,KAAA,EAAA;;;AAKb,IAAA,GAAA,EAAA,CAAA,CAAA,KAAA;AAEQ,IAAA,SAAA,EAAA,0BAA6B;AAC7B,IAAA,OAAA,EAAA;aACA,CAAA,aAAe,CAAA,QAAA,EAAA;kBACf;iBAEQ;AAKK,IAAA,SAAA,EAAA;wBACG,CAAA,KAAA,EAAA;AACA,IAAA,SAAA,EAAA;wBASJ,CAAA,KAAA,EAAA;AACI,IAAA,SAAA,EAAA;wBAGA,CAAA,QAAA,EAAA;AACK,IAAA,SAAA,EAAA;gCAEQ,EAAA;;AAAQ,GAAA,EAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA;AAGhB,IAAA,SAAA,EAAA;AAEO,GAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA;AACC,IAAA,SAAA,EAAA;4BAGR,GAAA,MAAS,GAAA,OAAA,EAAA,KAAA,GAAA,CAAA,GAAA,EAAA,KAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,CAAA,EAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA;;0CAA4B,CAAA,cAKxD,EAAA;AACN,IAAA,SACC,EAAA;AAEJ,GAAA,CAAA,CAAA,CAAA,CAAA,EAAA,mBAAoB,CAAC,IAClB,EAAA;;cAKc,CAAA,GAAK,CAAA,CAAA,CAAA,EAAA,CAAA,KAAA;AACV,IAAA,MAAA,KAAA,GAAA,WACL,CACN,CACT,CAAC;AACN,IAAE,MAAA,IAAA,GAAA,CAAA,CAAA,SAAA,IAAA,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CarCardView, GroundCardView, JobCardView, MovieCardView, ProductCardView, ResumeCardView, StayCardView } from '@admin-layout/client';
|
|
3
|
+
export interface IResultCardProps<T> {
|
|
4
|
+
card: T;
|
|
5
|
+
onOpen?: () => void;
|
|
6
|
+
fullWidth?: boolean;
|
|
7
|
+
highlighted?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const StayCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<StayCardView>) => React.JSX.Element;
|
|
10
|
+
export declare const CarCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<CarCardView>) => React.JSX.Element;
|
|
11
|
+
export declare const GroundCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<GroundCardView>) => React.JSX.Element;
|
|
12
|
+
export declare const ProductCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<ProductCardView>) => React.JSX.Element;
|
|
13
|
+
export declare const MovieCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<MovieCardView>) => React.JSX.Element;
|
|
14
|
+
export declare const JobCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<JobCardView>) => React.JSX.Element;
|
|
15
|
+
export declare const ResumeCard: ({ card, onOpen }: {
|
|
16
|
+
card: ResumeCardView;
|
|
17
|
+
onOpen?: () => void;
|
|
18
|
+
}) => React.JSX.Element;
|
|
19
|
+
//# sourceMappingURL=ResultCards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultCards.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/ResultCards.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EACR,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACf,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAiED,eAAO,MAAM,QAAQ,GAAI,0CAA0C,gBAAgB,CAAC,YAAY,CAAC,sBAuDhG,CAAC;AAIF,eAAO,MAAM,OAAO,GAAI,0CAA0C,gBAAgB,CAAC,WAAW,CAAC,sBAmE9F,CAAC;AAIF,eAAO,MAAM,UAAU,GAAI,0CAA0C,gBAAgB,CAAC,cAAc,CAAC,sBAgGpG,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,0CAA0C,gBAAgB,CAAC,eAAe,CAAC,sBAuDtG,CAAC;AAIF,eAAO,MAAM,SAAS,GAAI,0CAA0C,gBAAgB,CAAC,aAAa,CAAC,sBAyFlG,CAAC;AAkBF,eAAO,MAAM,OAAO,GAAI,0CAA0C,gBAAgB,CAAC,WAAW,CAAC,sBAyD9F,CAAC;AAMF,eAAO,MAAM,UAAU,GAAI,kBAAkB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,sBA4FzF,CAAC"}
|