@helpai/elements 0.21.0 → 0.21.1

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/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, L as Link, S as ServerConfig, b as SiteConfig, c as StartConversationResponse, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial } from './deployment-CA9yYj8Y.js';
1
+ export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, L as Link, S as ServerConfig, b as SiteConfig, c as StartConversationResponse, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial } from './deployment-B8UxV4b5.js';
2
2
  import 'zod';
3
3
 
4
4
  /**
package/index.mjs CHANGED
@@ -4750,6 +4750,7 @@ function LoadingSpinner({ label }) {
4750
4750
  import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
4751
4751
  var p15 = BRAND.cssPrefix;
4752
4752
  var STICK_THRESHOLD = 120;
4753
+ var INTERACTION_GRACE_MS = 350;
4753
4754
  var DIVIDER_IDLE_MS = 1200;
4754
4755
  function MessageList({
4755
4756
  messagesSig,
@@ -4770,6 +4771,8 @@ function MessageList({
4770
4771
  const hasHydratedRef = useRef5(false);
4771
4772
  const detachedRef = useRef5(false);
4772
4773
  const interactingRef = useRef5(false);
4774
+ const interactionEndedAtRef = useRef5(0);
4775
+ const inInteractionGrace = () => interactingRef.current || performance.now() - interactionEndedAtRef.current < INTERACTION_GRACE_MS;
4773
4776
  const autoPinAtRef = useRef5(0);
4774
4777
  const pinBottom = (el) => {
4775
4778
  autoPinAtRef.current = performance.now();
@@ -4810,7 +4813,7 @@ function MessageList({
4810
4813
  pinBottom(el);
4811
4814
  return;
4812
4815
  }
4813
- if (detachedRef.current || interactingRef.current) return;
4816
+ if (detachedRef.current || inInteractionGrace()) return;
4814
4817
  const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;
4815
4818
  if (distanceFromBottom < STICK_THRESHOLD) pinBottom(el);
4816
4819
  }, [messages.value.length]);
@@ -4820,7 +4823,7 @@ function MessageList({
4820
4823
  const last = messages.value.at(-1);
4821
4824
  if (!last) return;
4822
4825
  const pinIfNear = () => {
4823
- if (detachedRef.current || interactingRef.current) return;
4826
+ if (detachedRef.current || inInteractionGrace()) return;
4824
4827
  const distance = el.scrollHeight - el.scrollTop - el.clientHeight;
4825
4828
  if (distance < STICK_THRESHOLD * 2) pinBottom(el);
4826
4829
  };
@@ -4870,6 +4873,7 @@ function MessageList({
4870
4873
  };
4871
4874
  const endInteraction = () => {
4872
4875
  interactingRef.current = false;
4876
+ interactionEndedAtRef.current = performance.now();
4873
4877
  };
4874
4878
  const onPointerDown = () => {
4875
4879
  interactingRef.current = true;
package/package.json CHANGED
@@ -80,5 +80,5 @@
80
80
  ],
81
81
  "type": "module",
82
82
  "types": "./index.d.ts",
83
- "version": "0.21.0"
83
+ "version": "0.21.1"
84
84
  }
package/schema.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, E as Endpoints, L as Link, P as PAGE_AREA_SUGGESTIONS, g as PageContext, S as ServerConfig, b as SiteConfig, c as StartConversationResponse, U as UserContext, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial, h as assetSchema, i as blocksConfigSchema, j as connectionConfigPartialSchema, k as connectionConfigSchema, l as cssColorSchema, m as cssLengthSchema, n as endpointsSchema, o as linkSchema, p as localeSchema, q as pageContextSchema, s as serverConfigSchema, r as siteConfigSchema, t as startConversationResponseSchema, u as userContextSchema, v as uuid7Schema, w as widgetConfigPartialSchema, x as widgetConfigSchema, y as widgetSettingsPartialSchema, z as widgetSettingsSchema } from './deployment-CA9yYj8Y.js';
1
+ export { A as Asset, B as BlocksConfig, C as ConnectionConfig, a as ConnectionConfigPartial, E as Endpoints, L as Link, P as PAGE_AREA_SUGGESTIONS, g as PageContext, S as ServerConfig, b as SiteConfig, c as StartConversationResponse, U as UserContext, W as WidgetConfig, d as WidgetConfigPartial, e as WidgetSettings, f as WidgetSettingsPartial, h as assetSchema, i as blocksConfigSchema, j as connectionConfigPartialSchema, k as connectionConfigSchema, l as cssColorSchema, m as cssLengthSchema, n as endpointsSchema, o as linkSchema, p as localeSchema, q as pageContextSchema, s as serverConfigSchema, r as siteConfigSchema, t as startConversationResponseSchema, u as userContextSchema, v as uuid7Schema, w as widgetConfigPartialSchema, x as widgetConfigSchema, y as widgetSettingsPartialSchema, z as widgetSettingsSchema } from './deployment-B8UxV4b5.js';
2
2
  import { z } from 'zod';
3
3
 
4
4
  /**
@@ -56,9 +56,9 @@ declare const presentationSchema: z.ZodObject<{
56
56
  inset: z.ZodOptional<z.ZodString>;
57
57
  initialSize: z.ZodDefault<z.ZodEnum<{
58
58
  fullscreen: "fullscreen";
59
- normal: "normal";
60
59
  expanded: "expanded";
61
60
  auto: "auto";
61
+ normal: "normal";
62
62
  }>>;
63
63
  autoSizeBreakpoint: z.ZodDefault<z.ZodNumber>;
64
64
  }, z.core.$loose>>;
@@ -148,9 +148,9 @@ declare const launcherSizeSchema: z.ZodEnum<{
148
148
  }>;
149
149
  type LauncherSize = z.infer<typeof launcherSizeSchema>;
150
150
  declare const calloutShapeSchema: z.ZodEnum<{
151
+ callout: "callout";
151
152
  pill: "pill";
152
153
  bubble: "bubble";
153
- callout: "callout";
154
154
  }>;
155
155
  type CalloutShape = z.infer<typeof calloutShapeSchema>;
156
156
  declare const calloutPositionSchema: z.ZodEnum<{
@@ -162,9 +162,9 @@ type CalloutPosition = z.infer<typeof calloutPositionSchema>;
162
162
  declare const launcherCalloutSchema: z.ZodObject<{
163
163
  text: z.ZodDefault<z.ZodString>;
164
164
  shape: z.ZodDefault<z.ZodEnum<{
165
+ callout: "callout";
165
166
  pill: "pill";
166
167
  bubble: "bubble";
167
- callout: "callout";
168
168
  }>>;
169
169
  position: z.ZodDefault<z.ZodEnum<{
170
170
  auto: "auto";
@@ -195,9 +195,9 @@ declare const launcherOptionsSchema: z.ZodObject<{
195
195
  callout: z.ZodOptional<z.ZodObject<{
196
196
  text: z.ZodDefault<z.ZodString>;
197
197
  shape: z.ZodDefault<z.ZodEnum<{
198
+ callout: "callout";
198
199
  pill: "pill";
199
200
  bubble: "bubble";
200
- callout: "callout";
201
201
  }>>;
202
202
  position: z.ZodDefault<z.ZodEnum<{
203
203
  auto: "auto";
@@ -240,9 +240,9 @@ type LauncherOptions = z.infer<typeof launcherOptionsSchema>;
240
240
 
241
241
  declare const initialSizeSchema: z.ZodEnum<{
242
242
  fullscreen: "fullscreen";
243
- normal: "normal";
244
243
  expanded: "expanded";
245
244
  auto: "auto";
245
+ normal: "normal";
246
246
  }>;
247
247
  declare const resizeOptionsSchema: z.ZodObject<{
248
248
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -269,9 +269,9 @@ declare const sizeOptionsSchema: z.ZodObject<{
269
269
  inset: z.ZodOptional<z.ZodString>;
270
270
  initialSize: z.ZodDefault<z.ZodEnum<{
271
271
  fullscreen: "fullscreen";
272
- normal: "normal";
273
272
  expanded: "expanded";
274
273
  auto: "auto";
274
+ normal: "normal";
275
275
  }>>;
276
276
  autoSizeBreakpoint: z.ZodDefault<z.ZodNumber>;
277
277
  }, z.core.$loose>;
@@ -323,43 +323,43 @@ type FeatureFlags = z.infer<typeof featureFlagsSchema>;
323
323
  */
324
324
 
325
325
  declare const actionNameSchema: z.ZodEnum<{
326
+ close: "close";
326
327
  expand: "expand";
327
328
  fullscreen: "fullscreen";
328
329
  popOut: "popOut";
329
- close: "close";
330
- language: "language";
330
+ clear: "clear";
331
331
  theme: "theme";
332
+ language: "language";
332
333
  textSize: "textSize";
333
334
  history: "history";
334
- clear: "clear";
335
335
  sound: "sound";
336
336
  }>;
337
337
  type ActionName = z.infer<typeof actionNameSchema>;
338
338
  declare const headerActionsSchema: z.ZodArray<z.ZodEnum<{
339
+ close: "close";
339
340
  expand: "expand";
340
341
  fullscreen: "fullscreen";
341
342
  popOut: "popOut";
342
- close: "close";
343
- language: "language";
343
+ clear: "clear";
344
344
  theme: "theme";
345
+ language: "language";
345
346
  textSize: "textSize";
346
347
  history: "history";
347
- clear: "clear";
348
348
  sound: "sound";
349
349
  }>>;
350
350
  type HeaderActions = z.infer<typeof headerActionsSchema>;
351
351
  /** Section wrapper — `actions` list wrapped under `header` in the dashboard form. */
352
352
  declare const headerSchema: z.ZodObject<{
353
353
  actions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
354
+ close: "close";
354
355
  expand: "expand";
355
356
  fullscreen: "fullscreen";
356
357
  popOut: "popOut";
357
- close: "close";
358
- language: "language";
358
+ clear: "clear";
359
359
  theme: "theme";
360
+ language: "language";
360
361
  textSize: "textSize";
361
362
  history: "history";
362
- clear: "clear";
363
363
  sound: "sound";
364
364
  }>>>;
365
365
  }, z.core.$loose>;
@@ -375,33 +375,33 @@ type HeaderOptions = z.infer<typeof headerSchema>;
375
375
  */
376
376
 
377
377
  declare const feedbackEventSchema: z.ZodEnum<{
378
+ voiceStart: "voiceStart";
379
+ voiceStop: "voiceStop";
378
380
  error: "error";
379
381
  messageReceived: "messageReceived";
380
382
  messageSent: "messageSent";
381
- voiceStart: "voiceStart";
382
- voiceStop: "voiceStop";
383
383
  }>;
384
384
  type FeedbackEvent = z.infer<typeof feedbackEventSchema>;
385
385
  declare const soundOptionsSchema: z.ZodObject<{
386
386
  enabled: z.ZodDefault<z.ZodBoolean>;
387
387
  volume: z.ZodDefault<z.ZodNumber>;
388
388
  events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
389
+ voiceStart: "voiceStart";
390
+ voiceStop: "voiceStop";
389
391
  error: "error";
390
392
  messageReceived: "messageReceived";
391
393
  messageSent: "messageSent";
392
- voiceStart: "voiceStart";
393
- voiceStop: "voiceStop";
394
394
  }> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
395
395
  }, z.core.$loose>;
396
396
  type SoundOptions = z.infer<typeof soundOptionsSchema>;
397
397
  declare const hapticsOptionsSchema: z.ZodObject<{
398
398
  enabled: z.ZodDefault<z.ZodBoolean>;
399
399
  events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
400
+ voiceStart: "voiceStart";
401
+ voiceStop: "voiceStop";
400
402
  error: "error";
401
403
  messageReceived: "messageReceived";
402
404
  messageSent: "messageSent";
403
- voiceStart: "voiceStart";
404
- voiceStop: "voiceStop";
405
405
  }> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodArray<z.ZodNumber>]>>>;
406
406
  }, z.core.$loose>;
407
407
  type HapticsOptions = z.infer<typeof hapticsOptionsSchema>;
@@ -410,21 +410,21 @@ declare const feedbackSchema: z.ZodObject<{
410
410
  enabled: z.ZodDefault<z.ZodBoolean>;
411
411
  volume: z.ZodDefault<z.ZodNumber>;
412
412
  events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
413
+ voiceStart: "voiceStart";
414
+ voiceStop: "voiceStop";
413
415
  error: "error";
414
416
  messageReceived: "messageReceived";
415
417
  messageSent: "messageSent";
416
- voiceStart: "voiceStart";
417
- voiceStop: "voiceStop";
418
418
  }> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
419
419
  }, z.core.$loose>>;
420
420
  haptics: z.ZodOptional<z.ZodObject<{
421
421
  enabled: z.ZodDefault<z.ZodBoolean>;
422
422
  events: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
423
+ voiceStart: "voiceStart";
424
+ voiceStop: "voiceStop";
423
425
  error: "error";
424
426
  messageReceived: "messageReceived";
425
427
  messageSent: "messageSent";
426
- voiceStart: "voiceStart";
427
- voiceStop: "voiceStop";
428
428
  }> & z.core.$partial, z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber, z.ZodArray<z.ZodNumber>]>>>;
429
429
  }, z.core.$loose>>;
430
430
  }, z.core.$loose>;
@@ -544,16 +544,16 @@ type FooterOptions = z.infer<typeof footerSchema>;
544
544
 
545
545
  declare const fieldTypeSchema: z.ZodEnum<{
546
546
  number: "number";
547
+ select: "select";
548
+ textarea: "textarea";
549
+ time: "time";
547
550
  text: "text";
551
+ checkbox: "checkbox";
552
+ radio: "radio";
548
553
  url: "url";
549
554
  email: "email";
550
555
  tel: "tel";
551
556
  date: "date";
552
- time: "time";
553
- textarea: "textarea";
554
- select: "select";
555
- radio: "radio";
556
- checkbox: "checkbox";
557
557
  multiselect: "multiselect";
558
558
  }>;
559
559
  type FieldType = z.infer<typeof fieldTypeSchema>;
@@ -578,16 +578,16 @@ declare const formFieldSchema: z.ZodObject<{
578
578
  label: z.ZodString;
579
579
  type: z.ZodEnum<{
580
580
  number: "number";
581
+ select: "select";
582
+ textarea: "textarea";
583
+ time: "time";
581
584
  text: "text";
585
+ checkbox: "checkbox";
586
+ radio: "radio";
582
587
  url: "url";
583
588
  email: "email";
584
589
  tel: "tel";
585
590
  date: "date";
586
- time: "time";
587
- textarea: "textarea";
588
- select: "select";
589
- radio: "radio";
590
- checkbox: "checkbox";
591
591
  multiselect: "multiselect";
592
592
  }>;
593
593
  placeholder: z.ZodOptional<z.ZodString>;
@@ -638,16 +638,16 @@ declare const formDefSchema: z.ZodObject<{
638
638
  label: z.ZodString;
639
639
  type: z.ZodEnum<{
640
640
  number: "number";
641
+ select: "select";
642
+ textarea: "textarea";
643
+ time: "time";
641
644
  text: "text";
645
+ checkbox: "checkbox";
646
+ radio: "radio";
642
647
  url: "url";
643
648
  email: "email";
644
649
  tel: "tel";
645
650
  date: "date";
646
- time: "time";
647
- textarea: "textarea";
648
- select: "select";
649
- radio: "radio";
650
- checkbox: "checkbox";
651
651
  multiselect: "multiselect";
652
652
  }>;
653
653
  placeholder: z.ZodOptional<z.ZodString>;
@@ -696,16 +696,16 @@ declare const formsSchema: z.ZodArray<z.ZodObject<{
696
696
  label: z.ZodString;
697
697
  type: z.ZodEnum<{
698
698
  number: "number";
699
+ select: "select";
700
+ textarea: "textarea";
701
+ time: "time";
699
702
  text: "text";
703
+ checkbox: "checkbox";
704
+ radio: "radio";
700
705
  url: "url";
701
706
  email: "email";
702
707
  tel: "tel";
703
708
  date: "date";
704
- time: "time";
705
- textarea: "textarea";
706
- select: "select";
707
- radio: "radio";
708
- checkbox: "checkbox";
709
709
  multiselect: "multiselect";
710
710
  }>;
711
711
  placeholder: z.ZodOptional<z.ZodString>;
@@ -777,18 +777,18 @@ type I18nOptions = z.infer<typeof i18nSchema>;
777
777
  */
778
778
 
779
779
  declare const moduleLayoutSchema: z.ZodEnum<{
780
+ home: "home";
780
781
  chat: "chat";
781
782
  help: "help";
782
- home: "home";
783
783
  news: "news";
784
784
  }>;
785
785
  type ModuleLayout = z.infer<typeof moduleLayoutSchema>;
786
786
  declare const moduleSchema: z.ZodObject<{
787
787
  label: z.ZodString;
788
788
  layout: z.ZodEnum<{
789
+ home: "home";
789
790
  chat: "chat";
790
791
  help: "help";
791
- home: "home";
792
792
  news: "news";
793
793
  }>;
794
794
  contentTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -814,9 +814,9 @@ type ModuleOptions = z.infer<typeof moduleSchema>;
814
814
  declare const modulesSchema: z.ZodArray<z.ZodObject<{
815
815
  label: z.ZodString;
816
816
  layout: z.ZodEnum<{
817
+ home: "home";
817
818
  chat: "chat";
818
819
  help: "help";
819
- home: "home";
820
820
  news: "news";
821
821
  }>;
822
822
  contentTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
package/web-component.mjs CHANGED
@@ -4805,6 +4805,7 @@ function LoadingSpinner({ label }) {
4805
4805
  import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
4806
4806
  var p15 = BRAND.cssPrefix;
4807
4807
  var STICK_THRESHOLD = 120;
4808
+ var INTERACTION_GRACE_MS = 350;
4808
4809
  var DIVIDER_IDLE_MS = 1200;
4809
4810
  function MessageList({
4810
4811
  messagesSig,
@@ -4825,6 +4826,8 @@ function MessageList({
4825
4826
  const hasHydratedRef = useRef5(false);
4826
4827
  const detachedRef = useRef5(false);
4827
4828
  const interactingRef = useRef5(false);
4829
+ const interactionEndedAtRef = useRef5(0);
4830
+ const inInteractionGrace = () => interactingRef.current || performance.now() - interactionEndedAtRef.current < INTERACTION_GRACE_MS;
4828
4831
  const autoPinAtRef = useRef5(0);
4829
4832
  const pinBottom = (el) => {
4830
4833
  autoPinAtRef.current = performance.now();
@@ -4865,7 +4868,7 @@ function MessageList({
4865
4868
  pinBottom(el);
4866
4869
  return;
4867
4870
  }
4868
- if (detachedRef.current || interactingRef.current) return;
4871
+ if (detachedRef.current || inInteractionGrace()) return;
4869
4872
  const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;
4870
4873
  if (distanceFromBottom < STICK_THRESHOLD) pinBottom(el);
4871
4874
  }, [messages.value.length]);
@@ -4875,7 +4878,7 @@ function MessageList({
4875
4878
  const last = messages.value.at(-1);
4876
4879
  if (!last) return;
4877
4880
  const pinIfNear = () => {
4878
- if (detachedRef.current || interactingRef.current) return;
4881
+ if (detachedRef.current || inInteractionGrace()) return;
4879
4882
  const distance = el.scrollHeight - el.scrollTop - el.clientHeight;
4880
4883
  if (distance < STICK_THRESHOLD * 2) pinBottom(el);
4881
4884
  };
@@ -4925,6 +4928,7 @@ function MessageList({
4925
4928
  };
4926
4929
  const endInteraction = () => {
4927
4930
  interactingRef.current = false;
4931
+ interactionEndedAtRef.current = performance.now();
4928
4932
  };
4929
4933
  const onPointerDown = () => {
4930
4934
  interactingRef.current = true;