12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import defaultValue from "../Core/defaultValue.js";
- import defined from "../Core/defined.js";
- import DeveloperError from "../Core/DeveloperError.js";
- import Event from "../Core/Event.js";
- import knockout from "../ThirdParty/knockout.js";
- function createCommand(func, canExecute) {
-
- if (!defined(func)) {
- throw new DeveloperError("func is required.");
- }
-
- canExecute = defaultValue(canExecute, true);
- var beforeExecute = new Event();
- var afterExecute = new Event();
- function command() {
-
- if (!command.canExecute) {
- throw new DeveloperError("Cannot execute command, canExecute is false.");
- }
-
- var commandInfo = {
- args: arguments,
- cancel: false,
- };
- var result;
- beforeExecute.raiseEvent(commandInfo);
- if (!commandInfo.cancel) {
- result = func.apply(null, arguments);
- afterExecute.raiseEvent(result);
- }
- return result;
- }
- command.canExecute = canExecute;
- knockout.track(command, ["canExecute"]);
- Object.defineProperties(command, {
- beforeExecute: {
- value: beforeExecute,
- },
- afterExecute: {
- value: afterExecute,
- },
- });
- return command;
- }
- export default createCommand;
|