@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
|
@@ -0,0 +1,664 @@
|
|
|
1
|
+
#import <InputConfig.h>
|
|
2
|
+
#import <React/RCTFont.h>
|
|
3
|
+
|
|
4
|
+
@implementation InputConfig {
|
|
5
|
+
UIColor *_primaryColor;
|
|
6
|
+
NSNumber *_primaryFontSize;
|
|
7
|
+
CGFloat _primaryLineHeight;
|
|
8
|
+
NSString *_primaryFontWeight;
|
|
9
|
+
NSString *_primaryFontFamily;
|
|
10
|
+
UIFont *_primaryFont;
|
|
11
|
+
UIFont *_monospacedFont;
|
|
12
|
+
BOOL _primaryFontNeedsRecreation;
|
|
13
|
+
BOOL _monospacedFontNeedsRecreation;
|
|
14
|
+
NSSet<NSNumber *> *_mentionIndicators;
|
|
15
|
+
CGFloat _h1FontSize;
|
|
16
|
+
BOOL _h1Bold;
|
|
17
|
+
CGFloat _h2FontSize;
|
|
18
|
+
BOOL _h2Bold;
|
|
19
|
+
CGFloat _h3FontSize;
|
|
20
|
+
BOOL _h3Bold;
|
|
21
|
+
CGFloat _h4FontSize;
|
|
22
|
+
BOOL _h4Bold;
|
|
23
|
+
CGFloat _h5FontSize;
|
|
24
|
+
BOOL _h5Bold;
|
|
25
|
+
CGFloat _h6FontSize;
|
|
26
|
+
BOOL _h6Bold;
|
|
27
|
+
UIColor *_blockquoteBorderColor;
|
|
28
|
+
CGFloat _blockquoteBorderWidth;
|
|
29
|
+
CGFloat _blockquoteGapWidth;
|
|
30
|
+
UIColor *_blockquoteColor;
|
|
31
|
+
UIColor *_inlineCodeFgColor;
|
|
32
|
+
UIColor *_inlineCodeBgColor;
|
|
33
|
+
CGFloat _orderedListGapWidth;
|
|
34
|
+
CGFloat _orderedListMarginLeft;
|
|
35
|
+
NSString *_orderedListMarkerFontWeight;
|
|
36
|
+
UIColor *_orderedListMarkerColor;
|
|
37
|
+
UIFont *_orderedListMarkerFont;
|
|
38
|
+
BOOL _olMarkerFontNeedsRecreation;
|
|
39
|
+
UIColor *_unorderedListBulletColor;
|
|
40
|
+
CGFloat _unorderedListBulletSize;
|
|
41
|
+
CGFloat _unorderedListGapWidth;
|
|
42
|
+
CGFloat _unorderedListMarginLeft;
|
|
43
|
+
UIColor *_linkColor;
|
|
44
|
+
TextDecorationLineEnum _linkDecorationLine;
|
|
45
|
+
NSDictionary *_mentionProperties;
|
|
46
|
+
UIColor *_codeBlockFgColor;
|
|
47
|
+
CGFloat _codeBlockBorderRadius;
|
|
48
|
+
UIColor *_codeBlockBgColor;
|
|
49
|
+
LinkRegexConfig *_linkRegexConfig;
|
|
50
|
+
NSRegularExpression *_parsedLinkRegex;
|
|
51
|
+
CGFloat _checkboxListBoxSize;
|
|
52
|
+
CGFloat _checkboxListGapWidth;
|
|
53
|
+
CGFloat _checkboxListMarginLeft;
|
|
54
|
+
UIColor *_checkboxListBoxColor;
|
|
55
|
+
UIImage *_checkboxCheckedImage;
|
|
56
|
+
UIImage *_checkboxUncheckedImage;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
- (instancetype)init {
|
|
60
|
+
self = [super init];
|
|
61
|
+
_primaryFontNeedsRecreation = YES;
|
|
62
|
+
_monospacedFontNeedsRecreation = YES;
|
|
63
|
+
_olMarkerFontNeedsRecreation = YES;
|
|
64
|
+
return self;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
- (id)copyWithZone:(NSZone *)zone {
|
|
68
|
+
InputConfig *copy = [[[self class] allocWithZone:zone] init];
|
|
69
|
+
copy->_primaryColor = [_primaryColor copy];
|
|
70
|
+
copy->_primaryFontSize = [_primaryFontSize copy];
|
|
71
|
+
copy->_primaryLineHeight = _primaryLineHeight;
|
|
72
|
+
copy->_primaryFontWeight = [_primaryFontWeight copy];
|
|
73
|
+
copy->_primaryFontFamily = [_primaryFontFamily copy];
|
|
74
|
+
copy->_primaryFont = [_primaryFont copy];
|
|
75
|
+
copy->_monospacedFont = [_monospacedFont copy];
|
|
76
|
+
copy->_mentionIndicators = [_mentionIndicators copy];
|
|
77
|
+
copy->_h1FontSize = _h1FontSize;
|
|
78
|
+
copy->_h1Bold = _h1Bold;
|
|
79
|
+
copy->_h2FontSize = _h2FontSize;
|
|
80
|
+
copy->_h2Bold = _h2Bold;
|
|
81
|
+
copy->_h3FontSize = _h3FontSize;
|
|
82
|
+
copy->_h3Bold = _h3Bold;
|
|
83
|
+
copy->_h4FontSize = _h4FontSize;
|
|
84
|
+
copy->_h4Bold = _h4Bold;
|
|
85
|
+
copy->_h5FontSize = _h5FontSize;
|
|
86
|
+
copy->_h5Bold = _h5Bold;
|
|
87
|
+
copy->_h6FontSize = _h6FontSize;
|
|
88
|
+
copy->_h6Bold = _h6Bold;
|
|
89
|
+
copy->_blockquoteBorderColor = [_blockquoteBorderColor copy];
|
|
90
|
+
copy->_blockquoteBorderWidth = _blockquoteBorderWidth;
|
|
91
|
+
copy->_blockquoteGapWidth = _blockquoteGapWidth;
|
|
92
|
+
copy->_blockquoteColor = [_blockquoteColor copy];
|
|
93
|
+
copy->_inlineCodeFgColor = [_inlineCodeFgColor copy];
|
|
94
|
+
copy->_inlineCodeBgColor = [_inlineCodeBgColor copy];
|
|
95
|
+
copy->_orderedListGapWidth = _orderedListGapWidth;
|
|
96
|
+
copy->_orderedListMarginLeft = _orderedListMarginLeft;
|
|
97
|
+
copy->_orderedListMarkerFontWeight = [_orderedListMarkerFontWeight copy];
|
|
98
|
+
copy->_orderedListMarkerColor = [_orderedListMarkerColor copy];
|
|
99
|
+
copy->_orderedListMarkerFont = [_orderedListMarkerFont copy];
|
|
100
|
+
copy->_unorderedListBulletColor = [_unorderedListBulletColor copy];
|
|
101
|
+
copy->_unorderedListBulletSize = _unorderedListBulletSize;
|
|
102
|
+
copy->_unorderedListGapWidth = _unorderedListGapWidth;
|
|
103
|
+
copy->_unorderedListMarginLeft = _unorderedListMarginLeft;
|
|
104
|
+
copy->_linkColor = [_linkColor copy];
|
|
105
|
+
copy->_linkDecorationLine = [_linkDecorationLine copy];
|
|
106
|
+
copy->_mentionProperties = [_mentionProperties mutableCopy];
|
|
107
|
+
copy->_codeBlockFgColor = [_codeBlockFgColor copy];
|
|
108
|
+
copy->_codeBlockBgColor = [_codeBlockBgColor copy];
|
|
109
|
+
copy->_codeBlockBorderRadius = _codeBlockBorderRadius;
|
|
110
|
+
copy->_linkRegexConfig = [_linkRegexConfig copy];
|
|
111
|
+
copy->_parsedLinkRegex = [_parsedLinkRegex copy];
|
|
112
|
+
copy->_checkboxListBoxSize = _checkboxListBoxSize;
|
|
113
|
+
copy->_checkboxListGapWidth = _checkboxListGapWidth;
|
|
114
|
+
copy->_checkboxListMarginLeft = _checkboxListMarginLeft;
|
|
115
|
+
copy->_checkboxListBoxColor = [_checkboxListBoxColor copy];
|
|
116
|
+
copy->_checkboxCheckedImage = _checkboxCheckedImage;
|
|
117
|
+
copy->_checkboxUncheckedImage = _checkboxUncheckedImage;
|
|
118
|
+
return copy;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
- (UIColor *)primaryColor {
|
|
122
|
+
return _primaryColor != nullptr ? _primaryColor : UIColor.blackColor;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
- (void)setPrimaryColor:(UIColor *)newValue {
|
|
126
|
+
_primaryColor = newValue;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
- (NSNumber *)primaryFontSize {
|
|
130
|
+
return _primaryFontSize != nullptr ? _primaryFontSize : @(14);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
- (void)setPrimaryFontSize:(NSNumber *)newValue {
|
|
134
|
+
_primaryFontSize = newValue;
|
|
135
|
+
_primaryFontNeedsRecreation = YES;
|
|
136
|
+
_monospacedFontNeedsRecreation = YES;
|
|
137
|
+
_olMarkerFontNeedsRecreation = YES;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
- (CGFloat)primaryLineHeight {
|
|
141
|
+
return _primaryLineHeight;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
- (void)setPrimaryLineHeight:(CGFloat)newValue {
|
|
145
|
+
_primaryLineHeight = newValue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
- (CGFloat)scaledPrimaryLineHeight {
|
|
149
|
+
return [[UIFontMetrics defaultMetrics]
|
|
150
|
+
scaledValueForValue:[self primaryLineHeight]];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
- (NSString *)primaryFontWeight {
|
|
154
|
+
return _primaryFontWeight != nullptr
|
|
155
|
+
? _primaryFontWeight
|
|
156
|
+
: [NSString stringWithFormat:@"%@", @(UIFontWeightRegular)];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
- (void)setPrimaryFontWeight:(NSString *)newValue {
|
|
160
|
+
_primaryFontWeight = newValue;
|
|
161
|
+
_primaryFontNeedsRecreation = YES;
|
|
162
|
+
_monospacedFontNeedsRecreation = YES;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
- (NSString *)primaryFontFamily {
|
|
166
|
+
return _primaryFontFamily;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
- (void)setPrimaryFontFamily:(NSString *)newValue {
|
|
170
|
+
_primaryFontFamily = newValue;
|
|
171
|
+
_primaryFontNeedsRecreation = YES;
|
|
172
|
+
_olMarkerFontNeedsRecreation = YES;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
- (UIFont *)primaryFont {
|
|
176
|
+
if (_primaryFontNeedsRecreation) {
|
|
177
|
+
_primaryFontNeedsRecreation = NO;
|
|
178
|
+
|
|
179
|
+
NSString *newFontWeight = [self primaryFontWeight];
|
|
180
|
+
// fix RCTFontWeight conversion warnings:
|
|
181
|
+
// sometimes changing font family comes with weight '0' if not specified
|
|
182
|
+
// RCTConvert doesn't recognize this value so we just nullify it and it gets
|
|
183
|
+
// a default value
|
|
184
|
+
if ([newFontWeight isEqualToString:@"0"]) {
|
|
185
|
+
newFontWeight = nullptr;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
_primaryFont = [RCTFont updateFont:nullptr
|
|
189
|
+
withFamily:[self primaryFontFamily]
|
|
190
|
+
size:[self scaledPrimaryFontSize]
|
|
191
|
+
weight:newFontWeight
|
|
192
|
+
style:nullptr
|
|
193
|
+
variant:nullptr
|
|
194
|
+
scaleMultiplier:1];
|
|
195
|
+
}
|
|
196
|
+
return _primaryFont;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
- (UIFont *)monospacedFont {
|
|
200
|
+
if (_monospacedFontNeedsRecreation) {
|
|
201
|
+
_monospacedFontNeedsRecreation = NO;
|
|
202
|
+
_monospacedFont = [UIFont
|
|
203
|
+
monospacedSystemFontOfSize:[[self scaledPrimaryFontSize] floatValue]
|
|
204
|
+
weight:[[self primaryFontWeight] floatValue]];
|
|
205
|
+
}
|
|
206
|
+
return _monospacedFont;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
- (NSSet<NSNumber *> *)mentionIndicators {
|
|
210
|
+
return _mentionIndicators != nullptr ? _mentionIndicators
|
|
211
|
+
: [[NSSet alloc] init];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
- (void)setMentionIndicators:(NSSet<NSNumber *> *)newValue {
|
|
215
|
+
_mentionIndicators = newValue;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
- (CGFloat)h1FontSize {
|
|
219
|
+
return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h1FontSize];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
- (void)setH1FontSize:(CGFloat)newValue {
|
|
223
|
+
_h1FontSize = newValue;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
- (BOOL)h1Bold {
|
|
227
|
+
return _h1Bold;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
- (void)setH1Bold:(BOOL)newValue {
|
|
231
|
+
_h1Bold = newValue;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
- (CGFloat)h2FontSize {
|
|
235
|
+
return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h2FontSize];
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
- (void)setH2FontSize:(CGFloat)newValue {
|
|
239
|
+
_h2FontSize = newValue;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
- (BOOL)h2Bold {
|
|
243
|
+
return _h2Bold;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
- (void)setH2Bold:(BOOL)newValue {
|
|
247
|
+
_h2Bold = newValue;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
- (CGFloat)h3FontSize {
|
|
251
|
+
return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h3FontSize];
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
- (void)setH3FontSize:(CGFloat)newValue {
|
|
255
|
+
_h3FontSize = newValue;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
- (BOOL)h3Bold {
|
|
259
|
+
return _h3Bold;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
- (void)setH3Bold:(BOOL)newValue {
|
|
263
|
+
_h3Bold = newValue;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
- (CGFloat)h4FontSize {
|
|
267
|
+
return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h4FontSize];
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
- (void)setH4FontSize:(CGFloat)newValue {
|
|
271
|
+
_h4FontSize = newValue;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
- (BOOL)h4Bold {
|
|
275
|
+
return _h4Bold;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
- (void)setH4Bold:(BOOL)newValue {
|
|
279
|
+
_h4Bold = newValue;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
- (CGFloat)h5FontSize {
|
|
283
|
+
return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h5FontSize];
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
- (void)setH5FontSize:(CGFloat)newValue {
|
|
287
|
+
_h5FontSize = newValue;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
- (BOOL)h5Bold {
|
|
291
|
+
return _h5Bold;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
- (void)setH5Bold:(BOOL)newValue {
|
|
295
|
+
_h5Bold = newValue;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
- (CGFloat)h6FontSize {
|
|
299
|
+
return [[UIFontMetrics defaultMetrics] scaledValueForValue:_h6FontSize];
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
- (void)setH6FontSize:(CGFloat)newValue {
|
|
303
|
+
_h6FontSize = newValue;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
- (BOOL)h6Bold {
|
|
307
|
+
return _h6Bold;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
- (void)setH6Bold:(BOOL)newValue {
|
|
311
|
+
_h6Bold = newValue;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
- (UIColor *)blockquoteBorderColor {
|
|
315
|
+
return _blockquoteBorderColor;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
- (void)setBlockquoteBorderColor:(UIColor *)newValue {
|
|
319
|
+
_blockquoteBorderColor = newValue;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
- (CGFloat)blockquoteBorderWidth {
|
|
323
|
+
return _blockquoteBorderWidth;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
- (void)setBlockquoteBorderWidth:(CGFloat)newValue {
|
|
327
|
+
_blockquoteBorderWidth = newValue;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
- (CGFloat)blockquoteGapWidth {
|
|
331
|
+
return _blockquoteGapWidth;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
- (void)setBlockquoteGapWidth:(CGFloat)newValue {
|
|
335
|
+
_blockquoteGapWidth = newValue;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
- (UIColor *)blockquoteColor {
|
|
339
|
+
return _blockquoteColor;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
- (void)setBlockquoteColor:(UIColor *)newValue {
|
|
343
|
+
_blockquoteColor = newValue;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
- (UIColor *)inlineCodeFgColor {
|
|
347
|
+
return _inlineCodeFgColor;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
- (void)setInlineCodeFgColor:(UIColor *)newValue {
|
|
351
|
+
_inlineCodeFgColor = newValue;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
- (UIColor *)inlineCodeBgColor {
|
|
355
|
+
return _inlineCodeBgColor;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
- (void)setInlineCodeBgColor:(UIColor *)newValue {
|
|
359
|
+
_inlineCodeBgColor = newValue;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
- (CGFloat)orderedListGapWidth {
|
|
363
|
+
return _orderedListGapWidth;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
- (void)setOrderedListGapWidth:(CGFloat)newValue {
|
|
367
|
+
_orderedListGapWidth = newValue;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
- (CGFloat)orderedListMarginLeft {
|
|
371
|
+
return _orderedListMarginLeft;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
- (void)setOrderedListMarginLeft:(CGFloat)newValue {
|
|
375
|
+
_orderedListMarginLeft = newValue;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
- (NSString *)orderedListMarkerFontWeight {
|
|
379
|
+
return _orderedListMarkerFontWeight;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
- (void)setOrderedListMarkerFontWeight:(NSString *)newValue {
|
|
383
|
+
_orderedListMarkerFontWeight = newValue;
|
|
384
|
+
_olMarkerFontNeedsRecreation = YES;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
- (UIColor *)orderedListMarkerColor {
|
|
388
|
+
return _orderedListMarkerColor;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
- (void)setOrderedListMarkerColor:(UIColor *)newValue {
|
|
392
|
+
_orderedListMarkerColor = newValue;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
- (UIFont *)orderedListMarkerFont {
|
|
396
|
+
if (_olMarkerFontNeedsRecreation) {
|
|
397
|
+
_olMarkerFontNeedsRecreation = NO;
|
|
398
|
+
|
|
399
|
+
NSString *newFontWeight = [self orderedListMarkerFontWeight];
|
|
400
|
+
// fix RCTFontWeight conversion warnings:
|
|
401
|
+
// sometimes changing font family comes with weight '0' if not specified
|
|
402
|
+
// RCTConvert doesn't recognize this value so we just nullify it and it gets
|
|
403
|
+
// a default value
|
|
404
|
+
if ([newFontWeight isEqualToString:@"0"]) {
|
|
405
|
+
newFontWeight = nullptr;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
_orderedListMarkerFont = [RCTFont updateFont:nullptr
|
|
409
|
+
withFamily:[self primaryFontFamily]
|
|
410
|
+
size:[self scaledPrimaryFontSize]
|
|
411
|
+
weight:newFontWeight
|
|
412
|
+
style:nullptr
|
|
413
|
+
variant:nullptr
|
|
414
|
+
scaleMultiplier:1];
|
|
415
|
+
}
|
|
416
|
+
return _orderedListMarkerFont;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
- (UIColor *)unorderedListBulletColor {
|
|
420
|
+
return _unorderedListBulletColor;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
- (void)setUnorderedListBulletColor:(UIColor *)newValue {
|
|
424
|
+
_unorderedListBulletColor = newValue;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
- (CGFloat)unorderedListBulletSize {
|
|
428
|
+
return _unorderedListBulletSize;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
- (void)setUnorderedListBulletSize:(CGFloat)newValue {
|
|
432
|
+
_unorderedListBulletSize = newValue;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
- (CGFloat)unorderedListGapWidth {
|
|
436
|
+
return _unorderedListGapWidth;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
- (void)setUnorderedListGapWidth:(CGFloat)newValue {
|
|
440
|
+
_unorderedListGapWidth = newValue;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
- (CGFloat)unorderedListMarginLeft {
|
|
444
|
+
return _unorderedListMarginLeft;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
- (void)setUnorderedListMarginLeft:(CGFloat)newValue {
|
|
448
|
+
_unorderedListMarginLeft = newValue;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
- (UIColor *)linkColor {
|
|
452
|
+
return _linkColor;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
- (void)setLinkColor:(UIColor *)newValue {
|
|
456
|
+
_linkColor = newValue;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
- (TextDecorationLineEnum)linkDecorationLine {
|
|
460
|
+
return _linkDecorationLine;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
- (void)setLinkDecorationLine:(TextDecorationLineEnum)newValue {
|
|
464
|
+
_linkDecorationLine = newValue;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
- (void)setMentionStyleProps:(NSDictionary *)newValue {
|
|
468
|
+
_mentionProperties = [newValue mutableCopy];
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
- (MentionStyleProps *)mentionStylePropsForIndicator:(NSString *)indicator {
|
|
472
|
+
if (_mentionProperties.count == 1 && _mentionProperties[@"all"] != nullptr) {
|
|
473
|
+
// single props for all the indicators
|
|
474
|
+
return _mentionProperties[@"all"];
|
|
475
|
+
} else if (_mentionProperties[indicator] != nullptr) {
|
|
476
|
+
return _mentionProperties[indicator];
|
|
477
|
+
}
|
|
478
|
+
MentionStyleProps *fallbackProps = [[MentionStyleProps alloc] init];
|
|
479
|
+
fallbackProps.color = [UIColor blueColor];
|
|
480
|
+
fallbackProps.backgroundColor = [UIColor yellowColor];
|
|
481
|
+
fallbackProps.decorationLine = DecorationUnderline;
|
|
482
|
+
return fallbackProps;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
- (UIColor *)codeBlockFgColor {
|
|
486
|
+
return _codeBlockFgColor;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
- (void)setCodeBlockFgColor:(UIColor *)newValue {
|
|
490
|
+
_codeBlockFgColor = newValue;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
- (UIColor *)codeBlockBgColor {
|
|
494
|
+
return _codeBlockBgColor;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
- (void)setCodeBlockBgColor:(UIColor *)newValue {
|
|
498
|
+
_codeBlockBgColor = newValue;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
- (CGFloat)codeBlockBorderRadius {
|
|
502
|
+
return _codeBlockBorderRadius;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
- (void)setCodeBlockBorderRadius:(CGFloat)newValue {
|
|
506
|
+
_codeBlockBorderRadius = newValue;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
- (LinkRegexConfig *)linkRegexConfig {
|
|
510
|
+
return _linkRegexConfig;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
- (void)setLinkRegexConfig:(LinkRegexConfig *)newValue {
|
|
514
|
+
_linkRegexConfig = newValue;
|
|
515
|
+
|
|
516
|
+
// try initializing the native regular expression if it applies
|
|
517
|
+
if (_linkRegexConfig.isDefault || _linkRegexConfig.isDisabled) {
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
NSError *regexInitError;
|
|
522
|
+
NSRegularExpressionOptions options =
|
|
523
|
+
(_linkRegexConfig.caseInsensitive ? NSRegularExpressionCaseInsensitive
|
|
524
|
+
: 0) |
|
|
525
|
+
(_linkRegexConfig.dotAll ? NSRegularExpressionDotMatchesLineSeparators
|
|
526
|
+
: 0);
|
|
527
|
+
NSRegularExpression *userRegex =
|
|
528
|
+
[NSRegularExpression regularExpressionWithPattern:_linkRegexConfig.pattern
|
|
529
|
+
options:options
|
|
530
|
+
error:®exInitError];
|
|
531
|
+
|
|
532
|
+
if (regexInitError) {
|
|
533
|
+
RCTLogWarn(@"[EnrichedTextInput]: Couldn't parse the user-defined link "
|
|
534
|
+
@"regex, falling back to a default regex.");
|
|
535
|
+
_parsedLinkRegex = nullptr;
|
|
536
|
+
} else {
|
|
537
|
+
_parsedLinkRegex = userRegex;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
- (NSRegularExpression *)parsedLinkRegex {
|
|
542
|
+
return _parsedLinkRegex;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
- (void)invalidateFonts {
|
|
546
|
+
_primaryFontNeedsRecreation = YES;
|
|
547
|
+
_monospacedFontNeedsRecreation = YES;
|
|
548
|
+
_olMarkerFontNeedsRecreation = YES;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
- (NSNumber *)scaledPrimaryFontSize {
|
|
552
|
+
CGFloat scaledSize = [[UIFontMetrics defaultMetrics]
|
|
553
|
+
scaledValueForValue:[[self primaryFontSize] floatValue]];
|
|
554
|
+
return @(scaledSize);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
- (CGFloat)checkboxListBoxSize {
|
|
558
|
+
return _checkboxListBoxSize;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
- (void)setCheckboxListBoxSize:(CGFloat)newValue {
|
|
562
|
+
if (_checkboxListBoxSize != newValue) {
|
|
563
|
+
_checkboxListBoxSize = newValue;
|
|
564
|
+
// Invalidate checkbox images because box size changed
|
|
565
|
+
_checkboxCheckedImage = nil;
|
|
566
|
+
_checkboxUncheckedImage = nil;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
- (CGFloat)checkboxListGapWidth {
|
|
571
|
+
return _checkboxListGapWidth;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
- (void)setCheckboxListGapWidth:(CGFloat)newValue {
|
|
575
|
+
_checkboxListGapWidth = newValue;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
- (CGFloat)checkboxListMarginLeft {
|
|
579
|
+
return _checkboxListMarginLeft;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
- (void)setCheckboxListMarginLeft:(CGFloat)newValue {
|
|
583
|
+
_checkboxListMarginLeft = newValue;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
- (UIColor *)checkboxListBoxColor {
|
|
587
|
+
return _checkboxListBoxColor;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
- (void)setCheckboxListBoxColor:(UIColor *)newValue {
|
|
591
|
+
if (_checkboxListBoxColor != newValue) {
|
|
592
|
+
_checkboxListBoxColor = newValue;
|
|
593
|
+
// Invalidate checkbox images because color changed
|
|
594
|
+
_checkboxCheckedImage = nil;
|
|
595
|
+
_checkboxUncheckedImage = nil;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
- (UIImage *)checkboxCheckedImage {
|
|
600
|
+
if (!_checkboxCheckedImage) {
|
|
601
|
+
_checkboxCheckedImage = [self generateCheckboxImage:YES];
|
|
602
|
+
}
|
|
603
|
+
return _checkboxCheckedImage;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
- (UIImage *)checkboxUncheckedImage {
|
|
607
|
+
if (!_checkboxUncheckedImage) {
|
|
608
|
+
_checkboxUncheckedImage = [self generateCheckboxImage:NO];
|
|
609
|
+
}
|
|
610
|
+
return _checkboxUncheckedImage;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
- (UIImage *)generateCheckboxImage:(BOOL)isChecked {
|
|
614
|
+
CGFloat boxSize = self.checkboxListBoxSize;
|
|
615
|
+
UIColor *boxColor = self.checkboxListBoxColor ?: [UIColor blackColor];
|
|
616
|
+
|
|
617
|
+
UIGraphicsBeginImageContextWithOptions(CGSizeMake(boxSize, boxSize), NO, 0.0);
|
|
618
|
+
CGRect localRect = CGRectMake(0, 0, boxSize, boxSize);
|
|
619
|
+
CGFloat cornerRadius = boxSize * 0.15f;
|
|
620
|
+
CGFloat strokeWidth = boxSize * 0.1f;
|
|
621
|
+
CGRect insetRect =
|
|
622
|
+
CGRectInset(localRect, strokeWidth / 2.0, strokeWidth / 2.0);
|
|
623
|
+
|
|
624
|
+
// Draw Box
|
|
625
|
+
UIBezierPath *boxPath = [UIBezierPath bezierPathWithRoundedRect:insetRect
|
|
626
|
+
cornerRadius:cornerRadius];
|
|
627
|
+
[boxPath setLineWidth:strokeWidth];
|
|
628
|
+
|
|
629
|
+
if (isChecked) {
|
|
630
|
+
[[boxColor colorWithAlphaComponent:1.0] setFill];
|
|
631
|
+
[boxPath fill];
|
|
632
|
+
[[boxColor colorWithAlphaComponent:1.0] setStroke];
|
|
633
|
+
[boxPath stroke];
|
|
634
|
+
|
|
635
|
+
// Draw Checkmark
|
|
636
|
+
UIBezierPath *checkPath = [UIBezierPath bezierPath];
|
|
637
|
+
CGFloat startX = insetRect.origin.x + insetRect.size.width * 0.25;
|
|
638
|
+
CGFloat startY = insetRect.origin.y + insetRect.size.height * 0.5;
|
|
639
|
+
CGFloat midX = insetRect.origin.x + insetRect.size.width * 0.45;
|
|
640
|
+
CGFloat midY = insetRect.origin.y + insetRect.size.height * 0.65;
|
|
641
|
+
CGFloat endX = insetRect.origin.x + insetRect.size.width * 0.75;
|
|
642
|
+
CGFloat endY = insetRect.origin.y + insetRect.size.height * 0.35;
|
|
643
|
+
|
|
644
|
+
[checkPath moveToPoint:CGPointMake(startX, startY)];
|
|
645
|
+
[checkPath addLineToPoint:CGPointMake(midX, midY)];
|
|
646
|
+
[checkPath addLineToPoint:CGPointMake(endX, endY)];
|
|
647
|
+
|
|
648
|
+
[checkPath setLineWidth:strokeWidth * 1.5];
|
|
649
|
+
[[UIColor whiteColor] setStroke];
|
|
650
|
+
[checkPath setLineCapStyle:kCGLineCapRound];
|
|
651
|
+
[checkPath setLineJoinStyle:kCGLineJoinRound];
|
|
652
|
+
[checkPath stroke];
|
|
653
|
+
} else {
|
|
654
|
+
[[boxColor colorWithAlphaComponent:1.0] setStroke];
|
|
655
|
+
[boxPath stroke];
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
|
|
659
|
+
UIGraphicsEndImageContext();
|
|
660
|
+
|
|
661
|
+
return result;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
@end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#import "ColorExtension.h"
|
|
2
|
+
|
|
3
|
+
@implementation UIColor (ColorExtension)
|
|
4
|
+
- (BOOL)isEqualToColor:(UIColor *)otherColor {
|
|
5
|
+
CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();
|
|
6
|
+
|
|
7
|
+
UIColor * (^convertColorToRGBSpace)(UIColor *) = ^(UIColor *color) {
|
|
8
|
+
if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) ==
|
|
9
|
+
kCGColorSpaceModelMonochrome) {
|
|
10
|
+
const CGFloat *oldComponents = CGColorGetComponents(color.CGColor);
|
|
11
|
+
CGFloat components[4] = {oldComponents[0], oldComponents[0],
|
|
12
|
+
oldComponents[0], oldComponents[1]};
|
|
13
|
+
CGColorRef colorRef = CGColorCreate(colorSpaceRGB, components);
|
|
14
|
+
|
|
15
|
+
UIColor *color = [UIColor colorWithCGColor:colorRef];
|
|
16
|
+
CGColorRelease(colorRef);
|
|
17
|
+
return color;
|
|
18
|
+
} else {
|
|
19
|
+
return color;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
UIColor *selfColor = convertColorToRGBSpace(self);
|
|
24
|
+
otherColor = convertColorToRGBSpace(otherColor);
|
|
25
|
+
CGColorSpaceRelease(colorSpaceRGB);
|
|
26
|
+
|
|
27
|
+
return [selfColor isEqual:otherColor];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
- (UIColor *)colorWithAlphaIfNotTransparent:(CGFloat)newAlpha {
|
|
31
|
+
CGFloat alpha = 0.0;
|
|
32
|
+
[self getRed:nil green:nil blue:nil alpha:&alpha];
|
|
33
|
+
if (alpha > 0.0) {
|
|
34
|
+
return [self colorWithAlphaComponent:newAlpha];
|
|
35
|
+
}
|
|
36
|
+
return self;
|
|
37
|
+
}
|
|
38
|
+
@end
|