@doenet/v06-to-v07 0.7.20-dev.318 → 0.7.20-dev.319
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/{index-BBh2EPqg.js → index-CyEKEyxP.js} +776 -730
- package/{index-BBh2EPqg.js.map → index-CyEKEyxP.js.map} +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/{sha256-C0vj3HDn-B-uuLxXp-p9edzkPO.js → sha256-C0vj3HDn-BN2lLQ1h-1QSWShIW.js} +2 -2
- package/{sha256-C0vj3HDn-B-uuLxXp-p9edzkPO.js.map → sha256-C0vj3HDn-BN2lLQ1h-1QSWShIW.js.map} +1 -1
|
@@ -40963,7 +40963,7 @@ async function cidFromArrayBuffer(data) {
|
|
|
40963
40963
|
await crypto.subtle.digest("SHA-256", new Uint8Array());
|
|
40964
40964
|
digest = (data2) => crypto.subtle.digest("SHA-256", data2);
|
|
40965
40965
|
} catch (e22) {
|
|
40966
|
-
const sha256 = (await import("./sha256-C0vj3HDn-
|
|
40966
|
+
const sha256 = (await import("./sha256-C0vj3HDn-BN2lLQ1h-1QSWShIW.js").then((n2) => n2.s)).default;
|
|
40967
40967
|
digest = (data2) => sha256(data2, {
|
|
40968
40968
|
asBytes: true
|
|
40969
40969
|
});
|
|
@@ -50806,6 +50806,711 @@ function returnDefaultArrayVarNameFromPropIndex(numDim, arrayEntryPrefix) {
|
|
|
50806
50806
|
};
|
|
50807
50807
|
}
|
|
50808
50808
|
}
|
|
50809
|
+
function getStaleStateVariableValue() {
|
|
50810
|
+
return this.svComponent.coreFunctions.getStateVariableValue({
|
|
50811
|
+
component: this.svComponent,
|
|
50812
|
+
stateVariable: this.svVarName
|
|
50813
|
+
});
|
|
50814
|
+
}
|
|
50815
|
+
const STALE_VALUE_DESCRIPTOR = Object.freeze({
|
|
50816
|
+
get: getStaleStateVariableValue,
|
|
50817
|
+
configurable: true
|
|
50818
|
+
});
|
|
50819
|
+
function installStaleValueGetter(stateVarObj) {
|
|
50820
|
+
delete stateVarObj.value;
|
|
50821
|
+
Object.defineProperty(stateVarObj, "value", STALE_VALUE_DESCRIPTOR);
|
|
50822
|
+
}
|
|
50823
|
+
async function entryGetValueViaGetEntryValues() {
|
|
50824
|
+
const arrayStateVarObj = this.svComponent.state[this.arrayStateVariable];
|
|
50825
|
+
return await arrayStateVarObj.getEntryValues({
|
|
50826
|
+
varName: this.svVarName
|
|
50827
|
+
});
|
|
50828
|
+
}
|
|
50829
|
+
async function entryGetValueFromArrayValues() {
|
|
50830
|
+
const arrayStateVarObj = this.svComponent.state[this.arrayStateVariable];
|
|
50831
|
+
const arrayKeys = await this.arrayKeys;
|
|
50832
|
+
if (arrayKeys.length === 0) {
|
|
50833
|
+
return;
|
|
50834
|
+
}
|
|
50835
|
+
const value = [];
|
|
50836
|
+
for (const arrayKey of arrayKeys) {
|
|
50837
|
+
value.push(arrayStateVarObj.getArrayValue({ arrayKey }));
|
|
50838
|
+
}
|
|
50839
|
+
if (value.length === 1) {
|
|
50840
|
+
return value[0];
|
|
50841
|
+
} else {
|
|
50842
|
+
return value;
|
|
50843
|
+
}
|
|
50844
|
+
}
|
|
50845
|
+
function getEntryArrayKeys() {
|
|
50846
|
+
return (async () => {
|
|
50847
|
+
await this.svComponent.state[this.arrayStateVariable].arraySize;
|
|
50848
|
+
return this._arrayKeys;
|
|
50849
|
+
})();
|
|
50850
|
+
}
|
|
50851
|
+
const ENTRY_ARRAY_KEYS_DESCRIPTOR = Object.freeze({
|
|
50852
|
+
get: getEntryArrayKeys
|
|
50853
|
+
});
|
|
50854
|
+
function getEntryUnflattenedArrayKeys() {
|
|
50855
|
+
return (async () => {
|
|
50856
|
+
await this.svComponent.state[this.arrayStateVariable].arraySize;
|
|
50857
|
+
return this._unflattenedArrayKeys;
|
|
50858
|
+
})();
|
|
50859
|
+
}
|
|
50860
|
+
const ENTRY_UNFLATTENED_ARRAY_KEYS_DESCRIPTOR = Object.freeze({ get: getEntryUnflattenedArrayKeys });
|
|
50861
|
+
function getEntryArraySize() {
|
|
50862
|
+
return this.svComponent.state[this.arrayStateVariable].arraySize;
|
|
50863
|
+
}
|
|
50864
|
+
const ENTRY_ARRAY_SIZE_DESCRIPTOR = Object.freeze({
|
|
50865
|
+
get: getEntryArraySize
|
|
50866
|
+
});
|
|
50867
|
+
function getEntryArrayEntrySize() {
|
|
50868
|
+
return (async () => {
|
|
50869
|
+
let unflattenedArrayKeys = await this.unflattenedArrayKeys;
|
|
50870
|
+
let arrayEntrySize = [];
|
|
50871
|
+
let subArray = [unflattenedArrayKeys];
|
|
50872
|
+
for (let i2 = 0; i2 < this.numDimensions; i2++) {
|
|
50873
|
+
subArray = subArray[0];
|
|
50874
|
+
arrayEntrySize.push(subArray.length);
|
|
50875
|
+
}
|
|
50876
|
+
arrayEntrySize.reverse();
|
|
50877
|
+
return arrayEntrySize;
|
|
50878
|
+
})();
|
|
50879
|
+
}
|
|
50880
|
+
const ENTRY_ARRAY_ENTRY_SIZE_DESCRIPTOR = Object.freeze({
|
|
50881
|
+
get: getEntryArrayEntrySize
|
|
50882
|
+
});
|
|
50883
|
+
function multiDimKeyToIndex(key) {
|
|
50884
|
+
return key.split(",").map((x2) => Number(x2));
|
|
50885
|
+
}
|
|
50886
|
+
function oneDimKeyToIndex(key) {
|
|
50887
|
+
return Number(key);
|
|
50888
|
+
}
|
|
50889
|
+
function arrayIndexToKey(index2) {
|
|
50890
|
+
return String(index2);
|
|
50891
|
+
}
|
|
50892
|
+
function defaultReturnEntryDimensions() {
|
|
50893
|
+
return 0;
|
|
50894
|
+
}
|
|
50895
|
+
function multiDimSetArrayValue({ value, arrayKey, arraySize: arraySize2, arrayValues = this.arrayValues }) {
|
|
50896
|
+
const component = this.svComponent;
|
|
50897
|
+
const addDiagnostic = component.coreFunctions.addDiagnostic;
|
|
50898
|
+
const numDimensions = this.numDimensions;
|
|
50899
|
+
let index2 = this.keyToIndex(arrayKey);
|
|
50900
|
+
let numDimensionsInArrayKey = index2.length;
|
|
50901
|
+
if (numDimensionsInArrayKey > numDimensions) {
|
|
50902
|
+
addDiagnostic({
|
|
50903
|
+
type: "info",
|
|
50904
|
+
message: "Cannot set array value. Number of dimensions is too large.",
|
|
50905
|
+
position: component.position,
|
|
50906
|
+
sourceDoc: component.sourceDoc
|
|
50907
|
+
});
|
|
50908
|
+
return { nFailures: 1 };
|
|
50909
|
+
}
|
|
50910
|
+
let arrayValuesDrillDown = arrayValues;
|
|
50911
|
+
let arraySizeDrillDown = arraySize2;
|
|
50912
|
+
for (let indComponent of index2.slice(0, index2.length - 1)) {
|
|
50913
|
+
if (indComponent >= 0 && indComponent < arraySizeDrillDown[0]) {
|
|
50914
|
+
if (!arrayValuesDrillDown[indComponent]) {
|
|
50915
|
+
arrayValuesDrillDown[indComponent] = [];
|
|
50916
|
+
}
|
|
50917
|
+
arrayValuesDrillDown = arrayValuesDrillDown[indComponent];
|
|
50918
|
+
arraySizeDrillDown = arraySizeDrillDown.slice(1);
|
|
50919
|
+
} else {
|
|
50920
|
+
addDiagnostic({
|
|
50921
|
+
type: "info",
|
|
50922
|
+
message: "ignore setting array value out of bounds",
|
|
50923
|
+
position: component.position,
|
|
50924
|
+
sourceDoc: component.sourceDoc
|
|
50925
|
+
});
|
|
50926
|
+
return { nFailures: 1 };
|
|
50927
|
+
}
|
|
50928
|
+
}
|
|
50929
|
+
let nFailures = 0;
|
|
50930
|
+
if (numDimensionsInArrayKey < numDimensions) {
|
|
50931
|
+
let setArrayValuesPiece = function(desiredValue, arrayValuesPiece, arraySizePiece) {
|
|
50932
|
+
if (!Array.isArray(desiredValue)) {
|
|
50933
|
+
addDiagnostic({
|
|
50934
|
+
type: "info",
|
|
50935
|
+
message: "ignoring array values with insufficient dimensions",
|
|
50936
|
+
position: component.position,
|
|
50937
|
+
sourceDoc: component.sourceDoc
|
|
50938
|
+
});
|
|
50939
|
+
return { nFailures: 1 };
|
|
50940
|
+
}
|
|
50941
|
+
let nFailuresSub = 0;
|
|
50942
|
+
let currentSize = arraySizePiece[0];
|
|
50943
|
+
if (desiredValue.length > currentSize) {
|
|
50944
|
+
addDiagnostic({
|
|
50945
|
+
type: "info",
|
|
50946
|
+
message: "ignoring array values out of bounds",
|
|
50947
|
+
position: component.position,
|
|
50948
|
+
sourceDoc: component.sourceDoc
|
|
50949
|
+
});
|
|
50950
|
+
nFailuresSub += desiredValue.length - currentSize;
|
|
50951
|
+
desiredValue = desiredValue.slice(0, currentSize);
|
|
50952
|
+
}
|
|
50953
|
+
if (arraySizePiece.length === 1) {
|
|
50954
|
+
for (let [ind, val] of desiredValue.entries()) {
|
|
50955
|
+
arrayValuesPiece[ind] = val;
|
|
50956
|
+
}
|
|
50957
|
+
} else {
|
|
50958
|
+
for (let [ind, val] of desiredValue.entries()) {
|
|
50959
|
+
if (!arrayValuesPiece[ind]) {
|
|
50960
|
+
arrayValuesPiece[ind] = [];
|
|
50961
|
+
}
|
|
50962
|
+
let result22 = setArrayValuesPiece(
|
|
50963
|
+
val,
|
|
50964
|
+
arrayValuesPiece[ind],
|
|
50965
|
+
arraySizePiece.slice(1)
|
|
50966
|
+
);
|
|
50967
|
+
nFailuresSub += result22.nFailures;
|
|
50968
|
+
}
|
|
50969
|
+
}
|
|
50970
|
+
return { nFailures: nFailuresSub };
|
|
50971
|
+
};
|
|
50972
|
+
let result2 = setArrayValuesPiece(
|
|
50973
|
+
value,
|
|
50974
|
+
arrayValuesDrillDown,
|
|
50975
|
+
arraySizeDrillDown
|
|
50976
|
+
);
|
|
50977
|
+
nFailures += result2.nFailures;
|
|
50978
|
+
} else {
|
|
50979
|
+
arrayValuesDrillDown[index2[index2.length - 1]] = value;
|
|
50980
|
+
}
|
|
50981
|
+
return { nFailures };
|
|
50982
|
+
}
|
|
50983
|
+
function oneDimSetArrayValue({ value, arrayKey, arraySize: arraySize2, arrayValues = this.arrayValues }) {
|
|
50984
|
+
let ind = this.keyToIndex(arrayKey);
|
|
50985
|
+
if (ind >= 0 && ind < arraySize2[0]) {
|
|
50986
|
+
arrayValues[ind] = value;
|
|
50987
|
+
return { nFailures: 0 };
|
|
50988
|
+
} else {
|
|
50989
|
+
const component = this.svComponent;
|
|
50990
|
+
component.coreFunctions.addDiagnostic({
|
|
50991
|
+
type: "info",
|
|
50992
|
+
message: `Ignoring setting array values out of bounds: ${arrayKey} of ${this.svVarName}`,
|
|
50993
|
+
position: component.position,
|
|
50994
|
+
sourceDoc: component.sourceDoc
|
|
50995
|
+
});
|
|
50996
|
+
return { nFailures: 1 };
|
|
50997
|
+
}
|
|
50998
|
+
}
|
|
50999
|
+
function multiDimGetArrayValue({ arrayKey, arrayValues = this.arrayValues }) {
|
|
51000
|
+
let index2 = this.keyToIndex(arrayKey);
|
|
51001
|
+
let aVals = arrayValues;
|
|
51002
|
+
for (let indComponent of index2.slice(0, index2.length - 1)) {
|
|
51003
|
+
aVals = aVals[indComponent];
|
|
51004
|
+
if (!aVals) {
|
|
51005
|
+
return void 0;
|
|
51006
|
+
}
|
|
51007
|
+
}
|
|
51008
|
+
return aVals[index2[index2.length - 1]];
|
|
51009
|
+
}
|
|
51010
|
+
function oneDimGetArrayValue({ arrayKey, arrayValues = this.arrayValues }) {
|
|
51011
|
+
return arrayValues[arrayKey];
|
|
51012
|
+
}
|
|
51013
|
+
function multiDimGetAllArrayKeys(arraySize2, flatten2 = true, desiredSize) {
|
|
51014
|
+
function prependToAllKeys(keys2, newStuff) {
|
|
51015
|
+
for (let [ind, key] of keys2.entries()) {
|
|
51016
|
+
if (Array.isArray(key)) {
|
|
51017
|
+
prependToAllKeys(key, newStuff);
|
|
51018
|
+
} else {
|
|
51019
|
+
keys2[ind] = newStuff + "," + key;
|
|
51020
|
+
}
|
|
51021
|
+
}
|
|
51022
|
+
}
|
|
51023
|
+
function getAllArrayKeysSub(subArraySize) {
|
|
51024
|
+
if (subArraySize.length === 1) {
|
|
51025
|
+
return Array.from(Array(subArraySize[0]), (_2, i2) => String(i2));
|
|
51026
|
+
} else {
|
|
51027
|
+
let currentSize = subArraySize[0];
|
|
51028
|
+
let subSubKeys = getAllArrayKeysSub(subArraySize.slice(1));
|
|
51029
|
+
let subKeys = [];
|
|
51030
|
+
for (let ind = 0; ind < currentSize; ind++) {
|
|
51031
|
+
if (flatten2) {
|
|
51032
|
+
subKeys.push(...subSubKeys.map((x2) => ind + "," + x2));
|
|
51033
|
+
} else {
|
|
51034
|
+
let newSubSubKeys = deepClone(subSubKeys);
|
|
51035
|
+
prependToAllKeys(newSubSubKeys, ind);
|
|
51036
|
+
subKeys.push(newSubSubKeys);
|
|
51037
|
+
}
|
|
51038
|
+
}
|
|
51039
|
+
return subKeys;
|
|
51040
|
+
}
|
|
51041
|
+
}
|
|
51042
|
+
if (desiredSize) {
|
|
51043
|
+
if (desiredSize.length === 0) {
|
|
51044
|
+
return [];
|
|
51045
|
+
} else {
|
|
51046
|
+
return getAllArrayKeysSub(desiredSize);
|
|
51047
|
+
}
|
|
51048
|
+
} else if (!arraySize2 || arraySize2.length === 0) {
|
|
51049
|
+
return [];
|
|
51050
|
+
} else {
|
|
51051
|
+
return getAllArrayKeysSub(arraySize2);
|
|
51052
|
+
}
|
|
51053
|
+
}
|
|
51054
|
+
function oneDimGetAllArrayKeys(arraySize2, flatten2, desiredSize) {
|
|
51055
|
+
if (desiredSize) {
|
|
51056
|
+
if (desiredSize.length === 0) {
|
|
51057
|
+
return [];
|
|
51058
|
+
} else {
|
|
51059
|
+
return Array.from(Array(desiredSize[0]), (_2, i2) => String(i2));
|
|
51060
|
+
}
|
|
51061
|
+
} else if (!arraySize2 || arraySize2.length === 0) {
|
|
51062
|
+
return [];
|
|
51063
|
+
} else {
|
|
51064
|
+
return Array.from(Array(arraySize2[0]), (_2, i2) => String(i2));
|
|
51065
|
+
}
|
|
51066
|
+
}
|
|
51067
|
+
function defaultMultiDimArrayVarNameFromArrayKey(arrayKey) {
|
|
51068
|
+
return this.entryPrefixes[0] + arrayKey.split(",").map((x2) => Number(x2) + 1).join("_");
|
|
51069
|
+
}
|
|
51070
|
+
function defaultOneDimArrayVarNameFromArrayKey(arrayKey) {
|
|
51071
|
+
return this.entryPrefixes[0] + String(Number(arrayKey) + 1);
|
|
51072
|
+
}
|
|
51073
|
+
async function multiDimAdjustArrayToNewArraySize() {
|
|
51074
|
+
function resizeSubArray(subArray, subArraySize) {
|
|
51075
|
+
subArray.length = subArraySize[0];
|
|
51076
|
+
if (subArraySize.length > 1) {
|
|
51077
|
+
let subSubArraySize = subArraySize.slice(1);
|
|
51078
|
+
for (let [ind, subSubArray] of subArray.entries()) {
|
|
51079
|
+
if (!subSubArray) {
|
|
51080
|
+
subSubArray = subArray[ind] = [];
|
|
51081
|
+
}
|
|
51082
|
+
resizeSubArray(subSubArray, subSubArraySize);
|
|
51083
|
+
}
|
|
51084
|
+
}
|
|
51085
|
+
}
|
|
51086
|
+
let arraySize2 = await this.arraySize;
|
|
51087
|
+
resizeSubArray(this.arrayValues, arraySize2);
|
|
51088
|
+
}
|
|
51089
|
+
async function oneDimAdjustArrayToNewArraySize() {
|
|
51090
|
+
let arraySize2 = await this.arraySize;
|
|
51091
|
+
this.arrayValues.length = arraySize2[0];
|
|
51092
|
+
}
|
|
51093
|
+
function resolveArrayStateVarObj(svObj) {
|
|
51094
|
+
return svObj.isArrayEntry ? svObj.svComponent.state[svObj.arrayStateVariable] : svObj;
|
|
51095
|
+
}
|
|
51096
|
+
function defaultReturnWrappingComponents(prefix) {
|
|
51097
|
+
return [];
|
|
51098
|
+
}
|
|
51099
|
+
async function arrayReturnDependencies(args) {
|
|
51100
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
51101
|
+
const component = arrayStateVarObj.svComponent;
|
|
51102
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
51103
|
+
args.arraySize = await arrayStateVarObj.arraySize;
|
|
51104
|
+
for (let key in args.stateValues) {
|
|
51105
|
+
if (key.slice(0, 8) === "__array_") {
|
|
51106
|
+
delete args.stateValues[key];
|
|
51107
|
+
}
|
|
51108
|
+
}
|
|
51109
|
+
if (args.arrayKeys === void 0) {
|
|
51110
|
+
args.arrayKeys = arrayStateVarObj.getAllArrayKeys(args.arraySize);
|
|
51111
|
+
}
|
|
51112
|
+
if (!arrayStateVarObj.dependencyNames) {
|
|
51113
|
+
arrayStateVarObj.dependencyNames = {
|
|
51114
|
+
namesByKey: {},
|
|
51115
|
+
keysByName: {},
|
|
51116
|
+
global: []
|
|
51117
|
+
};
|
|
51118
|
+
if (arrayStateVarObj.additionalStateVariablesDefined) {
|
|
51119
|
+
for (let vName of arrayStateVarObj.additionalStateVariablesDefined) {
|
|
51120
|
+
component.state[vName].dependencyNames = arrayStateVarObj.dependencyNames;
|
|
51121
|
+
}
|
|
51122
|
+
}
|
|
51123
|
+
}
|
|
51124
|
+
let dependencies2 = {};
|
|
51125
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
51126
|
+
const allStateVariablesAffected = [
|
|
51127
|
+
arrayVarName,
|
|
51128
|
+
...arrayStateVarObj.additionalStateVariablesDefined ?? []
|
|
51129
|
+
];
|
|
51130
|
+
for (let arrayKey of args.arrayKeys) {
|
|
51131
|
+
for (let vName of allStateVariablesAffected) {
|
|
51132
|
+
let sObj = component.state[vName];
|
|
51133
|
+
dependencies2[vName + "_" + arrayKey] = {
|
|
51134
|
+
dependencyType: "stateVariable",
|
|
51135
|
+
variableName: sObj.arrayVarNameFromArrayKey(arrayKey)
|
|
51136
|
+
};
|
|
51137
|
+
}
|
|
51138
|
+
}
|
|
51139
|
+
} else {
|
|
51140
|
+
let arrayDependencies = arrayStateVarObj.returnArrayDependenciesByKey(args);
|
|
51141
|
+
if (arrayDependencies.globalDependencies) {
|
|
51142
|
+
arrayStateVarObj.dependencyNames.global = Object.keys(
|
|
51143
|
+
arrayDependencies.globalDependencies
|
|
51144
|
+
);
|
|
51145
|
+
Object.assign(dependencies2, arrayDependencies.globalDependencies);
|
|
51146
|
+
}
|
|
51147
|
+
if (!arrayDependencies.dependenciesByKey) {
|
|
51148
|
+
arrayDependencies.dependenciesByKey = {};
|
|
51149
|
+
}
|
|
51150
|
+
for (let arrayKey of args.arrayKeys) {
|
|
51151
|
+
if (!(arrayKey in arrayStateVarObj.dependencyNames.namesByKey)) {
|
|
51152
|
+
args.changedDependency = true;
|
|
51153
|
+
}
|
|
51154
|
+
arrayStateVarObj.dependencyNames.namesByKey[arrayKey] = {};
|
|
51155
|
+
for (let depName in arrayDependencies.dependenciesByKey[arrayKey]) {
|
|
51156
|
+
let extendedDepName = "__" + arrayKey + "_" + depName;
|
|
51157
|
+
dependencies2[extendedDepName] = arrayDependencies.dependenciesByKey[arrayKey][depName];
|
|
51158
|
+
arrayStateVarObj.dependencyNames.namesByKey[arrayKey][depName] = extendedDepName;
|
|
51159
|
+
if (!arrayStateVarObj.dependencyNames.keysByName[extendedDepName]) {
|
|
51160
|
+
arrayStateVarObj.dependencyNames.keysByName[extendedDepName] = [];
|
|
51161
|
+
}
|
|
51162
|
+
if (!arrayStateVarObj.dependencyNames.keysByName[extendedDepName].includes(arrayKey)) {
|
|
51163
|
+
arrayStateVarObj.dependencyNames.keysByName[extendedDepName].push(arrayKey);
|
|
51164
|
+
}
|
|
51165
|
+
}
|
|
51166
|
+
}
|
|
51167
|
+
arrayStateVarObj.dependencyNames.global.push("__array_size");
|
|
51168
|
+
}
|
|
51169
|
+
dependencies2.__array_size = {
|
|
51170
|
+
dependencyType: "stateVariable",
|
|
51171
|
+
variableName: arrayStateVarObj.arraySizeStateVariable
|
|
51172
|
+
};
|
|
51173
|
+
return dependencies2;
|
|
51174
|
+
}
|
|
51175
|
+
function arrayGetCurrentFreshness({ freshnessInfo, arrayKeys, arraySize: arraySize2 }) {
|
|
51176
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
51177
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
51178
|
+
if (arrayKeys === void 0) {
|
|
51179
|
+
arrayKeys = arrayStateVarObj.getAllArrayKeys(arraySize2);
|
|
51180
|
+
}
|
|
51181
|
+
let freshByKey = freshnessInfo.freshByKey;
|
|
51182
|
+
let numberFresh = freshnessInfo.freshArraySize ? 1 : 0;
|
|
51183
|
+
for (let arrayKey of arrayKeys) {
|
|
51184
|
+
if (freshByKey[arrayKey]) {
|
|
51185
|
+
numberFresh += 1;
|
|
51186
|
+
}
|
|
51187
|
+
}
|
|
51188
|
+
if (numberFresh > 0) {
|
|
51189
|
+
if (numberFresh === arrayKeys.length + 1) {
|
|
51190
|
+
return { fresh: { [arrayVarName]: true } };
|
|
51191
|
+
} else {
|
|
51192
|
+
return { partiallyFresh: { [arrayVarName]: numberFresh } };
|
|
51193
|
+
}
|
|
51194
|
+
} else {
|
|
51195
|
+
return { fresh: { [arrayVarName]: false } };
|
|
51196
|
+
}
|
|
51197
|
+
}
|
|
51198
|
+
function arrayMarkStale({ freshnessInfo, changes, arrayKeys, arraySize: arraySize2 }) {
|
|
51199
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
51200
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
51201
|
+
let result2 = {};
|
|
51202
|
+
if (arrayKeys === void 0) {
|
|
51203
|
+
arrayKeys = arrayStateVarObj.getAllArrayKeys(arraySize2);
|
|
51204
|
+
}
|
|
51205
|
+
if (arrayStateVarObj.markStaleByKey) {
|
|
51206
|
+
result2 = arrayStateVarObj.markStaleByKey({ arrayKeys, changes });
|
|
51207
|
+
}
|
|
51208
|
+
let freshByKey = freshnessInfo.freshByKey;
|
|
51209
|
+
if (changes.__array_size) {
|
|
51210
|
+
freshnessInfo.freshArraySize = false;
|
|
51211
|
+
freshnessInfo.freshByKey = {};
|
|
51212
|
+
result2.fresh = { [arrayVarName]: false };
|
|
51213
|
+
return result2;
|
|
51214
|
+
}
|
|
51215
|
+
if (Object.keys(freshByKey).length === 0) {
|
|
51216
|
+
freshnessInfo.freshByKey = {};
|
|
51217
|
+
if (freshnessInfo.freshArraySize) {
|
|
51218
|
+
result2.partiallyFresh = { [arrayVarName]: 1 };
|
|
51219
|
+
return result2;
|
|
51220
|
+
} else {
|
|
51221
|
+
result2.fresh = { [arrayVarName]: false };
|
|
51222
|
+
return result2;
|
|
51223
|
+
}
|
|
51224
|
+
}
|
|
51225
|
+
for (let changeName in changes) {
|
|
51226
|
+
if (arrayStateVarObj.dependencyNames.global.includes(changeName)) {
|
|
51227
|
+
freshnessInfo.freshByKey = {};
|
|
51228
|
+
if (freshnessInfo.freshArraySize) {
|
|
51229
|
+
result2.partiallyFresh = { [arrayVarName]: 1 };
|
|
51230
|
+
return result2;
|
|
51231
|
+
} else {
|
|
51232
|
+
result2.fresh = { [arrayVarName]: false };
|
|
51233
|
+
return result2;
|
|
51234
|
+
}
|
|
51235
|
+
}
|
|
51236
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && arrayKeys.length > 1) {
|
|
51237
|
+
delete freshByKey[changeName];
|
|
51238
|
+
} else {
|
|
51239
|
+
for (let key of arrayStateVarObj.dependencyNames.keysByName[changeName]) {
|
|
51240
|
+
delete freshByKey[key];
|
|
51241
|
+
}
|
|
51242
|
+
}
|
|
51243
|
+
}
|
|
51244
|
+
let numberFresh = freshnessInfo.freshArraySize ? 1 : 0;
|
|
51245
|
+
for (let arrayKey of arrayKeys) {
|
|
51246
|
+
if (freshByKey[arrayKey]) {
|
|
51247
|
+
numberFresh += 1;
|
|
51248
|
+
}
|
|
51249
|
+
}
|
|
51250
|
+
if (numberFresh > 0) {
|
|
51251
|
+
if (numberFresh === arrayKeys.length + 1) {
|
|
51252
|
+
result2.fresh = { [arrayVarName]: true };
|
|
51253
|
+
return result2;
|
|
51254
|
+
} else {
|
|
51255
|
+
result2.partiallyFresh = { [arrayVarName]: numberFresh };
|
|
51256
|
+
return result2;
|
|
51257
|
+
}
|
|
51258
|
+
} else {
|
|
51259
|
+
result2.fresh = { [arrayVarName]: false };
|
|
51260
|
+
return result2;
|
|
51261
|
+
}
|
|
51262
|
+
}
|
|
51263
|
+
function arrayFreshenOnNoChanges({ arrayKeys, freshnessInfo, arraySize: arraySize2 }) {
|
|
51264
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
51265
|
+
let freshByKey = freshnessInfo.freshByKey;
|
|
51266
|
+
if (arrayKeys === void 0) {
|
|
51267
|
+
arrayKeys = arrayStateVarObj.getAllArrayKeys(arraySize2);
|
|
51268
|
+
}
|
|
51269
|
+
for (let arrayKey of arrayKeys) {
|
|
51270
|
+
freshByKey[arrayKey] = true;
|
|
51271
|
+
}
|
|
51272
|
+
}
|
|
51273
|
+
function extractArrayDependencies(arrayStateVarObj, dependencyValues, arrayKeys, usedDefault) {
|
|
51274
|
+
let globalDependencyValues = {};
|
|
51275
|
+
let globalUsedDefault = {};
|
|
51276
|
+
for (let dependencyName of arrayStateVarObj.dependencyNames.global) {
|
|
51277
|
+
globalDependencyValues[dependencyName] = dependencyValues[dependencyName];
|
|
51278
|
+
globalUsedDefault[dependencyName] = usedDefault[dependencyName];
|
|
51279
|
+
}
|
|
51280
|
+
let dependencyValuesByKey = {};
|
|
51281
|
+
let usedDefaultByKey = {};
|
|
51282
|
+
let foundAllDependencyValuesForKey = {};
|
|
51283
|
+
for (let arrayKey of arrayKeys) {
|
|
51284
|
+
dependencyValuesByKey[arrayKey] = {};
|
|
51285
|
+
usedDefaultByKey[arrayKey] = {};
|
|
51286
|
+
if (arrayKey in arrayStateVarObj.dependencyNames.namesByKey) {
|
|
51287
|
+
foundAllDependencyValuesForKey[arrayKey] = true;
|
|
51288
|
+
for (let dependencyName in arrayStateVarObj.dependencyNames.namesByKey[arrayKey]) {
|
|
51289
|
+
let extendedDepName = arrayStateVarObj.dependencyNames.namesByKey[arrayKey][dependencyName];
|
|
51290
|
+
if (extendedDepName in dependencyValues) {
|
|
51291
|
+
dependencyValuesByKey[arrayKey][dependencyName] = dependencyValues[extendedDepName];
|
|
51292
|
+
usedDefaultByKey[arrayKey][dependencyName] = usedDefault[extendedDepName];
|
|
51293
|
+
} else {
|
|
51294
|
+
foundAllDependencyValuesForKey[arrayKey] = false;
|
|
51295
|
+
}
|
|
51296
|
+
}
|
|
51297
|
+
}
|
|
51298
|
+
}
|
|
51299
|
+
return {
|
|
51300
|
+
globalDependencyValues,
|
|
51301
|
+
globalUsedDefault,
|
|
51302
|
+
dependencyValuesByKey,
|
|
51303
|
+
usedDefaultByKey,
|
|
51304
|
+
foundAllDependencyValuesForKey
|
|
51305
|
+
};
|
|
51306
|
+
}
|
|
51307
|
+
function arrayDefinition(args) {
|
|
51308
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
51309
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
51310
|
+
const component = arrayStateVarObj.svComponent;
|
|
51311
|
+
if (args.arrayKeys === void 0) {
|
|
51312
|
+
args.arrayKeys = arrayStateVarObj.getAllArrayKeys(args.arraySize);
|
|
51313
|
+
}
|
|
51314
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
51315
|
+
return {};
|
|
51316
|
+
} else {
|
|
51317
|
+
let extractedDeps = extractArrayDependencies(
|
|
51318
|
+
arrayStateVarObj,
|
|
51319
|
+
args.dependencyValues,
|
|
51320
|
+
args.arrayKeys,
|
|
51321
|
+
args.usedDefault
|
|
51322
|
+
);
|
|
51323
|
+
let globalDependencyValues = extractedDeps.globalDependencyValues;
|
|
51324
|
+
let globalUsedDefault = extractedDeps.globalUsedDefault;
|
|
51325
|
+
let dependencyValuesByKey = extractedDeps.dependencyValuesByKey;
|
|
51326
|
+
let usedDefaultByKey = extractedDeps.usedDefaultByKey;
|
|
51327
|
+
let foundAllDependencyValuesForKey = extractedDeps.foundAllDependencyValuesForKey;
|
|
51328
|
+
delete args.dependencyValues;
|
|
51329
|
+
args.globalDependencyValues = globalDependencyValues;
|
|
51330
|
+
args.globalUsedDefault = globalUsedDefault;
|
|
51331
|
+
args.dependencyValuesByKey = dependencyValuesByKey;
|
|
51332
|
+
args.usedDefaultByKey = usedDefaultByKey;
|
|
51333
|
+
let arrayKeysToRecalculate = [];
|
|
51334
|
+
let freshByKey = args.freshnessInfo.freshByKey;
|
|
51335
|
+
for (let arrayKey of args.arrayKeys) {
|
|
51336
|
+
if (!freshByKey[arrayKey] && foundAllDependencyValuesForKey[arrayKey]) {
|
|
51337
|
+
freshByKey[arrayKey] = true;
|
|
51338
|
+
arrayKeysToRecalculate.push(arrayKey);
|
|
51339
|
+
}
|
|
51340
|
+
}
|
|
51341
|
+
let result2;
|
|
51342
|
+
if (arrayKeysToRecalculate.length === 0) {
|
|
51343
|
+
result2 = {};
|
|
51344
|
+
} else {
|
|
51345
|
+
args.arrayKeys = arrayKeysToRecalculate;
|
|
51346
|
+
if (!arrayStateVarObj.arrayDefinitionByKey) {
|
|
51347
|
+
throw Error(
|
|
51348
|
+
`For ${arrayVarName} of ${component.componentType}, arrayDefinitionByKey must be a function`
|
|
51349
|
+
);
|
|
51350
|
+
}
|
|
51351
|
+
result2 = arrayStateVarObj.arrayDefinitionByKey(args);
|
|
51352
|
+
if (result2.setValue && result2.setValue[arrayVarName]) {
|
|
51353
|
+
for (let arrayKey in result2.setValue[arrayVarName]) {
|
|
51354
|
+
freshByKey[arrayKey] = true;
|
|
51355
|
+
}
|
|
51356
|
+
}
|
|
51357
|
+
if (result2.useEssentialOrDefaultValue && result2.useEssentialOrDefaultValue[arrayVarName]) {
|
|
51358
|
+
for (let arrayKey in result2.useEssentialOrDefaultValue[arrayVarName]) {
|
|
51359
|
+
freshByKey[arrayKey] = true;
|
|
51360
|
+
}
|
|
51361
|
+
}
|
|
51362
|
+
}
|
|
51363
|
+
if (!args.freshnessInfo.freshArraySize) {
|
|
51364
|
+
if (args.changes.__array_size) {
|
|
51365
|
+
result2.arraySizeChanged = [arrayVarName];
|
|
51366
|
+
if (arrayStateVarObj.additionalStateVariablesDefined) {
|
|
51367
|
+
for (let varName of arrayStateVarObj.additionalStateVariablesDefined) {
|
|
51368
|
+
if (component.state[varName].isArray) {
|
|
51369
|
+
result2.arraySizeChanged.push(varName);
|
|
51370
|
+
}
|
|
51371
|
+
}
|
|
51372
|
+
}
|
|
51373
|
+
}
|
|
51374
|
+
args.freshnessInfo.freshArraySize = true;
|
|
51375
|
+
}
|
|
51376
|
+
return result2;
|
|
51377
|
+
}
|
|
51378
|
+
}
|
|
51379
|
+
function arrayInverseDefinition(args) {
|
|
51380
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
51381
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
51382
|
+
if (!arrayStateVarObj.inverseArrayDefinitionByKey) {
|
|
51383
|
+
return { success: false };
|
|
51384
|
+
}
|
|
51385
|
+
if (args.arrayKeys === void 0) {
|
|
51386
|
+
args.arrayKeys = arrayStateVarObj.getAllArrayKeys(args.arraySize);
|
|
51387
|
+
}
|
|
51388
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
51389
|
+
const allStateVariablesAffected = [
|
|
51390
|
+
arrayVarName,
|
|
51391
|
+
...arrayStateVarObj.additionalStateVariablesDefined ?? []
|
|
51392
|
+
];
|
|
51393
|
+
let instructions = [];
|
|
51394
|
+
for (let vName of allStateVariablesAffected) {
|
|
51395
|
+
for (let key in args.desiredStateVariableValues[vName]) {
|
|
51396
|
+
let depName = vName + "_" + key;
|
|
51397
|
+
if (depName in args.dependencyValues) {
|
|
51398
|
+
instructions.push({
|
|
51399
|
+
setDependency: depName,
|
|
51400
|
+
desiredValue: args.desiredStateVariableValues[vName][key],
|
|
51401
|
+
treatAsInitialChange: args.initialChange
|
|
51402
|
+
});
|
|
51403
|
+
}
|
|
51404
|
+
}
|
|
51405
|
+
}
|
|
51406
|
+
return {
|
|
51407
|
+
success: true,
|
|
51408
|
+
instructions
|
|
51409
|
+
};
|
|
51410
|
+
} else {
|
|
51411
|
+
let extractedDeps = extractArrayDependencies(
|
|
51412
|
+
arrayStateVarObj,
|
|
51413
|
+
args.dependencyValues,
|
|
51414
|
+
args.arrayKeys,
|
|
51415
|
+
args.usedDefault
|
|
51416
|
+
);
|
|
51417
|
+
let globalDependencyValues = extractedDeps.globalDependencyValues;
|
|
51418
|
+
let globalUsedDefault = extractedDeps.globalUsedDefault;
|
|
51419
|
+
let dependencyValuesByKey = extractedDeps.dependencyValuesByKey;
|
|
51420
|
+
let usedDefaultByKey = extractedDeps.usedDefaultByKey;
|
|
51421
|
+
delete args.dependencyValues;
|
|
51422
|
+
args.globalDependencyValues = globalDependencyValues;
|
|
51423
|
+
args.globalUsedDefault = globalUsedDefault;
|
|
51424
|
+
args.dependencyValuesByKey = dependencyValuesByKey;
|
|
51425
|
+
args.usedDefaultByKey = usedDefaultByKey;
|
|
51426
|
+
args.dependencyNamesByKey = arrayStateVarObj.dependencyNames.namesByKey;
|
|
51427
|
+
if (!arrayStateVarObj.allowExtraArrayKeysInInverse) {
|
|
51428
|
+
let newDesiredStateVariableValues = {};
|
|
51429
|
+
for (let vName in args.desiredStateVariableValues) {
|
|
51430
|
+
newDesiredStateVariableValues[vName] = {};
|
|
51431
|
+
for (let key in args.desiredStateVariableValues[vName]) {
|
|
51432
|
+
if (args.arrayKeys.includes(key)) {
|
|
51433
|
+
newDesiredStateVariableValues[vName][key] = args.desiredStateVariableValues[vName][key];
|
|
51434
|
+
}
|
|
51435
|
+
}
|
|
51436
|
+
}
|
|
51437
|
+
args.desiredStateVariableValues = newDesiredStateVariableValues;
|
|
51438
|
+
}
|
|
51439
|
+
let result2 = arrayStateVarObj.inverseArrayDefinitionByKey(args);
|
|
51440
|
+
return result2;
|
|
51441
|
+
}
|
|
51442
|
+
}
|
|
51443
|
+
function getArrayArraySize() {
|
|
51444
|
+
return (async () => {
|
|
51445
|
+
if (!this.svComponent.state[this.arraySizeStateVariable].initiallyResolved) {
|
|
51446
|
+
return [];
|
|
51447
|
+
}
|
|
51448
|
+
if (this.arraySizeStale) {
|
|
51449
|
+
await this.recalculateArraySizeDependentQuantities();
|
|
51450
|
+
}
|
|
51451
|
+
return await this.svComponent.stateValues[this.arraySizeStateVariable];
|
|
51452
|
+
})();
|
|
51453
|
+
}
|
|
51454
|
+
const ARRAY_ARRAY_SIZE_DESCRIPTOR = Object.freeze({
|
|
51455
|
+
get: getArrayArraySize
|
|
51456
|
+
});
|
|
51457
|
+
function arraySizeDefinition({ dependencyValues }) {
|
|
51458
|
+
let arraySize2 = this.svComponent.state[this.arraySizeSourceVarName].returnArraySize({
|
|
51459
|
+
dependencyValues
|
|
51460
|
+
});
|
|
51461
|
+
for (let [ind, value] of arraySize2.entries()) {
|
|
51462
|
+
if (!(Number.isInteger(value) && value >= 0)) {
|
|
51463
|
+
arraySize2[ind] = 0;
|
|
51464
|
+
}
|
|
51465
|
+
}
|
|
51466
|
+
return { setValue: { [this.svVarName]: arraySize2 } };
|
|
51467
|
+
}
|
|
51468
|
+
function arraySizeMarkStale() {
|
|
51469
|
+
for (let varName of this.arraySizeVarNamesAffected) {
|
|
51470
|
+
this.svComponent.state[varName].arraySizeStale = true;
|
|
51471
|
+
}
|
|
51472
|
+
return {};
|
|
51473
|
+
}
|
|
51474
|
+
async function arrayRecalculateArraySizeDependentQuantities() {
|
|
51475
|
+
const component = this.svComponent;
|
|
51476
|
+
let newArraySize = await component.stateValues[this.arraySizeStateVariable];
|
|
51477
|
+
if (this.previousArraySize.length !== newArraySize.length || this.previousArraySize.some((v2, i2) => v2 != newArraySize[i2])) {
|
|
51478
|
+
this.previousArraySize = [...newArraySize];
|
|
51479
|
+
let varNamesIncluding = this.varNamesIncludingArrayKeys = {};
|
|
51480
|
+
for (let entryName of this.arrayEntryNames) {
|
|
51481
|
+
let entryStateVarObj = component.state[entryName];
|
|
51482
|
+
let arrayKeys = this.getArrayKeysFromVarName({
|
|
51483
|
+
arrayEntryPrefix: entryStateVarObj.entryPrefix,
|
|
51484
|
+
varEnding: entryStateVarObj.varEnding,
|
|
51485
|
+
arraySize: newArraySize,
|
|
51486
|
+
numDimensions: this.numDimensions
|
|
51487
|
+
});
|
|
51488
|
+
entryStateVarObj._unflattenedArrayKeys = arrayKeys;
|
|
51489
|
+
entryStateVarObj._arrayKeys = flattenDeep(arrayKeys);
|
|
51490
|
+
for (let arrayKey of entryStateVarObj._arrayKeys) {
|
|
51491
|
+
if (!varNamesIncluding[arrayKey]) {
|
|
51492
|
+
varNamesIncluding[arrayKey] = [];
|
|
51493
|
+
}
|
|
51494
|
+
varNamesIncluding[arrayKey].push(entryName);
|
|
51495
|
+
}
|
|
51496
|
+
}
|
|
51497
|
+
}
|
|
51498
|
+
this.arraySizeStale = false;
|
|
51499
|
+
}
|
|
51500
|
+
async function entryReturnDependencies(args) {
|
|
51501
|
+
const arrayStateVarObj = this.svComponent.state[this.arrayStateVariable];
|
|
51502
|
+
args.arraySize = await this.arraySize;
|
|
51503
|
+
args.arrayKeys = await this.arrayKeys;
|
|
51504
|
+
let dependencies2 = await arrayStateVarObj.returnDependencies(args);
|
|
51505
|
+
let numNames = Object.keys(
|
|
51506
|
+
arrayStateVarObj.dependencyNames.namesByKey
|
|
51507
|
+
).length;
|
|
51508
|
+
if (this.numberNamesInPreviousReturnDep !== numNames) {
|
|
51509
|
+
args.changedDependency = true;
|
|
51510
|
+
}
|
|
51511
|
+
this.numberNamesInPreviousReturnDep = numNames;
|
|
51512
|
+
return dependencies2;
|
|
51513
|
+
}
|
|
50809
51514
|
async function initializeComponentStateVariables({
|
|
50810
51515
|
core: core2,
|
|
50811
51516
|
component
|
|
@@ -50833,16 +51538,14 @@ async function initializeStateVariable({
|
|
|
50833
51538
|
arrayStateVariable,
|
|
50834
51539
|
arrayEntryPrefix
|
|
50835
51540
|
}) {
|
|
50836
|
-
let getStateVar = core2.getStateVariableValue;
|
|
50837
51541
|
if (!component.state[stateVariable]) {
|
|
50838
51542
|
component.state[stateVariable] = {};
|
|
50839
51543
|
}
|
|
50840
51544
|
let stateVarObj = component.state[stateVariable];
|
|
51545
|
+
stateVarObj.svComponent = component;
|
|
51546
|
+
stateVarObj.svVarName = stateVariable;
|
|
50841
51547
|
stateVarObj.isResolved = false;
|
|
50842
|
-
|
|
50843
|
-
get: () => getStateVar({ component, stateVariable }),
|
|
50844
|
-
configurable: true
|
|
50845
|
-
});
|
|
51548
|
+
installStaleValueGetter(stateVarObj);
|
|
50846
51549
|
if (arrayEntryPrefix !== void 0) {
|
|
50847
51550
|
await initializeArrayEntryStateVariable({
|
|
50848
51551
|
stateVarObj,
|
|
@@ -50931,47 +51634,23 @@ async function initializeArrayEntryStateVariable({
|
|
|
50931
51634
|
}
|
|
50932
51635
|
}
|
|
50933
51636
|
if (arrayStateVarObj.getEntryValues) {
|
|
50934
|
-
stateVarObj.getValueFromArrayValues =
|
|
50935
|
-
return await arrayStateVarObj.getEntryValues({
|
|
50936
|
-
varName: stateVariable
|
|
50937
|
-
});
|
|
50938
|
-
};
|
|
51637
|
+
stateVarObj.getValueFromArrayValues = entryGetValueViaGetEntryValues;
|
|
50939
51638
|
} else {
|
|
50940
|
-
stateVarObj.getValueFromArrayValues =
|
|
50941
|
-
let arrayKeys = await stateVarObj.arrayKeys;
|
|
50942
|
-
if (arrayKeys.length === 0) {
|
|
50943
|
-
return;
|
|
50944
|
-
}
|
|
50945
|
-
let value = [];
|
|
50946
|
-
for (let arrayKey of arrayKeys) {
|
|
50947
|
-
value.push(arrayStateVarObj.getArrayValue({ arrayKey }));
|
|
50948
|
-
}
|
|
50949
|
-
if (value.length === 1) {
|
|
50950
|
-
return value[0];
|
|
50951
|
-
} else {
|
|
50952
|
-
return value;
|
|
50953
|
-
}
|
|
50954
|
-
};
|
|
51639
|
+
stateVarObj.getValueFromArrayValues = entryGetValueFromArrayValues;
|
|
50955
51640
|
}
|
|
50956
51641
|
stateVarObj.arraySizeStateVariable = arrayStateVarObj.arraySizeStateVariable;
|
|
50957
51642
|
stateVarObj._arrayKeys = [];
|
|
50958
51643
|
stateVarObj._unflattenedArrayKeys = [];
|
|
50959
|
-
Object.defineProperty(
|
|
50960
|
-
|
|
50961
|
-
|
|
50962
|
-
|
|
50963
|
-
|
|
50964
|
-
|
|
50965
|
-
|
|
50966
|
-
|
|
50967
|
-
|
|
50968
|
-
|
|
50969
|
-
return (async () => {
|
|
50970
|
-
await arrayStateVarObj.arraySize;
|
|
50971
|
-
return stateVarObj._unflattenedArrayKeys;
|
|
50972
|
-
})();
|
|
50973
|
-
}
|
|
50974
|
-
});
|
|
51644
|
+
Object.defineProperty(
|
|
51645
|
+
stateVarObj,
|
|
51646
|
+
"arrayKeys",
|
|
51647
|
+
ENTRY_ARRAY_KEYS_DESCRIPTOR
|
|
51648
|
+
);
|
|
51649
|
+
Object.defineProperty(
|
|
51650
|
+
stateVarObj,
|
|
51651
|
+
"unflattenedArrayKeys",
|
|
51652
|
+
ENTRY_UNFLATTENED_ARRAY_KEYS_DESCRIPTOR
|
|
51653
|
+
);
|
|
50975
51654
|
if (component.state[stateVarObj.arraySizeStateVariable].initiallyResolved) {
|
|
50976
51655
|
let arraySize2 = await arrayStateVarObj.arraySize;
|
|
50977
51656
|
let arrayKeys = arrayStateVarObj.getArrayKeysFromVarName({
|
|
@@ -50991,24 +51670,16 @@ async function initializeArrayEntryStateVariable({
|
|
|
50991
51670
|
}
|
|
50992
51671
|
}
|
|
50993
51672
|
arrayStateVarObj.arrayEntryNames.push(stateVariable);
|
|
50994
|
-
Object.defineProperty(
|
|
50995
|
-
|
|
50996
|
-
|
|
50997
|
-
|
|
50998
|
-
|
|
50999
|
-
|
|
51000
|
-
|
|
51001
|
-
|
|
51002
|
-
|
|
51003
|
-
|
|
51004
|
-
subArray = subArray[0];
|
|
51005
|
-
arrayEntrySize.push(subArray.length);
|
|
51006
|
-
}
|
|
51007
|
-
arrayEntrySize.reverse();
|
|
51008
|
-
return arrayEntrySize;
|
|
51009
|
-
})();
|
|
51010
|
-
}
|
|
51011
|
-
});
|
|
51673
|
+
Object.defineProperty(
|
|
51674
|
+
stateVarObj,
|
|
51675
|
+
"arraySize",
|
|
51676
|
+
ENTRY_ARRAY_SIZE_DESCRIPTOR
|
|
51677
|
+
);
|
|
51678
|
+
Object.defineProperty(
|
|
51679
|
+
stateVarObj,
|
|
51680
|
+
"arrayEntrySize",
|
|
51681
|
+
ENTRY_ARRAY_ENTRY_SIZE_DESCRIPTOR
|
|
51682
|
+
);
|
|
51012
51683
|
if (arrayStateVarObj.stateVariablesDeterminingDependencies) {
|
|
51013
51684
|
if (!stateVarObj.stateVariablesDeterminingDependencies) {
|
|
51014
51685
|
stateVarObj.stateVariablesDeterminingDependencies = [];
|
|
@@ -51021,20 +51692,7 @@ async function initializeArrayEntryStateVariable({
|
|
|
51021
51692
|
}
|
|
51022
51693
|
}
|
|
51023
51694
|
}
|
|
51024
|
-
|
|
51025
|
-
stateVarObj.returnDependencies = async function(args) {
|
|
51026
|
-
args.arraySize = await stateVarObj.arraySize;
|
|
51027
|
-
args.arrayKeys = await stateVarObj.arrayKeys;
|
|
51028
|
-
let dependencies2 = await arrayReturnDependencies(args);
|
|
51029
|
-
let numNames = Object.keys(
|
|
51030
|
-
arrayStateVarObj.dependencyNames.namesByKey
|
|
51031
|
-
).length;
|
|
51032
|
-
if (stateVarObj.numberNamesInPreviousReturnDep !== numNames) {
|
|
51033
|
-
args.changedDependency = true;
|
|
51034
|
-
}
|
|
51035
|
-
stateVarObj.numberNamesInPreviousReturnDep = numNames;
|
|
51036
|
-
return dependencies2;
|
|
51037
|
-
};
|
|
51695
|
+
stateVarObj.returnDependencies = entryReturnDependencies;
|
|
51038
51696
|
}
|
|
51039
51697
|
async function initializeArrayStateVariable({
|
|
51040
51698
|
core: core2,
|
|
@@ -51057,173 +51715,14 @@ async function initializeArrayStateVariable({
|
|
|
51057
51715
|
component.arrayEntryPrefixes[prefix] = stateVariable;
|
|
51058
51716
|
}
|
|
51059
51717
|
if (stateVarObj.numDimensions > 1) {
|
|
51060
|
-
stateVarObj.keyToIndex =
|
|
51061
|
-
stateVarObj.setArrayValue =
|
|
51062
|
-
|
|
51063
|
-
arrayKey,
|
|
51064
|
-
arraySize: arraySize2,
|
|
51065
|
-
arrayValues = stateVarObj.arrayValues
|
|
51066
|
-
}) {
|
|
51067
|
-
let index2 = stateVarObj.keyToIndex(arrayKey);
|
|
51068
|
-
let numDimensionsInArrayKey = index2.length;
|
|
51069
|
-
if (numDimensionsInArrayKey > stateVarObj.numDimensions) {
|
|
51070
|
-
core2.addDiagnostic({
|
|
51071
|
-
type: "info",
|
|
51072
|
-
message: "Cannot set array value. Number of dimensions is too large.",
|
|
51073
|
-
position: component.position,
|
|
51074
|
-
sourceDoc: component.sourceDoc
|
|
51075
|
-
});
|
|
51076
|
-
return { nFailures: 1 };
|
|
51077
|
-
}
|
|
51078
|
-
let arrayValuesDrillDown = arrayValues;
|
|
51079
|
-
let arraySizeDrillDown = arraySize2;
|
|
51080
|
-
for (let indComponent of index2.slice(0, index2.length - 1)) {
|
|
51081
|
-
if (indComponent >= 0 && indComponent < arraySizeDrillDown[0]) {
|
|
51082
|
-
if (!arrayValuesDrillDown[indComponent]) {
|
|
51083
|
-
arrayValuesDrillDown[indComponent] = [];
|
|
51084
|
-
}
|
|
51085
|
-
arrayValuesDrillDown = arrayValuesDrillDown[indComponent];
|
|
51086
|
-
arraySizeDrillDown = arraySizeDrillDown.slice(1);
|
|
51087
|
-
} else {
|
|
51088
|
-
core2.addDiagnostic({
|
|
51089
|
-
type: "info",
|
|
51090
|
-
message: "ignore setting array value out of bounds",
|
|
51091
|
-
position: component.position,
|
|
51092
|
-
sourceDoc: component.sourceDoc
|
|
51093
|
-
});
|
|
51094
|
-
return { nFailures: 1 };
|
|
51095
|
-
}
|
|
51096
|
-
}
|
|
51097
|
-
let nFailures = 0;
|
|
51098
|
-
if (numDimensionsInArrayKey < stateVarObj.numDimensions) {
|
|
51099
|
-
let setArrayValuesPiece = function(desiredValue, arrayValuesPiece, arraySizePiece) {
|
|
51100
|
-
if (!Array.isArray(desiredValue)) {
|
|
51101
|
-
core2.addDiagnostic({
|
|
51102
|
-
type: "info",
|
|
51103
|
-
message: "ignoring array values with insufficient dimensions",
|
|
51104
|
-
position: component.position,
|
|
51105
|
-
sourceDoc: component.sourceDoc
|
|
51106
|
-
});
|
|
51107
|
-
return { nFailures: 1 };
|
|
51108
|
-
}
|
|
51109
|
-
let nFailuresSub = 0;
|
|
51110
|
-
let currentSize = arraySizePiece[0];
|
|
51111
|
-
if (desiredValue.length > currentSize) {
|
|
51112
|
-
core2.addDiagnostic({
|
|
51113
|
-
type: "info",
|
|
51114
|
-
message: "ignoring array values out of bounds",
|
|
51115
|
-
position: component.position,
|
|
51116
|
-
sourceDoc: component.sourceDoc
|
|
51117
|
-
});
|
|
51118
|
-
nFailuresSub += desiredValue.length - currentSize;
|
|
51119
|
-
desiredValue = desiredValue.slice(0, currentSize);
|
|
51120
|
-
}
|
|
51121
|
-
if (arraySizePiece.length === 1) {
|
|
51122
|
-
for (let [
|
|
51123
|
-
ind,
|
|
51124
|
-
val
|
|
51125
|
-
] of desiredValue.entries()) {
|
|
51126
|
-
arrayValuesPiece[ind] = val;
|
|
51127
|
-
}
|
|
51128
|
-
} else {
|
|
51129
|
-
for (let [
|
|
51130
|
-
ind,
|
|
51131
|
-
val
|
|
51132
|
-
] of desiredValue.entries()) {
|
|
51133
|
-
if (!arrayValuesPiece[ind]) {
|
|
51134
|
-
arrayValuesPiece[ind] = [];
|
|
51135
|
-
}
|
|
51136
|
-
let result22 = setArrayValuesPiece(
|
|
51137
|
-
val,
|
|
51138
|
-
arrayValuesPiece[ind],
|
|
51139
|
-
arraySizePiece.slice(1)
|
|
51140
|
-
);
|
|
51141
|
-
nFailuresSub += result22.nFailures;
|
|
51142
|
-
}
|
|
51143
|
-
}
|
|
51144
|
-
return { nFailures: nFailuresSub };
|
|
51145
|
-
};
|
|
51146
|
-
let result2 = setArrayValuesPiece(
|
|
51147
|
-
value,
|
|
51148
|
-
arrayValuesDrillDown,
|
|
51149
|
-
arraySizeDrillDown
|
|
51150
|
-
);
|
|
51151
|
-
nFailures += result2.nFailures;
|
|
51152
|
-
} else {
|
|
51153
|
-
arrayValuesDrillDown[index2[index2.length - 1]] = value;
|
|
51154
|
-
}
|
|
51155
|
-
return { nFailures };
|
|
51156
|
-
};
|
|
51157
|
-
stateVarObj.getArrayValue = function({
|
|
51158
|
-
arrayKey,
|
|
51159
|
-
arrayValues = stateVarObj.arrayValues
|
|
51160
|
-
}) {
|
|
51161
|
-
let index2 = stateVarObj.keyToIndex(arrayKey);
|
|
51162
|
-
let aVals = arrayValues;
|
|
51163
|
-
for (let indComponent of index2.slice(0, index2.length - 1)) {
|
|
51164
|
-
aVals = aVals[indComponent];
|
|
51165
|
-
if (!aVals) {
|
|
51166
|
-
return void 0;
|
|
51167
|
-
}
|
|
51168
|
-
}
|
|
51169
|
-
return aVals[index2[index2.length - 1]];
|
|
51170
|
-
};
|
|
51718
|
+
stateVarObj.keyToIndex = multiDimKeyToIndex;
|
|
51719
|
+
stateVarObj.setArrayValue = multiDimSetArrayValue;
|
|
51720
|
+
stateVarObj.getArrayValue = multiDimGetArrayValue;
|
|
51171
51721
|
if (!stateVarObj.getAllArrayKeys) {
|
|
51172
|
-
stateVarObj.getAllArrayKeys =
|
|
51173
|
-
function prependToAllKeys(keys2, newStuff) {
|
|
51174
|
-
for (let [ind, key] of keys2.entries()) {
|
|
51175
|
-
if (Array.isArray(key)) {
|
|
51176
|
-
prependToAllKeys(key, newStuff);
|
|
51177
|
-
} else {
|
|
51178
|
-
keys2[ind] = newStuff + "," + key;
|
|
51179
|
-
}
|
|
51180
|
-
}
|
|
51181
|
-
}
|
|
51182
|
-
function getAllArrayKeysSub(subArraySize) {
|
|
51183
|
-
if (subArraySize.length === 1) {
|
|
51184
|
-
return Array.from(
|
|
51185
|
-
Array(subArraySize[0]),
|
|
51186
|
-
(_2, i2) => String(i2)
|
|
51187
|
-
);
|
|
51188
|
-
} else {
|
|
51189
|
-
let currentSize = subArraySize[0];
|
|
51190
|
-
let subSubKeys = getAllArrayKeysSub(
|
|
51191
|
-
subArraySize.slice(1)
|
|
51192
|
-
);
|
|
51193
|
-
let subKeys = [];
|
|
51194
|
-
for (let ind = 0; ind < currentSize; ind++) {
|
|
51195
|
-
if (flatten2) {
|
|
51196
|
-
subKeys.push(
|
|
51197
|
-
...subSubKeys.map(
|
|
51198
|
-
(x2) => ind + "," + x2
|
|
51199
|
-
)
|
|
51200
|
-
);
|
|
51201
|
-
} else {
|
|
51202
|
-
let newSubSubKeys = deepClone(subSubKeys);
|
|
51203
|
-
prependToAllKeys(newSubSubKeys, ind);
|
|
51204
|
-
subKeys.push(newSubSubKeys);
|
|
51205
|
-
}
|
|
51206
|
-
}
|
|
51207
|
-
return subKeys;
|
|
51208
|
-
}
|
|
51209
|
-
}
|
|
51210
|
-
if (desiredSize) {
|
|
51211
|
-
if (desiredSize.length === 0) {
|
|
51212
|
-
return [];
|
|
51213
|
-
} else {
|
|
51214
|
-
return getAllArrayKeysSub(desiredSize);
|
|
51215
|
-
}
|
|
51216
|
-
} else if (!arraySize2 || arraySize2.length === 0) {
|
|
51217
|
-
return [];
|
|
51218
|
-
} else {
|
|
51219
|
-
return getAllArrayKeysSub(arraySize2);
|
|
51220
|
-
}
|
|
51221
|
-
};
|
|
51722
|
+
stateVarObj.getAllArrayKeys = multiDimGetAllArrayKeys;
|
|
51222
51723
|
}
|
|
51223
51724
|
if (!stateVarObj.arrayVarNameFromArrayKey) {
|
|
51224
|
-
stateVarObj.arrayVarNameFromArrayKey =
|
|
51225
|
-
return entryPrefixes[0] + arrayKey.split(",").map((x2) => Number(x2) + 1).join("_");
|
|
51226
|
-
};
|
|
51725
|
+
stateVarObj.arrayVarNameFromArrayKey = defaultMultiDimArrayVarNameFromArrayKey;
|
|
51227
51726
|
}
|
|
51228
51727
|
if (!stateVarObj.arrayVarNameFromPropIndex) {
|
|
51229
51728
|
stateVarObj.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(
|
|
@@ -51231,443 +51730,44 @@ async function initializeArrayStateVariable({
|
|
|
51231
51730
|
entryPrefixes[0]
|
|
51232
51731
|
);
|
|
51233
51732
|
}
|
|
51234
|
-
stateVarObj.adjustArrayToNewArraySize =
|
|
51235
|
-
function resizeSubArray(subArray, subArraySize) {
|
|
51236
|
-
subArray.length = subArraySize[0];
|
|
51237
|
-
if (subArraySize.length > 1) {
|
|
51238
|
-
let subSubArraySize = subArraySize.slice(1);
|
|
51239
|
-
for (let [
|
|
51240
|
-
ind,
|
|
51241
|
-
subSubArray
|
|
51242
|
-
] of subArray.entries()) {
|
|
51243
|
-
if (!subSubArray) {
|
|
51244
|
-
subSubArray = subArray[ind] = [];
|
|
51245
|
-
}
|
|
51246
|
-
resizeSubArray(subSubArray, subSubArraySize);
|
|
51247
|
-
}
|
|
51248
|
-
}
|
|
51249
|
-
}
|
|
51250
|
-
let arraySize2 = await stateVarObj.arraySize;
|
|
51251
|
-
resizeSubArray(stateVarObj.arrayValues, arraySize2);
|
|
51252
|
-
};
|
|
51733
|
+
stateVarObj.adjustArrayToNewArraySize = multiDimAdjustArrayToNewArraySize;
|
|
51253
51734
|
} else {
|
|
51254
|
-
stateVarObj.keyToIndex =
|
|
51255
|
-
stateVarObj.setArrayValue =
|
|
51256
|
-
|
|
51257
|
-
arrayKey,
|
|
51258
|
-
arraySize: arraySize2,
|
|
51259
|
-
arrayValues = stateVarObj.arrayValues
|
|
51260
|
-
}) {
|
|
51261
|
-
let ind = stateVarObj.keyToIndex(arrayKey);
|
|
51262
|
-
if (ind >= 0 && ind < arraySize2[0]) {
|
|
51263
|
-
arrayValues[ind] = value;
|
|
51264
|
-
return { nFailures: 0 };
|
|
51265
|
-
} else {
|
|
51266
|
-
core2.addDiagnostic({
|
|
51267
|
-
type: "info",
|
|
51268
|
-
message: `Ignoring setting array values out of bounds: ${arrayKey} of ${stateVariable}`,
|
|
51269
|
-
position: component.position,
|
|
51270
|
-
sourceDoc: component.sourceDoc
|
|
51271
|
-
});
|
|
51272
|
-
return { nFailures: 1 };
|
|
51273
|
-
}
|
|
51274
|
-
};
|
|
51275
|
-
stateVarObj.getArrayValue = function({
|
|
51276
|
-
arrayKey,
|
|
51277
|
-
arrayValues = stateVarObj.arrayValues
|
|
51278
|
-
}) {
|
|
51279
|
-
return arrayValues[arrayKey];
|
|
51280
|
-
};
|
|
51735
|
+
stateVarObj.keyToIndex = oneDimKeyToIndex;
|
|
51736
|
+
stateVarObj.setArrayValue = oneDimSetArrayValue;
|
|
51737
|
+
stateVarObj.getArrayValue = oneDimGetArrayValue;
|
|
51281
51738
|
if (!stateVarObj.getAllArrayKeys) {
|
|
51282
|
-
stateVarObj.getAllArrayKeys =
|
|
51283
|
-
if (desiredSize) {
|
|
51284
|
-
if (desiredSize.length === 0) {
|
|
51285
|
-
return [];
|
|
51286
|
-
} else {
|
|
51287
|
-
return Array.from(
|
|
51288
|
-
Array(desiredSize[0]),
|
|
51289
|
-
(_2, i2) => String(i2)
|
|
51290
|
-
);
|
|
51291
|
-
}
|
|
51292
|
-
} else if (!arraySize2 || arraySize2.length === 0) {
|
|
51293
|
-
return [];
|
|
51294
|
-
} else {
|
|
51295
|
-
return Array.from(Array(arraySize2[0]), (_2, i2) => String(i2));
|
|
51296
|
-
}
|
|
51297
|
-
};
|
|
51739
|
+
stateVarObj.getAllArrayKeys = oneDimGetAllArrayKeys;
|
|
51298
51740
|
}
|
|
51299
51741
|
if (!stateVarObj.arrayVarNameFromArrayKey) {
|
|
51300
|
-
stateVarObj.arrayVarNameFromArrayKey =
|
|
51301
|
-
return entryPrefixes[0] + String(Number(arrayKey) + 1);
|
|
51302
|
-
};
|
|
51742
|
+
stateVarObj.arrayVarNameFromArrayKey = defaultOneDimArrayVarNameFromArrayKey;
|
|
51303
51743
|
}
|
|
51304
51744
|
if (!stateVarObj.arrayVarNameFromPropIndex) {
|
|
51305
51745
|
stateVarObj.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(1, entryPrefixes[0]);
|
|
51306
51746
|
}
|
|
51307
|
-
stateVarObj.adjustArrayToNewArraySize =
|
|
51308
|
-
let arraySize2 = await stateVarObj.arraySize;
|
|
51309
|
-
stateVarObj.arrayValues.length = arraySize2[0];
|
|
51310
|
-
};
|
|
51747
|
+
stateVarObj.adjustArrayToNewArraySize = oneDimAdjustArrayToNewArraySize;
|
|
51311
51748
|
}
|
|
51312
51749
|
if (!stateVarObj.getArrayKeysFromVarName) {
|
|
51313
51750
|
stateVarObj.getArrayKeysFromVarName = returnDefaultGetArrayKeysFromVarName(stateVarObj.numDimensions);
|
|
51314
51751
|
}
|
|
51315
|
-
stateVarObj.indexToKey =
|
|
51752
|
+
stateVarObj.indexToKey = arrayIndexToKey;
|
|
51316
51753
|
if (!stateVarObj.returnEntryDimensions) {
|
|
51317
|
-
stateVarObj.returnEntryDimensions =
|
|
51754
|
+
stateVarObj.returnEntryDimensions = defaultReturnEntryDimensions;
|
|
51318
51755
|
}
|
|
51319
51756
|
if (stateVarObj.shadowingInstructions) {
|
|
51320
51757
|
if (!stateVarObj.shadowingInstructions.returnWrappingComponents) {
|
|
51321
|
-
stateVarObj.shadowingInstructions.returnWrappingComponents =
|
|
51758
|
+
stateVarObj.shadowingInstructions.returnWrappingComponents = defaultReturnWrappingComponents;
|
|
51322
51759
|
}
|
|
51323
51760
|
stateVarObj.wrappingComponents = stateVarObj.shadowingInstructions.returnWrappingComponents();
|
|
51324
51761
|
}
|
|
51325
51762
|
stateVarObj.usedDefaultByArrayKey = {};
|
|
51326
51763
|
stateVarObj.arrayEntryNames = [];
|
|
51327
51764
|
stateVarObj.varNamesIncludingArrayKeys = {};
|
|
51328
|
-
|
|
51329
|
-
|
|
51330
|
-
|
|
51331
|
-
|
|
51332
|
-
|
|
51333
|
-
|
|
51334
|
-
stateVarObj.returnDependencies = async function(args) {
|
|
51335
|
-
args.arraySize = await stateVarObj.arraySize;
|
|
51336
|
-
for (let key in args.stateValues) {
|
|
51337
|
-
if (key.slice(0, 8) === "__array_") {
|
|
51338
|
-
delete args.stateValues[key];
|
|
51339
|
-
}
|
|
51340
|
-
}
|
|
51341
|
-
if (args.arrayKeys === void 0) {
|
|
51342
|
-
args.arrayKeys = stateVarObj.getAllArrayKeys(args.arraySize);
|
|
51343
|
-
}
|
|
51344
|
-
if (!stateVarObj.dependencyNames) {
|
|
51345
|
-
stateVarObj.dependencyNames = {
|
|
51346
|
-
namesByKey: {},
|
|
51347
|
-
keysByName: {},
|
|
51348
|
-
global: []
|
|
51349
|
-
};
|
|
51350
|
-
if (stateVarObj.additionalStateVariablesDefined) {
|
|
51351
|
-
for (let vName of stateVarObj.additionalStateVariablesDefined) {
|
|
51352
|
-
component.state[vName].dependencyNames = stateVarObj.dependencyNames;
|
|
51353
|
-
}
|
|
51354
|
-
}
|
|
51355
|
-
}
|
|
51356
|
-
let dependencies2 = {};
|
|
51357
|
-
if (stateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
51358
|
-
for (let arrayKey of args.arrayKeys) {
|
|
51359
|
-
for (let vName of allStateVariablesAffected) {
|
|
51360
|
-
let sObj = component.state[vName];
|
|
51361
|
-
dependencies2[vName + "_" + arrayKey] = {
|
|
51362
|
-
dependencyType: "stateVariable",
|
|
51363
|
-
variableName: sObj.arrayVarNameFromArrayKey(arrayKey)
|
|
51364
|
-
};
|
|
51365
|
-
}
|
|
51366
|
-
}
|
|
51367
|
-
} else {
|
|
51368
|
-
let arrayDependencies = stateVarObj.returnArrayDependenciesByKey(args);
|
|
51369
|
-
if (arrayDependencies.globalDependencies) {
|
|
51370
|
-
stateVarObj.dependencyNames.global = Object.keys(
|
|
51371
|
-
arrayDependencies.globalDependencies
|
|
51372
|
-
);
|
|
51373
|
-
Object.assign(
|
|
51374
|
-
dependencies2,
|
|
51375
|
-
arrayDependencies.globalDependencies
|
|
51376
|
-
);
|
|
51377
|
-
}
|
|
51378
|
-
if (!arrayDependencies.dependenciesByKey) {
|
|
51379
|
-
arrayDependencies.dependenciesByKey = {};
|
|
51380
|
-
}
|
|
51381
|
-
for (let arrayKey of args.arrayKeys) {
|
|
51382
|
-
if (!(arrayKey in stateVarObj.dependencyNames.namesByKey)) {
|
|
51383
|
-
args.changedDependency = true;
|
|
51384
|
-
}
|
|
51385
|
-
stateVarObj.dependencyNames.namesByKey[arrayKey] = {};
|
|
51386
|
-
for (let depName in arrayDependencies.dependenciesByKey[arrayKey]) {
|
|
51387
|
-
let extendedDepName = "__" + arrayKey + "_" + depName;
|
|
51388
|
-
dependencies2[extendedDepName] = arrayDependencies.dependenciesByKey[arrayKey][depName];
|
|
51389
|
-
stateVarObj.dependencyNames.namesByKey[arrayKey][depName] = extendedDepName;
|
|
51390
|
-
if (!stateVarObj.dependencyNames.keysByName[extendedDepName]) {
|
|
51391
|
-
stateVarObj.dependencyNames.keysByName[extendedDepName] = [];
|
|
51392
|
-
}
|
|
51393
|
-
if (!stateVarObj.dependencyNames.keysByName[extendedDepName].includes(arrayKey)) {
|
|
51394
|
-
stateVarObj.dependencyNames.keysByName[extendedDepName].push(arrayKey);
|
|
51395
|
-
}
|
|
51396
|
-
}
|
|
51397
|
-
}
|
|
51398
|
-
stateVarObj.dependencyNames.global.push("__array_size");
|
|
51399
|
-
}
|
|
51400
|
-
dependencies2.__array_size = {
|
|
51401
|
-
dependencyType: "stateVariable",
|
|
51402
|
-
variableName: stateVarObj.arraySizeStateVariable
|
|
51403
|
-
};
|
|
51404
|
-
return dependencies2;
|
|
51405
|
-
};
|
|
51406
|
-
stateVarObj.getCurrentFreshness = function({
|
|
51407
|
-
freshnessInfo,
|
|
51408
|
-
arrayKeys,
|
|
51409
|
-
arraySize: arraySize2
|
|
51410
|
-
}) {
|
|
51411
|
-
if (arrayKeys === void 0) {
|
|
51412
|
-
arrayKeys = stateVarObj.getAllArrayKeys(arraySize2);
|
|
51413
|
-
}
|
|
51414
|
-
let freshByKey = freshnessInfo.freshByKey;
|
|
51415
|
-
let numberFresh = freshnessInfo.freshArraySize ? 1 : 0;
|
|
51416
|
-
for (let arrayKey of arrayKeys) {
|
|
51417
|
-
if (freshByKey[arrayKey]) {
|
|
51418
|
-
numberFresh += 1;
|
|
51419
|
-
}
|
|
51420
|
-
}
|
|
51421
|
-
if (numberFresh > 0) {
|
|
51422
|
-
if (numberFresh === arrayKeys.length + 1) {
|
|
51423
|
-
return { fresh: { [stateVariable]: true } };
|
|
51424
|
-
} else {
|
|
51425
|
-
return { partiallyFresh: { [stateVariable]: numberFresh } };
|
|
51426
|
-
}
|
|
51427
|
-
} else {
|
|
51428
|
-
return { fresh: { [stateVariable]: false } };
|
|
51429
|
-
}
|
|
51430
|
-
};
|
|
51431
|
-
stateVarObj.markStale = function({
|
|
51432
|
-
freshnessInfo,
|
|
51433
|
-
changes,
|
|
51434
|
-
arrayKeys,
|
|
51435
|
-
arraySize: arraySize2
|
|
51436
|
-
}) {
|
|
51437
|
-
let result2 = {};
|
|
51438
|
-
if (arrayKeys === void 0) {
|
|
51439
|
-
arrayKeys = stateVarObj.getAllArrayKeys(arraySize2);
|
|
51440
|
-
}
|
|
51441
|
-
if (stateVarObj.markStaleByKey) {
|
|
51442
|
-
result2 = stateVarObj.markStaleByKey({ arrayKeys, changes });
|
|
51443
|
-
}
|
|
51444
|
-
let freshByKey = freshnessInfo.freshByKey;
|
|
51445
|
-
if (changes.__array_size) {
|
|
51446
|
-
freshnessInfo.freshArraySize = false;
|
|
51447
|
-
freshnessInfo.freshByKey = {};
|
|
51448
|
-
result2.fresh = { [stateVariable]: false };
|
|
51449
|
-
return result2;
|
|
51450
|
-
}
|
|
51451
|
-
if (Object.keys(freshByKey).length === 0) {
|
|
51452
|
-
freshnessInfo.freshByKey = {};
|
|
51453
|
-
if (freshnessInfo.freshArraySize) {
|
|
51454
|
-
result2.partiallyFresh = { [stateVariable]: 1 };
|
|
51455
|
-
return result2;
|
|
51456
|
-
} else {
|
|
51457
|
-
result2.fresh = { [stateVariable]: false };
|
|
51458
|
-
return result2;
|
|
51459
|
-
}
|
|
51460
|
-
}
|
|
51461
|
-
for (let changeName in changes) {
|
|
51462
|
-
if (stateVarObj.dependencyNames.global.includes(changeName)) {
|
|
51463
|
-
freshnessInfo.freshByKey = {};
|
|
51464
|
-
if (freshnessInfo.freshArraySize) {
|
|
51465
|
-
result2.partiallyFresh = { [stateVariable]: 1 };
|
|
51466
|
-
return result2;
|
|
51467
|
-
} else {
|
|
51468
|
-
result2.fresh = { [stateVariable]: false };
|
|
51469
|
-
return result2;
|
|
51470
|
-
}
|
|
51471
|
-
}
|
|
51472
|
-
if (stateVarObj.basedOnArrayKeyStateVariables && arrayKeys.length > 1) {
|
|
51473
|
-
delete freshByKey[changeName];
|
|
51474
|
-
} else {
|
|
51475
|
-
for (let key of stateVarObj.dependencyNames.keysByName[changeName]) {
|
|
51476
|
-
delete freshByKey[key];
|
|
51477
|
-
}
|
|
51478
|
-
}
|
|
51479
|
-
}
|
|
51480
|
-
let numberFresh = freshnessInfo.freshArraySize ? 1 : 0;
|
|
51481
|
-
for (let arrayKey of arrayKeys) {
|
|
51482
|
-
if (freshByKey[arrayKey]) {
|
|
51483
|
-
numberFresh += 1;
|
|
51484
|
-
}
|
|
51485
|
-
}
|
|
51486
|
-
if (numberFresh > 0) {
|
|
51487
|
-
if (numberFresh === arrayKeys.length + 1) {
|
|
51488
|
-
result2.fresh = { [stateVariable]: true };
|
|
51489
|
-
return result2;
|
|
51490
|
-
} else {
|
|
51491
|
-
result2.partiallyFresh = { [stateVariable]: numberFresh };
|
|
51492
|
-
return result2;
|
|
51493
|
-
}
|
|
51494
|
-
} else {
|
|
51495
|
-
result2.fresh = { [stateVariable]: false };
|
|
51496
|
-
return result2;
|
|
51497
|
-
}
|
|
51498
|
-
};
|
|
51499
|
-
stateVarObj.freshenOnNoChanges = function({
|
|
51500
|
-
arrayKeys,
|
|
51501
|
-
freshnessInfo,
|
|
51502
|
-
arraySize: arraySize2
|
|
51503
|
-
}) {
|
|
51504
|
-
let freshByKey = freshnessInfo.freshByKey;
|
|
51505
|
-
if (arrayKeys === void 0) {
|
|
51506
|
-
arrayKeys = stateVarObj.getAllArrayKeys(arraySize2);
|
|
51507
|
-
}
|
|
51508
|
-
for (let arrayKey of arrayKeys) {
|
|
51509
|
-
freshByKey[arrayKey] = true;
|
|
51510
|
-
}
|
|
51511
|
-
};
|
|
51512
|
-
function extractArrayDependencies(dependencyValues, arrayKeys, usedDefault) {
|
|
51513
|
-
let globalDependencyValues = {};
|
|
51514
|
-
let globalUsedDefault = {};
|
|
51515
|
-
for (let dependencyName of stateVarObj.dependencyNames.global) {
|
|
51516
|
-
globalDependencyValues[dependencyName] = dependencyValues[dependencyName];
|
|
51517
|
-
globalUsedDefault[dependencyName] = usedDefault[dependencyName];
|
|
51518
|
-
}
|
|
51519
|
-
let dependencyValuesByKey = {};
|
|
51520
|
-
let usedDefaultByKey = {};
|
|
51521
|
-
let foundAllDependencyValuesForKey = {};
|
|
51522
|
-
for (let arrayKey of arrayKeys) {
|
|
51523
|
-
dependencyValuesByKey[arrayKey] = {};
|
|
51524
|
-
usedDefaultByKey[arrayKey] = {};
|
|
51525
|
-
if (arrayKey in stateVarObj.dependencyNames.namesByKey) {
|
|
51526
|
-
foundAllDependencyValuesForKey[arrayKey] = true;
|
|
51527
|
-
for (let dependencyName in stateVarObj.dependencyNames.namesByKey[arrayKey]) {
|
|
51528
|
-
let extendedDepName = stateVarObj.dependencyNames.namesByKey[arrayKey][dependencyName];
|
|
51529
|
-
if (extendedDepName in dependencyValues) {
|
|
51530
|
-
dependencyValuesByKey[arrayKey][dependencyName] = dependencyValues[extendedDepName];
|
|
51531
|
-
usedDefaultByKey[arrayKey][dependencyName] = usedDefault[extendedDepName];
|
|
51532
|
-
} else {
|
|
51533
|
-
foundAllDependencyValuesForKey[arrayKey] = false;
|
|
51534
|
-
}
|
|
51535
|
-
}
|
|
51536
|
-
}
|
|
51537
|
-
}
|
|
51538
|
-
return {
|
|
51539
|
-
globalDependencyValues,
|
|
51540
|
-
globalUsedDefault,
|
|
51541
|
-
dependencyValuesByKey,
|
|
51542
|
-
usedDefaultByKey,
|
|
51543
|
-
foundAllDependencyValuesForKey
|
|
51544
|
-
};
|
|
51545
|
-
}
|
|
51546
|
-
stateVarObj.definition = function(args) {
|
|
51547
|
-
if (args.arrayKeys === void 0) {
|
|
51548
|
-
args.arrayKeys = stateVarObj.getAllArrayKeys(args.arraySize);
|
|
51549
|
-
}
|
|
51550
|
-
if (stateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
51551
|
-
return {};
|
|
51552
|
-
} else {
|
|
51553
|
-
let extractedDeps = extractArrayDependencies(
|
|
51554
|
-
args.dependencyValues,
|
|
51555
|
-
args.arrayKeys,
|
|
51556
|
-
args.usedDefault
|
|
51557
|
-
);
|
|
51558
|
-
let globalDependencyValues = extractedDeps.globalDependencyValues;
|
|
51559
|
-
let globalUsedDefault = extractedDeps.globalUsedDefault;
|
|
51560
|
-
let dependencyValuesByKey = extractedDeps.dependencyValuesByKey;
|
|
51561
|
-
let usedDefaultByKey = extractedDeps.usedDefaultByKey;
|
|
51562
|
-
let foundAllDependencyValuesForKey = extractedDeps.foundAllDependencyValuesForKey;
|
|
51563
|
-
delete args.dependencyValues;
|
|
51564
|
-
args.globalDependencyValues = globalDependencyValues;
|
|
51565
|
-
args.globalUsedDefault = globalUsedDefault;
|
|
51566
|
-
args.dependencyValuesByKey = dependencyValuesByKey;
|
|
51567
|
-
args.usedDefaultByKey = usedDefaultByKey;
|
|
51568
|
-
let arrayKeysToRecalculate = [];
|
|
51569
|
-
let freshByKey = args.freshnessInfo.freshByKey;
|
|
51570
|
-
for (let arrayKey of args.arrayKeys) {
|
|
51571
|
-
if (!freshByKey[arrayKey] && foundAllDependencyValuesForKey[arrayKey]) {
|
|
51572
|
-
freshByKey[arrayKey] = true;
|
|
51573
|
-
arrayKeysToRecalculate.push(arrayKey);
|
|
51574
|
-
}
|
|
51575
|
-
}
|
|
51576
|
-
let result2;
|
|
51577
|
-
if (arrayKeysToRecalculate.length === 0) {
|
|
51578
|
-
result2 = {};
|
|
51579
|
-
} else {
|
|
51580
|
-
args.arrayKeys = arrayKeysToRecalculate;
|
|
51581
|
-
if (!stateVarObj.arrayDefinitionByKey) {
|
|
51582
|
-
throw Error(
|
|
51583
|
-
`For ${stateVariable} of ${component.componentType}, arrayDefinitionByKey must be a function`
|
|
51584
|
-
);
|
|
51585
|
-
}
|
|
51586
|
-
result2 = stateVarObj.arrayDefinitionByKey(args);
|
|
51587
|
-
if (result2.setValue && result2.setValue[stateVariable]) {
|
|
51588
|
-
for (let arrayKey in result2.setValue[stateVariable]) {
|
|
51589
|
-
freshByKey[arrayKey] = true;
|
|
51590
|
-
}
|
|
51591
|
-
}
|
|
51592
|
-
if (result2.useEssentialOrDefaultValue && result2.useEssentialOrDefaultValue[stateVariable]) {
|
|
51593
|
-
for (let arrayKey in result2.useEssentialOrDefaultValue[stateVariable]) {
|
|
51594
|
-
freshByKey[arrayKey] = true;
|
|
51595
|
-
}
|
|
51596
|
-
}
|
|
51597
|
-
}
|
|
51598
|
-
if (!args.freshnessInfo.freshArraySize) {
|
|
51599
|
-
if (args.changes.__array_size) {
|
|
51600
|
-
result2.arraySizeChanged = [stateVariable];
|
|
51601
|
-
if (stateVarObj.additionalStateVariablesDefined) {
|
|
51602
|
-
for (let varName of stateVarObj.additionalStateVariablesDefined) {
|
|
51603
|
-
if (component.state[varName].isArray) {
|
|
51604
|
-
result2.arraySizeChanged.push(varName);
|
|
51605
|
-
}
|
|
51606
|
-
}
|
|
51607
|
-
}
|
|
51608
|
-
}
|
|
51609
|
-
args.freshnessInfo.freshArraySize = true;
|
|
51610
|
-
}
|
|
51611
|
-
return result2;
|
|
51612
|
-
}
|
|
51613
|
-
};
|
|
51614
|
-
stateVarObj.inverseDefinition = function(args) {
|
|
51615
|
-
if (!stateVarObj.inverseArrayDefinitionByKey) {
|
|
51616
|
-
return { success: false };
|
|
51617
|
-
}
|
|
51618
|
-
if (args.arrayKeys === void 0) {
|
|
51619
|
-
args.arrayKeys = stateVarObj.getAllArrayKeys(args.arraySize);
|
|
51620
|
-
}
|
|
51621
|
-
if (stateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
51622
|
-
let instructions = [];
|
|
51623
|
-
for (let vName of allStateVariablesAffected) {
|
|
51624
|
-
for (let key in args.desiredStateVariableValues[vName]) {
|
|
51625
|
-
let depName = vName + "_" + key;
|
|
51626
|
-
if (depName in args.dependencyValues) {
|
|
51627
|
-
instructions.push({
|
|
51628
|
-
setDependency: depName,
|
|
51629
|
-
desiredValue: args.desiredStateVariableValues[vName][key],
|
|
51630
|
-
treatAsInitialChange: args.initialChange
|
|
51631
|
-
});
|
|
51632
|
-
}
|
|
51633
|
-
}
|
|
51634
|
-
}
|
|
51635
|
-
return {
|
|
51636
|
-
success: true,
|
|
51637
|
-
instructions
|
|
51638
|
-
};
|
|
51639
|
-
} else {
|
|
51640
|
-
let extractedDeps = extractArrayDependencies(
|
|
51641
|
-
args.dependencyValues,
|
|
51642
|
-
args.arrayKeys,
|
|
51643
|
-
args.usedDefault
|
|
51644
|
-
);
|
|
51645
|
-
let globalDependencyValues = extractedDeps.globalDependencyValues;
|
|
51646
|
-
let globalUsedDefault = extractedDeps.globalUsedDefault;
|
|
51647
|
-
let dependencyValuesByKey = extractedDeps.dependencyValuesByKey;
|
|
51648
|
-
let usedDefaultByKey = extractedDeps.usedDefaultByKey;
|
|
51649
|
-
delete args.dependencyValues;
|
|
51650
|
-
args.globalDependencyValues = globalDependencyValues;
|
|
51651
|
-
args.globalUsedDefault = globalUsedDefault;
|
|
51652
|
-
args.dependencyValuesByKey = dependencyValuesByKey;
|
|
51653
|
-
args.usedDefaultByKey = usedDefaultByKey;
|
|
51654
|
-
args.dependencyNamesByKey = stateVarObj.dependencyNames.namesByKey;
|
|
51655
|
-
if (!stateVarObj.allowExtraArrayKeysInInverse) {
|
|
51656
|
-
let newDesiredStateVariableValues = {};
|
|
51657
|
-
for (let vName in args.desiredStateVariableValues) {
|
|
51658
|
-
newDesiredStateVariableValues[vName] = {};
|
|
51659
|
-
for (let key in args.desiredStateVariableValues[vName]) {
|
|
51660
|
-
if (args.arrayKeys.includes(key)) {
|
|
51661
|
-
newDesiredStateVariableValues[vName][key] = args.desiredStateVariableValues[vName][key];
|
|
51662
|
-
}
|
|
51663
|
-
}
|
|
51664
|
-
}
|
|
51665
|
-
args.desiredStateVariableValues = newDesiredStateVariableValues;
|
|
51666
|
-
}
|
|
51667
|
-
let result2 = stateVarObj.inverseArrayDefinitionByKey(args);
|
|
51668
|
-
return result2;
|
|
51669
|
-
}
|
|
51670
|
-
};
|
|
51765
|
+
stateVarObj.returnDependencies = arrayReturnDependencies;
|
|
51766
|
+
stateVarObj.getCurrentFreshness = arrayGetCurrentFreshness;
|
|
51767
|
+
stateVarObj.markStale = arrayMarkStale;
|
|
51768
|
+
stateVarObj.freshenOnNoChanges = arrayFreshenOnNoChanges;
|
|
51769
|
+
stateVarObj.definition = arrayDefinition;
|
|
51770
|
+
stateVarObj.inverseDefinition = arrayInverseDefinition;
|
|
51671
51771
|
await createArraySizeStateVariable({
|
|
51672
51772
|
core: core2,
|
|
51673
51773
|
stateVarObj,
|
|
@@ -51676,46 +51776,12 @@ async function initializeArrayStateVariable({
|
|
|
51676
51776
|
});
|
|
51677
51777
|
stateVarObj.arraySizeStale = true;
|
|
51678
51778
|
stateVarObj.previousArraySize = [];
|
|
51679
|
-
Object.defineProperty(
|
|
51680
|
-
|
|
51681
|
-
|
|
51682
|
-
|
|
51683
|
-
|
|
51684
|
-
|
|
51685
|
-
if (stateVarObj.arraySizeStale) {
|
|
51686
|
-
await stateVarObj.recalculateArraySizeDependentQuantities();
|
|
51687
|
-
}
|
|
51688
|
-
return await component.stateValues[stateVarObj.arraySizeStateVariable];
|
|
51689
|
-
})();
|
|
51690
|
-
}
|
|
51691
|
-
});
|
|
51692
|
-
stateVarObj.recalculateArraySizeDependentQuantities = async function() {
|
|
51693
|
-
let newArraySize = await component.stateValues[stateVarObj.arraySizeStateVariable];
|
|
51694
|
-
if (stateVarObj.previousArraySize.length !== newArraySize.length || stateVarObj.previousArraySize.some(
|
|
51695
|
-
(v2, i2) => v2 != newArraySize[i2]
|
|
51696
|
-
)) {
|
|
51697
|
-
stateVarObj.previousArraySize = [...newArraySize];
|
|
51698
|
-
let varNamesIncluding = stateVarObj.varNamesIncludingArrayKeys = {};
|
|
51699
|
-
for (let entryName of stateVarObj.arrayEntryNames) {
|
|
51700
|
-
let entryStateVarObj = component.state[entryName];
|
|
51701
|
-
let arrayKeys = stateVarObj.getArrayKeysFromVarName({
|
|
51702
|
-
arrayEntryPrefix: entryStateVarObj.entryPrefix,
|
|
51703
|
-
varEnding: entryStateVarObj.varEnding,
|
|
51704
|
-
arraySize: newArraySize,
|
|
51705
|
-
numDimensions: stateVarObj.numDimensions
|
|
51706
|
-
});
|
|
51707
|
-
entryStateVarObj._unflattenedArrayKeys = arrayKeys;
|
|
51708
|
-
entryStateVarObj._arrayKeys = flattenDeep(arrayKeys);
|
|
51709
|
-
for (let arrayKey of entryStateVarObj._arrayKeys) {
|
|
51710
|
-
if (!varNamesIncluding[arrayKey]) {
|
|
51711
|
-
varNamesIncluding[arrayKey] = [];
|
|
51712
|
-
}
|
|
51713
|
-
varNamesIncluding[arrayKey].push(entryName);
|
|
51714
|
-
}
|
|
51715
|
-
}
|
|
51716
|
-
}
|
|
51717
|
-
stateVarObj.arraySizeStale = false;
|
|
51718
|
-
};
|
|
51779
|
+
Object.defineProperty(
|
|
51780
|
+
stateVarObj,
|
|
51781
|
+
"arraySize",
|
|
51782
|
+
ARRAY_ARRAY_SIZE_DESCRIPTOR
|
|
51783
|
+
);
|
|
51784
|
+
stateVarObj.recalculateArraySizeDependentQuantities = arrayRecalculateArraySizeDependentQuantities;
|
|
51719
51785
|
if (!stateVarObj.freshnessInfo) {
|
|
51720
51786
|
stateVarObj.freshnessInfo = { freshByKey: {} };
|
|
51721
51787
|
if (stateVarObj.additionalStateVariablesDefined) {
|
|
@@ -51753,34 +51819,17 @@ async function createArraySizeStateVariable({
|
|
|
51753
51819
|
if (component.state[arraySizeStateVar]) {
|
|
51754
51820
|
if (component.state[arraySizeStateVar].isShadow) {
|
|
51755
51821
|
let arraySizeStateVarObj = component.state[arraySizeStateVar];
|
|
51756
|
-
arraySizeStateVarObj.
|
|
51757
|
-
|
|
51758
|
-
component.state[varName].arraySizeStale = true;
|
|
51759
|
-
}
|
|
51760
|
-
return {};
|
|
51761
|
-
};
|
|
51822
|
+
arraySizeStateVarObj.arraySizeVarNamesAffected = allStateVariablesAffected;
|
|
51823
|
+
arraySizeStateVarObj.markStale = arraySizeMarkStale;
|
|
51762
51824
|
}
|
|
51763
51825
|
return;
|
|
51764
51826
|
}
|
|
51765
51827
|
component.state[arraySizeStateVar] = {
|
|
51766
51828
|
returnDependencies: stateVarObj.returnArraySizeDependencies,
|
|
51767
|
-
definition
|
|
51768
|
-
|
|
51769
|
-
|
|
51770
|
-
|
|
51771
|
-
for (let [ind, value] of arraySize2.entries()) {
|
|
51772
|
-
if (!(Number.isInteger(value) && value >= 0)) {
|
|
51773
|
-
arraySize2[ind] = 0;
|
|
51774
|
-
}
|
|
51775
|
-
}
|
|
51776
|
-
return { setValue: { [arraySizeStateVar]: arraySize2 } };
|
|
51777
|
-
},
|
|
51778
|
-
markStale() {
|
|
51779
|
-
for (let varName of allStateVariablesAffected) {
|
|
51780
|
-
component.state[varName].arraySizeStale = true;
|
|
51781
|
-
}
|
|
51782
|
-
return {};
|
|
51783
|
-
}
|
|
51829
|
+
definition: arraySizeDefinition,
|
|
51830
|
+
markStale: arraySizeMarkStale,
|
|
51831
|
+
arraySizeVarNamesAffected: allStateVariablesAffected,
|
|
51832
|
+
arraySizeSourceVarName: stateVariable
|
|
51784
51833
|
};
|
|
51785
51834
|
if (stateVarObj.stateVariablesDeterminingArraySizeDependencies) {
|
|
51786
51835
|
component.state[arraySizeStateVar].stateVariablesDeterminingDependencies = stateVarObj.stateVariablesDeterminingArraySizeDependencies;
|
|
@@ -64309,17 +64358,12 @@ class StalenessPropagator {
|
|
|
64309
64358
|
* as stale: the next `await stateVarObj.value` will recompute, while
|
|
64310
64359
|
* `_previousValue` is preserved for change-detection.
|
|
64311
64360
|
*/
|
|
64312
|
-
async _replaceWithStaleGetter(stateVarObj
|
|
64361
|
+
async _replaceWithStaleGetter(stateVarObj) {
|
|
64313
64362
|
stateVarObj._previousValue = await stateVarObj.value;
|
|
64314
64363
|
if (Array.isArray(stateVarObj._previousValue)) {
|
|
64315
64364
|
stateVarObj._previousValue = [...stateVarObj._previousValue];
|
|
64316
64365
|
}
|
|
64317
|
-
|
|
64318
|
-
const getStateVar = this.core.getStateVariableValue;
|
|
64319
|
-
Object.defineProperty(stateVarObj, "value", {
|
|
64320
|
-
get: () => getStateVar({ component, stateVariable: vName }),
|
|
64321
|
-
configurable: true
|
|
64322
|
-
});
|
|
64366
|
+
installStaleValueGetter(stateVarObj);
|
|
64323
64367
|
}
|
|
64324
64368
|
/**
|
|
64325
64369
|
* Visit `component` for stale-marking against `varName` plus every
|
|
@@ -64444,11 +64488,7 @@ class StalenessPropagator {
|
|
|
64444
64488
|
const stateVarObj = allStateVariablesAffectedObj[vName];
|
|
64445
64489
|
delete stateVarObj.recursiveDependencyValues;
|
|
64446
64490
|
if (previouslyFreshVars.includes(vName)) {
|
|
64447
|
-
await this._replaceWithStaleGetter(
|
|
64448
|
-
stateVarObj,
|
|
64449
|
-
component,
|
|
64450
|
-
vName
|
|
64451
|
-
);
|
|
64491
|
+
await this._replaceWithStaleGetter(stateVarObj);
|
|
64452
64492
|
}
|
|
64453
64493
|
}
|
|
64454
64494
|
if (freshnessDecreased) {
|
|
@@ -67603,7 +67643,13 @@ class Core {
|
|
|
67603
67643
|
requestSolutionView: this.requestSolutionView.bind(this),
|
|
67604
67644
|
requestComponentDoenetML: this.requestComponentDoenetML.bind(this),
|
|
67605
67645
|
copyToClipboard: this.copyToClipboard.bind(this),
|
|
67606
|
-
navigateToTarget: (args) => navigateToTarget({ core: this, args })
|
|
67646
|
+
navigateToTarget: (args) => navigateToTarget({ core: this, args }),
|
|
67647
|
+
// State-variable runtime plumbing, not component-facing API:
|
|
67648
|
+
// the shared state-variable functions in StateVariableInitializer
|
|
67649
|
+
// reach core through `svComponent.coreFunctions`.
|
|
67650
|
+
getStateVariableValue: this.getStateVariableValue,
|
|
67651
|
+
// bound above
|
|
67652
|
+
addDiagnostic: this.addDiagnostic.bind(this)
|
|
67607
67653
|
};
|
|
67608
67654
|
this.updateInfo = {
|
|
67609
67655
|
componentsToUpdateRenderers: /* @__PURE__ */ new Set(),
|
|
@@ -229197,4 +229243,4 @@ export {
|
|
|
229197
229243
|
getDefaultExportFromCjs as g,
|
|
229198
229244
|
updateSyntaxFromV06toV07 as u
|
|
229199
229245
|
};
|
|
229200
|
-
//# sourceMappingURL=index-
|
|
229246
|
+
//# sourceMappingURL=index-CyEKEyxP.js.map
|