react-native-jet-markdown 0.2.1 → 0.2.3-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/JetMarkdown.podspec +1 -1
- package/README.md +31 -82
- package/android/src/main/cpp/JniBindings.cpp +0 -106
- package/android/src/main/java/com/jetmarkdown/JetMarkdownNative.kt +0 -79
- package/android/src/main/java/com/jetmarkdown/JetMarkdownPackage.kt +1 -2
- package/android/src/main/java/com/jetmarkdown/JetMarkdownView.kt +11 -11
- package/android/src/main/java/com/jetmarkdown/render/spans/MarkdownLineHeightSpan.kt +2 -13
- package/android/src/main/java/com/jetmarkdown/views/BlockStackView.kt +49 -22
- package/android/src/main/java/com/jetmarkdown/views/BlockTextView.kt +2 -0
- package/android/src/main/java/com/jetmarkdown/views/TableBlockView.kt +11 -3
- package/cpp/react/override/react/renderer/components/JetMarkdownViewSpec/ComponentDescriptors.h +0 -4
- package/ios/JetMarkdownView.mm +9 -16
- package/ios/measure/JMDMarkdownMeasurer.mm +1 -1
- package/ios/render/JMDBlock.h +7 -0
- package/ios/render/JMDBlock.m +2 -0
- package/ios/render/JMDBlockRenderer.mm +27 -1
- package/ios/render/JMDRenderedContent.mm +36 -11
- package/ios/views/JMDBlockStackView.m +36 -14
- package/ios/views/JMDBlockTextView.h +6 -1
- package/ios/views/JMDBlockTextView.m +90 -127
- package/ios/views/JMDBoxViews.m +14 -11
- package/ios/views/JMDTableView.m +15 -8
- package/lib/module/index.js +0 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +0 -127
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +3 -5
- package/src/index.tsx +0 -9
- package/src/types.ts +0 -134
- package/android/src/main/java/com/jetmarkdown/editor/EditorSpans.kt +0 -217
- package/android/src/main/java/com/jetmarkdown/editor/JetMarkdownEditorManager.kt +0 -224
- package/android/src/main/java/com/jetmarkdown/editor/JetMarkdownEditorView.kt +0 -1736
- package/cpp/core/AstToMarkdown.cpp +0 -549
- package/cpp/core/AstToMarkdown.h +0 -16
- package/cpp/core/EditorRuns.cpp +0 -640
- package/cpp/core/EditorRuns.h +0 -94
- package/cpp/core/EditorText.cpp +0 -15
- package/cpp/core/EditorText.h +0 -18
- package/cpp/react/JetMarkdownEditorShadowNode.cpp +0 -54
- package/cpp/react/JetMarkdownEditorShadowNode.h +0 -55
- package/cpp/react/JetMarkdownEditorState.h +0 -35
- package/cpp/tests/parser_tests.cpp +0 -662
- package/cpp/tests/run_tests.sh +0 -25
- package/ios/editor/JetMarkdownEditor.h +0 -12
- package/ios/editor/JetMarkdownEditor.mm +0 -2002
- package/lib/module/JetMarkdownEditor.js +0 -85
- package/lib/module/JetMarkdownEditor.js.map +0 -1
- package/lib/module/JetMarkdownEditor.native.js +0 -244
- package/lib/module/JetMarkdownEditor.native.js.map +0 -1
- package/lib/module/JetMarkdownEditorNativeComponent.ts +0 -173
- package/lib/module/useJetMarkdownEditor.js +0 -41
- package/lib/module/useJetMarkdownEditor.js.map +0 -1
- package/lib/typescript/src/JetMarkdownEditor.d.ts +0 -6
- package/lib/typescript/src/JetMarkdownEditor.d.ts.map +0 -1
- package/lib/typescript/src/JetMarkdownEditor.native.d.ts +0 -6
- package/lib/typescript/src/JetMarkdownEditor.native.d.ts.map +0 -1
- package/lib/typescript/src/JetMarkdownEditorNativeComponent.d.ts +0 -105
- package/lib/typescript/src/JetMarkdownEditorNativeComponent.d.ts.map +0 -1
- package/lib/typescript/src/useJetMarkdownEditor.d.ts +0 -36
- package/lib/typescript/src/useJetMarkdownEditor.d.ts.map +0 -1
- package/src/JetMarkdownEditor.native.tsx +0 -301
- package/src/JetMarkdownEditor.tsx +0 -90
- package/src/JetMarkdownEditorNativeComponent.ts +0 -173
- package/src/useJetMarkdownEditor.ts +0 -50
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
#import <CoreText/CoreText.h>
|
|
4
4
|
|
|
5
5
|
@implementation JMDBlockTextView {
|
|
6
|
+
// Owned by the measured block and shared with every view bound to the
|
|
7
|
+
// same cached content (and the layout thread that built it), so it is
|
|
8
|
+
// never mutated here: spoiler hiding is a draw-time clip.
|
|
9
|
+
NSTextStorage *_textStorage;
|
|
6
10
|
NSLayoutManager *_layoutManager;
|
|
7
11
|
NSTextContainer *_textContainer;
|
|
8
|
-
NSTextStorage *_textStorage;
|
|
9
|
-
NSMutableSet<NSNumber *> *_hiddenSpoilers;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
@@ -23,108 +25,82 @@
|
|
|
23
25
|
return nil;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
- (void)
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
_layoutManager =
|
|
30
|
-
|
|
31
|
-
// original colors) alongside the layout manager.
|
|
32
|
-
[_hiddenSpoilers removeAllObjects];
|
|
28
|
+
- (void)bindTextStorage:(NSTextStorage *)storage {
|
|
29
|
+
if (_textStorage != storage) {
|
|
30
|
+
_textStorage = storage;
|
|
31
|
+
_layoutManager = storage.layoutManagers.firstObject;
|
|
32
|
+
_textContainer = _layoutManager.textContainers.firstObject;
|
|
33
33
|
self.isAccessibilityElement = YES;
|
|
34
|
-
self.accessibilityLabel =
|
|
34
|
+
self.accessibilityLabel = storage.string;
|
|
35
35
|
self.accessibilityTraits = UIAccessibilityTraitStaticText;
|
|
36
|
-
[self setNeedsDisplay];
|
|
37
36
|
}
|
|
37
|
+
// Spoiler styling and host may change without the storage changing.
|
|
38
|
+
[self setNeedsDisplay];
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// never disagree about line positions.
|
|
43
|
-
- (NSLayoutManager *)layoutManagerForBounds {
|
|
44
|
-
if (_layoutManager == nil && _attributedText != nil) {
|
|
45
|
-
_textStorage = [[NSTextStorage alloc] initWithAttributedString:_attributedText];
|
|
46
|
-
_layoutManager = [NSLayoutManager new];
|
|
47
|
-
_textContainer =
|
|
48
|
-
[[NSTextContainer alloc] initWithSize:CGSizeMake(self.bounds.size.width, CGFLOAT_MAX)];
|
|
49
|
-
_textContainer.lineFragmentPadding = 0;
|
|
50
|
-
[_layoutManager addTextContainer:_textContainer];
|
|
51
|
-
[_textStorage addLayoutManager:_layoutManager];
|
|
52
|
-
} else if (_textContainer != nil &&
|
|
53
|
-
_textContainer.size.width != self.bounds.size.width) {
|
|
54
|
-
_textContainer.size = CGSizeMake(self.bounds.size.width, CGFLOAT_MAX);
|
|
55
|
-
}
|
|
56
|
-
return _layoutManager;
|
|
41
|
+
- (NSAttributedString *)attributedText {
|
|
42
|
+
return _textStorage;
|
|
57
43
|
}
|
|
58
44
|
|
|
59
45
|
- (void)drawRect:(CGRect)rect {
|
|
60
|
-
|
|
61
|
-
if (layoutManager == nil) {
|
|
46
|
+
if (_layoutManager == nil || _textStorage.length == 0) {
|
|
62
47
|
return;
|
|
63
48
|
}
|
|
64
|
-
// One engine for everything: the
|
|
65
|
-
// overlays
|
|
66
|
-
// disagrees with NSLayoutManager about font
|
|
67
|
-
// cap (fonts with a nonzero line gap drift
|
|
68
|
-
// misaligned overlays on wrapped lines.
|
|
69
|
-
[
|
|
70
|
-
[self drawRunBackgrounds
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
[
|
|
74
|
-
[
|
|
75
|
-
[
|
|
49
|
+
// One engine for everything: the layout manager that measured the block
|
|
50
|
+
// also positions the overlays and draws the glyphs. NSStringDrawing
|
|
51
|
+
// typesets separately and disagrees with NSLayoutManager about font
|
|
52
|
+
// leading under a lineHeight cap (fonts with a nonzero line gap drift
|
|
53
|
+
// ~gap pt per line), which misaligned overlays on wrapped lines.
|
|
54
|
+
const NSRange glyphRange = [_layoutManager glyphRangeForTextContainer:_textContainer];
|
|
55
|
+
[self drawRunBackgrounds];
|
|
56
|
+
CGContextRef context = UIGraphicsGetCurrentContext();
|
|
57
|
+
CGContextSaveGState(context);
|
|
58
|
+
[self clipHiddenSpoilers:context];
|
|
59
|
+
[_layoutManager drawBackgroundForGlyphRange:glyphRange atPoint:CGPointZero];
|
|
60
|
+
[_layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:CGPointZero];
|
|
61
|
+
CGContextRestoreGState(context);
|
|
62
|
+
[self drawSpoilerCovers];
|
|
76
63
|
}
|
|
77
64
|
|
|
78
|
-
// Unrevealed spoiler text
|
|
79
|
-
// text, so glyphs would leak around it
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if (self.host == nil || _attributedText.length == 0 || _textStorage == nil) {
|
|
65
|
+
// Unrevealed spoiler text is hidden by clipping its line-box slices out of
|
|
66
|
+
// the glyph draw (the cover hugs the text, so glyphs would leak around it).
|
|
67
|
+
// Purely draw-time, per-view state; the shared storage stays untouched.
|
|
68
|
+
- (void)clipHiddenSpoilers:(CGContextRef)context {
|
|
69
|
+
if (self.host == nil) {
|
|
84
70
|
return;
|
|
85
71
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
[_textStorage beginEditing];
|
|
90
|
-
[_attributedText
|
|
72
|
+
CGMutablePathRef hidden = CGPathCreateMutable();
|
|
73
|
+
__block BOOL any = NO;
|
|
74
|
+
[_textStorage
|
|
91
75
|
enumerateAttribute:JMDSpoilerIDAttributeName
|
|
92
|
-
inRange:NSMakeRange(0,
|
|
76
|
+
inRange:NSMakeRange(0, _textStorage.length)
|
|
93
77
|
options:0
|
|
94
78
|
usingBlock:^(NSNumber *spoilerId, NSRange range, BOOL *stop) {
|
|
95
|
-
if (spoilerId == nil
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
const BOOL shouldHide =
|
|
99
|
-
![self.host isSpoilerRevealed:spoilerId.integerValue];
|
|
100
|
-
const BOOL isHidden =
|
|
101
|
-
[self->_hiddenSpoilers containsObject:spoilerId];
|
|
102
|
-
if (shouldHide == isHidden) {
|
|
79
|
+
if (spoilerId == nil ||
|
|
80
|
+
[self.host isSpoilerRevealed:spoilerId.integerValue]) {
|
|
103
81
|
return;
|
|
104
82
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
BOOL *stopInner) {
|
|
120
|
-
[self->_textStorage
|
|
121
|
-
setAttributes:attrs
|
|
122
|
-
range:subRange];
|
|
123
|
-
}];
|
|
124
|
-
[self->_hiddenSpoilers removeObject:spoilerId];
|
|
125
|
-
}
|
|
83
|
+
const NSRange glyphs =
|
|
84
|
+
[self->_layoutManager glyphRangeForCharacterRange:range
|
|
85
|
+
actualCharacterRange:nil];
|
|
86
|
+
[self->_layoutManager
|
|
87
|
+
enumerateEnclosingRectsForGlyphRange:glyphs
|
|
88
|
+
withinSelectedGlyphRange:NSMakeRange(NSNotFound, 0)
|
|
89
|
+
inTextContainer:self->_textContainer
|
|
90
|
+
usingBlock:^(CGRect rect, BOOL *stopInner) {
|
|
91
|
+
// Padded past side bearings
|
|
92
|
+
// and italic overhang.
|
|
93
|
+
CGPathAddRect(hidden, NULL,
|
|
94
|
+
CGRectInset(rect, -2, 0));
|
|
95
|
+
any = YES;
|
|
96
|
+
}];
|
|
126
97
|
}];
|
|
127
|
-
|
|
98
|
+
if (any) {
|
|
99
|
+
CGContextAddRect(context, self.bounds);
|
|
100
|
+
CGContextAddPath(context, hidden);
|
|
101
|
+
CGContextEOClip(context);
|
|
102
|
+
}
|
|
103
|
+
CGPathRelease(hidden);
|
|
128
104
|
}
|
|
129
105
|
|
|
130
106
|
// A chip inside an unrevealed spoiler would peek around the cover.
|
|
@@ -133,7 +109,7 @@
|
|
|
133
109
|
return NO;
|
|
134
110
|
}
|
|
135
111
|
__block BOOL hidden = NO;
|
|
136
|
-
[
|
|
112
|
+
[_textStorage
|
|
137
113
|
enumerateAttribute:JMDSpoilerIDAttributeName
|
|
138
114
|
inRange:range
|
|
139
115
|
options:0
|
|
@@ -200,49 +176,45 @@ static const CGFloat JMDInkPad = 2;
|
|
|
200
176
|
// Per-line overlay rects for a character range. Whitespace-only segments
|
|
201
177
|
// have no ink and produce no rect.
|
|
202
178
|
- (NSArray<NSValue *> *)inkRectsForRange:(NSRange)range
|
|
203
|
-
layoutManager:(NSLayoutManager *)layoutManager
|
|
204
179
|
padLeft:(CGFloat)padLeft
|
|
205
180
|
padRight:(CGFloat)padRight {
|
|
206
181
|
CGContextRef context = UIGraphicsGetCurrentContext();
|
|
207
182
|
// CTLineGetImageBounds reports bounds relative to the context's current
|
|
208
|
-
// text position
|
|
209
|
-
// line ended.
|
|
183
|
+
// text position.
|
|
210
184
|
CGContextSetTextPosition(context, 0, 0);
|
|
211
185
|
const CGFloat maxWidth = self.bounds.size.width;
|
|
212
186
|
const CGFloat maxHeight = self.bounds.size.height;
|
|
213
187
|
const NSRange glyphRange =
|
|
214
|
-
[
|
|
188
|
+
[_layoutManager glyphRangeForCharacterRange:range actualCharacterRange:nil];
|
|
215
189
|
NSMutableArray<NSValue *> *lineRects = [NSMutableArray new];
|
|
216
190
|
NSUInteger glyphIndex = glyphRange.location;
|
|
217
191
|
while (glyphIndex < NSMaxRange(glyphRange)) {
|
|
218
192
|
NSRange lineGlyphRange;
|
|
219
193
|
const CGRect fragment =
|
|
220
|
-
[
|
|
221
|
-
|
|
194
|
+
[_layoutManager lineFragmentRectForGlyphAtIndex:glyphIndex
|
|
195
|
+
effectiveRange:&lineGlyphRange];
|
|
222
196
|
const NSRange lineRange = NSIntersectionRange(lineGlyphRange, glyphRange);
|
|
223
197
|
if (lineRange.length == 0) {
|
|
224
198
|
break;
|
|
225
199
|
}
|
|
226
200
|
const NSRange charRange =
|
|
227
|
-
[
|
|
201
|
+
[_layoutManager characterRangeForGlyphRange:lineRange actualGlyphRange:nil];
|
|
228
202
|
const CGPoint startLocation =
|
|
229
|
-
[
|
|
203
|
+
[_layoutManager locationForGlyphAtIndex:lineRange.location];
|
|
230
204
|
// The typesetter already folds NSBaselineOffset (lineHeight centering,
|
|
231
205
|
// sup/sub shifts) into the glyph location.
|
|
232
206
|
const CGFloat baselineY = fragment.origin.y + startLocation.y;
|
|
233
207
|
const CGFloat penX = fragment.origin.x + startLocation.x;
|
|
234
208
|
|
|
235
209
|
CTLineRef line = CTLineCreateWithAttributedString(
|
|
236
|
-
(__bridge CFAttributedStringRef)[
|
|
237
|
-
attributedSubstringFromRange:charRange]);
|
|
210
|
+
(__bridge CFAttributedStringRef)[_textStorage attributedSubstringFromRange:charRange]);
|
|
238
211
|
const CGRect ink = CTLineGetImageBounds(line, context);
|
|
239
212
|
CFRelease(line);
|
|
240
213
|
if (!CGRectIsNull(ink) && ink.size.width > 0) {
|
|
241
|
-
UIFont *font =
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
?: [UIFont systemFontOfSize:UIFont.systemFontSize];
|
|
214
|
+
UIFont *font = [_textStorage attribute:NSFontAttributeName
|
|
215
|
+
atIndex:charRange.location
|
|
216
|
+
effectiveRange:nil]
|
|
217
|
+
?: [UIFont systemFontOfSize:UIFont.systemFontSize];
|
|
246
218
|
const CGFloat top = MAX(baselineY - font.capHeight - JMDInkPad, 0);
|
|
247
219
|
const CGFloat bottom =
|
|
248
220
|
MIN(baselineY - font.descender + JMDInkPad, maxHeight);
|
|
@@ -261,15 +233,11 @@ static const CGFloat JMDInkPad = 2;
|
|
|
261
233
|
}
|
|
262
234
|
|
|
263
235
|
// Run background chips (inlineCode/link/mention and plain highlights),
|
|
264
|
-
// drawn UNDER the text;
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
if (_attributedText.length == 0) {
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
[_attributedText
|
|
236
|
+
// drawn UNDER the text; chips hidden with their spoiler don't draw.
|
|
237
|
+
- (void)drawRunBackgrounds {
|
|
238
|
+
[_textStorage
|
|
271
239
|
enumerateAttribute:JMDRunBackgroundAttributeName
|
|
272
|
-
inRange:NSMakeRange(0,
|
|
240
|
+
inRange:NSMakeRange(0, _textStorage.length)
|
|
273
241
|
options:0
|
|
274
242
|
usingBlock:^(JMDRunBackground *chip, NSRange range, BOOL *stop) {
|
|
275
243
|
if (chip == nil || [self isRangeInsideHiddenSpoiler:range]) {
|
|
@@ -277,7 +245,6 @@ static const CGFloat JMDInkPad = 2;
|
|
|
277
245
|
}
|
|
278
246
|
NSArray<NSValue *> *rects = [self
|
|
279
247
|
inkRectsForRange:range
|
|
280
|
-
layoutManager:layoutManager
|
|
281
248
|
padLeft:chip.padLeft > 0 ? chip.padLeft : JMDInkPad
|
|
282
249
|
padRight:chip.padRight > 0 ? chip.padRight
|
|
283
250
|
: JMDInkPad];
|
|
@@ -289,16 +256,16 @@ static const CGFloat JMDInkPad = 2;
|
|
|
289
256
|
}];
|
|
290
257
|
}
|
|
291
258
|
|
|
292
|
-
// Spoiler cover chips, drawn OVER the (
|
|
259
|
+
// Spoiler cover chips, drawn OVER the (clipped-out) text until revealed.
|
|
293
260
|
// Same ink geometry as the run backgrounds so covers and backgrounds look
|
|
294
261
|
// identical.
|
|
295
|
-
- (void)drawSpoilerCovers
|
|
296
|
-
if (
|
|
262
|
+
- (void)drawSpoilerCovers {
|
|
263
|
+
if (self.host == nil) {
|
|
297
264
|
return;
|
|
298
265
|
}
|
|
299
|
-
[
|
|
266
|
+
[_textStorage
|
|
300
267
|
enumerateAttribute:JMDSpoilerIDAttributeName
|
|
301
|
-
inRange:NSMakeRange(0,
|
|
268
|
+
inRange:NSMakeRange(0, _textStorage.length)
|
|
302
269
|
options:0
|
|
303
270
|
usingBlock:^(NSNumber *spoilerId, NSRange range, BOOL *stop) {
|
|
304
271
|
if (spoilerId == nil ||
|
|
@@ -306,10 +273,7 @@ static const CGFloat JMDInkPad = 2;
|
|
|
306
273
|
return;
|
|
307
274
|
}
|
|
308
275
|
NSArray<NSValue *> *rects =
|
|
309
|
-
[self inkRectsForRange:range
|
|
310
|
-
layoutManager:layoutManager
|
|
311
|
-
padLeft:JMDInkPad
|
|
312
|
-
padRight:JMDInkPad];
|
|
276
|
+
[self inkRectsForRange:range padLeft:JMDInkPad padRight:JMDInkPad];
|
|
313
277
|
[self.spoilerColor ?: UIColor.darkGrayColor setFill];
|
|
314
278
|
for (NSValue *value in rects) {
|
|
315
279
|
[JMDChipPath(value.CGRectValue, self.spoilerRadius,
|
|
@@ -319,22 +283,21 @@ static const CGFloat JMDInkPad = 2;
|
|
|
319
283
|
}
|
|
320
284
|
|
|
321
285
|
- (nullable NSDictionary *)attributesAtPoint:(CGPoint)point {
|
|
322
|
-
|
|
323
|
-
if (layoutManager == nil || _attributedText.length == 0) {
|
|
286
|
+
if (_layoutManager == nil || _textStorage.length == 0) {
|
|
324
287
|
return nil;
|
|
325
288
|
}
|
|
326
|
-
const NSUInteger glyphIndex = [
|
|
327
|
-
|
|
328
|
-
const CGRect glyphRect = [
|
|
329
|
-
|
|
289
|
+
const NSUInteger glyphIndex = [_layoutManager glyphIndexForPoint:point
|
|
290
|
+
inTextContainer:_textContainer];
|
|
291
|
+
const CGRect glyphRect = [_layoutManager boundingRectForGlyphRange:NSMakeRange(glyphIndex, 1)
|
|
292
|
+
inTextContainer:_textContainer];
|
|
330
293
|
if (!CGRectContainsPoint(CGRectInset(glyphRect, -8, -4), point)) {
|
|
331
294
|
return nil;
|
|
332
295
|
}
|
|
333
|
-
const NSUInteger charIndex = [
|
|
334
|
-
if (charIndex >=
|
|
296
|
+
const NSUInteger charIndex = [_layoutManager characterIndexForGlyphAtIndex:glyphIndex];
|
|
297
|
+
if (charIndex >= _textStorage.length) {
|
|
335
298
|
return nil;
|
|
336
299
|
}
|
|
337
|
-
return [
|
|
300
|
+
return [_textStorage attributesAtIndex:charIndex effectiveRange:nil];
|
|
338
301
|
}
|
|
339
302
|
|
|
340
303
|
@end
|
package/ios/views/JMDBoxViews.m
CHANGED
|
@@ -203,7 +203,7 @@ static void JMDApplyBox(UIView *view, JMDLayoutStyle *style) {
|
|
|
203
203
|
[self addSubview:_scroller];
|
|
204
204
|
}
|
|
205
205
|
JMDApplyBox(self, measured.block.layoutStyle);
|
|
206
|
-
_text
|
|
206
|
+
[_text bindTextStorage:measured.textStorage];
|
|
207
207
|
[self setNeedsLayout];
|
|
208
208
|
}
|
|
209
209
|
|
|
@@ -238,19 +238,22 @@ static void JMDApplyBox(UIView *view, JMDLayoutStyle *style) {
|
|
|
238
238
|
host:(nullable id<JMDMarkdownHost>)host {
|
|
239
239
|
_measured = measured;
|
|
240
240
|
_gap = gap;
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
// Subviews are (marker, content) pairs; grow/shrink the pair list, then
|
|
242
|
+
// rebind every pair in place.
|
|
243
|
+
const NSUInteger needed = measured.block.rows.count * 2;
|
|
244
|
+
while (self.subviews.count > needed) {
|
|
245
|
+
[self.subviews.lastObject removeFromSuperview];
|
|
243
246
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
247
|
+
while (self.subviews.count < needed) {
|
|
248
|
+
[self addSubview:[[JMDBlockTextView alloc] initWithFrame:CGRectZero]];
|
|
249
|
+
[self addSubview:[[JMDBlockStackView alloc] initWithFrame:CGRectZero]];
|
|
250
|
+
}
|
|
251
|
+
for (NSUInteger i = 0; i < measured.block.rows.count; i++) {
|
|
252
|
+
JMDBlockTextView *marker = (JMDBlockTextView *)self.subviews[i * 2];
|
|
253
|
+
[marker bindTextStorage:measured.markerStorages[i]];
|
|
254
|
+
JMDBlockStackView *content = (JMDBlockStackView *)self.subviews[i * 2 + 1];
|
|
251
255
|
content.host = host;
|
|
252
256
|
[content setBlocks:measured.rowContents[i] gap:gap];
|
|
253
|
-
[self addSubview:content];
|
|
254
257
|
}
|
|
255
258
|
[self setNeedsLayout];
|
|
256
259
|
}
|
package/ios/views/JMDTableView.m
CHANGED
|
@@ -22,16 +22,23 @@
|
|
|
22
22
|
|
|
23
23
|
- (void)bind:(JMDMeasuredBlock *)measured host:(nullable id<JMDMarkdownHost>)host {
|
|
24
24
|
_measured = measured;
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
// One text view per cell, row-major; grow/shrink then rebind in place.
|
|
26
|
+
NSUInteger needed = 0;
|
|
27
|
+
for (NSArray<NSTextStorage *> *row in measured.cellStorages) {
|
|
28
|
+
needed += row.count;
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
while (self.subviews.count > needed) {
|
|
31
|
+
[self.subviews.lastObject removeFromSuperview];
|
|
32
|
+
}
|
|
33
|
+
while (self.subviews.count < needed) {
|
|
34
|
+
[self addSubview:[[JMDBlockTextView alloc] initWithFrame:CGRectZero]];
|
|
35
|
+
}
|
|
36
|
+
NSUInteger index = 0;
|
|
37
|
+
for (NSArray<NSTextStorage *> *row in measured.cellStorages) {
|
|
38
|
+
for (NSTextStorage *cell in row) {
|
|
39
|
+
JMDBlockTextView *view = (JMDBlockTextView *)self.subviews[index++];
|
|
32
40
|
view.host = host;
|
|
33
|
-
view
|
|
34
|
-
[self addSubview:view];
|
|
41
|
+
[view bindTextStorage:cell];
|
|
35
42
|
}
|
|
36
43
|
}
|
|
37
44
|
[self setNeedsDisplay];
|
package/lib/module/index.js
CHANGED
|
@@ -3,7 +3,5 @@
|
|
|
3
3
|
/** biome-ignore-all lint/performance/noBarrelFile: go away */
|
|
4
4
|
|
|
5
5
|
export { defaultStyles, mergeStyles } from "./defaultStyles.js";
|
|
6
|
-
export { JetMarkdownEditor } from "./JetMarkdownEditor";
|
|
7
6
|
export { JetMarkdownView } from "./JetMarkdownView";
|
|
8
|
-
export { useJetMarkdownEditor } from "./useJetMarkdownEditor.js";
|
|
9
7
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defaultStyles","mergeStyles","
|
|
1
|
+
{"version":3,"names":["defaultStyles","mergeStyles","JetMarkdownView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;;AAEA,SAASA,aAAa,EAAEC,WAAW,QAAQ,oBAAiB;AAC5D,SAASC,eAAe,QAAQ,mBAAmB","ignoreList":[]}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/** biome-ignore-all lint/performance/noBarrelFile: go away */
|
|
2
2
|
export { defaultStyles, mergeStyles } from "./defaultStyles.js";
|
|
3
|
-
export { JetMarkdownEditor } from "./JetMarkdownEditor";
|
|
4
3
|
export { JetMarkdownView } from "./JetMarkdownView";
|
|
5
|
-
export type { FontVariant, FontWeight,
|
|
6
|
-
export { useJetMarkdownEditor } from "./useJetMarkdownEditor.js";
|
|
4
|
+
export type { FontVariant, FontWeight, JetMarkdownViewProps, MarkdownContainerStyle, MarkdownDividerStyle, MarkdownHeadingLevel, MarkdownImageData, MarkdownImageEvent, MarkdownImageStyle, MarkdownInlineCodeStyle, MarkdownLayoutStyle, MarkdownListMarkerStyle, MarkdownListStyle, MarkdownMentionStyle, MarkdownSpoilerStyle, MarkdownStyles, MarkdownTableStyle, MarkdownTextStyle, MarkdownUrlEvent, } from "./types.js";
|
|
7
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAiB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAiB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,YAAS,CAAC"}
|
|
@@ -195,10 +195,6 @@ export interface MarkdownContainerStyle extends MarkdownTextStyle {
|
|
|
195
195
|
backgroundColor?: ColorValue;
|
|
196
196
|
/** Vertical spacing between blocks; overrides `styles.gap`. */
|
|
197
197
|
gap?: number;
|
|
198
|
-
/**
|
|
199
|
-
* Editor: caps autogrow — past this height the editor scrolls
|
|
200
|
-
* internally like a textarea. Viewer: plain layout clamp.
|
|
201
|
-
*/
|
|
202
198
|
maxHeight?: number;
|
|
203
199
|
padding?: number;
|
|
204
200
|
paddingBottom?: number;
|
|
@@ -208,129 +204,6 @@ export interface MarkdownContainerStyle extends MarkdownTextStyle {
|
|
|
208
204
|
paddingTop?: number;
|
|
209
205
|
paddingVertical?: number;
|
|
210
206
|
}
|
|
211
|
-
/** Formatting active at the cursor / selection. */
|
|
212
|
-
export interface MarkdownEditorState {
|
|
213
|
-
/** 0 = no heading. */
|
|
214
|
-
headingLevel: number;
|
|
215
|
-
isBlockQuote: boolean;
|
|
216
|
-
isBold: boolean;
|
|
217
|
-
isCodeBlock: boolean;
|
|
218
|
-
isInlineCode: boolean;
|
|
219
|
-
isItalic: boolean;
|
|
220
|
-
isOrderedList: boolean;
|
|
221
|
-
isSpoiler: boolean;
|
|
222
|
-
isStrikethrough: boolean;
|
|
223
|
-
isSubscript: boolean;
|
|
224
|
-
isSuperscript: boolean;
|
|
225
|
-
isUnorderedList: boolean;
|
|
226
|
-
}
|
|
227
|
-
export interface MarkdownSelection {
|
|
228
|
-
end: number;
|
|
229
|
-
start: number;
|
|
230
|
-
}
|
|
231
|
-
export interface MarkdownMentionEvent {
|
|
232
|
-
trigger: string;
|
|
233
|
-
}
|
|
234
|
-
export interface MarkdownMentionQueryEvent {
|
|
235
|
-
query: string;
|
|
236
|
-
trigger: string;
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Paste payload. `text` is present when the clipboard has text (parsed as
|
|
240
|
-
* markdown and inserted by default); `images` when it has images (reported
|
|
241
|
-
* only, never auto-inserted). `preventDefault()` suppresses the default
|
|
242
|
-
* text insertion.
|
|
243
|
-
*/
|
|
244
|
-
export interface MarkdownPasteEvent {
|
|
245
|
-
images?: MarkdownImageData[];
|
|
246
|
-
preventDefault(): void;
|
|
247
|
-
text?: string;
|
|
248
|
-
}
|
|
249
|
-
export interface JetMarkdownEditorRef {
|
|
250
|
-
blur(): void;
|
|
251
|
-
focus(): void;
|
|
252
|
-
/** Resolves the markdown as of the latest edit. */
|
|
253
|
-
getMarkdown(): Promise<string>;
|
|
254
|
-
/**
|
|
255
|
-
* Links the selection to `url`; with a collapsed cursor, inserts `label`
|
|
256
|
-
* (or the URL itself) as linked text.
|
|
257
|
-
*/
|
|
258
|
-
insertLink(url: string, label?: string): void;
|
|
259
|
-
/** Parses `markdown` and inserts it at the cursor (or over the selection). */
|
|
260
|
-
insertMarkdown(markdown: string): void;
|
|
261
|
-
/**
|
|
262
|
-
* Inserts an atomic mention token (`trigger + label`, e.g. `@ali`)
|
|
263
|
-
* linked to `url` (an app scheme like `users://ali`), replacing any
|
|
264
|
-
* active mention query.
|
|
265
|
-
*/
|
|
266
|
-
insertMention(trigger: string, label: string, url: string): void;
|
|
267
|
-
/** Removes the link covering the selection or cursor. */
|
|
268
|
-
removeLink(): void;
|
|
269
|
-
setSelection(start: number, end: number): void;
|
|
270
|
-
/** Replaces the content; the value is parsed as markdown. */
|
|
271
|
-
setValue(markdown: string): void;
|
|
272
|
-
/** Block toggles apply to every line the selection touches. */
|
|
273
|
-
toggleBlockQuote(): void;
|
|
274
|
-
/**
|
|
275
|
-
* Each inline toggle applies to the selection, or arms/disarms the mark
|
|
276
|
-
* for text typed at the collapsed cursor.
|
|
277
|
-
*/
|
|
278
|
-
toggleBold(): void;
|
|
279
|
-
toggleCode(): void;
|
|
280
|
-
toggleCodeBlock(): void;
|
|
281
|
-
/** Toggles the heading level (1-6) on the selected lines. */
|
|
282
|
-
toggleHeading(level: number): void;
|
|
283
|
-
toggleItalic(): void;
|
|
284
|
-
toggleOrderedList(): void;
|
|
285
|
-
toggleSpoiler(): void;
|
|
286
|
-
toggleStrikethrough(): void;
|
|
287
|
-
toggleSubscript(): void;
|
|
288
|
-
toggleSuperscript(): void;
|
|
289
|
-
toggleUnorderedList(): void;
|
|
290
|
-
}
|
|
291
|
-
export interface JetMarkdownEditorProps {
|
|
292
|
-
/** Scale text with the system font size setting. Defaults to true. */
|
|
293
|
-
allowFontScaling?: boolean;
|
|
294
|
-
autoCapitalize?: "none" | "sentences" | "words" | "characters";
|
|
295
|
-
autoCorrect?: boolean;
|
|
296
|
-
autoFocus?: boolean;
|
|
297
|
-
/**
|
|
298
|
-
* Caret color. On iOS the caret and selection share one tint, so
|
|
299
|
-
* `selectionColor` wins when both are set. Android 10+ only. Platform
|
|
300
|
-
* colors (`PlatformColor`, `DynamicColorIOS`) are supported.
|
|
301
|
-
*/
|
|
302
|
-
cursorColor?: ColorValue;
|
|
303
|
-
/** Initial markdown content, applied once. */
|
|
304
|
-
defaultValue?: string;
|
|
305
|
-
editable?: boolean;
|
|
306
|
-
/** Trigger characters (e.g. '@', '#') that begin a mention. */
|
|
307
|
-
mentionTriggers?: string[];
|
|
308
|
-
multiline?: boolean;
|
|
309
|
-
onBlur?: () => void;
|
|
310
|
-
onChangeMarkdown?: (markdown: string) => void;
|
|
311
|
-
onChangeSelection?: (selection: MarkdownSelection) => void;
|
|
312
|
-
onChangeState?: (state: MarkdownEditorState) => void;
|
|
313
|
-
onChangeText?: (text: string) => void;
|
|
314
|
-
onFocus?: () => void;
|
|
315
|
-
onLinkDetected?: (event: MarkdownUrlEvent) => void;
|
|
316
|
-
onMentionChange?: (event: MarkdownMentionQueryEvent) => void;
|
|
317
|
-
onMentionEnd?: (event: MarkdownMentionEvent) => void;
|
|
318
|
-
onMentionStart?: (event: MarkdownMentionEvent) => void;
|
|
319
|
-
onPaste?: (event: MarkdownPasteEvent) => void;
|
|
320
|
-
placeholder?: string;
|
|
321
|
-
placeholderTextColor?: ColorValue;
|
|
322
|
-
scrollEnabled?: boolean;
|
|
323
|
-
/**
|
|
324
|
-
* Selection highlight color. On iOS this also tints the caret (UIKit
|
|
325
|
-
* shares one tint). Platform colors (`PlatformColor`, `DynamicColorIOS`)
|
|
326
|
-
* are supported.
|
|
327
|
-
*/
|
|
328
|
-
selectionColor?: ColorValue;
|
|
329
|
-
/** Same container style contract as the viewer. */
|
|
330
|
-
style?: StyleProp<MarkdownContainerStyle>;
|
|
331
|
-
/** Per-element markdown styles; shared shape with the viewer. */
|
|
332
|
-
styles?: MarkdownStyles;
|
|
333
|
-
}
|
|
334
207
|
export interface JetMarkdownViewProps {
|
|
335
208
|
/** Scale text with the system font size setting. Defaults to true. */
|
|
336
209
|
allowFontScaling?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,eAAe,GACf,aAAa,GACb,cAAc,GACd,mBAAmB,GACnB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC;;;;OAIG;IACH,kBAAkB,CAAC,EACf,MAAM,GACN,WAAW,GACX,cAAc,GACd,wBAAwB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,yDAAyD;IACzD,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,yDAAyD;IACzD,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,yDAAyD;IACzD,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC9C;AAED,yEAAyE;AACzE,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,yDAAyD;IACzD,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,yDAAyD;IACzD,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GACpD,IAAI,CACF,mBAAmB,EACjB,SAAS,GACT,mBAAmB,GACnB,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,CAClB,CAAC;AAEJ,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IACrD,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IACpD,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpE,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,uDAAuD;IACvD,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,yDAAyD;IACzD,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,CAAC,EAAE,MAAM,CAAC;IACV,6EAA6E;IAC7E,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-jet-markdown",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "High-performance native Markdown renderer
|
|
3
|
+
"version": "0.2.3-beta.0",
|
|
4
|
+
"description": "High-performance native Markdown renderer for React Native",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
7
7
|
"ios",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"!android/gradlew",
|
|
42
42
|
"!android/gradlew.bat",
|
|
43
43
|
"!android/local.properties",
|
|
44
|
+
"!cpp/tests",
|
|
44
45
|
"!**/__tests__",
|
|
45
46
|
"!**/__fixtures__",
|
|
46
47
|
"!**/__mocks__",
|
|
@@ -93,9 +94,6 @@
|
|
|
93
94
|
},
|
|
94
95
|
"ios": {
|
|
95
96
|
"components": {
|
|
96
|
-
"JetMarkdownEditor": {
|
|
97
|
-
"className": "JetMarkdownEditor"
|
|
98
|
-
},
|
|
99
97
|
"JetMarkdownView": {
|
|
100
98
|
"className": "JetMarkdownView"
|
|
101
99
|
}
|