Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | 82x 6x 82x 82x 82x 82x 82x 82x 82x 80x 82x 82x 81x 1x 82x 82x 80x 1x 79x 82x 82x 82x 82x 1x 8x 2x 1x 1x 76x 1x 1x 1x 80x 80x | import {
defined,
destroyObject,
DeveloperError,
Fullscreen,
getElement,
} from "@cesium/engine";
import knockout from "../ThirdParty/knockout.js";
import createCommand from "../createCommand.js";
/**
* The view model for {@link FullscreenButton}.
* @alias FullscreenButtonViewModel
* @constructor
*
* @param {Element|string} [fullscreenElement=document.body] The element or id to be placed into fullscreen mode.
* @param {Element|string} [container] The DOM element or ID that will contain the widget.
*/
function FullscreenButtonViewModel(fullscreenElement, container) {
if (!defined(container)) {
container = document.body;
}
container = getElement(container);
const that = this;
const tmpIsFullscreen = knockout.observable(Fullscreen.fullscreen);
const tmpIsEnabled = knockout.observable(Fullscreen.enabled);
const ownerDocument = container.ownerDocument;
/**
* Gets whether or not fullscreen mode is active. This property is observable.
*
* @type {boolean}
*/
this.isFullscreen = undefined;
knockout.defineProperty(this, "isFullscreen", {
get: function () {
return tmpIsFullscreen();
},
});
/**
* Gets or sets whether or not fullscreen functionality should be enabled. This property is observable.
*
* @type {boolean}
* @see Fullscreen.enabled
*/
this.isFullscreenEnabled = undefined;
knockout.defineProperty(this, "isFullscreenEnabled", {
get: function () {
return tmpIsEnabled();
},
set: function (value) {
tmpIsEnabled(value && Fullscreen.enabled);
},
});
/**
* Gets the tooltip. This property is observable.
*
* @type {string}
*/
this.tooltip = undefined;
knockout.defineProperty(this, "tooltip", function () {
if (!this.isFullscreenEnabled) {
return "Full screen unavailable";
}
return tmpIsFullscreen() ? "Exit full screen" : "Full screen";
});
this._command = createCommand(
function () {
if (Fullscreen.fullscreen) {
Fullscreen.exitFullscreen();
} else {
Fullscreen.requestFullscreen(that._fullscreenElement);
}
},
knockout.getObservable(this, "isFullscreenEnabled"),
);
this._fullscreenElement = getElement(fullscreenElement) ?? ownerDocument.body;
this._callback = function () {
tmpIsFullscreen(Fullscreen.fullscreen);
};
ownerDocument.addEventListener(Fullscreen.changeEventName, this._callback);
}
Object.defineProperties(FullscreenButtonViewModel.prototype, {
/**
* Gets or sets the HTML element to place into fullscreen mode when the
* corresponding button is pressed.
* @memberof FullscreenButtonViewModel.prototype
*
* @type {Element}
*/
fullscreenElement: {
//TODO:@exception {DeveloperError} value must be a valid HTML Element.
get: function () {
return this._fullscreenElement;
},
set: function (value) {
//>>includeStart('debug', pragmas.debug);
if (!(value instanceof Element)) {
throw new DeveloperError("value must be a valid Element.");
}
//>>includeEnd('debug');
this._fullscreenElement = value;
},
},
/**
* Gets the Command to toggle fullscreen mode.
* @memberof FullscreenButtonViewModel.prototype
*
* @type {Command}
*/
command: {
get: function () {
return this._command;
},
},
});
/**
* @returns {boolean} true if the object has been destroyed, false otherwise.
*/
FullscreenButtonViewModel.prototype.isDestroyed = function () {
return false;
};
/**
* Destroys the view model. Should be called to
* properly clean up the view model when it is no longer needed.
*/
FullscreenButtonViewModel.prototype.destroy = function () {
document.removeEventListener(Fullscreen.changeEventName, this._callback);
destroyObject(this);
};
export default FullscreenButtonViewModel;
|