x4js 1.4.2

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 (176) hide show
  1. package/lib/application.d.ts +95 -0
  2. package/lib/application.js +137 -0
  3. package/lib/base64.d.ts +31 -0
  4. package/lib/base64.js +135 -0
  5. package/lib/base_component.d.ts +64 -0
  6. package/lib/base_component.js +77 -0
  7. package/lib/button.d.ts +145 -0
  8. package/lib/button.js +235 -0
  9. package/lib/calendar.d.ts +77 -0
  10. package/lib/calendar.js +236 -0
  11. package/lib/canvas.d.ts +88 -0
  12. package/lib/canvas.js +354 -0
  13. package/lib/cardview.d.ts +83 -0
  14. package/lib/cardview.js +152 -0
  15. package/lib/checkbox.d.ts +72 -0
  16. package/lib/checkbox.js +126 -0
  17. package/lib/color.d.ts +144 -0
  18. package/lib/color.js +584 -0
  19. package/lib/colorpicker.d.ts +98 -0
  20. package/lib/colorpicker.js +1457 -0
  21. package/lib/combobox.d.ts +97 -0
  22. package/lib/combobox.js +246 -0
  23. package/lib/component.d.ts +572 -0
  24. package/lib/component.js +1712 -0
  25. package/lib/datastore.d.ts +392 -0
  26. package/lib/datastore.js +986 -0
  27. package/lib/dialog.d.ts +171 -0
  28. package/lib/dialog.js +468 -0
  29. package/lib/dom_events.d.ts +284 -0
  30. package/lib/dom_events.js +13 -0
  31. package/lib/drag_manager.d.ts +26 -0
  32. package/lib/drag_manager.js +118 -0
  33. package/lib/drawtext.d.ts +43 -0
  34. package/lib/drawtext.js +261 -0
  35. package/lib/fileupload.d.ts +60 -0
  36. package/lib/fileupload.js +158 -0
  37. package/lib/form.d.ts +122 -0
  38. package/lib/form.js +293 -0
  39. package/lib/formatters.d.ts +31 -0
  40. package/lib/formatters.js +75 -0
  41. package/lib/gridview.d.ts +171 -0
  42. package/lib/gridview.js +786 -0
  43. package/lib/hosts/host.d.ts +44 -0
  44. package/lib/hosts/host.js +69 -0
  45. package/lib/i18n.d.ts +67 -0
  46. package/lib/i18n.js +169 -0
  47. package/lib/icon.d.ts +56 -0
  48. package/lib/icon.js +173 -0
  49. package/lib/image.d.ts +51 -0
  50. package/lib/image.js +149 -0
  51. package/lib/index.js +1 -0
  52. package/lib/input.d.ts +86 -0
  53. package/lib/input.js +172 -0
  54. package/lib/label.d.ts +54 -0
  55. package/lib/label.js +86 -0
  56. package/lib/layout.d.ts +77 -0
  57. package/lib/layout.js +261 -0
  58. package/lib/link.d.ts +46 -0
  59. package/lib/link.js +55 -0
  60. package/lib/listview.d.ts +173 -0
  61. package/lib/listview.js +532 -0
  62. package/lib/md5.d.ts +56 -0
  63. package/lib/md5.js +397 -0
  64. package/lib/menu.d.ts +122 -0
  65. package/lib/menu.js +276 -0
  66. package/lib/messagebox.d.ts +64 -0
  67. package/lib/messagebox.js +141 -0
  68. package/lib/panel.d.ts +42 -0
  69. package/lib/panel.js +61 -0
  70. package/lib/popup.d.ts +71 -0
  71. package/lib/popup.js +373 -0
  72. package/lib/property_editor.d.ts +67 -0
  73. package/lib/property_editor.js +247 -0
  74. package/lib/radiobtn.d.ts +68 -0
  75. package/lib/radiobtn.js +131 -0
  76. package/lib/rating.d.ts +49 -0
  77. package/lib/rating.js +93 -0
  78. package/lib/request.d.ts +48 -0
  79. package/lib/request.js +220 -0
  80. package/lib/router.d.ts +13 -0
  81. package/lib/router.js +27 -0
  82. package/lib/settings.d.ts +33 -0
  83. package/lib/settings.js +63 -0
  84. package/lib/sidebarview.d.ts +44 -0
  85. package/lib/sidebarview.js +73 -0
  86. package/lib/smartedit.d.ts +103 -0
  87. package/lib/smartedit.js +381 -0
  88. package/lib/spreadsheet.d.ts +214 -0
  89. package/lib/spreadsheet.js +1073 -0
  90. package/lib/styles.d.ts +81 -0
  91. package/lib/styles.js +262 -0
  92. package/lib/svgcomponent.d.ts +165 -0
  93. package/lib/svgcomponent.js +350 -0
  94. package/lib/tabbar.d.ts +41 -0
  95. package/lib/tabbar.js +66 -0
  96. package/lib/tabview.d.ts +45 -0
  97. package/lib/tabview.js +79 -0
  98. package/lib/textarea.d.ts +59 -0
  99. package/lib/textarea.js +119 -0
  100. package/lib/textedit.d.ts +118 -0
  101. package/lib/textedit.js +406 -0
  102. package/lib/texthiliter.d.ts +56 -0
  103. package/lib/texthiliter.js +219 -0
  104. package/lib/toaster.d.ts +38 -0
  105. package/lib/toaster.js +58 -0
  106. package/lib/tools.d.ts +382 -0
  107. package/lib/tools.js +1096 -0
  108. package/lib/tooltips.d.ts +42 -0
  109. package/lib/tooltips.js +148 -0
  110. package/lib/treeview.d.ts +128 -0
  111. package/lib/treeview.js +490 -0
  112. package/lib/x4_events.d.ts +253 -0
  113. package/lib/x4_events.js +363 -0
  114. package/package.json +21 -0
  115. package/src/README.md +2 -0
  116. package/src/application.ts +191 -0
  117. package/src/base64.ts +162 -0
  118. package/src/base_component.ts +118 -0
  119. package/src/button.ts +327 -0
  120. package/src/calendar.ts +312 -0
  121. package/src/canvas.ts +501 -0
  122. package/src/cardview.ts +220 -0
  123. package/src/checkbox.ts +178 -0
  124. package/src/color.ts +748 -0
  125. package/src/colorpicker.ts +1618 -0
  126. package/src/combobox.ts +348 -0
  127. package/src/component.ts +2330 -0
  128. package/src/datastore.ts +1318 -0
  129. package/src/dialog.ts +631 -0
  130. package/src/dom_events.ts +297 -0
  131. package/src/drag_manager.ts +168 -0
  132. package/src/drawtext.ts +342 -0
  133. package/src/fileupload.ts +208 -0
  134. package/src/form.ts +362 -0
  135. package/src/formatters.ts +96 -0
  136. package/src/gridview.ts +1051 -0
  137. package/src/hosts/electron.ts +161 -0
  138. package/src/hosts/host.ts +100 -0
  139. package/src/hosts/nwjs.ts +141 -0
  140. package/src/hosts/nwjs_types.ts +339 -0
  141. package/src/i18n.ts +205 -0
  142. package/src/icon.ts +237 -0
  143. package/src/image.ts +198 -0
  144. package/src/input.ts +236 -0
  145. package/src/label.ts +124 -0
  146. package/src/layout.ts +366 -0
  147. package/src/link.ts +82 -0
  148. package/src/listview.ts +749 -0
  149. package/src/md5.ts +432 -0
  150. package/src/menu.ts +394 -0
  151. package/src/messagebox.ts +199 -0
  152. package/src/panel.ts +81 -0
  153. package/src/popup.ts +488 -0
  154. package/src/property_editor.ts +333 -0
  155. package/src/radiobtn.ts +190 -0
  156. package/src/rating.ts +131 -0
  157. package/src/request.ts +296 -0
  158. package/src/router.ts +43 -0
  159. package/src/settings.ts +75 -0
  160. package/src/sidebarview.ts +97 -0
  161. package/src/smartedit.ts +532 -0
  162. package/src/spreadsheet.ts +1423 -0
  163. package/src/styles.ts +332 -0
  164. package/src/svgcomponent.ts +440 -0
  165. package/src/tabbar.ts +105 -0
  166. package/src/tabview.ts +106 -0
  167. package/src/textarea.ts +183 -0
  168. package/src/textedit.ts +535 -0
  169. package/src/texthiliter.ts +284 -0
  170. package/src/toaster.ts +76 -0
  171. package/src/tools.ts +1391 -0
  172. package/src/tooltips.ts +185 -0
  173. package/src/treeview.ts +670 -0
  174. package/src/x4.less +1940 -0
  175. package/src/x4_events.ts +558 -0
  176. package/tsconfig.json +14 -0
package/src/styles.ts ADDED
@@ -0,0 +1,332 @@
1
+ /**
2
+ * ___ ___ __
3
+ * \ \_/ / / _
4
+ * \ / /_| |_
5
+ * / _ \____ _|
6
+ * /__/ \__\ |_|
7
+ *
8
+ * @file styles.ts
9
+ * @author Etienne Cochard
10
+ * @license
11
+ * Copyright (c) 2019-2021 R-libre ingenierie
12
+ *
13
+ * This program is free software; you can redistribute it and/or modify
14
+ * it under the terms of the GNU General Public License as published by
15
+ * the Free Software Foundation; either version 3 of the License, or
16
+ * (at your option) any later version.
17
+ *
18
+ * This program is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
+ * GNU General Public License for more details.
22
+ *
23
+ * You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
24
+ **/
25
+
26
+ import { pascalCase, isString, isArray } from "./tools";
27
+
28
+
29
+ /**
30
+ * -- [ @STYLESHEET ] -----------------------------------------------------------------
31
+ */
32
+
33
+ export class Stylesheet {
34
+
35
+ private m_sheet: CSSStyleSheet;
36
+ private m_rules: Map<string, number> = new Map<string,number>( );
37
+
38
+ constructor() {
39
+
40
+ function getStyleSheet( name ) : CSSStyleSheet {
41
+ for(let i=0; i<document.styleSheets.length; i++) {
42
+ let sheet = document.styleSheets[i];
43
+ if(sheet.title === name ) {
44
+ return <CSSStyleSheet>sheet;
45
+ }
46
+ }
47
+ }
48
+
49
+ this.m_sheet = getStyleSheet( '@dynamic-css' );
50
+ if( !this.m_sheet ) {
51
+ let dom = document.createElement( 'style' );
52
+ dom.setAttribute('id', '@dynamic-css' );
53
+ document.head.appendChild(dom);
54
+
55
+ this.m_sheet = <CSSStyleSheet>dom.sheet
56
+ }
57
+ }
58
+
59
+ /**
60
+ * add a new rule to the style sheet
61
+ * @param {string} name - internal rule name
62
+ * @param {string} definition - css definition of the rule
63
+ * @example
64
+ * setRule('xbody', "body { background-color: #ff0000; }" );
65
+ */
66
+
67
+ public setRule(name: string, definition: any ) {
68
+
69
+ if( isString(definition) ) {
70
+ let index = this.m_rules.get( name );
71
+ if (index !== undefined) {
72
+ this.m_sheet.deleteRule(index);
73
+ }
74
+ else {
75
+ index = this.m_sheet.cssRules.length;
76
+ }
77
+
78
+ this.m_rules.set( name, this.m_sheet.insertRule( definition, index) );
79
+ }
80
+ else {
81
+ let idx = 1;
82
+ for( let r in definition ) {
83
+
84
+ let rule = r + " { ",
85
+ css = definition[r];
86
+
87
+ for (let i in css) {
88
+
89
+ let values = css[i]; // this is an array !
90
+ for (let j = 0; j < values.length; j++) {
91
+ rule += i + ": " + values[j] + "; "
92
+ }
93
+ }
94
+
95
+ rule += '}';
96
+
97
+ console.log( rule );
98
+ this.setRule( name+'--'+idx, rule );
99
+ idx++;
100
+ }
101
+ }
102
+ }
103
+
104
+ /**
105
+ * return the style variable value
106
+ * @param name - variable name without '--'
107
+ * @example
108
+ * ```
109
+ * let color = Component.getCss( ).getVar( 'button-color' );
110
+ * ```
111
+ */
112
+
113
+ public static getVar( name: string ) : any {
114
+ if( !Stylesheet.doc_style ) {
115
+ Stylesheet.doc_style = getComputedStyle( document.documentElement );
116
+ }
117
+
118
+ return Stylesheet.doc_style.getPropertyValue( '--'+name ); // #999999
119
+ }
120
+
121
+ static guid: number = 1;
122
+ static doc_style: CSSStyleDeclaration;
123
+ }
124
+
125
+
126
+ /**
127
+ * -- [ @CSSPARSER ] -----------------------------------------------------------------
128
+ *
129
+ * adaptation of jss-for-node-js
130
+ */
131
+
132
+ export class CSSParser {
133
+
134
+ private result = {};
135
+
136
+ parse(css) {
137
+ this.result = {};
138
+ this.parse_json('', css);
139
+ return CSSParser.mk_string(this.result);
140
+ }
141
+
142
+ public static mk_string( rules: any ) {
143
+
144
+ // output result:
145
+ let ret = '';
146
+
147
+ for (let a in rules) {
148
+ let css = rules[a];
149
+ ret += a + " { "
150
+
151
+ for (let i in css) {
152
+
153
+ let values = css[i]; // this is an array !
154
+ for (let j = 0; j < values.length; j++) {
155
+ ret += i + ": " + values[j] + "; "
156
+ }
157
+ }
158
+
159
+ ret += "}\n"
160
+ }
161
+
162
+ return ret;
163
+ }
164
+
165
+ private parse_json(scope: string, css: any) {
166
+
167
+ if (scope && !this.result[scope]) {
168
+ this.result[scope] = {};
169
+ }
170
+
171
+ for (let property in css) {
172
+
173
+ let value = css[property];
174
+
175
+ if ( isArray(value) ) {
176
+ let values = value;
177
+ for (let i = 0; i < values.length; i++) {
178
+ this.addProperty(scope, property, values[i]);
179
+ }
180
+ }
181
+ /*else if (value instanceof Color) {
182
+ this.addProperty(scope, property, value.toString());
183
+ }*/
184
+ else {
185
+ switch (typeof (value)) {
186
+
187
+ case "number": {
188
+ this.addProperty(scope, property, value);
189
+ break;
190
+ }
191
+
192
+ case "string": {
193
+ this.addProperty(scope, property, value );
194
+ break;
195
+ }
196
+
197
+ case "object": {
198
+ this.parse_json(this.makeSelectorName(scope, property), value);
199
+ break;
200
+ }
201
+
202
+ default: {
203
+ console.error("ignoring unknown type " + typeof (value) + " in property " + property);
204
+ break;
205
+ }
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ private makePropertyName(n: string): string {
212
+ return pascalCase(n);
213
+ }
214
+
215
+ private makeSelectorName(scope: string, name: string): string {
216
+
217
+ let snames = [];
218
+ let names = name.split(/\s*,\s*/);
219
+ let scopes = scope.split(/\s*,\s*/);
220
+
221
+ for (let s = 0; s < scopes.length; s++) {
222
+ let scope = scopes[s];
223
+
224
+ for (let i = 0; i < names.length; i++) {
225
+
226
+ let name = names[i],
227
+ sub = false;
228
+
229
+ if (name.charAt(0) == "&") {
230
+ name = name.substr(1);
231
+ sub = true;
232
+ }
233
+
234
+ if (name.charAt(0) === '%') {
235
+ name = '.o-' + name.substr(1);
236
+ }
237
+
238
+ if (sub) {
239
+ snames.push(scope + name)
240
+ }
241
+ else {
242
+ snames.push(scope ? scope + " " + name : name)
243
+ }
244
+ }
245
+ }
246
+
247
+ return snames.join(", ");
248
+ }
249
+
250
+ addProperty(scope: string, property: string, value: any) {
251
+
252
+ let properties = property.split(/\s*,\s*/);
253
+
254
+ for (let i = 0; i < properties.length; i++) {
255
+
256
+ let property = this.makePropertyName(properties[i]);
257
+
258
+ if (this.result[scope][property]) {
259
+ this.result[scope][property].push(value);
260
+ }
261
+ else {
262
+ this.result[scope][property] = [value];
263
+ }
264
+
265
+ let specials = {
266
+ "box-shadow": [
267
+ "-moz-box-shadow",
268
+ "-webkit-box-shadow"
269
+ ],
270
+ "border-radius": [
271
+ "-moz-border-radius",
272
+ "-webkit-border-radius"
273
+ ],
274
+ "border-radius-topleft": [
275
+ "-moz-border-radius-topleft",
276
+ "-webkit-border-top-left-radius"
277
+ ],
278
+ "border-radius-topright": [
279
+ "-moz-border-radius-topright",
280
+ "-webkit-border-top-right-radius"
281
+ ],
282
+ "border-radius-bottomleft": [
283
+ "-moz-border-radius-bottomleft",
284
+ "-webkit-border-bottom-left-radius"
285
+ ],
286
+ "border-radius-bottomright": [
287
+ "-moz-border-radius-bottomright",
288
+ "-webkit-border-bottom-right-radius"
289
+ ]
290
+ }
291
+
292
+ let browser_specials = specials[property];
293
+ for (let j = 0; browser_specials && j < browser_specials.length; j++) {
294
+ this.addProperty(scope, browser_specials[j], value);
295
+ }
296
+ }
297
+ }
298
+ }
299
+
300
+ export class ComputedStyle {
301
+ m_style:CSSStyleDeclaration;
302
+
303
+ constructor( style: CSSStyleDeclaration ) {
304
+ this.m_style = style;
305
+ }
306
+
307
+ /**
308
+ * return the raw value
309
+ */
310
+
311
+ value( name: string ) : string {
312
+ name = pascalCase( name );
313
+ return this.m_style[name];
314
+ }
315
+
316
+ /**
317
+ * return the interpreted value
318
+ */
319
+
320
+ parse( name: string ) : number {
321
+ name = pascalCase( name );
322
+ return parseInt( this.m_style[name] );
323
+ }
324
+
325
+ /**
326
+ *
327
+ */
328
+
329
+ get style( ) {
330
+ return this.m_style;
331
+ }
332
+ }