@doenet/v06-to-v07 0.7.20-dev.318 → 0.7.20-dev.320
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-D7QB7nkv.js} +1270 -1168
- package/{index-BBh2EPqg.js.map → index-D7QB7nkv.js.map} +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/{sha256-C0vj3HDn-B-uuLxXp-p9edzkPO.js → sha256-C0vj3HDn-BWgi3hyU-CUhpeiV-.js} +2 -2
- package/{sha256-C0vj3HDn-B-uuLxXp-p9edzkPO.js.map → sha256-C0vj3HDn-BWgi3hyU-CUhpeiV-.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-BWgi3hyU-CUhpeiV-.js").then((n2) => n2.s)).default;
|
|
40967
40967
|
digest = (data2) => sha256(data2, {
|
|
40968
40968
|
asBytes: true
|
|
40969
40969
|
});
|
|
@@ -49611,6 +49611,1261 @@ function recursivelyReplaceCompositesWithReplacements({
|
|
|
49611
49611
|
unexpandedCompositesNotReady
|
|
49612
49612
|
};
|
|
49613
49613
|
}
|
|
49614
|
+
function renameStateVariable({
|
|
49615
|
+
stateVariableDefinitions,
|
|
49616
|
+
oldName,
|
|
49617
|
+
newName
|
|
49618
|
+
}) {
|
|
49619
|
+
let stateVarDef = stateVariableDefinitions[newName] = stateVariableDefinitions[oldName];
|
|
49620
|
+
delete stateVariableDefinitions[oldName];
|
|
49621
|
+
stateVarDef.excludeFromSchema = true;
|
|
49622
|
+
if (stateVarDef.additionalStateVariablesDefined) {
|
|
49623
|
+
let ind = stateVarDef.additionalStateVariablesDefined.indexOf(oldName);
|
|
49624
|
+
if (ind !== -1) {
|
|
49625
|
+
stateVarDef.additionalStateVariablesDefined[ind] = newName;
|
|
49626
|
+
}
|
|
49627
|
+
}
|
|
49628
|
+
let originalDefinition = stateVarDef.definition;
|
|
49629
|
+
let keysInObjects = [
|
|
49630
|
+
"setValue",
|
|
49631
|
+
"useEssentialOrDefaultValue",
|
|
49632
|
+
"setEssentialValue"
|
|
49633
|
+
];
|
|
49634
|
+
let entriesInArrays = ["noChanges"];
|
|
49635
|
+
stateVarDef.definition = function(args) {
|
|
49636
|
+
let result2 = originalDefinition(args);
|
|
49637
|
+
for (let key of keysInObjects) {
|
|
49638
|
+
if (result2[key] && oldName in result2[key]) {
|
|
49639
|
+
result2[key][newName] = result2[key][oldName];
|
|
49640
|
+
delete result2[key][oldName];
|
|
49641
|
+
}
|
|
49642
|
+
}
|
|
49643
|
+
for (let key of entriesInArrays) {
|
|
49644
|
+
if (result2[key]) {
|
|
49645
|
+
let ind = result2[key].indexOf(oldName);
|
|
49646
|
+
if (ind !== -1) {
|
|
49647
|
+
result2[key][ind] = newName;
|
|
49648
|
+
}
|
|
49649
|
+
}
|
|
49650
|
+
}
|
|
49651
|
+
return result2;
|
|
49652
|
+
};
|
|
49653
|
+
let originalInverseDefinition = stateVarDef.inverseDefinition;
|
|
49654
|
+
if (originalInverseDefinition) {
|
|
49655
|
+
stateVarDef.inverseDefinition = async function(args) {
|
|
49656
|
+
let desiredStateVariableValues = args.desiredStateVariableValues;
|
|
49657
|
+
desiredStateVariableValues[oldName] = desiredStateVariableValues[newName];
|
|
49658
|
+
delete desiredStateVariableValues[newName];
|
|
49659
|
+
let results = await originalInverseDefinition(args);
|
|
49660
|
+
if (results.success) {
|
|
49661
|
+
for (let instruction of results.instructions) {
|
|
49662
|
+
if (instruction.setEssentialValue === oldName) {
|
|
49663
|
+
instruction.setEssentialValue = newName;
|
|
49664
|
+
}
|
|
49665
|
+
}
|
|
49666
|
+
}
|
|
49667
|
+
return results;
|
|
49668
|
+
};
|
|
49669
|
+
}
|
|
49670
|
+
}
|
|
49671
|
+
function defaultGetArrayKeysFromVarNameMultiDim({
|
|
49672
|
+
arrayEntryPrefix,
|
|
49673
|
+
varEnding,
|
|
49674
|
+
arraySize: arraySize2,
|
|
49675
|
+
numDimensions
|
|
49676
|
+
}) {
|
|
49677
|
+
let indices = varEnding.split("_").map((x2) => Number(x2) - 1);
|
|
49678
|
+
if (indices.length === numDimensions && indices.every((x2, i2) => Number.isInteger(x2) && x2 >= 0)) {
|
|
49679
|
+
if (arraySize2) {
|
|
49680
|
+
if (indices.every((x2, i2) => x2 < arraySize2[i2])) {
|
|
49681
|
+
return [String(indices)];
|
|
49682
|
+
} else {
|
|
49683
|
+
return [];
|
|
49684
|
+
}
|
|
49685
|
+
} else {
|
|
49686
|
+
return [String(indices)];
|
|
49687
|
+
}
|
|
49688
|
+
} else {
|
|
49689
|
+
return [];
|
|
49690
|
+
}
|
|
49691
|
+
}
|
|
49692
|
+
function defaultGetArrayKeysFromVarNameOneDim({
|
|
49693
|
+
arrayEntryPrefix,
|
|
49694
|
+
varEnding,
|
|
49695
|
+
arraySize: arraySize2
|
|
49696
|
+
}) {
|
|
49697
|
+
let index2 = Number(varEnding) - 1;
|
|
49698
|
+
if (Number.isInteger(index2) && index2 >= 0) {
|
|
49699
|
+
if (arraySize2) {
|
|
49700
|
+
if (index2 < arraySize2[0]) {
|
|
49701
|
+
return [String(index2)];
|
|
49702
|
+
} else {
|
|
49703
|
+
return [];
|
|
49704
|
+
}
|
|
49705
|
+
} else {
|
|
49706
|
+
return [String(index2)];
|
|
49707
|
+
}
|
|
49708
|
+
} else {
|
|
49709
|
+
return [];
|
|
49710
|
+
}
|
|
49711
|
+
}
|
|
49712
|
+
function returnDefaultGetArrayKeysFromVarName(numDim) {
|
|
49713
|
+
if (numDim > 1) {
|
|
49714
|
+
return defaultGetArrayKeysFromVarNameMultiDim;
|
|
49715
|
+
} else {
|
|
49716
|
+
return defaultGetArrayKeysFromVarNameOneDim;
|
|
49717
|
+
}
|
|
49718
|
+
}
|
|
49719
|
+
function returnDefaultArrayVarNameFromPropIndex(numDim, arrayEntryPrefix) {
|
|
49720
|
+
if (numDim > 1) {
|
|
49721
|
+
return function(propIndex, varName) {
|
|
49722
|
+
return arrayEntryPrefix + [
|
|
49723
|
+
...propIndex.map((x2) => Math.round(Number(x2))),
|
|
49724
|
+
...Array(numDim - propIndex.length).fill(1)
|
|
49725
|
+
].join("_");
|
|
49726
|
+
};
|
|
49727
|
+
} else {
|
|
49728
|
+
return function(propIndex, varName) {
|
|
49729
|
+
return arrayEntryPrefix + propIndex[0];
|
|
49730
|
+
};
|
|
49731
|
+
}
|
|
49732
|
+
}
|
|
49733
|
+
function getStaleStateVariableValue() {
|
|
49734
|
+
return this.svComponent.coreFunctions.getStateVariableValue({
|
|
49735
|
+
component: this.svComponent,
|
|
49736
|
+
stateVariable: this.svVarName
|
|
49737
|
+
});
|
|
49738
|
+
}
|
|
49739
|
+
const STALE_VALUE_DESCRIPTOR = Object.freeze({
|
|
49740
|
+
get: getStaleStateVariableValue,
|
|
49741
|
+
configurable: true
|
|
49742
|
+
});
|
|
49743
|
+
function installStaleValueGetter(stateVarObj) {
|
|
49744
|
+
delete stateVarObj.value;
|
|
49745
|
+
Object.defineProperty(stateVarObj, "value", STALE_VALUE_DESCRIPTOR);
|
|
49746
|
+
}
|
|
49747
|
+
async function entryGetValueViaGetEntryValues() {
|
|
49748
|
+
const arrayStateVarObj = this.svComponent.state[this.arrayStateVariable];
|
|
49749
|
+
return await arrayStateVarObj.getEntryValues({
|
|
49750
|
+
varName: this.svVarName
|
|
49751
|
+
});
|
|
49752
|
+
}
|
|
49753
|
+
async function entryGetValueFromArrayValues() {
|
|
49754
|
+
const arrayStateVarObj = this.svComponent.state[this.arrayStateVariable];
|
|
49755
|
+
const arrayKeys = await this.arrayKeys;
|
|
49756
|
+
if (arrayKeys.length === 0) {
|
|
49757
|
+
return;
|
|
49758
|
+
}
|
|
49759
|
+
const value = [];
|
|
49760
|
+
for (const arrayKey of arrayKeys) {
|
|
49761
|
+
value.push(arrayStateVarObj.getArrayValue({ arrayKey }));
|
|
49762
|
+
}
|
|
49763
|
+
if (value.length === 1) {
|
|
49764
|
+
return value[0];
|
|
49765
|
+
} else {
|
|
49766
|
+
return value;
|
|
49767
|
+
}
|
|
49768
|
+
}
|
|
49769
|
+
function getEntryArrayKeys() {
|
|
49770
|
+
return (async () => {
|
|
49771
|
+
await this.svComponent.state[this.arrayStateVariable].arraySize;
|
|
49772
|
+
return this._arrayKeys;
|
|
49773
|
+
})();
|
|
49774
|
+
}
|
|
49775
|
+
const ENTRY_ARRAY_KEYS_DESCRIPTOR = Object.freeze({
|
|
49776
|
+
get: getEntryArrayKeys
|
|
49777
|
+
});
|
|
49778
|
+
function getEntryUnflattenedArrayKeys() {
|
|
49779
|
+
return (async () => {
|
|
49780
|
+
await this.svComponent.state[this.arrayStateVariable].arraySize;
|
|
49781
|
+
return this._unflattenedArrayKeys;
|
|
49782
|
+
})();
|
|
49783
|
+
}
|
|
49784
|
+
const ENTRY_UNFLATTENED_ARRAY_KEYS_DESCRIPTOR = Object.freeze({ get: getEntryUnflattenedArrayKeys });
|
|
49785
|
+
function getEntryArraySize() {
|
|
49786
|
+
return this.svComponent.state[this.arrayStateVariable].arraySize;
|
|
49787
|
+
}
|
|
49788
|
+
const ENTRY_ARRAY_SIZE_DESCRIPTOR = Object.freeze({
|
|
49789
|
+
get: getEntryArraySize
|
|
49790
|
+
});
|
|
49791
|
+
function getEntryArrayEntrySize() {
|
|
49792
|
+
return (async () => {
|
|
49793
|
+
let unflattenedArrayKeys = await this.unflattenedArrayKeys;
|
|
49794
|
+
let arrayEntrySize = [];
|
|
49795
|
+
let subArray = [unflattenedArrayKeys];
|
|
49796
|
+
for (let i2 = 0; i2 < this.numDimensions; i2++) {
|
|
49797
|
+
subArray = subArray[0];
|
|
49798
|
+
arrayEntrySize.push(subArray.length);
|
|
49799
|
+
}
|
|
49800
|
+
arrayEntrySize.reverse();
|
|
49801
|
+
return arrayEntrySize;
|
|
49802
|
+
})();
|
|
49803
|
+
}
|
|
49804
|
+
const ENTRY_ARRAY_ENTRY_SIZE_DESCRIPTOR = Object.freeze({
|
|
49805
|
+
get: getEntryArrayEntrySize
|
|
49806
|
+
});
|
|
49807
|
+
function multiDimKeyToIndex(key) {
|
|
49808
|
+
return key.split(",").map((x2) => Number(x2));
|
|
49809
|
+
}
|
|
49810
|
+
function oneDimKeyToIndex(key) {
|
|
49811
|
+
return Number(key);
|
|
49812
|
+
}
|
|
49813
|
+
function arrayIndexToKey(index2) {
|
|
49814
|
+
return String(index2);
|
|
49815
|
+
}
|
|
49816
|
+
function defaultReturnEntryDimensions() {
|
|
49817
|
+
return 0;
|
|
49818
|
+
}
|
|
49819
|
+
function multiDimSetArrayValue({ value, arrayKey, arraySize: arraySize2, arrayValues = this.arrayValues }) {
|
|
49820
|
+
const component = this.svComponent;
|
|
49821
|
+
const addDiagnostic = component.coreFunctions.addDiagnostic;
|
|
49822
|
+
const numDimensions = this.numDimensions;
|
|
49823
|
+
let index2 = this.keyToIndex(arrayKey);
|
|
49824
|
+
let numDimensionsInArrayKey = index2.length;
|
|
49825
|
+
if (numDimensionsInArrayKey > numDimensions) {
|
|
49826
|
+
addDiagnostic({
|
|
49827
|
+
type: "info",
|
|
49828
|
+
message: "Cannot set array value. Number of dimensions is too large.",
|
|
49829
|
+
position: component.position,
|
|
49830
|
+
sourceDoc: component.sourceDoc
|
|
49831
|
+
});
|
|
49832
|
+
return { nFailures: 1 };
|
|
49833
|
+
}
|
|
49834
|
+
let arrayValuesDrillDown = arrayValues;
|
|
49835
|
+
let arraySizeDrillDown = arraySize2;
|
|
49836
|
+
for (let indComponent of index2.slice(0, index2.length - 1)) {
|
|
49837
|
+
if (indComponent >= 0 && indComponent < arraySizeDrillDown[0]) {
|
|
49838
|
+
if (!arrayValuesDrillDown[indComponent]) {
|
|
49839
|
+
arrayValuesDrillDown[indComponent] = [];
|
|
49840
|
+
}
|
|
49841
|
+
arrayValuesDrillDown = arrayValuesDrillDown[indComponent];
|
|
49842
|
+
arraySizeDrillDown = arraySizeDrillDown.slice(1);
|
|
49843
|
+
} else {
|
|
49844
|
+
addDiagnostic({
|
|
49845
|
+
type: "info",
|
|
49846
|
+
message: "ignore setting array value out of bounds",
|
|
49847
|
+
position: component.position,
|
|
49848
|
+
sourceDoc: component.sourceDoc
|
|
49849
|
+
});
|
|
49850
|
+
return { nFailures: 1 };
|
|
49851
|
+
}
|
|
49852
|
+
}
|
|
49853
|
+
let nFailures = 0;
|
|
49854
|
+
if (numDimensionsInArrayKey < numDimensions) {
|
|
49855
|
+
let setArrayValuesPiece = function(desiredValue, arrayValuesPiece, arraySizePiece) {
|
|
49856
|
+
if (!Array.isArray(desiredValue)) {
|
|
49857
|
+
addDiagnostic({
|
|
49858
|
+
type: "info",
|
|
49859
|
+
message: "ignoring array values with insufficient dimensions",
|
|
49860
|
+
position: component.position,
|
|
49861
|
+
sourceDoc: component.sourceDoc
|
|
49862
|
+
});
|
|
49863
|
+
return { nFailures: 1 };
|
|
49864
|
+
}
|
|
49865
|
+
let nFailuresSub = 0;
|
|
49866
|
+
let currentSize = arraySizePiece[0];
|
|
49867
|
+
if (desiredValue.length > currentSize) {
|
|
49868
|
+
addDiagnostic({
|
|
49869
|
+
type: "info",
|
|
49870
|
+
message: "ignoring array values out of bounds",
|
|
49871
|
+
position: component.position,
|
|
49872
|
+
sourceDoc: component.sourceDoc
|
|
49873
|
+
});
|
|
49874
|
+
nFailuresSub += desiredValue.length - currentSize;
|
|
49875
|
+
desiredValue = desiredValue.slice(0, currentSize);
|
|
49876
|
+
}
|
|
49877
|
+
if (arraySizePiece.length === 1) {
|
|
49878
|
+
for (let [ind, val] of desiredValue.entries()) {
|
|
49879
|
+
arrayValuesPiece[ind] = val;
|
|
49880
|
+
}
|
|
49881
|
+
} else {
|
|
49882
|
+
for (let [ind, val] of desiredValue.entries()) {
|
|
49883
|
+
if (!arrayValuesPiece[ind]) {
|
|
49884
|
+
arrayValuesPiece[ind] = [];
|
|
49885
|
+
}
|
|
49886
|
+
let result22 = setArrayValuesPiece(
|
|
49887
|
+
val,
|
|
49888
|
+
arrayValuesPiece[ind],
|
|
49889
|
+
arraySizePiece.slice(1)
|
|
49890
|
+
);
|
|
49891
|
+
nFailuresSub += result22.nFailures;
|
|
49892
|
+
}
|
|
49893
|
+
}
|
|
49894
|
+
return { nFailures: nFailuresSub };
|
|
49895
|
+
};
|
|
49896
|
+
let result2 = setArrayValuesPiece(
|
|
49897
|
+
value,
|
|
49898
|
+
arrayValuesDrillDown,
|
|
49899
|
+
arraySizeDrillDown
|
|
49900
|
+
);
|
|
49901
|
+
nFailures += result2.nFailures;
|
|
49902
|
+
} else {
|
|
49903
|
+
arrayValuesDrillDown[index2[index2.length - 1]] = value;
|
|
49904
|
+
}
|
|
49905
|
+
return { nFailures };
|
|
49906
|
+
}
|
|
49907
|
+
function oneDimSetArrayValue({ value, arrayKey, arraySize: arraySize2, arrayValues = this.arrayValues }) {
|
|
49908
|
+
let ind = this.keyToIndex(arrayKey);
|
|
49909
|
+
if (ind >= 0 && ind < arraySize2[0]) {
|
|
49910
|
+
arrayValues[ind] = value;
|
|
49911
|
+
return { nFailures: 0 };
|
|
49912
|
+
} else {
|
|
49913
|
+
const component = this.svComponent;
|
|
49914
|
+
component.coreFunctions.addDiagnostic({
|
|
49915
|
+
type: "info",
|
|
49916
|
+
message: `Ignoring setting array values out of bounds: ${arrayKey} of ${this.svVarName}`,
|
|
49917
|
+
position: component.position,
|
|
49918
|
+
sourceDoc: component.sourceDoc
|
|
49919
|
+
});
|
|
49920
|
+
return { nFailures: 1 };
|
|
49921
|
+
}
|
|
49922
|
+
}
|
|
49923
|
+
function multiDimGetArrayValue({ arrayKey, arrayValues = this.arrayValues }) {
|
|
49924
|
+
let index2 = this.keyToIndex(arrayKey);
|
|
49925
|
+
let aVals = arrayValues;
|
|
49926
|
+
for (let indComponent of index2.slice(0, index2.length - 1)) {
|
|
49927
|
+
aVals = aVals[indComponent];
|
|
49928
|
+
if (!aVals) {
|
|
49929
|
+
return void 0;
|
|
49930
|
+
}
|
|
49931
|
+
}
|
|
49932
|
+
return aVals[index2[index2.length - 1]];
|
|
49933
|
+
}
|
|
49934
|
+
function oneDimGetArrayValue({ arrayKey, arrayValues = this.arrayValues }) {
|
|
49935
|
+
return arrayValues[arrayKey];
|
|
49936
|
+
}
|
|
49937
|
+
function multiDimGetAllArrayKeys(arraySize2, flatten2 = true, desiredSize) {
|
|
49938
|
+
function prependToAllKeys(keys2, newStuff) {
|
|
49939
|
+
for (let [ind, key] of keys2.entries()) {
|
|
49940
|
+
if (Array.isArray(key)) {
|
|
49941
|
+
prependToAllKeys(key, newStuff);
|
|
49942
|
+
} else {
|
|
49943
|
+
keys2[ind] = newStuff + "," + key;
|
|
49944
|
+
}
|
|
49945
|
+
}
|
|
49946
|
+
}
|
|
49947
|
+
function getAllArrayKeysSub(subArraySize) {
|
|
49948
|
+
if (subArraySize.length === 1) {
|
|
49949
|
+
return Array.from(Array(subArraySize[0]), (_2, i2) => String(i2));
|
|
49950
|
+
} else {
|
|
49951
|
+
let currentSize = subArraySize[0];
|
|
49952
|
+
let subSubKeys = getAllArrayKeysSub(subArraySize.slice(1));
|
|
49953
|
+
let subKeys = [];
|
|
49954
|
+
for (let ind = 0; ind < currentSize; ind++) {
|
|
49955
|
+
if (flatten2) {
|
|
49956
|
+
subKeys.push(...subSubKeys.map((x2) => ind + "," + x2));
|
|
49957
|
+
} else {
|
|
49958
|
+
let newSubSubKeys = deepClone(subSubKeys);
|
|
49959
|
+
prependToAllKeys(newSubSubKeys, ind);
|
|
49960
|
+
subKeys.push(newSubSubKeys);
|
|
49961
|
+
}
|
|
49962
|
+
}
|
|
49963
|
+
return subKeys;
|
|
49964
|
+
}
|
|
49965
|
+
}
|
|
49966
|
+
if (desiredSize) {
|
|
49967
|
+
if (desiredSize.length === 0) {
|
|
49968
|
+
return [];
|
|
49969
|
+
} else {
|
|
49970
|
+
return getAllArrayKeysSub(desiredSize);
|
|
49971
|
+
}
|
|
49972
|
+
} else if (!arraySize2 || arraySize2.length === 0) {
|
|
49973
|
+
return [];
|
|
49974
|
+
} else {
|
|
49975
|
+
return getAllArrayKeysSub(arraySize2);
|
|
49976
|
+
}
|
|
49977
|
+
}
|
|
49978
|
+
function oneDimGetAllArrayKeys(arraySize2, flatten2, desiredSize) {
|
|
49979
|
+
if (desiredSize) {
|
|
49980
|
+
if (desiredSize.length === 0) {
|
|
49981
|
+
return [];
|
|
49982
|
+
} else {
|
|
49983
|
+
return Array.from(Array(desiredSize[0]), (_2, i2) => String(i2));
|
|
49984
|
+
}
|
|
49985
|
+
} else if (!arraySize2 || arraySize2.length === 0) {
|
|
49986
|
+
return [];
|
|
49987
|
+
} else {
|
|
49988
|
+
return Array.from(Array(arraySize2[0]), (_2, i2) => String(i2));
|
|
49989
|
+
}
|
|
49990
|
+
}
|
|
49991
|
+
function defaultMultiDimArrayVarNameFromArrayKey(arrayKey) {
|
|
49992
|
+
return this.entryPrefixes[0] + arrayKey.split(",").map((x2) => Number(x2) + 1).join("_");
|
|
49993
|
+
}
|
|
49994
|
+
function defaultOneDimArrayVarNameFromArrayKey(arrayKey) {
|
|
49995
|
+
return this.entryPrefixes[0] + String(Number(arrayKey) + 1);
|
|
49996
|
+
}
|
|
49997
|
+
async function multiDimAdjustArrayToNewArraySize() {
|
|
49998
|
+
function resizeSubArray(subArray, subArraySize) {
|
|
49999
|
+
subArray.length = subArraySize[0];
|
|
50000
|
+
if (subArraySize.length > 1) {
|
|
50001
|
+
let subSubArraySize = subArraySize.slice(1);
|
|
50002
|
+
for (let [ind, subSubArray] of subArray.entries()) {
|
|
50003
|
+
if (!subSubArray) {
|
|
50004
|
+
subSubArray = subArray[ind] = [];
|
|
50005
|
+
}
|
|
50006
|
+
resizeSubArray(subSubArray, subSubArraySize);
|
|
50007
|
+
}
|
|
50008
|
+
}
|
|
50009
|
+
}
|
|
50010
|
+
let arraySize2 = await this.arraySize;
|
|
50011
|
+
resizeSubArray(this.arrayValues, arraySize2);
|
|
50012
|
+
}
|
|
50013
|
+
async function oneDimAdjustArrayToNewArraySize() {
|
|
50014
|
+
let arraySize2 = await this.arraySize;
|
|
50015
|
+
this.arrayValues.length = arraySize2[0];
|
|
50016
|
+
}
|
|
50017
|
+
function resolveArrayStateVarObj(svObj) {
|
|
50018
|
+
return svObj.isArrayEntry ? svObj.svComponent.state[svObj.arrayStateVariable] : svObj;
|
|
50019
|
+
}
|
|
50020
|
+
function defaultReturnWrappingComponents(prefix) {
|
|
50021
|
+
return [];
|
|
50022
|
+
}
|
|
50023
|
+
async function arrayReturnDependencies(args) {
|
|
50024
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
50025
|
+
const component = arrayStateVarObj.svComponent;
|
|
50026
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
50027
|
+
args.arraySize = await arrayStateVarObj.arraySize;
|
|
50028
|
+
for (let key in args.stateValues) {
|
|
50029
|
+
if (key.slice(0, 8) === "__array_") {
|
|
50030
|
+
delete args.stateValues[key];
|
|
50031
|
+
}
|
|
50032
|
+
}
|
|
50033
|
+
if (args.arrayKeys === void 0) {
|
|
50034
|
+
args.arrayKeys = arrayStateVarObj.getAllArrayKeys(args.arraySize);
|
|
50035
|
+
}
|
|
50036
|
+
if (!arrayStateVarObj.dependencyNames) {
|
|
50037
|
+
arrayStateVarObj.dependencyNames = {
|
|
50038
|
+
namesByKey: {},
|
|
50039
|
+
keysByName: {},
|
|
50040
|
+
global: []
|
|
50041
|
+
};
|
|
50042
|
+
if (arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50043
|
+
for (let vName of arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50044
|
+
component.state[vName].dependencyNames = arrayStateVarObj.dependencyNames;
|
|
50045
|
+
}
|
|
50046
|
+
}
|
|
50047
|
+
}
|
|
50048
|
+
let dependencies2 = {};
|
|
50049
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
50050
|
+
const allStateVariablesAffected = [
|
|
50051
|
+
arrayVarName,
|
|
50052
|
+
...arrayStateVarObj.additionalStateVariablesDefined ?? []
|
|
50053
|
+
];
|
|
50054
|
+
for (let arrayKey of args.arrayKeys) {
|
|
50055
|
+
for (let vName of allStateVariablesAffected) {
|
|
50056
|
+
let sObj = component.state[vName];
|
|
50057
|
+
dependencies2[vName + "_" + arrayKey] = {
|
|
50058
|
+
dependencyType: "stateVariable",
|
|
50059
|
+
variableName: sObj.arrayVarNameFromArrayKey(arrayKey)
|
|
50060
|
+
};
|
|
50061
|
+
}
|
|
50062
|
+
}
|
|
50063
|
+
} else {
|
|
50064
|
+
let arrayDependencies = arrayStateVarObj.returnArrayDependenciesByKey(args);
|
|
50065
|
+
if (arrayDependencies.globalDependencies) {
|
|
50066
|
+
arrayStateVarObj.dependencyNames.global = Object.keys(
|
|
50067
|
+
arrayDependencies.globalDependencies
|
|
50068
|
+
);
|
|
50069
|
+
Object.assign(dependencies2, arrayDependencies.globalDependencies);
|
|
50070
|
+
}
|
|
50071
|
+
if (!arrayDependencies.dependenciesByKey) {
|
|
50072
|
+
arrayDependencies.dependenciesByKey = {};
|
|
50073
|
+
}
|
|
50074
|
+
for (let arrayKey of args.arrayKeys) {
|
|
50075
|
+
if (!(arrayKey in arrayStateVarObj.dependencyNames.namesByKey)) {
|
|
50076
|
+
args.changedDependency = true;
|
|
50077
|
+
}
|
|
50078
|
+
arrayStateVarObj.dependencyNames.namesByKey[arrayKey] = {};
|
|
50079
|
+
for (let depName in arrayDependencies.dependenciesByKey[arrayKey]) {
|
|
50080
|
+
let extendedDepName = "__" + arrayKey + "_" + depName;
|
|
50081
|
+
dependencies2[extendedDepName] = arrayDependencies.dependenciesByKey[arrayKey][depName];
|
|
50082
|
+
arrayStateVarObj.dependencyNames.namesByKey[arrayKey][depName] = extendedDepName;
|
|
50083
|
+
if (!arrayStateVarObj.dependencyNames.keysByName[extendedDepName]) {
|
|
50084
|
+
arrayStateVarObj.dependencyNames.keysByName[extendedDepName] = [];
|
|
50085
|
+
}
|
|
50086
|
+
if (!arrayStateVarObj.dependencyNames.keysByName[extendedDepName].includes(arrayKey)) {
|
|
50087
|
+
arrayStateVarObj.dependencyNames.keysByName[extendedDepName].push(arrayKey);
|
|
50088
|
+
}
|
|
50089
|
+
}
|
|
50090
|
+
}
|
|
50091
|
+
arrayStateVarObj.dependencyNames.global.push("__array_size");
|
|
50092
|
+
}
|
|
50093
|
+
dependencies2.__array_size = {
|
|
50094
|
+
dependencyType: "stateVariable",
|
|
50095
|
+
variableName: arrayStateVarObj.arraySizeStateVariable
|
|
50096
|
+
};
|
|
50097
|
+
return dependencies2;
|
|
50098
|
+
}
|
|
50099
|
+
function arrayGetCurrentFreshness({ freshnessInfo, arrayKeys, arraySize: arraySize2 }) {
|
|
50100
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
50101
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
50102
|
+
if (arrayKeys === void 0) {
|
|
50103
|
+
arrayKeys = arrayStateVarObj.getAllArrayKeys(arraySize2);
|
|
50104
|
+
}
|
|
50105
|
+
let freshByKey = freshnessInfo.freshByKey;
|
|
50106
|
+
let numberFresh = freshnessInfo.freshArraySize ? 1 : 0;
|
|
50107
|
+
for (let arrayKey of arrayKeys) {
|
|
50108
|
+
if (freshByKey[arrayKey]) {
|
|
50109
|
+
numberFresh += 1;
|
|
50110
|
+
}
|
|
50111
|
+
}
|
|
50112
|
+
if (numberFresh > 0) {
|
|
50113
|
+
if (numberFresh === arrayKeys.length + 1) {
|
|
50114
|
+
return { fresh: { [arrayVarName]: true } };
|
|
50115
|
+
} else {
|
|
50116
|
+
return { partiallyFresh: { [arrayVarName]: numberFresh } };
|
|
50117
|
+
}
|
|
50118
|
+
} else {
|
|
50119
|
+
return { fresh: { [arrayVarName]: false } };
|
|
50120
|
+
}
|
|
50121
|
+
}
|
|
50122
|
+
function arrayMarkStale({ freshnessInfo, changes, arrayKeys, arraySize: arraySize2 }) {
|
|
50123
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
50124
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
50125
|
+
let result2 = {};
|
|
50126
|
+
if (arrayKeys === void 0) {
|
|
50127
|
+
arrayKeys = arrayStateVarObj.getAllArrayKeys(arraySize2);
|
|
50128
|
+
}
|
|
50129
|
+
if (arrayStateVarObj.markStaleByKey) {
|
|
50130
|
+
result2 = arrayStateVarObj.markStaleByKey({ arrayKeys, changes });
|
|
50131
|
+
}
|
|
50132
|
+
let freshByKey = freshnessInfo.freshByKey;
|
|
50133
|
+
if (changes.__array_size) {
|
|
50134
|
+
freshnessInfo.freshArraySize = false;
|
|
50135
|
+
freshnessInfo.freshByKey = {};
|
|
50136
|
+
result2.fresh = { [arrayVarName]: false };
|
|
50137
|
+
return result2;
|
|
50138
|
+
}
|
|
50139
|
+
if (Object.keys(freshByKey).length === 0) {
|
|
50140
|
+
freshnessInfo.freshByKey = {};
|
|
50141
|
+
if (freshnessInfo.freshArraySize) {
|
|
50142
|
+
result2.partiallyFresh = { [arrayVarName]: 1 };
|
|
50143
|
+
return result2;
|
|
50144
|
+
} else {
|
|
50145
|
+
result2.fresh = { [arrayVarName]: false };
|
|
50146
|
+
return result2;
|
|
50147
|
+
}
|
|
50148
|
+
}
|
|
50149
|
+
for (let changeName in changes) {
|
|
50150
|
+
if (arrayStateVarObj.dependencyNames.global.includes(changeName)) {
|
|
50151
|
+
freshnessInfo.freshByKey = {};
|
|
50152
|
+
if (freshnessInfo.freshArraySize) {
|
|
50153
|
+
result2.partiallyFresh = { [arrayVarName]: 1 };
|
|
50154
|
+
return result2;
|
|
50155
|
+
} else {
|
|
50156
|
+
result2.fresh = { [arrayVarName]: false };
|
|
50157
|
+
return result2;
|
|
50158
|
+
}
|
|
50159
|
+
}
|
|
50160
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && arrayKeys.length > 1) {
|
|
50161
|
+
delete freshByKey[changeName];
|
|
50162
|
+
} else {
|
|
50163
|
+
for (let key of arrayStateVarObj.dependencyNames.keysByName[changeName]) {
|
|
50164
|
+
delete freshByKey[key];
|
|
50165
|
+
}
|
|
50166
|
+
}
|
|
50167
|
+
}
|
|
50168
|
+
let numberFresh = freshnessInfo.freshArraySize ? 1 : 0;
|
|
50169
|
+
for (let arrayKey of arrayKeys) {
|
|
50170
|
+
if (freshByKey[arrayKey]) {
|
|
50171
|
+
numberFresh += 1;
|
|
50172
|
+
}
|
|
50173
|
+
}
|
|
50174
|
+
if (numberFresh > 0) {
|
|
50175
|
+
if (numberFresh === arrayKeys.length + 1) {
|
|
50176
|
+
result2.fresh = { [arrayVarName]: true };
|
|
50177
|
+
return result2;
|
|
50178
|
+
} else {
|
|
50179
|
+
result2.partiallyFresh = { [arrayVarName]: numberFresh };
|
|
50180
|
+
return result2;
|
|
50181
|
+
}
|
|
50182
|
+
} else {
|
|
50183
|
+
result2.fresh = { [arrayVarName]: false };
|
|
50184
|
+
return result2;
|
|
50185
|
+
}
|
|
50186
|
+
}
|
|
50187
|
+
function arrayFreshenOnNoChanges({ arrayKeys, freshnessInfo, arraySize: arraySize2 }) {
|
|
50188
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
50189
|
+
let freshByKey = freshnessInfo.freshByKey;
|
|
50190
|
+
if (arrayKeys === void 0) {
|
|
50191
|
+
arrayKeys = arrayStateVarObj.getAllArrayKeys(arraySize2);
|
|
50192
|
+
}
|
|
50193
|
+
for (let arrayKey of arrayKeys) {
|
|
50194
|
+
freshByKey[arrayKey] = true;
|
|
50195
|
+
}
|
|
50196
|
+
}
|
|
50197
|
+
function extractArrayDependencies(arrayStateVarObj, dependencyValues, arrayKeys, usedDefault) {
|
|
50198
|
+
let globalDependencyValues = {};
|
|
50199
|
+
let globalUsedDefault = {};
|
|
50200
|
+
for (let dependencyName of arrayStateVarObj.dependencyNames.global) {
|
|
50201
|
+
globalDependencyValues[dependencyName] = dependencyValues[dependencyName];
|
|
50202
|
+
globalUsedDefault[dependencyName] = usedDefault[dependencyName];
|
|
50203
|
+
}
|
|
50204
|
+
let dependencyValuesByKey = {};
|
|
50205
|
+
let usedDefaultByKey = {};
|
|
50206
|
+
let foundAllDependencyValuesForKey = {};
|
|
50207
|
+
for (let arrayKey of arrayKeys) {
|
|
50208
|
+
dependencyValuesByKey[arrayKey] = {};
|
|
50209
|
+
usedDefaultByKey[arrayKey] = {};
|
|
50210
|
+
if (arrayKey in arrayStateVarObj.dependencyNames.namesByKey) {
|
|
50211
|
+
foundAllDependencyValuesForKey[arrayKey] = true;
|
|
50212
|
+
for (let dependencyName in arrayStateVarObj.dependencyNames.namesByKey[arrayKey]) {
|
|
50213
|
+
let extendedDepName = arrayStateVarObj.dependencyNames.namesByKey[arrayKey][dependencyName];
|
|
50214
|
+
if (extendedDepName in dependencyValues) {
|
|
50215
|
+
dependencyValuesByKey[arrayKey][dependencyName] = dependencyValues[extendedDepName];
|
|
50216
|
+
usedDefaultByKey[arrayKey][dependencyName] = usedDefault[extendedDepName];
|
|
50217
|
+
} else {
|
|
50218
|
+
foundAllDependencyValuesForKey[arrayKey] = false;
|
|
50219
|
+
}
|
|
50220
|
+
}
|
|
50221
|
+
}
|
|
50222
|
+
}
|
|
50223
|
+
return {
|
|
50224
|
+
globalDependencyValues,
|
|
50225
|
+
globalUsedDefault,
|
|
50226
|
+
dependencyValuesByKey,
|
|
50227
|
+
usedDefaultByKey,
|
|
50228
|
+
foundAllDependencyValuesForKey
|
|
50229
|
+
};
|
|
50230
|
+
}
|
|
50231
|
+
function arrayDefinition(args) {
|
|
50232
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
50233
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
50234
|
+
const component = arrayStateVarObj.svComponent;
|
|
50235
|
+
if (args.arrayKeys === void 0) {
|
|
50236
|
+
args.arrayKeys = arrayStateVarObj.getAllArrayKeys(args.arraySize);
|
|
50237
|
+
}
|
|
50238
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
50239
|
+
return {};
|
|
50240
|
+
} else {
|
|
50241
|
+
let extractedDeps = extractArrayDependencies(
|
|
50242
|
+
arrayStateVarObj,
|
|
50243
|
+
args.dependencyValues,
|
|
50244
|
+
args.arrayKeys,
|
|
50245
|
+
args.usedDefault
|
|
50246
|
+
);
|
|
50247
|
+
let globalDependencyValues = extractedDeps.globalDependencyValues;
|
|
50248
|
+
let globalUsedDefault = extractedDeps.globalUsedDefault;
|
|
50249
|
+
let dependencyValuesByKey = extractedDeps.dependencyValuesByKey;
|
|
50250
|
+
let usedDefaultByKey = extractedDeps.usedDefaultByKey;
|
|
50251
|
+
let foundAllDependencyValuesForKey = extractedDeps.foundAllDependencyValuesForKey;
|
|
50252
|
+
delete args.dependencyValues;
|
|
50253
|
+
args.globalDependencyValues = globalDependencyValues;
|
|
50254
|
+
args.globalUsedDefault = globalUsedDefault;
|
|
50255
|
+
args.dependencyValuesByKey = dependencyValuesByKey;
|
|
50256
|
+
args.usedDefaultByKey = usedDefaultByKey;
|
|
50257
|
+
let arrayKeysToRecalculate = [];
|
|
50258
|
+
let freshByKey = args.freshnessInfo.freshByKey;
|
|
50259
|
+
for (let arrayKey of args.arrayKeys) {
|
|
50260
|
+
if (!freshByKey[arrayKey] && foundAllDependencyValuesForKey[arrayKey]) {
|
|
50261
|
+
freshByKey[arrayKey] = true;
|
|
50262
|
+
arrayKeysToRecalculate.push(arrayKey);
|
|
50263
|
+
}
|
|
50264
|
+
}
|
|
50265
|
+
let result2;
|
|
50266
|
+
if (arrayKeysToRecalculate.length === 0) {
|
|
50267
|
+
result2 = {};
|
|
50268
|
+
} else {
|
|
50269
|
+
args.arrayKeys = arrayKeysToRecalculate;
|
|
50270
|
+
if (!arrayStateVarObj.arrayDefinitionByKey) {
|
|
50271
|
+
throw Error(
|
|
50272
|
+
`For ${arrayVarName} of ${component.componentType}, arrayDefinitionByKey must be a function`
|
|
50273
|
+
);
|
|
50274
|
+
}
|
|
50275
|
+
result2 = arrayStateVarObj.arrayDefinitionByKey(args);
|
|
50276
|
+
if (result2.setValue && result2.setValue[arrayVarName]) {
|
|
50277
|
+
for (let arrayKey in result2.setValue[arrayVarName]) {
|
|
50278
|
+
freshByKey[arrayKey] = true;
|
|
50279
|
+
}
|
|
50280
|
+
}
|
|
50281
|
+
if (result2.useEssentialOrDefaultValue && result2.useEssentialOrDefaultValue[arrayVarName]) {
|
|
50282
|
+
for (let arrayKey in result2.useEssentialOrDefaultValue[arrayVarName]) {
|
|
50283
|
+
freshByKey[arrayKey] = true;
|
|
50284
|
+
}
|
|
50285
|
+
}
|
|
50286
|
+
}
|
|
50287
|
+
if (!args.freshnessInfo.freshArraySize) {
|
|
50288
|
+
if (args.changes.__array_size) {
|
|
50289
|
+
result2.arraySizeChanged = [arrayVarName];
|
|
50290
|
+
if (arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50291
|
+
for (let varName of arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50292
|
+
if (component.state[varName].isArray) {
|
|
50293
|
+
result2.arraySizeChanged.push(varName);
|
|
50294
|
+
}
|
|
50295
|
+
}
|
|
50296
|
+
}
|
|
50297
|
+
}
|
|
50298
|
+
args.freshnessInfo.freshArraySize = true;
|
|
50299
|
+
}
|
|
50300
|
+
return result2;
|
|
50301
|
+
}
|
|
50302
|
+
}
|
|
50303
|
+
function arrayInverseDefinition(args) {
|
|
50304
|
+
const arrayStateVarObj = resolveArrayStateVarObj(this);
|
|
50305
|
+
const arrayVarName = arrayStateVarObj.svVarName;
|
|
50306
|
+
if (!arrayStateVarObj.inverseArrayDefinitionByKey) {
|
|
50307
|
+
return { success: false };
|
|
50308
|
+
}
|
|
50309
|
+
if (args.arrayKeys === void 0) {
|
|
50310
|
+
args.arrayKeys = arrayStateVarObj.getAllArrayKeys(args.arraySize);
|
|
50311
|
+
}
|
|
50312
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables && args.arrayKeys.length > 1) {
|
|
50313
|
+
const allStateVariablesAffected = [
|
|
50314
|
+
arrayVarName,
|
|
50315
|
+
...arrayStateVarObj.additionalStateVariablesDefined ?? []
|
|
50316
|
+
];
|
|
50317
|
+
let instructions = [];
|
|
50318
|
+
for (let vName of allStateVariablesAffected) {
|
|
50319
|
+
for (let key in args.desiredStateVariableValues[vName]) {
|
|
50320
|
+
let depName = vName + "_" + key;
|
|
50321
|
+
if (depName in args.dependencyValues) {
|
|
50322
|
+
instructions.push({
|
|
50323
|
+
setDependency: depName,
|
|
50324
|
+
desiredValue: args.desiredStateVariableValues[vName][key],
|
|
50325
|
+
treatAsInitialChange: args.initialChange
|
|
50326
|
+
});
|
|
50327
|
+
}
|
|
50328
|
+
}
|
|
50329
|
+
}
|
|
50330
|
+
return {
|
|
50331
|
+
success: true,
|
|
50332
|
+
instructions
|
|
50333
|
+
};
|
|
50334
|
+
} else {
|
|
50335
|
+
let extractedDeps = extractArrayDependencies(
|
|
50336
|
+
arrayStateVarObj,
|
|
50337
|
+
args.dependencyValues,
|
|
50338
|
+
args.arrayKeys,
|
|
50339
|
+
args.usedDefault
|
|
50340
|
+
);
|
|
50341
|
+
let globalDependencyValues = extractedDeps.globalDependencyValues;
|
|
50342
|
+
let globalUsedDefault = extractedDeps.globalUsedDefault;
|
|
50343
|
+
let dependencyValuesByKey = extractedDeps.dependencyValuesByKey;
|
|
50344
|
+
let usedDefaultByKey = extractedDeps.usedDefaultByKey;
|
|
50345
|
+
delete args.dependencyValues;
|
|
50346
|
+
args.globalDependencyValues = globalDependencyValues;
|
|
50347
|
+
args.globalUsedDefault = globalUsedDefault;
|
|
50348
|
+
args.dependencyValuesByKey = dependencyValuesByKey;
|
|
50349
|
+
args.usedDefaultByKey = usedDefaultByKey;
|
|
50350
|
+
args.dependencyNamesByKey = arrayStateVarObj.dependencyNames.namesByKey;
|
|
50351
|
+
if (!arrayStateVarObj.allowExtraArrayKeysInInverse) {
|
|
50352
|
+
let newDesiredStateVariableValues = {};
|
|
50353
|
+
for (let vName in args.desiredStateVariableValues) {
|
|
50354
|
+
newDesiredStateVariableValues[vName] = {};
|
|
50355
|
+
for (let key in args.desiredStateVariableValues[vName]) {
|
|
50356
|
+
if (args.arrayKeys.includes(key)) {
|
|
50357
|
+
newDesiredStateVariableValues[vName][key] = args.desiredStateVariableValues[vName][key];
|
|
50358
|
+
}
|
|
50359
|
+
}
|
|
50360
|
+
}
|
|
50361
|
+
args.desiredStateVariableValues = newDesiredStateVariableValues;
|
|
50362
|
+
}
|
|
50363
|
+
let result2 = arrayStateVarObj.inverseArrayDefinitionByKey(args);
|
|
50364
|
+
return result2;
|
|
50365
|
+
}
|
|
50366
|
+
}
|
|
50367
|
+
function getArrayArraySize() {
|
|
50368
|
+
return (async () => {
|
|
50369
|
+
if (!this.svComponent.state[this.arraySizeStateVariable].initiallyResolved) {
|
|
50370
|
+
return [];
|
|
50371
|
+
}
|
|
50372
|
+
if (this.arraySizeStale) {
|
|
50373
|
+
await this.recalculateArraySizeDependentQuantities();
|
|
50374
|
+
}
|
|
50375
|
+
return await this.svComponent.stateValues[this.arraySizeStateVariable];
|
|
50376
|
+
})();
|
|
50377
|
+
}
|
|
50378
|
+
const ARRAY_ARRAY_SIZE_DESCRIPTOR = Object.freeze({
|
|
50379
|
+
get: getArrayArraySize
|
|
50380
|
+
});
|
|
50381
|
+
function normalizeArrayStateVariableDefaults(def, varName) {
|
|
50382
|
+
if (!def.isArray) {
|
|
50383
|
+
return;
|
|
50384
|
+
}
|
|
50385
|
+
if (def.numDimensions === void 0) {
|
|
50386
|
+
def.numDimensions = 1;
|
|
50387
|
+
}
|
|
50388
|
+
if (!def.entryPrefixes) {
|
|
50389
|
+
def.entryPrefixes = [varName];
|
|
50390
|
+
}
|
|
50391
|
+
const multiDim = def.numDimensions > 1;
|
|
50392
|
+
if (!def.keyToIndex) {
|
|
50393
|
+
def.keyToIndex = multiDim ? multiDimKeyToIndex : oneDimKeyToIndex;
|
|
50394
|
+
}
|
|
50395
|
+
if (!def.indexToKey) {
|
|
50396
|
+
def.indexToKey = arrayIndexToKey;
|
|
50397
|
+
}
|
|
50398
|
+
if (!def.getAllArrayKeys) {
|
|
50399
|
+
def.getAllArrayKeys = multiDim ? multiDimGetAllArrayKeys : oneDimGetAllArrayKeys;
|
|
50400
|
+
}
|
|
50401
|
+
if (!def.getArrayKeysFromVarName) {
|
|
50402
|
+
def.getArrayKeysFromVarName = returnDefaultGetArrayKeysFromVarName(
|
|
50403
|
+
def.numDimensions
|
|
50404
|
+
);
|
|
50405
|
+
}
|
|
50406
|
+
if (!def.arrayVarNameFromArrayKey) {
|
|
50407
|
+
def.arrayVarNameFromArrayKey = multiDim ? defaultMultiDimArrayVarNameFromArrayKey : defaultOneDimArrayVarNameFromArrayKey;
|
|
50408
|
+
}
|
|
50409
|
+
if (!def.arrayVarNameFromPropIndex) {
|
|
50410
|
+
def.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(
|
|
50411
|
+
def.numDimensions,
|
|
50412
|
+
def.entryPrefixes[0]
|
|
50413
|
+
);
|
|
50414
|
+
}
|
|
50415
|
+
if (!def.returnEntryDimensions) {
|
|
50416
|
+
def.returnEntryDimensions = defaultReturnEntryDimensions;
|
|
50417
|
+
}
|
|
50418
|
+
if (def.shadowingInstructions && !def.shadowingInstructions.returnWrappingComponents) {
|
|
50419
|
+
def.shadowingInstructions.returnWrappingComponents = defaultReturnWrappingComponents;
|
|
50420
|
+
}
|
|
50421
|
+
}
|
|
50422
|
+
function arraySizeDefinition({ dependencyValues }) {
|
|
50423
|
+
let arraySize2 = this.svComponent.state[this.arraySizeSourceVarName].returnArraySize({
|
|
50424
|
+
dependencyValues
|
|
50425
|
+
});
|
|
50426
|
+
for (let [ind, value] of arraySize2.entries()) {
|
|
50427
|
+
if (!(Number.isInteger(value) && value >= 0)) {
|
|
50428
|
+
arraySize2[ind] = 0;
|
|
50429
|
+
}
|
|
50430
|
+
}
|
|
50431
|
+
return { setValue: { [this.svVarName]: arraySize2 } };
|
|
50432
|
+
}
|
|
50433
|
+
function arraySizeMarkStale() {
|
|
50434
|
+
for (let varName of this.arraySizeVarNamesAffected) {
|
|
50435
|
+
this.svComponent.state[varName].arraySizeStale = true;
|
|
50436
|
+
}
|
|
50437
|
+
return {};
|
|
50438
|
+
}
|
|
50439
|
+
async function arrayRecalculateArraySizeDependentQuantities() {
|
|
50440
|
+
const component = this.svComponent;
|
|
50441
|
+
let newArraySize = await component.stateValues[this.arraySizeStateVariable];
|
|
50442
|
+
if (this.previousArraySize.length !== newArraySize.length || this.previousArraySize.some((v2, i2) => v2 != newArraySize[i2])) {
|
|
50443
|
+
this.previousArraySize = [...newArraySize];
|
|
50444
|
+
let varNamesIncluding = this.varNamesIncludingArrayKeys = {};
|
|
50445
|
+
for (let entryName of this.arrayEntryNames) {
|
|
50446
|
+
let entryStateVarObj = component.state[entryName];
|
|
50447
|
+
let arrayKeys = this.getArrayKeysFromVarName({
|
|
50448
|
+
arrayEntryPrefix: entryStateVarObj.entryPrefix,
|
|
50449
|
+
varEnding: entryStateVarObj.varEnding,
|
|
50450
|
+
arraySize: newArraySize,
|
|
50451
|
+
numDimensions: this.numDimensions
|
|
50452
|
+
});
|
|
50453
|
+
entryStateVarObj._unflattenedArrayKeys = arrayKeys;
|
|
50454
|
+
entryStateVarObj._arrayKeys = flattenDeep(arrayKeys);
|
|
50455
|
+
for (let arrayKey of entryStateVarObj._arrayKeys) {
|
|
50456
|
+
if (!varNamesIncluding[arrayKey]) {
|
|
50457
|
+
varNamesIncluding[arrayKey] = [];
|
|
50458
|
+
}
|
|
50459
|
+
varNamesIncluding[arrayKey].push(entryName);
|
|
50460
|
+
}
|
|
50461
|
+
}
|
|
50462
|
+
}
|
|
50463
|
+
this.arraySizeStale = false;
|
|
50464
|
+
}
|
|
50465
|
+
async function entryReturnDependencies(args) {
|
|
50466
|
+
const arrayStateVarObj = this.svComponent.state[this.arrayStateVariable];
|
|
50467
|
+
args.arraySize = await this.arraySize;
|
|
50468
|
+
args.arrayKeys = await this.arrayKeys;
|
|
50469
|
+
let dependencies2 = await arrayStateVarObj.returnDependencies(args);
|
|
50470
|
+
let numNames = Object.keys(
|
|
50471
|
+
arrayStateVarObj.dependencyNames.namesByKey
|
|
50472
|
+
).length;
|
|
50473
|
+
if (this.numberNamesInPreviousReturnDep !== numNames) {
|
|
50474
|
+
args.changedDependency = true;
|
|
50475
|
+
}
|
|
50476
|
+
this.numberNamesInPreviousReturnDep = numNames;
|
|
50477
|
+
return dependencies2;
|
|
50478
|
+
}
|
|
50479
|
+
async function initializeComponentStateVariables({
|
|
50480
|
+
core: core2,
|
|
50481
|
+
component
|
|
50482
|
+
}) {
|
|
50483
|
+
for (let stateVariable in component.state) {
|
|
50484
|
+
if (component.state[stateVariable].isAlias) {
|
|
50485
|
+
if (!component.stateVarAliases) {
|
|
50486
|
+
component.stateVarAliases = {};
|
|
50487
|
+
}
|
|
50488
|
+
component.stateVarAliases[stateVariable] = component.state[stateVariable].targetVariableName;
|
|
50489
|
+
delete component.state[stateVariable];
|
|
50490
|
+
} else {
|
|
50491
|
+
await initializeStateVariable({
|
|
50492
|
+
core: core2,
|
|
50493
|
+
component,
|
|
50494
|
+
stateVariable
|
|
50495
|
+
});
|
|
50496
|
+
}
|
|
50497
|
+
}
|
|
50498
|
+
}
|
|
50499
|
+
async function initializeStateVariable({
|
|
50500
|
+
core: core2,
|
|
50501
|
+
component,
|
|
50502
|
+
stateVariable,
|
|
50503
|
+
arrayStateVariable,
|
|
50504
|
+
arrayEntryPrefix
|
|
50505
|
+
}) {
|
|
50506
|
+
if (!component.state[stateVariable]) {
|
|
50507
|
+
component.state[stateVariable] = {};
|
|
50508
|
+
}
|
|
50509
|
+
let stateVarObj = component.state[stateVariable];
|
|
50510
|
+
stateVarObj.svComponent = component;
|
|
50511
|
+
stateVarObj.svVarName = stateVariable;
|
|
50512
|
+
stateVarObj.isResolved = false;
|
|
50513
|
+
installStaleValueGetter(stateVarObj);
|
|
50514
|
+
if (arrayEntryPrefix !== void 0) {
|
|
50515
|
+
await initializeArrayEntryStateVariable({
|
|
50516
|
+
stateVarObj,
|
|
50517
|
+
arrayStateVariable,
|
|
50518
|
+
arrayEntryPrefix,
|
|
50519
|
+
component,
|
|
50520
|
+
stateVariable
|
|
50521
|
+
});
|
|
50522
|
+
} else if (stateVarObj.isArray) {
|
|
50523
|
+
await initializeArrayStateVariable({
|
|
50524
|
+
core: core2,
|
|
50525
|
+
stateVarObj,
|
|
50526
|
+
component,
|
|
50527
|
+
stateVariable
|
|
50528
|
+
});
|
|
50529
|
+
}
|
|
50530
|
+
if (stateVarObj.triggerActionOnChange) {
|
|
50531
|
+
let componentTriggers = core2.stateVariableChangeTriggers[component.componentIdx];
|
|
50532
|
+
if (!componentTriggers) {
|
|
50533
|
+
componentTriggers = core2.stateVariableChangeTriggers[component.componentIdx] = {};
|
|
50534
|
+
}
|
|
50535
|
+
componentTriggers[stateVariable] = {
|
|
50536
|
+
action: stateVarObj.triggerActionOnChange
|
|
50537
|
+
};
|
|
50538
|
+
}
|
|
50539
|
+
}
|
|
50540
|
+
async function initializeArrayEntryStateVariable({
|
|
50541
|
+
stateVarObj,
|
|
50542
|
+
arrayStateVariable,
|
|
50543
|
+
arrayEntryPrefix,
|
|
50544
|
+
component,
|
|
50545
|
+
stateVariable
|
|
50546
|
+
}) {
|
|
50547
|
+
stateVarObj.isArrayEntry = true;
|
|
50548
|
+
stateVarObj.arrayStateVariable = arrayStateVariable;
|
|
50549
|
+
let arrayStateVarObj = component.state[arrayStateVariable];
|
|
50550
|
+
stateVarObj.definition = arrayStateVarObj.definition;
|
|
50551
|
+
stateVarObj.inverseDefinition = arrayStateVarObj.inverseDefinition;
|
|
50552
|
+
stateVarObj.markStale = arrayStateVarObj.markStale;
|
|
50553
|
+
stateVarObj.freshnessInfo = arrayStateVarObj.freshnessInfo;
|
|
50554
|
+
stateVarObj.getPreviousDependencyValuesForMarkStale = arrayStateVarObj.getPreviousDependencyValuesForMarkStale;
|
|
50555
|
+
stateVarObj.provideEssentialValuesInDefinition = arrayStateVarObj.provideEssentialValuesInDefinition;
|
|
50556
|
+
stateVarObj.providePreviousValuesInDefinition = arrayStateVarObj.providePreviousValuesInDefinition;
|
|
50557
|
+
stateVarObj.isLocation = arrayStateVarObj.isLocation;
|
|
50558
|
+
stateVarObj.numDimensions = arrayStateVarObj.returnEntryDimensions(arrayEntryPrefix);
|
|
50559
|
+
stateVarObj.entryPrefix = arrayEntryPrefix;
|
|
50560
|
+
stateVarObj.varEnding = stateVariable.slice(arrayEntryPrefix.length);
|
|
50561
|
+
if (arrayStateVarObj.createWorkspace) {
|
|
50562
|
+
stateVarObj.createWorkspace = true;
|
|
50563
|
+
stateVarObj.workspace = arrayStateVarObj.workspace;
|
|
50564
|
+
}
|
|
50565
|
+
if (arrayStateVarObj.basedOnArrayKeyStateVariables) {
|
|
50566
|
+
stateVarObj.basedOnArrayKeyStateVariables = true;
|
|
50567
|
+
}
|
|
50568
|
+
if (arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50569
|
+
stateVarObj.additionalStateVariablesDefined = [];
|
|
50570
|
+
let entryPrefixInd = arrayStateVarObj.entryPrefixes.indexOf(arrayEntryPrefix);
|
|
50571
|
+
for (let varName of arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50572
|
+
let sObj = component.state[varName];
|
|
50573
|
+
if (sObj.isArray) {
|
|
50574
|
+
let newArrayEntryPrefix = sObj.entryPrefixes[entryPrefixInd];
|
|
50575
|
+
let arrayEntryVarName = newArrayEntryPrefix + stateVarObj.varEnding;
|
|
50576
|
+
stateVarObj.additionalStateVariablesDefined.push(
|
|
50577
|
+
arrayEntryVarName
|
|
50578
|
+
);
|
|
50579
|
+
} else {
|
|
50580
|
+
stateVarObj.additionalStateVariablesDefined.push(varName);
|
|
50581
|
+
}
|
|
50582
|
+
}
|
|
50583
|
+
}
|
|
50584
|
+
if (arrayStateVarObj.shadowingInstructions) {
|
|
50585
|
+
stateVarObj.shadowingInstructions = {};
|
|
50586
|
+
stateVarObj.wrappingComponents = arrayStateVarObj.shadowingInstructions.returnWrappingComponents(
|
|
50587
|
+
arrayEntryPrefix
|
|
50588
|
+
);
|
|
50589
|
+
if (arrayStateVarObj.shadowingInstructions.attributesToShadow) {
|
|
50590
|
+
stateVarObj.shadowingInstructions.attributesToShadow = arrayStateVarObj.shadowingInstructions.attributesToShadow;
|
|
50591
|
+
}
|
|
50592
|
+
if (arrayStateVarObj.shadowingInstructions.createComponentOfType) {
|
|
50593
|
+
let entryPrefixInd = arrayStateVarObj.entryPrefixes.indexOf(arrayEntryPrefix);
|
|
50594
|
+
if (arrayStateVarObj.shadowingInstructions.createComponentOfType[entryPrefixInd]) {
|
|
50595
|
+
stateVarObj.shadowingInstructions.createComponentOfType = [
|
|
50596
|
+
arrayStateVarObj.shadowingInstructions.createComponentOfType[entryPrefixInd]
|
|
50597
|
+
];
|
|
50598
|
+
}
|
|
50599
|
+
}
|
|
50600
|
+
}
|
|
50601
|
+
if (arrayStateVarObj.getEntryValues) {
|
|
50602
|
+
stateVarObj.getValueFromArrayValues = entryGetValueViaGetEntryValues;
|
|
50603
|
+
} else {
|
|
50604
|
+
stateVarObj.getValueFromArrayValues = entryGetValueFromArrayValues;
|
|
50605
|
+
}
|
|
50606
|
+
stateVarObj.arraySizeStateVariable = arrayStateVarObj.arraySizeStateVariable;
|
|
50607
|
+
stateVarObj._arrayKeys = [];
|
|
50608
|
+
stateVarObj._unflattenedArrayKeys = [];
|
|
50609
|
+
Object.defineProperty(
|
|
50610
|
+
stateVarObj,
|
|
50611
|
+
"arrayKeys",
|
|
50612
|
+
ENTRY_ARRAY_KEYS_DESCRIPTOR
|
|
50613
|
+
);
|
|
50614
|
+
Object.defineProperty(
|
|
50615
|
+
stateVarObj,
|
|
50616
|
+
"unflattenedArrayKeys",
|
|
50617
|
+
ENTRY_UNFLATTENED_ARRAY_KEYS_DESCRIPTOR
|
|
50618
|
+
);
|
|
50619
|
+
if (component.state[stateVarObj.arraySizeStateVariable].initiallyResolved) {
|
|
50620
|
+
let arraySize2 = await arrayStateVarObj.arraySize;
|
|
50621
|
+
let arrayKeys = arrayStateVarObj.getArrayKeysFromVarName({
|
|
50622
|
+
arrayEntryPrefix: stateVarObj.entryPrefix,
|
|
50623
|
+
varEnding: stateVarObj.varEnding,
|
|
50624
|
+
arraySize: arraySize2,
|
|
50625
|
+
numDimensions: arrayStateVarObj.numDimensions
|
|
50626
|
+
});
|
|
50627
|
+
stateVarObj._unflattenedArrayKeys = arrayKeys;
|
|
50628
|
+
stateVarObj._arrayKeys = flattenDeep(arrayKeys);
|
|
50629
|
+
let varNamesIncluding = arrayStateVarObj.varNamesIncludingArrayKeys;
|
|
50630
|
+
for (let arrayKey of stateVarObj._arrayKeys) {
|
|
50631
|
+
if (!varNamesIncluding[arrayKey]) {
|
|
50632
|
+
varNamesIncluding[arrayKey] = [];
|
|
50633
|
+
}
|
|
50634
|
+
varNamesIncluding[arrayKey].push(stateVariable);
|
|
50635
|
+
}
|
|
50636
|
+
}
|
|
50637
|
+
arrayStateVarObj.arrayEntryNames.push(stateVariable);
|
|
50638
|
+
Object.defineProperty(
|
|
50639
|
+
stateVarObj,
|
|
50640
|
+
"arraySize",
|
|
50641
|
+
ENTRY_ARRAY_SIZE_DESCRIPTOR
|
|
50642
|
+
);
|
|
50643
|
+
Object.defineProperty(
|
|
50644
|
+
stateVarObj,
|
|
50645
|
+
"arrayEntrySize",
|
|
50646
|
+
ENTRY_ARRAY_ENTRY_SIZE_DESCRIPTOR
|
|
50647
|
+
);
|
|
50648
|
+
if (arrayStateVarObj.stateVariablesDeterminingDependencies) {
|
|
50649
|
+
if (!stateVarObj.stateVariablesDeterminingDependencies) {
|
|
50650
|
+
stateVarObj.stateVariablesDeterminingDependencies = [];
|
|
50651
|
+
}
|
|
50652
|
+
for (let varName of arrayStateVarObj.stateVariablesDeterminingDependencies) {
|
|
50653
|
+
if (!stateVarObj.stateVariablesDeterminingDependencies.includes(
|
|
50654
|
+
varName
|
|
50655
|
+
)) {
|
|
50656
|
+
stateVarObj.stateVariablesDeterminingDependencies.push(varName);
|
|
50657
|
+
}
|
|
50658
|
+
}
|
|
50659
|
+
}
|
|
50660
|
+
stateVarObj.returnDependencies = entryReturnDependencies;
|
|
50661
|
+
}
|
|
50662
|
+
async function initializeArrayStateVariable({
|
|
50663
|
+
core: core2,
|
|
50664
|
+
stateVarObj,
|
|
50665
|
+
component,
|
|
50666
|
+
stateVariable
|
|
50667
|
+
}) {
|
|
50668
|
+
stateVarObj.arrayValues = [];
|
|
50669
|
+
if (stateVarObj.numDimensions === void 0) {
|
|
50670
|
+
stateVarObj.numDimensions = 1;
|
|
50671
|
+
}
|
|
50672
|
+
let entryPrefixes = stateVarObj.entryPrefixes;
|
|
50673
|
+
if (!entryPrefixes) {
|
|
50674
|
+
entryPrefixes = stateVarObj.entryPrefixes = [stateVariable];
|
|
50675
|
+
}
|
|
50676
|
+
if (!component.arrayEntryPrefixes) {
|
|
50677
|
+
component.arrayEntryPrefixes = {};
|
|
50678
|
+
}
|
|
50679
|
+
for (let prefix of entryPrefixes) {
|
|
50680
|
+
component.arrayEntryPrefixes[prefix] = stateVariable;
|
|
50681
|
+
}
|
|
50682
|
+
if (stateVarObj.numDimensions > 1) {
|
|
50683
|
+
if (!stateVarObj.keyToIndex) {
|
|
50684
|
+
stateVarObj.keyToIndex = multiDimKeyToIndex;
|
|
50685
|
+
}
|
|
50686
|
+
stateVarObj.setArrayValue = multiDimSetArrayValue;
|
|
50687
|
+
stateVarObj.getArrayValue = multiDimGetArrayValue;
|
|
50688
|
+
if (!stateVarObj.getAllArrayKeys) {
|
|
50689
|
+
stateVarObj.getAllArrayKeys = multiDimGetAllArrayKeys;
|
|
50690
|
+
}
|
|
50691
|
+
if (!stateVarObj.arrayVarNameFromArrayKey) {
|
|
50692
|
+
stateVarObj.arrayVarNameFromArrayKey = defaultMultiDimArrayVarNameFromArrayKey;
|
|
50693
|
+
}
|
|
50694
|
+
if (!stateVarObj.arrayVarNameFromPropIndex) {
|
|
50695
|
+
stateVarObj.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(
|
|
50696
|
+
stateVarObj.numDimensions,
|
|
50697
|
+
entryPrefixes[0]
|
|
50698
|
+
);
|
|
50699
|
+
}
|
|
50700
|
+
stateVarObj.adjustArrayToNewArraySize = multiDimAdjustArrayToNewArraySize;
|
|
50701
|
+
} else {
|
|
50702
|
+
if (!stateVarObj.keyToIndex) {
|
|
50703
|
+
stateVarObj.keyToIndex = oneDimKeyToIndex;
|
|
50704
|
+
}
|
|
50705
|
+
stateVarObj.setArrayValue = oneDimSetArrayValue;
|
|
50706
|
+
stateVarObj.getArrayValue = oneDimGetArrayValue;
|
|
50707
|
+
if (!stateVarObj.getAllArrayKeys) {
|
|
50708
|
+
stateVarObj.getAllArrayKeys = oneDimGetAllArrayKeys;
|
|
50709
|
+
}
|
|
50710
|
+
if (!stateVarObj.arrayVarNameFromArrayKey) {
|
|
50711
|
+
stateVarObj.arrayVarNameFromArrayKey = defaultOneDimArrayVarNameFromArrayKey;
|
|
50712
|
+
}
|
|
50713
|
+
if (!stateVarObj.arrayVarNameFromPropIndex) {
|
|
50714
|
+
stateVarObj.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(1, entryPrefixes[0]);
|
|
50715
|
+
}
|
|
50716
|
+
stateVarObj.adjustArrayToNewArraySize = oneDimAdjustArrayToNewArraySize;
|
|
50717
|
+
}
|
|
50718
|
+
if (!stateVarObj.getArrayKeysFromVarName) {
|
|
50719
|
+
stateVarObj.getArrayKeysFromVarName = returnDefaultGetArrayKeysFromVarName(stateVarObj.numDimensions);
|
|
50720
|
+
}
|
|
50721
|
+
if (!stateVarObj.indexToKey) {
|
|
50722
|
+
stateVarObj.indexToKey = arrayIndexToKey;
|
|
50723
|
+
}
|
|
50724
|
+
if (!stateVarObj.returnEntryDimensions) {
|
|
50725
|
+
stateVarObj.returnEntryDimensions = defaultReturnEntryDimensions;
|
|
50726
|
+
}
|
|
50727
|
+
if (stateVarObj.shadowingInstructions) {
|
|
50728
|
+
if (!stateVarObj.shadowingInstructions.returnWrappingComponents) {
|
|
50729
|
+
stateVarObj.shadowingInstructions.returnWrappingComponents = defaultReturnWrappingComponents;
|
|
50730
|
+
}
|
|
50731
|
+
stateVarObj.wrappingComponents = stateVarObj.shadowingInstructions.returnWrappingComponents();
|
|
50732
|
+
}
|
|
50733
|
+
stateVarObj.usedDefaultByArrayKey = {};
|
|
50734
|
+
stateVarObj.arrayEntryNames = [];
|
|
50735
|
+
stateVarObj.varNamesIncludingArrayKeys = {};
|
|
50736
|
+
stateVarObj.returnDependencies = arrayReturnDependencies;
|
|
50737
|
+
stateVarObj.getCurrentFreshness = arrayGetCurrentFreshness;
|
|
50738
|
+
stateVarObj.markStale = arrayMarkStale;
|
|
50739
|
+
stateVarObj.freshenOnNoChanges = arrayFreshenOnNoChanges;
|
|
50740
|
+
stateVarObj.definition = arrayDefinition;
|
|
50741
|
+
stateVarObj.inverseDefinition = arrayInverseDefinition;
|
|
50742
|
+
await createArraySizeStateVariable({
|
|
50743
|
+
core: core2,
|
|
50744
|
+
stateVarObj,
|
|
50745
|
+
component,
|
|
50746
|
+
stateVariable
|
|
50747
|
+
});
|
|
50748
|
+
stateVarObj.arraySizeStale = true;
|
|
50749
|
+
stateVarObj.previousArraySize = [];
|
|
50750
|
+
Object.defineProperty(
|
|
50751
|
+
stateVarObj,
|
|
50752
|
+
"arraySize",
|
|
50753
|
+
ARRAY_ARRAY_SIZE_DESCRIPTOR
|
|
50754
|
+
);
|
|
50755
|
+
stateVarObj.recalculateArraySizeDependentQuantities = arrayRecalculateArraySizeDependentQuantities;
|
|
50756
|
+
if (!stateVarObj.freshnessInfo) {
|
|
50757
|
+
stateVarObj.freshnessInfo = { freshByKey: {} };
|
|
50758
|
+
if (stateVarObj.additionalStateVariablesDefined) {
|
|
50759
|
+
for (let vName of stateVarObj.additionalStateVariablesDefined) {
|
|
50760
|
+
if (!component.state[vName]) {
|
|
50761
|
+
component.state[vName] = {};
|
|
50762
|
+
}
|
|
50763
|
+
component.state[vName].freshnessInfo = stateVarObj.freshnessInfo;
|
|
50764
|
+
}
|
|
50765
|
+
}
|
|
50766
|
+
}
|
|
50767
|
+
}
|
|
50768
|
+
async function createArraySizeStateVariable({
|
|
50769
|
+
core: core2,
|
|
50770
|
+
stateVarObj,
|
|
50771
|
+
component,
|
|
50772
|
+
stateVariable
|
|
50773
|
+
}) {
|
|
50774
|
+
let allStateVariablesAffected = [stateVariable];
|
|
50775
|
+
if (stateVarObj.additionalStateVariablesDefined) {
|
|
50776
|
+
allStateVariablesAffected.push(
|
|
50777
|
+
...stateVarObj.additionalStateVariablesDefined
|
|
50778
|
+
);
|
|
50779
|
+
}
|
|
50780
|
+
allStateVariablesAffected.sort();
|
|
50781
|
+
let arraySizeStateVar = `__array_size_` + allStateVariablesAffected.join("_");
|
|
50782
|
+
stateVarObj.arraySizeStateVariable = arraySizeStateVar;
|
|
50783
|
+
if (stateVarObj.stateVariablesDeterminingDependencies) {
|
|
50784
|
+
stateVarObj.stateVariablesDeterminingDependencies.push(
|
|
50785
|
+
arraySizeStateVar
|
|
50786
|
+
);
|
|
50787
|
+
} else {
|
|
50788
|
+
stateVarObj.stateVariablesDeterminingDependencies = [arraySizeStateVar];
|
|
50789
|
+
}
|
|
50790
|
+
if (component.state[arraySizeStateVar]) {
|
|
50791
|
+
if (component.state[arraySizeStateVar].isShadow) {
|
|
50792
|
+
let arraySizeStateVarObj = component.state[arraySizeStateVar];
|
|
50793
|
+
arraySizeStateVarObj.arraySizeVarNamesAffected = allStateVariablesAffected;
|
|
50794
|
+
arraySizeStateVarObj.markStale = arraySizeMarkStale;
|
|
50795
|
+
}
|
|
50796
|
+
return;
|
|
50797
|
+
}
|
|
50798
|
+
component.state[arraySizeStateVar] = {
|
|
50799
|
+
returnDependencies: stateVarObj.returnArraySizeDependencies,
|
|
50800
|
+
definition: arraySizeDefinition,
|
|
50801
|
+
markStale: arraySizeMarkStale,
|
|
50802
|
+
arraySizeVarNamesAffected: allStateVariablesAffected,
|
|
50803
|
+
arraySizeSourceVarName: stateVariable
|
|
50804
|
+
};
|
|
50805
|
+
if (stateVarObj.stateVariablesDeterminingArraySizeDependencies) {
|
|
50806
|
+
component.state[arraySizeStateVar].stateVariablesDeterminingDependencies = stateVarObj.stateVariablesDeterminingArraySizeDependencies;
|
|
50807
|
+
}
|
|
50808
|
+
await initializeStateVariable({
|
|
50809
|
+
core: core2,
|
|
50810
|
+
component,
|
|
50811
|
+
stateVariable: arraySizeStateVar
|
|
50812
|
+
});
|
|
50813
|
+
}
|
|
50814
|
+
async function arrayEntryNamesFromPropIndex({
|
|
50815
|
+
core: core2,
|
|
50816
|
+
stateVariables,
|
|
50817
|
+
component,
|
|
50818
|
+
propIndex
|
|
50819
|
+
}) {
|
|
50820
|
+
let newVarNames = [];
|
|
50821
|
+
for (let varName of stateVariables) {
|
|
50822
|
+
let stateVarObj = component.state[varName];
|
|
50823
|
+
if (!stateVarObj) {
|
|
50824
|
+
if (!core2.checkIfArrayEntry({
|
|
50825
|
+
stateVariable: varName,
|
|
50826
|
+
component
|
|
50827
|
+
}).isArrayEntry) {
|
|
50828
|
+
newVarNames.push(varName);
|
|
50829
|
+
continue;
|
|
50830
|
+
}
|
|
50831
|
+
await core2.createFromArrayEntry({
|
|
50832
|
+
stateVariable: varName,
|
|
50833
|
+
component
|
|
50834
|
+
});
|
|
50835
|
+
stateVarObj = component.state[varName];
|
|
50836
|
+
}
|
|
50837
|
+
let newName;
|
|
50838
|
+
if (stateVarObj.isArray) {
|
|
50839
|
+
newName = stateVarObj.arrayVarNameFromPropIndex(propIndex, varName);
|
|
50840
|
+
} else if (stateVarObj.isArrayEntry) {
|
|
50841
|
+
let arrayStateVarObj = component.state[stateVarObj.arrayStateVariable];
|
|
50842
|
+
newName = arrayStateVarObj.arrayVarNameFromPropIndex(
|
|
50843
|
+
propIndex,
|
|
50844
|
+
varName
|
|
50845
|
+
);
|
|
50846
|
+
} else {
|
|
50847
|
+
core2.addDiagnostic({
|
|
50848
|
+
type: "warning",
|
|
50849
|
+
message: `Cannot get propIndex from ${varName} of ${component.componentIdx} as it is not an array or array entry state variable`,
|
|
50850
|
+
position: component.position,
|
|
50851
|
+
sourceDoc: component.sourceDoc
|
|
50852
|
+
});
|
|
50853
|
+
newName = varName;
|
|
50854
|
+
}
|
|
50855
|
+
if (newName) {
|
|
50856
|
+
newVarNames.push(newName);
|
|
50857
|
+
} else {
|
|
50858
|
+
core2.addDiagnostic({
|
|
50859
|
+
type: "warning",
|
|
50860
|
+
message: `Cannot get propIndex from ${varName} of ${component.componentIdx}`,
|
|
50861
|
+
position: component.position,
|
|
50862
|
+
sourceDoc: component.sourceDoc
|
|
50863
|
+
});
|
|
50864
|
+
newVarNames.push(varName);
|
|
50865
|
+
}
|
|
50866
|
+
}
|
|
50867
|
+
return newVarNames;
|
|
50868
|
+
}
|
|
49614
50869
|
const PRIMITIVE_TO_COMPONENT_TYPE = {
|
|
49615
50870
|
string: "text",
|
|
49616
50871
|
stringArray: "textList",
|
|
@@ -49638,6 +50893,9 @@ function getClassStateVariableDefinitions(core2, componentClass) {
|
|
|
49638
50893
|
core2.numerics
|
|
49639
50894
|
);
|
|
49640
50895
|
Object.assign(combined, normalized);
|
|
50896
|
+
for (const varName in combined) {
|
|
50897
|
+
normalizeArrayStateVariableDefaults(combined[varName], varName);
|
|
50898
|
+
}
|
|
49641
50899
|
combined[SHARED_STATE_VARIABLE_DEFINITIONS] = true;
|
|
49642
50900
|
entry = { combined, normalized };
|
|
49643
50901
|
perCore.set(componentClass, entry);
|
|
@@ -50693,1159 +51951,6 @@ function validateAttributeValue({
|
|
|
50693
51951
|
}
|
|
50694
51952
|
return { value, diagnostics };
|
|
50695
51953
|
}
|
|
50696
|
-
function renameStateVariable({
|
|
50697
|
-
stateVariableDefinitions,
|
|
50698
|
-
oldName,
|
|
50699
|
-
newName
|
|
50700
|
-
}) {
|
|
50701
|
-
let stateVarDef = stateVariableDefinitions[newName] = stateVariableDefinitions[oldName];
|
|
50702
|
-
delete stateVariableDefinitions[oldName];
|
|
50703
|
-
stateVarDef.excludeFromSchema = true;
|
|
50704
|
-
if (stateVarDef.additionalStateVariablesDefined) {
|
|
50705
|
-
let ind = stateVarDef.additionalStateVariablesDefined.indexOf(oldName);
|
|
50706
|
-
if (ind !== -1) {
|
|
50707
|
-
stateVarDef.additionalStateVariablesDefined[ind] = newName;
|
|
50708
|
-
}
|
|
50709
|
-
}
|
|
50710
|
-
let originalDefinition = stateVarDef.definition;
|
|
50711
|
-
let keysInObjects = [
|
|
50712
|
-
"setValue",
|
|
50713
|
-
"useEssentialOrDefaultValue",
|
|
50714
|
-
"setEssentialValue"
|
|
50715
|
-
];
|
|
50716
|
-
let entriesInArrays = ["noChanges"];
|
|
50717
|
-
stateVarDef.definition = function(args) {
|
|
50718
|
-
let result2 = originalDefinition(args);
|
|
50719
|
-
for (let key of keysInObjects) {
|
|
50720
|
-
if (result2[key] && oldName in result2[key]) {
|
|
50721
|
-
result2[key][newName] = result2[key][oldName];
|
|
50722
|
-
delete result2[key][oldName];
|
|
50723
|
-
}
|
|
50724
|
-
}
|
|
50725
|
-
for (let key of entriesInArrays) {
|
|
50726
|
-
if (result2[key]) {
|
|
50727
|
-
let ind = result2[key].indexOf(oldName);
|
|
50728
|
-
if (ind !== -1) {
|
|
50729
|
-
result2[key][ind] = newName;
|
|
50730
|
-
}
|
|
50731
|
-
}
|
|
50732
|
-
}
|
|
50733
|
-
return result2;
|
|
50734
|
-
};
|
|
50735
|
-
let originalInverseDefinition = stateVarDef.inverseDefinition;
|
|
50736
|
-
if (originalInverseDefinition) {
|
|
50737
|
-
stateVarDef.inverseDefinition = async function(args) {
|
|
50738
|
-
let desiredStateVariableValues = args.desiredStateVariableValues;
|
|
50739
|
-
desiredStateVariableValues[oldName] = desiredStateVariableValues[newName];
|
|
50740
|
-
delete desiredStateVariableValues[newName];
|
|
50741
|
-
let results = await originalInverseDefinition(args);
|
|
50742
|
-
if (results.success) {
|
|
50743
|
-
for (let instruction of results.instructions) {
|
|
50744
|
-
if (instruction.setEssentialValue === oldName) {
|
|
50745
|
-
instruction.setEssentialValue = newName;
|
|
50746
|
-
}
|
|
50747
|
-
}
|
|
50748
|
-
}
|
|
50749
|
-
return results;
|
|
50750
|
-
};
|
|
50751
|
-
}
|
|
50752
|
-
}
|
|
50753
|
-
function returnDefaultGetArrayKeysFromVarName(numDim) {
|
|
50754
|
-
if (numDim > 1) {
|
|
50755
|
-
return function({
|
|
50756
|
-
arrayEntryPrefix,
|
|
50757
|
-
varEnding,
|
|
50758
|
-
arraySize: arraySize2,
|
|
50759
|
-
numDimensions
|
|
50760
|
-
}) {
|
|
50761
|
-
let indices = varEnding.split("_").map((x2) => Number(x2) - 1);
|
|
50762
|
-
if (indices.length === numDimensions && indices.every((x2, i2) => Number.isInteger(x2) && x2 >= 0)) {
|
|
50763
|
-
if (arraySize2) {
|
|
50764
|
-
if (indices.every((x2, i2) => x2 < arraySize2[i2])) {
|
|
50765
|
-
return [String(indices)];
|
|
50766
|
-
} else {
|
|
50767
|
-
return [];
|
|
50768
|
-
}
|
|
50769
|
-
} else {
|
|
50770
|
-
return [String(indices)];
|
|
50771
|
-
}
|
|
50772
|
-
} else {
|
|
50773
|
-
return [];
|
|
50774
|
-
}
|
|
50775
|
-
};
|
|
50776
|
-
} else {
|
|
50777
|
-
return function({ arrayEntryPrefix, varEnding, arraySize: arraySize2 }) {
|
|
50778
|
-
let index2 = Number(varEnding) - 1;
|
|
50779
|
-
if (Number.isInteger(index2) && index2 >= 0) {
|
|
50780
|
-
if (arraySize2) {
|
|
50781
|
-
if (index2 < arraySize2[0]) {
|
|
50782
|
-
return [String(index2)];
|
|
50783
|
-
} else {
|
|
50784
|
-
return [];
|
|
50785
|
-
}
|
|
50786
|
-
} else {
|
|
50787
|
-
return [String(index2)];
|
|
50788
|
-
}
|
|
50789
|
-
} else {
|
|
50790
|
-
return [];
|
|
50791
|
-
}
|
|
50792
|
-
};
|
|
50793
|
-
}
|
|
50794
|
-
}
|
|
50795
|
-
function returnDefaultArrayVarNameFromPropIndex(numDim, arrayEntryPrefix) {
|
|
50796
|
-
if (numDim > 1) {
|
|
50797
|
-
return function(propIndex, varName) {
|
|
50798
|
-
return arrayEntryPrefix + [
|
|
50799
|
-
...propIndex.map((x2) => Math.round(Number(x2))),
|
|
50800
|
-
...Array(numDim - propIndex.length).fill(1)
|
|
50801
|
-
].join("_");
|
|
50802
|
-
};
|
|
50803
|
-
} else {
|
|
50804
|
-
return function(propIndex, varName) {
|
|
50805
|
-
return arrayEntryPrefix + propIndex[0];
|
|
50806
|
-
};
|
|
50807
|
-
}
|
|
50808
|
-
}
|
|
50809
|
-
async function initializeComponentStateVariables({
|
|
50810
|
-
core: core2,
|
|
50811
|
-
component
|
|
50812
|
-
}) {
|
|
50813
|
-
for (let stateVariable in component.state) {
|
|
50814
|
-
if (component.state[stateVariable].isAlias) {
|
|
50815
|
-
if (!component.stateVarAliases) {
|
|
50816
|
-
component.stateVarAliases = {};
|
|
50817
|
-
}
|
|
50818
|
-
component.stateVarAliases[stateVariable] = component.state[stateVariable].targetVariableName;
|
|
50819
|
-
delete component.state[stateVariable];
|
|
50820
|
-
} else {
|
|
50821
|
-
await initializeStateVariable({
|
|
50822
|
-
core: core2,
|
|
50823
|
-
component,
|
|
50824
|
-
stateVariable
|
|
50825
|
-
});
|
|
50826
|
-
}
|
|
50827
|
-
}
|
|
50828
|
-
}
|
|
50829
|
-
async function initializeStateVariable({
|
|
50830
|
-
core: core2,
|
|
50831
|
-
component,
|
|
50832
|
-
stateVariable,
|
|
50833
|
-
arrayStateVariable,
|
|
50834
|
-
arrayEntryPrefix
|
|
50835
|
-
}) {
|
|
50836
|
-
let getStateVar = core2.getStateVariableValue;
|
|
50837
|
-
if (!component.state[stateVariable]) {
|
|
50838
|
-
component.state[stateVariable] = {};
|
|
50839
|
-
}
|
|
50840
|
-
let stateVarObj = component.state[stateVariable];
|
|
50841
|
-
stateVarObj.isResolved = false;
|
|
50842
|
-
Object.defineProperty(stateVarObj, "value", {
|
|
50843
|
-
get: () => getStateVar({ component, stateVariable }),
|
|
50844
|
-
configurable: true
|
|
50845
|
-
});
|
|
50846
|
-
if (arrayEntryPrefix !== void 0) {
|
|
50847
|
-
await initializeArrayEntryStateVariable({
|
|
50848
|
-
stateVarObj,
|
|
50849
|
-
arrayStateVariable,
|
|
50850
|
-
arrayEntryPrefix,
|
|
50851
|
-
component,
|
|
50852
|
-
stateVariable
|
|
50853
|
-
});
|
|
50854
|
-
} else if (stateVarObj.isArray) {
|
|
50855
|
-
await initializeArrayStateVariable({
|
|
50856
|
-
core: core2,
|
|
50857
|
-
stateVarObj,
|
|
50858
|
-
component,
|
|
50859
|
-
stateVariable
|
|
50860
|
-
});
|
|
50861
|
-
}
|
|
50862
|
-
if (stateVarObj.triggerActionOnChange) {
|
|
50863
|
-
let componentTriggers = core2.stateVariableChangeTriggers[component.componentIdx];
|
|
50864
|
-
if (!componentTriggers) {
|
|
50865
|
-
componentTriggers = core2.stateVariableChangeTriggers[component.componentIdx] = {};
|
|
50866
|
-
}
|
|
50867
|
-
componentTriggers[stateVariable] = {
|
|
50868
|
-
action: stateVarObj.triggerActionOnChange
|
|
50869
|
-
};
|
|
50870
|
-
}
|
|
50871
|
-
}
|
|
50872
|
-
async function initializeArrayEntryStateVariable({
|
|
50873
|
-
stateVarObj,
|
|
50874
|
-
arrayStateVariable,
|
|
50875
|
-
arrayEntryPrefix,
|
|
50876
|
-
component,
|
|
50877
|
-
stateVariable
|
|
50878
|
-
}) {
|
|
50879
|
-
stateVarObj.isArrayEntry = true;
|
|
50880
|
-
stateVarObj.arrayStateVariable = arrayStateVariable;
|
|
50881
|
-
let arrayStateVarObj = component.state[arrayStateVariable];
|
|
50882
|
-
stateVarObj.definition = arrayStateVarObj.definition;
|
|
50883
|
-
stateVarObj.inverseDefinition = arrayStateVarObj.inverseDefinition;
|
|
50884
|
-
stateVarObj.markStale = arrayStateVarObj.markStale;
|
|
50885
|
-
stateVarObj.freshnessInfo = arrayStateVarObj.freshnessInfo;
|
|
50886
|
-
stateVarObj.getPreviousDependencyValuesForMarkStale = arrayStateVarObj.getPreviousDependencyValuesForMarkStale;
|
|
50887
|
-
stateVarObj.provideEssentialValuesInDefinition = arrayStateVarObj.provideEssentialValuesInDefinition;
|
|
50888
|
-
stateVarObj.providePreviousValuesInDefinition = arrayStateVarObj.providePreviousValuesInDefinition;
|
|
50889
|
-
stateVarObj.isLocation = arrayStateVarObj.isLocation;
|
|
50890
|
-
stateVarObj.numDimensions = arrayStateVarObj.returnEntryDimensions(arrayEntryPrefix);
|
|
50891
|
-
stateVarObj.entryPrefix = arrayEntryPrefix;
|
|
50892
|
-
stateVarObj.varEnding = stateVariable.slice(arrayEntryPrefix.length);
|
|
50893
|
-
if (arrayStateVarObj.createWorkspace) {
|
|
50894
|
-
stateVarObj.createWorkspace = true;
|
|
50895
|
-
stateVarObj.workspace = arrayStateVarObj.workspace;
|
|
50896
|
-
}
|
|
50897
|
-
if (arrayStateVarObj.basedOnArrayKeyStateVariables) {
|
|
50898
|
-
stateVarObj.basedOnArrayKeyStateVariables = true;
|
|
50899
|
-
}
|
|
50900
|
-
if (arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50901
|
-
stateVarObj.additionalStateVariablesDefined = [];
|
|
50902
|
-
let entryPrefixInd = arrayStateVarObj.entryPrefixes.indexOf(arrayEntryPrefix);
|
|
50903
|
-
for (let varName of arrayStateVarObj.additionalStateVariablesDefined) {
|
|
50904
|
-
let sObj = component.state[varName];
|
|
50905
|
-
if (sObj.isArray) {
|
|
50906
|
-
let newArrayEntryPrefix = sObj.entryPrefixes[entryPrefixInd];
|
|
50907
|
-
let arrayEntryVarName = newArrayEntryPrefix + stateVarObj.varEnding;
|
|
50908
|
-
stateVarObj.additionalStateVariablesDefined.push(
|
|
50909
|
-
arrayEntryVarName
|
|
50910
|
-
);
|
|
50911
|
-
} else {
|
|
50912
|
-
stateVarObj.additionalStateVariablesDefined.push(varName);
|
|
50913
|
-
}
|
|
50914
|
-
}
|
|
50915
|
-
}
|
|
50916
|
-
if (arrayStateVarObj.shadowingInstructions) {
|
|
50917
|
-
stateVarObj.shadowingInstructions = {};
|
|
50918
|
-
stateVarObj.wrappingComponents = arrayStateVarObj.shadowingInstructions.returnWrappingComponents(
|
|
50919
|
-
arrayEntryPrefix
|
|
50920
|
-
);
|
|
50921
|
-
if (arrayStateVarObj.shadowingInstructions.attributesToShadow) {
|
|
50922
|
-
stateVarObj.shadowingInstructions.attributesToShadow = arrayStateVarObj.shadowingInstructions.attributesToShadow;
|
|
50923
|
-
}
|
|
50924
|
-
if (arrayStateVarObj.shadowingInstructions.createComponentOfType) {
|
|
50925
|
-
let entryPrefixInd = arrayStateVarObj.entryPrefixes.indexOf(arrayEntryPrefix);
|
|
50926
|
-
if (arrayStateVarObj.shadowingInstructions.createComponentOfType[entryPrefixInd]) {
|
|
50927
|
-
stateVarObj.shadowingInstructions.createComponentOfType = [
|
|
50928
|
-
arrayStateVarObj.shadowingInstructions.createComponentOfType[entryPrefixInd]
|
|
50929
|
-
];
|
|
50930
|
-
}
|
|
50931
|
-
}
|
|
50932
|
-
}
|
|
50933
|
-
if (arrayStateVarObj.getEntryValues) {
|
|
50934
|
-
stateVarObj.getValueFromArrayValues = async function() {
|
|
50935
|
-
return await arrayStateVarObj.getEntryValues({
|
|
50936
|
-
varName: stateVariable
|
|
50937
|
-
});
|
|
50938
|
-
};
|
|
50939
|
-
} else {
|
|
50940
|
-
stateVarObj.getValueFromArrayValues = async function() {
|
|
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
|
-
};
|
|
50955
|
-
}
|
|
50956
|
-
stateVarObj.arraySizeStateVariable = arrayStateVarObj.arraySizeStateVariable;
|
|
50957
|
-
stateVarObj._arrayKeys = [];
|
|
50958
|
-
stateVarObj._unflattenedArrayKeys = [];
|
|
50959
|
-
Object.defineProperty(stateVarObj, "arrayKeys", {
|
|
50960
|
-
get: function() {
|
|
50961
|
-
return (async () => {
|
|
50962
|
-
await arrayStateVarObj.arraySize;
|
|
50963
|
-
return stateVarObj._arrayKeys;
|
|
50964
|
-
})();
|
|
50965
|
-
}
|
|
50966
|
-
});
|
|
50967
|
-
Object.defineProperty(stateVarObj, "unflattenedArrayKeys", {
|
|
50968
|
-
get: function() {
|
|
50969
|
-
return (async () => {
|
|
50970
|
-
await arrayStateVarObj.arraySize;
|
|
50971
|
-
return stateVarObj._unflattenedArrayKeys;
|
|
50972
|
-
})();
|
|
50973
|
-
}
|
|
50974
|
-
});
|
|
50975
|
-
if (component.state[stateVarObj.arraySizeStateVariable].initiallyResolved) {
|
|
50976
|
-
let arraySize2 = await arrayStateVarObj.arraySize;
|
|
50977
|
-
let arrayKeys = arrayStateVarObj.getArrayKeysFromVarName({
|
|
50978
|
-
arrayEntryPrefix: stateVarObj.entryPrefix,
|
|
50979
|
-
varEnding: stateVarObj.varEnding,
|
|
50980
|
-
arraySize: arraySize2,
|
|
50981
|
-
numDimensions: arrayStateVarObj.numDimensions
|
|
50982
|
-
});
|
|
50983
|
-
stateVarObj._unflattenedArrayKeys = arrayKeys;
|
|
50984
|
-
stateVarObj._arrayKeys = flattenDeep(arrayKeys);
|
|
50985
|
-
let varNamesIncluding = arrayStateVarObj.varNamesIncludingArrayKeys;
|
|
50986
|
-
for (let arrayKey of stateVarObj._arrayKeys) {
|
|
50987
|
-
if (!varNamesIncluding[arrayKey]) {
|
|
50988
|
-
varNamesIncluding[arrayKey] = [];
|
|
50989
|
-
}
|
|
50990
|
-
varNamesIncluding[arrayKey].push(stateVariable);
|
|
50991
|
-
}
|
|
50992
|
-
}
|
|
50993
|
-
arrayStateVarObj.arrayEntryNames.push(stateVariable);
|
|
50994
|
-
Object.defineProperty(stateVarObj, "arraySize", {
|
|
50995
|
-
get: () => arrayStateVarObj.arraySize
|
|
50996
|
-
});
|
|
50997
|
-
Object.defineProperty(stateVarObj, "arrayEntrySize", {
|
|
50998
|
-
get: function() {
|
|
50999
|
-
return (async () => {
|
|
51000
|
-
let unflattenedArrayKeys = await stateVarObj.unflattenedArrayKeys;
|
|
51001
|
-
let arrayEntrySize = [];
|
|
51002
|
-
let subArray = [unflattenedArrayKeys];
|
|
51003
|
-
for (let i2 = 0; i2 < stateVarObj.numDimensions; i2++) {
|
|
51004
|
-
subArray = subArray[0];
|
|
51005
|
-
arrayEntrySize.push(subArray.length);
|
|
51006
|
-
}
|
|
51007
|
-
arrayEntrySize.reverse();
|
|
51008
|
-
return arrayEntrySize;
|
|
51009
|
-
})();
|
|
51010
|
-
}
|
|
51011
|
-
});
|
|
51012
|
-
if (arrayStateVarObj.stateVariablesDeterminingDependencies) {
|
|
51013
|
-
if (!stateVarObj.stateVariablesDeterminingDependencies) {
|
|
51014
|
-
stateVarObj.stateVariablesDeterminingDependencies = [];
|
|
51015
|
-
}
|
|
51016
|
-
for (let varName of arrayStateVarObj.stateVariablesDeterminingDependencies) {
|
|
51017
|
-
if (!stateVarObj.stateVariablesDeterminingDependencies.includes(
|
|
51018
|
-
varName
|
|
51019
|
-
)) {
|
|
51020
|
-
stateVarObj.stateVariablesDeterminingDependencies.push(varName);
|
|
51021
|
-
}
|
|
51022
|
-
}
|
|
51023
|
-
}
|
|
51024
|
-
let arrayReturnDependencies = arrayStateVarObj.returnDependencies.bind(arrayStateVarObj);
|
|
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
|
-
};
|
|
51038
|
-
}
|
|
51039
|
-
async function initializeArrayStateVariable({
|
|
51040
|
-
core: core2,
|
|
51041
|
-
stateVarObj,
|
|
51042
|
-
component,
|
|
51043
|
-
stateVariable
|
|
51044
|
-
}) {
|
|
51045
|
-
stateVarObj.arrayValues = [];
|
|
51046
|
-
if (stateVarObj.numDimensions === void 0) {
|
|
51047
|
-
stateVarObj.numDimensions = 1;
|
|
51048
|
-
}
|
|
51049
|
-
let entryPrefixes = stateVarObj.entryPrefixes;
|
|
51050
|
-
if (!entryPrefixes) {
|
|
51051
|
-
entryPrefixes = stateVarObj.entryPrefixes = [stateVariable];
|
|
51052
|
-
}
|
|
51053
|
-
if (!component.arrayEntryPrefixes) {
|
|
51054
|
-
component.arrayEntryPrefixes = {};
|
|
51055
|
-
}
|
|
51056
|
-
for (let prefix of entryPrefixes) {
|
|
51057
|
-
component.arrayEntryPrefixes[prefix] = stateVariable;
|
|
51058
|
-
}
|
|
51059
|
-
if (stateVarObj.numDimensions > 1) {
|
|
51060
|
-
stateVarObj.keyToIndex = (key) => key.split(",").map((x2) => Number(x2));
|
|
51061
|
-
stateVarObj.setArrayValue = function({
|
|
51062
|
-
value,
|
|
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
|
-
};
|
|
51171
|
-
if (!stateVarObj.getAllArrayKeys) {
|
|
51172
|
-
stateVarObj.getAllArrayKeys = function(arraySize2, flatten2 = true, desiredSize) {
|
|
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
|
-
};
|
|
51222
|
-
}
|
|
51223
|
-
if (!stateVarObj.arrayVarNameFromArrayKey) {
|
|
51224
|
-
stateVarObj.arrayVarNameFromArrayKey = function(arrayKey) {
|
|
51225
|
-
return entryPrefixes[0] + arrayKey.split(",").map((x2) => Number(x2) + 1).join("_");
|
|
51226
|
-
};
|
|
51227
|
-
}
|
|
51228
|
-
if (!stateVarObj.arrayVarNameFromPropIndex) {
|
|
51229
|
-
stateVarObj.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(
|
|
51230
|
-
stateVarObj.numDimensions,
|
|
51231
|
-
entryPrefixes[0]
|
|
51232
|
-
);
|
|
51233
|
-
}
|
|
51234
|
-
stateVarObj.adjustArrayToNewArraySize = async function() {
|
|
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
|
-
};
|
|
51253
|
-
} else {
|
|
51254
|
-
stateVarObj.keyToIndex = (key) => Number(key);
|
|
51255
|
-
stateVarObj.setArrayValue = function({
|
|
51256
|
-
value,
|
|
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
|
-
};
|
|
51281
|
-
if (!stateVarObj.getAllArrayKeys) {
|
|
51282
|
-
stateVarObj.getAllArrayKeys = function(arraySize2, flatten2, desiredSize) {
|
|
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
|
-
};
|
|
51298
|
-
}
|
|
51299
|
-
if (!stateVarObj.arrayVarNameFromArrayKey) {
|
|
51300
|
-
stateVarObj.arrayVarNameFromArrayKey = function(arrayKey) {
|
|
51301
|
-
return entryPrefixes[0] + String(Number(arrayKey) + 1);
|
|
51302
|
-
};
|
|
51303
|
-
}
|
|
51304
|
-
if (!stateVarObj.arrayVarNameFromPropIndex) {
|
|
51305
|
-
stateVarObj.arrayVarNameFromPropIndex = returnDefaultArrayVarNameFromPropIndex(1, entryPrefixes[0]);
|
|
51306
|
-
}
|
|
51307
|
-
stateVarObj.adjustArrayToNewArraySize = async function() {
|
|
51308
|
-
let arraySize2 = await stateVarObj.arraySize;
|
|
51309
|
-
stateVarObj.arrayValues.length = arraySize2[0];
|
|
51310
|
-
};
|
|
51311
|
-
}
|
|
51312
|
-
if (!stateVarObj.getArrayKeysFromVarName) {
|
|
51313
|
-
stateVarObj.getArrayKeysFromVarName = returnDefaultGetArrayKeysFromVarName(stateVarObj.numDimensions);
|
|
51314
|
-
}
|
|
51315
|
-
stateVarObj.indexToKey = (index2) => String(index2);
|
|
51316
|
-
if (!stateVarObj.returnEntryDimensions) {
|
|
51317
|
-
stateVarObj.returnEntryDimensions = () => 0;
|
|
51318
|
-
}
|
|
51319
|
-
if (stateVarObj.shadowingInstructions) {
|
|
51320
|
-
if (!stateVarObj.shadowingInstructions.returnWrappingComponents) {
|
|
51321
|
-
stateVarObj.shadowingInstructions.returnWrappingComponents = (prefix) => [];
|
|
51322
|
-
}
|
|
51323
|
-
stateVarObj.wrappingComponents = stateVarObj.shadowingInstructions.returnWrappingComponents();
|
|
51324
|
-
}
|
|
51325
|
-
stateVarObj.usedDefaultByArrayKey = {};
|
|
51326
|
-
stateVarObj.arrayEntryNames = [];
|
|
51327
|
-
stateVarObj.varNamesIncludingArrayKeys = {};
|
|
51328
|
-
let allStateVariablesAffected = [stateVariable];
|
|
51329
|
-
if (stateVarObj.additionalStateVariablesDefined) {
|
|
51330
|
-
allStateVariablesAffected.push(
|
|
51331
|
-
...stateVarObj.additionalStateVariablesDefined
|
|
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
|
-
};
|
|
51671
|
-
await createArraySizeStateVariable({
|
|
51672
|
-
core: core2,
|
|
51673
|
-
stateVarObj,
|
|
51674
|
-
component,
|
|
51675
|
-
stateVariable
|
|
51676
|
-
});
|
|
51677
|
-
stateVarObj.arraySizeStale = true;
|
|
51678
|
-
stateVarObj.previousArraySize = [];
|
|
51679
|
-
Object.defineProperty(stateVarObj, "arraySize", {
|
|
51680
|
-
get: function() {
|
|
51681
|
-
return (async () => {
|
|
51682
|
-
if (!component.state[stateVarObj.arraySizeStateVariable].initiallyResolved) {
|
|
51683
|
-
return [];
|
|
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
|
-
};
|
|
51719
|
-
if (!stateVarObj.freshnessInfo) {
|
|
51720
|
-
stateVarObj.freshnessInfo = { freshByKey: {} };
|
|
51721
|
-
if (stateVarObj.additionalStateVariablesDefined) {
|
|
51722
|
-
for (let vName of stateVarObj.additionalStateVariablesDefined) {
|
|
51723
|
-
if (!component.state[vName]) {
|
|
51724
|
-
component.state[vName] = {};
|
|
51725
|
-
}
|
|
51726
|
-
component.state[vName].freshnessInfo = stateVarObj.freshnessInfo;
|
|
51727
|
-
}
|
|
51728
|
-
}
|
|
51729
|
-
}
|
|
51730
|
-
}
|
|
51731
|
-
async function createArraySizeStateVariable({
|
|
51732
|
-
core: core2,
|
|
51733
|
-
stateVarObj,
|
|
51734
|
-
component,
|
|
51735
|
-
stateVariable
|
|
51736
|
-
}) {
|
|
51737
|
-
let allStateVariablesAffected = [stateVariable];
|
|
51738
|
-
if (stateVarObj.additionalStateVariablesDefined) {
|
|
51739
|
-
allStateVariablesAffected.push(
|
|
51740
|
-
...stateVarObj.additionalStateVariablesDefined
|
|
51741
|
-
);
|
|
51742
|
-
}
|
|
51743
|
-
allStateVariablesAffected.sort();
|
|
51744
|
-
let arraySizeStateVar = `__array_size_` + allStateVariablesAffected.join("_");
|
|
51745
|
-
stateVarObj.arraySizeStateVariable = arraySizeStateVar;
|
|
51746
|
-
if (stateVarObj.stateVariablesDeterminingDependencies) {
|
|
51747
|
-
stateVarObj.stateVariablesDeterminingDependencies.push(
|
|
51748
|
-
arraySizeStateVar
|
|
51749
|
-
);
|
|
51750
|
-
} else {
|
|
51751
|
-
stateVarObj.stateVariablesDeterminingDependencies = [arraySizeStateVar];
|
|
51752
|
-
}
|
|
51753
|
-
if (component.state[arraySizeStateVar]) {
|
|
51754
|
-
if (component.state[arraySizeStateVar].isShadow) {
|
|
51755
|
-
let arraySizeStateVarObj = component.state[arraySizeStateVar];
|
|
51756
|
-
arraySizeStateVarObj.markStale = function() {
|
|
51757
|
-
for (let varName of allStateVariablesAffected) {
|
|
51758
|
-
component.state[varName].arraySizeStale = true;
|
|
51759
|
-
}
|
|
51760
|
-
return {};
|
|
51761
|
-
};
|
|
51762
|
-
}
|
|
51763
|
-
return;
|
|
51764
|
-
}
|
|
51765
|
-
component.state[arraySizeStateVar] = {
|
|
51766
|
-
returnDependencies: stateVarObj.returnArraySizeDependencies,
|
|
51767
|
-
definition({ dependencyValues }) {
|
|
51768
|
-
let arraySize2 = stateVarObj.returnArraySize({
|
|
51769
|
-
dependencyValues
|
|
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
|
-
}
|
|
51784
|
-
};
|
|
51785
|
-
if (stateVarObj.stateVariablesDeterminingArraySizeDependencies) {
|
|
51786
|
-
component.state[arraySizeStateVar].stateVariablesDeterminingDependencies = stateVarObj.stateVariablesDeterminingArraySizeDependencies;
|
|
51787
|
-
}
|
|
51788
|
-
await initializeStateVariable({
|
|
51789
|
-
core: core2,
|
|
51790
|
-
component,
|
|
51791
|
-
stateVariable: arraySizeStateVar
|
|
51792
|
-
});
|
|
51793
|
-
}
|
|
51794
|
-
async function arrayEntryNamesFromPropIndex({
|
|
51795
|
-
core: core2,
|
|
51796
|
-
stateVariables,
|
|
51797
|
-
component,
|
|
51798
|
-
propIndex
|
|
51799
|
-
}) {
|
|
51800
|
-
let newVarNames = [];
|
|
51801
|
-
for (let varName of stateVariables) {
|
|
51802
|
-
let stateVarObj = component.state[varName];
|
|
51803
|
-
if (!stateVarObj) {
|
|
51804
|
-
if (!core2.checkIfArrayEntry({
|
|
51805
|
-
stateVariable: varName,
|
|
51806
|
-
component
|
|
51807
|
-
}).isArrayEntry) {
|
|
51808
|
-
newVarNames.push(varName);
|
|
51809
|
-
continue;
|
|
51810
|
-
}
|
|
51811
|
-
await core2.createFromArrayEntry({
|
|
51812
|
-
stateVariable: varName,
|
|
51813
|
-
component
|
|
51814
|
-
});
|
|
51815
|
-
stateVarObj = component.state[varName];
|
|
51816
|
-
}
|
|
51817
|
-
let newName;
|
|
51818
|
-
if (stateVarObj.isArray) {
|
|
51819
|
-
newName = stateVarObj.arrayVarNameFromPropIndex(propIndex, varName);
|
|
51820
|
-
} else if (stateVarObj.isArrayEntry) {
|
|
51821
|
-
let arrayStateVarObj = component.state[stateVarObj.arrayStateVariable];
|
|
51822
|
-
newName = arrayStateVarObj.arrayVarNameFromPropIndex(
|
|
51823
|
-
propIndex,
|
|
51824
|
-
varName
|
|
51825
|
-
);
|
|
51826
|
-
} else {
|
|
51827
|
-
core2.addDiagnostic({
|
|
51828
|
-
type: "warning",
|
|
51829
|
-
message: `Cannot get propIndex from ${varName} of ${component.componentIdx} as it is not an array or array entry state variable`,
|
|
51830
|
-
position: component.position,
|
|
51831
|
-
sourceDoc: component.sourceDoc
|
|
51832
|
-
});
|
|
51833
|
-
newName = varName;
|
|
51834
|
-
}
|
|
51835
|
-
if (newName) {
|
|
51836
|
-
newVarNames.push(newName);
|
|
51837
|
-
} else {
|
|
51838
|
-
core2.addDiagnostic({
|
|
51839
|
-
type: "warning",
|
|
51840
|
-
message: `Cannot get propIndex from ${varName} of ${component.componentIdx}`,
|
|
51841
|
-
position: component.position,
|
|
51842
|
-
sourceDoc: component.sourceDoc
|
|
51843
|
-
});
|
|
51844
|
-
newVarNames.push(varName);
|
|
51845
|
-
}
|
|
51846
|
-
}
|
|
51847
|
-
return newVarNames;
|
|
51848
|
-
}
|
|
51849
51954
|
const EMPTY_SERIALIZED_CHILDREN = Object.freeze([]);
|
|
51850
51955
|
function ancestorsForChild(parent) {
|
|
51851
51956
|
return [
|
|
@@ -64309,17 +64414,12 @@ class StalenessPropagator {
|
|
|
64309
64414
|
* as stale: the next `await stateVarObj.value` will recompute, while
|
|
64310
64415
|
* `_previousValue` is preserved for change-detection.
|
|
64311
64416
|
*/
|
|
64312
|
-
async _replaceWithStaleGetter(stateVarObj
|
|
64417
|
+
async _replaceWithStaleGetter(stateVarObj) {
|
|
64313
64418
|
stateVarObj._previousValue = await stateVarObj.value;
|
|
64314
64419
|
if (Array.isArray(stateVarObj._previousValue)) {
|
|
64315
64420
|
stateVarObj._previousValue = [...stateVarObj._previousValue];
|
|
64316
64421
|
}
|
|
64317
|
-
|
|
64318
|
-
const getStateVar = this.core.getStateVariableValue;
|
|
64319
|
-
Object.defineProperty(stateVarObj, "value", {
|
|
64320
|
-
get: () => getStateVar({ component, stateVariable: vName }),
|
|
64321
|
-
configurable: true
|
|
64322
|
-
});
|
|
64422
|
+
installStaleValueGetter(stateVarObj);
|
|
64323
64423
|
}
|
|
64324
64424
|
/**
|
|
64325
64425
|
* Visit `component` for stale-marking against `varName` plus every
|
|
@@ -64444,11 +64544,7 @@ class StalenessPropagator {
|
|
|
64444
64544
|
const stateVarObj = allStateVariablesAffectedObj[vName];
|
|
64445
64545
|
delete stateVarObj.recursiveDependencyValues;
|
|
64446
64546
|
if (previouslyFreshVars.includes(vName)) {
|
|
64447
|
-
await this._replaceWithStaleGetter(
|
|
64448
|
-
stateVarObj,
|
|
64449
|
-
component,
|
|
64450
|
-
vName
|
|
64451
|
-
);
|
|
64547
|
+
await this._replaceWithStaleGetter(stateVarObj);
|
|
64452
64548
|
}
|
|
64453
64549
|
}
|
|
64454
64550
|
if (freshnessDecreased) {
|
|
@@ -67603,7 +67699,13 @@ class Core {
|
|
|
67603
67699
|
requestSolutionView: this.requestSolutionView.bind(this),
|
|
67604
67700
|
requestComponentDoenetML: this.requestComponentDoenetML.bind(this),
|
|
67605
67701
|
copyToClipboard: this.copyToClipboard.bind(this),
|
|
67606
|
-
navigateToTarget: (args) => navigateToTarget({ core: this, args })
|
|
67702
|
+
navigateToTarget: (args) => navigateToTarget({ core: this, args }),
|
|
67703
|
+
// State-variable runtime plumbing, not component-facing API:
|
|
67704
|
+
// the shared state-variable functions in StateVariableInitializer
|
|
67705
|
+
// reach core through `svComponent.coreFunctions`.
|
|
67706
|
+
getStateVariableValue: this.getStateVariableValue,
|
|
67707
|
+
// bound above
|
|
67708
|
+
addDiagnostic: this.addDiagnostic.bind(this)
|
|
67607
67709
|
};
|
|
67608
67710
|
this.updateInfo = {
|
|
67609
67711
|
componentsToUpdateRenderers: /* @__PURE__ */ new Set(),
|
|
@@ -229197,4 +229299,4 @@ export {
|
|
|
229197
229299
|
getDefaultExportFromCjs as g,
|
|
229198
229300
|
updateSyntaxFromV06toV07 as u
|
|
229199
229301
|
};
|
|
229200
|
-
//# sourceMappingURL=index-
|
|
229302
|
+
//# sourceMappingURL=index-D7QB7nkv.js.map
|