@tinglinzh/react-native-markdownview 0.2.0 → 0.3.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/ios/RNMarkdownView.swift +5 -4
- package/ios/RNMarkdownViewComponentView.mm +4 -4
- package/lib/commonjs/MarkdownView.js +18 -3
- package/lib/commonjs/MarkdownView.js.map +1 -1
- package/lib/commonjs/NativeMarkdownView.js +2 -0
- package/lib/commonjs/NativeMarkdownView.js.map +1 -1
- package/lib/module/MarkdownView.js +18 -3
- package/lib/module/MarkdownView.js.map +1 -1
- package/lib/module/NativeMarkdownView.js +3 -0
- package/lib/module/NativeMarkdownView.js.map +1 -1
- package/lib/typescript/src/NativeMarkdownView.d.ts +1 -4
- package/lib/typescript/src/NativeMarkdownView.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/MarkdownView.tsx +11 -3
- package/src/NativeMarkdownView.ts +3 -5
package/ios/RNMarkdownView.swift
CHANGED
|
@@ -133,11 +133,12 @@ import MarkdownView
|
|
|
133
133
|
let size = markdownTextView.intrinsicContentSize
|
|
134
134
|
guard size.height > 0, size != lastContentSize else { return }
|
|
135
135
|
lastContentSize = size
|
|
136
|
-
let
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
let w = Double(size.width), h = Double(size.height)
|
|
137
|
+
// Old arch: JS reconstructs { contentSize: { width, height } } from flat payload.
|
|
138
|
+
// Codegen cannot represent nested objects in event payloads, so we send flat fields.
|
|
139
|
+
let body: [AnyHashable: Any] = ["width": w, "height": h]
|
|
139
140
|
onContentSizeChange?(body)
|
|
140
|
-
onContentSizeChangeFabric?(
|
|
141
|
+
onContentSizeChangeFabric?(w, h)
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
// MARK: - Fabric entry-points (called from RNMarkdownViewComponentView.mm)
|
|
@@ -107,11 +107,11 @@ using namespace facebook::react;
|
|
|
107
107
|
|
|
108
108
|
_markdownView.onContentSizeChangeFabric = ^(double width, double height) {
|
|
109
109
|
if (!emitter) return;
|
|
110
|
+
// Flat fields — codegen does not support nested objects in event payloads.
|
|
111
|
+
// JS reconstructs { contentSize: { width, height } } from these.
|
|
110
112
|
RNMarkdownViewEventEmitter::OnContentSizeChange event;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
size.height = height;
|
|
114
|
-
event.contentSize = size;
|
|
113
|
+
event.width = width;
|
|
114
|
+
event.height = height;
|
|
115
115
|
emitter->onContentSizeChange(event);
|
|
116
116
|
};
|
|
117
117
|
}
|
|
@@ -101,12 +101,27 @@ function MarkdownViewInner({
|
|
|
101
101
|
|
|
102
102
|
// Re-serialize only when theme reference changes.
|
|
103
103
|
themeJSONRef.current = serializeTheme(theme);
|
|
104
|
-
const handleContentSizeChange = (0, _react.useCallback)(
|
|
104
|
+
const handleContentSizeChange = (0, _react.useCallback)(
|
|
105
|
+
// Native sends flat { width, height } (codegen cannot handle nested objects in events).
|
|
106
|
+
// We reconstruct the { contentSize: { width, height } } shape for the user-facing API.
|
|
107
|
+
e => {
|
|
105
108
|
const {
|
|
109
|
+
width,
|
|
106
110
|
height
|
|
107
|
-
} = e.nativeEvent
|
|
111
|
+
} = e.nativeEvent;
|
|
108
112
|
if (height > 0) setAutoHeight(height);
|
|
109
|
-
onContentSizeChange
|
|
113
|
+
if (onContentSizeChange) {
|
|
114
|
+
const patched = {
|
|
115
|
+
...e,
|
|
116
|
+
nativeEvent: {
|
|
117
|
+
contentSize: {
|
|
118
|
+
width,
|
|
119
|
+
height
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
onContentSizeChange(patched);
|
|
124
|
+
}
|
|
110
125
|
}, [onContentSizeChange]);
|
|
111
126
|
const handleLinkPress = (0, _react.useCallback)(e => {
|
|
112
127
|
onLinkPress?.(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","COMPONENT_NAME","NativeMarkdownView","Platform","OS","requireNativeComponent","serializeTheme","theme","undefined","JSON","stringify","MarkdownView","markdown","style","onLinkPress","onImagePress","onLineSelection","onContentSizeChange","__DEV__","console","warn","jsx","View","MarkdownViewInner","NativeComponent","autoHeight","setAutoHeight","useState","themeJSONRef","useRef","current","handleContentSizeChange","useCallback","height","nativeEvent","contentSize","handleLinkPress","handleImagePress","handleLineSelection","startLine","endLine","contents","raw","language","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","COMPONENT_NAME","NativeMarkdownView","Platform","OS","requireNativeComponent","serializeTheme","theme","undefined","JSON","stringify","MarkdownView","markdown","style","onLinkPress","onImagePress","onLineSelection","onContentSizeChange","__DEV__","console","warn","jsx","View","MarkdownViewInner","NativeComponent","autoHeight","setAutoHeight","useState","themeJSONRef","useRef","current","handleContentSizeChange","useCallback","width","height","nativeEvent","patched","contentSize","handleLinkPress","handleImagePress","handleLineSelection","startLine","endLine","contents","raw","language","split","themeJSON","styles","h"],"sourceRoot":"../../src","sources":["MarkdownView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,6 +17,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
17
17
|
* react-native/Libraries/Types/CodegenTypes.
|
|
18
18
|
*/
|
|
19
19
|
// ─── Codegen event payload types ─────────────────────────────────────────────
|
|
20
|
+
// Codegen does not support nested objects in event payloads.
|
|
21
|
+
// We flatten width/height and reconstruct { contentSize: { width, height } } on the JS side.
|
|
20
22
|
// ─── Native component props ───────────────────────────────────────────────────
|
|
21
23
|
var _default = exports.default = (0, _codegenNativeComponent.default)('RNMarkdownView');
|
|
22
24
|
//# sourceMappingURL=NativeMarkdownView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sourceRoot":"../../src","sources":["NativeMarkdownView.ts"],"mappings":";;;;;;AAgBA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAhB7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;
|
|
1
|
+
{"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sourceRoot":"../../src","sources":["NativeMarkdownView.ts"],"mappings":";;;;;;AAgBA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAhB7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AAmBA;AACA;AAMA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAoBe,IAAAG,+BAAsB,EACnC,gBACF,CAAC","ignoreList":[]}
|
|
@@ -96,12 +96,27 @@ function MarkdownViewInner({
|
|
|
96
96
|
|
|
97
97
|
// Re-serialize only when theme reference changes.
|
|
98
98
|
themeJSONRef.current = serializeTheme(theme);
|
|
99
|
-
const handleContentSizeChange = useCallback(
|
|
99
|
+
const handleContentSizeChange = useCallback(
|
|
100
|
+
// Native sends flat { width, height } (codegen cannot handle nested objects in events).
|
|
101
|
+
// We reconstruct the { contentSize: { width, height } } shape for the user-facing API.
|
|
102
|
+
e => {
|
|
100
103
|
const {
|
|
104
|
+
width,
|
|
101
105
|
height
|
|
102
|
-
} = e.nativeEvent
|
|
106
|
+
} = e.nativeEvent;
|
|
103
107
|
if (height > 0) setAutoHeight(height);
|
|
104
|
-
onContentSizeChange
|
|
108
|
+
if (onContentSizeChange) {
|
|
109
|
+
const patched = {
|
|
110
|
+
...e,
|
|
111
|
+
nativeEvent: {
|
|
112
|
+
contentSize: {
|
|
113
|
+
width,
|
|
114
|
+
height
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
onContentSizeChange(patched);
|
|
119
|
+
}
|
|
105
120
|
}, [onContentSizeChange]);
|
|
106
121
|
const handleLinkPress = useCallback(e => {
|
|
107
122
|
onLinkPress?.(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useRef","useState","Platform","requireNativeComponent","View","jsx","_jsx","COMPONENT_NAME","NativeMarkdownView","OS","serializeTheme","theme","undefined","JSON","stringify","MarkdownView","markdown","style","onLinkPress","onImagePress","onLineSelection","onContentSizeChange","__DEV__","console","warn","MarkdownViewInner","NativeComponent","autoHeight","setAutoHeight","themeJSONRef","current","handleContentSizeChange","e","height","nativeEvent","contentSize","handleLinkPress","handleImagePress","handleLineSelection","startLine","endLine","contents","raw","language","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useRef","useState","Platform","requireNativeComponent","View","jsx","_jsx","COMPONENT_NAME","NativeMarkdownView","OS","serializeTheme","theme","undefined","JSON","stringify","MarkdownView","markdown","style","onLinkPress","onImagePress","onLineSelection","onContentSizeChange","__DEV__","console","warn","MarkdownViewInner","NativeComponent","autoHeight","setAutoHeight","themeJSONRef","current","handleContentSizeChange","e","width","height","nativeEvent","patched","contentSize","handleLinkPress","handleImagePress","handleLineSelection","startLine","endLine","contents","raw","language","split","themeJSON","styles","h"],"sourceRoot":"../../src","sources":["MarkdownView.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC5D,SAEEC,QAAQ,EACRC,sBAAsB,EAEtBC,IAAI,QACC,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUtB;;AAEA,MAAMC,cAAc,GAAG,gBAAgB;;AAEvC;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAmD,GACvDN,QAAQ,CAACO,EAAE,KAAK,KAAK,GAAGN,sBAAsB,CAACI,cAAc,CAAC,GAAG,IAAI;;AAEvE;;AAEA,SAASG,cAAcA,CAACC,KAA+B,EAAsB;EAC3E,IAAI,CAACA,KAAK,EAAE,OAAOC,SAAS;EAC5B,IAAI;IACF,OAAOC,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC;EAC9B,CAAC,CAAC,MAAM;IACN,OAAOC,SAAS;EAClB;AACF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,YAAYA,CAAC;EAC3BC,QAAQ;EACRL,KAAK;EACLM,KAAK;EACLC,WAAW;EACXC,YAAY;EACZC,eAAe;EACfC;AACiB,CAAC,EAAE;EACpB,IAAInB,QAAQ,CAACO,EAAE,KAAK,KAAK,IAAID,kBAAkB,KAAK,IAAI,EAAE;IACxD,IAAIc,OAAO,EAAE;MACXC,OAAO,CAACC,IAAI,CAAC,2CAA2C,CAAC;IAC3D;IACA,oBAAOlB,IAAA,CAACF,IAAI;MAACa,KAAK,EAAEA;IAAM,CAAE,CAAC;EAC/B;;EAEA;EACA,oBACEX,IAAA,CAACmB,iBAAiB;IAChBT,QAAQ,EAAEA,QAAS;IACnBL,KAAK,EAAEA,KAAM;IACbM,KAAK,EAAEA,KAAM;IACbC,WAAW,EAAEA,WAAY;IACzBC,YAAY,EAAEA,YAAa;IAC3BC,eAAe,EAAEA,eAAgB;IACjCC,mBAAmB,EAAEA,mBAAoB;IACzCK,eAAe,EAAElB;EAAmB,CACrC,CAAC;AAEN;;AAEA;;AAKA,SAASiB,iBAAiBA,CAAC;EACzBT,QAAQ;EACRL,KAAK;EACLM,KAAK;EACLC,WAAW;EACXC,YAAY;EACZC,eAAe;EACfC,mBAAmB;EACnBK;AACU,CAAC,EAAE;EACb,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG3B,QAAQ,CAAqBW,SAAS,CAAC;EAC3E,MAAMiB,YAAY,GAAG7B,MAAM,CAAqBY,SAAS,CAAC;;EAE1D;EACAiB,YAAY,CAACC,OAAO,GAAGpB,cAAc,CAACC,KAAK,CAAC;EAE5C,MAAMoB,uBAAuB,GAAGhC,WAAW;EACzC;EACA;EACCiC,CAA0D,IAAK;IAC9D,MAAM;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAGF,CAAC,CAACG,WAAW;IACvC,IAAID,MAAM,GAAG,CAAC,EAAEN,aAAa,CAACM,MAAM,CAAC;IACrC,IAAIb,mBAAmB,EAAE;MACvB,MAAMe,OAAO,GAAG;QACd,GAAGJ,CAAC;QACJG,WAAW,EAAE;UAAEE,WAAW,EAAE;YAAEJ,KAAK;YAAEC;UAAO;QAAE;MAChD,CAAC;MACDb,mBAAmB,CAACe,OAAkE,CAAC;IACzF;EACF,CAAC,EACD,CAACf,mBAAmB,CACtB,CAAC;EAED,MAAMiB,eAAe,GAAGvC,WAAW,CAChCiC,CAAuC,IAAK;IAC3Cd,WAAW,GAAGc,CAAC,CAAC;EAClB,CAAC,EACD,CAACd,WAAW,CACd,CAAC;EAED,MAAMqB,gBAAgB,GAAGxC,WAAW,CACjCiC,CAAwC,IAAK;IAC5Cb,YAAY,GAAGa,CAAC,CAAC;EACnB,CAAC,EACD,CAACb,YAAY,CACf,CAAC;EAED,MAAMqB,mBAAmB,GAAGzC,WAAW;EACrC;EACA;EACCiC,CAAmG,IAAK;IACvG,IAAI,CAACZ,eAAe,EAAE;IACtB,MAAM;MAAEqB,SAAS;MAAEC,OAAO;MAAEC,QAAQ,EAAEC,GAAG;MAAEC;IAAS,CAAC,GAAGb,CAAC,CAACG,WAAW;IACrE,MAAMC,OAAO,GAAG;MACd,GAAGJ,CAAC;MACJG,WAAW,EAAE;QACXM,SAAS;QACTC,OAAO;QACPC,QAAQ,EAAEC,GAAG,GAAGA,GAAG,CAACE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACpCD,QAAQ,EAAEA,QAAQ,IAAIjC;MACxB;IACF,CAAC;IACDQ,eAAe,CAACgB,OAA8D,CAAC;EACjF,CAAC,EACD,CAAChB,eAAe,CAClB,CAAC;EAED,oBACEd,IAAA,CAACoB,eAAe;IACdV,QAAQ,EAAEA,QAAS;IACnB+B,SAAS,EAAElB,YAAY,CAACC,OAAQ;IAChCb,KAAK,EAAE,CAACU,UAAU,KAAKf,SAAS,IAAIoC,MAAM,CAACrB,UAAU,CAACA,UAAU,CAAC,EAAEV,KAAK,CAAE;IAC1EC,WAAW,EAAEoB,eAAgB;IAC7BnB,YAAY,EAAEoB,gBAAiB;IAC/BnB,eAAe,EAAEoB,mBAAoB;IACrCnB,mBAAmB,EAAEU;EAAwB,CAC9C,CAAC;AAEN;;AAEA;;AAEA,MAAMiB,MAAM,GAAG;EACb;EACArB,UAAU,EAAGsB,CAAS,KAAM;IAAEf,MAAM,EAAEe;EAAE,CAAC;AAC3C,CAAC","ignoreList":[]}
|
|
@@ -15,6 +15,9 @@ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNati
|
|
|
15
15
|
|
|
16
16
|
// ─── Codegen event payload types ─────────────────────────────────────────────
|
|
17
17
|
|
|
18
|
+
// Codegen does not support nested objects in event payloads.
|
|
19
|
+
// We flatten width/height and reconstruct { contentSize: { width, height } } on the JS side.
|
|
20
|
+
|
|
18
21
|
// ─── Native component props ───────────────────────────────────────────────────
|
|
19
22
|
|
|
20
23
|
export default codegenNativeComponent('RNMarkdownView');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../src","sources":["NativeMarkdownView.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,OAAOA,sBAAsB,MAAM,yDAAyD;;AAG5F;;
|
|
1
|
+
{"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../src","sources":["NativeMarkdownView.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,OAAOA,sBAAsB,MAAM,yDAAyD;;AAG5F;;AAmBA;AACA;;AAMA;;AAoBA,eAAeA,sBAAsB,CACnC,gBACF,CAAC","ignoreList":[]}
|
|
@@ -25,13 +25,10 @@ export type OnLineSelectionEvent = Readonly<{
|
|
|
25
25
|
contents: string;
|
|
26
26
|
language: string;
|
|
27
27
|
}>;
|
|
28
|
-
export type
|
|
28
|
+
export type OnContentSizeChangeEvent = Readonly<{
|
|
29
29
|
width: Double;
|
|
30
30
|
height: Double;
|
|
31
31
|
}>;
|
|
32
|
-
export type OnContentSizeChangeEvent = Readonly<{
|
|
33
|
-
contentSize: OnContentSizeChangeContentSize;
|
|
34
|
-
}>;
|
|
35
32
|
export interface NativeProps extends ViewProps {
|
|
36
33
|
/** Raw markdown string to render. */
|
|
37
34
|
markdown?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeMarkdownView.d.ts","sourceRoot":"","sources":["../../../src/NativeMarkdownView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EACN,KAAK,EACN,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;IACf,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeMarkdownView.d.ts","sourceRoot":"","sources":["../../../src/NativeMarkdownView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EACN,KAAK,EACN,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;IACf,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAIH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAIH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACnD,2BAA2B;IAC3B,YAAY,CAAC,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IACrD,8BAA8B;IAC9B,eAAe,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAC3D,kCAAkC;IAClC,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;CACpE;wBAII,aAAa,CAAC,WAAW,CAAC;AAF/B,wBAEgC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinglinzh/react-native-markdownview",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "React Native wrapper for MarkdownView — native iOS/macOS markdown rendering with GFM, syntax highlighting, LaTeX math, and unified diff support",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/MarkdownView.tsx
CHANGED
|
@@ -114,10 +114,18 @@ function MarkdownViewInner({
|
|
|
114
114
|
themeJSONRef.current = serializeTheme(theme);
|
|
115
115
|
|
|
116
116
|
const handleContentSizeChange = useCallback(
|
|
117
|
-
(
|
|
118
|
-
|
|
117
|
+
// Native sends flat { width, height } (codegen cannot handle nested objects in events).
|
|
118
|
+
// We reconstruct the { contentSize: { width, height } } shape for the user-facing API.
|
|
119
|
+
(e: NativeSyntheticEvent<{ width: number; height: number }>) => {
|
|
120
|
+
const { width, height } = e.nativeEvent;
|
|
119
121
|
if (height > 0) setAutoHeight(height);
|
|
120
|
-
onContentSizeChange
|
|
122
|
+
if (onContentSizeChange) {
|
|
123
|
+
const patched = {
|
|
124
|
+
...e,
|
|
125
|
+
nativeEvent: { contentSize: { width, height } } satisfies ContentSizeChangeEvent,
|
|
126
|
+
};
|
|
127
|
+
onContentSizeChange(patched as unknown as NativeSyntheticEvent<ContentSizeChangeEvent>);
|
|
128
|
+
}
|
|
121
129
|
},
|
|
122
130
|
[onContentSizeChange],
|
|
123
131
|
);
|
|
@@ -36,15 +36,13 @@ export type OnLineSelectionEvent = Readonly<{
|
|
|
36
36
|
language: string; // empty string when unknown
|
|
37
37
|
}>;
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
// Codegen does not support nested objects in event payloads.
|
|
40
|
+
// We flatten width/height and reconstruct { contentSize: { width, height } } on the JS side.
|
|
41
|
+
export type OnContentSizeChangeEvent = Readonly<{
|
|
40
42
|
width: Double;
|
|
41
43
|
height: Double;
|
|
42
44
|
}>;
|
|
43
45
|
|
|
44
|
-
export type OnContentSizeChangeEvent = Readonly<{
|
|
45
|
-
contentSize: OnContentSizeChangeContentSize;
|
|
46
|
-
}>;
|
|
47
|
-
|
|
48
46
|
// ─── Native component props ───────────────────────────────────────────────────
|
|
49
47
|
|
|
50
48
|
export interface NativeProps extends ViewProps {
|