@tinglinzh/react-native-markdownview 0.1.0 → 0.2.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.
@@ -47,7 +47,8 @@ import MarkdownView
47
47
 
48
48
  var onLinkPressFabric: ((_ url: String, _ isURL: Bool) -> Void)?
49
49
  var onImagePressFabric: ((_ source: String) -> Void)?
50
- var onLineSelectionFabric: ((_ start: Int, _ end: Int, _ contents: [String], _ language: String?) -> Void)?
50
+ // contents is a newline-joined string (codegen cannot handle ReadonlyArray in events)
51
+ var onLineSelectionFabric: ((_ start: Int, _ end: Int, _ contents: String, _ language: String?) -> Void)?
51
52
  var onContentSizeChangeFabric: ((_ width: Double, _ height: Double) -> Void)?
52
53
 
53
54
  // MARK: - Initializers
@@ -96,17 +97,20 @@ import MarkdownView
96
97
  markdownTextView.lineSelectionHandler = { [weak self] info in
97
98
  guard let self else { return }
98
99
  guard let info else { return }
100
+ // Codegen does not support ReadonlyArray in event payloads,
101
+ // so we join contents with '\n' and split on the JS side.
102
+ let joinedContents = info.contents.joined(separator: "\n")
99
103
  let body: [AnyHashable: Any] = [
100
104
  "startLine": info.lineRange.lowerBound,
101
105
  "endLine": info.lineRange.upperBound,
102
- "contents": info.contents,
103
- "language": info.language as Any,
106
+ "contents": joinedContents,
107
+ "language": info.language ?? "",
104
108
  ]
105
109
  self.onLineSelection?(body)
106
110
  self.onLineSelectionFabric?(
107
111
  info.lineRange.lowerBound,
108
112
  info.lineRange.upperBound,
109
- info.contents,
113
+ joinedContents,
110
114
  info.language
111
115
  )
112
116
  }
@@ -94,15 +94,14 @@ using namespace facebook::react;
94
94
  emitter->onImagePress(event);
95
95
  };
96
96
 
97
- _markdownView.onLineSelectionFabric = ^(NSInteger start, NSInteger end, NSArray<NSString *> *contents, NSString * _Nullable language) {
97
+ // contents is a newline-joined string (codegen cannot handle ReadonlyArray in events).
98
+ _markdownView.onLineSelectionFabric = ^(NSInteger start, NSInteger end, NSString *contents, NSString * _Nullable language) {
98
99
  if (!emitter) return;
99
100
  RNMarkdownViewEventEmitter::OnLineSelection event;
100
101
  event.startLine = static_cast<int>(start);
101
102
  event.endLine = static_cast<int>(end);
102
- for (NSString *line in contents) {
103
- event.contents.push_back(std::string(line.UTF8String ?: ""));
104
- }
105
- event.language = language ? std::string(language.UTF8String) : "";
103
+ event.contents = std::string(contents.UTF8String ?: "");
104
+ event.language = language ? std::string(language.UTF8String) : "";
106
105
  emitter->onLineSelection(event);
107
106
  };
108
107
 
@@ -114,8 +114,27 @@ function MarkdownViewInner({
114
114
  const handleImagePress = (0, _react.useCallback)(e => {
115
115
  onImagePress?.(e);
116
116
  }, [onImagePress]);
117
- const handleLineSelection = (0, _react.useCallback)(e => {
118
- onLineSelection?.(e);
117
+ const handleLineSelection = (0, _react.useCallback)(
118
+ // Native sends contents as a newline-joined string (codegen limitation).
119
+ // We split it back into an array before forwarding to the user callback.
120
+ e => {
121
+ if (!onLineSelection) return;
122
+ const {
123
+ startLine,
124
+ endLine,
125
+ contents: raw,
126
+ language
127
+ } = e.nativeEvent;
128
+ const patched = {
129
+ ...e,
130
+ nativeEvent: {
131
+ startLine,
132
+ endLine,
133
+ contents: raw ? raw.split('\n') : [],
134
+ language: language || undefined
135
+ }
136
+ };
137
+ onLineSelection(patched);
119
138
  }, [onLineSelection]);
120
139
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(NativeComponent, {
121
140
  markdown: markdown,
@@ -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","themeJSON","styles","h"],"sourceRoot":"../../src","sources":["MarkdownView.tsx"],"mappings":"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","ignoreList":[]}
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","patched","split","themeJSON","styles","h"],"sourceRoot":"../../src","sources":["MarkdownView.tsx"],"mappings":"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","ignoreList":[]}
@@ -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;AA2BA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAoBe,IAAAG,+BAAsB,EACnC,gBACF,CAAC","ignoreList":[]}
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;AA4BA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAoBe,IAAAG,+BAAsB,EACnC,gBACF,CAAC","ignoreList":[]}
@@ -109,8 +109,27 @@ function MarkdownViewInner({
109
109
  const handleImagePress = useCallback(e => {
110
110
  onImagePress?.(e);
111
111
  }, [onImagePress]);
112
- const handleLineSelection = useCallback(e => {
113
- onLineSelection?.(e);
112
+ const handleLineSelection = useCallback(
113
+ // Native sends contents as a newline-joined string (codegen limitation).
114
+ // We split it back into an array before forwarding to the user callback.
115
+ e => {
116
+ if (!onLineSelection) return;
117
+ const {
118
+ startLine,
119
+ endLine,
120
+ contents: raw,
121
+ language
122
+ } = e.nativeEvent;
123
+ const patched = {
124
+ ...e,
125
+ nativeEvent: {
126
+ startLine,
127
+ endLine,
128
+ contents: raw ? raw.split('\n') : [],
129
+ language: language || undefined
130
+ }
131
+ };
132
+ onLineSelection(patched);
114
133
  }, [onLineSelection]);
115
134
  return /*#__PURE__*/_jsx(NativeComponent, {
116
135
  markdown: markdown,
@@ -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","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,CACxCiC,CAA+C,IAAK;IACnD,MAAM;MAAEC;IAAO,CAAC,GAAGD,CAAC,CAACE,WAAW,CAACC,WAAW;IAC5C,IAAIF,MAAM,GAAG,CAAC,EAAEL,aAAa,CAACK,MAAM,CAAC;IACrCZ,mBAAmB,GAAGW,CAAC,CAAC;EAC1B,CAAC,EACD,CAACX,mBAAmB,CACtB,CAAC;EAED,MAAMe,eAAe,GAAGrC,WAAW,CAChCiC,CAAuC,IAAK;IAC3Cd,WAAW,GAAGc,CAAC,CAAC;EAClB,CAAC,EACD,CAACd,WAAW,CACd,CAAC;EAED,MAAMmB,gBAAgB,GAAGtC,WAAW,CACjCiC,CAAwC,IAAK;IAC5Cb,YAAY,GAAGa,CAAC,CAAC;EACnB,CAAC,EACD,CAACb,YAAY,CACf,CAAC;EAED,MAAMmB,mBAAmB,GAAGvC,WAAW,CACpCiC,CAA2C,IAAK;IAC/CZ,eAAe,GAAGY,CAAC,CAAC;EACtB,CAAC,EACD,CAACZ,eAAe,CAClB,CAAC;EAED,oBACEd,IAAA,CAACoB,eAAe;IACdV,QAAQ,EAAEA,QAAS;IACnBuB,SAAS,EAAEV,YAAY,CAACC,OAAQ;IAChCb,KAAK,EAAE,CAACU,UAAU,KAAKf,SAAS,IAAI4B,MAAM,CAACb,UAAU,CAACA,UAAU,CAAC,EAAEV,KAAK,CAAE;IAC1EC,WAAW,EAAEkB,eAAgB;IAC7BjB,YAAY,EAAEkB,gBAAiB;IAC/BjB,eAAe,EAAEkB,mBAAoB;IACrCjB,mBAAmB,EAAEU;EAAwB,CAC9C,CAAC;AAEN;;AAEA;;AAEA,MAAMS,MAAM,GAAG;EACb;EACAb,UAAU,EAAGc,CAAS,KAAM;IAAER,MAAM,EAAEQ;EAAE,CAAC;AAC3C,CAAC","ignoreList":[]}
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","patched","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,CACxCiC,CAA+C,IAAK;IACnD,MAAM;MAAEC;IAAO,CAAC,GAAGD,CAAC,CAACE,WAAW,CAACC,WAAW;IAC5C,IAAIF,MAAM,GAAG,CAAC,EAAEL,aAAa,CAACK,MAAM,CAAC;IACrCZ,mBAAmB,GAAGW,CAAC,CAAC;EAC1B,CAAC,EACD,CAACX,mBAAmB,CACtB,CAAC;EAED,MAAMe,eAAe,GAAGrC,WAAW,CAChCiC,CAAuC,IAAK;IAC3Cd,WAAW,GAAGc,CAAC,CAAC;EAClB,CAAC,EACD,CAACd,WAAW,CACd,CAAC;EAED,MAAMmB,gBAAgB,GAAGtC,WAAW,CACjCiC,CAAwC,IAAK;IAC5Cb,YAAY,GAAGa,CAAC,CAAC;EACnB,CAAC,EACD,CAACb,YAAY,CACf,CAAC;EAED,MAAMmB,mBAAmB,GAAGvC,WAAW;EACrC;EACA;EACCiC,CAAmG,IAAK;IACvG,IAAI,CAACZ,eAAe,EAAE;IACtB,MAAM;MAAEmB,SAAS;MAAEC,OAAO;MAAEC,QAAQ,EAAEC,GAAG;MAAEC;IAAS,CAAC,GAAGX,CAAC,CAACE,WAAW;IACrE,MAAMU,OAAO,GAAG;MACd,GAAGZ,CAAC;MACJE,WAAW,EAAE;QACXK,SAAS;QACTC,OAAO;QACPC,QAAQ,EAAEC,GAAG,GAAGA,GAAG,CAACG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACpCF,QAAQ,EAAEA,QAAQ,IAAI/B;MACxB;IACF,CAAC;IACDQ,eAAe,CAACwB,OAA8D,CAAC;EACjF,CAAC,EACD,CAACxB,eAAe,CAClB,CAAC;EAED,oBACEd,IAAA,CAACoB,eAAe;IACdV,QAAQ,EAAEA,QAAS;IACnB8B,SAAS,EAAEjB,YAAY,CAACC,OAAQ;IAChCb,KAAK,EAAE,CAACU,UAAU,KAAKf,SAAS,IAAImC,MAAM,CAACpB,UAAU,CAACA,UAAU,CAAC,EAAEV,KAAK,CAAE;IAC1EC,WAAW,EAAEkB,eAAgB;IAC7BjB,YAAY,EAAEkB,gBAAiB;IAC/BjB,eAAe,EAAEkB,mBAAoB;IACrCjB,mBAAmB,EAAEU;EAAwB,CAC9C,CAAC;AAEN;;AAEA;;AAEA,MAAMgB,MAAM,GAAG;EACb;EACApB,UAAU,EAAGqB,CAAS,KAAM;IAAEf,MAAM,EAAEe;EAAE,CAAC;AAC3C,CAAC","ignoreList":[]}
@@ -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;;AA2BA;;AAoBA,eAAeA,sBAAsB,CACnC,gBACF,CAAC","ignoreList":[]}
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;;AA4BA;;AAoBA,eAAeA,sBAAsB,CACnC,gBACF,CAAC","ignoreList":[]}
@@ -21,7 +21,8 @@ export type OnImagePressEvent = Readonly<{
21
21
  export type OnLineSelectionEvent = Readonly<{
22
22
  startLine: Int32;
23
23
  endLine: Int32;
24
- contents: ReadonlyArray<string>;
24
+ /** Newline-joined text of the selected lines. Split on '\n' to get individual lines. */
25
+ contents: string;
25
26
  language: string;
26
27
  }>;
27
28
  export type OnContentSizeChangeContentSize = Readonly<{
@@ -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,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,WAAW,EAAE,8BAA8B,CAAC;CAC7C,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"}
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;AAEH,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,WAAW,EAAE,8BAA8B,CAAC;CAC7C,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.1.0",
3
+ "version": "0.2.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",
@@ -137,8 +137,21 @@ function MarkdownViewInner({
137
137
  );
138
138
 
139
139
  const handleLineSelection = useCallback(
140
- (e: NativeSyntheticEvent<LineSelectionEvent>) => {
141
- onLineSelection?.(e);
140
+ // Native sends contents as a newline-joined string (codegen limitation).
141
+ // We split it back into an array before forwarding to the user callback.
142
+ (e: NativeSyntheticEvent<{ startLine: number; endLine: number; contents: string; language: string }>) => {
143
+ if (!onLineSelection) return;
144
+ const { startLine, endLine, contents: raw, language } = e.nativeEvent;
145
+ const patched = {
146
+ ...e,
147
+ nativeEvent: {
148
+ startLine,
149
+ endLine,
150
+ contents: raw ? raw.split('\n') : [],
151
+ language: language || undefined,
152
+ } satisfies LineSelectionEvent,
153
+ };
154
+ onLineSelection(patched as unknown as NativeSyntheticEvent<LineSelectionEvent>);
142
155
  },
143
156
  [onLineSelection],
144
157
  );
@@ -31,7 +31,8 @@ export type OnImagePressEvent = Readonly<{
31
31
  export type OnLineSelectionEvent = Readonly<{
32
32
  startLine: Int32;
33
33
  endLine: Int32;
34
- contents: ReadonlyArray<string>;
34
+ /** Newline-joined text of the selected lines. Split on '\n' to get individual lines. */
35
+ contents: string;
35
36
  language: string; // empty string when unknown
36
37
  }>;
37
38