@pillar-ai/angular 0.1.11

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.
@@ -0,0 +1,80 @@
1
+ /**
2
+ * PillarPanelComponent
3
+ * Renders the Pillar help panel at a custom location in the DOM
4
+ */
5
+ import { Component, ViewChild, inject, effect, input, ChangeDetectionStrategy, } from '@angular/core';
6
+ import { PillarService } from './pillar.service';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Renders the Pillar help panel at a custom location in the DOM.
10
+ * Use this when you want to control where the panel is rendered instead of
11
+ * having it automatically appended to document.body.
12
+ *
13
+ * **Important**: When using this component, set `panel.container: 'manual'` in your
14
+ * Pillar configuration to prevent automatic mounting.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // app.config.ts
19
+ * function initPillar() {
20
+ * const pillar = inject(PillarService);
21
+ * return () => pillar.init({
22
+ * productKey: 'your-product-key',
23
+ * config: { panel: { container: 'manual' } }
24
+ * });
25
+ * }
26
+ *
27
+ * // layout.component.ts
28
+ * @Component({
29
+ * selector: 'app-layout',
30
+ * standalone: true,
31
+ * imports: [PillarPanelComponent],
32
+ * template: `
33
+ * <div class="layout">
34
+ * <app-sidebar />
35
+ * <pillar-panel class="help-panel-container" />
36
+ * <main>
37
+ * <router-outlet />
38
+ * </main>
39
+ * </div>
40
+ * `,
41
+ * })
42
+ * export class LayoutComponent {}
43
+ * ```
44
+ */
45
+ export class PillarPanelComponent {
46
+ containerRef;
47
+ pillarService = inject(PillarService);
48
+ hasMounted = false;
49
+ effectRef = null;
50
+ /**
51
+ * Optional class to add to the container element.
52
+ * Use host binding for styling instead if possible.
53
+ */
54
+ containerClass = input('');
55
+ ngAfterViewInit() {
56
+ // Use effect to react to isReady signal changes
57
+ this.effectRef = effect(() => {
58
+ const isReady = this.pillarService.isReady();
59
+ if (isReady && !this.hasMounted && this.containerRef?.nativeElement) {
60
+ this.pillarService.mountPanelTo(this.containerRef.nativeElement);
61
+ this.hasMounted = true;
62
+ }
63
+ });
64
+ }
65
+ ngOnDestroy() {
66
+ // Effect is automatically cleaned up when component is destroyed
67
+ // Panel cleanup is handled by PillarService
68
+ this.effectRef?.destroy();
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PillarPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: PillarPanelComponent, isStandalone: true, selector: "pillar-panel", inputs: { containerClass: { classPropertyName: "containerClass", publicName: "containerClass", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: '<div #container data-pillar-panel-container></div>', isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PillarPanelComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'pillar-panel', standalone: true, template: '<div #container data-pillar-panel-container></div>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
76
+ }], propDecorators: { containerRef: [{
77
+ type: ViewChild,
78
+ args: ['container', { static: true }]
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlsbGFyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcGlsbGFyLXBhbmVsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsRUFHVCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCx1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NHO0FBY0gsTUFBTSxPQUFPLG9CQUFvQjtJQUV2QixZQUFZLENBQThCO0lBRWpDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0MsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixTQUFTLEdBQXFDLElBQUksQ0FBQztJQUUzRDs7O09BR0c7SUFDTSxjQUFjLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRTVDLGVBQWU7UUFDYixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFN0MsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsaUVBQWlFO1FBQ2pFLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBOUJVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLGdXQVZyQixvREFBb0Q7OzRGQVVuRCxvQkFBb0I7a0JBYmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksWUFDTixvREFBb0QsbUJBUTdDLHVCQUF1QixDQUFDLE1BQU07OEJBSXZDLFlBQVk7c0JBRG5CLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGlsbGFyUGFuZWxDb21wb25lbnRcbiAqIFJlbmRlcnMgdGhlIFBpbGxhciBoZWxwIHBhbmVsIGF0IGEgY3VzdG9tIGxvY2F0aW9uIGluIHRoZSBET01cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxuICBpbmplY3QsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBpbGxhclNlcnZpY2UgfSBmcm9tICcuL3BpbGxhci5zZXJ2aWNlJztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBQaWxsYXIgaGVscCBwYW5lbCBhdCBhIGN1c3RvbSBsb2NhdGlvbiBpbiB0aGUgRE9NLlxuICogVXNlIHRoaXMgd2hlbiB5b3Ugd2FudCB0byBjb250cm9sIHdoZXJlIHRoZSBwYW5lbCBpcyByZW5kZXJlZCBpbnN0ZWFkIG9mXG4gKiBoYXZpbmcgaXQgYXV0b21hdGljYWxseSBhcHBlbmRlZCB0byBkb2N1bWVudC5ib2R5LlxuICpcbiAqICoqSW1wb3J0YW50Kio6IFdoZW4gdXNpbmcgdGhpcyBjb21wb25lbnQsIHNldCBgcGFuZWwuY29udGFpbmVyOiAnbWFudWFsJ2AgaW4geW91clxuICogUGlsbGFyIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBhdXRvbWF0aWMgbW91bnRpbmcuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIGFwcC5jb25maWcudHNcbiAqIGZ1bmN0aW9uIGluaXRQaWxsYXIoKSB7XG4gKiAgIGNvbnN0IHBpbGxhciA9IGluamVjdChQaWxsYXJTZXJ2aWNlKTtcbiAqICAgcmV0dXJuICgpID0+IHBpbGxhci5pbml0KHtcbiAqICAgICBwcm9kdWN0S2V5OiAneW91ci1wcm9kdWN0LWtleScsXG4gKiAgICAgY29uZmlnOiB7IHBhbmVsOiB7IGNvbnRhaW5lcjogJ21hbnVhbCcgfSB9XG4gKiAgIH0pO1xuICogfVxuICpcbiAqIC8vIGxheW91dC5jb21wb25lbnQudHNcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcC1sYXlvdXQnLFxuICogICBzdGFuZGFsb25lOiB0cnVlLFxuICogICBpbXBvcnRzOiBbUGlsbGFyUGFuZWxDb21wb25lbnRdLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRcIj5cbiAqICAgICAgIDxhcHAtc2lkZWJhciAvPlxuICogICAgICAgPHBpbGxhci1wYW5lbCBjbGFzcz1cImhlbHAtcGFuZWwtY29udGFpbmVyXCIgLz5cbiAqICAgICAgIDxtYWluPlxuICogICAgICAgICA8cm91dGVyLW91dGxldCAvPlxuICogICAgICAgPC9tYWluPlxuICogICAgIDwvZGl2PlxuICogICBgLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQge31cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwaWxsYXItcGFuZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxkaXYgI2NvbnRhaW5lciBkYXRhLXBpbGxhci1wYW5lbC1jb250YWluZXI+PC9kaXY+JyxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGlsbGFyUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGlsbGFyU2VydmljZSA9IGluamVjdChQaWxsYXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBoYXNNb3VudGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZWZmZWN0UmVmOiBSZXR1cm5UeXBlPHR5cGVvZiBlZmZlY3Q+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsYXNzIHRvIGFkZCB0byB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqIFVzZSBob3N0IGJpbmRpbmcgZm9yIHN0eWxpbmcgaW5zdGVhZCBpZiBwb3NzaWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckNsYXNzID0gaW5wdXQ8c3RyaW5nPignJyk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIFVzZSBlZmZlY3QgdG8gcmVhY3QgdG8gaXNSZWFkeSBzaWduYWwgY2hhbmdlc1xuICAgIHRoaXMuZWZmZWN0UmVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlzUmVhZHkgPSB0aGlzLnBpbGxhclNlcnZpY2UuaXNSZWFkeSgpO1xuXG4gICAgICBpZiAoaXNSZWFkeSAmJiAhdGhpcy5oYXNNb3VudGVkICYmIHRoaXMuY29udGFpbmVyUmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgIHRoaXMucGlsbGFyU2VydmljZS5tb3VudFBhbmVsVG8odGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuaGFzTW91bnRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBFZmZlY3QgaXMgYXV0b21hdGljYWxseSBjbGVhbmVkIHVwIHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIC8vIFBhbmVsIGNsZWFudXAgaXMgaGFuZGxlZCBieSBQaWxsYXJTZXJ2aWNlXG4gICAgdGhpcy5lZmZlY3RSZWY/LmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,308 @@
1
+ /**
2
+ * PillarService
3
+ * Angular service that initializes and manages the Pillar SDK
4
+ */
5
+ import { Injectable, NgZone, signal, computed, inject, createComponent, ApplicationRef, EnvironmentInjector, } from '@angular/core';
6
+ import { Pillar, } from '@pillar-ai/sdk';
7
+ import * as i0 from "@angular/core";
8
+ export class PillarService {
9
+ ngZone = inject(NgZone);
10
+ appRef = inject(ApplicationRef);
11
+ environmentInjector = inject(EnvironmentInjector);
12
+ // Internal state
13
+ _pillar = signal(null);
14
+ cleanupFns = [];
15
+ cardRefs = new Map();
16
+ onTaskCallback = null;
17
+ registeredCards = null;
18
+ // Public signals
19
+ state = signal('uninitialized');
20
+ isReady = computed(() => this.state() === 'ready');
21
+ isPanelOpen = signal(false);
22
+ /**
23
+ * Get the Pillar SDK instance.
24
+ */
25
+ getInstance() {
26
+ return this._pillar();
27
+ }
28
+ /**
29
+ * Initialize the Pillar SDK.
30
+ * Call this in your app's initialization (e.g., APP_INITIALIZER).
31
+ *
32
+ * @param initConfig - Configuration options
33
+ */
34
+ async init(initConfig) {
35
+ const { productKey, helpCenter, config, onTask, cards } = initConfig;
36
+ // Support both productKey (new) and helpCenter (deprecated)
37
+ const resolvedKey = productKey ?? helpCenter;
38
+ if (helpCenter && !productKey) {
39
+ console.warn('[Pillar Angular] "helpCenter" is deprecated. Use "productKey" instead.');
40
+ }
41
+ // Store callbacks for later use
42
+ this.onTaskCallback = onTask ?? null;
43
+ this.registeredCards = cards ?? null;
44
+ try {
45
+ // Pillar is a singleton - check if already initialized
46
+ const existingInstance = Pillar.getInstance();
47
+ if (existingInstance) {
48
+ // Reuse existing instance (preserves chat history, panel state, etc.)
49
+ this._pillar.set(existingInstance);
50
+ this.state.set(existingInstance.state);
51
+ this.subscribeToEvents(existingInstance);
52
+ this.registerCards(existingInstance);
53
+ return;
54
+ }
55
+ // Initialize new instance
56
+ const instance = await Pillar.init({
57
+ productKey: resolvedKey,
58
+ ...config,
59
+ });
60
+ this.ngZone.run(() => {
61
+ this._pillar.set(instance);
62
+ this.state.set(instance.state);
63
+ });
64
+ this.subscribeToEvents(instance);
65
+ this.registerCards(instance);
66
+ }
67
+ catch (error) {
68
+ console.error('[Pillar Angular] Failed to initialize:', error);
69
+ this.ngZone.run(() => {
70
+ this.state.set('error');
71
+ });
72
+ throw error;
73
+ }
74
+ }
75
+ /**
76
+ * Subscribe to SDK events and sync to Angular signals.
77
+ */
78
+ subscribeToEvents(instance) {
79
+ // Panel open/close events
80
+ const unsubOpen = instance.on('panel:open', () => {
81
+ this.ngZone.run(() => {
82
+ this.isPanelOpen.set(true);
83
+ });
84
+ });
85
+ this.cleanupFns.push(unsubOpen);
86
+ const unsubClose = instance.on('panel:close', () => {
87
+ this.ngZone.run(() => {
88
+ this.isPanelOpen.set(false);
89
+ });
90
+ });
91
+ this.cleanupFns.push(unsubClose);
92
+ // State change events
93
+ const unsubReady = instance.on('ready', () => {
94
+ this.ngZone.run(() => {
95
+ this.state.set('ready');
96
+ });
97
+ });
98
+ this.cleanupFns.push(unsubReady);
99
+ const unsubError = instance.on('error', () => {
100
+ this.ngZone.run(() => {
101
+ this.state.set('error');
102
+ });
103
+ });
104
+ this.cleanupFns.push(unsubError);
105
+ // Task execution events
106
+ if (this.onTaskCallback) {
107
+ const callback = this.onTaskCallback;
108
+ const unsubTask = instance.on('task:execute', (task) => {
109
+ this.ngZone.run(() => {
110
+ callback(task);
111
+ });
112
+ });
113
+ this.cleanupFns.push(unsubTask);
114
+ }
115
+ }
116
+ /**
117
+ * Register custom card components.
118
+ */
119
+ registerCards(instance) {
120
+ if (!this.registeredCards)
121
+ return;
122
+ Object.entries(this.registeredCards).forEach(([cardType, CardComponent]) => {
123
+ const unsubscribe = instance.registerCard(cardType, (container, data, callbacks) => {
124
+ // Create an Angular component dynamically
125
+ const componentRef = createComponent(CardComponent, {
126
+ environmentInjector: this.environmentInjector,
127
+ });
128
+ // Set inputs
129
+ componentRef.setInput('data', data);
130
+ componentRef.setInput('onConfirm', callbacks.onConfirm);
131
+ componentRef.setInput('onCancel', callbacks.onCancel);
132
+ componentRef.setInput('onStateChange', callbacks.onStateChange);
133
+ // Attach to the application
134
+ this.appRef.attachView(componentRef.hostView);
135
+ // Append to container
136
+ container.appendChild(componentRef.location.nativeElement);
137
+ this.cardRefs.set(container, componentRef);
138
+ // Return cleanup function
139
+ return () => {
140
+ const ref = this.cardRefs.get(container);
141
+ if (ref) {
142
+ this.appRef.detachView(ref.hostView);
143
+ ref.destroy();
144
+ this.cardRefs.delete(container);
145
+ }
146
+ };
147
+ });
148
+ this.cleanupFns.push(unsubscribe);
149
+ });
150
+ }
151
+ /**
152
+ * Open the help panel.
153
+ */
154
+ open(options) {
155
+ this._pillar()?.open(options);
156
+ }
157
+ /**
158
+ * Close the help panel.
159
+ */
160
+ close() {
161
+ this._pillar()?.close();
162
+ }
163
+ /**
164
+ * Toggle the help panel.
165
+ */
166
+ toggle() {
167
+ this._pillar()?.toggle();
168
+ }
169
+ /**
170
+ * Open a specific article.
171
+ */
172
+ openArticle(slug) {
173
+ this._pillar()?.open({ article: slug });
174
+ }
175
+ /**
176
+ * Open a specific category.
177
+ */
178
+ async openCategory(slug) {
179
+ this._pillar()?.navigate('category', { slug });
180
+ }
181
+ /**
182
+ * Perform a search.
183
+ */
184
+ search(query) {
185
+ this._pillar()?.open({ search: query });
186
+ }
187
+ /**
188
+ * Navigate to a specific view.
189
+ */
190
+ navigate(view, params) {
191
+ this._pillar()?.navigate(view, params);
192
+ }
193
+ /**
194
+ * Update the panel theme at runtime.
195
+ */
196
+ setTheme(theme) {
197
+ this._pillar()?.setTheme(theme);
198
+ }
199
+ /**
200
+ * Enable or disable the text selection "Ask AI" popover.
201
+ */
202
+ setTextSelectionEnabled(enabled) {
203
+ this._pillar()?.setTextSelectionEnabled(enabled);
204
+ }
205
+ /**
206
+ * Subscribe to SDK events.
207
+ */
208
+ on(event, callback) {
209
+ const pillar = this._pillar();
210
+ if (!pillar) {
211
+ return () => { };
212
+ }
213
+ // Wrap callback to run in Angular zone
214
+ const wrappedCallback = (data) => {
215
+ this.ngZone.run(() => callback(data));
216
+ };
217
+ return pillar.on(event, wrappedCallback);
218
+ }
219
+ /**
220
+ * Register a task handler.
221
+ */
222
+ onTask(taskName, handler) {
223
+ const pillar = this._pillar();
224
+ if (!pillar) {
225
+ return () => { };
226
+ }
227
+ // Wrap handler to run in Angular zone
228
+ const wrappedHandler = (data) => {
229
+ this.ngZone.run(() => handler(data));
230
+ };
231
+ return pillar.onTask(taskName, wrappedHandler);
232
+ }
233
+ /**
234
+ * Define a tool with metadata and handler.
235
+ * Returns an unsubscribe function to remove the tool.
236
+ *
237
+ * @example
238
+ * ```typescript
239
+ * const unsubscribe = pillarService.defineTool({
240
+ * name: 'add_to_cart',
241
+ * description: 'Add a product to the shopping cart',
242
+ * inputSchema: {
243
+ * type: 'object',
244
+ * properties: {
245
+ * productId: { type: 'string' },
246
+ * quantity: { type: 'number' },
247
+ * },
248
+ * required: ['productId', 'quantity'],
249
+ * },
250
+ * execute: async ({ productId, quantity }) => {
251
+ * await this.cartService.add(productId, quantity);
252
+ * return { content: [{ type: 'text', text: 'Added to cart' }] };
253
+ * },
254
+ * });
255
+ *
256
+ * // Later, to unregister:
257
+ * unsubscribe();
258
+ * ```
259
+ */
260
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
261
+ defineTool(schema) {
262
+ const pillar = this._pillar();
263
+ if (!pillar) {
264
+ console.warn('[Pillar Angular] Cannot define tool - SDK not initialized');
265
+ return () => { };
266
+ }
267
+ // Wrap execute to run in Angular zone
268
+ const wrappedSchema = {
269
+ ...schema,
270
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
271
+ execute: async (input) => {
272
+ return this.ngZone.run(() => schema.execute(input));
273
+ },
274
+ };
275
+ return pillar.defineTool(wrappedSchema);
276
+ }
277
+ /**
278
+ * Mount the panel to a specific container element.
279
+ * Used for manual panel placement with PillarPanelComponent.
280
+ */
281
+ mountPanelTo(container) {
282
+ this._pillar()?.mountPanelTo(container);
283
+ }
284
+ /**
285
+ * Cleanup resources.
286
+ * Note: We intentionally don't call Pillar.destroy() here to preserve
287
+ * conversation history across route changes. Call Pillar.destroy()
288
+ * explicitly if you need to fully reset the SDK.
289
+ */
290
+ ngOnDestroy() {
291
+ // Run all cleanup functions
292
+ this.cleanupFns.forEach((cleanup) => cleanup());
293
+ this.cleanupFns.length = 0;
294
+ // Destroy all card component refs
295
+ this.cardRefs.forEach((ref) => {
296
+ this.appRef.detachView(ref.hostView);
297
+ ref.destroy();
298
+ });
299
+ this.cardRefs.clear();
300
+ }
301
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PillarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
302
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PillarService, providedIn: 'root' });
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PillarService, decorators: [{
305
+ type: Injectable,
306
+ args: [{ providedIn: 'root' }]
307
+ }] });
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlsbGFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3BpbGxhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLGVBQWUsRUFDZixjQUFjLEVBQ2QsbUJBQW1CLEdBRXBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxNQUFNLEdBUVAsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJeEIsTUFBTSxPQUFPLGFBQWE7SUFDUCxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFbkUsaUJBQWlCO0lBQ0EsT0FBTyxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFDdEMsVUFBVSxHQUFzQixFQUFFLENBQUM7SUFDbkMsUUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3JELGNBQWMsR0FBZ0QsSUFBSSxDQUFDO0lBQ25FLGVBQWUsR0FBeUMsSUFBSSxDQUFDO0lBRXJFLGlCQUFpQjtJQUNSLEtBQUssR0FBRyxNQUFNLENBQWMsZUFBZSxDQUFDLENBQUM7SUFDN0MsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDbkQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyQzs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLFVB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UUFDVCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7d0dBOVZVLGFBQWE7NEdBQWIsYUFBYSxjQURBLE1BQU07OzRGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGlsbGFyU2VydmljZVxuICogQW5ndWxhciBzZXJ2aWNlIHRoYXQgaW5pdGlhbGl6ZXMgYW5kIG1hbmFnZXMgdGhlIFBpbGxhciBTREtcbiAqL1xuXG5pbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBOZ1pvbmUsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgY3JlYXRlQ29tcG9uZW50LFxuICBBcHBsaWNhdGlvblJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgdHlwZSBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFBpbGxhcixcbiAgdHlwZSBDYXJkQ2FsbGJhY2tzLFxuICB0eXBlIFBpbGxhckNvbmZpZyxcbiAgdHlwZSBQaWxsYXJFdmVudHMsXG4gIHR5cGUgUGlsbGFyU3RhdGUsXG4gIHR5cGUgVGFza0V4ZWN1dGVQYXlsb2FkLFxuICB0eXBlIFRoZW1lQ29uZmlnLFxuICB0eXBlIFRvb2xTY2hlbWEsXG59IGZyb20gJ0BwaWxsYXItYWkvc2RrJztcbmltcG9ydCB0eXBlIHsgQ2FyZENvbXBvbmVudCwgUGlsbGFySW5pdENvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBpbGxhclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZVxuICBwcml2YXRlIHJlYWRvbmx5IF9waWxsYXIgPSBzaWduYWw8UGlsbGFyIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xlYW51cEZuczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXJkUmVmczogTWFwPEhUTUxFbGVtZW50LCBhbnk+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIG9uVGFza0NhbGxiYWNrOiAoKHRhc2s6IFRhc2tFeGVjdXRlUGF5bG9hZCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWdpc3RlcmVkQ2FyZHM6IFJlY29yZDxzdHJpbmcsIENhcmRDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gUHVibGljIHNpZ25hbHNcbiAgcmVhZG9ubHkgc3RhdGUgPSBzaWduYWw8UGlsbGFyU3RhdGU+KCd1bmluaXRpYWxpemVkJyk7XG4gIHJlYWRvbmx5IGlzUmVhZHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkgPT09ICdyZWFkeScpO1xuICByZWFkb25seSBpc1BhbmVsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgUGlsbGFyIFNESyBpbnN0YW5jZS5cbiAgICovXG4gIGdldEluc3RhbmNlKCk6IFBpbGxhciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9waWxsYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBQaWxsYXIgU0RLLlxuICAgKiBDYWxsIHRoaXMgaW4geW91ciBhcHAncyBpbml0aWFsaXphdGlvbiAoZS5nLiwgQVBQX0lOSVRJQUxJWkVSKS5cbiAgICpcbiAgICogQHBhcmFtIGluaXRDb25maWcgLSBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIGFzeW5jIGluaXQoaW5pdENvbmZpZzogUGlsbGFySW5pdENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgcHJvZHVjdEtleSwgaGVscENlbnRlciwgY29uZmlnLCBvblRhc2ssIGNhcmRzIH0gPSBpbml0Q29uZmlnO1xuXG4gICAgLy8gU3VwcG9ydCBib3RoIHByb2R1Y3RLZXkgKG5ldykgYW5kIGhlbHBDZW50ZXIgKGRlcHJlY2F0ZWQpXG4gICAgY29uc3QgcmVzb2x2ZWRLZXkgPSBwcm9kdWN0S2V5ID8/IGhlbHBDZW50ZXI7XG5cbiAgICBpZiAoaGVscENlbnRlciAmJiAhcHJvZHVjdEtleSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnW1BpbGxhciBBbmd1bGFyXSBcImhlbHBDZW50ZXJcIiBpcyBkZXByZWNhdGVkLiBVc2UgXCJwcm9kdWN0S2V5XCIgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIGNhbGxiYWNrcyBmb3IgbGF0ZXIgdXNlXG4gICAgdGhpcy5vblRhc2tDYWxsYmFjayA9IG9uVGFzayA/PyBudWxsO1xuICAgIHRoaXMucmVnaXN0ZXJlZENhcmRzID0gY2FyZHMgPz8gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBQaWxsYXIgaXMgYSBzaW5nbGV0b24gLSBjaGVjayBpZiBhbHJlYWR5IGluaXRpYWxpemVkXG4gICAgICBjb25zdCBleGlzdGluZ0luc3RhbmNlID0gUGlsbGFyLmdldEluc3RhbmNlKCk7XG4gICAgICBpZiAoZXhpc3RpbmdJbnN0YW5jZSkge1xuICAgICAgICAvLyBSZXVzZSBleGlzdGluZyBpbnN0YW5jZSAocHJlc2VydmVzIGNoYXQgaGlzdG9yeSwgcGFuZWwgc3RhdGUsIGV0Yy4pXG4gICAgICAgIHRoaXMuX3BpbGxhci5zZXQoZXhpc3RpbmdJbnN0YW5jZSk7XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KGV4aXN0aW5nSW5zdGFuY2Uuc3RhdGUpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKGV4aXN0aW5nSW5zdGFuY2UpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ2FyZHMoZXhpc3RpbmdJbnN0YW5jZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSW5pdGlhbGl6ZSBuZXcgaW5zdGFuY2VcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgUGlsbGFyLmluaXQoe1xuICAgICAgICBwcm9kdWN0S2V5OiByZXNvbHZlZEtleSxcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3BpbGxhci5zZXQoaW5zdGFuY2UpO1xuICAgICAgICB0aGlzLnN0YXRlLnNldChpbnN0YW5jZS5zdGF0ZSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0V2ZW50cyhpbnN0YW5jZSk7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ2FyZHMoaW5zdGFuY2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbUGlsbGFyIEFuZ3VsYXJdIEZhaWxlZCB0byBpbml0aWFsaXplOicsIGVycm9yKTtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIFNESyBldmVudHMgYW5kIHN5bmMgdG8gQW5ndWxhciBzaWduYWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0V2ZW50cyhpbnN0YW5jZTogUGlsbGFyKTogdm9pZCB7XG4gICAgLy8gUGFuZWwgb3Blbi9jbG9zZSBldmVudHNcbiAgICBjb25zdCB1bnN1Yk9wZW4gPSBpbnN0YW5jZS5vbigncGFuZWw6b3BlbicsICgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNQYW5lbE9wZW4uc2V0KHRydWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhbnVwRm5zLnB1c2godW5zdWJPcGVuKTtcblxuICAgIGNvbnN0IHVuc3ViQ2xvc2UgPSBpbnN0YW5jZS5vbigncGFuZWw6Y2xvc2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmlzUGFuZWxPcGVuLnNldChmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmNsZWFudXBGbnMucHVzaCh1bnN1YkNsb3NlKTtcblxuICAgIC8vIFN0YXRlIGNoYW5nZSBldmVudHNcbiAgICBjb25zdCB1bnN1YlJlYWR5ID0gaW5zdGFuY2Uub24oJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQoJ3JlYWR5Jyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmNsZWFudXBGbnMucHVzaCh1bnN1YlJlYWR5KTtcblxuICAgIGNvbnN0IHVuc3ViRXJyb3IgPSBpbnN0YW5jZS5vbignZXJyb3InLCAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuY2xlYW51cEZucy5wdXNoKHVuc3ViRXJyb3IpO1xuXG4gICAgLy8gVGFzayBleGVjdXRpb24gZXZlbnRzXG4gICAgaWYgKHRoaXMub25UYXNrQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5vblRhc2tDYWxsYmFjaztcbiAgICAgIGNvbnN0IHVuc3ViVGFzayA9IGluc3RhbmNlLm9uKCd0YXNrOmV4ZWN1dGUnLCAodGFzaykgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGNhbGxiYWNrKHRhc2spO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhbnVwRm5zLnB1c2godW5zdWJUYXNrKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgY3VzdG9tIGNhcmQgY29tcG9uZW50cy5cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJDYXJkcyhpbnN0YW5jZTogUGlsbGFyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZ2lzdGVyZWRDYXJkcykgcmV0dXJuO1xuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5yZWdpc3RlcmVkQ2FyZHMpLmZvckVhY2goKFtjYXJkVHlwZSwgQ2FyZENvbXBvbmVudF0pID0+IHtcbiAgICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gaW5zdGFuY2UucmVnaXN0ZXJDYXJkKFxuICAgICAgICBjYXJkVHlwZSxcbiAgICAgICAgKGNvbnRhaW5lciwgZGF0YSwgY2FsbGJhY2tzOiBDYXJkQ2FsbGJhY2tzKSA9PiB7XG4gICAgICAgICAgLy8gQ3JlYXRlIGFuIEFuZ3VsYXIgY29tcG9uZW50IGR5bmFtaWNhbGx5XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KENhcmRDb21wb25lbnQgYXMgVHlwZTxhbnk+LCB7XG4gICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBTZXQgaW5wdXRzXG4gICAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KCdkYXRhJywgZGF0YSk7XG4gICAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KCdvbkNvbmZpcm0nLCBjYWxsYmFja3Mub25Db25maXJtKTtcbiAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uQ2FuY2VsJywgY2FsbGJhY2tzLm9uQ2FuY2VsKTtcbiAgICAgICAgICBjb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uU3RhdGVDaGFuZ2UnLCBjYWxsYmFja3Mub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAgICAgICAvLyBBdHRhY2ggdG8gdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgICAgICAgLy8gQXBwZW5kIHRvIGNvbnRhaW5lclxuICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5jYXJkUmVmcy5zZXQoY29udGFpbmVyLCBjb21wb25lbnRSZWYpO1xuXG4gICAgICAgICAgLy8gUmV0dXJuIGNsZWFudXAgZnVuY3Rpb25cbiAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jYXJkUmVmcy5nZXQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhyZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgICByZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgICB0aGlzLmNhcmRSZWZzLmRlbGV0ZShjb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY2xlYW51cEZucy5wdXNoKHVuc3Vic2NyaWJlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBoZWxwIHBhbmVsLlxuICAgKi9cbiAgb3BlbihvcHRpb25zPzoge1xuICAgIHZpZXc/OiBzdHJpbmc7XG4gICAgYXJ0aWNsZT86IHN0cmluZztcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG4gICAgZm9jdXNJbnB1dD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLl9waWxsYXIoKT8ub3BlbihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgaGVscCBwYW5lbC5cbiAgICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BpbGxhcigpPy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgaGVscCBwYW5lbC5cbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9waWxsYXIoKT8udG9nZ2xlKCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBhIHNwZWNpZmljIGFydGljbGUuXG4gICAqL1xuICBvcGVuQXJ0aWNsZShzbHVnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9waWxsYXIoKT8ub3Blbih7IGFydGljbGU6IHNsdWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBhIHNwZWNpZmljIGNhdGVnb3J5LlxuICAgKi9cbiAgYXN5bmMgb3BlbkNhdGVnb3J5KHNsdWc6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3BpbGxhcigpPy5uYXZpZ2F0ZSgnY2F0ZWdvcnknLCB7IHNsdWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhIHNlYXJjaC5cbiAgICovXG4gIHNlYXJjaChxdWVyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcGlsbGFyKCk/Lm9wZW4oeyBzZWFyY2g6IHF1ZXJ5IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIGEgc3BlY2lmaWMgdmlldy5cbiAgICovXG4gIG5hdmlnYXRlKHZpZXc6IHN0cmluZywgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMuX3BpbGxhcigpPy5uYXZpZ2F0ZSh2aWV3LCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcGFuZWwgdGhlbWUgYXQgcnVudGltZS5cbiAgICovXG4gIHNldFRoZW1lKHRoZW1lOiBQYXJ0aWFsPFRoZW1lQ29uZmlnPik6IHZvaWQge1xuICAgIHRoaXMuX3BpbGxhcigpPy5zZXRUaGVtZSh0aGVtZSk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHRleHQgc2VsZWN0aW9uIFwiQXNrIEFJXCIgcG9wb3Zlci5cbiAgICovXG4gIHNldFRleHRTZWxlY3Rpb25FbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9waWxsYXIoKT8uc2V0VGV4dFNlbGVjdGlvbkVuYWJsZWQoZW5hYmxlZCk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIFNESyBldmVudHMuXG4gICAqL1xuICBvbjxLIGV4dGVuZHMga2V5b2YgUGlsbGFyRXZlbnRzPihcbiAgICBldmVudDogSyxcbiAgICBjYWxsYmFjazogKGRhdGE6IFBpbGxhckV2ZW50c1tLXSkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBwaWxsYXIgPSB0aGlzLl9waWxsYXIoKTtcbiAgICBpZiAoIXBpbGxhcikge1xuICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH1cblxuICAgIC8vIFdyYXAgY2FsbGJhY2sgdG8gcnVuIGluIEFuZ3VsYXIgem9uZVxuICAgIGNvbnN0IHdyYXBwZWRDYWxsYmFjayA9IChkYXRhOiBQaWxsYXJFdmVudHNbS10pID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiBjYWxsYmFjayhkYXRhKSk7XG4gICAgfTtcblxuICAgIHJldHVybiBwaWxsYXIub24oZXZlbnQsIHdyYXBwZWRDYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSB0YXNrIGhhbmRsZXIuXG4gICAqL1xuICBvblRhc2soXG4gICAgdGFza05hbWU6IHN0cmluZyxcbiAgICBoYW5kbGVyOiAoZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgcGlsbGFyID0gdGhpcy5fcGlsbGFyKCk7XG4gICAgaWYgKCFwaWxsYXIpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9XG5cbiAgICAvLyBXcmFwIGhhbmRsZXIgdG8gcnVuIGluIEFuZ3VsYXIgem9uZVxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVyID0gKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gaGFuZGxlcihkYXRhKSk7XG4gICAgfTtcblxuICAgIHJldHVybiBwaWxsYXIub25UYXNrKHRhc2tOYW1lLCB3cmFwcGVkSGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIGEgdG9vbCB3aXRoIG1ldGFkYXRhIGFuZCBoYW5kbGVyLlxuICAgKiBSZXR1cm5zIGFuIHVuc3Vic2NyaWJlIGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGUgdG9vbC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB1bnN1YnNjcmliZSA9IHBpbGxhclNlcnZpY2UuZGVmaW5lVG9vbCh7XG4gICAqICAgbmFtZTogJ2FkZF90b19jYXJ0JyxcbiAgICogICBkZXNjcmlwdGlvbjogJ0FkZCBhIHByb2R1Y3QgdG8gdGhlIHNob3BwaW5nIGNhcnQnLFxuICAgKiAgIGlucHV0U2NoZW1hOiB7XG4gICAqICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICogICAgIHByb3BlcnRpZXM6IHtcbiAgICogICAgICAgcHJvZHVjdElkOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAqICAgICAgIHF1YW50aXR5OiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAqICAgICB9LFxuICAgKiAgICAgcmVxdWlyZWQ6IFsncHJvZHVjdElkJywgJ3F1YW50aXR5J10sXG4gICAqICAgfSxcbiAgICogICBleGVjdXRlOiBhc3luYyAoeyBwcm9kdWN0SWQsIHF1YW50aXR5IH0pID0+IHtcbiAgICogICAgIGF3YWl0IHRoaXMuY2FydFNlcnZpY2UuYWRkKHByb2R1Y3RJZCwgcXVhbnRpdHkpO1xuICAgKiAgICAgcmV0dXJuIHsgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiAnQWRkZWQgdG8gY2FydCcgfV0gfTtcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gTGF0ZXIsIHRvIHVucmVnaXN0ZXI6XG4gICAqIHVuc3Vic2NyaWJlKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgZGVmaW5lVG9vbChzY2hlbWE6IFRvb2xTY2hlbWE8YW55Pik6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IHBpbGxhciA9IHRoaXMuX3BpbGxhcigpO1xuICAgIGlmICghcGlsbGFyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tQaWxsYXIgQW5ndWxhcl0gQ2Fubm90IGRlZmluZSB0b29sIC0gU0RLIG5vdCBpbml0aWFsaXplZCcpO1xuICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH1cblxuICAgIC8vIFdyYXAgZXhlY3V0ZSB0byBydW4gaW4gQW5ndWxhciB6b25lXG4gICAgY29uc3Qgd3JhcHBlZFNjaGVtYSA9IHtcbiAgICAgIC4uLnNjaGVtYSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQ6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHNjaGVtYS5leGVjdXRlKGlucHV0KSk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gcGlsbGFyLmRlZmluZVRvb2wod3JhcHBlZFNjaGVtYSk7XG4gIH1cblxuICAvKipcbiAgICogTW91bnQgdGhlIHBhbmVsIHRvIGEgc3BlY2lmaWMgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqIFVzZWQgZm9yIG1hbnVhbCBwYW5lbCBwbGFjZW1lbnQgd2l0aCBQaWxsYXJQYW5lbENvbXBvbmVudC5cbiAgICovXG4gIG1vdW50UGFuZWxUbyhjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5fcGlsbGFyKCk/Lm1vdW50UGFuZWxUbyhjb250YWluZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFudXAgcmVzb3VyY2VzLlxuICAgKiBOb3RlOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGNhbGwgUGlsbGFyLmRlc3Ryb3koKSBoZXJlIHRvIHByZXNlcnZlXG4gICAqIGNvbnZlcnNhdGlvbiBoaXN0b3J5IGFjcm9zcyByb3V0ZSBjaGFuZ2VzLiBDYWxsIFBpbGxhci5kZXN0cm95KClcbiAgICogZXhwbGljaXRseSBpZiB5b3UgbmVlZCB0byBmdWxseSByZXNldCB0aGUgU0RLLlxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gUnVuIGFsbCBjbGVhbnVwIGZ1bmN0aW9uc1xuICAgIHRoaXMuY2xlYW51cEZucy5mb3JFYWNoKChjbGVhbnVwKSA9PiBjbGVhbnVwKCkpO1xuICAgIHRoaXMuY2xlYW51cEZucy5sZW5ndGggPSAwO1xuXG4gICAgLy8gRGVzdHJveSBhbGwgY2FyZCBjb21wb25lbnQgcmVmc1xuICAgIHRoaXMuY2FyZFJlZnMuZm9yRWFjaCgocmVmKSA9PiB7XG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHJlZi5ob3N0Vmlldyk7XG4gICAgICByZWYuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMuY2FyZFJlZnMuY2xlYXIoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for Pillar Angular SDK
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgdHlwZXMgZm9yIFBpbGxhciBBbmd1bGFyIFNES1xuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgUGlsbGFyLFxuICBQaWxsYXJDb25maWcsXG4gIFBpbGxhckV2ZW50cyxcbiAgUGlsbGFyU3RhdGUsXG4gIFRhc2tFeGVjdXRlUGF5bG9hZCxcbiAgVGhlbWVDb25maWcsXG59IGZyb20gJ0BwaWxsYXItYWkvc2RrJztcbmltcG9ydCB0eXBlIHsgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDYXJkIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUHJvcHMgcGFzc2VkIHRvIGN1c3RvbSBjYXJkIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZENvbXBvbmVudFByb3BzPFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAvKiogRGF0YSBleHRyYWN0ZWQgYnkgdGhlIEFJIGZvciB0aGlzIGFjdGlvbiAqL1xuICBkYXRhOiBUO1xuICAvKiogQ2FsbGVkIHdoZW4gdXNlciBjb25maXJtcyB0aGUgYWN0aW9uICovXG4gIG9uQ29uZmlybTogKG1vZGlmaWVkRGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuICAvKiogQ2FsbGVkIHdoZW4gdXNlciBjYW5jZWxzIHRoZSBhY3Rpb24gKi9cbiAgb25DYW5jZWw6ICgpID0+IHZvaWQ7XG4gIC8qKiBDYWxsZWQgdG8gcmVwb3J0IHN0YXRlIGNoYW5nZXMgKGxvYWRpbmcsIHN1Y2Nlc3MsIGVycm9yKSAqL1xuICBvblN0YXRlQ2hhbmdlPzogKFxuICAgIHN0YXRlOiAnbG9hZGluZycgfCAnc3VjY2VzcycgfCAnZXJyb3InLFxuICAgIG1lc3NhZ2U/OiBzdHJpbmdcbiAgKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEFuIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBjdXN0b20gY2FyZCByZW5kZXJlci5cbiAqIFRoZSBjb21wb25lbnQgc2hvdWxkIGFjY2VwdCBDYXJkQ29tcG9uZW50UHJvcHMgYXMgaW5wdXRzLlxuICovXG5leHBvcnQgdHlwZSBDYXJkQ29tcG9uZW50PFQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSBUeXBlPENhcmRDb21wb25lbnRQcm9wczxUPj47XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcnZpY2UgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBQaWxsYXJTZXJ2aWNlU3RhdGUge1xuICAvKiogVGhlIFBpbGxhciBTREsgaW5zdGFuY2UgKi9cbiAgcGlsbGFyOiBTaWduYWw8UGlsbGFyIHwgbnVsbD47XG5cbiAgLyoqIEN1cnJlbnQgU0RLIHN0YXRlICovXG4gIHN0YXRlOiBXcml0YWJsZVNpZ25hbDxQaWxsYXJTdGF0ZT47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIFNESyBpcyByZWFkeSAqL1xuICBpc1JlYWR5OiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIGN1cnJlbnRseSBvcGVuICovXG4gIGlzUGFuZWxPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaWxsYXJTZXJ2aWNlQWN0aW9ucyB7XG4gIC8qKiBPcGVuIHRoZSBoZWxwIHBhbmVsICovXG4gIG9wZW46IChvcHRpb25zPzoge1xuICAgIHZpZXc/OiBzdHJpbmc7XG4gICAgYXJ0aWNsZT86IHN0cmluZztcbiAgICBzZWFyY2g/OiBzdHJpbmc7XG4gICAgZm9jdXNJbnB1dD86IGJvb2xlYW47XG4gIH0pID0+IHZvaWQ7XG5cbiAgLyoqIENsb3NlIHRoZSBoZWxwIHBhbmVsICovXG4gIGNsb3NlOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBUb2dnbGUgdGhlIGhlbHAgcGFuZWwgKi9cbiAgdG9nZ2xlOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBPcGVuIGEgc3BlY2lmaWMgYXJ0aWNsZSAqL1xuICBvcGVuQXJ0aWNsZTogKHNsdWc6IHN0cmluZykgPT4gdm9pZDtcblxuICAvKiogT3BlbiBhIHNwZWNpZmljIGNhdGVnb3J5ICovXG4gIG9wZW5DYXRlZ29yeTogKHNsdWc6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKiogUGVyZm9ybSBhIHNlYXJjaCAqL1xuICBzZWFyY2g6IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xuXG4gIC8qKiBOYXZpZ2F0ZSB0byBhIHNwZWNpZmljIHZpZXcgKi9cbiAgbmF2aWdhdGU6ICh2aWV3OiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pID0+IHZvaWQ7XG5cbiAgLyoqIFVwZGF0ZSB0aGUgcGFuZWwgdGhlbWUgYXQgcnVudGltZSAqL1xuICBzZXRUaGVtZTogKHRoZW1lOiBQYXJ0aWFsPFRoZW1lQ29uZmlnPikgPT4gdm9pZDtcblxuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHRleHQgc2VsZWN0aW9uIFwiQXNrIEFJXCIgcG9wb3ZlciAqL1xuICBzZXRUZXh0U2VsZWN0aW9uRW5hYmxlZDogKGVuYWJsZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLyoqIFN1YnNjcmliZSB0byBTREsgZXZlbnRzICovXG4gIG9uOiA8SyBleHRlbmRzIGtleW9mIFBpbGxhckV2ZW50cz4oXG4gICAgZXZlbnQ6IEssXG4gICAgY2FsbGJhY2s6IChkYXRhOiBQaWxsYXJFdmVudHNbS10pID0+IHZvaWRcbiAgKSA9PiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBSZWdpc3RlciBhIHRhc2sgaGFuZGxlciAqL1xuICBvblRhc2s6IChcbiAgICB0YXNrTmFtZTogc3RyaW5nLFxuICAgIGhhbmRsZXI6IChkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZFxuICApID0+ICgpID0+IHZvaWQ7XG5cbiAgLyoqIEdldCB0aGUgUGlsbGFyIFNESyBpbnN0YW5jZSAqL1xuICBnZXRJbnN0YW5jZTogKCkgPT4gUGlsbGFyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaWxsYXJDb250ZXh0VmFsdWUgZXh0ZW5kcyBQaWxsYXJTZXJ2aWNlU3RhdGUsIFBpbGxhclNlcnZpY2VBY3Rpb25zIHt9XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByb3ZpZGVyIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlsbGFySW5pdENvbmZpZyB7XG4gIC8qKlxuICAgKiBZb3VyIHByb2R1Y3Qga2V5IGZyb20gdGhlIFBpbGxhciBhcHAuXG4gICAqIEdldCBpdCBhdCBhcHAudHJ5cGlsbGFyLmNvbVxuICAgKi9cbiAgcHJvZHVjdEtleT86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBwcm9kdWN0S2V5YCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjEuMC5cbiAgICovXG4gIGhlbHBDZW50ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgU0RLIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogTm90YWJsZSBvcHRpb25zOlxuICAgKiAtIGBwYW5lbC51c2VTaGFkb3dET01gOiBXaGV0aGVyIHRvIGlzb2xhdGUgc3R5bGVzIGluIFNoYWRvdyBET00gKGRlZmF1bHQ6IGZhbHNlKS5cbiAgICogICBTZXQgdG8gZmFsc2UgdG8gbGV0IGN1c3RvbSBjYXJkcyBpbmhlcml0IHlvdXIgYXBwJ3MgQ1NTIChUYWlsd2luZCwgZXRjLilcbiAgICovXG4gIGNvbmZpZz86IE9taXQ8UGlsbGFyQ29uZmlnLCAncHJvZHVjdEtleScgfCAnaGVscENlbnRlcic+O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGNhbGxlZCB3aGVuIGEgdGFzayBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGNoYXQuXG4gICAqIFVzZSB0aGlzIHRvIGhhbmRsZSBBSS1zdWdnZXN0ZWQgYWN0aW9ucyBsaWtlIG9wZW5pbmcgbW9kYWxzLCBuYXZpZ2F0aW5nLCBldGMuXG4gICAqL1xuICBvblRhc2s/OiAodGFzazogVGFza0V4ZWN1dGVQYXlsb2FkKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gY2FyZCBjb21wb25lbnRzIHRvIHJlbmRlciBmb3IgaW5saW5lX3VpIHR5cGUgYWN0aW9ucy5cbiAgICogTWFwIGNhcmQgdHlwZSBuYW1lcyB0byBBbmd1bGFyIGNvbXBvbmVudHMgdGhhdCB3aWxsIHJlbmRlciB0aGUgaW5saW5lIFVJLlxuICAgKi9cbiAgY2FyZHM/OiBSZWNvcmQ8c3RyaW5nLCBDYXJkQ29tcG9uZW50Pjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSW5qZWN0IEZ1bmN0aW9uIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0UGlsbGFyUmVzdWx0IGV4dGVuZHMgUGlsbGFyQ29udGV4dFZhbHVlIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5qZWN0SGVscFBhbmVsUmVzdWx0IHtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIGN1cnJlbnRseSBvcGVuICovXG4gIGlzT3BlbjogU2lnbmFsPGJvb2xlYW4+O1xuXG4gIC8qKiBPcGVuIHRoZSBwYW5lbCAqL1xuICBvcGVuOiAob3B0aW9ucz86IHsgdmlldz86IHN0cmluZzsgYXJ0aWNsZT86IHN0cmluZzsgc2VhcmNoPzogc3RyaW5nIH0pID0+IHZvaWQ7XG5cbiAgLyoqIENsb3NlIHRoZSBwYW5lbCAqL1xuICBjbG9zZTogKCkgPT4gdm9pZDtcblxuICAvKiogVG9nZ2xlIHRoZSBwYW5lbCAqL1xuICB0b2dnbGU6ICgpID0+IHZvaWQ7XG5cbiAgLyoqIE9wZW4gYSBzcGVjaWZpYyBhcnRpY2xlIGluIHRoZSBwYW5lbCAqL1xuICBvcGVuQXJ0aWNsZTogKHNsdWc6IHN0cmluZykgPT4gdm9pZDtcblxuICAvKiogT3BlbiBhIHNwZWNpZmljIGNhdGVnb3J5IGluIHRoZSBwYW5lbCAqL1xuICBvcGVuQ2F0ZWdvcnk6IChzbHVnOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqIE9wZW4gc2VhcmNoIHdpdGggYSBxdWVyeSAqL1xuICBvcGVuU2VhcmNoOiAocXVlcnk/OiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgLyoqIE9wZW4gdGhlIEFJIGNoYXQgKi9cbiAgb3BlbkNoYXQ6ICgpID0+IHZvaWQ7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlsbGFyLWFpLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGlsbGFyLWFpLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @pillar-ai/angular - Angular bindings for Pillar SDK
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * // app.config.ts
7
+ * import { ApplicationConfig, APP_INITIALIZER, inject } from '@angular/core';
8
+ * import { PillarService } from '@pillar-ai/angular';
9
+ *
10
+ * function initPillar() {
11
+ * const pillar = inject(PillarService);
12
+ * return () => pillar.init({ productKey: 'your-product-key' });
13
+ * }
14
+ *
15
+ * export const appConfig: ApplicationConfig = {
16
+ * providers: [
17
+ * { provide: APP_INITIALIZER, useFactory: initPillar, multi: true },
18
+ * ],
19
+ * };
20
+ *
21
+ * // help-button.component.ts
22
+ * import { Component } from '@angular/core';
23
+ * import { injectPillar } from '@pillar-ai/angular';
24
+ *
25
+ * @Component({
26
+ * selector: 'app-help-button',
27
+ * standalone: true,
28
+ * template: `
29
+ * <button (click)="toggle()">
30
+ * {{ isPanelOpen() ? 'Close Help' : 'Get Help' }}
31
+ * </button>
32
+ * `,
33
+ * })
34
+ * export class HelpButtonComponent {
35
+ * private pillar = injectPillar();
36
+ * isPanelOpen = this.pillar.isPanelOpen;
37
+ * toggle = this.pillar.toggle;
38
+ * }
39
+ *
40
+ * // Custom panel placement example:
41
+ * // layout.component.ts
42
+ * import { Component } from '@angular/core';
43
+ * import { PillarPanelComponent } from '@pillar-ai/angular';
44
+ *
45
+ * @Component({
46
+ * selector: 'app-layout',
47
+ * standalone: true,
48
+ * imports: [PillarPanelComponent],
49
+ * template: `
50
+ * <div class="layout">
51
+ * <pillar-panel class="custom-panel" />
52
+ * <main>Your content</main>
53
+ * </div>
54
+ * `,
55
+ * })
56
+ * export class LayoutComponent {}
57
+ * ```
58
+ */
59
+ // Service
60
+ export { PillarService } from './lib/pillar.service';
61
+ // Components
62
+ export { PillarPanelComponent } from './lib/pillar-panel.component';
63
+ // Inject functions
64
+ export { injectPillar } from './lib/inject-pillar';
65
+ export { injectHelpPanel } from './lib/inject-help-panel';
66
+ export { injectPillarTool, injectPillarAction } from './lib/inject-pillar-tool';
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5REc7QUFFSCxVQUFVO0FBQ1YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELGFBQWE7QUFDYixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVwRSxtQkFBbUI7QUFDbkIsT0FBTyxFQUFFLFlBQVksRUFBMkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwaWxsYXItYWkvYW5ndWxhciAtIEFuZ3VsYXIgYmluZGluZ3MgZm9yIFBpbGxhciBTREtcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gYXBwLmNvbmZpZy50c1xuICogaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWcsIEFQUF9JTklUSUFMSVpFUiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBQaWxsYXJTZXJ2aWNlIH0gZnJvbSAnQHBpbGxhci1haS9hbmd1bGFyJztcbiAqXG4gKiBmdW5jdGlvbiBpbml0UGlsbGFyKCkge1xuICogICBjb25zdCBwaWxsYXIgPSBpbmplY3QoUGlsbGFyU2VydmljZSk7XG4gKiAgIHJldHVybiAoKSA9PiBwaWxsYXIuaW5pdCh7IHByb2R1Y3RLZXk6ICd5b3VyLXByb2R1Y3Qta2V5JyB9KTtcbiAqIH1cbiAqXG4gKiBleHBvcnQgY29uc3QgYXBwQ29uZmlnOiBBcHBsaWNhdGlvbkNvbmZpZyA9IHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgeyBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsIHVzZUZhY3Rvcnk6IGluaXRQaWxsYXIsIG11bHRpOiB0cnVlIH0sXG4gKiAgIF0sXG4gKiB9O1xuICpcbiAqIC8vIGhlbHAtYnV0dG9uLmNvbXBvbmVudC50c1xuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBpbmplY3RQaWxsYXIgfSBmcm9tICdAcGlsbGFyLWFpL2FuZ3VsYXInO1xuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ2FwcC1oZWxwLWJ1dHRvbicsXG4gKiAgIHN0YW5kYWxvbmU6IHRydWUsXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlKClcIj5cbiAqICAgICAgIHt7IGlzUGFuZWxPcGVuKCkgPyAnQ2xvc2UgSGVscCcgOiAnR2V0IEhlbHAnIH19XG4gKiAgICAgPC9idXR0b24+XG4gKiAgIGAsXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEhlbHBCdXR0b25Db21wb25lbnQge1xuICogICBwcml2YXRlIHBpbGxhciA9IGluamVjdFBpbGxhcigpO1xuICogICBpc1BhbmVsT3BlbiA9IHRoaXMucGlsbGFyLmlzUGFuZWxPcGVuO1xuICogICB0b2dnbGUgPSB0aGlzLnBpbGxhci50b2dnbGU7XG4gKiB9XG4gKlxuICogLy8gQ3VzdG9tIHBhbmVsIHBsYWNlbWVudCBleGFtcGxlOlxuICogLy8gbGF5b3V0LmNvbXBvbmVudC50c1xuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBQaWxsYXJQYW5lbENvbXBvbmVudCB9IGZyb20gJ0BwaWxsYXItYWkvYW5ndWxhcic7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwLWxheW91dCcsXG4gKiAgIHN0YW5kYWxvbmU6IHRydWUsXG4gKiAgIGltcG9ydHM6IFtQaWxsYXJQYW5lbENvbXBvbmVudF0sXG4gKiAgIHRlbXBsYXRlOiBgXG4gKiAgICAgPGRpdiBjbGFzcz1cImxheW91dFwiPlxuICogICAgICAgPHBpbGxhci1wYW5lbCBjbGFzcz1cImN1c3RvbS1wYW5lbFwiIC8+XG4gKiAgICAgICA8bWFpbj5Zb3VyIGNvbnRlbnQ8L21haW4+XG4gKiAgICAgPC9kaXY+XG4gKiAgIGAsXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudCB7fVxuICogYGBgXG4gKi9cblxuLy8gU2VydmljZVxuZXhwb3J0IHsgUGlsbGFyU2VydmljZSB9IGZyb20gJy4vbGliL3BpbGxhci5zZXJ2aWNlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0IHsgUGlsbGFyUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2xpYi9waWxsYXItcGFuZWwuY29tcG9uZW50JztcblxuLy8gSW5qZWN0IGZ1bmN0aW9uc1xuZXhwb3J0IHsgaW5qZWN0UGlsbGFyLCB0eXBlIEluamVjdFBpbGxhclJlc3VsdCB9IGZyb20gJy4vbGliL2luamVjdC1waWxsYXInO1xuZXhwb3J0IHsgaW5qZWN0SGVscFBhbmVsIH0gZnJvbSAnLi9saWIvaW5qZWN0LWhlbHAtcGFuZWwnO1xuZXhwb3J0IHsgaW5qZWN0UGlsbGFyVG9vbCwgaW5qZWN0UGlsbGFyQWN0aW9uIH0gZnJvbSAnLi9saWIvaW5qZWN0LXBpbGxhci10b29sJztcblxuLy8gVHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQ2FyZENvbXBvbmVudCxcbiAgQ2FyZENvbXBvbmVudFByb3BzLFxuICBQaWxsYXJDb250ZXh0VmFsdWUsXG4gIFBpbGxhckluaXRDb25maWcsXG4gIFBpbGxhclNlcnZpY2VBY3Rpb25zLFxuICBQaWxsYXJTZXJ2aWNlU3RhdGUsXG4gIEluamVjdEhlbHBQYW5lbFJlc3VsdCxcbn0gZnJvbSAnLi9saWIvdHlwZXMnO1xuXG4vLyBSZS1leHBvcnQgdHlwZXMgZnJvbSBjb3JlIFNESyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB0eXBlIHtcbiAgLy8gQ29uZmlndXJhdGlvbiB0eXBlc1xuICBFZGdlVHJpZ2dlckNvbmZpZyxcbiAgTW9iaWxlVHJpZ2dlckNvbmZpZyxcbiAgTW9iaWxlVHJpZ2dlclBvc2l0aW9uLFxuICBNb2JpbGVUcmlnZ2VySWNvbixcbiAgTW9iaWxlVHJpZ2dlclNpemUsXG4gIFBhbmVsQ29uZmlnLFxuICBQaWxsYXJDb25maWcsXG4gIFBpbGxhckV2ZW50cyxcbiAgUGlsbGFyU3RhdGUsXG4gIFJlc29sdmVkQ29uZmlnLFxuICBSZXNvbHZlZE1vYmlsZVRyaWdnZXJDb25maWcsXG4gIFJlc29sdmVkVGhlbWVDb25maWcsXG4gIFRhc2tFeGVjdXRlUGF5bG9hZCxcbiAgVGV4dFNlbGVjdGlvbkNvbmZpZyxcbiAgVGhlbWVDb2xvcnMsXG4gIFRoZW1lQ29uZmlnLFxuICBUaGVtZU1vZGUsXG4gIENhcmRDYWxsYmFja3MsXG4gIENhcmRSZW5kZXJlcixcbiAgU2lkZWJhclRhYkNvbmZpZyxcbiAgLy8gVG9vbCB0eXBlcyBmb3IgdHlwZS1zYWZlIG9uVGFzayBhbmQgaW5qZWN0UGlsbGFyVG9vbFxuICBUb29sRGVmaW5pdGlvbnMsXG4gIFN5bmNUb29sRGVmaW5pdGlvbnMsXG4gIFRvb2xEYXRhVHlwZSxcbiAgVG9vbE5hbWVzLFxuICAvLyBVbmlmaWVkIHRvb2wgc2NoZW1hIChuZXcgQVBJKVxuICBUb29sRXhlY3V0ZVJlc3VsdCxcbiAgVG9vbFNjaGVtYSxcbiAgVG9vbFR5cGUsXG4gIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFsaWFzZXMgKGRlcHJlY2F0ZWQpXG4gIEFjdGlvbkRlZmluaXRpb25zLFxuICBTeW5jQWN0aW9uRGVmaW5pdGlvbnMsXG4gIEFjdGlvbkRhdGFUeXBlLFxuICBBY3Rpb25OYW1lcyxcbiAgQWN0aW9uUmVzdWx0LFxuICBBY3Rpb25TY2hlbWEsXG4gIEFjdGlvblR5cGUsXG4gIC8vIENoYXQgY29udGV4dCBmb3IgZXNjYWxhdGlvblxuICBDaGF0Q29udGV4dCxcbiAgLy8gRE9NIFNjYW5uaW5nIHR5cGVzIChkZXByZWNhdGVkIC0gZmVhdHVyZSBpcyBkaXNhYmxlZClcbiAgLyoqIEBkZXByZWNhdGVkIERPTSBzY2FubmluZyBpcyBkaXNhYmxlZCAqL1xuICBET01TY2FubmluZ0NvbmZpZyxcbiAgLyoqIEBkZXByZWNhdGVkIERPTSBzY2FubmluZyBpcyBkaXNhYmxlZCAqL1xuICBSZXNvbHZlZERPTVNjYW5uaW5nQ29uZmlnLFxuICAvKiogQGRlcHJlY2F0ZWQgRE9NIHNjYW5uaW5nIGlzIGRpc2FibGVkICovXG4gIFNjYW5PcHRpb25zLFxuICAvKiogQGRlcHJlY2F0ZWQgRE9NIHNjYW5uaW5nIGlzIGRpc2FibGVkICovXG4gIENvbXBhY3RTY2FuUmVzdWx0LFxuICAvKiogQGRlcHJlY2F0ZWQgRE9NIHNjYW5uaW5nIGlzIGRpc2FibGVkICovXG4gIEludGVyYWN0aW9uVHlwZSxcbiAgLy8gRE9NIFNjYW5uZXIgdXRpbGl0aWVzIChkZXByZWNhdGVkIC0gZmVhdHVyZSBpcyBkaXNhYmxlZClcbiAgLyoqIEBkZXByZWNhdGVkIERPTSBzY2FubmluZyBpcyBkaXNhYmxlZCAqL1xuICBzY2FuUGFnZURpcmVjdCxcbn0gZnJvbSAnQHBpbGxhci1haS9zZGsnO1xuIl19