bm-core-ui 2.12.0-beta.3 → 2.12.0-beta.4

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 (58) hide show
  1. package/README.md +1 -1
  2. package/build/@types/index.d.ts +2184 -91
  3. package/build/BMCollectionView/BMCollectionView.js +976 -195
  4. package/build/BMCollectionView/BMCollectionViewFlowLayout.js +11 -4
  5. package/build/BMCoreUI.css +133 -2
  6. package/build/BMView/BMDragSession.js +1150 -0
  7. package/build/BMView/BMDragSessionActions.js +121 -0
  8. package/build/BMView/BMDragSessionPreview.js +1631 -0
  9. package/build/BMView/BMView_v2.5.js +21 -0
  10. package/build/BMWindow/BMPopover/BMPopover.js +35 -20
  11. package/build/BMWindow/BMWindow.js +124 -57
  12. package/build/images/AlignBottom.png +0 -0
  13. package/build/images/AlignCenterX.png +0 -0
  14. package/build/images/AlignCenterY.png +0 -0
  15. package/build/images/AlignLeading.png +0 -0
  16. package/build/images/AlignTop.png +0 -0
  17. package/build/images/AlignTrailing.png +0 -0
  18. package/build/images/AllConstraints.png +0 -0
  19. package/build/images/BottomConstraint.png +0 -0
  20. package/build/images/CenterXConstraint.png +0 -0
  21. package/build/images/CenterYConstraint.png +0 -0
  22. package/build/images/CoreUI2.png +0 -0
  23. package/build/images/CoreUI2@2x.png +0 -0
  24. package/build/images/Desktop.png +0 -0
  25. package/build/images/DesktopMini.png +0 -0
  26. package/build/images/EqualHeight.png +0 -0
  27. package/build/images/EqualHorizontalSpacing.png +0 -0
  28. package/build/images/EqualHorizontalSpacingInSuperview.png +0 -0
  29. package/build/images/EqualVerticalSpacing.png +0 -0
  30. package/build/images/EqualVerticalSpacingInSuperview.png +0 -0
  31. package/build/images/EqualWidth.png +0 -0
  32. package/build/images/HeightConstraint.png +0 -0
  33. package/build/images/InactiveConstraints.png +0 -0
  34. package/build/images/Layout.png +0 -0
  35. package/build/images/LayoutVariables.png +0 -0
  36. package/build/images/LeftConstraint.png +0 -0
  37. package/build/images/OwnConstraints.png +0 -0
  38. package/build/images/Phone.png +0 -0
  39. package/build/images/PhoneLandscape.png +0 -0
  40. package/build/images/PhoneLandscapeMini.png +0 -0
  41. package/build/images/PhoneMini.png +0 -0
  42. package/build/images/PhonePortrait.png +0 -0
  43. package/build/images/PhonePortraitMini.png +0 -0
  44. package/build/images/Properties.png +0 -0
  45. package/build/images/RightConstraint.png +0 -0
  46. package/build/images/SubviewConstraints.png +0 -0
  47. package/build/images/Tablet.png +0 -0
  48. package/build/images/TabletLandscape.png +0 -0
  49. package/build/images/TabletLandscapeMini.png +0 -0
  50. package/build/images/TabletMini.png +0 -0
  51. package/build/images/TabletPortrait.png +0 -0
  52. package/build/images/TabletPortraitMini.png +0 -0
  53. package/build/images/TopConstraint.png +0 -0
  54. package/build/images/WidthConstraint.png +0 -0
  55. package/build/index.js +4 -0
  56. package/lib/@types/BMCoreUI.min.d.ts +2184 -91
  57. package/lib/BMCoreUI.min.js +1 -1
  58. package/package.json +2 -2
@@ -11,6 +11,7 @@ import {BMViewport} from './BMViewport'
11
11
  import {BMLayoutAttribute, BMLayoutConstraintRelation, BMLayoutConstraint, BMLayoutConstraintPriorityRequired, BMLayoutConstraintKind} from './BMLayoutConstraint_v2.5'
12
12
  import * as kiwi from 'kiwi.js'
13
13
  import { BMKeyboardShortcutModifier } from '../BMWindow/BMKeyboardShortcut'
14
+ import { BMDragSession } from './BMDragSession'
14
15
 
15
16
 
16
17
  // When set to YES, this will cause view to use transforms instead of left/right for positioning
@@ -2380,6 +2381,26 @@ BMView.prototype = BMExtend(BMView.prototype, {
2380
2381
 
2381
2382
  // #endregion
2382
2383
 
2384
+ // #region Gestures
2385
+
2386
+ /**
2387
+ * Initiates a drag session with the specified drag delegate from a touch or mouse event.
2388
+ * @param event <MouseEvent or TouchEvent> The event that triggered the drag gesture.
2389
+ * {
2390
+ * @param delegate <BMDragDelegate> The drag session delegate supplying items and
2391
+ * handling events for the session.
2392
+ * @param touchIdentifier <Number, nullable> If the event is a touch event and this is specified,
2393
+ * it represents the identifier of the touch point that
2394
+ * will be tracked throughout the drag session. If not
2395
+ * specified, the first changed touch will be used.
2396
+ * }
2397
+ */
2398
+ performDragWithEvent(event, {delegate, touchIdentifier}) {
2399
+ BMDragSession._beginDragWithEvent(event, {dragDelegate: delegate, view: this, touchIdentifier});
2400
+ },
2401
+
2402
+ // #endregion
2403
+
2383
2404
  // #region Constraints and Cassowary Variables
2384
2405
 
2385
2406
 
@@ -1127,12 +1127,16 @@ BMPopover.prototype = BMExtend(Object.create(BMWindow.prototype), {
1127
1127
  }
1128
1128
 
1129
1129
  if (!this._isDetached) {
1130
+ const popoverLayers = [this.contentNode, this._background, this._dropShadowContainer];
1131
+
1130
1132
  // If not detached, apply a displacement to this popover that is half of the regular
1131
1133
  // drag distance, until this popover is fully detached
1132
- BMHook(this.node, {
1133
- translateX: `${(toPosition.x - this._initialDragPosition.x) / 3 | 0}px`,
1134
- translateY: `${(toPosition.y - this._initialDragPosition.y) / 3 | 0}px`,
1135
- });
1134
+ for (const node of popoverLayers) {
1135
+ BMHook(node, {
1136
+ translateX: `${(toPosition.x - this._initialDragPosition.x) / 3 | 0}px`,
1137
+ translateY: `${(toPosition.y - this._initialDragPosition.y) / 3 | 0}px`,
1138
+ });
1139
+ }
1136
1140
 
1137
1141
  const distance = toPosition.distanceToPoint(this._initialDragPosition);
1138
1142
  if (distance > BMPopoverDragThreshold) {
@@ -1158,11 +1162,15 @@ BMPopover.prototype = BMExtend(Object.create(BMWindow.prototype), {
1158
1162
  // If the drag operation didn't cause this popover to detach, animate it back to its
1159
1163
  // regular position
1160
1164
  BMAnimateWithBlock(() => {
1161
- const controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
1162
- controller.registerBuiltInPropertiesWithDictionary({
1163
- translateX: '0px',
1164
- translateY: '0px',
1165
- });
1165
+ const popoverLayers = [this.contentNode, this._background, this._dropShadowContainer];
1166
+
1167
+ for (const node of popoverLayers) {
1168
+ const controller = BMAnimationContextGetCurrent().controllerForObject(node, {node});
1169
+ controller.registerBuiltInPropertiesWithDictionary({
1170
+ translateX: '0px',
1171
+ translateY: '0px',
1172
+ });
1173
+ }
1166
1174
  }, {duration: 500, easing: 'easeInOutQuart'});
1167
1175
  }
1168
1176
 
@@ -1194,19 +1202,24 @@ BMPopover.prototype = BMExtend(Object.create(BMWindow.prototype), {
1194
1202
 
1195
1203
  let promise;
1196
1204
 
1205
+ const popoverLayers = [this.contentNode, this._background, this._dropShadowContainer];
1206
+
1197
1207
  // If a temporary transform was applied to this node, clear it
1198
- if (BMAnimationContextGetCurrent()) {
1199
- const controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
1200
- controller.registerBuiltInPropertiesWithDictionary({
1201
- translateX: '0px',
1202
- translateY: '0px',
1203
- });
1208
+ for (const node of popoverLayers) {
1209
+ if (BMAnimationContextGetCurrent()) {
1210
+ const controller = BMAnimationContextGetCurrent().controllerForObject(node, {node});
1211
+ controller.registerBuiltInPropertiesWithDictionary({
1212
+ translateX: '0px',
1213
+ translateY: '0px',
1214
+ });
1204
1215
 
1205
- promise = new Promise(r => BMAnimationContextAddCompletionHandler(r));
1206
- }
1207
- else {
1208
- BMHook(this.node, {translateX: '0px', translateY: '0px'});
1216
+ promise = new Promise(r => BMAnimationContextAddCompletionHandler(r));
1217
+ }
1218
+ else {
1219
+ BMHook(node, {translateX: '0px', translateY: '0px'});
1220
+ }
1209
1221
  }
1222
+
1210
1223
 
1211
1224
  if (animationContextStarted) {
1212
1225
  BMAnimationApplyBlocking(YES);
@@ -1229,7 +1242,9 @@ BMPopover.prototype = BMExtend(Object.create(BMWindow.prototype), {
1229
1242
  for (const layer of popoverLayers) {
1230
1243
  BMHook(layer, {scaleX: .75, scaleY: .75, opacity: 0});
1231
1244
 
1232
- __BMVelocityAnimate(layer, {scaleX: 1, scaleY: 1, opacity: 1}, {duration: 300, easing: [0,1.59,.49,1], complete: first ? completionHandler : undefined}, YES);
1245
+ __BMVelocityAnimate(layer, {scaleX: 1, scaleY: 1, opacity: 1}, {duration: 300, easing: [0,1.59,.49,1], complete: first ? completionHandler : undefined}, YES)?.then(() => {
1246
+ BMHook(layer, {scaleX: 1, scaleY: 1, opacity: 1});
1247
+ });
1233
1248
  first = NO;
1234
1249
  }
1235
1250
  },
@@ -3,7 +3,7 @@
3
3
  import {YES, NO, BMExtend, BMCopyProperties} from '../Core/BMCoreUI'
4
4
  import {BMPointMake} from '../Core/BMPoint'
5
5
  import {BMRectMake, BMRectMakeWithNodeFrame, BMRectMakeWithOrigin} from '../Core/BMRect'
6
- import {BMAnimateWithBlock, BMAnimationContextGetCurrent, BMAnimationContextEnableWebAnimations, __BMVelocityAnimate, BMHook} from '../Core/BMAnimationContext'
6
+ import {BMAnimateWithBlock, BMAnimationContextGetCurrent, BMAnimationContextEnableWebAnimations, __BMVelocityAnimate, BMHook, BMAnimationContextBeginStatic, BMAnimationApply, BMAnimationBeginWithDuration, BMAnimationContextAddCompletionHandler} from '../Core/BMAnimationContext'
7
7
  import {BMView, BMViewColorScheme} from '../BMView/BMView_v2.5'
8
8
  import {BMLayoutOrientation} from '../BMView/BMLayoutSizeClass'
9
9
  import { BMSizeMake } from '../Core/BMSize'
@@ -746,16 +746,30 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
746
746
  set frame(frame) {
747
747
  if (this._fullScreen) return;
748
748
 
749
+ const currentFrame = this._frame ?? frame;
750
+
749
751
  frame = frame.integralRect;
750
752
 
751
753
  this._frame = frame.copy();
752
754
 
753
- BMCopyProperties(this._window.style, {
754
- left: frame.origin.x + 'px',
755
- top: frame.origin.y + 'px',
756
- width: frame.size.width + 'px',
757
- height: frame.size.height + 'px'
758
- });
755
+ let context = BMAnimationContextGetCurrent();
756
+ if (context) {
757
+ const controller = context.controllerForObject(this, {node: this._window});
758
+ controller.registerBuiltInPropertiesWithDictionary({
759
+ left: [frame.origin.x + 'px', currentFrame.origin.x + 'px'],
760
+ top: [frame.origin.y + 'px', currentFrame.origin.y + 'px'],
761
+ width: [frame.size.width + 'px', currentFrame.size.width + 'px'],
762
+ height: [frame.size.height + 'px', currentFrame.size.height + 'px']
763
+ });
764
+ }
765
+ else {
766
+ BMCopyProperties(this._window.style, {
767
+ left: frame.origin.x + 'px',
768
+ top: frame.origin.y + 'px',
769
+ width: frame.size.width + 'px',
770
+ height: frame.size.height + 'px'
771
+ });
772
+ }
759
773
 
760
774
  switch (this.frameHorizontalPositionLayoutAttribute) {
761
775
  case BMLayoutAttribute.Left:
@@ -849,6 +863,26 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
849
863
  return this._toolbar;
850
864
  },
851
865
 
866
+ /**
867
+ * Defined for non-modal windows. The drag handle used to resize the window.
868
+ */
869
+ _dragHandle: undefined, // <DOMNode>
870
+
871
+ /**
872
+ * Controls whether the window resize handle appears.
873
+ */
874
+ _resizable: YES, // <Boolean>
875
+
876
+ get resizable() {
877
+ return this._resizable;
878
+ },
879
+ set resizable(resizable) {
880
+ if (this._dragHandle) {
881
+ this._dragHandle.style.display = resizable ? 'block' : 'none';
882
+ }
883
+ this._resizable = resizable;
884
+ },
885
+
852
886
  /**
853
887
  * The window overlay.
854
888
  */
@@ -1069,7 +1103,7 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
1069
1103
  this.widthConstraint.isActive = YES;
1070
1104
  this.heightConstraint.isActive = YES;
1071
1105
 
1072
- if (!modal && withToolbar) {
1106
+ if (!modal) {
1073
1107
  // In non-modal mode, allow the toolbar to move the window
1074
1108
  this.maxLeftConstraint = this.left.greaterThanOrEqualTo(0);
1075
1109
  this.maxTopConstraint = this.top.greaterThanOrEqualTo(0);
@@ -1086,7 +1120,7 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
1086
1120
  window.addEventListener('resize', this._boundViewportDidResize = this._viewportDidResize.bind(this));
1087
1121
 
1088
1122
  // Initialize dragging touch events for the toolbar
1089
- this._toolbar.addEventListener('mousedown', event => {
1123
+ this._toolbar?.addEventListener('mousedown', event => {
1090
1124
  // Don't process events originating from children of the toolbar
1091
1125
  if (event.target != this._toolbar) return;
1092
1126
 
@@ -1130,7 +1164,7 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
1130
1164
 
1131
1165
  let touchDragPoint;
1132
1166
 
1133
- this._toolbar.addEventListener('touchstart', /** @type {TouchEvent} */ event => {
1167
+ this._toolbar?.addEventListener('touchstart', /** @type {TouchEvent} */ event => {
1134
1168
  // If there is already a drag in progress, don't process this new event
1135
1169
  if (typeof touchDragPoint !== 'undefined') {
1136
1170
  return;
@@ -1194,11 +1228,11 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
1194
1228
  event.preventDefault();
1195
1229
  });
1196
1230
 
1197
- this._toolbar.addEventListener('dbclick', event => {
1231
+ this._toolbar?.addEventListener('dbclick', event => {
1198
1232
  this.minimizeAnimated(YES);
1199
1233
  });
1200
1234
 
1201
- this._toolbar.addEventListener('wheel', /** @param {WheelEvent} event */ event => {
1235
+ this._toolbar?.addEventListener('wheel', /** @param {WheelEvent} event */ event => {
1202
1236
  // Scrolling on the toolbar should enter showcase
1203
1237
  if (event.deltaY > 0) {
1204
1238
  // Allow the delegate to suppress this behaviour
@@ -2191,7 +2225,15 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
2191
2225
  duration: _BMWindowAnimationDurationDefault,
2192
2226
  easing: _BMWindowAnimationEasingDefault,
2193
2227
  display: 'block'
2194
- }, YES);
2228
+ }, YES)?.then(() => {
2229
+ BMHook(this._window, {
2230
+ opacity: 1,
2231
+ translateX: '0px',
2232
+ translateY: '0px',
2233
+ scaleX: 1,
2234
+ scaleY: 1
2235
+ });
2236
+ });
2195
2237
 
2196
2238
  const title = animationNode.querySelector('span');
2197
2239
  __BMVelocityAnimate(title, {translateX: ['30px', '0px']}, {duration: _BMWindowAnimationDurationDefault, easing: _BMWindowAnimationEasingDefault}, YES);
@@ -2238,30 +2280,48 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
2238
2280
 
2239
2281
  var self = this;
2240
2282
 
2283
+ BMAnimationContextBeginStatic();
2284
+
2241
2285
  this.widthConstraint.constant = window.innerWidth;
2242
2286
  this.heightConstraint.constant = window.innerHeight;
2243
2287
  this.leftConstraint.constant = 0;
2244
2288
  this.topConstraint.constant = 0;
2289
+
2290
+ BMAnimationApply();
2245
2291
 
2246
2292
  if (animated) {
2247
- BMAnimateWithBlock(() => {
2248
- let controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
2249
- controller.registerBuiltInPropertiesWithDictionary({left: '0px', top: '0px', width: window.innerWidth + 'px', height: window.innerHeight + 'px'});
2293
+ const completionHandler = function () {
2294
+ if (self.delegate && self.delegate.windowDidEnterFullScreen) self.delegate.windowDidEnterFullScreen(self);
2295
+ if (args && args.completionHandler) args.completionHandler();
2296
+
2297
+ self._window.classList.add('BMFullScreenWindow');
2298
+ };
2299
+
2300
+ // If an animation context is already started, reuse it
2301
+ let contextStarted = NO;
2302
+ if (!BMAnimationContextGetCurrent()) {
2303
+ contextStarted = YES;
2304
+ BMAnimationBeginWithDuration(300, {duration: 300, easing: 'easeInOutQuart',
2305
+ complete: completionHandler
2306
+ });
2307
+ }
2308
+ else {
2309
+ BMAnimationContextAddCompletionHandler(completionHandler);
2310
+ }
2250
2311
 
2251
- const frame = this.frame.copy();
2252
- this.layout();
2312
+ let controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
2253
2313
 
2254
- // When the window contains elements whose intrinsic size must be measured, upon finishing the layout, the window will continue to keep its
2255
- // temporary frame used for measuring, so it has to be reset prior to the animation starting
2256
- BMCopyProperties(this.node.style, {left: frame.origin.x + 'px', top: frame.origin.y + 'px', width: frame.size.width + 'px', height: frame.size.height + 'px'})
2257
- }, {duration: 300, easing: 'easeInOutQuart',
2258
- complete: function () {
2259
- if (self.delegate && self.delegate.windowDidEnterFullScreen) self.delegate.windowDidEnterFullScreen(self);
2260
- if (args && args.completionHandler) args.completionHandler();
2261
-
2262
- self._window.classList.add('BMFullScreenWindow');
2263
- }
2264
- });
2314
+ const frame = this.frame.copy();
2315
+ this.layout();
2316
+ controller.registerBuiltInPropertiesWithDictionary({left: '0px', top: '0px', width: window.innerWidth + 'px', height: window.innerHeight + 'px'});
2317
+
2318
+ // When the window contains elements whose intrinsic size must be measured, upon finishing the layout, the window will continue to keep its
2319
+ // temporary frame used for measuring, so it has to be reset prior to the animation starting
2320
+ BMCopyProperties(this.node.style, {left: frame.origin.x + 'px', top: frame.origin.y + 'px', width: frame.size.width + 'px', height: frame.size.height + 'px'})
2321
+
2322
+ if (contextStarted) {
2323
+ BMAnimationApply();
2324
+ }
2265
2325
  }
2266
2326
  else {
2267
2327
  self._window.classList.add('BMFullScreenWindow');
@@ -2296,44 +2356,51 @@ BMWindow.prototype = BMExtend(Object.create(BMView.prototype), {
2296
2356
 
2297
2357
  var self = this;
2298
2358
 
2359
+ BMAnimationContextBeginStatic();
2360
+
2299
2361
  this.widthConstraint.constant = this.frame.width;
2300
2362
  this.heightConstraint.constant = this.frame.height;
2301
2363
  this.leftConstraint.constant = this.frame.left;
2302
2364
  this.topConstraint.constant = this.frame.top;
2365
+
2366
+ BMAnimationApply();
2303
2367
 
2304
2368
  if (animated) {
2305
2369
  self._window.classList.remove('BMFullScreenWindow');
2306
2370
  var frame = self.frame;
2307
2371
  BMCopyProperties(self._window.style, {left: '0px', top: '0px', width: window.innerWidth + 'px', height: window.innerHeight + 'px'});
2308
- /*__BMVelocityAnimate(this._window, {left: frame.origin.x + 'px', top: frame.origin.y + 'px', width: frame.size.width + 'px', height: frame.size.height + 'px'}, {
2309
- duration: 300,
2310
- easing: 'easeInOutQuart',
2311
- complete: function () {
2312
- if (self.delegate && self.delegate.windowDidExitFullScreen) self.delegate.windowDidExitFullScreen(self);
2313
- if (args && args.completionHandler) args.completionHandler();
2314
-
2315
- self.frame = self.frame;
2316
- }
2317
- });*/
2318
2372
 
2319
- BMAnimateWithBlock(() => {
2320
- let controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
2321
- controller.registerBuiltInProperty('left', {withValue: frame.origin.x + 'px'});
2322
- controller.registerBuiltInProperty('top', {withValue: frame.origin.y + 'px'});
2323
- controller.registerBuiltInProperty('width', {withValue: frame.size.width + 'px'});
2324
- controller.registerBuiltInProperty('height', {withValue: frame.size.height + 'px'});
2325
- this._fullScreen = NO;
2326
- this.layout();
2327
- BMCopyProperties(self._window.style, {left: '0px', top: '0px', width: window.innerWidth + 'px', height: window.innerHeight + 'px'});
2328
- }, {
2329
- duration: 300, easing: 'easeInOutQuart',
2330
- complete: function () {
2331
- if (self.delegate && self.delegate.windowDidExitFullScreen) self.delegate.windowDidExitFullScreen(self);
2332
- if (args && args.completionHandler) args.completionHandler();
2333
-
2334
- self.frame = self.frame;
2335
- }
2336
- });
2373
+ const completionHandler = function () {
2374
+ if (self.delegate && self.delegate.windowDidExitFullScreen) self.delegate.windowDidExitFullScreen(self);
2375
+ if (args && args.completionHandler) args.completionHandler();
2376
+
2377
+ self.frame = self.frame;
2378
+ };
2379
+
2380
+ // If an animation context is already started, reuse it
2381
+ let contextStarted = NO;
2382
+ if (!BMAnimationContextGetCurrent()) {
2383
+ contextStarted = YES;
2384
+ BMAnimationBeginWithDuration(300, {duration: 300, easing: 'easeInOutQuart',
2385
+ complete: completionHandler
2386
+ });
2387
+ }
2388
+ else {
2389
+ BMAnimationContextAddCompletionHandler(completionHandler);
2390
+ }
2391
+
2392
+ this._fullScreen = NO;
2393
+ this.layout();
2394
+ let controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
2395
+ controller.registerBuiltInProperty('left', {withValue: frame.origin.x + 'px'});
2396
+ controller.registerBuiltInProperty('top', {withValue: frame.origin.y + 'px'});
2397
+ controller.registerBuiltInProperty('width', {withValue: frame.size.width + 'px'});
2398
+ controller.registerBuiltInProperty('height', {withValue: frame.size.height + 'px'});
2399
+ BMCopyProperties(self._window.style, {left: '0px', top: '0px', width: window.innerWidth + 'px', height: window.innerHeight + 'px'});
2400
+
2401
+ if (contextStarted) {
2402
+ BMAnimationApply();
2403
+ }
2337
2404
  }
2338
2405
  else {
2339
2406
  self._window.classList.remove('BMFullScreenWindow');
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/build/index.js CHANGED
@@ -9,6 +9,10 @@ export * from './Core/BMIndexPath'
9
9
  export * from './Core/BMKeyPath'
10
10
  export * from './Core/BMColor'
11
11
 
12
+ export * from './BMView/BMDragSession';
13
+ export {BMDragPreview} from './BMView/BMDragSessionPreview';
14
+ export {BMDragSessionActionKind, BMDropSessionActionKind} from './BMView/BMDragSessionActions';
15
+
12
16
  export * from './BMView/BMLayoutSizeClass'
13
17
  export * from './BMView/BMViewport'
14
18
  export * from './BMView/BMLayoutConstraint_v2.5'