@aparte/svelte 0.7.1 → 0.8.0

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/index.js CHANGED
@@ -1,1335 +1,14 @@
1
- import { SvelteComponent, init, safe_not_equal, compute_slots, ensure_array_like, create_slot, detach, transition_out, transition_in, group_outros, check_outros, update_keyed_each, outro_and_destroy_block, set_custom_element_data, update_slot_base, get_all_dirty_from_scope, get_slot_changes, attr, toggle_class, insert, append, listen, element, space, binding_callbacks, empty, noop, set_style } from "svelte/internal";
2
- import "svelte/internal/disclose-version";
3
- import { createEventDispatcher, onMount, onDestroy, tick } from "svelte";
4
- import { AparteChatHost, isAwaitingReply, AparteClient, ConversationManager, AparteConfig, DEFAULT_UI_EVENTS, applyElementProps } from "@aparte/core";
5
- import { writable, derived } from "svelte/store";
6
- const get_toolbar_slot_changes = (dirty) => ({});
7
- const get_toolbar_slot_context = (ctx) => ({});
8
- const get_composer_slot_changes = (dirty) => ({});
9
- const get_composer_slot_context = (ctx) => ({});
10
- const get_above_composer_slot_changes = (dirty) => ({});
11
- const get_above_composer_slot_context = (ctx) => ({});
12
- function get_each_context(ctx, list, i) {
13
- const child_ctx = ctx.slice();
14
- child_ctx[52] = list[i];
15
- return child_ctx;
16
- }
17
- const get_bubble_slot_changes = (dirty) => ({
18
- message: dirty[0] & /*internalMessages*/
19
- 32
20
- });
21
- const get_bubble_slot_context = (ctx) => ({ message: (
22
- /*m*/
23
- ctx[52]
24
- ) });
25
- const get_empty_state_slot_changes = (dirty) => ({});
26
- const get_empty_state_slot_context = (ctx) => ({});
27
- function create_if_block_3(ctx) {
28
- let current;
29
- const empty_state_slot_template = (
30
- /*#slots*/
31
- ctx[44]["empty-state"]
32
- );
33
- const empty_state_slot = create_slot(
34
- empty_state_slot_template,
35
- ctx,
36
- /*$$scope*/
37
- ctx[43],
38
- get_empty_state_slot_context
39
- );
40
- return {
41
- c() {
42
- if (empty_state_slot) empty_state_slot.c();
43
- },
44
- m(target, anchor) {
45
- if (empty_state_slot) {
46
- empty_state_slot.m(target, anchor);
47
- }
48
- current = true;
49
- },
50
- p(ctx2, dirty) {
51
- if (empty_state_slot) {
52
- if (empty_state_slot.p && (!current || dirty[1] & /*$$scope*/
53
- 4096)) {
54
- update_slot_base(
55
- empty_state_slot,
56
- empty_state_slot_template,
57
- ctx2,
58
- /*$$scope*/
59
- ctx2[43],
60
- !current ? get_all_dirty_from_scope(
61
- /*$$scope*/
62
- ctx2[43]
63
- ) : get_slot_changes(
64
- empty_state_slot_template,
65
- /*$$scope*/
66
- ctx2[43],
67
- dirty,
68
- get_empty_state_slot_changes
69
- ),
70
- get_empty_state_slot_context
71
- );
72
- }
73
- }
74
- },
75
- i(local) {
76
- if (current) return;
77
- transition_in(empty_state_slot, local);
78
- current = true;
79
- },
80
- o(local) {
81
- transition_out(empty_state_slot, local);
82
- current = false;
83
- },
84
- d(detaching) {
85
- if (empty_state_slot) empty_state_slot.d(detaching);
86
- }
87
- };
88
- }
89
- function fallback_block_1(ctx) {
90
- let aparte_chat_bubble;
91
- let aparte_chat_bubble_message_id_value;
92
- let aparte_chat_bubble_data_role_value;
93
- let aparte_chat_bubble_timestamp_value;
94
- let aparte_chat_bubble_content_value;
95
- let aparte_chat_bubble_streaming_value;
96
- return {
97
- c() {
98
- aparte_chat_bubble = element("aparte-chat-bubble");
99
- set_custom_element_data(aparte_chat_bubble, "message-id", aparte_chat_bubble_message_id_value = /*m*/
100
- ctx[52].id);
101
- set_custom_element_data(aparte_chat_bubble, "data-role", aparte_chat_bubble_data_role_value = /*m*/
102
- ctx[52].role);
103
- set_custom_element_data(aparte_chat_bubble, "timestamp", aparte_chat_bubble_timestamp_value = /*m*/
104
- ctx[52].timestamp);
105
- set_custom_element_data(aparte_chat_bubble, "content", aparte_chat_bubble_content_value = /*m*/
106
- ctx[52].content);
107
- set_custom_element_data(aparte_chat_bubble, "streaming", aparte_chat_bubble_streaming_value = isAwaitingReply(
108
- /*m*/
109
- ctx[52]
110
- ) ? "" : null);
111
- },
112
- m(target, anchor) {
113
- insert(target, aparte_chat_bubble, anchor);
114
- },
115
- p(ctx2, dirty) {
116
- if (dirty[0] & /*internalMessages*/
117
- 32 && aparte_chat_bubble_message_id_value !== (aparte_chat_bubble_message_id_value = /*m*/
118
- ctx2[52].id)) {
119
- set_custom_element_data(aparte_chat_bubble, "message-id", aparte_chat_bubble_message_id_value);
120
- }
121
- if (dirty[0] & /*internalMessages*/
122
- 32 && aparte_chat_bubble_data_role_value !== (aparte_chat_bubble_data_role_value = /*m*/
123
- ctx2[52].role)) {
124
- set_custom_element_data(aparte_chat_bubble, "data-role", aparte_chat_bubble_data_role_value);
125
- }
126
- if (dirty[0] & /*internalMessages*/
127
- 32 && aparte_chat_bubble_timestamp_value !== (aparte_chat_bubble_timestamp_value = /*m*/
128
- ctx2[52].timestamp)) {
129
- set_custom_element_data(aparte_chat_bubble, "timestamp", aparte_chat_bubble_timestamp_value);
130
- }
131
- if (dirty[0] & /*internalMessages*/
132
- 32 && aparte_chat_bubble_content_value !== (aparte_chat_bubble_content_value = /*m*/
133
- ctx2[52].content)) {
134
- set_custom_element_data(aparte_chat_bubble, "content", aparte_chat_bubble_content_value);
135
- }
136
- if (dirty[0] & /*internalMessages*/
137
- 32 && aparte_chat_bubble_streaming_value !== (aparte_chat_bubble_streaming_value = isAwaitingReply(
138
- /*m*/
139
- ctx2[52]
140
- ) ? "" : null)) {
141
- set_custom_element_data(aparte_chat_bubble, "streaming", aparte_chat_bubble_streaming_value);
142
- }
143
- },
144
- d(detaching) {
145
- if (detaching) {
146
- detach(aparte_chat_bubble);
147
- }
148
- }
149
- };
150
- }
151
- function create_each_block(key_1, ctx) {
152
- let first;
153
- let current;
154
- const bubble_slot_template = (
155
- /*#slots*/
156
- ctx[44].bubble
157
- );
158
- const bubble_slot = create_slot(
159
- bubble_slot_template,
160
- ctx,
161
- /*$$scope*/
162
- ctx[43],
163
- get_bubble_slot_context
164
- );
165
- const bubble_slot_or_fallback = bubble_slot || fallback_block_1(ctx);
166
- return {
167
- key: key_1,
168
- first: null,
169
- c() {
170
- first = empty();
171
- if (bubble_slot_or_fallback) bubble_slot_or_fallback.c();
172
- this.first = first;
173
- },
174
- m(target, anchor) {
175
- insert(target, first, anchor);
176
- if (bubble_slot_or_fallback) {
177
- bubble_slot_or_fallback.m(target, anchor);
178
- }
179
- current = true;
180
- },
181
- p(new_ctx, dirty) {
182
- ctx = new_ctx;
183
- if (bubble_slot) {
184
- if (bubble_slot.p && (!current || dirty[0] & /*internalMessages*/
185
- 32 | dirty[1] & /*$$scope*/
186
- 4096)) {
187
- update_slot_base(
188
- bubble_slot,
189
- bubble_slot_template,
190
- ctx,
191
- /*$$scope*/
192
- ctx[43],
193
- !current ? get_all_dirty_from_scope(
194
- /*$$scope*/
195
- ctx[43]
196
- ) : get_slot_changes(
197
- bubble_slot_template,
198
- /*$$scope*/
199
- ctx[43],
200
- dirty,
201
- get_bubble_slot_changes
202
- ),
203
- get_bubble_slot_context
204
- );
205
- }
206
- } else {
207
- if (bubble_slot_or_fallback && bubble_slot_or_fallback.p && (!current || dirty[0] & /*internalMessages*/
208
- 32)) {
209
- bubble_slot_or_fallback.p(ctx, !current ? [-1, -1] : dirty);
210
- }
211
- }
212
- },
213
- i(local) {
214
- if (current) return;
215
- transition_in(bubble_slot_or_fallback, local);
216
- current = true;
217
- },
218
- o(local) {
219
- transition_out(bubble_slot_or_fallback, local);
220
- current = false;
221
- },
222
- d(detaching) {
223
- if (detaching) {
224
- detach(first);
225
- }
226
- if (bubble_slot_or_fallback) bubble_slot_or_fallback.d(detaching);
227
- }
228
- };
229
- }
230
- function create_if_block_2(ctx) {
231
- let aparte_composer_attachments;
232
- return {
233
- c() {
234
- aparte_composer_attachments = element("aparte-composer-attachments");
235
- },
236
- m(target, anchor) {
237
- insert(target, aparte_composer_attachments, anchor);
238
- },
239
- d(detaching) {
240
- if (detaching) {
241
- detach(aparte_composer_attachments);
242
- }
243
- }
244
- };
245
- }
246
- function create_if_block_1(ctx) {
247
- let aparte_composer_add_attachment;
248
- return {
249
- c() {
250
- aparte_composer_add_attachment = element("aparte-composer-add-attachment");
251
- },
252
- m(target, anchor) {
253
- insert(target, aparte_composer_add_attachment, anchor);
254
- },
255
- d(detaching) {
256
- if (detaching) {
257
- detach(aparte_composer_add_attachment);
258
- }
259
- }
260
- };
261
- }
262
- function create_if_block(ctx) {
263
- let aparte_composer_toolbar;
264
- let current;
265
- const toolbar_slot_template = (
266
- /*#slots*/
267
- ctx[44].toolbar
268
- );
269
- const toolbar_slot = create_slot(
270
- toolbar_slot_template,
271
- ctx,
272
- /*$$scope*/
273
- ctx[43],
274
- get_toolbar_slot_context
275
- );
276
- return {
277
- c() {
278
- aparte_composer_toolbar = element("aparte-composer-toolbar");
279
- if (toolbar_slot) toolbar_slot.c();
280
- },
281
- m(target, anchor) {
282
- insert(target, aparte_composer_toolbar, anchor);
283
- if (toolbar_slot) {
284
- toolbar_slot.m(aparte_composer_toolbar, null);
285
- }
286
- current = true;
287
- },
288
- p(ctx2, dirty) {
289
- if (toolbar_slot) {
290
- if (toolbar_slot.p && (!current || dirty[1] & /*$$scope*/
291
- 4096)) {
292
- update_slot_base(
293
- toolbar_slot,
294
- toolbar_slot_template,
295
- ctx2,
296
- /*$$scope*/
297
- ctx2[43],
298
- !current ? get_all_dirty_from_scope(
299
- /*$$scope*/
300
- ctx2[43]
301
- ) : get_slot_changes(
302
- toolbar_slot_template,
303
- /*$$scope*/
304
- ctx2[43],
305
- dirty,
306
- get_toolbar_slot_changes
307
- ),
308
- get_toolbar_slot_context
309
- );
310
- }
311
- }
312
- },
313
- i(local) {
314
- if (current) return;
315
- transition_in(toolbar_slot, local);
316
- current = true;
317
- },
318
- o(local) {
319
- transition_out(toolbar_slot, local);
320
- current = false;
321
- },
322
- d(detaching) {
323
- if (detaching) {
324
- detach(aparte_composer_toolbar);
325
- }
326
- if (toolbar_slot) toolbar_slot.d(detaching);
327
- }
328
- };
329
- }
330
- function fallback_block(ctx) {
331
- let div1;
332
- let t0;
333
- let div0;
334
- let t1;
335
- let aparte_composer_input;
336
- let t2;
337
- let aparte_composer_send;
338
- let t3;
339
- let current;
340
- let if_block0 = (
341
- /*attachments*/
342
- ctx[2] && create_if_block_2()
343
- );
344
- let if_block1 = (
345
- /*attachments*/
346
- ctx[2] && create_if_block_1()
347
- );
348
- let if_block2 = (
349
- /*$$slots*/
350
- ctx[10].toolbar && create_if_block(ctx)
351
- );
352
- return {
353
- c() {
354
- div1 = element("div");
355
- if (if_block0) if_block0.c();
356
- t0 = space();
357
- div0 = element("div");
358
- if (if_block1) if_block1.c();
359
- t1 = space();
360
- aparte_composer_input = element("aparte-composer-input");
361
- t2 = space();
362
- aparte_composer_send = element("aparte-composer-send");
363
- t3 = space();
364
- if (if_block2) if_block2.c();
365
- attr(div0, "class", "aparte-composer-row");
366
- attr(div1, "class", "aparte-composer-shell");
367
- },
368
- m(target, anchor) {
369
- insert(target, div1, anchor);
370
- if (if_block0) if_block0.m(div1, null);
371
- append(div1, t0);
372
- append(div1, div0);
373
- if (if_block1) if_block1.m(div0, null);
374
- append(div0, t1);
375
- append(div0, aparte_composer_input);
376
- append(div0, t2);
377
- append(div0, aparte_composer_send);
378
- append(div1, t3);
379
- if (if_block2) if_block2.m(div1, null);
380
- current = true;
381
- },
382
- p(ctx2, dirty) {
383
- if (
384
- /*attachments*/
385
- ctx2[2]
386
- ) {
387
- if (if_block0) ;
388
- else {
389
- if_block0 = create_if_block_2();
390
- if_block0.c();
391
- if_block0.m(div1, t0);
392
- }
393
- } else if (if_block0) {
394
- if_block0.d(1);
395
- if_block0 = null;
396
- }
397
- if (
398
- /*attachments*/
399
- ctx2[2]
400
- ) {
401
- if (if_block1) ;
402
- else {
403
- if_block1 = create_if_block_1();
404
- if_block1.c();
405
- if_block1.m(div0, t1);
406
- }
407
- } else if (if_block1) {
408
- if_block1.d(1);
409
- if_block1 = null;
410
- }
411
- if (
412
- /*$$slots*/
413
- ctx2[10].toolbar
414
- ) {
415
- if (if_block2) {
416
- if_block2.p(ctx2, dirty);
417
- if (dirty[0] & /*$$slots*/
418
- 1024) {
419
- transition_in(if_block2, 1);
420
- }
421
- } else {
422
- if_block2 = create_if_block(ctx2);
423
- if_block2.c();
424
- transition_in(if_block2, 1);
425
- if_block2.m(div1, null);
426
- }
427
- } else if (if_block2) {
428
- group_outros();
429
- transition_out(if_block2, 1, 1, () => {
430
- if_block2 = null;
431
- });
432
- check_outros();
433
- }
434
- },
435
- i(local) {
436
- if (current) return;
437
- transition_in(if_block2);
438
- current = true;
439
- },
440
- o(local) {
441
- transition_out(if_block2);
442
- current = false;
443
- },
444
- d(detaching) {
445
- if (detaching) {
446
- detach(div1);
447
- }
448
- if (if_block0) if_block0.d();
449
- if (if_block1) if_block1.d();
450
- if (if_block2) if_block2.d();
451
- }
452
- };
453
- }
454
- function create_fragment$1(ctx) {
455
- let div;
456
- let aparte_chat_viewport;
457
- let t0;
458
- let each_blocks = [];
459
- let each_1_lookup = /* @__PURE__ */ new Map();
460
- let t1;
461
- let aparte_chat_status;
462
- let aparte_chat_status_visible_value;
463
- let t2;
464
- let t3;
465
- let aparte_composer;
466
- let div_data_aparte_empty_value;
467
- let current;
468
- let mounted;
469
- let dispose;
470
- let if_block = (
471
- /*internalMessages*/
472
- ctx[5].length === 0 && create_if_block_3(ctx)
473
- );
474
- let each_value = ensure_array_like(
475
- /*internalMessages*/
476
- ctx[5]
477
- );
478
- const get_key = (ctx2) => (
479
- /*m*/
480
- ctx2[52].id
481
- );
482
- for (let i = 0; i < each_value.length; i += 1) {
483
- let child_ctx = get_each_context(ctx, each_value, i);
484
- let key = get_key(child_ctx);
485
- each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
486
- }
487
- const above_composer_slot_template = (
488
- /*#slots*/
489
- ctx[44]["above-composer"]
490
- );
491
- const above_composer_slot = create_slot(
492
- above_composer_slot_template,
493
- ctx,
494
- /*$$scope*/
495
- ctx[43],
496
- get_above_composer_slot_context
497
- );
498
- const composer_slot_template = (
499
- /*#slots*/
500
- ctx[44].composer
501
- );
502
- const composer_slot = create_slot(
503
- composer_slot_template,
504
- ctx,
505
- /*$$scope*/
506
- ctx[43],
507
- get_composer_slot_context
508
- );
509
- const composer_slot_or_fallback = composer_slot || fallback_block(ctx);
510
- return {
511
- c() {
512
- div = element("div");
513
- aparte_chat_viewport = element("aparte-chat-viewport");
514
- if (if_block) if_block.c();
515
- t0 = space();
516
- for (let i = 0; i < each_blocks.length; i += 1) {
517
- each_blocks[i].c();
518
- }
519
- t1 = space();
520
- aparte_chat_status = element("aparte-chat-status");
521
- t2 = space();
522
- if (above_composer_slot) above_composer_slot.c();
523
- t3 = space();
524
- aparte_composer = element("aparte-composer");
525
- if (composer_slot_or_fallback) composer_slot_or_fallback.c();
526
- set_custom_element_data(aparte_chat_status, "visible", aparte_chat_status_visible_value = /*typingActive*/
527
- ctx[8] ? "" : null);
528
- set_custom_element_data(
529
- aparte_chat_status,
530
- "text",
531
- /*typingText*/
532
- ctx[0]
533
- );
534
- set_custom_element_data(aparte_chat_viewport, "framework-managed", "");
535
- attr(div, "class", "aparte-chat-container");
536
- attr(div, "data-aparte-chat", "");
537
- attr(div, "data-aparte-empty", div_data_aparte_empty_value = /*centerWhenEmpty*/
538
- ctx[1] && /*internalMessages*/
539
- ctx[5].length === 0 ? "" : null);
540
- attr(
541
- div,
542
- "id",
543
- /*hostId*/
544
- ctx[3]
545
- );
546
- toggle_class(
547
- div,
548
- "aparte-chat-container--auto-center",
549
- /*centerWhenEmpty*/
550
- ctx[1]
551
- );
552
- },
553
- m(target, anchor) {
554
- insert(target, div, anchor);
555
- append(div, aparte_chat_viewport);
556
- if (if_block) if_block.m(aparte_chat_viewport, null);
557
- append(aparte_chat_viewport, t0);
558
- for (let i = 0; i < each_blocks.length; i += 1) {
559
- if (each_blocks[i]) {
560
- each_blocks[i].m(aparte_chat_viewport, null);
561
- }
562
- }
563
- append(aparte_chat_viewport, t1);
564
- append(aparte_chat_viewport, aparte_chat_status);
565
- ctx[45](aparte_chat_viewport);
566
- append(div, t2);
567
- if (above_composer_slot) {
568
- above_composer_slot.m(div, null);
569
- }
570
- append(div, t3);
571
- append(div, aparte_composer);
572
- if (composer_slot_or_fallback) {
573
- composer_slot_or_fallback.m(aparte_composer, null);
574
- }
575
- ctx[46](aparte_composer);
576
- ctx[47](div);
577
- current = true;
578
- if (!mounted) {
579
- dispose = listen(
580
- aparte_composer,
581
- "aparte-send",
582
- /*handleSend*/
583
- ctx[9]
584
- );
585
- mounted = true;
586
- }
587
- },
588
- p(ctx2, dirty) {
589
- if (
590
- /*internalMessages*/
591
- ctx2[5].length === 0
592
- ) {
593
- if (if_block) {
594
- if_block.p(ctx2, dirty);
595
- if (dirty[0] & /*internalMessages*/
596
- 32) {
597
- transition_in(if_block, 1);
598
- }
599
- } else {
600
- if_block = create_if_block_3(ctx2);
601
- if_block.c();
602
- transition_in(if_block, 1);
603
- if_block.m(aparte_chat_viewport, t0);
604
- }
605
- } else if (if_block) {
606
- group_outros();
607
- transition_out(if_block, 1, 1, () => {
608
- if_block = null;
609
- });
610
- check_outros();
611
- }
612
- if (dirty[0] & /*internalMessages*/
613
- 32 | dirty[1] & /*$$scope*/
614
- 4096) {
615
- each_value = ensure_array_like(
616
- /*internalMessages*/
617
- ctx2[5]
618
- );
619
- group_outros();
620
- each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, aparte_chat_viewport, outro_and_destroy_block, create_each_block, t1, get_each_context);
621
- check_outros();
622
- }
623
- if (!current || dirty[0] & /*typingActive*/
624
- 256 && aparte_chat_status_visible_value !== (aparte_chat_status_visible_value = /*typingActive*/
625
- ctx2[8] ? "" : null)) {
626
- set_custom_element_data(aparte_chat_status, "visible", aparte_chat_status_visible_value);
627
- }
628
- if (!current || dirty[0] & /*typingText*/
629
- 1) {
630
- set_custom_element_data(
631
- aparte_chat_status,
632
- "text",
633
- /*typingText*/
634
- ctx2[0]
635
- );
636
- }
637
- if (above_composer_slot) {
638
- if (above_composer_slot.p && (!current || dirty[1] & /*$$scope*/
639
- 4096)) {
640
- update_slot_base(
641
- above_composer_slot,
642
- above_composer_slot_template,
643
- ctx2,
644
- /*$$scope*/
645
- ctx2[43],
646
- !current ? get_all_dirty_from_scope(
647
- /*$$scope*/
648
- ctx2[43]
649
- ) : get_slot_changes(
650
- above_composer_slot_template,
651
- /*$$scope*/
652
- ctx2[43],
653
- dirty,
654
- get_above_composer_slot_changes
655
- ),
656
- get_above_composer_slot_context
657
- );
658
- }
659
- }
660
- if (composer_slot) {
661
- if (composer_slot.p && (!current || dirty[1] & /*$$scope*/
662
- 4096)) {
663
- update_slot_base(
664
- composer_slot,
665
- composer_slot_template,
666
- ctx2,
667
- /*$$scope*/
668
- ctx2[43],
669
- !current ? get_all_dirty_from_scope(
670
- /*$$scope*/
671
- ctx2[43]
672
- ) : get_slot_changes(
673
- composer_slot_template,
674
- /*$$scope*/
675
- ctx2[43],
676
- dirty,
677
- get_composer_slot_changes
678
- ),
679
- get_composer_slot_context
680
- );
681
- }
682
- } else {
683
- if (composer_slot_or_fallback && composer_slot_or_fallback.p && (!current || dirty[0] & /*$$slots, attachments*/
684
- 1028 | dirty[1] & /*$$scope*/
685
- 4096)) {
686
- composer_slot_or_fallback.p(ctx2, !current ? [-1, -1] : dirty);
687
- }
688
- }
689
- if (!current || dirty[0] & /*centerWhenEmpty, internalMessages*/
690
- 34 && div_data_aparte_empty_value !== (div_data_aparte_empty_value = /*centerWhenEmpty*/
691
- ctx2[1] && /*internalMessages*/
692
- ctx2[5].length === 0 ? "" : null)) {
693
- attr(div, "data-aparte-empty", div_data_aparte_empty_value);
694
- }
695
- if (!current || dirty[0] & /*hostId*/
696
- 8) {
697
- attr(
698
- div,
699
- "id",
700
- /*hostId*/
701
- ctx2[3]
702
- );
703
- }
704
- if (!current || dirty[0] & /*centerWhenEmpty*/
705
- 2) {
706
- toggle_class(
707
- div,
708
- "aparte-chat-container--auto-center",
709
- /*centerWhenEmpty*/
710
- ctx2[1]
711
- );
712
- }
713
- },
714
- i(local) {
715
- if (current) return;
716
- transition_in(if_block);
717
- for (let i = 0; i < each_value.length; i += 1) {
718
- transition_in(each_blocks[i]);
719
- }
720
- transition_in(above_composer_slot, local);
721
- transition_in(composer_slot_or_fallback, local);
722
- current = true;
723
- },
724
- o(local) {
725
- transition_out(if_block);
726
- for (let i = 0; i < each_blocks.length; i += 1) {
727
- transition_out(each_blocks[i]);
728
- }
729
- transition_out(above_composer_slot, local);
730
- transition_out(composer_slot_or_fallback, local);
731
- current = false;
732
- },
733
- d(detaching) {
734
- if (detaching) {
735
- detach(div);
736
- }
737
- if (if_block) if_block.d();
738
- for (let i = 0; i < each_blocks.length; i += 1) {
739
- each_blocks[i].d();
740
- }
741
- ctx[45](null);
742
- if (above_composer_slot) above_composer_slot.d(detaching);
743
- if (composer_slot_or_fallback) composer_slot_or_fallback.d(detaching);
744
- ctx[46](null);
745
- ctx[47](null);
746
- mounted = false;
747
- dispose();
748
- }
749
- };
750
- }
751
- function toggleAttr(el, name, on, value) {
752
- if (on) el.setAttribute(name, value);
753
- else el.removeAttribute(name);
754
- }
755
- function instance$1($$self, $$props, $$invalidate) {
756
- let { $$slots: slots = {}, $$scope } = $$props;
757
- const $$slots = compute_slots(slots);
758
- let { messages = [] } = $$props;
759
- let { placeholder = "Type a message..." } = $$props;
760
- let { disabled = false } = $$props;
761
- let { isTyping = false } = $$props;
762
- let { typingText = "Assistant is thinking..." } = $$props;
763
- let { submitOnEnter = true } = $$props;
764
- let { layoutTransitionMs = 0 } = $$props;
765
- let { centerWhenEmpty = false } = $$props;
766
- let { attachments = false } = $$props;
767
- let { conversationId = null } = $$props;
768
- let { config = void 0 } = $$props;
769
- const dispatch = createEventDispatcher();
770
- let hostId = "";
771
- let rootRef;
772
- let viewportRef;
773
- let composerRef;
774
- let internalMessages = [...messages];
775
- let typingActive = isTyping;
776
- let host = null;
777
- let teardown = null;
778
- let lastProp = messages;
779
- let lastTyping = isTyping;
780
- let lastConv = conversationId;
781
- function handleSend(event) {
782
- viewportRef?.requestSmoothScroll?.();
783
- dispatch("messageSent", event.detail);
784
- }
785
- function handleAction(event) {
786
- dispatch("action", event.detail);
787
- }
788
- onMount(() => {
789
- $$invalidate(3, hostId = `aparte-chat-${crypto.randomUUID()}`);
790
- if (rootRef) $$invalidate(6, rootRef.id = hostId, rootRef);
791
- const binding = {
792
- hostId,
793
- host: rootRef,
794
- viewport: viewportRef,
795
- getMessages: () => internalMessages,
796
- setMessages: (m) => {
797
- $$invalidate(5, internalMessages = m);
798
- },
799
- onMessagesChange: (m) => dispatch("messagesChange", m),
800
- onMessageAppended: (m) => dispatch("messageAppended", m),
801
- onTypingChange: (t) => {
802
- $$invalidate(8, typingActive = t);
803
- dispatch("typingChange", t);
804
- },
805
- onStreamingChange: () => {
806
- },
807
- afterRender: (cb) => {
808
- void tick().then(cb);
809
- },
810
- resetComposer: () => composerRef?.reset?.()
811
- };
812
- $$invalidate(39, host = new AparteChatHost(
813
- binding,
814
- {
815
- layoutTransitionMs,
816
- conversationId: conversationId ?? null,
817
- onConversationCreated: (id) => dispatch("conversationCreated", id),
818
- config
819
- }
820
- ));
821
- teardown = host.bind();
822
- host.syncBubbles();
823
- rootRef?.addEventListener("aparte-action", handleAction);
824
- });
825
- onDestroy(() => {
826
- rootRef?.removeEventListener("aparte-action", handleAction);
827
- teardown?.();
828
- teardown = null;
829
- $$invalidate(39, host = null);
830
- });
831
- function appendMessage(m) {
832
- host?.appendMessage(m);
833
- }
834
- function updateMessage(id, u) {
835
- host?.updateMessage(id, u);
836
- }
837
- function updateLastMessage(content, options) {
838
- host?.updateLastMessage(content, options);
839
- }
840
- function addSegment(segment) {
841
- host?.addSegment(segment);
842
- }
843
- function updateSegment(segmentId, updates) {
844
- host?.updateSegment(segmentId, updates);
845
- }
846
- function removeSegment(segmentId) {
847
- host?.removeSegment(segmentId);
848
- }
849
- function appendToSegment(segmentId, content) {
850
- host?.appendToSegment(segmentId, content);
851
- }
852
- function getMessages() {
853
- return host?.getMessages() ?? internalMessages;
854
- }
855
- function clearMessages() {
856
- host?.clearMessages();
857
- }
858
- function addBranch(messageId) {
859
- return host?.addBranch(messageId) ?? 0;
860
- }
861
- function addSiblingOf(existingId, message) {
862
- return host?.addSiblingOf(existingId, message) ?? null;
863
- }
864
- function truncateFrom(messageId) {
865
- host?.truncateFrom(messageId);
866
- }
867
- function truncateResponsesAfter(userMessageId) {
868
- host?.truncateResponsesAfter(userMessageId);
869
- }
870
- function injectTokenStream(messageId, tokens) {
871
- return host?.streamTokens(messageId, tokens) ?? Promise.resolve();
872
- }
873
- function stopTokenStream() {
874
- host?.stopTokenStream();
875
- }
876
- function setConversationId(id) {
877
- return host?.setConversationId(id) ?? Promise.resolve();
878
- }
879
- function scrollToBottom() {
880
- viewportRef?.scrollToBottom?.();
881
- }
882
- function getViewport() {
883
- return viewportRef ?? null;
884
- }
885
- function focusInput() {
886
- composerRef?.focus?.();
887
- }
888
- function isStreaming() {
889
- return host?.isStreaming ?? false;
890
- }
891
- function aparte_chat_viewport_binding($$value) {
892
- binding_callbacks[$$value ? "unshift" : "push"](() => {
893
- viewportRef = $$value;
894
- $$invalidate(7, viewportRef);
895
- });
896
- }
897
- function aparte_composer_binding($$value) {
898
- binding_callbacks[$$value ? "unshift" : "push"](() => {
899
- composerRef = $$value;
900
- $$invalidate(4, composerRef);
901
- });
902
- }
903
- function div_binding($$value) {
904
- binding_callbacks[$$value ? "unshift" : "push"](() => {
905
- rootRef = $$value;
906
- $$invalidate(6, rootRef);
907
- });
908
- }
909
- $$self.$$set = ($$props2) => {
910
- if ("messages" in $$props2) $$invalidate(11, messages = $$props2.messages);
911
- if ("placeholder" in $$props2) $$invalidate(12, placeholder = $$props2.placeholder);
912
- if ("disabled" in $$props2) $$invalidate(13, disabled = $$props2.disabled);
913
- if ("isTyping" in $$props2) $$invalidate(14, isTyping = $$props2.isTyping);
914
- if ("typingText" in $$props2) $$invalidate(0, typingText = $$props2.typingText);
915
- if ("submitOnEnter" in $$props2) $$invalidate(15, submitOnEnter = $$props2.submitOnEnter);
916
- if ("layoutTransitionMs" in $$props2) $$invalidate(16, layoutTransitionMs = $$props2.layoutTransitionMs);
917
- if ("centerWhenEmpty" in $$props2) $$invalidate(1, centerWhenEmpty = $$props2.centerWhenEmpty);
918
- if ("attachments" in $$props2) $$invalidate(2, attachments = $$props2.attachments);
919
- if ("conversationId" in $$props2) $$invalidate(17, conversationId = $$props2.conversationId);
920
- if ("config" in $$props2) $$invalidate(18, config = $$props2.config);
921
- if ("$$scope" in $$props2) $$invalidate(43, $$scope = $$props2.$$scope);
922
- };
923
- $$self.$$.update = () => {
924
- if ($$self.$$.dirty[0] & /*messages*/
925
- 2048 | $$self.$$.dirty[1] & /*lastProp, host*/
926
- 768) {
927
- if (messages !== lastProp) {
928
- $$invalidate(40, lastProp = messages);
929
- $$invalidate(5, internalMessages = [...messages]);
930
- if (messages.length === 0) host?.clearRenderCache();
931
- }
932
- }
933
- if ($$self.$$.dirty[0] & /*isTyping*/
934
- 16384 | $$self.$$.dirty[1] & /*lastTyping*/
935
- 1024) {
936
- if (isTyping !== lastTyping) {
937
- $$invalidate(41, lastTyping = isTyping);
938
- $$invalidate(8, typingActive = isTyping);
939
- }
940
- }
941
- if ($$self.$$.dirty[0] & /*conversationId*/
942
- 131072 | $$self.$$.dirty[1] & /*lastConv, host*/
943
- 2304) {
944
- if (conversationId !== lastConv) {
945
- $$invalidate(42, lastConv = conversationId);
946
- void host?.setConversationId(conversationId ?? null);
947
- }
948
- }
949
- if ($$self.$$.dirty[0] & /*internalMessages*/
950
- 32 | $$self.$$.dirty[1] & /*host*/
951
- 256) {
952
- if (host && internalMessages) {
953
- void tick().then(() => host?.syncBubbles());
954
- }
955
- }
956
- if ($$self.$$.dirty[0] & /*composerRef, hostId, placeholder, disabled, submitOnEnter*/
957
- 45080) {
958
- if (composerRef) {
959
- composerRef.setAttribute("target", hostId);
960
- composerRef.setAttribute("placeholder", placeholder);
961
- toggleAttr(composerRef, "disabled", disabled, "");
962
- toggleAttr(composerRef, "submit-on-enter", !submitOnEnter, "false");
963
- }
964
- }
965
- };
966
- return [
967
- typingText,
968
- centerWhenEmpty,
969
- attachments,
970
- hostId,
971
- composerRef,
972
- internalMessages,
973
- rootRef,
974
- viewportRef,
975
- typingActive,
976
- handleSend,
977
- $$slots,
978
- messages,
979
- placeholder,
980
- disabled,
981
- isTyping,
982
- submitOnEnter,
983
- layoutTransitionMs,
984
- conversationId,
985
- config,
986
- appendMessage,
987
- updateMessage,
988
- updateLastMessage,
989
- addSegment,
990
- updateSegment,
991
- removeSegment,
992
- appendToSegment,
993
- getMessages,
994
- clearMessages,
995
- addBranch,
996
- addSiblingOf,
997
- truncateFrom,
998
- truncateResponsesAfter,
999
- injectTokenStream,
1000
- stopTokenStream,
1001
- setConversationId,
1002
- scrollToBottom,
1003
- getViewport,
1004
- focusInput,
1005
- isStreaming,
1006
- host,
1007
- lastProp,
1008
- lastTyping,
1009
- lastConv,
1010
- $$scope,
1011
- slots,
1012
- aparte_chat_viewport_binding,
1013
- aparte_composer_binding,
1014
- div_binding
1015
- ];
1016
- }
1017
- class AparteChat extends SvelteComponent {
1018
- constructor(options) {
1019
- super();
1020
- init(
1021
- this,
1022
- options,
1023
- instance$1,
1024
- create_fragment$1,
1025
- safe_not_equal,
1026
- {
1027
- messages: 11,
1028
- placeholder: 12,
1029
- disabled: 13,
1030
- isTyping: 14,
1031
- typingText: 0,
1032
- submitOnEnter: 15,
1033
- layoutTransitionMs: 16,
1034
- centerWhenEmpty: 1,
1035
- attachments: 2,
1036
- conversationId: 17,
1037
- config: 18,
1038
- appendMessage: 19,
1039
- updateMessage: 20,
1040
- updateLastMessage: 21,
1041
- addSegment: 22,
1042
- updateSegment: 23,
1043
- removeSegment: 24,
1044
- appendToSegment: 25,
1045
- getMessages: 26,
1046
- clearMessages: 27,
1047
- addBranch: 28,
1048
- addSiblingOf: 29,
1049
- truncateFrom: 30,
1050
- truncateResponsesAfter: 31,
1051
- injectTokenStream: 32,
1052
- stopTokenStream: 33,
1053
- setConversationId: 34,
1054
- scrollToBottom: 35,
1055
- getViewport: 36,
1056
- focusInput: 37,
1057
- isStreaming: 38
1058
- },
1059
- null,
1060
- [-1, -1]
1061
- );
1062
- }
1063
- get appendMessage() {
1064
- return this.$$.ctx[19];
1065
- }
1066
- get updateMessage() {
1067
- return this.$$.ctx[20];
1068
- }
1069
- get updateLastMessage() {
1070
- return this.$$.ctx[21];
1071
- }
1072
- get addSegment() {
1073
- return this.$$.ctx[22];
1074
- }
1075
- get updateSegment() {
1076
- return this.$$.ctx[23];
1077
- }
1078
- get removeSegment() {
1079
- return this.$$.ctx[24];
1080
- }
1081
- get appendToSegment() {
1082
- return this.$$.ctx[25];
1083
- }
1084
- get getMessages() {
1085
- return this.$$.ctx[26];
1086
- }
1087
- get clearMessages() {
1088
- return this.$$.ctx[27];
1089
- }
1090
- get addBranch() {
1091
- return this.$$.ctx[28];
1092
- }
1093
- get addSiblingOf() {
1094
- return this.$$.ctx[29];
1095
- }
1096
- get truncateFrom() {
1097
- return this.$$.ctx[30];
1098
- }
1099
- get truncateResponsesAfter() {
1100
- return this.$$.ctx[31];
1101
- }
1102
- get injectTokenStream() {
1103
- return this.$$.ctx[32];
1104
- }
1105
- get stopTokenStream() {
1106
- return this.$$.ctx[33];
1107
- }
1108
- get setConversationId() {
1109
- return this.$$.ctx[34];
1110
- }
1111
- get scrollToBottom() {
1112
- return this.$$.ctx[35];
1113
- }
1114
- get getViewport() {
1115
- return this.$$.ctx[36];
1116
- }
1117
- get focusInput() {
1118
- return this.$$.ctx[37];
1119
- }
1120
- get isStreaming() {
1121
- return this.$$.ctx[38];
1122
- }
1123
- }
1124
- function createAparteChat(initial = []) {
1125
- const messages = writable([...initial]);
1126
- let comp = null;
1127
- return {
1128
- messages,
1129
- connect: (component) => {
1130
- comp = component;
1131
- },
1132
- onMessagesChange: (m) => messages.set(m),
1133
- appendMessage: (m) => comp?.appendMessage(m),
1134
- updateMessage: (id, u) => comp?.updateMessage(id, u),
1135
- updateLastMessage: (c, o) => comp?.updateLastMessage(c, o),
1136
- addSegment: (s) => comp?.addSegment(s),
1137
- updateSegment: (id, u) => comp?.updateSegment(id, u),
1138
- removeSegment: (id) => comp?.removeSegment(id),
1139
- appendToSegment: (id, c) => comp?.appendToSegment(id, c),
1140
- clearMessages: () => comp?.clearMessages(),
1141
- addBranch: (id) => comp?.addBranch(id) ?? 0,
1142
- addSiblingOf: (id, m) => comp?.addSiblingOf(id, m) ?? null,
1143
- truncateFrom: (id) => comp?.truncateFrom(id),
1144
- truncateResponsesAfter: (id) => comp?.truncateResponsesAfter(id),
1145
- injectTokenStream: (id, tokens) => comp?.injectTokenStream(id, tokens) ?? Promise.resolve(),
1146
- stopTokenStream: () => comp?.stopTokenStream(),
1147
- setConversationId: (id) => comp?.setConversationId(id) ?? Promise.resolve(),
1148
- isStreaming: () => comp?.isStreaming() ?? false
1149
- };
1150
- }
1151
- function createAparteClient(options) {
1152
- const client = new AparteClient(options ?? {});
1153
- onMount(() => {
1154
- client.start();
1155
- });
1156
- onDestroy(() => client.stop());
1157
- return { client, abort: () => client.abort() };
1158
- }
1159
- function createConversationManager() {
1160
- let manager = null;
1161
- let unsub = null;
1162
- const conversations = writable([]);
1163
- const activeId = writable(null);
1164
- const activeConversations = derived(
1165
- conversations,
1166
- ($c) => $c.filter((c) => !c.archivedAt).sort((a, b) => b.updatedAt - a.updatedAt)
1167
- );
1168
- const archivedConversations = derived(
1169
- conversations,
1170
- ($c) => $c.filter((c) => !!c.archivedAt).sort((a, b) => b.updatedAt - a.updatedAt)
1171
- );
1172
- const activeConversation = derived(
1173
- [conversations, activeId],
1174
- ([$c, $id]) => $id ? $c.find((c) => c.id === $id) ?? null : null
1175
- );
1176
- onDestroy(() => unsub?.());
1177
- const assert = () => {
1178
- if (!manager) throw new Error("[createConversationManager] Not initialised. Call init(adapter) first.");
1179
- return manager;
1180
- };
1181
- async function init2(adapter) {
1182
- const m = new ConversationManager(adapter);
1183
- manager = m;
1184
- unsub = m.subscribe((convs) => {
1185
- conversations.set([...convs]);
1186
- activeId.set(m.activeId);
1187
- });
1188
- await m.init();
1189
- activeId.set(m.activeId);
1190
- AparteConfig.setConversationManager(m);
1191
- }
1192
- return {
1193
- conversations,
1194
- activeConversations,
1195
- archivedConversations,
1196
- activeId,
1197
- activeConversation,
1198
- init: init2,
1199
- createNew: (title) => assert().createNew(title),
1200
- addMessage: (convId, message) => assert().addMessage(convId, message),
1201
- updateMessages: (convId, messages) => assert().updateMessages(convId, messages),
1202
- delete: (id) => assert().delete(id),
1203
- archive: (id) => assert().archive(id),
1204
- unarchive: (id) => assert().unarchive(id)
1205
- };
1206
- }
1207
- function create_fragment(ctx) {
1208
- let span;
1209
- return {
1210
- c() {
1211
- span = element("span");
1212
- set_style(span, "display", "contents");
1213
- },
1214
- m(target, anchor) {
1215
- insert(target, span, anchor);
1216
- ctx[9](span);
1217
- },
1218
- p: noop,
1219
- i: noop,
1220
- o: noop,
1221
- d(detaching) {
1222
- if (detaching) {
1223
- detach(span);
1224
- }
1225
- ctx[9](null);
1226
- }
1227
- };
1228
- }
1229
- function instance($$self, $$props, $$invalidate) {
1230
- let { name } = $$props;
1231
- let { props = {} } = $$props;
1232
- let { events = void 0 } = $$props;
1233
- const dispatch = createEventDispatcher();
1234
- let host;
1235
- let el = null;
1236
- let cleanups = [];
1237
- function applyProps() {
1238
- if (el) applyElementProps(el, props);
1239
- }
1240
- function create() {
1241
- if (!host) return;
1242
- $$invalidate(6, el = document.createElement(name));
1243
- applyProps();
1244
- for (const ev of events ?? DEFAULT_UI_EVENTS) {
1245
- const listener = (e) => dispatch("elementEvent", e);
1246
- el.addEventListener(ev, listener);
1247
- cleanups.push(() => el?.removeEventListener(ev, listener));
1248
- }
1249
- host.appendChild(el);
1250
- }
1251
- function destroy() {
1252
- for (const c of cleanups) c();
1253
- cleanups = [];
1254
- el?.remove();
1255
- $$invalidate(6, el = null);
1256
- }
1257
- onMount(create);
1258
- onDestroy(destroy);
1259
- let lastName = name;
1260
- let lastEvtsKey = (events ?? DEFAULT_UI_EVENTS).join("|");
1261
- function getElement() {
1262
- return el;
1263
- }
1264
- function callMethod(methodName, ...args) {
1265
- const fn = el?.[methodName];
1266
- return typeof fn === "function" ? fn.apply(el, args) : void 0;
1267
- }
1268
- function span_binding($$value) {
1269
- binding_callbacks[$$value ? "unshift" : "push"](() => {
1270
- host = $$value;
1271
- $$invalidate(0, host);
1272
- });
1273
- }
1274
- $$self.$$set = ($$props2) => {
1275
- if ("name" in $$props2) $$invalidate(1, name = $$props2.name);
1276
- if ("props" in $$props2) $$invalidate(2, props = $$props2.props);
1277
- if ("events" in $$props2) $$invalidate(3, events = $$props2.events);
1278
- };
1279
- $$self.$$.update = () => {
1280
- if ($$self.$$.dirty & /*events, el, name, lastName, lastEvtsKey*/
1281
- 458) {
1282
- {
1283
- const evtsKey = (events ?? DEFAULT_UI_EVENTS).join("|");
1284
- if (el && (name !== lastName || evtsKey !== lastEvtsKey)) {
1285
- $$invalidate(7, lastName = name);
1286
- $$invalidate(8, lastEvtsKey = evtsKey);
1287
- destroy();
1288
- create();
1289
- }
1290
- }
1291
- }
1292
- if ($$self.$$.dirty & /*el, props*/
1293
- 68) {
1294
- if (el && props) applyProps();
1295
- }
1296
- };
1297
- return [
1298
- host,
1299
- name,
1300
- props,
1301
- events,
1302
- getElement,
1303
- callMethod,
1304
- el,
1305
- lastName,
1306
- lastEvtsKey,
1307
- span_binding
1308
- ];
1309
- }
1310
- class AparteUi extends SvelteComponent {
1311
- constructor(options) {
1312
- super();
1313
- init(this, options, instance, create_fragment, safe_not_equal, {
1314
- name: 1,
1315
- props: 2,
1316
- events: 3,
1317
- getElement: 4,
1318
- callMethod: 5
1319
- });
1320
- }
1321
- get getElement() {
1322
- return this.$$.ctx[4];
1323
- }
1324
- get callMethod() {
1325
- return this.$$.ctx[5];
1326
- }
1327
- }
1328
- export {
1329
- AparteChat,
1330
- AparteUi,
1331
- createAparteChat,
1332
- createAparteClient,
1333
- createConversationManager
1334
- };
1335
- //# sourceMappingURL=index.js.map
1
+ /**
2
+ * aparté Svelte wrapper — Svelte 4 AND 5, from one shipped source.
3
+ *
4
+ * The package publishes its `.svelte` files rather than a prebuilt bundle, so the
5
+ * consumer's own compiler handles them: no prebuilt artifact can serve both majors.
6
+ * Both are proven in a browser (`apps/examples/svelte4` and `svelte5`).
7
+ */
8
+ export { default as AparteChat } from './AparteChat.svelte';
9
+ // Idiomatic ergonomics: a store factory that owns the messages store.
10
+ export { createAparteChat } from './stores/aparteChat.js';
11
+ // Annex: client lifecycle, reactive conversation manager, universal proxy.
12
+ export { createAparteClient } from './stores/aparteClient.js';
13
+ export { createConversationManager } from './stores/conversationManager.js';
14
+ export { default as AparteUi } from './AparteUi.svelte';