open-chat-studio-widget 0.1.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/README.md +62 -0
- package/dist/cjs/app-globals-3a1e7e63.js +7 -0
- package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
- package/dist/cjs/index-3826e5a2.js +1310 -0
- package/dist/cjs/index-3826e5a2.js.map +1 -0
- package/dist/cjs/index.cjs.js +4 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +17 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/open-chat-studio-widget.cjs.entry.js +49 -0
- package/dist/cjs/open-chat-studio-widget.cjs.entry.js.map +1 -0
- package/dist/cjs/open-chat-studio-widget.cjs.js +27 -0
- package/dist/cjs/open-chat-studio-widget.cjs.js.map +1 -0
- package/dist/collection/collection-manifest.json +12 -0
- package/dist/collection/components/ocs-chat/ocs-chat.css +1222 -0
- package/dist/collection/components/ocs-chat/ocs-chat.js +117 -0
- package/dist/collection/components/ocs-chat/ocs-chat.js.map +1 -0
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/components/index.d.ts +33 -0
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/open-chat-studio-widget.d.ts +11 -0
- package/dist/components/open-chat-studio-widget.js +69 -0
- package/dist/components/open-chat-studio-widget.js.map +1 -0
- package/dist/esm/app-globals-0f993ce5.js +5 -0
- package/dist/esm/app-globals-0f993ce5.js.map +1 -0
- package/dist/esm/index-9a12ccff.js +1283 -0
- package/dist/esm/index-9a12ccff.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/open-chat-studio-widget.entry.js +45 -0
- package/dist/esm/open-chat-studio-widget.entry.js.map +1 -0
- package/dist/esm/open-chat-studio-widget.js +22 -0
- package/dist/esm/open-chat-studio-widget.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/open-chat-studio-widget/index.esm.js +2 -0
- package/dist/open-chat-studio-widget/index.esm.js.map +1 -0
- package/dist/open-chat-studio-widget/open-chat-studio-widget.esm.js +2 -0
- package/dist/open-chat-studio-widget/open-chat-studio-widget.esm.js.map +1 -0
- package/dist/open-chat-studio-widget/p-b1996f7e.entry.js +2 -0
- package/dist/open-chat-studio-widget/p-b1996f7e.entry.js.map +1 -0
- package/dist/open-chat-studio-widget/p-d346075a.js +3 -0
- package/dist/open-chat-studio-widget/p-d346075a.js.map +1 -0
- package/dist/open-chat-studio-widget/p-e1255160.js +2 -0
- package/dist/open-chat-studio-widget/p-e1255160.js.map +1 -0
- package/dist/types/components/ocs-chat/ocs-chat.d.ts +10 -0
- package/dist/types/components.d.ts +43 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +1680 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/loader/package.json +11 -0
- package/package.json +46 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Host, h, Build } from "@stencil/core";
|
|
2
|
+
const allowedHosts = ["chatbots.dimagi.com"];
|
|
3
|
+
export class OcsChat {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.buttonText = "Chat";
|
|
6
|
+
this.visible = false;
|
|
7
|
+
// once set this will stay true so that the iframe doesn't reload
|
|
8
|
+
this.loaded = false;
|
|
9
|
+
this.error = "";
|
|
10
|
+
}
|
|
11
|
+
componentWillLoad() {
|
|
12
|
+
this.loaded = this.visible;
|
|
13
|
+
if (!Build.isDev) {
|
|
14
|
+
try {
|
|
15
|
+
const url = new URL(this.boturl);
|
|
16
|
+
if (!allowedHosts.includes(url.host)) {
|
|
17
|
+
this.error = `Invalid Bot URL: ${this.boturl}`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (_a) {
|
|
21
|
+
this.error = `Invalid Bot URL: ${this.boturl}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
load() {
|
|
26
|
+
this.visible = true;
|
|
27
|
+
this.loaded = true;
|
|
28
|
+
}
|
|
29
|
+
render() {
|
|
30
|
+
if (this.error) {
|
|
31
|
+
return (h(Host, null, h("p", null, this.error)));
|
|
32
|
+
}
|
|
33
|
+
return (h(Host, null, h("button", { class: "btn", onClick: () => this.load() }, this.buttonText), h("dialog", Object.assign({ id: "open-chat-studio-widget", class: "modal" }, (this.visible && { open: true }), { onClose: () => this.visible = false }), h("form", { method: "dialog", class: "modal-box h-full flex flex-col" }, h("button", { class: "btn btn-sm btn-circle btn-ghost absolute right-2 top-2 text-gray-700" }, "\u2715"), this.loaded && h("iframe", { class: "w-full flex-grow iframe-placeholder", src: this.boturl }), h("p", { class: "font-sans text-center mt-4 text-sm text-gray-700" }, "\u26A1 Powered by ", h("a", { class: "link", href: "https://chatbots.dimagi.com" }, "Open Chat Studio"))), h("form", { method: "dialog", class: "modal-backdrop" }, h("button", null, "close")))));
|
|
34
|
+
}
|
|
35
|
+
static get is() { return "open-chat-studio-widget"; }
|
|
36
|
+
static get encapsulation() { return "shadow"; }
|
|
37
|
+
static get originalStyleUrls() {
|
|
38
|
+
return {
|
|
39
|
+
"$": ["ocs-chat.css"]
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
static get styleUrls() {
|
|
43
|
+
return {
|
|
44
|
+
"$": ["ocs-chat.css"]
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
static get properties() {
|
|
48
|
+
return {
|
|
49
|
+
"boturl": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"mutable": false,
|
|
52
|
+
"complexType": {
|
|
53
|
+
"original": "string",
|
|
54
|
+
"resolved": "string",
|
|
55
|
+
"references": {}
|
|
56
|
+
},
|
|
57
|
+
"required": true,
|
|
58
|
+
"optional": false,
|
|
59
|
+
"docs": {
|
|
60
|
+
"tags": [],
|
|
61
|
+
"text": ""
|
|
62
|
+
},
|
|
63
|
+
"getter": false,
|
|
64
|
+
"setter": false,
|
|
65
|
+
"attribute": "boturl",
|
|
66
|
+
"reflect": false
|
|
67
|
+
},
|
|
68
|
+
"buttonText": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"mutable": false,
|
|
71
|
+
"complexType": {
|
|
72
|
+
"original": "string",
|
|
73
|
+
"resolved": "string",
|
|
74
|
+
"references": {}
|
|
75
|
+
},
|
|
76
|
+
"required": false,
|
|
77
|
+
"optional": false,
|
|
78
|
+
"docs": {
|
|
79
|
+
"tags": [],
|
|
80
|
+
"text": ""
|
|
81
|
+
},
|
|
82
|
+
"getter": false,
|
|
83
|
+
"setter": false,
|
|
84
|
+
"attribute": "button-text",
|
|
85
|
+
"reflect": false,
|
|
86
|
+
"defaultValue": "\"Chat\""
|
|
87
|
+
},
|
|
88
|
+
"visible": {
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"mutable": true,
|
|
91
|
+
"complexType": {
|
|
92
|
+
"original": "boolean",
|
|
93
|
+
"resolved": "boolean",
|
|
94
|
+
"references": {}
|
|
95
|
+
},
|
|
96
|
+
"required": false,
|
|
97
|
+
"optional": false,
|
|
98
|
+
"docs": {
|
|
99
|
+
"tags": [],
|
|
100
|
+
"text": ""
|
|
101
|
+
},
|
|
102
|
+
"getter": false,
|
|
103
|
+
"setter": false,
|
|
104
|
+
"attribute": "visible",
|
|
105
|
+
"reflect": false,
|
|
106
|
+
"defaultValue": "false"
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
static get states() {
|
|
111
|
+
return {
|
|
112
|
+
"loaded": {},
|
|
113
|
+
"error": {}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=ocs-chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ocs-chat.js","sourceRoot":"","sources":["../../../src/components/ocs-chat/ocs-chat.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAErE,MAAM,YAAY,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAQ7C,MAAM,OAAO,OAAO;IALpB;QAQU,eAAU,GAAW,MAAM,CAAC;QACX,YAAO,GAAY,KAAK,CAAC;QAElD,iEAAiE;QACxD,WAAM,GAAY,KAAK,CAAC;QAExB,UAAK,GAAW,EAAE,CAAC;KA6C7B;IA3CC,iBAAiB;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,KAAK,GAAG,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjD,CAAC;YACH,CAAC;YAAC,WAAM,CAAC;gBACP,IAAI,CAAC,KAAK,GAAG,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CACL,EAAC,IAAI;gBACH,aAAI,IAAI,CAAC,KAAK,CAAK,CACd,CACR,CAAC;QACJ,CAAC;QACD,OAAO,CACL,EAAC,IAAI;YACH,cAAQ,KAAK,EAAC,KAAK,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAG,IAAI,CAAC,UAAU,CAAU;YAC1E,4BAAQ,EAAE,EAAC,yBAAyB,EAAC,KAAK,EAAC,OAAO,IAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,IAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;gBACvH,YAAM,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,gCAAgC;oBAC1D,cAAQ,KAAK,EAAC,sEAAsE,aAAW;oBAC9F,IAAI,CAAC,MAAM,IAAI,cAAQ,KAAK,EAAC,qCAAqC,EAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAW;oBAC/F,SAAG,KAAK,EAAC,kDAAkD;;wBAAc,SAAG,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,6BAA6B,uBAAqB,CAAI,CAC/I;gBACP,YAAM,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,gBAAgB;oBAC1C,0BAAsB,CACjB,CACA,CACJ,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {Component, Host, h, Prop, State, Build} from '@stencil/core';\n\nconst allowedHosts = [\"chatbots.dimagi.com\"];\n\n\n@Component({\n tag: 'open-chat-studio-widget',\n styleUrl: 'ocs-chat.css',\n shadow: true,\n})\nexport class OcsChat {\n\n @Prop() boturl!: string;\n @Prop() buttonText: string = \"Chat\";\n @Prop({ mutable: true }) visible: boolean = false;\n\n // once set this will stay true so that the iframe doesn't reload\n @State() loaded: boolean = false;\n\n @State() error: string = \"\";\n\n componentWillLoad() {\n this.loaded = this.visible;\n if (!Build.isDev) {\n try {\n const url = new URL(this.boturl);\n if (!allowedHosts.includes(url.host)) {\n this.error = `Invalid Bot URL: ${this.boturl}`;\n }\n } catch {\n this.error = `Invalid Bot URL: ${this.boturl}`;\n }\n }\n }\n\n load() {\n this.visible = true;\n this.loaded = true;\n }\n\n render() {\n if (this.error) {\n return (\n <Host>\n <p>{this.error}</p>\n </Host>\n );\n }\n return (\n <Host>\n <button class=\"btn\" onClick={() => this.load()}>{this.buttonText}</button>\n <dialog id=\"open-chat-studio-widget\" class=\"modal\" {...(this.visible && {open:true})} onClose={() => this.visible = false}>\n <form method=\"dialog\" class=\"modal-box h-full flex flex-col\">\n <button class=\"btn btn-sm btn-circle btn-ghost absolute right-2 top-2 text-gray-700\">✕</button>\n {this.loaded && <iframe class=\"w-full flex-grow iframe-placeholder\" src={this.boturl}></iframe>}\n <p class=\"font-sans text-center mt-4 text-sm text-gray-700\">⚡ Powered by <a class=\"link\" href=\"https://chatbots.dimagi.com\">Open Chat Studio</a></p>\n </form>\n <form method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC","sourcesContent":["export * from './components';\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the base path to where the assets can be found. Use "setAssetPath(path)"
|
|
3
|
+
* if the path needs to be customized.
|
|
4
|
+
*/
|
|
5
|
+
export declare const getAssetPath: (path: string) => string;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Used to manually set the base path where assets can be found.
|
|
9
|
+
* If the script is used as "module", it's recommended to use "import.meta.url",
|
|
10
|
+
* such as "setAssetPath(import.meta.url)". Other options include
|
|
11
|
+
* "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
|
|
12
|
+
* dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
|
|
13
|
+
* But do note that this configuration depends on how your script is bundled, or lack of
|
|
14
|
+
* bundling, and where your assets can be loaded from. Additionally custom bundling
|
|
15
|
+
* will have to ensure the static assets are copied to its build directory.
|
|
16
|
+
*/
|
|
17
|
+
export declare const setAssetPath: (path: string) => void;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Used to specify a nonce value that corresponds with an application's CSP.
|
|
21
|
+
* When set, the nonce will be added to all dynamically created script and style tags at runtime.
|
|
22
|
+
* Alternatively, the nonce value can be set on a meta tag in the DOM head
|
|
23
|
+
* (<meta name="csp-nonce" content="{ nonce value here }" />) which
|
|
24
|
+
* will result in the same behavior.
|
|
25
|
+
*/
|
|
26
|
+
export declare const setNonce: (nonce: string) => void
|
|
27
|
+
|
|
28
|
+
export interface SetPlatformOptions {
|
|
29
|
+
raf?: (c: FrameRequestCallback) => number;
|
|
30
|
+
ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
31
|
+
rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"index.js","mappings":"","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface OpenChatStudioWidget extends Components.OpenChatStudioWidget, HTMLElement {}
|
|
4
|
+
export const OpenChatStudioWidget: {
|
|
5
|
+
prototype: OpenChatStudioWidget;
|
|
6
|
+
new (): OpenChatStudioWidget;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, Build, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
|
|
3
|
+
const ocsChatCss = "*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb;}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;}body{margin:0;line-height:inherit;}hr{height:0;color:inherit;border-top-width:1px;}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse;}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0;}button,select{text-transform:none}button,input:where([type='button']),input:where([type='reset']),input:where([type='submit']){-webkit-appearance:button;background-color:transparent;background-image:none;}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px;}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af;}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af;}button,[role=\"button\"]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle;}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=\"until-found\"])){display:none}:root,[data-theme]{background-color:hsl(var(--b1) / var(--tw-bg-opacity, 1));color:hsl(var(--bc) / var(--tw-text-opacity, 1))}html{-webkit-tap-highlight-color:transparent}:root{color-scheme:light;--pf:259 94% 44%;--sf:314 100% 40%;--af:174 75% 39%;--nf:214 20% 14%;--in:198 93% 60%;--su:158 64% 52%;--wa:43 96% 56%;--er:0 91% 71%;--inc:198 100% 12%;--suc:158 100% 10%;--wac:43 100% 11%;--erc:0 100% 14%;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-text-case:uppercase;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:259 94% 51%;--pc:259 96% 91%;--s:314 100% 47%;--sc:314 100% 91%;--a:174 75% 46%;--ac:174 75% 11%;--n:214 20% 21%;--nc:212 19% 87%;--b1:0 0% 100%;--b2:0 0% 95%;--b3:180 2% 90%;--bc:215 28% 17%}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--pf:262 80% 43%;--sf:316 70% 43%;--af:175 70% 34%;--in:198 93% 60%;--su:158 64% 52%;--wa:43 96% 56%;--er:0 91% 71%;--inc:198 100% 12%;--suc:158 100% 10%;--wac:43 100% 11%;--erc:0 100% 14%;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-text-case:uppercase;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:262 80% 50%;--pc:0 0% 100%;--s:316 70% 50%;--sc:0 0% 100%;--a:175 70% 41%;--ac:0 0% 100%;--n:213 18% 20%;--nf:212 17% 17%;--nc:220 13% 69%;--b1:212 18% 14%;--b2:213 18% 12%;--b3:213 18% 10%;--bc:220 13% 69%}}[data-theme=light]{color-scheme:light;--pf:259 94% 44%;--sf:314 100% 40%;--af:174 75% 39%;--nf:214 20% 14%;--in:198 93% 60%;--su:158 64% 52%;--wa:43 96% 56%;--er:0 91% 71%;--inc:198 100% 12%;--suc:158 100% 10%;--wac:43 100% 11%;--erc:0 100% 14%;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-text-case:uppercase;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:259 94% 51%;--pc:259 96% 91%;--s:314 100% 47%;--sc:314 100% 91%;--a:174 75% 46%;--ac:174 75% 11%;--n:214 20% 21%;--nc:212 19% 87%;--b1:0 0% 100%;--b2:0 0% 95%;--b3:180 2% 90%;--bc:215 28% 17%}[data-theme=dark]{color-scheme:dark;--pf:262 80% 43%;--sf:316 70% 43%;--af:175 70% 34%;--in:198 93% 60%;--su:158 64% 52%;--wa:43 96% 56%;--er:0 91% 71%;--inc:198 100% 12%;--suc:158 100% 10%;--wac:43 100% 11%;--erc:0 100% 14%;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-text-case:uppercase;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:262 80% 50%;--pc:0 0% 100%;--s:316 70% 50%;--sc:0 0% 100%;--a:175 70% 41%;--ac:0 0% 100%;--n:213 18% 20%;--nf:212 17% 17%;--nc:220 13% 69%;--b1:212 18% 14%;--b2:213 18% 12%;--b3:213 18% 10%;--bc:220 13% 69%}.btn{display:inline-flex;flex-shrink:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:center;border-color:transparent;border-color:hsl(var(--b2) / var(--tw-border-opacity));text-align:center;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-duration:200ms;border-radius:var(--rounded-btn, 0.5rem);height:3rem;padding-left:1rem;padding-right:1rem;min-height:3rem;font-size:0.875rem;line-height:1em;gap:0.5rem;font-weight:600;text-decoration-line:none;border-width:var(--border-btn, 1px);animation:button-pop var(--animation-btn, 0.25s) ease-out;text-transform:var(--btn-text-case, uppercase);--tw-border-opacity:1;--tw-bg-opacity:1;background-color:hsl(var(--b2) / var(--tw-bg-opacity));--tw-text-opacity:1;color:hsl(var(--bc) / var(--tw-text-opacity));outline-color:hsl(var(--bc) / 1)}.btn-disabled,.btn[disabled],.btn:disabled{pointer-events:none}.btn-circle{height:3rem;width:3rem;border-radius:9999px;padding:0px}.btn-group>input[type=\"radio\"].btn{-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn-group>input[type=\"radio\"].btn:before{content:attr(data-title)}.btn:is(input[type=\"checkbox\"]),.btn:is(input[type=\"radio\"]){width:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:is(input[type=\"checkbox\"]):after,.btn:is(input[type=\"radio\"]):after{--tw-content:attr(aria-label);content:var(--tw-content)}@media (hover: hover){.btn:hover{--tw-border-opacity:1;border-color:hsl(var(--b3) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(var(--b3) / var(--tw-bg-opacity))}.btn.glass:hover{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost:hover{--tw-border-opacity:0;background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity:0.2}.btn-disabled:hover,.btn[disabled]:hover,.btn:disabled:hover{--tw-border-opacity:0;background-color:hsl(var(--n) / var(--tw-bg-opacity));--tw-bg-opacity:0.2;color:hsl(var(--bc) / var(--tw-text-opacity));--tw-text-opacity:0.2}.btn:is(input[type=\"checkbox\"]:checked):hover,.btn:is(input[type=\"radio\"]:checked):hover{--tw-border-opacity:1;border-color:hsl(var(--pf) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(var(--pf) / var(--tw-bg-opacity))}}.link{cursor:pointer;text-decoration-line:underline}.modal{pointer-events:none;position:fixed;inset:0px;margin:0px;display:grid;height:100%;max-height:none;width:100%;max-width:none;justify-items:center;padding:0px;opacity:0;overscroll-behavior:contain;z-index:999;background-color:transparent;color:inherit;transition-duration:200ms;transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-property:transform, opacity, visibility;overflow-y:hidden}:where(.modal){align-items:center}.modal-box{max-height:calc(100vh - 5em);grid-column-start:1;grid-row-start:1;width:91.666667%;max-width:32rem;--tw-scale-x:.9;--tw-scale-y:.9;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:hsl(var(--b1) / var(--tw-bg-opacity));padding:1.5rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-timing-function:cubic-bezier(0, 0, 0.2, 1);transition-duration:200ms;border-top-left-radius:var(--rounded-box, 1rem);border-top-right-radius:var(--rounded-box, 1rem);border-bottom-left-radius:var(--rounded-box, 1rem);border-bottom-right-radius:var(--rounded-box, 1rem);box-shadow:rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;overflow-y:auto;overscroll-behavior:contain}.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open]{pointer-events:auto;visibility:visible;opacity:1}:root:has(:is(.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open])){overflow:hidden}.btn:active:hover,.btn:active:focus{animation:button-pop 0s ease-out;transform:scale(var(--btn-focus-scale, 0.97))}.btn:focus-visible{outline-style:solid;outline-width:2px;outline-offset:2px}.btn.glass{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);outline-color:currentColor}.btn.glass.btn-active{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost{border-width:1px;border-color:transparent;background-color:transparent;color:currentColor;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);outline-color:currentColor}.btn-ghost.btn-active{--tw-border-opacity:0;background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity:0.2}.btn.btn-disabled,.btn[disabled],.btn:disabled{--tw-border-opacity:0;background-color:hsl(var(--n) / var(--tw-bg-opacity));--tw-bg-opacity:0.2;color:hsl(var(--bc) / var(--tw-text-opacity));--tw-text-opacity:0.2}.btn-group>input[type=\"radio\"]:checked.btn,.btn-group>.btn-active{--tw-border-opacity:1;border-color:hsl(var(--p) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity:1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-group>input[type=\"radio\"]:checked.btn:focus-visible,.btn-group>.btn-active:focus-visible{outline-style:solid;outline-width:2px;outline-color:hsl(var(--p) / 1)}.btn:is(input[type=\"checkbox\"]:checked),.btn:is(input[type=\"radio\"]:checked){--tw-border-opacity:1;border-color:hsl(var(--p) / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity:1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn:is(input[type=\"checkbox\"]:checked):focus-visible,.btn:is(input[type=\"radio\"]:checked):focus-visible{outline-color:hsl(var(--p) / 1)}@keyframes button-pop{0%{transform:scale(var(--btn-focus-scale, 0.98))}40%{transform:scale(1.02)}100%{transform:scale(1)}}@keyframes checkmark{0%{background-position-y:5px}50%{background-position-y:-2px}100%{background-position-y:0}}.link:focus{outline:2px solid transparent;outline-offset:2px}.link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.modal:not(dialog:not(.modal-open)),.modal::backdrop{background-color:rgba(0, 0, 0, 0.3);animation:modal-pop 0.2s ease-out}.modal-backdrop{z-index:-1;grid-column-start:1;grid-row-start:1;display:grid;align-self:stretch;justify-self:stretch;color:transparent}.modal-open .modal-box,.modal-toggle:checked+.modal .modal-box,.modal:target .modal-box,.modal[open] .modal-box{--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes modal-pop{0%{opacity:0}}@keyframes progress-loading{50%{background-position-x:-115%}}@keyframes radiomark{0%{box-shadow:0 0 0 12px hsl(var(--b1)) inset,\n 0 0 0 12px hsl(var(--b1)) inset}50%{box-shadow:0 0 0 3px hsl(var(--b1)) inset,\n 0 0 0 3px hsl(var(--b1)) inset}100%{box-shadow:0 0 0 4px hsl(var(--b1)) inset,\n 0 0 0 4px hsl(var(--b1)) inset}}@keyframes rating-pop{0%{transform:translateY(-0.125em)}40%{transform:translateY(-0.125em)}100%{transform:translateY(0)}}@keyframes toast-pop{0%{transform:scale(0.9);opacity:0}100%{transform:scale(1);opacity:1}}.btn-sm{height:2rem;padding-left:0.75rem;padding-right:0.75rem;min-height:2rem;font-size:0.875rem}.btn-square:where(.btn-sm){height:2rem;width:2rem;padding:0px}.btn-circle:where(.btn-xs){height:1.5rem;width:1.5rem;border-radius:9999px;padding:0px}.btn-circle:where(.btn-sm){height:2rem;width:2rem;border-radius:9999px;padding:0px}.btn-circle:where(.btn-md){height:3rem;width:3rem;border-radius:9999px;padding:0px}.btn-circle:where(.btn-lg){height:4rem;width:4rem;border-radius:9999px;padding:0px}.btn-group .btn:not(:first-child):not(:last-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group .btn:first-child:not(:last-child){margin-left:-1px;margin-top:-0px;border-top-left-radius:var(--rounded-btn, 0.5rem);border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, 0.5rem);border-bottom-right-radius:0}.btn-group .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:var(--rounded-btn, 0.5rem);border-bottom-left-radius:0;border-bottom-right-radius:var(--rounded-btn, 0.5rem)}.btn-group-horizontal .btn:not(:first-child):not(:last-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-horizontal .btn:first-child:not(:last-child){margin-left:-1px;margin-top:-0px;border-top-left-radius:var(--rounded-btn, 0.5rem);border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, 0.5rem);border-bottom-right-radius:0}.btn-group-horizontal .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:var(--rounded-btn, 0.5rem);border-bottom-left-radius:0;border-bottom-right-radius:var(--rounded-btn, 0.5rem)}.btn-group-vertical .btn:first-child:not(:last-child){margin-left:-0px;margin-top:-1px;border-top-left-radius:var(--rounded-btn, 0.5rem);border-top-right-radius:var(--rounded-btn, 0.5rem);border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, 0.5rem);border-bottom-right-radius:var(--rounded-btn, 0.5rem)}.modal-top :where(.modal-box){width:100%;max-width:none;--tw-translate-y:-2.5rem;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:var(--rounded-box, 1rem);border-bottom-right-radius:var(--rounded-box, 1rem)}.modal-middle :where(.modal-box){width:91.666667%;max-width:32rem;--tw-translate-y:0px;--tw-scale-x:.9;--tw-scale-y:.9;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-top-left-radius:var(--rounded-box, 1rem);border-top-right-radius:var(--rounded-box, 1rem);border-bottom-left-radius:var(--rounded-box, 1rem);border-bottom-right-radius:var(--rounded-box, 1rem)}.modal-bottom :where(.modal-box){width:100%;max-width:none;--tw-translate-y:2.5rem;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-bottom-right-radius:0px;border-bottom-left-radius:0px;border-top-left-radius:var(--rounded-box, 1rem);border-top-right-radius:var(--rounded-box, 1rem)}.visible{visibility:visible}.absolute{position:absolute}.right-2{right:0.5rem}.top-2{top:0.5rem}.mt-4{margin-top:1rem}.flex{display:flex}.h-full{height:100%}.w-full{width:100%}.flex-grow{flex-grow:1}.flex-col{flex-direction:column}.text-center{text-align:center}.font-sans{font-family:ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}:host{display:block;--button-background-color:inherit;--button-background-color-hover:inherit;--button-text-color:inherit;--button-text-color-hover:inherit}.btn{background-color:var(--button-background-color);color:var(--button-text-color)}.btn:hover{background-color:var(--button-background-color-hover);color:var(--button-text-color-hover)}.iframe-placeholder{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAyNCAyNCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48c3R5bGU+LnNwaW5uZXJfcU04M3thbmltYXRpb246c3Bpbm5lcl84SFFHIDEuMDVzIGluZmluaXRlfS5zcGlubmVyX29YUHJ7YW5pbWF0aW9uLWRlbGF5Oi4xc30uc3Bpbm5lcl9aVExme2FuaW1hdGlvbi1kZWxheTouMnN9QGtleWZyYW1lcyBzcGlubmVyXzhIUUd7MCUsNTcuMTQle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzMsLjY2LC42NiwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfTI4LjU3JXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjMzLDAsLjY2LC4zMyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTZweCl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfX08L3N0eWxlPjxjaXJjbGUgY2xhc3M9J3NwaW5uZXJfcU04MycgY3g9JzQnIGN5PScxMicgcj0nMycvPjxjaXJjbGUgY2xhc3M9J3NwaW5uZXJfcU04MyBzcGlubmVyX29YUHInIGN4PScxMicgY3k9JzEyJyByPSczJy8+PGNpcmNsZSBjbGFzcz0nc3Bpbm5lcl9xTTgzIHNwaW5uZXJfWlRMZicgY3g9JzIwJyBjeT0nMTInIHI9JzMnLz48L3N2Zz4=);background-repeat:no-repeat;background-position:center}#open-chat-studio-widget .modal-box{background-color:white}";
|
|
4
|
+
const OpenChatStudioWidgetStyle0 = ocsChatCss;
|
|
5
|
+
|
|
6
|
+
const allowedHosts = ["chatbots.dimagi.com"];
|
|
7
|
+
const OcsChat = /*@__PURE__*/ proxyCustomElement(class OcsChat extends HTMLElement {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.__registerHost();
|
|
11
|
+
this.__attachShadow();
|
|
12
|
+
this.buttonText = "Chat";
|
|
13
|
+
this.visible = false;
|
|
14
|
+
// once set this will stay true so that the iframe doesn't reload
|
|
15
|
+
this.loaded = false;
|
|
16
|
+
this.error = "";
|
|
17
|
+
}
|
|
18
|
+
componentWillLoad() {
|
|
19
|
+
this.loaded = this.visible;
|
|
20
|
+
if (!Build.isDev) {
|
|
21
|
+
try {
|
|
22
|
+
const url = new URL(this.boturl);
|
|
23
|
+
if (!allowedHosts.includes(url.host)) {
|
|
24
|
+
this.error = `Invalid Bot URL: ${this.boturl}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (_a) {
|
|
28
|
+
this.error = `Invalid Bot URL: ${this.boturl}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
load() {
|
|
33
|
+
this.visible = true;
|
|
34
|
+
this.loaded = true;
|
|
35
|
+
}
|
|
36
|
+
render() {
|
|
37
|
+
if (this.error) {
|
|
38
|
+
return (h(Host, null, h("p", null, this.error)));
|
|
39
|
+
}
|
|
40
|
+
return (h(Host, null, h("button", { class: "btn", onClick: () => this.load() }, this.buttonText), h("dialog", Object.assign({ id: "open-chat-studio-widget", class: "modal" }, (this.visible && { open: true }), { onClose: () => this.visible = false }), h("form", { method: "dialog", class: "modal-box h-full flex flex-col" }, h("button", { class: "btn btn-sm btn-circle btn-ghost absolute right-2 top-2 text-gray-700" }, "\u2715"), this.loaded && h("iframe", { class: "w-full flex-grow iframe-placeholder", src: this.boturl }), h("p", { class: "font-sans text-center mt-4 text-sm text-gray-700" }, "\u26A1 Powered by ", h("a", { class: "link", href: "https://chatbots.dimagi.com" }, "Open Chat Studio"))), h("form", { method: "dialog", class: "modal-backdrop" }, h("button", null, "close")))));
|
|
41
|
+
}
|
|
42
|
+
static get style() { return OpenChatStudioWidgetStyle0; }
|
|
43
|
+
}, [1, "open-chat-studio-widget", {
|
|
44
|
+
"boturl": [1],
|
|
45
|
+
"buttonText": [1, "button-text"],
|
|
46
|
+
"visible": [1028],
|
|
47
|
+
"loaded": [32],
|
|
48
|
+
"error": [32]
|
|
49
|
+
}]);
|
|
50
|
+
function defineCustomElement$1() {
|
|
51
|
+
if (typeof customElements === "undefined") {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const components = ["open-chat-studio-widget"];
|
|
55
|
+
components.forEach(tagName => { switch (tagName) {
|
|
56
|
+
case "open-chat-studio-widget":
|
|
57
|
+
if (!customElements.get(tagName)) {
|
|
58
|
+
customElements.define(tagName, OcsChat);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
} });
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const OpenChatStudioWidget = OcsChat;
|
|
65
|
+
const defineCustomElement = defineCustomElement$1;
|
|
66
|
+
|
|
67
|
+
export { OpenChatStudioWidget, defineCustomElement };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=open-chat-studio-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"open-chat-studio-widget.js","mappings":";;AAAA,MAAM,UAAU,GAAG,o5nBAAo5nB,CAAC;AACx6nB,mCAAe,UAAU;;ACCzB,MAAM,YAAY,GAAG,CAAC,qBAAqB,CAAC,CAAC;MAQhC,OAAO;IALpB;;;;QAQU,eAAU,GAAW,MAAM,CAAC;QACX,YAAO,GAAY,KAAK,CAAC;;QAGzC,WAAM,GAAY,KAAK,CAAC;QAExB,UAAK,GAAW,EAAE,CAAC;KA6C7B;IA3CC,iBAAiB;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAChB,IAAI;gBACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACpC,IAAI,CAAC,KAAK,GAAG,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC;iBAChD;aACF;YAAC,WAAM;gBACN,IAAI,CAAC,KAAK,GAAG,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC;aAChD;SACF;KACF;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QACE,EAAC,IAAI,QACH,aAAI,IAAI,CAAC,KAAK,CAAK,CACd,EACP;SACH;QACD,QACE,EAAC,IAAI,QACH,cAAQ,KAAK,EAAC,KAAK,EAAC,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAG,IAAI,CAAC,UAAU,CAAU,EAC1E,4BAAQ,EAAE,EAAC,yBAAyB,EAAC,KAAK,EAAC,OAAO,KAAM,IAAI,CAAC,OAAO,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,KAAG,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,KACvH,YAAM,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,gCAAgC,IAC1D,cAAQ,KAAK,EAAC,sEAAsE,aAAW,EAC9F,IAAI,CAAC,MAAM,IAAI,cAAQ,KAAK,EAAC,qCAAqC,EAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAW,EAC/F,SAAG,KAAK,EAAC,kDAAkD,0BAAc,SAAG,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,6BAA6B,uBAAqB,CAAI,CAC/I,EACP,YAAM,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,gBAAgB,IAC1C,0BAAsB,CACjB,CACA,CACJ,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/ocs-chat/ocs-chat.css?tag=open-chat-studio-widget&encapsulation=shadow","src/components/ocs-chat/ocs-chat.tsx"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n\n:host {\n display: block;\n --button-background-color: inherit;\n --button-background-color-hover: inherit;\n --button-text-color: inherit;\n --button-text-color-hover: inherit;\n}\n\n.btn {\n background-color: var(--button-background-color);\n color: var(--button-text-color);\n}\n\n.btn:hover {\n background-color: var(--button-background-color-hover);\n color: var(--button-text-color-hover);\n}\n\n.iframe-placeholder {\n /*loading-dots*/\n background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAyNCAyNCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48c3R5bGU+LnNwaW5uZXJfcU04M3thbmltYXRpb246c3Bpbm5lcl84SFFHIDEuMDVzIGluZmluaXRlfS5zcGlubmVyX29YUHJ7YW5pbWF0aW9uLWRlbGF5Oi4xc30uc3Bpbm5lcl9aVExme2FuaW1hdGlvbi1kZWxheTouMnN9QGtleWZyYW1lcyBzcGlubmVyXzhIUUd7MCUsNTcuMTQle2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzMsLjY2LC42NiwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfTI4LjU3JXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjMzLDAsLjY2LC4zMyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTZweCl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfX08L3N0eWxlPjxjaXJjbGUgY2xhc3M9J3NwaW5uZXJfcU04MycgY3g9JzQnIGN5PScxMicgcj0nMycvPjxjaXJjbGUgY2xhc3M9J3NwaW5uZXJfcU04MyBzcGlubmVyX29YUHInIGN4PScxMicgY3k9JzEyJyByPSczJy8+PGNpcmNsZSBjbGFzcz0nc3Bpbm5lcl9xTTgzIHNwaW5uZXJfWlRMZicgY3g9JzIwJyBjeT0nMTInIHI9JzMnLz48L3N2Zz4=);\n background-repeat: no-repeat;\n background-position: center;\n}\n\n#open-chat-studio-widget .modal-box {\n background-color: white;\n}\n","import {Component, Host, h, Prop, State, Build} from '@stencil/core';\n\nconst allowedHosts = [\"chatbots.dimagi.com\"];\n\n\n@Component({\n tag: 'open-chat-studio-widget',\n styleUrl: 'ocs-chat.css',\n shadow: true,\n})\nexport class OcsChat {\n\n @Prop() boturl!: string;\n @Prop() buttonText: string = \"Chat\";\n @Prop({ mutable: true }) visible: boolean = false;\n\n // once set this will stay true so that the iframe doesn't reload\n @State() loaded: boolean = false;\n\n @State() error: string = \"\";\n\n componentWillLoad() {\n this.loaded = this.visible;\n if (!Build.isDev) {\n try {\n const url = new URL(this.boturl);\n if (!allowedHosts.includes(url.host)) {\n this.error = `Invalid Bot URL: ${this.boturl}`;\n }\n } catch {\n this.error = `Invalid Bot URL: ${this.boturl}`;\n }\n }\n }\n\n load() {\n this.visible = true;\n this.loaded = true;\n }\n\n render() {\n if (this.error) {\n return (\n <Host>\n <p>{this.error}</p>\n </Host>\n );\n }\n return (\n <Host>\n <button class=\"btn\" onClick={() => this.load()}>{this.buttonText}</button>\n <dialog id=\"open-chat-studio-widget\" class=\"modal\" {...(this.visible && {open:true})} onClose={() => this.visible = false}>\n <form method=\"dialog\" class=\"modal-box h-full flex flex-col\">\n <button class=\"btn btn-sm btn-circle btn-ghost absolute right-2 top-2 text-gray-700\">✕</button>\n {this.loaded && <iframe class=\"w-full flex-grow iframe-placeholder\" src={this.boturl}></iframe>}\n <p class=\"font-sans text-center mt-4 text-sm text-gray-700\">⚡ Powered by <a class=\"link\" href=\"https://chatbots.dimagi.com\">Open Chat Studio</a></p>\n </form>\n <form method=\"dialog\" class=\"modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"app-globals-0f993ce5.js","mappings":"AAAY,MAAC,aAAa,GAAG,MAAM;;;;","names":[],"sources":["@stencil/core/internal/app-globals"],"sourcesContent":["export const globalScripts = () => {};\n"],"version":3}
|