@peak-ai/canvas 1.0.0 → 1.0.1-rc.2

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.
Files changed (36) hide show
  1. package/GrapesjsCanvas.d.ts +3 -3
  2. package/GrapesjsCanvas.js +2 -5
  3. package/GrapesjsCanvas.js.map +1 -1
  4. package/constants/index.d.ts +1 -1
  5. package/constants/index.js +1 -1
  6. package/constants/index.js.map +1 -1
  7. package/index.d.ts +1 -1
  8. package/index.js +1 -1
  9. package/index.js.map +1 -1
  10. package/index.styles.js +1 -1
  11. package/index.styles.js.map +1 -1
  12. package/package.json +2 -5
  13. package/plugins/grapejs-plugin.js +2 -3
  14. package/plugins/grapejs-plugin.js.map +1 -1
  15. package/plugins/helpers/render-components.d.ts +0 -3
  16. package/plugins/helpers/render-components.js +21 -3
  17. package/plugins/helpers/render-components.js.map +1 -1
  18. package/shadcn/components/ui/card.js.map +1 -1
  19. package/shadcn/components/ui/chart.js +1 -1
  20. package/shadcn/components/ui/chart.js.map +1 -1
  21. package/shadcn/components/ui/checkbox.js.map +1 -1
  22. package/shadcn/components/ui/hover-card.js.map +1 -1
  23. package/shadcn/components/ui/input.js.map +1 -1
  24. package/shadcn/components/ui/label.js.map +1 -1
  25. package/shadcn/components/ui/scroll-area.js.map +1 -1
  26. package/shadcn/components/ui/separator.js.map +1 -1
  27. package/shadcn/components/ui/table.js.map +1 -1
  28. package/shadcn/components/ui/textarea.js.map +1 -1
  29. package/shadcn/components/ui/tooltip.js.map +1 -1
  30. package/types/grapesjs-tailwind.d.js.map +1 -1
  31. package/helpers/css.d.ts +0 -1
  32. package/helpers/css.js +0 -2
  33. package/helpers/css.js.map +0 -1
  34. package/shadcn/components/ui/tabs.d.ts +0 -7
  35. package/shadcn/components/ui/tabs.js +0 -2
  36. package/shadcn/components/ui/tabs.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { Editor } from 'grapesjs';
2
2
  import 'grapesjs/dist/css/grapes.min.css';
3
- type GrapesjsCanvasProps = {
3
+ type GrapejsCanvasProps = {
4
4
  json: any;
5
5
  mode?: 'editor' | 'preview';
6
6
  setEditor: (editor: Editor) => void;
7
7
  };
8
- declare function GrapesjsCanvas({ json, mode, setEditor }: GrapesjsCanvasProps): import("react/jsx-runtime").JSX.Element;
9
- export default GrapesjsCanvas;
8
+ declare function GrapejsCanvas({ json, mode, setEditor }: GrapejsCanvasProps): import("react/jsx-runtime").JSX.Element;
9
+ export default GrapejsCanvas;
package/GrapesjsCanvas.js CHANGED
@@ -1,6 +1,3 @@
1
- import _extends from"@babel/runtime/helpers/extends";/* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef}from"react";import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{tailwindCompiledCss}from"./helpers/css";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function expandActions(node){var _node$componentProps;if(node.type==="shadcn-generic"&&node.componentName==="Actions"&&Array.isArray((_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions)){var actions=node.componentProps.actions;return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){var icon=action.icon,title=action.title,description=action.description;return{id:node.id+"--action-card-"+i,type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,componentProps:{icon:icon,headerContent:title,bodyContent:description}}})})}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function GrapesjsCanvas(_ref2){var json=_ref2.json,_ref2$mode=_ref2.mode,mode=_ref2$mode===void 0?"preview":_ref2$mode,setEditor=_ref2.setEditor;var editorRef=useRef(null);var editorInstance=useRef(null);useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function(){// Cleanup if editorRef is not available
2
- }}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]}});// Tailwind CSS rules aren't fully added to our component
3
- // So, adding them from here!
4
- editor.on("load",function(){var canvasHead=editor.Canvas.getDocument().head;var style=document.createElement("style");var fullCss="\n "+tailwindCompiledCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");canvasHead.appendChild(style)});editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref3){var type=_ref3.type,tagName=_ref3.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0&&((_json$pages$0$frames=json.pages[0].frames)==null?void 0:_json$pages$0$frames.length)>0){var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);editor.setComponents(processed);var cssText=convertStyles(json.styles||[]);editor.setStyle(cssText)}editor.on("load",function(){setComponentProperties(editor,mode==="preview")});return function(){editor.destroy()};// eslint-disable-next-line @typescript-eslint/no-empty-function, react-hooks/exhaustive-deps
5
- },[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef})]})}export default GrapesjsCanvas;
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef}from"react";import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function GrapejsCanvas(_ref2){var json=_ref2.json,_ref2$mode=_ref2.mode,mode=_ref2$mode===void 0?"preview":_ref2$mode,setEditor=_ref2.setEditor;var editorRef=useRef(null);var editorInstance=useRef(null);useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function(){// Cleanup if editorRef is not available
2
+ }}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode)],canvas:{styles:["https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css"]},storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]}});editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref3){var type=_ref3.type,tagName=_ref3.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0&&((_json$pages$0$frames=json.pages[0].frames)==null?void 0:_json$pages$0$frames.length)>0){var comp=json.pages[0].frames[0].component;editor.setComponents(comp);var cssText=convertStyles(json.styles||[]);editor.setStyle(cssText)}editor.on("load",function(){setComponentProperties(editor,mode==="preview")});return function(){editor.destroy()}},[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef})]})}export default GrapejsCanvas;
6
3
  //# sourceMappingURL=GrapesjsCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","tailwindCompiledCss","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","expandActions","node","_node$componentProps","type","componentName","componentProps","actions","_extends","classes","concat","undefined","action","i","icon","title","description","id","headerContent","bodyContent","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","editorRef","editorInstance","_json$pages","_json$pages$0$frames","current","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","on","canvasHead","Canvas","getDocument","head","document","createElement","fullCss","innerHTML","setAttribute","appendChild","_ref3","tagName","DomComponents","getType","addType","model","defaults","view","pages","length","frames","raw","component","processed","setComponents","cssText","styles","setStyle","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport { tailwindCompiledCss } from './helpers/css';\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction expandActions(node: any): any {\n if (\n node.type === 'shadcn-generic' &&\n node.componentName === 'Actions' &&\n Array.isArray(node.componentProps?.actions)\n ) {\n const { actions } = node.componentProps;\n\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => {\n const { icon, title, description } = action;\n\n return {\n id: `${node.id}--action-card-${i}`,\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n }),\n };\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction GrapesjsCanvas({ json, mode = 'preview', setEditor }: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<any>(null);\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // Cleanup if editorRef is not available\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [tailwind, createGrapesjsShadcnGenericPlugin(currentMode)],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', () => {\n const canvasHead = editor.Canvas.getDocument().head;\n const style = document.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n canvasHead.appendChild(style);\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n }\n\n editor.on('load', () => {\n setComponentProperties(editor, mode === 'preview');\n });\n\n return () => {\n editor.destroy();\n };\n // eslint-disable-next-line @typescript-eslint/no-empty-function, react-hooks/exhaustive-deps\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","GrapejsCanvas","_ref2","json","_ref2$mode","mode","setEditor","editorRef","editorInstance","_json$pages","_json$pages$0$frames","current","destroy","currentMode","init","container","height","plugins","canvas","styles","storageManager","type","richTextEditor","actions","_ref3","tagName","DomComponents","getType","addType","model","defaults","view","pages","length","frames","component","setComponents","cssText","setStyle","on","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\n\ntype GrapejsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction GrapejsCanvas({ json, mode = 'preview', setEditor }: GrapejsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<any>(null);\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // Cleanup if editorRef is not available\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [tailwind, createGrapesjsShadcnGenericPlugin(currentMode)],\n canvas: {\n styles: ['https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css'],\n },\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n const comp = json.pages[0].frames[0].component;\n editor.setComponents(comp);\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n }\n\n editor.on('load', () => {\n setComponentProperties(editor, mode === 'preview');\n });\n\n return () => {\n editor.destroy();\n };\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} />\n </React.Fragment>\n );\n}\n\nexport default GrapejsCanvas;\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  export declare const TypesToRegister: {
2
- tagName: string;
3
2
  type: string;
3
+ tagName: string;
4
4
  }[];
@@ -1,2 +1,2 @@
1
- export var TypesToRegister=[{tagName:"div",type:"div"},{tagName:"h1",type:"heading"},{tagName:"p",type:"text"},{tagName:"div",type:"container"},{tagName:"div",type:"grid"},{tagName:"table",type:"table"},{tagName:"thead",type:"thead"},{tagName:"tbody",type:"tbody"},{tagName:"tr",type:"tr"},{tagName:"th",type:"th"},{tagName:"td",type:"td"},{tagName:"button",type:"button"},{tagName:"section",type:"section"},{tagName:"img",type:"image"},{tagName:"a",type:"link"},{tagName:"video",type:"video"},{tagName:"form",type:"form"},{tagName:"input",type:"input"},{tagName:"textarea",type:"textarea"},{tagName:"select",type:"select"},{tagName:"ul",type:"ul"},{tagName:"ol",type:"ol"},{tagName:"li",type:"li"},{tagName:"header",type:"header"},{tagName:"footer",type:"footer"}];
1
+ export var TypesToRegister=[{type:"div",tagName:"div"},{type:"heading",tagName:"h1"},{type:"text",tagName:"p"},{type:"container",tagName:"div"},{type:"grid",tagName:"div"},{type:"table",tagName:"table"},{type:"thead",tagName:"thead"},{type:"tbody",tagName:"tbody"},{type:"tr",tagName:"tr"},{type:"th",tagName:"th"},{type:"td",tagName:"td"},{type:"button",tagName:"button"},{type:"section",tagName:"section"},{type:"image",tagName:"img"},{type:"link",tagName:"a"},{type:"video",tagName:"video"},{type:"form",tagName:"form"},{type:"input",tagName:"input"},{type:"textarea",tagName:"textarea"},{type:"select",tagName:"select"},{type:"ul",tagName:"ul"},{type:"ol",tagName:"ol"},{type:"li",tagName:"li"},{type:"header",tagName:"header"},{type:"footer",tagName:"footer"}];
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["TypesToRegister","tagName","type"],"sources":["../../src/constants/index.ts"],"sourcesContent":["export const TypesToRegister = [\n { tagName: 'div', type: 'div' },\n { tagName: 'h1', type: 'heading' },\n { tagName: 'p', type: 'text' },\n { tagName: 'div', type: 'container' },\n { tagName: 'div', type: 'grid' },\n { tagName: 'table', type: 'table' },\n { tagName: 'thead', type: 'thead' },\n { tagName: 'tbody', type: 'tbody' },\n { tagName: 'tr', type: 'tr' },\n { tagName: 'th', type: 'th' },\n { tagName: 'td', type: 'td' },\n { tagName: 'button', type: 'button' },\n { tagName: 'section', type: 'section' },\n { tagName: 'img', type: 'image' },\n { tagName: 'a', type: 'link' },\n { tagName: 'video', type: 'video' },\n { tagName: 'form', type: 'form' },\n { tagName: 'input', type: 'input' },\n { tagName: 'textarea', type: 'textarea' },\n { tagName: 'select', type: 'select' },\n { tagName: 'ul', type: 'ul' },\n { tagName: 'ol', type: 'ol' },\n { tagName: 'li', type: 'li' },\n { tagName: 'header', type: 'header' },\n { tagName: 'footer', type: 'footer' },\n];\n"],"mappings":"AAAA,MAAO,IAAM,CAAAA,eAAe,CAAG,CAC7B,CAAEC,OAAO,CAAE,KAAK,CAAEC,IAAI,CAAE,KAAM,CAAC,CAC/B,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,SAAU,CAAC,CAClC,CAAED,OAAO,CAAE,GAAG,CAAEC,IAAI,CAAE,MAAO,CAAC,CAC9B,CAAED,OAAO,CAAE,KAAK,CAAEC,IAAI,CAAE,WAAY,CAAC,CACrC,CAAED,OAAO,CAAE,KAAK,CAAEC,IAAI,CAAE,MAAO,CAAC,CAChC,CAAED,OAAO,CAAE,OAAO,CAAEC,IAAI,CAAE,OAAQ,CAAC,CACnC,CAAED,OAAO,CAAE,OAAO,CAAEC,IAAI,CAAE,OAAQ,CAAC,CACnC,CAAED,OAAO,CAAE,OAAO,CAAEC,IAAI,CAAE,OAAQ,CAAC,CACnC,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,IAAK,CAAC,CAC7B,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,IAAK,CAAC,CAC7B,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,IAAK,CAAC,CAC7B,CAAED,OAAO,CAAE,QAAQ,CAAEC,IAAI,CAAE,QAAS,CAAC,CACrC,CAAED,OAAO,CAAE,SAAS,CAAEC,IAAI,CAAE,SAAU,CAAC,CACvC,CAAED,OAAO,CAAE,KAAK,CAAEC,IAAI,CAAE,OAAQ,CAAC,CACjC,CAAED,OAAO,CAAE,GAAG,CAAEC,IAAI,CAAE,MAAO,CAAC,CAC9B,CAAED,OAAO,CAAE,OAAO,CAAEC,IAAI,CAAE,OAAQ,CAAC,CACnC,CAAED,OAAO,CAAE,MAAM,CAAEC,IAAI,CAAE,MAAO,CAAC,CACjC,CAAED,OAAO,CAAE,OAAO,CAAEC,IAAI,CAAE,OAAQ,CAAC,CACnC,CAAED,OAAO,CAAE,UAAU,CAAEC,IAAI,CAAE,UAAW,CAAC,CACzC,CAAED,OAAO,CAAE,QAAQ,CAAEC,IAAI,CAAE,QAAS,CAAC,CACrC,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,IAAK,CAAC,CAC7B,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,IAAK,CAAC,CAC7B,CAAED,OAAO,CAAE,IAAI,CAAEC,IAAI,CAAE,IAAK,CAAC,CAC7B,CAAED,OAAO,CAAE,QAAQ,CAAEC,IAAI,CAAE,QAAS,CAAC,CACrC,CAAED,OAAO,CAAE,QAAQ,CAAEC,IAAI,CAAE,QAAS,CAAC,CACtC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["TypesToRegister","type","tagName"],"sources":["../../src/constants/index.ts"],"sourcesContent":["export const TypesToRegister = [\n { type: 'div', tagName: 'div' },\n { type: 'heading', tagName: 'h1' },\n { type: 'text', tagName: 'p' },\n { type: 'container', tagName: 'div' },\n { type: 'grid', tagName: 'div' },\n { type: 'table', tagName: 'table' },\n { type: 'thead', tagName: 'thead' },\n { type: 'tbody', tagName: 'tbody' },\n { type: 'tr', tagName: 'tr' },\n { type: 'th', tagName: 'th' },\n { type: 'td', tagName: 'td' },\n { type: 'button', tagName: 'button' },\n { type: 'section', tagName: 'section' },\n { type: 'image', tagName: 'img' },\n { type: 'link', tagName: 'a' },\n { type: 'video', tagName: 'video' },\n { type: 'form', tagName: 'form' },\n { type: 'input', tagName: 'input' },\n { type: 'textarea', tagName: 'textarea' },\n { type: 'select', tagName: 'select' },\n { type: 'ul', tagName: 'ul' },\n { type: 'ol', tagName: 'ol' },\n { type: 'li', tagName: 'li' },\n { type: 'header', tagName: 'header' },\n { type: 'footer', tagName: 'footer' },\n];\n"],"mappings":"AAAA,MAAO,IAAM,CAAAA,eAAe,CAAG,CAC7B,CAAEC,IAAI,CAAE,KAAK,CAAEC,OAAO,CAAE,KAAM,CAAC,CAC/B,CAAED,IAAI,CAAE,SAAS,CAAEC,OAAO,CAAE,IAAK,CAAC,CAClC,CAAED,IAAI,CAAE,MAAM,CAAEC,OAAO,CAAE,GAAI,CAAC,CAC9B,CAAED,IAAI,CAAE,WAAW,CAAEC,OAAO,CAAE,KAAM,CAAC,CACrC,CAAED,IAAI,CAAE,MAAM,CAAEC,OAAO,CAAE,KAAM,CAAC,CAChC,CAAED,IAAI,CAAE,OAAO,CAAEC,OAAO,CAAE,OAAQ,CAAC,CACnC,CAAED,IAAI,CAAE,OAAO,CAAEC,OAAO,CAAE,OAAQ,CAAC,CACnC,CAAED,IAAI,CAAE,OAAO,CAAEC,OAAO,CAAE,OAAQ,CAAC,CACnC,CAAED,IAAI,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,CAC7B,CAAED,IAAI,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,CAC7B,CAAED,IAAI,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,CAC7B,CAAED,IAAI,CAAE,QAAQ,CAAEC,OAAO,CAAE,QAAS,CAAC,CACrC,CAAED,IAAI,CAAE,SAAS,CAAEC,OAAO,CAAE,SAAU,CAAC,CACvC,CAAED,IAAI,CAAE,OAAO,CAAEC,OAAO,CAAE,KAAM,CAAC,CACjC,CAAED,IAAI,CAAE,MAAM,CAAEC,OAAO,CAAE,GAAI,CAAC,CAC9B,CAAED,IAAI,CAAE,OAAO,CAAEC,OAAO,CAAE,OAAQ,CAAC,CACnC,CAAED,IAAI,CAAE,MAAM,CAAEC,OAAO,CAAE,MAAO,CAAC,CACjC,CAAED,IAAI,CAAE,OAAO,CAAEC,OAAO,CAAE,OAAQ,CAAC,CACnC,CAAED,IAAI,CAAE,UAAU,CAAEC,OAAO,CAAE,UAAW,CAAC,CACzC,CAAED,IAAI,CAAE,QAAQ,CAAEC,OAAO,CAAE,QAAS,CAAC,CACrC,CAAED,IAAI,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,CAC7B,CAAED,IAAI,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,CAC7B,CAAED,IAAI,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,CAC7B,CAAED,IAAI,CAAE,QAAQ,CAAEC,OAAO,CAAE,QAAS,CAAC,CACrC,CAAED,IAAI,CAAE,QAAQ,CAAEC,OAAO,CAAE,QAAS,CAAC,CACtC","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { default as GrapejsCanvas } from './GrapesjsCanvas';
1
+ export { default as GrapesjsCanvas } from './GrapesjsCanvas';
2
2
  export * from './index.styles';
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as GrapejsCanvas}from"./GrapesjsCanvas";export*from"./index.styles";
1
+ export{default as GrapesjsCanvas}from"./GrapesjsCanvas";export*from"./index.styles";
2
2
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","GrapejsCanvas"],"sources":["../src/index.ts"],"sourcesContent":["export { default as GrapejsCanvas } from './GrapesjsCanvas';\nexport * from './index.styles';\n"],"mappings":"AAAA,OAASA,OAAO,GAAI,CAAAC,aAAa,KAAQ,kBAAkB,CAC3D,WAAc,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","GrapesjsCanvas"],"sources":["../src/index.ts"],"sourcesContent":["export { default as GrapesjsCanvas } from './GrapesjsCanvas';\nexport * from './index.styles'; "],"mappings":"AAAA,OAASA,OAAO,GAAI,CAAAC,cAAc,KAAQ,kBAAkB,CAC5D,WAAc,gBAAgB","ignoreList":[]}
package/index.styles.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createGlobalStyle}from"styled-components";export var StyledEditor=createGlobalStyle([".gs-sidebar-left,.gs-sidebar-top,.gs-sidebar-right,.gjs-pn-panels,.gjs-pn-views,.gjs-off-prv,.gjs-pn-devices{display:none !important;}.gjs-cv-canvas{height:100% !important;width:100% !important;top:0 !important;}"]);
1
+ import{createGlobalStyle}from"styled-components";export var StyledEditor=createGlobalStyle([".gs-sidebar-left,.gs-sidebar-top,.gs-sidebar-right,.gjs-pn-panels,.gjs-pn-views,.gjs-off-prv,.gjs-pn-devices{display:none !important;ss}.gjs-cv-canvas{height:100% !important;width:100% !important;top:0 !important;}"]);
2
2
  //# sourceMappingURL=index.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.styles.js","names":["createGlobalStyle","StyledEditor"],"sources":["../src/index.styles.ts"],"sourcesContent":["import { createGlobalStyle } from 'styled-components';\n\nexport const StyledEditor = createGlobalStyle`\n /* Hide GrapesJS panels */\n .gs-sidebar-left,\n .gs-sidebar-top,\n .gs-sidebar-right,\n .gjs-pn-panels,\n .gjs-pn-views,\n .gjs-off-prv,\n .gjs-pn-devices {\n display: none !important;\n }\n\n .gjs-cv-canvas {\n height: 100% !important;\n width: 100% !important;\n top: 0 !important;\n }\n`;\n"],"mappings":"AAAA,OAASA,iBAAiB,KAAQ,mBAAmB,CAErD,MAAO,IAAM,CAAAC,YAAY,CAAGD,iBAAiB,0NAiB5C","ignoreList":[]}
1
+ {"version":3,"file":"index.styles.js","names":["createGlobalStyle","StyledEditor"],"sources":["../src/index.styles.ts"],"sourcesContent":["import { createGlobalStyle } from 'styled-components';\n\nexport const StyledEditor = createGlobalStyle`\n /* Hide GrapesJS panels */\n .gs-sidebar-left,\n .gs-sidebar-top,\n .gs-sidebar-right,\n .gjs-pn-panels,\n .gjs-pn-views,\n .gjs-off-prv,\n .gjs-pn-devices {\n display: none !important;ss\n }\n\n .gjs-cv-canvas {\n height: 100% !important;\n width: 100% !important;\n top: 0 !important;\n }\n`;\n"],"mappings":"AAAA,OAASA,iBAAiB,KAAQ,mBAAmB,CAErD,MAAO,IAAM,CAAAC,YAAY,CAAGD,iBAAiB,4NAiB5C","ignoreList":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.0.0",
5
+ "version": "1.0.1-rc.2",
6
6
  "description": "",
7
7
  "workspaces": [
8
8
  "packages/*"
@@ -15,15 +15,12 @@
15
15
  "@radix-ui/react-scroll-area": "^1.2.5",
16
16
  "@radix-ui/react-separator": "^1.1.3",
17
17
  "@radix-ui/react-slot": "^1.2.0",
18
- "@radix-ui/react-tabs": "1.0.0",
19
18
  "@radix-ui/react-tooltip": "^1.2.0",
20
19
  "@tailwindcss/cli": "^4.1.3",
21
20
  "@types/chroma-js": "^3.1.1",
22
21
  "chroma-js": "^3.1.2",
23
22
  "clsx": "^2.1.1",
24
23
  "grapesjs": "0.22.6",
25
- "markdown": "^0.5.0",
26
- "markdown-to-jsx": "7.4.1",
27
24
  "grapesjs-tailwind": "1.0.7",
28
25
  "lucide-react": "^0.487.0",
29
26
  "plotly.js": "2.34.0",
@@ -50,4 +47,4 @@
50
47
  "types": "index.d.ts",
51
48
  "module": "index.js",
52
49
  "sideEffects": false
53
- }
50
+ }
@@ -1,4 +1,3 @@
1
- import _extends from"@babel/runtime/helpers/extends";/* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import ReactDOM from"react-dom";import{getRenderers}from"./helpers/render-components";export function createGrapesjsShadcnGenericPlugin(mode){return function grapesjsShadcnGenericPlugin(editor){editor.DomComponents.addType("shadcn-generic",{model:{defaults:{tagName:"div",droppable:false,componentName:"Card",componentProps:{},traits:[]}},view:{events:{"input [data-slot]":"handleSlotInput"},handleSlotInput:function handleSlotInput(e){var _ref;var target=e.target;var slot=target.dataset.slot;var text=target.innerText;this.model.set("componentProps",_extends({},this.model.get("componentProps"),slot?(_ref={},_ref[slot]=text,_ref):{}))},render:function render(){var _this=this;var compName=this.model.get("componentName");var compProps=this.model.get("componentProps");if(typeof compProps==="string"){try{compProps=JSON.parse(compProps)}catch(err){// eslint-disable-next-line no-console
2
- console.error("Invalid JSON in componentProps",err);compProps={}}}compProps.isEditable=mode==="editor";compProps.onChange=function(data){_this.model.set("componentProps",_extends({},_this.model.get("componentProps"),data))};var renderers=getRenderers();var renderer=renderers[compName];if(renderer){if(compName==="Tabs"){ReactDOM.render(renderer(compProps),this.el);var children=this.model.components();var tabsContent=this.el.querySelectorAll(".tabs-content");children.each(function(childModel,i){var childView=_this.createView(childModel);if(childView){childView.render();tabsContent[i].appendChild(childView.el)}})}else{ReactDOM.render(renderer(compProps),this.el)}}else{this.el.innerHTML="<div>Unsupported component: "+compName+"</div>"}return this},createView:function createView(model){var _this$em$get$getType;var ComponentView=(_this$em$get$getType=this.em.get("DomComponents").getType(model.get("type")))==null?void 0:_this$em$get$getType.view;if(!ComponentView){// eslint-disable-next-line no-console
3
- console.warn("No view found for component type:",model.get("type"));return null}var view=new ComponentView({model:model,config:this.config,componentTypes:this.componentTypes});return view},remove:function remove(){ReactDOM.unmountComponentAtNode(this.el);return this}}})}}
1
+ import _extends from"@babel/runtime/helpers/extends";/* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import ReactDOM from"react-dom";import{getRenderers}from"./helpers/render-components";export function createGrapesjsShadcnGenericPlugin(mode){return function grapesjsShadcnGenericPlugin(editor){editor.DomComponents.addType("shadcn-generic",{model:{defaults:{tagName:"div",droppable:false,componentName:"Card",componentProps:{},traits:[]}},view:{events:{"input [data-slot]":"handleSlotInput"},handleSlotInput:function handleSlotInput(e){var _ref;var target=e.target;var slot=target.dataset.slot;var text=target.textContent||"";this.model.set("componentProps",_extends({},this.model.get("componentProps"),slot?(_ref={},_ref[slot]=text,_ref):{}))},render:function render(){var _this=this;var compName=this.model.get("componentName");var compProps=this.model.get("componentProps");if(typeof compProps==="string"){try{compProps=JSON.parse(compProps)}catch(err){// eslint-disable-next-line no-console
2
+ console.error("Invalid JSON in componentProps",err);compProps={}}}compProps.isEditable=mode==="editor";compProps.onChange=function(data){_this.model.set("componentProps",_extends({},_this.model.get("componentProps"),data))};var renderers=getRenderers();var renderer=renderers[compName];if(renderer){ReactDOM.render(renderer(compProps),this.el)}else{this.el.innerHTML="<div>Unsupported component: "+compName+"</div>"}return this},remove:function remove(){ReactDOM.unmountComponentAtNode(this.el);return this}}})}}
4
3
  //# sourceMappingURL=grapejs-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grapejs-plugin.js","names":["ReactDOM","getRenderers","createGrapesjsShadcnGenericPlugin","mode","grapesjsShadcnGenericPlugin","editor","DomComponents","addType","model","defaults","tagName","droppable","componentName","componentProps","traits","view","events","handleSlotInput","e","_ref","target","slot","dataset","text","innerText","set","_extends","get","render","_this","compName","compProps","JSON","parse","err","console","error","isEditable","onChange","data","renderers","renderer","el","children","components","tabsContent","querySelectorAll","each","childModel","i","childView","createView","appendChild","innerHTML","_this$em$get$getType","ComponentView","em","getType","warn","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ReactDOM from 'react-dom';\nimport { Editor } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\n\nexport function createGrapesjsShadcnGenericPlugin(mode: 'editor' | 'preview') {\n return function grapesjsShadcnGenericPlugin(editor: Editor): void {\n editor.DomComponents.addType('shadcn-generic', {\n model: {\n defaults: {\n tagName: 'div',\n droppable: false,\n componentName: 'Card',\n componentProps: {},\n traits: [],\n },\n },\n view: {\n events: {\n 'input [data-slot]': 'handleSlotInput',\n } as any,\n handleSlotInput(e: Event) {\n const target = e.target as HTMLElement;\n const slot = target.dataset.slot;\n const text = target.innerText;\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...(slot ? { [slot]: text } : {}),\n });\n },\n render: function () {\n const compName: string = this.model.get('componentName');\n let compProps: any = this.model.get('componentProps');\n\n if (typeof compProps === 'string') {\n try {\n compProps = JSON.parse(compProps);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Invalid JSON in componentProps', err);\n compProps = {};\n }\n }\n\n compProps.isEditable = mode === 'editor';\n\n compProps.onChange = (data: Record<string, string>) => {\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...data,\n });\n };\n\n const renderers = getRenderers();\n const renderer = renderers[compName];\n\n if (renderer) {\n if (compName === 'Tabs') {\n ReactDOM.render(renderer(compProps), this.el);\n\n const children = this.model.components();\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n children.each((childModel, i) => {\n const childView = this.createView(childModel);\n\n if (childView) {\n childView.render();\n tabsContent[i].appendChild(childView.el);\n }\n });\n } else {\n ReactDOM.render(renderer(compProps), this.el);\n }\n } else {\n this.el.innerHTML = `<div>Unsupported component: ${compName}</div>`;\n }\n\n return this;\n },\n createView(model: any) {\n const ComponentView = this.em.get('DomComponents').getType(model.get('type'))?.view;\n\n if (!ComponentView) {\n // eslint-disable-next-line no-console\n console.warn('No view found for component type:', model.get('type'));\n\n return null;\n }\n\n const view = new ComponentView({\n model,\n config: this.config,\n componentTypes: this.componentTypes,\n });\n\n return view;\n },\n remove: function () {\n ReactDOM.unmountComponentAtNode(this.el);\n\n return this;\n },\n },\n });\n };\n}"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"grapejs-plugin.js","names":["ReactDOM","getRenderers","createGrapesjsShadcnGenericPlugin","mode","grapesjsShadcnGenericPlugin","editor","DomComponents","addType","model","defaults","tagName","droppable","componentName","componentProps","traits","view","events","handleSlotInput","e","_ref","target","slot","dataset","text","textContent","set","_extends","get","render","_this","compName","compProps","JSON","parse","err","console","error","isEditable","onChange","data","renderers","renderer","el","innerHTML","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ReactDOM from 'react-dom';\nimport { Editor } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\n\nexport function createGrapesjsShadcnGenericPlugin(mode: 'editor' | 'preview') {\n return function grapesjsShadcnGenericPlugin(editor: Editor): void {\n editor.DomComponents.addType('shadcn-generic', {\n model: {\n defaults: {\n tagName: 'div',\n droppable: false,\n componentName: 'Card',\n componentProps: {},\n traits: [],\n },\n },\n view: {\n events: {\n 'input [data-slot]': 'handleSlotInput',\n } as any,\n handleSlotInput(e: Event) {\n const target = e.target as HTMLElement;\n const slot = target.dataset.slot;\n const text = target.textContent || '';\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...(slot ? { [slot]: text } : {}),\n });\n },\n render: function () {\n const compName: string = this.model.get('componentName');\n let compProps: any = this.model.get('componentProps');\n\n if (typeof compProps === 'string') {\n try {\n compProps = JSON.parse(compProps);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Invalid JSON in componentProps', err);\n compProps = {};\n }\n }\n\n compProps.isEditable = mode === 'editor';\n\n compProps.onChange = (data: Record<string, string>) => {\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...data,\n });\n };\n\n const renderers = getRenderers();\n const renderer = renderers[compName];\n\n if (renderer) {\n ReactDOM.render(renderer(compProps), this.el);\n } else {\n this.el.innerHTML = `<div>Unsupported component: ${compName}</div>`;\n }\n\n return this;\n },\n remove: function () {\n ReactDOM.unmountComponentAtNode(this.el);\n\n return this;\n },\n },\n });\n };\n}\n"],"mappings":"qDAAA,+BACA,uDACA,MAAO,CAAAA,QAAQ,KAAM,WAAW,CAEhC,OAASC,YAAY,KAAQ,6BAA6B,CAE1D,MAAO,SAAS,CAAAC,iCAAiCA,CAACC,IAA0B,CAAE,CAC5E,MAAO,SAAS,CAAAC,2BAA2BA,CAACC,MAAc,CAAQ,CAChEA,MAAM,CAACC,aAAa,CAACC,OAAO,CAAC,gBAAgB,CAAE,CAC7CC,KAAK,CAAE,CACLC,QAAQ,CAAE,CACRC,OAAO,CAAE,KAAK,CACdC,SAAS,CAAE,KAAK,CAChBC,aAAa,CAAE,MAAM,CACrBC,cAAc,CAAE,CAAC,CAAC,CAClBC,MAAM,CAAE,EACV,CACF,CAAC,CACDC,IAAI,CAAE,CACJC,MAAM,CAAE,CACN,mBAAmB,CAAE,iBACvB,CAAQ,CACRC,eAAe,SAAf,CAAAA,eAAeA,CAACC,CAAQ,CAAE,KAAAC,IAAA,CACxB,GAAM,CAAAC,MAAM,CAAGF,CAAC,CAACE,MAAqB,CACtC,GAAM,CAAAC,IAAI,CAAGD,MAAM,CAACE,OAAO,CAACD,IAAI,CAChC,GAAM,CAAAE,IAAI,CAAGH,MAAM,CAACI,WAAW,EAAI,EAAE,CACrC,IAAI,CAAChB,KAAK,CAACiB,GAAG,CAAC,gBAAgB,CAAAC,QAAA,IAC1B,IAAI,CAAClB,KAAK,CAACmB,GAAG,CAAC,gBAAgB,CAAC,CAC/BN,IAAI,EAAAF,IAAA,IAAAA,IAAA,CAAME,IAAI,EAAGE,IAAI,CAAAJ,IAAA,EAAK,CAAC,CAAC,CACjC,CACH,CAAC,CACDS,MAAM,CAAE,QAAR,CAAAA,MAAMA,CAAA,CAAc,KAAAC,KAAA,MAClB,GAAM,CAAAC,QAAgB,CAAG,IAAI,CAACtB,KAAK,CAACmB,GAAG,CAAC,eAAe,CAAC,CACxD,GAAI,CAAAI,SAAc,CAAG,IAAI,CAACvB,KAAK,CAACmB,GAAG,CAAC,gBAAgB,CAAC,CAErD,GAAI,MAAO,CAAAI,SAAS,GAAK,QAAQ,CAAE,CACjC,GAAI,CACFA,SAAS,CAAGC,IAAI,CAACC,KAAK,CAACF,SAAS,CAClC,CAAE,MAAOG,GAAG,CAAE,CACZ;AACAC,OAAO,CAACC,KAAK,CAAC,gCAAgC,CAAEF,GAAG,CAAC,CACpDH,SAAS,CAAG,CAAC,CACf,CACF,CAEAA,SAAS,CAACM,UAAU,CAAGlC,IAAI,GAAK,QAAQ,CAExC4B,SAAS,CAACO,QAAQ,CAAG,SAACC,IAA4B,CAAK,CACrDV,KAAI,CAACrB,KAAK,CAACiB,GAAG,CAAC,gBAAgB,CAAAC,QAAA,IAC1BG,KAAI,CAACrB,KAAK,CAACmB,GAAG,CAAC,gBAAgB,CAAC,CAChCY,IAAI,CACR,CACH,CAAC,CAED,GAAM,CAAAC,SAAS,CAAGvC,YAAY,CAAC,CAAC,CAChC,GAAM,CAAAwC,QAAQ,CAAGD,SAAS,CAACV,QAAQ,CAAC,CAEpC,GAAIW,QAAQ,CAAE,CACZzC,QAAQ,CAAC4B,MAAM,CAACa,QAAQ,CAACV,SAAS,CAAC,CAAE,IAAI,CAACW,EAAE,CAC9C,CAAC,IAAM,CACL,IAAI,CAACA,EAAE,CAACC,SAAS,gCAAkCb,QAAQ,SAC7D,CAEA,MAAO,KACT,CAAC,CACDc,MAAM,CAAE,QAAR,CAAAA,MAAMA,CAAA,CAAc,CAClB5C,QAAQ,CAAC6C,sBAAsB,CAAC,IAAI,CAACH,EAAE,CAAC,CAExC,MAAO,KACT,CACF,CACF,CAAC,CACH,CACF","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  import { JSX } from 'react';
2
- export declare function renderActionCard(props: any): JSX.Element;
3
2
  export declare function renderCard(props: any): JSX.Element;
4
3
  export declare function renderChart(props: any): JSX.Element;
5
4
  export declare function renderTable(props: any): JSX.Element;
@@ -10,6 +9,4 @@ export declare function renderLabel(props: any): JSX.Element;
10
9
  export declare function renderSeparator(props: any): JSX.Element;
11
10
  export declare function renderTextarea(props: any): JSX.Element;
12
11
  export declare function renderTooltip(props: any): JSX.Element;
13
- export declare function renderTab(props: any): JSX.Element;
14
- export declare function renderMarkdown(props: any): JSX.Element;
15
12
  export declare function getRenderers(): Record<string, (props: any) => JSX.Element>;
@@ -1,4 +1,22 @@
1
- import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["headerContent","icon","bodyContent"],_excluded2=["headerContent","headerDescription","bodyContent","footerContent","contentMetadata","className","isEditable"],_excluded3=["config","chartType","chartData","className","isEditable","title","subTitle"],_excluded4=["data","headerMapper","className","isEditable","title","subTitle"],_excluded5=["label","defaultChecked","className","isEditable"],_excluded6=["triggerContent","cardContent","className","isEditable"],_excluded7=["label","placeholder","value","className","isEditable"],_excluded8=["text","className","isEditable"],_excluded9=["className"],_excluded10=["label","placeholder","value","className","isEditable"],_excluded11=["triggerContent","tooltipContent","className","isEditable"];function _createForOfIteratorHelperLoose(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}/* eslint-disable react/no-array-index-key *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import chroma from"chroma-js";import{theme}from"@peak-ai/ais-components/theme";import Markdown from"markdown-to-jsx";import{Card,CardHeader,CardTitle,CardDescription,CardContent,CardFooter}from"../../shadcn/components/ui/card";import{ChartContainer,ChartTooltip,ChartTooltipContent}from"../../shadcn/components/ui/chart";import{Checkbox}from"../../shadcn/components/ui/checkbox";import{HoverCard,HoverCardTrigger,HoverCardContent}from"../../shadcn/components/ui/hover-card";import{Input}from"../../shadcn/components/ui/input";import{Label}from"../../shadcn/components/ui/label";import{Separator}from"../../shadcn/components/ui/separator";import{Textarea}from"../../shadcn/components/ui/textarea";import{Tooltip,TooltipTrigger,TooltipContent}from"../../shadcn/components/ui/tooltip";import{PieChart,Pie,BarChart,Bar,LineChart,Line,XAxis,YAxis,ResponsiveContainer,CartesianGrid,Legend}from"recharts";import{Table,TableHeader,TableRow,TableHead,TableBody,TableCell}from"../../shadcn/components/ui/table";import{cn}from"../../shadcn/utils";import{ScrollArea,ScrollBar}from"../../shadcn/components/ui/scroll-area";import{Tabs,TabsList,TabsTrigger,TabsContent}from"../../shadcn/components/ui/tabs";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var baseColors=[[theme.colors.Blue_100,theme.colors.Blue_30],[theme.colors.Purpley_100,theme.colors.Purpley_30],[theme.colors.Light_Bluish_Green,"#06601b"],[theme.colors.Wild_Strawberry,"#4d001c"]];function getNColors(n){var colors=[];// const pallette = pallettes[Math.floor(Math.random() * pallettes.length)];
2
- for(var _iterator=_createForOfIteratorHelperLoose(baseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;// eslint-disable-next-line import/no-named-as-default-member
3
- colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}export function renderActionCard(props){var _props$headerContent=props.headerContent,headerContent=_props$headerContent===void 0?"Default Action Card Title":_props$headerContent,icon=props.icon,_props$bodyContent=props.bodyContent,bodyContent=_props$bodyContent===void 0?"Default body content. Click to edit.":_props$bodyContent,rest=_objectWithoutPropertiesLoose(props,_excluded);var defaultClasses="bg-white text-black p-4 rounded-lg shadow border w-full max-w-full min-h-[180px]";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses,isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start",children:[/*#__PURE__*/_jsx("span",{className:"text-5xl mr-2","aria-hidden":"true",children:icon}),/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed mt-1",children:bodyContent})]})]})})})}))}export function renderCard(props){var _props$headerContent2=props.headerContent,headerContent=_props$headerContent2===void 0?"Default Card Title":_props$headerContent2,_props$headerDescript=props.headerDescription,headerDescription=_props$headerDescript===void 0?"Default header description":_props$headerDescript,_props$bodyContent2=props.bodyContent,bodyContent=_props$bodyContent2===void 0?"Default body content. Click to edit.":_props$bodyContent2,_props$footerContent=props.footerContent,footerContent=_props$footerContent===void 0?"":_props$footerContent,_props$contentMetadat=props.contentMetadata,contentMetadata=_props$contentMetadat===void 0?"":_props$contentMetadat,className=props.className,_props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,rest=_objectWithoutPropertiesLoose(props,_excluded2);var defaultClasses="bg-white text-black p-4 rounded-lg shadow border";var mergedCardClassName=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName,children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:headerContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:headerDescription})]}),/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,children:[/*#__PURE__*/_jsx("div",{className:"text-4xl font-semibold truncate",children:bodyContent}),contentMetadata&&/*#__PURE__*/_jsx("div",{className:"text-xs",style:{color:"#2A44D4"},children:contentMetadata})]}),/*#__PURE__*/_jsx(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:"text-sm",children:footerContent})]}))}function renderChartComponent(chartType,data,config){switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),config.dataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}));case"line":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(LineChart,{data:data,children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),config.dataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]});default:return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$config=props.config,config=_props$config===void 0?{}:_props$config,_props$chartType=props.chartType,chartType=_props$chartType===void 0?"pie":_props$chartType,_props$chartData=props.chartData,chartData=_props$chartData===void 0?[]:_props$chartData,className=props.className,_props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,_props$title=props.title,title=_props$title===void 0?"Title":_props$title,_props$subTitle=props.subTitle,subTitle=_props$subTitle===void 0?"Subtitle":_props$subTitle,rest=_objectWithoutPropertiesLoose(props,_excluded3);var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var colors=getNColors(chartData.length);for(var i=0;i<chartData.length;i++){var data=chartData[i];if(!data.fill){data.fill=colors[i]}}}else if(!config.color){config.color=baseColors[Math.floor(Math.random()*baseColors.length)]}var width=undefined;if(chartType==="bar"){var totalDataPoints=chartData.length*config.dataKeys.length;config.chartUi={};if(totalDataPoints>15){width=totalDataPoints*15+config.dataKeys.length*3*chartData.length+chartData.length*10;config.chartUi={barSize:15,barGap:3,barCategoryGap:0.5,width:width}}}return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2",children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-3xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"px-6",children:chartType==="bar"&&config.chartUi?/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsxs(ScrollArea,{children:[/*#__PURE__*/_jsx("div",{className:width?"min-w-["+width+"px] w-full":"w-full",children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))}),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]})}):/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})})]})}export function renderTable(props){var _props$data=props.data,data=_props$data===void 0?[]:_props$data,_props$headerMapper=props.headerMapper,headerMapper=_props$headerMapper===void 0?{}:_props$headerMapper,className=props.className,_props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,_props$title2=props.title,title=_props$title2===void 0?"Title":_props$title2,_props$subTitle2=props.subTitle,subTitle=_props$subTitle2===void 0?"Subtitle":_props$subTitle2,rest=_objectWithoutPropertiesLoose(props,_excluded4);var parsedData=data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData});var headers=Object.keys(parsedData[0]||{}).map(function(header){return headerMapper[header]||header});var rows=parsedData.map(function(datum){return Object.values(datum)});var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;var tableData=/*#__PURE__*/_jsxs(ScrollArea,{"data-slot":"table-container",className:mergedClasses,children:[/*#__PURE__*/_jsxs(Table,_extends({},rest,{className:"caption-bottom text-sm "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0",children:/*#__PURE__*/_jsx(TableRow,{children:headers.map(function(head,idx){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"header-"+idx,contentEditable:false,children:head},idx)})})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsx(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:row.map(function(cell,cIdx){return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:cell},cIdx)})},rIdx)})})]})),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]});return/*#__PURE__*/_jsxs(Card,{className:"shadow border",children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-3xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:isEditable,children:tableData})]})}export function renderCheckbox(props){var _props$label=props.label,label=_props$label===void 0?"":_props$label,_props$defaultChecked=props.defaultChecked,defaultChecked=_props$defaultChecked===void 0?false:_props$defaultChecked,className=props.className,_props$isEditable4=props.isEditable,isEditable=_props$isEditable4===void 0?false:_props$isEditable4,rest=_objectWithoutPropertiesLoose(props,_excluded5);var defaultClasses="flex items-center";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs("div",_extends({className:merged},rest,{children:[/*#__PURE__*/_jsx(Checkbox,{defaultChecked:defaultChecked}),label&&/*#__PURE__*/_jsx(Label,{"data-slot":"label",contentEditable:isEditable,className:"ml-2",children:label})]}))}export function renderHoverCard(props){var _props$triggerContent=props.triggerContent,triggerContent=_props$triggerContent===void 0?"Hover over me":_props$triggerContent,_props$cardContent=props.cardContent,cardContent=_props$cardContent===void 0?"Additional information":_props$cardContent,className=props.className,_props$isEditable5=props.isEditable,isEditable=_props$isEditable5===void 0?false:_props$isEditable5,rest=_objectWithoutPropertiesLoose(props,_excluded6);var defaultClasses="w-[320px] max-w-[320px] shadow rounded-lg";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs(HoverCard,_extends({className:merged},rest,{children:[/*#__PURE__*/_jsx(HoverCardTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{"data-slot":"triggerContent",contentEditable:isEditable,children:triggerContent})}),/*#__PURE__*/_jsx(HoverCardContent,{children:/*#__PURE__*/_jsx("div",{"data-slot":"cardContent",contentEditable:isEditable,children:cardContent})})]}))}export function renderInput(props){var _props$label2=props.label,label=_props$label2===void 0?"":_props$label2,_props$placeholder=props.placeholder,placeholder=_props$placeholder===void 0?"":_props$placeholder,_props$value=props.value,value=_props$value===void 0?"":_props$value,className=props.className,_props$isEditable6=props.isEditable,isEditable=_props$isEditable6===void 0?false:_props$isEditable6,rest=_objectWithoutPropertiesLoose(props,_excluded7);var defaultClasses="w-[320px] p-2 border border-gray-300 rounded-md";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs("div",_extends({className:"flex flex-col "+merged},rest,{children:[label&&/*#__PURE__*/_jsx(Label,{"data-slot":"label",contentEditable:isEditable,className:"mb-1",children:label}),/*#__PURE__*/_jsx(Input,{placeholder:placeholder,value:value})]}))}export function renderLabel(props){var _props$text=props.text,text=_props$text===void 0?"Label":_props$text,className=props.className,_props$isEditable7=props.isEditable,isEditable=_props$isEditable7===void 0?false:_props$isEditable7,rest=_objectWithoutPropertiesLoose(props,_excluded8);var defaultClasses="text-base font-semibold mb-2";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsx(Label,_extends({"data-slot":"text",contentEditable:isEditable,className:merged},rest,{children:text}))}export function renderSeparator(props){var className=props.className,rest=_objectWithoutPropertiesLoose(props,_excluded9);var defaultClasses="my-4 border-t-2";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsx(Separator,_extends({className:merged},rest))}export function renderTextarea(props){var _props$label3=props.label,label=_props$label3===void 0?"":_props$label3,_props$placeholder2=props.placeholder,placeholder=_props$placeholder2===void 0?"":_props$placeholder2,_props$value2=props.value,value=_props$value2===void 0?"":_props$value2,className=props.className,_props$isEditable8=props.isEditable,isEditable=_props$isEditable8===void 0?false:_props$isEditable8,rest=_objectWithoutPropertiesLoose(props,_excluded10);var defaultClasses="w-[320px] p-2 border border-gray-300 rounded-md";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs("div",_extends({className:"flex flex-col "+merged},rest,{children:[label&&/*#__PURE__*/_jsx(Label,{"data-slot":"label",contentEditable:isEditable,className:"mb-1",children:label}),/*#__PURE__*/_jsx(Textarea,{placeholder:placeholder,value:value})]}))}export function renderTooltip(props){var _props$triggerContent2=props.triggerContent,triggerContent=_props$triggerContent2===void 0?"Hover here":_props$triggerContent2,_props$tooltipContent=props.tooltipContent,tooltipContent=_props$tooltipContent===void 0?"Tooltip information":_props$tooltipContent,className=props.className,_props$isEditable9=props.isEditable,isEditable=_props$isEditable9===void 0?false:_props$isEditable9,rest=_objectWithoutPropertiesLoose(props,_excluded11);var merged=className||"";return/*#__PURE__*/_jsxs(Tooltip,_extends({className:merged},rest,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{"data-slot":"triggerContent",contentEditable:isEditable,children:triggerContent})}),/*#__PURE__*/_jsx(TooltipContent,{"data-slot":"tooltipContent",contentEditable:isEditable,children:tooltipContent})]}))}export function renderTab(props){var tabsWidth=200;if(props.tabs.length>4){tabsWidth=150}return/*#__PURE__*/_jsxs(Tabs,{defaultValue:props.defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-gray-300",children:props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"text-md w-["+tabsWidth+"px]",children:tab},tab)})})}),props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _props$summaryText=props.summaryText,summaryText=_props$summaryText===void 0?"":_props$summaryText;return/*#__PURE__*/_jsx("div",{className:"px-[1em]",children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:{ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3.5rem]"}},h3:{props:{className:"text-2xl font-bold leading-[3rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}}},children:summaryText})})}export function getRenderers(){return{ActionCard:renderActionCard,Card:renderCard,Chart:renderChart,Checkbox:renderCheckbox,HoverCard:renderHoverCard,Input:renderInput,Label:renderLabel,Markdown:renderMarkdown,Separator:renderSeparator,Table:renderTable,Tabs:renderTab,Textarea:renderTextarea,Tooltip:renderTooltip}}
1
+ import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["headerContent","headerDescription","bodyContent","footerContent","contentMetadata","className","isEditable"],_excluded2=["config","chartType","chartData","className","isEditable","title","subTitle"],_excluded3=["data","headerMapper","className","isEditable","title","subTitle"],_excluded4=["label","defaultChecked","className","isEditable"],_excluded5=["triggerContent","cardContent","className","isEditable"],_excluded6=["label","placeholder","value","className","isEditable"],_excluded7=["text","className","isEditable"],_excluded8=["className"],_excluded9=["label","placeholder","value","className","isEditable"],_excluded10=["triggerContent","tooltipContent","className","isEditable"];function _createForOfIteratorHelperLoose(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}/* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import chroma from"chroma-js";import{theme}from"@peak-ai/ais-components/theme";import{Card,CardHeader,CardTitle,CardDescription,CardContent,CardFooter}from"../../shadcn/components/ui/card";import{ChartContainer,ChartTooltip,ChartTooltipContent}from"../../shadcn/components/ui/chart";import{Checkbox}from"../../shadcn/components/ui/checkbox";import{HoverCard,HoverCardTrigger,HoverCardContent}from"../../shadcn/components/ui/hover-card";import{Input}from"../../shadcn/components/ui/input";import{Label}from"../../shadcn/components/ui/label";import{Separator}from"../../shadcn/components/ui/separator";import{Textarea}from"../../shadcn/components/ui/textarea";import{Tooltip,TooltipTrigger,TooltipContent}from"../../shadcn/components/ui/tooltip";import{PieChart,Pie,BarChart,Bar,LineChart,Line,XAxis,YAxis,ResponsiveContainer,CartesianGrid,Legend}from"recharts";import{Table,TableHeader,TableRow,TableHead,TableBody,TableCell}from"../../shadcn/components/ui/table";import{cn}from"../../shadcn/utils";import{ScrollArea,ScrollBar}from"../../shadcn/components/ui/scroll-area";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var baseColors=[[theme.colors.Blue_100,theme.colors.Blue_30],[theme.colors.Purpley_100,theme.colors.Purpley_30],[theme.colors.Light_Bluish_Green,"#06601b"],[theme.colors.Wild_Strawberry,"#4d001c"]];// const pallettes = [
2
+ // [
3
+ // [theme.colors.Blue_100, theme.colors.Blue_30],
4
+ // [theme.colors.Purpley_100, theme.colors.Purpley_30],
5
+ // ],
6
+ // [
7
+ // [theme.colors.Blue_100, theme.colors.Blue_30],
8
+ // [theme.colors.Light_Bluish_Green, '#06601b'],
9
+ // ],
10
+ // [
11
+ // [theme.colors.Wild_Strawberry, '#4d001c'],
12
+ // [theme.colors.Blue_100, theme.colors.Blue_30],
13
+ // [theme.colors.Navy_Blue, '#2a6bef'],
14
+ // ],
15
+ // [
16
+ // [theme.colors.Purpley_100, theme.colors.Purpley_30],
17
+ // [theme.colors.Wild_Strawberry, '#4d001c'],
18
+ // ],
19
+ // ];
20
+ function getNColors(n){var colors=[];// const pallette = pallettes[Math.floor(Math.random() * pallettes.length)];
21
+ for(var _iterator=_createForOfIteratorHelperLoose(baseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}export function renderCard(props){var _props$headerContent=props.headerContent,headerContent=_props$headerContent===void 0?"Default Card Title":_props$headerContent,_props$headerDescript=props.headerDescription,headerDescription=_props$headerDescript===void 0?"Default header description":_props$headerDescript,_props$bodyContent=props.bodyContent,bodyContent=_props$bodyContent===void 0?"Default body content. Click to edit.":_props$bodyContent,_props$footerContent=props.footerContent,footerContent=_props$footerContent===void 0?"":_props$footerContent,_props$contentMetadat=props.contentMetadata,contentMetadata=_props$contentMetadat===void 0?"":_props$contentMetadat,className=props.className,_props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,rest=_objectWithoutPropertiesLoose(props,_excluded);var defaultClasses="bg-white text-black p-4 rounded-lg shadow border w-80 max-w-[300px]";var mergedCardClassName=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName,children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:headerContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:headerDescription})]}),/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,children:[/*#__PURE__*/_jsx("div",{className:"text-4xl font-semibold truncate",children:bodyContent}),contentMetadata&&/*#__PURE__*/_jsx("div",{className:"text-xs",style:{color:"#2A44D4"},children:contentMetadata})]}),/*#__PURE__*/_jsx(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:"text-sm",children:footerContent})]}))}function renderChartComponent(chartType,data,config){switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),config.dataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}));case"line":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(LineChart,{data:data,children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),config.dataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]});default:return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$config=props.config,config=_props$config===void 0?{}:_props$config,_props$chartType=props.chartType,chartType=_props$chartType===void 0?"pie":_props$chartType,_props$chartData=props.chartData,chartData=_props$chartData===void 0?[]:_props$chartData,className=props.className,_props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,_props$title=props.title,title=_props$title===void 0?"Title":_props$title,_props$subTitle=props.subTitle,subTitle=_props$subTitle===void 0?"Subtitle":_props$subTitle,rest=_objectWithoutPropertiesLoose(props,_excluded2);var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var colors=getNColors(chartData.length);for(var i=0;i<chartData.length;i++){var data=chartData[i];if(!data.fill){data.fill=colors[i]}}}else if(!config.color){config.color=baseColors[Math.floor(Math.random()*baseColors.length)]}var width=undefined;if(chartType==="bar"){var totalDataPoints=chartData.length*config.dataKeys.length;config.chartUi={};if(totalDataPoints>15){width=totalDataPoints*15+config.dataKeys.length*3*chartData.length+chartData.length*10;config.chartUi={barSize:15,barGap:3,barCategoryGap:0.5,width:width}}}return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2",children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-3xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"px-6",children:chartType==="bar"&&config.chartUi?/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsxs(ScrollArea,{children:[/*#__PURE__*/_jsx("div",{className:width?"min-w-["+width+"px] w-full":"w-full",children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))}),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]})}):/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})})]})}export function renderTable(props){var _props$data=props.data,data=_props$data===void 0?[]:_props$data,_props$headerMapper=props.headerMapper,headerMapper=_props$headerMapper===void 0?{}:_props$headerMapper,className=props.className,_props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,_props$title2=props.title,title=_props$title2===void 0?"Title":_props$title2,_props$subTitle2=props.subTitle,subTitle=_props$subTitle2===void 0?"Subtitle":_props$subTitle2,rest=_objectWithoutPropertiesLoose(props,_excluded3);var parsedData=data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData});var headers=Object.keys(parsedData[0]||{}).map(function(header){return headerMapper[header]||header});var rows=parsedData.map(function(datum){return Object.values(datum)});var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;var tableData=/*#__PURE__*/_jsxs(ScrollArea,{"data-slot":"table-container",className:mergedClasses,children:[/*#__PURE__*/_jsxs(Table,_extends({},rest,{className:"caption-bottom text-sm "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0",children:/*#__PURE__*/_jsx(TableRow,{children:headers.map(function(head,idx){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"header-"+idx,contentEditable:false,children:head},idx)})})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsx(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:row.map(function(cell,cIdx){return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:cell},cIdx)})},rIdx)})})]})),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]});return/*#__PURE__*/_jsxs(Card,{className:"shadow border",children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-3xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:isEditable,children:tableData})]})}export function renderCheckbox(props){var _props$label=props.label,label=_props$label===void 0?"":_props$label,_props$defaultChecked=props.defaultChecked,defaultChecked=_props$defaultChecked===void 0?false:_props$defaultChecked,className=props.className,_props$isEditable4=props.isEditable,isEditable=_props$isEditable4===void 0?false:_props$isEditable4,rest=_objectWithoutPropertiesLoose(props,_excluded4);var defaultClasses="flex items-center";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs("div",_extends({className:merged},rest,{children:[/*#__PURE__*/_jsx(Checkbox,{defaultChecked:defaultChecked}),label&&/*#__PURE__*/_jsx(Label,{"data-slot":"label",contentEditable:isEditable,className:"ml-2",children:label})]}))}export function renderHoverCard(props){var _props$triggerContent=props.triggerContent,triggerContent=_props$triggerContent===void 0?"Hover over me":_props$triggerContent,_props$cardContent=props.cardContent,cardContent=_props$cardContent===void 0?"Additional information":_props$cardContent,className=props.className,_props$isEditable5=props.isEditable,isEditable=_props$isEditable5===void 0?false:_props$isEditable5,rest=_objectWithoutPropertiesLoose(props,_excluded5);var defaultClasses="w-[320px] max-w-[320px] shadow rounded-lg";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs(HoverCard,_extends({className:merged},rest,{children:[/*#__PURE__*/_jsx(HoverCardTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{"data-slot":"triggerContent",contentEditable:isEditable,children:triggerContent})}),/*#__PURE__*/_jsx(HoverCardContent,{children:/*#__PURE__*/_jsx("div",{"data-slot":"cardContent",contentEditable:isEditable,children:cardContent})})]}))}export function renderInput(props){var _props$label2=props.label,label=_props$label2===void 0?"":_props$label2,_props$placeholder=props.placeholder,placeholder=_props$placeholder===void 0?"":_props$placeholder,_props$value=props.value,value=_props$value===void 0?"":_props$value,className=props.className,_props$isEditable6=props.isEditable,isEditable=_props$isEditable6===void 0?false:_props$isEditable6,rest=_objectWithoutPropertiesLoose(props,_excluded6);var defaultClasses="w-[320px] p-2 border border-gray-300 rounded-md";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs("div",_extends({className:"flex flex-col "+merged},rest,{children:[label&&/*#__PURE__*/_jsx(Label,{"data-slot":"label",contentEditable:isEditable,className:"mb-1",children:label}),/*#__PURE__*/_jsx(Input,{placeholder:placeholder,value:value})]}))}export function renderLabel(props){var _props$text=props.text,text=_props$text===void 0?"Label":_props$text,className=props.className,_props$isEditable7=props.isEditable,isEditable=_props$isEditable7===void 0?false:_props$isEditable7,rest=_objectWithoutPropertiesLoose(props,_excluded7);var defaultClasses="text-base font-semibold mb-2";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsx(Label,_extends({"data-slot":"text",contentEditable:isEditable,className:merged},rest,{children:text}))}export function renderSeparator(props){var className=props.className,rest=_objectWithoutPropertiesLoose(props,_excluded8);var defaultClasses="my-4 border-t-2";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsx(Separator,_extends({className:merged},rest))}export function renderTextarea(props){var _props$label3=props.label,label=_props$label3===void 0?"":_props$label3,_props$placeholder2=props.placeholder,placeholder=_props$placeholder2===void 0?"":_props$placeholder2,_props$value2=props.value,value=_props$value2===void 0?"":_props$value2,className=props.className,_props$isEditable8=props.isEditable,isEditable=_props$isEditable8===void 0?false:_props$isEditable8,rest=_objectWithoutPropertiesLoose(props,_excluded9);var defaultClasses="w-[320px] p-2 border border-gray-300 rounded-md";var merged=className?cn(defaultClasses,className):defaultClasses;return/*#__PURE__*/_jsxs("div",_extends({className:"flex flex-col "+merged},rest,{children:[label&&/*#__PURE__*/_jsx(Label,{"data-slot":"label",contentEditable:isEditable,className:"mb-1",children:label}),/*#__PURE__*/_jsx(Textarea,{placeholder:placeholder,value:value})]}))}export function renderTooltip(props){var _props$triggerContent2=props.triggerContent,triggerContent=_props$triggerContent2===void 0?"Hover here":_props$triggerContent2,_props$tooltipContent=props.tooltipContent,tooltipContent=_props$tooltipContent===void 0?"Tooltip information":_props$tooltipContent,className=props.className,_props$isEditable9=props.isEditable,isEditable=_props$isEditable9===void 0?false:_props$isEditable9,rest=_objectWithoutPropertiesLoose(props,_excluded10);var merged=className||"";return/*#__PURE__*/_jsxs(Tooltip,_extends({className:merged},rest,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{"data-slot":"triggerContent",contentEditable:isEditable,children:triggerContent})}),/*#__PURE__*/_jsx(TooltipContent,{"data-slot":"tooltipContent",contentEditable:isEditable,children:tooltipContent})]}))}export function getRenderers(){return{Card:renderCard,Chart:renderChart,Table:renderTable,Checkbox:renderCheckbox,HoverCard:renderHoverCard,Input:renderInput,Label:renderLabel,Separator:renderSeparator,Textarea:renderTextarea,Tooltip:renderTooltip}}
4
22
  //# sourceMappingURL=render-components.js.map