email-builder-online 1.0.0 → 1.0.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.
package/README.md CHANGED
@@ -1,10 +1,40 @@
1
- # @usewaypoint/editor-sample
1
+ # Email Builder - Editor Sample
2
2
 
3
- Use this as a sample to self-host EmailBuilder.js.
3
+ This project provides a sample implementation of an email builder, demonstrating how to integrate and use the various building blocks and features. It allows users to design and customize email templates with a drag-and-drop interface.
4
4
 
5
- To run this locally, fork the repository and then in this directory run:
5
+ ## Usage
6
6
 
7
- - `npm install`
8
- - `npx vite`
7
+ To use the email builder, simply include the web component in your HTML. The component exposes several properties that can be used to customize its behavior and appearance.
9
8
 
10
- Once the server is running, open http://localhost:5173/email-builder-js/ in your browser.
9
+ ```html
10
+ <div id="email-builder-container"></div>
11
+ <script type="module">
12
+ import EmailBuilder from './dist/email-builder.js';
13
+
14
+ const container = document.getElementById('email-builder-container');
15
+
16
+ EmailBuilder({
17
+ primaryColor: '#FF5733',
18
+ secondaryColor: '#33FF57',
19
+ galleryImages: true,
20
+ freeMode: false,
21
+ darkMode: true,
22
+ heightContent: '800px',
23
+ stickyHeader: true,
24
+ disableSticky: false,
25
+ });
26
+ </script>
27
+ ```
28
+
29
+ ## Available Props
30
+
31
+ The `EmailBuilder` component accepts the following props:
32
+
33
+ - `primaryColor`: (string, default: `#058705`) Sets the primary color theme of the builder.
34
+ - `secondaryColor`: (string, default: `#079707`) Sets the secondary color theme of the builder.
35
+ - `galleryImages`: (boolean, default: `false`) Enables or disables the image gallery feature.
36
+ - `freeMode`: (boolean, default: `true`) If `true`, allows free-form editing; if `false`, imposes stricter design constraints.
37
+ - `darkMode`: (boolean, default: `false`) Enables or disables dark mode.
38
+ - `heightContent`: (string, default: `calc(80dvh - 80px)`) Sets the height of the content area.
39
+ - `stickyHeader`: (boolean, default: `true`) Enables or disables the sticky header.
40
+ - `disableSticky`: (boolean, default: `false`) Disables all sticky elements within the builder.
package/dist/index.cjs CHANGED
@@ -4,10 +4,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
7
  var __copyProps = (to, from, except, desc) => {
12
8
  if (from && typeof from === "object" || typeof from === "function") {
13
9
  for (let key of __getOwnPropNames(from))
@@ -28,11 +24,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
28
24
 
29
25
  // src/index.tsx
30
26
  var index_exports = {};
31
- __export(index_exports, {
32
- default: () => index_default
33
- });
34
27
  module.exports = __toCommonJS(index_exports);
35
- var import_react58 = require("react");
28
+ var import_react58 = __toESM(require("react"), 1);
29
+ var import_react_dom = __toESM(require("react-dom"), 1);
36
30
  var import_react_dnd4 = require("react-dnd");
37
31
  var import_react_dnd_html5_backend = require("react-dnd-html5-backend");
38
32
  var import_material46 = require("@mui/material");
@@ -19099,6 +19093,7 @@ var getTheme = (mainColor = BRAND_BLUE, secondaryColor = BRAND_BLUE, darkMode =
19099
19093
  var theme_default = getTheme;
19100
19094
 
19101
19095
  // src/index.tsx
19096
+ var import_react_to_webcomponent = __toESM(require("react-to-webcomponent"), 1);
19102
19097
  var import_jsx_runtime96 = require("react/jsx-runtime");
19103
19098
  var EmailBuilder = ({
19104
19099
  primaryColor,
@@ -19124,7 +19119,7 @@ var EmailBuilder = ({
19124
19119
  setDarkMode(finalDarkMode);
19125
19120
  }, [finalDarkMode]);
19126
19121
  const theme = theme_default(finalPrimaryColor, finalSecondaryColor, isDark);
19127
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_react_dnd4.DndProvider, { backend: import_react_dnd_html5_backend.HTML5Backend, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_material46.ThemeProvider, { theme, children: [
19122
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("div", { style: { position: "relative", border: "1px solid gray" }, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_react_dnd4.DndProvider, { backend: import_react_dnd_html5_backend.HTML5Backend, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_material46.ThemeProvider, { theme, children: [
19128
19123
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_material46.CssBaseline, {}),
19129
19124
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
19130
19125
  App,
@@ -19138,6 +19133,7 @@ var EmailBuilder = ({
19138
19133
  stickyHeader: finalStickyHeader
19139
19134
  }
19140
19135
  )
19141
- ] }) });
19136
+ ] }) }) });
19142
19137
  };
19143
- var index_default = EmailBuilder;
19138
+ var EmailBuilderElement = (0, import_react_to_webcomponent.default)(EmailBuilder, import_react58.default, import_react_dom.default);
19139
+ customElements.define("email-builder", EmailBuilderElement);
package/dist/index.d.cts CHANGED
@@ -1,5 +1,3 @@
1
- import React from 'react';
2
-
3
1
  interface EmailBuilderProps {
4
2
  primaryColor?: string;
5
3
  secondaryColor?: string;
@@ -10,6 +8,5 @@ interface EmailBuilderProps {
10
8
  stickyHeader?: boolean;
11
9
  disableSticky?: boolean;
12
10
  }
13
- declare const EmailBuilder: React.FC<EmailBuilderProps>;
14
11
 
15
- export { type EmailBuilderProps, EmailBuilder as default };
12
+ export type { EmailBuilderProps };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import React from 'react';
2
-
3
1
  interface EmailBuilderProps {
4
2
  primaryColor?: string;
5
3
  secondaryColor?: string;
@@ -10,6 +8,5 @@ interface EmailBuilderProps {
10
8
  stickyHeader?: boolean;
11
9
  disableSticky?: boolean;
12
10
  }
13
- declare const EmailBuilder: React.FC<EmailBuilderProps>;
14
11
 
15
- export { type EmailBuilderProps, EmailBuilder as default };
12
+ export type { EmailBuilderProps };
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/index.tsx
2
- import { useEffect as useEffect34, useState as useState43 } from "react";
2
+ import React56, { useEffect as useEffect34, useState as useState43 } from "react";
3
+ import ReactDOM from "react-dom";
3
4
  import { DndProvider } from "react-dnd";
4
5
  import { HTML5Backend } from "react-dnd-html5-backend";
5
6
  import { CssBaseline, ThemeProvider } from "@mui/material";
@@ -19164,6 +19165,7 @@ var getTheme = (mainColor = BRAND_BLUE, secondaryColor = BRAND_BLUE, darkMode =
19164
19165
  var theme_default = getTheme;
19165
19166
 
19166
19167
  // src/index.tsx
19168
+ import reactToWebComponent from "react-to-webcomponent";
19167
19169
  import { jsx as jsx96, jsxs as jsxs59 } from "react/jsx-runtime";
19168
19170
  var EmailBuilder = ({
19169
19171
  primaryColor,
@@ -19189,7 +19191,7 @@ var EmailBuilder = ({
19189
19191
  setDarkMode(finalDarkMode);
19190
19192
  }, [finalDarkMode]);
19191
19193
  const theme = theme_default(finalPrimaryColor, finalSecondaryColor, isDark);
19192
- return /* @__PURE__ */ jsx96(DndProvider, { backend: HTML5Backend, children: /* @__PURE__ */ jsxs59(ThemeProvider, { theme, children: [
19194
+ return /* @__PURE__ */ jsx96("div", { style: { position: "relative", border: "1px solid gray" }, children: /* @__PURE__ */ jsx96(DndProvider, { backend: HTML5Backend, children: /* @__PURE__ */ jsxs59(ThemeProvider, { theme, children: [
19193
19195
  /* @__PURE__ */ jsx96(CssBaseline, {}),
19194
19196
  /* @__PURE__ */ jsx96(
19195
19197
  App,
@@ -19203,9 +19205,7 @@ var EmailBuilder = ({
19203
19205
  stickyHeader: finalStickyHeader
19204
19206
  }
19205
19207
  )
19206
- ] }) });
19207
- };
19208
- var index_default = EmailBuilder;
19209
- export {
19210
- index_default as default
19208
+ ] }) }) });
19211
19209
  };
19210
+ var EmailBuilderElement = reactToWebComponent(EmailBuilder, React56, ReactDOM);
19211
+ customElements.define("email-builder", EmailBuilderElement);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "email-builder-online",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.esm.js",
@@ -12,11 +12,14 @@
12
12
  "email": "jose.vazcortez@gmail.com",
13
13
  "url": "https://www.laravel42.com"
14
14
  },
15
- "files": ["dist"],
15
+ "files": [
16
+ "dist"
17
+ ],
16
18
  "scripts": {
17
- "build-library": "vite build --lib --entry=src/index.ts --name=EmailBuilder --fileName=index",
19
+ "build-library": "vite build --lib --entry=src/index.ts --name=EmailBuilder --fileName=index",
18
20
  "dev": "vite",
19
- "build": "vite build",
21
+ "build": "tsup src/index.tsx --format cjs,esm --dts",
22
+ "build-vite": "vite build",
20
23
  "preview": "vite preview",
21
24
  "staticBuild": "esbuild build.js --bundle --outfile=build/email-builder.js --loader:.js=tsx --loader:.svg=dataurl --loader:.ttf=dataurl --format=esm",
22
25
  "copy-to-maildrill": "cp -f ./build/email-builder.js ../../../maildrill/resources/js/components/email-builder.js && cp -f ./build/email-builder.css ../../../maildrill/resources/css/email-builder.css",
@@ -62,20 +65,19 @@
62
65
  "react-quill": "^2.0.0",
63
66
  "react-quill-new": "^3.3.3",
64
67
  "react-sticky-el": "^2.1.1",
68
+ "react-to-webcomponent": "^2.0.1",
65
69
  "vite-plugin-dts": "^4.5.4",
66
70
  "zod": "^3.22.4",
67
71
  "zustand": "^4.5.1"
68
72
  },
69
73
  "peerDependencies": {
70
- "react": "^18.2.0",
71
- "react-dom": "^18.2.0",
72
74
  "@mui/material": "^5.15.10",
75
+ "react": "^18.2.0",
73
76
  "react-dnd": "^16.0.1",
74
- "react-dnd-html5-backend": "^16.0.1"
77
+ "react-dnd-html5-backend": "^16.0.1",
78
+ "react-dom": "^18.2.0"
75
79
  },
76
80
  "devDependencies": {
77
- "react": "^18.2.0",
78
- "react-dom": "^18.2.0",
79
81
  "@types/react": "^18.2.55",
80
82
  "@types/react-dom": "^18.2.19",
81
83
  "@typescript-eslint/eslint-plugin": "^6.21.0",
@@ -87,6 +89,8 @@
87
89
  "eslint-plugin-react-hooks": "^4.6.0",
88
90
  "eslint-plugin-react-refresh": "^0.4.5",
89
91
  "eslint-plugin-simple-import-sort": "^12.0.0",
92
+ "react": "^18.2.0",
93
+ "react-dom": "^18.2.0",
90
94
  "typescript": "^5.2.2",
91
95
  "vite": "^5.1.0"
92
96
  },