x4js 2.0.1 → 2.0.3

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 (211) hide show
  1. package/package.json +12 -9
  2. package/lib/README.txt +0 -15
  3. package/lib/src/assets/house-light.svg +0 -1
  4. package/lib/src/assets/radio.svg +0 -4
  5. package/lib/src/components/base.scss +0 -26
  6. package/lib/src/components/boxes/boxes.module.scss +0 -37
  7. package/lib/src/components/boxes/boxes.ts +0 -125
  8. package/lib/src/components/btngroup/btngroup.module.scss +0 -29
  9. package/lib/src/components/btngroup/btngroup.ts +0 -106
  10. package/lib/src/components/button/button.module.scss +0 -154
  11. package/lib/src/components/button/button.ts +0 -117
  12. package/lib/src/components/calendar/calendar-check-sharp-light.svg +0 -1
  13. package/lib/src/components/calendar/calendar.module.scss +0 -163
  14. package/lib/src/components/calendar/calendar.ts +0 -326
  15. package/lib/src/components/calendar/chevron-left-sharp-light.svg +0 -1
  16. package/lib/src/components/calendar/chevron-right-sharp-light.svg +0 -1
  17. package/lib/src/components/checkbox/check.svg +0 -4
  18. package/lib/src/components/checkbox/checkbox.module.scss +0 -142
  19. package/lib/src/components/checkbox/checkbox.ts +0 -125
  20. package/lib/src/components/colorinput/colorinput.module.scss +0 -65
  21. package/lib/src/components/colorinput/colorinput.ts +0 -88
  22. package/lib/src/components/colorinput/crosshairs-simple-sharp-light.svg +0 -1
  23. package/lib/src/components/colorpicker/colorpicker.module.scss +0 -133
  24. package/lib/src/components/colorpicker/colorpicker.ts +0 -477
  25. package/lib/src/components/combobox/combobox.module.scss +0 -121
  26. package/lib/src/components/combobox/combobox.ts +0 -190
  27. package/lib/src/components/combobox/updown.svg +0 -4
  28. package/lib/src/components/dialog/dialog.module.scss +0 -71
  29. package/lib/src/components/dialog/dialog.ts +0 -91
  30. package/lib/src/components/dialog/xmark-sharp-light.svg +0 -1
  31. package/lib/src/components/form/form.module.scss +0 -34
  32. package/lib/src/components/form/form.ts +0 -36
  33. package/lib/src/components/header/header.module.scss +0 -40
  34. package/lib/src/components/header/header.ts +0 -124
  35. package/lib/src/components/icon/icon.module.scss +0 -30
  36. package/lib/src/components/icon/icon.ts +0 -134
  37. package/lib/src/components/image/image.module.scss +0 -21
  38. package/lib/src/components/image/image.ts +0 -67
  39. package/lib/src/components/input/input.module.scss +0 -69
  40. package/lib/src/components/input/input.ts +0 -274
  41. package/lib/src/components/label/label.module.scss +0 -52
  42. package/lib/src/components/label/label.ts +0 -55
  43. package/lib/src/components/listbox/listbox.module.scss +0 -103
  44. package/lib/src/components/listbox/listbox.ts +0 -427
  45. package/lib/src/components/menu/caret-right-solid.svg +0 -1
  46. package/lib/src/components/menu/menu.module.scss +0 -108
  47. package/lib/src/components/menu/menu.ts +0 -168
  48. package/lib/src/components/messages/circle-exclamation.svg +0 -1
  49. package/lib/src/components/messages/messages.module.scss +0 -47
  50. package/lib/src/components/messages/messages.ts +0 -64
  51. package/lib/src/components/normalize.scss +0 -386
  52. package/lib/src/components/notification/circle-check-solid.svg +0 -1
  53. package/lib/src/components/notification/circle-exclamation-solid.svg +0 -1
  54. package/lib/src/components/notification/circle-notch-light.svg +0 -1
  55. package/lib/src/components/notification/notification.module.scss +0 -82
  56. package/lib/src/components/notification/notification.ts +0 -108
  57. package/lib/src/components/notification/xmark-sharp-light.svg +0 -1
  58. package/lib/src/components/panel/panel.module.scss +0 -48
  59. package/lib/src/components/panel/panel.ts +0 -57
  60. package/lib/src/components/popup/popup.module.scss +0 -43
  61. package/lib/src/components/popup/popup.ts +0 -395
  62. package/lib/src/components/progress/progress.module.scss +0 -57
  63. package/lib/src/components/progress/progress.ts +0 -43
  64. package/lib/src/components/rating/rating.module.scss +0 -23
  65. package/lib/src/components/rating/rating.ts +0 -125
  66. package/lib/src/components/rating/star-sharp-light.svg +0 -1
  67. package/lib/src/components/rating/star-sharp-solid.svg +0 -1
  68. package/lib/src/components/shared.scss +0 -76
  69. package/lib/src/components/sizers/sizer.module.scss +0 -90
  70. package/lib/src/components/sizers/sizer.ts +0 -120
  71. package/lib/src/components/slider/slider.module.scss +0 -71
  72. package/lib/src/components/slider/slider.ts +0 -143
  73. package/lib/src/components/switch/switch.module.scss +0 -127
  74. package/lib/src/components/switch/switch.ts +0 -56
  75. package/lib/src/components/tabs/tabs.module.scss +0 -46
  76. package/lib/src/components/tabs/tabs.ts +0 -157
  77. package/lib/src/components/textarea/textarea.module.scss +0 -59
  78. package/lib/src/components/textarea/textarea.ts +0 -54
  79. package/lib/src/components/textedit/textedit.module.scss +0 -114
  80. package/lib/src/components/textedit/textedit.ts +0 -82
  81. package/lib/src/components/themes.scss +0 -77
  82. package/lib/src/components/tooltips/circle-info-sharp-light.svg +0 -1
  83. package/lib/src/components/tooltips/tooltips.scss +0 -51
  84. package/lib/src/components/tooltips/tooltips.ts +0 -103
  85. package/lib/src/components/treeview/chevron-down-light.svg +0 -1
  86. package/lib/src/components/treeview/treeview.module.scss +0 -116
  87. package/lib/src/components/treeview/treeview.ts +0 -403
  88. package/lib/src/components/viewport/viewport.module.scss +0 -25
  89. package/lib/src/components/viewport/viewport.ts +0 -38
  90. package/lib/src/core/component.ts +0 -979
  91. package/lib/src/core/core_colors.ts +0 -250
  92. package/lib/src/core/core_dom.ts +0 -471
  93. package/lib/src/core/core_dragdrop.ts +0 -201
  94. package/lib/src/core/core_element.ts +0 -98
  95. package/lib/src/core/core_events.ts +0 -149
  96. package/lib/src/core/core_i18n.ts +0 -377
  97. package/lib/src/core/core_router.ts +0 -221
  98. package/lib/src/core/core_styles.ts +0 -215
  99. package/lib/src/core/core_svg.ts +0 -550
  100. package/lib/src/core/core_tools.ts +0 -673
  101. package/lib/src/main.scss +0 -21
  102. package/lib/src/main.tsx +0 -323
  103. package/lib/src/x4.scss +0 -19
  104. package/lib/types/x4.d.ts +0 -2624
  105. package/scripts/build.mjs +0 -351
  106. package/scripts/prepack.mjs +0 -15
  107. package/src/assets/house-light.svg +0 -1
  108. package/src/assets/radio.svg +0 -4
  109. package/src/components/base.scss +0 -26
  110. package/src/components/boxes/boxes.module.scss +0 -37
  111. package/src/components/boxes/boxes.ts +0 -125
  112. package/src/components/btngroup/btngroup.module.scss +0 -29
  113. package/src/components/btngroup/btngroup.ts +0 -106
  114. package/src/components/button/button.module.scss +0 -154
  115. package/src/components/button/button.ts +0 -117
  116. package/src/components/calendar/calendar-check-sharp-light.svg +0 -1
  117. package/src/components/calendar/calendar.module.scss +0 -163
  118. package/src/components/calendar/calendar.ts +0 -326
  119. package/src/components/calendar/chevron-left-sharp-light.svg +0 -1
  120. package/src/components/calendar/chevron-right-sharp-light.svg +0 -1
  121. package/src/components/checkbox/check.svg +0 -4
  122. package/src/components/checkbox/checkbox.module.scss +0 -142
  123. package/src/components/checkbox/checkbox.ts +0 -125
  124. package/src/components/colorinput/colorinput.module.scss +0 -65
  125. package/src/components/colorinput/colorinput.ts +0 -88
  126. package/src/components/colorinput/crosshairs-simple-sharp-light.svg +0 -1
  127. package/src/components/colorpicker/colorpicker.module.scss +0 -133
  128. package/src/components/colorpicker/colorpicker.ts +0 -477
  129. package/src/components/combobox/combobox.module.scss +0 -121
  130. package/src/components/combobox/combobox.ts +0 -190
  131. package/src/components/combobox/updown.svg +0 -4
  132. package/src/components/dialog/dialog.module.scss +0 -71
  133. package/src/components/dialog/dialog.ts +0 -91
  134. package/src/components/dialog/xmark-sharp-light.svg +0 -1
  135. package/src/components/form/form.module.scss +0 -34
  136. package/src/components/form/form.ts +0 -36
  137. package/src/components/header/header.module.scss +0 -40
  138. package/src/components/header/header.ts +0 -124
  139. package/src/components/icon/icon.module.scss +0 -30
  140. package/src/components/icon/icon.ts +0 -134
  141. package/src/components/image/image.module.scss +0 -21
  142. package/src/components/image/image.ts +0 -67
  143. package/src/components/input/input.module.scss +0 -69
  144. package/src/components/input/input.ts +0 -274
  145. package/src/components/label/label.module.scss +0 -52
  146. package/src/components/label/label.ts +0 -55
  147. package/src/components/listbox/listbox.module.scss +0 -103
  148. package/src/components/listbox/listbox.ts +0 -427
  149. package/src/components/menu/caret-right-solid.svg +0 -1
  150. package/src/components/menu/menu.module.scss +0 -108
  151. package/src/components/menu/menu.ts +0 -168
  152. package/src/components/messages/circle-exclamation.svg +0 -1
  153. package/src/components/messages/messages.module.scss +0 -47
  154. package/src/components/messages/messages.ts +0 -64
  155. package/src/components/normalize.scss +0 -386
  156. package/src/components/notification/circle-check-solid.svg +0 -1
  157. package/src/components/notification/circle-exclamation-solid.svg +0 -1
  158. package/src/components/notification/circle-notch-light.svg +0 -1
  159. package/src/components/notification/notification.module.scss +0 -82
  160. package/src/components/notification/notification.ts +0 -108
  161. package/src/components/notification/xmark-sharp-light.svg +0 -1
  162. package/src/components/panel/panel.module.scss +0 -48
  163. package/src/components/panel/panel.ts +0 -57
  164. package/src/components/popup/popup.module.scss +0 -43
  165. package/src/components/popup/popup.ts +0 -395
  166. package/src/components/progress/progress.module.scss +0 -57
  167. package/src/components/progress/progress.ts +0 -43
  168. package/src/components/rating/rating.module.scss +0 -23
  169. package/src/components/rating/rating.ts +0 -125
  170. package/src/components/rating/star-sharp-light.svg +0 -1
  171. package/src/components/rating/star-sharp-solid.svg +0 -1
  172. package/src/components/shared.scss +0 -76
  173. package/src/components/sizers/sizer.module.scss +0 -90
  174. package/src/components/sizers/sizer.ts +0 -120
  175. package/src/components/slider/slider.module.scss +0 -71
  176. package/src/components/slider/slider.ts +0 -143
  177. package/src/components/switch/switch.module.scss +0 -127
  178. package/src/components/switch/switch.ts +0 -56
  179. package/src/components/tabs/tabs.module.scss +0 -46
  180. package/src/components/tabs/tabs.ts +0 -157
  181. package/src/components/textarea/textarea.module.scss +0 -59
  182. package/src/components/textarea/textarea.ts +0 -54
  183. package/src/components/textedit/textedit.module.scss +0 -114
  184. package/src/components/textedit/textedit.ts +0 -82
  185. package/src/components/themes.scss +0 -77
  186. package/src/components/tooltips/circle-info-sharp-light.svg +0 -1
  187. package/src/components/tooltips/tooltips.scss +0 -51
  188. package/src/components/tooltips/tooltips.ts +0 -103
  189. package/src/components/treeview/chevron-down-light.svg +0 -1
  190. package/src/components/treeview/treeview.module.scss +0 -116
  191. package/src/components/treeview/treeview.ts +0 -403
  192. package/src/components/viewport/viewport.module.scss +0 -25
  193. package/src/components/viewport/viewport.ts +0 -38
  194. package/src/core/component.ts +0 -979
  195. package/src/core/core_colors.ts +0 -250
  196. package/src/core/core_dom.ts +0 -471
  197. package/src/core/core_dragdrop.ts +0 -201
  198. package/src/core/core_element.ts +0 -98
  199. package/src/core/core_events.ts +0 -149
  200. package/src/core/core_i18n.ts +0 -377
  201. package/src/core/core_router.ts +0 -221
  202. package/src/core/core_styles.ts +0 -215
  203. package/src/core/core_svg.ts +0 -550
  204. package/src/core/core_tools.ts +0 -673
  205. package/src/main.scss +0 -21
  206. package/src/main.tsx +0 -323
  207. package/src/x4.scss +0 -19
  208. package/tsconfig.json +0 -14
  209. package/types/scss.d.ts +0 -4
  210. package/types/svg.d.ts +0 -4
  211. package/types/x4react.d.ts +0 -9
package/scripts/build.mjs DELETED
@@ -1,351 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * @file build.mjs
5
- * @author Etienne Cochard
6
- * @copyright (c) 2024 R-libre ingenierie, all rights reserved.
7
- * @version 1.2
8
- **/
9
-
10
- import * as fs from "node:fs"
11
- import * as path from "node:path"
12
- import * as url from "node:url"
13
- import * as http from "node:http"
14
-
15
- import chalk from "chalk"
16
- import esbuild from "esbuild"
17
- import { WebSocketServer } from 'ws';
18
- import Watcher from "watcher"
19
-
20
- import { sassPlugin } from "esbuild-sass-plugin";
21
- //import { hostname } from 'node:os'
22
-
23
- console.log( chalk.green("\n\n-- X4Build 1.2 -------------------") );
24
-
25
- const releaseMode = process.argv.some(a => a == "--release")
26
- const hmrMode = process.argv.some(a => a == "--hmr") // hot module replacement
27
- const watchMode = process.argv.some(a => a == "--watch" ) // watch modifications
28
- const serveMode = process.argv.some(a => a == "--serve") // watch modifications
29
-
30
-
31
- function readPackage() {
32
-
33
- let cpath = process.cwd();
34
-
35
- // check here
36
- let pth = path.join(cpath, "package.json");
37
- if (fs.existsSync(pth)) {
38
- const raw = fs.readFileSync(pth, "utf-8");
39
- return JSON.parse(raw);
40
- }
41
-
42
- throw new Error("cannot find package.json");
43
- }
44
-
45
- const def_settings = {
46
- "entryPoints": ["src/main.ts"],
47
- "outdir": "./bin",
48
- "copy": [],
49
- };
50
-
51
- const pkg_settings = readPackage();
52
- const settings = { ...def_settings, ...pkg_settings.x4build };
53
-
54
- console.log( chalk.green(" release mode ..", releaseMode ) );
55
- console.log( chalk.green(" hmr ...........", hmrMode ) );
56
- console.log( chalk.green(" watching ......", watchMode ) );
57
- console.log( chalk.green(" serve files ...", serveMode ) );
58
- console.log( chalk.green(" output dir ....", settings.outdir ) );
59
- console.log( chalk.green(" entry point ...", settings.entryPoints ) );
60
- console.log( chalk.green(" copying .......", settings.copy ) );
61
-
62
- console.log( chalk.green("----------------------------------") );
63
-
64
-
65
-
66
-
67
- const js_hmr = ` // X4 Hot Module Replacement v1.1
68
- {
69
- const ws = new WebSocket( "ws://127.0.0.1:9998", "hmr" );
70
-
71
- ws.onmessage = ( ev ) => {
72
- if( ev.data=="reload-css" ) {
73
- const gen_id = Date.now( );
74
- document.querySelectorAll( "link[rel=stylesheet]").forEach( link => {
75
- link.href = link.href.replace(/\\?.*|$/, "?" + gen_id)
76
- } );
77
- }
78
- else {
79
- location.reload();
80
- }
81
- }
82
- }`
83
-
84
- /** custom plugin to copy element after the build */
85
-
86
- const post_plugin = {
87
- name: 'post-cmd',
88
- setup(build) {
89
-
90
- build.onEnd(result => {
91
- if (result.errors.length) {
92
- console.error(`build ended with ${result.errors.length} errors`)
93
- }
94
- else {
95
- settings.copy?.forEach((desc) => {
96
- const { from, to } = desc;
97
-
98
- if (fs.existsSync(from)) {
99
- fs.cpSync(from, path.join(settings.outdir, to), { recursive: true });
100
- }
101
- });
102
- }
103
- })
104
- },
105
- }
106
-
107
- let buildcnt = 1;
108
-
109
- async function build() {
110
-
111
- console.log(chalk.cyan(`building (${buildcnt++})...`));
112
-
113
- try {
114
- /** @type {esbuild.BuildOptions} */
115
- const options = {
116
- target: "node12",
117
- logLevel: "error",
118
- entryPoints: settings.entryPoints,
119
- bundle: true,
120
- charset: "utf8",
121
- outdir: settings.outdir,
122
- keepNames: true,
123
- platform: "node",
124
- format: "esm",
125
- minify: releaseMode,
126
- plugins: [
127
- sassPlugin( {
128
- type: "css",
129
- filter: /\.scss$/,
130
- }),
131
- post_plugin
132
- ],
133
- assetNames: "assets/[name]-[hash]",
134
- loader: {
135
- ".svg": "dataurl",
136
- ".jpg": "file",
137
- ".png": "file",
138
- ".woff": "file",
139
- ".woff2": "file",
140
- }
141
- }
142
-
143
- if (!releaseMode) {
144
- options.sourcemap = "inline";
145
- }
146
-
147
- if (hmrMode) {
148
- options.banner = { js: js_hmr }
149
- }
150
-
151
- await esbuild.build(options);
152
- }
153
- catch (e) {
154
- console.error(chalk.bgRed.white("build failure, waiting for correction"));
155
- console.log(e.message);
156
- }
157
- }
158
-
159
- // :: WEBSOCKET SERVER FOR HRM ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
160
-
161
- if (watchMode) {
162
-
163
- const wsServer = new WebSocketServer({
164
- port: 9998
165
- });
166
-
167
- // all connected clients (1)
168
- const clients = [];
169
-
170
- wsServer.on('connection', (ws) => {
171
- clients.push(ws);
172
-
173
- wsServer.on('error', (err) => {
174
- });
175
-
176
- wsServer.on('message', function message(data) {
177
- console.log('received: %s', data);
178
- });
179
- });
180
-
181
- const sendClientMessage = (msg) => {
182
- clients.forEach(ws => {
183
- ws.send(msg);
184
- });
185
- }
186
-
187
- // file watcher ------------------------------------------
188
- const selfPath = url.fileURLToPath(import.meta.url);
189
- const cPath = process.cwd();
190
-
191
- const watcher = new Watcher("./", {
192
- recursive: true,
193
- ignoreInitial: true,
194
- ignore: (targetPath) => {
195
- if (targetPath.startsWith(cPath)) {
196
- targetPath = path.join(".", targetPath.substring(cPath.length));
197
- targetPath = path.normalize(targetPath);
198
- }
199
-
200
- if (targetPath.startsWith("bin") || targetPath.startsWith("node_modules") ) {
201
- //console.log("skip watch", targetPath);
202
- return true;
203
- }
204
-
205
- return false;
206
- }
207
- });
208
-
209
-
210
- watcher.on('all', async (event, targetPath, targetPathNext) => {
211
-
212
- if (event == "change" || event == "add") {
213
- // one of our copy path ?
214
- if (targetPath.startsWith(cPath)) {
215
- let pth = "." + targetPath.substring(cPath.length);
216
- pth = path.normalize(pth);
217
-
218
- //console.log( targetPath );
219
- if (settings.copy?.some(desc => {
220
- const from = path.normalize(desc.from);
221
- if (pth == from || pth.startsWith(from)) {
222
- return true;
223
- }
224
- })) {
225
- await build();
226
- return;
227
- }
228
- }
229
- }
230
-
231
- if (event == "change") {
232
- // somebody changed this file, so leave
233
- if (targetPath == selfPath) {
234
- process.exit(0);
235
- }
236
-
237
- // depending of the extension, we send the correct type of refresh
238
- switch (path.extname(targetPath)) {
239
- case ".svg":
240
- case ".css":
241
- case ".scss": {
242
- await build();
243
- sendClientMessage("reload-css");
244
- break;
245
- }
246
-
247
- case ".html":
248
- case ".ts":
249
- case ".js":
250
- case ".jsx":
251
- case ".tsx": {
252
- await build();
253
- sendClientMessage("reload-js");
254
- break;
255
- }
256
-
257
- case ".json": {
258
- if (path.basename(targetPath) == 'package.json') {
259
- build();
260
- }
261
- break;
262
- }
263
- }
264
-
265
- //console.log ( event ); // => could be any target event: 'add', 'addDir', 'change', 'rename', 'renameDir', 'unlink' or 'unlinkDir'
266
- //console.log ( targetPath ); // => the file system path where the event took place, this is always provided
267
- }
268
- });
269
- }
270
-
271
- // :: WEB SERVER ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
272
-
273
- function serve() {
274
-
275
- // maps file extention to MIME types
276
- // full list can be found here: https://www.freeformatter.com/mime-types-list.html
277
- const mimeType = {
278
- '.ico': 'image/x-icon',
279
- '.html': 'text/html',
280
- '.js': 'text/javascript',
281
- '.json': 'application/json',
282
- '.css': 'text/css',
283
- '.png': 'image/png',
284
- '.jpg': 'image/jpeg',
285
- '.wav': 'audio/wav',
286
- '.mp3': 'audio/mpeg',
287
- '.svg': 'image/svg+xml',
288
- '.pdf': 'application/pdf',
289
- '.zip': 'application/zip',
290
- '.doc': 'application/msword',
291
- '.eot': 'application/vnd.ms-fontobject',
292
- '.ttf': 'application/x-font-ttf',
293
- };
294
-
295
- const server = http.createServer( {
296
- hostname: "127.0.0.1"
297
- });
298
-
299
- server.on('request', (req, res) => {
300
- //console.log(`${req.method} ${req.url}`);
301
-
302
- // parse URL
303
- const parsedUrl = url.parse(req.url);
304
-
305
- // extract URL path
306
- // Avoid https://en.wikipedia.org/wiki/Directory_traversal_attack
307
- // e.g curl --path-as-is http://localhost:9000/../fileInDanger.txt
308
- // by limiting the path to current directory only
309
- const sanitizePath = path.normalize(parsedUrl.pathname).replace(/^(\.\.[\/\\])+/, '');
310
- let pathname = path.join(settings.outdir, sanitizePath);
311
-
312
- if( fs.existsSync(pathname) ) {
313
- // if is a directory, then look for index.html
314
- if (fs.statSync(pathname).isDirectory()) {
315
- pathname = path.join( pathname, 'index.html' );
316
- }
317
-
318
- // read file from file system
319
- fs.readFile(pathname, function (err, data) {
320
- if (err) {
321
- res.statusCode = 500;
322
- res.end(`Error getting the file: ${err}.`);
323
- }
324
- else {
325
- // based on the URL path, extract the file extention. e.g. .js, .doc, ...
326
- const ext = path.parse(pathname).ext;
327
- // if the file is found, set Content-type and send data
328
- res.setHeader('Content-type', mimeType[ext] || 'text/plain');
329
- res.end(data);
330
- }
331
- });
332
- }
333
- else {
334
- // if the file is not found, return 404
335
- res.statusCode = 404;
336
- res.end(`File ${pathname} not found!`);
337
- return;
338
- }
339
- });
340
-
341
- server.listen(3000);
342
- console.log( chalk.yellow("listening on http://127.0.0.1:3000") );
343
- }
344
-
345
- build();
346
-
347
- if( serveMode ) {
348
- serve();
349
- }
350
-
351
-
@@ -1,15 +0,0 @@
1
- import * as fs from 'node:fs';
2
-
3
- async function main( ) {
4
-
5
- fs.mkdirSync( 'lib/styles', { recursive: true} );
6
- fs.mkdirSync( 'lib/src', { recursive: true} );
7
- fs.mkdirSync( 'lib/esm', { recursive: true} );
8
- fs.mkdirSync( 'lib/types', { recursive: true} );
9
-
10
- fs.cpSync( 'src/', 'lib/src/', { recursive: true} );
11
- fs.cpSync( 'README.md', 'lib/README.txt' );
12
-
13
- }
14
-
15
- main( );
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" fill="currentColor"><!--!Font Awesome Pro 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2024 Fonticons, Inc.--><path d="M298.6 4c-6-5.3-15.1-5.3-21.2 0L5.4 244c-6.6 5.8-7.3 16-1.4 22.6s16 7.3 22.6 1.4L64 235l0 197c0 44.2 35.8 80 80 80l288 0c44.2 0 80-35.8 80-80l0-197 37.4 33c6.6 5.8 16.7 5.2 22.6-1.4s5.2-16.7-1.4-22.6L298.6 4zM96 432l0-225.3L288 37.3 480 206.7 480 432c0 26.5-21.5 48-48 48l-64 0 0-160c0-17.7-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32l0 160-64 0c-26.5 0-48-21.5-48-48zm144 48l0-160 96 0 0 160-96 0z"/></svg>
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 5 5" aria-hidden="true">
2
- <circle cx="2.5" cy="2.5" r="2.5" fill="currentColor"></circle>
3
- <circle cx="2.5" cy="2.5" r="1.25" fill="white"></circle>
4
- </svg>
@@ -1,26 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|.2
7
- *
8
- * @file base.scss
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- @use "./shared.scss";
18
-
19
- .x4box {
20
- @extend .box;
21
- }
22
-
23
- .x4flex {
24
- @extend .flex;
25
- }
26
-
@@ -1,37 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|
7
- *
8
- * @file boxes.module.scss
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- @use "../shared.scss";
18
-
19
- .x4hbox {
20
- @extend .hbox;
21
- }
22
-
23
- .x4vbox {
24
- @extend .vbox;
25
- }
26
-
27
- .x4stackbox {
28
- &>* {
29
- @extend .fit;
30
- position: relative !important;
31
- }
32
-
33
- &>*:not(.selected) {
34
- display: none;
35
- }
36
- }
37
-
@@ -1,125 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|
7
- *
8
- * @file boxes.ts
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- import { Component, ComponentEvents, ComponentProps } from "@core/component"
18
-
19
- import "./boxes.module.scss";
20
-
21
- export interface BoxProps extends ComponentProps {
22
- }
23
-
24
- /**
25
- *
26
- */
27
-
28
- export class Box<P extends BoxProps=BoxProps,E extends ComponentEvents=ComponentEvents> extends Component<P,E> {
29
- }
30
-
31
-
32
- /**
33
- *
34
- */
35
-
36
- export class HBox<P extends BoxProps=BoxProps,E extends ComponentEvents=ComponentEvents> extends Box<P,E> {
37
- }
38
-
39
- /**
40
- *
41
- */
42
-
43
- export class VBox<P extends BoxProps=BoxProps,E extends ComponentEvents=ComponentEvents> extends Box<P,E> {
44
- constructor( p: P ) {
45
- super( p );
46
- }
47
- }
48
-
49
-
50
- /**
51
- * stack of widgets where only one widget is visible at a time
52
- */
53
-
54
- interface StackItem {
55
- name: string;
56
- content: Component;
57
- }
58
-
59
- interface StackedLayoutProps extends Omit<ComponentProps,"content"> {
60
- default: string;
61
- items: StackItem[];
62
- }
63
-
64
- interface _StackItem extends StackItem {
65
- page: Component;
66
- }
67
-
68
- export class StackBox extends Box<StackedLayoutProps> {
69
-
70
- private _items: _StackItem[];
71
-
72
- constructor( props: StackedLayoutProps ) {
73
- super( props );
74
-
75
- this._items = props.items?.map( itm => {
76
- return { ...itm, page: null };
77
- });
78
-
79
- if( props.default ) {
80
- this.select( props.default );
81
- }
82
- else if( this._items.length ) {
83
- this.select( this._items[0].name );
84
- }
85
- }
86
-
87
- select( name: string ) {
88
- let sel = this.query( `.selected` );
89
- if( sel ) {
90
- sel.setClass( "selected", false );
91
- }
92
-
93
- const pg = this._items.find( x => x.name==name );
94
- if( pg ) {
95
- if( !pg.page ) {
96
- pg.page = this._createPage( pg );
97
- this.appendContent( pg.page );
98
- }
99
-
100
- sel = pg.page;
101
- if( sel ) {
102
- sel.setClass( "selected", true );
103
- }
104
- }
105
- }
106
-
107
- /**
108
- *
109
- */
110
-
111
- private _createPage( page: _StackItem ) {
112
-
113
- let content: Component;
114
- //if( page.content instanceof ComponentBuilder ) {
115
- // content = page.content.create( );
116
- //}
117
- //else {
118
- content = page.content;
119
- //}
120
-
121
- content?.setData( "stackname", page.name );
122
- return content;
123
- }
124
- }
125
-
@@ -1,29 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|
7
- *
8
- * @file btngroup.model.scss
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- .x4btngroup {
18
- align-content: start;
19
- margin: 5px;
20
- gap: 4px;
21
-
22
- &.align-right {
23
- justify-content: end;
24
- }
25
-
26
- &.align-center {
27
- justify-content: center;
28
- }
29
- }
@@ -1,106 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|
7
- *
8
- * @file btngroup.ts
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- import { Component, ComponentEvent, ComponentEvents, ComponentProps, Flex } from '@core/component';
18
- import { EventCallback } from '@core/core_events.js';
19
- import { isString } from '@core/core_tools';
20
- import { _tr } from '@core/core_i18n'
21
-
22
- import { Button } from '../button/button';
23
- import { Box } from '../boxes/boxes.js';
24
- import { Label } from '../label/label.js';
25
- import { EvBtnClick } from '../dialog/dialog.js';
26
-
27
- import "./btngroup.module.scss"
28
-
29
-
30
- type predefined = "ok" | "cancel" | "yes" | "no" | "retry" | "abort" | "-"; // - = flex
31
- export type BtnGroupItem = predefined | Button | Label;
32
-
33
- interface BtnClickEvent extends ComponentEvent {
34
- emitter: predefined;
35
- }
36
-
37
- interface BtnGroupEvents extends ComponentEvents {
38
- btnclick: BtnClickEvent;
39
- }
40
-
41
- interface BtnGroupProps extends Omit<ComponentProps,"content"> {
42
- align?: "left" | "center" | "right"; // left default
43
- vertical?: boolean;
44
- items: BtnGroupItem[];
45
- reverse?: boolean,
46
- btnclick?: EventCallback<EvBtnClick>;
47
- }
48
-
49
- export class BtnGroup extends Box<BtnGroupProps,BtnGroupEvents> {
50
-
51
- constructor( props: BtnGroupProps ) {
52
- super( props );
53
-
54
- if( props.align ) {
55
- this.addClass( "align-"+props.align );
56
- }
57
-
58
- this.addClass( props.vertical ? "x4vbox" : "x4hbox" );
59
-
60
- if( props.items ) {
61
- this.setButtons( props.items );
62
- }
63
-
64
- this.mapPropEvents( props, "btnclick" );
65
- }
66
-
67
- /**
68
- *
69
- * @param btns
70
- */
71
-
72
- setButtons( btns: BtnGroupItem[] ) {
73
-
74
- this.clearContent( );
75
-
76
- const childs: Component[] = [];
77
-
78
- btns?.forEach( (b: string | Component) => {
79
-
80
- if( b==="-" ) {
81
- b = new Flex( {} );
82
- }
83
- else if( isString(b) ) {
84
- let title: string;
85
- const nm = b as predefined;
86
-
87
- switch( b as predefined ) {
88
- case "ok": title = _tr.global.ok; break;
89
- case "cancel": title = _tr.global.cancel; break;
90
- case "abort": title = _tr.global.abort; break;
91
- case "no": title = _tr.global.no; break;
92
- case "yes": title = _tr.global.yes; break;
93
- case "retry": title = _tr.global.retry; break;
94
- }
95
-
96
- b = new Button( { label: title, click: ( ) => {
97
- this.fire( "btnclick", {emitter:nm} )
98
- } } );
99
- }
100
-
101
- childs.push( b );
102
- });
103
-
104
- super.setContent( childs );
105
- }
106
- }