valtech-components 4.0.1037 → 4.0.1038
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/esm2022/lib/components/molecules/ai-message-renderer/ai-message-renderer.component.mjs +123 -8
- package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +20 -5
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +142 -12
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/ai-message-renderer/ai-message-renderer.component.d.ts +4 -2
- package/lib/components/molecules/message-bubble/message-bubble.component.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -70,7 +70,7 @@ import fixWebmDuration from 'fix-webm-duration';
|
|
|
70
70
|
* Current version of valtech-components.
|
|
71
71
|
* This is automatically updated during the publish process.
|
|
72
72
|
*/
|
|
73
|
-
const VERSION = '4.0.
|
|
73
|
+
const VERSION = '4.0.1038';
|
|
74
74
|
|
|
75
75
|
function evaluateValtechAccess(rule, context, features = {}, visitedFeatures = new Set()) {
|
|
76
76
|
if (rule == null)
|
|
@@ -24127,11 +24127,32 @@ class AiMessageRendererComponent {
|
|
|
24127
24127
|
@if (part.kind === 'code') {
|
|
24128
24128
|
<pre class="code"><code>{{ part.code }}</code></pre>
|
|
24129
24129
|
} @else {
|
|
24130
|
-
|
|
24130
|
+
@switch (part.tag) {
|
|
24131
|
+
@case ('h3') {
|
|
24132
|
+
<h3 class="heading" [innerHTML]="part.html"></h3>
|
|
24133
|
+
}
|
|
24134
|
+
@case ('ul') {
|
|
24135
|
+
<ul class="list">
|
|
24136
|
+
@for (item of part.items ?? []; track item) {
|
|
24137
|
+
<li [innerHTML]="item"></li>
|
|
24138
|
+
}
|
|
24139
|
+
</ul>
|
|
24140
|
+
}
|
|
24141
|
+
@case ('ol') {
|
|
24142
|
+
<ol class="list">
|
|
24143
|
+
@for (item of part.items ?? []; track item) {
|
|
24144
|
+
<li [innerHTML]="item"></li>
|
|
24145
|
+
}
|
|
24146
|
+
</ol>
|
|
24147
|
+
}
|
|
24148
|
+
@default {
|
|
24149
|
+
<p class="text" [innerHTML]="part.html"></p>
|
|
24150
|
+
}
|
|
24151
|
+
}
|
|
24131
24152
|
}
|
|
24132
24153
|
}
|
|
24133
24154
|
</div>
|
|
24134
|
-
`, isInline: true, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text{margin:0;white-space:pre-wrap;
|
|
24155
|
+
`, isInline: true, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text,.heading,.list{margin:0;overflow-wrap:anywhere}.heading{font-size:1rem;line-height:1.3;font-weight:750}.text{white-space:pre-wrap}.list{display:flex;flex-direction:column;gap:.28rem;padding-inline-start:1.15rem}.code{max-width:100%;margin:0;padding:.75rem;overflow-x:auto;border-radius:8px;background:var(--val-ai-message-code-background, rgba(15, 23, 42, .06));color:var(--val-ai-message-code-color, currentColor);font-size:.82rem;line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.text ::ng-deep code,.heading ::ng-deep code,.list ::ng-deep code{padding:.08rem .28rem;border-radius:5px;background:var(--val-ai-message-inline-code-background, rgba(15, 23, 42, .08));font-size:.9em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
24135
24156
|
}
|
|
24136
24157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AiMessageRendererComponent, decorators: [{
|
|
24137
24158
|
type: Component,
|
|
@@ -24141,11 +24162,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
24141
24162
|
@if (part.kind === 'code') {
|
|
24142
24163
|
<pre class="code"><code>{{ part.code }}</code></pre>
|
|
24143
24164
|
} @else {
|
|
24144
|
-
|
|
24165
|
+
@switch (part.tag) {
|
|
24166
|
+
@case ('h3') {
|
|
24167
|
+
<h3 class="heading" [innerHTML]="part.html"></h3>
|
|
24168
|
+
}
|
|
24169
|
+
@case ('ul') {
|
|
24170
|
+
<ul class="list">
|
|
24171
|
+
@for (item of part.items ?? []; track item) {
|
|
24172
|
+
<li [innerHTML]="item"></li>
|
|
24173
|
+
}
|
|
24174
|
+
</ul>
|
|
24175
|
+
}
|
|
24176
|
+
@case ('ol') {
|
|
24177
|
+
<ol class="list">
|
|
24178
|
+
@for (item of part.items ?? []; track item) {
|
|
24179
|
+
<li [innerHTML]="item"></li>
|
|
24180
|
+
}
|
|
24181
|
+
</ol>
|
|
24182
|
+
}
|
|
24183
|
+
@default {
|
|
24184
|
+
<p class="text" [innerHTML]="part.html"></p>
|
|
24185
|
+
}
|
|
24186
|
+
}
|
|
24145
24187
|
}
|
|
24146
24188
|
}
|
|
24147
24189
|
</div>
|
|
24148
|
-
`, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text{margin:0;white-space:pre-wrap;
|
|
24190
|
+
`, styles: [":host{display:block}.ai-message{display:flex;flex-direction:column;gap:.65rem}.text,.heading,.list{margin:0;overflow-wrap:anywhere}.heading{font-size:1rem;line-height:1.3;font-weight:750}.text{white-space:pre-wrap}.list{display:flex;flex-direction:column;gap:.28rem;padding-inline-start:1.15rem}.code{max-width:100%;margin:0;padding:.75rem;overflow-x:auto;border-radius:8px;background:var(--val-ai-message-code-background, rgba(15, 23, 42, .06));color:var(--val-ai-message-code-color, currentColor);font-size:.82rem;line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.text ::ng-deep code,.heading ::ng-deep code,.list ::ng-deep code{padding:.08rem .28rem;border-radius:5px;background:var(--val-ai-message-inline-code-background, rgba(15, 23, 42, .08));font-size:.9em}\n"] }]
|
|
24149
24191
|
}] });
|
|
24150
24192
|
function parseAiMessage(text) {
|
|
24151
24193
|
const parts = [];
|
|
@@ -24156,7 +24198,8 @@ function parseAiMessage(text) {
|
|
|
24156
24198
|
while ((match = fence.exec(text)) !== null) {
|
|
24157
24199
|
const before = text.slice(lastIndex, match.index).trim();
|
|
24158
24200
|
if (before) {
|
|
24159
|
-
parts.push(
|
|
24201
|
+
parts.push(...parseMarkdownBlocks(before, index));
|
|
24202
|
+
index = parts.length;
|
|
24160
24203
|
}
|
|
24161
24204
|
parts.push({
|
|
24162
24205
|
kind: 'code',
|
|
@@ -24168,9 +24211,81 @@ function parseAiMessage(text) {
|
|
|
24168
24211
|
}
|
|
24169
24212
|
const rest = text.slice(lastIndex).trim();
|
|
24170
24213
|
if (rest) {
|
|
24171
|
-
parts.push(
|
|
24214
|
+
parts.push(...parseMarkdownBlocks(rest, index));
|
|
24215
|
+
}
|
|
24216
|
+
return parts.length > 0 ? parts : [{ kind: 'block', id: 'text-0', tag: 'p', html: renderInline(text) }];
|
|
24217
|
+
}
|
|
24218
|
+
function parseMarkdownBlocks(text, offset) {
|
|
24219
|
+
const blocks = [];
|
|
24220
|
+
const lines = text.split('\n');
|
|
24221
|
+
let paragraph = [];
|
|
24222
|
+
let listItems = [];
|
|
24223
|
+
let orderedItems = [];
|
|
24224
|
+
let index = offset;
|
|
24225
|
+
const flushParagraph = () => {
|
|
24226
|
+
if (paragraph.length === 0)
|
|
24227
|
+
return;
|
|
24228
|
+
blocks.push({ kind: 'block', id: `text-${index++}`, tag: 'p', html: renderInline(paragraph.join('\n')) });
|
|
24229
|
+
paragraph = [];
|
|
24230
|
+
};
|
|
24231
|
+
const flushLists = () => {
|
|
24232
|
+
if (listItems.length > 0) {
|
|
24233
|
+
blocks.push({ kind: 'block', id: `list-${index++}`, tag: 'ul', items: listItems });
|
|
24234
|
+
listItems = [];
|
|
24235
|
+
}
|
|
24236
|
+
if (orderedItems.length > 0) {
|
|
24237
|
+
blocks.push({ kind: 'block', id: `list-${index++}`, tag: 'ol', items: orderedItems });
|
|
24238
|
+
orderedItems = [];
|
|
24239
|
+
}
|
|
24240
|
+
};
|
|
24241
|
+
for (const raw of lines) {
|
|
24242
|
+
const line = raw.trim();
|
|
24243
|
+
if (!line) {
|
|
24244
|
+
flushParagraph();
|
|
24245
|
+
flushLists();
|
|
24246
|
+
continue;
|
|
24247
|
+
}
|
|
24248
|
+
const heading = line.match(/^#{1,4}\s+(.+)$/);
|
|
24249
|
+
if (heading) {
|
|
24250
|
+
flushParagraph();
|
|
24251
|
+
flushLists();
|
|
24252
|
+
blocks.push({ kind: 'block', id: `heading-${index++}`, tag: 'h3', html: renderInline(heading[1]) });
|
|
24253
|
+
continue;
|
|
24254
|
+
}
|
|
24255
|
+
const bullet = line.match(/^[-*]\s+(.+)$/);
|
|
24256
|
+
if (bullet) {
|
|
24257
|
+
flushParagraph();
|
|
24258
|
+
orderedItems = [];
|
|
24259
|
+
listItems.push(renderInline(bullet[1]));
|
|
24260
|
+
continue;
|
|
24261
|
+
}
|
|
24262
|
+
const ordered = line.match(/^\d+\.\s+(.+)$/);
|
|
24263
|
+
if (ordered) {
|
|
24264
|
+
flushParagraph();
|
|
24265
|
+
listItems = [];
|
|
24266
|
+
orderedItems.push(renderInline(ordered[1]));
|
|
24267
|
+
continue;
|
|
24268
|
+
}
|
|
24269
|
+
flushLists();
|
|
24270
|
+
paragraph.push(raw);
|
|
24172
24271
|
}
|
|
24173
|
-
|
|
24272
|
+
flushParagraph();
|
|
24273
|
+
flushLists();
|
|
24274
|
+
return blocks;
|
|
24275
|
+
}
|
|
24276
|
+
function renderInline(text) {
|
|
24277
|
+
return escapeHtml(text)
|
|
24278
|
+
.replace(/`([^`]+)`/g, '<code>$1</code>')
|
|
24279
|
+
.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>')
|
|
24280
|
+
.replace(/\*([^*]+)\*/g, '<em>$1</em>');
|
|
24281
|
+
}
|
|
24282
|
+
function escapeHtml(text) {
|
|
24283
|
+
return text
|
|
24284
|
+
.replace(/&/g, '&')
|
|
24285
|
+
.replace(/</g, '<')
|
|
24286
|
+
.replace(/>/g, '>')
|
|
24287
|
+
.replace(/"/g, '"')
|
|
24288
|
+
.replace(/'/g, ''');
|
|
24174
24289
|
}
|
|
24175
24290
|
|
|
24176
24291
|
/**
|
|
@@ -93166,6 +93281,21 @@ class MessageBubbleComponent {
|
|
|
93166
93281
|
this.showCopyAction() ||
|
|
93167
93282
|
(this.showEditAction() && this.msg().isMine) ||
|
|
93168
93283
|
(this.showDeleteAction() && (this.msg().isMine || this.canModerate())));
|
|
93284
|
+
this.copyOnlyActions = computed(() => this.showCopyAction() && this.hasActionsCount() === 1);
|
|
93285
|
+
this.hasActionsCount = computed(() => {
|
|
93286
|
+
let count = 0;
|
|
93287
|
+
if (this.showReactAction())
|
|
93288
|
+
count++;
|
|
93289
|
+
if (this.showReplyAction())
|
|
93290
|
+
count++;
|
|
93291
|
+
if (this.showCopyAction())
|
|
93292
|
+
count++;
|
|
93293
|
+
if (this.showEditAction() && this.msg().isMine)
|
|
93294
|
+
count++;
|
|
93295
|
+
if (this.showDeleteAction() && (this.msg().isMine || this.canModerate()))
|
|
93296
|
+
count++;
|
|
93297
|
+
return count;
|
|
93298
|
+
});
|
|
93169
93299
|
this.time = computed(() => formatClockTime(this.msg().createdAt, this.locale()));
|
|
93170
93300
|
this.initials = computed(() => {
|
|
93171
93301
|
const name = this.msg().senderName?.trim() ?? '';
|
|
@@ -93348,7 +93478,7 @@ class MessageBubbleComponent {
|
|
|
93348
93478
|
}
|
|
93349
93479
|
|
|
93350
93480
|
@if (!msg().isDeleted && hasActions()) {
|
|
93351
|
-
<div class="actions" [class.open]="actionsOpen()">
|
|
93481
|
+
<div class="actions" [class.open]="actionsOpen()" [class.copy-only]="copyOnlyActions()">
|
|
93352
93482
|
@if (showReactAction()) {
|
|
93353
93483
|
<button class="act" [attr.aria-label]="t('react')" (click)="emit('react', '👍')">
|
|
93354
93484
|
<ion-icon name="happy-outline" aria-hidden="true" />
|
|
@@ -93378,7 +93508,7 @@ class MessageBubbleComponent {
|
|
|
93378
93508
|
}
|
|
93379
93509
|
</div>
|
|
93380
93510
|
</div>
|
|
93381
|
-
`, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: AiMessageRendererComponent, selector: "val-ai-message-renderer", inputs: ["text"] }] }); }
|
|
93511
|
+
`, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.actions.copy-only{inset:auto auto -14px 0}.row.mine .actions.copy-only{left:0;right:auto}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: AiMessageRendererComponent, selector: "val-ai-message-renderer", inputs: ["text"] }] }); }
|
|
93382
93512
|
}
|
|
93383
93513
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageBubbleComponent, decorators: [{
|
|
93384
93514
|
type: Component,
|
|
@@ -93484,7 +93614,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
93484
93614
|
}
|
|
93485
93615
|
|
|
93486
93616
|
@if (!msg().isDeleted && hasActions()) {
|
|
93487
|
-
<div class="actions" [class.open]="actionsOpen()">
|
|
93617
|
+
<div class="actions" [class.open]="actionsOpen()" [class.copy-only]="copyOnlyActions()">
|
|
93488
93618
|
@if (showReactAction()) {
|
|
93489
93619
|
<button class="act" [attr.aria-label]="t('react')" (click)="emit('react', '👍')">
|
|
93490
93620
|
<ion-icon name="happy-outline" aria-hidden="true" />
|
|
@@ -93514,7 +93644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
93514
93644
|
}
|
|
93515
93645
|
</div>
|
|
93516
93646
|
</div>
|
|
93517
|
-
`, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
|
|
93647
|
+
`, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(86%,680px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:9px 12px;border-radius:18px;background:var(--val-message-background, transparent);border:1px solid var(--val-message-border, transparent);color:var(--ion-text-color, #000);font-size:.95rem;line-height:1.45;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:18px}.mine .bubble{background:var(--val-message-mine-background, var(--ion-color-dark, #111));border-color:var(--val-message-mine-border, var(--val-message-mine-background, var(--ion-color-dark, #111)));color:var(--val-message-mine-color, #fff)}.mine.tail .bubble{border-bottom-right-radius:18px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block;cursor:pointer}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:var(--val-message-meta-opacity, 0)}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.actions.copy-only{inset:auto auto -14px 0}.row.mine .actions.copy-only{left:0;right:auto}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-dark, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
|
|
93518
93648
|
}], ctorParameters: () => [] });
|
|
93519
93649
|
|
|
93520
93650
|
addIcons({ sendOutline });
|