@nativescript-community/text 1.5.18 → 1.5.20

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/index.ios.js CHANGED
@@ -15,10 +15,7 @@ function _createNativeAttributedString({ text, familyName = '-apple-system', fon
15
15
  // if (iOSUseDTCoreText) {
16
16
  let style = '';
17
17
  if (linkColor || linkDecoration) {
18
- style =
19
- '<style>' +
20
- `a, a:link, a:visited { ${linkColor ? `color:${(linkColor instanceof Color ? linkColor : new Color(linkColor)).hex} !important;` : ''} text-decoration: ${linkDecoration || 'none'}; }` +
21
- '</style>';
18
+ style = '<style>' + `a, a:link, a:visited { ${linkColor ? `color:${linkColor.hex} !important;` : ''} text-decoration: ${linkDecoration || 'none'}; }` + '</style>';
22
19
  }
23
20
  const htmlString = style +
24
21
  (color || familyName || fontSize || fontWeight
@@ -40,35 +37,32 @@ function _createNativeAttributedString({ text, familyName = '-apple-system', fon
40
37
  useCustomLinkTag
41
38
  });
42
39
  }
43
- export function createNativeAttributedString(data, parent, autoFontSizeEnabled = false, fontSizeRatio = 1) {
44
- if (data instanceof FormattedString || data instanceof LightFormattedString || data.hasOwnProperty('spans')) {
40
+ export function createNativeAttributedString(data, parent, parentView, autoFontSizeEnabled = false, fontSizeRatio = 1) {
41
+ if (data instanceof FormattedString || data instanceof LightFormattedString || data['spans']) {
45
42
  // const ssb = NSMutableAttributedString.new();
46
43
  const maxFontSize = getMaxFontSize(data);
47
- const _spanRanges = [];
44
+ // const _spanRanges = [];
48
45
  // let spanStart = 0;
49
46
  let hasLink = false;
50
47
  const details = [];
48
+ if (!parent) {
49
+ parent = data;
50
+ }
51
51
  data['spans'].forEach((s, index) => {
52
- const spanDetails = createSpannableDetails(s, index, undefined, parent, maxFontSize, autoFontSizeEnabled, fontSizeRatio);
53
- // const length = spanDetails.text.length;
54
- details.push(spanDetails);
55
- // const res = createSpannable(s, parent, undefined, maxFontSize, autoFontSizeEnabled, fontSizeRatio);
56
- // if (res) {
57
- if (s._tappable) {
58
- hasLink = true;
52
+ const spanDetails = createSpannableDetails(s, index, parentView, parent, maxFontSize, autoFontSizeEnabled, fontSizeRatio);
53
+ if (spanDetails) {
54
+ details.push(spanDetails);
55
+ if (s._tappable) {
56
+ hasLink = true;
57
+ }
59
58
  }
60
- // _spanRanges.push({
61
- // location: spanStart,
62
- // length
63
- // });
64
- // spanStart += length;
65
- // ssb.appendAttributedString(res);
66
- // }
67
59
  });
68
- if (parent) {
69
- parent['nativeTextViewProtected'].selectable = parent['selectable'] === true || hasLink;
70
- if (parent._setTappableState) {
71
- parent._setTappableState(hasLink);
60
+ if (parentView) {
61
+ if (parentView['nativeTextViewProtected']) {
62
+ parentView['nativeTextViewProtected'].selectable = parentView['selectable'] === true || hasLink;
63
+ }
64
+ if (parentView._setTappableState) {
65
+ parentView._setTappableState(hasLink);
72
66
  }
73
67
  // parent['_spanRanges'] = _spanRanges;
74
68
  }
@@ -78,15 +72,16 @@ export function createNativeAttributedString(data, parent, autoFontSizeEnabled =
78
72
  if (data.textAlignment && typeof data.textAlignment === 'string') {
79
73
  data.textAlignment = textAlignmentConverter(data.textAlignment);
80
74
  }
81
- if (data.color && !(data.color instanceof Color)) {
82
- data.color = new Color(data.color);
83
- }
75
+ // if (data.color && !(data.color instanceof Color)) {
76
+ // data.color = new Color(data.color as any);
77
+ // }
84
78
  data['autoFontSizeEnabled'] = autoFontSizeEnabled;
85
79
  data['fontSizeRatio'] = fontSizeRatio;
86
80
  return _createNativeAttributedString(data);
87
81
  }
88
82
  export function createSpannable(span, index, parentView, parent, maxFontSize, autoFontSizeEnabled = false, fontSizeRatio = 1) {
89
- return NSTextUtils.createNativeAttributedString({ details: [createSpannableDetails(span, index, parentView, parent, maxFontSize, autoFontSizeEnabled, fontSizeRatio)] });
83
+ const details = createSpannableDetails(span, index, parentView, parent, maxFontSize, autoFontSizeEnabled, fontSizeRatio);
84
+ return details ? NSTextUtils.createNativeAttributedString({ details: [details] }) : null;
90
85
  }
91
86
  export function createSpannableDetails(span, index, parentView, parent, maxFontSize, autoFontSizeEnabled = false, fontSizeRatio = 1) {
92
87
  let text = span.text;
package/index.ios.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.ios.js","sourceRoot":"../src/","sources":["index.ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.ios.js","sourceRoot":"../src/","sources":["index.ios.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nativescript-community/text",
3
- "version": "1.5.18",
3
+ "version": "1.5.20",
4
4
  "description": "Expands the capabilities of NativeScript's text property.",
5
5
  "main": "./index",
6
6
  "sideEffects": false,
@@ -37,5 +37,5 @@
37
37
  },
38
38
  "license": "Apache-2.0",
39
39
  "readmeFilename": "README.md",
40
- "gitHead": "6051775f5e0e3e787f709d33d5846d5e8278d1bb"
40
+ "gitHead": "33bbaa3f414c895a14e0fc3532e537e5033b9653"
41
41
  }
@@ -1,4 +1,7 @@
1
1
  dependencies {
2
2
  def androidxVersion = project.hasProperty("androidxVersion") ? project.androidxVersion : "1.2.0"
3
+ def androidXAppCompat = project.hasProperty("androidXAppCompat") ? project.androidXAppCompat : "1.1.0"
4
+
5
+ implementation "androidx.appcompat:appcompat:$androidXAppCompat"
3
6
  implementation "androidx.core:core:$androidxVersion"
4
7
  }
@@ -3,6 +3,7 @@ package com.nativescript.text;
3
3
  import android.content.Context;
4
4
  import android.content.res.AssetManager;
5
5
  import android.graphics.Typeface;
6
+ import android.graphics.Color;
6
7
  import android.os.Build;
7
8
  import android.text.SpannableStringBuilder;
8
9
  import android.text.style.AbsoluteSizeSpan;
@@ -309,11 +310,11 @@ public class Font {
309
310
  }
310
311
 
311
312
  public static SpannableStringBuilder stringBuilderFromHtmlString(Context context, String fontFolder, String parentFontFamily,
312
- String htmlString) {
313
+ String htmlString, final boolean disableLinkUnderline, final Color linkColor) {
313
314
  if (htmlString == null) {
314
315
  return null;
315
316
  }
316
- CharSequence spannedString = fromHtml(htmlString, context, fontFolder, parentFontFamily, false);
317
+ CharSequence spannedString = fromHtml(htmlString, context, fontFolder, parentFontFamily, disableLinkUnderline, linkColor);
317
318
  SpannableStringBuilder builder = new SpannableStringBuilder(spannedString);
318
319
 
319
320
  return builder;
@@ -410,16 +411,27 @@ public class Font {
410
411
  android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
411
412
  }
412
413
  }
414
+ int tapIndex = span.optInt("tapIndex", -1);
415
+ if (tapIndex != -1) {
416
+ ssb.setSpan(new URLSpanNoUnderline(String.valueOf(tapIndex), false, null, true), start, end,
417
+ android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
418
+ }
419
+
413
420
  }
414
421
 
415
422
  public static SpannableStringBuilder stringBuilderFromFormattedString(Context context, String fontFolder, String parentFontFamily,
416
- String options) {
423
+ String options, SpannableStringBuilder ssb) {
417
424
  if (options == null) {
418
425
  return null;
419
426
  }
420
427
  try {
421
428
  JSONArray arrayOptions = new JSONArray(options);
422
- SpannableStringBuilder ssb = new SpannableStringBuilder();
429
+ if (ssb == null) {
430
+ ssb = new SpannableStringBuilder();
431
+ } else {
432
+ ssb.clear();
433
+ ssb.clearSpans();
434
+ }
423
435
  for (int i = 0, spanStart = 0, spanLength = 0, length = arrayOptions.length(); i < length; i++) {
424
436
  JSONObject span = (JSONObject)arrayOptions.get(i);
425
437
  String text = span.optString("text", "");
@@ -455,7 +467,7 @@ public class Font {
455
467
  static HtmlToSpannedConverter converter = null;
456
468
 
457
469
  public static CharSequence fromHtml(CharSequence html, Context context, String fontFolder, String parentFontFamily,
458
- final boolean disableLinkStyle) {
470
+ final boolean disableLinkUnderline, final Color linkColor) {
459
471
  // long startTime = System.nanoTime();
460
472
  // XMLReader xmlReader;
461
473
  try {
@@ -464,10 +476,11 @@ public class Font {
464
476
  saxParser = factory.newSAXParser();
465
477
  }
466
478
  if (converter == null) {
467
- converter = new HtmlToSpannedConverter(context, fontFolder, parentFontFamily, null, null, disableLinkStyle);
479
+ converter = new HtmlToSpannedConverter(context, fontFolder, parentFontFamily, null, null, disableLinkUnderline, linkColor);
468
480
  } else {
469
481
  converter.reset();
470
- converter.disableLinkStyle = disableLinkStyle;
482
+ converter.disableLinkUnderline = disableLinkUnderline;
483
+ converter.linkColor = linkColor;
471
484
  }
472
485
  // Log.d(TAG, "parse: " +html);
473
486
  final String toParse = "<doc>" + ((String) html).replaceAll("<br>", "<br></br>") + "</doc>";
@@ -480,7 +493,7 @@ public class Font {
480
493
  return html;
481
494
  }
482
495
 
483
- public static CharSequence fromHtml(Context context, String fontFolder, String parentFontFamily, CharSequence html) {
484
- return fromHtml(html, context, fontFolder, parentFontFamily, false);
496
+ public static CharSequence fromHtml(Context context, String fontFolder, String parentFontFamily, CharSequence html, final boolean disableLinkUnderline, final Color linkColor) {
497
+ return fromHtml(html, context, fontFolder, parentFontFamily, disableLinkUnderline, linkColor);
485
498
  }
486
499
  }
@@ -29,6 +29,7 @@ import android.text.style.SuperscriptSpan;
29
29
  import android.text.style.TextAppearanceSpan;
30
30
  import android.text.style.TypefaceSpan;
31
31
  import android.text.style.UnderlineSpan;
32
+ import android.graphics.Color;
32
33
 
33
34
  import java.util.ArrayList;
34
35
  import java.util.Collection;
@@ -41,7 +42,8 @@ class HtmlToSpannedConverter extends DefaultHandler {
41
42
  private final String TAG = "HtmlToSpannedConverter";
42
43
 
43
44
  // private Attributes _currentAtts = null;
44
- public boolean disableLinkStyle = false;
45
+ public boolean disableLinkUnderline = false;
46
+ public Color linkColor = null;
45
47
  private SpannableStringBuilder mSpannableStringBuilder;
46
48
 
47
49
  private Html.ImageGetter mImageGetter;
@@ -55,13 +57,14 @@ class HtmlToSpannedConverter extends DefaultHandler {
55
57
  }
56
58
 
57
59
  public HtmlToSpannedConverter(Context context, String fontFolder, String parentFontFamily, Html.ImageGetter imageGetter,
58
- Html.TagHandler tagHandler, final boolean disableLinkStyle) {
60
+ Html.TagHandler tagHandler, final boolean disableLinkUnderline, final Color linkColor) {
59
61
  mSpannableStringBuilder = new SpannableStringBuilder();
60
62
  mImageGetter = imageGetter;
61
63
  this.fontFolder = fontFolder;
62
64
  this.parentFontFamily = parentFontFamily;
63
65
  this.context = context;
64
- this.disableLinkStyle = disableLinkStyle;
66
+ this.disableLinkUnderline = disableLinkUnderline;
67
+ this.linkColor = linkColor;
65
68
  density = context.getResources().getDisplayMetrics().density;
66
69
  // if (mImageGetter == null) {
67
70
  // mImageGetter = new Html.ImageGetter() {
@@ -220,7 +223,7 @@ class HtmlToSpannedConverter extends DefaultHandler {
220
223
  Href h = (Href) obj;
221
224
 
222
225
  if (h.mHref != null) {
223
- text.setSpan(new URLSpanNoUnderline(h.mHref, !disableLinkStyle), where, len,
226
+ text.setSpan(new URLSpanNoUnderline(h.mHref, !disableLinkUnderline, linkColor), where, len,
224
227
  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
225
228
  }
226
229
  }
@@ -0,0 +1,28 @@
1
+ package com.nativescript.text;
2
+
3
+ import androidx.appcompat.widget.AppCompatTextView;
4
+ import android.text.style.URLSpan;
5
+ import android.content.Context;
6
+
7
+ class TextView extends AppCompatTextView {
8
+ public URLSpanClickListener urlSpanClickListener;
9
+
10
+ public TextView(Context context) {
11
+ this(context, null);
12
+ }
13
+ public TextView(Context context, android.util.AttributeSet attrs) {
14
+ super(context, attrs);
15
+ }
16
+
17
+ public void onURLSpanClick(URLSpan span) {
18
+ if (this.urlSpanClickListener != null) {
19
+ this.urlSpanClickListener.onClick(span);
20
+ }
21
+ }
22
+
23
+ public static boolean attributedStringHasSpan(android.text.Spannable attributeString, java.lang.Class spanClass) {
24
+ return attributeString.getSpans(0, attributeString.length(), spanClass).length > 0;
25
+ // const urlSpan = result.getSpans(0, result.length(), android.text.style.URLSpan.class);
26
+
27
+ }
28
+ }
@@ -0,0 +1,7 @@
1
+ package com.nativescript.text;
2
+
3
+ import android.text.style.URLSpan;
4
+
5
+ public interface URLSpanClickListener {
6
+ public void onClick(URLSpan span);
7
+ }
@@ -2,23 +2,38 @@ package com.nativescript.text;
2
2
 
3
3
  import android.text.TextPaint;
4
4
  import android.text.style.URLSpan;
5
+ import android.graphics.Color;
5
6
 
6
7
  public class URLSpanNoUnderline extends URLSpan {
8
+ private boolean disableStyle;
7
9
  private boolean showUnderline;
8
- public URLSpanNoUnderline(String url, boolean showUnderline) {
10
+ private Color color;
11
+ public URLSpanNoUnderline(String url, boolean showUnderline, Color color, boolean disableStyle) {
9
12
  super(url);
10
13
  this.showUnderline = showUnderline;
14
+ this.color = color;
15
+ this.disableStyle = disableStyle;
16
+ }
17
+ public URLSpanNoUnderline(String url, boolean showUnderline, Color color) {
18
+ this(url, showUnderline, color, false);
11
19
  }
12
20
  @Override
13
21
  public void updateDrawState(TextPaint ds) {
14
- if (this.showUnderline) {
15
- super.updateDrawState(ds);
22
+ if (this.disableStyle) {
23
+ return;
24
+ }
25
+ super.updateDrawState(ds);
26
+ if (!this.showUnderline) {
27
+ ds.setUnderlineText(false);
28
+ }
29
+ if (this.color != null){
30
+ ds.setColor(color.toArgb());
16
31
  }
17
- // super.updateDrawState(ds);
18
- // ds.setUnderlineText(false);
19
32
  }
20
33
  @Override
21
34
  public void onClick(android.view.View widget) {
22
- // custom click handle
35
+ if (widget instanceof TextView) {
36
+ ((TextView)widget).onURLSpanClick(this);
37
+ }
23
38
  }
24
39
  }
@@ -8,6 +8,8 @@
8
8
  "android.text.style:AbsoluteSizeSpan*",
9
9
  "android.text.style:StyleSpan*",
10
10
  "android.text:Spanned*",
11
- "com.nativescript.text*:*"
11
+ "com.nativescript.text*:*",
12
+ "androidx.core.widget:TextViewCompat"
13
+
12
14
  ]
13
15
  }