uicore-ts 1.0.225 → 1.0.228
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/compiledScripts/UICoreExtensions.js +6 -3
- package/compiledScripts/UICoreExtensions.js.map +2 -2
- package/compiledScripts/UITableView.d.ts +1 -1
- package/compiledScripts/UITableView.js +1 -1
- package/compiledScripts/UITableView.js.map +2 -2
- package/compiledScripts/UIView.d.ts +3 -0
- package/compiledScripts/UIView.js +27 -18
- package/compiledScripts/UIView.js.map +3 -3
- package/package.json +1 -1
- package/scripts/UICoreExtensions.ts +6 -3
- package/scripts/UITableView.ts +6 -6
- package/scripts/UIView.ts +78 -63
|
@@ -276,14 +276,16 @@ if ("allValues" in Object.prototype == NO) {
|
|
|
276
276
|
values.push(value);
|
|
277
277
|
});
|
|
278
278
|
return values;
|
|
279
|
-
}
|
|
279
|
+
},
|
|
280
|
+
enumerable: NO
|
|
280
281
|
});
|
|
281
282
|
}
|
|
282
283
|
if ("allKeys" in Object.prototype == NO) {
|
|
283
284
|
Object.defineProperty(Object.prototype, "allKeys", {
|
|
284
285
|
get: function() {
|
|
285
286
|
return Object.keys(this);
|
|
286
|
-
}
|
|
287
|
+
},
|
|
288
|
+
enumerable: NO
|
|
287
289
|
});
|
|
288
290
|
}
|
|
289
291
|
if ("objectByCopyingValuesRecursivelyFromObject" in Object.prototype == NO) {
|
|
@@ -324,7 +326,8 @@ if ("capitalizedString" in String.prototype == NO) {
|
|
|
324
326
|
Object.defineProperty(Object.prototype, "capitalizedString", {
|
|
325
327
|
get: function() {
|
|
326
328
|
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
|
|
327
|
-
}
|
|
329
|
+
},
|
|
330
|
+
enumerable: NO
|
|
328
331
|
});
|
|
329
332
|
}
|
|
330
333
|
if ("numericalValue" in String.prototype == NO) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../scripts/UICoreExtensions.ts"],
|
|
4
|
-
"sourcesContent": ["import { UICoreExtensionValueObject } from \"./UICoreExtensionValueObject\"\nimport { UIObject } from \"./UIObject\"\n\n\ndeclare global {\n \n \n interface Array<T> {\n \n removeElementAtIndex(index: number): void;\n \n removeElement(element: T): void;\n \n insertElementAtIndex(index: number, element: T): void;\n \n replaceElementAtIndex(index: number, element: T): void;\n \n \n contains(element: T): boolean;\n \n findAsyncSequential(functionToCall: (value: any) => Promise<boolean>): Promise<any>;\n \n groupedBy(keyFunction: (item: T) => any): { [key: string]: Array<T> } & Object;\n \n copy(): Array<T>;\n \n arrayByRepeating(numberOfRepetitions: number): Array<T>;\n \n arrayByTrimmingToLengthIfLonger(maxLength: number): Array<T>;\n \n anyMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n \n noneMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n \n allMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n \n firstElement: T;\n lastElement: T;\n readonly summedValue: T;\n \n everyElement: UIEveryElementItem<T>;\n \n max(): number;\n \n min(): number;\n \n isEqualToArray(array: Array<T>, keyPath?: string): boolean;\n \n }\n \n \n interface String {\n \n contains(string: string): boolean;\n \n readonly numericalValue: number;\n readonly integerValue: number;\n isAString: boolean;\n \n }\n \n \n interface Number {\n \n isANumber: boolean;\n \n readonly integerValue: number;\n \n }\n \n \n interface Date {\n \n readonly dateString: string;\n \n }\n \n \n interface Object {\n \n forEach(callbackFunction: (value: any, key: string, stopLooping: () => void) => void): void;\n \n readonly allValues: Array<any>;\n readonly allKeys: string[];\n \n }\n \n}\n\nexport {}\n\nconst YES = true\nconst NO = false\n\nif (\"removeElementAtIndex\" in Array.prototype == NO) {\n \n (Array.prototype as any).removeElementAtIndex = function (this: Array<any>, index: number) {\n \n // @ts-ignore\n if (index >= 0 && index < this.length) {\n this.splice(index, 1)\n }\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// removeElementAtIndex(index: number);\n//\n// }\n\n\nif (\"removeElement\" in Array.prototype == NO) {\n \n (Array.prototype as any).removeElement = function (this: Array<any>, element: any) {\n this.removeElementAtIndex(this.indexOf(element))\n }\n \n}\n\n\n// interface Array<T> {\n//\n// removeElement(element: T);\n//\n// }\n\n\nif (\"insertElementAtIndex\" in Array.prototype == NO) {\n \n (Array.prototype as any).insertElementAtIndex = function (this: Array<any>, index: number, element: any) {\n \n if (index >= 0 && index <= this.length) {\n this.splice(index, 0, element)\n }\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// insertElementAtIndex(index: number, element: T);\n//\n// }\n\n\nif (\"replaceElementAtIndex\" in Array.prototype == NO) {\n \n (Array.prototype as any).replaceElementAtIndex = function (this: Array<any>, index: number, element: any) {\n \n this.removeElementAtIndex(index)\n this.insertElementAtIndex(index, element)\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// replaceElementAtIndex(index: number, element: T);\n//\n// }\n\n\nif (\"contains\" in Array.prototype == NO) {\n \n (Array.prototype as any).contains = function (this: Array<any>, element: any) {\n return (this.indexOf(element) != -1)\n }\n \n}\n\nif (\"containsAny\" in Array.prototype == NO) {\n \n (Array.prototype as any).containsAny = function (this: Array<any>, elements: any[]) {\n return this.anyMatch(element => elements.contains(element))\n }\n \n}\n\n\n// interface Array<T> {\n//\n// contains(element: T): boolean;\n//\n// containsAny(element: T[]): boolean;\n//\n// }\n\n\nif (\"anyMatch\" in Array.prototype == NO) {\n \n (Array.prototype as any).anyMatch = function (\n this: Array<any>,\n functionToCall: (value: any, index: number, array: any[]) => boolean\n ) {\n // @ts-ignore\n return (this.findIndex(functionToCall) > -1)\n }\n \n}\n\nif (\"noneMatch\" in Array.prototype == NO) {\n \n (Array.prototype as any).noneMatch = function (\n this: Array<any>,\n functionToCall: (value: any, index: number, array: any[]) => boolean\n ) {\n // @ts-ignore\n return (this.findIndex(functionToCall) == -1)\n }\n \n}\n\nif (\"allMatch\" in Array.prototype == NO) {\n \n (Array.prototype as any).allMatch = function (\n this: Array<any>,\n functionToCall: (value: any, index: number, array: any[]) => boolean\n ) {\n \n function reversedFunction(value: any, index: number, array: any[]) {\n return !functionToCall(value, index, array)\n }\n \n // @ts-ignore\n return (this.findIndex(reversedFunction) == -1)\n \n }\n \n}\n\nif (\"findAsyncSequential\" in Array.prototype == NO) {\n \n (Array.prototype as any).findAsyncSequential = function (\n this: Array<any>,\n functionToCall: (value: any) => Promise<boolean>\n ) {\n \n // https://stackoverflow.com/questions/55601062/using-an-async-function-in-array-find\n async function findAsyncSequential<T>(\n array: T[],\n predicate: (t: T) => Promise<boolean>\n ): Promise<T | undefined> {\n for (const t of array) {\n if (await predicate(t)) {\n return t\n }\n }\n return undefined\n }\n \n return findAsyncSequential(this, functionToCall)\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// anyMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n//\n// noneMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n//\n// allMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n//\n// }\n\n\nif (\"groupedBy\" in Array.prototype == NO) {\n \n Array.prototype.groupedBy = function (this: Array<any>, funcProp) {\n return this.reduce(function (acc, val) {\n (acc[funcProp(val)] = acc[funcProp(val)] || []).push(val)\n return acc\n }, {})\n }\n \n}\n\n\n// interface Array<T> {\n//\n// groupedBy(keyFunction: (item: T) => any): { [key: string]: Array<T> };\n//\n// }\n\n\nif (\"firstElement\" in Array.prototype == NO) {\n Object.defineProperty(Array.prototype, \"firstElement\", {\n get: function firstElement(this: Array<any>) {\n return this[0]\n },\n set: function (this: Array<any>, element: any) {\n if (this.length == 0) {\n this.push(element)\n return\n }\n this[0] = element\n }\n })\n}\n\nif (\"lastElement\" in Array.prototype == NO) {\n Object.defineProperty(Array.prototype, \"lastElement\", {\n get: function lastElement(this: Array<any>) {\n return this[this.length - 1]\n },\n set: function (this: Array<any>, element: any) {\n if (this.length == 0) {\n this.push(element)\n return\n }\n this[this.length - 1] = element\n }\n })\n}\n\nif (\"everyElement\" in Array.prototype == NO) {\n \n Object.defineProperty(Array.prototype, \"everyElement\", {\n \n get: function everyElement(this: Array<any>) {\n \n const valueKeys: string[] = []\n \n const targetFunction = (objects: any) => {\n \n return this.map((element) => {\n \n const thisObject = UIObject.valueForKeyPath(\n valueKeys.arrayByTrimmingToLengthIfLonger(valueKeys.length - 1).join(\".\"),\n element\n ) || element\n \n const elementFunction = (UIObject.valueForKeyPath(valueKeys.join(\".\"), element) as Function).bind(\n thisObject,\n objects\n )\n \n return elementFunction()\n \n })\n \n }\n \n const result: any = new Proxy(\n targetFunction,\n {\n \n get: (target, key: string, _receiver) => {\n \n if (key == \"UI_elementValues\") {\n return this.map(element => UIObject.valueForKeyPath(\n valueKeys.join(\".\"),\n element\n ))\n }\n \n valueKeys.push(key)\n \n return result\n \n },\n set: (target, key: string, value, _receiver) => {\n \n valueKeys.push(key)\n this.forEach(element => UIObject.setValueForKeyPath(valueKeys.join(\".\"), value, element, YES))\n return true\n \n }\n \n }\n )\n \n return result\n \n },\n set: function (this: Array<any>, element: any) {\n for (let i = 0; i < this.length; ++i) {\n this[i] = element\n }\n }\n \n })\n \n}\n\n\nexport type UIEveryElementItem<T> = {\n \n [P in keyof T]: UIEveryElementItem<T[P]>\n \n} & {\n \n UI_elementValues?: T[];\n \n} & T\n\n// interface Array<T> {\n//\n// firstElement: T;\n// lastElement: T;\n//\n// everyElement: UIEveryElementItem<T>;\n//\n// }\n\n\nif (\"copy\" in Array.prototype == NO) {\n \n (Array.prototype as any).copy = function (this: Array<any>) {\n return this.slice(0)\n }\n \n}\n\n\n// interface Array<T> {\n//\n// copy(): Array<T>;\n//\n// }\n\n\nif (\"arrayByRepeating\" in Array.prototype == NO) {\n \n (Array.prototype as any).arrayByRepeating = function (this: Array<any>, numberOfRepetitions: number) {\n const result: any[] = []\n for (let i = 0; i < numberOfRepetitions; i++) {\n this.forEach(element => result.push(element))\n }\n return result\n }\n \n}\n\n\n// interface Array<T> {\n//\n// arrayByRepeating(numberOfRepetitions: number): Array<T>;\n//\n// }\n\n\nif (\"arrayByTrimmingToLengthIfLonger\" in Array.prototype == NO) {\n (Array.prototype as any).arrayByTrimmingToLengthIfLonger = function (this: Array<any>, maxLength: number) {\n const result = []\n for (let i = 0; i < maxLength && i < this.length; i++) {\n result.push(this[i])\n }\n return result\n }\n}\n\n\n// interface Array<T> {\n//\n// arrayByTrimmingToLengthIfLonger(maxLength: number): Array<T>;\n//\n// }\n\n\nif (\"summedValue\" in Array.prototype == NO) {\n \n Object.defineProperty(Array.prototype, \"summedValue\", {\n get: function summedValue(this: Array<any>) {\n return this.reduce(function (a, b) {\n return a + b\n }, 0)\n }\n })\n \n}\n\n\n// interface Array<T> {\n//\n// readonly summedValue: T;\n//\n// max(): number;\n// min(): number;\n//\n//\n// }\n\nArray.prototype.max = function () {\n return Math.max.apply(null, this)\n}\n\nArray.prototype.min = function () {\n return Math.min.apply(null, this)\n}\n\n\n// interface Array<T> {\n//\n// isEqualToArray(array: Array<T>, keyPath?: string): boolean;\n//\n// }\n\n\nif (\"isEqualToArray\" in Array.prototype == NO) {\n \n // attach the .equals method to Array's prototype to call it on any array\n Array.prototype.isEqualToArray = function (array: any[], keyPath?: string) {\n \n // if the other array is a falsy value, return\n if (!array) {\n return false\n }\n \n // compare lengths - can save a lot of time\n if (this.length != array.length) {\n return false\n }\n \n var i = 0\n const l = this.length\n for (; i < l; i++) {\n \n // Check if we have nested arrays\n if (this[i] instanceof Array && array[i] instanceof Array && !keyPath) {\n \n // recurse into the nested arrays\n if (!this[i].isEqualToArray(array[i])) {\n return false\n }\n \n }\n else if (keyPath && UIObject.valueForKeyPath(keyPath, this[i]) != UIObject.valueForKeyPath(\n keyPath,\n array[i]\n )) {\n \n return false\n \n }\n else if (this[i] != array[i]) {\n \n // Warning - two different object instances will never be equal: {x:20} != {x:20}\n return false\n \n }\n \n }\n \n return true\n \n }\n \n // Hide method from for-in loops\n Object.defineProperty(Array.prototype, \"isEqualToArray\", { enumerable: false })\n \n}\n\n\nif (\"forEach\" in Object.prototype == NO) {\n \n (Object.prototype as any).forEach = function (\n this: Record<string, any>,\n callbackFunction: (\n value: any,\n key: string,\n stopLooping: Function\n ) => void\n ) {\n const keys = Object.keys(this)\n let shouldStopLooping = NO\n \n function stopLooping() {\n shouldStopLooping = YES\n }\n \n keys.anyMatch(key => {\n callbackFunction(this[key], key, stopLooping)\n return shouldStopLooping\n })\n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"forEach\", { enumerable: false })\n \n}\n\n\n// interface Object {\n//\n// forEach(callbackFunction: (value: any, key: string) => void): void;\n//\n// }\n\n\nif (\"allValues\" in Object.prototype == NO) {\n Object.defineProperty(Object.prototype, \"allValues\", {\n get: function (this: Object) {\n const values: any[] = []\n this.forEach((value: any) => {\n values.push(value)\n })\n return values\n }\n })\n}\n\n\n// interface Object {\n//\n// readonly allValues: Array<any>;\n//\n// }\n\n\nif (\"allKeys\" in Object.prototype == NO) {\n Object.defineProperty(Object.prototype, \"allKeys\", {\n get: function (this: Object) {\n return Object.keys(this)\n }\n })\n}\n\n\n// interface Object {\n//\n// readonly allKeys: string[];\n//\n// }\n\n\nif (\"objectByCopyingValuesRecursivelyFromObject\" in Object.prototype == NO) {\n \n (Object.prototype as any).objectByCopyingValuesRecursivelyFromObject = function (this: Object, object: any) {\n \n \n function isAnObject(item: any) {\n return (item && typeof item === \"object\" && !Array.isArray(item))\n }\n \n function mergeRecursively(target: any, source: any) {\n \n const output = Object.assign({}, target)\n \n if (isAnObject(target) && isAnObject(source)) {\n \n Object.keys(source).forEach(function (key) {\n \n if (isAnObject(source[key])) {\n \n // if (!(key in target)) {\n \n // Object.assign(output, { [key]: source[key] });\n \n // }\n // else {\n \n output[key] = mergeRecursively(target[key], source[key])\n \n //}\n \n }\n else {\n \n Object.assign(output, { [key]: source[key] })\n \n }\n \n })\n \n }\n \n return output\n \n }\n \n return mergeRecursively(this, object)\n \n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"objectByCopyingValuesRecursivelyFromObject\", { enumerable: false })\n \n}\n\n\nif (\"asValueObject\" in Object.prototype == NO) {\n \n (Object.prototype as any).asValueObject = function () {\n \n return new UICoreExtensionValueObject(this)\n \n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"asValueObject\", { enumerable: false })\n \n}\n\n\n// interface Object {\n//\n// objectByCopyingValuesRecursivelyFromObject<T>(object: T): this & T;\n//\n// asValueObject(): this;\n//\n// }\n\n// export type Unpacked<T> =\n// T extends (infer U)[]\n// ? U\n// : T extends (...args: any[]) => infer U\n// ? U\n// : T extends Promise<infer U>\n// ? U\n// : T\n//\n// export type UnpackedObject<T> = {\n// [P in keyof T]: Unpacked<T[P]>\n// }\n\n// export function promisedProperties<ObjectType extends Record<string, any>>(object: ObjectType): UnpackedObject<ObjectType> {\n//\n// let promisedProperties: any[] = []\n// const objectKeys = Object.keys(object)\n//\n// objectKeys.forEach((key) => promisedProperties.push(object[key]))\n//\n// // @ts-ignore\n// return Promise.all(promisedProperties)\n// .then((resolvedValues) => {\n// return resolvedValues.reduce((resolvedObject, property, index) => {\n// resolvedObject[objectKeys[index]] = property\n// return resolvedObject\n// }, object)\n// })\n//\n// }\n\n// if (\"promisedProperties\" in Object.prototype == NO) {\n//\n// (Object.prototype as any).promisedProperties = function () {\n//\n// const result = promisedProperties(this);\n//\n// return result\n//\n// }\n//\n// // Hide method from for-in loops\n// Object.defineProperty(Object.prototype, \"promisedProperties\", { enumerable: false });\n//\n// }\n//\n//\n// interface Object {\n//\n// readonly promisedProperties: UnpackedObject<this>;\n//\n// }\n\n\nif (\"contains\" in String.prototype == NO) {\n \n (String.prototype as any).contains = function (this: String, string: string) {\n return (this.indexOf(string) != -1)\n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"contains\", { enumerable: false })\n \n}\n\n\n// interface String {\n//\n// contains(string): boolean;\n//\n// }\n\n\nif (\"capitalizedString\" in String.prototype == NO) {\n Object.defineProperty(Object.prototype, \"capitalizedString\", {\n get: function (this: String) {\n return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase()\n }\n })\n}\n\n\n// interface String {\n//\n// readonly capitalizedString: string;\n//\n// }\n\n\nif (\"numericalValue\" in String.prototype == NO) {\n Object.defineProperty(String.prototype, \"numericalValue\", {\n get: function numericalValue(this: string) {\n return Number(this)\n }\n })\n}\n\nif (\"integerValue\" in String.prototype == NO) {\n Object.defineProperty(String.prototype, \"integerValue\", {\n get: function integerValue(this: string) {\n return Number(this).integerValue\n }\n })\n}\n\n\n// interface String {\n//\n// readonly numericalValue: number;\n//\n// }\n\n\nif (\"isAString\" in String.prototype == NO) {\n \n (String.prototype as any).isAString = YES\n \n}\n\n\n// interface String {\n//\n// isAString: boolean;\n//\n// }\n\n\nif (\"isANumber\" in Number.prototype == NO) {\n \n (Number.prototype as any).isANumber = YES\n \n}\n\n\n// interface Number {\n//\n// isANumber: boolean;\n//\n// }\n\n\nif (\"integerValue\" in Number.prototype == NO) {\n Object.defineProperty(Number.prototype, \"integerValue\", {\n get: function (this: number) {\n return parseInt(\"\" + (Math.round(this) + 0.5))\n }\n })\n}\n\n\n// interface Number {\n//\n// readonly integerValue: number;\n//\n// }\n\n\nif (\"integerValue\" in Boolean.prototype == NO) {\n \n Object.defineProperty(Boolean.prototype, \"integerValue\", {\n get: function (this: boolean) {\n if (this == true) {\n return 1\n }\n return 0\n }\n })\n \n}\n\n\n// interface Boolean {\n//\n// readonly integerValue: number;\n//\n// }\n\n\nif (\"dateString\" in Date.prototype == NO) {\n \n Object.defineProperty(Date.prototype, \"dateString\", {\n get: function dateString(this: Date) {\n return (\"0\" + this.getDate()).slice(-2) + \"-\" + (\"0\" + (this.getMonth() + 1)).slice(-2) + \"-\" +\n this.getFullYear() + \" \" + (\"0\" + this.getHours()).slice(-2) + \":\" +\n (\"0\" + this.getMinutes()).slice(-2)\n }\n })\n \n \n}\n\n\n// interface Date {\n//\n// readonly dateString: string;\n//\n// }\n\n\n\n\n\n\n\n\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { UICoreExtensionValueObject } from \"./UICoreExtensionValueObject\"\nimport { UIObject } from \"./UIObject\"\n\n\ndeclare global {\n \n \n interface Array<T> {\n \n removeElementAtIndex(index: number): void;\n \n removeElement(element: T): void;\n \n insertElementAtIndex(index: number, element: T): void;\n \n replaceElementAtIndex(index: number, element: T): void;\n \n \n contains(element: T): boolean;\n \n findAsyncSequential(functionToCall: (value: any) => Promise<boolean>): Promise<any>;\n \n groupedBy(keyFunction: (item: T) => any): { [key: string]: Array<T> } & Object;\n \n copy(): Array<T>;\n \n arrayByRepeating(numberOfRepetitions: number): Array<T>;\n \n arrayByTrimmingToLengthIfLonger(maxLength: number): Array<T>;\n \n anyMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n \n noneMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n \n allMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n \n firstElement: T;\n lastElement: T;\n readonly summedValue: T;\n \n everyElement: UIEveryElementItem<T>;\n \n max(): number;\n \n min(): number;\n \n isEqualToArray(array: Array<T>, keyPath?: string): boolean;\n \n }\n \n \n interface String {\n \n contains(string: string): boolean;\n \n readonly numericalValue: number;\n readonly integerValue: number;\n isAString: boolean;\n \n }\n \n \n interface Number {\n \n isANumber: boolean;\n \n readonly integerValue: number;\n \n }\n \n \n interface Date {\n \n readonly dateString: string;\n \n }\n \n \n interface Object {\n \n forEach(callbackFunction: (value: any, key: string, stopLooping: () => void) => void): void;\n \n readonly allValues: Array<any>;\n readonly allKeys: string[];\n \n }\n \n}\n\nexport {}\n\nconst YES = true\nconst NO = false\n\nif (\"removeElementAtIndex\" in Array.prototype == NO) {\n \n (Array.prototype as any).removeElementAtIndex = function (this: Array<any>, index: number) {\n \n // @ts-ignore\n if (index >= 0 && index < this.length) {\n this.splice(index, 1)\n }\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// removeElementAtIndex(index: number);\n//\n// }\n\n\nif (\"removeElement\" in Array.prototype == NO) {\n \n (Array.prototype as any).removeElement = function (this: Array<any>, element: any) {\n this.removeElementAtIndex(this.indexOf(element))\n }\n \n}\n\n\n// interface Array<T> {\n//\n// removeElement(element: T);\n//\n// }\n\n\nif (\"insertElementAtIndex\" in Array.prototype == NO) {\n \n (Array.prototype as any).insertElementAtIndex = function (this: Array<any>, index: number, element: any) {\n \n if (index >= 0 && index <= this.length) {\n this.splice(index, 0, element)\n }\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// insertElementAtIndex(index: number, element: T);\n//\n// }\n\n\nif (\"replaceElementAtIndex\" in Array.prototype == NO) {\n \n (Array.prototype as any).replaceElementAtIndex = function (this: Array<any>, index: number, element: any) {\n \n this.removeElementAtIndex(index)\n this.insertElementAtIndex(index, element)\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// replaceElementAtIndex(index: number, element: T);\n//\n// }\n\n\nif (\"contains\" in Array.prototype == NO) {\n \n (Array.prototype as any).contains = function (this: Array<any>, element: any) {\n return (this.indexOf(element) != -1)\n }\n \n}\n\nif (\"containsAny\" in Array.prototype == NO) {\n \n (Array.prototype as any).containsAny = function (this: Array<any>, elements: any[]) {\n return this.anyMatch(element => elements.contains(element))\n }\n \n}\n\n\n// interface Array<T> {\n//\n// contains(element: T): boolean;\n//\n// containsAny(element: T[]): boolean;\n//\n// }\n\n\nif (\"anyMatch\" in Array.prototype == NO) {\n \n (Array.prototype as any).anyMatch = function (\n this: Array<any>,\n functionToCall: (value: any, index: number, array: any[]) => boolean\n ) {\n // @ts-ignore\n return (this.findIndex(functionToCall) > -1)\n }\n \n}\n\nif (\"noneMatch\" in Array.prototype == NO) {\n \n (Array.prototype as any).noneMatch = function (\n this: Array<any>,\n functionToCall: (value: any, index: number, array: any[]) => boolean\n ) {\n // @ts-ignore\n return (this.findIndex(functionToCall) == -1)\n }\n \n}\n\nif (\"allMatch\" in Array.prototype == NO) {\n \n (Array.prototype as any).allMatch = function (\n this: Array<any>,\n functionToCall: (value: any, index: number, array: any[]) => boolean\n ) {\n \n function reversedFunction(value: any, index: number, array: any[]) {\n return !functionToCall(value, index, array)\n }\n \n // @ts-ignore\n return (this.findIndex(reversedFunction) == -1)\n \n }\n \n}\n\nif (\"findAsyncSequential\" in Array.prototype == NO) {\n \n (Array.prototype as any).findAsyncSequential = function (\n this: Array<any>,\n functionToCall: (value: any) => Promise<boolean>\n ) {\n \n // https://stackoverflow.com/questions/55601062/using-an-async-function-in-array-find\n async function findAsyncSequential<T>(\n array: T[],\n predicate: (t: T) => Promise<boolean>\n ): Promise<T | undefined> {\n for (const t of array) {\n if (await predicate(t)) {\n return t\n }\n }\n return undefined\n }\n \n return findAsyncSequential(this, functionToCall)\n \n }\n \n}\n\n\n// interface Array<T> {\n//\n// anyMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n//\n// noneMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n//\n// allMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean\n//\n// }\n\n\nif (\"groupedBy\" in Array.prototype == NO) {\n \n Array.prototype.groupedBy = function (this: Array<any>, funcProp) {\n return this.reduce(function (acc, val) {\n (acc[funcProp(val)] = acc[funcProp(val)] || []).push(val)\n return acc\n }, {})\n }\n \n}\n\n\n// interface Array<T> {\n//\n// groupedBy(keyFunction: (item: T) => any): { [key: string]: Array<T> };\n//\n// }\n\n\nif (\"firstElement\" in Array.prototype == NO) {\n Object.defineProperty(Array.prototype, \"firstElement\", {\n get: function firstElement(this: Array<any>) {\n return this[0]\n },\n set: function (this: Array<any>, element: any) {\n if (this.length == 0) {\n this.push(element)\n return\n }\n this[0] = element\n }\n })\n}\n\nif (\"lastElement\" in Array.prototype == NO) {\n Object.defineProperty(Array.prototype, \"lastElement\", {\n get: function lastElement(this: Array<any>) {\n return this[this.length - 1]\n },\n set: function (this: Array<any>, element: any) {\n if (this.length == 0) {\n this.push(element)\n return\n }\n this[this.length - 1] = element\n }\n })\n}\n\nif (\"everyElement\" in Array.prototype == NO) {\n \n Object.defineProperty(Array.prototype, \"everyElement\", {\n \n get: function everyElement(this: Array<any>) {\n \n const valueKeys: string[] = []\n \n const targetFunction = (objects: any) => {\n \n return this.map((element) => {\n \n const thisObject = UIObject.valueForKeyPath(\n valueKeys.arrayByTrimmingToLengthIfLonger(valueKeys.length - 1).join(\".\"),\n element\n ) || element\n \n const elementFunction = (UIObject.valueForKeyPath(valueKeys.join(\".\"), element) as Function).bind(\n thisObject,\n objects\n )\n \n return elementFunction()\n \n })\n \n }\n \n const result: any = new Proxy(\n targetFunction,\n {\n \n get: (target, key: string, _receiver) => {\n \n if (key == \"UI_elementValues\") {\n return this.map(element => UIObject.valueForKeyPath(\n valueKeys.join(\".\"),\n element\n ))\n }\n \n valueKeys.push(key)\n \n return result\n \n },\n set: (target, key: string, value, _receiver) => {\n \n valueKeys.push(key)\n this.forEach(element => UIObject.setValueForKeyPath(valueKeys.join(\".\"), value, element, YES))\n return true\n \n }\n \n }\n )\n \n return result\n \n },\n set: function (this: Array<any>, element: any) {\n for (let i = 0; i < this.length; ++i) {\n this[i] = element\n }\n }\n \n })\n \n}\n\n\nexport type UIEveryElementItem<T> = {\n \n [P in keyof T]: UIEveryElementItem<T[P]>\n \n} & {\n \n UI_elementValues?: T[];\n \n} & T\n\n// interface Array<T> {\n//\n// firstElement: T;\n// lastElement: T;\n//\n// everyElement: UIEveryElementItem<T>;\n//\n// }\n\n\nif (\"copy\" in Array.prototype == NO) {\n \n (Array.prototype as any).copy = function (this: Array<any>) {\n return this.slice(0)\n }\n \n}\n\n\n// interface Array<T> {\n//\n// copy(): Array<T>;\n//\n// }\n\n\nif (\"arrayByRepeating\" in Array.prototype == NO) {\n \n (Array.prototype as any).arrayByRepeating = function (this: Array<any>, numberOfRepetitions: number) {\n const result: any[] = []\n for (let i = 0; i < numberOfRepetitions; i++) {\n this.forEach(element => result.push(element))\n }\n return result\n }\n \n}\n\n\n// interface Array<T> {\n//\n// arrayByRepeating(numberOfRepetitions: number): Array<T>;\n//\n// }\n\n\nif (\"arrayByTrimmingToLengthIfLonger\" in Array.prototype == NO) {\n (Array.prototype as any).arrayByTrimmingToLengthIfLonger = function (this: Array<any>, maxLength: number) {\n const result = []\n for (let i = 0; i < maxLength && i < this.length; i++) {\n result.push(this[i])\n }\n return result\n }\n}\n\n\n// interface Array<T> {\n//\n// arrayByTrimmingToLengthIfLonger(maxLength: number): Array<T>;\n//\n// }\n\n\nif (\"summedValue\" in Array.prototype == NO) {\n \n Object.defineProperty(Array.prototype, \"summedValue\", {\n get: function summedValue(this: Array<any>) {\n return this.reduce(function (a, b) {\n return a + b\n }, 0)\n }\n })\n \n}\n\n\n// interface Array<T> {\n//\n// readonly summedValue: T;\n//\n// max(): number;\n// min(): number;\n//\n//\n// }\n\nArray.prototype.max = function () {\n return Math.max.apply(null, this)\n}\n\nArray.prototype.min = function () {\n return Math.min.apply(null, this)\n}\n\n\n// interface Array<T> {\n//\n// isEqualToArray(array: Array<T>, keyPath?: string): boolean;\n//\n// }\n\n\nif (\"isEqualToArray\" in Array.prototype == NO) {\n \n // attach the .equals method to Array's prototype to call it on any array\n Array.prototype.isEqualToArray = function (array: any[], keyPath?: string) {\n \n // if the other array is a falsy value, return\n if (!array) {\n return false\n }\n \n // compare lengths - can save a lot of time\n if (this.length != array.length) {\n return false\n }\n \n var i = 0\n const l = this.length\n for (; i < l; i++) {\n \n // Check if we have nested arrays\n if (this[i] instanceof Array && array[i] instanceof Array && !keyPath) {\n \n // recurse into the nested arrays\n if (!this[i].isEqualToArray(array[i])) {\n return false\n }\n \n }\n else if (keyPath && UIObject.valueForKeyPath(keyPath, this[i]) != UIObject.valueForKeyPath(\n keyPath,\n array[i]\n )) {\n \n return false\n \n }\n else if (this[i] != array[i]) {\n \n // Warning - two different object instances will never be equal: {x:20} != {x:20}\n return false\n \n }\n \n }\n \n return true\n \n }\n \n // Hide method from for-in loops\n Object.defineProperty(Array.prototype, \"isEqualToArray\", { enumerable: false })\n \n}\n\n\nif (\"forEach\" in Object.prototype == NO) {\n \n (Object.prototype as any).forEach = function (\n this: Record<string, any>,\n callbackFunction: (\n value: any,\n key: string,\n stopLooping: Function\n ) => void\n ) {\n const keys = Object.keys(this)\n let shouldStopLooping = NO\n \n function stopLooping() {\n shouldStopLooping = YES\n }\n \n keys.anyMatch(key => {\n callbackFunction(this[key], key, stopLooping)\n return shouldStopLooping\n })\n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"forEach\", { enumerable: false })\n \n}\n\n\n// interface Object {\n//\n// forEach(callbackFunction: (value: any, key: string) => void): void;\n//\n// }\n\n\nif (\"allValues\" in Object.prototype == NO) {\n Object.defineProperty(Object.prototype, \"allValues\", {\n get: function (this: Object) {\n const values: any[] = []\n this.forEach((value: any) => {\n values.push(value)\n })\n return values\n },\n enumerable: NO\n })\n}\n\n\n// interface Object {\n//\n// readonly allValues: Array<any>;\n//\n// }\n\n\nif (\"allKeys\" in Object.prototype == NO) {\n Object.defineProperty(Object.prototype, \"allKeys\", {\n get: function (this: Object) {\n return Object.keys(this)\n },\n enumerable: NO\n })\n}\n\n\n// interface Object {\n//\n// readonly allKeys: string[];\n//\n// }\n\n\nif (\"objectByCopyingValuesRecursivelyFromObject\" in Object.prototype == NO) {\n \n (Object.prototype as any).objectByCopyingValuesRecursivelyFromObject = function (this: Object, object: any) {\n \n \n function isAnObject(item: any) {\n return (item && typeof item === \"object\" && !Array.isArray(item))\n }\n \n function mergeRecursively(target: any, source: any) {\n \n const output = Object.assign({}, target)\n \n if (isAnObject(target) && isAnObject(source)) {\n \n Object.keys(source).forEach(function (key) {\n \n if (isAnObject(source[key])) {\n \n // if (!(key in target)) {\n \n // Object.assign(output, { [key]: source[key] });\n \n // }\n // else {\n \n output[key] = mergeRecursively(target[key], source[key])\n \n //}\n \n }\n else {\n \n Object.assign(output, { [key]: source[key] })\n \n }\n \n })\n \n }\n \n return output\n \n }\n \n return mergeRecursively(this, object)\n \n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"objectByCopyingValuesRecursivelyFromObject\", { enumerable: false })\n \n}\n\n\nif (\"asValueObject\" in Object.prototype == NO) {\n \n (Object.prototype as any).asValueObject = function () {\n \n return new UICoreExtensionValueObject(this)\n \n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"asValueObject\", { enumerable: false })\n \n}\n\n\n// interface Object {\n//\n// objectByCopyingValuesRecursivelyFromObject<T>(object: T): this & T;\n//\n// asValueObject(): this;\n//\n// }\n\n// export type Unpacked<T> =\n// T extends (infer U)[]\n// ? U\n// : T extends (...args: any[]) => infer U\n// ? U\n// : T extends Promise<infer U>\n// ? U\n// : T\n//\n// export type UnpackedObject<T> = {\n// [P in keyof T]: Unpacked<T[P]>\n// }\n\n// export function promisedProperties<ObjectType extends Record<string, any>>(object: ObjectType): UnpackedObject<ObjectType> {\n//\n// let promisedProperties: any[] = []\n// const objectKeys = Object.keys(object)\n//\n// objectKeys.forEach((key) => promisedProperties.push(object[key]))\n//\n// // @ts-ignore\n// return Promise.all(promisedProperties)\n// .then((resolvedValues) => {\n// return resolvedValues.reduce((resolvedObject, property, index) => {\n// resolvedObject[objectKeys[index]] = property\n// return resolvedObject\n// }, object)\n// })\n//\n// }\n\n// if (\"promisedProperties\" in Object.prototype == NO) {\n//\n// (Object.prototype as any).promisedProperties = function () {\n//\n// const result = promisedProperties(this);\n//\n// return result\n//\n// }\n//\n// // Hide method from for-in loops\n// Object.defineProperty(Object.prototype, \"promisedProperties\", { enumerable: false });\n//\n// }\n//\n//\n// interface Object {\n//\n// readonly promisedProperties: UnpackedObject<this>;\n//\n// }\n\n\nif (\"contains\" in String.prototype == NO) {\n \n (String.prototype as any).contains = function (this: String, string: string) {\n return (this.indexOf(string) != -1)\n }\n \n // Hide method from for-in loops\n Object.defineProperty(Object.prototype, \"contains\", { enumerable: false })\n \n}\n\n\n// interface String {\n//\n// contains(string): boolean;\n//\n// }\n\n\nif (\"capitalizedString\" in String.prototype == NO) {\n Object.defineProperty(Object.prototype, \"capitalizedString\", {\n get: function (this: String) {\n return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase()\n },\n enumerable: NO\n })\n}\n\n\n// interface String {\n//\n// readonly capitalizedString: string;\n//\n// }\n\n\nif (\"numericalValue\" in String.prototype == NO) {\n Object.defineProperty(String.prototype, \"numericalValue\", {\n get: function numericalValue(this: string) {\n return Number(this)\n }\n })\n}\n\nif (\"integerValue\" in String.prototype == NO) {\n Object.defineProperty(String.prototype, \"integerValue\", {\n get: function integerValue(this: string) {\n return Number(this).integerValue\n }\n })\n}\n\n\n// interface String {\n//\n// readonly numericalValue: number;\n//\n// }\n\n\nif (\"isAString\" in String.prototype == NO) {\n \n (String.prototype as any).isAString = YES\n \n}\n\n\n// interface String {\n//\n// isAString: boolean;\n//\n// }\n\n\nif (\"isANumber\" in Number.prototype == NO) {\n \n (Number.prototype as any).isANumber = YES\n \n}\n\n\n// interface Number {\n//\n// isANumber: boolean;\n//\n// }\n\n\nif (\"integerValue\" in Number.prototype == NO) {\n Object.defineProperty(Number.prototype, \"integerValue\", {\n get: function (this: number) {\n return parseInt(\"\" + (Math.round(this) + 0.5))\n }\n })\n}\n\n\n// interface Number {\n//\n// readonly integerValue: number;\n//\n// }\n\n\nif (\"integerValue\" in Boolean.prototype == NO) {\n \n Object.defineProperty(Boolean.prototype, \"integerValue\", {\n get: function (this: boolean) {\n if (this == true) {\n return 1\n }\n return 0\n }\n })\n \n}\n\n\n// interface Boolean {\n//\n// readonly integerValue: number;\n//\n// }\n\n\nif (\"dateString\" in Date.prototype == NO) {\n \n Object.defineProperty(Date.prototype, \"dateString\", {\n get: function dateString(this: Date) {\n return (\"0\" + this.getDate()).slice(-2) + \"-\" + (\"0\" + (this.getMonth() + 1)).slice(-2) + \"-\" +\n this.getFullYear() + \" \" + (\"0\" + this.getHours()).slice(-2) + \":\" +\n (\"0\" + this.getMinutes()).slice(-2)\n }\n })\n \n \n}\n\n\n// interface Date {\n//\n// readonly dateString: string;\n//\n// }\n\n\n\n\n\n\n\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ import { UIPoint } from "./UIPoint";
|
|
|
3
3
|
import { UIRectangle } from "./UIRectangle";
|
|
4
4
|
import { UIView, UIViewBroadcastEvent } from "./UIView";
|
|
5
5
|
interface UITableViewRowView extends UIView {
|
|
6
|
-
_UITableViewRowIndex
|
|
6
|
+
_UITableViewRowIndex?: number;
|
|
7
7
|
}
|
|
8
8
|
export interface UITableViewReusableViewsContainerObject {
|
|
9
9
|
[key: string]: UIView[];
|
|
@@ -197,7 +197,7 @@ class UITableView extends import_UINativeScrollView.UINativeScrollView {
|
|
|
197
197
|
const removedViews = [];
|
|
198
198
|
const visibleRows = [];
|
|
199
199
|
this._visibleRows.forEach((row) => {
|
|
200
|
-
if (row._UITableViewRowIndex < minIndex || row._UITableViewRowIndex > maxIndex) {
|
|
200
|
+
if ((0, import_UIObject.IS_DEFINED)(row._UITableViewRowIndex) && (row._UITableViewRowIndex < minIndex || row._UITableViewRowIndex > maxIndex)) {
|
|
201
201
|
this._persistedData[row._UITableViewRowIndex] = this.persistenceDataItemForRowWithIndex(
|
|
202
202
|
row._UITableViewRowIndex,
|
|
203
203
|
row
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../scripts/UITableView.ts"],
|
|
4
|
-
"sourcesContent": ["import { UIButton } from \"./UIButton\"\nimport { UINativeScrollView } from \"./UINativeScrollView\"\nimport { IS, nil, NO, YES } from \"./UIObject\"\nimport { UIPoint } from \"./UIPoint\"\nimport { UIRectangle } from \"./UIRectangle\"\nimport { UIView, UIViewBroadcastEvent } from \"./UIView\"\n\n\ninterface UITableViewRowView extends UIView {\n \n _UITableViewRowIndex: number;\n \n}\n\n\nexport interface UITableViewReusableViewsContainerObject {\n \n [key: string]: UIView[];\n \n}\n\n\nexport interface UITableViewReusableViewPositionObject {\n \n bottomY: number;\n topY: number;\n \n isValid: boolean;\n \n}\n\n\nexport class UITableView extends UINativeScrollView {\n \n \n allRowsHaveEqualHeight: boolean = NO\n _visibleRows: UITableViewRowView[] = []\n _firstLayoutVisibleRows: UITableViewRowView[] = []\n \n _rowPositions: UITableViewReusableViewPositionObject[] = []\n \n _highestValidRowPositionIndex: number = 0\n \n _reusableViews: UITableViewReusableViewsContainerObject = {}\n \n _removedReusableViews: UITableViewReusableViewsContainerObject = {}\n \n _fullHeightView: UIView\n \n _rowIDIndex: number = 0\n \n reloadsOnLanguageChange = YES\n \n sidePadding = 0\n \n _persistedData: any[] = []\n _needsDrawingOfVisibleRowsBeforeLayout = NO\n _isDrawVisibleRowsScheduled = NO\n _shouldAnimateNextLayout?: boolean\n \n override animationDuration = 0.25\n \n \n constructor(elementID?: string) {\n \n super(elementID)\n \n this._fullHeightView = new UIView()\n this._fullHeightView.hidden = YES\n this._fullHeightView.userInteractionEnabled = NO\n this.addSubview(this._fullHeightView)\n \n this.scrollsX = NO\n \n }\n \n \n loadData() {\n \n this._persistedData = []\n \n this._calculatePositionsUntilIndex(this.numberOfRows() - 1)\n this._needsDrawingOfVisibleRowsBeforeLayout = YES\n \n this.setNeedsLayout()\n \n }\n \n reloadData() {\n \n this._removeVisibleRows()\n this._removeAllReusableRows()\n \n this._rowPositions = []\n this._highestValidRowPositionIndex = 0\n \n this.loadData()\n \n }\n \n \n highlightChanges(previousData: any[], newData: any[]) {\n \n previousData = previousData.map(dataPoint => JSON.stringify(dataPoint))\n newData = newData.map(dataPoint => JSON.stringify(dataPoint))\n \n const newIndexes: number[] = []\n \n newData.forEach((value, index) => {\n \n if (!previousData.contains(value)) {\n \n newIndexes.push(index)\n \n }\n \n })\n \n newIndexes.forEach(index => {\n \n if (this.isRowWithIndexVisible(index)) {\n this.highlightRowAsNew(this.viewForRowWithIndex(index) as UIView)\n }\n \n })\n \n }\n \n \n highlightRowAsNew(row: UIView) {\n \n \n }\n \n \n invalidateSizeOfRowWithIndex(index: number, animateChange = NO) {\n \n if (this._rowPositions[index]) {\n this._rowPositions[index].isValid = NO\n }\n \n this._highestValidRowPositionIndex = Math.min(this._highestValidRowPositionIndex, index - 1)\n \n // if (index == 0) {\n \n // this._highestValidRowPositionIndex = 0;\n \n // this._rowPositions = [];\n \n // }\n \n this._needsDrawingOfVisibleRowsBeforeLayout = YES\n \n this._shouldAnimateNextLayout = animateChange\n \n }\n \n \n _calculateAllPositions() {\n this._calculatePositionsUntilIndex(this.numberOfRows() - 1)\n }\n \n _calculatePositionsUntilIndex(maxIndex: number) {\n \n var validPositionObject = this._rowPositions[this._highestValidRowPositionIndex]\n if (!IS(validPositionObject)) {\n validPositionObject = {\n bottomY: 0,\n topY: 0,\n isValid: YES\n }\n }\n \n var previousBottomY = validPositionObject.bottomY\n \n if (!this._rowPositions.length) {\n \n this._highestValidRowPositionIndex = -1\n \n }\n \n for (var i = this._highestValidRowPositionIndex + 1; i <= maxIndex; i++) {\n \n var height: number\n \n const rowPositionObject = this._rowPositions[i]\n \n if (IS((rowPositionObject || nil).isValid)) {\n \n height = rowPositionObject.bottomY - rowPositionObject.topY\n \n }\n else {\n \n height = this.heightForRowWithIndex(i)\n \n }\n \n \n const positionObject: UITableViewReusableViewPositionObject = {\n bottomY: previousBottomY + height,\n topY: previousBottomY,\n isValid: YES\n }\n \n if (i < this._rowPositions.length) {\n this._rowPositions[i] = positionObject\n }\n else {\n this._rowPositions.push(positionObject)\n }\n this._highestValidRowPositionIndex = i\n previousBottomY = previousBottomY + height\n \n }\n \n }\n \n \n indexesForVisibleRows(paddingRatio = 0.5): number[] {\n \n const firstVisibleY = this.contentOffset.y - this.bounds.height * paddingRatio\n const lastVisibleY = firstVisibleY + this.bounds.height * (1 + paddingRatio)\n \n const numberOfRows = this.numberOfRows()\n \n if (this.allRowsHaveEqualHeight) {\n \n const rowHeight = this.heightForRowWithIndex(0)\n \n var firstIndex = firstVisibleY / rowHeight\n var lastIndex = lastVisibleY / rowHeight\n \n firstIndex = Math.trunc(firstIndex)\n lastIndex = Math.trunc(lastIndex) + 1\n \n firstIndex = Math.max(firstIndex, 0)\n lastIndex = Math.min(lastIndex, numberOfRows - 1)\n \n var result = []\n for (var i = firstIndex; i < lastIndex + 1; i++) {\n result.push(i)\n }\n return result\n }\n \n var accumulatedHeight = 0\n var result = []\n \n this._calculateAllPositions()\n \n const rowPositions = this._rowPositions\n \n for (var i = 0; i < numberOfRows; i++) {\n \n const height = rowPositions[i].bottomY - rowPositions[i].topY // this.heightForRowWithIndex(i)\n \n accumulatedHeight = accumulatedHeight + height\n if (accumulatedHeight >= firstVisibleY) {\n result.push(i)\n }\n if (accumulatedHeight >= lastVisibleY) {\n break\n }\n \n }\n \n return result\n \n }\n \n \n _removeVisibleRows() {\n \n const visibleRows: UITableViewRowView[] = []\n this._visibleRows.forEach((row: UIView) => {\n \n this._persistedData[row._UITableViewRowIndex as number] = this.persistenceDataItemForRowWithIndex(\n row._UITableViewRowIndex as number,\n row\n )\n row.removeFromSuperview()\n this._removedReusableViews[row._UITableViewReusabilityIdentifier].push(row)\n \n \n })\n this._visibleRows = visibleRows\n \n }\n \n \n _removeAllReusableRows() {\n this._reusableViews.forEach((rows: UIView[]) =>\n rows.forEach((row: UIView) => {\n \n this._persistedData[row._UITableViewRowIndex as number] = this.persistenceDataItemForRowWithIndex(\n row._UITableViewRowIndex as number,\n row\n )\n row.removeFromSuperview()\n \n this._markReusableViewAsUnused(row)\n \n })\n )\n }\n \n \n _markReusableViewAsUnused(row: UIView) {\n if (!this._removedReusableViews[row._UITableViewReusabilityIdentifier].contains(row)) {\n this._removedReusableViews[row._UITableViewReusabilityIdentifier].push(row)\n }\n }\n \n _drawVisibleRows() {\n \n if (!this.isMemberOfViewTree) {\n return\n }\n \n const visibleIndexes = this.indexesForVisibleRows()\n \n const minIndex = visibleIndexes[0]\n const maxIndex = visibleIndexes[visibleIndexes.length - 1]\n \n const removedViews: UITableViewRowView[] = []\n \n const visibleRows: UITableViewRowView[] = []\n this._visibleRows.forEach((row) => {\n if (row._UITableViewRowIndex < minIndex || row._UITableViewRowIndex > maxIndex) {\n \n //row.removeFromSuperview();\n \n this._persistedData[row._UITableViewRowIndex] = this.persistenceDataItemForRowWithIndex(\n row._UITableViewRowIndex,\n row\n )\n \n this._removedReusableViews[row._UITableViewReusabilityIdentifier].push(row)\n \n removedViews.push(row)\n \n }\n else {\n visibleRows.push(row)\n }\n })\n this._visibleRows = visibleRows\n \n visibleIndexes.forEach((rowIndex: number) => {\n \n if (this.isRowWithIndexVisible(rowIndex)) {\n return\n }\n const view: UITableViewRowView = this.viewForRowWithIndex(rowIndex)\n //view._UITableViewRowIndex = rowIndex;\n this._firstLayoutVisibleRows.push(view)\n this._visibleRows.push(view)\n this.addSubview(view)\n \n })\n \n for (let i = 0; i < removedViews.length; i++) {\n \n const view = removedViews[i]\n if (this._visibleRows.indexOf(view) == -1) {\n \n //this._persistedData[view._UITableViewRowIndex] = this.persistenceDataItemForRowWithIndex(view._UITableViewRowIndex, view);\n view.removeFromSuperview()\n \n //this._removedReusableViews[view._UITableViewReusabilityIdentifier].push(view);\n \n }\n \n }\n \n //this.setNeedsLayout();\n \n }\n \n \n visibleRowWithIndex(rowIndex: number | undefined): UIView {\n for (var i = 0; i < this._visibleRows.length; i++) {\n const row = this._visibleRows[i]\n if (row._UITableViewRowIndex == rowIndex) {\n return row\n }\n }\n return nil\n }\n \n \n isRowWithIndexVisible(rowIndex: number) {\n return IS(this.visibleRowWithIndex(rowIndex))\n }\n \n \n reusableViewForIdentifier(identifier: string, rowIndex: number): UITableViewRowView {\n \n if (!this._removedReusableViews[identifier]) {\n this._removedReusableViews[identifier] = []\n }\n \n if (this._removedReusableViews[identifier] && this._removedReusableViews[identifier].length) {\n \n const view = this._removedReusableViews[identifier].pop() as UITableViewRowView\n view._UITableViewRowIndex = rowIndex\n Object.assign(view, this._persistedData[rowIndex] || this.defaultRowPersistenceDataItem())\n return view\n \n }\n \n if (!this._reusableViews[identifier]) {\n this._reusableViews[identifier] = []\n }\n \n const newView = this.newReusableViewForIdentifier(identifier, this._rowIDIndex) as UITableViewRowView\n this._rowIDIndex = this._rowIDIndex + 1\n \n newView._UITableViewReusabilityIdentifier = identifier\n newView._UITableViewRowIndex = rowIndex\n \n Object.assign(newView, this._persistedData[rowIndex] || this.defaultRowPersistenceDataItem())\n this._reusableViews[identifier].push(newView)\n \n return newView\n \n }\n \n \n // Functions that should be overridden to draw the correct content START\n newReusableViewForIdentifier(identifier: string, rowIDIndex: number): UIView {\n \n const view = new UIButton(this.elementID + \"Row\" + rowIDIndex)\n \n view.stopsPointerEventPropagation = NO\n view.pausesPointerEvents = NO\n \n return view\n \n }\n \n heightForRowWithIndex(index: number): number {\n return 50\n }\n \n numberOfRows() {\n return 10000\n }\n \n defaultRowPersistenceDataItem(): any {\n \n \n }\n \n persistenceDataItemForRowWithIndex(rowIndex: number, row: UIView): any {\n \n \n }\n \n viewForRowWithIndex(rowIndex: number): UITableViewRowView {\n const row = this.reusableViewForIdentifier(\"Row\", rowIndex);\n (row as unknown as UIButton).titleLabel.text = \"Row \" + rowIndex\n return row\n }\n \n // Functions that should be overridden to draw the correct content END\n \n \n // Functions that trigger redrawing of the content\n override didScrollToPosition(offsetPosition: UIPoint) {\n \n super.didScrollToPosition(offsetPosition)\n \n this.forEachViewInSubtree(function (view: UIView) {\n \n view._isPointerValid = NO\n \n })\n \n if (!this._isDrawVisibleRowsScheduled) {\n \n this._isDrawVisibleRowsScheduled = YES\n \n UIView.runFunctionBeforeNextFrame(function (this: UITableView) {\n \n this._calculateAllPositions()\n \n this._drawVisibleRows()\n \n this.setNeedsLayout()\n \n this._isDrawVisibleRowsScheduled = NO\n \n }.bind(this))\n \n }\n \n }\n \n override wasAddedToViewTree() {\n this.loadData()\n }\n \n override setFrame(rectangle: UIRectangle, zIndex?: number, performUncheckedLayout?: boolean) {\n \n const frame = this.frame\n super.setFrame(rectangle, zIndex, performUncheckedLayout)\n if (frame.isEqualTo(rectangle) && !performUncheckedLayout) {\n return\n }\n \n this._needsDrawingOfVisibleRowsBeforeLayout = YES\n \n }\n \n \n override didReceiveBroadcastEvent(event: UIViewBroadcastEvent) {\n \n super.didReceiveBroadcastEvent(event)\n \n if (event.name == UIView.broadcastEventName.LanguageChanged && this.reloadsOnLanguageChange) {\n \n this.reloadData()\n \n }\n \n \n }\n \n \n private _layoutAllRows(positions = this._rowPositions) {\n \n const bounds = this.bounds\n \n this._visibleRows.forEach(row => {\n \n const frame = bounds.copy()\n \n const positionObject = positions[row._UITableViewRowIndex]\n frame.min.y = positionObject.topY\n frame.max.y = positionObject.bottomY\n row.frame = frame\n \n row.style.width = \"\" + (bounds.width - this.sidePadding * 2).integerValue + \"px\"\n row.style.left = \"\" + this.sidePadding.integerValue + \"px\"\n \n \n })\n \n this._fullHeightView.frame = bounds.rectangleWithHeight((positions.lastElement ||\n nil).bottomY).rectangleWithWidth(bounds.width * 0.5)\n \n this._firstLayoutVisibleRows = []\n \n }\n \n private _animateLayoutAllRows() {\n \n UIView.animateViewOrViewsWithDurationDelayAndFunction(\n this._visibleRows,\n this.animationDuration,\n 0,\n undefined,\n function (this: UITableView) {\n \n this._layoutAllRows()\n \n }.bind(this),\n function (this: UITableView) {\n \n // this._calculateAllPositions()\n // this._layoutAllRows()\n \n }.bind(this)\n )\n \n }\n \n \n override layoutSubviews() {\n \n const previousPositions: UITableViewReusableViewPositionObject[] = JSON.parse(JSON.stringify(this._rowPositions))\n \n const previousVisibleRowsLength = this._visibleRows.length\n \n if (this._needsDrawingOfVisibleRowsBeforeLayout) {\n \n //this._calculateAllPositions()\n \n this._drawVisibleRows()\n \n this._needsDrawingOfVisibleRowsBeforeLayout = NO\n \n }\n \n \n super.layoutSubviews()\n \n \n if (!this.numberOfRows() || !this.isMemberOfViewTree) {\n \n return\n \n }\n \n \n if (this._shouldAnimateNextLayout) {\n \n \n // Need to do layout with the previous positions\n \n this._layoutAllRows(previousPositions)\n \n \n if (previousVisibleRowsLength < this._visibleRows.length) {\n \n \n UIView.runFunctionBeforeNextFrame(function (this: UITableView) {\n \n this._animateLayoutAllRows()\n \n }.bind(this))\n \n }\n else {\n \n this._animateLayoutAllRows()\n \n }\n \n \n this._shouldAnimateNextLayout = NO\n \n }\n else {\n \n // if (this._needsDrawingOfVisibleRowsBeforeLayout) {\n \n // this._drawVisibleRows();\n \n // this._needsDrawingOfVisibleRowsBeforeLayout = NO;\n \n // }\n \n this._calculateAllPositions()\n \n this._layoutAllRows()\n \n \n }\n \n \n }\n \n \n override intrinsicContentHeight(constrainingWidth = 0) {\n \n \n var result = 0\n \n this._calculateAllPositions()\n \n if (this._rowPositions.length) {\n \n result = this._rowPositions[this._rowPositions.length - 1].bottomY\n \n }\n \n return result\n \n }\n \n \n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AACzB,gCAAmC;AACnC,
|
|
4
|
+
"sourcesContent": ["import { UIButton } from \"./UIButton\"\nimport { UINativeScrollView } from \"./UINativeScrollView\"\nimport { IS, IS_DEFINED, nil, NO, YES } from \"./UIObject\"\nimport { UIPoint } from \"./UIPoint\"\nimport { UIRectangle } from \"./UIRectangle\"\nimport { UIView, UIViewBroadcastEvent } from \"./UIView\"\n\n\ninterface UITableViewRowView extends UIView {\n \n _UITableViewRowIndex?: number;\n \n}\n\n\nexport interface UITableViewReusableViewsContainerObject {\n \n [key: string]: UIView[];\n \n}\n\n\nexport interface UITableViewReusableViewPositionObject {\n \n bottomY: number;\n topY: number;\n \n isValid: boolean;\n \n}\n\n\nexport class UITableView extends UINativeScrollView {\n \n \n allRowsHaveEqualHeight: boolean = NO\n _visibleRows: UITableViewRowView[] = []\n _firstLayoutVisibleRows: UITableViewRowView[] = []\n \n _rowPositions: UITableViewReusableViewPositionObject[] = []\n \n _highestValidRowPositionIndex: number = 0\n \n _reusableViews: UITableViewReusableViewsContainerObject = {}\n \n _removedReusableViews: UITableViewReusableViewsContainerObject = {}\n \n _fullHeightView: UIView\n \n _rowIDIndex: number = 0\n \n reloadsOnLanguageChange = YES\n \n sidePadding = 0\n \n _persistedData: any[] = []\n _needsDrawingOfVisibleRowsBeforeLayout = NO\n _isDrawVisibleRowsScheduled = NO\n _shouldAnimateNextLayout?: boolean\n \n override animationDuration = 0.25\n \n \n constructor(elementID?: string) {\n \n super(elementID)\n \n this._fullHeightView = new UIView()\n this._fullHeightView.hidden = YES\n this._fullHeightView.userInteractionEnabled = NO\n this.addSubview(this._fullHeightView)\n \n this.scrollsX = NO\n \n }\n \n \n loadData() {\n \n this._persistedData = []\n \n this._calculatePositionsUntilIndex(this.numberOfRows() - 1)\n this._needsDrawingOfVisibleRowsBeforeLayout = YES\n \n this.setNeedsLayout()\n \n }\n \n reloadData() {\n \n this._removeVisibleRows()\n this._removeAllReusableRows()\n \n this._rowPositions = []\n this._highestValidRowPositionIndex = 0\n \n this.loadData()\n \n }\n \n \n highlightChanges(previousData: any[], newData: any[]) {\n \n previousData = previousData.map(dataPoint => JSON.stringify(dataPoint))\n newData = newData.map(dataPoint => JSON.stringify(dataPoint))\n \n const newIndexes: number[] = []\n \n newData.forEach((value, index) => {\n \n if (!previousData.contains(value)) {\n \n newIndexes.push(index)\n \n }\n \n })\n \n newIndexes.forEach(index => {\n \n if (this.isRowWithIndexVisible(index)) {\n this.highlightRowAsNew(this.viewForRowWithIndex(index) as UIView)\n }\n \n })\n \n }\n \n \n highlightRowAsNew(row: UIView) {\n \n \n }\n \n \n invalidateSizeOfRowWithIndex(index: number, animateChange = NO) {\n \n if (this._rowPositions[index]) {\n this._rowPositions[index].isValid = NO\n }\n \n this._highestValidRowPositionIndex = Math.min(this._highestValidRowPositionIndex, index - 1)\n \n // if (index == 0) {\n \n // this._highestValidRowPositionIndex = 0;\n \n // this._rowPositions = [];\n \n // }\n \n this._needsDrawingOfVisibleRowsBeforeLayout = YES\n \n this._shouldAnimateNextLayout = animateChange\n \n }\n \n \n _calculateAllPositions() {\n this._calculatePositionsUntilIndex(this.numberOfRows() - 1)\n }\n \n _calculatePositionsUntilIndex(maxIndex: number) {\n \n var validPositionObject = this._rowPositions[this._highestValidRowPositionIndex]\n if (!IS(validPositionObject)) {\n validPositionObject = {\n bottomY: 0,\n topY: 0,\n isValid: YES\n }\n }\n \n var previousBottomY = validPositionObject.bottomY\n \n if (!this._rowPositions.length) {\n \n this._highestValidRowPositionIndex = -1\n \n }\n \n for (var i = this._highestValidRowPositionIndex + 1; i <= maxIndex; i++) {\n \n var height: number\n \n const rowPositionObject = this._rowPositions[i]\n \n if (IS((rowPositionObject || nil).isValid)) {\n \n height = rowPositionObject.bottomY - rowPositionObject.topY\n \n }\n else {\n \n height = this.heightForRowWithIndex(i)\n \n }\n \n \n const positionObject: UITableViewReusableViewPositionObject = {\n bottomY: previousBottomY + height,\n topY: previousBottomY,\n isValid: YES\n }\n \n if (i < this._rowPositions.length) {\n this._rowPositions[i] = positionObject\n }\n else {\n this._rowPositions.push(positionObject)\n }\n this._highestValidRowPositionIndex = i\n previousBottomY = previousBottomY + height\n \n }\n \n }\n \n \n indexesForVisibleRows(paddingRatio = 0.5): number[] {\n \n const firstVisibleY = this.contentOffset.y - this.bounds.height * paddingRatio\n const lastVisibleY = firstVisibleY + this.bounds.height * (1 + paddingRatio)\n \n const numberOfRows = this.numberOfRows()\n \n if (this.allRowsHaveEqualHeight) {\n \n const rowHeight = this.heightForRowWithIndex(0)\n \n var firstIndex = firstVisibleY / rowHeight\n var lastIndex = lastVisibleY / rowHeight\n \n firstIndex = Math.trunc(firstIndex)\n lastIndex = Math.trunc(lastIndex) + 1\n \n firstIndex = Math.max(firstIndex, 0)\n lastIndex = Math.min(lastIndex, numberOfRows - 1)\n \n var result = []\n for (var i = firstIndex; i < lastIndex + 1; i++) {\n result.push(i)\n }\n return result\n }\n \n var accumulatedHeight = 0\n var result = []\n \n this._calculateAllPositions()\n \n const rowPositions = this._rowPositions\n \n for (var i = 0; i < numberOfRows; i++) {\n \n const height = rowPositions[i].bottomY - rowPositions[i].topY // this.heightForRowWithIndex(i)\n \n accumulatedHeight = accumulatedHeight + height\n if (accumulatedHeight >= firstVisibleY) {\n result.push(i)\n }\n if (accumulatedHeight >= lastVisibleY) {\n break\n }\n \n }\n \n return result\n \n }\n \n \n _removeVisibleRows() {\n \n const visibleRows: UITableViewRowView[] = []\n this._visibleRows.forEach((row: UIView) => {\n \n this._persistedData[row._UITableViewRowIndex as number] = this.persistenceDataItemForRowWithIndex(\n row._UITableViewRowIndex as number,\n row\n )\n row.removeFromSuperview()\n this._removedReusableViews[row._UITableViewReusabilityIdentifier].push(row)\n \n \n })\n this._visibleRows = visibleRows\n \n }\n \n \n _removeAllReusableRows() {\n this._reusableViews.forEach((rows: UIView[]) =>\n rows.forEach((row: UIView) => {\n \n this._persistedData[row._UITableViewRowIndex as number] = this.persistenceDataItemForRowWithIndex(\n row._UITableViewRowIndex as number,\n row\n )\n row.removeFromSuperview()\n \n this._markReusableViewAsUnused(row)\n \n })\n )\n }\n \n \n _markReusableViewAsUnused(row: UIView) {\n if (!this._removedReusableViews[row._UITableViewReusabilityIdentifier].contains(row)) {\n this._removedReusableViews[row._UITableViewReusabilityIdentifier].push(row)\n }\n }\n \n _drawVisibleRows() {\n \n if (!this.isMemberOfViewTree) {\n return\n }\n \n const visibleIndexes = this.indexesForVisibleRows()\n \n const minIndex = visibleIndexes[0]\n const maxIndex = visibleIndexes[visibleIndexes.length - 1]\n \n const removedViews: UITableViewRowView[] = []\n \n const visibleRows: UITableViewRowView[] = []\n this._visibleRows.forEach((row) => {\n if (IS_DEFINED(row._UITableViewRowIndex) && (row._UITableViewRowIndex < minIndex || row._UITableViewRowIndex > maxIndex)) {\n \n //row.removeFromSuperview();\n \n this._persistedData[row._UITableViewRowIndex] = this.persistenceDataItemForRowWithIndex(\n row._UITableViewRowIndex,\n row\n )\n \n this._removedReusableViews[row._UITableViewReusabilityIdentifier].push(row)\n \n removedViews.push(row)\n \n }\n else {\n visibleRows.push(row)\n }\n })\n this._visibleRows = visibleRows\n \n visibleIndexes.forEach((rowIndex: number) => {\n \n if (this.isRowWithIndexVisible(rowIndex)) {\n return\n }\n const view: UITableViewRowView = this.viewForRowWithIndex(rowIndex)\n //view._UITableViewRowIndex = rowIndex;\n this._firstLayoutVisibleRows.push(view)\n this._visibleRows.push(view)\n this.addSubview(view)\n \n })\n \n for (let i = 0; i < removedViews.length; i++) {\n \n const view = removedViews[i]\n if (this._visibleRows.indexOf(view) == -1) {\n \n //this._persistedData[view._UITableViewRowIndex] = this.persistenceDataItemForRowWithIndex(view._UITableViewRowIndex, view);\n view.removeFromSuperview()\n \n //this._removedReusableViews[view._UITableViewReusabilityIdentifier].push(view);\n \n }\n \n }\n \n //this.setNeedsLayout();\n \n }\n \n \n visibleRowWithIndex(rowIndex: number | undefined): UIView {\n for (var i = 0; i < this._visibleRows.length; i++) {\n const row = this._visibleRows[i]\n if (row._UITableViewRowIndex == rowIndex) {\n return row\n }\n }\n return nil\n }\n \n \n isRowWithIndexVisible(rowIndex: number) {\n return IS(this.visibleRowWithIndex(rowIndex))\n }\n \n \n reusableViewForIdentifier(identifier: string, rowIndex: number): UITableViewRowView {\n \n if (!this._removedReusableViews[identifier]) {\n this._removedReusableViews[identifier] = []\n }\n \n if (this._removedReusableViews[identifier] && this._removedReusableViews[identifier].length) {\n \n const view = this._removedReusableViews[identifier].pop() as UITableViewRowView\n view._UITableViewRowIndex = rowIndex\n Object.assign(view, this._persistedData[rowIndex] || this.defaultRowPersistenceDataItem())\n return view\n \n }\n \n if (!this._reusableViews[identifier]) {\n this._reusableViews[identifier] = []\n }\n \n const newView = this.newReusableViewForIdentifier(identifier, this._rowIDIndex) as UITableViewRowView\n this._rowIDIndex = this._rowIDIndex + 1\n \n newView._UITableViewReusabilityIdentifier = identifier\n newView._UITableViewRowIndex = rowIndex\n \n Object.assign(newView, this._persistedData[rowIndex] || this.defaultRowPersistenceDataItem())\n this._reusableViews[identifier].push(newView)\n \n return newView\n \n }\n \n \n // Functions that should be overridden to draw the correct content START\n newReusableViewForIdentifier(identifier: string, rowIDIndex: number): UIView {\n \n const view = new UIButton(this.elementID + \"Row\" + rowIDIndex)\n \n view.stopsPointerEventPropagation = NO\n view.pausesPointerEvents = NO\n \n return view\n \n }\n \n heightForRowWithIndex(index: number): number {\n return 50\n }\n \n numberOfRows() {\n return 10000\n }\n \n defaultRowPersistenceDataItem(): any {\n \n \n }\n \n persistenceDataItemForRowWithIndex(rowIndex: number, row: UIView): any {\n \n \n }\n \n viewForRowWithIndex(rowIndex: number): UITableViewRowView {\n const row = this.reusableViewForIdentifier(\"Row\", rowIndex);\n (row as unknown as UIButton).titleLabel.text = \"Row \" + rowIndex\n return row\n }\n \n // Functions that should be overridden to draw the correct content END\n \n \n // Functions that trigger redrawing of the content\n override didScrollToPosition(offsetPosition: UIPoint) {\n \n super.didScrollToPosition(offsetPosition)\n \n this.forEachViewInSubtree(function (view: UIView) {\n \n view._isPointerValid = NO\n \n })\n \n if (!this._isDrawVisibleRowsScheduled) {\n \n this._isDrawVisibleRowsScheduled = YES\n \n UIView.runFunctionBeforeNextFrame(function (this: UITableView) {\n \n this._calculateAllPositions()\n \n this._drawVisibleRows()\n \n this.setNeedsLayout()\n \n this._isDrawVisibleRowsScheduled = NO\n \n }.bind(this))\n \n }\n \n }\n \n override wasAddedToViewTree() {\n this.loadData()\n }\n \n override setFrame(rectangle: UIRectangle, zIndex?: number, performUncheckedLayout?: boolean) {\n \n const frame = this.frame\n super.setFrame(rectangle, zIndex, performUncheckedLayout)\n if (frame.isEqualTo(rectangle) && !performUncheckedLayout) {\n return\n }\n \n this._needsDrawingOfVisibleRowsBeforeLayout = YES\n \n }\n \n \n override didReceiveBroadcastEvent(event: UIViewBroadcastEvent) {\n \n super.didReceiveBroadcastEvent(event)\n \n if (event.name == UIView.broadcastEventName.LanguageChanged && this.reloadsOnLanguageChange) {\n \n this.reloadData()\n \n }\n \n \n }\n \n \n private _layoutAllRows(positions = this._rowPositions) {\n \n const bounds = this.bounds\n \n this._visibleRows.forEach(row => {\n \n const frame = bounds.copy()\n \n const positionObject = positions[row._UITableViewRowIndex!]\n frame.min.y = positionObject.topY\n frame.max.y = positionObject.bottomY\n row.frame = frame\n \n row.style.width = \"\" + (bounds.width - this.sidePadding * 2).integerValue + \"px\"\n row.style.left = \"\" + this.sidePadding.integerValue + \"px\"\n \n \n })\n \n this._fullHeightView.frame = bounds.rectangleWithHeight((positions.lastElement ||\n nil).bottomY).rectangleWithWidth(bounds.width * 0.5)\n \n this._firstLayoutVisibleRows = []\n \n }\n \n private _animateLayoutAllRows() {\n \n UIView.animateViewOrViewsWithDurationDelayAndFunction(\n this._visibleRows,\n this.animationDuration,\n 0,\n undefined,\n function (this: UITableView) {\n \n this._layoutAllRows()\n \n }.bind(this),\n function (this: UITableView) {\n \n // this._calculateAllPositions()\n // this._layoutAllRows()\n \n }.bind(this)\n )\n \n }\n \n \n override layoutSubviews() {\n \n const previousPositions: UITableViewReusableViewPositionObject[] = JSON.parse(JSON.stringify(this._rowPositions))\n \n const previousVisibleRowsLength = this._visibleRows.length\n \n if (this._needsDrawingOfVisibleRowsBeforeLayout) {\n \n //this._calculateAllPositions()\n \n this._drawVisibleRows()\n \n this._needsDrawingOfVisibleRowsBeforeLayout = NO\n \n }\n \n \n super.layoutSubviews()\n \n \n if (!this.numberOfRows() || !this.isMemberOfViewTree) {\n \n return\n \n }\n \n \n if (this._shouldAnimateNextLayout) {\n \n \n // Need to do layout with the previous positions\n \n this._layoutAllRows(previousPositions)\n \n \n if (previousVisibleRowsLength < this._visibleRows.length) {\n \n \n UIView.runFunctionBeforeNextFrame(function (this: UITableView) {\n \n this._animateLayoutAllRows()\n \n }.bind(this))\n \n }\n else {\n \n this._animateLayoutAllRows()\n \n }\n \n \n this._shouldAnimateNextLayout = NO\n \n }\n else {\n \n // if (this._needsDrawingOfVisibleRowsBeforeLayout) {\n \n // this._drawVisibleRows();\n \n // this._needsDrawingOfVisibleRowsBeforeLayout = NO;\n \n // }\n \n this._calculateAllPositions()\n \n this._layoutAllRows()\n \n \n }\n \n \n }\n \n \n override intrinsicContentHeight(constrainingWidth = 0) {\n \n \n var result = 0\n \n this._calculateAllPositions()\n \n if (this._rowPositions.length) {\n \n result = this._rowPositions[this._rowPositions.length - 1].bottomY\n \n }\n \n return result\n \n }\n \n \n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -122,6 +122,9 @@ export declare class UIView extends UIObject {
|
|
|
122
122
|
private _isMoving;
|
|
123
123
|
_isCBEditorTemporaryResizable: boolean;
|
|
124
124
|
_isCBEditorTemporaryMovable: boolean;
|
|
125
|
+
static _onWindowTouchMove: (event: TouchEvent) => void;
|
|
126
|
+
static _onWindowMouseMove: (event: MouseEvent) => void;
|
|
127
|
+
static _onWindowMouseup: (event: MouseEvent) => void;
|
|
125
128
|
constructor(elementID?: string, viewHTMLElement?: HTMLElement & LooseObject | null, elementType?: string | null, initViewData?: any);
|
|
126
129
|
static get nextIndex(): number;
|
|
127
130
|
static get pageHeight(): number;
|
|
@@ -1656,24 +1656,9 @@ const _UIView = class extends import_UIObject.UIObject {
|
|
|
1656
1656
|
pauseEvent(event);
|
|
1657
1657
|
}
|
|
1658
1658
|
this._hasPointerDragged = import_UIObject.NO;
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
const windowMouseUpOrLeaveFunction = (event2) => {
|
|
1663
|
-
window.removeEventListener("mousemove", windowMouseMoveFunction);
|
|
1664
|
-
window.removeEventListener("mouseup", windowMouseUpOrLeaveFunction, true);
|
|
1665
|
-
document.body.removeEventListener("mouseleave", windowMouseUpOrLeaveFunction);
|
|
1666
|
-
onmouseup(event2);
|
|
1667
|
-
};
|
|
1668
|
-
window.addEventListener("mousemove", windowMouseMoveFunction);
|
|
1669
|
-
window.addEventListener("mouseup", windowMouseUpOrLeaveFunction, true);
|
|
1670
|
-
document.body.addEventListener("mouseleave", windowMouseUpOrLeaveFunction);
|
|
1671
|
-
const windowTouchFunction = () => {
|
|
1672
|
-
window.removeEventListener("touchmove", onTouchMove, true);
|
|
1673
|
-
window.removeEventListener("mouseup", windowTouchFunction, true);
|
|
1674
|
-
};
|
|
1675
|
-
window.addEventListener("touchmove", onTouchMove, true);
|
|
1676
|
-
window.addEventListener("mouseup", windowTouchFunction, true);
|
|
1659
|
+
_UIView._onWindowTouchMove = onTouchMove;
|
|
1660
|
+
_UIView._onWindowMouseup = onmouseup;
|
|
1661
|
+
_UIView._onWindowMouseMove = onMouseMove;
|
|
1677
1662
|
};
|
|
1678
1663
|
const onTouchStart = onMouseDown;
|
|
1679
1664
|
const onmouseup = (event) => __async(this, null, function* () {
|
|
@@ -2053,6 +2038,12 @@ let UIView = _UIView;
|
|
|
2053
2038
|
UIView._UIViewIndex = -1;
|
|
2054
2039
|
UIView._viewsToLayout = [];
|
|
2055
2040
|
UIView._pageScale = 1;
|
|
2041
|
+
UIView._onWindowTouchMove = () => {
|
|
2042
|
+
};
|
|
2043
|
+
UIView._onWindowMouseMove = () => {
|
|
2044
|
+
};
|
|
2045
|
+
UIView._onWindowMouseup = () => {
|
|
2046
|
+
};
|
|
2056
2047
|
UIView._transformAttribute = ("transform" in document.documentElement.style ? "transform" : void 0) || ("-webkit-transform" in document.documentElement.style ? "-webkit-transform" : "undefined") || ("-moz-transform" in document.documentElement.style ? "-moz-transform" : "undefined") || ("-ms-transform" in document.documentElement.style ? "-ms-transform" : "undefined") || ("-o-transform" in document.documentElement.style ? "-o-transform" : "undefined");
|
|
2057
2048
|
UIView.constraintAttribute = {
|
|
2058
2049
|
"left": AutoLayout.Attribute.LEFT,
|
|
@@ -2101,6 +2092,24 @@ UIView.broadcastEventName = {
|
|
|
2101
2092
|
"AddedToViewTree": "AddedToViewTree",
|
|
2102
2093
|
"PageDidScroll": "PageDidScroll"
|
|
2103
2094
|
};
|
|
2095
|
+
const windowMouseMoveFunction = (event) => {
|
|
2096
|
+
UIView._onWindowMouseMove(event);
|
|
2097
|
+
};
|
|
2098
|
+
const windowMouseUpOrLeaveFunction = (event) => {
|
|
2099
|
+
window.removeEventListener("mousemove", windowMouseMoveFunction);
|
|
2100
|
+
window.removeEventListener("mouseup", windowMouseUpOrLeaveFunction, true);
|
|
2101
|
+
document.body.removeEventListener("mouseleave", windowMouseUpOrLeaveFunction);
|
|
2102
|
+
UIView._onWindowMouseup(event);
|
|
2103
|
+
};
|
|
2104
|
+
window.addEventListener("mousemove", windowMouseMoveFunction);
|
|
2105
|
+
window.addEventListener("mouseup", windowMouseUpOrLeaveFunction, true);
|
|
2106
|
+
document.body.addEventListener("mouseleave", windowMouseUpOrLeaveFunction);
|
|
2107
|
+
const windowTouchFunction = () => {
|
|
2108
|
+
window.removeEventListener("touchmove", UIView._onWindowTouchMove, true);
|
|
2109
|
+
window.removeEventListener("mouseup", windowTouchFunction, true);
|
|
2110
|
+
};
|
|
2111
|
+
window.addEventListener("touchmove", UIView._onWindowTouchMove, true);
|
|
2112
|
+
window.addEventListener("mouseup", windowTouchFunction, true);
|
|
2104
2113
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2105
2114
|
0 && (module.exports = {
|
|
2106
2115
|
UIView
|