@bbq-chat/widgets-angular 1.0.0 → 1.0.1
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/.eslintrc.json +23 -0
- package/.prettierrc.json +8 -0
- package/EXAMPLES.md +468 -0
- package/ng-package.json +10 -0
- package/package.json +25 -23
- package/scripts/build.mjs +63 -0
- package/src/index.ts +11 -1
- package/src/public_api.ts +75 -0
- package/src/widget-di.tokens.ts +63 -0
- package/src/widget-renderer.component.ts +24 -8
- package/tsconfig.json +34 -0
- package/dist/LICENSE +0 -21
- package/dist/README.md +0 -252
- package/dist/custom-widget-renderer.types.d.ts +0 -79
- package/dist/custom-widget-renderer.types.d.ts.map +0 -1
- package/dist/custom-widget-renderer.types.js +0 -43
- package/dist/custom-widget-renderer.types.js.map +0 -1
- package/dist/index.cjs +0 -38
- package/dist/index.d.ts +0 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -23
- package/dist/index.js.map +0 -1
- package/dist/package.json +0 -16
- package/dist/widget-registry.service.d.ts +0 -95
- package/dist/widget-registry.service.d.ts.map +0 -1
- package/dist/widget-registry.service.js +0 -129
- package/dist/widget-registry.service.js.map +0 -1
- package/dist/widget-renderer.component.d.ts +0 -93
- package/dist/widget-renderer.component.d.ts.map +0 -1
- package/dist/widget-renderer.component.js +0 -316
- package/dist/widget-renderer.component.js.map +0 -1
package/dist/index.cjs
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var index_exports = {};
|
|
20
|
-
__export(index_exports, {
|
|
21
|
-
ChatWidget: () => import_widgets.ChatWidget,
|
|
22
|
-
SsrWidgetRenderer: () => import_widgets2.SsrWidgetRenderer,
|
|
23
|
-
VERSION: () => VERSION,
|
|
24
|
-
WidgetEventManager: () => import_widgets2.WidgetEventManager,
|
|
25
|
-
WidgetRegistryService: () => import_widget_registry.WidgetRegistryService,
|
|
26
|
-
WidgetRendererComponent: () => import_widget_renderer.WidgetRendererComponent,
|
|
27
|
-
customWidgetRegistry: () => import_widgets2.customWidgetRegistry,
|
|
28
|
-
isComponentRenderer: () => import_custom_widget_renderer.isComponentRenderer,
|
|
29
|
-
isHtmlRenderer: () => import_custom_widget_renderer.isHtmlRenderer,
|
|
30
|
-
isTemplateRenderer: () => import_custom_widget_renderer.isTemplateRenderer
|
|
31
|
-
});
|
|
32
|
-
module.exports = __toCommonJS(index_exports);
|
|
33
|
-
var import_widget_renderer = require("./widget-renderer.component");
|
|
34
|
-
var import_widget_registry = require("./widget-registry.service");
|
|
35
|
-
var import_custom_widget_renderer = require("./custom-widget-renderer.types");
|
|
36
|
-
var import_widgets = require("@bbq-chat/widgets");
|
|
37
|
-
var import_widgets2 = require("@bbq-chat/widgets");
|
|
38
|
-
const VERSION = "1.0.0";
|
package/dist/index.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @bbq-chat/widgets-angular
|
|
3
|
-
*
|
|
4
|
-
* Angular components and services for BbQ ChatWidgets
|
|
5
|
-
*
|
|
6
|
-
* This package provides Angular-native components and services that wrap
|
|
7
|
-
* the core @bbq-chat/widgets library, making it easy to integrate chat
|
|
8
|
-
* widgets into Angular applications.
|
|
9
|
-
*
|
|
10
|
-
* @packageDocumentation
|
|
11
|
-
*/
|
|
12
|
-
export { WidgetRendererComponent } from './widget-renderer.component';
|
|
13
|
-
export { WidgetRegistryService } from './widget-registry.service';
|
|
14
|
-
export type { CustomWidgetComponent, CustomWidgetRenderer, CustomWidgetHtmlRenderer, CustomWidgetRendererConfig, WidgetTemplateContext, } from './custom-widget-renderer.types';
|
|
15
|
-
export { isHtmlRenderer, isComponentRenderer, isTemplateRenderer, } from './custom-widget-renderer.types';
|
|
16
|
-
export { ChatWidget, } from '@bbq-chat/widgets';
|
|
17
|
-
export type { ButtonWidget, CardWidget, FormWidget, InputWidget, TextAreaWidget, DropdownWidget, SliderWidget, ToggleWidget, FileUploadWidget, DatePickerWidget, MultiSelectWidget, ProgressBarWidget, ThemeSwitcherWidget, ImageWidget, ImageCollectionWidget, } from '@bbq-chat/widgets';
|
|
18
|
-
export { SsrWidgetRenderer, WidgetEventManager, customWidgetRegistry, } from '@bbq-chat/widgets';
|
|
19
|
-
export declare const VERSION = "1.0.0";
|
|
20
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @bbq-chat/widgets-angular
|
|
3
|
-
*
|
|
4
|
-
* Angular components and services for BbQ ChatWidgets
|
|
5
|
-
*
|
|
6
|
-
* This package provides Angular-native components and services that wrap
|
|
7
|
-
* the core @bbq-chat/widgets library, making it easy to integrate chat
|
|
8
|
-
* widgets into Angular applications.
|
|
9
|
-
*
|
|
10
|
-
* @packageDocumentation
|
|
11
|
-
*/
|
|
12
|
-
// Export components
|
|
13
|
-
export { WidgetRendererComponent } from './widget-renderer.component';
|
|
14
|
-
// Export services
|
|
15
|
-
export { WidgetRegistryService } from './widget-registry.service';
|
|
16
|
-
export { isHtmlRenderer, isComponentRenderer, isTemplateRenderer, } from './custom-widget-renderer.types';
|
|
17
|
-
// Re-export commonly used types and classes from core package
|
|
18
|
-
export { ChatWidget, } from '@bbq-chat/widgets';
|
|
19
|
-
// Re-export utilities
|
|
20
|
-
export { SsrWidgetRenderer, WidgetEventManager, customWidgetRegistry, } from '@bbq-chat/widgets';
|
|
21
|
-
// Version
|
|
22
|
-
export const VERSION = '1.0.0';
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,kBAAkB;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAWlE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAExC,8DAA8D;AAC9D,OAAO,EACL,UAAU,GACX,MAAM,mBAAmB,CAAC;AAoB3B,sBAAsB;AACtB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/package.json
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@bbq-chat/widgets-angular",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "Angular components and services for BbQ ChatWidgets",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"main": "./index.js",
|
|
7
|
-
"module": "./index.js",
|
|
8
|
-
"types": "./index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"import": "./index.js",
|
|
12
|
-
"require": "./index.cjs",
|
|
13
|
-
"types": "./index.d.ts"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { ChatWidget } from '@bbq-chat/widgets';
|
|
2
|
-
import { CustomWidgetRenderer } from './custom-widget-renderer.types';
|
|
3
|
-
/**
|
|
4
|
-
* Service for registering custom widget factories and renderers
|
|
5
|
-
*
|
|
6
|
-
* This service provides a centralized way to register custom widget types
|
|
7
|
-
* that extend the base widget functionality, including support for
|
|
8
|
-
* Angular components and templates as custom renderers.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* constructor(private widgetRegistry: WidgetRegistryService) {
|
|
13
|
-
* // Register a widget factory
|
|
14
|
-
* this.widgetRegistry.registerFactory('myWidget', (obj) => {
|
|
15
|
-
* if (obj.type === 'myWidget') {
|
|
16
|
-
* return new MyCustomWidget(obj.label, obj.action);
|
|
17
|
-
* }
|
|
18
|
-
* return null;
|
|
19
|
-
* });
|
|
20
|
-
*
|
|
21
|
-
* // Register a component-based renderer
|
|
22
|
-
* this.widgetRegistry.registerRenderer('myWidget', MyWidgetComponent);
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export declare class WidgetRegistryService {
|
|
27
|
-
private readonly customRenderers;
|
|
28
|
-
/**
|
|
29
|
-
* Register a custom widget factory function
|
|
30
|
-
*
|
|
31
|
-
* @param type - The widget type identifier
|
|
32
|
-
* @param factory - Factory function that creates widget instances from plain objects
|
|
33
|
-
*/
|
|
34
|
-
registerFactory(type: string, factory: (obj: unknown) => ChatWidget | null): void;
|
|
35
|
-
/**
|
|
36
|
-
* Register a widget class with automatic factory creation
|
|
37
|
-
*
|
|
38
|
-
* @param type - The widget type identifier
|
|
39
|
-
* @param ctor - Widget class constructor
|
|
40
|
-
*/
|
|
41
|
-
registerClass(type: string, ctor: any): void;
|
|
42
|
-
/**
|
|
43
|
-
* Get a factory for a specific widget type
|
|
44
|
-
*
|
|
45
|
-
* @param type - The widget type identifier
|
|
46
|
-
* @returns The factory function if registered, undefined otherwise
|
|
47
|
-
*/
|
|
48
|
-
getFactory(type: string): ((obj: any) => ChatWidget | null) | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* Register a custom renderer for a specific widget type
|
|
51
|
-
*
|
|
52
|
-
* The renderer can be:
|
|
53
|
-
* - A function that returns HTML string
|
|
54
|
-
* - An Angular Component class
|
|
55
|
-
* - An Angular TemplateRef
|
|
56
|
-
*
|
|
57
|
-
* @param type - The widget type identifier
|
|
58
|
-
* @param renderer - The custom renderer (function, Component, or TemplateRef)
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* // HTML function renderer
|
|
63
|
-
* widgetRegistry.registerRenderer('weather', (widget) => `<div>${widget.label}</div>`);
|
|
64
|
-
*
|
|
65
|
-
* // Component renderer
|
|
66
|
-
* widgetRegistry.registerRenderer('weather', WeatherWidgetComponent);
|
|
67
|
-
*
|
|
68
|
-
* // Template renderer (from @ViewChild or elsewhere)
|
|
69
|
-
* widgetRegistry.registerRenderer('weather', this.weatherTemplate);
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
registerRenderer(type: string, renderer: CustomWidgetRenderer): void;
|
|
73
|
-
/**
|
|
74
|
-
* Get a custom renderer for a specific widget type
|
|
75
|
-
*
|
|
76
|
-
* @param type - The widget type identifier
|
|
77
|
-
* @returns The custom renderer if registered, undefined otherwise
|
|
78
|
-
*/
|
|
79
|
-
getRenderer(type: string): CustomWidgetRenderer | undefined;
|
|
80
|
-
/**
|
|
81
|
-
* Check if a custom renderer is registered for a widget type
|
|
82
|
-
*
|
|
83
|
-
* @param type - The widget type identifier
|
|
84
|
-
* @returns True if a custom renderer is registered, false otherwise
|
|
85
|
-
*/
|
|
86
|
-
hasRenderer(type: string): boolean;
|
|
87
|
-
/**
|
|
88
|
-
* Unregister a custom renderer for a widget type
|
|
89
|
-
*
|
|
90
|
-
* @param type - The widget type identifier
|
|
91
|
-
* @returns True if a renderer was removed, false if none was registered
|
|
92
|
-
*/
|
|
93
|
-
unregisterRenderer(type: string): boolean;
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=widget-registry.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-registry.service.d.ts","sourceRoot":"","sources":["../src/widget-registry.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAGa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAC3E;;;;;OAKG;IACH,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,UAAU,GAAG,IAAI,GAC3C,IAAI;IAIP;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAI5C;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,UAAU,GAAG,IAAI,CAAC,GAAG,SAAS;IAIvE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAUpE;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI3D;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG1C"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { Injectable } from '@angular/core';
|
|
8
|
-
import { customWidgetRegistry } from '@bbq-chat/widgets';
|
|
9
|
-
/**
|
|
10
|
-
* Service for registering custom widget factories and renderers
|
|
11
|
-
*
|
|
12
|
-
* This service provides a centralized way to register custom widget types
|
|
13
|
-
* that extend the base widget functionality, including support for
|
|
14
|
-
* Angular components and templates as custom renderers.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* constructor(private widgetRegistry: WidgetRegistryService) {
|
|
19
|
-
* // Register a widget factory
|
|
20
|
-
* this.widgetRegistry.registerFactory('myWidget', (obj) => {
|
|
21
|
-
* if (obj.type === 'myWidget') {
|
|
22
|
-
* return new MyCustomWidget(obj.label, obj.action);
|
|
23
|
-
* }
|
|
24
|
-
* return null;
|
|
25
|
-
* });
|
|
26
|
-
*
|
|
27
|
-
* // Register a component-based renderer
|
|
28
|
-
* this.widgetRegistry.registerRenderer('myWidget', MyWidgetComponent);
|
|
29
|
-
* }
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
let WidgetRegistryService = class WidgetRegistryService {
|
|
33
|
-
constructor() {
|
|
34
|
-
this.customRenderers = new Map();
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Register a custom widget factory function
|
|
38
|
-
*
|
|
39
|
-
* @param type - The widget type identifier
|
|
40
|
-
* @param factory - Factory function that creates widget instances from plain objects
|
|
41
|
-
*/
|
|
42
|
-
registerFactory(type, factory) {
|
|
43
|
-
customWidgetRegistry.registerFactory(type, factory);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Register a widget class with automatic factory creation
|
|
47
|
-
*
|
|
48
|
-
* @param type - The widget type identifier
|
|
49
|
-
* @param ctor - Widget class constructor
|
|
50
|
-
*/
|
|
51
|
-
registerClass(type, ctor) {
|
|
52
|
-
customWidgetRegistry.registerClass(type, ctor);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get a factory for a specific widget type
|
|
56
|
-
*
|
|
57
|
-
* @param type - The widget type identifier
|
|
58
|
-
* @returns The factory function if registered, undefined otherwise
|
|
59
|
-
*/
|
|
60
|
-
getFactory(type) {
|
|
61
|
-
return customWidgetRegistry.getFactory(type);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Register a custom renderer for a specific widget type
|
|
65
|
-
*
|
|
66
|
-
* The renderer can be:
|
|
67
|
-
* - A function that returns HTML string
|
|
68
|
-
* - An Angular Component class
|
|
69
|
-
* - An Angular TemplateRef
|
|
70
|
-
*
|
|
71
|
-
* @param type - The widget type identifier
|
|
72
|
-
* @param renderer - The custom renderer (function, Component, or TemplateRef)
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```typescript
|
|
76
|
-
* // HTML function renderer
|
|
77
|
-
* widgetRegistry.registerRenderer('weather', (widget) => `<div>${widget.label}</div>`);
|
|
78
|
-
*
|
|
79
|
-
* // Component renderer
|
|
80
|
-
* widgetRegistry.registerRenderer('weather', WeatherWidgetComponent);
|
|
81
|
-
*
|
|
82
|
-
* // Template renderer (from @ViewChild or elsewhere)
|
|
83
|
-
* widgetRegistry.registerRenderer('weather', this.weatherTemplate);
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
registerRenderer(type, renderer) {
|
|
87
|
-
if (!type || typeof type !== 'string') {
|
|
88
|
-
throw new Error('type must be a non-empty string');
|
|
89
|
-
}
|
|
90
|
-
if (!renderer) {
|
|
91
|
-
throw new Error('renderer is required');
|
|
92
|
-
}
|
|
93
|
-
this.customRenderers.set(type, renderer);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Get a custom renderer for a specific widget type
|
|
97
|
-
*
|
|
98
|
-
* @param type - The widget type identifier
|
|
99
|
-
* @returns The custom renderer if registered, undefined otherwise
|
|
100
|
-
*/
|
|
101
|
-
getRenderer(type) {
|
|
102
|
-
return this.customRenderers.get(type);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Check if a custom renderer is registered for a widget type
|
|
106
|
-
*
|
|
107
|
-
* @param type - The widget type identifier
|
|
108
|
-
* @returns True if a custom renderer is registered, false otherwise
|
|
109
|
-
*/
|
|
110
|
-
hasRenderer(type) {
|
|
111
|
-
return this.customRenderers.has(type);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Unregister a custom renderer for a widget type
|
|
115
|
-
*
|
|
116
|
-
* @param type - The widget type identifier
|
|
117
|
-
* @returns True if a renderer was removed, false if none was registered
|
|
118
|
-
*/
|
|
119
|
-
unregisterRenderer(type) {
|
|
120
|
-
return this.customRenderers.delete(type);
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
WidgetRegistryService = __decorate([
|
|
124
|
-
Injectable({
|
|
125
|
-
providedIn: 'root',
|
|
126
|
-
})
|
|
127
|
-
], WidgetRegistryService);
|
|
128
|
-
export { WidgetRegistryService };
|
|
129
|
-
//# sourceMappingURL=widget-registry.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-registry.service.js","sourceRoot":"","sources":["../src/widget-registry.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAc,MAAM,mBAAmB,CAAC;AAGrE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAII,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QACY,oBAAe,GAAG,IAAI,GAAG,EAAgC,CAAC;IAgG7E,CAAC;IA/FC;;;;;OAKG;IACH,eAAe,CACb,IAAY,EACZ,OAA4C;QAE5C,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,IAAY,EAAE,IAAS;QACnC,oBAAoB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAAgB,CAAC,IAAY,EAAE,QAA8B;QAC3D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AAjGY,qBAAqB;IAHjC,UAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;GACW,qBAAqB,CAiGjC"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { EventEmitter, ElementRef, AfterViewInit, OnInit, OnDestroy, OnChanges, SimpleChanges, ComponentRef, EmbeddedViewRef, TemplateRef, Injector, EnvironmentInjector } from '@angular/core';
|
|
2
|
-
import { SsrWidgetRenderer, WidgetEventManager, ChatWidget } from '@bbq-chat/widgets';
|
|
3
|
-
import { WidgetRegistryService } from './widget-registry.service';
|
|
4
|
-
import { WidgetTemplateContext } from './custom-widget-renderer.types';
|
|
5
|
-
/**
|
|
6
|
-
* Angular component for rendering chat widgets
|
|
7
|
-
*
|
|
8
|
-
* This component handles rendering of chat widgets using the BbQ ChatWidgets library.
|
|
9
|
-
* It manages widget lifecycle, event handling, and cleanup.
|
|
10
|
-
*
|
|
11
|
-
* Supports three types of custom widget renderers:
|
|
12
|
-
* 1. HTML function renderers (return HTML strings)
|
|
13
|
-
* 2. Angular Component renderers (render as dynamic components)
|
|
14
|
-
* 3. Angular TemplateRef renderers (render as embedded views)
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* <bbq-widget-renderer
|
|
19
|
-
* [widgets]="messageWidgets"
|
|
20
|
-
* (widgetAction)="handleWidgetAction($event)">
|
|
21
|
-
* </bbq-widget-renderer>
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare class WidgetRendererComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
|
|
25
|
-
/**
|
|
26
|
-
* Array of widgets to render
|
|
27
|
-
*/
|
|
28
|
-
widgets: ChatWidget[] | null | undefined;
|
|
29
|
-
/**
|
|
30
|
-
* Emits when a widget action is triggered
|
|
31
|
-
*/
|
|
32
|
-
widgetAction: EventEmitter<{
|
|
33
|
-
actionName: string;
|
|
34
|
-
payload: unknown;
|
|
35
|
-
}>;
|
|
36
|
-
containerRef: ElementRef<HTMLDivElement>;
|
|
37
|
-
protected widgetItems: Array<{
|
|
38
|
-
index: number;
|
|
39
|
-
widget: ChatWidget;
|
|
40
|
-
isHtml: boolean;
|
|
41
|
-
html?: string;
|
|
42
|
-
}>;
|
|
43
|
-
protected renderer: SsrWidgetRenderer;
|
|
44
|
-
protected eventManager?: WidgetEventManager;
|
|
45
|
-
protected isViewInitialized: boolean;
|
|
46
|
-
protected widgetRegistry: WidgetRegistryService;
|
|
47
|
-
protected injector: Injector;
|
|
48
|
-
protected environmentInjector: EnvironmentInjector;
|
|
49
|
-
protected dynamicComponents: Array<ComponentRef<any>>;
|
|
50
|
-
protected dynamicViews: Array<EmbeddedViewRef<WidgetTemplateContext>>;
|
|
51
|
-
ngOnInit(): void;
|
|
52
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
53
|
-
ngAfterViewInit(): void;
|
|
54
|
-
ngOnDestroy(): void;
|
|
55
|
-
/**
|
|
56
|
-
* Base implementation for updating the rendered HTML for the current widgets.
|
|
57
|
-
*
|
|
58
|
-
* Subclasses may override this method to customize how widgets are rendered
|
|
59
|
-
* (for example, to inject additional markup or perform preprocessing).
|
|
60
|
-
*
|
|
61
|
-
* Since this is the base implementation, overriding implementations are not
|
|
62
|
-
* required to call `super.updateWidgetHtml()`.
|
|
63
|
-
*/
|
|
64
|
-
protected updateWidgetHtml(): void;
|
|
65
|
-
/**
|
|
66
|
-
* Render dynamic components and templates for custom widgets
|
|
67
|
-
*/
|
|
68
|
-
protected renderDynamicWidgets(): void;
|
|
69
|
-
/**
|
|
70
|
-
* Render an Angular component for a custom widget
|
|
71
|
-
*
|
|
72
|
-
* Note: This method safely assigns properties to component instances
|
|
73
|
-
* by checking for property existence at runtime. This approach is necessary
|
|
74
|
-
* because we cannot statically verify that all components implement
|
|
75
|
-
* the CustomWidgetComponent interface.
|
|
76
|
-
*/
|
|
77
|
-
protected renderComponent(componentType: any, widget: ChatWidget, targetElement: HTMLElement): void;
|
|
78
|
-
/**
|
|
79
|
-
* Render an Angular template for a custom widget
|
|
80
|
-
*/
|
|
81
|
-
protected renderTemplate(templateRef: TemplateRef<WidgetTemplateContext>, widget: ChatWidget, targetElement: HTMLElement): void;
|
|
82
|
-
/**
|
|
83
|
-
* Cleanup dynamic components and views
|
|
84
|
-
*/
|
|
85
|
-
protected cleanupDynamicWidgets(): void;
|
|
86
|
-
private setupEventHandlers;
|
|
87
|
-
handleClick(event: MouseEvent): void;
|
|
88
|
-
/**
|
|
89
|
-
* Cleanup all resources including event listeners.
|
|
90
|
-
*/
|
|
91
|
-
private cleanup;
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=widget-renderer.component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"widget-renderer.component.d.ts","sourceRoot":"","sources":["../src/widget-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,MAAM,EACN,SAAS,EACT,SAAS,EACT,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,WAAW,EAEX,QAAQ,EAER,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,qBAAqB,EAItB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBA2Ba,uBACX,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS;IAEtD;;OAEG;IACM,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAElD;;OAEG;IACO,YAAY;oBACR,MAAM;iBACT,OAAO;OACb;IAGL,YAAY,EAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAE1C,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAM;IAER,SAAS,CAAC,QAAQ,oBAA2B;IAC7C,SAAS,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAC5C,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,cAAc,wBAAiC;IACzD,SAAS,CAAC,QAAQ,WAAoB;IACtC,SAAS,CAAC,mBAAmB,sBAA+B;IAC5D,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAM;IAC3D,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAM;IAE3E,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,eAAe;IAOf,WAAW;IAIX;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB;IAuD1B;;OAEG;IACH,SAAS,CAAC,oBAAoB;IAyC9B;;;;;;;OAOG;IACH,SAAS,CAAC,eAAe,CACvB,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,WAAW;IAkC5B;;OAEG;IACH,SAAS,CAAC,cAAc,CACtB,WAAW,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAC/C,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,WAAW;IAwB5B;;OAEG;IACH,SAAS,CAAC,qBAAqB;IAY/B,OAAO,CAAC,kBAAkB;IAoB1B,WAAW,CAAC,KAAK,EAAE,UAAU;IAmB7B;;OAEG;IACH,OAAO,CAAC,OAAO;CAOhB"}
|