@next-shared/form 0.9.1 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getContentRectsInTextarea = getContentRectsInTextarea;
7
+ var _getMirroredStyle = require("./utils/getMirroredStyle.js");
8
+ let hiddenElement;
9
+ function getContentRectsInTextarea(textarea, prefix, measureContent) {
10
+ if (!hiddenElement) {
11
+ hiddenElement = document.createElement("div");
12
+ hiddenElement.setAttribute("tab-index", "-1");
13
+ hiddenElement.setAttribute("aria-hidden", "true");
14
+ document.body.appendChild(hiddenElement);
15
+ }
16
+ hiddenElement.setAttribute("style", (0, _getMirroredStyle.getMirroredStyle)(textarea));
17
+ hiddenElement.textContent = prefix;
18
+ const span = document.createElement("span");
19
+ span.textContent = measureContent;
20
+ hiddenElement.appendChild(span);
21
+ const fullRect = span.getBoundingClientRect();
22
+ span.remove();
23
+ if (measureContent.length <= 1) {
24
+ return [fullRect];
25
+ }
26
+ const leadingChar = measureContent[0];
27
+ const leadingSpan = document.createElement("span");
28
+ leadingSpan.textContent = leadingChar;
29
+ hiddenElement.appendChild(leadingSpan);
30
+ const leadingRect = leadingSpan.getBoundingClientRect();
31
+ leadingSpan.remove();
32
+ hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;
33
+ const trailingChar = measureContent[measureContent.length - 1];
34
+ const trailingSpan = document.createElement("span");
35
+ trailingSpan.textContent = trailingChar;
36
+ hiddenElement.appendChild(trailingSpan);
37
+ const trailingRect = trailingSpan.getBoundingClientRect();
38
+ trailingSpan.remove();
39
+ if (leadingRect.top === trailingRect.top) {
40
+ return [fullRect];
41
+ }
42
+ const rects = [];
43
+
44
+ // Leading rect
45
+ rects.push(new DOMRect(leadingRect.left, leadingRect.top, fullRect.right - leadingRect.left, leadingRect.bottom - leadingRect.top));
46
+
47
+ // Middle rect
48
+ const height = trailingRect.top - leadingRect.bottom;
49
+ if (height >= 10) {
50
+ rects.push(new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height));
51
+ }
52
+
53
+ // Trailing rect
54
+ rects.push(new DOMRect(fullRect.left, trailingRect.top, trailingRect.right - fullRect.left, trailingRect.bottom - trailingRect.top));
55
+ return rects;
56
+ }
57
+ //# sourceMappingURL=getContentRectsInTextarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContentRectsInTextarea.js","names":["_getMirroredStyle","require","hiddenElement","getContentRectsInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","getMirroredStyle","textContent","span","fullRect","getBoundingClientRect","remove","length","leadingChar","leadingSpan","leadingRect","slice","trailingChar","trailingSpan","trailingRect","top","rects","push","DOMRect","left","right","bottom","height","width"],"sources":["../../src/getContentRectsInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectsInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n): DOMRect[] {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const fullRect = span.getBoundingClientRect();\n span.remove();\n\n if (measureContent.length <= 1) {\n return [fullRect];\n }\n\n const leadingChar = measureContent[0];\n const leadingSpan = document.createElement(\"span\");\n leadingSpan.textContent = leadingChar;\n hiddenElement.appendChild(leadingSpan);\n const leadingRect = leadingSpan.getBoundingClientRect();\n leadingSpan.remove();\n\n hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;\n const trailingChar = measureContent[measureContent.length - 1];\n const trailingSpan = document.createElement(\"span\");\n trailingSpan.textContent = trailingChar;\n hiddenElement.appendChild(trailingSpan);\n const trailingRect = trailingSpan.getBoundingClientRect();\n trailingSpan.remove();\n\n if (leadingRect.top === trailingRect.top) {\n return [fullRect];\n }\n\n const rects: DOMRect[] = [];\n\n // Leading rect\n rects.push(\n new DOMRect(\n leadingRect.left,\n leadingRect.top,\n fullRect.right - leadingRect.left,\n leadingRect.bottom - leadingRect.top\n )\n );\n\n // Middle rect\n const height = trailingRect.top - leadingRect.bottom;\n if (height >= 10) {\n rects.push(\n new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height)\n );\n }\n\n // Trailing rect\n rects.push(\n new DOMRect(\n fullRect.left,\n trailingRect.top,\n trailingRect.right - fullRect.left,\n trailingRect.bottom - trailingRect.top\n )\n );\n\n return rects;\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/cjs/index.js CHANGED
@@ -80,14 +80,14 @@ Object.keys(_getCaretPositionInTextarea).forEach(function (key) {
80
80
  }
81
81
  });
82
82
  });
83
- var _getContentRectInTextarea = require("./getContentRectInTextarea.js");
84
- Object.keys(_getContentRectInTextarea).forEach(function (key) {
83
+ var _getContentRectsInTextarea = require("./getContentRectsInTextarea.js");
84
+ Object.keys(_getContentRectsInTextarea).forEach(function (key) {
85
85
  if (key === "default" || key === "__esModule") return;
86
- if (key in exports && exports[key] === _getContentRectInTextarea[key]) return;
86
+ if (key in exports && exports[key] === _getContentRectsInTextarea[key]) return;
87
87
  Object.defineProperty(exports, key, {
88
88
  enumerable: true,
89
89
  get: function () {
90
- return _getContentRectInTextarea[key];
90
+ return _getContentRectsInTextarea[key];
91
91
  }
92
92
  });
93
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_Form","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_FormItemElement","_FormStore","_interfaces","_pickFormItemProps","_TextareaAutoResize","_getCaretPositionInTextarea","_getContentRectInTextarea"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectInTextarea.js\";\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_Form","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_FormItemElement","_FormStore","_interfaces","_pickFormItemProps","_TextareaAutoResize","_getCaretPositionInTextarea","_getContentRectsInTextarea"],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectsInTextarea.js\";\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ import { getMirroredStyle } from "./utils/getMirroredStyle.js";
2
+ let hiddenElement;
3
+ export function getContentRectsInTextarea(textarea, prefix, measureContent) {
4
+ if (!hiddenElement) {
5
+ hiddenElement = document.createElement("div");
6
+ hiddenElement.setAttribute("tab-index", "-1");
7
+ hiddenElement.setAttribute("aria-hidden", "true");
8
+ document.body.appendChild(hiddenElement);
9
+ }
10
+ hiddenElement.setAttribute("style", getMirroredStyle(textarea));
11
+ hiddenElement.textContent = prefix;
12
+ const span = document.createElement("span");
13
+ span.textContent = measureContent;
14
+ hiddenElement.appendChild(span);
15
+ const fullRect = span.getBoundingClientRect();
16
+ span.remove();
17
+ if (measureContent.length <= 1) {
18
+ return [fullRect];
19
+ }
20
+ const leadingChar = measureContent[0];
21
+ const leadingSpan = document.createElement("span");
22
+ leadingSpan.textContent = leadingChar;
23
+ hiddenElement.appendChild(leadingSpan);
24
+ const leadingRect = leadingSpan.getBoundingClientRect();
25
+ leadingSpan.remove();
26
+ hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;
27
+ const trailingChar = measureContent[measureContent.length - 1];
28
+ const trailingSpan = document.createElement("span");
29
+ trailingSpan.textContent = trailingChar;
30
+ hiddenElement.appendChild(trailingSpan);
31
+ const trailingRect = trailingSpan.getBoundingClientRect();
32
+ trailingSpan.remove();
33
+ if (leadingRect.top === trailingRect.top) {
34
+ return [fullRect];
35
+ }
36
+ const rects = [];
37
+
38
+ // Leading rect
39
+ rects.push(new DOMRect(leadingRect.left, leadingRect.top, fullRect.right - leadingRect.left, leadingRect.bottom - leadingRect.top));
40
+
41
+ // Middle rect
42
+ const height = trailingRect.top - leadingRect.bottom;
43
+ if (height >= 10) {
44
+ rects.push(new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height));
45
+ }
46
+
47
+ // Trailing rect
48
+ rects.push(new DOMRect(fullRect.left, trailingRect.top, trailingRect.right - fullRect.left, trailingRect.bottom - trailingRect.top));
49
+ return rects;
50
+ }
51
+ //# sourceMappingURL=getContentRectsInTextarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContentRectsInTextarea.js","names":["getMirroredStyle","hiddenElement","getContentRectsInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","textContent","span","fullRect","getBoundingClientRect","remove","length","leadingChar","leadingSpan","leadingRect","slice","trailingChar","trailingSpan","trailingRect","top","rects","push","DOMRect","left","right","bottom","height","width"],"sources":["../../src/getContentRectsInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectsInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n): DOMRect[] {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const fullRect = span.getBoundingClientRect();\n span.remove();\n\n if (measureContent.length <= 1) {\n return [fullRect];\n }\n\n const leadingChar = measureContent[0];\n const leadingSpan = document.createElement(\"span\");\n leadingSpan.textContent = leadingChar;\n hiddenElement.appendChild(leadingSpan);\n const leadingRect = leadingSpan.getBoundingClientRect();\n leadingSpan.remove();\n\n hiddenElement.textContent = `${prefix}${measureContent.slice(0, -1)}`;\n const trailingChar = measureContent[measureContent.length - 1];\n const trailingSpan = document.createElement(\"span\");\n trailingSpan.textContent = trailingChar;\n hiddenElement.appendChild(trailingSpan);\n const trailingRect = trailingSpan.getBoundingClientRect();\n trailingSpan.remove();\n\n if (leadingRect.top === trailingRect.top) {\n return [fullRect];\n }\n\n const rects: DOMRect[] = [];\n\n // Leading rect\n rects.push(\n new DOMRect(\n leadingRect.left,\n leadingRect.top,\n fullRect.right - leadingRect.left,\n leadingRect.bottom - leadingRect.top\n )\n );\n\n // Middle rect\n const height = trailingRect.top - leadingRect.bottom;\n if (height >= 10) {\n rects.push(\n new DOMRect(fullRect.left, leadingRect.bottom, fullRect.width, height)\n );\n }\n\n // Trailing rect\n rects.push(\n new DOMRect(\n fullRect.left,\n trailingRect.top,\n trailingRect.right - fullRect.left,\n trailingRect.bottom - trailingRect.top\n )\n );\n\n return rects;\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -5,5 +5,5 @@ export * from "./interfaces.js";
5
5
  export * from "./pickFormItemProps.js";
6
6
  export * from "./TextareaAutoResize.js";
7
7
  export * from "./getCaretPositionInTextarea.js";
8
- export * from "./getContentRectInTextarea.js";
8
+ export * from "./getContentRectsInTextarea.js";
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectInTextarea.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,sBAAsB;AACpC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,iCAAiC;AAC/C,cAAc,+BAA+B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from \"./Form.js\";\nexport * from \"./FormItemElement.js\";\nexport * from \"./FormStore.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./pickFormItemProps.js\";\nexport * from \"./TextareaAutoResize.js\";\nexport * from \"./getCaretPositionInTextarea.js\";\nexport * from \"./getContentRectsInTextarea.js\";\n"],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,sBAAsB;AACpC,cAAc,gBAAgB;AAC9B,cAAc,iBAAiB;AAC/B,cAAc,wBAAwB;AACtC,cAAc,yBAAyB;AACvC,cAAc,iCAAiC;AAC/C,cAAc,gCAAgC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare function getContentRectsInTextarea(textarea: HTMLTextAreaElement, prefix: string, measureContent: string): DOMRect[];
@@ -5,4 +5,4 @@ export * from "./interfaces.js";
5
5
  export * from "./pickFormItemProps.js";
6
6
  export * from "./TextareaAutoResize.js";
7
7
  export * from "./getCaretPositionInTextarea.js";
8
- export * from "./getContentRectInTextarea.js";
8
+ export * from "./getContentRectsInTextarea.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-shared/form",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "homepage": "https://github.com/easyops-cn/next-advanced-bricks/tree/master/shared/form",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,7 +37,7 @@
37
37
  "dependencies": {
38
38
  "@next-core/element": "^1.2.19",
39
39
  "@next-core/react-element": "^1.0.38",
40
- "@next-core/types": "^1.17.0",
40
+ "@next-core/types": "^1.18.0",
41
41
  "lodash": "^4.17.21",
42
42
  "react": "0.0.0-experimental-ee8509801-20230117",
43
43
  "react-dom": "0.0.0-experimental-ee8509801-20230117",
@@ -48,5 +48,5 @@
48
48
  "@next-core/test-next": "^2.0.1",
49
49
  "concurrently": "^9.1.0"
50
50
  },
51
- "gitHead": "031ccbf9479c5677be9a53134969f5c2caaf1dbc"
51
+ "gitHead": "95eaa69743b3bda2fb3c2d9bf2f4c896f503ca03"
52
52
  }
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getContentRectInTextarea = getContentRectInTextarea;
7
- var _getMirroredStyle = require("./utils/getMirroredStyle.js");
8
- let hiddenElement;
9
- function getContentRectInTextarea(textarea, prefix, measureContent) {
10
- if (!hiddenElement) {
11
- hiddenElement = document.createElement("div");
12
- hiddenElement.setAttribute("tab-index", "-1");
13
- hiddenElement.setAttribute("aria-hidden", "true");
14
- document.body.appendChild(hiddenElement);
15
- }
16
- hiddenElement.setAttribute("style", (0, _getMirroredStyle.getMirroredStyle)(textarea));
17
- hiddenElement.textContent = prefix;
18
- const span = document.createElement("span");
19
- span.textContent = measureContent;
20
- hiddenElement.appendChild(span);
21
- const rect = span.getBoundingClientRect();
22
- span.remove();
23
- return rect;
24
- }
25
- //# sourceMappingURL=getContentRectInTextarea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getContentRectInTextarea.js","names":["_getMirroredStyle","require","hiddenElement","getContentRectInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","getMirroredStyle","textContent","span","rect","getBoundingClientRect","remove"],"sources":["../../src/getContentRectInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n) {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const rect = span.getBoundingClientRect();\n span.remove();\n return rect;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AAEA,IAAIC,aAAyC;AAEtC,SAASC,wBAAwBA,CACtCC,QAA6B,EAC7BC,MAAc,EACdC,cAAsB,EACtB;EACA,IAAI,CAACJ,aAAa,EAAE;IAClBA,aAAa,GAAGK,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC7CN,aAAa,CAACO,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;IAC7CP,aAAa,CAACO,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACjDF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACT,aAAa,CAAC;EAC1C;EACAA,aAAa,CAACO,YAAY,CAAC,OAAO,EAAE,IAAAG,kCAAgB,EAACR,QAAQ,CAAC,CAAC;EAE/DF,aAAa,CAACW,WAAW,GAAGR,MAAM;EAElC,MAAMS,IAAI,GAAGP,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC3CM,IAAI,CAACD,WAAW,GAAGP,cAAc;EACjCJ,aAAa,CAACS,WAAW,CAACG,IAAI,CAAC;EAE/B,MAAMC,IAAI,GAAGD,IAAI,CAACE,qBAAqB,CAAC,CAAC;EACzCF,IAAI,CAACG,MAAM,CAAC,CAAC;EACb,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -1,19 +0,0 @@
1
- import { getMirroredStyle } from "./utils/getMirroredStyle.js";
2
- let hiddenElement;
3
- export function getContentRectInTextarea(textarea, prefix, measureContent) {
4
- if (!hiddenElement) {
5
- hiddenElement = document.createElement("div");
6
- hiddenElement.setAttribute("tab-index", "-1");
7
- hiddenElement.setAttribute("aria-hidden", "true");
8
- document.body.appendChild(hiddenElement);
9
- }
10
- hiddenElement.setAttribute("style", getMirroredStyle(textarea));
11
- hiddenElement.textContent = prefix;
12
- const span = document.createElement("span");
13
- span.textContent = measureContent;
14
- hiddenElement.appendChild(span);
15
- const rect = span.getBoundingClientRect();
16
- span.remove();
17
- return rect;
18
- }
19
- //# sourceMappingURL=getContentRectInTextarea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getContentRectInTextarea.js","names":["getMirroredStyle","hiddenElement","getContentRectInTextarea","textarea","prefix","measureContent","document","createElement","setAttribute","body","appendChild","textContent","span","rect","getBoundingClientRect","remove"],"sources":["../../src/getContentRectInTextarea.ts"],"sourcesContent":["import { getMirroredStyle } from \"./utils/getMirroredStyle.js\";\n\nlet hiddenElement: HTMLDivElement | undefined;\n\nexport function getContentRectInTextarea(\n textarea: HTMLTextAreaElement,\n prefix: string,\n measureContent: string\n) {\n if (!hiddenElement) {\n hiddenElement = document.createElement(\"div\");\n hiddenElement.setAttribute(\"tab-index\", \"-1\");\n hiddenElement.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenElement);\n }\n hiddenElement.setAttribute(\"style\", getMirroredStyle(textarea));\n\n hiddenElement.textContent = prefix;\n\n const span = document.createElement(\"span\");\n span.textContent = measureContent;\n hiddenElement.appendChild(span);\n\n const rect = span.getBoundingClientRect();\n span.remove();\n return rect;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,6BAA6B;AAE9D,IAAIC,aAAyC;AAE7C,OAAO,SAASC,wBAAwBA,CACtCC,QAA6B,EAC7BC,MAAc,EACdC,cAAsB,EACtB;EACA,IAAI,CAACJ,aAAa,EAAE;IAClBA,aAAa,GAAGK,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC7CN,aAAa,CAACO,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC;IAC7CP,aAAa,CAACO,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACjDF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACT,aAAa,CAAC;EAC1C;EACAA,aAAa,CAACO,YAAY,CAAC,OAAO,EAAER,gBAAgB,CAACG,QAAQ,CAAC,CAAC;EAE/DF,aAAa,CAACU,WAAW,GAAGP,MAAM;EAElC,MAAMQ,IAAI,GAAGN,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC3CK,IAAI,CAACD,WAAW,GAAGN,cAAc;EACjCJ,aAAa,CAACS,WAAW,CAACE,IAAI,CAAC;EAE/B,MAAMC,IAAI,GAAGD,IAAI,CAACE,qBAAqB,CAAC,CAAC;EACzCF,IAAI,CAACG,MAAM,CAAC,CAAC;EACb,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -1 +0,0 @@
1
- export declare function getContentRectInTextarea(textarea: HTMLTextAreaElement, prefix: string, measureContent: string): DOMRect;