@aparte/angular 0.10.0 → 0.12.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/README.md +6 -3
- package/dist/README.md +6 -3
- package/dist/fesm2022/aparte-angular.mjs +634 -2
- package/dist/fesm2022/aparte-angular.mjs.map +1 -1
- package/dist/generated/element.directives.d.ts +329 -0
- package/dist/index.d.ts +1 -0
- package/dist/lib/aparte-ui.component.d.ts +6 -0
- package/package.json +4 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable, makeEnvironmentProviders, provideAppInitializer, DestroyRef, effect, ElementRef, signal, output, computed, numberAttribute, booleanAttribute, ViewChildren, ViewChild, Input, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, Component, Renderer2 } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Injectable, makeEnvironmentProviders, provideAppInitializer, DestroyRef, effect, ElementRef, signal, output, computed, numberAttribute, booleanAttribute, ViewChildren, ViewChild, Input, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, Component, Renderer2, Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
3
3
|
import { AparteClient, aparteGlobalConfig, isAwaitingReply, uuid, AparteChatHost, APARTE_DEFAULT_UI_EVENTS, applyElementProps, AparteConversationManager } from '@aparte/core';
|
|
4
4
|
export { aparteGlobalConfig } from '@aparte/core';
|
|
5
5
|
import { NgTemplateOutlet } from '@angular/common';
|
|
@@ -765,6 +765,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
765
765
|
* its own once the definition arrives, which is what makes `provideAparte`'s lazy
|
|
766
766
|
* `plugins` loaders work.
|
|
767
767
|
*
|
|
768
|
+
* A PLUGIN's event is not in the default forward list — that default is core's, and a
|
|
769
|
+
* third-party plugin's author cannot add to it, so listing ours would privilege our
|
|
770
|
+
* packages over theirs. Name it in `events` and it arrives; leave it out and the handler
|
|
771
|
+
* silently never fires, which is what this example used to do.
|
|
772
|
+
*
|
|
768
773
|
* @example
|
|
769
774
|
* ```html
|
|
770
775
|
* <aparte-ui
|
|
@@ -774,6 +779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
774
779
|
* '--glow-opacity': '1',
|
|
775
780
|
* '--glow-speed': '4s'
|
|
776
781
|
* }"
|
|
782
|
+
* [events]="['aparte-model-change']"
|
|
777
783
|
* (elementEvent)="onEvent($event)"
|
|
778
784
|
* />
|
|
779
785
|
* ```
|
|
@@ -924,6 +930,632 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
924
930
|
type: Input
|
|
925
931
|
}] } });
|
|
926
932
|
|
|
933
|
+
// AUTO-GENERATED by scripts/gen-element-bindings.mjs from this package's
|
|
934
|
+
// custom-elements.json. Do not edit: it is gitignored and rewritten every build.
|
|
935
|
+
// The source of every fact below is the element's own JSDoc.
|
|
936
|
+
/**
|
|
937
|
+
* A typed Angular surface for every element this package defines.
|
|
938
|
+
*
|
|
939
|
+
* Generated, and that is the point: a hand-written directive is a parallel structure over
|
|
940
|
+
* the manifest with nothing watching it, so an attribute added to an element would be
|
|
941
|
+
* typed in React, Vue and Svelte — which derive from the registry — and silently missing
|
|
942
|
+
* here. That happened, which is why this file is generated now.
|
|
943
|
+
*
|
|
944
|
+
* Outputs emit the event's DETAIL, not the `CustomEvent`, because
|
|
945
|
+
* `(selectChange)="pick($event.value)"` is the Angular idiom. Reach the event itself with
|
|
946
|
+
* a plain host listener when you need `stopPropagation`.
|
|
947
|
+
*/
|
|
948
|
+
/**
|
|
949
|
+
* Writes one declared attribute onto the host element.
|
|
950
|
+
*
|
|
951
|
+
* `applyElementProps` is core's own rule, reused rather than reimplemented: a primitive
|
|
952
|
+
* goes through `setAttribute`, `true` becomes the empty presence attribute,
|
|
953
|
+
* `false`/`null`/`undefined` remove it, and only a value an attribute cannot carry is
|
|
954
|
+
* handed over as a property.
|
|
955
|
+
*/
|
|
956
|
+
class AparteElementBase {
|
|
957
|
+
host = inject((ElementRef));
|
|
958
|
+
write(name, value) {
|
|
959
|
+
applyElementProps(this.host.nativeElement, { [name]: value });
|
|
960
|
+
}
|
|
961
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteElementBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
962
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteElementBase, isStandalone: true, ngImport: i0 });
|
|
963
|
+
}
|
|
964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteElementBase, decorators: [{
|
|
965
|
+
type: Directive
|
|
966
|
+
}] });
|
|
967
|
+
/** `<aparte-chat-bubble>` — One message: plain content or a list of rich segments, in light DOM. */
|
|
968
|
+
class AparteChatBubbleDirective extends AparteElementBase {
|
|
969
|
+
/** `user` / `assistant` / `system`; what the CSS keys off. */
|
|
970
|
+
set messageRole(v) { this.write('data-role', v); }
|
|
971
|
+
/** Plain text content, for a bubble with no segments. */
|
|
972
|
+
set content(v) { this.write('content', v); }
|
|
973
|
+
/** Epoch milliseconds OR a date string: `_updateTimestamp` accepts either and only coerces when the value is numeric. */
|
|
974
|
+
set timestamp(v) { this.write('timestamp', v); }
|
|
975
|
+
/** How streaming and the action bar address this bubble. */
|
|
976
|
+
set messageId(v) { this.write('message-id', v); }
|
|
977
|
+
/** Hides the action bar and shows the caret while a reply is in flight. */
|
|
978
|
+
set streaming(v) { this.write('streaming', v); }
|
|
979
|
+
/** The display name in the header. */
|
|
980
|
+
set name(v) { this.write('name', v); }
|
|
981
|
+
/** An attached image was clicked, asking the app to open it full-size. */
|
|
982
|
+
attachmentPreview = new EventEmitter();
|
|
983
|
+
/** A custom action-bar button was pressed. */
|
|
984
|
+
action = new EventEmitter();
|
|
985
|
+
/** Retry was pressed; the host forks the turn. */
|
|
986
|
+
retry = new EventEmitter();
|
|
987
|
+
/** Thumbs up or down. */
|
|
988
|
+
feedback = new EventEmitter();
|
|
989
|
+
/** The info affordance was pressed. */
|
|
990
|
+
messageInfo = new EventEmitter();
|
|
991
|
+
/** An edit was saved. */
|
|
992
|
+
edit = new EventEmitter();
|
|
993
|
+
/** The `‹1/2›` picker moved between sibling versions. */
|
|
994
|
+
branchNavigate = new EventEmitter();
|
|
995
|
+
onAttachmentPreview(e) { this.attachmentPreview.emit(e.detail); }
|
|
996
|
+
onAction(e) { this.action.emit(e.detail); }
|
|
997
|
+
onRetry(e) { this.retry.emit(e.detail); }
|
|
998
|
+
onFeedback(e) { this.feedback.emit(e.detail); }
|
|
999
|
+
onMessageInfo(e) { this.messageInfo.emit(e.detail); }
|
|
1000
|
+
onEdit(e) { this.edit.emit(e.detail); }
|
|
1001
|
+
onBranchNavigate(e) { this.branchNavigate.emit(e.detail); }
|
|
1002
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteChatBubbleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1003
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteChatBubbleDirective, isStandalone: true, selector: "aparte-chat-bubble", inputs: { messageRole: "messageRole", content: "content", timestamp: "timestamp", messageId: "messageId", streaming: ["streaming", "streaming", booleanAttribute], name: "name" }, outputs: { attachmentPreview: "attachmentPreview", action: "action", retry: "retry", feedback: "feedback", messageInfo: "messageInfo", edit: "edit", branchNavigate: "branchNavigate" }, host: { listeners: { "aparte-attachment-preview": "onAttachmentPreview($event)", "aparte-action": "onAction($event)", "aparte-retry": "onRetry($event)", "aparte-feedback": "onFeedback($event)", "aparte-message-info": "onMessageInfo($event)", "aparte-edit": "onEdit($event)", "aparte-branch-navigate": "onBranchNavigate($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1004
|
+
}
|
|
1005
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteChatBubbleDirective, decorators: [{
|
|
1006
|
+
type: Directive,
|
|
1007
|
+
args: [{ selector: 'aparte-chat-bubble', standalone: true }]
|
|
1008
|
+
}], propDecorators: { messageRole: [{
|
|
1009
|
+
type: Input
|
|
1010
|
+
}], content: [{
|
|
1011
|
+
type: Input
|
|
1012
|
+
}], timestamp: [{
|
|
1013
|
+
type: Input
|
|
1014
|
+
}], messageId: [{
|
|
1015
|
+
type: Input
|
|
1016
|
+
}], streaming: [{
|
|
1017
|
+
type: Input,
|
|
1018
|
+
args: [{ transform: booleanAttribute }]
|
|
1019
|
+
}], name: [{
|
|
1020
|
+
type: Input
|
|
1021
|
+
}], attachmentPreview: [{
|
|
1022
|
+
type: Output
|
|
1023
|
+
}], action: [{
|
|
1024
|
+
type: Output
|
|
1025
|
+
}], retry: [{
|
|
1026
|
+
type: Output
|
|
1027
|
+
}], feedback: [{
|
|
1028
|
+
type: Output
|
|
1029
|
+
}], messageInfo: [{
|
|
1030
|
+
type: Output
|
|
1031
|
+
}], edit: [{
|
|
1032
|
+
type: Output
|
|
1033
|
+
}], branchNavigate: [{
|
|
1034
|
+
type: Output
|
|
1035
|
+
}], onAttachmentPreview: [{
|
|
1036
|
+
type: HostListener,
|
|
1037
|
+
args: ['aparte-attachment-preview', ['$event']]
|
|
1038
|
+
}], onAction: [{
|
|
1039
|
+
type: HostListener,
|
|
1040
|
+
args: ['aparte-action', ['$event']]
|
|
1041
|
+
}], onRetry: [{
|
|
1042
|
+
type: HostListener,
|
|
1043
|
+
args: ['aparte-retry', ['$event']]
|
|
1044
|
+
}], onFeedback: [{
|
|
1045
|
+
type: HostListener,
|
|
1046
|
+
args: ['aparte-feedback', ['$event']]
|
|
1047
|
+
}], onMessageInfo: [{
|
|
1048
|
+
type: HostListener,
|
|
1049
|
+
args: ['aparte-message-info', ['$event']]
|
|
1050
|
+
}], onEdit: [{
|
|
1051
|
+
type: HostListener,
|
|
1052
|
+
args: ['aparte-edit', ['$event']]
|
|
1053
|
+
}], onBranchNavigate: [{
|
|
1054
|
+
type: HostListener,
|
|
1055
|
+
args: ['aparte-branch-navigate', ['$event']]
|
|
1056
|
+
}] } });
|
|
1057
|
+
/** `<aparte-chat-status>` — A standalone status line — a light-DOM typing indicator the APP owns. Core never turns it on by itself, so it can never compete with the bubble's own waiting state. */
|
|
1058
|
+
class AparteChatStatusDirective extends AparteElementBase {
|
|
1059
|
+
/** Shows or hides the indicator. */
|
|
1060
|
+
set visible(v) { this.write('visible', v); }
|
|
1061
|
+
/** The line to show. Defaults to the locale's typing string. */
|
|
1062
|
+
set text(v) { this.write('text', v); }
|
|
1063
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteChatStatusDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1064
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteChatStatusDirective, isStandalone: true, selector: "aparte-chat-status", inputs: { visible: ["visible", "visible", booleanAttribute], text: "text" }, usesInheritance: true, ngImport: i0 });
|
|
1065
|
+
}
|
|
1066
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteChatStatusDirective, decorators: [{
|
|
1067
|
+
type: Directive,
|
|
1068
|
+
args: [{ selector: 'aparte-chat-status', standalone: true }]
|
|
1069
|
+
}], propDecorators: { visible: [{
|
|
1070
|
+
type: Input,
|
|
1071
|
+
args: [{ transform: booleanAttribute }]
|
|
1072
|
+
}], text: [{
|
|
1073
|
+
type: Input
|
|
1074
|
+
}] } });
|
|
1075
|
+
/** `<aparte-chat-viewport>` — The transcript surface: a light-DOM container with sticky scrolling, token streaming and segment-aware rendering. */
|
|
1076
|
+
class AparteChatViewportDirective extends AparteElementBase {
|
|
1077
|
+
/** How close to the bottom still counts as "at the bottom". */
|
|
1078
|
+
set scrollThreshold(v) { this.write('scroll-threshold', v); }
|
|
1079
|
+
/** Caps how many bubbles stay in the DOM; older ones are released. */
|
|
1080
|
+
set maxRenderedBubbles(v) { this.write('max-rendered-bubbles', v); }
|
|
1081
|
+
/** DEPRECATED. It used to evict messages from the model; it now only caps rendered bubbles, which is what `max-rendered-bubbles` says. For real history retention configure the conversation manager instead. */
|
|
1082
|
+
set maxMessages(v) { this.write('max-messages', v); }
|
|
1083
|
+
/** The wrapper's explicit hands-off signal: set it and this element composes none of its own children, because the framework owns them. All four wrappers set it; it was read by this element and declared by nothing until now. */
|
|
1084
|
+
set frameworkManaged(v) { this.write('framework-managed', v); }
|
|
1085
|
+
/** A segment grew or settled during a stream. */
|
|
1086
|
+
segmentUpdate = new EventEmitter();
|
|
1087
|
+
/** `clearAll()` finished emptying the transcript. No detail. */
|
|
1088
|
+
resetDone = new EventEmitter();
|
|
1089
|
+
/** The active branch path changed, after a retry fork or a navigation. Features: - Smart Scroll: Sticks to bottom when user is at bottom, stops on manual scroll up - appendToken(): For simple content streaming - appendToSegment(): For segment-aware streaming (thinking, code, etc.) - Internal message registry for memory management */
|
|
1090
|
+
pathChanged = new EventEmitter();
|
|
1091
|
+
onSegmentUpdate(e) { this.segmentUpdate.emit(e.detail); }
|
|
1092
|
+
onResetDone() { this.resetDone.emit(); }
|
|
1093
|
+
onPathChanged(e) { this.pathChanged.emit(e.detail); }
|
|
1094
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteChatViewportDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1095
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteChatViewportDirective, isStandalone: true, selector: "aparte-chat-viewport", inputs: { scrollThreshold: ["scrollThreshold", "scrollThreshold", numberAttribute], maxRenderedBubbles: ["maxRenderedBubbles", "maxRenderedBubbles", numberAttribute], maxMessages: ["maxMessages", "maxMessages", numberAttribute], frameworkManaged: ["frameworkManaged", "frameworkManaged", booleanAttribute] }, outputs: { segmentUpdate: "segmentUpdate", resetDone: "resetDone", pathChanged: "pathChanged" }, host: { listeners: { "aparte-segment-update": "onSegmentUpdate($event)", "aparte-reset-done": "onResetDone()", "aparte-path-changed": "onPathChanged($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1096
|
+
}
|
|
1097
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteChatViewportDirective, decorators: [{
|
|
1098
|
+
type: Directive,
|
|
1099
|
+
args: [{ selector: 'aparte-chat-viewport', standalone: true }]
|
|
1100
|
+
}], propDecorators: { scrollThreshold: [{
|
|
1101
|
+
type: Input,
|
|
1102
|
+
args: [{ transform: numberAttribute }]
|
|
1103
|
+
}], maxRenderedBubbles: [{
|
|
1104
|
+
type: Input,
|
|
1105
|
+
args: [{ transform: numberAttribute }]
|
|
1106
|
+
}], maxMessages: [{
|
|
1107
|
+
type: Input,
|
|
1108
|
+
args: [{ transform: numberAttribute }]
|
|
1109
|
+
}], frameworkManaged: [{
|
|
1110
|
+
type: Input,
|
|
1111
|
+
args: [{ transform: booleanAttribute }]
|
|
1112
|
+
}], segmentUpdate: [{
|
|
1113
|
+
type: Output
|
|
1114
|
+
}], resetDone: [{
|
|
1115
|
+
type: Output
|
|
1116
|
+
}], pathChanged: [{
|
|
1117
|
+
type: Output
|
|
1118
|
+
}], onSegmentUpdate: [{
|
|
1119
|
+
type: HostListener,
|
|
1120
|
+
args: ['aparte-segment-update', ['$event']]
|
|
1121
|
+
}], onResetDone: [{
|
|
1122
|
+
type: HostListener,
|
|
1123
|
+
args: ['aparte-reset-done']
|
|
1124
|
+
}], onPathChanged: [{
|
|
1125
|
+
type: HostListener,
|
|
1126
|
+
args: ['aparte-path-changed', ['$event']]
|
|
1127
|
+
}] } });
|
|
1128
|
+
/** `<aparte-composer>` — The root context for every `aparte-composer-*` primitive. It imposes no visual layout — the consumer owns the structure — and holds the shared state the parts read: the value, the streaming flag, pending attachments, the panel slot. */
|
|
1129
|
+
class AparteComposerDirective extends AparteElementBase {
|
|
1130
|
+
/** Forwarded to `<aparte-composer-input>` through the internal bus. */
|
|
1131
|
+
set placeholder(v) { this.write('placeholder', v); }
|
|
1132
|
+
/** Disables the whole composer, every part included. */
|
|
1133
|
+
set disabled(v) { this.write('disabled', v); }
|
|
1134
|
+
/** The id of the `<aparte-chat>` this composer drives. */
|
|
1135
|
+
set target(v) { this.write('target', v); }
|
|
1136
|
+
/** Enter sends and Shift+Enter breaks the line (the default); set it to the string `"false"` to swap them. Read lazily by the `submitOnEnter` getter rather than observed, which is why it was missing from the manifest — and so from every typed surface — while all four wrappers wrote it. */
|
|
1137
|
+
set submitOnEnter(v) { this.write('submit-on-enter', v ? '' : 'false'); }
|
|
1138
|
+
/** A message was submitted: the text, its attachments and the target. */
|
|
1139
|
+
send = new EventEmitter();
|
|
1140
|
+
/** The stop button was pressed. No detail; the two window events below carry the target. */
|
|
1141
|
+
cancel = new EventEmitter();
|
|
1142
|
+
/** Any of value / streaming / disabled / attachments / panel changed, folded into one event. */
|
|
1143
|
+
composerChange = new EventEmitter();
|
|
1144
|
+
onSend(e) { this.send.emit(e.detail); }
|
|
1145
|
+
onCancel() { this.cancel.emit(); }
|
|
1146
|
+
onComposerChange(e) { this.composerChange.emit(e.detail); }
|
|
1147
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1148
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteComposerDirective, isStandalone: true, selector: "aparte-composer", inputs: { placeholder: "placeholder", disabled: ["disabled", "disabled", booleanAttribute], target: "target", submitOnEnter: ["submitOnEnter", "submitOnEnter", booleanAttribute] }, outputs: { send: "send", cancel: "cancel", composerChange: "composerChange" }, host: { listeners: { "aparte-send": "onSend($event)", "aparte-cancel": "onCancel()", "aparte-composer-change": "onComposerChange($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1149
|
+
}
|
|
1150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerDirective, decorators: [{
|
|
1151
|
+
type: Directive,
|
|
1152
|
+
args: [{ selector: 'aparte-composer', standalone: true }]
|
|
1153
|
+
}], propDecorators: { placeholder: [{
|
|
1154
|
+
type: Input
|
|
1155
|
+
}], disabled: [{
|
|
1156
|
+
type: Input,
|
|
1157
|
+
args: [{ transform: booleanAttribute }]
|
|
1158
|
+
}], target: [{
|
|
1159
|
+
type: Input
|
|
1160
|
+
}], submitOnEnter: [{
|
|
1161
|
+
type: Input,
|
|
1162
|
+
args: [{ transform: booleanAttribute }]
|
|
1163
|
+
}], send: [{
|
|
1164
|
+
type: Output
|
|
1165
|
+
}], cancel: [{
|
|
1166
|
+
type: Output
|
|
1167
|
+
}], composerChange: [{
|
|
1168
|
+
type: Output
|
|
1169
|
+
}], onSend: [{
|
|
1170
|
+
type: HostListener,
|
|
1171
|
+
args: ['aparte-send', ['$event']]
|
|
1172
|
+
}], onCancel: [{
|
|
1173
|
+
type: HostListener,
|
|
1174
|
+
args: ['aparte-cancel']
|
|
1175
|
+
}], onComposerChange: [{
|
|
1176
|
+
type: HostListener,
|
|
1177
|
+
args: ['aparte-composer-change', ['$event']]
|
|
1178
|
+
}] } });
|
|
1179
|
+
/** `<aparte-composer-action>` — Generic action button primitive for <aparte-composer>. */
|
|
1180
|
+
class AparteComposerActionDirective extends AparteElementBase {
|
|
1181
|
+
/** Icon key for aparteGlobalConfig.getIcon(), or raw SVG/HTML starting with `<` */
|
|
1182
|
+
set icon(v) { this.write('icon', v); }
|
|
1183
|
+
/** Accessible label (also used as tooltip) */
|
|
1184
|
+
set label(v) { this.write('label', v); }
|
|
1185
|
+
/** Disables the button */
|
|
1186
|
+
set disabled(v) { this.write('disabled', v); }
|
|
1187
|
+
/** Identifies WHICH button fired; carried as `AparteActionClickEventDetail.actionId`. Read lazily at dispatch time rather than observed, so the manifest never recorded it — leaving the only way to tell two custom composer buttons apart absent from the typed surface. */
|
|
1188
|
+
set actionId(v) { this.write('action-id', v); }
|
|
1189
|
+
/** Bubbles up when the button is clicked, carrying which button it was and the composer it belongs to. The type argument is not decoration: a BARE `@fires` records `CustomEvent` with no argument, and the bindings generator then emits `EventEmitter<void>` with a listener that drops `$event` — so an Angular consumer with two custom buttons could not tell which one fired. detail: { actionId: string, composer: AparteComposer | null } */
|
|
1190
|
+
actionClick = new EventEmitter();
|
|
1191
|
+
onActionClick(e) { this.actionClick.emit(e.detail); }
|
|
1192
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerActionDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1193
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteComposerActionDirective, isStandalone: true, selector: "aparte-composer-action", inputs: { icon: "icon", label: "label", disabled: ["disabled", "disabled", booleanAttribute], actionId: "actionId" }, outputs: { actionClick: "actionClick" }, host: { listeners: { "aparte-action-click": "onActionClick($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1194
|
+
}
|
|
1195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerActionDirective, decorators: [{
|
|
1196
|
+
type: Directive,
|
|
1197
|
+
args: [{ selector: 'aparte-composer-action', standalone: true }]
|
|
1198
|
+
}], propDecorators: { icon: [{
|
|
1199
|
+
type: Input
|
|
1200
|
+
}], label: [{
|
|
1201
|
+
type: Input
|
|
1202
|
+
}], disabled: [{
|
|
1203
|
+
type: Input,
|
|
1204
|
+
args: [{ transform: booleanAttribute }]
|
|
1205
|
+
}], actionId: [{
|
|
1206
|
+
type: Input
|
|
1207
|
+
}], actionClick: [{
|
|
1208
|
+
type: Output
|
|
1209
|
+
}], onActionClick: [{
|
|
1210
|
+
type: HostListener,
|
|
1211
|
+
args: ['aparte-action-click', ['$event']]
|
|
1212
|
+
}] } });
|
|
1213
|
+
/** `<aparte-composer-add-attachment>` — File picker button for <aparte-composer>. */
|
|
1214
|
+
class AparteComposerAddAttachmentDirective extends AparteElementBase {
|
|
1215
|
+
/** MIME types / extensions passed to the file input (e.g. "image/*,.pdf") */
|
|
1216
|
+
set accept(v) { this.write('accept', v); }
|
|
1217
|
+
/** Allow multiple file selection (default: true) */
|
|
1218
|
+
set multiple(v) { this.write('multiple', v ? '' : 'false'); }
|
|
1219
|
+
/** Greys out the picker and ignores drops. */
|
|
1220
|
+
set disabled(v) { this.write('disabled', v); }
|
|
1221
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerAddAttachmentDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1222
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteComposerAddAttachmentDirective, isStandalone: true, selector: "aparte-composer-add-attachment", inputs: { accept: "accept", multiple: ["multiple", "multiple", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, usesInheritance: true, ngImport: i0 });
|
|
1223
|
+
}
|
|
1224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerAddAttachmentDirective, decorators: [{
|
|
1225
|
+
type: Directive,
|
|
1226
|
+
args: [{ selector: 'aparte-composer-add-attachment', standalone: true }]
|
|
1227
|
+
}], propDecorators: { accept: [{
|
|
1228
|
+
type: Input
|
|
1229
|
+
}], multiple: [{
|
|
1230
|
+
type: Input,
|
|
1231
|
+
args: [{ transform: booleanAttribute }]
|
|
1232
|
+
}], disabled: [{
|
|
1233
|
+
type: Input,
|
|
1234
|
+
args: [{ transform: booleanAttribute }]
|
|
1235
|
+
}] } });
|
|
1236
|
+
/** `<aparte-composer-attachments>` — Renders a square thumbnail tile for each file attached to the root composer. */
|
|
1237
|
+
class AparteComposerAttachmentsDirective {
|
|
1238
|
+
/** An attached image was clicked; the app opens it full-size, and only if it declared `attachmentPreview`. */
|
|
1239
|
+
attachmentPreview = new EventEmitter();
|
|
1240
|
+
onAttachmentPreview(e) { this.attachmentPreview.emit(e.detail); }
|
|
1241
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerAttachmentsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1242
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteComposerAttachmentsDirective, isStandalone: true, selector: "aparte-composer-attachments", outputs: { attachmentPreview: "attachmentPreview" }, host: { listeners: { "aparte-attachment-preview": "onAttachmentPreview($event)" } }, ngImport: i0 });
|
|
1243
|
+
}
|
|
1244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerAttachmentsDirective, decorators: [{
|
|
1245
|
+
type: Directive,
|
|
1246
|
+
args: [{ selector: 'aparte-composer-attachments', standalone: true }]
|
|
1247
|
+
}], propDecorators: { attachmentPreview: [{
|
|
1248
|
+
type: Output
|
|
1249
|
+
}], onAttachmentPreview: [{
|
|
1250
|
+
type: HostListener,
|
|
1251
|
+
args: ['aparte-attachment-preview', ['$event']]
|
|
1252
|
+
}] } });
|
|
1253
|
+
/** `<aparte-composer-cancel>` — Cancel/stop streaming button primitive for <aparte-composer>. */
|
|
1254
|
+
/**
|
|
1255
|
+
* No member at all: this element observes nothing and dispatches nothing, so the
|
|
1256
|
+
* directive exists only to CLAIM THE TAG — which is what spares a consuming component
|
|
1257
|
+
* `CUSTOM_ELEMENTS_SCHEMA`, a switch that turns checking off for every unknown tag in
|
|
1258
|
+
* the file rather than just this one.
|
|
1259
|
+
*/
|
|
1260
|
+
class AparteComposerCancelDirective {
|
|
1261
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerCancelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1262
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteComposerCancelDirective, isStandalone: true, selector: "aparte-composer-cancel", ngImport: i0 });
|
|
1263
|
+
}
|
|
1264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerCancelDirective, decorators: [{
|
|
1265
|
+
type: Directive,
|
|
1266
|
+
args: [{ selector: 'aparte-composer-cancel', standalone: true }]
|
|
1267
|
+
}] });
|
|
1268
|
+
/** `<aparte-composer-input>` — Contenteditable text input primitive. */
|
|
1269
|
+
class AparteComposerInputDirective extends AparteElementBase {
|
|
1270
|
+
/** Placeholder text (fallback: reads from aparte-composer) */
|
|
1271
|
+
set placeholder(v) { this.write('placeholder', v); }
|
|
1272
|
+
/** Max height in px before scroll (default: 200) */
|
|
1273
|
+
set maxHeight(v) { this.write('max-height', v); }
|
|
1274
|
+
/** Min height in px. When omitted, the stylesheet's min-height governs (44px in aparte.css) — so themes can resize the editor in pure CSS without being fought by an inline height. */
|
|
1275
|
+
set minHeight(v) { this.write('min-height', v); }
|
|
1276
|
+
/** Makes the field non-editable; the composer's own `disabled` also reaches it. */
|
|
1277
|
+
set disabled(v) { this.write('disabled', v); }
|
|
1278
|
+
/** Enter was pressed with content. No detail; the composer reads its own value. Behaviour: Enter submits (calls root.submit()), Shift+Enter inserts newline. Auto-expands up to max-height. Paste strips HTML, handles image paste. */
|
|
1279
|
+
composerSubmit = new EventEmitter();
|
|
1280
|
+
onComposerSubmit() { this.composerSubmit.emit(); }
|
|
1281
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1282
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteComposerInputDirective, isStandalone: true, selector: "aparte-composer-input", inputs: { placeholder: "placeholder", maxHeight: ["maxHeight", "maxHeight", numberAttribute], minHeight: ["minHeight", "minHeight", numberAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { composerSubmit: "composerSubmit" }, host: { listeners: { "aparte-composer-submit": "onComposerSubmit()" } }, usesInheritance: true, ngImport: i0 });
|
|
1283
|
+
}
|
|
1284
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerInputDirective, decorators: [{
|
|
1285
|
+
type: Directive,
|
|
1286
|
+
args: [{ selector: 'aparte-composer-input', standalone: true }]
|
|
1287
|
+
}], propDecorators: { placeholder: [{
|
|
1288
|
+
type: Input
|
|
1289
|
+
}], maxHeight: [{
|
|
1290
|
+
type: Input,
|
|
1291
|
+
args: [{ transform: numberAttribute }]
|
|
1292
|
+
}], minHeight: [{
|
|
1293
|
+
type: Input,
|
|
1294
|
+
args: [{ transform: numberAttribute }]
|
|
1295
|
+
}], disabled: [{
|
|
1296
|
+
type: Input,
|
|
1297
|
+
args: [{ transform: booleanAttribute }]
|
|
1298
|
+
}], composerSubmit: [{
|
|
1299
|
+
type: Output
|
|
1300
|
+
}], onComposerSubmit: [{
|
|
1301
|
+
type: HostListener,
|
|
1302
|
+
args: ['aparte-composer-submit']
|
|
1303
|
+
}] } });
|
|
1304
|
+
/** `<aparte-composer-send>` — Submit button primitive for <aparte-composer>. */
|
|
1305
|
+
/**
|
|
1306
|
+
* No member at all: this element observes nothing and dispatches nothing, so the
|
|
1307
|
+
* directive exists only to CLAIM THE TAG — which is what spares a consuming component
|
|
1308
|
+
* `CUSTOM_ELEMENTS_SCHEMA`, a switch that turns checking off for every unknown tag in
|
|
1309
|
+
* the file rather than just this one.
|
|
1310
|
+
*/
|
|
1311
|
+
class AparteComposerSendDirective {
|
|
1312
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerSendDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1313
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteComposerSendDirective, isStandalone: true, selector: "aparte-composer-send", ngImport: i0 });
|
|
1314
|
+
}
|
|
1315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerSendDirective, decorators: [{
|
|
1316
|
+
type: Directive,
|
|
1317
|
+
args: [{ selector: 'aparte-composer-send', standalone: true }]
|
|
1318
|
+
}] });
|
|
1319
|
+
/** `<aparte-composer-toolbar>` — The composer's bottom row — the strip a mode picker, a model selector or a token counter belongs in, rather than a bar of your own floating below the chat. Purely structural: it lays its children out in a row and gets out of the way. */
|
|
1320
|
+
/**
|
|
1321
|
+
* No member at all: this element observes nothing and dispatches nothing, so the
|
|
1322
|
+
* directive exists only to CLAIM THE TAG — which is what spares a consuming component
|
|
1323
|
+
* `CUSTOM_ELEMENTS_SCHEMA`, a switch that turns checking off for every unknown tag in
|
|
1324
|
+
* the file rather than just this one.
|
|
1325
|
+
*/
|
|
1326
|
+
class AparteComposerToolbarDirective {
|
|
1327
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerToolbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1328
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteComposerToolbarDirective, isStandalone: true, selector: "aparte-composer-toolbar", ngImport: i0 });
|
|
1329
|
+
}
|
|
1330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteComposerToolbarDirective, decorators: [{
|
|
1331
|
+
type: Directive,
|
|
1332
|
+
args: [{ selector: 'aparte-composer-toolbar', standalone: true }]
|
|
1333
|
+
}] });
|
|
1334
|
+
/** `<aparte-conversation-list>` — Conversation-history sidebar — a framework-agnostic web component. The host sets the `conversations` JS property and the `active-id` attribute; this renders the list and fires the user's intent, never acting on it itself. */
|
|
1335
|
+
class AparteConversationListDirective extends AparteElementBase {
|
|
1336
|
+
/** The id of the conversation to render as selected. */
|
|
1337
|
+
set activeId(v) { this.write('active-id', v); }
|
|
1338
|
+
/** A row was activated; the host loads that conversation. */
|
|
1339
|
+
selectConversation = new EventEmitter();
|
|
1340
|
+
/** The delete action was pressed. Nothing is removed here. */
|
|
1341
|
+
deleteConversation = new EventEmitter();
|
|
1342
|
+
/** The archive action was pressed on a live conversation. */
|
|
1343
|
+
archiveConversation = new EventEmitter();
|
|
1344
|
+
/** The same action on an already-archived one; same detail shape, opposite intent. */
|
|
1345
|
+
unarchiveConversation = new EventEmitter();
|
|
1346
|
+
onSelectConversation(e) { this.selectConversation.emit(e.detail); }
|
|
1347
|
+
onDeleteConversation(e) { this.deleteConversation.emit(e.detail); }
|
|
1348
|
+
onArchiveConversation(e) { this.archiveConversation.emit(e.detail); }
|
|
1349
|
+
onUnarchiveConversation(e) { this.unarchiveConversation.emit(e.detail); }
|
|
1350
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteConversationListDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1351
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteConversationListDirective, isStandalone: true, selector: "aparte-conversation-list", inputs: { activeId: "activeId" }, outputs: { selectConversation: "selectConversation", deleteConversation: "deleteConversation", archiveConversation: "archiveConversation", unarchiveConversation: "unarchiveConversation" }, host: { listeners: { "aparte-select-conversation": "onSelectConversation($event)", "aparte-delete-conversation": "onDeleteConversation($event)", "aparte-archive-conversation": "onArchiveConversation($event)", "aparte-unarchive-conversation": "onUnarchiveConversation($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1352
|
+
}
|
|
1353
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteConversationListDirective, decorators: [{
|
|
1354
|
+
type: Directive,
|
|
1355
|
+
args: [{ selector: 'aparte-conversation-list', standalone: true }]
|
|
1356
|
+
}], propDecorators: { activeId: [{
|
|
1357
|
+
type: Input
|
|
1358
|
+
}], selectConversation: [{
|
|
1359
|
+
type: Output
|
|
1360
|
+
}], deleteConversation: [{
|
|
1361
|
+
type: Output
|
|
1362
|
+
}], archiveConversation: [{
|
|
1363
|
+
type: Output
|
|
1364
|
+
}], unarchiveConversation: [{
|
|
1365
|
+
type: Output
|
|
1366
|
+
}], onSelectConversation: [{
|
|
1367
|
+
type: HostListener,
|
|
1368
|
+
args: ['aparte-select-conversation', ['$event']]
|
|
1369
|
+
}], onDeleteConversation: [{
|
|
1370
|
+
type: HostListener,
|
|
1371
|
+
args: ['aparte-delete-conversation', ['$event']]
|
|
1372
|
+
}], onArchiveConversation: [{
|
|
1373
|
+
type: HostListener,
|
|
1374
|
+
args: ['aparte-archive-conversation', ['$event']]
|
|
1375
|
+
}], onUnarchiveConversation: [{
|
|
1376
|
+
type: HostListener,
|
|
1377
|
+
args: ['aparte-unarchive-conversation', ['$event']]
|
|
1378
|
+
}] } });
|
|
1379
|
+
/** `<aparte-elicitation>` — The default presenter for a request to the human. It renders nothing itself: it registers as the presenter for the config governing its subtree, and mounts a panel inside the nearest `<aparte-composer>` when something asks — a tool handler calling `requestUserInput`, or core's own approval gate. */
|
|
1380
|
+
/**
|
|
1381
|
+
* No member at all: this element observes nothing and dispatches nothing, so the
|
|
1382
|
+
* directive exists only to CLAIM THE TAG — which is what spares a consuming component
|
|
1383
|
+
* `CUSTOM_ELEMENTS_SCHEMA`, a switch that turns checking off for every unknown tag in
|
|
1384
|
+
* the file rather than just this one.
|
|
1385
|
+
*/
|
|
1386
|
+
class AparteElicitationDirective {
|
|
1387
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteElicitationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1388
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: AparteElicitationDirective, isStandalone: true, selector: "aparte-elicitation", ngImport: i0 });
|
|
1389
|
+
}
|
|
1390
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteElicitationDirective, decorators: [{
|
|
1391
|
+
type: Directive,
|
|
1392
|
+
args: [{ selector: 'aparte-elicitation', standalone: true }]
|
|
1393
|
+
}] });
|
|
1394
|
+
/** `<aparte-optgroup>` — AparteOptgroup */
|
|
1395
|
+
class AparteOptgroupDirective extends AparteElementBase {
|
|
1396
|
+
/** Group label */
|
|
1397
|
+
set label(v) { this.write('label', v); }
|
|
1398
|
+
/** Allow collapse/expand */
|
|
1399
|
+
set collapsible(v) { this.write('collapsible', v); }
|
|
1400
|
+
/** Collapsed state */
|
|
1401
|
+
set collapsed(v) { this.write('collapsed', v); }
|
|
1402
|
+
/** Shows a spinner in place of the group's options. */
|
|
1403
|
+
set loading(v) { this.write('loading', v); }
|
|
1404
|
+
/** The group was collapsed or expanded. */
|
|
1405
|
+
optgroupToggle = new EventEmitter();
|
|
1406
|
+
onOptgroupToggle(e) { this.optgroupToggle.emit(e.detail); }
|
|
1407
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteOptgroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1408
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteOptgroupDirective, isStandalone: true, selector: "aparte-optgroup", inputs: { label: "label", collapsible: ["collapsible", "collapsible", booleanAttribute], collapsed: ["collapsed", "collapsed", booleanAttribute], loading: ["loading", "loading", booleanAttribute] }, outputs: { optgroupToggle: "optgroupToggle" }, host: { listeners: { "aparte-optgroup-toggle": "onOptgroupToggle($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1409
|
+
}
|
|
1410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteOptgroupDirective, decorators: [{
|
|
1411
|
+
type: Directive,
|
|
1412
|
+
args: [{ selector: 'aparte-optgroup', standalone: true }]
|
|
1413
|
+
}], propDecorators: { label: [{
|
|
1414
|
+
type: Input
|
|
1415
|
+
}], collapsible: [{
|
|
1416
|
+
type: Input,
|
|
1417
|
+
args: [{ transform: booleanAttribute }]
|
|
1418
|
+
}], collapsed: [{
|
|
1419
|
+
type: Input,
|
|
1420
|
+
args: [{ transform: booleanAttribute }]
|
|
1421
|
+
}], loading: [{
|
|
1422
|
+
type: Input,
|
|
1423
|
+
args: [{ transform: booleanAttribute }]
|
|
1424
|
+
}], optgroupToggle: [{
|
|
1425
|
+
type: Output
|
|
1426
|
+
}], onOptgroupToggle: [{
|
|
1427
|
+
type: HostListener,
|
|
1428
|
+
args: ['aparte-optgroup-toggle', ['$event']]
|
|
1429
|
+
}] } });
|
|
1430
|
+
/** `<aparte-option>` — AparteOption */
|
|
1431
|
+
class AparteOptionDirective extends AparteElementBase {
|
|
1432
|
+
/** Option value */
|
|
1433
|
+
set value(v) { this.write('value', v); }
|
|
1434
|
+
/** Disabled state */
|
|
1435
|
+
set disabled(v) { this.write('disabled', v); }
|
|
1436
|
+
/** Selected state */
|
|
1437
|
+
set selected(v) { this.write('selected', v); }
|
|
1438
|
+
/** Free-form status the host sets; styled, never read by core. */
|
|
1439
|
+
set dataStatus(v) { this.write('data-status', v); }
|
|
1440
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteOptionDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1441
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteOptionDirective, isStandalone: true, selector: "aparte-option", inputs: { value: "value", disabled: ["disabled", "disabled", booleanAttribute], selected: ["selected", "selected", booleanAttribute], dataStatus: "dataStatus" }, usesInheritance: true, ngImport: i0 });
|
|
1442
|
+
}
|
|
1443
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteOptionDirective, decorators: [{
|
|
1444
|
+
type: Directive,
|
|
1445
|
+
args: [{ selector: 'aparte-option', standalone: true }]
|
|
1446
|
+
}], propDecorators: { value: [{
|
|
1447
|
+
type: Input
|
|
1448
|
+
}], disabled: [{
|
|
1449
|
+
type: Input,
|
|
1450
|
+
args: [{ transform: booleanAttribute }]
|
|
1451
|
+
}], selected: [{
|
|
1452
|
+
type: Input,
|
|
1453
|
+
args: [{ transform: booleanAttribute }]
|
|
1454
|
+
}], dataStatus: [{
|
|
1455
|
+
type: Input
|
|
1456
|
+
}] } });
|
|
1457
|
+
/** `<aparte-progress-spinner>` — AparteProgressSpinner */
|
|
1458
|
+
class AparteProgressSpinnerDirective extends AparteElementBase {
|
|
1459
|
+
/** Progress percentage 0–100 (omit for indeterminate) */
|
|
1460
|
+
set value(v) { this.write('value', v); }
|
|
1461
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteProgressSpinnerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1462
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteProgressSpinnerDirective, isStandalone: true, selector: "aparte-progress-spinner", inputs: { value: ["value", "value", numberAttribute] }, usesInheritance: true, ngImport: i0 });
|
|
1463
|
+
}
|
|
1464
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteProgressSpinnerDirective, decorators: [{
|
|
1465
|
+
type: Directive,
|
|
1466
|
+
args: [{ selector: 'aparte-progress-spinner', standalone: true }]
|
|
1467
|
+
}], propDecorators: { value: [{
|
|
1468
|
+
type: Input,
|
|
1469
|
+
args: [{ transform: numberAttribute }]
|
|
1470
|
+
}] } });
|
|
1471
|
+
/** `<aparte-select>` — Dropdown select for aparté — a vanilla web component with optional grouping, a search filter and a keyboard-driven listbox. */
|
|
1472
|
+
class AparteSelectDirective extends AparteElementBase {
|
|
1473
|
+
/** The selected option's value. */
|
|
1474
|
+
set value(v) { this.write('value', v); }
|
|
1475
|
+
/** Shown while nothing is selected. */
|
|
1476
|
+
set placeholder(v) { this.write('placeholder', v); }
|
|
1477
|
+
/** Blocks opening and selection. */
|
|
1478
|
+
set disabled(v) { this.write('disabled', v); }
|
|
1479
|
+
/** Renders `<aparte-optgroup>` children as collapsible groups. */
|
|
1480
|
+
set grouped(v) { this.write('grouped', v); }
|
|
1481
|
+
/** Adds a filter field above the options. */
|
|
1482
|
+
set searchable(v) { this.write('searchable', v); }
|
|
1483
|
+
/** Reflects (and controls) whether the dropdown is open. */
|
|
1484
|
+
set open(v) { this.write('open', v); }
|
|
1485
|
+
/** The dropdown opened. No detail. */
|
|
1486
|
+
selectOpen = new EventEmitter();
|
|
1487
|
+
/** The dropdown closed. No detail. */
|
|
1488
|
+
selectClose = new EventEmitter();
|
|
1489
|
+
/** The selection changed; carries the new value, its label and the previous value. */
|
|
1490
|
+
selectChange = new EventEmitter();
|
|
1491
|
+
onSelectOpen() { this.selectOpen.emit(); }
|
|
1492
|
+
onSelectClose() { this.selectClose.emit(); }
|
|
1493
|
+
onSelectChange(e) { this.selectChange.emit(e.detail); }
|
|
1494
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteSelectDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1495
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.25", type: AparteSelectDirective, isStandalone: true, selector: "aparte-select", inputs: { value: "value", placeholder: "placeholder", disabled: ["disabled", "disabled", booleanAttribute], grouped: ["grouped", "grouped", booleanAttribute], searchable: ["searchable", "searchable", booleanAttribute], open: ["open", "open", booleanAttribute] }, outputs: { selectOpen: "selectOpen", selectClose: "selectClose", selectChange: "selectChange" }, host: { listeners: { "aparte-select-open": "onSelectOpen()", "aparte-select-close": "onSelectClose()", "aparte-select-change": "onSelectChange($event)" } }, usesInheritance: true, ngImport: i0 });
|
|
1496
|
+
}
|
|
1497
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AparteSelectDirective, decorators: [{
|
|
1498
|
+
type: Directive,
|
|
1499
|
+
args: [{ selector: 'aparte-select', standalone: true }]
|
|
1500
|
+
}], propDecorators: { value: [{
|
|
1501
|
+
type: Input
|
|
1502
|
+
}], placeholder: [{
|
|
1503
|
+
type: Input
|
|
1504
|
+
}], disabled: [{
|
|
1505
|
+
type: Input,
|
|
1506
|
+
args: [{ transform: booleanAttribute }]
|
|
1507
|
+
}], grouped: [{
|
|
1508
|
+
type: Input,
|
|
1509
|
+
args: [{ transform: booleanAttribute }]
|
|
1510
|
+
}], searchable: [{
|
|
1511
|
+
type: Input,
|
|
1512
|
+
args: [{ transform: booleanAttribute }]
|
|
1513
|
+
}], open: [{
|
|
1514
|
+
type: Input,
|
|
1515
|
+
args: [{ transform: booleanAttribute }]
|
|
1516
|
+
}], selectOpen: [{
|
|
1517
|
+
type: Output
|
|
1518
|
+
}], selectClose: [{
|
|
1519
|
+
type: Output
|
|
1520
|
+
}], selectChange: [{
|
|
1521
|
+
type: Output
|
|
1522
|
+
}], onSelectOpen: [{
|
|
1523
|
+
type: HostListener,
|
|
1524
|
+
args: ['aparte-select-open']
|
|
1525
|
+
}], onSelectClose: [{
|
|
1526
|
+
type: HostListener,
|
|
1527
|
+
args: ['aparte-select-close']
|
|
1528
|
+
}], onSelectChange: [{
|
|
1529
|
+
type: HostListener,
|
|
1530
|
+
args: ['aparte-select-change', ['$event']]
|
|
1531
|
+
}] } });
|
|
1532
|
+
/**
|
|
1533
|
+
* Every element directive, for one import in a standalone component.
|
|
1534
|
+
*
|
|
1535
|
+
* ```ts
|
|
1536
|
+
* @Component({ imports: [...APARTE_ELEMENT_DIRECTIVES], template: `…` })
|
|
1537
|
+
* ```
|
|
1538
|
+
*/
|
|
1539
|
+
const APARTE_ELEMENT_DIRECTIVES = [
|
|
1540
|
+
AparteChatBubbleDirective,
|
|
1541
|
+
AparteChatStatusDirective,
|
|
1542
|
+
AparteChatViewportDirective,
|
|
1543
|
+
AparteComposerDirective,
|
|
1544
|
+
AparteComposerActionDirective,
|
|
1545
|
+
AparteComposerAddAttachmentDirective,
|
|
1546
|
+
AparteComposerAttachmentsDirective,
|
|
1547
|
+
AparteComposerCancelDirective,
|
|
1548
|
+
AparteComposerInputDirective,
|
|
1549
|
+
AparteComposerSendDirective,
|
|
1550
|
+
AparteComposerToolbarDirective,
|
|
1551
|
+
AparteConversationListDirective,
|
|
1552
|
+
AparteElicitationDirective,
|
|
1553
|
+
AparteOptgroupDirective,
|
|
1554
|
+
AparteOptionDirective,
|
|
1555
|
+
AparteProgressSpinnerDirective,
|
|
1556
|
+
AparteSelectDirective,
|
|
1557
|
+
];
|
|
1558
|
+
|
|
927
1559
|
/**
|
|
928
1560
|
* Angular 19 Signal-based wrapper around AparteConversationManager.
|
|
929
1561
|
*
|
|
@@ -1058,5 +1690,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
1058
1690
|
* Generated bundle index. Do not edit.
|
|
1059
1691
|
*/
|
|
1060
1692
|
|
|
1061
|
-
export { APARTE_CLIENT_OPTIONS, APARTE_CONFIG_TOKEN, AparteAiService, AparteChatComponent, AparteUiComponent, ConversationManagerService, provideAparte };
|
|
1693
|
+
export { APARTE_CLIENT_OPTIONS, APARTE_CONFIG_TOKEN, APARTE_ELEMENT_DIRECTIVES, AparteAiService, AparteChatBubbleDirective, AparteChatComponent, AparteChatStatusDirective, AparteChatViewportDirective, AparteComposerActionDirective, AparteComposerAddAttachmentDirective, AparteComposerAttachmentsDirective, AparteComposerCancelDirective, AparteComposerDirective, AparteComposerInputDirective, AparteComposerSendDirective, AparteComposerToolbarDirective, AparteConversationListDirective, AparteElicitationDirective, AparteOptgroupDirective, AparteOptionDirective, AparteProgressSpinnerDirective, AparteSelectDirective, AparteUiComponent, ConversationManagerService, provideAparte };
|
|
1062
1694
|
//# sourceMappingURL=aparte-angular.mjs.map
|