 174ed9f6d1
			
		
	
	
		174ed9f6d1
		
			
		
	
	
	
	
		
			
			* Add support to dynamically change the theme * Add Embed UI in app * Update UI as per Figma * Dynamicaly update Embed Code * Get differnet modes working in preview * Support Embed on EventType Edit, Team Link Fix and Mobile unsupported * Fix auto theme switch in Embed Snippet generator * Fix types * Self Review fixes * Remove Embed from App section * Move get query after the middleware to let middleware work on it * Add sandboxes in the document * Add error handling for embed loading * Fix types * Update snapshots and fix bug identified by tests * UI Fixes * Add Embed Tests * Respond in preview to width and height Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * As we want to keep control on the size of this snippet but we want some portion of it to be still readable.
 | |
|  * So, write the code that you need directly but keep it short.
 | |
|  */
 | |
| import type { Cal as CalClass, InstructionQueue } from "@calcom/embed-core/src/embed";
 | |
| 
 | |
| export interface GlobalCal {
 | |
|   (methodName: string, arg?: any): void;
 | |
|   /** Marks that the embed.js is loaded. Avoids re-downloading it. */
 | |
|   loaded?: boolean;
 | |
|   /** Maintains a queue till the time embed.js isn't loaded */
 | |
|   q?: InstructionQueue;
 | |
|   /** If user registers multiple namespaces, those are available here */
 | |
|   ns?: Record<string, GlobalCal>;
 | |
|   instance?: CalClass;
 | |
|   __css?: string;
 | |
|   fingerprint?: string;
 | |
| }
 | |
| 
 | |
| export interface CalWindow extends Window {
 | |
|   Cal?: GlobalCal;
 | |
| }
 | |
| 
 | |
| export default function EmbedSnippet(url = "https://cal.com/embed.js") {
 | |
|   (function (C: CalWindow, A, L) {
 | |
|     let p = function (a: any, ar: any) {
 | |
|       a.q.push(ar);
 | |
|     };
 | |
|     let d = C.document;
 | |
|     C.Cal =
 | |
|       C.Cal ||
 | |
|       function () {
 | |
|         let cal = C.Cal!;
 | |
|         let ar = arguments;
 | |
|         if (!cal.loaded) {
 | |
|           cal.ns = {};
 | |
|           cal.q = cal.q || [];
 | |
|           d.head.appendChild(d.createElement("script")).src = A;
 | |
|           cal.loaded = true;
 | |
|         }
 | |
| 
 | |
|         if (ar[0] === L) {
 | |
|           const api: { (): void; q: any[] } = function () {
 | |
|             p(api, arguments);
 | |
|           };
 | |
|           const namespace = ar[1];
 | |
|           api.q = api.q || [];
 | |
|           typeof namespace === "string" ? (cal.ns![namespace] = api) && p(api, ar) : p(cal, ar);
 | |
|           return;
 | |
|         }
 | |
|         p(cal, ar);
 | |
|       };
 | |
|   })(
 | |
|     window,
 | |
|     //! Replace it with "https://cal.com/embed.js" or the URL where you have embed.js installed
 | |
|     url,
 | |
|     "init"
 | |
|   );
 | |
|   /*!  Copying ends here. */
 | |
| 
 | |
|   return (window as CalWindow).Cal;
 | |
| }
 | |
| 
 | |
| export const EmbedSnippetString = EmbedSnippet.toString();
 |