@emabuild/core 0.0.3 → 0.0.5

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 (57) hide show
  1. package/README.md +425 -0
  2. package/dist/canvas/column-renderer.d.ts +4 -4
  3. package/dist/canvas/column-renderer.d.ts.map +1 -1
  4. package/dist/canvas/content-renderer.d.ts +4 -4
  5. package/dist/canvas/content-renderer.d.ts.map +1 -1
  6. package/dist/canvas/editor-canvas.d.ts +4 -4
  7. package/dist/canvas/editor-canvas.d.ts.map +1 -1
  8. package/dist/canvas/row-renderer.d.ts +4 -4
  9. package/dist/canvas/row-renderer.d.ts.map +1 -1
  10. package/dist/dnd/drag-manager.d.ts.map +1 -1
  11. package/dist/form-tool-BucdYK9Z.js +69 -0
  12. package/dist/form-tool-BucdYK9Z.js.map +1 -0
  13. package/dist/html-tool-CDX3fL-9.js +49 -0
  14. package/dist/html-tool-CDX3fL-9.js.map +1 -0
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +4 -4
  18. package/dist/mail-editor-DNPaJKo3.js +1568 -0
  19. package/dist/mail-editor-DNPaJKo3.js.map +1 -0
  20. package/dist/mail-editor.d.ts +10 -3
  21. package/dist/mail-editor.d.ts.map +1 -1
  22. package/dist/mail-editor.js +2 -2
  23. package/dist/menu-tool-BrT6-Pvh.js +61 -0
  24. package/dist/menu-tool-BrT6-Pvh.js.map +1 -0
  25. package/dist/properties/property-panel.d.ts +4 -4
  26. package/dist/properties/property-panel.d.ts.map +1 -1
  27. package/dist/sidebar/body-settings.d.ts +4 -4
  28. package/dist/sidebar/body-settings.d.ts.map +1 -1
  29. package/dist/sidebar/editor-sidebar.d.ts +4 -4
  30. package/dist/sidebar/editor-sidebar.d.ts.map +1 -1
  31. package/dist/social-tool-B4BUlJ2I.js +62 -0
  32. package/dist/social-tool-B4BUlJ2I.js.map +1 -0
  33. package/dist/state/design-factory.d.ts +3 -3
  34. package/dist/state/design-factory.d.ts.map +1 -1
  35. package/dist/state/design-lookup.d.ts +7 -7
  36. package/dist/state/design-lookup.d.ts.map +1 -1
  37. package/dist/state/editor-store.d.ts +33 -4
  38. package/dist/state/editor-store.d.ts.map +1 -1
  39. package/dist/state/history-manager.d.ts +4 -4
  40. package/dist/state/history-manager.d.ts.map +1 -1
  41. package/dist/table-tool-Bo_g3Un_.js +63 -0
  42. package/dist/table-tool-Bo_g3Un_.js.map +1 -0
  43. package/dist/timer-tool-3mF08efm.js +54 -0
  44. package/dist/timer-tool-3mF08efm.js.map +1 -0
  45. package/dist/tools/built-in/tool-manifest.d.ts +9 -0
  46. package/dist/tools/built-in/tool-manifest.d.ts.map +1 -0
  47. package/dist/tools/tool-registry.d.ts +52 -1
  48. package/dist/tools/tool-registry.d.ts.map +1 -1
  49. package/dist/utils/id-generator.d.ts +4 -4
  50. package/dist/utils/id-generator.d.ts.map +1 -1
  51. package/dist/utils/store-controller.d.ts +19 -0
  52. package/dist/utils/store-controller.d.ts.map +1 -0
  53. package/dist/video-tool-CwWMKobZ.js +52 -0
  54. package/dist/video-tool-CwWMKobZ.js.map +1 -0
  55. package/package.json +16 -4
  56. package/dist/mail-editor-ClkIyPni.js +0 -2245
  57. package/dist/mail-editor-ClkIyPni.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-tool-CwWMKobZ.js","sources":["../src/tools/built-in/video-tool.ts"],"sourcesContent":["/**\n * @module video-tool\n *\n * Video embed block with thumbnail and play button overlay.\n * Supports YouTube and Vimeo URLs with auto-thumbnail detection.\n *\n * Email compatibility: Video cannot play in email — renders as\n * a linked thumbnail image with a play button overlay.\n */\n\nimport { html, TemplateResult } from 'lit';\nimport type { ContentValues, ExportRenderContext } from '@emabuild/types';\nimport type { LitToolDefinition } from '../tool-registry.js';\nimport { str } from '../helpers/value-extractor.js';\nimport { emailTableCell } from '../helpers/email-html.js';\n\n/** Extract YouTube video ID and return thumbnail URL */\nfunction getYouTubeThumbnail(url: string): string | null {\n const match = url.match(/(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([a-zA-Z0-9_-]{11})/);\n return match ? `https://img.youtube.com/vi/${match[1]}/maxresdefault.jpg` : null;\n}\n\nexport const videoTool: LitToolDefinition = {\n name: 'video',\n label: 'Video',\n icon: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"/></svg>`,\n supportedDisplayModes: ['email', 'web'],\n position: 10,\n options: {\n video: {\n title: 'Video',\n options: {\n url: { label: 'Video URL', defaultValue: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', widget: 'text' },\n thumbnailUrl: { label: 'Thumbnail URL (auto)', defaultValue: '', widget: 'text' },\n alt: { label: 'Alt Text', defaultValue: 'Video', widget: 'text' },\n },\n },\n style: {\n title: 'Style',\n options: { textAlign: { label: 'Align', defaultValue: 'center', widget: 'alignment' } },\n },\n spacing: {\n title: 'Spacing',\n options: { containerPadding: { label: 'Padding', defaultValue: '10px', widget: 'padding' } },\n },\n },\n defaultValues: {\n url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n thumbnailUrl: '', alt: 'Video', textAlign: 'center', containerPadding: '10px',\n },\n renderer: {\n renderEditor(values: ContentValues): TemplateResult {\n const padding = str(values, 'containerPadding', '10px');\n const url = str(values, 'url');\n const thumbnail = str(values, 'thumbnailUrl') || getYouTubeThumbnail(url) || '';\n const align = str(values, 'textAlign', 'center');\n\n if (!thumbnail) {\n return html`<div style=\"padding:${padding};text-align:${align};\"><div style=\"background:#0f172a;border-radius:8px;padding:40px;text-align:center;color:white;font-family:sans-serif;\"><div style=\"font-size:48px;opacity:0.8;\">▶</div><div style=\"font-size:12px;margin-top:8px;opacity:0.6;\">${url || 'Enter video URL'}</div></div></div>`;\n }\n return html`<div style=\"padding:${padding};text-align:${align};\"><div style=\"position:relative;display:inline-block;max-width:100%;cursor:pointer;\"><img src=${thumbnail} alt=\"Video thumbnail\" style=\"display:block;max-width:100%;border-radius:4px;\" /><div style=\"position:absolute;inset:0;display:flex;align-items:center;justify-content:center;\"><div style=\"width:60px;height:60px;background:rgba(0,0,0,0.7);border-radius:50%;display:flex;align-items:center;justify-content:center;color:white;font-size:24px;\">▶</div></div></div></div>`;\n },\n renderHtml(values: ContentValues, ctx: ExportRenderContext): string {\n const padding = str(values, 'containerPadding', '10px');\n const url = str(values, 'url', '#');\n const thumbnail = str(values, 'thumbnailUrl') || getYouTubeThumbnail(url) || '';\n const alt = str(values, 'alt', 'Video');\n const align = str(values, 'textAlign', 'center');\n\n const imgTag = thumbnail\n ? `<img src=\"${thumbnail}\" alt=\"${alt}\" width=\"${ctx.columnWidth}\" style=\"display:block;max-width:100%;width:${ctx.columnWidth}px;border:0;\" />`\n : `<div style=\"background:#0f172a;padding:40px;text-align:center;color:white;font-family:arial,sans-serif;font-size:16px;\">▶ Watch Video</div>`;\n return emailTableCell(`<a href=\"${url}\" target=\"_blank\" style=\"text-decoration:none;\">${imgTag}</a>`, { padding, align });\n },\n },\n};\n"],"names":["getYouTubeThumbnail","url","match","videoTool","values","padding","str","thumbnail","align","html","ctx","alt","imgTag","emailTableCell"],"mappings":";;AAiBA,SAASA,EAAoBC,GAA4B;AACvD,QAAMC,IAAQD,EAAI,MAAM,kFAAkF;AAC1G,SAAOC,IAAQ,8BAA8BA,EAAM,CAAC,CAAC,uBAAuB;AAC9E;AAEO,MAAMC,IAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,uBAAuB,CAAC,SAAS,KAAK;AAAA,EACtC,UAAU;AAAA,EACV,SAAS;AAAA,IACP,OAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,QACP,KAAK,EAAE,OAAO,aAAa,cAAc,+CAA+C,QAAQ,OAAA;AAAA,QAChG,cAAc,EAAE,OAAO,wBAAwB,cAAc,IAAI,QAAQ,OAAA;AAAA,QACzE,KAAK,EAAE,OAAO,YAAY,cAAc,SAAS,QAAQ,OAAA;AAAA,MAAO;AAAA,IAClE;AAAA,IAEF,OAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS,EAAE,WAAW,EAAE,OAAO,SAAS,cAAc,UAAU,QAAQ,YAAA,EAAY;AAAA,IAAE;AAAA,IAExF,SAAS;AAAA,MACP,OAAO;AAAA,MACP,SAAS,EAAE,kBAAkB,EAAE,OAAO,WAAW,cAAc,QAAQ,QAAQ,UAAA,EAAU;AAAA,IAAE;AAAA,EAC7F;AAAA,EAEF,eAAe;AAAA,IACb,KAAK;AAAA,IACL,cAAc;AAAA,IAAI,KAAK;AAAA,IAAS,WAAW;AAAA,IAAU,kBAAkB;AAAA,EAAA;AAAA,EAEzE,UAAU;AAAA,IACR,aAAaC,GAAuC;AAClD,YAAMC,IAAUC,EAAIF,GAAQ,oBAAoB,MAAM,GAChDH,IAAMK,EAAIF,GAAQ,KAAK,GACvBG,IAAYD,EAAIF,GAAQ,cAAc,KAAKJ,EAAoBC,CAAG,KAAK,IACvEO,IAAQF,EAAIF,GAAQ,aAAa,QAAQ;AAE/C,aAAKG,IAGEE,wBAA2BJ,CAAO,eAAeG,CAAK,kGAAkGD,CAAS,kXAF/JE,wBAA2BJ,CAAO,eAAeG,CAAK,mOAAmOP,KAAO,iBAAiB;AAAA,IAG5T;AAAA,IACA,WAAWG,GAAuBM,GAAkC;AAClE,YAAML,IAAUC,EAAIF,GAAQ,oBAAoB,MAAM,GAChDH,IAAMK,EAAIF,GAAQ,OAAO,GAAG,GAC5BG,IAAYD,EAAIF,GAAQ,cAAc,KAAKJ,EAAoBC,CAAG,KAAK,IACvEU,IAAML,EAAIF,GAAQ,OAAO,OAAO,GAChCI,IAAQF,EAAIF,GAAQ,aAAa,QAAQ,GAEzCQ,IAASL,IACX,aAAaA,CAAS,UAAUI,CAAG,YAAYD,EAAI,WAAW,+CAA+CA,EAAI,WAAW,qBAC5H;AACJ,aAAOG,EAAe,YAAYZ,CAAG,mDAAmDW,CAAM,QAAQ,EAAE,SAAAP,GAAS,OAAAG,GAAO;AAAA,IAC1H;AAAA,EAAA;AAEJ;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@emabuild/core",
3
- "version": "0.0.3",
4
- "description": "Drag & drop email editor Web Component — Unlayer-compatible",
3
+ "version": "0.0.5",
4
+ "description": "Drag & drop email editor Web Component — embeddable anywhere",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -26,8 +26,8 @@
26
26
  "customElements": "custom-elements.json",
27
27
  "dependencies": {
28
28
  "lit": "^3.2.0",
29
- "@emabuild/types": "0.0.3",
30
- "@emabuild/email-renderer": "0.0.3"
29
+ "@emabuild/types": "0.0.5",
30
+ "@emabuild/email-renderer": "0.0.5"
31
31
  },
32
32
  "devDependencies": {
33
33
  "vite": "^6.2.0",
@@ -36,6 +36,18 @@
36
36
  "publishConfig": {
37
37
  "access": "public"
38
38
  },
39
+ "keywords": [
40
+ "email",
41
+ "editor",
42
+ "drag-and-drop",
43
+ "email-builder",
44
+ "web-component",
45
+ "lit",
46
+ "newsletter",
47
+ "html-email",
48
+ "wysiwyg",
49
+ "email-template"
50
+ ],
39
51
  "license": "MIT",
40
52
  "sideEffects": false,
41
53
  "scripts": {