@overlap/rte 0.1.8 → 0.1.10

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.
@@ -1,10 +1,10 @@
1
1
  import { Plugin } from '../types';
2
2
  /**
3
- * Basis-Plugin für Inline-Formatierungen
3
+ * Base plugin for inline formatting
4
4
  */
5
5
  export declare function createInlinePlugin(name: string, command: string, icon: string, label: string): Plugin;
6
6
  /**
7
- * Basis-Plugin für Commands
7
+ * Base plugin for commands
8
8
  */
9
9
  export declare function createCommandPlugin(name: string, command: string, icon: string, label: string): Plugin;
10
10
  //# sourceMappingURL=base.d.ts.map
@@ -1,7 +1,15 @@
1
1
  import { Plugin } from "../types";
2
+ export interface BlockFormatOptions {
3
+ bulletList?: boolean;
4
+ numberedList?: boolean;
5
+ quote?: boolean;
6
+ codeBlock?: boolean;
7
+ check?: boolean;
8
+ }
2
9
  /**
3
10
  * Creates a Block Format plugin that combines headings, lists, and quote in a dropdown.
4
11
  * @param headings - Array of heading levels (e.g. ["h1", "h2", "h3"])
12
+ * @param blockOptions - Toggle individual block types (bulletList, numberedList, quote, check, codeBlock)
5
13
  */
6
- export declare function createBlockFormatPlugin(headings?: string[]): Plugin;
14
+ export declare function createBlockFormatPlugin(headings?: string[], blockOptions?: BlockFormatOptions): Plugin;
7
15
  //# sourceMappingURL=blockFormat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockFormat.d.ts","sourceRoot":"","sources":["../../src/plugins/blockFormat.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,MAAM,EAAE,MAAM,UAAU,CAAC;AAc7C;;;GAGG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,GAAE,MAAM,EAAoB,GACrC,MAAM,CAkKR"}
1
+ {"version":3,"file":"blockFormat.d.ts","sourceRoot":"","sources":["../../src/plugins/blockFormat.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,MAAM,EAAE,MAAM,UAAU,CAAC;AAc7C,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,GAAE,MAAM,EAAoB,EACpC,YAAY,GAAE,kBAAuB,GACtC,MAAM,CAyLR"}
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from '../types';
2
2
  /**
3
- * Clear Formatting Plugin - Entfernt alle Formatierungen
3
+ * Clear Formatting Plugin - Removes all formatting
4
4
  */
5
5
  export declare const clearFormattingPlugin: Plugin;
6
6
  //# sourceMappingURL=clearFormatting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/plugins/image.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA0B,MAAM,UAAU,CAAC;AAG1D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAoLzF"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/plugins/image.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAA0B,MAAM,UAAU,CAAC;AAc1D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CA6LzF"}
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "../types";
2
2
  /**
3
- * Standard-Plugins
3
+ * Standard Plugins
4
4
  */
5
5
  export declare const boldPlugin: Plugin;
6
6
  export declare const italicPlugin: Plugin;
@@ -12,11 +12,11 @@ export declare const codeInlinePlugin: Plugin;
12
12
  export declare const undoPlugin: Plugin;
13
13
  export declare const redoPlugin: Plugin;
14
14
  /**
15
- * Indent List Item Plugin (Tab für Unterliste)
15
+ * Indent List Item Plugin
16
16
  */
17
17
  declare const indentListItemPlugin: Plugin;
18
18
  /**
19
- * Outdent List Item Plugin (Shift+Tab)
19
+ * Outdent List Item Plugin
20
20
  */
21
21
  declare const outdentListItemPlugin: Plugin;
22
22
  export { indentListItemPlugin, outdentListItemPlugin };
@@ -1,17 +1,45 @@
1
1
  import { Plugin } from "../types";
2
- interface AdvancedLinkOptions {
3
- enablePageRef?: boolean;
2
+ /**
3
+ * Describes an additional field injected into the link dialog.
4
+ * This allows platform-specific extensions (e.g. page reference, URL extras)
5
+ * without baking them into the core RTE.
6
+ */
7
+ export interface LinkCustomField {
8
+ /** Unique identifier (used as key in LinkData.custom) */
9
+ key: string;
10
+ /** Display label */
11
+ label: string;
12
+ /** Input placeholder */
13
+ placeholder?: string;
14
+ /** The HTML attribute to read/write on the <a> element (e.g. "data-page-ref") */
15
+ dataAttribute: string;
16
+ /** If true, this field's value is appended to the href when saving. */
17
+ appendToHref?: boolean;
18
+ /** If true, the URL input is disabled when this field has a value. */
19
+ disablesUrl?: boolean;
20
+ }
21
+ export interface AdvancedLinkOptions {
22
+ /** Show "Open in new tab" checkbox. Defaults to true. */
4
23
  enableTarget?: boolean;
5
- enableRel?: boolean;
6
- enableTitle?: boolean;
7
- enableUrlExtra?: boolean;
24
+ /** Additional custom fields rendered in the advanced section. */
25
+ customFields?: LinkCustomField[];
8
26
  }
9
27
  /**
10
28
  * Creates an advanced link plugin with a floating dialog.
11
- * Supports URL, target, rel, title, page reference, and URL extra.
29
+ *
30
+ * Core features (always available):
31
+ * - URL input
32
+ * - "Open in new tab" checkbox (enableTarget)
33
+ * - Cmd/Ctrl+Click → open link in new tab
34
+ * - Click on link → edit it inline
35
+ *
36
+ * Platform-specific fields (injected via `customFields`):
37
+ * - Each field is rendered in the "Advanced" section
38
+ * - Values are stored as data-attributes on the <a> element
39
+ * - `appendToHref` fields have their value appended to the href
40
+ * - `disablesUrl` fields disable the URL input when they have a value
12
41
  */
13
42
  export declare function createAdvancedLinkPlugin(options?: AdvancedLinkOptions): Plugin;
14
- /** Pre-built advanced link plugin with target + rel + title enabled */
43
+ /** Pre-built link plugin with just target enabled (no custom fields). */
15
44
  export declare const advancedLinkPlugin: Plugin;
16
- export {};
17
45
  //# sourceMappingURL=linkDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linkDialog.d.ts","sourceRoot":"","sources":["../../src/plugins/linkDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0B,MAAM,EAAE,MAAM,UAAU,CAAC;AAe1D,UAAU,mBAAmB;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkbD;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,GAAE,mBAAwB,GAClC,MAAM,CAwCR;AAED,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,MAAmC,CAAC"}
1
+ {"version":3,"file":"linkDialog.d.ts","sourceRoot":"","sources":["../../src/plugins/linkDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA0B,MAAM,EAAE,MAAM,UAAU,CAAC;AAa1D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAChC,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;CACpC;AA+kBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,GAAE,mBAAwB,GAClC,MAAM,CA2BR;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,EAAE,MAAmC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "../types";
2
2
  /**
3
- * Indent List Item Plugin (Tab für Unterliste)
3
+ * Indent List Item Plugin (Tab to indent list item)
4
4
  */
5
5
  export declare const indentListItemPlugin: Plugin;
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import { Plugin } from "../types";
2
2
  /**
3
- * Link-Plugin mit verbesserter Funktionalität
3
+ * Link plugin with improved functionality
4
4
  */
5
5
  export declare function createLinkPlugin(): Plugin;
6
6
  export declare const linkPlugin: Plugin;
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- /* CSS Variables für Theme-Support */
1
+ /* CSS Variables for theme support */
2
2
  :root {
3
3
  /* Colors */
4
4
  --rte-border-color: #e5e7eb;
@@ -11,6 +11,10 @@
11
11
  --rte-text-secondary: #6b7280;
12
12
  --rte-primary-color: #3b82f6;
13
13
  --rte-primary-hover: #2563eb;
14
+ --rte-primary-light: rgba(59, 130, 246, 0.15);
15
+ --rte-danger-color: #dc2626;
16
+ --rte-danger-light: #fef2f2;
17
+ --rte-danger-border: #fca5a5;
14
18
 
15
19
  /* Spacing */
16
20
  --rte-padding-xs: 4px;
@@ -45,6 +49,7 @@
45
49
  background: var(--rte-content-bg);
46
50
  font-family: var(--rte-font-family);
47
51
  box-shadow: var(--rte-shadow-sm);
52
+ position: relative;
48
53
  }
49
54
 
50
55
  /* Toolbar */
@@ -447,7 +452,7 @@
447
452
 
448
453
  .rte-dropdown-color-preview.active {
449
454
  border: 2px solid var(--rte-primary-color);
450
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
455
+ box-shadow: 0 0 0 2px var(--rte-primary-light);
451
456
  }
452
457
 
453
458
  /* Color Preview in Dropdown */
@@ -660,7 +665,7 @@
660
665
  .rte-image-alt-input:focus {
661
666
  outline: none;
662
667
  border-color: var(--rte-primary-color);
663
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
668
+ box-shadow: 0 0 0 3px var(--rte-primary-light);
664
669
  }
665
670
 
666
671
  .rte-image-preview {
@@ -765,7 +770,7 @@
765
770
  top: 100%;
766
771
  left: 0;
767
772
  z-index: 1000;
768
- background: white;
773
+ background: var(--rte-content-bg);
769
774
  border: 1px solid var(--rte-border-color);
770
775
  border-radius: 8px;
771
776
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
@@ -807,7 +812,7 @@
807
812
 
808
813
  .rte-table-insert-input:focus {
809
814
  border-color: var(--rte-primary-color);
810
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
815
+ box-shadow: 0 0 0 2px var(--rte-primary-light);
811
816
  }
812
817
 
813
818
  .rte-table-insert-btn {
@@ -831,7 +836,7 @@
831
836
  /* Table Context Menu */
832
837
  .rte-table-context-menu {
833
838
  z-index: 1000;
834
- background: white;
839
+ background: var(--rte-content-bg);
835
840
  border: 1px solid var(--rte-border-color);
836
841
  border-radius: 8px;
837
842
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
@@ -859,11 +864,11 @@
859
864
  }
860
865
 
861
866
  .rte-table-context-danger {
862
- color: #dc2626 !important;
867
+ color: var(--rte-danger-color) !important;
863
868
  }
864
869
 
865
870
  .rte-table-context-danger:hover {
866
- background: #fef2f2 !important;
871
+ background: var(--rte-danger-light) !important;
867
872
  }
868
873
 
869
874
  .rte-table-context-divider {
@@ -873,27 +878,46 @@
873
878
  }
874
879
 
875
880
  /* ═══════════════════════════════════════════════════════════════════════
876
- Link Dialog Styles
881
+ Link Dialog Styles — Floating near link in content
877
882
  ═══════════════════════════════════════════════════════════════════ */
878
883
 
879
884
  .rte-link-dialog {
880
- position: absolute;
881
- top: 100%;
882
- left: 0;
883
885
  z-index: 1000;
884
- background: white;
886
+ background: var(--rte-content-bg, white);
885
887
  border: 1px solid var(--rte-border-color);
886
- border-radius: 8px;
887
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
888
- padding: 16px;
888
+ border-radius: 10px;
889
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.16);
890
+ padding: 16px 16px 14px;
889
891
  min-width: 320px;
890
- max-width: 400px;
892
+ max-width: 380px;
893
+ box-sizing: border-box;
891
894
  }
892
895
 
893
- .rte-link-dialog-title {
894
- font-size: 13px;
895
- font-weight: 600;
896
- margin-bottom: 12px;
896
+ /* Floating variant: positioned via portal on document.body with position:fixed (inline) */
897
+ .rte-link-dialog-floating {
898
+ position: fixed;
899
+ }
900
+
901
+ /* Close button (top-right) */
902
+ .rte-link-dialog-close {
903
+ position: absolute;
904
+ top: 10px;
905
+ right: 10px;
906
+ display: flex;
907
+ align-items: center;
908
+ justify-content: center;
909
+ width: 24px;
910
+ height: 24px;
911
+ border: none;
912
+ background: transparent;
913
+ border-radius: 4px;
914
+ cursor: pointer;
915
+ color: var(--rte-text-secondary);
916
+ transition: all 0.15s ease;
917
+ }
918
+
919
+ .rte-link-dialog-close:hover {
920
+ background: var(--rte-button-hover-bg);
897
921
  color: var(--rte-text-color);
898
922
  }
899
923
 
@@ -918,41 +942,75 @@
918
942
  font-size: 13px;
919
943
  font-family: var(--rte-font-family);
920
944
  outline: none;
921
- background: white;
945
+ background: var(--rte-content-bg, white);
922
946
  color: var(--rte-text-color);
947
+ box-sizing: border-box;
923
948
  }
924
949
 
925
950
  .rte-link-dialog-input:focus,
926
951
  .rte-link-dialog-select:focus {
927
952
  border-color: var(--rte-primary-color);
928
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
953
+ box-shadow: 0 0 0 2px var(--rte-primary-light);
954
+ }
955
+
956
+ .rte-link-dialog-input:disabled {
957
+ opacity: 0.5;
958
+ cursor: not-allowed;
959
+ }
960
+
961
+ /* Advanced section */
962
+ .rte-link-dialog-advanced-section {
963
+ margin-top: 2px;
929
964
  }
930
965
 
931
966
  .rte-link-dialog-toggle {
932
- background: none;
967
+ background: var(--rte-toolbar-bg, #f5f5f5);
933
968
  border: none;
934
- padding: 4px 0;
969
+ padding: 6px 10px;
935
970
  font-size: 12px;
936
- color: var(--rte-primary-color);
971
+ font-weight: 500;
972
+ color: var(--rte-text-color);
937
973
  cursor: pointer;
938
974
  font-family: var(--rte-font-family);
939
- margin-bottom: 8px;
975
+ border-radius: 5px;
976
+ width: 100%;
977
+ text-align: left;
978
+ transition: background 0.15s;
940
979
  }
941
980
 
942
981
  .rte-link-dialog-toggle:hover {
943
- text-decoration: underline;
982
+ background: var(--rte-button-hover-bg);
944
983
  }
945
984
 
946
985
  .rte-link-dialog-advanced {
947
- border-top: 1px solid var(--rte-border-color);
948
986
  padding-top: 10px;
949
987
  margin-top: 4px;
950
988
  }
951
989
 
990
+ /* Checkbox row (e.g. "Open in new tab") */
991
+ .rte-link-dialog-checkbox-row {
992
+ display: flex;
993
+ align-items: center;
994
+ gap: 6px;
995
+ cursor: pointer;
996
+ user-select: none;
997
+ font-size: 13px;
998
+ color: var(--rte-text-color);
999
+ padding: 4px 0;
1000
+ }
1001
+
1002
+ .rte-link-dialog-checkbox-row input[type="checkbox"] {
1003
+ width: 16px;
1004
+ height: 16px;
1005
+ cursor: pointer;
1006
+ accent-color: var(--rte-primary-color);
1007
+ }
1008
+
952
1009
  .rte-link-dialog-actions {
953
1010
  display: flex;
954
1011
  gap: 8px;
955
1012
  margin-top: 14px;
1013
+ align-items: center;
956
1014
  }
957
1015
 
958
1016
  .rte-link-dialog-btn {
@@ -963,7 +1021,7 @@
963
1021
  font-weight: 500;
964
1022
  cursor: pointer;
965
1023
  font-family: var(--rte-font-family);
966
- background: white;
1024
+ background: var(--rte-content-bg, white);
967
1025
  color: var(--rte-text-color);
968
1026
  transition: all 0.15s;
969
1027
  }
@@ -988,12 +1046,33 @@
988
1046
  }
989
1047
 
990
1048
  .rte-link-dialog-btn-danger {
991
- color: #dc2626;
992
- border-color: #fca5a5;
1049
+ color: var(--rte-danger-color);
1050
+ border-color: var(--rte-danger-border);
993
1051
  }
994
1052
 
995
1053
  .rte-link-dialog-btn-danger:hover {
996
- background: #fef2f2;
1054
+ background: var(--rte-danger-light);
1055
+ }
1056
+
1057
+ /* ═══════════════════════════════════════════════════════════════════════
1058
+ Inline code, sub, sup styles
1059
+ ═══════════════════════════════════════════════════════════════════ */
1060
+
1061
+ /* ═══════════════════════════════════════════════════════════════════════
1062
+ Image Styles
1063
+ ═══════════════════════════════════════════════════════════════════ */
1064
+
1065
+ .rte-image {
1066
+ max-width: 370px;
1067
+ height: auto;
1068
+ display: block;
1069
+ margin: 8px auto;
1070
+ object-fit: contain;
1071
+ border-radius: 4px;
1072
+ }
1073
+
1074
+ .rte-image-uploading {
1075
+ opacity: 0.5;
997
1076
  }
998
1077
 
999
1078
  /* ═══════════════════════════════════════════════════════════════════════
package/dist/types.d.ts CHANGED
@@ -79,5 +79,7 @@ export interface EditorProps {
79
79
  primaryColor?: string;
80
80
  };
81
81
  onImageUpload?: (file: File) => Promise<string>;
82
+ settings?: import('./utils/settings').EditorSettings;
83
+ settingsOptions?: import('./utils/settings').BuildPluginsOptions;
82
84
  }
83
85
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,KAAK,CAAC,YAAY,CAAC;IACvF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC;IAE5C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7D,YAAY,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,aAAa,CAAC;IAChC,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACzE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC1E,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,OAAO,CAAC;IAEvB,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,aAAa,CAAC;IAClD,UAAU,EAAE,MAAM,MAAM,CAAC;IAEzB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IACxF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CACzH;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAE/G,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC;IAEzF,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAE5C,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Entfernt alle Formatierungen aus der aktuellen Selection
2
+ * Removes all formatting from the current selection
3
3
  */
4
4
  export declare function clearFormatting(selection: Selection): void;
5
5
  /**
6
- * Entfernt nur Textfarbe
6
+ * Removes only text color
7
7
  */
8
8
  export declare function clearTextColor(selection: Selection): void;
9
9
  /**
10
- * Entfernt nur Hintergrundfarbe
10
+ * Removes only background color
11
11
  */
12
12
  export declare function clearBackgroundColor(selection: Selection): void;
13
13
  /**
@@ -15,7 +15,7 @@ export declare function clearBackgroundColor(selection: Selection): void;
15
15
  */
16
16
  export declare function clearFontSize(selection: Selection): void;
17
17
  /**
18
- * Entfernt Links (behält Text)
18
+ * Removes links (keeps text)
19
19
  */
20
20
  export declare function clearLinks(selection: Selection): void;
21
21
  //# sourceMappingURL=clearFormatting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/utils/content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAc,MAAM,UAAU,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAqVhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,WAAW,EACtB,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC,EACF,qBAAqB,CAAC,EAAE,CACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,CAAC,SAAS,KACxB,KAAK,CAAC,YAAY,GACxB,IAAI,CAuHN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAIlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAI5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAI/D"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/utils/content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAc,MAAM,UAAU,CAAC;AAIrD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAqVhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CACxB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,WAAW,EACtB,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC,EACF,qBAAqB,CAAC,EAAE,CACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,CAAC,SAAS,KACxB,KAAK,CAAC,YAAY,GACxB,IAAI,CAoHN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAIlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAI5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAI/D"}
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Erhöht den Einrückungs-Level eines List-Items (Tab)
2
+ * Increases the indent level of a list item (Tab)
3
3
  */
4
4
  export declare function indentListItem(selection: Selection): boolean;
5
5
  /**
6
- * Reduziert den Einrückungs-Level eines List-Items (Shift+Tab)
6
+ * Decreases the indent level of a list item (Shift+Tab)
7
7
  */
8
8
  export declare function outdentListItem(selection: Selection): boolean;
9
9
  //# sourceMappingURL=listIndent.d.ts.map
@@ -0,0 +1,59 @@
1
+ import { Plugin } from "../types";
2
+ import { LinkCustomField } from "../plugins/linkDialog";
3
+ export interface EditorSettings {
4
+ format?: {
5
+ bold?: boolean;
6
+ italic?: boolean;
7
+ underline?: boolean;
8
+ strikethrough?: boolean;
9
+ code?: boolean;
10
+ subscript?: boolean;
11
+ superscript?: boolean;
12
+ bulletList?: boolean;
13
+ numberedList?: boolean;
14
+ quote?: boolean;
15
+ codeBlock?: boolean;
16
+ check?: boolean;
17
+ /** Heading levels to enable, e.g. ["h1", "h2", "h3"] */
18
+ typography?: string[];
19
+ /** Color palette for text color, e.g. ["#000", "#ff0000"] */
20
+ colors?: string[];
21
+ /** Enable font size dropdown */
22
+ fontSize?: boolean;
23
+ /** Alignment options, e.g. ["left", "center", "right", "justify", "indent", "outdent"] */
24
+ alignment?: string[];
25
+ };
26
+ link?: {
27
+ external?: boolean;
28
+ internal?: boolean;
29
+ };
30
+ table?: {
31
+ enabled?: boolean;
32
+ };
33
+ image?: {
34
+ enabled?: boolean;
35
+ };
36
+ }
37
+ /** Default: everything enabled. */
38
+ export declare const defaultEditorSettings: EditorSettings;
39
+ export interface BuildPluginsOptions {
40
+ /** Callback for image uploads (required when image.enabled is true). */
41
+ onImageUpload?: (file: File) => Promise<string>;
42
+ /** Custom fields for the advanced link dialog (e.g. urlExtra, pageRef). */
43
+ linkCustomFields?: LinkCustomField[];
44
+ /** Custom font sizes for the font size dropdown. */
45
+ fontSizes?: number[];
46
+ }
47
+ /**
48
+ * Builds a Plugin[] array from an EditorSettings object.
49
+ *
50
+ * Usage:
51
+ * ```ts
52
+ * const plugins = buildPluginsFromSettings(settings, {
53
+ * onImageUpload: handleUpload,
54
+ * linkCustomFields: [{ key: 'urlExtra', ... }],
55
+ * });
56
+ * ```
57
+ */
58
+ export declare function buildPluginsFromSettings(settings?: EditorSettings, options?: BuildPluginsOptions): Plugin[];
59
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/utils/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAmBlC,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQlF,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,wDAAwD;QACxD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,6DAA6D;QAC7D,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,gCAAgC;QAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,0FAA0F;QAC1F,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,IAAI,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACL;AAED,mCAAmC;AACnC,eAAO,MAAM,qBAAqB,EAAE,cAgCnC,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAChC,wEAAwE;IACxE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,GAAE,cAAsC,EAChD,OAAO,GAAE,mBAAwB,GAClC,MAAM,EAAE,CAgFV"}
@@ -4,15 +4,15 @@ import { EditorAPI } from '../types';
4
4
  */
5
5
  export declare function getCurrentFontSize(editor: EditorAPI): string | undefined;
6
6
  /**
7
- * Liest die aktuelle Textfarbe aus dem DOM an der Cursor-Position
7
+ * Reads the current text color from the DOM at the cursor position
8
8
  */
9
9
  export declare function getCurrentTextColor(editor: EditorAPI): string | undefined;
10
10
  /**
11
- * Liest die aktuelle Hintergrundfarbe aus dem DOM an der Cursor-Position
11
+ * Reads the current background color from the DOM at the cursor position
12
12
  */
13
13
  export declare function getCurrentBackgroundColor(editor: EditorAPI): string | undefined;
14
14
  /**
15
- * Liest das aktuelle Heading-Level aus dem DOM an der Cursor-Position
15
+ * Reads the current heading level from the DOM at the cursor position
16
16
  */
17
17
  export declare function getCurrentHeading(editor: EditorAPI, availableHeadings: string[]): string | undefined;
18
18
  //# sourceMappingURL=stateReflection.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@overlap/rte",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "A lightweight, extensible Rich Text Editor for React",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",