@next2d/text 1.18.11 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/package.json +14 -18
  2. package/src/TextArea/service/TextAreaMovePositionService.d.ts +11 -0
  3. package/src/TextArea/service/TextAreaMovePositionService.js +42 -0
  4. package/src/TextArea/usecase/TextAreaCompositionEndUseCase.d.ts +9 -0
  5. package/src/TextArea/usecase/TextAreaCompositionEndUseCase.js +17 -0
  6. package/src/TextArea/usecase/TextAreaCompositionStartUseCase.d.ts +9 -0
  7. package/src/TextArea/usecase/TextAreaCompositionStartUseCase.js +17 -0
  8. package/src/TextArea/usecase/TextAreaCompositionUpdateUseCase.d.ts +10 -0
  9. package/src/TextArea/usecase/TextAreaCompositionUpdateUseCase.js +18 -0
  10. package/src/TextArea/usecase/TextAreaInputUseCase.d.ts +10 -0
  11. package/src/TextArea/usecase/TextAreaInputUseCase.js +25 -0
  12. package/src/TextArea/usecase/TextAreaRegisterEventUseCase.d.ts +10 -0
  13. package/src/TextArea/usecase/TextAreaRegisterEventUseCase.js +21 -0
  14. package/src/TextData.d.ts +103 -0
  15. package/src/TextData.js +183 -0
  16. package/src/TextField/service/TextFieldApplyChangesService.d.ts +11 -0
  17. package/src/TextField/service/TextFieldApplyChangesService.js +16 -0
  18. package/src/TextField/service/TextFieldBlinkingClearTimeoutService.d.ts +9 -0
  19. package/src/TextField/service/TextFieldBlinkingClearTimeoutService.js +16 -0
  20. package/src/TextField/service/TextFieldCompositionStartService.d.ts +11 -0
  21. package/src/TextField/service/TextFieldCompositionStartService.js +12 -0
  22. package/src/TextField/service/TextFieldPasteService.d.ts +11 -0
  23. package/src/TextField/service/TextFieldPasteService.js +16 -0
  24. package/src/TextField/usecase/TextFieldArrowDownUseCase.d.ts +12 -0
  25. package/src/TextField/usecase/TextFieldArrowDownUseCase.js +191 -0
  26. package/src/TextField/usecase/TextFieldArrowLeftUseCase.d.ts +12 -0
  27. package/src/TextField/usecase/TextFieldArrowLeftUseCase.js +98 -0
  28. package/src/TextField/usecase/TextFieldArrowRightUseCase.d.ts +12 -0
  29. package/src/TextField/usecase/TextFieldArrowRightUseCase.js +92 -0
  30. package/src/TextField/usecase/TextFieldArrowUpUseCase.d.ts +12 -0
  31. package/src/TextField/usecase/TextFieldArrowUpUseCase.js +156 -0
  32. package/src/TextField/usecase/TextFieldBlinkingUseCase.d.ts +11 -0
  33. package/src/TextField/usecase/TextFieldBlinkingUseCase.js +21 -0
  34. package/src/TextField/usecase/TextFieldBuildFromCharacterUseCase.d.ts +13 -0
  35. package/src/TextField/usecase/TextFieldBuildFromCharacterUseCase.js +58 -0
  36. package/src/TextField/usecase/TextFieldCompositionEndUseCase.d.ts +11 -0
  37. package/src/TextField/usecase/TextFieldCompositionEndUseCase.js +32 -0
  38. package/src/TextField/usecase/TextFieldCompositionUpdateUseCase.d.ts +12 -0
  39. package/src/TextField/usecase/TextFieldCompositionUpdateUseCase.js +109 -0
  40. package/src/TextField/usecase/TextFieldCopyUseCase.d.ts +11 -0
  41. package/src/TextField/usecase/TextFieldCopyUseCase.js +38 -0
  42. package/src/TextField/usecase/TextFieldDeleteTextUseCase.d.ts +11 -0
  43. package/src/TextField/usecase/TextFieldDeleteTextUseCase.js +108 -0
  44. package/src/TextField/usecase/TextFieldGetLineTextUseCase.d.ts +12 -0
  45. package/src/TextField/usecase/TextFieldGetLineTextUseCase.js +32 -0
  46. package/src/TextField/usecase/TextFieldGetTextDataUseCase.d.ts +15 -0
  47. package/src/TextField/usecase/TextFieldGetTextDataUseCase.js +26 -0
  48. package/src/TextField/usecase/TextFieldHtmlTextToRawTextUseCase.d.ts +11 -0
  49. package/src/TextField/usecase/TextFieldHtmlTextToRawTextUseCase.js +31 -0
  50. package/src/TextField/usecase/TextFieldInsertTextUseCase.d.ts +12 -0
  51. package/src/TextField/usecase/TextFieldInsertTextUseCase.js +79 -0
  52. package/src/TextField/usecase/TextFieldKeyDownEventUseCase.d.ts +12 -0
  53. package/src/TextField/usecase/TextFieldKeyDownEventUseCase.js +60 -0
  54. package/src/TextField/usecase/TextFieldReloadUseCase.d.ts +11 -0
  55. package/src/TextField/usecase/TextFieldReloadUseCase.js +25 -0
  56. package/src/TextField/usecase/TextFieldReplaceTextUseCase.d.ts +14 -0
  57. package/src/TextField/usecase/TextFieldReplaceTextUseCase.js +24 -0
  58. package/src/TextField/usecase/TextFieldResetUseCase.d.ts +11 -0
  59. package/src/TextField/usecase/TextFieldResetUseCase.js +20 -0
  60. package/src/TextField/usecase/TextFieldResizeAutoFontSizeUseCase.d.ts +11 -0
  61. package/src/TextField/usecase/TextFieldResizeAutoFontSizeUseCase.js +37 -0
  62. package/src/TextField/usecase/TextFieldResizeUseCase.d.ts +11 -0
  63. package/src/TextField/usecase/TextFieldResizeUseCase.js +49 -0
  64. package/src/TextField/usecase/TextFieldSelectAllUseCase.d.ts +11 -0
  65. package/src/TextField/usecase/TextFieldSelectAllUseCase.js +20 -0
  66. package/src/TextField/usecase/TextFieldSelectedFocusMoveUseCase.d.ts +11 -0
  67. package/src/TextField/usecase/TextFieldSelectedFocusMoveUseCase.js +90 -0
  68. package/src/TextField/usecase/TextFieldSetFocusIndexUseCase.d.ts +14 -0
  69. package/src/TextField/usecase/TextFieldSetFocusIndexUseCase.js +197 -0
  70. package/src/TextField/usecase/TextFieldSetFocusUseCase.d.ts +11 -0
  71. package/src/TextField/usecase/TextFieldSetFocusUseCase.js +43 -0
  72. package/src/TextField/usecase/TextFieldSetScrollXUseCase.d.ts +12 -0
  73. package/src/TextField/usecase/TextFieldSetScrollXUseCase.js +66 -0
  74. package/src/TextField/usecase/TextFieldSetScrollYUseCase.d.ts +12 -0
  75. package/src/TextField/usecase/TextFieldSetScrollYUseCase.js +66 -0
  76. package/src/TextField/usecase/TextFieldUpdateStopIndexUseCase.d.ts +12 -0
  77. package/src/TextField/usecase/TextFieldUpdateStopIndexUseCase.js +82 -0
  78. package/src/TextField.d.ts +602 -0
  79. package/src/TextField.js +1292 -0
  80. package/src/TextFormat/service/TextFormatGenerateFontStyleService.d.ts +11 -0
  81. package/src/TextFormat/service/TextFormatGenerateFontStyleService.js +19 -0
  82. package/src/TextFormat/service/TextFormatGetWidthMarginService.d.ts +11 -0
  83. package/src/TextFormat/service/TextFormatGetWidthMarginService.js +19 -0
  84. package/src/TextFormat/service/TextFormatHtmlTextGenerateStyleService.d.ts +11 -0
  85. package/src/TextFormat/service/TextFormatHtmlTextGenerateStyleService.js +51 -0
  86. package/src/TextFormat/service/TextFormatIsSameService.d.ts +12 -0
  87. package/src/TextFormat/service/TextFormatIsSameService.js +28 -0
  88. package/src/TextFormat/service/TextFormatSetDefaultService.d.ts +11 -0
  89. package/src/TextFormat/service/TextFormatSetDefaultService.js +22 -0
  90. package/{dist → src}/TextFormat.d.ts +42 -128
  91. package/src/TextFormat.js +233 -0
  92. package/src/TextParser/service/TextParserAdjustmentHeightService.d.ts +11 -0
  93. package/src/TextParser/service/TextParserAdjustmentHeightService.js +24 -0
  94. package/src/TextParser/service/TextParserParseStyleService.d.ts +11 -0
  95. package/src/TextParser/service/TextParserParseStyleService.js +80 -0
  96. package/src/TextParser/usecase/TextParserCreateNewLineUseCase.d.ts +13 -0
  97. package/src/TextParser/usecase/TextParserCreateNewLineUseCase.js +35 -0
  98. package/src/TextParser/usecase/TextParserParseHtmlTextUseCase.d.ts +15 -0
  99. package/src/TextParser/usecase/TextParserParseHtmlTextUseCase.js +37 -0
  100. package/src/TextParser/usecase/TextParserParseTagUseCase.d.ts +17 -0
  101. package/src/TextParser/usecase/TextParserParseTagUseCase.js +57 -0
  102. package/src/TextParser/usecase/TextParserParseTextUseCase.d.ts +16 -0
  103. package/src/TextParser/usecase/TextParserParseTextUseCase.js +140 -0
  104. package/src/TextParser/usecase/TextParserSetAttributesUseCase.d.ts +14 -0
  105. package/src/TextParser/usecase/TextParserSetAttributesUseCase.js +63 -0
  106. package/src/TextUtil.d.ts +114 -0
  107. package/src/TextUtil.js +186 -0
  108. package/src/index.d.ts +3 -0
  109. package/src/index.js +3 -0
  110. package/src/interface/IAttributeObject.d.ts +4 -0
  111. package/src/interface/IBlendMode.d.ts +1 -0
  112. package/src/interface/IBounds.d.ts +6 -0
  113. package/src/interface/ICharacter.d.ts +5 -0
  114. package/src/interface/ICharacter.js +1 -0
  115. package/src/interface/IDictionaryTag.d.ts +8 -0
  116. package/src/interface/IDictionaryTag.js +1 -0
  117. package/src/interface/IElementPosition.d.ts +4 -0
  118. package/src/interface/IElementPosition.js +1 -0
  119. package/src/interface/IFilterArray.d.ts +2 -0
  120. package/src/interface/IFilterArray.js +1 -0
  121. package/src/interface/IGrid.d.ts +6 -0
  122. package/src/interface/IGrid.js +1 -0
  123. package/src/interface/ILoopConfig.d.ts +8 -0
  124. package/src/interface/ILoopConfig.js +1 -0
  125. package/src/interface/ILoopType.d.ts +1 -0
  126. package/src/interface/ILoopType.js +1 -0
  127. package/src/interface/IMovieClipActionObject.d.ts +5 -0
  128. package/src/interface/IMovieClipActionObject.js +1 -0
  129. package/src/interface/IMovieClipCharacter.d.ts +17 -0
  130. package/src/interface/IMovieClipCharacter.js +1 -0
  131. package/src/interface/IMovieClipLabelObject.d.ts +4 -0
  132. package/src/interface/IMovieClipLabelObject.js +1 -0
  133. package/src/interface/IMovieClipSoundObject.d.ts +5 -0
  134. package/src/interface/IMovieClipSoundObject.js +1 -0
  135. package/src/interface/IOptions.d.ts +8 -0
  136. package/src/interface/IOptions.js +1 -0
  137. package/src/interface/IPlaceObject.d.ts +14 -0
  138. package/src/interface/IPlaceObject.js +1 -0
  139. package/src/interface/IRGBA.d.ts +6 -0
  140. package/src/interface/IRGBA.js +1 -0
  141. package/src/interface/IShapeCharacter.d.ts +14 -0
  142. package/src/interface/IShapeCharacter.js +1 -0
  143. package/src/interface/ISoundTag.d.ts +6 -0
  144. package/src/interface/ISoundTag.js +1 -0
  145. package/src/interface/ISurfaceFilter.d.ts +6 -0
  146. package/src/interface/ISurfaceFilter.js +1 -0
  147. package/src/interface/ITextFieldAutoSize.d.ts +1 -0
  148. package/src/interface/ITextFieldAutoSize.js +1 -0
  149. package/src/interface/ITextFieldCharacter copy.d.ts +26 -0
  150. package/src/interface/ITextFieldCharacter copy.js +1 -0
  151. package/src/interface/ITextFieldCharacter.d.ts +26 -0
  152. package/src/interface/ITextFieldCharacter.js +1 -0
  153. package/src/interface/ITextFieldType copy.d.ts +1 -0
  154. package/src/interface/ITextFieldType copy.js +1 -0
  155. package/src/interface/ITextFieldType.d.ts +1 -0
  156. package/src/interface/ITextFieldType.js +1 -0
  157. package/src/interface/ITextFormatAlign copy.d.ts +1 -0
  158. package/src/interface/ITextFormatAlign copy.js +1 -0
  159. package/src/interface/ITextFormatAlign.d.ts +1 -0
  160. package/src/interface/ITextFormatAlign.js +1 -0
  161. package/src/interface/ITextFormatObject.d.ts +14 -0
  162. package/src/interface/ITextFormatObject.js +1 -0
  163. package/src/interface/ITextObject.d.ts +12 -0
  164. package/src/interface/ITextObject.js +1 -0
  165. package/src/interface/ITextObjectMode.d.ts +1 -0
  166. package/src/interface/ITextObjectMode.js +1 -0
  167. package/src/interface/IVideoCharacter.d.ts +11 -0
  168. package/src/interface/IVideoCharacter.js +1 -0
  169. package/dist/TextData.d.ts +0 -74
  170. package/dist/TextData.js +0 -132
  171. package/dist/TextFormat.js +0 -493
  172. package/dist/TextParser.d.ts +0 -23
  173. package/dist/TextParser.js +0 -459
  174. package/dist/index.d.ts +0 -3
  175. package/dist/index.js +0 -3
  176. package/dist/interface/OptionsImpl.d.ts +0 -8
  177. package/dist/interface/TextObjectImpl.d.ts +0 -12
  178. package/dist/interface/TextObjectModeImpl.d.ts +0 -1
  179. /package/{dist/interface/OptionsImpl.js → src/interface/IAttributeObject.js} +0 -0
  180. /package/{dist/interface/TextObjectImpl.js → src/interface/IBlendMode.js} +0 -0
  181. /package/{dist/interface/TextObjectModeImpl.js → src/interface/IBounds.js} +0 -0
@@ -0,0 +1,11 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description テキストフィールドのコンポジションエンドイベントを処理します。
4
+ * Processes the composition end event of the text field.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (text_field: TextField) => void;
@@ -0,0 +1,32 @@
1
+ import { $textArea } from "../../TextUtil";
2
+ import { execute as textFieldGetTextDataUseCase } from "../../TextField/usecase/TextFieldGetTextDataUseCase";
3
+ /**
4
+ * @description テキストフィールドのコンポジションエンドイベントを処理します。
5
+ * Processes the composition end event of the text field.
6
+ *
7
+ * @param {TextField} text_field
8
+ * @return {void}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export const execute = (text_field) => {
13
+ if (text_field.compositionEndIndex > -1) {
14
+ const textData = textFieldGetTextDataUseCase(text_field);
15
+ for (let idx = text_field.compositionStartIndex; idx < text_field.compositionEndIndex; ++idx) {
16
+ const textObject = textData.textTable[idx];
17
+ if (!textObject) {
18
+ continue;
19
+ }
20
+ textObject.textFormat.underline = false;
21
+ }
22
+ text_field.focusIndex = text_field.compositionEndIndex;
23
+ }
24
+ $textArea.blur();
25
+ $textArea.value = "";
26
+ if (text_field.focus) {
27
+ $textArea.focus();
28
+ }
29
+ text_field.selectIndex = -1;
30
+ text_field.compositionStartIndex = -1;
31
+ text_field.compositionEndIndex = -1;
32
+ };
@@ -0,0 +1,12 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description 新しい文字が入力されたときのイベント処理関数
4
+ * Event processing function when a new character is entered
5
+ *
6
+ * @param {TextField} text_field
7
+ * @param {string} texts
8
+ * @return {void}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (text_field: TextField, texts: string) => void;
@@ -0,0 +1,109 @@
1
+ import { TextFormat } from "../../TextFormat";
2
+ import { execute as textFieldGetTextDataUseCase } from "../../TextField/usecase/TextFieldGetTextDataUseCase";
3
+ import { execute as textFieldDeleteTextUseCase } from "../../TextField/usecase/TextFieldDeleteTextUseCase";
4
+ /**
5
+ * @description 新しい文字が入力されたときのイベント処理関数
6
+ * Event processing function when a new character is entered
7
+ *
8
+ * @param {TextField} text_field
9
+ * @param {string} texts
10
+ * @return {void}
11
+ * @method
12
+ * @protected
13
+ */
14
+ export const execute = (text_field, texts) => {
15
+ if (text_field.compositionEndIndex > -1) {
16
+ const cacheIndex = text_field.compositionStartIndex;
17
+ text_field.focusIndex = text_field.compositionStartIndex;
18
+ text_field.selectIndex = text_field.compositionEndIndex - 1;
19
+ text_field.compositionStartIndex = -1;
20
+ textFieldDeleteTextUseCase(text_field);
21
+ // reset
22
+ text_field.compositionStartIndex = cacheIndex;
23
+ text_field.selectIndex = -1;
24
+ }
25
+ let textData = textFieldGetTextDataUseCase(text_field);
26
+ const textFormats = [];
27
+ const length = texts.length;
28
+ let newText = "";
29
+ if (2 > textData.textTable.length) {
30
+ newText = texts;
31
+ text_field.focusIndex = 1;
32
+ text_field.compositionStartIndex = 1;
33
+ }
34
+ else {
35
+ for (let idx = 1; idx < textData.textTable.length; ++idx) {
36
+ const textObject = textData.textTable[idx];
37
+ if (!textObject) {
38
+ continue;
39
+ }
40
+ if (text_field.compositionStartIndex === idx) {
41
+ for (let idx = 0; idx < length; ++idx) {
42
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
43
+ newText += texts[idx];
44
+ }
45
+ }
46
+ switch (textObject.mode) {
47
+ case "break":
48
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
49
+ newText += "\n";
50
+ break;
51
+ case "text":
52
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
53
+ newText += textObject.text;
54
+ break;
55
+ default:
56
+ continue;
57
+ }
58
+ }
59
+ // last text
60
+ if (text_field.compositionStartIndex === textData.textTable.length) {
61
+ const textObject = textData.textTable[text_field.compositionStartIndex - 1];
62
+ if (!textObject) {
63
+ return;
64
+ }
65
+ for (let idx = 0; idx < length; ++idx) {
66
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
67
+ newText += texts[idx];
68
+ }
69
+ }
70
+ }
71
+ // update
72
+ if (textFormats.length) {
73
+ text_field.$textFormats = textFormats;
74
+ }
75
+ // fixed logic
76
+ text_field.text = newText;
77
+ // fixed logic
78
+ text_field.$textFormats = null;
79
+ textData = textFieldGetTextDataUseCase(text_field);
80
+ let index = text_field.compositionStartIndex + length;
81
+ for (let idx = text_field.compositionStartIndex; idx < index; ++idx) {
82
+ const textObject = textData.textTable[idx];
83
+ if (!textObject) {
84
+ break;
85
+ }
86
+ textObject.textFormat.underline = true;
87
+ if (textObject.mode !== "wrap") {
88
+ continue;
89
+ }
90
+ if (idx === text_field.compositionStartIndex) {
91
+ let subIndex = 1;
92
+ for (;;) {
93
+ const textObject = textData.textTable[idx - subIndex];
94
+ if (!textObject) {
95
+ break;
96
+ }
97
+ if (textObject.mode === "text") {
98
+ textObject.textFormat.underline = true;
99
+ break;
100
+ }
101
+ subIndex++;
102
+ }
103
+ }
104
+ if (idx > text_field.compositionStartIndex) {
105
+ index++;
106
+ }
107
+ }
108
+ text_field.compositionEndIndex = text_field.focusIndex = index;
109
+ };
@@ -0,0 +1,11 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description テキストフィールドの選択範囲のテキストを返却します。
4
+ * Returns the text of the selection in the text field.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {Promise<void>}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (text_field: TextField) => Promise<void>;
@@ -0,0 +1,38 @@
1
+ import { execute as textFieldGetTextDataUseCase } from "./TextFieldGetTextDataUseCase";
2
+ /**
3
+ * @description テキストフィールドの選択範囲のテキストを返却します。
4
+ * Returns the text of the selection in the text field.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {Promise<void>}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export const execute = async (text_field) => {
12
+ if (text_field.focusIndex === -1 || text_field.selectIndex === -1) {
13
+ return;
14
+ }
15
+ let text = "";
16
+ const minIndex = Math.min(text_field.focusIndex, text_field.selectIndex);
17
+ const maxIndex = Math.max(text_field.focusIndex, text_field.selectIndex) + 1;
18
+ const textData = textFieldGetTextDataUseCase(text_field);
19
+ for (let idx = minIndex; idx < maxIndex; ++idx) {
20
+ const textObject = textData.textTable[idx];
21
+ if (!textObject) {
22
+ continue;
23
+ }
24
+ switch (textObject.mode) {
25
+ case "text":
26
+ text += textObject.text;
27
+ break;
28
+ case "break":
29
+ text += "\n";
30
+ break;
31
+ default:
32
+ break;
33
+ }
34
+ }
35
+ await navigator
36
+ .clipboard
37
+ .writeText(text);
38
+ };
@@ -0,0 +1,11 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description 選択中のテキストを削除します。
4
+ * Deletes the selected text.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (text_field: TextField) => void;
@@ -0,0 +1,108 @@
1
+ import { TextFormat } from "../../TextFormat";
2
+ import { execute as textFieldGetTextDataUseCase } from "../../TextField/usecase/TextFieldGetTextDataUseCase";
3
+ /**
4
+ * @description 選択中のテキストを削除します。
5
+ * Deletes the selected text.
6
+ *
7
+ * @param {TextField} text_field
8
+ * @return {void}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export const execute = (text_field) => {
13
+ if (text_field.compositionStartIndex > -1) {
14
+ return;
15
+ }
16
+ let minIndex = 0;
17
+ let maxIndex = 0;
18
+ if (text_field.selectIndex > -1) {
19
+ minIndex = Math.min(text_field.focusIndex, text_field.selectIndex);
20
+ maxIndex = Math.max(text_field.focusIndex, text_field.selectIndex) + 1;
21
+ text_field.focusIndex = minIndex;
22
+ }
23
+ else {
24
+ if (2 > text_field.focusIndex) {
25
+ return;
26
+ }
27
+ text_field.focusIndex--;
28
+ }
29
+ const textData = textFieldGetTextDataUseCase(text_field);
30
+ const textObject = textData.textTable[text_field.focusIndex];
31
+ if (textObject && textObject.mode === "wrap") {
32
+ text_field.focusIndex--;
33
+ }
34
+ const textFormats = [];
35
+ let newText = "";
36
+ for (let idx = 1; idx < textData.textTable.length; ++idx) {
37
+ const textObject = textData.textTable[idx];
38
+ if (!textObject) {
39
+ continue;
40
+ }
41
+ if (text_field.focusIndex === idx
42
+ || minIndex <= idx && maxIndex > idx) {
43
+ continue;
44
+ }
45
+ switch (textObject.mode) {
46
+ case "break":
47
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
48
+ newText += "\n";
49
+ break;
50
+ case "text":
51
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
52
+ newText += textObject.text;
53
+ break;
54
+ default:
55
+ continue;
56
+ }
57
+ }
58
+ if (textData.textTable.length === text_field.focusIndex) {
59
+ textFormats.pop();
60
+ newText = newText.slice(0, -1);
61
+ }
62
+ text_field.selectIndex = -1;
63
+ if (!newText) {
64
+ // reset
65
+ text_field.text = "";
66
+ text_field.focusIndex = 1;
67
+ }
68
+ else {
69
+ const beforeTextWidth = text_field.textWidth;
70
+ const beforeTextHeight = text_field.textHeight;
71
+ // fixed logic
72
+ text_field.$textFormats = textFormats;
73
+ // fixed logic
74
+ text_field.text = newText;
75
+ if (text_field.scrollX > 0) {
76
+ const textWidth = text_field.textWidth;
77
+ const width = text_field.width;
78
+ switch (true) {
79
+ case width > textWidth:
80
+ text_field.$scrollX = 0;
81
+ break;
82
+ case beforeTextWidth !== textWidth:
83
+ text_field.$scrollX -= (beforeTextWidth - textWidth)
84
+ / (textWidth / width);
85
+ break;
86
+ default:
87
+ break;
88
+ }
89
+ }
90
+ if (text_field.scrollY > 0) {
91
+ const textHeight = text_field.textHeight;
92
+ const height = text_field.height;
93
+ switch (true) {
94
+ case height > textHeight:
95
+ text_field.$scrollY = 0;
96
+ break;
97
+ case beforeTextHeight !== textHeight:
98
+ text_field.$scrollY -= (beforeTextHeight - textHeight)
99
+ / (textHeight / height);
100
+ break;
101
+ default:
102
+ break;
103
+ }
104
+ }
105
+ // fixed logic
106
+ text_field.$textFormats = null;
107
+ }
108
+ };
@@ -0,0 +1,12 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description 指定された行のテキストを返します。
4
+ * Returns the text of a given line.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @param {number} index
8
+ * @return {string}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (text_field: TextField, index: number) => string;
@@ -0,0 +1,32 @@
1
+ import { execute as textFieldGetTextDataUseCase } from "./TextFieldGetTextDataUseCase";
2
+ /**
3
+ * @description 指定された行のテキストを返します。
4
+ * Returns the text of a given line.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @param {number} index
8
+ * @return {string}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export const execute = (text_field, index) => {
13
+ let text = "";
14
+ const textData = textFieldGetTextDataUseCase(text_field);
15
+ for (let idx = 1; idx < textData.textTable.length; idx++) {
16
+ const textObject = textData.textTable[idx];
17
+ if (!textObject) {
18
+ continue;
19
+ }
20
+ if (textObject.line > index) {
21
+ break;
22
+ }
23
+ if (textObject.line !== index) {
24
+ continue;
25
+ }
26
+ if (textObject.mode !== "text") {
27
+ continue;
28
+ }
29
+ text += textObject.text;
30
+ }
31
+ return text;
32
+ };
@@ -0,0 +1,15 @@
1
+ import type { TextData } from "../../TextData";
2
+ import type { TextField } from "../../TextField";
3
+ /**
4
+ * @description テキスト情報を元に描画用のデータを生成して返します。
5
+ * 生成済みのデータがある場合は、そのデータを返します。
6
+ * Generates and returns data for drawing based on text information.
7
+ * If data has already been generated, that data is returned.
8
+ *
9
+ * @param {TextField} text_field
10
+ * @param {number} sub_font_size
11
+ * @return {TextData}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export declare const execute: (text_field: TextField, sub_font_size?: number) => TextData;
@@ -0,0 +1,26 @@
1
+ import { execute as textParserParseHtmlTextUseCase } from "../../TextParser/usecase/TextParserParseHtmlTextUseCase";
2
+ /**
3
+ * @description テキスト情報を元に描画用のデータを生成して返します。
4
+ * 生成済みのデータがある場合は、そのデータを返します。
5
+ * Generates and returns data for drawing based on text information.
6
+ * If data has already been generated, that data is returned.
7
+ *
8
+ * @param {TextField} text_field
9
+ * @param {number} sub_font_size
10
+ * @return {TextData}
11
+ * @method
12
+ * @protected
13
+ */
14
+ export const execute = (text_field, sub_font_size = 0) => {
15
+ if (text_field.$textData) {
16
+ return text_field.$textData;
17
+ }
18
+ text_field.$textData = textParserParseHtmlTextUseCase(text_field.htmlText, text_field.defaultTextFormat, {
19
+ "width": text_field.width,
20
+ "multiline": text_field.multiline,
21
+ "wordWrap": text_field.wordWrap,
22
+ "subFontSize": sub_font_size,
23
+ "textFormats": text_field.$textFormats
24
+ });
25
+ return text_field.$textData;
26
+ };
@@ -0,0 +1,11 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description HTMLテキストをプレーンテキストに変換します。
4
+ * Convert HTML text to plain text.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {string}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (text_field: TextField) => string;
@@ -0,0 +1,31 @@
1
+ import { execute as textFieldGetTextDataUseCase } from "./TextFieldGetTextDataUseCase";
2
+ /**
3
+ * @description HTMLテキストをプレーンテキストに変換します。
4
+ * Convert HTML text to plain text.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {string}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export const execute = (text_field) => {
12
+ let text = "";
13
+ const textData = textFieldGetTextDataUseCase(text_field);
14
+ for (let idx = 1; idx < textData.textTable.length; ++idx) {
15
+ const textObject = textData.textTable[idx];
16
+ if (!textObject) {
17
+ continue;
18
+ }
19
+ switch (textObject.mode) {
20
+ case "text":
21
+ text += textObject.text;
22
+ break;
23
+ case "break":
24
+ text += "\r";
25
+ break;
26
+ default:
27
+ continue;
28
+ }
29
+ }
30
+ return text;
31
+ };
@@ -0,0 +1,12 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description TextField にテキストを挿入します。
4
+ * Inserts text into the TextField.
5
+ *
6
+ * @param {TextField} text_field
7
+ * @param {string} texts
8
+ * @return {void}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (text_field: TextField, texts: string) => void;
@@ -0,0 +1,79 @@
1
+ import { TextFormat } from "../../TextFormat";
2
+ import { $textArea } from "../../TextUtil";
3
+ import { execute as textFieldDeleteTextUseCase } from "../../TextField/usecase/TextFieldDeleteTextUseCase";
4
+ import { execute as textFieldGetTextDataUseCase } from "../../TextField/usecase/TextFieldGetTextDataUseCase";
5
+ /**
6
+ * @description TextField にテキストを挿入します。
7
+ * Inserts text into the TextField.
8
+ *
9
+ * @param {TextField} text_field
10
+ * @param {string} texts
11
+ * @return {void}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (text_field, texts) => {
16
+ if (text_field.focusIndex === -1
17
+ || text_field.compositionStartIndex > -1) {
18
+ return;
19
+ }
20
+ if (text_field.selectIndex > -1) {
21
+ textFieldDeleteTextUseCase(text_field);
22
+ }
23
+ const textData = textFieldGetTextDataUseCase(text_field);
24
+ if (2 > textData.textTable.length) {
25
+ text_field.focusIndex = 2;
26
+ text_field.appendText(texts);
27
+ return;
28
+ }
29
+ const textFormats = [];
30
+ let newText = "";
31
+ for (let idx = 1; idx < textData.textTable.length; ++idx) {
32
+ const textObject = textData.textTable[idx];
33
+ if (!textObject) {
34
+ continue;
35
+ }
36
+ if (text_field.focusIndex === idx) {
37
+ for (let idx = 0; idx < texts.length; ++idx) {
38
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
39
+ newText += texts[idx];
40
+ }
41
+ }
42
+ switch (textObject.mode) {
43
+ case "break":
44
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
45
+ newText += "\n";
46
+ break;
47
+ case "text":
48
+ textFormats.push(new TextFormat(...Object.values(textObject.textFormat)));
49
+ newText += textObject.text;
50
+ break;
51
+ default:
52
+ continue;
53
+ }
54
+ }
55
+ if (textData.textTable.length === text_field.focusIndex) {
56
+ let textFormat;
57
+ if (textData.textTable.length) {
58
+ const textObject = textData.textTable[textData.textTable.length - 1];
59
+ textFormat = new TextFormat(...Object.values(textObject.textFormat));
60
+ }
61
+ else {
62
+ textFormat = text_field.defaultTextFormat;
63
+ text_field.focusIndex++;
64
+ }
65
+ for (let idx = 0; idx < texts.length; ++idx) {
66
+ textFormats.push(new TextFormat(...Object.values(textFormat.toObject())));
67
+ newText += texts[idx];
68
+ }
69
+ }
70
+ // fixed logic
71
+ text_field.$textFormats = textFormats;
72
+ // fixed logic
73
+ text_field.text = newText;
74
+ // fixed logic
75
+ text_field.$textFormats = null;
76
+ text_field.focusIndex += texts.length;
77
+ text_field.selectIndex = -1;
78
+ $textArea.value = "";
79
+ };
@@ -0,0 +1,12 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description テキストフィールドのキーボードダウンイベントを実行する
4
+ * Execute the keyboard down event of the text field
5
+ *
6
+ * @param {TextField} text_field
7
+ * @param {KeyboardEvent} event
8
+ * @return {void}
9
+ * @method
10
+ * @protected
11
+ */
12
+ export declare const execute: (text_field: TextField, event: KeyboardEvent) => void;
@@ -0,0 +1,60 @@
1
+ import { execute as textFieldArrowDownUseCase } from "../../TextField/usecase/TextFieldArrowDownUseCase";
2
+ import { execute as textFieldArrowUpUseCase } from "../../TextField/usecase/TextFieldArrowUpUseCase";
3
+ import { execute as textFieldArrowLeftUseCase } from "../../TextField/usecase/TextFieldArrowLeftUseCase";
4
+ import { execute as textFieldArrowRightUseCase } from "../../TextField/usecase/TextFieldArrowRightUseCase";
5
+ /**
6
+ * @description テキストフィールドのキーボードダウンイベントを実行する
7
+ * Execute the keyboard down event of the text field
8
+ *
9
+ * @param {TextField} text_field
10
+ * @param {KeyboardEvent} event
11
+ * @return {void}
12
+ * @method
13
+ * @protected
14
+ */
15
+ export const execute = (text_field, event) => {
16
+ if (text_field.focusIndex === -1) {
17
+ return;
18
+ }
19
+ switch (event.key) {
20
+ case "Backspace":
21
+ case "Delete":
22
+ text_field.deleteText();
23
+ break;
24
+ case "Enter":
25
+ text_field.insertText("\n");
26
+ break;
27
+ case "ArrowLeft":
28
+ textFieldArrowLeftUseCase(text_field, event.shiftKey);
29
+ break;
30
+ case "ArrowRight":
31
+ textFieldArrowRightUseCase(text_field, event.shiftKey);
32
+ break;
33
+ case "ArrowUp":
34
+ textFieldArrowUpUseCase(text_field, event.shiftKey);
35
+ break;
36
+ case "ArrowDown":
37
+ textFieldArrowDownUseCase(text_field, event.shiftKey);
38
+ break;
39
+ case "a":
40
+ if (event.metaKey || event.ctrlKey) {
41
+ event.preventDefault();
42
+ text_field.selectAll();
43
+ }
44
+ break;
45
+ case "c":
46
+ if (event.metaKey || event.ctrlKey) {
47
+ event.preventDefault();
48
+ text_field.copy();
49
+ }
50
+ break;
51
+ case "v":
52
+ if (event.metaKey || event.ctrlKey) {
53
+ event.preventDefault();
54
+ text_field.paste();
55
+ }
56
+ break;
57
+ default:
58
+ break;
59
+ }
60
+ };
@@ -0,0 +1,11 @@
1
+ import type { TextField } from "../../TextField";
2
+ /**
3
+ * @description テキストフィールドの描画生成情報を再計算します
4
+ * Recalculates the drawing generation information of the text field
5
+ *
6
+ * @param {TextField} text_field
7
+ * @return {void}
8
+ * @method
9
+ * @protected
10
+ */
11
+ export declare const execute: (text_field: TextField) => void;