From ab43d809c36a2879d440eba5b3e318beb5f6b864 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Tue, 21 Feb 2023 10:05:24 +0100 Subject: [PATCH] :technologist: Better Typebot import in vanilla JS sites --- packages/js/package.json | 2 +- packages/js/src/web.ts | 9 +++++-- packages/js/src/window.ts | 53 +++++++++++++++++++------------------ packages/react/package.json | 2 +- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/packages/js/package.json b/packages/js/package.json index 45e0db4f74..b322352f4e 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/js", - "version": "0.0.7", + "version": "0.0.8", "description": "Javascript library to display typebots on your website", "type": "module", "main": "dist/index.js", diff --git a/packages/js/src/web.ts b/packages/js/src/web.ts index fb8c614fee..d4f535d530 100644 --- a/packages/js/src/web.ts +++ b/packages/js/src/web.ts @@ -1,5 +1,10 @@ import { registerWebComponents } from './register' -import { injectTypebotInWindow } from './window' +import { parseTypebot, injectTypebotInWindow } from './window' registerWebComponents() -injectTypebotInWindow() + +const typebot = parseTypebot() + +injectTypebotInWindow(typebot) + +export default typebot diff --git a/packages/js/src/window.ts b/packages/js/src/window.ts index 8b5f5e868b..343792f247 100644 --- a/packages/js/src/window.ts +++ b/packages/js/src/window.ts @@ -31,36 +31,37 @@ export const initBubble = (props: BubbleProps) => { document.body.appendChild(bubbleElement) } +type Typebot = { + initStandard: typeof initStandard + initPopup: typeof initPopup + initBubble: typeof initBubble + close: typeof close + hidePreviewMessage: typeof hidePreviewMessage + open: typeof open + setPrefilledVariables: typeof setPrefilledVariables + showPreviewMessage: typeof showPreviewMessage + toggle: typeof toggle +} + declare const window: | { - Typebot: - | { - initStandard: typeof initStandard - initPopup: typeof initPopup - initBubble: typeof initBubble - close: typeof close - hidePreviewMessage: typeof hidePreviewMessage - open: typeof open - setPrefilledVariables: typeof setPrefilledVariables - showPreviewMessage: typeof showPreviewMessage - toggle: typeof toggle - } - | undefined + Typebot: Typebot | undefined } | undefined -export const injectTypebotInWindow = () => { - if (typeof window === 'undefined') return +export const parseTypebot = () => ({ + initStandard, + initPopup, + initBubble, + close, + hidePreviewMessage, + open, + setPrefilledVariables, + showPreviewMessage, + toggle, +}) - window.Typebot = { - initStandard, - initPopup, - initBubble, - close, - hidePreviewMessage, - open, - setPrefilledVariables, - showPreviewMessage, - toggle, - } +export const injectTypebotInWindow = (typebot: Typebot) => { + if (typeof window === 'undefined') return + window.Typebot = { ...typebot } } diff --git a/packages/react/package.json b/packages/react/package.json index 34c67606ac..ae09908087 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/react", - "version": "0.0.7", + "version": "0.0.8", "description": "React library to display typebots on your website", "main": "dist/index.js", "types": "dist/index.d.ts",