@hpcc-js/common 2.73.3 → 2.73.5

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.
Files changed (59) hide show
  1. package/LICENSE +43 -43
  2. package/README.md +59 -59
  3. package/dist/index.es6.js +2 -2
  4. package/dist/index.es6.js.map +1 -1
  5. package/dist/index.js +2 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.min.js +1 -1
  8. package/dist/index.min.js.map +1 -1
  9. package/package.json +3 -3
  10. package/src/CanvasWidget.ts +31 -31
  11. package/src/Class.ts +67 -67
  12. package/src/Database.ts +856 -856
  13. package/src/Entity.ts +235 -235
  14. package/src/EntityCard.ts +66 -66
  15. package/src/EntityPin.ts +103 -103
  16. package/src/EntityRect.css +15 -15
  17. package/src/EntityRect.ts +236 -236
  18. package/src/EntityVertex.ts +86 -86
  19. package/src/FAChar.css +2 -2
  20. package/src/FAChar.ts +82 -82
  21. package/src/HTMLWidget.ts +191 -191
  22. package/src/IList.ts +4 -4
  23. package/src/IMenu.ts +5 -5
  24. package/src/Icon.css +9 -9
  25. package/src/Icon.ts +164 -164
  26. package/src/Image.ts +95 -95
  27. package/src/List.css +13 -13
  28. package/src/List.ts +99 -99
  29. package/src/Menu.css +23 -23
  30. package/src/Menu.ts +134 -134
  31. package/src/Palette.ts +341 -341
  32. package/src/Platform.ts +125 -125
  33. package/src/ProgressBar.ts +105 -105
  34. package/src/PropertyExt.ts +793 -793
  35. package/src/ResizeSurface.css +39 -39
  36. package/src/ResizeSurface.ts +221 -221
  37. package/src/SVGWidget.ts +567 -567
  38. package/src/SVGZoomWidget.css +12 -12
  39. package/src/SVGZoomWidget.ts +426 -426
  40. package/src/Shape.css +3 -3
  41. package/src/Shape.ts +186 -186
  42. package/src/Surface.css +35 -35
  43. package/src/Surface.ts +349 -349
  44. package/src/Text.css +4 -4
  45. package/src/Text.ts +131 -131
  46. package/src/TextBox.css +4 -4
  47. package/src/TextBox.ts +168 -168
  48. package/src/TitleBar.css +99 -99
  49. package/src/TitleBar.ts +401 -401
  50. package/src/Transition.ts +45 -45
  51. package/src/Utility.ts +839 -839
  52. package/src/Widget.css +8 -8
  53. package/src/Widget.ts +730 -730
  54. package/src/WidgetArray.ts +13 -13
  55. package/src/__package__.ts +3 -3
  56. package/src/index.ts +55 -55
  57. package/types/__package__.d.ts +2 -2
  58. package/types/__package__.d.ts.map +1 -1
  59. package/types-3.4/__package__.d.ts +2 -2
package/src/Text.css CHANGED
@@ -1,4 +1,4 @@
1
- .common_Text {
2
- fill: #000;
3
- font-size: 12px;
4
- }
1
+ .common_Text {
2
+ fill: #000;
3
+ font-size: 12px;
4
+ }
package/src/Text.ts CHANGED
@@ -1,131 +1,131 @@
1
- import { SVGWidget } from "./SVGWidget";
2
-
3
- import "../src/Text.css";
4
-
5
- export class Text extends SVGWidget {
6
-
7
- private _textElement;
8
-
9
- constructor() {
10
- super();
11
- }
12
-
13
- getBBox(refresh = false, round = false) {
14
- const textParts = this.text().split("\n");
15
- const lineHeight = this.fontSize() || 12;
16
- const height = lineHeight * textParts.length;
17
- const widths: number[] = textParts.map(line => {
18
- return this.textSize(line, this.fontFamily() || "Verdana", lineHeight).width;
19
- });
20
- const width = Math.max(...widths);
21
- const retVal = {
22
- x: - width / 2,
23
- y: - height / 2 - lineHeight / (this.fontFamily() === "FontAwesome" ? 4 : 6), // baseLine offset
24
- width,
25
- height
26
- };
27
- switch (this.anchor()) {
28
- case "start":
29
- retVal.x = 0;
30
- break;
31
- case "end":
32
- retVal.x = -width;
33
- break;
34
- }
35
- return retVal;
36
- }
37
-
38
- enter(domNode, element) {
39
- super.enter(domNode, element);
40
- delete this._prevHash;
41
- this._textElement = element.append("text")
42
- .on("click", () => {
43
- this.click();
44
- })
45
- .on("dblclick", () => {
46
- this.dblclick();
47
- })
48
- ;
49
- }
50
-
51
- _prevHash;
52
- update(domNode, element) {
53
- super.update(domNode, element);
54
- const hash = this.hashSum([], { width: this.width() });
55
- if (this._prevHash !== hash) {
56
- this._prevHash = hash;
57
-
58
- const bbox = this.getBBox();
59
-
60
- this._textElement
61
- .style("font-size", this.fontSize())
62
- .style("text-anchor", this.anchor())
63
- .attr("transform", d => `rotate(${this.rotation()}) translate(0,${bbox.y})`)
64
- ;
65
-
66
- const width = this.width();
67
- const context = this;
68
- const textParts = this.text().split("\n");
69
- const textLine = this._textElement.selectAll("tspan").data(textParts);
70
- textLine.enter().append("tspan")
71
- .attr("class", function (_d, i) { return "tspan_" + i; })
72
- .attr("dy", "1em")
73
- .attr("x", "0")
74
- .merge(textLine)
75
- .style("font-family", this.fontFamily())
76
- .style("fill", this.colorFill())
77
- .style("stroke", this.colorStroke())
78
- .text((d: string) => {
79
- if (!width) return d;
80
- let retVal = d;
81
- const lineHeight = context.fontSize() || 12;
82
- let clipPos = retVal.length - 1;
83
- while (clipPos > -3 && this.textSize(retVal, this.fontFamily() || "Verdana", lineHeight).width > width) {
84
- retVal = retVal.substr(0, --clipPos) + "...".substr(0, clipPos + 3);
85
- }
86
- return retVal;
87
- })
88
- ;
89
- textLine.exit()
90
- .remove()
91
- ;
92
-
93
- }
94
- }
95
-
96
- click() {
97
- }
98
-
99
- dblclick() {
100
- }
101
- }
102
- Text.prototype._class += " common_Text";
103
-
104
- export interface Text {
105
- text(): string;
106
- text(_: string): this;
107
- fontFamily(): string;
108
- fontFamily(_: string): this;
109
- fontSize(): number;
110
- fontSize(_: number): this;
111
- anchor(): "start" | "middle" | "end";
112
- anchor(_: "start" | "middle" | "end"): this;
113
- colorFill(): string;
114
- colorFill(_: string): this;
115
- colorFill_default(): string;
116
- colorFill_default(_: string): this;
117
- colorStroke(): string;
118
- colorStroke(_: string): this;
119
- colorStroke_default(): string;
120
- colorStroke_default(_: string): this;
121
- rotation(): number;
122
- rotation(_: number): Text;
123
- }
124
-
125
- Text.prototype.publish("text", "", "string", "Display Text", null, { tags: ["Basic"] });
126
- Text.prototype.publish("fontFamily", null, "string", "Font Family", null, { tags: ["Intermediate"], optional: true });
127
- Text.prototype.publish("fontSize", null, "number", "Font Size (pixels)", null, { tags: ["Intermediate"] });
128
- Text.prototype.publish("anchor", "middle", "set", "Anchor Position", ["start", "middle", "end"], { tags: ["Intermediate"] });
129
- Text.prototype.publish("colorFill", null, "html-color", "Fill Color", null, { tags: ["Basic"] });
130
- Text.prototype.publish("colorStroke", null, "html-color", "Fill Color", null, { tags: ["Basic"] });
131
- Text.prototype.publish("rotation", 0, "number", "Degrees of rotation", null, { tags: ["Basic"] });
1
+ import { SVGWidget } from "./SVGWidget";
2
+
3
+ import "../src/Text.css";
4
+
5
+ export class Text extends SVGWidget {
6
+
7
+ private _textElement;
8
+
9
+ constructor() {
10
+ super();
11
+ }
12
+
13
+ getBBox(refresh = false, round = false) {
14
+ const textParts = this.text().split("\n");
15
+ const lineHeight = this.fontSize() || 12;
16
+ const height = lineHeight * textParts.length;
17
+ const widths: number[] = textParts.map(line => {
18
+ return this.textSize(line, this.fontFamily() || "Verdana", lineHeight).width;
19
+ });
20
+ const width = Math.max(...widths);
21
+ const retVal = {
22
+ x: - width / 2,
23
+ y: - height / 2 - lineHeight / (this.fontFamily() === "FontAwesome" ? 4 : 6), // baseLine offset
24
+ width,
25
+ height
26
+ };
27
+ switch (this.anchor()) {
28
+ case "start":
29
+ retVal.x = 0;
30
+ break;
31
+ case "end":
32
+ retVal.x = -width;
33
+ break;
34
+ }
35
+ return retVal;
36
+ }
37
+
38
+ enter(domNode, element) {
39
+ super.enter(domNode, element);
40
+ delete this._prevHash;
41
+ this._textElement = element.append("text")
42
+ .on("click", () => {
43
+ this.click();
44
+ })
45
+ .on("dblclick", () => {
46
+ this.dblclick();
47
+ })
48
+ ;
49
+ }
50
+
51
+ _prevHash;
52
+ update(domNode, element) {
53
+ super.update(domNode, element);
54
+ const hash = this.hashSum([], { width: this.width() });
55
+ if (this._prevHash !== hash) {
56
+ this._prevHash = hash;
57
+
58
+ const bbox = this.getBBox();
59
+
60
+ this._textElement
61
+ .style("font-size", this.fontSize())
62
+ .style("text-anchor", this.anchor())
63
+ .attr("transform", d => `rotate(${this.rotation()}) translate(0,${bbox.y})`)
64
+ ;
65
+
66
+ const width = this.width();
67
+ const context = this;
68
+ const textParts = this.text().split("\n");
69
+ const textLine = this._textElement.selectAll("tspan").data(textParts);
70
+ textLine.enter().append("tspan")
71
+ .attr("class", function (_d, i) { return "tspan_" + i; })
72
+ .attr("dy", "1em")
73
+ .attr("x", "0")
74
+ .merge(textLine)
75
+ .style("font-family", this.fontFamily())
76
+ .style("fill", this.colorFill())
77
+ .style("stroke", this.colorStroke())
78
+ .text((d: string) => {
79
+ if (!width) return d;
80
+ let retVal = d;
81
+ const lineHeight = context.fontSize() || 12;
82
+ let clipPos = retVal.length - 1;
83
+ while (clipPos > -3 && this.textSize(retVal, this.fontFamily() || "Verdana", lineHeight).width > width) {
84
+ retVal = retVal.substr(0, --clipPos) + "...".substr(0, clipPos + 3);
85
+ }
86
+ return retVal;
87
+ })
88
+ ;
89
+ textLine.exit()
90
+ .remove()
91
+ ;
92
+
93
+ }
94
+ }
95
+
96
+ click() {
97
+ }
98
+
99
+ dblclick() {
100
+ }
101
+ }
102
+ Text.prototype._class += " common_Text";
103
+
104
+ export interface Text {
105
+ text(): string;
106
+ text(_: string): this;
107
+ fontFamily(): string;
108
+ fontFamily(_: string): this;
109
+ fontSize(): number;
110
+ fontSize(_: number): this;
111
+ anchor(): "start" | "middle" | "end";
112
+ anchor(_: "start" | "middle" | "end"): this;
113
+ colorFill(): string;
114
+ colorFill(_: string): this;
115
+ colorFill_default(): string;
116
+ colorFill_default(_: string): this;
117
+ colorStroke(): string;
118
+ colorStroke(_: string): this;
119
+ colorStroke_default(): string;
120
+ colorStroke_default(_: string): this;
121
+ rotation(): number;
122
+ rotation(_: number): Text;
123
+ }
124
+
125
+ Text.prototype.publish("text", "", "string", "Display Text", null, { tags: ["Basic"] });
126
+ Text.prototype.publish("fontFamily", null, "string", "Font Family", null, { tags: ["Intermediate"], optional: true });
127
+ Text.prototype.publish("fontSize", null, "number", "Font Size (pixels)", null, { tags: ["Intermediate"] });
128
+ Text.prototype.publish("anchor", "middle", "set", "Anchor Position", ["start", "middle", "end"], { tags: ["Intermediate"] });
129
+ Text.prototype.publish("colorFill", null, "html-color", "Fill Color", null, { tags: ["Basic"] });
130
+ Text.prototype.publish("colorStroke", null, "html-color", "Fill Color", null, { tags: ["Basic"] });
131
+ Text.prototype.publish("rotation", 0, "number", "Degrees of rotation", null, { tags: ["Basic"] });
package/src/TextBox.css CHANGED
@@ -1,4 +1,4 @@
1
- .common_TextBox .common_Shape {
2
- fill: #dcf1ff;
3
- stroke: #1f77b4;
4
- }
1
+ .common_TextBox .common_Shape {
2
+ fill: #dcf1ff;
3
+ stroke: #1f77b4;
4
+ }
package/src/TextBox.ts CHANGED
@@ -1,168 +1,168 @@
1
- import { textColor } from "./Palette";
2
- import { Shape } from "./Shape";
3
- import { SVGWidget } from "./SVGWidget";
4
- import { Text } from "./Text";
5
- import { ISize } from "./Widget";
6
-
7
- import "../src/TextBox.css";
8
-
9
- export class TextBox extends SVGWidget {
10
-
11
- protected _shape: Shape;
12
- protected _text: Text;
13
-
14
- constructor() {
15
- super();
16
-
17
- this._shape = new Shape()
18
- .shape("rect")
19
- .on("click", () => {
20
- this.click();
21
- })
22
- .on("dblclick", () => {
23
- this.dblclick();
24
- })
25
- ;
26
- this._text = new Text()
27
- .on("click", () => {
28
- this.click();
29
- })
30
- .on("dblclick", () => {
31
- this.dblclick();
32
- })
33
- ;
34
- }
35
-
36
- padding(_) {
37
- this.paddingLeft(_);
38
- this.paddingRight(_);
39
- this.paddingTop(_);
40
- this.paddingBottom(_);
41
- return this;
42
- }
43
-
44
- getTextX(width) {
45
- switch (this.anchor()) {
46
- case "start":
47
- return -width / 2;
48
- case "end":
49
- return width / 2;
50
- }
51
- return 0;
52
- }
53
-
54
- getBBox(refresh = false, round = false) {
55
- const textBBox = this._text.getBBox(true);
56
- const width = this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight();
57
- const height = this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom();
58
- return {
59
- x: -width - 2,
60
- y: -height - 2,
61
- width,
62
- height
63
- };
64
- }
65
-
66
- enter(domNode, element) {
67
- super.enter(domNode, element);
68
- delete this._prevHash;
69
- this._shape
70
- .target(domNode)
71
- .tooltip(this.tooltip())
72
- ;
73
- this._text
74
- .target(domNode)
75
- ;
76
- }
77
-
78
- _prevHash;
79
- update(domNode, element) {
80
- super.update(domNode, element);
81
- const hash = this.hashSum();
82
- if (this._prevHash !== hash) {
83
- this._prevHash = hash;
84
-
85
- const textBBox = this._text.getBBox(true);
86
- const size = {
87
- width: this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight(),
88
- height: this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom()
89
- };
90
-
91
- this._shape
92
- .width(size.width)
93
- .height(size.height)
94
- .render()
95
- ;
96
-
97
- this._text
98
- .x(this.getTextX(textBBox.width))
99
- .colorFill_default(this._shape.colorFill_exists() ? textColor(this._shape.colorFill()) : undefined)
100
- .render()
101
- ;
102
-
103
- if (this.fixedSize()) {
104
- switch (this.anchor()) {
105
- case "start":
106
- this._text
107
- .x(-this.fixedSize().width / 2 + textBBox.width / 2 + (this.paddingLeft() + this.paddingRight()) / 2)
108
- .render()
109
- ;
110
- break;
111
- case "end":
112
- this._text
113
- .x(this.fixedSize().width / 2 - textBBox.width / 2 - (this.paddingLeft() + this.paddingRight()) / 2)
114
- .render()
115
- ;
116
- break;
117
- }
118
- }
119
- this._text.visible(textBBox.width <= size.width && textBBox.height <= size.height);
120
- }
121
- }
122
-
123
- exit(domNode, element) {
124
- this._shape
125
- .target(null)
126
- ;
127
- this._text
128
- .target(null)
129
- ;
130
- super.exit(domNode, element);
131
- }
132
-
133
- click() {
134
- }
135
-
136
- dblclick() {
137
- }
138
-
139
- text: { (): string; (_: string): TextBox; };
140
- fontSize: { (): number; (_: number): TextBox; };
141
- shape_colorFill: { (): string; (_: string): TextBox; };
142
- shape_colorStroke: { (): string; (_: string): TextBox; };
143
- text_colorFill: { (): string; (_: string): TextBox; };
144
- text_fontFamily: { (): string; (_: string): TextBox; };
145
- paddingLeft: { (): number; (_: number): TextBox; };
146
- paddingRight: { (): number; (_: number): TextBox; };
147
- paddingTop: { (): number; (_: number): TextBox; };
148
- paddingBottom: { (): number; (_: number): TextBox; };
149
- anchor: { (): "start" | "middle" | "end"; (_: "start" | "middle" | "end"): TextBox; };
150
- fixedSize: { (): ISize; (_: ISize): TextBox; };
151
- tooltip: { (): string; (_: string): TextBox; };
152
- }
153
- TextBox.prototype._class += " common_TextBox";
154
-
155
- TextBox.prototype.publishProxy("text", "_text");
156
- TextBox.prototype.publishProxy("fontSize", "_text", "fontSize");
157
- TextBox.prototype.publishProxy("shape_colorStroke", "_shape", "colorStroke");
158
- TextBox.prototype.publishProxy("shape_colorFill", "_shape", "colorFill");
159
- TextBox.prototype.publishProxy("text_colorFill", "_text", "colorFill");
160
- TextBox.prototype.publishProxy("text_fontFamily", "_text", "fontFamily");
161
- TextBox.prototype.publish("paddingLeft", 4, "number", "Left padding (in pixels)", null, { tags: ["Private"] });
162
- TextBox.prototype.publish("paddingRight", 4, "number", "Right padding (in pixels)", null, { tags: ["Private"] });
163
- TextBox.prototype.publish("paddingTop", 4, "number", "Top padding (in pixels)", null, { tags: ["Private"] });
164
- TextBox.prototype.publish("paddingBottom", 4, "number", "Bottom padding (in pixels)", null, { tags: ["Private"] });
165
- TextBox.prototype.publishProxy("anchor", "_text");
166
- TextBox.prototype.publish("fixedSize", null);
167
-
168
- TextBox.prototype.publish("tooltip", "", "string", "Tooltip", null, { tags: ["Private"] });
1
+ import { textColor } from "./Palette";
2
+ import { Shape } from "./Shape";
3
+ import { SVGWidget } from "./SVGWidget";
4
+ import { Text } from "./Text";
5
+ import { ISize } from "./Widget";
6
+
7
+ import "../src/TextBox.css";
8
+
9
+ export class TextBox extends SVGWidget {
10
+
11
+ protected _shape: Shape;
12
+ protected _text: Text;
13
+
14
+ constructor() {
15
+ super();
16
+
17
+ this._shape = new Shape()
18
+ .shape("rect")
19
+ .on("click", () => {
20
+ this.click();
21
+ })
22
+ .on("dblclick", () => {
23
+ this.dblclick();
24
+ })
25
+ ;
26
+ this._text = new Text()
27
+ .on("click", () => {
28
+ this.click();
29
+ })
30
+ .on("dblclick", () => {
31
+ this.dblclick();
32
+ })
33
+ ;
34
+ }
35
+
36
+ padding(_) {
37
+ this.paddingLeft(_);
38
+ this.paddingRight(_);
39
+ this.paddingTop(_);
40
+ this.paddingBottom(_);
41
+ return this;
42
+ }
43
+
44
+ getTextX(width) {
45
+ switch (this.anchor()) {
46
+ case "start":
47
+ return -width / 2;
48
+ case "end":
49
+ return width / 2;
50
+ }
51
+ return 0;
52
+ }
53
+
54
+ getBBox(refresh = false, round = false) {
55
+ const textBBox = this._text.getBBox(true);
56
+ const width = this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight();
57
+ const height = this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom();
58
+ return {
59
+ x: -width - 2,
60
+ y: -height - 2,
61
+ width,
62
+ height
63
+ };
64
+ }
65
+
66
+ enter(domNode, element) {
67
+ super.enter(domNode, element);
68
+ delete this._prevHash;
69
+ this._shape
70
+ .target(domNode)
71
+ .tooltip(this.tooltip())
72
+ ;
73
+ this._text
74
+ .target(domNode)
75
+ ;
76
+ }
77
+
78
+ _prevHash;
79
+ update(domNode, element) {
80
+ super.update(domNode, element);
81
+ const hash = this.hashSum();
82
+ if (this._prevHash !== hash) {
83
+ this._prevHash = hash;
84
+
85
+ const textBBox = this._text.getBBox(true);
86
+ const size = {
87
+ width: this.fixedSize() ? this.fixedSize().width : textBBox.width + this.paddingLeft() + this.paddingRight(),
88
+ height: this.fixedSize() ? this.fixedSize().height : textBBox.height + this.paddingTop() + this.paddingBottom()
89
+ };
90
+
91
+ this._shape
92
+ .width(size.width)
93
+ .height(size.height)
94
+ .render()
95
+ ;
96
+
97
+ this._text
98
+ .x(this.getTextX(textBBox.width))
99
+ .colorFill_default(this._shape.colorFill_exists() ? textColor(this._shape.colorFill()) : undefined)
100
+ .render()
101
+ ;
102
+
103
+ if (this.fixedSize()) {
104
+ switch (this.anchor()) {
105
+ case "start":
106
+ this._text
107
+ .x(-this.fixedSize().width / 2 + textBBox.width / 2 + (this.paddingLeft() + this.paddingRight()) / 2)
108
+ .render()
109
+ ;
110
+ break;
111
+ case "end":
112
+ this._text
113
+ .x(this.fixedSize().width / 2 - textBBox.width / 2 - (this.paddingLeft() + this.paddingRight()) / 2)
114
+ .render()
115
+ ;
116
+ break;
117
+ }
118
+ }
119
+ this._text.visible(textBBox.width <= size.width && textBBox.height <= size.height);
120
+ }
121
+ }
122
+
123
+ exit(domNode, element) {
124
+ this._shape
125
+ .target(null)
126
+ ;
127
+ this._text
128
+ .target(null)
129
+ ;
130
+ super.exit(domNode, element);
131
+ }
132
+
133
+ click() {
134
+ }
135
+
136
+ dblclick() {
137
+ }
138
+
139
+ text: { (): string; (_: string): TextBox; };
140
+ fontSize: { (): number; (_: number): TextBox; };
141
+ shape_colorFill: { (): string; (_: string): TextBox; };
142
+ shape_colorStroke: { (): string; (_: string): TextBox; };
143
+ text_colorFill: { (): string; (_: string): TextBox; };
144
+ text_fontFamily: { (): string; (_: string): TextBox; };
145
+ paddingLeft: { (): number; (_: number): TextBox; };
146
+ paddingRight: { (): number; (_: number): TextBox; };
147
+ paddingTop: { (): number; (_: number): TextBox; };
148
+ paddingBottom: { (): number; (_: number): TextBox; };
149
+ anchor: { (): "start" | "middle" | "end"; (_: "start" | "middle" | "end"): TextBox; };
150
+ fixedSize: { (): ISize; (_: ISize): TextBox; };
151
+ tooltip: { (): string; (_: string): TextBox; };
152
+ }
153
+ TextBox.prototype._class += " common_TextBox";
154
+
155
+ TextBox.prototype.publishProxy("text", "_text");
156
+ TextBox.prototype.publishProxy("fontSize", "_text", "fontSize");
157
+ TextBox.prototype.publishProxy("shape_colorStroke", "_shape", "colorStroke");
158
+ TextBox.prototype.publishProxy("shape_colorFill", "_shape", "colorFill");
159
+ TextBox.prototype.publishProxy("text_colorFill", "_text", "colorFill");
160
+ TextBox.prototype.publishProxy("text_fontFamily", "_text", "fontFamily");
161
+ TextBox.prototype.publish("paddingLeft", 4, "number", "Left padding (in pixels)", null, { tags: ["Private"] });
162
+ TextBox.prototype.publish("paddingRight", 4, "number", "Right padding (in pixels)", null, { tags: ["Private"] });
163
+ TextBox.prototype.publish("paddingTop", 4, "number", "Top padding (in pixels)", null, { tags: ["Private"] });
164
+ TextBox.prototype.publish("paddingBottom", 4, "number", "Bottom padding (in pixels)", null, { tags: ["Private"] });
165
+ TextBox.prototype.publishProxy("anchor", "_text");
166
+ TextBox.prototype.publish("fixedSize", null);
167
+
168
+ TextBox.prototype.publish("tooltip", "", "string", "Tooltip", null, { tags: ["Private"] });