capacitor-sora-editor 1.2.1 → 1.8.2

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 (571) hide show
  1. package/DEPENDENCY_SOLUTION.md +87 -87
  2. package/DEVELOPMENT.md +152 -152
  3. package/NO_JITPACK_WARNING.md +14 -14
  4. package/README.md +36 -0
  5. package/WORDWRAP_FLICKER_FIX.md +268 -205
  6. package/android/sora-editor/editor/src/main/AndroidManifest.xml +1 -1
  7. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/I18nConfig.kt +42 -0
  8. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/Experimental.kt +16 -0
  9. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/InvalidateRequired.kt +10 -0
  10. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/UnsupportedUserUsage.kt +14 -0
  11. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ClickEvent.kt +22 -0
  12. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ColorSchemeUpdateEvent.kt +1 -1
  13. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ContentChangeEvent.kt +41 -0
  14. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/DoubleClickEvent.kt +23 -0
  15. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorKeyEvent.kt +103 -0
  16. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorMotionEvent.kt +111 -0
  17. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Event.kt +69 -0
  18. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EventManager.kt +267 -0
  19. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EventReceiver.kt +5 -0
  20. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/HandleStateChangeEvent.kt +21 -0
  21. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/InterceptTarget.kt +18 -0
  22. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/KeyBindingEvent.kt +34 -0
  23. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/LongPressEvent.kt +25 -0
  24. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ResultedEvent.kt +21 -0
  25. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ScrollEvent.kt +48 -0
  26. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SelectionChangeEvent.kt +81 -0
  27. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SideIconClickEvent.kt +1 -1
  28. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SnippetEvent.kt +41 -0
  29. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SubscriptionReceipt.kt +35 -0
  30. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Unsubscribe.kt +28 -0
  31. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Utils.kt +1 -1
  32. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/editorMinorEvents.kt +1 -1
  33. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BubbleHelper.kt +59 -0
  34. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BufferedDrawPoints.kt +37 -0
  35. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphemeBoundsBreaker.kt +31 -0
  36. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicCharacter.kt +28 -0
  37. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicsCompat.kt +48 -0
  38. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/Paint.kt +191 -0
  39. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/RectUtils.kt +16 -0
  40. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/SingleCharacterWidths.kt +156 -0
  41. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/TextRow.kt +1465 -0
  42. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/TextRowParams.kt +1 -1
  43. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/ColorInlayHintRenderer.kt +1 -1
  44. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/InlayHintRenderer.kt +2 -2
  45. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/InlayHintRendererProvider.kt +1 -1
  46. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/TextInlayHintRenderer.kt +2 -2
  47. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/EmptyLanguage.kt +94 -0
  48. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/Language.kt +188 -0
  49. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/QuickQuoteHandler.kt +46 -0
  50. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AnalyzeManager.kt +67 -0
  51. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AsyncIncrementalAnalyzeManager.kt +504 -0
  52. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/IncrementalAnalyzeManager.kt +93 -0
  53. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/SequenceUpdateRange.kt +1 -1
  54. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/SimpleAnalyzeManager.kt +194 -0
  55. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/StyleReceiver.kt +63 -0
  56. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/StyleUpdateRange.kt +1 -1
  57. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/BracketsProvider.kt +21 -0
  58. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/OnlineBracketsMatcher.kt +83 -0
  59. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/PairedBracket.kt +13 -0
  60. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/SimpleBracketsCollector.kt +53 -0
  61. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionCancelledException.kt +14 -0
  62. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionHelper.kt +48 -0
  63. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionItem.kt +131 -0
  64. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionItemKind.kt +1 -1
  65. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionPublisher.kt +250 -0
  66. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/IdentifierAutoComplete.kt +352 -0
  67. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/MatchHelper.kt +126 -0
  68. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleCompletionIconDrawer.kt +1 -1
  69. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleCompletionItem.kt +77 -0
  70. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleSnippetCompletionItem.kt +35 -0
  71. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SnippetDescription.kt +1 -1
  72. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/comparators.kt +1 -1
  73. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/filters.kt +3 -3
  74. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/CodeSnippet.kt +171 -0
  75. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/ConditionalFormat.kt +8 -0
  76. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/FormatString.kt +3 -0
  77. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/InterpolatedShellItem.kt +13 -0
  78. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NextUpperCaseFormat.kt +3 -0
  79. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NoFormat.kt +3 -0
  80. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceHolderElement.kt +1 -1
  81. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceholderDefinition.kt +2 -2
  82. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceholderItem.kt +22 -0
  83. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlainPlaceholderElement.kt +1 -1
  84. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlainTextItem.kt +17 -0
  85. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/SnippetItem.kt +33 -0
  86. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/Transform.kt +15 -0
  87. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/VariableItem.kt +15 -0
  88. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetParser.kt +544 -0
  89. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetTokenizer.kt +108 -0
  90. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/Token.kt +7 -0
  91. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/TokenType.kt +20 -0
  92. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticDetail.kt +1 -1
  93. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticRegion.kt +56 -0
  94. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticsContainer.kt +109 -0
  95. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/Quickfix.kt +1 -1
  96. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/folding/FoldingRegion.kt +50 -0
  97. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/AsyncFormatter.kt +182 -0
  98. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/Formatter.kt +72 -0
  99. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandleResult.kt +18 -0
  100. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandler.kt +32 -0
  101. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/BlocksUpdater.kt +34 -0
  102. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/CodeBlock.kt +165 -0
  103. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/EmptyReader.kt +30 -0
  104. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/HighlightTextContainer.kt +1 -1
  105. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpanUpdater.kt +180 -0
  106. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpans.kt +210 -0
  107. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Span.kt +139 -0
  108. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/SpanFactory.kt +41 -0
  109. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/SpanPool.kt +1 -1
  110. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Spans.kt +104 -0
  111. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Styles.kt +219 -0
  112. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/StylesUtils.kt +82 -0
  113. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/TextStyle.kt +130 -31
  114. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/color/ConstColor.kt +1 -1
  115. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/color/EditorColor.kt +1 -1
  116. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/color/ResolvableColor.kt +1 -1
  117. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/InlayHint.kt +1 -1
  118. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/InlayHintsContainer.kt +1 -1
  119. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/IntSetUpdateRange.kt +1 -1
  120. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/SparseUpdateRange.kt +1 -1
  121. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/inlayHints.kt +1 -1
  122. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineAnchorStyle.kt +2 -2
  123. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineBackground.kt +2 -2
  124. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineGutterBackground.kt +1 -1
  125. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineSideIcon.kt +1 -1
  126. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineStyles.kt +1 -1
  127. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/patching/SparseStylePatches.kt +2 -2
  128. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/patching/StylePatch.kt +1 -1
  129. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanClickableUrl.kt +1 -1
  130. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanColorResolver.kt +1 -1
  131. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanConstColorResolver.kt +1 -1
  132. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExt.kt +1 -1
  133. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExtAttrs.kt +39 -0
  134. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExternalRenderer.kt +1 -1
  135. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanInteractionInfo.kt +1 -1
  136. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/NoExtSpanImpl.kt +89 -0
  137. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/SpanImpl.kt +103 -0
  138. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/util/PointAnchorContainer.kt +1 -1
  139. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/BaseAnalyzeManager.kt +44 -0
  140. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextAnalyzeManager.kt +30 -0
  141. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextSpans.kt +42 -0
  142. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/{AndroidEmoji.java → AndroidEmoji.kt} +29 -27
  143. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CachedIndexer.kt +408 -0
  144. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharArrayWrapper.kt +40 -0
  145. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharPosition.kt +97 -0
  146. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharSequenceIterator.kt +66 -0
  147. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ComposingText.kt +72 -0
  148. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Content.kt +889 -33
  149. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/{widget/component/EditorBuiltinComponent.java → text/ContentExtensions.kt} +14 -24
  150. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentIO.kt +149 -0
  151. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentLine.kt +252 -0
  152. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentListener.kt +67 -0
  153. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentReference.kt +177 -0
  154. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Cursor.kt +316 -0
  155. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/FunctionCharacters.kt +46 -0
  156. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ICUUtils.kt +58 -0
  157. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Indexer.kt +63 -0
  158. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/InsertTextHelper.kt +95 -0
  159. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/LineSeparator.kt +51 -0
  160. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/SpanRecycler.kt +71 -0
  161. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextLayoutHelper.kt +105 -0
  162. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextRange.kt +48 -0
  163. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextReference.kt +91 -0
  164. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtils.kt +181 -0
  165. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtilsP.kt +232 -0
  166. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UndoManager.kt +569 -0
  167. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UnicodeIterator.kt +69 -0
  168. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/BidiRequirementChecker.kt +5 -0
  169. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/ContentBidi.kt +104 -0
  170. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/Directions.kt +43 -0
  171. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/IDirections.kt +9 -0
  172. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/TextBidi.kt +67 -0
  173. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/VisualDirections.kt +45 -0
  174. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreaker.kt +19 -0
  175. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerEmpty.kt +13 -0
  176. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerIcu.kt +36 -0
  177. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerProgram.kt +23 -0
  178. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/method/KeyMetaStates.kt +55 -0
  179. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BinaryHeap.kt +216 -0
  180. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BlockIntList.kt +314 -0
  181. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/CharCode.kt +1 -1
  182. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Chars.kt +1 -1
  183. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ClipDataUtils.kt +29 -0
  184. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/EditorHandler.kt +1 -1
  185. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Floats.kt +10 -0
  186. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/IntPair.kt +76 -0
  187. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/KeyboardUtils.kt +1 -1
  188. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Logger.kt +78 -0
  189. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/LongArrayList.kt +104 -0
  190. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MutableInt.kt +14 -0
  191. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MutableIntList.kt +35 -0
  192. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MutableLongLongMap.kt +36 -0
  193. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MyCharacter.kt +127 -0
  194. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Numbers.kt +109 -0
  195. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ObjectPool.kt +44 -0
  196. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/RegionIterator.kt +123 -0
  197. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/RendererUtils.kt +1 -1
  198. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ReversedListView.kt +1 -1
  199. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/SegmentList.kt +273 -0
  200. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ShareableData.kt +1 -1
  201. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryCharBuffer.kt +31 -0
  202. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryFloatBuffer.kt +44 -0
  203. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ThemeUtils.kt +14 -0
  204. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TrieTree.kt +137 -0
  205. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ViewUtils.kt +39 -0
  206. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefGrammar.kt +11 -0
  207. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefHelper.kt +27 -0
  208. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefParser.kt +89 -0
  209. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefToken.kt +16 -0
  210. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CodeEditor.kt +5509 -0
  211. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CursorBlink.kt +78 -0
  212. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/DirectAccessProps.kt +604 -0
  213. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/Editor.kt +1 -1
  214. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorInputConnection.kt +708 -0
  215. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorKeyEventHandler.kt +678 -0
  216. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorRenderer.kt +3542 -0
  217. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorScroller.kt +89 -0
  218. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorSearcher.kt +531 -0
  219. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorStyleDelegate.kt +109 -0
  220. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorTouchEventHandler.kt +1349 -0
  221. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/LanguageHelper.kt +38 -0
  222. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/RegionResolver.kt +1 -1
  223. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SelectionMovement.kt +27 -37
  224. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolInputView.kt +103 -0
  225. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolPairMatch.kt +261 -0
  226. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/base/EditorPopupWindow.kt +244 -0
  227. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/CompletionLayout.kt +59 -0
  228. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionItemAdapter.kt +60 -0
  229. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionLayout.kt +225 -0
  230. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorAutoCompletion.kt +300 -0
  231. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorBuiltinComponent.kt +15 -0
  232. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorCompletionAdapter.kt +87 -0
  233. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorContextMenuCreator.kt +6 -28
  234. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorDiagnosticTooltipWindow.kt +27 -20
  235. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorTextActionWindow.kt +358 -0
  236. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/Magnifier.kt +354 -0
  237. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/ext/EditorSpanInteractionHandler.kt +3 -3
  238. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/AbstractLayout.kt +126 -0
  239. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/{Layout.java → Layout.kt} +30 -63
  240. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/LineBreakLayout.kt +370 -0
  241. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/Row.kt +57 -0
  242. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElement.kt +52 -0
  243. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElementTypes.kt +18 -0
  244. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowIterator.kt +38 -0
  245. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/ViewMeasureHelper.kt +135 -0
  246. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/WordwrapLayout.kt +703 -0
  247. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/MeasureCacheItem.kt +1 -1
  248. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderCache.kt +1 -1
  249. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderContext.kt +1 -1
  250. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderNodeHolder.kt +3 -25
  251. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderingConstants.kt +53 -0
  252. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/TextAdvancesCache.kt +89 -0
  253. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/EditorColorScheme.kt +393 -0
  254. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeDarcula.kt +40 -0
  255. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeEclipse.kt +34 -0
  256. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeGitHub.kt +28 -0
  257. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeNotepadXX.kt +34 -0
  258. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeVS2019.kt +40 -0
  259. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/SnippetController.kt +4 -3
  260. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/TransformApplier.kt +103 -0
  261. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ClipboardBasedSnippetVariableResolver.kt +21 -0
  262. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CommentBasedSnippetVariableResolver.kt +23 -0
  263. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CompositeSnippetVariableResolver.kt +35 -0
  264. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/EditorBasedSnippetVariableResolver.kt +36 -0
  265. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/FileBasedSnippetVariableResolver.kt +11 -0
  266. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ISnippetVariableResolver.kt +21 -0
  267. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/RandomBasedSnippetVariableResolver.kt +22 -0
  268. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/TimeBasedSnippetVariableResolver.kt +58 -0
  269. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/WorkspaceBasedSnippetVariableResolver.kt +11 -0
  270. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/CursorAnimator.kt +54 -0
  271. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/DiagnosticIndicatorStyle.kt +13 -0
  272. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPosition.kt +9 -0
  273. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPositionMode.kt +6 -0
  274. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineNumberTipTextProvider.kt +1 -1
  275. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/SelectionHandleStyle.kt +82 -0
  276. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/DefaultLineNumberTip.kt +1 -1
  277. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/FadeCursorAnimator.kt +143 -0
  278. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleDrop.kt +66 -0
  279. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleNone.kt +30 -0
  280. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleSideDrop.kt +62 -0
  281. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/MoveCursorAnimator.kt +127 -0
  282. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/ScaleCursorAnimator.kt +134 -0
  283. package/android/sora-editor/editor/src/main/res/anim/anim_diagnostic_tooltip_window_enter.xml +1 -1
  284. package/android/sora-editor/editor/src/main/res/anim/anim_diagnostic_tooltip_window_exit.xml +1 -1
  285. package/android/sora-editor/editor/src/main/res/anim/anim_text_action_popup_enter.xml +1 -1
  286. package/android/sora-editor/editor/src/main/res/anim/anim_text_action_popup_exit.xml +1 -1
  287. package/android/sora-editor/editor/src/main/res/drawable/baseline_more_vert_24.xml +1 -1
  288. package/android/sora-editor/editor/src/main/res/drawable/editor_text_select_start.xml +1 -1
  289. package/android/sora-editor/editor/src/main/res/drawable/ic_more_vert_black_20dp.xml +1 -1
  290. package/android/sora-editor/editor/src/main/res/drawable/ic_sora_handle_drop.xml +1 -1
  291. package/android/sora-editor/editor/src/main/res/drawable/line_break.xml +1 -1
  292. package/android/sora-editor/editor/src/main/res/drawable/magnifier_background.xml +1 -1
  293. package/android/sora-editor/editor/src/main/res/drawable/round_content_copy_20.xml +1 -1
  294. package/android/sora-editor/editor/src/main/res/drawable/round_content_cut_20.xml +1 -1
  295. package/android/sora-editor/editor/src/main/res/drawable/round_content_paste_20.xml +1 -1
  296. package/android/sora-editor/editor/src/main/res/drawable/round_save_20.xml +1 -1
  297. package/android/sora-editor/editor/src/main/res/drawable/round_select_all_20.xml +1 -1
  298. package/android/sora-editor/editor/src/main/res/drawable/softwrap_left.xml +1 -1
  299. package/android/sora-editor/editor/src/main/res/drawable/softwrap_right.xml +1 -1
  300. package/android/sora-editor/editor/src/main/res/layout/default_completion_result_item.xml +1 -1
  301. package/android/sora-editor/editor/src/main/res/layout/diagnostic_tooltip_window.xml +1 -1
  302. package/android/sora-editor/editor/src/main/res/layout/magnifier_popup.xml +1 -1
  303. package/android/sora-editor/editor/src/main/res/layout/text_compose_panel.xml +2 -1
  304. package/android/sora-editor/editor/src/main/res/values/attrs.xml +1 -1
  305. package/android/sora-editor/editor/src/main/res/values/colors.xml +1 -1
  306. package/android/sora-editor/editor/src/main/res/values/dimens.xml +1 -1
  307. package/android/sora-editor/editor/src/main/res/values/strings.xml +1 -1
  308. package/android/sora-editor/editor/src/main/res/values/style.xml +1 -1
  309. package/android/sora-editor/editor/src/main/res/values-night/colors.xml +1 -1
  310. package/android/sora-editor/editor/src/main/res/values-zh/strings.xml +1 -1
  311. package/android/sora-editor/language-textmate/src/main/AndroidManifest.xml +1 -1
  312. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/MyState.kt +11 -0
  313. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateAnalyzer.kt +269 -0
  314. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateColorScheme.kt +298 -0
  315. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateLanguage.kt +219 -0
  316. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateNewlineHandler.kt +268 -0
  317. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateSymbolPairMatch.kt +167 -0
  318. package/android/sora-editor/{editor/src/main/java/io/github/abc15018045126/sora/event/EventReceiver.java → language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingHelper.kt} +7 -6
  319. package/android/sora-editor/{editor/src/main/java/io/github/abc15018045126/sora/util/MutableInt.java → language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegion.kt} +12 -14
  320. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegions.kt +93 -0
  321. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/IndentRange.kt +156 -0
  322. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/PreviousRegion.kt +7 -0
  323. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/RangesCollector.kt +25 -0
  324. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/FileProviderRegistry.kt +53 -0
  325. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/GrammarRegistry.kt +222 -0
  326. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/ThemeRegistry.kt +121 -0
  327. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/dsl/GrammarDefinitionDSL.kt +1 -1
  328. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/DefaultGrammarDefinition.kt +68 -0
  329. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/GrammarDefinition.kt +12 -0
  330. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/ThemeModel.kt +50 -0
  331. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/provider/AssetsFileResolver.java +1 -23
  332. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/provider/FileResolver.java +1 -23
  333. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/reader/LanguageDefinitionReader.java +1 -23
  334. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/ColorUtils.kt +57 -0
  335. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/MatcherUtils.kt +29 -0
  336. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/StringUtils.kt +46 -0
  337. package/android/sora-editor/oniguruma-native/src/main/java/io/github/abc15018045126/oniguruma/OnigNative.kt +95 -0
  338. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/SoraEditorPlugin.kt +342 -337
  339. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ComposeEditorActivity.kt +63 -63
  340. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/EditorViewModel.kt +141 -5
  341. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/EditorColorSettings.kt +190 -0
  342. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/EditorScreen.kt +390 -234
  343. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/SoraEditorWrapper.kt +104 -104
  344. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/theme/Theme.kt +38 -38
  345. package/package.json +1 -1
  346. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/I18nConfig.java +0 -69
  347. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/Experimental.java +0 -41
  348. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/InvalidateRequired.java +0 -40
  349. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/UnsupportedUserUsage.java +0 -39
  350. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ClickEvent.java +0 -49
  351. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ContentChangeEvent.java +0 -122
  352. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/DoubleClickEvent.java +0 -50
  353. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorKeyEvent.java +0 -157
  354. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorMotionEvent.java +0 -212
  355. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Event.java +0 -132
  356. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EventManager.java +0 -328
  357. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/HandleStateChangeEvent.java +0 -67
  358. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/InterceptTarget.java +0 -44
  359. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/KeyBindingEvent.java +0 -77
  360. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/LongPressEvent.java +0 -53
  361. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ResultedEvent.java +0 -63
  362. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ScrollEvent.java +0 -126
  363. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SelectionChangeEvent.java +0 -155
  364. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SnippetEvent.java +0 -92
  365. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SubscriptionReceipt.java +0 -67
  366. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Unsubscribe.java +0 -60
  367. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BubbleHelper.java +0 -76
  368. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BufferedDrawPoints.java +0 -66
  369. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphemeBoundsBreaker.java +0 -55
  370. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicCharacter.java +0 -52
  371. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicsCompat.java +0 -55
  372. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/Paint.java +0 -159
  373. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/RectUtils.java +0 -39
  374. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/SingleCharacterWidths.java +0 -160
  375. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/TextRow.java +0 -1402
  376. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/EmptyLanguage.java +0 -159
  377. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/Language.java +0 -215
  378. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/QuickQuoteHandler.java +0 -78
  379. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AnalyzeManager.java +0 -97
  380. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AsyncIncrementalAnalyzeManager.java +0 -604
  381. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/IncrementalAnalyzeManager.java +0 -120
  382. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/SimpleAnalyzeManager.java +0 -238
  383. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/StyleReceiver.java +0 -90
  384. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/BracketsProvider.java +0 -49
  385. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/OnlineBracketsMatcher.java +0 -112
  386. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/PairedBracket.java +0 -57
  387. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/SimpleBracketsCollector.java +0 -83
  388. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionCancelledException.java +0 -44
  389. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionHelper.java +0 -72
  390. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionItem.java +0 -163
  391. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionPublisher.java +0 -284
  392. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/IdentifierAutoComplete.java +0 -359
  393. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/MatchHelper.java +0 -131
  394. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleCompletionItem.java +0 -112
  395. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleSnippetCompletionItem.java +0 -71
  396. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/CodeSnippet.java +0 -223
  397. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/ConditionalFormat.java +0 -68
  398. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/FormatString.java +0 -30
  399. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/InterpolatedShellItem.java +0 -55
  400. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NextUpperCaseFormat.java +0 -28
  401. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NoFormat.java +0 -43
  402. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceholderItem.java +0 -58
  403. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlainTextItem.java +0 -56
  404. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/SnippetItem.java +0 -70
  405. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/Transform.java +0 -54
  406. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/VariableItem.java +0 -81
  407. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetParser.java +0 -571
  408. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetTokenizer.java +0 -131
  409. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/Token.java +0 -47
  410. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/TokenType.java +0 -59
  411. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticRegion.java +0 -95
  412. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticsContainer.java +0 -148
  413. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/folding/FoldingRegion.java +0 -89
  414. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/AsyncFormatter.java +0 -198
  415. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/Formatter.java +0 -104
  416. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandleResult.java +0 -47
  417. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandler.java +0 -60
  418. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/BlocksUpdater.java +0 -60
  419. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/CodeBlock.java +0 -182
  420. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/EmptyReader.java +0 -66
  421. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpanUpdater.java +0 -190
  422. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpans.java +0 -264
  423. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Span.java +0 -203
  424. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/SpanFactory.java +0 -73
  425. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Spans.java +0 -133
  426. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Styles.java +0 -280
  427. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/StylesUtils.java +0 -108
  428. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/TextStyle.java +0 -141
  429. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExtAttrs.java +0 -67
  430. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/NoExtSpanImpl.java +0 -165
  431. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/SpanImpl.java +0 -188
  432. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/BaseAnalyzeManager.java +0 -95
  433. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextAnalyzeManager.java +0 -65
  434. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextSpans.java +0 -78
  435. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CachedIndexer.java +0 -458
  436. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharArrayWrapper.java +0 -81
  437. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharPosition.java +0 -150
  438. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharSequenceIterator.java +0 -109
  439. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ComposingText.java +0 -91
  440. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Content.java +0 -1306
  441. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentIO.java +0 -173
  442. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentLine.java +0 -405
  443. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentListener.java +0 -81
  444. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentReference.java +0 -212
  445. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Cursor.java +0 -374
  446. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/FunctionCharacters.java +0 -71
  447. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ICUUtils.java +0 -85
  448. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Indexer.java +0 -92
  449. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/InsertTextHelper.java +0 -117
  450. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/LineSeparator.java +0 -123
  451. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/SpanRecycler.java +0 -103
  452. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextLayoutHelper.java +0 -122
  453. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextRange.java +0 -85
  454. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextReference.java +0 -132
  455. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtils.java +0 -196
  456. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtilsP.java +0 -236
  457. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UndoManager.java +0 -750
  458. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UnicodeIterator.java +0 -106
  459. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/BidiRequirementChecker.java +0 -31
  460. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/ContentBidi.java +0 -143
  461. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/Directions.java +0 -79
  462. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/IDirections.java +0 -39
  463. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/TextBidi.java +0 -93
  464. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/VisualDirections.java +0 -88
  465. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreaker.java +0 -47
  466. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerEmpty.java +0 -38
  467. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerIcu.java +0 -62
  468. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerProgram.java +0 -54
  469. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/method/KeyMetaStates.java +0 -93
  470. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BinaryHeap.java +0 -239
  471. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BlockIntList.java +0 -366
  472. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ClipDataUtils.java +0 -55
  473. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Floats.java +0 -33
  474. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/IntPair.java +0 -96
  475. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Logger.java +0 -109
  476. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/LongArrayList.java +0 -132
  477. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MyCharacter.java +0 -143
  478. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Numbers.java +0 -123
  479. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ObjectPool.java +0 -77
  480. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/RegionIterator.java +0 -162
  481. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/SegmentList.java +0 -323
  482. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryCharBuffer.java +0 -52
  483. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryFloatBuffer.java +0 -68
  484. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ThemeUtils.java +0 -38
  485. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TrieTree.java +0 -177
  486. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ViewUtils.java +0 -67
  487. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefGrammar.java +0 -40
  488. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefHelper.java +0 -53
  489. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefParser.java +0 -119
  490. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefToken.java +0 -65
  491. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CodeEditor.java +0 -5433
  492. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CursorBlink.java +0 -98
  493. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/DirectAccessProps.java +0 -561
  494. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorInputConnection.java +0 -714
  495. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorKeyEventHandler.java +0 -646
  496. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorRenderer.java +0 -2620
  497. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorScroller.java +0 -119
  498. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorSearcher.java +0 -553
  499. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorStyleDelegate.java +0 -143
  500. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorTouchEventHandler.java +0 -1306
  501. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/LanguageHelper.java +0 -66
  502. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolInputView.java +0 -154
  503. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolPairMatch.java +0 -334
  504. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/base/EditorPopupWindow.java +0 -351
  505. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/CompletionLayout.java +0 -89
  506. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionItemAdapter.java +0 -76
  507. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionLayout.java +0 -206
  508. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorAutoCompletion.java +0 -684
  509. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorCompletionAdapter.java +0 -118
  510. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorTextActionWindow.java +0 -362
  511. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/Magnifier.java +0 -396
  512. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/AbstractLayout.java +0 -158
  513. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/LineBreakLayout.java +0 -393
  514. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/Row.java +0 -77
  515. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElement.java +0 -70
  516. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElementTypes.java +0 -41
  517. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowIterator.java +0 -67
  518. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/ViewMeasureHelper.java +0 -123
  519. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/WordwrapLayout.java +0 -683
  520. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderingConstants.java +0 -79
  521. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/TextAdvancesCache.java +0 -122
  522. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/package-info.java +0 -30
  523. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/EditorColorScheme.java +0 -544
  524. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeDarcula.java +0 -70
  525. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeEclipse.java +0 -60
  526. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeGitHub.java +0 -54
  527. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeNotepadXX.java +0 -60
  528. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeVS2019.java +0 -70
  529. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/TransformApplier.java +0 -134
  530. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ClipboardBasedSnippetVariableResolver.java +0 -61
  531. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CommentBasedSnippetVariableResolver.java +0 -77
  532. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CompositeSnippetVariableResolver.java +0 -79
  533. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/EditorBasedSnippetVariableResolver.java +0 -76
  534. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/FileBasedSnippetVariableResolver.java +0 -39
  535. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ISnippetVariableResolver.java +0 -49
  536. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/RandomBasedSnippetVariableResolver.java +0 -55
  537. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/TimeBasedSnippetVariableResolver.java +0 -101
  538. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/WorkspaceBasedSnippetVariableResolver.java +0 -39
  539. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/CursorAnimator.java +0 -78
  540. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/DiagnosticIndicatorStyle.java +0 -37
  541. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPosition.java +0 -33
  542. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPositionMode.java +0 -30
  543. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/SelectionHandleStyle.java +0 -98
  544. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/FadeCursorAnimator.java +0 -179
  545. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleDrop.java +0 -80
  546. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleNone.java +0 -28
  547. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleSideDrop.java +0 -60
  548. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/MoveCursorAnimator.java +0 -159
  549. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/ScaleCursorAnimator.java +0 -166
  550. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/MyState.java +0 -46
  551. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateAnalyzer.java +0 -301
  552. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateColorScheme.java +0 -369
  553. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateLanguage.java +0 -314
  554. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateNewlineHandler.java +0 -547
  555. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateSymbolPairMatch.java +0 -240
  556. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingHelper.java +0 -35
  557. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegion.java +0 -51
  558. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegions.java +0 -96
  559. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/IndentRange.java +0 -169
  560. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/PreviousRegion.java +0 -41
  561. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/RangesCollector.java +0 -71
  562. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/FileProviderRegistry.java +0 -83
  563. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/GrammarRegistry.java +0 -321
  564. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/ThemeRegistry.java +0 -186
  565. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/DefaultGrammarDefinition.java +0 -121
  566. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/GrammarDefinition.java +0 -51
  567. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/ThemeModel.java +0 -106
  568. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/ColorUtils.java +0 -79
  569. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/MatcherUtils.java +0 -54
  570. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/StringUtils.java +0 -64
  571. package/android/sora-editor/oniguruma-native/src/main/java/io/github/abc15018045126/oniguruma/OnigNative.java +0 -121
@@ -1,1306 +0,0 @@
1
- /*
2
- * sora-editor - the awesome code editor for Android
3
- * https://github.com/abc15018045126/sora-editor
4
- * Copyright (C) 2020-2024 abc15018045126
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19
- * USA
20
- *
21
- * Please contact abc15018045126 by email 2073412493@qq.com if you need
22
- * additional information or have any questions
23
- */
24
- package io.github.abc15018045126.sora.widget;
25
-
26
- import android.content.res.Resources;
27
- import android.graphics.PointF;
28
- import android.graphics.RectF;
29
- import android.os.Build;
30
- import android.os.SystemClock;
31
- import android.util.TypedValue;
32
- import android.view.GestureDetector;
33
- import android.view.HapticFeedbackConstants;
34
- import android.view.MotionEvent;
35
- import android.view.ScaleGestureDetector;
36
- import android.view.ViewConfiguration;
37
-
38
- import androidx.annotation.NonNull;
39
- import androidx.annotation.Nullable;
40
-
41
- import io.github.abc15018045126.sora.annotations.UnsupportedUserUsage;
42
- import io.github.abc15018045126.sora.event.ClickEvent;
43
- import io.github.abc15018045126.sora.event.ContextClickEvent;
44
- import io.github.abc15018045126.sora.event.DoubleClickEvent;
45
- import io.github.abc15018045126.sora.event.DragSelectStopEvent;
46
- import io.github.abc15018045126.sora.event.EditorMotionEvent;
47
- import io.github.abc15018045126.sora.event.HandleStateChangeEvent;
48
- import io.github.abc15018045126.sora.event.InterceptTarget;
49
- import io.github.abc15018045126.sora.event.LongPressEvent;
50
- import io.github.abc15018045126.sora.event.ScrollEvent;
51
- import io.github.abc15018045126.sora.event.SelectionChangeEvent;
52
- import io.github.abc15018045126.sora.event.SideIconClickEvent;
53
- import io.github.abc15018045126.sora.graphics.RectUtils;
54
- import io.github.abc15018045126.sora.lang.styling.Span;
55
- import io.github.abc15018045126.sora.lang.styling.StylesUtils;
56
- import io.github.abc15018045126.sora.lang.styling.line.LineSideIcon;
57
- import io.github.abc15018045126.sora.text.CharPosition;
58
- import io.github.abc15018045126.sora.text.TextRange;
59
- import io.github.abc15018045126.sora.util.IntPair;
60
- import io.github.abc15018045126.sora.util.Numbers;
61
- import io.github.abc15018045126.sora.widget.component.Magnifier;
62
- import io.github.abc15018045126.sora.widget.style.SelectionHandleStyle;
63
- import kotlin.jvm.functions.Function5;
64
- import kotlin.jvm.functions.Function7;
65
-
66
- /**
67
- * Handles touch events of editor
68
- *
69
- * @author abc15018045126
70
- */
71
- @SuppressWarnings("CanBeFinal")
72
- public final class EditorTouchEventHandler implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener, ScaleGestureDetector.OnScaleGestureListener {
73
-
74
- private final static int HIDE_DELAY = 3000;
75
- private final static int HIDE_DELAY_HANDLE = 3500;
76
-
77
- private final static int SCROLLBAR_FADE_ANIMATION_TIME = 200;
78
- private final static int MAGNIFIER_TOUCH_SLOP = 4;
79
-
80
- private final static int LEFT_EDGE = 1;
81
- private final static int RIGHT_EDGE = 1 << 1;
82
- private final static int TOP_EDGE = 1 << 2;
83
- private final static int BOTTOM_EDGE = 1 << 3;
84
-
85
- private final CodeEditor editor;
86
- private final EditorScroller scroller;
87
- private final SelectionHandle insertHandle;
88
- Magnifier magnifier;
89
- int selHandleType = -1;
90
- boolean selHandleMoving;
91
- float motionX;
92
- float motionY;
93
- boolean glowTopOrBottom; //true for bottom
94
- boolean glowLeftOrRight; //true for right
95
- public boolean isScaling = false;
96
- float scaleMaxSize;
97
- float scaleMinSize;
98
- private float textSizeStart;
99
- private long timeLastScroll = 0;
100
- private long timeLastSetSelection = 0;
101
- private boolean holdingScrollbarVertical = false;
102
- private boolean holdingScrollbarHorizontal = false;
103
- private float thumbDownY = 0;
104
- private float thumbDownX = 0;
105
- private SelectionHandle leftHandle;
106
- private SelectionHandle rightHandle;
107
- private float edgeFieldSize;
108
- private int edgeFlags;
109
- private final int touchSlop;
110
- private MotionEvent thumbMotionRecord;
111
- private float mouseDownX;
112
- private float mouseDownY;
113
- private int mouseDownButtonState;
114
- private long lastTimeMousePrimaryClickUp;
115
- private boolean mouseDoubleClick;
116
- private PointF lastContextClickPosition;
117
- boolean mouseClick;
118
- boolean mouseCanMoveText;
119
- CharPosition draggingSelection;
120
-
121
- /* dragging selection fields */
122
- private boolean dragSelectActive;
123
- private boolean dragSelectStarted;
124
- private int dragSelectInitialCharIndex = -1;
125
- private int dragSelectInitialLeftIndex = -1;
126
- private int dragSelectInitialRightIndex = -1;
127
- private int dragSelectLastDragIndex = -1;
128
-
129
- /**
130
- * Create an event handler for the given editor
131
- *
132
- * @param editor Host editor
133
- */
134
- public EditorTouchEventHandler(@NonNull CodeEditor editor) {
135
- this.editor = editor;
136
- edgeFieldSize = editor.getDpUnit() * 18;
137
- scroller = new EditorScroller(editor);
138
- scaleMaxSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 26, Resources.getSystem().getDisplayMetrics());
139
- scaleMinSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 8, Resources.getSystem().getDisplayMetrics());
140
- magnifier = new Magnifier(editor);
141
- leftHandle = new SelectionHandle(SelectionHandle.LEFT);
142
- rightHandle = new SelectionHandle(SelectionHandle.RIGHT);
143
- insertHandle = new SelectionHandle(SelectionHandle.BOTH);
144
- var config = ViewConfiguration.get(editor.getContext());
145
- touchSlop = config.getScaledTouchSlop();
146
- }
147
-
148
- public boolean hasAnyHeldHandle() {
149
- return selHandleType != -1;
150
- }
151
-
152
- public boolean isHandleMoving() {
153
- return selHandleMoving;
154
- }
155
-
156
- /**
157
- * Whether we should draw scroll bars
158
- *
159
- * @return whether draw scroll bars
160
- */
161
- public boolean shouldDrawScrollBarForTouch() {
162
- return System.currentTimeMillis() - timeLastScroll < HIDE_DELAY + SCROLLBAR_FADE_ANIMATION_TIME || holdingScrollbarVertical || holdingScrollbarHorizontal;
163
- }
164
-
165
- @UnsupportedUserUsage
166
- public float getScrollBarFadeOutPercentageForTouch() {
167
- if (System.currentTimeMillis() - timeLastScroll < HIDE_DELAY || holdingScrollbarVertical || holdingScrollbarHorizontal) {
168
- return 0f;
169
- } else if (System.currentTimeMillis() - timeLastScroll >= HIDE_DELAY && System.currentTimeMillis() - timeLastScroll < HIDE_DELAY + SCROLLBAR_FADE_ANIMATION_TIME) {
170
- editor.postInvalidateOnAnimation();
171
- return (System.currentTimeMillis() - timeLastScroll - HIDE_DELAY) * 1f / SCROLLBAR_FADE_ANIMATION_TIME;
172
- }
173
- return 1f;
174
- }
175
-
176
- /**
177
- * Hide the insert handle at once
178
- */
179
- public void hideInsertHandle() {
180
- if (!shouldDrawInsertHandle()) {
181
- return;
182
- }
183
- timeLastSetSelection = 0;
184
- editor.invalidate();
185
- }
186
-
187
- /**
188
- * Whether the vertical scroll bar is touched
189
- *
190
- * @return Whether touched
191
- */
192
- public boolean holdVerticalScrollBar() {
193
- return holdingScrollbarVertical;
194
- }
195
-
196
- /**
197
- * Whether the horizontal scroll bar is touched
198
- *
199
- * @return Whether touched
200
- */
201
- public boolean holdHorizontalScrollBar() {
202
- return holdingScrollbarHorizontal;
203
- }
204
-
205
- /**
206
- * Whether insert handle is touched
207
- *
208
- * @return Whether touched
209
- */
210
- public boolean holdInsertHandle() {
211
- return selHandleType == SelectionHandle.BOTH;
212
- }
213
-
214
- /**
215
- * Whether the editor should draw insert handler
216
- *
217
- * @return Whether to draw
218
- */
219
- public boolean shouldDrawInsertHandle() {
220
- return (System.currentTimeMillis() - timeLastSetSelection < HIDE_DELAY_HANDLE || holdInsertHandle());
221
- }
222
-
223
- /**
224
- * Notify the editor later to hide scroll bars
225
- */
226
- public void notifyScrolled() {
227
- timeLastScroll = System.currentTimeMillis();
228
- class ScrollNotifier implements Runnable {
229
-
230
- @Override
231
- public void run() {
232
- if (System.currentTimeMillis() - timeLastScroll >= HIDE_DELAY) {
233
- editor.invalidate();
234
- }
235
- }
236
-
237
- }
238
- editor.postDelayedInLifecycle(new ScrollNotifier(), HIDE_DELAY);
239
- }
240
-
241
- /**
242
- * Notify the editor later to hide insert handle
243
- */
244
- public void notifyLater() {
245
- timeLastSetSelection = System.currentTimeMillis();
246
- class InvalidateNotifier implements Runnable {
247
-
248
- @Override
249
- public void run() {
250
- if (System.currentTimeMillis() - timeLastSetSelection >= HIDE_DELAY_HANDLE) {
251
- editor.invalidate();
252
- }
253
- }
254
-
255
- }
256
- editor.postDelayedInLifecycle(new InvalidateNotifier(), HIDE_DELAY_HANDLE);
257
- }
258
-
259
- /**
260
- * Called by editor
261
- * Whether this class is handling motions by user
262
- *
263
- * @return Whether handling
264
- */
265
- public boolean handlingMotions() {
266
- return holdHorizontalScrollBar() || holdVerticalScrollBar() || hasAnyHeldHandle();
267
- }
268
-
269
- /**
270
- * Get scroller for editor
271
- *
272
- * @return Scroller using
273
- */
274
- public EditorScroller getScroller() {
275
- return scroller;
276
- }
277
-
278
- /**
279
- * Reset states of handler
280
- */
281
- public void reset() {
282
- scroller.startScroll(0, 0, 0, 0, 0);
283
- reset2();
284
- }
285
-
286
- /**
287
- * Reset states of handler, except scrolling state
288
- */
289
- public void reset2() {
290
- holdingScrollbarHorizontal = holdingScrollbarVertical = false;
291
- selHandleType = -1;
292
- finishDragSelect();
293
- dismissMagnifier();
294
- }
295
-
296
- private SelectionHandleStyle.HandleDescriptor getHandleDescriptorByType(int type) {
297
- return switch (type) {
298
- case SelectionHandle.BOTH -> editor.getInsertHandleDescriptor();
299
- case SelectionHandle.LEFT -> editor.getLeftHandleDescriptor();
300
- case SelectionHandle.RIGHT -> editor.getRightHandleDescriptor();
301
- default -> null;
302
- };
303
- }
304
-
305
- public void updateMagnifier(MotionEvent e) {
306
- if (edgeFlags != 0 || !hasAnyHeldHandle() || !magnifier.isEnabled()) {
307
- dismissMagnifier();
308
- return;
309
- }
310
- // A handle is already held
311
- var pos = getHandleDescriptorByType(selHandleType).position;
312
-
313
- var height = pos.height();
314
- int x, y;
315
- if (editor.isStickyTextSelection()) {
316
- x = Math.min((int) e.getX(), (int) pos.right);
317
- y = (int) (pos.top - height / 2);
318
- } else {
319
- x = (int) e.getX();
320
- y = (int) (e.getY() - height / 2 - editor.getRowHeight());
321
- }
322
- magnifier.show(x, y);
323
- }
324
-
325
- public void dismissMagnifier() {
326
- magnifier.dismiss();
327
- }
328
-
329
- private void beginDragSelect(int line, int column) {
330
- if (!editor.getProps().dragSelectAfterLongPress) {
331
- return;
332
- }
333
- var text = editor.getText();
334
- dragSelectInitialCharIndex = text.getCharIndex(line, column);
335
- var cursor = editor.getCursor();
336
- dragSelectInitialLeftIndex = text.getCharIndex(cursor.getLeftLine(), cursor.getLeftColumn());
337
- dragSelectInitialRightIndex = text.getCharIndex(cursor.getRightLine(), cursor.getRightColumn());
338
- dragSelectLastDragIndex = dragSelectInitialCharIndex;
339
- dragSelectActive = true;
340
- dragSelectStarted = false;
341
- }
342
-
343
- public boolean isDragSelecting() {
344
- return dragSelectActive;
345
- }
346
-
347
- private void updateDragSelectMagnifier(MotionEvent e) {
348
- if (!editor.getProps().dragSelectAfterLongPress ||
349
- edgeFlags != 0 || !magnifier.isEnabled() || !dragSelectStarted
350
- ) {
351
- dismissMagnifier();
352
- return;
353
- }
354
- if (!magnifier.isShowing()) {
355
- double dx = e.getX() - thumbDownX;
356
- double dy = e.getY() - thumbDownY;
357
- if (Math.sqrt(dx * dx + dy * dy) < MAGNIFIER_TOUCH_SLOP) {
358
- return;
359
- }
360
- }
361
- int x = (int) e.getX();
362
- int y = (int) (e.getY() - editor.getRowHeight());
363
- magnifier.show(x, y);
364
- }
365
-
366
- private boolean handleDragSelect(MotionEvent e, boolean fromEdgeScroll) {
367
- if (!editor.getProps().dragSelectAfterLongPress || !dragSelectActive) {
368
- return false;
369
- }
370
- var text = editor.getText();
371
- if (text.length() == 0) {
372
- return true;
373
- }
374
- long res = editor.getPointPositionOnScreen(e.getX(), e.getY());
375
- int line = IntPair.getFirst(res), column = IntPair.getSecond(res);
376
- int currentIndex = text.getCharIndex(line, column);
377
- if (!dragSelectStarted) {
378
- if (currentIndex == dragSelectInitialCharIndex) {
379
- if (!fromEdgeScroll)
380
- scrollIfThumbReachesEdge(e);
381
- return true;
382
- }
383
- dragSelectStarted = true;
384
- }
385
- if (currentIndex == dragSelectLastDragIndex) {
386
- updateDragSelectMagnifier(e);
387
- if (!fromEdgeScroll)
388
- scrollIfThumbReachesEdge(e);
389
- return true;
390
- }
391
- int anchorIndex = currentIndex <= dragSelectInitialCharIndex ? dragSelectInitialRightIndex : dragSelectInitialLeftIndex;
392
- anchorIndex = Numbers.coerceIn(anchorIndex, 0, text.length());
393
- int startIndex = Math.min(anchorIndex, currentIndex);
394
- int endIndex = Math.max(anchorIndex, currentIndex);
395
- var indexer = text.getIndexer();
396
- if (startIndex == endIndex) {
397
- var pos = indexer.getCharPosition(startIndex);
398
- editor.setSelection(pos.line, pos.column, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
399
- } else {
400
- var startPos = indexer.getCharPosition(startIndex);
401
- var endPos = indexer.getCharPosition(endIndex);
402
- editor.setSelectionRegion(startPos.line, startPos.column, endPos.line, endPos.column, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
403
- }
404
- dragSelectLastDragIndex = currentIndex;
405
- updateDragSelectMagnifier(e);
406
- if (!fromEdgeScroll)
407
- scrollIfThumbReachesEdge(e);
408
- return true;
409
- }
410
-
411
- private void finishDragSelect() {
412
- boolean startedBefore = dragSelectStarted;
413
- dragSelectActive = false;
414
- dragSelectStarted = false;
415
- dragSelectInitialCharIndex = -1;
416
- dragSelectInitialLeftIndex = -1;
417
- dragSelectInitialRightIndex = -1;
418
- dragSelectLastDragIndex = -1;
419
- if (startedBefore) {
420
- editor.dispatchEvent(new DragSelectStopEvent(editor));
421
- }
422
- }
423
-
424
- /**
425
- * Handle events apart from detectors
426
- *
427
- * @param e The event editor received
428
- * @return Whether this touch event is handled by this class
429
- */
430
- public boolean onTouchEvent(MotionEvent e) {
431
- motionY = e.getY();
432
- motionX = e.getX();
433
- switch (e.getAction()) {
434
- case MotionEvent.ACTION_DOWN: {
435
- finishDragSelect();
436
- thumbDownY = e.getY();
437
- thumbDownX = e.getX();
438
- holdingScrollbarVertical = holdingScrollbarHorizontal = false;
439
- RectF rect = editor.getRenderer().getVerticalScrollBarRect();
440
- if (RectUtils.contains(rect, e.getX(), e.getY(), editor.getDpUnit() * 10)) {
441
- holdingScrollbarVertical = true;
442
- }
443
- rect = editor.getRenderer().getHorizontalScrollBarRect();
444
- if (rect.contains(e.getX(), e.getY())) {
445
- holdingScrollbarHorizontal = true;
446
- }
447
- if (holdingScrollbarVertical || holdingScrollbarHorizontal) {
448
- if (holdingScrollbarVertical && holdingScrollbarHorizontal) {
449
- holdingScrollbarHorizontal = false;
450
- }
451
- editor.invalidate();
452
- } else {
453
- final var allowedDistance = editor.getDpUnit() * 7;
454
- if (shouldDrawInsertHandle() && RectUtils.almostContains(editor.getInsertHandleDescriptor().position, e.getX(), e.getY(), allowedDistance)) {
455
- selHandleType = SelectionHandle.BOTH;
456
- }
457
- boolean left = RectUtils.almostContains(editor.getLeftHandleDescriptor().position, e.getX(), e.getY(), allowedDistance);
458
- boolean right = RectUtils.almostContains(editor.getRightHandleDescriptor().position, e.getX(), e.getY(), allowedDistance);
459
- if (left) {
460
- selHandleType = SelectionHandle.LEFT;
461
- } else if (right) {
462
- selHandleType = SelectionHandle.RIGHT;
463
- }
464
- if (selHandleType != -1) {
465
- selHandleMoving = false;
466
- dispatchHandleStateChange(selHandleType, true);
467
- }
468
- }
469
- return true;
470
- }
471
- case MotionEvent.ACTION_MOVE: {
472
- if (holdingScrollbarVertical) {
473
- float movedDis = e.getY() - thumbDownY;
474
- thumbDownY = e.getY();
475
- float all = editor.getScrollMaxY();
476
- float dy = movedDis / (editor.getHeight() - editor.getRenderer().getVerticalScrollBarRect().height()) * all;
477
- scrollBy(0, dy);
478
- return true;
479
- }
480
- if (holdingScrollbarHorizontal) {
481
- float movedDis = e.getX() - thumbDownX;
482
- thumbDownX = e.getX();
483
- float all = editor.getScrollMaxX() + editor.getWidth();
484
- float dx;
485
- if (editor.getRenderer().getHorizontalScrollBarRect().width() <= 60 * editor.getDpUnit()) {
486
- dx = movedDis / (editor.getWidth() - editor.getRenderer().getHorizontalScrollBarRect().width()) * all;
487
- } else {
488
- dx = movedDis / editor.getWidth() * all;
489
- }
490
- scrollBy(dx, 0);
491
- return true;
492
- }
493
- if (handleDragSelect(e, false)) {
494
- return true;
495
- }
496
- if (!selHandleMoving && (Math.abs(e.getX() - thumbDownX) > touchSlop || Math.abs(e.getY() - thumbDownY) > touchSlop)) {
497
- selHandleMoving = true;
498
- }
499
- if (selHandleMoving && handleSelectionChange(e)) {
500
- if (magnifier.isShowing() || Math.sqrt((e.getX() - thumbDownX) * (e.getX() - thumbDownX) +
501
- (e.getY() - thumbDownY) * (e.getY() - thumbDownY)) >= MAGNIFIER_TOUCH_SLOP) {
502
- updateMagnifier(e);
503
- }
504
- editor.invalidate();
505
- return true;
506
- }
507
- return false;
508
- }
509
- case MotionEvent.ACTION_UP:
510
- case MotionEvent.ACTION_CANCEL:
511
- if (holdingScrollbarVertical || holdingScrollbarHorizontal) {
512
- holdingScrollbarVertical = holdingScrollbarHorizontal = false;
513
- timeLastScroll = System.currentTimeMillis();
514
- notifyScrolled();
515
- }
516
- finishDragSelect();
517
- if (selHandleType != -1) {
518
- dispatchHandleStateChange(selHandleType, false);
519
- if (selHandleType == SelectionHandle.BOTH)
520
- notifyLater();
521
- selHandleType = -1;
522
- }
523
- editor.invalidate();
524
- stopEdgeScroll();
525
- dismissMagnifier();
526
- break;
527
- }
528
- return false;
529
- }
530
-
531
- private boolean shouldForwardToTouch() {
532
- return holdingScrollbarHorizontal || holdingScrollbarVertical;
533
- }
534
-
535
- /**
536
- * Entry for mouse motion events
537
- */
538
- public boolean onMouseEvent(MotionEvent event) {
539
- if (editor.isFormatting()) {
540
- resetMouse();
541
- return false;
542
- }
543
- if (shouldForwardToTouch()) {
544
- return onTouchEvent(event);
545
- }
546
- lastContextClickPosition = null;
547
- switch (event.getActionMasked()) {
548
- case MotionEvent.ACTION_DOWN -> {
549
- mouseDownX = event.getX();
550
- mouseDownY = event.getY();
551
- mouseDownButtonState = event.getButtonState();
552
- mouseClick = true;
553
- if ((mouseDownButtonState & MotionEvent.BUTTON_PRIMARY) != 0) {
554
- if (onTouchEvent(event) && shouldForwardToTouch()) {
555
- return true;
556
- }
557
- if (SystemClock.uptimeMillis() - lastTimeMousePrimaryClickUp < ViewConfiguration.getDoubleTapTimeout()) {
558
- mouseDoubleClick = true;
559
- onDoubleTap(event);
560
- return true;
561
- }
562
- var pos = editor.getPointPositionOnScreen(mouseDownX, mouseDownY);
563
- int line = IntPair.getFirst(pos), column = IntPair.getSecond(pos);
564
- var charPos = editor.getText().getIndexer().getCharPosition(line, column);
565
- if (editor.isTextSelected() && editor.getCursorRange().isPositionInside(charPos) && editor.isScreenPointOnText(mouseDownX, mouseDownY)) {
566
- mouseCanMoveText = true;
567
- } else {
568
- mouseCanMoveText = false;
569
- editor.setSelection(line, column, SelectionChangeEvent.CAUSE_MOUSE_INPUT);
570
- editor.requestFocus();
571
- }
572
- draggingSelection = charPos;
573
- editor.postInvalidate();
574
- }
575
- }
576
- case MotionEvent.ACTION_MOVE -> {
577
- if (mouseDoubleClick) {
578
- return true;
579
- }
580
- if (Math.abs(event.getX() - mouseDownX) > touchSlop || Math.abs(event.getY() - mouseDownY) > touchSlop) {
581
- mouseClick = false;
582
- }
583
- if ((mouseDownButtonState & MotionEvent.BUTTON_PRIMARY) != 0) {
584
- var pos = editor.getPointPositionOnScreen(event.getX(), event.getY());
585
- int line = IntPair.getFirst(pos), column = IntPair.getSecond(pos);
586
- var charPos = editor.getText().getIndexer().getCharPosition(line, column);
587
- if (!mouseClick && !mouseCanMoveText) {
588
- var anchor = editor.selectionAnchor;
589
- editor.setSelectionRegion(anchor.line, anchor.column, line, column, SelectionChangeEvent.CAUSE_MOUSE_INPUT);
590
- }
591
- draggingSelection = charPos;
592
- editor.postInvalidate();
593
- scrollIfThumbReachesEdge(event);
594
- }
595
- }
596
- case MotionEvent.ACTION_UP -> {
597
- if (event.getEventTime() - event.getDownTime() > ViewConfiguration.getTapTimeout() * 2f) {
598
- mouseClick = false;
599
- }
600
- if (!mouseDoubleClick) {
601
- if (mouseCanMoveText && !mouseClick && (mouseDownButtonState & MotionEvent.BUTTON_PRIMARY) != 0) {
602
- var pos = editor.getPointPositionOnScreen(event.getX(), event.getY());
603
- int line = IntPair.getFirst(pos), column = IntPair.getSecond(pos);
604
- var dest = editor.getText().getIndexer().getCharPosition(line, column);
605
- var curRange = editor.getCursorRange();
606
- if (!curRange.isPositionInside(dest) && (editor.getKeyMetaStates().isCtrlPressed() || !curRange.getEnd().equals(dest))) {
607
- int length = (curRange.getEndIndex() - curRange.getStartIndex());
608
- int insIndex = editor.getKeyMetaStates().isCtrlPressed() ? dest.index : dest.index < curRange.getStartIndex() ? dest.index : dest.index - length;
609
- var text = editor.getText();
610
- var insText = text.substring(curRange.getStartIndex(), curRange.getEndIndex());
611
- CharPosition insPos;
612
- if (editor.getKeyMetaStates().isCtrlPressed()) {
613
- text.insert(dest.line, dest.column, insText);
614
- insPos = dest;
615
- } else {
616
- text.beginBatchEdit();
617
- editor.deleteText();
618
- insPos = text.getIndexer().getCharPosition(insIndex);
619
- text.insert(insPos.line, insPos.column, insText);
620
- text.endBatchEdit();
621
- }
622
- var endPos = text.getIndexer().getCharPosition(insIndex + length);
623
- editor.setSelectionRegion(insPos.getLine(), insPos.getColumn(), endPos.getLine(), endPos.getColumn(), SelectionChangeEvent.CAUSE_MOUSE_INPUT);
624
- }
625
- }
626
- if (mouseClick) {
627
- if ((mouseDownButtonState & MotionEvent.BUTTON_PRIMARY) != 0) {
628
- onSingleTapUp(event);
629
- lastTimeMousePrimaryClickUp = event.getEventTime();
630
- } else if ((mouseDownButtonState & MotionEvent.BUTTON_SECONDARY) != 0) {
631
- onContextClick(event);
632
- }
633
- }
634
- }
635
- resetMouse();
636
- stopEdgeScroll();
637
- }
638
- case MotionEvent.ACTION_CANCEL -> {
639
- resetMouse();
640
- stopEdgeScroll();
641
- }
642
- }
643
- return true;
644
- }
645
-
646
- /**
647
- * Reset mouse handling state
648
- */
649
- public void resetMouse() {
650
- mouseDownX = mouseDownY = 0f;
651
- mouseClick = false;
652
- mouseCanMoveText = false;
653
- draggingSelection = null;
654
- if (mouseDoubleClick) {
655
- mouseDoubleClick = false;
656
- lastTimeMousePrimaryClickUp = 0L;
657
- }
658
- }
659
-
660
- /**
661
- * Context click
662
- */
663
- public void onContextClick(MotionEvent event) {
664
- lastContextClickPosition = new PointF(event.getX(), event.getY());
665
- if ((dispatchEditorMotionEvent(ContextClickEvent::new, null, event) & InterceptTarget.TARGET_EDITOR) != 0) {
666
- return;
667
- }
668
-
669
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
670
- editor.performContextClick(event.getX(), event.getY());
671
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
672
- editor.performContextClick();
673
- }
674
-
675
- if (editor.getProps().mouseContextMenu) {
676
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
677
- editor.showContextMenu(event.getX(), event.getY());
678
- } else {
679
- editor.showContextMenu();
680
- }
681
- }
682
- }
683
-
684
- @Nullable
685
- public PointF getLastContextClickPosition() {
686
- return lastContextClickPosition;
687
- }
688
-
689
- private void dispatchHandleStateChange(int type, boolean held) {
690
- editor.dispatchEvent(new HandleStateChangeEvent(editor, type, held));
691
- }
692
-
693
- int dispatchEditorMotionEvent
694
- (Function7<CodeEditor, CharPosition, MotionEvent, Span, TextRange, Integer, Integer, EditorMotionEvent> constructor,
695
- @Nullable CharPosition pos, @NonNull MotionEvent event) {
696
- final var region = RegionResolverKt.resolveTouchRegion(editor, event);
697
- return dispatchEditorMotionEvent(constructor, pos, event, IntPair.getFirst(region), IntPair.getSecond(region));
698
- }
699
-
700
- int dispatchEditorMotionEvent
701
- (Function7<CodeEditor, CharPosition, MotionEvent, Span, TextRange, Integer, Integer, EditorMotionEvent> constructor,
702
- @Nullable CharPosition pos, @NonNull MotionEvent event, int motionRegion, int motionBound) {
703
- if (pos == null) {
704
- var pt = editor.getPointPositionOnScreen(event.getX(), event.getY());
705
- pos = editor.getText().getIndexer().getCharPosition(IntPair.getFirst(pt), IntPair.getSecond(pt));
706
- }
707
- var styles = editor.getStyles();
708
- var text = editor.getText();
709
- var span = StylesUtils.getSpanForPosition(styles, pos);
710
- var nextSpan = StylesUtils.getFollowingSpanForPosition(styles, pos);
711
- TextRange range = null;
712
- if (span != null) {
713
- var startPos = text.getIndexer().getCharPosition(pos.line, Numbers.coerceIn(span.getColumn(), 0, text.getColumnCount(pos.line)));
714
- var endPos = nextSpan != null ?
715
- text.getIndexer().getCharPosition(pos.line, Numbers.coerceIn(nextSpan.getColumn(), 0, text.getColumnCount(pos.line)))
716
- : text.getIndexer().getCharPosition(pos.line, text.getColumnCount(pos.line));
717
- range = new TextRange(startPos, endPos);
718
- }
719
- return editor.dispatchEvent(constructor.invoke(editor, pos, event, span, range, motionRegion, motionBound));
720
- }
721
-
722
- private boolean handleSelectionChange(MotionEvent e) {
723
- switch (selHandleType) {
724
- case SelectionHandle.BOTH:
725
- insertHandle.applyPosition(e);
726
- scrollIfThumbReachesEdge(e);
727
- return true;
728
- case SelectionHandle.LEFT:
729
- editor.selectionAnchor = editor.getCursor().right();
730
- leftHandle.applyPosition(e);
731
- scrollIfThumbReachesEdge(e);
732
- return true;
733
- case SelectionHandle.RIGHT:
734
- editor.selectionAnchor = editor.getCursor().left();
735
- rightHandle.applyPosition(e);
736
- scrollIfThumbReachesEdge(e);
737
- return true;
738
- }
739
- return false;
740
- }
741
-
742
- private void handleSelectionChange2(MotionEvent e) {
743
- switch (selHandleType) {
744
- case SelectionHandle.BOTH:
745
- insertHandle.applyPosition(e);
746
- break;
747
- case SelectionHandle.LEFT:
748
- leftHandle.applyPosition(e);
749
- break;
750
- case SelectionHandle.RIGHT:
751
- rightHandle.applyPosition(e);
752
- break;
753
- }
754
- }
755
-
756
- private int computeEdgeFlags(float x, float y) {
757
- int flags = 0;
758
- if (x < edgeFieldSize) {
759
- flags |= LEFT_EDGE;
760
- }
761
- if (y < edgeFieldSize) {
762
- flags |= TOP_EDGE;
763
- }
764
- if (x > editor.getWidth() - edgeFieldSize) {
765
- flags |= RIGHT_EDGE;
766
- }
767
- if (y > editor.getHeight() - edgeFieldSize) {
768
- flags |= BOTTOM_EDGE;
769
- }
770
- return flags;
771
- }
772
-
773
- public void scrollIfThumbReachesEdge(@Nullable MotionEvent e) {
774
- scrollIfReachesEdge(e, 0, 0);
775
- }
776
-
777
- public void scrollIfReachesEdge(@Nullable MotionEvent e, float x, float y) {
778
- if (e != null) {
779
- x = e.getX();
780
- y = e.getY();
781
- }
782
- int flag = computeEdgeFlags(x, y);
783
- if (flag != 0) {
784
- var oldFlags = edgeFlags;
785
- edgeFlags = flag;
786
- thumbMotionRecord = e == null ? null : MotionEvent.obtain(e);
787
- if (oldFlags == 0) {
788
- int initialDelta = (int) (8 * editor.getDpUnit());
789
- editor.postInLifecycle(new EdgeScrollRunnable(initialDelta));
790
- }
791
- } else {
792
- stopEdgeScroll();
793
- }
794
- }
795
-
796
- private boolean isSameSign(float a, float b) {
797
- if (Math.abs(a) < 1e5 || Math.abs(b) < 1e5) {
798
- return false;
799
- }
800
- return (a < 0 && b < 0) || (a > 0 && b > 0);
801
- }
802
-
803
- public void stopEdgeScroll() {
804
- edgeFlags = 0;
805
- }
806
-
807
- public void scrollBy(float distanceX, float distanceY) {
808
- scrollBy(distanceX, distanceY, false);
809
- }
810
-
811
- public void scrollBy(float distanceX, float distanceY, boolean smooth) {
812
- int endX = scroller.getCurrX() + (int) distanceX;
813
- int endY = scroller.getCurrY() + (int) distanceY;
814
- endX = Math.max(endX, 0);
815
- endY = Math.max(endY, 0);
816
- endY = Math.min(endY, editor.getScrollMaxY());
817
- endX = Math.min(endX, editor.getScrollMaxX());
818
- editor.dispatchEvent(new ScrollEvent(editor, scroller.getCurrX(),
819
- scroller.getCurrY(), endX, endY, ScrollEvent.CAUSE_USER_DRAG));
820
- if (smooth) {
821
- scroller.startScroll(scroller.getCurrX(),
822
- scroller.getCurrY(),
823
- endX - scroller.getCurrX(),
824
- endY - scroller.getCurrY());
825
- } else {
826
- scroller.startScroll(scroller.getCurrX(),
827
- scroller.getCurrY(),
828
- endX - scroller.getCurrX(),
829
- endY - scroller.getCurrY(), 0);
830
- scroller.abortAnimation();
831
- }
832
- editor.invalidate();
833
- }
834
-
835
- public int getTouchedHandleType() {
836
- return selHandleType;
837
- }
838
-
839
- @Override
840
- public boolean onSingleTapUp(@NonNull MotionEvent e) {
841
- scroller.forceFinished(true);
842
- if (editor.isFormatting()) {
843
- return true;
844
- }
845
- var resolved = RegionResolverKt.resolveTouchRegion(editor, e);
846
- var region = IntPair.getFirst(resolved);
847
- var regionBound = IntPair.getSecond(resolved);
848
- long res = editor.getPointPositionOnScreen(e.getX(), e.getY());
849
- int line = IntPair.getFirst(res);
850
- int column = IntPair.getSecond(res);
851
- editor.performClick();
852
- if (region == RegionResolverKt.REGION_SIDE_ICON) {
853
- int row = (int) (e.getY() + editor.getOffsetX()) / editor.getRowHeight();
854
- row = Math.max(0, Math.min(row, editor.getLayout().getRowCount() - 1));
855
- var inf = editor.getLayout().getRowAt(row);
856
- if (inf.isLeadingRow) {
857
- var style = editor.getRenderer().getLineStyle(inf.lineIndex, LineSideIcon.class);
858
- if (style != null) {
859
- if ((editor.dispatchEvent(new SideIconClickEvent(editor, style)) & InterceptTarget.TARGET_EDITOR) != 0) {
860
- return true;
861
- }
862
- }
863
- }
864
- }
865
- var position = editor.getText().getIndexer().getCharPosition(line, column);
866
- if ((dispatchEditorMotionEvent(ClickEvent::new, position, e, region, regionBound) & InterceptTarget.TARGET_EDITOR) != 0) {
867
- return true;
868
- }
869
- editor.showSoftInput();
870
- notifyLater();
871
- var lnAction = editor.getProps().actionWhenLineNumberClicked;
872
- if (region == RegionResolverKt.REGION_TEXT) {
873
- if (editor.isInLongSelect()) {
874
- var cursor = editor.getCursor();
875
- editor.setSelectionRegion(cursor.getLeftLine(), cursor.getLeftColumn(), line, column, false, SelectionChangeEvent.CAUSE_TAP);
876
- editor.endLongSelect();
877
- } else {
878
- editor.setSelection(line, column, SelectionChangeEvent.CAUSE_TAP);
879
- }
880
- } else if (region == RegionResolverKt.REGION_LINE_NUMBER) {
881
- switch (lnAction) {
882
- case DirectAccessProps.LN_ACTION_SELECT_LINE:
883
- editor.setSelectionRegion(line, 0, line, editor.getText().getColumnCount(line), false, SelectionChangeEvent.CAUSE_TAP);
884
- break;
885
- case DirectAccessProps.LN_ACTION_PLACE_SELECTION_HOME:
886
- editor.setSelection(line, column, SelectionChangeEvent.CAUSE_TAP);
887
- break;
888
- case DirectAccessProps.LN_ACTION_NOTHING:
889
- default:
890
- // do nothing
891
- }
892
- }
893
- return true;
894
- }
895
-
896
- @Override
897
- public void onLongPress(@NonNull MotionEvent e) {
898
- scroller.forceFinished(true);
899
- editor.releaseEdgeEffects();
900
- if (editor.isFormatting()) {
901
- return;
902
- }
903
- long res = editor.getPointPositionOnScreen(e.getX(), e.getY());
904
- int line = IntPair.getFirst(res);
905
- int column = IntPair.getSecond(res);
906
- if ((dispatchEditorMotionEvent(LongPressEvent::new, editor.getText().getIndexer().getCharPosition(line, column), e) & InterceptTarget.TARGET_EDITOR) != 0) {
907
- return;
908
- }
909
- if ((!editor.getProps().reselectOnLongPress && editor.getCursor().isSelected()) || e.getPointerCount() != 1) {
910
- return;
911
- }
912
- editor.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
913
- editor.selectWord(line, column);
914
- if (editor.getCursor().isSelected()) {
915
- beginDragSelect(line, column);
916
- }
917
- }
918
-
919
- @Override
920
- public boolean onScroll(MotionEvent e1, @NonNull MotionEvent e2, float distanceX, float distanceY) {
921
- if (editor.getProps().singleDirectionDragging) {
922
- if (Math.abs(distanceX) > Math.abs(distanceY)) {
923
- distanceY = 0;
924
- } else {
925
- distanceX = 0;
926
- }
927
- }
928
- int endX = scroller.getCurrX() + (int) distanceX;
929
- int endY = scroller.getCurrY() + (int) distanceY;
930
- endX = Math.max(endX, 0);
931
- endY = Math.max(endY, 0);
932
- endY = Math.min(endY, editor.getScrollMaxY());
933
- endX = Math.min(endX, editor.getScrollMaxX());
934
- boolean notifyY = true;
935
- boolean notifyX = true;
936
- if (!editor.getVerticalEdgeEffect().isFinished()) {
937
- float displacement = Math.max(0, Math.min(1, e2.getX() / editor.getWidth()));
938
- float distance = (glowTopOrBottom ? distanceY : -distanceY) / editor.getMeasuredHeight();
939
- if (distance > 0) {
940
- endY = scroller.getCurrY();
941
- editor.getVerticalEdgeEffect().onPull(distance, !glowTopOrBottom ? displacement : 1 - displacement);
942
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
943
- var edgeEffect = editor.getVerticalEdgeEffect();
944
- edgeEffect.onPullDistance(distance, !glowTopOrBottom ? displacement : 1 - displacement);
945
- if (edgeEffect.getDistance() != 0) {
946
- endY = scroller.getCurrY();
947
- }
948
- } else {
949
- editor.getVerticalEdgeEffect().finish();
950
- }
951
- notifyY = false;
952
- }
953
- if (!editor.getHorizontalEdgeEffect().isFinished()) {
954
- float displacement = Math.max(0, Math.min(1, e2.getY() / editor.getHeight()));
955
- float distance = (glowLeftOrRight ? distanceX : -distanceX) / editor.getMeasuredWidth();
956
- if (distance > 0) {
957
- endX = scroller.getCurrX();
958
- editor.getHorizontalEdgeEffect().onPull(distance, !glowLeftOrRight ? 1 - displacement : displacement);
959
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
960
- var edgeEffect = editor.getHorizontalEdgeEffect();
961
- edgeEffect.onPullDistance(distance, !glowLeftOrRight ? 1 - displacement : displacement);
962
- if (edgeEffect.getDistance() != 0) {
963
- endX = scroller.getCurrX();
964
- }
965
- } else {
966
- editor.getHorizontalEdgeEffect().finish();
967
- }
968
- notifyX = false;
969
- }
970
- scroller.startScroll(scroller.getCurrX(),
971
- scroller.getCurrY(),
972
- endX - scroller.getCurrX(),
973
- endY - scroller.getCurrY(), 0);
974
- final float minOverPull = 2f;
975
- if (notifyY && scroller.getCurrY() + distanceY < -minOverPull) {
976
- editor.getVerticalEdgeEffect().onPull(-distanceY / editor.getMeasuredHeight(), Math.max(0, Math.min(1, e2.getX() / editor.getWidth())));
977
- glowTopOrBottom = false;
978
- }
979
- if (notifyY && scroller.getCurrY() + distanceY > editor.getScrollMaxY() + minOverPull) {
980
- editor.getVerticalEdgeEffect().onPull(distanceY / editor.getMeasuredHeight(), Math.max(0, Math.min(1, e2.getX() / editor.getWidth())));
981
- glowTopOrBottom = true;
982
- }
983
- if (notifyX && scroller.getCurrX() + distanceX < -minOverPull) {
984
- editor.getHorizontalEdgeEffect().onPull(-distanceX / editor.getMeasuredWidth(), Math.max(0, Math.min(1, e2.getY() / editor.getHeight())));
985
- glowLeftOrRight = false;
986
- }
987
- if (notifyX && scroller.getCurrX() + distanceX > editor.getScrollMaxX() + minOverPull) {
988
- editor.getHorizontalEdgeEffect().onPull(distanceX / editor.getMeasuredWidth(), Math.max(0, Math.min(1, e2.getY() / editor.getHeight())));
989
- glowLeftOrRight = true;
990
- }
991
- editor.invalidate();
992
- editor.dispatchEvent(new ScrollEvent(editor, scroller.getCurrX(),
993
- scroller.getCurrY(), endX, endY, ScrollEvent.CAUSE_USER_DRAG));
994
- return true;
995
- }
996
-
997
- @Override
998
- public boolean onFling(MotionEvent e1, @NonNull MotionEvent e2, float velocityX, float velocityY) {
999
- if (editor.getProps().singleDirectionFling) {
1000
- if (Math.abs(velocityX) > Math.abs(velocityY)) {
1001
- velocityY = 0;
1002
- } else {
1003
- velocityX = 0;
1004
- }
1005
- }
1006
- if (!editor.getProps().scrollFling) {
1007
- return false;
1008
- }
1009
- // If we do not finish it here, it can produce a high speed and cause the final scroll range to be broken, even a NaN for velocity
1010
- scroller.forceFinished(true);
1011
- scroller.fling(scroller.getCurrX(),
1012
- scroller.getCurrY(),
1013
- (int) -velocityX,
1014
- (int) -velocityY,
1015
- 0,
1016
- editor.getScrollMaxX(),
1017
- 0,
1018
- editor.getScrollMaxY(),
1019
- editor.getProps().overScrollEnabled && !editor.isWordwrap() ? (int) (20 * editor.getDpUnit()) : 0,
1020
- editor.getProps().overScrollEnabled ? (int) (20 * editor.getDpUnit()) : 0);
1021
- float minVe = editor.getDpUnit() * 2000;
1022
- if (Math.abs(velocityX) >= minVe || Math.abs(velocityY) >= minVe) {
1023
- notifyScrolled();
1024
- }
1025
- editor.releaseEdgeEffects();
1026
- editor.dispatchEvent(new ScrollEvent(editor, scroller.getCurrX(),
1027
- scroller.getCurrY(), scroller.getFinalX(), scroller.getFinalY(), ScrollEvent.CAUSE_USER_FLING));
1028
- editor.postInvalidateOnAnimation();
1029
- return false;
1030
- }
1031
-
1032
- @Override
1033
- public boolean onScale(@NonNull ScaleGestureDetector detector) {
1034
- if (editor.isFormatting()) {
1035
- return true;
1036
- }
1037
- if (editor.isScalable()) {
1038
- float newSize = editor.getTextSizePx() * detector.getScaleFactor();
1039
- if (newSize < scaleMinSize || newSize > scaleMaxSize) {
1040
- return true;
1041
- }
1042
- float focusX = detector.getFocusX();
1043
- float focusY = detector.getFocusY();
1044
- int originHeight = editor.getRowHeight();
1045
- editor.setTextSizePxDirect(newSize);
1046
- float heightFactor = editor.getRowHeight() * 1f / originHeight;
1047
- float afterScrollY = (scroller.getCurrY() + focusY) * heightFactor - focusY;
1048
- float afterScrollX = (scroller.getCurrX() + focusX) * detector.getScaleFactor() - focusX;
1049
- afterScrollX = Math.max(0, Math.min(afterScrollX, editor.getScrollMaxX()));
1050
- afterScrollY = Math.max(0, Math.min(afterScrollY, editor.getScrollMaxY()));
1051
- editor.dispatchEvent(new ScrollEvent(editor, scroller.getCurrX(),
1052
- scroller.getCurrY(), (int) afterScrollX, (int) afterScrollY, ScrollEvent.CAUSE_SCALE_TEXT));
1053
- scroller.startScroll((int) afterScrollX, (int) afterScrollY, 0, 0, 0);
1054
- scroller.abortAnimation();
1055
- isScaling = true;
1056
- editor.invalidate();
1057
- return true;
1058
- }
1059
- return false;
1060
- }
1061
-
1062
- @Override
1063
- public boolean onScaleBegin(@NonNull ScaleGestureDetector detector) {
1064
- scroller.forceFinished(true);
1065
- textSizeStart = editor.getTextSizePx();
1066
- return editor.isScalable() && !editor.isFormatting() && !hasAnyHeldHandle();
1067
- }
1068
-
1069
- long memoryPosition;
1070
- boolean positionNotApplied;
1071
- float focusY;
1072
-
1073
- @Override
1074
- public void onScaleEnd(@NonNull ScaleGestureDetector detector) {
1075
- isScaling = false;
1076
- if (textSizeStart == editor.getTextSizePx()) {
1077
- return;
1078
- }
1079
- editor.getRenderer().forcedRecreateLayout = true;
1080
- if (editor.isWordwrap()) {
1081
- focusY = detector.getFocusY();
1082
- memoryPosition = editor.getPointPositionOnScreen(detector.getFocusX(), detector.getFocusY());
1083
- positionNotApplied = true;
1084
- } else {
1085
- positionNotApplied = false;
1086
- }
1087
- editor.getRenderContext().invalidateRenderNodes();
1088
- editor.getRenderer().updateTimestamp();
1089
- editor.invalidate();
1090
- }
1091
-
1092
- @Override
1093
- public boolean onDown(@NonNull MotionEvent e) {
1094
- return editor.isEnabled();
1095
- }
1096
-
1097
- @Override
1098
- public void onShowPress(@NonNull MotionEvent e) {
1099
- }
1100
-
1101
- @Override
1102
- public boolean onSingleTapConfirmed(@NonNull MotionEvent e) {
1103
- return true;
1104
- }
1105
-
1106
- @Override
1107
- public boolean onDoubleTap(@NonNull MotionEvent e) {
1108
- if (editor.isFormatting()) {
1109
- return true;
1110
- }
1111
- long res = editor.getPointPositionOnScreen(e.getX(), e.getY());
1112
- int line = IntPair.getFirst(res);
1113
- int column = IntPair.getSecond(res);
1114
- if ((dispatchEditorMotionEvent(DoubleClickEvent::new, editor.getText().getIndexer().getCharPosition(line, column), e) & InterceptTarget.TARGET_EDITOR) != 0) {
1115
- return true;
1116
- }
1117
- if (editor.getCursor().isSelected() || e.getPointerCount() != 1) {
1118
- return true;
1119
- }
1120
- editor.selectWord(line, column);
1121
- return true;
1122
- }
1123
-
1124
- @Override
1125
- public boolean onDoubleTapEvent(@NonNull MotionEvent e) {
1126
- return true;
1127
- }
1128
-
1129
-
1130
- /**
1131
- * This is a helper for EventHandler to control handles
1132
- */
1133
- final class SelectionHandle {
1134
-
1135
- public static final int LEFT = HandleStateChangeEvent.HANDLE_TYPE_LEFT;
1136
- public static final int RIGHT = HandleStateChangeEvent.HANDLE_TYPE_RIGHT;
1137
- public static final int BOTH = HandleStateChangeEvent.HANDLE_TYPE_INSERT;
1138
-
1139
- public int type;
1140
-
1141
- /**
1142
- * Create a handle
1143
- *
1144
- * @param type Type :left,right,both
1145
- */
1146
- public SelectionHandle(int type) {
1147
- this.type = type;
1148
- }
1149
-
1150
- private boolean checkNoIntersection(SelectionHandleStyle.HandleDescriptor one, SelectionHandleStyle.HandleDescriptor another) {
1151
- return !RectF.intersects(one.position, another.position);
1152
- }
1153
-
1154
- /**
1155
- * Handle the event
1156
- *
1157
- * @param e Event sent by EventHandler
1158
- */
1159
- public void applyPosition(MotionEvent e) {
1160
- SelectionHandleStyle.HandleDescriptor descriptor = switch (type) {
1161
- case LEFT -> editor.getLeftHandleDescriptor();
1162
- case RIGHT -> editor.getRightHandleDescriptor();
1163
- default -> editor.getInsertHandleDescriptor();
1164
- };
1165
- var anotherDesc = type == LEFT ? editor.getRightHandleDescriptor() : editor.getLeftHandleDescriptor();
1166
- float targetX = scroller.getCurrX() + e.getX() + (descriptor.alignment != SelectionHandleStyle.ALIGN_CENTER ? descriptor.position.width() : 0) * (descriptor.alignment == SelectionHandleStyle.ALIGN_LEFT ? 1 : -1);
1167
- float targetY = scroller.getCurrY() + e.getY() - descriptor.position.height();
1168
- int line = IntPair.getFirst(editor.getPointPosition(0, targetY));
1169
- if (line >= 0 && line < editor.getLineCount()) {
1170
- int column = IntPair.getSecond(editor.getPointPosition(targetX, targetY));
1171
- int lastLine = type == RIGHT ? editor.getCursor().getRightLine() : editor.getCursor().getLeftLine();
1172
- int lastColumn = type == RIGHT ? editor.getCursor().getRightColumn() : editor.getCursor().getLeftColumn();
1173
- int anotherLine = type != RIGHT ? editor.getCursor().getRightLine() : editor.getCursor().getLeftLine();
1174
- int anotherColumn = type != RIGHT ? editor.getCursor().getRightColumn() : editor.getCursor().getLeftColumn();
1175
-
1176
- if ((line != lastLine || column != lastColumn) && (type == BOTH || (line != anotherLine || column != anotherColumn))) {
1177
- switch (type) {
1178
- case BOTH:
1179
- editor.cancelAnimation();
1180
- editor.setSelection(line, column, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
1181
- break;
1182
- case RIGHT:
1183
- if (anotherLine > line || (anotherLine == line && anotherColumn > column)) {
1184
- //Swap type
1185
- if (checkNoIntersection(descriptor, anotherDesc)) {
1186
- dispatchHandleStateChange(selHandleType, false);
1187
- EditorTouchEventHandler.this.selHandleType = LEFT;
1188
- dispatchHandleStateChange(selHandleType, true);
1189
- this.type = LEFT;
1190
- leftHandle.type = RIGHT;
1191
- SelectionHandle tmp = rightHandle;
1192
- rightHandle = leftHandle;
1193
- leftHandle = tmp;
1194
- editor.setSelectionRegion(line, column, anotherLine, anotherColumn, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
1195
- }
1196
- } else {
1197
- editor.setSelectionRegion(anotherLine, anotherColumn, line, column, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
1198
- }
1199
- break;
1200
- case LEFT:
1201
- if (anotherLine < line || (anotherLine == line && anotherColumn < column)) {
1202
- //Swap type
1203
- if (checkNoIntersection(descriptor, anotherDesc)) {
1204
- dispatchHandleStateChange(selHandleType, false);
1205
- EditorTouchEventHandler.this.selHandleType = RIGHT;
1206
- dispatchHandleStateChange(selHandleType, true);
1207
- this.type = RIGHT;
1208
- rightHandle.type = LEFT;
1209
- SelectionHandle tmp = rightHandle;
1210
- rightHandle = leftHandle;
1211
- leftHandle = tmp;
1212
- editor.setSelectionRegion(anotherLine, anotherColumn, line, column, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
1213
- }
1214
- } else {
1215
- editor.setSelectionRegion(line, column, anotherLine, anotherColumn, false, SelectionChangeEvent.CAUSE_SELECTION_HANDLE);
1216
- }
1217
- break;
1218
- }
1219
- }
1220
- }
1221
- }
1222
-
1223
- }
1224
-
1225
- /**
1226
- * Runnable for controlling auto-scrolling when thumb reaches the edges of editor
1227
- */
1228
- private class EdgeScrollRunnable implements Runnable {
1229
- private final static int MAX_FACTOR = 32;
1230
- private final static float INCREASE_FACTOR = 1.06f;
1231
-
1232
- private final float initialDelta;
1233
- private float deltaHorizontal;
1234
- private float deltaVertical;
1235
- private float lastDx, lastDy;
1236
- private float factorX, factorY;
1237
- private long postTimes;
1238
-
1239
- public EdgeScrollRunnable(int initDelta) {
1240
- initialDelta = deltaHorizontal = deltaVertical = initDelta;
1241
- postTimes = 0;
1242
- }
1243
-
1244
- @Override
1245
- public void run() {
1246
- float dx = (((edgeFlags & LEFT_EDGE) != 0) ? -deltaHorizontal : 0) + (((edgeFlags & RIGHT_EDGE) != 0) ? deltaHorizontal : 0);
1247
- float dy = (((edgeFlags & TOP_EDGE) != 0) ? -deltaVertical : 0) + (((edgeFlags & BOTTOM_EDGE) != 0) ? deltaVertical : 0);
1248
- if (dx > 0) {
1249
- // Check whether there is content at right
1250
- int line;
1251
- if (selHandleType == SelectionHandle.BOTH || selHandleType == SelectionHandle.LEFT) {
1252
- line = editor.getCursor().getLeftLine();
1253
- } else {
1254
- line = editor.getCursor().getRightLine();
1255
- }
1256
- int column = editor.getText().getColumnCount(line);
1257
- // Do not scroll too far from text region of this line
1258
- float maxOffset = editor.measureTextRegionOffset() + editor.layout.getCharLayoutOffset(line, column)[1] - editor.getWidth() * 0.85f;
1259
- if (scroller.getCurrX() > maxOffset) {
1260
- dx = 0;
1261
- }
1262
- }
1263
- scrollBy(dx, dy);
1264
- if (magnifier.isShowing()) {
1265
- magnifier.dismiss();
1266
- }
1267
-
1268
- // Speed up if we are scrolling in the direction
1269
- if (isSameSign(dx, lastDx)) {
1270
- if (factorX < MAX_FACTOR && (postTimes & 1) == 0) {
1271
- factorX++;
1272
- deltaHorizontal *= INCREASE_FACTOR;
1273
- }
1274
- } else {
1275
- // Recover initial speed because direction changed
1276
- deltaHorizontal = initialDelta;
1277
- factorX = 0;
1278
- }
1279
- if (isSameSign(dy, lastDy)) {
1280
- if (factorY < MAX_FACTOR && (postTimes & 1) == 0) {
1281
- factorY++;
1282
- deltaVertical *= INCREASE_FACTOR;
1283
- }
1284
- } else {
1285
- deltaVertical = initialDelta;
1286
- factorY = 0;
1287
- }
1288
- lastDx = dx;
1289
- lastDy = dy;
1290
-
1291
- // Update selection
1292
- if (thumbMotionRecord != null) {
1293
- if (!handleDragSelect(thumbMotionRecord, true)) {
1294
- handleSelectionChange2(thumbMotionRecord);
1295
- }
1296
- }
1297
-
1298
- postTimes++;
1299
- // Post for animation
1300
- if (edgeFlags != 0) {
1301
- editor.postDelayedInLifecycle(this, 10);
1302
- }
1303
- }
1304
- }
1305
- }
1306
-