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 | 794x 88896x 58520x 58520x 58520x 886x 886x 58520x 58520x 6913x 58519x 14793x 14793x 58519x 14061x 8445x 3383x 794x | import defined from "../Core/defined.js";
import ConstantProperty from "./ConstantProperty.js";
function createProperty(
name,
privateName,
subscriptionName,
configurable,
createPropertyCallback,
) {
return {
configurable: configurable,
get: function () {
return this[privateName];
},
set: function (value) {
const oldValue = this[privateName];
const subscription = this[subscriptionName];
if (defined(subscription)) {
subscription();
this[subscriptionName] = undefined;
}
const hasValue = value !== undefined;
if (
hasValue &&
(!defined(value) || !defined(value.getValue)) &&
defined(createPropertyCallback)
) {
value = createPropertyCallback(value);
}
if (oldValue !== value) {
this[privateName] = value;
this._definitionChanged.raiseEvent(this, name, value, oldValue);
}
if (defined(value) && defined(value.definitionChanged)) {
this[subscriptionName] = value.definitionChanged.addEventListener(
function () {
this._definitionChanged.raiseEvent(this, name, value, value);
},
this,
);
}
},
};
}
function createConstantProperty(value) {
return new ConstantProperty(value);
}
/**
* Used to consistently define all DataSources graphics objects.
* This is broken into two functions because the Chrome profiler does a better
* job of optimizing lookups if it notices that the string is constant throughout the function.
* @private
*/
function createPropertyDescriptor(name, configurable, createPropertyCallback) {
//Safari 8.0.3 has a JavaScript bug that causes it to confuse two variables and treat them as the same.
//The two extra toString calls work around the issue.
return createProperty(
name,
`_${name.toString()}`,
`_${name.toString()}Subscription`,
configurable ?? false,
createPropertyCallback ?? createConstantProperty,
);
}
export default createPropertyDescriptor;
|