overtype 2.3.5 → 2.3.6

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,6 +1,6 @@
1
1
  # OverType
2
2
 
3
- A lightweight markdown editor library with perfect WYSIWYG alignment using an invisible textarea overlay technique. Includes optional toolbar. ~118KB minified with all features.
3
+ A lightweight markdown editor library with perfect WYSIWYG alignment using an invisible textarea overlay technique. Includes optional toolbar. ~117KB minified with all features.
4
4
 
5
5
  ## Live Examples
6
6
 
@@ -19,7 +19,7 @@ A lightweight markdown editor library with perfect WYSIWYG alignment using an in
19
19
  - ⌨️ **Keyboard shortcuts** - Common markdown shortcuts (Cmd/Ctrl+B for bold, etc.)
20
20
  - 📱 **Mobile optimized** - Responsive design with mobile-specific styles
21
21
  - 🔄 **DOM persistence aware** - Recovers from existing DOM (perfect for HyperClay and similar platforms)
22
- - 🚀 **Lightweight** - ~118KB minified
22
+ - 🚀 **Lightweight** - ~117KB minified
23
23
  - 🎯 **Optional toolbar** - Clean, minimal toolbar with all essential formatting
24
24
  - ✨ **Smart shortcuts** - Keyboard shortcuts with selection preservation
25
25
  - 📝 **Smart list continuation** - GitHub-style automatic list continuation on Enter
@@ -35,7 +35,7 @@ We overlap an invisible textarea on top of styled output, giving the illusion of
35
35
 
36
36
  | Feature | OverType | HyperMD | Milkdown | TUI Editor | EasyMDE |
37
37
  |---------|----------|---------|----------|------------|---------|
38
- | **Size** | ~118KB | 364.02 KB | 344.51 KB | 560.99 KB | 323.69 KB |
38
+ | **Size** | ~117KB | 364.02 KB | 344.51 KB | 560.99 KB | 323.69 KB |
39
39
  | **Dependencies** | Bundled | CodeMirror | ProseMirror + plugins | Multiple libs | CodeMirror |
40
40
  | **Setup** | Single file | Complex config | Build step required | Complex config | Moderate |
41
41
  | **Approach** | Invisible textarea | ContentEditable | ContentEditable | ContentEditable | CodeMirror |
@@ -780,7 +780,7 @@ Special thanks to:
780
780
  - [Travis Bell](https://github.com/travisbell) - Reported keyboard shortcuts bug in ESM build ([#80](https://github.com/panphora/overtype/issues/80))
781
781
  - [fab2713](https://github.com/fab2713) - Reported italic rendering in lists ([#81](https://github.com/panphora/overtype/issues/81)), reinit maxHeight ([#82](https://github.com/panphora/overtype/issues/82)), placeholder visibility ([#83](https://github.com/panphora/overtype/issues/83)), suggested auto theme ([#84](https://github.com/panphora/overtype/issues/84)), relative URL prefix ([#85](https://github.com/panphora/overtype/issues/85)), minification improvements ([#94](https://github.com/panphora/overtype/issues/94))
782
782
  - [oooo-ps](https://github.com/oooo-ps) - Reported remote script loading issue ([#86](https://github.com/panphora/overtype/issues/86))
783
- - [ddarfantasy](https://github.com/ddarfantasy) - Reported text misalignment on longer lines ([#91](https://github.com/panphora/overtype/issues/91))
783
+ - [ddarfantasy](https://github.com/ddarfantasy), [ThaUnknown](https://github.com/ThaUnknown) - Reported and debugged text misalignment caused by CSS framework font resets ([#91](https://github.com/panphora/overtype/issues/91))
784
784
  - [milen-yordanov](https://github.com/milen-yordanov) - Reported code block colors ignoring theme in preview mode ([#97](https://github.com/panphora/overtype/issues/97))
785
785
  - [asalimian](https://github.com/asalimian) - Reported spellcheck being disabled ([#98](https://github.com/panphora/overtype/issues/98))
786
786
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * OverType v2.3.5
2
+ * OverType v2.3.6
3
3
  * A lightweight markdown editor library with perfect WYSIWYG alignment
4
4
  * @license MIT
5
5
  * @author David Miranda
@@ -1106,9 +1106,9 @@ function generateStyles(options = {}) {
1106
1106
  left: 0 !important;
1107
1107
  width: 100% !important;
1108
1108
  height: 100% !important;
1109
-
1109
+
1110
1110
  /* Font properties - any difference breaks alignment */
1111
- font-family: ${fontFamily} !important;
1111
+ font-family: var(--instance-font-family, ${fontFamily}) !important;
1112
1112
  font-variant-ligatures: none !important; /* keep metrics stable for code */
1113
1113
  font-size: var(--instance-font-size, ${fontSize}) !important;
1114
1114
  line-height: var(--instance-line-height, ${lineHeight}) !important;
@@ -1215,15 +1215,12 @@ function generateStyles(options = {}) {
1215
1215
  z-index: 0 !important;
1216
1216
  pointer-events: none !important;
1217
1217
  user-select: none !important;
1218
- font-family: ${fontFamily} !important;
1218
+ font-family: var(--instance-font-family, ${fontFamily}) !important;
1219
1219
  font-size: var(--instance-font-size, ${fontSize}) !important;
1220
1220
  line-height: var(--instance-line-height, ${lineHeight}) !important;
1221
1221
  padding: var(--instance-padding, ${padding}) !important;
1222
1222
  box-sizing: border-box !important;
1223
1223
  color: var(--placeholder, #999) !important;
1224
- overflow: hidden !important;
1225
- white-space: nowrap !important;
1226
- text-overflow: ellipsis !important;
1227
1224
  }
1228
1225
 
1229
1226
  /* Preview layer styles */
@@ -1376,7 +1373,7 @@ function generateStyles(options = {}) {
1376
1373
  .overtype-wrapper .overtype-preview pre code {
1377
1374
  background: transparent !important;
1378
1375
  color: var(--code, #0d3b66) !important;
1379
- font-family: ${fontFamily} !important; /* Match textarea font exactly for alignment */
1376
+ font-family: var(--instance-font-family, ${fontFamily}) !important; /* Match textarea font exactly for alignment */
1380
1377
  }
1381
1378
 
1382
1379
  /* Blockquotes */
@@ -1461,26 +1458,20 @@ function generateStyles(options = {}) {
1461
1458
  .overtype-stats {
1462
1459
  height: 40px !important;
1463
1460
  padding: 0 20px !important;
1464
- background: #f8f9fa !important;
1465
- border-top: 1px solid #e0e0e0 !important;
1461
+ background: var(--bg-secondary, #f8f9fa) !important;
1462
+ border-top: 1px solid var(--border, #e0e0e0) !important;
1466
1463
  display: flex !important;
1467
1464
  justify-content: space-between !important;
1468
1465
  align-items: center !important;
1469
1466
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
1470
1467
  font-size: 0.85rem !important;
1471
- color: #666 !important;
1468
+ color: var(--text-secondary, #666) !important;
1472
1469
  flex-shrink: 0 !important; /* Don't shrink */
1473
1470
  z-index: 10001 !important; /* Above link tooltip */
1474
1471
  position: relative !important; /* Enable z-index */
1475
1472
  }
1476
-
1477
- /* Dark theme stats bar */
1478
- .overtype-container[data-theme="cave"] .overtype-stats {
1479
- background: var(--bg-secondary, #1D2D3E) !important;
1480
- border-top: 1px solid rgba(197, 221, 232, 0.1) !important;
1481
- color: var(--text, #c5dde8) !important;
1482
- }
1483
-
1473
+
1474
+
1484
1475
  .overtype-stats .overtype-stat {
1485
1476
  display: flex !important;
1486
1477
  align-items: center !important;
@@ -4825,15 +4816,7 @@ var _OverType = class _OverType {
4825
4816
  return;
4826
4817
  }
4827
4818
  this.wrapper._instance = this;
4828
- if (this.options.fontSize) {
4829
- this.wrapper.style.setProperty("--instance-font-size", this.options.fontSize);
4830
- }
4831
- if (this.options.lineHeight) {
4832
- this.wrapper.style.setProperty("--instance-line-height", String(this.options.lineHeight));
4833
- }
4834
- if (this.options.padding) {
4835
- this.wrapper.style.setProperty("--instance-padding", this.options.padding);
4836
- }
4819
+ this._applyInstanceCSSVars();
4837
4820
  this._configureTextarea();
4838
4821
  this._applyOptions();
4839
4822
  }
@@ -4881,15 +4864,7 @@ var _OverType = class _OverType {
4881
4864
  }
4882
4865
  this.wrapper = document.createElement("div");
4883
4866
  this.wrapper.className = "overtype-wrapper";
4884
- if (this.options.fontSize) {
4885
- this.wrapper.style.setProperty("--instance-font-size", this.options.fontSize);
4886
- }
4887
- if (this.options.lineHeight) {
4888
- this.wrapper.style.setProperty("--instance-line-height", String(this.options.lineHeight));
4889
- }
4890
- if (this.options.padding) {
4891
- this.wrapper.style.setProperty("--instance-padding", this.options.padding);
4892
- }
4867
+ this._applyInstanceCSSVars();
4893
4868
  this.wrapper._instance = this;
4894
4869
  this.textarea = document.createElement("textarea");
4895
4870
  this.textarea.className = "overtype-input";
@@ -5003,11 +4978,34 @@ var _OverType = class _OverType {
5003
4978
  Object.assign(this.actionsById, buildActionsMap([toolbarButtons.upload]));
5004
4979
  }
5005
4980
  }
4981
+ /**
4982
+ * Apply instance-specific styles via CSS custom properties on the wrapper.
4983
+ * Called from init paths and from _applyOptions so reinit() propagates
4984
+ * font/padding changes.
4985
+ * @private
4986
+ */
4987
+ _applyInstanceCSSVars() {
4988
+ if (!this.wrapper)
4989
+ return;
4990
+ if (this.options.fontSize) {
4991
+ this.wrapper.style.setProperty("--instance-font-size", this.options.fontSize);
4992
+ }
4993
+ if (this.options.lineHeight) {
4994
+ this.wrapper.style.setProperty("--instance-line-height", String(this.options.lineHeight));
4995
+ }
4996
+ if (this.options.padding) {
4997
+ this.wrapper.style.setProperty("--instance-padding", this.options.padding);
4998
+ }
4999
+ if (this.options.fontFamily) {
5000
+ this.wrapper.style.setProperty("--instance-font-family", this.options.fontFamily);
5001
+ }
5002
+ }
5006
5003
  /**
5007
5004
  * Apply options to the editor
5008
5005
  * @private
5009
5006
  */
5010
5007
  _applyOptions() {
5008
+ this._applyInstanceCSSVars();
5011
5009
  if (this.options.autofocus) {
5012
5010
  this.textarea.focus();
5013
5011
  }