@tylertech/forge-ai 0.4.0 → 0.5.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/custom-elements.json +4691 -637
- package/dist/ai-actions-toolbar/ai-actions-toolbar.d.ts +24 -1
- package/dist/ai-actions-toolbar/ai-actions-toolbar.mjs +171 -42
- package/dist/ai-actions-toolbar/ai-actions-toolbar.scss.mjs +1 -1
- package/dist/ai-agent-info/ai-agent-info.d.ts +29 -0
- package/dist/ai-agent-info/ai-agent-info.mjs +123 -0
- package/dist/ai-agent-info/ai-agent-info.scss.mjs +4 -0
- package/dist/ai-agent-info/index.d.ts +1 -0
- package/dist/ai-agent-info/index.mjs +5 -0
- package/dist/ai-artifact/ai-artifact.scss.mjs +1 -1
- package/dist/ai-attachment/ai-attachment.d.ts +39 -0
- package/dist/ai-attachment/ai-attachment.mjs +130 -0
- package/dist/ai-attachment/ai-attachment.scss.mjs +4 -0
- package/dist/ai-attachment/index.d.ts +1 -0
- package/dist/ai-attachment/index.mjs +5 -0
- package/dist/ai-button/ai-button.mjs +1 -0
- package/dist/ai-button/ai-button.scss.mjs +1 -1
- package/dist/ai-chain-of-thought/thought-base/thought-base.scss.mjs +1 -1
- package/dist/ai-chat-header/ai-chat-header.d.ts +35 -17
- package/dist/ai-chat-header/ai-chat-header.mjs +130 -30
- package/dist/ai-chat-header/ai-chat-header.scss.mjs +1 -1
- package/dist/ai-chat-header/index.d.ts +1 -0
- package/dist/ai-chat-interface/ai-chat-interface.d.ts +2 -4
- package/dist/ai-chat-interface/ai-chat-interface.mjs +24 -28
- package/dist/ai-chat-interface/ai-chat-interface.scss.mjs +1 -1
- package/dist/ai-chatbot/ag-ui-adapter.d.ts +22 -0
- package/dist/ai-chatbot/ag-ui-adapter.mjs +331 -0
- package/dist/ai-chatbot/agent-adapter.d.ts +125 -0
- package/dist/ai-chatbot/agent-adapter.mjs +136 -0
- package/dist/ai-chatbot/agent-runner.d.ts +41 -0
- package/dist/ai-chatbot/agent-runner.mjs +264 -0
- package/dist/ai-chatbot/ai-chatbot-tool-call.d.ts +21 -0
- package/dist/ai-chatbot/ai-chatbot-tool-call.mjs +189 -0
- package/dist/ai-chatbot/ai-chatbot-tool-call.scss.mjs +4 -0
- package/dist/ai-chatbot/ai-chatbot.d.ts +133 -0
- package/dist/ai-chatbot/ai-chatbot.mjs +755 -0
- package/dist/ai-chatbot/ai-chatbot.scss.mjs +4 -0
- package/dist/ai-chatbot/create-tool-renderer.d.ts +12 -0
- package/dist/ai-chatbot/create-tool-renderer.mjs +28 -0
- package/dist/ai-chatbot/event-emitter.d.ts +43 -0
- package/dist/ai-chatbot/event-emitter.mjs +81 -0
- package/dist/ai-chatbot/file-upload-manager.d.ts +27 -0
- package/dist/ai-chatbot/file-upload-manager.mjs +106 -0
- package/dist/ai-chatbot/http-agent-with-credentials.d.ts +8 -0
- package/dist/ai-chatbot/http-agent-with-credentials.mjs +14 -0
- package/dist/ai-chatbot/index.d.ts +15 -0
- package/dist/ai-chatbot/index.mjs +30 -0
- package/dist/ai-chatbot/markdown-stream-controller.d.ts +13 -0
- package/dist/ai-chatbot/markdown-stream-controller.mjs +49 -0
- package/dist/ai-chatbot/message-state-controller.d.ts +45 -0
- package/dist/ai-chatbot/message-state-controller.mjs +168 -0
- package/dist/ai-chatbot/types.d.ts +120 -0
- package/dist/ai-chatbot/utils.d.ts +12 -0
- package/dist/ai-chatbot/utils.mjs +31 -0
- package/dist/ai-confirmation-prompt/ai-confirmation-prompt.d.ts +28 -0
- package/dist/ai-confirmation-prompt/ai-confirmation-prompt.mjs +89 -0
- package/dist/ai-confirmation-prompt/ai-confirmation-prompt.scss.mjs +4 -0
- package/dist/ai-confirmation-prompt/index.d.ts +1 -0
- package/dist/ai-confirmation-prompt/index.mjs +5 -0
- package/dist/ai-dialog/ai-dialog.scss.mjs +1 -1
- package/dist/ai-dropdown-menu/ai-dropdown-menu-item.d.ts +0 -6
- package/dist/ai-dropdown-menu/ai-dropdown-menu-item.mjs +3 -16
- package/dist/ai-dropdown-menu/ai-dropdown-menu-item.scss.mjs +1 -1
- package/dist/ai-dropdown-menu/ai-dropdown-menu.d.ts +6 -0
- package/dist/ai-dropdown-menu/ai-dropdown-menu.mjs +6 -2
- package/dist/ai-dropdown-menu/ai-dropdown-menu.scss.mjs +1 -1
- package/dist/ai-embedded-chat/ai-embedded-chat.d.ts +18 -5
- package/dist/ai-embedded-chat/ai-embedded-chat.mjs +43 -18
- package/dist/ai-empty-state/ai-empty-state.d.ts +4 -2
- package/dist/ai-empty-state/ai-empty-state.mjs +237 -57
- package/dist/ai-empty-state/ai-empty-state.scss.mjs +1 -1
- package/dist/ai-error-message/ai-error-message.d.ts +19 -0
- package/dist/ai-error-message/ai-error-message.mjs +44 -0
- package/dist/ai-error-message/ai-error-message.scss.mjs +4 -0
- package/dist/ai-error-message/index.d.ts +1 -0
- package/dist/ai-error-message/index.mjs +5 -0
- package/dist/ai-fab/ai-fab.scss.mjs +1 -1
- package/dist/ai-file-picker/ai-file-picker.d.ts +20 -1
- package/dist/ai-file-picker/ai-file-picker.mjs +67 -20
- package/dist/ai-file-picker/ai-file-picker.scss.mjs +1 -1
- package/dist/ai-file-picker/index.d.ts +1 -1
- package/dist/ai-floating-chat/ai-floating-chat.d.ts +5 -30
- package/dist/ai-floating-chat/ai-floating-chat.mjs +19 -42
- package/dist/ai-message-thread/ai-message-thread.d.ts +58 -0
- package/dist/ai-message-thread/ai-message-thread.mjs +224 -0
- package/dist/ai-message-thread/ai-message-thread.scss.mjs +4 -0
- package/dist/ai-message-thread/index.d.ts +2 -0
- package/dist/ai-message-thread/index.mjs +5 -0
- package/dist/ai-modal/ai-modal.d.ts +6 -0
- package/dist/ai-modal/ai-modal.mjs +31 -14
- package/dist/ai-modal/ai-modal.scss.mjs +1 -1
- package/dist/ai-prompt/ai-prompt.mjs +3 -6
- package/dist/ai-prompt/ai-prompt.scss.mjs +1 -1
- package/dist/ai-prompt/prompt-button/prompt-button.scss.mjs +1 -1
- package/dist/ai-response-message/ai-response-message.d.ts +12 -21
- package/dist/ai-response-message/ai-response-message.mjs +32 -89
- package/dist/ai-response-message/ai-response-message.scss.mjs +1 -1
- package/dist/ai-sidebar/ai-sidebar.mjs +1 -1
- package/dist/ai-sidebar-chat/ai-sidebar-chat.d.ts +5 -29
- package/dist/ai-sidebar-chat/ai-sidebar-chat.mjs +23 -43
- package/dist/ai-spinner/ai-spinner.d.ts +24 -0
- package/dist/ai-spinner/ai-spinner.mjs +41 -0
- package/dist/ai-spinner/ai-spinner.scss.mjs +4 -0
- package/dist/ai-spinner/index.d.ts +1 -0
- package/dist/ai-spinner/index.mjs +5 -0
- package/dist/ai-suggestions/ai-suggestions.d.ts +2 -0
- package/dist/ai-suggestions/ai-suggestions.mjs +66 -7
- package/dist/ai-suggestions/ai-suggestions.scss.mjs +1 -1
- package/dist/ai-suggestions/index.d.ts +2 -1
- package/dist/ai-thinking-indicator/ai-thinking-indicator.d.ts +3 -1
- package/dist/ai-thinking-indicator/ai-thinking-indicator.mjs +83 -3
- package/dist/ai-thinking-indicator/ai-thinking-indicator.scss.mjs +317 -1
- package/dist/ai-threads/ai-threads.d.ts +9 -4
- package/dist/ai-threads/ai-threads.mjs +21 -41
- package/dist/ai-threads/ai-threads.scss.mjs +1 -1
- package/dist/ai-user-message/ai-user-message.scss.mjs +1 -1
- package/dist/ai-voice-input/ai-voice-input.scss.mjs +1 -1
- package/dist/core/drag-controller.mjs +3 -0
- package/dist/core/overlay/overlay.d.ts +10 -0
- package/dist/core/overlay/overlay.mjs +24 -4
- package/dist/core/popover/popover.d.ts +17 -7
- package/dist/core/popover/popover.mjs +17 -3
- package/dist/core/popover/popover.scss.mjs +1 -1
- package/dist/core/tooltip/tooltip.d.ts +8 -7
- package/dist/core/tooltip/tooltip.mjs +45 -16
- package/dist/core/tooltip/tooltip.scss.mjs +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.mjs +52 -9
- package/package.json +64 -60
|
@@ -2,8 +2,6 @@ import { unsafeCSS, LitElement, html } from "lit";
|
|
|
2
2
|
import { property, state, customElement } from "lit/decorators.js";
|
|
3
3
|
import { createRef, ref } from "lit/directives/ref.js";
|
|
4
4
|
import "../ai-dialog/ai-dialog.mjs";
|
|
5
|
-
import "../ai-chat-interface/ai-chat-interface.mjs";
|
|
6
|
-
import "../ai-chat-header/ai-chat-header.mjs";
|
|
7
5
|
import styles from "./ai-floating-chat.scss.mjs";
|
|
8
6
|
var __defProp = Object.defineProperty;
|
|
9
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -22,7 +20,7 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
22
20
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
23
21
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
24
22
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
25
|
-
var _dialogRef, _AiFloatingChatComponent_instances, handleFullscreenChange_fn,
|
|
23
|
+
var _dialogRef, _AiFloatingChatComponent_instances, handleFullscreenChange_fn, handleChatbotExpand_fn, handleChatbotMinimize_fn, handleDialogClose_fn, dispatchEvent_fn;
|
|
26
24
|
const AiFloatingChatComponentTagName = "forge-ai-floating-chat";
|
|
27
25
|
let AiFloatingChatComponent = class extends LitElement {
|
|
28
26
|
constructor() {
|
|
@@ -30,14 +28,9 @@ let AiFloatingChatComponent = class extends LitElement {
|
|
|
30
28
|
__privateAdd(this, _AiFloatingChatComponent_instances);
|
|
31
29
|
this.open = false;
|
|
32
30
|
this.expanded = false;
|
|
33
|
-
this.
|
|
31
|
+
this._userExpanded = false;
|
|
34
32
|
__privateAdd(this, _dialogRef, createRef());
|
|
35
33
|
}
|
|
36
|
-
updated() {
|
|
37
|
-
if (__privateGet(this, _dialogRef).value && this._isFullscreen !== __privateGet(this, _dialogRef).value.isFullscreen) {
|
|
38
|
-
this._isFullscreen = __privateGet(this, _dialogRef).value.isFullscreen;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
34
|
render() {
|
|
42
35
|
return html`
|
|
43
36
|
<forge-ai-dialog
|
|
@@ -46,33 +39,16 @@ let AiFloatingChatComponent = class extends LitElement {
|
|
|
46
39
|
?expanded=${this.expanded}
|
|
47
40
|
@forge-ai-dialog-fullscreen-change=${__privateMethod(this, _AiFloatingChatComponent_instances, handleFullscreenChange_fn)}
|
|
48
41
|
@forge-ai-dialog-close=${__privateMethod(this, _AiFloatingChatComponent_instances, handleDialogClose_fn)}>
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
@forge-ai-chat-header-expand=${__privateMethod(this, _AiFloatingChatComponent_instances, handleHeaderExpand_fn)}
|
|
53
|
-
@forge-ai-chat-header-minimize=${__privateMethod(this, _AiFloatingChatComponent_instances, handleHeaderMinimize_fn)}
|
|
54
|
-
?show-expand-button=${!this._isFullscreen}
|
|
55
|
-
show-minimize-button
|
|
56
|
-
minimize-icon="default"
|
|
57
|
-
?expanded=${this.expanded}>
|
|
58
|
-
</forge-ai-chat-header>
|
|
59
|
-
<slot></slot>
|
|
60
|
-
<slot name="suggestions" slot="suggestions"></slot>
|
|
61
|
-
<slot name="prompt" slot="prompt"></slot>
|
|
62
|
-
</forge-ai-chat-interface>
|
|
42
|
+
<slot
|
|
43
|
+
@forge-ai-chatbot-expand=${__privateMethod(this, _AiFloatingChatComponent_instances, handleChatbotExpand_fn)}
|
|
44
|
+
@forge-ai-chatbot-minimize=${__privateMethod(this, _AiFloatingChatComponent_instances, handleChatbotMinimize_fn)}></slot>
|
|
63
45
|
</forge-ai-dialog>
|
|
64
46
|
`;
|
|
65
47
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Opens the chat.
|
|
68
|
-
*/
|
|
69
48
|
show() {
|
|
70
49
|
this.open = true;
|
|
71
50
|
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-open");
|
|
72
51
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Closes the chat.
|
|
75
|
-
*/
|
|
76
52
|
close() {
|
|
77
53
|
if (this.expanded) {
|
|
78
54
|
this.expanded = false;
|
|
@@ -81,9 +57,6 @@ let AiFloatingChatComponent = class extends LitElement {
|
|
|
81
57
|
this.open = false;
|
|
82
58
|
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-close");
|
|
83
59
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Toggles the chat open state.
|
|
86
|
-
*/
|
|
87
60
|
toggle() {
|
|
88
61
|
if (this.open) {
|
|
89
62
|
this.close();
|
|
@@ -91,21 +64,17 @@ let AiFloatingChatComponent = class extends LitElement {
|
|
|
91
64
|
this.show();
|
|
92
65
|
}
|
|
93
66
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Expands the chat to full width.
|
|
96
|
-
*/
|
|
97
67
|
expand() {
|
|
98
68
|
if (!this.expanded) {
|
|
99
69
|
this.expanded = true;
|
|
70
|
+
this._userExpanded = true;
|
|
100
71
|
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-expand");
|
|
101
72
|
}
|
|
102
73
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Collapses the chat to normal width.
|
|
105
|
-
*/
|
|
106
74
|
collapse() {
|
|
107
75
|
if (this.expanded) {
|
|
108
76
|
this.expanded = false;
|
|
77
|
+
this._userExpanded = false;
|
|
109
78
|
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-collapse");
|
|
110
79
|
}
|
|
111
80
|
}
|
|
@@ -113,17 +82,25 @@ let AiFloatingChatComponent = class extends LitElement {
|
|
|
113
82
|
_dialogRef = /* @__PURE__ */ new WeakMap();
|
|
114
83
|
_AiFloatingChatComponent_instances = /* @__PURE__ */ new WeakSet();
|
|
115
84
|
handleFullscreenChange_fn = function(event) {
|
|
116
|
-
|
|
85
|
+
const { isFullscreen } = event.detail;
|
|
86
|
+
if (isFullscreen && !this.expanded) {
|
|
87
|
+
this.expanded = true;
|
|
88
|
+
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-expand");
|
|
89
|
+
} else if (!isFullscreen && this.expanded && !this._userExpanded) {
|
|
90
|
+
this.expanded = false;
|
|
91
|
+
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-collapse");
|
|
92
|
+
}
|
|
117
93
|
};
|
|
118
|
-
|
|
94
|
+
handleChatbotExpand_fn = function() {
|
|
119
95
|
this.expanded = !this.expanded;
|
|
96
|
+
this._userExpanded = this.expanded;
|
|
120
97
|
if (this.expanded) {
|
|
121
98
|
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-expand");
|
|
122
99
|
} else {
|
|
123
100
|
__privateMethod(this, _AiFloatingChatComponent_instances, dispatchEvent_fn).call(this, "forge-ai-floating-chat-collapse");
|
|
124
101
|
}
|
|
125
102
|
};
|
|
126
|
-
|
|
103
|
+
handleChatbotMinimize_fn = function() {
|
|
127
104
|
this.close();
|
|
128
105
|
};
|
|
129
106
|
handleDialogClose_fn = function() {
|
|
@@ -147,7 +124,7 @@ __decorateClass([
|
|
|
147
124
|
], AiFloatingChatComponent.prototype, "expanded", 2);
|
|
148
125
|
__decorateClass([
|
|
149
126
|
state()
|
|
150
|
-
], AiFloatingChatComponent.prototype, "
|
|
127
|
+
], AiFloatingChatComponent.prototype, "_userExpanded", 2);
|
|
151
128
|
AiFloatingChatComponent = __decorateClass([
|
|
152
129
|
customElement(AiFloatingChatComponentTagName)
|
|
153
130
|
], AiFloatingChatComponent);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { LitElement, TemplateResult, PropertyValues } from 'lit';
|
|
2
|
+
import { MessageItem, ToolDefinition } from '../ai-chatbot/types.js';
|
|
3
|
+
import { FeatureToggle } from '../ai-chatbot/ai-chatbot.js';
|
|
4
|
+
declare global {
|
|
5
|
+
interface HTMLElementTagNameMap {
|
|
6
|
+
'forge-ai-message-thread': AiMessageThreadComponent;
|
|
7
|
+
}
|
|
8
|
+
interface HTMLElementEventMap {
|
|
9
|
+
'forge-ai-message-thread-copy': CustomEvent<ForgeAiMessageThreadCopyEventData>;
|
|
10
|
+
'forge-ai-message-thread-refresh': CustomEvent<ForgeAiMessageThreadRefreshEventData>;
|
|
11
|
+
'forge-ai-message-thread-thumbs-up': CustomEvent<ForgeAiMessageThreadThumbsEventData>;
|
|
12
|
+
'forge-ai-message-thread-thumbs-down': CustomEvent<ForgeAiMessageThreadThumbsEventData>;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export interface ForgeAiMessageThreadCopyEventData {
|
|
16
|
+
messageItemIndex: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ForgeAiMessageThreadRefreshEventData {
|
|
19
|
+
messageItemIndex: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ForgeAiMessageThreadThumbsEventData {
|
|
22
|
+
messageId: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const AiMessageThreadComponentTagName: keyof HTMLElementTagNameMap;
|
|
25
|
+
/**
|
|
26
|
+
* @tag forge-ai-message-thread
|
|
27
|
+
*
|
|
28
|
+
* @summary A primitive component for rendering a thread of chat messages, including user, assistant, system, and tool call messages.
|
|
29
|
+
*
|
|
30
|
+
* @description
|
|
31
|
+
* The AI Message Thread component displays a chronological list of messages with support for markdown rendering,
|
|
32
|
+
* tool calls, empty states, and thinking indicators. It handles its own scrolling behavior with auto-scroll support.
|
|
33
|
+
*
|
|
34
|
+
* @slot empty-state-heading - Slot for custom empty state heading content
|
|
35
|
+
* @slot empty-state-actions - Slot for custom empty state actions (e.g., suggestions)
|
|
36
|
+
*
|
|
37
|
+
* @event {CustomEvent<ForgeAiMessageThreadCopyEventData>} forge-ai-message-thread-copy - Fired when user clicks copy on a message
|
|
38
|
+
* @event {CustomEvent<ForgeAiMessageThreadRefreshEventData>} forge-ai-message-thread-refresh - Fired when user clicks refresh on a message
|
|
39
|
+
* @event {CustomEvent<ForgeAiMessageThreadThumbsEventData>} forge-ai-message-thread-thumbs-up - Fired when user gives thumbs up
|
|
40
|
+
* @event {CustomEvent<ForgeAiMessageThreadThumbsEventData>} forge-ai-message-thread-thumbs-down - Fired when user gives thumbs down
|
|
41
|
+
*/
|
|
42
|
+
export declare class AiMessageThreadComponent extends LitElement {
|
|
43
|
+
#private;
|
|
44
|
+
static styles: import('lit').CSSResult;
|
|
45
|
+
messageItems: MessageItem[];
|
|
46
|
+
tools?: Map<string, ToolDefinition>;
|
|
47
|
+
enableReactions: boolean;
|
|
48
|
+
showThinking: boolean;
|
|
49
|
+
autoScroll: FeatureToggle;
|
|
50
|
+
private _messageThreadContainer;
|
|
51
|
+
connectedCallback(): void;
|
|
52
|
+
updated(changedProperties: PropertyValues<this>): void;
|
|
53
|
+
scrollToBottom({ force, behavior }?: {
|
|
54
|
+
force?: boolean;
|
|
55
|
+
behavior?: ScrollBehavior;
|
|
56
|
+
}): void;
|
|
57
|
+
render(): TemplateResult;
|
|
58
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { unsafeCSS, LitElement, html, nothing } from "lit";
|
|
2
|
+
import { property, query, customElement } from "lit/decorators.js";
|
|
3
|
+
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
4
|
+
import { when } from "lit/directives/when.js";
|
|
5
|
+
import { MarkdownStreamController } from "../ai-chatbot/markdown-stream-controller.mjs";
|
|
6
|
+
import "../ai-empty-state/ai-empty-state.mjs";
|
|
7
|
+
import "../ai-error-message/ai-error-message.mjs";
|
|
8
|
+
import "../ai-response-message/ai-response-message.mjs";
|
|
9
|
+
import "../ai-thinking-indicator/ai-thinking-indicator.mjs";
|
|
10
|
+
import "../ai-user-message/ai-user-message.mjs";
|
|
11
|
+
import "../ai-chatbot/ai-chatbot-tool-call.mjs";
|
|
12
|
+
import styles from "./ai-message-thread.scss.mjs";
|
|
13
|
+
var __defProp = Object.defineProperty;
|
|
14
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
15
|
+
var __typeError = (msg) => {
|
|
16
|
+
throw TypeError(msg);
|
|
17
|
+
};
|
|
18
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
19
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
20
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
21
|
+
if (decorator = decorators[i])
|
|
22
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
23
|
+
if (kind && result) __defProp(target, key, result);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
27
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
28
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
29
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
30
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
31
|
+
var _markdownController, _canAutoScroll, _handleScroll, _AiMessageThreadComponent_instances, handleCopy_fn, handleRefresh_fn, handleThumbsUp_fn, handleThumbsDown_fn, renderToolCall_fn, emptyState_get, thinkingIndicator_get, messages_get, dispatchEvent_fn;
|
|
32
|
+
const AiMessageThreadComponentTagName = "forge-ai-message-thread";
|
|
33
|
+
const SCROLL_THRESHOLD = 100;
|
|
34
|
+
let AiMessageThreadComponent = class extends LitElement {
|
|
35
|
+
constructor() {
|
|
36
|
+
super(...arguments);
|
|
37
|
+
__privateAdd(this, _AiMessageThreadComponent_instances);
|
|
38
|
+
this.messageItems = [];
|
|
39
|
+
this.enableReactions = false;
|
|
40
|
+
this.showThinking = false;
|
|
41
|
+
this.autoScroll = "on";
|
|
42
|
+
__privateAdd(this, _markdownController);
|
|
43
|
+
__privateAdd(this, _canAutoScroll, true);
|
|
44
|
+
__privateAdd(this, _handleScroll, () => {
|
|
45
|
+
const { scrollTop, scrollHeight, clientHeight } = this._messageThreadContainer;
|
|
46
|
+
__privateSet(this, _canAutoScroll, scrollTop + clientHeight >= scrollHeight - SCROLL_THRESHOLD);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
connectedCallback() {
|
|
50
|
+
super.connectedCallback();
|
|
51
|
+
__privateSet(this, _markdownController, new MarkdownStreamController(this));
|
|
52
|
+
}
|
|
53
|
+
updated(changedProperties) {
|
|
54
|
+
super.updated(changedProperties);
|
|
55
|
+
if (this.autoScroll === "on" && (changedProperties.has("messageItems") || changedProperties.has("showThinking"))) {
|
|
56
|
+
this.scrollToBottom();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
scrollToBottom({
|
|
60
|
+
force = false,
|
|
61
|
+
behavior = "smooth"
|
|
62
|
+
} = {}) {
|
|
63
|
+
if (!force && !__privateGet(this, _canAutoScroll)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const container = this._messageThreadContainer;
|
|
67
|
+
container.scrollTo({
|
|
68
|
+
top: container.scrollHeight,
|
|
69
|
+
behavior
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
render() {
|
|
73
|
+
return html`
|
|
74
|
+
<div class="message-thread" @scroll=${this.autoScroll ? __privateGet(this, _handleScroll) : void 0}>
|
|
75
|
+
${__privateGet(this, _AiMessageThreadComponent_instances, emptyState_get)} ${__privateGet(this, _AiMessageThreadComponent_instances, messages_get)} ${__privateGet(this, _AiMessageThreadComponent_instances, thinkingIndicator_get)}
|
|
76
|
+
</div>
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
_markdownController = /* @__PURE__ */ new WeakMap();
|
|
81
|
+
_canAutoScroll = /* @__PURE__ */ new WeakMap();
|
|
82
|
+
_handleScroll = /* @__PURE__ */ new WeakMap();
|
|
83
|
+
_AiMessageThreadComponent_instances = /* @__PURE__ */ new WeakSet();
|
|
84
|
+
handleCopy_fn = function(messageItemIndex) {
|
|
85
|
+
__privateMethod(this, _AiMessageThreadComponent_instances, dispatchEvent_fn).call(this, {
|
|
86
|
+
type: "forge-ai-message-thread-copy",
|
|
87
|
+
detail: { messageItemIndex }
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
handleRefresh_fn = function(messageItemIndex) {
|
|
91
|
+
__privateMethod(this, _AiMessageThreadComponent_instances, dispatchEvent_fn).call(this, {
|
|
92
|
+
type: "forge-ai-message-thread-refresh",
|
|
93
|
+
detail: { messageItemIndex }
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
handleThumbsUp_fn = function(messageId) {
|
|
97
|
+
__privateMethod(this, _AiMessageThreadComponent_instances, dispatchEvent_fn).call(this, {
|
|
98
|
+
type: "forge-ai-message-thread-thumbs-up",
|
|
99
|
+
detail: { messageId }
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
handleThumbsDown_fn = function(messageId) {
|
|
103
|
+
__privateMethod(this, _AiMessageThreadComponent_instances, dispatchEvent_fn).call(this, {
|
|
104
|
+
type: "forge-ai-message-thread-thumbs-down",
|
|
105
|
+
detail: { messageId }
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
renderToolCall_fn = function(toolCall) {
|
|
109
|
+
const toolDefinition = this.tools?.get(toolCall.name);
|
|
110
|
+
return html`<forge-ai-chatbot-tool-call
|
|
111
|
+
.toolCall=${toolCall}
|
|
112
|
+
.toolDefinition=${toolDefinition}></forge-ai-chatbot-tool-call>`;
|
|
113
|
+
};
|
|
114
|
+
emptyState_get = function() {
|
|
115
|
+
if (this.messageItems.length) {
|
|
116
|
+
return nothing;
|
|
117
|
+
}
|
|
118
|
+
return html`
|
|
119
|
+
<forge-ai-empty-state>
|
|
120
|
+
<slot name="empty-state-heading" slot="heading">
|
|
121
|
+
<span>How can I help you today?</span>
|
|
122
|
+
</slot>
|
|
123
|
+
<slot name="empty-state-message" slot="body">
|
|
124
|
+
Start a conversation by asking a question or describing what you'd like help with.
|
|
125
|
+
</slot>
|
|
126
|
+
<slot name="empty-state-actions" slot="actions"></slot>
|
|
127
|
+
</forge-ai-empty-state>
|
|
128
|
+
`;
|
|
129
|
+
};
|
|
130
|
+
thinkingIndicator_get = function() {
|
|
131
|
+
if (!this.showThinking) {
|
|
132
|
+
return nothing;
|
|
133
|
+
}
|
|
134
|
+
const lastItem = this.messageItems[this.messageItems.length - 1];
|
|
135
|
+
const hasAssistantContent = lastItem?.type !== "toolCall" && lastItem?.type === "message" && lastItem.data.role === "assistant" && lastItem.data.content.trim().length;
|
|
136
|
+
if (hasAssistantContent) {
|
|
137
|
+
return nothing;
|
|
138
|
+
}
|
|
139
|
+
return html`<div class="thinking-indicator">
|
|
140
|
+
<forge-ai-thinking-indicator class="status-indicator"></forge-ai-thinking-indicator>
|
|
141
|
+
</div>`;
|
|
142
|
+
};
|
|
143
|
+
messages_get = function() {
|
|
144
|
+
const itemsToRender = this.messageItems.filter((item) => {
|
|
145
|
+
if (item.type === "toolCall") {
|
|
146
|
+
const toolDef = this.tools?.get(item.data.name);
|
|
147
|
+
return !!toolDef?.renderer;
|
|
148
|
+
}
|
|
149
|
+
if (item.type === "message") {
|
|
150
|
+
return item.data.role !== "tool";
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
});
|
|
154
|
+
return itemsToRender.map((item, index) => {
|
|
155
|
+
if (item.type === "toolCall") {
|
|
156
|
+
return __privateMethod(this, _AiMessageThreadComponent_instances, renderToolCall_fn).call(this, item.data);
|
|
157
|
+
}
|
|
158
|
+
const msg = item.data;
|
|
159
|
+
if (msg.role === "user") {
|
|
160
|
+
const renderedHtml = __privateGet(this, _markdownController).getCachedHtml(msg.id, msg.content);
|
|
161
|
+
return html`<forge-ai-user-message>${unsafeHTML(renderedHtml)}</forge-ai-user-message>`;
|
|
162
|
+
} else if (msg.role === "system") {
|
|
163
|
+
return html`<div class="system-message">${msg.content}</div>`;
|
|
164
|
+
} else if (msg.status === "error") {
|
|
165
|
+
const renderedHtml = __privateGet(this, _markdownController).getCachedHtml(msg.id, msg.content);
|
|
166
|
+
return html`
|
|
167
|
+
<forge-ai-error-message>
|
|
168
|
+
<span slot="title">Error</span>
|
|
169
|
+
${unsafeHTML(renderedHtml)}
|
|
170
|
+
</forge-ai-error-message>
|
|
171
|
+
`;
|
|
172
|
+
} else {
|
|
173
|
+
return when(msg.content?.trim().length, () => {
|
|
174
|
+
const renderedHtml = __privateGet(this, _markdownController).getCachedHtml(msg.id, msg.content);
|
|
175
|
+
return html`
|
|
176
|
+
<forge-ai-response-message
|
|
177
|
+
?complete=${msg.status === "complete"}
|
|
178
|
+
?enable-reactions=${this.enableReactions}
|
|
179
|
+
@forge-ai-response-message-copy=${() => __privateMethod(this, _AiMessageThreadComponent_instances, handleCopy_fn).call(this, index)}
|
|
180
|
+
@forge-ai-response-message-refresh=${() => __privateMethod(this, _AiMessageThreadComponent_instances, handleRefresh_fn).call(this, index)}
|
|
181
|
+
@forge-ai-response-message-thumbs-up=${() => __privateMethod(this, _AiMessageThreadComponent_instances, handleThumbsUp_fn).call(this, msg.id)}
|
|
182
|
+
@forge-ai-response-message-thumbs-down=${() => __privateMethod(this, _AiMessageThreadComponent_instances, handleThumbsDown_fn).call(this, msg.id)}>
|
|
183
|
+
${unsafeHTML(renderedHtml)}
|
|
184
|
+
</forge-ai-response-message>
|
|
185
|
+
`;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
dispatchEvent_fn = function(config) {
|
|
191
|
+
const event = new CustomEvent(config.type, {
|
|
192
|
+
detail: config.detail,
|
|
193
|
+
bubbles: true,
|
|
194
|
+
composed: true
|
|
195
|
+
});
|
|
196
|
+
this.dispatchEvent(event);
|
|
197
|
+
return event;
|
|
198
|
+
};
|
|
199
|
+
AiMessageThreadComponent.styles = unsafeCSS(styles);
|
|
200
|
+
__decorateClass([
|
|
201
|
+
property({ attribute: false })
|
|
202
|
+
], AiMessageThreadComponent.prototype, "messageItems", 2);
|
|
203
|
+
__decorateClass([
|
|
204
|
+
property({ attribute: false })
|
|
205
|
+
], AiMessageThreadComponent.prototype, "tools", 2);
|
|
206
|
+
__decorateClass([
|
|
207
|
+
property({ type: Boolean, attribute: "enable-reactions" })
|
|
208
|
+
], AiMessageThreadComponent.prototype, "enableReactions", 2);
|
|
209
|
+
__decorateClass([
|
|
210
|
+
property({ type: Boolean, attribute: "show-thinking" })
|
|
211
|
+
], AiMessageThreadComponent.prototype, "showThinking", 2);
|
|
212
|
+
__decorateClass([
|
|
213
|
+
property({ attribute: "auto-scroll" })
|
|
214
|
+
], AiMessageThreadComponent.prototype, "autoScroll", 2);
|
|
215
|
+
__decorateClass([
|
|
216
|
+
query(".message-thread")
|
|
217
|
+
], AiMessageThreadComponent.prototype, "_messageThreadContainer", 2);
|
|
218
|
+
AiMessageThreadComponent = __decorateClass([
|
|
219
|
+
customElement(AiMessageThreadComponentTagName)
|
|
220
|
+
], AiMessageThreadComponent);
|
|
221
|
+
export {
|
|
222
|
+
AiMessageThreadComponent,
|
|
223
|
+
AiMessageThreadComponentTagName
|
|
224
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const styles = '/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/* prettier-ignore */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n:host {\n display: grid;\n height: 100%;\n}\n\n.message-thread::-webkit-scrollbar {\n height: var(--forge-scrollbar-height, 16px);\n width: var(--forge-scrollbar-width, 16px);\n}\n.message-thread::-webkit-scrollbar-track {\n background-color: var(--forge-scrollbar-track-container, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.message-thread::-webkit-scrollbar-track:hover {\n background-color: var(--forge-scrollbar-track-container-hover, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.message-thread::-webkit-scrollbar-corner {\n background-color: var(--forge-scrollbar-track-container, var(--forge-theme-surface-container-low, #ebebeb));\n}\n.message-thread::-webkit-scrollbar-thumb {\n height: var(--forge-scrollbar-thumb-min-height, 32px);\n width: var(--forge-scrollbar-thumb-min-width, 32px);\n border-radius: var(--forge-scrollbar-border-radius, calc(var(--forge-shape-full, 9999px) * var(--forge-shape-factor, 1)));\n border-width: var(--forge-scrollbar-border-width, 3px);\n border-style: solid;\n border-color: transparent;\n background-color: var(--forge-scrollbar-thumb-container, var(--forge-theme-surface-container-medium, #c2c2c2));\n background-clip: content-box;\n}\n.message-thread::-webkit-scrollbar-thumb:hover {\n background-color: var(--forge-scrollbar-thumb-container-hover, var(--forge-theme-surface-container-high, #9e9e9e));\n}\n.message-thread {\n display: flex;\n flex-direction: column;\n gap: var(--forge-spacing-medium, 16px);\n padding-block-end: var(--forge-spacing-large, 24px);\n overflow-y: auto;\n padding: var(--forge-spacing-medium, 16px) var(--forge-spacing-medium, 16px) var(--forge-spacing-xxlarge, 48px) var(--forge-spacing-medium, 16px);\n}\n@media not all and (min-resolution: 0.001dpcm) {\n @supports (-webkit-appearance: none) {\n .message-thread {\n overflow-y: scroll;\n }\n }\n}\n\n.thinking-indicator {\n margin-block-start: var(--forge-spacing-xsmall, 8px);\n}\n\n.system-message {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-family: var(--forge-typography-subheading2-font-family, var(--forge-typography-font-family, "Roboto", sans-serif));\n font-size: var(--forge-typography-subheading2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-subheading2-font-size-scale, 1)));\n font-weight: var(--forge-typography-subheading2-font-weight, 400);\n line-height: var(--forge-typography-subheading2-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-subheading2-line-height-scale, 1.25)));\n letter-spacing: var(--forge-typography-subheading2-letter-spacing, normal);\n text-transform: var(--forge-typography-subheading2-text-transform, inherit);\n text-decoration: var(--forge-typography-subheading2-text-decoration, inherit);\n color: var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6));\n padding-block: var(--forge-spacing-small, 12px);\n}';
|
|
2
|
+
export {
|
|
3
|
+
styles as default
|
|
4
|
+
};
|
|
@@ -19,6 +19,11 @@ declare global {
|
|
|
19
19
|
* @event {CustomEvent<void>} forge-ai-modal-open - Fired when the modal is opened
|
|
20
20
|
* @event {CustomEvent<void>} forge-ai-modal-close - Fired when the modal is closed
|
|
21
21
|
* @event {CustomEvent<{ isFullscreen: boolean }>} forge-ai-modal-fullscreen-change - Fired when the fullscreen state changes
|
|
22
|
+
*
|
|
23
|
+
* @cssproperty --forge-ai-modal-width - Width of the modal in non-fullscreen mode
|
|
24
|
+
* @cssproperty --forge-ai-modal-height - Height of the modal in non-fullscreen mode
|
|
25
|
+
*
|
|
26
|
+
* @state fullscreen - The modal is in fullscreen mode
|
|
22
27
|
*/
|
|
23
28
|
export declare class AiModalComponent extends LitElement {
|
|
24
29
|
#private;
|
|
@@ -34,6 +39,7 @@ export declare class AiModalComponent extends LitElement {
|
|
|
34
39
|
*/
|
|
35
40
|
fullscreen?: boolean;
|
|
36
41
|
private _autoFullscreen;
|
|
42
|
+
constructor();
|
|
37
43
|
render(): TemplateResult;
|
|
38
44
|
connectedCallback(): void;
|
|
39
45
|
disconnectedCallback(): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { unsafeCSS, LitElement, html } from "lit";
|
|
2
2
|
import { query, property, state, customElement } from "lit/decorators.js";
|
|
3
3
|
import { classMap } from "lit/directives/class-map.js";
|
|
4
|
+
import { toggleState } from "../utils.mjs";
|
|
4
5
|
import styles from "./ai-modal.scss.mjs";
|
|
5
6
|
var __defProp = Object.defineProperty;
|
|
6
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -20,27 +21,33 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
|
|
|
20
21
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
21
22
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
22
23
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
23
|
-
var _mediaQuery, _AiModalComponent_instances, handleDialogClose_fn, handleDialogClick_fn, setupMediaQuery_fn, cleanupMediaQuery_fn, _handleMediaChange;
|
|
24
|
+
var _mediaQuery, _internals, _AiModalComponent_instances, updateFullscreenState_fn, handleDialogClose_fn, handleDialogClick_fn, setupMediaQuery_fn, cleanupMediaQuery_fn, _handleMediaChange;
|
|
24
25
|
const FULLSCREEN_WIDTH_THRESHOLD = 768;
|
|
25
26
|
let AiModalComponent = class extends LitElement {
|
|
26
27
|
constructor() {
|
|
27
|
-
super(
|
|
28
|
+
super();
|
|
28
29
|
__privateAdd(this, _AiModalComponent_instances);
|
|
29
30
|
this.open = false;
|
|
30
31
|
this._autoFullscreen = window.innerWidth <= FULLSCREEN_WIDTH_THRESHOLD;
|
|
31
32
|
__privateAdd(this, _mediaQuery);
|
|
33
|
+
__privateAdd(this, _internals);
|
|
32
34
|
__privateAdd(this, _handleMediaChange, (e) => {
|
|
33
35
|
const previousFullscreen = this._autoFullscreen;
|
|
34
36
|
this._autoFullscreen = e.matches;
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
if (previousFullscreen !== this._autoFullscreen) {
|
|
38
|
+
__privateMethod(this, _AiModalComponent_instances, updateFullscreenState_fn).call(this);
|
|
39
|
+
if (this.fullscreen === void 0) {
|
|
40
|
+
const event = new CustomEvent("forge-ai-modal-fullscreen-change", {
|
|
41
|
+
bubbles: true,
|
|
42
|
+
composed: true,
|
|
43
|
+
detail: { isFullscreen: this._autoFullscreen }
|
|
44
|
+
});
|
|
45
|
+
this.dispatchEvent(event);
|
|
46
|
+
}
|
|
42
47
|
}
|
|
43
48
|
});
|
|
49
|
+
__privateSet(this, _internals, this.attachInternals());
|
|
50
|
+
__privateMethod(this, _AiModalComponent_instances, updateFullscreenState_fn).call(this);
|
|
44
51
|
}
|
|
45
52
|
render() {
|
|
46
53
|
const isFullscreen = this.fullscreen ?? this._autoFullscreen;
|
|
@@ -69,15 +76,20 @@ let AiModalComponent = class extends LitElement {
|
|
|
69
76
|
updated(changedProperties) {
|
|
70
77
|
if (changedProperties.has("open")) {
|
|
71
78
|
if (this.open) {
|
|
72
|
-
this._dialog
|
|
73
|
-
|
|
79
|
+
if (this._dialog && !this._dialog.open) {
|
|
80
|
+
this._dialog.showModal();
|
|
81
|
+
this.dispatchEvent(new CustomEvent("forge-ai-modal-open", { bubbles: true, composed: true }));
|
|
82
|
+
}
|
|
74
83
|
} else {
|
|
75
|
-
this._dialog?.
|
|
76
|
-
|
|
84
|
+
if (this._dialog?.open) {
|
|
85
|
+
this._dialog.close();
|
|
77
86
|
this.dispatchEvent(new CustomEvent("forge-ai-modal-close", { bubbles: true, composed: true }));
|
|
78
|
-
}
|
|
87
|
+
}
|
|
79
88
|
}
|
|
80
89
|
}
|
|
90
|
+
if (changedProperties.has("fullscreen")) {
|
|
91
|
+
__privateMethod(this, _AiModalComponent_instances, updateFullscreenState_fn).call(this);
|
|
92
|
+
}
|
|
81
93
|
}
|
|
82
94
|
/**
|
|
83
95
|
* Shows the modal dialog.
|
|
@@ -93,7 +105,12 @@ let AiModalComponent = class extends LitElement {
|
|
|
93
105
|
}
|
|
94
106
|
};
|
|
95
107
|
_mediaQuery = /* @__PURE__ */ new WeakMap();
|
|
108
|
+
_internals = /* @__PURE__ */ new WeakMap();
|
|
96
109
|
_AiModalComponent_instances = /* @__PURE__ */ new WeakSet();
|
|
110
|
+
updateFullscreenState_fn = function() {
|
|
111
|
+
const isFullscreen = this.fullscreen ?? this._autoFullscreen;
|
|
112
|
+
toggleState(__privateGet(this, _internals), "fullscreen", isFullscreen);
|
|
113
|
+
};
|
|
97
114
|
handleDialogClose_fn = function() {
|
|
98
115
|
this.open = false;
|
|
99
116
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const styles = "/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n@keyframes forge-dialog-zoom-in {\n from {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n to {\n opacity: 1;\n scale: 1;\n }\n}\n@keyframes forge-dialog-zoom-out {\n from {\n opacity: 1;\n scale: 1;\n }\n to {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n@keyframes forge-dialog-fade-in {\n from {\n opacity: var(--_dialog-fade-opacity);\n }\n to {\n opacity: 1;\n }\n}\n@keyframes forge-dialog-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n@keyframes forge-dialog-slide-in {\n from {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n to {\n opacity: 1;\n translate: 0 0;\n }\n}\n@keyframes forge-dialog-slide-out {\n from {\n opacity: 1;\n translate: 0 0;\n }\n to {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog {\n --_dialog-background: var(--forge-dialog-background, var(--forge-theme-surface-bright, #ffffff));\n --_dialog-shape: var(--forge-dialog-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_dialog-elevation: var(--forge-dialog-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12));\n --_dialog-spacing: var(--forge-dialog-spacing, auto);\n --_dialog-block-start-spacing: var(--forge-dialog-block-start-spacing, var(--_dialog-spacing));\n --_dialog-block-end-spacing: var(--forge-dialog-block-end-spacing, var(--_dialog-spacing));\n --_dialog-inline-start-spacing: var(--forge-dialog-inline-start-spacing, var(--_dialog-spacing));\n --_dialog-inline-end-spacing: var(--forge-dialog-inline-end-spacing, var(--_dialog-spacing));\n --_dialog-padding: var(--forge-dialog-padding, 0);\n --_dialog-width: var(--forge-dialog-width, fit-content);\n --_dialog-height: var(--forge-dialog-height, fit-content);\n --_dialog-min-width: var(--forge-dialog-min-width, 0);\n --_dialog-max-width: var(--forge-dialog-max-width, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-min-height: var(--forge-dialog-min-height, 0);\n --_dialog-max-height: var(--forge-dialog-max-height, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-z-index: var(--forge-dialog-z-index, var(--forge-z-index-dialog, 8));\n --_dialog-move-handle-color: var(--forge-dialog-move-handle-color, currentColor);\n --_dialog-move-handle-size: var(--forge-dialog-move-handle-size, 24px);\n --_dialog-move-handle-hover-cursor: var(--forge-dialog-move-handle-hover-cursor, grab);\n --_dialog-move-handle-active-cursor: var(--forge-dialog-move-handle-active-cursor, grabbing);\n --_dialog-move-handle-spacing: var(--forge-dialog-move-handle-spacing, calc(var(--forge-spacing-xxsmall, 4px) * -1) 0 0);\n --_dialog-move-transition-duration: var(--forge-dialog-move-transition-duration, var(--forge-animation-duration-short4, 200ms));\n --_dialog-move-transition-easing: var(--forge-dialog-move-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-moving-opacity: var(--forge-dialog-moving-opacity, 0.54);\n --_dialog-enter-animation-duration: var(--forge-dialog-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-enter-animation-easing: var(--forge-dialog-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-exit-animation-duration: var(--forge-dialog-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-exit-animation-easing: var(--forge-dialog-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --_dialog-zoom-opacity: var(--forge-dialog-zoom-opacity, 0);\n --_dialog-zoom-scale: var(--forge-dialog-zoom-scale, 0.8);\n --_dialog-fade-opacity: var(--forge-dialog-fade-opacity, 0);\n --_dialog-slide-opacity: var(--forge-dialog-slide-opacity, 0);\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 0 -30%);\n --_dialog-backdrop-opacity: var(--forge-dialog-backdrop-opacity, var(--forge-backdrop-opacity, 0.54));\n --_dialog-nonmodal-elevation: var(--forge-dialog-nonmodal-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_dialog-fullscreen-enter-animation-duration: var(--forge-dialog-fullscreen-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-fullscreen-exit-animation-duration: var(--forge-dialog-fullscreen-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-position-x: var(--forge-dialog-position-x, 0);\n --_dialog-position-y: var(--forge-dialog-position-y, 0);\n --_dialog-preset-sheet-enter-animation-duration: var(--forge-dialog-preset-sheet-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-preset-sheet-exit-animation-duration: var(--forge-dialog-preset-sheet-exit-animation-duration, var(--forge-animation-duration-short3, 150ms));\n --_backdrop-background: var(--forge-backdrop-background, #000);\n --_backdrop-opacity: var(--forge-backdrop-opacity, 0.54);\n --_backdrop-z-index: var(--forge-backdrop-z-index, var(--forge-z-index-backdrop, 7));\n --_backdrop-enter-animation-duration: var(--forge-backdrop-enter-animation-duration, var(--forge-animation-duration-short4, 200ms));\n --_backdrop-enter-animation-easing: var(--forge-backdrop-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_backdrop-exit-animation-duration: var(--forge-backdrop-exit-animation-duration, var(--forge-animation-duration-short1, 50ms));\n --_backdrop-exit-animation-easing: var(--forge-backdrop-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --forge-theme-surface: var(--forge-theme-surface-bright, #ffffff);\n}\n\n.forge-dialog {\n position: fixed;\n inset: 0;\n z-index: var(--_dialog-z-index);\n background-color: transparent;\n color: inherit;\n border: none;\n width: auto;\n height: auto;\n padding: 0;\n margin: 0;\n overflow: visible;\n max-width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n position: absolute;\n inset: 0;\n display: flex;\n background: var(--_dialog-background);\n box-shadow: var(--_dialog-elevation);\n z-index: var(--_dialog-z-index);\n overflow: hidden;\n border-radius: var(--_dialog-shape);\n margin-block-start: var(--_dialog-block-start-spacing);\n margin-block-end: var(--_dialog-block-end-spacing);\n margin-inline-start: var(--_dialog-inline-start-spacing);\n margin-inline-end: var(--_dialog-inline-end-spacing);\n padding: var(--_dialog-padding);\n width: var(--_dialog-width);\n height: var(--_dialog-height);\n min-width: var(--_dialog-min-width);\n max-width: var(--_dialog-max-width);\n min-height: var(--_dialog-min-height);\n max-height: var(--_dialog-max-height);\n box-sizing: border-box;\n animation-duration: var(--_dialog-exit-animation-duration);\n animation-timing-function: var(--_dialog-exit-animation-easing);\n position: fixed;\n transition-property: display, opacity, overlay, scale;\n transition-behavior: allow-discrete;\n}\n\n.forge-dialog > forge-scaffold {\n height: auto;\n}\n\n.forge-dialog--fullscreen {\n --_dialog-enter-animation-duration: var(--_dialog-fullscreen-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-fullscreen-exit-animation-duration);\n height: 100%;\n width: 100%;\n max-width: none;\n max-height: none;\n border-radius: 0;\n box-shadow: none;\n}\n\n.forge-dialog:not(:modal) {\n --_dialog-elevation: var(--_dialog-nonmodal-elevation);\n pointer-events: all;\n}\n\n.forge-dialog--moveable {\n user-select: none;\n transition-property: opacity;\n transition-duration: var(--_dialog-move-transition-duration);\n transition-timing-function: var(--_dialog-move-transition-easing);\n}\n\n.forge-dialog--moved {\n margin: 0;\n}\n\n.forge-dialog--moving {\n opacity: var(--_dialog-moving-opacity);\n}\n\n.forge-dialog__move-handle {\n fill: var(--_dialog-move-handle-color);\n height: var(--_dialog-move-handle-size);\n width: var(--_dialog-move-handle-size);\n margin: var(--_dialog-move-handle-spacing);\n touch-action: none;\n}\n\n.forge-dialog__move-handle:hover {\n cursor: var(--_dialog-move-handle-hover-cursor);\n}\n\n.forge-dialog__move-handle:active {\n cursor: var(--_dialog-move-handle-active-cursor);\n}\n\n.forge-dialog__move-handle-container {\n position: absolute;\n top: 0;\n z-index: 1;\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.forge-dialog--top {\n --_dialog-block-start-spacing: var(--forge-dialog-block-start-spacing, 0);\n top: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-right {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: 0;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-left {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: 0;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--bottom {\n --_dialog-block-end-spacing: var(--forge-dialog-block-end-spacing, 0);\n top: auto;\n bottom: 0;\n}\n\n.forge-dialog--bottom-right {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: 0;\n}\n\n.forge-dialog--bottom-left {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: 0;\n}\n\n.forge-dialog--right {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--left {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--custom {\n margin: 0;\n top: var(--_dialog-position-x);\n left: var(--_dialog-position-y);\n}\n\n.forge-dialog--bottom-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n bottom: 0;\n left: 0;\n right: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 0 100%);\n}\n\n.forge-dialog--bottom-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--bottom-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--bottom-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--bottom-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--left-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n left: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, -100% 0);\n}\n\n.forge-dialog--left-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--left-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--left-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--left-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--right-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n right: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 100% 0);\n}\n\n.forge-dialog--right-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--right-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--right-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--right-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--top-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n top: 0;\n left: 0;\n right: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 0 -100%);\n}\n\n.forge-dialog--top-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--top-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--top-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--top-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog::backdrop {\n --forge-backdrop-opacity: var(--_backdrop-opacity);\n --forge-backdrop-enter-animation-duration: var(--_backdrop-enter-animation-duration);\n --forge-backdrop-enter-animation-easing: var(--_backdrop-enter-animation-easing);\n --forge-backdrop-exit-animation-duration: var(--_backdrop-exit-animation-duration);\n --forge-backdrop-exit-animation-easing: var(--_backdrop-exit-animation-easing);\n position: absolute;\n inset: 0;\n z-index: var(--_backdrop-z-index);\n background: var(--_backdrop-background);\n opacity: 0;\n animation-fill-mode: forwards;\n transition-property: display, opacity, overlay;\n}\n\n.forge-dialog[open] {\n opacity: 1;\n scale: 1;\n transition-duration: var(--_dialog-enter-animation-duration);\n transition-timing-function: var(--_dialog-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open] {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n.forge-dialog[open]::backdrop {\n opacity: var(--_backdrop-opacity);\n transition-duration: var(--_backdrop-enter-animation-duration);\n transition-timing-function: var(--_backdrop-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open]::backdrop {\n opacity: 0;\n }\n}\n.forge-dialog:not([open]) {\n animation-duration: var(--_dialog-enter-animation-duration);\n animation-timing-function: var(--_dialog-enter-animation-easing);\n display: none;\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n transition-duration: var(--_dialog-exit-animation-duration);\n transition-timing-function: var(--_dialog-exit-animation-easing);\n}\n\n.forge-dialog:not([open])::backdrop {\n transition-duration: var(--_backdrop-exit-animation-duration);\n transition-timing-function: var(--_backdrop-exit-animation-easing);\n}\n\n.forge-dialog--animation-fade.forge-dialog {\n transition-property: display, opacity, overlay;\n}\n\n@starting-style {\n .forge-dialog--animation-fade.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n.forge-dialog--animation-fade.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n}\n\n.forge-dialog--animation-slide.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--animation-slide.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--animation-slide.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--animation-slide.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--animation-none {\n --_dialog-enter-animation-duration: var(--forge-dialog-enter-animation-duration, 0s);\n --_dialog-exit-animation-duration: var(--forge-dialog-exit-animation-duration, 0s);\n --_backdrop-enter-animation-duration: var(--forge-backdrop-enter-animation-duration, 0s);\n --_backdrop-exit-animation-duration: var(--forge-backdrop-exit-animation-duration, 0s);\n}\n\n@media (prefers-reduced-motion) {\n .forge-dialog.forge-dialog {\n transition-property: display, opacity, overlay;\n }\n @starting-style {\n .forge-dialog.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n }\n .forge-dialog.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n }\n}\n:host {\n display: contents;\n}\n\ndialog.forge-dialog:not(.forge-dialog--fullscreen) {\n height: 80vh;\n width: 80vw;\n border-radius: calc(var(--forge-shape-large, 8px) * var(--forge-shape-factor, 1));\n}";
|
|
1
|
+
const styles = "/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n/**\n * @license\n * Copyright Tyler Technologies, Inc. \n * License: Apache-2.0\n */\n@keyframes forge-dialog-zoom-in {\n from {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n to {\n opacity: 1;\n scale: 1;\n }\n}\n@keyframes forge-dialog-zoom-out {\n from {\n opacity: 1;\n scale: 1;\n }\n to {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n@keyframes forge-dialog-fade-in {\n from {\n opacity: var(--_dialog-fade-opacity);\n }\n to {\n opacity: 1;\n }\n}\n@keyframes forge-dialog-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n@keyframes forge-dialog-slide-in {\n from {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n to {\n opacity: 1;\n translate: 0 0;\n }\n}\n@keyframes forge-dialog-slide-out {\n from {\n opacity: 1;\n translate: 0 0;\n }\n to {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog {\n --_dialog-background: var(--forge-dialog-background, var(--forge-theme-surface-bright, #ffffff));\n --_dialog-shape: var(--forge-dialog-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));\n --_dialog-elevation: var(--forge-dialog-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12));\n --_dialog-spacing: var(--forge-dialog-spacing, auto);\n --_dialog-block-start-spacing: var(--forge-dialog-block-start-spacing, var(--_dialog-spacing));\n --_dialog-block-end-spacing: var(--forge-dialog-block-end-spacing, var(--_dialog-spacing));\n --_dialog-inline-start-spacing: var(--forge-dialog-inline-start-spacing, var(--_dialog-spacing));\n --_dialog-inline-end-spacing: var(--forge-dialog-inline-end-spacing, var(--_dialog-spacing));\n --_dialog-padding: var(--forge-dialog-padding, 0);\n --_dialog-width: var(--forge-dialog-width, fit-content);\n --_dialog-height: var(--forge-dialog-height, fit-content);\n --_dialog-min-width: var(--forge-dialog-min-width, 0);\n --_dialog-max-width: var(--forge-dialog-max-width, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-min-height: var(--forge-dialog-min-height, 0);\n --_dialog-max-height: var(--forge-dialog-max-height, calc(100% - var(--forge-spacing-xxlarge, 48px)));\n --_dialog-z-index: var(--forge-dialog-z-index, var(--forge-z-index-dialog, 8));\n --_dialog-move-handle-color: var(--forge-dialog-move-handle-color, currentColor);\n --_dialog-move-handle-size: var(--forge-dialog-move-handle-size, 24px);\n --_dialog-move-handle-hover-cursor: var(--forge-dialog-move-handle-hover-cursor, grab);\n --_dialog-move-handle-active-cursor: var(--forge-dialog-move-handle-active-cursor, grabbing);\n --_dialog-move-handle-spacing: var(--forge-dialog-move-handle-spacing, calc(var(--forge-spacing-xxsmall, 4px) * -1) 0 0);\n --_dialog-move-transition-duration: var(--forge-dialog-move-transition-duration, var(--forge-animation-duration-short4, 200ms));\n --_dialog-move-transition-easing: var(--forge-dialog-move-transition-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-moving-opacity: var(--forge-dialog-moving-opacity, 0.54);\n --_dialog-enter-animation-duration: var(--forge-dialog-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-enter-animation-easing: var(--forge-dialog-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_dialog-exit-animation-duration: var(--forge-dialog-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-exit-animation-easing: var(--forge-dialog-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --_dialog-zoom-opacity: var(--forge-dialog-zoom-opacity, 0);\n --_dialog-zoom-scale: var(--forge-dialog-zoom-scale, 0.8);\n --_dialog-fade-opacity: var(--forge-dialog-fade-opacity, 0);\n --_dialog-slide-opacity: var(--forge-dialog-slide-opacity, 0);\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 0 -30%);\n --_dialog-backdrop-opacity: var(--forge-dialog-backdrop-opacity, var(--forge-backdrop-opacity, 0.54));\n --_dialog-nonmodal-elevation: var(--forge-dialog-nonmodal-elevation, 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12));\n --_dialog-fullscreen-enter-animation-duration: var(--forge-dialog-fullscreen-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-fullscreen-exit-animation-duration: var(--forge-dialog-fullscreen-exit-animation-duration, var(--forge-animation-duration-short2, 100ms));\n --_dialog-position-x: var(--forge-dialog-position-x, 0);\n --_dialog-position-y: var(--forge-dialog-position-y, 0);\n --_dialog-preset-sheet-enter-animation-duration: var(--forge-dialog-preset-sheet-enter-animation-duration, var(--forge-animation-duration-medium1, 250ms));\n --_dialog-preset-sheet-exit-animation-duration: var(--forge-dialog-preset-sheet-exit-animation-duration, var(--forge-animation-duration-short3, 150ms));\n --_backdrop-background: var(--forge-backdrop-background, #000);\n --_backdrop-opacity: var(--forge-backdrop-opacity, 0.54);\n --_backdrop-z-index: var(--forge-backdrop-z-index, var(--forge-z-index-backdrop, 7));\n --_backdrop-enter-animation-duration: var(--forge-backdrop-enter-animation-duration, var(--forge-animation-duration-short4, 200ms));\n --_backdrop-enter-animation-easing: var(--forge-backdrop-enter-animation-easing, var(--forge-animation-easing-standard, cubic-bezier(0.2, 0, 0, 1)));\n --_backdrop-exit-animation-duration: var(--forge-backdrop-exit-animation-duration, var(--forge-animation-duration-short1, 50ms));\n --_backdrop-exit-animation-easing: var(--forge-backdrop-exit-animation-easing, var(--forge-animation-easing-emphasized-accelerate, cubic-bezier(0.3, 0, 0.8, 0.15)));\n --forge-theme-surface: var(--forge-theme-surface-bright, #ffffff);\n}\n\n.forge-dialog {\n position: fixed;\n inset: 0;\n z-index: var(--_dialog-z-index);\n background-color: transparent;\n color: inherit;\n border: none;\n width: auto;\n height: auto;\n padding: 0;\n margin: 0;\n overflow: visible;\n max-width: 100%;\n max-height: 100%;\n box-sizing: border-box;\n position: absolute;\n inset: 0;\n display: flex;\n background: var(--_dialog-background);\n box-shadow: var(--_dialog-elevation);\n z-index: var(--_dialog-z-index);\n overflow: hidden;\n border-radius: var(--_dialog-shape);\n margin-block-start: var(--_dialog-block-start-spacing);\n margin-block-end: var(--_dialog-block-end-spacing);\n margin-inline-start: var(--_dialog-inline-start-spacing);\n margin-inline-end: var(--_dialog-inline-end-spacing);\n padding: var(--_dialog-padding);\n width: var(--_dialog-width);\n height: var(--_dialog-height);\n min-width: var(--_dialog-min-width);\n max-width: var(--_dialog-max-width);\n min-height: var(--_dialog-min-height);\n max-height: var(--_dialog-max-height);\n box-sizing: border-box;\n animation-duration: var(--_dialog-exit-animation-duration);\n animation-timing-function: var(--_dialog-exit-animation-easing);\n position: fixed;\n transition-property: display, opacity, overlay, scale;\n transition-behavior: allow-discrete;\n}\n\n.forge-dialog > forge-scaffold {\n height: auto;\n}\n\n.forge-dialog--fullscreen {\n --_dialog-enter-animation-duration: var(--_dialog-fullscreen-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-fullscreen-exit-animation-duration);\n height: 100%;\n width: 100%;\n max-width: none;\n max-height: none;\n border-radius: 0;\n box-shadow: none;\n}\n\n.forge-dialog:not(:modal) {\n --_dialog-elevation: var(--_dialog-nonmodal-elevation);\n pointer-events: all;\n}\n\n.forge-dialog--moveable {\n user-select: none;\n transition-property: opacity;\n transition-duration: var(--_dialog-move-transition-duration);\n transition-timing-function: var(--_dialog-move-transition-easing);\n}\n\n.forge-dialog--moved {\n margin: 0;\n}\n\n.forge-dialog--moving {\n opacity: var(--_dialog-moving-opacity);\n}\n\n.forge-dialog__move-handle {\n fill: var(--_dialog-move-handle-color);\n height: var(--_dialog-move-handle-size);\n width: var(--_dialog-move-handle-size);\n margin: var(--_dialog-move-handle-spacing);\n touch-action: none;\n}\n\n.forge-dialog__move-handle:hover {\n cursor: var(--_dialog-move-handle-hover-cursor);\n}\n\n.forge-dialog__move-handle:active {\n cursor: var(--_dialog-move-handle-active-cursor);\n}\n\n.forge-dialog__move-handle-container {\n position: absolute;\n top: 0;\n z-index: 1;\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.forge-dialog--top {\n --_dialog-block-start-spacing: var(--forge-dialog-block-start-spacing, 0);\n top: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-right {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: 0;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--top-left {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: 0;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--bottom {\n --_dialog-block-end-spacing: var(--forge-dialog-block-end-spacing, 0);\n top: auto;\n bottom: 0;\n}\n\n.forge-dialog--bottom-right {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: 0;\n}\n\n.forge-dialog--bottom-left {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: 0;\n}\n\n.forge-dialog--right {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: auto;\n right: 0;\n bottom: auto;\n}\n\n.forge-dialog--left {\n --_dialog-spacing: var(--forge-dialog-spacing, 0);\n top: auto;\n left: 0;\n right: auto;\n bottom: auto;\n}\n\n.forge-dialog--custom {\n margin: 0;\n top: var(--_dialog-position-x);\n left: var(--_dialog-position-y);\n}\n\n.forge-dialog--bottom-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n bottom: 0;\n left: 0;\n right: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 0 100%);\n}\n\n.forge-dialog--bottom-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--bottom-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--bottom-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--bottom-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--left-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n left: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, -100% 0);\n}\n\n.forge-dialog--left-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--left-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--left-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--left-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--right-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n right: 0;\n bottom: 0;\n top: 0;\n height: 100%;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 100% 0);\n}\n\n.forge-dialog--right-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--right-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--right-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--right-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--top-sheet {\n --_dialog-enter-animation-duration: var(--_dialog-preset-sheet-enter-animation-duration);\n --_dialog-exit-animation-duration: var(--_dialog-preset-sheet-exit-animation-duration);\n --_dialog-max-width: var(--forge-dialog-max-width, none);\n --_dialog-max-height: var(--forge-dialog-max-height, none);\n inset: auto;\n display: inline-flex;\n top: 0;\n left: 0;\n right: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n --_dialog-slide-translate: var(--forge-dialog-slide-translate, 0 -100%);\n}\n\n.forge-dialog--top-sheet.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--top-sheet.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--top-sheet.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--top-sheet.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog::backdrop {\n --forge-backdrop-opacity: var(--_backdrop-opacity);\n --forge-backdrop-enter-animation-duration: var(--_backdrop-enter-animation-duration);\n --forge-backdrop-enter-animation-easing: var(--_backdrop-enter-animation-easing);\n --forge-backdrop-exit-animation-duration: var(--_backdrop-exit-animation-duration);\n --forge-backdrop-exit-animation-easing: var(--_backdrop-exit-animation-easing);\n position: absolute;\n inset: 0;\n z-index: var(--_backdrop-z-index);\n background: var(--_backdrop-background);\n opacity: 0;\n animation-fill-mode: forwards;\n transition-property: display, opacity, overlay;\n}\n\n.forge-dialog[open] {\n opacity: 1;\n scale: 1;\n transition-duration: var(--_dialog-enter-animation-duration);\n transition-timing-function: var(--_dialog-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open] {\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n }\n}\n.forge-dialog[open]::backdrop {\n opacity: var(--_backdrop-opacity);\n transition-duration: var(--_backdrop-enter-animation-duration);\n transition-timing-function: var(--_backdrop-enter-animation-easing);\n}\n\n@starting-style {\n .forge-dialog[open]::backdrop {\n opacity: 0;\n }\n}\n.forge-dialog:not([open]) {\n animation-duration: var(--_dialog-enter-animation-duration);\n animation-timing-function: var(--_dialog-enter-animation-easing);\n display: none;\n opacity: var(--_dialog-zoom-opacity);\n scale: var(--_dialog-zoom-scale);\n transition-duration: var(--_dialog-exit-animation-duration);\n transition-timing-function: var(--_dialog-exit-animation-easing);\n}\n\n.forge-dialog:not([open])::backdrop {\n transition-duration: var(--_backdrop-exit-animation-duration);\n transition-timing-function: var(--_backdrop-exit-animation-easing);\n}\n\n.forge-dialog--animation-fade.forge-dialog {\n transition-property: display, opacity, overlay;\n}\n\n@starting-style {\n .forge-dialog--animation-fade.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n}\n.forge-dialog--animation-fade.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n}\n\n.forge-dialog--animation-slide.forge-dialog {\n transition-property: display, opacity, overlay, translate;\n}\n\n.forge-dialog--animation-slide.forge-dialog[open] {\n translate: 0 0;\n}\n\n@starting-style {\n .forge-dialog--animation-slide.forge-dialog[open] {\n opacity: var(--_dialog-slide-opacity);\n translate: var(--_dialog-slide-translate);\n }\n}\n.forge-dialog--animation-slide.forge-dialog:not([open]) {\n opacity: var(--_dialog-slide-opacity);\n scale: 1;\n translate: var(--_dialog-slide-translate);\n}\n\n.forge-dialog--animation-none {\n --_dialog-enter-animation-duration: var(--forge-dialog-enter-animation-duration, 0s);\n --_dialog-exit-animation-duration: var(--forge-dialog-exit-animation-duration, 0s);\n --_backdrop-enter-animation-duration: var(--forge-backdrop-enter-animation-duration, 0s);\n --_backdrop-exit-animation-duration: var(--forge-backdrop-exit-animation-duration, 0s);\n}\n\n@media (prefers-reduced-motion) {\n .forge-dialog.forge-dialog {\n transition-property: display, opacity, overlay;\n }\n @starting-style {\n .forge-dialog.forge-dialog[open] {\n opacity: var(--_dialog-fade-opacity);\n }\n }\n .forge-dialog.forge-dialog:not([open]) {\n opacity: var(--_dialog-fade-opacity);\n scale: 1;\n }\n}\n:host {\n display: contents;\n}\n\ndialog.forge-dialog:not(.forge-dialog--fullscreen) {\n height: var(--forge-ai-modal-height, 80vh);\n width: var(--forge-ai-modal-width, 80vw);\n border-radius: calc(var(--forge-shape-large, 8px) * var(--forge-shape-factor, 1));\n}";
|
|
2
2
|
export {
|
|
3
3
|
styles as default
|
|
4
4
|
};
|