@mesgflow/email-editor-vue 0.0.0-stage → 0.2.0

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.
@@ -0,0 +1,91 @@
1
+ import { type PropType } from 'vue';
2
+ import type { EmailDocument } from '@mesgflow/email-core';
3
+ import type { EmailEditorConfig, EmailEditorRole, EmailEditorTheme } from '@mesgflow/email-editor';
4
+ import '@mesgflow/email-elements';
5
+ /** İmperatif API (Kademe 3 paket AF, `email-elements` İLE AYNI ÜÇ metot) — `expose()`'ün açtığı yüzey, bkz. bileşen alt tarafındaki not. */
6
+ export interface EmailEditorInstance {
7
+ getDocument(): EmailDocument | null;
8
+ exportHtml(): string | null;
9
+ loadTemplate(document: EmailDocument): void;
10
+ }
11
+ /**
12
+ * `<mesgflow-email-editor>` özel elemanının (bkz. `@mesgflow/email-elements`)
13
+ * ince bir Vue 3 sarmalayıcısı — Angular BİLMENİZE gerek YOK.
14
+ *
15
+ * `@mesgflow/email-editor-react` İLE AYNI gerekçeyle (bkz. o paketin
16
+ * `index.tsx` üstündeki not) elemanı ŞABLONDA/`h()`'te DOĞRUDAN YAZMAK
17
+ * yerine `onMounted` İÇİNDE elle `document.createElement(...)` ile
18
+ * oluşturup TÜM property'leri (`config` DAHİL) DOM'a EKLEMEDEN ÖNCE
19
+ * atıyoruz — Vue'nun `ref` callback'i de (React'inki gibi) eleman
20
+ * BAĞLANDIKTAN SONRA çalışır, bu yüzden `config`'in "bağlanmadan ÖNCE
21
+ * verilmeli" kısıtını (bkz. `@mesgflow/email-elements` README'si) BAŞKA
22
+ * TÜRLÜ karşılamak mümkün değil.
23
+ */
24
+ export declare const EmailEditor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
25
+ initialDocument: {
26
+ type: PropType<EmailDocument | null>;
27
+ default: null;
28
+ };
29
+ editorRole: {
30
+ type: PropType<EmailEditorRole>;
31
+ default: string;
32
+ };
33
+ theme: {
34
+ type: PropType<EmailEditorTheme | null>;
35
+ default: null;
36
+ };
37
+ licenseKey: {
38
+ type: PropType<string | null>;
39
+ default: null;
40
+ };
41
+ /**
42
+ * `@mesgflow/email-elements`'in `config` property'siyle AYNI — SADECE
43
+ * İLK monte edildiğinde uygulanır (bkz. sınıf üstündeki not). SONRADAN
44
+ * değişmesi HİÇBİR ETKİ YAPMAZ — DEĞİŞKEN bir adaptör seti gerekiyorsa
45
+ * bileşene `:key` vererek YENİDEN monte edilmesini sağlayın.
46
+ */
47
+ config: {
48
+ type: PropType<EmailEditorConfig | null>;
49
+ default: null;
50
+ };
51
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
52
+ [key: string]: any;
53
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
54
+ documentChange: (document: EmailDocument) => true;
55
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
56
+ initialDocument: {
57
+ type: PropType<EmailDocument | null>;
58
+ default: null;
59
+ };
60
+ editorRole: {
61
+ type: PropType<EmailEditorRole>;
62
+ default: string;
63
+ };
64
+ theme: {
65
+ type: PropType<EmailEditorTheme | null>;
66
+ default: null;
67
+ };
68
+ licenseKey: {
69
+ type: PropType<string | null>;
70
+ default: null;
71
+ };
72
+ /**
73
+ * `@mesgflow/email-elements`'in `config` property'siyle AYNI — SADECE
74
+ * İLK monte edildiğinde uygulanır (bkz. sınıf üstündeki not). SONRADAN
75
+ * değişmesi HİÇBİR ETKİ YAPMAZ — DEĞİŞKEN bir adaptör seti gerekiyorsa
76
+ * bileşene `:key` vererek YENİDEN monte edilmesini sağlayın.
77
+ */
78
+ config: {
79
+ type: PropType<EmailEditorConfig | null>;
80
+ default: null;
81
+ };
82
+ }>> & Readonly<{
83
+ onDocumentChange?: ((document: EmailDocument) => any) | undefined;
84
+ }>, {
85
+ theme: EmailEditorTheme | null;
86
+ initialDocument: EmailDocument | null;
87
+ editorRole: EmailEditorRole;
88
+ licenseKey: string | null;
89
+ config: EmailEditorConfig | null;
90
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
91
+ export default EmailEditor;
package/EmailEditor.js ADDED
@@ -0,0 +1,92 @@
1
+ import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch } from 'vue';
2
+ import '@mesgflow/email-elements';
3
+ /**
4
+ * `<mesgflow-email-editor>` özel elemanının (bkz. `@mesgflow/email-elements`)
5
+ * ince bir Vue 3 sarmalayıcısı — Angular BİLMENİZE gerek YOK.
6
+ *
7
+ * `@mesgflow/email-editor-react` İLE AYNI gerekçeyle (bkz. o paketin
8
+ * `index.tsx` üstündeki not) elemanı ŞABLONDA/`h()`'te DOĞRUDAN YAZMAK
9
+ * yerine `onMounted` İÇİNDE elle `document.createElement(...)` ile
10
+ * oluşturup TÜM property'leri (`config` DAHİL) DOM'a EKLEMEDEN ÖNCE
11
+ * atıyoruz — Vue'nun `ref` callback'i de (React'inki gibi) eleman
12
+ * BAĞLANDIKTAN SONRA çalışır, bu yüzden `config`'in "bağlanmadan ÖNCE
13
+ * verilmeli" kısıtını (bkz. `@mesgflow/email-elements` README'si) BAŞKA
14
+ * TÜRLÜ karşılamak mümkün değil.
15
+ */
16
+ export const EmailEditor = defineComponent({
17
+ name: 'EmailEditor',
18
+ props: {
19
+ initialDocument: { type: Object, default: null },
20
+ editorRole: { type: String, default: 'brand' },
21
+ theme: { type: Object, default: null },
22
+ licenseKey: { type: String, default: null },
23
+ /**
24
+ * `@mesgflow/email-elements`'in `config` property'siyle AYNI — SADECE
25
+ * İLK monte edildiğinde uygulanır (bkz. sınıf üstündeki not). SONRADAN
26
+ * değişmesi HİÇBİR ETKİ YAPMAZ — DEĞİŞKEN bir adaptör seti gerekiyorsa
27
+ * bileşene `:key` vererek YENİDEN monte edilmesini sağlayın.
28
+ */
29
+ config: { type: Object, default: null },
30
+ },
31
+ emits: {
32
+ documentChange: (document) => !!document,
33
+ },
34
+ setup(props, { emit, expose }) {
35
+ const containerRef = ref(null);
36
+ let element = null;
37
+ function handleDocumentChange(event) {
38
+ emit('documentChange', event.detail);
39
+ }
40
+ onMounted(() => {
41
+ const container = containerRef.value;
42
+ if (!container)
43
+ return;
44
+ const el = document.createElement('mesgflow-email-editor');
45
+ el.style.display = 'block';
46
+ el.style.height = '100%';
47
+ // `config` SADECE burada (bağlanmadan ÖNCE) atanır — bkz. sınıf üstündeki gerekçe notu.
48
+ el.config = props.config;
49
+ el.initialDocument = props.initialDocument;
50
+ el.editorRole = props.editorRole;
51
+ el.theme = props.theme;
52
+ el.licenseKey = props.licenseKey;
53
+ el.addEventListener('documentChange', handleDocumentChange);
54
+ element = el;
55
+ container.appendChild(el);
56
+ });
57
+ onBeforeUnmount(() => {
58
+ if (!element)
59
+ return;
60
+ element.removeEventListener('documentChange', handleDocumentChange);
61
+ element.remove();
62
+ element = null;
63
+ });
64
+ // `initialDocument`/`editorRole`/`theme`/`licenseKey` — `config`'İN AKSİNE — bağlandıktan
65
+ // SONRA da değiştirilebilen property'ler (bkz. `main.ts`'in `setInput()` kullanan
66
+ // setter'ları, `@mesgflow/email-elements`), bu yüzden HER prop değişiminde canlı güncellenir.
67
+ watch(() => props.initialDocument, (value) => {
68
+ if (element)
69
+ element.initialDocument = value;
70
+ });
71
+ watch(() => props.editorRole, (value) => {
72
+ if (element)
73
+ element.editorRole = value;
74
+ });
75
+ watch(() => props.theme, (value) => {
76
+ if (element)
77
+ element.theme = value;
78
+ });
79
+ watch(() => props.licenseKey, (value) => {
80
+ if (element)
81
+ element.licenseKey = value;
82
+ });
83
+ expose({
84
+ getDocument: () => element?.getDocument() ?? null,
85
+ exportHtml: () => element?.exportHtml() ?? null,
86
+ loadTemplate: (documentToLoad) => element?.loadTemplate(documentToLoad),
87
+ });
88
+ return () => h('div', { ref: containerRef, style: { display: 'block', height: '100%' } });
89
+ },
90
+ });
91
+ export default EmailEditor;
92
+ //# sourceMappingURL=EmailEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailEditor.js","sourceRoot":"","sources":["../../../../../projects/email-editor-vue/src/EmailEditor.ts"],"names":[],"mappings":"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"}
package/LICENSE.md ADDED
@@ -0,0 +1,17 @@
1
+ # @mesgflow/email-core · @mesgflow/email-editor · @mesgflow/email-elements — Lisans
2
+
3
+ Copyright (c) 2026 MesgFlow. Tüm hakları saklıdır.
4
+
5
+ Bu paketler ticari yazılımdır. Paketlerin npm kaydında herkese açık olması kullanım hakkı vermez. Kullanım, MesgFlow
6
+ tarafından verilen geçerli bir lisans anahtarı ve MesgFlow ile yapılmış yazılı lisans sözleşmesi kapsamında mümkündür.
7
+ Lisans anahtarı olmadan editör değerlendirme kipinde çalışır ve üretim ortamında kullanılamaz.
8
+
9
+ Kaynak kodun kopyalanması, değiştirilmesi, dağıtılması, alt lisanslanması veya bu paketlerden türev eser üretilmesi,
10
+ lisans sözleşmesinde açıkça izin verilen haller dışında yasaktır.
11
+
12
+ Bu metin bir yer tutucudur; bağlayıcı lisans koşulları hukuk incelemesinden sonra güncellenecektir (0015a §14 Q-8).
13
+
14
+ ---
15
+
16
+ This software is proprietary. Public availability on the npm registry does not grant any right of use. Use requires a
17
+ valid MesgFlow license key and a written license agreement with MesgFlow. All rights reserved.
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { EmailEditor, default } from './EmailEditor.js';
2
+ export type { EmailEditorInstance } from './EmailEditor.js';
package/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { EmailEditor, default } from './EmailEditor.js';
2
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../projects/email-editor-vue/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,20 @@
1
1
  {
2
2
  "name": "@mesgflow/email-editor-vue",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "MesgFlow e-posta editörü için ince bir Vue 3 sarmalayıcı — <mesgflow-email-editor> özel elemanının (@mesgflow/email-elements) props/emits/expose üzerinden idiomatic bir Vue bileşeni olarak kullanılmasını sağlar. Angular BİLMENİZE gerek YOK.",
5
+ "type": "module",
6
+ "main": "./index.js",
7
+ "types": "./index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./index.d.ts",
11
+ "default": "./index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "sideEffects": false,
16
+ "peerDependencies": {
17
+ "@mesgflow/email-elements": "^0.2.0",
18
+ "vue": "^3.4"
19
+ }
20
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.