@nativescript/core 9.0.0-alpha.23 → 9.0.0-alpha.25

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.
Files changed (107) hide show
  1. package/application/application.android.d.ts +9 -2
  2. package/application/application.android.js +83 -6
  3. package/application/application.android.js.map +1 -1
  4. package/application/application.d.ts +8 -1
  5. package/application/application.ios.d.ts +13 -1
  6. package/application/application.ios.js +30 -3
  7. package/application/application.ios.js.map +1 -1
  8. package/application/helpers.android.d.ts +0 -9
  9. package/application/helpers.android.js +0 -54
  10. package/application/helpers.android.js.map +1 -1
  11. package/application/helpers.d.ts +0 -10
  12. package/application/helpers.ios.d.ts +0 -19
  13. package/application/helpers.ios.js +0 -38
  14. package/application/helpers.ios.js.map +1 -1
  15. package/connectivity/index.android.js +3 -3
  16. package/connectivity/index.android.js.map +1 -1
  17. package/core-types/index.d.ts +68 -63
  18. package/core-types/index.js.map +1 -1
  19. package/image-source/index.d.ts +2 -2
  20. package/index.js +0 -1
  21. package/index.js.map +1 -1
  22. package/inspector_modules.js +72 -5
  23. package/inspector_modules.js.map +1 -1
  24. package/package.json +1 -1
  25. package/platforms/android/widgets-release.aar +0 -0
  26. package/references.d.ts +1 -1
  27. package/ui/button/index.ios.js.map +1 -1
  28. package/ui/core/view/index.android.d.ts +4 -6
  29. package/ui/core/view/index.android.js +126 -271
  30. package/ui/core/view/index.android.js.map +1 -1
  31. package/ui/core/view/index.d.ts +1 -1
  32. package/ui/core/view/index.ios.d.ts +7 -0
  33. package/ui/core/view/index.ios.js +74 -35
  34. package/ui/core/view/index.ios.js.map +1 -1
  35. package/ui/core/view/view-common.d.ts +37 -5
  36. package/ui/core/view/view-common.js +21 -0
  37. package/ui/core/view/view-common.js.map +1 -1
  38. package/ui/core/view/view-interfaces.d.ts +3 -0
  39. package/ui/frame/index.android.js +55 -2
  40. package/ui/frame/index.android.js.map +1 -1
  41. package/ui/index.d.ts +1 -1
  42. package/ui/layouts/index.d.ts +2 -0
  43. package/ui/layouts/index.js +2 -0
  44. package/ui/layouts/index.js.map +1 -1
  45. package/ui/layouts/liquid-glass/index.android.d.ts +5 -0
  46. package/ui/layouts/liquid-glass/index.android.js +8 -0
  47. package/ui/layouts/liquid-glass/index.android.js.map +1 -0
  48. package/ui/layouts/liquid-glass/index.d.ts +10 -0
  49. package/ui/layouts/liquid-glass/index.ios.d.ts +10 -0
  50. package/ui/layouts/liquid-glass/index.ios.js +59 -0
  51. package/ui/layouts/liquid-glass/index.ios.js.map +1 -0
  52. package/ui/layouts/liquid-glass/liquid-glass-common.d.ts +3 -0
  53. package/ui/layouts/liquid-glass/liquid-glass-common.js +4 -0
  54. package/ui/layouts/liquid-glass/liquid-glass-common.js.map +1 -0
  55. package/ui/layouts/liquid-glass-container/index.android.d.ts +3 -0
  56. package/ui/layouts/liquid-glass-container/index.android.js +4 -0
  57. package/ui/layouts/liquid-glass-container/index.android.js.map +1 -0
  58. package/ui/layouts/liquid-glass-container/index.d.ts +3 -0
  59. package/ui/layouts/liquid-glass-container/index.ios.d.ts +14 -0
  60. package/ui/layouts/liquid-glass-container/index.ios.js +121 -0
  61. package/ui/layouts/liquid-glass-container/index.ios.js.map +1 -0
  62. package/ui/layouts/liquid-glass-container/liquid-glass-container-common.d.ts +4 -0
  63. package/ui/layouts/liquid-glass-container/liquid-glass-container-common.js +5 -0
  64. package/ui/layouts/liquid-glass-container/liquid-glass-container-common.js.map +1 -0
  65. package/ui/list-view/index.android.d.ts +26 -1
  66. package/ui/list-view/index.android.js +701 -23
  67. package/ui/list-view/index.android.js.map +1 -1
  68. package/ui/list-view/index.d.ts +122 -0
  69. package/ui/list-view/index.ios.d.ts +34 -2
  70. package/ui/list-view/index.ios.js +560 -9
  71. package/ui/list-view/index.ios.js.map +1 -1
  72. package/ui/list-view/list-view-common.d.ts +22 -1
  73. package/ui/list-view/list-view-common.js +85 -0
  74. package/ui/list-view/list-view-common.js.map +1 -1
  75. package/ui/styling/background-common.d.ts +4 -4
  76. package/ui/styling/background-common.js +8 -8
  77. package/ui/styling/background-common.js.map +1 -1
  78. package/ui/styling/background.d.ts +0 -3
  79. package/ui/styling/background.ios.d.ts +2 -1
  80. package/ui/styling/background.ios.js +47 -38
  81. package/ui/styling/background.ios.js.map +1 -1
  82. package/ui/styling/css-utils.d.ts +1 -0
  83. package/ui/styling/css-utils.js +15 -4
  84. package/ui/styling/css-utils.js.map +1 -1
  85. package/ui/styling/style/index.d.ts +2 -1
  86. package/ui/styling/style/index.js.map +1 -1
  87. package/ui/styling/style-properties.js +23 -11
  88. package/ui/styling/style-properties.js.map +1 -1
  89. package/ui/tab-view/index.android.js +22 -8
  90. package/ui/tab-view/index.android.js.map +1 -1
  91. package/ui/tab-view/index.ios.d.ts +1 -1
  92. package/ui/tab-view/index.ios.js +28 -9
  93. package/ui/tab-view/index.ios.js.map +1 -1
  94. package/ui/tab-view/tab-view-common.d.ts +2 -0
  95. package/ui/tab-view/tab-view-common.js +5 -0
  96. package/ui/tab-view/tab-view-common.js.map +1 -1
  97. package/utils/common.d.ts +3 -1
  98. package/utils/common.js +9 -3
  99. package/utils/common.js.map +1 -1
  100. package/utils/index.d.ts +6 -0
  101. package/utils/native-helper-for-android.d.ts +14 -3
  102. package/utils/native-helper-for-android.js +57 -54
  103. package/utils/native-helper-for-android.js.map +1 -1
  104. package/utils/native-helper.android.d.ts +3 -3
  105. package/utils/native-helper.android.js +2 -2
  106. package/utils/native-helper.android.js.map +1 -1
  107. package/utils/native-helper.d.ts +22 -5
@@ -1,7 +1,6 @@
1
1
  import { getNativeScriptGlobals } from '../../../globals/global-utils';
2
- import { ViewCommon, isEnabledProperty, originXProperty, originYProperty, isUserInteractionEnabledProperty, testIDProperty, AndroidHelper, statusBarStyleProperty } from './view-common';
2
+ import { ViewCommon, isEnabledProperty, originXProperty, originYProperty, isUserInteractionEnabledProperty, testIDProperty, AndroidHelper, androidOverflowEdgeProperty, statusBarStyleProperty } from './view-common';
3
3
  import { paddingLeftProperty, paddingTopProperty, paddingRightProperty, paddingBottomProperty } from '../../styling/style-properties';
4
- import { Length } from '../../styling/length-shared';
5
4
  import { layout } from '../../../utils';
6
5
  import { Trace } from '../../../trace';
7
6
  import { hiddenProperty } from '../view-base';
@@ -44,6 +43,38 @@ const STATUS_BAR_DARK_BCKG = 1711276032;
44
43
  const modalMap = new Map();
45
44
  let TouchListener;
46
45
  let DialogFragment;
46
+ let OnBackPressedCallback;
47
+ if (SDK_VERSION >= 33) {
48
+ OnBackPressedCallback = androidx.activity.OnBackPressedCallback.extend({
49
+ handleOnBackPressed() {
50
+ console.log('OnBackPressedCallback handleOnBackPressed called');
51
+ const dialog = this['_dialog']?.get();
52
+ if (!dialog) {
53
+ // disable the callback and call super to avoid infinite loop
54
+ this.setEnabled(false);
55
+ return;
56
+ }
57
+ const view = dialog.fragment.owner;
58
+ const args = {
59
+ eventName: 'activityBackPressed',
60
+ object: view,
61
+ activity: view._context,
62
+ cancel: false,
63
+ };
64
+ // Fist fire application.android global event
65
+ getNativeScriptGlobals().events.notify(args);
66
+ if (args.cancel) {
67
+ return;
68
+ }
69
+ view.notify(args);
70
+ if (!args.cancel) {
71
+ this.setEnabled(false);
72
+ dialog.getOnBackPressedDispatcher().onBackPressed();
73
+ this.setEnabled(true);
74
+ }
75
+ },
76
+ });
77
+ }
47
78
  function initializeTouchListener() {
48
79
  if (TouchListener) {
49
80
  return;
@@ -85,6 +116,12 @@ function initializeDialogFragment() {
85
116
  function DialogImpl(fragment, context, themeResId) {
86
117
  var _this = _super.call(this, context, themeResId) || this;
87
118
  _this.fragment = fragment;
119
+ if (SDK_VERSION >= 33 && OnBackPressedCallback) {
120
+ var callback = new OnBackPressedCallback(true);
121
+ callback['_dialog'] = new WeakRef(_this);
122
+ // @ts-ignore
123
+ _this.getOnBackPressedDispatcher().addCallback(_this, callback);
124
+ }
88
125
  return global.__native(_this);
89
126
  }
90
127
  DialogImpl.prototype.onDetachedFromWindow = function () {
@@ -92,6 +129,10 @@ function initializeDialogFragment() {
92
129
  this.fragment = null;
93
130
  };
94
131
  DialogImpl.prototype.onBackPressed = function () {
132
+ if (SDK_VERSION >= 33) {
133
+ _super.prototype.onBackPressed.call(this);
134
+ return;
135
+ }
95
136
  var view = this.fragment.owner;
96
137
  var args = {
97
138
  eventName: 'activityBackPressed',
@@ -110,7 +151,7 @@ function initializeDialogFragment() {
110
151
  }
111
152
  };
112
153
  return DialogImpl;
113
- }(android.app.Dialog));
154
+ }(androidx.appcompat.app.AppCompatDialog));
114
155
  var DialogFragmentImpl = /** @class */ (function (_super) {
115
156
  __extends(DialogFragmentImpl, _super);
116
157
  function DialogFragmentImpl() {
@@ -253,20 +294,21 @@ const INSET_LEFT_CONSUMED = 16;
253
294
  const INSET_TOP_CONSUMED = 20;
254
295
  const INSET_RIGHT_CONSUMED = 24;
255
296
  const INSET_BOTTOM_CONSUMED = 28;
297
+ const OverflowEdgeIgnore = -1;
256
298
  const OverflowEdgeNone = 0;
257
- const OverflowEdgeLeft = 1;
258
- const OverflowEdgeTop = 1 << 1;
259
- const OverflowEdgeRight = 1 << 2;
260
- const OverflowEdgeBottom = 1 << 3;
261
- const OverflowEdgeDontApply = 1 << 4;
262
- const OverflowEdgeLeftDontConsume = 1 << 5;
263
- const OverflowEdgeTopDontConsume = 1 << 6;
264
- const OverflowEdgeRightDontConsume = 1 << 7;
265
- const OverflowEdgeBottomDontConsume = 1 << 8;
266
- const OverflowEdgeAllButLeft = 1 << 9;
267
- const OverflowEdgeAllButTop = 1 << 10;
268
- const OverflowEdgeAllButRight = 1 << 11;
269
- const OverflowEdgeAllButBottom = 1 << 12;
299
+ const OverflowEdgeLeft = 1 << 1;
300
+ const OverflowEdgeTop = 1 << 2;
301
+ const OverflowEdgeRight = 1 << 3;
302
+ const OverflowEdgeBottom = 1 << 4;
303
+ const OverflowEdgeDontApply = 1 << 5;
304
+ const OverflowEdgeLeftDontConsume = 1 << 6;
305
+ const OverflowEdgeTopDontConsume = 1 << 7;
306
+ const OverflowEdgeRightDontConsume = 1 << 8;
307
+ const OverflowEdgeBottomDontConsume = 1 << 9;
308
+ const OverflowEdgeAllButLeft = 1 << 10;
309
+ const OverflowEdgeAllButTop = 1 << 11;
310
+ const OverflowEdgeAllButRight = 1 << 12;
311
+ const OverflowEdgeAllButBottom = 1 << 13;
270
312
  class Inset {
271
313
  constructor(data) {
272
314
  this.data = ArrayBuffer.from(data);
@@ -337,11 +379,6 @@ class Inset {
337
379
  }
338
380
  }
339
381
  export class View extends ViewCommon {
340
- constructor() {
341
- super(...arguments);
342
- this._defaultOverflowEdge = OverflowEdgeNone;
343
- this._defaultOverflowEdgeValue = 'none';
344
- }
345
382
  // TODO: Implement unobserve that detach the touchListener.
346
383
  _observe(type, callback, thisArg) {
347
384
  super._observe(type, callback, thisArg);
@@ -449,128 +486,30 @@ export class View extends ViewCommon {
449
486
  }
450
487
  return manager;
451
488
  }
452
- // @ts-ignore
453
- set androidOverflowEdge(value) {
454
- if (typeof value !== 'string') {
455
- return;
456
- }
489
+ [androidOverflowEdgeProperty.setNative](value) {
457
490
  const nativeView = this.nativeViewProtected;
458
- if (nativeView && nativeView.setOverflowEdge) {
459
- if (value === 'none') {
460
- nativeView.setOverflowEdge(OverflowEdgeNone);
461
- }
462
- else {
463
- const newValue = parseEdges(value);
464
- if (newValue !== null) {
465
- nativeView.setOverflowEdge(newValue);
466
- }
467
- }
491
+ if (typeof value !== 'string' || nativeView === null || nativeView == undefined) {
492
+ return;
468
493
  }
469
- else {
470
- const edge = parseEdges(value);
471
- if (edge === null) {
472
- return;
473
- }
474
- this._defaultOverflowEdgeValue = value;
475
- this._defaultOverflowEdge = edge;
494
+ if (!('setOverflowEdge' in nativeView)) {
495
+ return;
476
496
  }
477
- }
478
- get androidOverflowEdge() {
479
- const nativeView = this.nativeViewProtected;
480
- if (nativeView && nativeView.getOverflowEdge) {
481
- const overflowEdge = nativeView.getOverflowEdge();
482
- switch (overflowEdge) {
483
- case OverflowEdgeNone:
484
- return 'none';
485
- case OverflowEdgeLeft:
486
- return 'left';
487
- case OverflowEdgeTop:
488
- return 'top';
489
- case OverflowEdgeRight:
490
- return 'right';
491
- case OverflowEdgeBottom:
492
- return 'bottom';
493
- case OverflowEdgeDontApply:
494
- return 'dont-apply';
495
- case OverflowEdgeLeftDontConsume:
496
- return 'left-dont-consume';
497
- case OverflowEdgeTopDontConsume:
498
- return 'top-dont-consume';
499
- case OverflowEdgeRightDontConsume:
500
- return 'right-dont-consume';
501
- case OverflowEdgeBottomDontConsume:
502
- return 'bottom-dont-consume';
503
- case OverflowEdgeAllButLeft:
504
- return 'all-but-left';
505
- case OverflowEdgeAllButTop:
506
- return 'all-but-top';
507
- case OverflowEdgeAllButRight:
508
- return 'all-but-right';
509
- case OverflowEdgeAllButBottom:
510
- return 'all-but-bottom';
511
- default:
512
- {
513
- let value = '';
514
- const overflowLeftConsume = (overflowEdge & OverflowEdgeLeft) == OverflowEdgeLeft;
515
- const overflowTopConsume = (overflowEdge & OverflowEdgeTop) == OverflowEdgeTop;
516
- const overflowRightConsume = (overflowEdge & OverflowEdgeRight) == OverflowEdgeRight;
517
- const overflowBottomConsume = (overflowEdge & OverflowEdgeBottom) == OverflowEdgeBottom;
518
- const overflowLeft = (overflowEdge & OverflowEdgeLeftDontConsume) == OverflowEdgeLeftDontConsume;
519
- const overflowTop = (overflowEdge & OverflowEdgeTopDontConsume) == OverflowEdgeTopDontConsume;
520
- const overflowRight = (overflowEdge & OverflowEdgeRightDontConsume) == OverflowEdgeRightDontConsume;
521
- const overflowBottom = (overflowEdge & OverflowEdgeBottomDontConsume) == OverflowEdgeBottomDontConsume;
522
- if (overflowLeftConsume) {
523
- value += 'left';
524
- }
525
- if (overflowTopConsume) {
526
- if (value.length > 0) {
527
- value += ',';
528
- }
529
- value += 'top';
530
- }
531
- if (overflowRightConsume) {
532
- if (value.length > 0) {
533
- value += ',';
534
- }
535
- value += 'right';
536
- }
537
- if (overflowBottomConsume) {
538
- if (value.length > 0) {
539
- value += ',';
540
- }
541
- value += 'bottom';
542
- }
543
- if (overflowLeft) {
544
- value += 'left-dont-consume';
545
- }
546
- if (overflowTop) {
547
- if (value.length > 0) {
548
- value += ',';
549
- }
550
- value += 'top-dont-consume';
551
- }
552
- if (overflowRight) {
553
- if (value.length > 0) {
554
- value += ',';
555
- }
556
- value += 'right-dont-consume';
557
- }
558
- if (overflowBottom) {
559
- if (value.length > 0) {
560
- value += ',';
561
- }
562
- value += 'bottom-dont-consume';
563
- }
497
+ switch (value) {
498
+ case 'none':
499
+ nativeView.setOverflowEdge(OverflowEdgeNone);
500
+ break;
501
+ case 'ignore':
502
+ nativeView.setOverflowEdge(OverflowEdgeIgnore);
503
+ break;
504
+ default:
505
+ {
506
+ const edge = parseEdges(value);
507
+ if (edge != null) {
508
+ nativeView.setOverflowEdge(edge);
564
509
  }
565
- break;
566
- }
567
- }
568
- else {
569
- if (this._defaultOverflowEdgeValue) {
570
- return this._defaultOverflowEdgeValue;
571
- }
510
+ }
511
+ break;
572
512
  }
573
- return 'none';
574
513
  }
575
514
  onLoaded() {
576
515
  this._manager = null;
@@ -614,12 +553,6 @@ export class View extends ViewCommon {
614
553
  if (!this.insetListenerIsSet && this.needsInsetListener) {
615
554
  this.setInsetListener();
616
555
  }
617
- const nativeView = this.nativeViewProtected;
618
- if (typeof this._defaultOverflowEdge === 'number') {
619
- if (nativeView && nativeView.setOverflowEdge) {
620
- nativeView.setOverflowEdge(this._defaultOverflowEdge);
621
- }
622
- }
623
556
  }
624
557
  needsOnLayoutChangeListener() {
625
558
  return this.hasListeners(ViewCommon.layoutChangedEvent);
@@ -1303,17 +1236,21 @@ export class View extends ViewCommon {
1303
1236
  }
1304
1237
  }
1305
1238
  }
1306
- _drawBoxShadow(boxShadow) {
1239
+ _drawBoxShadow(boxShadows) {
1307
1240
  const nativeView = this.nativeViewProtected;
1308
- const config = {
1309
- shadowColor: boxShadow.color.android,
1310
- cornerRadius: Length.toDevicePixels(this.borderRadius, 0.0),
1311
- spreadRadius: boxShadow.spreadRadius,
1312
- blurRadius: boxShadow.blurRadius,
1313
- offsetX: boxShadow.offsetX,
1314
- offsetY: boxShadow.offsetY,
1315
- };
1316
- org.nativescript.widgets.Utils.drawBoxShadow(nativeView, JSON.stringify(config));
1241
+ const valueCount = 6;
1242
+ const nativeArray = Array.create('int', boxShadows.length * valueCount);
1243
+ for (let i = 0, length = boxShadows.length; i < length; i++) {
1244
+ const boxShadow = boxShadows[i];
1245
+ const nativeIndex = i * valueCount;
1246
+ nativeArray[nativeIndex + 0] = boxShadow.color.android;
1247
+ nativeArray[nativeIndex + 1] = boxShadow.spreadRadius;
1248
+ nativeArray[nativeIndex + 2] = boxShadow.blurRadius;
1249
+ nativeArray[nativeIndex + 3] = boxShadow.offsetX;
1250
+ nativeArray[nativeIndex + 4] = boxShadow.offsetY;
1251
+ nativeArray[nativeIndex + 5] = boxShadow.inset ? 1 : 0;
1252
+ }
1253
+ org.nativescript.widgets.Utils.drawBoxShadow(nativeView, nativeArray);
1317
1254
  }
1318
1255
  _redrawNativeBackground(value) {
1319
1256
  if (value instanceof Background) {
@@ -1356,13 +1293,13 @@ export class View extends ViewCommon {
1356
1293
  // prettier-ignore
1357
1294
  const onlyColor = !background.hasBorderWidth()
1358
1295
  && !background.hasBorderRadius()
1359
- && !background.hasBoxShadow()
1296
+ && !background.hasBoxShadows()
1360
1297
  && !background.clipPath
1361
1298
  && !background.image
1362
1299
  && !!background.color;
1363
1300
  this._applyBackground(background, isBorderDrawable, onlyColor, drawable);
1364
- if (background.hasBoxShadow()) {
1365
- this._drawBoxShadow(background.getBoxShadow());
1301
+ if (background.hasBoxShadows()) {
1302
+ this._drawBoxShadow(background.getBoxShadows());
1366
1303
  }
1367
1304
  // TODO: Can we move BorderWidths as separate native setter?
1368
1305
  // This way we could skip setPadding if borderWidth is not changed.
@@ -1410,123 +1347,41 @@ __decorate([
1410
1347
  __metadata("design:paramtypes", []),
1411
1348
  __metadata("design:returntype", void 0)
1412
1349
  ], View.prototype, "requestLayout", null);
1350
+ const edgeMap = {
1351
+ none: OverflowEdgeNone,
1352
+ left: OverflowEdgeLeft,
1353
+ top: OverflowEdgeTop,
1354
+ right: OverflowEdgeRight,
1355
+ bottom: OverflowEdgeBottom,
1356
+ 'dont-apply': OverflowEdgeDontApply,
1357
+ 'left-dont-consume': OverflowEdgeLeftDontConsume,
1358
+ 'top-dont-consume': OverflowEdgeTopDontConsume,
1359
+ 'right-dont-consume': OverflowEdgeRightDontConsume,
1360
+ 'bottom-dont-consume': OverflowEdgeBottomDontConsume,
1361
+ 'all-but-left': OverflowEdgeAllButLeft,
1362
+ 'all-but-top': OverflowEdgeAllButTop,
1363
+ 'all-but-right': OverflowEdgeAllButRight,
1364
+ 'all-but-bottom': OverflowEdgeAllButBottom,
1365
+ };
1413
1366
  function parseEdges(edges) {
1414
- const values = edges.trim().split(',');
1415
- let newValue = -1;
1416
- for (let value of values) {
1417
- const trimmedValue = value.trim();
1418
- switch (trimmedValue) {
1419
- case 'none':
1420
- if (newValue === -1) {
1421
- newValue = OverflowEdgeNone;
1422
- }
1423
- else {
1424
- newValue |= OverflowEdgeNone;
1425
- }
1426
- break;
1427
- case 'left':
1428
- if (newValue === -1) {
1429
- newValue = OverflowEdgeLeft;
1430
- }
1431
- else {
1432
- newValue |= OverflowEdgeLeft;
1433
- }
1434
- break;
1435
- case 'top':
1436
- if (newValue === -1) {
1437
- newValue = OverflowEdgeTop;
1438
- }
1439
- else {
1440
- newValue |= OverflowEdgeTop;
1441
- }
1442
- break;
1443
- case 'right':
1444
- if (newValue === -1) {
1445
- newValue = OverflowEdgeRight;
1446
- }
1447
- else {
1448
- newValue |= OverflowEdgeRight;
1449
- }
1450
- break;
1451
- case 'bottom':
1452
- if (newValue === -1) {
1453
- newValue = OverflowEdgeBottom;
1454
- }
1455
- else {
1456
- newValue |= OverflowEdgeBottom;
1457
- }
1458
- break;
1459
- case 'dont-apply':
1460
- newValue = OverflowEdgeDontApply;
1461
- break;
1462
- case 'left-dont-consume':
1463
- if (newValue === -1) {
1464
- newValue = OverflowEdgeLeftDontConsume;
1465
- }
1466
- else {
1467
- newValue |= OverflowEdgeLeftDontConsume;
1468
- }
1469
- break;
1470
- case 'top-dont-consume':
1471
- if (newValue === -1) {
1472
- newValue = OverflowEdgeTopDontConsume;
1473
- }
1474
- else {
1475
- newValue |= OverflowEdgeTopDontConsume;
1476
- }
1477
- break;
1478
- case 'right-dont-consume':
1479
- if (newValue === -1) {
1480
- newValue = OverflowEdgeRightDontConsume;
1481
- }
1482
- else {
1483
- newValue |= OverflowEdgeRightDontConsume;
1484
- }
1485
- break;
1486
- case 'bottom-dont-consume':
1487
- if (newValue === -1) {
1488
- newValue = OverflowEdgeBottomDontConsume;
1489
- }
1490
- else {
1491
- newValue |= OverflowEdgeBottomDontConsume;
1492
- }
1493
- case 'all-but-left':
1494
- if (newValue === -1) {
1495
- newValue = OverflowEdgeAllButLeft;
1496
- }
1497
- else {
1498
- newValue |= OverflowEdgeAllButLeft;
1499
- }
1500
- case 'all-but-top':
1501
- if (newValue === -1) {
1502
- newValue = OverflowEdgeAllButTop;
1503
- }
1504
- else {
1505
- newValue |= OverflowEdgeAllButTop;
1506
- }
1507
- case 'all-but-right':
1508
- if (newValue === -1) {
1509
- newValue = OverflowEdgeAllButRight;
1510
- }
1511
- else {
1512
- newValue |= OverflowEdgeAllButRight;
1513
- }
1514
- case 'all-but-bottom':
1515
- if (newValue === -1) {
1516
- newValue = OverflowEdgeAllButBottom;
1517
- }
1518
- else {
1519
- newValue |= OverflowEdgeAllButBottom;
1520
- }
1521
- break;
1522
- }
1523
- }
1524
- if (newValue === -1) {
1525
- return null;
1526
- }
1527
- return newValue;
1367
+ let result = 0;
1368
+ const values = edges.split(',');
1369
+ for (const raw of values) {
1370
+ const value = edgeMap[raw.trim()];
1371
+ if (value === undefined)
1372
+ continue;
1373
+ // dont-apply overrides everything else
1374
+ if (value === OverflowEdgeDontApply)
1375
+ return value;
1376
+ result |= value;
1377
+ }
1378
+ return result === 0 ? null : result;
1528
1379
  }
1529
1380
  export class ContainerView extends View {
1381
+ constructor() {
1382
+ super();
1383
+ this.androidOverflowEdge = 'none';
1384
+ }
1530
1385
  }
1531
1386
  export class CustomLayoutView extends ContainerView {
1532
1387
  createNativeView() {