@aparte/core 0.12.0 → 0.13.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/client/aparte-client.d.ts +25 -0
- package/dist/client/aparte-client.d.ts.map +1 -1
- package/dist/components/bubble/aparte-chat-bubble.d.ts +117 -0
- package/dist/components/bubble/aparte-chat-bubble.d.ts.map +1 -1
- package/dist/components/chat/aparte-chat.d.ts +70 -15
- package/dist/components/chat/aparte-chat.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-action.d.ts +48 -7
- package/dist/components/composer/aparte-composer-action.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-add-attachment.d.ts +37 -4
- package/dist/components/composer/aparte-composer-add-attachment.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-attachments.d.ts +35 -3
- package/dist/components/composer/aparte-composer-attachments.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-cancel.d.ts +25 -2
- package/dist/components/composer/aparte-composer-cancel.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-input.d.ts +54 -5
- package/dist/components/composer/aparte-composer-input.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-send.d.ts +47 -4
- package/dist/components/composer/aparte-composer-send.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer-toolbar.d.ts +15 -4
- package/dist/components/composer/aparte-composer-toolbar.d.ts.map +1 -1
- package/dist/components/composer/aparte-composer.d.ts +139 -7
- package/dist/components/composer/aparte-composer.d.ts.map +1 -1
- package/dist/components/composer/index.d.ts +1 -1
- package/dist/components/composer/index.d.ts.map +1 -1
- package/dist/components/conversation-list/aparte-conversation-list.d.ts +50 -8
- package/dist/components/conversation-list/aparte-conversation-list.d.ts.map +1 -1
- package/dist/components/elicitation/aparte-elicitation.d.ts +45 -0
- package/dist/components/elicitation/aparte-elicitation.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/status/aparte-chat-status.d.ts +47 -5
- package/dist/components/status/aparte-chat-status.d.ts.map +1 -1
- package/dist/components/viewport/aparte-chat-viewport.d.ts +78 -8
- package/dist/components/viewport/aparte-chat-viewport.d.ts.map +1 -1
- package/dist/config/aparte-config.d.ts +22 -0
- package/dist/config/aparte-config.d.ts.map +1 -1
- package/dist/config/icon-provider.d.ts +17 -15
- package/dist/config/icon-provider.d.ts.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/custom-elements.json +5400 -3278
- package/dist/elicitation/approval-panel.d.ts.map +1 -1
- package/dist/elicitation/panel.d.ts +23 -2
- package/dist/elicitation/panel.d.ts.map +1 -1
- package/dist/generated/element-attributes.d.ts +21 -15
- package/dist/generated/element-attributes.d.ts.map +1 -1
- package/dist/glyphs-QXfbL3n_.js +81 -0
- package/dist/glyphs-QXfbL3n_.js.map +1 -0
- package/dist/host/aparte-chat-host.d.ts +22 -21
- package/dist/host/aparte-chat-host.d.ts.map +1 -1
- package/dist/icons/extended.d.ts +153 -0
- package/dist/icons/extended.d.ts.map +1 -0
- package/dist/icons/glyphs.d.ts +98 -0
- package/dist/icons/glyphs.d.ts.map +1 -0
- package/dist/icons/index.d.ts +24 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons.d.ts +14 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +157 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.css +5082 -2119
- package/dist/index.d.ts +37 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +167 -67
- package/dist/index.js.map +1 -1
- package/dist/index.node.d.ts +2 -2
- package/dist/index.node.d.ts.map +1 -1
- package/dist/index.node.js +1 -1
- package/dist/index.node.js.map +1 -1
- package/dist/{is-awaiting-reply-CxWRISBC.js → is-awaiting-reply-DrO_oR32.js} +369 -148
- package/dist/is-awaiting-reply-DrO_oR32.js.map +1 -0
- package/dist/primitives/icon/aparte-icon.d.ts +49 -0
- package/dist/primitives/icon/aparte-icon.d.ts.map +1 -0
- package/dist/primitives/icon/index.d.ts +2 -0
- package/dist/primitives/icon/index.d.ts.map +1 -0
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/progress-spinner/aparte-progress-spinner.d.ts +20 -5
- package/dist/primitives/progress-spinner/aparte-progress-spinner.d.ts.map +1 -1
- package/dist/primitives/select/aparte-optgroup.d.ts +30 -7
- package/dist/primitives/select/aparte-optgroup.d.ts.map +1 -1
- package/dist/primitives/select/aparte-option.d.ts +29 -3
- package/dist/primitives/select/aparte-option.d.ts.map +1 -1
- package/dist/primitives/select/aparte-select.d.ts +36 -11
- package/dist/primitives/select/aparte-select.d.ts.map +1 -1
- package/dist/renderers/segments/artifact/card.d.ts.map +1 -1
- package/dist/renderers/segments/thinking.d.ts.map +1 -1
- package/dist/renderers/segments/tool-call.d.ts.map +1 -1
- package/dist/types/element-map.d.ts +2 -0
- package/dist/types/element-map.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/segments.d.ts +92 -7
- package/dist/types/segments.d.ts.map +1 -1
- package/dist/types/tools.d.ts +2 -0
- package/dist/types/tools.d.ts.map +1 -1
- package/package.json +7 -1
- package/dist/is-awaiting-reply-CxWRISBC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-panel.d.ts","sourceRoot":"","sources":["../../src/elicitation/approval-panel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG7E,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,oEAAoE;IACpE,UAAU,IAAI,oBAAoB,CAAC;IACnC,uDAAuD;IACvD,UAAU,IAAI,OAAO,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACnB;AASD,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,QAAQ,EAAE,MAAM,IAAI,GACrB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"approval-panel.d.ts","sourceRoot":"","sources":["../../src/elicitation/approval-panel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAG7E,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,oEAAoE;IACpE,UAAU,IAAI,oBAAoB,CAAC;IACnC,uDAAuD;IACvD,UAAU,IAAI,OAAO,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,6DAA6D;IAC7D,OAAO,IAAI,IAAI,CAAC;CACnB;AASD,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,QAAQ,EAAE,MAAM,IAAI,GACrB,kBAAkB,CAsGpB"}
|
|
@@ -32,19 +32,40 @@ export interface BuiltElicitationPanel {
|
|
|
32
32
|
focus(): void;
|
|
33
33
|
/**
|
|
34
34
|
* What the composer's one button means on the question currently shown:
|
|
35
|
-
* `'advance'` while there are more questions ahead, `'submit'` on the last
|
|
35
|
+
* `'advance'` while there are more questions ahead, `'submit'` on the last, and
|
|
36
|
+
* `'none'` when this panel has no act for it and it should not be drawn.
|
|
36
37
|
*
|
|
37
38
|
* The composer already has a button, in a place the user knows, and it already
|
|
38
39
|
* changes meaning (send / stop / submit). Giving it a fourth — advance — is why
|
|
39
40
|
* this panel needs no "Next" of its own: no second row, no height that changes,
|
|
40
41
|
* and the tabs stay for jumping around. It also makes the button honest, which a
|
|
41
42
|
* check on a form with three questions left was not.
|
|
43
|
+
*
|
|
44
|
+
* `'none'` is the same honesty one step further, for the shape where the button
|
|
45
|
+
* has no meaning at all: a single question whose options settle on the click.
|
|
46
|
+
* Assignable to the composer's `AparteComposerPanelMode` and deliberately spelled
|
|
47
|
+
* out rather than imported — this layer describes what the PANEL has, and knows
|
|
48
|
+
* nothing about the element that presents it.
|
|
42
49
|
*/
|
|
43
|
-
mode(): 'advance' | 'submit';
|
|
50
|
+
mode(): 'advance' | 'submit' | 'none';
|
|
44
51
|
/** Whether that button is enabled: this question answered, or all of them. */
|
|
45
52
|
canProceed(): boolean;
|
|
46
53
|
/** Act on it. Advancing shows the next question; submitting is the presenter's. */
|
|
47
54
|
proceed(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Settled from INSIDE the panel: an option was clicked and that click is the
|
|
57
|
+
* whole answer. The value is the content, shaped like `getContent()`.
|
|
58
|
+
*
|
|
59
|
+
* The same contract `BuiltApprovalPanel.onSettle` already has, and presented by
|
|
60
|
+
* the same path — because it is the same act. A single-choice question is one
|
|
61
|
+
* gesture, not a value you pick and then submit: WCAG's SC 3.2.2 and its F36
|
|
62
|
+
* failure are about auto-submitting a form when an INPUT is set, which is why
|
|
63
|
+
* these options are buttons rather than radios that fire on change.
|
|
64
|
+
*
|
|
65
|
+
* Only ever called for that shape. A form, a multi-select and a text field all
|
|
66
|
+
* collect a value and resolve through the composer's button as before.
|
|
67
|
+
*/
|
|
68
|
+
onSettle(cb: (content: unknown) => void): void;
|
|
48
69
|
/**
|
|
49
70
|
* Re-apply every string this panel took from the locale, in place.
|
|
50
71
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/elicitation/panel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,uBAAuB,EAK1B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/elicitation/panel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,uBAAuB,EAK1B,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,gEAAgE;IAChE,UAAU,IAAI,OAAO,CAAC;IACtB,yDAAyD;IACzD,UAAU,IAAI,OAAO,CAAC;IACtB,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;IACd;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,IAAI,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,8EAA8E;IAC9E,UAAU,IAAI,OAAO,CAAC;IACtB,mFAAmF;IACnF,OAAO,IAAI,IAAI,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI,CAAC;CACnB;AA4cD,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,MAAM,IAAI,GACrB,qBAAqB,CAevB"}
|
|
@@ -8,7 +8,7 @@ export interface AparteChatAttributes {
|
|
|
8
8
|
'center-empty'?: boolean;
|
|
9
9
|
/** Add the file picker + chips strip to the default composition (opt-in: the host must consume the files — an `AparteClient` does, a hand-rolled loop must read `event.detail.files`) */
|
|
10
10
|
attachments?: boolean;
|
|
11
|
-
/** The wrapper's explicit hands-off signal: set it and this element composes none of its own children, because the framework owns them.
|
|
11
|
+
/** The wrapper's explicit hands-off signal: set it and this element composes none of its own children, because the framework owns them. Read once at connect (it is not observed), so it has to be in the initial markup. Angular's wrapper sets it on this element — its component selector IS `aparte-chat`; React/Vue/Svelte render a `[data-aparte-chat]` div and never create this element at all. */
|
|
12
12
|
'framework-managed'?: boolean;
|
|
13
13
|
}
|
|
14
14
|
/** `<aparte-chat-bubble>` — One message: plain content or a list of rich segments, in light DOM. */
|
|
@@ -28,11 +28,11 @@ export interface AparteChatBubbleAttributes {
|
|
|
28
28
|
/** The display name in the header. */
|
|
29
29
|
name?: string;
|
|
30
30
|
}
|
|
31
|
-
/** `<aparte-chat-status>` — A standalone status line — a light-DOM
|
|
31
|
+
/** `<aparte-chat-status>` — A standalone status line — a light-DOM indicator the APP owns. Nothing in core turns it on: the framework host only ever flips it back OFF (on the first streamed token), and the four wrappers render one inside the viewport driven by their own `isTyping` prop. */
|
|
32
32
|
export interface AparteChatStatusAttributes {
|
|
33
33
|
/** Shows or hides the indicator. */
|
|
34
34
|
visible?: boolean;
|
|
35
|
-
/** The line to show.
|
|
35
|
+
/** The line to show. Absent, the line is dots-only and the accessible name falls back to the literal `Typing` (not the locale's string). */
|
|
36
36
|
text?: string;
|
|
37
37
|
}
|
|
38
38
|
/** `<aparte-chat-viewport>` — The transcript surface: a light-DOM container with sticky scrolling, token streaming and segment-aware rendering. */
|
|
@@ -43,14 +43,14 @@ export interface AparteChatViewportAttributes {
|
|
|
43
43
|
'max-rendered-bubbles'?: number;
|
|
44
44
|
/** 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. */
|
|
45
45
|
'max-messages'?: number;
|
|
46
|
-
/** The wrapper's explicit hands-off signal: set it and this element
|
|
46
|
+
/** The wrapper's explicit hands-off signal: set it and this element builds no wrapper of its own and relocates none of the nodes the FRAMEWORK renders into it, because the framework owns them. Not "none of its children": core's own scroll-to-bottom button is re-appended whenever it stops being last, and that path runs in this mode only. All four wrappers set it. */
|
|
47
47
|
'framework-managed'?: boolean;
|
|
48
48
|
}
|
|
49
|
-
/** `<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,
|
|
49
|
+
/** `<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, whether a panel is up. */
|
|
50
50
|
export interface AparteComposerAttributes {
|
|
51
|
-
/**
|
|
51
|
+
/** Fallback placeholder for `<aparte-composer-input>`, which reads it off this element when it carries none of its own. Read when that input renders, not pushed: changing it here leaves an input already on the page as it was. */
|
|
52
52
|
placeholder?: string;
|
|
53
|
-
/** Disables the
|
|
53
|
+
/** Disables the composer's own controls — the input, send, add-attachment and `<aparte-composer-action>` buttons each read it. What you put in the toolbar is yours to disable. */
|
|
54
54
|
disabled?: boolean;
|
|
55
55
|
/** The id of the `<aparte-chat>` this composer drives. */
|
|
56
56
|
target?: string;
|
|
@@ -65,7 +65,7 @@ export interface AparteComposerActionAttributes {
|
|
|
65
65
|
label?: string;
|
|
66
66
|
/** Disables the button */
|
|
67
67
|
disabled?: boolean;
|
|
68
|
-
/** Identifies WHICH button fired; carried as `AparteActionClickEventDetail.actionId`. Read lazily at dispatch time rather than observed, so
|
|
68
|
+
/** Identifies WHICH button fired; carried as `AparteActionClickEventDetail.actionId`. Read lazily at dispatch time rather than observed, so changing it takes effect on the next click. */
|
|
69
69
|
'action-id'?: string;
|
|
70
70
|
}
|
|
71
71
|
/** `<aparte-composer-add-attachment>` — File picker button for <aparte-composer>. */
|
|
@@ -74,7 +74,7 @@ export interface AparteComposerAddAttachmentAttributes {
|
|
|
74
74
|
accept?: string;
|
|
75
75
|
/** Allow multiple file selection (default: true) */
|
|
76
76
|
multiple?: boolean | 'false';
|
|
77
|
-
/** Greys out the picker
|
|
77
|
+
/** Greys out the picker. Drops are gated by the composer root's `disabled`, not by this one. */
|
|
78
78
|
disabled?: boolean;
|
|
79
79
|
}
|
|
80
80
|
/** `<aparte-composer-input>` — Contenteditable text input primitive. */
|
|
@@ -90,7 +90,7 @@ export interface AparteComposerInputAttributes {
|
|
|
90
90
|
}
|
|
91
91
|
/** `<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. */
|
|
92
92
|
export interface AparteComposerToolbarAttributes {
|
|
93
|
-
/** Reflected BY the element while it holds
|
|
93
|
+
/** Reflected BY the element while it holds neither an element child nor non-whitespace text; the stylesheet hides it then. Read-only, do not set it yourself. */
|
|
94
94
|
'data-empty'?: boolean;
|
|
95
95
|
}
|
|
96
96
|
/** `<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. */
|
|
@@ -98,15 +98,20 @@ export interface AparteConversationListAttributes {
|
|
|
98
98
|
/** The id of the conversation to render as selected. */
|
|
99
99
|
'active-id'?: string;
|
|
100
100
|
}
|
|
101
|
+
/** `<aparte-icon>` — AparteIcon */
|
|
102
|
+
export interface AparteIconAttributes {
|
|
103
|
+
/** Which glyph to draw. One of the names `setIconProvider` accepts; an unknown name draws nothing rather than a broken-image box. */
|
|
104
|
+
name?: string;
|
|
105
|
+
}
|
|
101
106
|
/** `<aparte-optgroup>` — AparteOptgroup */
|
|
102
107
|
export interface AparteOptgroupAttributes {
|
|
103
108
|
/** Group label */
|
|
104
109
|
label?: string;
|
|
105
|
-
/**
|
|
110
|
+
/** Adds the chevron and the click handler to the header — so it needs a `label`, and it is read only when that header is first built. */
|
|
106
111
|
collapsible?: boolean;
|
|
107
112
|
/** Collapsed state */
|
|
108
113
|
collapsed?: boolean;
|
|
109
|
-
/**
|
|
114
|
+
/** Appends a spinner row to the group; the options stay visible. */
|
|
110
115
|
loading?: boolean;
|
|
111
116
|
}
|
|
112
117
|
/** `<aparte-option>` — AparteOption */
|
|
@@ -131,11 +136,11 @@ export interface AparteSelectAttributes {
|
|
|
131
136
|
value?: string;
|
|
132
137
|
/** Shown while nothing is selected. */
|
|
133
138
|
placeholder?: string;
|
|
134
|
-
/** Blocks opening
|
|
139
|
+
/** Blocks opening the dropdown. */
|
|
135
140
|
disabled?: boolean;
|
|
136
|
-
/**
|
|
141
|
+
/** Observed, never read: `<aparte-optgroup>` children render as groups without it. */
|
|
137
142
|
grouped?: boolean;
|
|
138
|
-
/** Adds a filter field above the options. */
|
|
143
|
+
/** Adds a filter field above the options. Read on the first render only. */
|
|
139
144
|
searchable?: boolean;
|
|
140
145
|
/** Reflects (and controls) whether the dropdown is open. */
|
|
141
146
|
open?: boolean;
|
|
@@ -167,6 +172,7 @@ export interface AparteElementAttributes {
|
|
|
167
172
|
'aparte-composer-toolbar': AparteComposerToolbarAttributes;
|
|
168
173
|
'aparte-conversation-list': AparteConversationListAttributes;
|
|
169
174
|
'aparte-elicitation': AparteNoAttributes;
|
|
175
|
+
'aparte-icon': AparteIconAttributes;
|
|
170
176
|
'aparte-optgroup': AparteOptgroupAttributes;
|
|
171
177
|
'aparte-option': AparteOptionAttributes;
|
|
172
178
|
'aparte-progress-spinner': AparteProgressSpinnerAttributes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-attributes.d.ts","sourceRoot":"","sources":["../../src/generated/element-attributes.ts"],"names":[],"mappings":"AAIA,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACjC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sGAAsG;IACtG,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yLAAyL;IACzL,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"element-attributes.d.ts","sourceRoot":"","sources":["../../src/generated/element-attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const copyIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>`;
|
|
2
|
+
const checkIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>`;
|
|
3
|
+
const sendIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>`;
|
|
4
|
+
const loadingIcon = `<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="aparte-icon aparte-icon-spin"><circle cx="12" cy="12" r="10" stroke-opacity="0.25"/><path d="M12 2a10 10 0 0 1 10 10"/></svg>`;
|
|
5
|
+
const errorIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>`;
|
|
6
|
+
const expandIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>`;
|
|
7
|
+
const collapseIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="18 15 12 9 6 15"/></svg>`;
|
|
8
|
+
const terminalIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>`;
|
|
9
|
+
const paperclipIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>`;
|
|
10
|
+
const imageIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg>`;
|
|
11
|
+
const fileIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>`;
|
|
12
|
+
const scrollDownIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><polyline points="19 12 12 19 5 12"/></svg>`;
|
|
13
|
+
const retryIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/></svg>`;
|
|
14
|
+
const editIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>`;
|
|
15
|
+
const thumbUpIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 10v12"/><path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"/></svg>`;
|
|
16
|
+
const thumbDownIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 14V2"/><path d="M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z"/></svg>`;
|
|
17
|
+
const prevBranchIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>`;
|
|
18
|
+
const nextBranchIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"/></svg>`;
|
|
19
|
+
const toolIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`;
|
|
20
|
+
const closeIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>`;
|
|
21
|
+
const stopIcon = `<svg class="aparte-icon" viewBox="0 0 16 16" fill="currentColor"><rect x="2" y="2" width="12" height="12" rx="2"/></svg>`;
|
|
22
|
+
const infoIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>`;
|
|
23
|
+
const archiveIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 8 21 8"/><path d="M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8"/><polyline points="9 14 12 11 15 14"/><line x1="12" y1="11" x2="12" y2="19"/></svg>`;
|
|
24
|
+
const unarchiveIcon = `<svg class="aparte-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 8 21 8"/><path d="M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8"/><polyline points="9 14 12 17 15 14"/><line x1="12" y1="11" x2="12" y2="17"/></svg>`;
|
|
25
|
+
const downloadIcon = `<svg class="aparte-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 2v9m0 0l-3-3m3 3l3-3M2 13h12"/></svg>`;
|
|
26
|
+
const APARTE_ICON_GLYPHS = {
|
|
27
|
+
copy: copyIcon,
|
|
28
|
+
check: checkIcon,
|
|
29
|
+
send: sendIcon,
|
|
30
|
+
loading: loadingIcon,
|
|
31
|
+
error: errorIcon,
|
|
32
|
+
expand: expandIcon,
|
|
33
|
+
collapse: collapseIcon,
|
|
34
|
+
terminal: terminalIcon,
|
|
35
|
+
paperclip: paperclipIcon,
|
|
36
|
+
image: imageIcon,
|
|
37
|
+
file: fileIcon,
|
|
38
|
+
scrollDown: scrollDownIcon,
|
|
39
|
+
retry: retryIcon,
|
|
40
|
+
edit: editIcon,
|
|
41
|
+
thumbUp: thumbUpIcon,
|
|
42
|
+
thumbDown: thumbDownIcon,
|
|
43
|
+
prevBranch: prevBranchIcon,
|
|
44
|
+
nextBranch: nextBranchIcon,
|
|
45
|
+
tool: toolIcon,
|
|
46
|
+
close: closeIcon,
|
|
47
|
+
stop: stopIcon,
|
|
48
|
+
info: infoIcon,
|
|
49
|
+
archive: archiveIcon,
|
|
50
|
+
unarchive: unarchiveIcon,
|
|
51
|
+
download: downloadIcon
|
|
52
|
+
};
|
|
53
|
+
export {
|
|
54
|
+
APARTE_ICON_GLYPHS as A,
|
|
55
|
+
archiveIcon as a,
|
|
56
|
+
closeIcon as b,
|
|
57
|
+
checkIcon as c,
|
|
58
|
+
collapseIcon as d,
|
|
59
|
+
copyIcon as e,
|
|
60
|
+
downloadIcon as f,
|
|
61
|
+
editIcon as g,
|
|
62
|
+
errorIcon as h,
|
|
63
|
+
expandIcon as i,
|
|
64
|
+
fileIcon as j,
|
|
65
|
+
imageIcon as k,
|
|
66
|
+
infoIcon as l,
|
|
67
|
+
loadingIcon as m,
|
|
68
|
+
nextBranchIcon as n,
|
|
69
|
+
paperclipIcon as o,
|
|
70
|
+
prevBranchIcon as p,
|
|
71
|
+
sendIcon as q,
|
|
72
|
+
retryIcon as r,
|
|
73
|
+
scrollDownIcon as s,
|
|
74
|
+
stopIcon as t,
|
|
75
|
+
terminalIcon as u,
|
|
76
|
+
thumbDownIcon as v,
|
|
77
|
+
thumbUpIcon as w,
|
|
78
|
+
toolIcon as x,
|
|
79
|
+
unarchiveIcon as y
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=glyphs-QXfbL3n_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glyphs-QXfbL3n_.js","sources":["../src/icons/glyphs.ts"],"sourcesContent":["/**\n * The glyphs.\n *\n * ONE place. Every SVG the library draws is declared here and nowhere else, because\n * scattering them did not merely spread the source around — it let them DRIFT. Before\n * this file there were three different ✕ (a filled one on a 12 grid, a stroked one at\n * 2.5, and `close`), two different chevrons, and `paperclip` and `scrollDown` each\n * existed twice, byte for byte, in a component that could have asked for them.\n *\n * Each glyph is a plain string, exported on its own, so a bundler can drop the ones a\n * build never reaches. `APARTE_DEFAULT_ICON_FALLBACKS` in `config/icon-provider.ts`\n * assembles them into the record `getIcon()` reads — that record is indexed by a\n * computed key, so it is retained whole; anything meant to be optional has to stay OUT\n * of it. That is the rule the extended set follows.\n *\n * Shapes follow Lucide's grid (24x24, `currentColor`, round caps) so a consumer who\n * swaps in the real Lucide gets the same drawing under the same name. Nothing is\n * imported from it: core has no dependencies.\n */\n\n\n/** Copy button icon */\nexport const copyIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></svg>`;\n\n/** Success/check icon */\nexport const checkIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>`;\n\n/** Send message icon */\nexport const sendIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"/></svg>`;\n\n/** Loading/spinner indicator */\nexport const loadingIcon = `<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"aparte-icon aparte-icon-spin\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke-opacity=\"0.25\"/><path d=\"M12 2a10 10 0 0 1 10 10\"/></svg>`;\n\n/** Error indicator */\nexport const errorIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/></svg>`;\n\n/** Expand/show more icon */\nexport const expandIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"/></svg>`;\n\n/** Collapse/show less icon */\nexport const collapseIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"18 15 12 9 6 15\"/></svg>`;\n\n/** Terminal/command prompt icon */\nexport const terminalIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"4 17 10 11 4 5\"/><line x1=\"12\" y1=\"19\" x2=\"20\" y2=\"19\"/></svg>`;\n\n/** File attachment / paperclip icon */\nexport const paperclipIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48\"/></svg>`;\n\n/** Image file icon */\nexport const imageIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"/><polyline points=\"21 15 16 10 5 21\"/></svg>`;\n\n/** Generic file icon */\nexport const fileIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/><polyline points=\"14 2 14 8 20 8\"/></svg>`;\n\n/** Scroll to bottom button icon */\nexport const scrollDownIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><polyline points=\"19 12 12 19 5 12\"/></svg>`;\n\n/** Retry / regenerate icon */\nexport const retryIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"/><path d=\"M3 3v5h5\"/></svg>`;\n\n/** Edit / pencil icon */\nexport const editIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"/></svg>`;\n\n/** Thumbs up / positive feedback icon */\nexport const thumbUpIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 10v12\"/><path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\"/></svg>`;\n\n/** Thumbs down / negative feedback icon */\nexport const thumbDownIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17 14V2\"/><path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\"/></svg>`;\n\n/** Previous branch arrow */\nexport const prevBranchIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"/></svg>`;\n\n/** Next branch arrow */\nexport const nextBranchIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg>`;\n\n/** Tool call indicator (wrench) */\nexport const toolIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"/></svg>`;\n\n/** Close / failed / rejected / remove (✕) */\nexport const closeIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/></svg>`;\n\n/** Stop / halt streaming (■) */\nexport const stopIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 16 16\" fill=\"currentColor\"><rect x=\"2\" y=\"2\" width=\"12\" height=\"12\" rx=\"2\"/></svg>`;\n\n/** Informational notice (ⓘ) */\nexport const infoIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/></svg>`;\n\n/** Archive a conversation */\nexport const archiveIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 8 21 8\"/><path d=\"M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8\"/><polyline points=\"9 14 12 11 15 14\"/><line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"19\"/></svg>`;\n\n/** Restore an archived conversation */\nexport const unarchiveIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"3 8 21 8\"/><path d=\"M5 8v11a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8\"/><polyline points=\"9 14 12 17 15 14\"/><line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"17\"/></svg>`;\n\n/** Download / save to disk */\nexport const downloadIcon = `<svg class=\"aparte-icon\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 2v9m0 0l-3-3m3 3l3-3M2 13h12\"/></svg>`;\n\n/** Every glyph, by name — the map `APARTE_DEFAULT_ICON_FALLBACKS` is built from. */\nexport const APARTE_ICON_GLYPHS = {\n copy: copyIcon,\n check: checkIcon,\n send: sendIcon,\n loading: loadingIcon,\n error: errorIcon,\n expand: expandIcon,\n collapse: collapseIcon,\n terminal: terminalIcon,\n paperclip: paperclipIcon,\n image: imageIcon,\n file: fileIcon,\n scrollDown: scrollDownIcon,\n retry: retryIcon,\n edit: editIcon,\n thumbUp: thumbUpIcon,\n thumbDown: thumbDownIcon,\n prevBranch: prevBranchIcon,\n nextBranch: nextBranchIcon,\n tool: toolIcon,\n close: closeIcon,\n stop: stopIcon,\n info: infoIcon,\n archive: archiveIcon,\n unarchive: unarchiveIcon,\n download: downloadIcon,\n} as const;\n"],"names":[],"mappings":"AAsBO,MAAM,WAAW;AAGjB,MAAM,YAAY;AAGlB,MAAM,WAAW;AAGjB,MAAM,cAAc;AAGpB,MAAM,YAAY;AAGlB,MAAM,aAAa;AAGnB,MAAM,eAAe;AAGrB,MAAM,eAAe;AAGrB,MAAM,gBAAgB;AAGtB,MAAM,YAAY;AAGlB,MAAM,WAAW;AAGjB,MAAM,iBAAiB;AAGvB,MAAM,YAAY;AAGlB,MAAM,WAAW;AAGjB,MAAM,cAAc;AAGpB,MAAM,gBAAgB;AAGtB,MAAM,iBAAiB;AAGvB,MAAM,iBAAiB;AAGvB,MAAM,WAAW;AAGjB,MAAM,YAAY;AAGlB,MAAM,WAAW;AAGjB,MAAM,WAAW;AAGjB,MAAM,cAAc;AAGpB,MAAM,gBAAgB;AAGtB,MAAM,eAAe;AAGrB,MAAM,qBAAqB;AAAA,EAC9B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AACd;"}
|
|
@@ -46,27 +46,6 @@ export interface AparteChatHostOptions {
|
|
|
46
46
|
*/
|
|
47
47
|
config?: AparteConfig;
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Framework-agnostic chat-host orchestrator.
|
|
51
|
-
*
|
|
52
|
-
* Owns the streaming/branch/host-method layer that previously lived inline in
|
|
53
|
-
* the Angular wrapper: it installs the imperative method surface `AparteClient`
|
|
54
|
-
* calls onto the host element, tracks the streaming target id from
|
|
55
|
-
* `apartemessage*` lifecycle events, guards writes against orphan streams (late
|
|
56
|
-
* SSE after a conversation switch), handles `aparte-path-changed` branch
|
|
57
|
-
* navigation, keeps the viewport's repo in sync before branch ops, and
|
|
58
|
-
* reconciles bubbles via `populateBubbleFromMessage`.
|
|
59
|
-
*
|
|
60
|
-
* It composes — does not replace — `AparteConversationController` (persistence /
|
|
61
|
-
* load / lazy-create) which it instantiates internally from the same binding.
|
|
62
|
-
*
|
|
63
|
-
* Each framework provides an {@link AparteChatHostBinding} over its reactive
|
|
64
|
-
* message list and calls {@link bind} after the view mounts; the framework is
|
|
65
|
-
* responsible for rendering `<aparte-chat-bubble message-id="…">` elements inside
|
|
66
|
-
* the viewport and calling {@link syncBubbles} whenever its message list
|
|
67
|
-
* changes (its idiomatic reactive hook: Angular effect, React effect, Vue
|
|
68
|
-
* watch, Svelte afterUpdate).
|
|
69
|
-
*/
|
|
70
49
|
export declare class AparteChatHost {
|
|
71
50
|
private readonly binding;
|
|
72
51
|
private readonly options;
|
|
@@ -76,6 +55,8 @@ export declare class AparteChatHost {
|
|
|
76
55
|
private readonly _renderedIds;
|
|
77
56
|
/** Sibling info from the last path-change, applied after the next render. */
|
|
78
57
|
private _pendingSiblings?;
|
|
58
|
+
/** How many render passes the sibling write has waited for — see `_applyPendingSiblings`. */
|
|
59
|
+
private _siblingRetries;
|
|
79
60
|
/** Abort handle for an in-flight {@link streamTokens} loop. */
|
|
80
61
|
private _streamAbort?;
|
|
81
62
|
/** Segment chunks written to the bubble, awaiting one coalesced state sync. */
|
|
@@ -222,6 +203,26 @@ export declare class AparteChatHost {
|
|
|
222
203
|
* operations (streaming fills the framework state but not the repo).
|
|
223
204
|
*/
|
|
224
205
|
syncRepoFromMessages(): void;
|
|
206
|
+
/**
|
|
207
|
+
* Write the branch counts onto their bubbles — and RESCHEDULE for the ones that are
|
|
208
|
+
* not on the page yet, instead of dropping them.
|
|
209
|
+
*
|
|
210
|
+
* This used to `continue` past a missing bubble and then clear `_pendingSiblings`
|
|
211
|
+
* unconditionally, which lost the fork for good. That is the "1 / 1" defect: the
|
|
212
|
+
* bubble kept its default of one sibling, the picker hid itself, and the other version
|
|
213
|
+
* became unreachable for the life of the page.
|
|
214
|
+
*
|
|
215
|
+
* It needed a framework that renders LATE, which is every framework here. React's
|
|
216
|
+
* `afterRender` is `requestAnimationFrame(() => cb())` — a bet that the next paint
|
|
217
|
+
* lands after React's commit, and it does not always; the repo has lost that same bet
|
|
218
|
+
* before (`25f356b`, "a bet on rAF phase"). The fix is here rather than in the
|
|
219
|
+
* wrapper's rAF call, because ANY binding whose `afterRender` can precede its commit
|
|
220
|
+
* hits this, and one fix at the host covers all four.
|
|
221
|
+
*
|
|
222
|
+
* Bounded, because a sibling can legitimately never arrive — a message that left the
|
|
223
|
+
* path has no bubble and never will, and an unbounded retry would hold a callback for
|
|
224
|
+
* the page's lifetime. Six passes is far more than the one tick the race needs.
|
|
225
|
+
*/
|
|
225
226
|
private _applyPendingSiblings;
|
|
226
227
|
/** Orphan-stream guard: a stream is in flight but the last msg isn't it. */
|
|
227
228
|
private _isOrphan;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aparte-chat-host.d.ts","sourceRoot":"","sources":["../../src/host/aparte-chat-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,aAAa,EACb,aAAa,EAIhB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACH,4BAA4B,EAE/B,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAoD/D;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IAClC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAEtC,kDAAkD;IAClD,WAAW,IAAI,aAAa,EAAE,CAAC;IAC/B,qEAAqE;IACrE,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAE7C,2EAA2E;IAC3E,gBAAgB,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACnD,6EAA6E;IAC7E,iBAAiB,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACjD,4CAA4C;IAC5C,cAAc,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,0DAA0D;IAC1D,iBAAiB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACrD,wEAAwE;IACxE,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC,wEAAwE;IACxE,aAAa,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IAClC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"aparte-chat-host.d.ts","sourceRoot":"","sources":["../../src/host/aparte-chat-host.ts"],"names":[],"mappings":"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"}
|