@websolutespa/bom-llm 0.0.22 → 0.0.24

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @websolutespa/bom-llm
2
2
 
3
+ ## 0.0.24
4
+
5
+ ### Patch Changes
6
+
7
+ - Added: markdown llm_pill click handler
8
+
9
+ ## 0.0.23
10
+
11
+ ### Patch Changes
12
+
13
+ - Modified: cards css
14
+
3
15
  ## 0.0.22
4
16
 
5
17
  ### Patch Changes
@@ -1313,6 +1313,7 @@ llm-embed {
1313
1313
  inset: 0;
1314
1314
  overflow-x: hidden;
1315
1315
  overflow-y: auto;
1316
+ max-width: 100%;
1316
1317
  /*
1317
1318
  &.lenis.lenis-stopped {
1318
1319
  overflow-x: hidden;
@@ -1470,6 +1471,14 @@ llm-embed {
1470
1471
  background: var(--llm-input-background);
1471
1472
  width: 100%;
1472
1473
  }
1474
+ .llm .llm__prompt-input.-speech-supported > .llm__prompt-textarea {
1475
+ padding: 10px 40px;
1476
+ }
1477
+ @media (min-width: 1024px) {
1478
+ .llm .llm__prompt-input.-speech-supported > .llm__prompt-textarea {
1479
+ padding: 18px 40px;
1480
+ }
1481
+ }
1473
1482
  .llm .llm__prompt-textarea {
1474
1483
  appearance: none;
1475
1484
  display: block;
@@ -1507,14 +1516,6 @@ llm-embed {
1507
1516
  max-height: 220px;
1508
1517
  }
1509
1518
  }
1510
- .-speech-supported .llm .llm__prompt-textarea {
1511
- padding: 10px 40px;
1512
- }
1513
- @media (min-width: 1024px) {
1514
- .-speech-supported .llm .llm__prompt-textarea {
1515
- padding: 18px 40px;
1516
- }
1517
- }
1518
1519
  .llm .llm__prompt-speak, .llm .llm__prompt-microphone {
1519
1520
  position: absolute;
1520
1521
  display: flex;
@@ -1816,6 +1817,10 @@ llm-embed {
1816
1817
  height: 320px;
1817
1818
  object-fit: cover;
1818
1819
  }
1820
+ .llm .llm__message--assistant .llm__inner--string .llm__text .llm__text-body .llm__pill {
1821
+ max-width: max(400px, 30vw);
1822
+ margin-bottom: 1em;
1823
+ }
1819
1824
  .llm .llm__text-disclaimer {
1820
1825
  line-height: 1;
1821
1826
  font-family: var(--llm-font-secondary);
@@ -2050,12 +2055,13 @@ llm-embed {
2050
2055
  }
2051
2056
  .llm .llm__cards {
2052
2057
  width: 100%;
2053
- max-width: min(1360px, 75vw + 60px);
2054
2058
  margin: 0 auto 3rem auto;
2059
+ overflow: hidden;
2055
2060
  }
2056
2061
  .llm .llm__cards .swiper {
2057
- position: relative;
2062
+ max-width: min(1360px, 75vw + 60px);
2058
2063
  margin-top: clamp(40px, 40px + (100vw - 375px) / 1545 * 48, 88px);
2064
+ position: relative;
2059
2065
  overflow: visible;
2060
2066
  }
2061
2067
  .llm .llm__cards .swiper-slide {
@@ -2693,14 +2699,15 @@ llm-embed {
2693
2699
  .llm .llm__message--user:last-child {
2694
2700
  margin-bottom: 20vh;
2695
2701
  }
2696
- .llm .llm__inner:empty {
2697
- display: none;
2698
- }
2699
- .llm .llm__inner--eventGroup {
2702
+ .llm .llm__inner {
2700
2703
  width: 100%;
2704
+ margin: 0 clamp(20px, 20px + (100vw - 375px) / 1545 * 90, 110px);
2701
2705
  }
2702
- .llm .llm__inner--tripadvisorGroup {
2703
- width: 100%;
2706
+ .llm .llm__inner--cardGroup {
2707
+ margin: 0;
2708
+ }
2709
+ .llm .llm__inner:empty {
2710
+ display: none;
2704
2711
  }
2705
2712
  .llm .llm__message--user .llm__inner--string {
2706
2713
  margin-left: auto;
@@ -3003,6 +3010,7 @@ llm-embed {
3003
3010
  height: 30px;
3004
3011
  left: 10px;
3005
3012
  bottom: -50px;
3013
+ margin: 0 clamp(20px, 20px + (100vw - 375px) / 1545 * 90, 110px);
3006
3014
  user-select: none;
3007
3015
  pointer-events: none;
3008
3016
  transition: none;
package/dist/umd/index.js CHANGED
@@ -19022,7 +19022,7 @@ ${Object.entries(vars).map(_ref2 => {
19022
19022
  }
19023
19023
  }
19024
19024
  async mockMessage(request, onMessage, onEnd, onChunk) {
19025
- console.log('mockMessage', request);
19025
+ // console.log('mockMessage', request);
19026
19026
  this.abort();
19027
19027
  const aborter = new AbortController();
19028
19028
  const {
@@ -19882,7 +19882,7 @@ ${Object.entries(vars).map(_ref2 => {
19882
19882
  */
19883
19883
  if (scroller_) {
19884
19884
  const userMessages = Array.from(document.querySelectorAll('.llm.-open .llm__message.llm__message--user'));
19885
- console.log(userMessages);
19885
+ // console.log(userMessages);
19886
19886
  if (userMessages.length > 0) {
19887
19887
  const lastUserMessage = userMessages.pop();
19888
19888
  lastUserMessage.scrollIntoView({
@@ -27255,7 +27255,7 @@ void main(void) {
27255
27255
  const textArea = reactExports.useRef(null);
27256
27256
  const app = useLlm(state => state.app);
27257
27257
  const prompt = useLlm(state => state.prompt);
27258
- useLlm(state => state.messages);
27258
+ const messages = useLlm(state => state.messages);
27259
27259
  const streaming = useLlm(state => state.streaming);
27260
27260
  const speakEnabled = useLlm(state => state.speakEnabled);
27261
27261
  const {
@@ -27295,7 +27295,7 @@ void main(void) {
27295
27295
  className: "llm__prompt",
27296
27296
  children: /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
27297
27297
  className: "llm-container",
27298
- children: [/*#__PURE__*/jsxRuntimeExports.jsx("div", {
27298
+ children: [messages.length === 0 && /*#__PURE__*/jsxRuntimeExports.jsx("div", {
27299
27299
  className: "llm__prompt-suggestions",
27300
27300
  children: /*#__PURE__*/jsxRuntimeExports.jsx(Suggestions, {})
27301
27301
  }), /*#__PURE__*/jsxRuntimeExports.jsxs("form", {
@@ -30639,7 +30639,12 @@ void main(void) {
30639
30639
  const Text = props => {
30640
30640
  const label = useLabel();
30641
30641
  const app = useLlm(state => state.app);
30642
+ const {
30643
+ send
30644
+ } = useLlmView(state => state.actions);
30642
30645
  const appDisclaimer = app?.contents.disclaimer;
30646
+ const disclaimer = props.disclaimer ? appDisclaimer || label('llm.disclaimer') : '';
30647
+ const htmlRef = reactExports.useRef(null);
30643
30648
  const html = reactExports.useMemo(() => {
30644
30649
  marked.use({
30645
30650
  renderer: {
@@ -30656,14 +30661,39 @@ void main(void) {
30656
30661
  <img src="${href}"${title ? ` title="${title}"` : ''} alt="${text}" />
30657
30662
  </a>`;
30658
30663
  }
30664
+ /*
30665
+ html(html: string, block?: boolean) {
30666
+ console.log('html', html);
30667
+ return html;
30668
+ },
30669
+ */
30659
30670
  }
30660
30671
  });
30661
30672
  return marked.parse(props.body);
30662
30673
  }, [props.body]);
30663
- const disclaimer = props.disclaimer ? appDisclaimer || label('llm.disclaimer') : '';
30674
+ reactExports.useEffect(() => {
30675
+ let pills = [];
30676
+ if (htmlRef.current) {
30677
+ pills = Array.from(htmlRef.current.querySelectorAll('.llm__pill'));
30678
+ }
30679
+ const pillClickHandler = async event => {
30680
+ if (event.currentTarget) {
30681
+ await send(event.currentTarget.innerText, response => {
30682
+ // console.log('Suggestions.onMessage', response.chunks);
30683
+ }, response => {
30684
+ // console.log('Suggestions.onEnd', response);
30685
+ });
30686
+ }
30687
+ };
30688
+ pills.forEach(x => x.addEventListener('click', pillClickHandler));
30689
+ return () => {
30690
+ pills.forEach(x => x.removeEventListener('click', pillClickHandler));
30691
+ };
30692
+ }, [props.body, send]);
30664
30693
  return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
30665
30694
  className: "llm__text",
30666
30695
  children: [/*#__PURE__*/jsxRuntimeExports.jsx("div", {
30696
+ ref: htmlRef,
30667
30697
  className: "llm__text-body",
30668
30698
  dangerouslySetInnerHTML: {
30669
30699
  __html: html
@@ -31021,7 +31051,7 @@ void main(void) {
31021
31051
  const Thread = () => {
31022
31052
  const messages = useLlm(state => state.messages);
31023
31053
  return /*#__PURE__*/jsxRuntimeExports.jsxs("div", {
31024
- className: "llm__thread llm-container",
31054
+ className: "llm__thread",
31025
31055
  children: [messages.map((message, m) => /*#__PURE__*/jsxRuntimeExports.jsx("div", {
31026
31056
  className: getClassNames('llm__message', `llm__message--${message.role}`, 'llm-row'),
31027
31057
  children: message.chunks.map((chunk, c) => /*#__PURE__*/jsxRuntimeExports.jsx("div", {