geomui 0.5.55 → 0.5.57

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 (39) hide show
  1. package/dist/Drawing.svelte +131 -180
  2. package/dist/Drawing.svelte.d.ts +6 -24
  3. package/dist/DrawingList.svelte +20 -28
  4. package/dist/DrawingList.svelte.d.ts +3 -18
  5. package/dist/InputParams.svelte +107 -115
  6. package/dist/InputParams.svelte.d.ts +5 -25
  7. package/dist/LabelCheckbox.svelte +11 -11
  8. package/dist/LocStorRead.svelte +13 -7
  9. package/dist/LocStorRead.svelte.d.ts +3 -18
  10. package/dist/LocStorTable.svelte +20 -14
  11. package/dist/LocStorTable.svelte.d.ts +3 -18
  12. package/dist/LocStorWrite.svelte +10 -19
  13. package/dist/LocStorWrite.svelte.d.ts +3 -18
  14. package/dist/ModalDiag.svelte +22 -8
  15. package/dist/ModalDiag.svelte.d.ts +5 -27
  16. package/dist/ModalImg.svelte +6 -3
  17. package/dist/ModalImg.svelte.d.ts +3 -18
  18. package/dist/OneDesign.svelte +8 -4
  19. package/dist/OneDesign.svelte.d.ts +3 -18
  20. package/dist/ParamDrawExport.svelte +103 -37
  21. package/dist/ParamDrawExport.svelte.d.ts +3 -18
  22. package/dist/SimpleDrawing.svelte +67 -50
  23. package/dist/SimpleDrawing.svelte.d.ts +6 -24
  24. package/dist/SubDesign.svelte +15 -12
  25. package/dist/SubDesign.svelte.d.ts +6 -21
  26. package/dist/TimeControl.svelte +17 -10
  27. package/dist/TimeControl.svelte.d.ts +3 -18
  28. package/dist/ZoomControl.svelte +11 -21
  29. package/dist/ZoomControl.svelte.d.ts +4 -19
  30. package/dist/initStore.js +12 -11
  31. package/dist/stateDrawing.svelte.d.ts +8 -0
  32. package/dist/stateDrawing.svelte.js +8 -0
  33. package/dist/stateParams.svelte.d.ts +5 -0
  34. package/dist/stateParams.svelte.js +3 -0
  35. package/package.json +20 -20
  36. package/dist/drawingLayers.d.ts +0 -2
  37. package/dist/drawingLayers.js +0 -6
  38. package/dist/storePVal.d.ts +0 -5
  39. package/dist/storePVal.js +0 -4
@@ -2,160 +2,135 @@
2
2
  import TimeControl from './TimeControl.svelte';
3
3
  import ZoomControl from './ZoomControl.svelte';
4
4
  import LabelCheckbox from './LabelCheckbox.svelte';
5
- import type {
6
- tCanvasAdjust,
7
- tLayers,
8
- Figure,
9
- tParamDef,
10
- tParamVal,
11
- tGeomFunc
12
- } from 'geometrix';
5
+ import type { tCanvasAdjust, tLayers, Figure, tSimTime } from 'geometrix';
13
6
  import {
14
7
  colors,
15
8
  canvas2point,
9
+ adjustCopy,
16
10
  adjustCenter,
17
11
  adjustRect,
18
12
  adjustScale,
19
- adjustTranslate,
20
- mergeFaces
13
+ adjustTranslate
21
14
  } from 'geometrix';
22
- import { storePV } from './storePVal';
23
- import { dLayers } from './drawingLayers';
15
+ import { sDraw } from './stateDrawing.svelte';
24
16
  import { onMount } from 'svelte';
25
17
 
26
- export let pDef: tParamDef;
27
- export let fgeom: tGeomFunc;
28
- export let optFaces: string[];
29
- export let selFace: string;
30
- export let zAdjust: tCanvasAdjust;
31
- export let simTime = 0;
18
+ // props
19
+ interface Props {
20
+ pDefSim: tSimTime;
21
+ pFig: Figure;
22
+ simTime?: number;
23
+ }
24
+ let { pDefSim, pFig, simTime = $bindable(0) }: Props = $props();
25
+
26
+ // const
27
+ const canvas_size_min = 400;
28
+ const canvas_size_max = 1200;
32
29
 
33
- const c_ParametrixAll = 'ParametrixAll';
34
- let windowWidth: number;
30
+ // state
31
+ let windowWidth: number = $state(canvas_size_min); // TODO5: $state is not needed, but otherwise svelte complains
32
+ // those internal states are bound: no need of $state
35
33
  let canvasFull: HTMLCanvasElement;
36
34
  let canvasZoom: HTMLCanvasElement;
37
- const canvas_size_min = 400;
38
35
 
39
36
  // Canavas Figures
40
- let aFigure: Figure;
41
37
  let cAdjust: tCanvasAdjust;
42
- //let zAdjust: tCanvasAdjust;
43
- function canvasRedrawFull(iLayers: tLayers) {
44
- const ctx1 = canvasFull.getContext('2d')!;
45
- ctx1.clearRect(0, 0, ctx1.canvas.width, ctx1.canvas.height);
46
- try {
47
- cAdjust = aFigure.getAdjustFull(ctx1.canvas.width, ctx1.canvas.height);
48
- aFigure.draw(ctx1, cAdjust, iLayers);
49
- } catch (emsg) {
50
- //rGeome.logstr += emsg;
51
- console.log(emsg);
38
+ function canvasRedrawFull(iFig: Figure, iLayers: tLayers) {
39
+ if (canvasFull) {
40
+ const ctx1 = canvasFull.getContext('2d')!;
41
+ ctx1.clearRect(0, 0, ctx1.canvas.width, ctx1.canvas.height);
42
+ try {
43
+ cAdjust = iFig.getAdjustFull(ctx1.canvas.width, ctx1.canvas.height);
44
+ iFig.draw(ctx1, cAdjust, iLayers);
45
+ } catch (emsg) {
46
+ //rGeome.logstr += emsg;
47
+ console.log(emsg);
48
+ }
49
+ // extra drawing
50
+ //point(5, 5).draw(ctx1, cAdjust, 'green');
51
+ //point(5, 15).draw(ctx1, cAdjust, 'blue', 'rectangle');
52
52
  }
53
- // extra drawing
54
- //point(5, 5).draw(ctx1, cAdjust, 'green');
55
- //point(5, 15).draw(ctx1, cAdjust, 'blue', 'rectangle');
56
53
  }
57
- function canvasRedrawZoom(iLayers: tLayers) {
58
- const ctx2 = canvasZoom.getContext('2d')!;
59
- ctx2.clearRect(0, 0, ctx2.canvas.width, ctx2.canvas.height);
60
- try {
61
- if (zAdjust === undefined || zAdjust.init === 0) {
62
- zAdjust = aFigure.getAdjustZoom(ctx2.canvas.width, ctx2.canvas.height);
63
- //console.log(`dbg047: init zAdjust: ${zAdjust.xMin} ${zAdjust.yMin}`);
54
+ function canvasRedrawZoom(iFig: Figure, iZAdjust: tCanvasAdjust, iLayers: tLayers) {
55
+ if (canvasZoom) {
56
+ const ctx2 = canvasZoom.getContext('2d')!;
57
+ ctx2.clearRect(0, 0, ctx2.canvas.width, ctx2.canvas.height);
58
+ try {
59
+ if (iZAdjust === undefined || iZAdjust.init === 0) {
60
+ iZAdjust = iFig.getAdjustZoom(ctx2.canvas.width, ctx2.canvas.height);
61
+ //console.log(`dbg047: init iZAdjust: ${iZAdjust.xMin} ${iZAdjust.yMin}`);
62
+ }
63
+ iFig.draw(ctx2, iZAdjust, iLayers);
64
+ } catch (emsg) {
65
+ //rGeome.logstr += emsg;
66
+ console.log(emsg);
64
67
  }
65
- aFigure.draw(ctx2, zAdjust, iLayers);
66
- } catch (emsg) {
67
- //rGeome.logstr += emsg;
68
- console.log(emsg);
69
68
  }
70
69
  }
71
70
  function canvasSetSize() {
72
71
  //console.log(`windowWidth: ${windowWidth}`);
73
- const ctx1 = canvasFull.getContext('2d')!;
74
- const canvas_size = Math.max(0.4 * windowWidth, canvas_size_min);
75
- ctx1.canvas.width = canvas_size;
76
- ctx1.canvas.height = canvas_size;
72
+ const ctxF = canvasFull.getContext('2d')!;
73
+ const ctxZ = canvasZoom.getContext('2d')!;
74
+ const canvas_size = Math.min(Math.max(0.4 * windowWidth, canvas_size_min), canvas_size_max);
75
+ ctxF.canvas.width = canvas_size;
76
+ ctxF.canvas.height = canvas_size;
77
+ ctxZ.canvas.width = canvas_size;
78
+ ctxZ.canvas.height = canvas_size;
79
+ // initialize zAdjust
80
+ sDraw.canvasZWidth = canvas_size;
81
+ if (sDraw.zAdjust.init === 0) {
82
+ sDraw.zAdjust = pFig.getAdjustZoom(ctxZ.canvas.width, ctxZ.canvas.height);
83
+ }
77
84
  }
78
85
  function canvasResize() {
79
86
  canvasSetSize();
80
- canvasRedrawFull($dLayers);
81
- canvasRedrawZoom($dLayers);
82
- }
83
- let domInit = 0;
84
- function checkFace(iFaces: string[], iFace: string): string {
85
- let rFace = iFace;
86
- if (iFaces.length === 0) {
87
- console.log(`warn404: Drawing has an empty face list`);
88
- } else {
89
- //rFace = iFaces[0];
90
- const FaceList2 = iFaces.slice();
91
- FaceList2.push(c_ParametrixAll);
92
- if (!FaceList2.includes(rFace)) {
93
- //console.log(`warn403: Drawing has an invalid face ${rFace}`);
94
- rFace = iFaces[0];
95
- }
96
- }
97
- //console.log(iFaces);
98
- //console.log(`dbg097: rFace ${rFace}`);
99
- return rFace;
100
- }
101
- function geomRedrawSub(iSimTime: number, pVal: tParamVal, iFace: string, iLayers: tLayers) {
102
- const FigList = fgeom(iSimTime, pVal).fig;
103
- const FigListKeys = Object.keys(FigList);
104
- const sFace = checkFace(FigListKeys, iFace);
105
- selFace = sFace; // update input select
106
- if (FigListKeys.includes(sFace)) {
107
- aFigure = FigList[sFace];
108
- } else {
109
- aFigure = mergeFaces(FigList);
110
- }
111
- canvasRedrawFull(iLayers);
112
- canvasRedrawZoom(iLayers);
87
+ canvasRedrawFull(pFig, sDraw.dLayers);
88
+ canvasRedrawZoom(pFig, sDraw.zAdjust, sDraw.dLayers);
113
89
  }
114
- function geomRedraw(iSimTime: number, iFace: string) {
115
- geomRedrawSub(iSimTime, $storePV[pDef.partName], iFace, $dLayers);
90
+ function geomRedraw(iFig: Figure, iZAdjust: tCanvasAdjust, iLayers: tLayers) {
91
+ canvasRedrawFull(iFig, iLayers);
92
+ canvasRedrawZoom(iFig, iZAdjust, iLayers);
116
93
  }
94
+ // initialization
117
95
  onMount(() => {
118
- // initial drawing
119
96
  canvasSetSize();
120
- geomRedraw(simTime, selFace);
121
- //paramChange();
122
- domInit = 1;
123
97
  });
124
- // reactivity on simTime, $storePV and layers
125
- $: {
126
- if (domInit === 1) {
127
- geomRedrawSub(simTime, $storePV[pDef.partName], selFace, $dLayers);
128
- }
129
- }
98
+ // reactivity on pFig, zAdjust and dLayers
99
+ $effect(() => {
100
+ geomRedraw(pFig, sDraw.zAdjust, sDraw.dLayers);
101
+ });
102
+
103
+ // actions
130
104
  // Zoom stories
131
- function zoomClick(event: CustomEvent<{ action: string }>) {
132
- //console.log(`dbg094: ${event.detail.action}`);
133
- switch (event.detail.action) {
105
+ function zoomClick(action: string) {
106
+ //console.log(`dbg094: ${action}`);
107
+ const ctx2 = canvasZoom.getContext('2d')!;
108
+ switch (action) {
134
109
  case 'zoomInit':
135
- zAdjust.init = 0;
110
+ sDraw.zAdjust = pFig.getAdjustZoom(ctx2.canvas.width, ctx2.canvas.height);
136
111
  break;
137
112
  case 'zoomIn':
138
- zAdjust = adjustScale(0.7, zAdjust);
113
+ sDraw.zAdjust = adjustScale(0.7, sDraw.zAdjust);
139
114
  break;
140
115
  case 'zoomOut':
141
- zAdjust = adjustScale(1.3, zAdjust);
116
+ sDraw.zAdjust = adjustScale(1.3, sDraw.zAdjust);
142
117
  break;
143
118
  case 'moveLeft':
144
- zAdjust.xMin += -0.2 * zAdjust.xyDiff;
119
+ sDraw.zAdjust.xMin += -0.2 * sDraw.zAdjust.xyDiff;
145
120
  break;
146
121
  case 'moveRight':
147
- zAdjust.xMin += 0.2 * zAdjust.xyDiff;
122
+ sDraw.zAdjust.xMin += 0.2 * sDraw.zAdjust.xyDiff;
148
123
  break;
149
124
  case 'moveUp':
150
- zAdjust.yMin += 0.2 * zAdjust.xyDiff;
125
+ sDraw.zAdjust.yMin += 0.2 * sDraw.zAdjust.xyDiff;
151
126
  break;
152
127
  case 'moveDown':
153
- zAdjust.yMin += -0.2 * zAdjust.xyDiff;
128
+ sDraw.zAdjust.yMin += -0.2 * sDraw.zAdjust.xyDiff;
154
129
  break;
155
130
  default:
156
- console.log(`ERR423: ${event.detail.action} has no case!`);
131
+ console.log(`ERR423: ${action} has no case!`);
157
132
  }
158
- canvasRedrawZoom($dLayers);
133
+ canvasRedrawZoom(pFig, sDraw.zAdjust, sDraw.dLayers);
159
134
  }
160
135
  // zoom functions on the canvasFull
161
136
  interface tMouse {
@@ -192,8 +167,8 @@
192
167
  if (diffX < mouseDiffClick && diffY < mouseDiffClick) {
193
168
  //console.log(`dbg160: a click at ${eve.offsetX} ${eve.offsetY}`);
194
169
  const [px, py] = canvas2point(eve.offsetX, eve.offsetY, cAdjust);
195
- zAdjust = adjustCenter(px, py, zAdjust);
196
- geomRedraw(simTime, selFace);
170
+ sDraw.zAdjust = adjustCenter(px, py, sDraw.zAdjust);
171
+ geomRedraw(pFig, sDraw.zAdjust, sDraw.dLayers);
197
172
  }
198
173
  if (diffX > mouseDiffClick && diffY > mouseDiffClick) {
199
174
  const diffRatio1 = diffX / diffY;
@@ -202,8 +177,10 @@
202
177
  //console.log(`dbg160: a selection at ${eve.offsetX} ${eve.offsetY}`);
203
178
  const [p1x, p1y] = canvas2point(eve.offsetX, eve.offsetY, cAdjust);
204
179
  const [p2x, p2y] = canvas2point(mouseF.offsetX, mouseF.offsetY, cAdjust);
205
- zAdjust = adjustRect(p1x, p1y, p2x, p2y, canvas_size_min, canvas_size_min);
206
- geomRedraw(simTime, selFace);
180
+ const ctx2 = canvasZoom.getContext('2d')!;
181
+ const w2 = ctx2.canvas.width;
182
+ sDraw.zAdjust = adjustRect(p1x, p1y, p2x, p2y, w2, w2);
183
+ geomRedraw(pFig, sDraw.zAdjust, sDraw.dLayers);
207
184
  }
208
185
  }
209
186
  } else {
@@ -214,25 +191,27 @@
214
191
  // just drawing a rectangle to help zooming
215
192
  function cFullMouseMove(eve: MouseEvent) {
216
193
  //console.log(`dbg179: cFullMouseMove ${eve.offsetX} ${eve.offsetY} ${eve.buttons}`);
217
- const ctx1 = canvasFull.getContext('2d')!;
218
- // left click
219
- if (eve.buttons === 1) {
220
- const diffX = eve.offsetX - mouseF.offsetX;
221
- const diffY = eve.offsetY - mouseF.offsetY;
222
- canvasRedrawFull($dLayers);
223
- //const ctx1 = canvasFull.getContext('2d') as CanvasRenderingContext2D;
224
- ctx1.beginPath();
225
- ctx1.rect(mouseF.offsetX, mouseF.offsetY, diffX, diffY);
226
- ctx1.strokeStyle = colors.mouse;
227
- ctx1.stroke();
228
- }
229
- // mouse position
230
- if ($dLayers.ruler) {
231
- const [p1x, p1y] = canvas2point(eve.offsetX, eve.offsetY, cAdjust);
232
- ctx1.clearRect(5, 5, 200, 25);
233
- ctx1.font = '15px Arial';
234
- ctx1.fillStyle = colors.ruler;
235
- ctx1.fillText(`x: ${p1x.toFixed(4)} y: ${p1y.toFixed(4)}`, 5, 20);
194
+ if (canvasFull) {
195
+ const ctx1 = canvasFull.getContext('2d')!;
196
+ // left click
197
+ if (eve.buttons === 1) {
198
+ const diffX = eve.offsetX - mouseF.offsetX;
199
+ const diffY = eve.offsetY - mouseF.offsetY;
200
+ canvasRedrawFull(pFig, sDraw.dLayers);
201
+ //const ctx1 = canvasFull.getContext('2d') as CanvasRenderingContext2D;
202
+ ctx1.beginPath();
203
+ ctx1.rect(mouseF.offsetX, mouseF.offsetY, diffX, diffY);
204
+ ctx1.strokeStyle = colors.mouse;
205
+ ctx1.stroke();
206
+ }
207
+ // mouse position
208
+ if (sDraw.dLayers.ruler) {
209
+ const [p1x, p1y] = canvas2point(eve.offsetX, eve.offsetY, cAdjust);
210
+ ctx1.clearRect(5, 5, 200, 25);
211
+ ctx1.font = '15px Arial';
212
+ ctx1.fillStyle = colors.ruler;
213
+ ctx1.fillText(`x: ${p1x.toFixed(4)} y: ${p1y.toFixed(4)}`, 5, 20);
214
+ }
236
215
  }
237
216
  }
238
217
  // translate Zoom drawing
@@ -243,10 +222,10 @@
243
222
  //console.log(`dbg231: cZoomMouseDn ${eve.offsetX} ${eve.offsetY} ${eve.button}`);
244
223
  // left click
245
224
  if (eve.button === 0) {
246
- const [p1x, p1y] = canvas2point(eve.offsetX, eve.offsetY, zAdjust);
225
+ const [p1x, p1y] = canvas2point(eve.offsetX, eve.offsetY, sDraw.zAdjust);
247
226
  mouseZx = p1x; // point
248
227
  mouseZy = p1y;
249
- mouseZadjust = structuredClone(zAdjust); // deepCopy
228
+ mouseZadjust = adjustCopy(sDraw.zAdjust); // deepCopy
250
229
  //const ctx2 = canvasZoom.getContext('2d') as CanvasRenderingContext2D;
251
230
  //const [px, py] = canvas2point(eve.offsetX, eve.offsetY, cAdjust);
252
231
  //point(px, py).draw(ctx2, cAdjust, colors.mouse, 'rectangle');
@@ -257,13 +236,13 @@
257
236
  // left click
258
237
  if (eve.buttons === 1) {
259
238
  const [p2x, p2y] = canvas2point(eve.offsetX, eve.offsetY, mouseZadjust);
260
- zAdjust = adjustTranslate(mouseZx, mouseZy, p2x, p2y, mouseZadjust);
261
- canvasRedrawZoom($dLayers);
239
+ sDraw.zAdjust = adjustTranslate(mouseZx, mouseZy, p2x, p2y, mouseZadjust);
240
+ canvasRedrawZoom(pFig, sDraw.zAdjust, sDraw.dLayers);
262
241
  } else {
263
242
  // mouse position
264
- if ($dLayers.ruler) {
243
+ if (sDraw.dLayers.ruler && canvasZoom) {
265
244
  const ctx2 = canvasZoom.getContext('2d')!;
266
- const [p2x, p2y] = canvas2point(eve.offsetX, eve.offsetY, zAdjust);
245
+ const [p2x, p2y] = canvas2point(eve.offsetX, eve.offsetY, sDraw.zAdjust);
267
246
  ctx2.clearRect(5, 5, 200, 25);
268
247
  ctx2.font = '15px Arial';
269
248
  ctx2.fillStyle = colors.ruler;
@@ -272,26 +251,19 @@
272
251
  }
273
252
  }
274
253
  function cZoomWheel(eve: WheelEvent) {
254
+ eve.preventDefault();
275
255
  if (eve.deltaY > 0) {
276
- zAdjust = adjustScale(0.7, zAdjust);
256
+ sDraw.zAdjust = adjustScale(0.7, sDraw.zAdjust);
277
257
  } else {
278
- zAdjust = adjustScale(1.3, zAdjust);
258
+ sDraw.zAdjust = adjustScale(1.3, sDraw.zAdjust);
279
259
  }
280
- canvasRedrawZoom($dLayers);
260
+ canvasRedrawZoom(pFig, sDraw.zAdjust, sDraw.dLayers);
281
261
  }
282
262
  </script>
283
263
 
284
- <svelte:window bind:innerWidth={windowWidth} on:resize={canvasResize} />
264
+ // TODO: onresize is not triggered when the window is maximized
265
+ <svelte:window bind:innerWidth={windowWidth} onresize={canvasResize} />
285
266
  <section>
286
- <h2>
287
- Drawing
288
- <select bind:value={selFace}>
289
- {#each optFaces as optFace}
290
- <option value={optFace}>{optFace}</option>
291
- {/each}
292
- <option value={c_ParametrixAll}>All faces merged</option>
293
- </select>
294
- </h2>
295
267
  <LabelCheckbox />
296
268
  <div class="rack">
297
269
  <canvas
@@ -299,14 +271,14 @@
299
271
  width={canvas_size_min}
300
272
  height={canvas_size_min}
301
273
  bind:this={canvasFull}
302
- on:mousedown={cFullMouseDn}
303
- on:mouseup={cFullMouseUp}
304
- on:mousemove={cFullMouseMove}
274
+ onmousedown={cFullMouseDn}
275
+ onmouseup={cFullMouseUp}
276
+ onmousemove={cFullMouseMove}
305
277
  ></canvas>
306
278
  <TimeControl
307
- tMax={pDef.sim.tMax}
308
- tStep={pDef.sim.tStep}
309
- tUpdate={pDef.sim.tUpdate}
279
+ tMax={pDefSim.tMax}
280
+ tStep={pDefSim.tStep}
281
+ tUpdate={pDefSim.tUpdate}
310
282
  bind:simTime
311
283
  />
312
284
  </div>
@@ -316,11 +288,11 @@
316
288
  width={canvas_size_min}
317
289
  height={canvas_size_min}
318
290
  bind:this={canvasZoom}
319
- on:mousedown={cZoomMouseDn}
320
- on:mousemove={cZoomMouseMove}
321
- on:wheel|preventDefault={cZoomWheel}
291
+ onmousedown={cZoomMouseDn}
292
+ onmousemove={cZoomMouseMove}
293
+ onwheel={cZoomWheel}
322
294
  ></canvas>
323
- <ZoomControl on:myevent={zoomClick} />
295
+ <ZoomControl {zoomClick} />
324
296
  </div>
325
297
  </section>
326
298
 
@@ -332,27 +304,6 @@ $canvas-point: grey;
332
304
  colorCanvasPoint: $canvas-point;
333
305
  }
334
306
  */
335
- section > h2 {
336
- color: grey;
337
- margin: 1rem 0.5rem 0;
338
- }
339
-
340
- section > h2 > select {
341
- /*display: inline-block;*/
342
- height: 1.6rem;
343
- /*width: 1.6rem;*/
344
- color: darkBlue;
345
- font-size: 0.8rem;
346
- font-weight: 400;
347
- padding: 0.2rem 0.4rem 0.2rem;
348
- border-style: solid;
349
- border-width: 0.1rem;
350
- border-radius: 0.2rem;
351
- border-color: darkBlue;
352
- margin: 0.5rem;
353
- background-color: lightBlue;
354
- }
355
-
356
307
  section > div.rack {
357
308
  display: inline-block;
358
309
  margin: 0 1rem 0;
@@ -1,26 +1,8 @@
1
- import type { tCanvasAdjust, tParamDef, tGeomFunc } from 'geometrix';
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const Drawing: $$__sveltets_2_IsomorphicComponent<{
16
- pDef: tParamDef;
17
- fgeom: tGeomFunc;
18
- optFaces: string[];
19
- selFace: string;
20
- zAdjust: tCanvasAdjust;
1
+ import type { Figure, tSimTime } from 'geometrix';
2
+ declare const Drawing: import("svelte").Component<{
3
+ pDefSim: tSimTime;
4
+ pFig: Figure;
21
5
  simTime?: number;
22
- }, {
23
- [evt: string]: CustomEvent<any>;
24
- }, {}, {}, string>;
25
- type Drawing = InstanceType<typeof Drawing>;
6
+ }, {}, "simTime">;
7
+ type Drawing = ReturnType<typeof Drawing>;
26
8
  export default Drawing;
@@ -1,11 +1,13 @@
1
1
  <script lang="ts">
2
2
  import type { tParamDef } from 'geometrix';
3
3
  import ModalImg from './ModalImg.svelte';
4
- //import { onMount } from 'svelte';
5
- //import { browser } from '$app/environment';
6
4
  import { base } from '$app/paths';
7
5
 
8
- export let pDef: tParamDef;
6
+ // props
7
+ interface Props {
8
+ pDef: tParamDef;
9
+ }
10
+ let { pDef }: Props = $props();
9
11
 
10
12
  // helper function
11
13
  function getSvgList(ipDef: tParamDef): string[] {
@@ -17,36 +19,26 @@
17
19
  }
18
20
  return rList;
19
21
  }
20
- function getSvgList2(partName: string): string[] {
21
- // fake using partName. partName is needed for the reactivity
22
- if (partName === 'impossible_part_name') {
23
- //console.log(`dummy022: partName ${partName}`);
24
- }
25
- const lList = getSvgList(pDef);
26
- const rList2: string[] = [];
27
- for (const svg of lList) {
28
- rList2.push(`${base}/pgdsvg/${svg}`);
29
- }
30
- return rList2;
31
- }
32
- // initialization
33
- let lSvg: string[] = [];
34
- // reactivity
35
- $: lSvg = getSvgList2(pDef.partName);
36
- // modalImg
37
- let modalImg = false;
38
- let svgPath: string;
22
+
23
+ // state
24
+ let sModalImg: boolean = $state(false);
25
+ let sSvgPath: string = $state('');
26
+
27
+ // derived
28
+ let dSvgList: string[] = $derived(getSvgList(pDef).map((iSvg) => `${base}/pgdsvg/${iSvg}`));
29
+
30
+ // actions
39
31
  function showSvg(iSvgPath: string) {
40
- svgPath = iSvgPath;
41
- //console.log(`dbg231: svgPath: ${svgPath}`);
42
- modalImg = true;
32
+ sSvgPath = iSvgPath;
33
+ //console.log(`dbg231: sSvgPath: ${sSvgPath}`);
34
+ sModalImg = true;
43
35
  }
44
36
  </script>
45
37
 
46
38
  <section>
47
- <ModalImg bind:modalOpen={modalImg} {svgPath} />
48
- {#each lSvg as iSvg}
49
- <button on:click={() => showSvg(iSvg)}>
39
+ <ModalImg bind:modalOpen={sModalImg} svgPath={sSvgPath} />
40
+ {#each dSvgList as iSvg}
41
+ <button onclick={() => showSvg(iSvg)}>
50
42
  <img src={iSvg} alt={iSvg} />
51
43
  </button>
52
44
  {/each}
@@ -1,21 +1,6 @@
1
1
  import type { tParamDef } from 'geometrix';
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const DrawingList: $$__sveltets_2_IsomorphicComponent<{
2
+ declare const DrawingList: import("svelte").Component<{
16
3
  pDef: tParamDef;
17
- }, {
18
- [evt: string]: CustomEvent<any>;
19
- }, {}, {}, string>;
20
- type DrawingList = InstanceType<typeof DrawingList>;
4
+ }, {}, "">;
5
+ type DrawingList = ReturnType<typeof DrawingList>;
21
6
  export default DrawingList;