tetrons 2.3.72 → 2.3.73

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,29 +1,21 @@
1
- // src/components/tetrons/EditorContent.tsx
2
- import React14, { useEffect as useEffect8, useRef as useRef7, useState as useState9 } from "react";
3
- import {
4
- useEditor,
5
- EditorContent as TiptapEditorContent
6
- } from "@tiptap/react";
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/tetrons/EditorContent.tsx
2
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
3
+
7
4
 
8
- // src/utils/getEnv.ts
9
- function getEnv(key, fallback = "") {
10
- if (typeof process !== "undefined") {
11
- return process.env[key] || fallback;
12
- }
13
- return fallback;
14
- }
5
+
6
+ var _react3 = require('@tiptap/react');
15
7
 
16
8
  // node_modules/@tiptap/extension-document/dist/index.js
17
- import { Node } from "@tiptap/core";
18
- var Document = Node.create({
9
+ var _core = require('@tiptap/core');
10
+ var Document = _core.Node.create({
19
11
  name: "doc",
20
12
  topNode: true,
21
13
  content: "block+"
22
14
  });
23
15
 
24
16
  // node_modules/@tiptap/extension-paragraph/dist/index.js
25
- import { Node as Node2, mergeAttributes } from "@tiptap/core";
26
- var Paragraph = Node2.create({
17
+
18
+ var Paragraph = _core.Node.create({
27
19
  name: "paragraph",
28
20
  priority: 1e3,
29
21
  addOptions() {
@@ -39,7 +31,7 @@ var Paragraph = Node2.create({
39
31
  ];
40
32
  },
41
33
  renderHTML({ HTMLAttributes }) {
42
- return ["p", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
34
+ return ["p", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
43
35
  },
44
36
  addCommands() {
45
37
  return {
@@ -56,14 +48,14 @@ var Paragraph = Node2.create({
56
48
  });
57
49
 
58
50
  // node_modules/@tiptap/extension-text/dist/index.js
59
- import { Node as Node3 } from "@tiptap/core";
60
- var Text = Node3.create({
51
+
52
+ var Text = _core.Node.create({
61
53
  name: "text",
62
54
  group: "inline"
63
55
  });
64
56
 
65
57
  // node_modules/@tiptap/extension-history/dist/index.js
66
- import { Extension } from "@tiptap/core";
58
+
67
59
 
68
60
  // node_modules/rope-sequence/dist/index.js
69
61
  var GOOD_LEAF_SIZE = 200;
@@ -5683,7 +5675,7 @@ var undoNoScroll = buildCommand(false, false);
5683
5675
  var redoNoScroll = buildCommand(true, false);
5684
5676
 
5685
5677
  // node_modules/@tiptap/extension-history/dist/index.js
5686
- var History = Extension.create({
5678
+ var History = _core.Extension.create({
5687
5679
  name: "history",
5688
5680
  addOptions() {
5689
5681
  return {
@@ -5719,12 +5711,12 @@ var History = Extension.create({
5719
5711
  });
5720
5712
 
5721
5713
  // node_modules/@tiptap/extension-bold/dist/index.js
5722
- import { Mark as Mark2, mergeAttributes as mergeAttributes2, markInputRule, markPasteRule } from "@tiptap/core";
5714
+
5723
5715
  var starInputRegex = /(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))$/;
5724
5716
  var starPasteRegex = /(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))/g;
5725
5717
  var underscoreInputRegex = /(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))$/;
5726
5718
  var underscorePasteRegex = /(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))/g;
5727
- var Bold = Mark2.create({
5719
+ var Bold = _core.Mark.create({
5728
5720
  name: "bold",
5729
5721
  addOptions() {
5730
5722
  return {
@@ -5751,7 +5743,7 @@ var Bold = Mark2.create({
5751
5743
  ];
5752
5744
  },
5753
5745
  renderHTML({ HTMLAttributes }) {
5754
- return ["strong", mergeAttributes2(this.options.HTMLAttributes, HTMLAttributes), 0];
5746
+ return ["strong", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
5755
5747
  },
5756
5748
  addCommands() {
5757
5749
  return {
@@ -5774,11 +5766,11 @@ var Bold = Mark2.create({
5774
5766
  },
5775
5767
  addInputRules() {
5776
5768
  return [
5777
- markInputRule({
5769
+ _core.markInputRule.call(void 0, {
5778
5770
  find: starInputRegex,
5779
5771
  type: this.type
5780
5772
  }),
5781
- markInputRule({
5773
+ _core.markInputRule.call(void 0, {
5782
5774
  find: underscoreInputRegex,
5783
5775
  type: this.type
5784
5776
  })
@@ -5786,11 +5778,11 @@ var Bold = Mark2.create({
5786
5778
  },
5787
5779
  addPasteRules() {
5788
5780
  return [
5789
- markPasteRule({
5781
+ _core.markPasteRule.call(void 0, {
5790
5782
  find: starPasteRegex,
5791
5783
  type: this.type
5792
5784
  }),
5793
- markPasteRule({
5785
+ _core.markPasteRule.call(void 0, {
5794
5786
  find: underscorePasteRegex,
5795
5787
  type: this.type
5796
5788
  })
@@ -5799,12 +5791,12 @@ var Bold = Mark2.create({
5799
5791
  });
5800
5792
 
5801
5793
  // node_modules/@tiptap/extension-italic/dist/index.js
5802
- import { Mark as Mark3, mergeAttributes as mergeAttributes3, markInputRule as markInputRule2, markPasteRule as markPasteRule2 } from "@tiptap/core";
5794
+
5803
5795
  var starInputRegex2 = /(?:^|\s)(\*(?!\s+\*)((?:[^*]+))\*(?!\s+\*))$/;
5804
5796
  var starPasteRegex2 = /(?:^|\s)(\*(?!\s+\*)((?:[^*]+))\*(?!\s+\*))/g;
5805
5797
  var underscoreInputRegex2 = /(?:^|\s)(_(?!\s+_)((?:[^_]+))_(?!\s+_))$/;
5806
5798
  var underscorePasteRegex2 = /(?:^|\s)(_(?!\s+_)((?:[^_]+))_(?!\s+_))/g;
5807
- var Italic = Mark3.create({
5799
+ var Italic = _core.Mark.create({
5808
5800
  name: "italic",
5809
5801
  addOptions() {
5810
5802
  return {
@@ -5830,7 +5822,7 @@ var Italic = Mark3.create({
5830
5822
  ];
5831
5823
  },
5832
5824
  renderHTML({ HTMLAttributes }) {
5833
- return ["em", mergeAttributes3(this.options.HTMLAttributes, HTMLAttributes), 0];
5825
+ return ["em", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
5834
5826
  },
5835
5827
  addCommands() {
5836
5828
  return {
@@ -5853,11 +5845,11 @@ var Italic = Mark3.create({
5853
5845
  },
5854
5846
  addInputRules() {
5855
5847
  return [
5856
- markInputRule2({
5848
+ _core.markInputRule.call(void 0, {
5857
5849
  find: starInputRegex2,
5858
5850
  type: this.type
5859
5851
  }),
5860
- markInputRule2({
5852
+ _core.markInputRule.call(void 0, {
5861
5853
  find: underscoreInputRegex2,
5862
5854
  type: this.type
5863
5855
  })
@@ -5865,11 +5857,11 @@ var Italic = Mark3.create({
5865
5857
  },
5866
5858
  addPasteRules() {
5867
5859
  return [
5868
- markPasteRule2({
5860
+ _core.markPasteRule.call(void 0, {
5869
5861
  find: starPasteRegex2,
5870
5862
  type: this.type
5871
5863
  }),
5872
- markPasteRule2({
5864
+ _core.markPasteRule.call(void 0, {
5873
5865
  find: underscorePasteRegex2,
5874
5866
  type: this.type
5875
5867
  })
@@ -5878,13 +5870,13 @@ var Italic = Mark3.create({
5878
5870
  });
5879
5871
 
5880
5872
  // src/components/tetrons/EditorContent.tsx
5881
- import Underline from "@tiptap/extension-underline";
5873
+ var _extensionunderline = require('@tiptap/extension-underline'); var _extensionunderline2 = _interopRequireDefault(_extensionunderline);
5882
5874
 
5883
5875
  // node_modules/@tiptap/extension-strike/dist/index.js
5884
- import { Mark as Mark4, mergeAttributes as mergeAttributes4, markInputRule as markInputRule3, markPasteRule as markPasteRule3 } from "@tiptap/core";
5876
+
5885
5877
  var inputRegex = /(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))$/;
5886
5878
  var pasteRegex = /(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))/g;
5887
- var Strike = Mark4.create({
5879
+ var Strike = _core.Mark.create({
5888
5880
  name: "strike",
5889
5881
  addOptions() {
5890
5882
  return {
@@ -5910,7 +5902,7 @@ var Strike = Mark4.create({
5910
5902
  ];
5911
5903
  },
5912
5904
  renderHTML({ HTMLAttributes }) {
5913
- return ["s", mergeAttributes4(this.options.HTMLAttributes, HTMLAttributes), 0];
5905
+ return ["s", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
5914
5906
  },
5915
5907
  addCommands() {
5916
5908
  return {
@@ -5932,7 +5924,7 @@ var Strike = Mark4.create({
5932
5924
  },
5933
5925
  addInputRules() {
5934
5926
  return [
5935
- markInputRule3({
5927
+ _core.markInputRule.call(void 0, {
5936
5928
  find: inputRegex,
5937
5929
  type: this.type
5938
5930
  })
@@ -5940,7 +5932,7 @@ var Strike = Mark4.create({
5940
5932
  },
5941
5933
  addPasteRules() {
5942
5934
  return [
5943
- markPasteRule3({
5935
+ _core.markPasteRule.call(void 0, {
5944
5936
  find: pasteRegex,
5945
5937
  type: this.type
5946
5938
  })
@@ -5949,10 +5941,10 @@ var Strike = Mark4.create({
5949
5941
  });
5950
5942
 
5951
5943
  // node_modules/@tiptap/extension-code/dist/index.js
5952
- import { Mark as Mark5, mergeAttributes as mergeAttributes5, markInputRule as markInputRule4, markPasteRule as markPasteRule4 } from "@tiptap/core";
5944
+
5953
5945
  var inputRegex2 = /(^|[^`])`([^`]+)`(?!`)/;
5954
5946
  var pasteRegex2 = /(^|[^`])`([^`]+)`(?!`)/g;
5955
- var Code = Mark5.create({
5947
+ var Code = _core.Mark.create({
5956
5948
  name: "code",
5957
5949
  addOptions() {
5958
5950
  return {
@@ -5968,7 +5960,7 @@ var Code = Mark5.create({
5968
5960
  ];
5969
5961
  },
5970
5962
  renderHTML({ HTMLAttributes }) {
5971
- return ["code", mergeAttributes5(this.options.HTMLAttributes, HTMLAttributes), 0];
5963
+ return ["code", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
5972
5964
  },
5973
5965
  addCommands() {
5974
5966
  return {
@@ -5990,7 +5982,7 @@ var Code = Mark5.create({
5990
5982
  },
5991
5983
  addInputRules() {
5992
5984
  return [
5993
- markInputRule4({
5985
+ _core.markInputRule.call(void 0, {
5994
5986
  find: inputRegex2,
5995
5987
  type: this.type
5996
5988
  })
@@ -5998,7 +5990,7 @@ var Code = Mark5.create({
5998
5990
  },
5999
5991
  addPasteRules() {
6000
5992
  return [
6001
- markPasteRule4({
5993
+ _core.markPasteRule.call(void 0, {
6002
5994
  find: pasteRegex2,
6003
5995
  type: this.type
6004
5996
  })
@@ -6007,9 +5999,9 @@ var Code = Mark5.create({
6007
5999
  });
6008
6000
 
6009
6001
  // node_modules/@tiptap/extension-blockquote/dist/index.js
6010
- import { Node as Node5, mergeAttributes as mergeAttributes6, wrappingInputRule } from "@tiptap/core";
6002
+
6011
6003
  var inputRegex3 = /^\s*>\s$/;
6012
- var Blockquote = Node5.create({
6004
+ var Blockquote = _core.Node.create({
6013
6005
  name: "blockquote",
6014
6006
  addOptions() {
6015
6007
  return {
@@ -6025,7 +6017,7 @@ var Blockquote = Node5.create({
6025
6017
  ];
6026
6018
  },
6027
6019
  renderHTML({ HTMLAttributes }) {
6028
- return ["blockquote", mergeAttributes6(this.options.HTMLAttributes, HTMLAttributes), 0];
6020
+ return ["blockquote", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
6029
6021
  },
6030
6022
  addCommands() {
6031
6023
  return {
@@ -6047,7 +6039,7 @@ var Blockquote = Node5.create({
6047
6039
  },
6048
6040
  addInputRules() {
6049
6041
  return [
6050
- wrappingInputRule({
6042
+ _core.wrappingInputRule.call(void 0, {
6051
6043
  find: inputRegex3,
6052
6044
  type: this.type
6053
6045
  })
@@ -6056,8 +6048,8 @@ var Blockquote = Node5.create({
6056
6048
  });
6057
6049
 
6058
6050
  // node_modules/@tiptap/extension-hard-break/dist/index.js
6059
- import { Node as Node6, mergeAttributes as mergeAttributes7 } from "@tiptap/core";
6060
- var HardBreak = Node6.create({
6051
+
6052
+ var HardBreak = _core.Node.create({
6061
6053
  name: "hardBreak",
6062
6054
  addOptions() {
6063
6055
  return {
@@ -6075,7 +6067,7 @@ var HardBreak = Node6.create({
6075
6067
  ];
6076
6068
  },
6077
6069
  renderHTML({ HTMLAttributes }) {
6078
- return ["br", mergeAttributes7(this.options.HTMLAttributes, HTMLAttributes)];
6070
+ return ["br", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes)];
6079
6071
  },
6080
6072
  renderText() {
6081
6073
  return "\n";
@@ -6114,8 +6106,8 @@ var HardBreak = Node6.create({
6114
6106
  });
6115
6107
 
6116
6108
  // node_modules/@tiptap/extension-heading/dist/index.js
6117
- import { Node as Node7, mergeAttributes as mergeAttributes8, textblockTypeInputRule } from "@tiptap/core";
6118
- var Heading = Node7.create({
6109
+
6110
+ var Heading = _core.Node.create({
6119
6111
  name: "heading",
6120
6112
  addOptions() {
6121
6113
  return {
@@ -6143,7 +6135,7 @@ var Heading = Node7.create({
6143
6135
  renderHTML({ node, HTMLAttributes }) {
6144
6136
  const hasLevel = this.options.levels.includes(node.attrs.level);
6145
6137
  const level = hasLevel ? node.attrs.level : this.options.levels[0];
6146
- return [`h${level}`, mergeAttributes8(this.options.HTMLAttributes, HTMLAttributes), 0];
6138
+ return [`h${level}`, _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
6147
6139
  },
6148
6140
  addCommands() {
6149
6141
  return {
@@ -6171,7 +6163,7 @@ var Heading = Node7.create({
6171
6163
  },
6172
6164
  addInputRules() {
6173
6165
  return this.options.levels.map((level) => {
6174
- return textblockTypeInputRule({
6166
+ return _core.textblockTypeInputRule.call(void 0, {
6175
6167
  find: new RegExp(`^(#{${Math.min(...this.options.levels)},${level}})\\s$`),
6176
6168
  type: this.type,
6177
6169
  getAttributes: {
@@ -6183,8 +6175,8 @@ var Heading = Node7.create({
6183
6175
  });
6184
6176
 
6185
6177
  // node_modules/@tiptap/extension-horizontal-rule/dist/index.js
6186
- import { Node as Node8, mergeAttributes as mergeAttributes9, canInsertNode, isNodeSelection, nodeInputRule } from "@tiptap/core";
6187
- var HorizontalRule = Node8.create({
6178
+
6179
+ var HorizontalRule = _core.Node.create({
6188
6180
  name: "horizontalRule",
6189
6181
  addOptions() {
6190
6182
  return {
@@ -6196,12 +6188,12 @@ var HorizontalRule = Node8.create({
6196
6188
  return [{ tag: "hr" }];
6197
6189
  },
6198
6190
  renderHTML({ HTMLAttributes }) {
6199
- return ["hr", mergeAttributes9(this.options.HTMLAttributes, HTMLAttributes)];
6191
+ return ["hr", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes)];
6200
6192
  },
6201
6193
  addCommands() {
6202
6194
  return {
6203
6195
  setHorizontalRule: () => ({ chain, state }) => {
6204
- if (!canInsertNode(state, state.schema.nodes[this.name])) {
6196
+ if (!_core.canInsertNode.call(void 0, state, state.schema.nodes[this.name])) {
6205
6197
  return false;
6206
6198
  }
6207
6199
  const { selection } = state;
@@ -6214,7 +6206,7 @@ var HorizontalRule = Node8.create({
6214
6206
  }, {
6215
6207
  type: this.name
6216
6208
  });
6217
- } else if (isNodeSelection(selection)) {
6209
+ } else if (_core.isNodeSelection.call(void 0, selection)) {
6218
6210
  currentChain.insertContentAt($originTo.pos, {
6219
6211
  type: this.name
6220
6212
  });
@@ -6250,7 +6242,7 @@ var HorizontalRule = Node8.create({
6250
6242
  },
6251
6243
  addInputRules() {
6252
6244
  return [
6253
- nodeInputRule({
6245
+ _core.nodeInputRule.call(void 0, {
6254
6246
  find: /^(?:---|—-|___\s|\*\*\*\s)$/,
6255
6247
  type: this.type
6256
6248
  })
@@ -6259,16 +6251,16 @@ var HorizontalRule = Node8.create({
6259
6251
  });
6260
6252
 
6261
6253
  // src/components/tetrons/EditorContent.tsx
6262
- import TextAlign from "@tiptap/extension-text-align";
6263
- import Color from "@tiptap/extension-color";
6264
- import Highlight from "@tiptap/extension-highlight";
6265
- import Image2 from "@tiptap/extension-image";
6266
- import Link from "@tiptap/extension-link";
6267
- import TextStyle from "@tiptap/extension-text-style";
6254
+ var _extensiontextalign = require('@tiptap/extension-text-align'); var _extensiontextalign2 = _interopRequireDefault(_extensiontextalign);
6255
+ var _extensioncolor = require('@tiptap/extension-color'); var _extensioncolor2 = _interopRequireDefault(_extensioncolor);
6256
+ var _extensionhighlight = require('@tiptap/extension-highlight'); var _extensionhighlight2 = _interopRequireDefault(_extensionhighlight);
6257
+ var _extensionimage = require('@tiptap/extension-image'); var _extensionimage2 = _interopRequireDefault(_extensionimage);
6258
+ var _extensionlink = require('@tiptap/extension-link'); var _extensionlink2 = _interopRequireDefault(_extensionlink);
6259
+ var _extensiontextstyle = require('@tiptap/extension-text-style'); var _extensiontextstyle2 = _interopRequireDefault(_extensiontextstyle);
6268
6260
 
6269
6261
  // node_modules/@tiptap/extension-list-item/dist/index.js
6270
- import { Node as Node9, mergeAttributes as mergeAttributes10 } from "@tiptap/core";
6271
- var ListItem = Node9.create({
6262
+
6263
+ var ListItem = _core.Node.create({
6272
6264
  name: "listItem",
6273
6265
  addOptions() {
6274
6266
  return {
@@ -6287,7 +6279,7 @@ var ListItem = Node9.create({
6287
6279
  ];
6288
6280
  },
6289
6281
  renderHTML({ HTMLAttributes }) {
6290
- return ["li", mergeAttributes10(this.options.HTMLAttributes, HTMLAttributes), 0];
6282
+ return ["li", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
6291
6283
  },
6292
6284
  addKeyboardShortcuts() {
6293
6285
  return {
@@ -6299,11 +6291,11 @@ var ListItem = Node9.create({
6299
6291
  });
6300
6292
 
6301
6293
  // node_modules/@tiptap/extension-bullet-list/dist/index.js
6302
- import { Node as Node10, mergeAttributes as mergeAttributes11, wrappingInputRule as wrappingInputRule2 } from "@tiptap/core";
6294
+
6303
6295
  var ListItemName = "listItem";
6304
6296
  var TextStyleName = "textStyle";
6305
6297
  var inputRegex4 = /^\s*([-+*])\s$/;
6306
- var BulletList = Node10.create({
6298
+ var BulletList = _core.Node.create({
6307
6299
  name: "bulletList",
6308
6300
  addOptions() {
6309
6301
  return {
@@ -6323,7 +6315,7 @@ var BulletList = Node10.create({
6323
6315
  ];
6324
6316
  },
6325
6317
  renderHTML({ HTMLAttributes }) {
6326
- return ["ul", mergeAttributes11(this.options.HTMLAttributes, HTMLAttributes), 0];
6318
+ return ["ul", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
6327
6319
  },
6328
6320
  addCommands() {
6329
6321
  return {
@@ -6341,12 +6333,12 @@ var BulletList = Node10.create({
6341
6333
  };
6342
6334
  },
6343
6335
  addInputRules() {
6344
- let inputRule = wrappingInputRule2({
6336
+ let inputRule = _core.wrappingInputRule.call(void 0, {
6345
6337
  find: inputRegex4,
6346
6338
  type: this.type
6347
6339
  });
6348
6340
  if (this.options.keepMarks || this.options.keepAttributes) {
6349
- inputRule = wrappingInputRule2({
6341
+ inputRule = _core.wrappingInputRule.call(void 0, {
6350
6342
  find: inputRegex4,
6351
6343
  type: this.type,
6352
6344
  keepMarks: this.options.keepMarks,
@@ -6364,11 +6356,11 @@ var BulletList = Node10.create({
6364
6356
  });
6365
6357
 
6366
6358
  // node_modules/@tiptap/extension-ordered-list/dist/index.js
6367
- import { Node as Node11, mergeAttributes as mergeAttributes12, wrappingInputRule as wrappingInputRule3 } from "@tiptap/core";
6359
+
6368
6360
  var ListItemName2 = "listItem";
6369
6361
  var TextStyleName2 = "textStyle";
6370
6362
  var inputRegex5 = /^(\d+)\.\s$/;
6371
- var OrderedList = Node11.create({
6363
+ var OrderedList = _core.Node.create({
6372
6364
  name: "orderedList",
6373
6365
  addOptions() {
6374
6366
  return {
@@ -6405,7 +6397,7 @@ var OrderedList = Node11.create({
6405
6397
  },
6406
6398
  renderHTML({ HTMLAttributes }) {
6407
6399
  const { start, ...attributesWithoutStart } = HTMLAttributes;
6408
- return start === 1 ? ["ol", mergeAttributes12(this.options.HTMLAttributes, attributesWithoutStart), 0] : ["ol", mergeAttributes12(this.options.HTMLAttributes, HTMLAttributes), 0];
6400
+ return start === 1 ? ["ol", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, attributesWithoutStart), 0] : ["ol", _core.mergeAttributes.call(void 0, this.options.HTMLAttributes, HTMLAttributes), 0];
6409
6401
  },
6410
6402
  addCommands() {
6411
6403
  return {
@@ -6423,14 +6415,14 @@ var OrderedList = Node11.create({
6423
6415
  };
6424
6416
  },
6425
6417
  addInputRules() {
6426
- let inputRule = wrappingInputRule3({
6418
+ let inputRule = _core.wrappingInputRule.call(void 0, {
6427
6419
  find: inputRegex5,
6428
6420
  type: this.type,
6429
6421
  getAttributes: (match) => ({ start: +match[1] }),
6430
6422
  joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1]
6431
6423
  });
6432
6424
  if (this.options.keepMarks || this.options.keepAttributes) {
6433
- inputRule = wrappingInputRule3({
6425
+ inputRule = _core.wrappingInputRule.call(void 0, {
6434
6426
  find: inputRegex5,
6435
6427
  type: this.type,
6436
6428
  keepMarks: this.options.keepMarks,
@@ -6447,10 +6439,10 @@ var OrderedList = Node11.create({
6447
6439
  });
6448
6440
 
6449
6441
  // src/components/tetrons/EditorContent.tsx
6450
- import TableRow from "@tiptap/extension-table-row";
6451
- import TableCell from "@tiptap/extension-table-cell";
6452
- import TableHeader from "@tiptap/extension-table-header";
6453
- import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
6442
+ var _extensiontablerow = require('@tiptap/extension-table-row'); var _extensiontablerow2 = _interopRequireDefault(_extensiontablerow);
6443
+ var _extensiontablecell = require('@tiptap/extension-table-cell'); var _extensiontablecell2 = _interopRequireDefault(_extensiontablecell);
6444
+ var _extensiontableheader = require('@tiptap/extension-table-header'); var _extensiontableheader2 = _interopRequireDefault(_extensiontableheader);
6445
+ var _extensioncodeblocklowlight = require('@tiptap/extension-code-block-lowlight'); var _extensioncodeblocklowlight2 = _interopRequireDefault(_extensioncodeblocklowlight);
6454
6446
 
6455
6447
  // node_modules/highlight.js/es/languages/javascript.js
6456
6448
  var IDENT_RE = "[A-Za-z$_][0-9A-Za-z$_]*";
@@ -7968,14 +7960,14 @@ function typescript(hljs) {
7968
7960
  }
7969
7961
 
7970
7962
  // src/components/tetrons/EditorContent.tsx
7971
- import { createLowlight } from "lowlight";
7963
+ var _lowlight = require('lowlight');
7972
7964
 
7973
7965
  // src/utils/useTypo.ts
7974
- import { useEffect, useState } from "react";
7975
- import Typo from "typo-js";
7966
+
7967
+ var _typojs = require('typo-js'); var _typojs2 = _interopRequireDefault(_typojs);
7976
7968
  function useTypo() {
7977
- const [typo, setTypo] = useState(null);
7978
- useEffect(() => {
7969
+ const [typo, setTypo] = _react.useState.call(void 0, null);
7970
+ _react.useEffect.call(void 0, () => {
7979
7971
  async function loadDictionary() {
7980
7972
  const aff = await fetch("/dictionaries/index.aff").then(
7981
7973
  (res) => res.text()
@@ -7983,7 +7975,7 @@ function useTypo() {
7983
7975
  const dic = await fetch("/dictionaries/index.dic").then(
7984
7976
  (res) => res.text()
7985
7977
  );
7986
- const dictionary = new Typo("en_US", aff, dic, { platform: "any" });
7978
+ const dictionary = new (0, _typojs2.default)("en_US", aff, dic, { platform: "any" });
7987
7979
  setTypo(dictionary);
7988
7980
  }
7989
7981
  loadDictionary();
@@ -7992,9 +7984,9 @@ function useTypo() {
7992
7984
  }
7993
7985
 
7994
7986
  // src/components/tetrons/extensions/Spellcheck.ts
7995
- import { Mark as Mark6, markInputRule as markInputRule5 } from "@tiptap/core";
7987
+
7996
7988
  var wordMatchRegex = () => /(?:^|\s)([a-zA-Z]{2,})(?=\s|$)/g;
7997
- var Spellcheck = Mark6.create({
7989
+ var Spellcheck = _core.Mark.create({
7998
7990
  name: "spellcheck",
7999
7991
  addOptions() {
8000
7992
  return {
@@ -8003,7 +7995,7 @@ var Spellcheck = Mark6.create({
8003
7995
  },
8004
7996
  addInputRules() {
8005
7997
  return [
8006
- markInputRule5({
7998
+ _core.markInputRule.call(void 0, {
8007
7999
  find: wordMatchRegex(),
8008
8000
  type: this.type,
8009
8001
  getAttributes: (match) => this.options.spellcheckFn(match[1]) ? false : { "data-spellcheck": "true" }
@@ -8031,8 +8023,8 @@ var Spellcheck = Mark6.create({
8031
8023
  });
8032
8024
 
8033
8025
  // src/components/tetrons/toolbar/extensions/Comment.ts
8034
- import { Mark as Mark7, mergeAttributes as mergeAttributes13 } from "@tiptap/core";
8035
- var Comment = Mark7.create({
8026
+
8027
+ var Comment = _core.Mark.create({
8036
8028
  name: "comment",
8037
8029
  addOptions() {
8038
8030
  return {
@@ -8056,7 +8048,7 @@ var Comment = Mark7.create({
8056
8048
  renderHTML({ HTMLAttributes }) {
8057
8049
  return [
8058
8050
  "span",
8059
- mergeAttributes13(HTMLAttributes, {
8051
+ _core.mergeAttributes.call(void 0, HTMLAttributes, {
8060
8052
  "data-comment": HTMLAttributes.comment,
8061
8053
  class: "comment-highlight",
8062
8054
  title: HTMLAttributes.comment,
@@ -8078,8 +8070,8 @@ var Comment = Mark7.create({
8078
8070
  });
8079
8071
 
8080
8072
  // src/components/tetrons/toolbar/marks/Subscript.ts
8081
- import { Mark as Mark8, markInputRule as markInputRule6, markPasteRule as markPasteRule5 } from "@tiptap/core";
8082
- var Subscript = Mark8.create({
8073
+
8074
+ var Subscript = _core.Mark.create({
8083
8075
  name: "subscript",
8084
8076
  excludes: "superscript",
8085
8077
  parseHTML() {
@@ -8095,7 +8087,7 @@ var Subscript = Mark8.create({
8095
8087
  },
8096
8088
  addInputRules() {
8097
8089
  return [
8098
- markInputRule6({
8090
+ _core.markInputRule.call(void 0, {
8099
8091
  find: /~([^~]+)~/,
8100
8092
  type: this.type
8101
8093
  })
@@ -8103,7 +8095,7 @@ var Subscript = Mark8.create({
8103
8095
  },
8104
8096
  addPasteRules() {
8105
8097
  return [
8106
- markPasteRule5({
8098
+ _core.markPasteRule.call(void 0, {
8107
8099
  find: /~([^~]+)~/g,
8108
8100
  type: this.type
8109
8101
  })
@@ -8112,8 +8104,8 @@ var Subscript = Mark8.create({
8112
8104
  });
8113
8105
 
8114
8106
  // src/components/tetrons/toolbar/marks/Superscript.ts
8115
- import { Mark as Mark9, markInputRule as markInputRule7, markPasteRule as markPasteRule6 } from "@tiptap/core";
8116
- var Superscript = Mark9.create({
8107
+
8108
+ var Superscript = _core.Mark.create({
8117
8109
  name: "superscript",
8118
8110
  excludes: "subscript",
8119
8111
  parseHTML() {
@@ -8129,7 +8121,7 @@ var Superscript = Mark9.create({
8129
8121
  },
8130
8122
  addInputRules() {
8131
8123
  return [
8132
- markInputRule7({
8124
+ _core.markInputRule.call(void 0, {
8133
8125
  find: /\^([^^]+)\^/,
8134
8126
  type: this.type
8135
8127
  })
@@ -8137,7 +8129,7 @@ var Superscript = Mark9.create({
8137
8129
  },
8138
8130
  addPasteRules() {
8139
8131
  return [
8140
- markPasteRule6({
8132
+ _core.markPasteRule.call(void 0, {
8141
8133
  find: /\^([^^]+)\^/g,
8142
8134
  type: this.type
8143
8135
  })
@@ -8146,7 +8138,7 @@ var Superscript = Mark9.create({
8146
8138
  });
8147
8139
 
8148
8140
  // src/components/tetrons/toolbar/extensions/ResizableTable.ts
8149
- import { Table } from "@tiptap/extension-table";
8141
+ var _extensiontable = require('@tiptap/extension-table');
8150
8142
 
8151
8143
  // node_modules/prosemirror-view/dist/index.js
8152
8144
  var domIndex = function(node) {
@@ -11512,16 +11504,16 @@ editHandlers.drop = (view, _event) => {
11512
11504
  tr.deleteSelection();
11513
11505
  }
11514
11506
  let pos = tr.mapping.map(insertPos);
11515
- let isNode = slice2.openStart == 0 && slice2.openEnd == 0 && slice2.content.childCount == 1;
11507
+ let isNode2 = slice2.openStart == 0 && slice2.openEnd == 0 && slice2.content.childCount == 1;
11516
11508
  let beforeInsert = tr.doc;
11517
- if (isNode)
11509
+ if (isNode2)
11518
11510
  tr.replaceRangeWith(pos, pos, slice2.content.firstChild);
11519
11511
  else
11520
11512
  tr.replaceRange(pos, pos, slice2);
11521
11513
  if (tr.doc.eq(beforeInsert))
11522
11514
  return;
11523
11515
  let $pos = tr.doc.resolve(pos);
11524
- if (isNode && NodeSelection.isSelectable(slice2.content.firstChild) && $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice2.content.firstChild)) {
11516
+ if (isNode2 && NodeSelection.isSelectable(slice2.content.firstChild) && $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice2.content.firstChild)) {
11525
11517
  tr.setSelection(new NodeSelection($pos));
11526
11518
  } else {
11527
11519
  let end = tr.mapping.map(insertPos);
@@ -15203,10 +15195,10 @@ function tableEditing({
15203
15195
  }
15204
15196
 
15205
15197
  // src/components/tetrons/toolbar/extensions/ResizableTable.ts
15206
- var ResizableTable = Table.extend({
15198
+ var ResizableTable = _extensiontable.Table.extend({
15207
15199
  addOptions() {
15208
15200
  return {
15209
- ...this.parent?.(),
15201
+ ..._optionalChain([this, 'access', _3 => _3.parent, 'optionalCall', _4 => _4()]),
15210
15202
  resizable: true
15211
15203
  };
15212
15204
  },
@@ -15216,8 +15208,8 @@ var ResizableTable = Table.extend({
15216
15208
  });
15217
15209
 
15218
15210
  // src/components/tetrons/toolbar/extensions/Embed.ts
15219
- import { Node as Node12, mergeAttributes as mergeAttributes14 } from "@tiptap/core";
15220
- var Embed = Node12.create({
15211
+
15212
+ var Embed = _core.Node.create({
15221
15213
  name: "embed",
15222
15214
  group: "block",
15223
15215
  atom: true,
@@ -15232,7 +15224,7 @@ var Embed = Node12.create({
15232
15224
  return [{ tag: "iframe[src]" }];
15233
15225
  },
15234
15226
  renderHTML({ HTMLAttributes }) {
15235
- return ["iframe", mergeAttributes14(HTMLAttributes)];
15227
+ return ["iframe", _core.mergeAttributes.call(void 0, HTMLAttributes)];
15236
15228
  },
15237
15229
  addCommands() {
15238
15230
  return {
@@ -15310,8 +15302,8 @@ var Embed = Node12.create({
15310
15302
  });
15311
15303
 
15312
15304
  // src/components/tetrons/toolbar/extensions/FontFamily.ts
15313
- import { Mark as Mark10, mergeAttributes as mergeAttributes15 } from "@tiptap/core";
15314
- var FontFamily = Mark10.create({
15305
+
15306
+ var FontFamily = _core.Mark.create({
15315
15307
  name: "fontFamily",
15316
15308
  addAttributes() {
15317
15309
  return {
@@ -15329,7 +15321,7 @@ var FontFamily = Mark10.create({
15329
15321
  return [{ style: "font-family" }];
15330
15322
  },
15331
15323
  renderHTML({ HTMLAttributes }) {
15332
- return ["span", mergeAttributes15(HTMLAttributes), 0];
15324
+ return ["span", _core.mergeAttributes.call(void 0, HTMLAttributes), 0];
15333
15325
  },
15334
15326
  addCommands() {
15335
15327
  return {
@@ -15339,8 +15331,8 @@ var FontFamily = Mark10.create({
15339
15331
  });
15340
15332
 
15341
15333
  // src/components/tetrons/toolbar/extensions/FontSize.ts
15342
- import { Mark as Mark11, mergeAttributes as mergeAttributes16 } from "@tiptap/core";
15343
- var FontSize = Mark11.create({
15334
+
15335
+ var FontSize = _core.Mark.create({
15344
15336
  name: "fontSize",
15345
15337
  addAttributes() {
15346
15338
  return {
@@ -15358,7 +15350,7 @@ var FontSize = Mark11.create({
15358
15350
  return [{ style: "font-size" }];
15359
15351
  },
15360
15352
  renderHTML({ HTMLAttributes }) {
15361
- return ["span", mergeAttributes16(HTMLAttributes), 0];
15353
+ return ["span", _core.mergeAttributes.call(void 0, HTMLAttributes), 0];
15362
15354
  },
15363
15355
  addCommands() {
15364
15356
  return {
@@ -15368,24 +15360,24 @@ var FontSize = Mark11.create({
15368
15360
  });
15369
15361
 
15370
15362
  // src/components/tetrons/ResizableImage.ts
15371
- import Image from "@tiptap/extension-image";
15372
- import { ReactNodeViewRenderer } from "@tiptap/react";
15363
+
15364
+
15373
15365
 
15374
15366
  // src/components/tetrons/ResizableImageComponent.tsx
15375
- import React, { useRef, useEffect as useEffect2, useState as useState2 } from "react";
15376
- import { NodeViewWrapper } from "@tiptap/react";
15367
+
15368
+
15377
15369
  var ResizableImageComponent = ({
15378
15370
  node,
15379
15371
  updateAttributes,
15380
15372
  selected
15381
15373
  }) => {
15382
15374
  const { src, alt, title, width, height } = node.attrs;
15383
- const defaultWidth = width ?? 300;
15384
- const defaultHeight = height ?? 200;
15375
+ const defaultWidth = _nullishCoalesce(width, () => ( 300));
15376
+ const defaultHeight = _nullishCoalesce(height, () => ( 200));
15385
15377
  const aspectRatio = defaultHeight > 0 ? defaultWidth / defaultHeight : 4 / 3;
15386
- const wrapperRef = useRef(null);
15387
- const [isResizing, setIsResizing] = useState2(false);
15388
- useEffect2(() => {
15378
+ const wrapperRef = _react.useRef.call(void 0, null);
15379
+ const [isResizing, setIsResizing] = _react.useState.call(void 0, false);
15380
+ _react.useEffect.call(void 0, () => {
15389
15381
  const handleMouseMove2 = (e) => {
15390
15382
  if (!isResizing || !wrapperRef.current) return;
15391
15383
  const rect = wrapperRef.current.getBoundingClientRect();
@@ -15410,8 +15402,8 @@ var ResizableImageComponent = ({
15410
15402
  window.removeEventListener("mouseup", handleMouseUp);
15411
15403
  };
15412
15404
  }, [isResizing, updateAttributes, aspectRatio]);
15413
- return /* @__PURE__ */ React.createElement(
15414
- NodeViewWrapper,
15405
+ return /* @__PURE__ */ _react2.default.createElement(
15406
+ _react3.NodeViewWrapper,
15415
15407
  {
15416
15408
  ref: wrapperRef,
15417
15409
  contentEditable: false,
@@ -15429,12 +15421,12 @@ var ResizableImageComponent = ({
15429
15421
  padding: 2
15430
15422
  }
15431
15423
  },
15432
- /* @__PURE__ */ React.createElement(
15424
+ /* @__PURE__ */ _react2.default.createElement(
15433
15425
  "img",
15434
15426
  {
15435
15427
  src,
15436
- alt: alt ?? "",
15437
- title: title ?? "",
15428
+ alt: _nullishCoalesce(alt, () => ( "")),
15429
+ title: _nullishCoalesce(title, () => ( "")),
15438
15430
  loading: "lazy",
15439
15431
  style: {
15440
15432
  width: "100%",
@@ -15447,7 +15439,7 @@ var ResizableImageComponent = ({
15447
15439
  draggable: false
15448
15440
  }
15449
15441
  ),
15450
- /* @__PURE__ */ React.createElement(
15442
+ /* @__PURE__ */ _react2.default.createElement(
15451
15443
  "div",
15452
15444
  {
15453
15445
  onMouseDown: (e) => {
@@ -15472,11 +15464,11 @@ var ResizableImageComponent = ({
15472
15464
  var ResizableImageComponent_default = ResizableImageComponent;
15473
15465
 
15474
15466
  // src/components/tetrons/ResizableImage.ts
15475
- var ResizableImage = Image.extend({
15467
+ var ResizableImage = _extensionimage2.default.extend({
15476
15468
  name: "resizableImage",
15477
15469
  addAttributes() {
15478
15470
  return {
15479
- ...this.parent?.(),
15471
+ ..._optionalChain([this, 'access', _5 => _5.parent, 'optionalCall', _6 => _6()]),
15480
15472
  width: { default: null },
15481
15473
  height: { default: null }
15482
15474
  };
@@ -15495,26 +15487,26 @@ var ResizableImage = Image.extend({
15495
15487
  ];
15496
15488
  },
15497
15489
  addNodeView() {
15498
- return ReactNodeViewRenderer(ResizableImageComponent_default);
15490
+ return _react3.ReactNodeViewRenderer.call(void 0, ResizableImageComponent_default);
15499
15491
  }
15500
15492
  });
15501
15493
 
15502
15494
  // src/components/tetrons/ResizableVideo.ts
15503
- import { Node as Node13 } from "@tiptap/core";
15504
- import { ReactNodeViewRenderer as ReactNodeViewRenderer2 } from "@tiptap/react";
15495
+
15496
+
15505
15497
 
15506
15498
  // src/components/tetrons/ResizableVideoComponent.tsx
15507
- import React2, { useRef as useRef2, useEffect as useEffect3 } from "react";
15508
- import { NodeViewWrapper as NodeViewWrapper2 } from "@tiptap/react";
15499
+
15500
+
15509
15501
  var ResizableVideoComponent = ({
15510
15502
  node,
15511
15503
  updateAttributes,
15512
15504
  selected
15513
15505
  }) => {
15514
15506
  const { src, controls, width, height } = node.attrs;
15515
- const wrapperRef = useRef2(null);
15516
- const videoRef = useRef2(null);
15517
- useEffect3(() => {
15507
+ const wrapperRef = _react.useRef.call(void 0, null);
15508
+ const videoRef = _react.useRef.call(void 0, null);
15509
+ _react.useEffect.call(void 0, () => {
15518
15510
  const video = videoRef.current;
15519
15511
  if (!video) return;
15520
15512
  const observer = new ResizeObserver(() => {
@@ -15525,8 +15517,8 @@ var ResizableVideoComponent = ({
15525
15517
  observer.observe(video);
15526
15518
  return () => observer.disconnect();
15527
15519
  }, [updateAttributes]);
15528
- return /* @__PURE__ */ React2.createElement(
15529
- NodeViewWrapper2,
15520
+ return /* @__PURE__ */ _react2.default.createElement(
15521
+ _react3.NodeViewWrapper,
15530
15522
  {
15531
15523
  ref: wrapperRef,
15532
15524
  contentEditable: false,
@@ -15539,7 +15531,7 @@ var ResizableVideoComponent = ({
15539
15531
  display: "inline-block"
15540
15532
  }
15541
15533
  },
15542
- /* @__PURE__ */ React2.createElement(
15534
+ /* @__PURE__ */ _react2.default.createElement(
15543
15535
  "video",
15544
15536
  {
15545
15537
  ref: videoRef,
@@ -15556,7 +15548,7 @@ var ResizableVideoComponent = ({
15556
15548
  var ResizableVideoComponent_default = ResizableVideoComponent;
15557
15549
 
15558
15550
  // src/components/tetrons/ResizableVideo.ts
15559
- var ResizableVideo = Node13.create({
15551
+ var ResizableVideo = _core.Node.create({
15560
15552
  name: "video",
15561
15553
  group: "block",
15562
15554
  draggable: true,
@@ -15598,15 +15590,15 @@ var ResizableVideo = Node13.create({
15598
15590
  };
15599
15591
  },
15600
15592
  addNodeView() {
15601
- return ReactNodeViewRenderer2(ResizableVideoComponent_default);
15593
+ return _react3.ReactNodeViewRenderer.call(void 0, ResizableVideoComponent_default);
15602
15594
  }
15603
15595
  });
15604
15596
 
15605
15597
  // src/components/tetrons/toolbar/TableContextMenu.tsx
15606
- import React3, { useEffect as useEffect4, useState as useState3 } from "react";
15598
+
15607
15599
  function TableContextMenu({ editor }) {
15608
- const [menuPosition, setMenuPosition] = useState3(null);
15609
- useEffect4(() => {
15600
+ const [menuPosition, setMenuPosition] = _react.useState.call(void 0, null);
15601
+ _react.useEffect.call(void 0, () => {
15610
15602
  const handleContextMenu = (event) => {
15611
15603
  const target = event.target;
15612
15604
  if (target.closest("td") || target.closest("th")) {
@@ -15631,13 +15623,13 @@ function TableContextMenu({ editor }) {
15631
15623
  const deleteRow = () => editor.chain().focus().deleteRow().run();
15632
15624
  const deleteCol = () => editor.chain().focus().deleteColumn().run();
15633
15625
  if (!menuPosition) return null;
15634
- return /* @__PURE__ */ React3.createElement(
15626
+ return /* @__PURE__ */ _react2.default.createElement(
15635
15627
  "ul",
15636
15628
  {
15637
15629
  className: "absolute bg-white shadow border rounded text-sm z-50",
15638
15630
  style: { top: menuPosition.y, left: menuPosition.x }
15639
15631
  },
15640
- /* @__PURE__ */ React3.createElement(
15632
+ /* @__PURE__ */ _react2.default.createElement(
15641
15633
  "li",
15642
15634
  {
15643
15635
  className: "px-3 py-1 hover:bg-gray-100 cursor-pointer",
@@ -15645,7 +15637,7 @@ function TableContextMenu({ editor }) {
15645
15637
  },
15646
15638
  "Insert Row Above"
15647
15639
  ),
15648
- /* @__PURE__ */ React3.createElement(
15640
+ /* @__PURE__ */ _react2.default.createElement(
15649
15641
  "li",
15650
15642
  {
15651
15643
  className: "px-3 py-1 hover:bg-gray-100 cursor-pointer",
@@ -15653,7 +15645,7 @@ function TableContextMenu({ editor }) {
15653
15645
  },
15654
15646
  "Insert Row Below"
15655
15647
  ),
15656
- /* @__PURE__ */ React3.createElement(
15648
+ /* @__PURE__ */ _react2.default.createElement(
15657
15649
  "li",
15658
15650
  {
15659
15651
  className: "px-3 py-1 hover:bg-gray-100 cursor-pointer",
@@ -15661,7 +15653,7 @@ function TableContextMenu({ editor }) {
15661
15653
  },
15662
15654
  "Insert Column Left"
15663
15655
  ),
15664
- /* @__PURE__ */ React3.createElement(
15656
+ /* @__PURE__ */ _react2.default.createElement(
15665
15657
  "li",
15666
15658
  {
15667
15659
  className: "px-3 py-1 hover:bg-gray-100 cursor-pointer",
@@ -15669,7 +15661,7 @@ function TableContextMenu({ editor }) {
15669
15661
  },
15670
15662
  "Insert Column Right"
15671
15663
  ),
15672
- /* @__PURE__ */ React3.createElement(
15664
+ /* @__PURE__ */ _react2.default.createElement(
15673
15665
  "li",
15674
15666
  {
15675
15667
  className: "px-3 py-1 hover:bg-red-100 cursor-pointer",
@@ -15677,7 +15669,7 @@ function TableContextMenu({ editor }) {
15677
15669
  },
15678
15670
  "Delete Row"
15679
15671
  ),
15680
- /* @__PURE__ */ React3.createElement(
15672
+ /* @__PURE__ */ _react2.default.createElement(
15681
15673
  "li",
15682
15674
  {
15683
15675
  className: "px-3 py-1 hover:bg-red-100 cursor-pointer",
@@ -15689,34 +15681,34 @@ function TableContextMenu({ editor }) {
15689
15681
  }
15690
15682
 
15691
15683
  // src/components/tetrons/toolbar/TetronsToolbar.tsx
15692
- import React13, { useEffect as useEffect7, useState as useState8 } from "react";
15684
+
15693
15685
 
15694
15686
  // src/components/tetrons/toolbar/ActionGroup.tsx
15695
- import React5, { useEffect as useEffect5, useRef as useRef3, useState as useState4 } from "react";
15696
- import {
15697
- MdZoomIn,
15698
- MdZoomOut,
15699
- MdPrint,
15700
- MdSave,
15701
- MdDownload
15702
- } from "react-icons/md";
15687
+
15688
+
15689
+
15690
+
15691
+
15692
+
15693
+
15694
+ var _md = require('react-icons/md');
15703
15695
 
15704
15696
  // src/components/tetrons/toolbar/ToolbarButton.tsx
15705
- import React4 from "react";
15706
- var ToolbarButton = React4.forwardRef(
15697
+
15698
+ var ToolbarButton = _react2.default.forwardRef(
15707
15699
  ({ icon: Icon, onClick, disabled = false, title, label, isActive = false }, ref) => {
15708
- return /* @__PURE__ */ React4.createElement(
15700
+ return /* @__PURE__ */ _react2.default.createElement(
15709
15701
  "button",
15710
15702
  {
15711
15703
  type: "button",
15712
15704
  ref,
15713
15705
  onClick,
15714
15706
  disabled,
15715
- title: title ?? label,
15716
- "aria-label": title ?? label,
15707
+ title: _nullishCoalesce(title, () => ( label)),
15708
+ "aria-label": _nullishCoalesce(title, () => ( label)),
15717
15709
  className: `toolbar-button ${isActive ? "active" : ""}`
15718
15710
  },
15719
- /* @__PURE__ */ React4.createElement(Icon, { size: 20 })
15711
+ /* @__PURE__ */ _react2.default.createElement(Icon, { size: 20 })
15720
15712
  );
15721
15713
  }
15722
15714
  );
@@ -15725,9 +15717,9 @@ var ToolbarButton_default = ToolbarButton;
15725
15717
 
15726
15718
  // src/components/tetrons/toolbar/ActionGroup.tsx
15727
15719
  function ActionGroup({ editor }) {
15728
- const [dropdownOpen, setDropdownOpen] = useState4(false);
15729
- const dropdownRef = useRef3(null);
15730
- useEffect5(() => {
15720
+ const [dropdownOpen, setDropdownOpen] = _react.useState.call(void 0, false);
15721
+ const dropdownRef = _react.useRef.call(void 0, null);
15722
+ _react.useEffect.call(void 0, () => {
15731
15723
  const handleClickOutside = (event) => {
15732
15724
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
15733
15725
  setDropdownOpen(false);
@@ -15805,7 +15797,7 @@ function ActionGroup({ editor }) {
15805
15797
  container.classList.add("p-4", "prose");
15806
15798
  document.body.appendChild(container);
15807
15799
  try {
15808
- const domToPdf = (await import("dom-to-pdf")).default;
15800
+ const domToPdf = (await Promise.resolve().then(() => _interopRequireWildcard(require("dom-to-pdf")))).default;
15809
15801
  const options = {
15810
15802
  filename: "document.pdf",
15811
15803
  overrideWidth: 800,
@@ -15832,7 +15824,7 @@ function ActionGroup({ editor }) {
15832
15824
  document.body.removeChild(link);
15833
15825
  };
15834
15826
  const handleDownloadDOCX = async () => {
15835
- const { Document: Document2, Packer, Paragraph: Paragraph2 } = await import("docx");
15827
+ const { Document: Document2, Packer, Paragraph: Paragraph2 } = await Promise.resolve().then(() => _interopRequireWildcard(require("docx")));
15836
15828
  const text = editor.getText();
15837
15829
  const doc3 = new Document2({
15838
15830
  sections: [
@@ -15850,7 +15842,7 @@ function ActionGroup({ editor }) {
15850
15842
  link.click();
15851
15843
  document.body.removeChild(link);
15852
15844
  };
15853
- return /* @__PURE__ */ React5.createElement("div", { className: "action-group", role: "group", "aria-label": "Editor actions" }, /* @__PURE__ */ React5.createElement(ToolbarButton_default, { icon: MdZoomIn, onClick: zoomIn, title: "Zoom In" }), /* @__PURE__ */ React5.createElement(ToolbarButton_default, { icon: MdZoomOut, onClick: zoomOut, title: "Zoom Out" }), /* @__PURE__ */ React5.createElement(ToolbarButton_default, { icon: MdPrint, onClick: handlePrint, title: "Print" }), /* @__PURE__ */ React5.createElement(ToolbarButton_default, { icon: MdSave, onClick: handleSave, title: "Save" }), /* @__PURE__ */ React5.createElement("div", { className: "relative", ref: dropdownRef }, /* @__PURE__ */ React5.createElement(
15845
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "action-group", role: "group", "aria-label": "Editor actions" }, /* @__PURE__ */ _react2.default.createElement(ToolbarButton_default, { icon: _md.MdZoomIn, onClick: zoomIn, title: "Zoom In" }), /* @__PURE__ */ _react2.default.createElement(ToolbarButton_default, { icon: _md.MdZoomOut, onClick: zoomOut, title: "Zoom Out" }), /* @__PURE__ */ _react2.default.createElement(ToolbarButton_default, { icon: _md.MdPrint, onClick: handlePrint, title: "Print" }), /* @__PURE__ */ _react2.default.createElement(ToolbarButton_default, { icon: _md.MdSave, onClick: handleSave, title: "Save" }), /* @__PURE__ */ _react2.default.createElement("div", { className: "relative", ref: dropdownRef }, /* @__PURE__ */ _react2.default.createElement(
15854
15846
  "button",
15855
15847
  {
15856
15848
  type: "button",
@@ -15860,9 +15852,9 @@ function ActionGroup({ editor }) {
15860
15852
  className: "export-button",
15861
15853
  title: "Export"
15862
15854
  },
15863
- /* @__PURE__ */ React5.createElement(MdDownload, null),
15864
- /* @__PURE__ */ React5.createElement("span", { className: "text-sm" })
15865
- ), dropdownOpen && /* @__PURE__ */ React5.createElement("div", { className: "export-dropdown" }, /* @__PURE__ */ React5.createElement(
15855
+ /* @__PURE__ */ _react2.default.createElement(_md.MdDownload, null),
15856
+ /* @__PURE__ */ _react2.default.createElement("span", { className: "text-sm" })
15857
+ ), dropdownOpen && /* @__PURE__ */ _react2.default.createElement("div", { className: "export-dropdown" }, /* @__PURE__ */ _react2.default.createElement(
15866
15858
  "button",
15867
15859
  {
15868
15860
  type: "button",
@@ -15872,7 +15864,7 @@ function ActionGroup({ editor }) {
15872
15864
  }
15873
15865
  },
15874
15866
  "Export as PDF"
15875
- ), /* @__PURE__ */ React5.createElement(
15867
+ ), /* @__PURE__ */ _react2.default.createElement(
15876
15868
  "button",
15877
15869
  {
15878
15870
  type: "button",
@@ -15882,7 +15874,7 @@ function ActionGroup({ editor }) {
15882
15874
  }
15883
15875
  },
15884
15876
  "Export as HTML"
15885
- ), /* @__PURE__ */ React5.createElement(
15877
+ ), /* @__PURE__ */ _react2.default.createElement(
15886
15878
  "button",
15887
15879
  {
15888
15880
  type: "button",
@@ -15896,18 +15888,18 @@ function ActionGroup({ editor }) {
15896
15888
  }
15897
15889
 
15898
15890
  // src/components/tetrons/toolbar/ClipboardGroup.tsx
15899
- import {
15900
- MdContentPaste,
15901
- MdContentCut,
15902
- MdContentCopy,
15903
- MdFormatPaint
15904
- } from "react-icons/md";
15905
- import React6 from "react";
15891
+
15892
+
15893
+
15894
+
15895
+
15896
+
15897
+
15906
15898
  function ClipboardGroup({ editor }) {
15907
- return /* @__PURE__ */ React6.createElement("div", { className: "clipboard-group" }, /* @__PURE__ */ React6.createElement(
15899
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "clipboard-group" }, /* @__PURE__ */ _react2.default.createElement(
15908
15900
  ToolbarButton_default,
15909
15901
  {
15910
- icon: MdContentPaste,
15902
+ icon: _md.MdContentPaste,
15911
15903
  title: "Paste",
15912
15904
  onClick: async () => {
15913
15905
  try {
@@ -15918,10 +15910,10 @@ function ClipboardGroup({ editor }) {
15918
15910
  }
15919
15911
  }
15920
15912
  }
15921
- ), /* @__PURE__ */ React6.createElement(
15913
+ ), /* @__PURE__ */ _react2.default.createElement(
15922
15914
  ToolbarButton_default,
15923
15915
  {
15924
- icon: MdContentCut,
15916
+ icon: _md.MdContentCut,
15925
15917
  title: "Cut",
15926
15918
  onClick: () => {
15927
15919
  const { from: from2, to } = editor.state.selection;
@@ -15932,10 +15924,10 @@ function ClipboardGroup({ editor }) {
15932
15924
  });
15933
15925
  }
15934
15926
  }
15935
- ), /* @__PURE__ */ React6.createElement(
15927
+ ), /* @__PURE__ */ _react2.default.createElement(
15936
15928
  ToolbarButton_default,
15937
15929
  {
15938
- icon: MdContentCopy,
15930
+ icon: _md.MdContentCopy,
15939
15931
  title: "Copy",
15940
15932
  onClick: () => {
15941
15933
  const { from: from2, to } = editor.state.selection;
@@ -15944,10 +15936,10 @@ function ClipboardGroup({ editor }) {
15944
15936
  navigator.clipboard.writeText(selectedText);
15945
15937
  }
15946
15938
  }
15947
- ), /* @__PURE__ */ React6.createElement(
15939
+ ), /* @__PURE__ */ _react2.default.createElement(
15948
15940
  ToolbarButton_default,
15949
15941
  {
15950
- icon: MdFormatPaint,
15942
+ icon: _md.MdFormatPaint,
15951
15943
  title: "Format Painter",
15952
15944
  onClick: () => {
15953
15945
  const currentMarks = editor.getAttributes("textStyle");
@@ -15958,34 +15950,34 @@ function ClipboardGroup({ editor }) {
15958
15950
  }
15959
15951
 
15960
15952
  // src/components/tetrons/toolbar/FontStyleGroup.tsx
15961
- import {
15962
- MdFormatBold,
15963
- MdFormatItalic,
15964
- MdFormatUnderlined,
15965
- MdStrikethroughS,
15966
- MdSubscript,
15967
- MdSuperscript,
15968
- MdFormatClear,
15969
- MdFormatPaint as MdFormatPaint2
15970
- } from "react-icons/md";
15971
- import { ImTextColor } from "react-icons/im";
15972
- import { BiSolidColorFill } from "react-icons/bi";
15973
- import React7, { useEffect as useEffect6, useState as useState5 } from "react";
15953
+
15954
+
15955
+
15956
+
15957
+
15958
+
15959
+
15960
+
15961
+
15962
+
15963
+ var _im = require('react-icons/im');
15964
+ var _bi = require('react-icons/bi');
15965
+
15974
15966
  function FontStyleGroup({ editor }) {
15975
- const [textColor, setTextColor] = useState5("#000000");
15976
- const [highlightColor, setHighlightColor] = useState5("#ffff00");
15977
- const [fontFamily, setFontFamily] = useState5("Arial");
15978
- const [fontSize, setFontSize] = useState5("16px");
15979
- useEffect6(() => {
15967
+ const [textColor, setTextColor] = _react.useState.call(void 0, "#000000");
15968
+ const [highlightColor, setHighlightColor] = _react.useState.call(void 0, "#ffff00");
15969
+ const [fontFamily, setFontFamily] = _react.useState.call(void 0, "Arial");
15970
+ const [fontSize, setFontSize] = _react.useState.call(void 0, "16px");
15971
+ _react.useEffect.call(void 0, () => {
15980
15972
  if (!editor) return;
15981
15973
  const updateStates = () => {
15982
15974
  const highlight = editor.getAttributes("highlight");
15983
- setHighlightColor(highlight?.color || "#ffff00");
15984
- const color = editor.getAttributes("textStyle")?.color;
15975
+ setHighlightColor(_optionalChain([highlight, 'optionalAccess', _7 => _7.color]) || "#ffff00");
15976
+ const color = _optionalChain([editor, 'access', _8 => _8.getAttributes, 'call', _9 => _9("textStyle"), 'optionalAccess', _10 => _10.color]);
15985
15977
  setTextColor(color || "#000000");
15986
- const fontAttr = editor.getAttributes("fontFamily")?.font || "Arial";
15978
+ const fontAttr = _optionalChain([editor, 'access', _11 => _11.getAttributes, 'call', _12 => _12("fontFamily"), 'optionalAccess', _13 => _13.font]) || "Arial";
15987
15979
  setFontFamily(fontAttr);
15988
- const sizeAttr = editor.getAttributes("fontSize")?.size || "16px";
15980
+ const sizeAttr = _optionalChain([editor, 'access', _14 => _14.getAttributes, 'call', _15 => _15("fontSize"), 'optionalAccess', _16 => _16.size]) || "16px";
15989
15981
  setFontSize(sizeAttr);
15990
15982
  };
15991
15983
  updateStates();
@@ -15996,7 +15988,7 @@ function FontStyleGroup({ editor }) {
15996
15988
  editor.off("transaction", updateStates);
15997
15989
  };
15998
15990
  }, [editor]);
15999
- return /* @__PURE__ */ React7.createElement("div", { className: "font-style-group" }, /* @__PURE__ */ React7.createElement(
15991
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "font-style-group" }, /* @__PURE__ */ _react2.default.createElement(
16000
15992
  "select",
16001
15993
  {
16002
15994
  title: "Font Family",
@@ -16007,12 +15999,12 @@ function FontStyleGroup({ editor }) {
16007
15999
  editor.chain().focus().setFontFamily(value).run();
16008
16000
  }
16009
16001
  },
16010
- /* @__PURE__ */ React7.createElement("option", { value: "Arial" }, "Arial"),
16011
- /* @__PURE__ */ React7.createElement("option", { value: "Georgia" }, "Georgia"),
16012
- /* @__PURE__ */ React7.createElement("option", { value: "Times New Roman" }, "Times New Roman"),
16013
- /* @__PURE__ */ React7.createElement("option", { value: "Courier New" }, "Courier New"),
16014
- /* @__PURE__ */ React7.createElement("option", { value: "Verdana" }, "Verdana")
16015
- ), /* @__PURE__ */ React7.createElement(
16002
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "Arial" }, "Arial"),
16003
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "Georgia" }, "Georgia"),
16004
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "Times New Roman" }, "Times New Roman"),
16005
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "Courier New" }, "Courier New"),
16006
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "Verdana" }, "Verdana")
16007
+ ), /* @__PURE__ */ _react2.default.createElement(
16016
16008
  "select",
16017
16009
  {
16018
16010
  title: "Font Size",
@@ -16023,64 +16015,64 @@ function FontStyleGroup({ editor }) {
16023
16015
  editor.chain().focus().setFontSize(value).run();
16024
16016
  }
16025
16017
  },
16026
- /* @__PURE__ */ React7.createElement("option", { value: "12px" }, "12"),
16027
- /* @__PURE__ */ React7.createElement("option", { value: "14px" }, "14"),
16028
- /* @__PURE__ */ React7.createElement("option", { value: "16px" }, "16"),
16029
- /* @__PURE__ */ React7.createElement("option", { value: "18px" }, "18"),
16030
- /* @__PURE__ */ React7.createElement("option", { value: "24px" }, "24"),
16031
- /* @__PURE__ */ React7.createElement("option", { value: "36px" }, "36"),
16032
- /* @__PURE__ */ React7.createElement("option", { value: "48px" }, "48"),
16033
- /* @__PURE__ */ React7.createElement("option", { value: "64px" }, "64"),
16034
- /* @__PURE__ */ React7.createElement("option", { value: "72px" }, "72")
16035
- ), /* @__PURE__ */ React7.createElement(
16018
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "12px" }, "12"),
16019
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "14px" }, "14"),
16020
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "16px" }, "16"),
16021
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "18px" }, "18"),
16022
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "24px" }, "24"),
16023
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "36px" }, "36"),
16024
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "48px" }, "48"),
16025
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "64px" }, "64"),
16026
+ /* @__PURE__ */ _react2.default.createElement("option", { value: "72px" }, "72")
16027
+ ), /* @__PURE__ */ _react2.default.createElement(
16036
16028
  ToolbarButton_default,
16037
16029
  {
16038
- icon: MdFormatBold,
16030
+ icon: _md.MdFormatBold,
16039
16031
  label: "Bold",
16040
16032
  onClick: () => editor.chain().focus().toggleBold().run(),
16041
16033
  isActive: editor.isActive("bold")
16042
16034
  }
16043
- ), /* @__PURE__ */ React7.createElement(
16035
+ ), /* @__PURE__ */ _react2.default.createElement(
16044
16036
  ToolbarButton_default,
16045
16037
  {
16046
- icon: MdFormatItalic,
16038
+ icon: _md.MdFormatItalic,
16047
16039
  label: "Italic",
16048
16040
  onClick: () => editor.chain().focus().toggleItalic().run(),
16049
16041
  isActive: editor.isActive("italic")
16050
16042
  }
16051
- ), /* @__PURE__ */ React7.createElement(
16043
+ ), /* @__PURE__ */ _react2.default.createElement(
16052
16044
  ToolbarButton_default,
16053
16045
  {
16054
- icon: MdFormatUnderlined,
16046
+ icon: _md.MdFormatUnderlined,
16055
16047
  label: "Underline",
16056
16048
  onClick: () => editor.chain().focus().toggleUnderline().run(),
16057
16049
  isActive: editor.isActive("underline")
16058
16050
  }
16059
- ), /* @__PURE__ */ React7.createElement(
16051
+ ), /* @__PURE__ */ _react2.default.createElement(
16060
16052
  ToolbarButton_default,
16061
16053
  {
16062
- icon: MdStrikethroughS,
16054
+ icon: _md.MdStrikethroughS,
16063
16055
  label: "Strikethrough",
16064
16056
  onClick: () => editor.chain().focus().toggleStrike().run(),
16065
16057
  isActive: editor.isActive("strike")
16066
16058
  }
16067
- ), /* @__PURE__ */ React7.createElement(
16059
+ ), /* @__PURE__ */ _react2.default.createElement(
16068
16060
  ToolbarButton_default,
16069
16061
  {
16070
- icon: MdSubscript,
16062
+ icon: _md.MdSubscript,
16071
16063
  label: "Subscript",
16072
16064
  onClick: () => editor.chain().focus().toggleSubscript().run(),
16073
16065
  isActive: editor.isActive("subscript")
16074
16066
  }
16075
- ), /* @__PURE__ */ React7.createElement(
16067
+ ), /* @__PURE__ */ _react2.default.createElement(
16076
16068
  ToolbarButton_default,
16077
16069
  {
16078
- icon: MdSuperscript,
16070
+ icon: _md.MdSuperscript,
16079
16071
  label: "Superscript",
16080
16072
  onClick: () => editor.chain().focus().toggleSuperscript().run(),
16081
16073
  isActive: editor.isActive("superscript")
16082
16074
  }
16083
- ), /* @__PURE__ */ React7.createElement(
16075
+ ), /* @__PURE__ */ _react2.default.createElement(
16084
16076
  "label",
16085
16077
  {
16086
16078
  title: "Font Color",
@@ -16088,9 +16080,9 @@ function FontStyleGroup({ editor }) {
16088
16080
  className: "color-label",
16089
16081
  style: { "--indicator-color": textColor }
16090
16082
  },
16091
- /* @__PURE__ */ React7.createElement(ImTextColor, { size: 20 }),
16092
- /* @__PURE__ */ React7.createElement("div", { className: "color-indicator" }),
16093
- /* @__PURE__ */ React7.createElement(
16083
+ /* @__PURE__ */ _react2.default.createElement(_im.ImTextColor, { size: 20 }),
16084
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "color-indicator" }),
16085
+ /* @__PURE__ */ _react2.default.createElement(
16094
16086
  "input",
16095
16087
  {
16096
16088
  type: "color",
@@ -16102,7 +16094,7 @@ function FontStyleGroup({ editor }) {
16102
16094
  }
16103
16095
  }
16104
16096
  )
16105
- ), /* @__PURE__ */ React7.createElement(
16097
+ ), /* @__PURE__ */ _react2.default.createElement(
16106
16098
  "label",
16107
16099
  {
16108
16100
  title: "Highlight Color",
@@ -16110,9 +16102,9 @@ function FontStyleGroup({ editor }) {
16110
16102
  className: "color-label",
16111
16103
  style: { "--indicator-color": highlightColor }
16112
16104
  },
16113
- /* @__PURE__ */ React7.createElement(BiSolidColorFill, { size: 20 }),
16114
- /* @__PURE__ */ React7.createElement("div", { className: "color-indicator" }),
16115
- /* @__PURE__ */ React7.createElement(
16105
+ /* @__PURE__ */ _react2.default.createElement(_bi.BiSolidColorFill, { size: 20 }),
16106
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "color-indicator" }),
16107
+ /* @__PURE__ */ _react2.default.createElement(
16116
16108
  "input",
16117
16109
  {
16118
16110
  type: "color",
@@ -16124,17 +16116,17 @@ function FontStyleGroup({ editor }) {
16124
16116
  }
16125
16117
  }
16126
16118
  )
16127
- ), /* @__PURE__ */ React7.createElement(
16119
+ ), /* @__PURE__ */ _react2.default.createElement(
16128
16120
  ToolbarButton_default,
16129
16121
  {
16130
- icon: MdFormatClear,
16122
+ icon: _md.MdFormatClear,
16131
16123
  label: "Clear Formatting",
16132
16124
  onClick: () => editor.chain().focus().unsetAllMarks().run()
16133
16125
  }
16134
- ), /* @__PURE__ */ React7.createElement(
16126
+ ), /* @__PURE__ */ _react2.default.createElement(
16135
16127
  ToolbarButton_default,
16136
16128
  {
16137
- icon: MdFormatPaint2,
16129
+ icon: _md.MdFormatPaint,
16138
16130
  label: "Apply Painter Format",
16139
16131
  onClick: () => {
16140
16132
  const format = JSON.parse(
@@ -16150,25 +16142,25 @@ function FontStyleGroup({ editor }) {
16150
16142
  }
16151
16143
 
16152
16144
  // src/components/tetrons/toolbar/InsertGroup.tsx
16153
- import React8, { useRef as useRef4, useState as useState6 } from "react";
16154
- import {
16155
- MdTableChart,
16156
- MdInsertPhoto,
16157
- MdInsertLink,
16158
- MdInsertComment,
16159
- MdInsertEmoticon,
16160
- MdHorizontalRule,
16161
- MdVideoLibrary,
16162
- MdOutlineOndemandVideo
16163
- } from "react-icons/md";
16164
- import Picker from "@emoji-mart/react";
16145
+
16146
+
16147
+
16148
+
16149
+
16150
+
16151
+
16152
+
16153
+
16154
+
16155
+
16156
+ var _react5 = require('@emoji-mart/react'); var _react6 = _interopRequireDefault(_react5);
16165
16157
  function InsertGroup({ editor }) {
16166
- const [showTableGrid, setShowTableGrid] = useState6(false);
16167
- const [selectedRows, setSelectedRows] = useState6(1);
16168
- const [selectedCols, setSelectedCols] = useState6(1);
16169
- const imageInputRef = useRef4(null);
16170
- const videoInputRef = useRef4(null);
16171
- const [showPicker, setShowPicker] = useState6(false);
16158
+ const [showTableGrid, setShowTableGrid] = _react.useState.call(void 0, false);
16159
+ const [selectedRows, setSelectedRows] = _react.useState.call(void 0, 1);
16160
+ const [selectedCols, setSelectedCols] = _react.useState.call(void 0, 1);
16161
+ const imageInputRef = _react.useRef.call(void 0, null);
16162
+ const videoInputRef = _react.useRef.call(void 0, null);
16163
+ const [showPicker, setShowPicker] = _react.useState.call(void 0, false);
16172
16164
  const addEmoji = (emoji) => {
16173
16165
  editor.chain().focus().insertContent(emoji.native).run();
16174
16166
  setShowPicker(false);
@@ -16188,7 +16180,7 @@ function InsertGroup({ editor }) {
16188
16180
  setSelectedCols(1);
16189
16181
  };
16190
16182
  const handleImageUpload = (e) => {
16191
- const file = e.target.files?.[0];
16183
+ const file = _optionalChain([e, 'access', _17 => _17.target, 'access', _18 => _18.files, 'optionalAccess', _19 => _19[0]]);
16192
16184
  if (file) {
16193
16185
  const reader = new FileReader();
16194
16186
  reader.onload = () => {
@@ -16198,7 +16190,7 @@ function InsertGroup({ editor }) {
16198
16190
  }
16199
16191
  };
16200
16192
  const handleVideoUpload = (e) => {
16201
- const file = e.target.files?.[0];
16193
+ const file = _optionalChain([e, 'access', _20 => _20.target, 'access', _21 => _21.files, 'optionalAccess', _22 => _22[0]]);
16202
16194
  if (file) {
16203
16195
  const reader = new FileReader();
16204
16196
  reader.onload = () => {
@@ -16233,11 +16225,11 @@ function InsertGroup({ editor }) {
16233
16225
  return url.replace("/maps/", "/maps/embed/");
16234
16226
  }
16235
16227
  return url;
16236
- } catch {
16228
+ } catch (e2) {
16237
16229
  return url;
16238
16230
  }
16239
16231
  }
16240
- return /* @__PURE__ */ React8.createElement("div", { className: "insert-group" }, /* @__PURE__ */ React8.createElement(
16232
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "insert-group" }, /* @__PURE__ */ _react2.default.createElement(
16241
16233
  "input",
16242
16234
  {
16243
16235
  type: "file",
@@ -16248,7 +16240,7 @@ function InsertGroup({ editor }) {
16248
16240
  "aria-label": "Upload Image",
16249
16241
  title: "Upload Image"
16250
16242
  }
16251
- ), /* @__PURE__ */ React8.createElement(
16243
+ ), /* @__PURE__ */ _react2.default.createElement(
16252
16244
  "input",
16253
16245
  {
16254
16246
  type: "file",
@@ -16259,23 +16251,23 @@ function InsertGroup({ editor }) {
16259
16251
  "aria-label": "Upload Video",
16260
16252
  title: "Upload Video"
16261
16253
  }
16262
- ), /* @__PURE__ */ React8.createElement(
16254
+ ), /* @__PURE__ */ _react2.default.createElement(
16263
16255
  ToolbarButton_default,
16264
16256
  {
16265
- icon: MdTableChart,
16257
+ icon: _md.MdTableChart,
16266
16258
  label: "Insert Table",
16267
16259
  onClick: () => setShowTableGrid(!showTableGrid)
16268
16260
  }
16269
- ), showTableGrid && /* @__PURE__ */ React8.createElement(
16261
+ ), showTableGrid && /* @__PURE__ */ _react2.default.createElement(
16270
16262
  "div",
16271
16263
  {
16272
16264
  className: "table-grid-popup",
16273
16265
  onMouseLeave: () => setShowTableGrid(false)
16274
16266
  },
16275
- /* @__PURE__ */ React8.createElement("div", { className: "table-grid" }, [...Array(10)].map(
16267
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "table-grid" }, [...Array(10)].map(
16276
16268
  (_, row) => [...Array(10)].map((_2, col) => {
16277
16269
  const isSelected = row < selectedRows && col < selectedCols;
16278
- return /* @__PURE__ */ React8.createElement(
16270
+ return /* @__PURE__ */ _react2.default.createElement(
16279
16271
  "div",
16280
16272
  {
16281
16273
  key: `${row}-${col}`,
@@ -16286,25 +16278,25 @@ function InsertGroup({ editor }) {
16286
16278
  );
16287
16279
  })
16288
16280
  )),
16289
- /* @__PURE__ */ React8.createElement("div", { className: "table-grid-label" }, selectedRows, " x ", selectedCols)
16290
- ), /* @__PURE__ */ React8.createElement(
16281
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "table-grid-label" }, selectedRows, " x ", selectedCols)
16282
+ ), /* @__PURE__ */ _react2.default.createElement(
16291
16283
  ToolbarButton_default,
16292
16284
  {
16293
- icon: MdInsertPhoto,
16285
+ icon: _md.MdInsertPhoto,
16294
16286
  label: "Insert Image",
16295
- onClick: () => imageInputRef.current?.click()
16287
+ onClick: () => _optionalChain([imageInputRef, 'access', _23 => _23.current, 'optionalAccess', _24 => _24.click, 'call', _25 => _25()])
16296
16288
  }
16297
- ), /* @__PURE__ */ React8.createElement(
16289
+ ), /* @__PURE__ */ _react2.default.createElement(
16298
16290
  ToolbarButton_default,
16299
16291
  {
16300
- icon: MdVideoLibrary,
16292
+ icon: _md.MdVideoLibrary,
16301
16293
  label: "Insert Video",
16302
- onClick: () => videoInputRef.current?.click()
16294
+ onClick: () => _optionalChain([videoInputRef, 'access', _26 => _26.current, 'optionalAccess', _27 => _27.click, 'call', _28 => _28()])
16303
16295
  }
16304
- ), /* @__PURE__ */ React8.createElement(
16296
+ ), /* @__PURE__ */ _react2.default.createElement(
16305
16297
  ToolbarButton_default,
16306
16298
  {
16307
- icon: MdInsertLink,
16299
+ icon: _md.MdInsertLink,
16308
16300
  label: "Insert Link",
16309
16301
  onClick: () => {
16310
16302
  const url = prompt("Enter URL");
@@ -16313,10 +16305,10 @@ function InsertGroup({ editor }) {
16313
16305
  }
16314
16306
  }
16315
16307
  }
16316
- ), /* @__PURE__ */ React8.createElement(
16308
+ ), /* @__PURE__ */ _react2.default.createElement(
16317
16309
  ToolbarButton_default,
16318
16310
  {
16319
- icon: MdInsertComment,
16311
+ icon: _md.MdInsertComment,
16320
16312
  label: "Insert Comment",
16321
16313
  onClick: () => {
16322
16314
  const comment = prompt("Enter your comment");
@@ -16327,15 +16319,15 @@ function InsertGroup({ editor }) {
16327
16319
  }
16328
16320
  }
16329
16321
  }
16330
- ), /* @__PURE__ */ React8.createElement("div", { className: "relative" }, /* @__PURE__ */ React8.createElement(
16322
+ ), /* @__PURE__ */ _react2.default.createElement("div", { className: "relative" }, /* @__PURE__ */ _react2.default.createElement(
16331
16323
  ToolbarButton_default,
16332
16324
  {
16333
- icon: MdInsertEmoticon,
16325
+ icon: _md.MdInsertEmoticon,
16334
16326
  label: "Emoji",
16335
16327
  onClick: () => setShowPicker(!showPicker)
16336
16328
  }
16337
- ), showPicker && /* @__PURE__ */ React8.createElement("div", { className: "emoji-picker" }, /* @__PURE__ */ React8.createElement(
16338
- Picker,
16329
+ ), showPicker && /* @__PURE__ */ _react2.default.createElement("div", { className: "emoji-picker" }, /* @__PURE__ */ _react2.default.createElement(
16330
+ _react6.default,
16339
16331
  {
16340
16332
  onEmojiSelect: addEmoji,
16341
16333
  theme: "auto",
@@ -16344,17 +16336,17 @@ function InsertGroup({ editor }) {
16344
16336
  showSkinTones: true,
16345
16337
  emojiTooltip: true
16346
16338
  }
16347
- ))), /* @__PURE__ */ React8.createElement(
16339
+ ))), /* @__PURE__ */ _react2.default.createElement(
16348
16340
  ToolbarButton_default,
16349
16341
  {
16350
- icon: MdHorizontalRule,
16342
+ icon: _md.MdHorizontalRule,
16351
16343
  label: "Horizontal Line",
16352
16344
  onClick: () => editor.chain().focus().setHorizontalRule().run()
16353
16345
  }
16354
- ), /* @__PURE__ */ React8.createElement(
16346
+ ), /* @__PURE__ */ _react2.default.createElement(
16355
16347
  ToolbarButton_default,
16356
16348
  {
16357
- icon: MdOutlineOndemandVideo,
16349
+ icon: _md.MdOutlineOndemandVideo,
16358
16350
  label: "Embed",
16359
16351
  onClick: () => {
16360
16352
  const url = prompt(
@@ -16375,78 +16367,78 @@ function InsertGroup({ editor }) {
16375
16367
  }
16376
16368
 
16377
16369
  // src/components/tetrons/toolbar/ListAlignGroup.tsx
16378
- import React9 from "react";
16379
- import {
16380
- MdFormatListBulleted,
16381
- MdFormatListNumbered,
16382
- MdFormatIndentDecrease,
16383
- MdFormatIndentIncrease,
16384
- MdFormatAlignLeft,
16385
- MdFormatAlignCenter,
16386
- MdFormatAlignRight,
16387
- MdFormatAlignJustify
16388
- } from "react-icons/md";
16370
+
16371
+
16372
+
16373
+
16374
+
16375
+
16376
+
16377
+
16378
+
16379
+
16380
+
16389
16381
  function ListAlignGroup({ editor }) {
16390
- return /* @__PURE__ */ React9.createElement("div", { className: "list-align-group" }, /* @__PURE__ */ React9.createElement(
16382
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "list-align-group" }, /* @__PURE__ */ _react2.default.createElement(
16391
16383
  ToolbarButton_default,
16392
16384
  {
16393
- icon: MdFormatListBulleted,
16385
+ icon: _md.MdFormatListBulleted,
16394
16386
  title: "Bulleted List",
16395
16387
  onClick: () => editor.chain().focus().toggleBulletList().run(),
16396
16388
  disabled: !editor.can().toggleBulletList()
16397
16389
  }
16398
- ), /* @__PURE__ */ React9.createElement(
16390
+ ), /* @__PURE__ */ _react2.default.createElement(
16399
16391
  ToolbarButton_default,
16400
16392
  {
16401
- icon: MdFormatListNumbered,
16393
+ icon: _md.MdFormatListNumbered,
16402
16394
  title: "Numbered List",
16403
16395
  onClick: () => editor.chain().focus().toggleOrderedList().run(),
16404
16396
  disabled: !editor.can().toggleOrderedList()
16405
16397
  }
16406
- ), /* @__PURE__ */ React9.createElement(
16398
+ ), /* @__PURE__ */ _react2.default.createElement(
16407
16399
  ToolbarButton_default,
16408
16400
  {
16409
- icon: MdFormatIndentIncrease,
16401
+ icon: _md.MdFormatIndentIncrease,
16410
16402
  title: "Increase Indent",
16411
16403
  onClick: () => editor.chain().focus().sinkListItem("listItem").run(),
16412
16404
  disabled: !editor.can().sinkListItem("listItem")
16413
16405
  }
16414
- ), /* @__PURE__ */ React9.createElement(
16406
+ ), /* @__PURE__ */ _react2.default.createElement(
16415
16407
  ToolbarButton_default,
16416
16408
  {
16417
- icon: MdFormatIndentDecrease,
16409
+ icon: _md.MdFormatIndentDecrease,
16418
16410
  title: "Decrease Indent",
16419
16411
  onClick: () => editor.chain().focus().liftListItem("listItem").run(),
16420
16412
  disabled: !editor.can().liftListItem("listItem")
16421
16413
  }
16422
- ), /* @__PURE__ */ React9.createElement(
16414
+ ), /* @__PURE__ */ _react2.default.createElement(
16423
16415
  ToolbarButton_default,
16424
16416
  {
16425
- icon: MdFormatAlignLeft,
16417
+ icon: _md.MdFormatAlignLeft,
16426
16418
  title: "Align Left",
16427
16419
  onClick: () => editor.chain().focus().setTextAlign("left").run(),
16428
16420
  disabled: !editor.can().setTextAlign("left")
16429
16421
  }
16430
- ), /* @__PURE__ */ React9.createElement(
16422
+ ), /* @__PURE__ */ _react2.default.createElement(
16431
16423
  ToolbarButton_default,
16432
16424
  {
16433
- icon: MdFormatAlignCenter,
16425
+ icon: _md.MdFormatAlignCenter,
16434
16426
  title: "Align Center",
16435
16427
  onClick: () => editor.chain().focus().setTextAlign("center").run(),
16436
16428
  disabled: !editor.can().setTextAlign("center")
16437
16429
  }
16438
- ), /* @__PURE__ */ React9.createElement(
16430
+ ), /* @__PURE__ */ _react2.default.createElement(
16439
16431
  ToolbarButton_default,
16440
16432
  {
16441
- icon: MdFormatAlignRight,
16433
+ icon: _md.MdFormatAlignRight,
16442
16434
  title: "Align Right",
16443
16435
  onClick: () => editor.chain().focus().setTextAlign("right").run(),
16444
16436
  disabled: !editor.can().setTextAlign("right")
16445
16437
  }
16446
- ), /* @__PURE__ */ React9.createElement(
16438
+ ), /* @__PURE__ */ _react2.default.createElement(
16447
16439
  ToolbarButton_default,
16448
16440
  {
16449
- icon: MdFormatAlignJustify,
16441
+ icon: _md.MdFormatAlignJustify,
16450
16442
  title: "Justify",
16451
16443
  onClick: () => editor.chain().focus().setTextAlign("justify").run(),
16452
16444
  disabled: !editor.can().setTextAlign("justify")
@@ -16455,15 +16447,15 @@ function ListAlignGroup({ editor }) {
16455
16447
  }
16456
16448
 
16457
16449
  // src/components/tetrons/toolbar/MiscGroup.tsx
16458
- import React10 from "react";
16459
- import {
16460
- MdUndo,
16461
- MdRedo,
16462
- MdRefresh,
16463
- MdVisibility,
16464
- MdCode,
16465
- MdSpellcheck
16466
- } from "react-icons/md";
16450
+
16451
+
16452
+
16453
+
16454
+
16455
+
16456
+
16457
+
16458
+
16467
16459
 
16468
16460
  // src/utils/checkGrammar.ts
16469
16461
  async function checkGrammar(text) {
@@ -16528,48 +16520,48 @@ Reason: ${issue.message}
16528
16520
  alert("\u274C Failed to check grammar. Please try again later.");
16529
16521
  }
16530
16522
  };
16531
- return /* @__PURE__ */ React10.createElement("div", { className: "misc-group" }, /* @__PURE__ */ React10.createElement(
16523
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "misc-group" }, /* @__PURE__ */ _react2.default.createElement(
16532
16524
  ToolbarButton_default,
16533
16525
  {
16534
- icon: MdUndo,
16526
+ icon: _md.MdUndo,
16535
16527
  label: "Undo",
16536
16528
  onClick: () => editor.chain().focus().undo().run(),
16537
16529
  disabled: !editor.can().undo()
16538
16530
  }
16539
- ), /* @__PURE__ */ React10.createElement(
16531
+ ), /* @__PURE__ */ _react2.default.createElement(
16540
16532
  ToolbarButton_default,
16541
16533
  {
16542
- icon: MdRedo,
16534
+ icon: _md.MdRedo,
16543
16535
  label: "Redo",
16544
16536
  onClick: () => editor.chain().focus().redo().run(),
16545
16537
  disabled: !editor.can().redo()
16546
16538
  }
16547
- ), /* @__PURE__ */ React10.createElement(
16539
+ ), /* @__PURE__ */ _react2.default.createElement(
16548
16540
  ToolbarButton_default,
16549
16541
  {
16550
- icon: MdRefresh,
16542
+ icon: _md.MdRefresh,
16551
16543
  label: "Reset Formatting",
16552
16544
  onClick: () => editor.chain().focus().unsetAllMarks().clearNodes().run()
16553
16545
  }
16554
- ), /* @__PURE__ */ React10.createElement(
16546
+ ), /* @__PURE__ */ _react2.default.createElement(
16555
16547
  ToolbarButton_default,
16556
16548
  {
16557
- icon: MdCode,
16549
+ icon: _md.MdCode,
16558
16550
  label: "Toggle Code Block",
16559
16551
  onClick: () => editor.chain().focus().toggleCodeBlock().run(),
16560
16552
  isActive: editor.isActive("codeBlock")
16561
16553
  }
16562
- ), /* @__PURE__ */ React10.createElement(
16554
+ ), /* @__PURE__ */ _react2.default.createElement(
16563
16555
  ToolbarButton_default,
16564
16556
  {
16565
- icon: MdVisibility,
16557
+ icon: _md.MdVisibility,
16566
16558
  label: "Preview",
16567
16559
  onClick: handlePreview
16568
16560
  }
16569
- ), /* @__PURE__ */ React10.createElement(
16561
+ ), /* @__PURE__ */ _react2.default.createElement(
16570
16562
  ToolbarButton_default,
16571
16563
  {
16572
- icon: MdSpellcheck,
16564
+ icon: _md.MdSpellcheck,
16573
16565
  label: "Check Grammar",
16574
16566
  onClick: handleGrammarCheck
16575
16567
  }
@@ -16577,11 +16569,11 @@ Reason: ${issue.message}
16577
16569
  }
16578
16570
 
16579
16571
  // src/components/tetrons/toolbar/FileGroup.tsx
16580
- import { FaRegFolderOpen } from "react-icons/fa";
16581
- import { VscNewFile } from "react-icons/vsc";
16582
- import React11, { useRef as useRef5 } from "react";
16572
+ var _fa = require('react-icons/fa');
16573
+ var _vsc = require('react-icons/vsc');
16574
+
16583
16575
  function FileGroup({ editor }) {
16584
- const fileInputRef = useRef5(null);
16576
+ const fileInputRef = _react.useRef.call(void 0, null);
16585
16577
  const handleNew = () => {
16586
16578
  if (confirm(
16587
16579
  "Are you sure you want to create a new document? Unsaved changes will be lost."
@@ -16590,10 +16582,10 @@ function FileGroup({ editor }) {
16590
16582
  }
16591
16583
  };
16592
16584
  const handleOpen = () => {
16593
- fileInputRef.current?.click();
16585
+ _optionalChain([fileInputRef, 'access', _29 => _29.current, 'optionalAccess', _30 => _30.click, 'call', _31 => _31()]);
16594
16586
  };
16595
16587
  const handleFileChange = async (e) => {
16596
- const file = e.target.files?.[0];
16588
+ const file = _optionalChain([e, 'access', _32 => _32.target, 'access', _33 => _33.files, 'optionalAccess', _34 => _34[0]]);
16597
16589
  if (!file) return;
16598
16590
  try {
16599
16591
  const text = await file.text();
@@ -16608,7 +16600,7 @@ function FileGroup({ editor }) {
16608
16600
  e.target.value = "";
16609
16601
  }
16610
16602
  };
16611
- return /* @__PURE__ */ React11.createElement("div", { className: "file-group", role: "group", "aria-label": "File actions" }, /* @__PURE__ */ React11.createElement(
16603
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "file-group", role: "group", "aria-label": "File actions" }, /* @__PURE__ */ _react2.default.createElement(
16612
16604
  "input",
16613
16605
  {
16614
16606
  type: "file",
@@ -16618,10 +16610,10 @@ function FileGroup({ editor }) {
16618
16610
  className: "hidden",
16619
16611
  "aria-label": "Open JSON file"
16620
16612
  }
16621
- ), /* @__PURE__ */ React11.createElement(ToolbarButton_default, { icon: VscNewFile, onClick: handleNew, title: "New" }), /* @__PURE__ */ React11.createElement(
16613
+ ), /* @__PURE__ */ _react2.default.createElement(ToolbarButton_default, { icon: _vsc.VscNewFile, onClick: handleNew, title: "New" }), /* @__PURE__ */ _react2.default.createElement(
16622
16614
  ToolbarButton_default,
16623
16615
  {
16624
- icon: FaRegFolderOpen,
16616
+ icon: _fa.FaRegFolderOpen,
16625
16617
  onClick: handleOpen,
16626
16618
  title: "Open File"
16627
16619
  }
@@ -16629,21 +16621,21 @@ function FileGroup({ editor }) {
16629
16621
  }
16630
16622
 
16631
16623
  // src/components/tetrons/toolbar/AIGroup.tsx
16632
- import React12, { useState as useState7, useRef as useRef6 } from "react";
16633
- import { FaMicrophone, FaStop } from "react-icons/fa";
16634
- import { Waveform } from "@uiball/loaders";
16635
- import { motion, AnimatePresence } from "framer-motion";
16624
+
16625
+
16626
+ var _loaders = require('@uiball/loaders');
16627
+ var _framermotion = require('framer-motion');
16636
16628
  function AiGroup({ editor }) {
16637
- const [isRecording, setIsRecording] = useState7(false);
16638
- const [audioBlob, setAudioBlob] = useState7(null);
16639
- const [isTranscribing, setIsTranscribing] = useState7(false);
16640
- const [transcriptionError, setTranscriptionError] = useState7("");
16641
- const [showPromptInput, setShowPromptInput] = useState7(false);
16642
- const [prompt2, setPrompt] = useState7("");
16643
- const [isLoadingAI, setIsLoadingAI] = useState7(false);
16644
- const [aiError, setAiError] = useState7("");
16645
- const mediaRecorderRef = useRef6(null);
16646
- const chunksRef = useRef6([]);
16629
+ const [isRecording, setIsRecording] = _react.useState.call(void 0, false);
16630
+ const [audioBlob, setAudioBlob] = _react.useState.call(void 0, null);
16631
+ const [isTranscribing, setIsTranscribing] = _react.useState.call(void 0, false);
16632
+ const [transcriptionError, setTranscriptionError] = _react.useState.call(void 0, "");
16633
+ const [showPromptInput, setShowPromptInput] = _react.useState.call(void 0, false);
16634
+ const [prompt2, setPrompt] = _react.useState.call(void 0, "");
16635
+ const [isLoadingAI, setIsLoadingAI] = _react.useState.call(void 0, false);
16636
+ const [aiError, setAiError] = _react.useState.call(void 0, "");
16637
+ const mediaRecorderRef = _react.useRef.call(void 0, null);
16638
+ const chunksRef = _react.useRef.call(void 0, []);
16647
16639
  const startRecording = async () => {
16648
16640
  setTranscriptionError("");
16649
16641
  setAudioBlob(null);
@@ -16663,7 +16655,7 @@ function AiGroup({ editor }) {
16663
16655
  setIsRecording(true);
16664
16656
  };
16665
16657
  const stopRecording = () => {
16666
- mediaRecorderRef.current?.stop();
16658
+ _optionalChain([mediaRecorderRef, 'access', _35 => _35.current, 'optionalAccess', _36 => _36.stop, 'call', _37 => _37()]);
16667
16659
  setIsRecording(false);
16668
16660
  };
16669
16661
  const transcribeAudio = async (blob) => {
@@ -16716,7 +16708,7 @@ function AiGroup({ editor }) {
16716
16708
  setIsLoadingAI(false);
16717
16709
  }
16718
16710
  };
16719
- return /* @__PURE__ */ React12.createElement("div", { className: "group relative space-y-3" }, /* @__PURE__ */ React12.createElement("div", { className: "flex gap-2 items-center" }, !isRecording ? /* @__PURE__ */ React12.createElement(
16711
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "group relative space-y-3" }, /* @__PURE__ */ _react2.default.createElement("div", { className: "flex gap-2 items-center" }, !isRecording ? /* @__PURE__ */ _react2.default.createElement(
16720
16712
  "button",
16721
16713
  {
16722
16714
  type: "button",
@@ -16724,8 +16716,8 @@ function AiGroup({ editor }) {
16724
16716
  className: "icon-btn",
16725
16717
  title: "Start Voice Input"
16726
16718
  },
16727
- /* @__PURE__ */ React12.createElement(FaMicrophone, { size: 18 })
16728
- ) : /* @__PURE__ */ React12.createElement(
16719
+ /* @__PURE__ */ _react2.default.createElement(_fa.FaMicrophone, { size: 18 })
16720
+ ) : /* @__PURE__ */ _react2.default.createElement(
16729
16721
  "button",
16730
16722
  {
16731
16723
  type: "button",
@@ -16733,8 +16725,8 @@ function AiGroup({ editor }) {
16733
16725
  className: "icon-btn stop-btn",
16734
16726
  title: "Stop Recording"
16735
16727
  },
16736
- /* @__PURE__ */ React12.createElement(FaStop, { size: 18 })
16737
- ), /* @__PURE__ */ React12.createElement(
16728
+ /* @__PURE__ */ _react2.default.createElement(_fa.FaStop, { size: 18 })
16729
+ ), /* @__PURE__ */ _react2.default.createElement(
16738
16730
  "button",
16739
16731
  {
16740
16732
  type: "button",
@@ -16743,24 +16735,24 @@ function AiGroup({ editor }) {
16743
16735
  title: "AI Assist"
16744
16736
  },
16745
16737
  "AI"
16746
- )), isRecording && /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ React12.createElement(Waveform, { size: 30, lineWeight: 3.5, speed: 1, color: "#4F46E5" }), /* @__PURE__ */ React12.createElement("p", { className: "text-sm mt-1 text-gray-600" }, "Recording...")), isTranscribing && /* @__PURE__ */ React12.createElement("p", { className: "text-sm text-gray-500" }, "Transcribing..."), transcriptionError && /* @__PURE__ */ React12.createElement("p", { className: "text-sm text-red-600" }, transcriptionError), audioBlob && /* @__PURE__ */ React12.createElement("div", { className: "mt-2" }, /* @__PURE__ */ React12.createElement("audio", { controls: true, src: URL.createObjectURL(audioBlob) })), /* @__PURE__ */ React12.createElement(AnimatePresence, null, showPromptInput && /* @__PURE__ */ React12.createElement(
16747
- motion.div,
16738
+ )), isRecording && /* @__PURE__ */ _react2.default.createElement("div", { className: "flex flex-col items-center" }, /* @__PURE__ */ _react2.default.createElement(_loaders.Waveform, { size: 30, lineWeight: 3.5, speed: 1, color: "#4F46E5" }), /* @__PURE__ */ _react2.default.createElement("p", { className: "text-sm mt-1 text-gray-600" }, "Recording...")), isTranscribing && /* @__PURE__ */ _react2.default.createElement("p", { className: "text-sm text-gray-500" }, "Transcribing..."), transcriptionError && /* @__PURE__ */ _react2.default.createElement("p", { className: "text-sm text-red-600" }, transcriptionError), audioBlob && /* @__PURE__ */ _react2.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ _react2.default.createElement("audio", { controls: true, src: URL.createObjectURL(audioBlob) })), /* @__PURE__ */ _react2.default.createElement(_framermotion.AnimatePresence, null, showPromptInput && /* @__PURE__ */ _react2.default.createElement(
16739
+ _framermotion.motion.div,
16748
16740
  {
16749
16741
  className: "ai-modal-backdrop",
16750
16742
  initial: { opacity: 0 },
16751
16743
  animate: { opacity: 1 },
16752
16744
  exit: { opacity: 0 }
16753
16745
  },
16754
- /* @__PURE__ */ React12.createElement(
16755
- motion.div,
16746
+ /* @__PURE__ */ _react2.default.createElement(
16747
+ _framermotion.motion.div,
16756
16748
  {
16757
16749
  className: "ai-modal-content",
16758
16750
  initial: { scale: 0.9, opacity: 0 },
16759
16751
  animate: { scale: 1, opacity: 1 },
16760
16752
  exit: { scale: 0.9, opacity: 0 }
16761
16753
  },
16762
- /* @__PURE__ */ React12.createElement("h2", { className: "ai-modal-title" }, "AI Prompt"),
16763
- /* @__PURE__ */ React12.createElement(
16754
+ /* @__PURE__ */ _react2.default.createElement("h2", { className: "ai-modal-title" }, "AI Prompt"),
16755
+ /* @__PURE__ */ _react2.default.createElement(
16764
16756
  "textarea",
16765
16757
  {
16766
16758
  className: "ai-modal-textarea",
@@ -16769,15 +16761,15 @@ function AiGroup({ editor }) {
16769
16761
  placeholder: "Enter your prompt here..."
16770
16762
  }
16771
16763
  ),
16772
- aiError && /* @__PURE__ */ React12.createElement("p", { className: "ai-modal-error" }, aiError),
16773
- /* @__PURE__ */ React12.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ React12.createElement(
16764
+ aiError && /* @__PURE__ */ _react2.default.createElement("p", { className: "ai-modal-error" }, aiError),
16765
+ /* @__PURE__ */ _react2.default.createElement("div", { className: "ai-modal-actions" }, /* @__PURE__ */ _react2.default.createElement(
16774
16766
  "button",
16775
16767
  {
16776
16768
  onClick: () => setShowPromptInput(false),
16777
16769
  className: "ai-cancel-btn"
16778
16770
  },
16779
16771
  "Cancel"
16780
- ), /* @__PURE__ */ React12.createElement(
16772
+ ), /* @__PURE__ */ _react2.default.createElement(
16781
16773
  "button",
16782
16774
  {
16783
16775
  onClick: handlePromptSubmit,
@@ -16795,8 +16787,8 @@ function TetronsToolbar({
16795
16787
  editor,
16796
16788
  version
16797
16789
  }) {
16798
- const [autoSave, setAutoSave] = useState8(false);
16799
- useEffect7(() => {
16790
+ const [autoSave, setAutoSave] = _react.useState.call(void 0, false);
16791
+ _react.useEffect.call(void 0, () => {
16800
16792
  if (!editor) return;
16801
16793
  const handleUpdate = () => {
16802
16794
  if (!autoSave) return;
@@ -16812,7 +16804,7 @@ function TetronsToolbar({
16812
16804
  editor.off("update", handleUpdate);
16813
16805
  };
16814
16806
  }, [autoSave, editor]);
16815
- return /* @__PURE__ */ React13.createElement("div", { className: "tetrons-toolbar" }, version !== "free" && /* @__PURE__ */ React13.createElement("div", { className: "group" }, /* @__PURE__ */ React13.createElement(
16807
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "tetrons-toolbar" }, version !== "free" && /* @__PURE__ */ _react2.default.createElement("div", { className: "group" }, /* @__PURE__ */ _react2.default.createElement(
16816
16808
  "input",
16817
16809
  {
16818
16810
  type: "checkbox",
@@ -16820,28 +16812,34 @@ function TetronsToolbar({
16820
16812
  checked: autoSave,
16821
16813
  onChange: (e) => setAutoSave(e.target.checked)
16822
16814
  }
16823
- ), /* @__PURE__ */ React13.createElement("label", { htmlFor: "autoSave" }, "Auto Save")), ["pro", "premium", "platinum"].includes(version) && /* @__PURE__ */ React13.createElement(FileGroup, { editor }), /* @__PURE__ */ React13.createElement(ClipboardGroup, { editor }), /* @__PURE__ */ React13.createElement(FontStyleGroup, { editor }), /* @__PURE__ */ React13.createElement(ListAlignGroup, { editor }), ["premium", "platinum"].includes(version) && /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(InsertGroup, { editor }), /* @__PURE__ */ React13.createElement(ActionGroup, { editor })), version === "platinum" && /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(MiscGroup, { editor }), /* @__PURE__ */ React13.createElement(AiGroup, { editor })));
16815
+ ), /* @__PURE__ */ _react2.default.createElement("label", { htmlFor: "autoSave" }, "Auto Save")), ["pro", "premium", "platinum"].includes(version) && /* @__PURE__ */ _react2.default.createElement(FileGroup, { editor }), /* @__PURE__ */ _react2.default.createElement(ClipboardGroup, { editor }), /* @__PURE__ */ _react2.default.createElement(FontStyleGroup, { editor }), /* @__PURE__ */ _react2.default.createElement(ListAlignGroup, { editor }), ["premium", "platinum"].includes(version) && /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, /* @__PURE__ */ _react2.default.createElement(InsertGroup, { editor }), /* @__PURE__ */ _react2.default.createElement(ActionGroup, { editor })), version === "platinum" && /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, /* @__PURE__ */ _react2.default.createElement(MiscGroup, { editor }), /* @__PURE__ */ _react2.default.createElement(AiGroup, { editor })));
16824
16816
  }
16825
16817
 
16826
16818
  // src/components/tetrons/EditorContent.tsx
16827
- var lowlight = createLowlight();
16819
+ var lowlight = _lowlight.createLowlight.call(void 0, );
16828
16820
  lowlight.register("js", javascript);
16829
16821
  lowlight.register("ts", typescript);
16830
16822
  function EditorContent({ apiKey }) {
16831
16823
  const typo = useTypo();
16832
- const [isValid, setIsValid] = useState9(null);
16833
- const [error, setError] = useState9(null);
16834
- const [versions, setVersions] = useState9([]);
16835
- const [userVersion, setUserVersion] = useState9(null);
16836
- const [currentVersionIndex, setCurrentVersionIndex] = useState9(
16824
+ const [isValid, setIsValid] = _react.useState.call(void 0, null);
16825
+ const [error, setError] = _react.useState.call(void 0, null);
16826
+ const [versions, setVersions] = _react.useState.call(void 0, []);
16827
+ const [userVersion, setUserVersion] = _react.useState.call(void 0, null);
16828
+ const [currentVersionIndex, setCurrentVersionIndex] = _react.useState.call(void 0,
16837
16829
  null
16838
16830
  );
16839
- const wrapperRef = useRef7(null);
16840
- const API_BASE_URL = getEnv(
16841
- "VITE_TETRONS_API_URL",
16842
- "https://staging.tetrons.com"
16843
- );
16844
- useEffect8(() => {
16831
+ const wrapperRef = _react.useRef.call(void 0, null);
16832
+ function getApiBaseUrl() {
16833
+ if (typeof import.meta !== "undefined" && _optionalChain([import.meta, 'access', _38 => _38.env, 'optionalAccess', _39 => _39.VITE_TETRONS_API_URL])) {
16834
+ return import.meta.env.VITE_TETRONS_API_URL;
16835
+ }
16836
+ if (typeof process !== "undefined" && _optionalChain([process, 'access', _40 => _40.env, 'optionalAccess', _41 => _41.NEXT_PUBLIC_TETRONS_API_URL])) {
16837
+ return process.env.NEXT_PUBLIC_TETRONS_API_URL;
16838
+ }
16839
+ return "https://staging.tetrons.com";
16840
+ }
16841
+ const API_BASE_URL = getApiBaseUrl();
16842
+ _react.useEffect.call(void 0, () => {
16845
16843
  const validateKey = async () => {
16846
16844
  try {
16847
16845
  const res = await fetch(`${API_BASE_URL}/api/validate`, {
@@ -16862,7 +16860,7 @@ function EditorContent({ apiKey }) {
16862
16860
  };
16863
16861
  validateKey();
16864
16862
  }, [apiKey, API_BASE_URL]);
16865
- const editor = useEditor({
16863
+ const editor = _react3.useEditor.call(void 0, {
16866
16864
  extensions: [
16867
16865
  Document,
16868
16866
  Paragraph,
@@ -16870,39 +16868,39 @@ function EditorContent({ apiKey }) {
16870
16868
  History,
16871
16869
  Bold,
16872
16870
  Italic,
16873
- Underline,
16871
+ _extensionunderline2.default,
16874
16872
  Strike,
16875
16873
  Code,
16876
16874
  Blockquote,
16877
16875
  HardBreak,
16878
16876
  Heading.configure({ levels: [1, 2, 3, 4, 5, 6] }),
16879
16877
  HorizontalRule,
16880
- TextStyle,
16881
- Color,
16882
- Highlight.configure({ multicolor: true }),
16878
+ _extensiontextstyle2.default,
16879
+ _extensioncolor2.default,
16880
+ _extensionhighlight2.default.configure({ multicolor: true }),
16883
16881
  FontFamily,
16884
16882
  FontSize,
16885
- TextAlign.configure({ types: ["heading", "paragraph"] }),
16883
+ _extensiontextalign2.default.configure({ types: ["heading", "paragraph"] }),
16886
16884
  ListItem,
16887
16885
  BulletList,
16888
16886
  OrderedList,
16889
16887
  Subscript,
16890
16888
  Superscript,
16891
- Image2,
16892
- Link.configure({
16889
+ _extensionimage2.default,
16890
+ _extensionlink2.default.configure({
16893
16891
  openOnClick: false,
16894
16892
  autolink: true,
16895
16893
  linkOnPaste: true
16896
16894
  }),
16897
16895
  ResizableTable.configure({ resizable: true }),
16898
- TableRow,
16899
- TableCell,
16900
- TableHeader,
16896
+ _extensiontablerow2.default,
16897
+ _extensiontablecell2.default,
16898
+ _extensiontableheader2.default,
16901
16899
  Embed,
16902
16900
  ResizableImage,
16903
16901
  ResizableVideo,
16904
16902
  Comment,
16905
- CodeBlockLowlight.configure({
16903
+ _extensioncodeblocklowlight2.default.configure({
16906
16904
  lowlight,
16907
16905
  HTMLAttributes: {
16908
16906
  class: "bg-gray-100 p-2 rounded font-mono text-sm overflow-auto"
@@ -16923,9 +16921,9 @@ function EditorContent({ apiKey }) {
16923
16921
  },
16924
16922
  immediatelyRender: false
16925
16923
  });
16926
- useEffect8(() => {
16924
+ _react.useEffect.call(void 0, () => {
16927
16925
  return () => {
16928
- editor?.destroy();
16926
+ _optionalChain([editor, 'optionalAccess', _42 => _42.destroy, 'call', _43 => _43()]);
16929
16927
  };
16930
16928
  }, [editor]);
16931
16929
  const handleEditorClick = () => {
@@ -16948,15 +16946,15 @@ function EditorContent({ apiKey }) {
16948
16946
  }
16949
16947
  };
16950
16948
  if (isValid === false) {
16951
- return /* @__PURE__ */ React14.createElement("div", { className: "editor-error" }, "\u26A0\uFE0F ", error);
16949
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-error" }, "\u26A0\uFE0F ", error);
16952
16950
  }
16953
16951
  if (isValid === null) {
16954
- return /* @__PURE__ */ React14.createElement("div", { className: "editor-loading" }, "\u{1F50D} Validating license...");
16952
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-loading" }, "\u{1F50D} Validating license...");
16955
16953
  }
16956
16954
  if (!typo) {
16957
- return /* @__PURE__ */ React14.createElement("div", { className: "editor-loading" }, "\u{1F4D6} Loading dictionary...");
16955
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-loading" }, "\u{1F4D6} Loading dictionary...");
16958
16956
  }
16959
- return /* @__PURE__ */ React14.createElement("div", { className: "editor-container" }, userVersion !== "free" && /* @__PURE__ */ React14.createElement("div", { className: "editor-toolbar" }, /* @__PURE__ */ React14.createElement(
16957
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-container" }, userVersion !== "free" && /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-toolbar" }, /* @__PURE__ */ _react2.default.createElement(
16960
16958
  "button",
16961
16959
  {
16962
16960
  type: "button",
@@ -16965,7 +16963,7 @@ function EditorContent({ apiKey }) {
16965
16963
  className: "editor-save-btn"
16966
16964
  },
16967
16965
  "Save Version"
16968
- ), /* @__PURE__ */ React14.createElement("div", { className: "editor-versions-wrapper" }, versions.length === 0 ? /* @__PURE__ */ React14.createElement("span", { className: "editor-no-versions" }, "No saved versions") : versions.map((_, idx) => /* @__PURE__ */ React14.createElement(
16966
+ ), /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-versions-wrapper" }, versions.length === 0 ? /* @__PURE__ */ _react2.default.createElement("span", { className: "editor-no-versions" }, "No saved versions") : versions.map((_, idx) => /* @__PURE__ */ _react2.default.createElement(
16969
16967
  "button",
16970
16968
  {
16971
16969
  key: idx,
@@ -16975,20 +16973,107 @@ function EditorContent({ apiKey }) {
16975
16973
  title: `Restore Version ${idx + 1}`
16976
16974
  },
16977
16975
  `V${idx + 1}`
16978
- )))), editor && userVersion && /* @__PURE__ */ React14.createElement(TetronsToolbar, { editor, version: userVersion }), /* @__PURE__ */ React14.createElement(
16976
+ )))), editor && userVersion && /* @__PURE__ */ _react2.default.createElement(TetronsToolbar, { editor, version: userVersion }), /* @__PURE__ */ _react2.default.createElement(
16979
16977
  "div",
16980
16978
  {
16981
16979
  ref: wrapperRef,
16982
16980
  className: "editor-content-wrapper",
16983
16981
  onClick: handleEditorClick
16984
16982
  },
16985
- editor ? /* @__PURE__ */ React14.createElement(React14.Fragment, null, /* @__PURE__ */ React14.createElement(TiptapEditorContent, { editor }), /* @__PURE__ */ React14.createElement(TableContextMenu, { editor })) : /* @__PURE__ */ React14.createElement("div", { className: "editor-loading" }, "Loading editor...")
16983
+ editor ? /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, /* @__PURE__ */ _react2.default.createElement(_react3.EditorContent, { editor }), /* @__PURE__ */ _react2.default.createElement(TableContextMenu, { editor })) : /* @__PURE__ */ _react2.default.createElement("div", { className: "editor-loading" }, "Loading editor...")
16986
16984
  ));
16987
16985
  }
16988
16986
 
16989
- // src/browser.ts
16990
- var browser_default = EditorContent;
16991
- export {
16992
- EditorContent,
16993
- browser_default as default
16987
+ // src/index.ts
16988
+ var API_VALID = false;
16989
+ var API_VERSION = "";
16990
+ var isNode = typeof window === "undefined";
16991
+ var validityMap = {
16992
+ free: 14,
16993
+ pro: 30,
16994
+ premium: 30,
16995
+ platinum: 30
16994
16996
  };
16997
+ function getInstallDateKey() {
16998
+ return "tetrons_installed_at";
16999
+ }
17000
+ async function getOrCreateInstallDate() {
17001
+ const key = getInstallDateKey();
17002
+ if (isNode) {
17003
+ const fs = await Promise.resolve().then(() => _interopRequireWildcard(require("fs")));
17004
+ const path = await Promise.resolve().then(() => _interopRequireWildcard(require("path")));
17005
+ const usagePath = path.join(process.cwd(), ".tetrons-usage.json");
17006
+ if (fs.existsSync(usagePath)) {
17007
+ const data = JSON.parse(fs.readFileSync(usagePath, "utf-8"));
17008
+ return new Date(data.installedAt);
17009
+ }
17010
+ const now = (/* @__PURE__ */ new Date()).toISOString();
17011
+ fs.writeFileSync(usagePath, JSON.stringify({ installedAt: now }));
17012
+ return new Date(now);
17013
+ } else {
17014
+ const saved = localStorage.getItem(key);
17015
+ if (saved) return new Date(saved);
17016
+ const now = (/* @__PURE__ */ new Date()).toISOString();
17017
+ localStorage.setItem(key, now);
17018
+ return new Date(now);
17019
+ }
17020
+ }
17021
+ function getRemainingDays(installedAt, validityDays) {
17022
+ const now = /* @__PURE__ */ new Date();
17023
+ const diff = Math.floor(
17024
+ (now.getTime() - installedAt.getTime()) / (1e3 * 60 * 60 * 24)
17025
+ );
17026
+ return validityDays - diff;
17027
+ }
17028
+ async function initializeTetrons(apiKey) {
17029
+ const res = await fetch("https://staging.tetrons.com/api/validate", {
17030
+ method: "POST",
17031
+ headers: {
17032
+ "Content-Type": "application/json"
17033
+ },
17034
+ body: JSON.stringify({ apiKey })
17035
+ });
17036
+ if (!res.ok) {
17037
+ const error = await res.json();
17038
+ throw new Error(`API Key validation failed: ${error.error}`);
17039
+ }
17040
+ const data = await res.json();
17041
+ API_VALID = data.valid;
17042
+ API_VERSION = data.version;
17043
+ if (!API_VALID) {
17044
+ throw new Error("API Key is not valid.");
17045
+ }
17046
+ if (API_VERSION === "") {
17047
+ throw new Error("No license version provided.");
17048
+ }
17049
+ const validityDays = validityMap[API_VERSION];
17050
+ const installedAt = await getOrCreateInstallDate();
17051
+ const remainingDays = getRemainingDays(installedAt, validityDays);
17052
+ if (remainingDays <= 0) {
17053
+ throw new Error(`Your ${API_VERSION} license has expired.`);
17054
+ }
17055
+ console.log(
17056
+ `[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`
17057
+ );
17058
+ }
17059
+ function getTetronsVersion() {
17060
+ return API_VERSION;
17061
+ }
17062
+ function isApiKeyValid() {
17063
+ return API_VALID;
17064
+ }
17065
+ async function getTetronsRemainingDays() {
17066
+ if (!API_VALID || API_VERSION === "") return null;
17067
+ const validityDays = validityMap[API_VERSION];
17068
+ const installedAt = await getOrCreateInstallDate();
17069
+ return getRemainingDays(installedAt, validityDays);
17070
+ }
17071
+ var index_default = EditorContent;
17072
+
17073
+
17074
+
17075
+
17076
+
17077
+
17078
+
17079
+ exports.EditorContent = EditorContent; exports.default = index_default; exports.getTetronsRemainingDays = getTetronsRemainingDays; exports.getTetronsVersion = getTetronsVersion; exports.initializeTetrons = initializeTetrons; exports.isApiKeyValid = isApiKeyValid;