uicore-ts 1.0.218 → 1.0.220
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.
|
@@ -51,8 +51,8 @@ export declare class UIRectangle extends UIObject {
|
|
|
51
51
|
distributeViewsAlongHeight(views: UIView[], weights?: number | number[], paddings?: number | number[], absoluteHeights?: number | number[]): this;
|
|
52
52
|
distributeViewsEquallyAlongWidth(views: UIView[], padding: number): this;
|
|
53
53
|
distributeViewsEquallyAlongHeight(views: UIView[], padding: number): this;
|
|
54
|
-
rectangleForNextRow(padding?: number, height?: number |
|
|
55
|
-
rectangleForNextColumn(padding?: number, width?: number |
|
|
54
|
+
rectangleForNextRow(padding?: number, height?: number | ((constrainingWidth: number) => number)): UIRectangle;
|
|
55
|
+
rectangleForNextColumn(padding?: number, width?: number | ((constrainingHeight: number) => number)): UIRectangle;
|
|
56
56
|
rectangleForPreviousRow(padding?: number): UIRectangle;
|
|
57
57
|
rectangleForPreviousColumn(padding?: number): UIRectangle;
|
|
58
58
|
static boundingBoxForPoints(points: string | any[]): UIRectangle;
|
|
@@ -23,7 +23,6 @@ __export(UIRectangle_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(UIRectangle_exports);
|
|
24
24
|
var import_UIObject = require("./UIObject");
|
|
25
25
|
var import_UIPoint = require("./UIPoint");
|
|
26
|
-
var import_UIView = require("./UIView");
|
|
27
26
|
class UIRectangle extends import_UIObject.UIObject {
|
|
28
27
|
constructor(x = 0, y = 0, height = 0, width = 0) {
|
|
29
28
|
super();
|
|
@@ -406,8 +405,8 @@ class UIRectangle extends import_UIObject.UIObject {
|
|
|
406
405
|
return this;
|
|
407
406
|
}
|
|
408
407
|
rectangleForNextRow(padding = 0, height = this.height) {
|
|
409
|
-
if (height instanceof
|
|
410
|
-
height = height
|
|
408
|
+
if (height instanceof Function) {
|
|
409
|
+
height = height(this.width);
|
|
411
410
|
}
|
|
412
411
|
const result = this.rectangleWithY(this.max.y + padding);
|
|
413
412
|
if (height != this.height) {
|
|
@@ -416,8 +415,8 @@ class UIRectangle extends import_UIObject.UIObject {
|
|
|
416
415
|
return result;
|
|
417
416
|
}
|
|
418
417
|
rectangleForNextColumn(padding = 0, width = this.width) {
|
|
419
|
-
if (width instanceof
|
|
420
|
-
width = width
|
|
418
|
+
if (width instanceof Function) {
|
|
419
|
+
width = width(this.height);
|
|
421
420
|
}
|
|
422
421
|
const result = this.rectangleWithX(this.max.x + padding);
|
|
423
422
|
if (width != this.width) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../scripts/UIRectangle.ts"],
|
|
4
|
-
"sourcesContent": ["import { FIRST_OR_NIL, IS, IS_NIL, IS_NOT_NIL, nil, NO, UIObject, YES } from \"./UIObject\"\nimport { UIPoint } from \"./UIPoint\"\nimport { UIView } from \"./UIView\"\n\n\nexport class UIRectangle extends UIObject {\n \n _isBeingUpdated: boolean\n rectanglePointDidChange: (b: any) => void = nil\n max: UIPoint\n min: UIPoint\n \n \n constructor(x: number = 0, y: number = 0, height: number = 0, width: number = 0) {\n \n super()\n \n this.min = new UIPoint(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)\n this.max = new UIPoint(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY)\n \n this.min.didChange = (point) => {\n this.rectanglePointDidChange(point)\n this._rectanglePointDidChange()\n }\n this.max.didChange = (point) => {\n this.rectanglePointDidChange(point)\n this._rectanglePointDidChange()\n }\n \n this._isBeingUpdated = NO\n \n this.min = new UIPoint(x, y)\n this.max = new UIPoint(x + width, y + height)\n \n if (IS_NIL(height)) {\n this.max.y = height\n }\n \n if (IS_NIL(width)) {\n this.max.x = width\n }\n \n }\n \n \n copy() {\n return new UIRectangle(this.x, this.y, this.height, this.width)\n }\n \n isEqualTo(rectangle: UIRectangle | null | undefined) {\n return (IS(rectangle) && this.min.isEqualTo(rectangle.min) && this.max.isEqualTo(rectangle.max))\n }\n \n static zero() {\n return new UIRectangle(0, 0, 0, 0)\n }\n \n containsPoint(point: UIPoint) {\n return this.min.x <= point.x && this.min.y <= point.y &&\n point.x <= this.max.x && point.y <= this.max.y\n }\n \n updateByAddingPoint(point: UIPoint) {\n \n if (!point) {\n point = new UIPoint(0, 0)\n }\n \n this.beginUpdates()\n \n const min = this.min.copy()\n if (min.x === nil) {\n min.x = this.max.x\n }\n if (min.y === nil) {\n min.y = this.max.y\n }\n \n const max = this.max.copy()\n if (max.x === nil) {\n max.x = this.min.x\n }\n if (max.y === nil) {\n max.y = this.min.y\n }\n \n this.min.x = Math.min(min.x, point.x)\n this.min.y = Math.min(min.y, point.y)\n this.max.x = Math.max(max.x, point.x)\n this.max.y = Math.max(max.y, point.y)\n \n this.finishUpdates()\n \n }\n \n scale(scale: number) {\n if (IS_NOT_NIL(this.max.y)) {\n this.height = this.height * scale\n }\n if (IS_NOT_NIL(this.max.x)) {\n this.width = this.width * scale\n }\n }\n \n get height() {\n if (this.max.y === nil) {\n return nil\n }\n return this.max.y - this.min.y\n }\n \n set height(height: number) {\n this.max.y = this.min.y + height\n }\n \n \n get width() {\n if (this.max.x === nil) {\n return nil\n }\n return this.max.x - this.min.x\n }\n \n set width(width: number) {\n this.max.x = this.min.x + width\n }\n \n \n get x() {\n return this.min.x\n }\n \n set x(x: number) {\n \n this.beginUpdates()\n \n const width = this.width\n this.min.x = x\n this.max.x = this.min.x + width\n \n this.finishUpdates()\n \n }\n \n \n get y() {\n return this.min.y\n }\n \n \n set y(y: number) {\n \n this.beginUpdates()\n \n const height = this.height\n this.min.y = y\n this.max.y = this.min.y + height\n \n this.finishUpdates()\n \n }\n \n \n get topLeft() {\n return this.min.copy()\n }\n \n get topRight() {\n return new UIPoint(this.max.x, this.y)\n }\n \n get bottomLeft() {\n return new UIPoint(this.x, this.max.y)\n }\n \n get bottomRight() {\n return this.max.copy()\n }\n \n \n get center() {\n return this.min.copy().add(this.min.to(this.max).scale(0.5))\n }\n \n set center(center: UIPoint) {\n const offset = this.center.to(center)\n this.offsetByPoint(offset)\n }\n \n offsetByPoint(offset: UIPoint) {\n this.min.add(offset)\n this.max.add(offset)\n \n return this\n }\n \n \n concatenateWithRectangle(rectangle: UIRectangle) {\n this.updateByAddingPoint(rectangle.bottomRight)\n this.updateByAddingPoint(rectangle.topLeft)\n return this\n }\n \n \n intersectionRectangleWithRectangle(rectangle: UIRectangle): UIRectangle {\n \n const result = this.copy()\n \n result.beginUpdates()\n \n const min = result.min\n if (min.x === nil) {\n min.x = rectangle.max.x - Math.min(result.width, rectangle.width)\n }\n if (min.y === nil) {\n min.y = rectangle.max.y - Math.min(result.height, rectangle.height)\n }\n \n const max = result.max\n if (max.x === nil) {\n max.x = rectangle.min.x + Math.min(result.width, rectangle.width)\n }\n if (max.y === nil) {\n max.y = rectangle.min.y + Math.min(result.height, rectangle.height)\n }\n \n result.min.x = Math.max(result.min.x, rectangle.min.x)\n result.min.y = Math.max(result.min.y, rectangle.min.y)\n result.max.x = Math.min(result.max.x, rectangle.max.x)\n result.max.y = Math.min(result.max.y, rectangle.max.y)\n \n \n if (result.height < 0) {\n \n const averageY = (this.center.y + rectangle.center.y) * 0.5\n result.min.y = averageY\n result.max.y = averageY\n \n }\n \n if (result.width < 0) {\n \n const averageX = (this.center.x + rectangle.center.x) * 0.5\n result.min.x = averageX\n result.max.x = averageX\n \n }\n \n result.finishUpdates()\n \n return result\n \n }\n \n \n get area() {\n return this.height * this.width\n }\n \n \n intersectsWithRectangle(rectangle: UIRectangle) {\n return (this.intersectionRectangleWithRectangle(rectangle).area != 0)\n }\n \n \n // add some space around the rectangle\n rectangleWithInsets(left: number, right: number, bottom: number, top: number) {\n const result = this.copy()\n result.min.x = this.min.x + left\n result.max.x = this.max.x - right\n result.min.y = this.min.y + top\n result.max.y = this.max.y - bottom\n return result\n }\n \n rectangleWithInset(inset: number) {\n return this.rectangleWithInsets(inset, inset, inset, inset)\n }\n \n rectangleWithHeight(height: number, centeredOnPosition: number = nil) {\n \n if (isNaN(centeredOnPosition)) {\n centeredOnPosition = nil\n }\n \n const result = this.copy()\n result.height = height\n \n if (centeredOnPosition != nil) {\n const change = height - this.height\n result.offsetByPoint(new UIPoint(0, change * centeredOnPosition).scale(-1))\n }\n \n return result\n \n }\n \n rectangleWithWidth(width: number, centeredOnPosition: number = nil) {\n \n if (isNaN(centeredOnPosition)) {\n centeredOnPosition = nil\n }\n \n const result = this.copy()\n result.width = width\n \n if (centeredOnPosition != nil) {\n const change = width - this.width\n result.offsetByPoint(new UIPoint(change * centeredOnPosition, 0).scale(-1))\n }\n \n return result\n \n }\n \n rectangleWithHeightRelativeToWidth(heightRatio: number = 1, centeredOnPosition: number = nil) {\n return this.rectangleWithHeight(this.width * heightRatio, centeredOnPosition)\n }\n \n rectangleWithWidthRelativeToHeight(widthRatio: number = 1, centeredOnPosition: number = nil) {\n return this.rectangleWithWidth(this.height * widthRatio, centeredOnPosition)\n }\n \n rectangleWithX(x: number, centeredOnPosition: number = 0) {\n \n const result = this.copy()\n result.x = x - result.width * centeredOnPosition\n \n return result\n \n }\n \n rectangleWithY(y: number, centeredOnPosition: number = 0) {\n \n const result = this.copy()\n result.y = y - result.height * centeredOnPosition\n \n return result\n \n }\n \n \n rectangleByAddingX(x: number) {\n \n const result = this.copy()\n result.x = this.x + x\n \n return result\n \n }\n \n rectangleByAddingY(y: number) {\n \n const result = this.copy()\n result.y = this.y + y\n \n return result\n \n }\n \n \n rectangleWithRelativeValues(\n relativeXPosition: number,\n widthMultiplier: number,\n relativeYPosition: number,\n heightMultiplier: number\n ) {\n \n const result = this.copy()\n \n const width = result.width\n const height = result.height\n \n result.width = widthMultiplier * width\n result.height = heightMultiplier * height\n \n result.center = new UIPoint(\n relativeXPosition * width,\n relativeYPosition * height\n )\n \n return result\n \n }\n \n \n rectanglesBySplittingWidth(\n weights: number[],\n paddings: number | number[] = 0,\n absoluteWidths: number | number[] = nil\n ) {\n \n if (IS_NIL(paddings)) {\n paddings = 1\n }\n if (!((paddings as any) instanceof Array)) {\n paddings = [paddings].arrayByRepeating(weights.length - 1)\n }\n paddings = (paddings as number[]).arrayByTrimmingToLengthIfLonger(weights.length - 1)\n if (!(absoluteWidths instanceof Array) && IS_NOT_NIL(absoluteWidths)) {\n absoluteWidths = [absoluteWidths].arrayByRepeating(weights.length)\n }\n \n const result: UIRectangle[] = []\n const sumOfWeights = weights.reduce(\n (a, b, index) => {\n if (IS_NOT_NIL((absoluteWidths as number[])[index])) {\n b = 0\n }\n return a + b\n },\n 0\n )\n const sumOfPaddings = paddings.summedValue\n const sumOfAbsoluteWidths = (absoluteWidths as number[]).summedValue\n const totalRelativeWidth = this.width - sumOfPaddings - sumOfAbsoluteWidths\n let previousCellMaxX = this.x\n \n for (let i = 0; i < weights.length; i++) {\n \n let resultWidth: number\n if (IS_NOT_NIL(absoluteWidths[i])) {\n resultWidth = absoluteWidths[i] || 0\n }\n else {\n resultWidth = totalRelativeWidth * (weights[i] / sumOfWeights)\n }\n \n const rectangle = this.rectangleWithWidth(resultWidth)\n \n let padding = 0\n if (paddings.length > i && paddings[i]) {\n padding = paddings[i]\n }\n \n rectangle.x = previousCellMaxX\n previousCellMaxX = rectangle.max.x + padding\n result.push(rectangle)\n \n }\n \n return result\n \n }\n \n rectanglesBySplittingHeight(\n weights: number[],\n paddings: number | number[] = 0,\n absoluteHeights: number | number[] = nil\n ) {\n \n if (IS_NIL(paddings)) {\n paddings = 1\n }\n if (!((paddings as any) instanceof Array)) {\n paddings = [paddings].arrayByRepeating(weights.length - 1)\n }\n paddings = (paddings as number[]).arrayByTrimmingToLengthIfLonger(weights.length - 1)\n if (!(absoluteHeights instanceof Array) && IS_NOT_NIL(absoluteHeights)) {\n absoluteHeights = [absoluteHeights].arrayByRepeating(weights.length)\n }\n \n const result: UIRectangle[] = []\n const sumOfWeights = weights.reduce(\n (a, b, index) => {\n if (IS_NOT_NIL((absoluteHeights as number[])[index])) {\n b = 0\n }\n return a + b\n },\n 0\n )\n const sumOfPaddings = paddings.summedValue\n const sumOfAbsoluteHeights = (absoluteHeights as number[]).summedValue\n const totalRelativeHeight = this.height - sumOfPaddings - sumOfAbsoluteHeights\n var previousCellMaxY = this.y\n \n for (var i = 0; i < weights.length; i++) {\n var resultHeight: number\n if (IS_NOT_NIL(absoluteHeights[i])) {\n \n resultHeight = absoluteHeights[i] || 0\n \n }\n else {\n \n resultHeight = totalRelativeHeight * (weights[i] / sumOfWeights)\n \n }\n \n const rectangle = this.rectangleWithHeight(resultHeight)\n \n var padding = 0\n if (paddings.length > i && paddings[i]) {\n padding = paddings[i]\n }\n \n rectangle.y = previousCellMaxY\n previousCellMaxY = rectangle.max.y + padding\n //rectangle = rectangle.rectangleWithInsets(0, 0, padding, 0);\n result.push(rectangle)\n }\n \n return result\n \n }\n \n \n rectanglesByEquallySplittingWidth(numberOfFrames: number, padding: number = 0) {\n const result: UIRectangle[] = []\n const totalPadding = padding * (numberOfFrames - 1)\n const resultWidth = (this.width - totalPadding) / numberOfFrames\n for (var i = 0; i < numberOfFrames; i++) {\n const rectangle = this.rectangleWithWidth(resultWidth, i / (numberOfFrames - 1))\n result.push(rectangle)\n }\n return result\n }\n \n rectanglesByEquallySplittingHeight(numberOfFrames: number, padding: number = 0) {\n const result: UIRectangle[] = []\n const totalPadding = padding * (numberOfFrames - 1)\n const resultHeight = (this.height - totalPadding) / numberOfFrames\n for (var i = 0; i < numberOfFrames; i++) {\n const rectangle = this.rectangleWithHeight(resultHeight, i / (numberOfFrames - 1))\n result.push(rectangle)\n }\n return result\n }\n \n \n distributeViewsAlongWidth(\n views: UIView[],\n weights: number | number[] = 1,\n paddings?: number | number[],\n absoluteWidths?: number | number[]\n ) {\n if (!(weights instanceof Array)) {\n weights = [weights].arrayByRepeating(views.length)\n }\n const frames = this.rectanglesBySplittingWidth(weights, paddings, absoluteWidths)\n frames.forEach((frame, index) => FIRST_OR_NIL(views[index]).frame = frame)\n return this\n }\n \n distributeViewsAlongHeight(\n views: UIView[],\n weights: number | number[] = 1,\n paddings?: number | number[],\n absoluteHeights?: number | number[]\n ) {\n if (!(weights instanceof Array)) {\n weights = [weights].arrayByRepeating(views.length)\n }\n const frames = this.rectanglesBySplittingHeight(weights, paddings, absoluteHeights)\n frames.forEach((frame, index) => FIRST_OR_NIL(views[index]).frame = frame)\n return this\n }\n \n \n distributeViewsEquallyAlongWidth(views: UIView[], padding: number) {\n const frames = this.rectanglesByEquallySplittingWidth(views.length, padding)\n frames.forEach((frame, index) => views[index].frame = frame)\n return this\n }\n \n distributeViewsEquallyAlongHeight(views: UIView[], padding: number) {\n const frames = this.rectanglesByEquallySplittingHeight(views.length, padding)\n frames.forEach((frame, index) => views[index].frame = frame)\n return this\n }\n \n \n rectangleForNextRow(padding: number = 0, height: number | UIView = this.height) {\n if (height instanceof UIView) {\n height = height.intrinsicContentHeight(this.width)\n }\n const result = this.rectangleWithY(this.max.y + padding)\n if (height != this.height) {\n result.height = height\n }\n return result\n }\n \n rectangleForNextColumn(padding: number = 0, width: number | UIView = this.width) {\n if (width instanceof UIView) {\n width = width.intrinsicContentWidth(this.height)\n }\n const result = this.rectangleWithX(this.max.x + padding)\n if (width != this.width) {\n result.width = width\n }\n return result\n }\n \n rectangleForPreviousRow(padding: number = 0) {\n return this.rectangleWithY(this.min.y - this.height - padding)\n }\n \n rectangleForPreviousColumn(padding: number = 0) {\n return this.rectangleWithX(this.min.x - this.width - padding)\n }\n \n \n // Bounding box\n static boundingBoxForPoints(points: string | any[]) {\n const result = new UIRectangle()\n for (let i = 0; i < points.length; i++) {\n result.updateByAddingPoint(points[i])\n }\n return result\n }\n \n \n beginUpdates() {\n this._isBeingUpdated = YES\n }\n \n finishUpdates() {\n this._isBeingUpdated = NO\n this.didChange()\n }\n \n \n didChange() {\n \n // Callback to be set by delegate\n \n }\n \n _rectanglePointDidChange() {\n if (!this._isBeingUpdated) {\n this.didChange()\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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",
|
|
4
|
+
"sourcesContent": ["import { FIRST_OR_NIL, IS, IS_NIL, IS_NOT_NIL, nil, NO, UIObject, YES } from \"./UIObject\"\nimport { UIPoint } from \"./UIPoint\"\nimport { UIView } from \"./UIView\"\n\n\nexport class UIRectangle extends UIObject {\n \n _isBeingUpdated: boolean\n rectanglePointDidChange: (b: any) => void = nil\n max: UIPoint\n min: UIPoint\n \n \n constructor(x: number = 0, y: number = 0, height: number = 0, width: number = 0) {\n \n super()\n \n this.min = new UIPoint(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)\n this.max = new UIPoint(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY)\n \n this.min.didChange = (point) => {\n this.rectanglePointDidChange(point)\n this._rectanglePointDidChange()\n }\n this.max.didChange = (point) => {\n this.rectanglePointDidChange(point)\n this._rectanglePointDidChange()\n }\n \n this._isBeingUpdated = NO\n \n this.min = new UIPoint(x, y)\n this.max = new UIPoint(x + width, y + height)\n \n if (IS_NIL(height)) {\n this.max.y = height\n }\n \n if (IS_NIL(width)) {\n this.max.x = width\n }\n \n }\n \n \n copy() {\n return new UIRectangle(this.x, this.y, this.height, this.width)\n }\n \n isEqualTo(rectangle: UIRectangle | null | undefined) {\n return (IS(rectangle) && this.min.isEqualTo(rectangle.min) && this.max.isEqualTo(rectangle.max))\n }\n \n static zero() {\n return new UIRectangle(0, 0, 0, 0)\n }\n \n containsPoint(point: UIPoint) {\n return this.min.x <= point.x && this.min.y <= point.y &&\n point.x <= this.max.x && point.y <= this.max.y\n }\n \n updateByAddingPoint(point: UIPoint) {\n \n if (!point) {\n point = new UIPoint(0, 0)\n }\n \n this.beginUpdates()\n \n const min = this.min.copy()\n if (min.x === nil) {\n min.x = this.max.x\n }\n if (min.y === nil) {\n min.y = this.max.y\n }\n \n const max = this.max.copy()\n if (max.x === nil) {\n max.x = this.min.x\n }\n if (max.y === nil) {\n max.y = this.min.y\n }\n \n this.min.x = Math.min(min.x, point.x)\n this.min.y = Math.min(min.y, point.y)\n this.max.x = Math.max(max.x, point.x)\n this.max.y = Math.max(max.y, point.y)\n \n this.finishUpdates()\n \n }\n \n scale(scale: number) {\n if (IS_NOT_NIL(this.max.y)) {\n this.height = this.height * scale\n }\n if (IS_NOT_NIL(this.max.x)) {\n this.width = this.width * scale\n }\n }\n \n get height() {\n if (this.max.y === nil) {\n return nil\n }\n return this.max.y - this.min.y\n }\n \n set height(height: number) {\n this.max.y = this.min.y + height\n }\n \n \n get width() {\n if (this.max.x === nil) {\n return nil\n }\n return this.max.x - this.min.x\n }\n \n set width(width: number) {\n this.max.x = this.min.x + width\n }\n \n \n get x() {\n return this.min.x\n }\n \n set x(x: number) {\n \n this.beginUpdates()\n \n const width = this.width\n this.min.x = x\n this.max.x = this.min.x + width\n \n this.finishUpdates()\n \n }\n \n \n get y() {\n return this.min.y\n }\n \n \n set y(y: number) {\n \n this.beginUpdates()\n \n const height = this.height\n this.min.y = y\n this.max.y = this.min.y + height\n \n this.finishUpdates()\n \n }\n \n \n get topLeft() {\n return this.min.copy()\n }\n \n get topRight() {\n return new UIPoint(this.max.x, this.y)\n }\n \n get bottomLeft() {\n return new UIPoint(this.x, this.max.y)\n }\n \n get bottomRight() {\n return this.max.copy()\n }\n \n \n get center() {\n return this.min.copy().add(this.min.to(this.max).scale(0.5))\n }\n \n set center(center: UIPoint) {\n const offset = this.center.to(center)\n this.offsetByPoint(offset)\n }\n \n offsetByPoint(offset: UIPoint) {\n this.min.add(offset)\n this.max.add(offset)\n \n return this\n }\n \n \n concatenateWithRectangle(rectangle: UIRectangle) {\n this.updateByAddingPoint(rectangle.bottomRight)\n this.updateByAddingPoint(rectangle.topLeft)\n return this\n }\n \n \n intersectionRectangleWithRectangle(rectangle: UIRectangle): UIRectangle {\n \n const result = this.copy()\n \n result.beginUpdates()\n \n const min = result.min\n if (min.x === nil) {\n min.x = rectangle.max.x - Math.min(result.width, rectangle.width)\n }\n if (min.y === nil) {\n min.y = rectangle.max.y - Math.min(result.height, rectangle.height)\n }\n \n const max = result.max\n if (max.x === nil) {\n max.x = rectangle.min.x + Math.min(result.width, rectangle.width)\n }\n if (max.y === nil) {\n max.y = rectangle.min.y + Math.min(result.height, rectangle.height)\n }\n \n result.min.x = Math.max(result.min.x, rectangle.min.x)\n result.min.y = Math.max(result.min.y, rectangle.min.y)\n result.max.x = Math.min(result.max.x, rectangle.max.x)\n result.max.y = Math.min(result.max.y, rectangle.max.y)\n \n \n if (result.height < 0) {\n \n const averageY = (this.center.y + rectangle.center.y) * 0.5\n result.min.y = averageY\n result.max.y = averageY\n \n }\n \n if (result.width < 0) {\n \n const averageX = (this.center.x + rectangle.center.x) * 0.5\n result.min.x = averageX\n result.max.x = averageX\n \n }\n \n result.finishUpdates()\n \n return result\n \n }\n \n \n get area() {\n return this.height * this.width\n }\n \n \n intersectsWithRectangle(rectangle: UIRectangle) {\n return (this.intersectionRectangleWithRectangle(rectangle).area != 0)\n }\n \n \n // add some space around the rectangle\n rectangleWithInsets(left: number, right: number, bottom: number, top: number) {\n const result = this.copy()\n result.min.x = this.min.x + left\n result.max.x = this.max.x - right\n result.min.y = this.min.y + top\n result.max.y = this.max.y - bottom\n return result\n }\n \n rectangleWithInset(inset: number) {\n return this.rectangleWithInsets(inset, inset, inset, inset)\n }\n \n rectangleWithHeight(height: number, centeredOnPosition: number = nil) {\n \n if (isNaN(centeredOnPosition)) {\n centeredOnPosition = nil\n }\n \n const result = this.copy()\n result.height = height\n \n if (centeredOnPosition != nil) {\n const change = height - this.height\n result.offsetByPoint(new UIPoint(0, change * centeredOnPosition).scale(-1))\n }\n \n return result\n \n }\n \n rectangleWithWidth(width: number, centeredOnPosition: number = nil) {\n \n if (isNaN(centeredOnPosition)) {\n centeredOnPosition = nil\n }\n \n const result = this.copy()\n result.width = width\n \n if (centeredOnPosition != nil) {\n const change = width - this.width\n result.offsetByPoint(new UIPoint(change * centeredOnPosition, 0).scale(-1))\n }\n \n return result\n \n }\n \n rectangleWithHeightRelativeToWidth(heightRatio: number = 1, centeredOnPosition: number = nil) {\n return this.rectangleWithHeight(this.width * heightRatio, centeredOnPosition)\n }\n \n rectangleWithWidthRelativeToHeight(widthRatio: number = 1, centeredOnPosition: number = nil) {\n return this.rectangleWithWidth(this.height * widthRatio, centeredOnPosition)\n }\n \n rectangleWithX(x: number, centeredOnPosition: number = 0) {\n \n const result = this.copy()\n result.x = x - result.width * centeredOnPosition\n \n return result\n \n }\n \n rectangleWithY(y: number, centeredOnPosition: number = 0) {\n \n const result = this.copy()\n result.y = y - result.height * centeredOnPosition\n \n return result\n \n }\n \n \n rectangleByAddingX(x: number) {\n \n const result = this.copy()\n result.x = this.x + x\n \n return result\n \n }\n \n rectangleByAddingY(y: number) {\n \n const result = this.copy()\n result.y = this.y + y\n \n return result\n \n }\n \n \n rectangleWithRelativeValues(\n relativeXPosition: number,\n widthMultiplier: number,\n relativeYPosition: number,\n heightMultiplier: number\n ) {\n \n const result = this.copy()\n \n const width = result.width\n const height = result.height\n \n result.width = widthMultiplier * width\n result.height = heightMultiplier * height\n \n result.center = new UIPoint(\n relativeXPosition * width,\n relativeYPosition * height\n )\n \n return result\n \n }\n \n \n rectanglesBySplittingWidth(\n weights: number[],\n paddings: number | number[] = 0,\n absoluteWidths: number | number[] = nil\n ) {\n \n if (IS_NIL(paddings)) {\n paddings = 1\n }\n if (!((paddings as any) instanceof Array)) {\n paddings = [paddings].arrayByRepeating(weights.length - 1)\n }\n paddings = (paddings as number[]).arrayByTrimmingToLengthIfLonger(weights.length - 1)\n if (!(absoluteWidths instanceof Array) && IS_NOT_NIL(absoluteWidths)) {\n absoluteWidths = [absoluteWidths].arrayByRepeating(weights.length)\n }\n \n const result: UIRectangle[] = []\n const sumOfWeights = weights.reduce(\n (a, b, index) => {\n if (IS_NOT_NIL((absoluteWidths as number[])[index])) {\n b = 0\n }\n return a + b\n },\n 0\n )\n const sumOfPaddings = paddings.summedValue\n const sumOfAbsoluteWidths = (absoluteWidths as number[]).summedValue\n const totalRelativeWidth = this.width - sumOfPaddings - sumOfAbsoluteWidths\n let previousCellMaxX = this.x\n \n for (let i = 0; i < weights.length; i++) {\n \n let resultWidth: number\n if (IS_NOT_NIL(absoluteWidths[i])) {\n resultWidth = absoluteWidths[i] || 0\n }\n else {\n resultWidth = totalRelativeWidth * (weights[i] / sumOfWeights)\n }\n \n const rectangle = this.rectangleWithWidth(resultWidth)\n \n let padding = 0\n if (paddings.length > i && paddings[i]) {\n padding = paddings[i]\n }\n \n rectangle.x = previousCellMaxX\n previousCellMaxX = rectangle.max.x + padding\n result.push(rectangle)\n \n }\n \n return result\n \n }\n \n rectanglesBySplittingHeight(\n weights: number[],\n paddings: number | number[] = 0,\n absoluteHeights: number | number[] = nil\n ) {\n \n if (IS_NIL(paddings)) {\n paddings = 1\n }\n if (!((paddings as any) instanceof Array)) {\n paddings = [paddings].arrayByRepeating(weights.length - 1)\n }\n paddings = (paddings as number[]).arrayByTrimmingToLengthIfLonger(weights.length - 1)\n if (!(absoluteHeights instanceof Array) && IS_NOT_NIL(absoluteHeights)) {\n absoluteHeights = [absoluteHeights].arrayByRepeating(weights.length)\n }\n \n const result: UIRectangle[] = []\n const sumOfWeights = weights.reduce(\n (a, b, index) => {\n if (IS_NOT_NIL((absoluteHeights as number[])[index])) {\n b = 0\n }\n return a + b\n },\n 0\n )\n const sumOfPaddings = paddings.summedValue\n const sumOfAbsoluteHeights = (absoluteHeights as number[]).summedValue\n const totalRelativeHeight = this.height - sumOfPaddings - sumOfAbsoluteHeights\n var previousCellMaxY = this.y\n \n for (var i = 0; i < weights.length; i++) {\n var resultHeight: number\n if (IS_NOT_NIL(absoluteHeights[i])) {\n \n resultHeight = absoluteHeights[i] || 0\n \n }\n else {\n \n resultHeight = totalRelativeHeight * (weights[i] / sumOfWeights)\n \n }\n \n const rectangle = this.rectangleWithHeight(resultHeight)\n \n var padding = 0\n if (paddings.length > i && paddings[i]) {\n padding = paddings[i]\n }\n \n rectangle.y = previousCellMaxY\n previousCellMaxY = rectangle.max.y + padding\n //rectangle = rectangle.rectangleWithInsets(0, 0, padding, 0);\n result.push(rectangle)\n }\n \n return result\n \n }\n \n \n rectanglesByEquallySplittingWidth(numberOfFrames: number, padding: number = 0) {\n const result: UIRectangle[] = []\n const totalPadding = padding * (numberOfFrames - 1)\n const resultWidth = (this.width - totalPadding) / numberOfFrames\n for (var i = 0; i < numberOfFrames; i++) {\n const rectangle = this.rectangleWithWidth(resultWidth, i / (numberOfFrames - 1))\n result.push(rectangle)\n }\n return result\n }\n \n rectanglesByEquallySplittingHeight(numberOfFrames: number, padding: number = 0) {\n const result: UIRectangle[] = []\n const totalPadding = padding * (numberOfFrames - 1)\n const resultHeight = (this.height - totalPadding) / numberOfFrames\n for (var i = 0; i < numberOfFrames; i++) {\n const rectangle = this.rectangleWithHeight(resultHeight, i / (numberOfFrames - 1))\n result.push(rectangle)\n }\n return result\n }\n \n \n distributeViewsAlongWidth(\n views: UIView[],\n weights: number | number[] = 1,\n paddings?: number | number[],\n absoluteWidths?: number | number[]\n ) {\n if (!(weights instanceof Array)) {\n weights = [weights].arrayByRepeating(views.length)\n }\n const frames = this.rectanglesBySplittingWidth(weights, paddings, absoluteWidths)\n frames.forEach((frame, index) => FIRST_OR_NIL(views[index]).frame = frame)\n return this\n }\n \n distributeViewsAlongHeight(\n views: UIView[],\n weights: number | number[] = 1,\n paddings?: number | number[],\n absoluteHeights?: number | number[]\n ) {\n if (!(weights instanceof Array)) {\n weights = [weights].arrayByRepeating(views.length)\n }\n const frames = this.rectanglesBySplittingHeight(weights, paddings, absoluteHeights)\n frames.forEach((frame, index) => FIRST_OR_NIL(views[index]).frame = frame)\n return this\n }\n \n \n distributeViewsEquallyAlongWidth(views: UIView[], padding: number) {\n const frames = this.rectanglesByEquallySplittingWidth(views.length, padding)\n frames.forEach((frame, index) => views[index].frame = frame)\n return this\n }\n \n distributeViewsEquallyAlongHeight(views: UIView[], padding: number) {\n const frames = this.rectanglesByEquallySplittingHeight(views.length, padding)\n frames.forEach((frame, index) => views[index].frame = frame)\n return this\n }\n \n \n rectangleForNextRow(padding: number = 0, height: number | ((constrainingWidth: number) => number) = this.height) {\n if (height instanceof Function) {\n height = height(this.width)\n }\n const result = this.rectangleWithY(this.max.y + padding)\n if (height != this.height) {\n result.height = height\n }\n return result\n }\n \n rectangleForNextColumn(padding: number = 0, width: number | ((constrainingHeight: number) => number) = this.width) {\n if (width instanceof Function) {\n width = width(this.height)\n }\n const result = this.rectangleWithX(this.max.x + padding)\n if (width != this.width) {\n result.width = width\n }\n return result\n }\n \n rectangleForPreviousRow(padding: number = 0) {\n return this.rectangleWithY(this.min.y - this.height - padding)\n }\n \n rectangleForPreviousColumn(padding: number = 0) {\n return this.rectangleWithX(this.min.x - this.width - padding)\n }\n \n \n // Bounding box\n static boundingBoxForPoints(points: string | any[]) {\n const result = new UIRectangle()\n for (let i = 0; i < points.length; i++) {\n result.updateByAddingPoint(points[i])\n }\n return result\n }\n \n \n beginUpdates() {\n this._isBeingUpdated = YES\n }\n \n finishUpdates() {\n this._isBeingUpdated = NO\n this.didChange()\n }\n \n \n didChange() {\n \n // Callback to be set by delegate\n \n }\n \n _rectanglePointDidChange() {\n if (!this._isBeingUpdated) {\n this.didChange()\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
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uicore-ts",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.220",
|
|
4
4
|
"description": "UICore is a library to build native-like user interfaces using pure Typescript. No HTML is needed at all. Components are described as TS classes and all user interactions are handled explicitly. This library is strongly inspired by the UIKit framework that is used in IOS. In addition, UICore has tools to handle URL based routing, array sorting and filtering and adds a number of other utilities for convenience.",
|
|
5
5
|
"main": "compiledScripts/index.js",
|
|
6
6
|
"types": "compiledScripts/index.d.ts",
|
package/scripts/UIRectangle.ts
CHANGED
|
@@ -571,9 +571,9 @@ export class UIRectangle extends UIObject {
|
|
|
571
571
|
}
|
|
572
572
|
|
|
573
573
|
|
|
574
|
-
rectangleForNextRow(padding: number = 0, height: number |
|
|
575
|
-
if (height instanceof
|
|
576
|
-
height = height
|
|
574
|
+
rectangleForNextRow(padding: number = 0, height: number | ((constrainingWidth: number) => number) = this.height) {
|
|
575
|
+
if (height instanceof Function) {
|
|
576
|
+
height = height(this.width)
|
|
577
577
|
}
|
|
578
578
|
const result = this.rectangleWithY(this.max.y + padding)
|
|
579
579
|
if (height != this.height) {
|
|
@@ -582,9 +582,9 @@ export class UIRectangle extends UIObject {
|
|
|
582
582
|
return result
|
|
583
583
|
}
|
|
584
584
|
|
|
585
|
-
rectangleForNextColumn(padding: number = 0, width: number |
|
|
586
|
-
if (width instanceof
|
|
587
|
-
width = width
|
|
585
|
+
rectangleForNextColumn(padding: number = 0, width: number | ((constrainingHeight: number) => number) = this.width) {
|
|
586
|
+
if (width instanceof Function) {
|
|
587
|
+
width = width(this.height)
|
|
588
588
|
}
|
|
589
589
|
const result = this.rectangleWithX(this.max.x + padding)
|
|
590
590
|
if (width != this.width) {
|