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.
- package/README.md +1 -1
- package/build/@types/index.d.ts +2184 -91
- package/build/BMCollectionView/BMCollectionView.js +976 -195
- package/build/BMCollectionView/BMCollectionViewFlowLayout.js +11 -4
- package/build/BMCoreUI.css +133 -2
- package/build/BMView/BMDragSession.js +1150 -0
- package/build/BMView/BMDragSessionActions.js +121 -0
- package/build/BMView/BMDragSessionPreview.js +1631 -0
- package/build/BMView/BMView_v2.5.js +21 -0
- package/build/BMWindow/BMPopover/BMPopover.js +35 -20
- package/build/BMWindow/BMWindow.js +124 -57
- package/build/images/AlignBottom.png +0 -0
- package/build/images/AlignCenterX.png +0 -0
- package/build/images/AlignCenterY.png +0 -0
- package/build/images/AlignLeading.png +0 -0
- package/build/images/AlignTop.png +0 -0
- package/build/images/AlignTrailing.png +0 -0
- package/build/images/AllConstraints.png +0 -0
- package/build/images/BottomConstraint.png +0 -0
- package/build/images/CenterXConstraint.png +0 -0
- package/build/images/CenterYConstraint.png +0 -0
- package/build/images/CoreUI2.png +0 -0
- package/build/images/CoreUI2@2x.png +0 -0
- package/build/images/Desktop.png +0 -0
- package/build/images/DesktopMini.png +0 -0
- package/build/images/EqualHeight.png +0 -0
- package/build/images/EqualHorizontalSpacing.png +0 -0
- package/build/images/EqualHorizontalSpacingInSuperview.png +0 -0
- package/build/images/EqualVerticalSpacing.png +0 -0
- package/build/images/EqualVerticalSpacingInSuperview.png +0 -0
- package/build/images/EqualWidth.png +0 -0
- package/build/images/HeightConstraint.png +0 -0
- package/build/images/InactiveConstraints.png +0 -0
- package/build/images/Layout.png +0 -0
- package/build/images/LayoutVariables.png +0 -0
- package/build/images/LeftConstraint.png +0 -0
- package/build/images/OwnConstraints.png +0 -0
- package/build/images/Phone.png +0 -0
- package/build/images/PhoneLandscape.png +0 -0
- package/build/images/PhoneLandscapeMini.png +0 -0
- package/build/images/PhoneMini.png +0 -0
- package/build/images/PhonePortrait.png +0 -0
- package/build/images/PhonePortraitMini.png +0 -0
- package/build/images/Properties.png +0 -0
- package/build/images/RightConstraint.png +0 -0
- package/build/images/SubviewConstraints.png +0 -0
- package/build/images/Tablet.png +0 -0
- package/build/images/TabletLandscape.png +0 -0
- package/build/images/TabletLandscapeMini.png +0 -0
- package/build/images/TabletMini.png +0 -0
- package/build/images/TabletPortrait.png +0 -0
- package/build/images/TabletPortraitMini.png +0 -0
- package/build/images/TopConstraint.png +0 -0
- package/build/images/WidthConstraint.png +0 -0
- package/build/index.js +4 -0
- package/lib/@types/BMCoreUI.min.d.ts +2184 -91
- package/lib/BMCoreUI.min.js +1 -1
- 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
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
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
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
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
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
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
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
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
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1231
|
+
this._toolbar?.addEventListener('dbclick', event => {
|
|
1198
1232
|
this.minimizeAnimated(YES);
|
|
1199
1233
|
});
|
|
1200
1234
|
|
|
1201
|
-
this._toolbar
|
|
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
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
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
|
-
|
|
2252
|
-
this.layout();
|
|
2312
|
+
let controller = BMAnimationContextGetCurrent().controllerForObject(this, {node: this.node});
|
|
2253
2313
|
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
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
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
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
|
package/build/images/CoreUI2.png
CHANGED
|
Binary file
|
|
Binary file
|
package/build/images/Desktop.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/build/images/Layout.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/build/images/Phone.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/build/images/Tablet.png
CHANGED
|
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'
|