@fendent/react-native-enriched 0.5.2-fork.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +343 -0
- package/ReactNativeEnriched.podspec +31 -0
- package/android/build.gradle +106 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerDelegate.java +197 -0
- package/android/generated/java/com/facebook/react/viewmanagers/EnrichedTextInputViewManagerInterface.java +72 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.cpp +173 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/Props.h +833 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/States.h +20 -0
- package/android/gradle.properties +5 -0
- package/android/lint.gradle +70 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/swmansion/enriched/ReactNativeEnrichedPackage.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/AsyncDrawable.kt +126 -0
- package/android/src/main/java/com/swmansion/enriched/common/CheckboxDrawable.kt +81 -0
- package/android/src/main/java/com/swmansion/enriched/common/EnrichedConstants.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/common/EnrichedStyle.kt +57 -0
- package/android/src/main/java/com/swmansion/enriched/common/ForceRedrawSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/common/GumboNormalizer.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/common/MentionStyle.kt +7 -0
- package/android/src/main/java/com/swmansion/enriched/common/ResourceManager.kt +26 -0
- package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +956 -0
- package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +79 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBlockQuoteSpan.kt +53 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedBoldSpan.kt +12 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCheckboxListSpan.kt +92 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedCodeBlockSpan.kt +81 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH1Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH2Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH3Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH4Span.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH5Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedH6Span.kt +20 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedImageSpan.kt +184 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedInlineCodeSpan.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedItalicSpan.kt +12 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedLinkSpan.kt +29 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedMentionSpan.kt +35 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedOrderedListSpan.kt +79 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedStrikeThroughSpan.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnderlineSpan.kt +11 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/EnrichedUnorderedListSpan.kt +62 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedBlockSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedHeadingSpan.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedInlineSpan.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedParagraphSpan.kt +5 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedSpan.kt +3 -0
- package/android/src/main/java/com/swmansion/enriched/common/spans/interfaces/EnrichedZeroWidthSpaceSpan.kt +4 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputConnectionWrapper.kt +140 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +83 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +1120 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewLayoutManager.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputViewManager.kt +478 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/MeasurementStore.kt +225 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/MentionHandler.kt +55 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeHtmlEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeSelectionEvent.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeStateEvent.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnChangeTextEvent.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnContextMenuItemPressEvent.kt +35 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputBlurEvent.kt +25 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputFocusEvent.kt +25 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnInputKeyPressEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnLinkDetectedEvent.kt +32 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionDetectedEvent.kt +30 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionEvent.kt +34 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnPasteImagesEvent.kt +47 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnRequestHtmlResultEvent.kt +32 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnSubmitEditingEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBlockQuoteSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputBoldSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCheckboxListSpan.kt +15 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputCodeBlockSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH1Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH2Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH3Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH4Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH5Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputH6Span.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputImageSpan.kt +36 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputInlineCodeSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputItalicSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputLinkSpan.kt +16 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputMentionSpan.kt +18 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputOrderedListSpan.kt +21 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputStrikeThroughSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnderlineSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedInputUnorderedListSpan.kt +14 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedLineHeightSpan.kt +44 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/EnrichedSpans.kt +241 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/spans/interfaces/EnrichedInputSpan.kt +10 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/HtmlStyle.kt +372 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/InlineStyles.kt +164 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +263 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParagraphStyles.kt +434 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParametrizedStyles.kt +394 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedEditableFactory.kt +17 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSelection.kt +320 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpanState.kt +310 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +106 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannableStringBuilder.kt +24 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/RichContentReceiver.kt +127 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +106 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedSpanWatcher.kt +107 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/watchers/EnrichedTextWatcher.kt +74 -0
- package/android/src/main/new_arch/CMakeLists.txt +62 -0
- package/android/src/main/new_arch/GumboNormalizerJni.cpp +14 -0
- package/android/src/main/new_arch/ReactNativeEnrichedSpec.cpp +11 -0
- package/android/src/main/new_arch/ReactNativeEnrichedSpec.h +15 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputComponentDescriptor.h +35 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.cpp +53 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputMeasurementManager.h +25 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.cpp +35 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputShadowNode.h +53 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.cpp +9 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/EnrichedTextInputState.h +24 -0
- package/android/src/main/new_arch/react/renderer/components/ReactNativeEnrichedSpec/conversions.h +27 -0
- package/android/src/main/res/drawable/broken_image.xml +10 -0
- package/cpp/CMakeLists.txt +50 -0
- package/cpp/GumboParser/GumboParser.h +34043 -0
- package/cpp/README.md +59 -0
- package/cpp/parser/GumboNormalizer.c +915 -0
- package/cpp/parser/GumboParser.cpp +16 -0
- package/cpp/parser/GumboParser.hpp +23 -0
- package/cpp/tests/GumboParserTest.cpp +457 -0
- package/ios/EnrichedTextInputView.h +53 -0
- package/ios/EnrichedTextInputView.mm +2360 -0
- package/ios/EnrichedTextInputViewManager.mm +13 -0
- package/ios/attributesManager/AttributesManager.h +17 -0
- package/ios/attributesManager/AttributesManager.mm +195 -0
- package/ios/config/InputConfig.h +104 -0
- package/ios/config/InputConfig.mm +664 -0
- package/ios/extensions/ColorExtension.h +7 -0
- package/ios/extensions/ColorExtension.mm +38 -0
- package/ios/extensions/FontExtension.h +11 -0
- package/ios/extensions/FontExtension.mm +72 -0
- package/ios/extensions/ImageExtension.h +34 -0
- package/ios/extensions/ImageExtension.mm +165 -0
- package/ios/extensions/LayoutManagerExtension.h +6 -0
- package/ios/extensions/LayoutManagerExtension.mm +443 -0
- package/ios/extensions/StringExtension.h +15 -0
- package/ios/extensions/StringExtension.mm +69 -0
- package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.cpp +22 -0
- package/ios/generated/ReactNativeEnrichedSpec/ComponentDescriptors.h +24 -0
- package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.cpp +434 -0
- package/ios/generated/ReactNativeEnrichedSpec/EventEmitters.h +391 -0
- package/ios/generated/ReactNativeEnrichedSpec/Props.cpp +173 -0
- package/ios/generated/ReactNativeEnrichedSpec/Props.h +833 -0
- package/ios/generated/ReactNativeEnrichedSpec/RCTComponentViewHelpers.h +582 -0
- package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.cpp +17 -0
- package/ios/generated/ReactNativeEnrichedSpec/ShadowNodes.h +23 -0
- package/ios/generated/ReactNativeEnrichedSpec/States.cpp +16 -0
- package/ios/generated/ReactNativeEnrichedSpec/States.h +20 -0
- package/ios/inputParser/InputParser.h +11 -0
- package/ios/inputParser/InputParser.mm +1463 -0
- package/ios/inputTextView/InputTextView.h +6 -0
- package/ios/inputTextView/InputTextView.mm +285 -0
- package/ios/interfaces/AttributeEntry.h +9 -0
- package/ios/interfaces/AttributeEntry.mm +4 -0
- package/ios/interfaces/BaseStyleProtocol.h +17 -0
- package/ios/interfaces/ImageAttachment.h +11 -0
- package/ios/interfaces/ImageAttachment.mm +107 -0
- package/ios/interfaces/ImageData.h +10 -0
- package/ios/interfaces/ImageData.mm +4 -0
- package/ios/interfaces/LinkData.h +11 -0
- package/ios/interfaces/LinkData.mm +29 -0
- package/ios/interfaces/LinkRegexConfig.h +19 -0
- package/ios/interfaces/LinkRegexConfig.mm +37 -0
- package/ios/interfaces/MediaAttachment.h +23 -0
- package/ios/interfaces/MediaAttachment.mm +31 -0
- package/ios/interfaces/MentionParams.h +8 -0
- package/ios/interfaces/MentionParams.mm +4 -0
- package/ios/interfaces/MentionStyleProps.h +13 -0
- package/ios/interfaces/MentionStyleProps.mm +63 -0
- package/ios/interfaces/StyleBase.h +36 -0
- package/ios/interfaces/StyleBase.mm +256 -0
- package/ios/interfaces/StyleHeaders.h +102 -0
- package/ios/interfaces/StylePair.h +9 -0
- package/ios/interfaces/StylePair.mm +4 -0
- package/ios/interfaces/StyleTypeEnum.h +26 -0
- package/ios/interfaces/TextDecorationLineEnum.h +6 -0
- package/ios/interfaces/TextDecorationLineEnum.mm +4 -0
- package/ios/internals/EnrichedTextInputViewComponentDescriptor.h +19 -0
- package/ios/internals/EnrichedTextInputViewShadowNode.h +44 -0
- package/ios/internals/EnrichedTextInputViewShadowNode.mm +103 -0
- package/ios/internals/EnrichedTextInputViewState.cpp +10 -0
- package/ios/internals/EnrichedTextInputViewState.h +22 -0
- package/ios/styles/BlockQuoteStyle.mm +55 -0
- package/ios/styles/BoldStyle.mm +37 -0
- package/ios/styles/CheckboxListStyle.mm +153 -0
- package/ios/styles/CodeBlockStyle.mm +49 -0
- package/ios/styles/H1Style.mm +20 -0
- package/ios/styles/H2Style.mm +20 -0
- package/ios/styles/H3Style.mm +20 -0
- package/ios/styles/H4Style.mm +20 -0
- package/ios/styles/H5Style.mm +20 -0
- package/ios/styles/H6Style.mm +20 -0
- package/ios/styles/HeadingStyleBase.mm +65 -0
- package/ios/styles/ImageStyle.mm +146 -0
- package/ios/styles/InlineCodeStyle.mm +65 -0
- package/ios/styles/ItalicStyle.mm +37 -0
- package/ios/styles/LinkStyle.mm +532 -0
- package/ios/styles/MentionStyle.mm +538 -0
- package/ios/styles/OrderedListStyle.mm +86 -0
- package/ios/styles/StrikethroughStyle.mm +25 -0
- package/ios/styles/UnderlineStyle.mm +24 -0
- package/ios/styles/UnorderedListStyle.mm +86 -0
- package/ios/utils/CheckboxHitTestUtils.h +10 -0
- package/ios/utils/CheckboxHitTestUtils.mm +122 -0
- package/ios/utils/DotReplacementUtils.h +10 -0
- package/ios/utils/DotReplacementUtils.mm +68 -0
- package/ios/utils/KeyboardUtils.h +7 -0
- package/ios/utils/KeyboardUtils.mm +31 -0
- package/ios/utils/OccurenceUtils.h +44 -0
- package/ios/utils/OccurenceUtils.mm +179 -0
- package/ios/utils/ParagraphAttributesUtils.h +15 -0
- package/ios/utils/ParagraphAttributesUtils.mm +257 -0
- package/ios/utils/RangeUtils.h +12 -0
- package/ios/utils/RangeUtils.mm +183 -0
- package/ios/utils/TextBlockTapGestureRecognizer.h +17 -0
- package/ios/utils/TextBlockTapGestureRecognizer.mm +56 -0
- package/ios/utils/TextInsertionUtils.h +17 -0
- package/ios/utils/TextInsertionUtils.mm +64 -0
- package/ios/utils/WordsUtils.h +7 -0
- package/ios/utils/WordsUtils.mm +98 -0
- package/ios/utils/ZeroWidthSpaceUtils.h +9 -0
- package/ios/utils/ZeroWidthSpaceUtils.mm +270 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/native/EnrichedTextInput.js +304 -0
- package/lib/module/native/EnrichedTextInput.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/spec/EnrichedTextInputNativeComponent.ts +517 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/EnrichedTextInputDefaultProps.js +12 -0
- package/lib/module/utils/EnrichedTextInputDefaultProps.js.map +1 -0
- package/lib/module/utils/normalizeHtmlStyle.js +155 -0
- package/lib/module/utils/normalizeHtmlStyle.js.map +1 -0
- package/lib/module/utils/nullthrows.js +9 -0
- package/lib/module/utils/nullthrows.js.map +1 -0
- package/lib/module/utils/regexParser.js +46 -0
- package/lib/module/utils/regexParser.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/native/EnrichedTextInput.d.ts +3 -0
- package/lib/typescript/src/native/EnrichedTextInput.d.ts.map +1 -0
- package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts +397 -0
- package/lib/typescript/src/spec/EnrichedTextInputNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +447 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts +10 -0
- package/lib/typescript/src/utils/EnrichedTextInputDefaultProps.d.ts.map +1 -0
- package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts +4 -0
- package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -0
- package/lib/typescript/src/utils/nullthrows.d.ts +2 -0
- package/lib/typescript/src/utils/nullthrows.d.ts.map +1 -0
- package/lib/typescript/src/utils/regexParser.d.ts +3 -0
- package/lib/typescript/src/utils/regexParser.d.ts.map +1 -0
- package/package.json +226 -0
- package/react-native.config.js +13 -0
- package/src/index.tsx +20 -0
- package/src/native/EnrichedTextInput.tsx +370 -0
- package/src/spec/EnrichedTextInputNativeComponent.ts +517 -0
- package/src/types.ts +499 -0
- package/src/utils/EnrichedTextInputDefaultProps.ts +9 -0
- package/src/utils/normalizeHtmlStyle.ts +199 -0
- package/src/utils/nullthrows.ts +7 -0
- package/src/utils/regexParser.ts +56 -0
package/android/generated/jni/react/renderer/components/ReactNativeEnrichedSpec/ShadowNodes.cpp
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "ShadowNodes.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "EventEmitters.h"
|
|
14
|
+
#include "Props.h"
|
|
15
|
+
#include "States.h"
|
|
16
|
+
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
17
|
+
#include <jsi/jsi.h>
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateStateCpp.js
|
|
9
|
+
*/
|
|
10
|
+
#include "States.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateStateH.js
|
|
8
|
+
*/
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include <react/renderer/core/StateData.h>
|
|
12
|
+
#ifdef RN_SERIALIZABLE_STATE
|
|
13
|
+
#include <folly/dynamic.h>
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
namespace facebook::react {
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
|
2
|
+
apply plugin: 'com.diffplug.spotless'
|
|
3
|
+
|
|
4
|
+
ktlint {
|
|
5
|
+
version = "1.8.0"
|
|
6
|
+
verbose = true
|
|
7
|
+
outputToConsole = true
|
|
8
|
+
coloredOutput = true
|
|
9
|
+
android = true
|
|
10
|
+
enableExperimentalRules = true
|
|
11
|
+
|
|
12
|
+
reporters {
|
|
13
|
+
reporter "plain"
|
|
14
|
+
reporter "checkstyle"
|
|
15
|
+
reporter "html"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
filter {
|
|
19
|
+
exclude("**/generated/**")
|
|
20
|
+
exclude("**/build/**")
|
|
21
|
+
exclude("**/node_modules/**")
|
|
22
|
+
|
|
23
|
+
include("src/**/*.kt")
|
|
24
|
+
include("src/**/*.kts")
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
spotless {
|
|
29
|
+
kotlin {
|
|
30
|
+
target 'src/**/*.kt', 'src/**/*.kts'
|
|
31
|
+
ktlint("1.8.0")
|
|
32
|
+
trimTrailingWhitespace()
|
|
33
|
+
endWithNewline()
|
|
34
|
+
lineEndings 'UNIX'
|
|
35
|
+
targetExclude '**/generated/**', '**/build/**', '**/node_modules/**'
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
java {
|
|
39
|
+
target 'src/**/*.java'
|
|
40
|
+
googleJavaFormat("1.23.0")
|
|
41
|
+
removeUnusedImports()
|
|
42
|
+
trimTrailingWhitespace()
|
|
43
|
+
endWithNewline()
|
|
44
|
+
leadingTabsToSpaces(2)
|
|
45
|
+
lineEndings 'UNIX'
|
|
46
|
+
targetExclude '**/generated/**', '**/build/**', '**/node_modules/**'
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
groovyGradle {
|
|
50
|
+
target '*.gradle', 'gradle/*.gradle'
|
|
51
|
+
greclipse()
|
|
52
|
+
trimTrailingWhitespace()
|
|
53
|
+
endWithNewline()
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
tasks.register('lintFormat') {
|
|
58
|
+
group = "formatting"
|
|
59
|
+
description = "Auto-fix all code formatting issues"
|
|
60
|
+
dependsOn 'ktlintFormat', 'spotlessApply'
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
tasks.register('lintVerify') {
|
|
64
|
+
group = "verification"
|
|
65
|
+
description = "Verify code is properly formatted"
|
|
66
|
+
dependsOn 'ktlintCheck', 'spotlessCheck'
|
|
67
|
+
doLast {
|
|
68
|
+
println "✓ All code formatting checks passed!"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
package com.swmansion.enriched
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.ReactPackage
|
|
4
|
+
import com.facebook.react.bridge.NativeModule
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.uimanager.ViewManager
|
|
7
|
+
import com.swmansion.enriched.common.ResourceManager
|
|
8
|
+
import com.swmansion.enriched.textinput.EnrichedTextInputViewManager
|
|
9
|
+
import java.util.ArrayList
|
|
10
|
+
|
|
11
|
+
class ReactNativeEnrichedPackage : ReactPackage {
|
|
12
|
+
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
|
13
|
+
ResourceManager.init(reactContext.applicationContext)
|
|
14
|
+
val viewManagers: MutableList<ViewManager<*, *>> = ArrayList()
|
|
15
|
+
viewManagers.add(EnrichedTextInputViewManager())
|
|
16
|
+
return viewManagers
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> = emptyList()
|
|
20
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
package com.swmansion.enriched.common
|
|
2
|
+
|
|
3
|
+
import android.content.res.Resources
|
|
4
|
+
import android.graphics.BitmapFactory
|
|
5
|
+
import android.graphics.Canvas
|
|
6
|
+
import android.graphics.Color
|
|
7
|
+
import android.graphics.ColorFilter
|
|
8
|
+
import android.graphics.ImageDecoder
|
|
9
|
+
import android.graphics.PixelFormat
|
|
10
|
+
import android.graphics.drawable.AnimatedImageDrawable
|
|
11
|
+
import android.graphics.drawable.Drawable
|
|
12
|
+
import android.os.Build
|
|
13
|
+
import android.os.Handler
|
|
14
|
+
import android.os.Looper
|
|
15
|
+
import android.util.Log
|
|
16
|
+
import androidx.core.graphics.drawable.toDrawable
|
|
17
|
+
import com.swmansion.enriched.R
|
|
18
|
+
import java.net.URL
|
|
19
|
+
import java.nio.ByteBuffer
|
|
20
|
+
import java.util.concurrent.Executors
|
|
21
|
+
|
|
22
|
+
class AsyncDrawable(
|
|
23
|
+
private val url: String,
|
|
24
|
+
) : Drawable() {
|
|
25
|
+
private var internalDrawable: Drawable = Color.TRANSPARENT.toDrawable()
|
|
26
|
+
private val mainHandler = Handler(Looper.getMainLooper())
|
|
27
|
+
private val executor = Executors.newSingleThreadExecutor()
|
|
28
|
+
var isLoaded = false
|
|
29
|
+
|
|
30
|
+
init {
|
|
31
|
+
internalDrawable.bounds = bounds
|
|
32
|
+
|
|
33
|
+
load()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private fun load() {
|
|
37
|
+
executor.execute {
|
|
38
|
+
try {
|
|
39
|
+
isLoaded = false
|
|
40
|
+
val inputStream = URL(url).openStream()
|
|
41
|
+
val bytes = inputStream.readBytes()
|
|
42
|
+
val d = prepareDrawable(bytes)
|
|
43
|
+
|
|
44
|
+
// Switch to Main Thread to update UI
|
|
45
|
+
mainHandler.post {
|
|
46
|
+
if (d != null) {
|
|
47
|
+
d.bounds = bounds
|
|
48
|
+
internalDrawable = d
|
|
49
|
+
} else {
|
|
50
|
+
loadPlaceholderImage()
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
} catch (e: Exception) {
|
|
54
|
+
Log.e("AsyncDrawable", "Failed to load: $url", e)
|
|
55
|
+
|
|
56
|
+
loadPlaceholderImage()
|
|
57
|
+
} finally {
|
|
58
|
+
isLoaded = true
|
|
59
|
+
onLoaded?.invoke()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private fun prepareDrawable(bytes: ByteArray): Drawable? {
|
|
65
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
66
|
+
try {
|
|
67
|
+
val buffer = ByteBuffer.wrap(bytes)
|
|
68
|
+
val source = ImageDecoder.createSource(buffer)
|
|
69
|
+
|
|
70
|
+
val drawable =
|
|
71
|
+
ImageDecoder.decodeDrawable(source) { decoder, _, _ ->
|
|
72
|
+
decoder.setTargetSize(bounds.width(), bounds.height())
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (drawable is AnimatedImageDrawable) {
|
|
76
|
+
drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
|
|
77
|
+
drawable.repeatCount = AnimatedImageDrawable.REPEAT_INFINITE
|
|
78
|
+
drawable.start()
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return drawable
|
|
82
|
+
} catch (e: Exception) {
|
|
83
|
+
Log.w("AsyncDrawable", "ImageDecoder failed, falling back to Bitmap", e)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Fallback to bitmap if ImageDecoder fails
|
|
88
|
+
return try {
|
|
89
|
+
val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
|
|
90
|
+
bitmap?.toDrawable(Resources.getSystem())
|
|
91
|
+
} catch (_: Exception) {
|
|
92
|
+
null
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private fun loadPlaceholderImage() {
|
|
97
|
+
internalDrawable = ResourceManager.getDrawableResource(R.drawable.broken_image)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
override fun draw(canvas: Canvas) {
|
|
101
|
+
internalDrawable.draw(canvas)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
override fun setAlpha(alpha: Int) {
|
|
105
|
+
internalDrawable.alpha = alpha
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
override fun setColorFilter(colorFilter: ColorFilter?) {
|
|
109
|
+
internalDrawable.colorFilter = colorFilter
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@Deprecated("Deprecated in Java")
|
|
113
|
+
override fun getOpacity(): Int = PixelFormat.TRANSLUCENT
|
|
114
|
+
|
|
115
|
+
override fun setBounds(
|
|
116
|
+
left: Int,
|
|
117
|
+
top: Int,
|
|
118
|
+
right: Int,
|
|
119
|
+
bottom: Int,
|
|
120
|
+
) {
|
|
121
|
+
super.setBounds(left, top, right, bottom)
|
|
122
|
+
internalDrawable.setBounds(left, top, right, bottom)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
var onLoaded: (() -> Unit)? = null
|
|
126
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
package com.swmansion.enriched.common
|
|
2
|
+
|
|
3
|
+
import android.graphics.Canvas
|
|
4
|
+
import android.graphics.ColorFilter
|
|
5
|
+
import android.graphics.Paint
|
|
6
|
+
import android.graphics.Path
|
|
7
|
+
import android.graphics.PixelFormat
|
|
8
|
+
import android.graphics.PorterDuff
|
|
9
|
+
import android.graphics.PorterDuffXfermode
|
|
10
|
+
import android.graphics.drawable.Drawable
|
|
11
|
+
|
|
12
|
+
class CheckboxDrawable(
|
|
13
|
+
private val size: Int,
|
|
14
|
+
private var color: Int,
|
|
15
|
+
private var isChecked: Boolean,
|
|
16
|
+
) : Drawable() {
|
|
17
|
+
private val paint = Paint(Paint.ANTI_ALIAS_FLAG)
|
|
18
|
+
private val path = Path()
|
|
19
|
+
|
|
20
|
+
fun update(checked: Boolean) {
|
|
21
|
+
this.isChecked = checked
|
|
22
|
+
invalidateSelf()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
override fun draw(canvas: Canvas) {
|
|
26
|
+
val saveCount = canvas.saveLayer(0f, 0f, size.toFloat(), size.toFloat(), null)
|
|
27
|
+
|
|
28
|
+
paint.color = color
|
|
29
|
+
paint.style = Paint.Style.FILL
|
|
30
|
+
|
|
31
|
+
// Full square background with transparent checkmark
|
|
32
|
+
if (isChecked) {
|
|
33
|
+
val cornerRadius = size * 0.15f
|
|
34
|
+
canvas.drawRoundRect(0f, 0f, size.toFloat(), size.toFloat(), cornerRadius, cornerRadius, paint)
|
|
35
|
+
|
|
36
|
+
paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.XOR)
|
|
37
|
+
paint.strokeWidth = size * 0.15f
|
|
38
|
+
paint.style = Paint.Style.STROKE
|
|
39
|
+
paint.strokeCap = Paint.Cap.ROUND
|
|
40
|
+
paint.strokeJoin = Paint.Join.ROUND
|
|
41
|
+
|
|
42
|
+
path.reset()
|
|
43
|
+
path.moveTo(size * 0.25f, size * 0.5f)
|
|
44
|
+
path.lineTo(size * 0.45f, size * 0.7f)
|
|
45
|
+
path.lineTo(size * 0.75f, size * 0.3f)
|
|
46
|
+
canvas.drawPath(path, paint)
|
|
47
|
+
|
|
48
|
+
paint.xfermode = null
|
|
49
|
+
canvas.restoreToCount(saveCount)
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Border only square for unchecked state
|
|
54
|
+
paint.style = Paint.Style.STROKE
|
|
55
|
+
paint.strokeWidth = size * 0.1f
|
|
56
|
+
val margin = paint.strokeWidth / 2f
|
|
57
|
+
val cornerRadius = size * 0.15f
|
|
58
|
+
canvas.drawRoundRect(
|
|
59
|
+
margin,
|
|
60
|
+
margin,
|
|
61
|
+
size - margin,
|
|
62
|
+
size - margin,
|
|
63
|
+
cornerRadius,
|
|
64
|
+
cornerRadius,
|
|
65
|
+
paint,
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
canvas.restoreToCount(saveCount)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
override fun setAlpha(alpha: Int) {
|
|
72
|
+
paint.alpha = alpha
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
override fun setColorFilter(colorFilter: ColorFilter?) {
|
|
76
|
+
paint.colorFilter = colorFilter
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Deprecated("Deprecated in Java")
|
|
80
|
+
override fun getOpacity(): Int = PixelFormat.TRANSLUCENT
|
|
81
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
package com.swmansion.enriched.common
|
|
2
|
+
|
|
3
|
+
interface EnrichedStyle {
|
|
4
|
+
// Headers
|
|
5
|
+
val h1FontSize: Int
|
|
6
|
+
val h1Bold: Boolean
|
|
7
|
+
val h2FontSize: Int
|
|
8
|
+
val h2Bold: Boolean
|
|
9
|
+
val h3FontSize: Int
|
|
10
|
+
val h3Bold: Boolean
|
|
11
|
+
val h4FontSize: Int
|
|
12
|
+
val h4Bold: Boolean
|
|
13
|
+
val h5FontSize: Int
|
|
14
|
+
val h5Bold: Boolean
|
|
15
|
+
val h6FontSize: Int
|
|
16
|
+
val h6Bold: Boolean
|
|
17
|
+
|
|
18
|
+
// Blockquote
|
|
19
|
+
val blockquoteColor: Int?
|
|
20
|
+
val blockquoteBorderColor: Int
|
|
21
|
+
val blockquoteStripeWidth: Int
|
|
22
|
+
val blockquoteGapWidth: Int
|
|
23
|
+
|
|
24
|
+
// Ordered Lists
|
|
25
|
+
val olGapWidth: Int
|
|
26
|
+
val olMarginLeft: Int
|
|
27
|
+
val olMarkerFontWeight: Int?
|
|
28
|
+
val olMarkerColor: Int?
|
|
29
|
+
|
|
30
|
+
// Unordered Lists
|
|
31
|
+
val ulGapWidth: Int
|
|
32
|
+
val ulMarginLeft: Int
|
|
33
|
+
val ulBulletSize: Int
|
|
34
|
+
val ulBulletColor: Int
|
|
35
|
+
|
|
36
|
+
// Checkbox list
|
|
37
|
+
val ulCheckboxBoxSize: Int
|
|
38
|
+
val ulCheckboxGapWidth: Int
|
|
39
|
+
val ulCheckboxMarginLeft: Int
|
|
40
|
+
val ulCheckboxBoxColor: Int
|
|
41
|
+
|
|
42
|
+
// Links
|
|
43
|
+
val aColor: Int
|
|
44
|
+
val aUnderline: Boolean
|
|
45
|
+
|
|
46
|
+
// Code Blocks
|
|
47
|
+
val codeBlockColor: Int
|
|
48
|
+
val codeBlockBackgroundColor: Int
|
|
49
|
+
val codeBlockRadius: Float
|
|
50
|
+
|
|
51
|
+
// Inline Code
|
|
52
|
+
val inlineCodeColor: Int
|
|
53
|
+
val inlineCodeBackgroundColor: Int
|
|
54
|
+
|
|
55
|
+
// Mentions
|
|
56
|
+
val mentionsStyle: Map<String, MentionStyle>
|
|
57
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package com.swmansion.enriched.common
|
|
2
|
+
|
|
3
|
+
import android.text.TextPaint
|
|
4
|
+
import android.text.style.MetricAffectingSpan
|
|
5
|
+
|
|
6
|
+
class ForceRedrawSpan : MetricAffectingSpan() {
|
|
7
|
+
override fun updateMeasureState(tp: TextPaint) {
|
|
8
|
+
// Do nothing, we don't actually want to change how it looks
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
override fun updateDrawState(tp: TextPaint?) {
|
|
12
|
+
// Do nothing
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
package com.swmansion.enriched.common
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import android.content.res.Resources
|
|
6
|
+
import android.graphics.drawable.Drawable
|
|
7
|
+
import androidx.core.content.res.ResourcesCompat
|
|
8
|
+
import androidx.core.graphics.drawable.DrawableCompat
|
|
9
|
+
|
|
10
|
+
object ResourceManager {
|
|
11
|
+
private var appContext: Context? = null
|
|
12
|
+
|
|
13
|
+
fun init(context: Context) {
|
|
14
|
+
this.appContext = context.applicationContext
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@SuppressLint("UseCompatLoadingForDrawables")
|
|
18
|
+
fun getDrawableResource(id: Int): Drawable {
|
|
19
|
+
val context = appContext ?: throw IllegalStateException("ResourceManager not initialized! Call init() first.")
|
|
20
|
+
|
|
21
|
+
val image = ResourcesCompat.getDrawable(context.resources, id, null)
|
|
22
|
+
val finalImage = image ?: Resources.getSystem().getDrawable(android.R.drawable.ic_menu_report_image)
|
|
23
|
+
|
|
24
|
+
return DrawableCompat.wrap(finalImage)
|
|
25
|
+
}
|
|
26
|
+
}
|