wyreframe 0.4.3 → 0.5.1

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.
package/dist/index.d.ts CHANGED
@@ -101,6 +101,21 @@ export interface SceneManager {
101
101
  }
102
102
  /** Scene change callback type */
103
103
  export type OnSceneChangeCallback = (fromScene: string | undefined, toScene: string) => void;
104
+ /** Element type for dead end clicks */
105
+ export type DeadEndElementType = 'button' | 'link';
106
+ /** Information about a clicked element with no navigation target */
107
+ export interface DeadEndClickInfo {
108
+ /** The scene ID where the click occurred */
109
+ sceneId: string;
110
+ /** The ID of the clicked element */
111
+ elementId: string;
112
+ /** The display text of the clicked element */
113
+ elementText: string;
114
+ /** The type of element that was clicked */
115
+ elementType: DeadEndElementType;
116
+ }
117
+ /** Dead end click callback type */
118
+ export type OnDeadEndClickCallback = (info: DeadEndClickInfo) => void;
104
119
  /** Render options */
105
120
  export interface RenderOptions {
106
121
  /** Theme name */
@@ -124,6 +139,12 @@ export interface RenderOptions {
124
139
  * Useful for previewing wireframes in different device contexts without modifying the source.
125
140
  */
126
141
  device?: DeviceType;
142
+ /**
143
+ * Callback fired when a button or link without a navigation target is clicked.
144
+ * Useful for handling dead-end interactions, showing modals, or custom navigation logic.
145
+ * @param info - Information about the clicked element and current scene
146
+ */
147
+ onDeadEndClick?: OnDeadEndClickCallback;
127
148
  }
128
149
  /** Render result */
129
150
  export interface RenderResult {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wyreframe",
3
- "version": "0.4.3",
3
+ "version": "0.5.1",
4
4
  "description": "ASCII wireframe + interaction DSL to HTML converter with scene transitions",
5
5
  "author": "wickedev",
6
6
  "repository": {
package/src/index.ts CHANGED
@@ -151,6 +151,24 @@ export interface SceneManager {
151
151
  /** Scene change callback type */
152
152
  export type OnSceneChangeCallback = (fromScene: string | undefined, toScene: string) => void;
153
153
 
154
+ /** Element type for dead end clicks */
155
+ export type DeadEndElementType = 'button' | 'link';
156
+
157
+ /** Information about a clicked element with no navigation target */
158
+ export interface DeadEndClickInfo {
159
+ /** The scene ID where the click occurred */
160
+ sceneId: string;
161
+ /** The ID of the clicked element */
162
+ elementId: string;
163
+ /** The display text of the clicked element */
164
+ elementText: string;
165
+ /** The type of element that was clicked */
166
+ elementType: DeadEndElementType;
167
+ }
168
+
169
+ /** Dead end click callback type */
170
+ export type OnDeadEndClickCallback = (info: DeadEndClickInfo) => void;
171
+
154
172
  /** Render options */
155
173
  export interface RenderOptions {
156
174
  /** Theme name */
@@ -174,6 +192,12 @@ export interface RenderOptions {
174
192
  * Useful for previewing wireframes in different device contexts without modifying the source.
175
193
  */
176
194
  device?: DeviceType;
195
+ /**
196
+ * Callback fired when a button or link without a navigation target is clicked.
197
+ * Useful for handling dead-end interactions, showing modals, or custom navigation logic.
198
+ * @param info - Information about the clicked element and current scene
199
+ */
200
+ onDeadEndClick?: OnDeadEndClickCallback;
177
201
  }
178
202
 
179
203
  /** Render result */
@@ -12,7 +12,7 @@ function calculate(content, position, boxBounds) {
12
12
  return "Left";
13
13
  }
14
14
  let leftSpace = contentStart - boxLeft | 0;
15
- let rightSpace = boxRight - contentEnd | 0;
15
+ let rightSpace = (boxRight - contentEnd | 0) + 1 | 0;
16
16
  let leftRatio = leftSpace / boxWidth;
17
17
  let rightRatio = rightSpace / boxWidth;
18
18
  if (leftRatio < 0.2 && rightRatio > 0.3) {
@@ -43,8 +43,9 @@ let calculate = (
43
43
  Left
44
44
  } else {
45
45
  // Calculate space on each side
46
+ // Note: contentEnd is exclusive (position after last char), so we add 1 to get correct count
46
47
  let leftSpace = contentStart - boxLeft
47
- let rightSpace = boxRight - contentEnd
48
+ let rightSpace = boxRight - contentEnd + 1
48
49
 
49
50
  // Convert to ratios (0.0 to 1.0) relative to box width
50
51
  let leftRatio = Int.toFloat(leftSpace) /. Int.toFloat(boxWidth)
@@ -19,6 +19,22 @@ export abstract class DomBindings_element { protected opaque!: any }; /* simulat
19
19
  * @param toScene The scene ID navigating to */
20
20
  export type onSceneChangeCallback = (_1:(undefined | string), _2:string) => void;
21
21
 
22
+ /** * Dead end click info type.
23
+ * Contains information about the clicked element that has no navigation target. */
24
+ export type deadEndClickInfo = {
25
+ readonly sceneId: string;
26
+ readonly elementId: string;
27
+ readonly elementText: string;
28
+ readonly elementType:
29
+ "link"
30
+ | "button"
31
+ };
32
+
33
+ /** * Dead end click callback type.
34
+ * Called when a button or link without navigation target is clicked.
35
+ * @param info Information about the clicked element and current scene */
36
+ export type onDeadEndClickCallback = (_1:deadEndClickInfo) => void;
37
+
22
38
  /** * Configuration for the rendering process. */
23
39
  export type renderOptions = {
24
40
  readonly theme: (undefined | string);
@@ -26,6 +42,7 @@ export type renderOptions = {
26
42
  readonly injectStyles: boolean;
27
43
  readonly containerClass: (undefined | string);
28
44
  readonly onSceneChange: (undefined | onSceneChangeCallback);
45
+ readonly onDeadEndClick: (undefined | onDeadEndClickCallback);
29
46
  readonly device: (undefined | Types_deviceType)
30
47
  };
31
48
 
@@ -14,6 +14,7 @@ let defaultOptions = {
14
14
  injectStyles: true,
15
15
  containerClass: undefined,
16
16
  onSceneChange: undefined,
17
+ onDeadEndClick: undefined,
17
18
  device: undefined
18
19
  };
19
20
 
@@ -134,7 +135,24 @@ function deviceTypeToClass(device) {
134
135
  }
135
136
  }
136
137
 
137
- function renderElement(_elem, onAction) {
138
+ function isNavigationAction(action) {
139
+ if (typeof action !== "object") {
140
+ return true;
141
+ }
142
+ switch (action.TAG) {
143
+ case "Validate" :
144
+ case "Call" :
145
+ return false;
146
+ default:
147
+ return true;
148
+ }
149
+ }
150
+
151
+ function hasNavigationAction(actions) {
152
+ return actions.some(isNavigationAction);
153
+ }
154
+
155
+ function renderElement(_elem, onAction, onDeadEnd) {
138
156
  while (true) {
139
157
  let elem = _elem;
140
158
  if (isInputOnlyBox(elem)) {
@@ -156,7 +174,7 @@ function renderElement(_elem, onAction) {
156
174
  div.dataset["name"] = name;
157
175
  }
158
176
  elem.children.forEach(child => {
159
- let el = renderElement(child, onAction);
177
+ let el = renderElement(child, onAction, onDeadEnd);
160
178
  if (el !== undefined) {
161
179
  div.appendChild(Primitive_option.valFromOption(el));
162
180
  return;
@@ -165,18 +183,25 @@ function renderElement(_elem, onAction) {
165
183
  return Primitive_option.some(div);
166
184
  case "Button" :
167
185
  let actions = elem.actions;
186
+ let text = elem.text;
187
+ let id = elem.id;
168
188
  let btn = document.createElement("button");
169
189
  btn.className = "wf-button";
170
- btn.id = elem.id;
171
- btn.textContent = elem.text;
190
+ btn.id = id;
191
+ btn.textContent = text;
172
192
  applyAlignment(btn, elem.align);
173
- if (actions.length > 0 && onAction !== undefined) {
174
- btn.addEventListener("click", _event => {
175
- let action = actions[0];
176
- if (action !== undefined) {
177
- return onAction(action);
178
- }
179
- });
193
+ let hasNavigation = actions.some(isNavigationAction);
194
+ if (hasNavigation) {
195
+ if (onAction !== undefined) {
196
+ btn.addEventListener("click", _event => {
197
+ let action = actions[0];
198
+ if (action !== undefined) {
199
+ return onAction(action);
200
+ }
201
+ });
202
+ }
203
+ } else if (onDeadEnd !== undefined) {
204
+ btn.addEventListener("click", _event => onDeadEnd(id, text, "button"));
180
205
  }
181
206
  return Primitive_option.some(btn);
182
207
  case "Input" :
@@ -190,19 +215,29 @@ function renderElement(_elem, onAction) {
190
215
  return Primitive_option.some(input$1);
191
216
  case "Link" :
192
217
  let actions$1 = elem.actions;
218
+ let text$1 = elem.text;
219
+ let id$1 = elem.id;
193
220
  let link = document.createElement("a");
194
221
  link.className = "wf-link";
195
- link.id = elem.id;
222
+ link.id = id$1;
196
223
  link.href = "#";
197
- link.textContent = elem.text;
224
+ link.textContent = text$1;
198
225
  applyAlignment(link, elem.align);
199
- if (actions$1.length > 0 && onAction !== undefined) {
226
+ let hasNavigation$1 = actions$1.some(isNavigationAction);
227
+ if (hasNavigation$1) {
228
+ if (onAction !== undefined) {
229
+ link.addEventListener("click", event => {
230
+ event.preventDefault();
231
+ let action = actions$1[0];
232
+ if (action !== undefined) {
233
+ return onAction(action);
234
+ }
235
+ });
236
+ }
237
+ } else if (onDeadEnd !== undefined) {
200
238
  link.addEventListener("click", event => {
201
239
  event.preventDefault();
202
- let action = actions$1[0];
203
- if (action !== undefined) {
204
- return onAction(action);
205
- }
240
+ onDeadEnd(id$1, text$1, "link");
206
241
  });
207
242
  }
208
243
  return Primitive_option.some(link);
@@ -239,7 +274,7 @@ function renderElement(_elem, onAction) {
239
274
  row.className = "wf-row";
240
275
  applyAlignment(row, elem.align);
241
276
  elem.children.forEach(child => {
242
- let el = renderElement(child, onAction);
277
+ let el = renderElement(child, onAction, onDeadEnd);
243
278
  if (el !== undefined) {
244
279
  row.appendChild(Primitive_option.valFromOption(el));
245
280
  return;
@@ -255,7 +290,7 @@ function renderElement(_elem, onAction) {
255
290
  let contentEl = document.createElement("div");
256
291
  contentEl.className = "wf-section-content";
257
292
  elem.children.forEach(child => {
258
- let el = renderElement(child, onAction);
293
+ let el = renderElement(child, onAction, onDeadEnd);
259
294
  if (el !== undefined) {
260
295
  contentEl.appendChild(Primitive_option.valFromOption(el));
261
296
  return;
@@ -268,12 +303,12 @@ function renderElement(_elem, onAction) {
268
303
  };
269
304
  }
270
305
 
271
- function renderScene(scene, onAction) {
306
+ function renderScene(scene, onAction, onDeadEnd) {
272
307
  let sceneEl = document.createElement("div");
273
308
  sceneEl.className = "wf-scene";
274
309
  sceneEl.dataset["scene"] = scene.id;
275
310
  scene.elements.forEach(elem => {
276
- let el = renderElement(elem, onAction);
311
+ let el = renderElement(elem, onAction, onDeadEnd);
277
312
  if (el !== undefined) {
278
313
  sceneEl.appendChild(Primitive_option.valFromOption(el));
279
314
  return;
@@ -465,7 +500,14 @@ function render(ast, options) {
465
500
  };
466
501
  let sceneMap = new Map();
467
502
  ast.scenes.forEach(scene => {
468
- let sceneEl = renderScene(scene, handleAction);
503
+ let callback = opts.onDeadEndClick;
504
+ let handleDeadEnd = callback !== undefined ? (elementId, elementText, elementType) => callback({
505
+ sceneId: scene.id,
506
+ elementId: elementId,
507
+ elementText: elementText,
508
+ elementType: elementType
509
+ }) : undefined;
510
+ let sceneEl = renderScene(scene, handleAction, handleDeadEnd);
469
511
  app.appendChild(sceneEl);
470
512
  sceneMap.set(scene.id, sceneEl);
471
513
  });
@@ -538,6 +580,8 @@ export {
538
580
  alignmentToClass,
539
581
  applyAlignment,
540
582
  deviceTypeToClass,
583
+ isNavigationAction,
584
+ hasNavigationAction,
541
585
  renderElement,
542
586
  renderScene,
543
587
  createSceneManager,
@@ -56,6 +56,24 @@ module DomBindings = {
56
56
  */
57
57
  type onSceneChangeCallback = (option<string>, string) => unit
58
58
 
59
+ /**
60
+ * Dead end click info type.
61
+ * Contains information about the clicked element that has no navigation target.
62
+ */
63
+ type deadEndClickInfo = {
64
+ sceneId: string,
65
+ elementId: string,
66
+ elementText: string,
67
+ elementType: [#button | #link],
68
+ }
69
+
70
+ /**
71
+ * Dead end click callback type.
72
+ * Called when a button or link without navigation target is clicked.
73
+ * @param info Information about the clicked element and current scene
74
+ */
75
+ type onDeadEndClickCallback = deadEndClickInfo => unit
76
+
59
77
  /**
60
78
  * Configuration for the rendering process.
61
79
  */
@@ -65,6 +83,7 @@ type renderOptions = {
65
83
  injectStyles: bool,
66
84
  containerClass: option<string>,
67
85
  onSceneChange: option<onSceneChangeCallback>,
86
+ onDeadEndClick: option<onDeadEndClickCallback>,
68
87
  device: option<deviceType>,
69
88
  }
70
89
 
@@ -77,6 +96,7 @@ let defaultOptions: renderOptions = {
77
96
  injectStyles: true,
78
97
  containerClass: None,
79
98
  onSceneChange: None,
99
+ onDeadEndClick: None,
80
100
  device: None,
81
101
  }
82
102
 
@@ -230,17 +250,44 @@ let deviceTypeToClass = (device: deviceType): string => {
230
250
  */
231
251
  type actionHandler = interactionAction => unit
232
252
 
253
+ /**
254
+ * Dead end handler function type - called when an element without navigation is clicked.
255
+ * Receives element ID, text, and type.
256
+ */
257
+ type deadEndHandler = (string, string, [#button | #link]) => unit
258
+
259
+ /**
260
+ * Check if an action is a navigation action (Goto, Back, Forward).
261
+ */
262
+ let isNavigationAction = (action: interactionAction): bool => {
263
+ switch action {
264
+ | Goto(_) | Back | Forward => true
265
+ | Validate(_) | Call(_) => false
266
+ }
267
+ }
268
+
269
+ /**
270
+ * Check if actions array has any navigation actions.
271
+ */
272
+ let hasNavigationAction = (actions: array<interactionAction>): bool => {
273
+ actions->Array.some(isNavigationAction)
274
+ }
275
+
233
276
  // ============================================================================
234
277
  // Element Rendering
235
278
  // ============================================================================
236
279
 
237
- let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): option<DomBindings.element> => {
280
+ let rec renderElement = (
281
+ elem: element,
282
+ ~onAction: option<actionHandler>=?,
283
+ ~onDeadEnd: option<deadEndHandler>=?,
284
+ ): option<DomBindings.element> => {
238
285
  // Handle input-only boxes by rendering children directly in a wrapper
239
286
  if isInputOnlyBox(elem) {
240
287
  let inputs = getInputsFromBox(elem)
241
288
  // If only one input, render it directly
242
289
  switch inputs->Array.get(0) {
243
- | Some(input) => renderElement(input, ~onAction?)
290
+ | Some(input) => renderElement(input, ~onAction?, ~onDeadEnd?)
244
291
  | None => None
245
292
  }
246
293
  } else {
@@ -258,7 +305,7 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
258
305
  }
259
306
 
260
307
  children->Array.forEach(child => {
261
- switch renderElement(child, ~onAction?) {
308
+ switch renderElement(child, ~onAction?, ~onDeadEnd?) {
262
309
  | Some(el) => div->DomBindings.appendChild(el)
263
310
  | None => ()
264
311
  }
@@ -274,8 +321,11 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
274
321
  btn->DomBindings.setTextContent(text)
275
322
  applyAlignment(btn, align)
276
323
 
277
- // Attach click handler for actions
278
- if actions->Array.length > 0 {
324
+ // Check if button has navigation actions
325
+ let hasNavigation = hasNavigationAction(actions)
326
+
327
+ if hasNavigation {
328
+ // Attach click handler for navigation actions
279
329
  switch onAction {
280
330
  | Some(handler) => {
281
331
  btn->DomBindings.addEventListener("click", _event => {
@@ -288,6 +338,16 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
288
338
  }
289
339
  | None => ()
290
340
  }
341
+ } else {
342
+ // No navigation - call dead end handler
343
+ switch onDeadEnd {
344
+ | Some(handler) => {
345
+ btn->DomBindings.addEventListener("click", _event => {
346
+ handler(id, text, #button)
347
+ })
348
+ }
349
+ | None => ()
350
+ }
291
351
  }
292
352
 
293
353
  Some(btn)
@@ -312,8 +372,11 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
312
372
  link->DomBindings.setTextContent(text)
313
373
  applyAlignment(link, align)
314
374
 
315
- // Attach click handler for actions
316
- if actions->Array.length > 0 {
375
+ // Check if link has navigation actions
376
+ let hasNavigation = hasNavigationAction(actions)
377
+
378
+ if hasNavigation {
379
+ // Attach click handler for navigation actions
317
380
  switch onAction {
318
381
  | Some(handler) => {
319
382
  link->DomBindings.addEventListener("click", event => {
@@ -327,6 +390,17 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
327
390
  }
328
391
  | None => ()
329
392
  }
393
+ } else {
394
+ // No navigation - call dead end handler
395
+ switch onDeadEnd {
396
+ | Some(handler) => {
397
+ link->DomBindings.addEventListener("click", event => {
398
+ DomBindings.preventDefault(event)
399
+ handler(id, text, #link)
400
+ })
401
+ }
402
+ | None => ()
403
+ }
330
404
  }
331
405
 
332
406
  Some(link)
@@ -376,7 +450,7 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
376
450
  applyAlignment(row, align)
377
451
 
378
452
  children->Array.forEach(child => {
379
- switch renderElement(child, ~onAction?) {
453
+ switch renderElement(child, ~onAction?, ~onDeadEnd?) {
380
454
  | Some(el) => row->DomBindings.appendChild(el)
381
455
  | None => ()
382
456
  }
@@ -397,7 +471,7 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
397
471
  contentEl->DomBindings.setClassName("wf-section-content")
398
472
 
399
473
  children->Array.forEach(child => {
400
- switch renderElement(child, ~onAction?) {
474
+ switch renderElement(child, ~onAction?, ~onDeadEnd?) {
401
475
  | Some(el) => contentEl->DomBindings.appendChild(el)
402
476
  | None => ()
403
477
  }
@@ -411,13 +485,17 @@ let rec renderElement = (elem: element, ~onAction: option<actionHandler>=?): opt
411
485
  }
412
486
  }
413
487
 
414
- let renderScene = (scene: scene, ~onAction: option<actionHandler>=?): DomBindings.element => {
488
+ let renderScene = (
489
+ scene: scene,
490
+ ~onAction: option<actionHandler>=?,
491
+ ~onDeadEnd: option<deadEndHandler>=?,
492
+ ): DomBindings.element => {
415
493
  let sceneEl = DomBindings.document->DomBindings.createElement("div")
416
494
  sceneEl->DomBindings.setClassName("wf-scene")
417
495
  sceneEl->DomBindings.dataset->DomBindings.setDataAttr("scene", scene.id)
418
496
 
419
497
  scene.elements->Array.forEach(elem => {
420
- switch renderElement(elem, ~onAction?) {
498
+ switch renderElement(elem, ~onAction?, ~onDeadEnd?) {
421
499
  | Some(el) => sceneEl->DomBindings.appendChild(el)
422
500
  | None => ()
423
501
  }
@@ -670,7 +748,21 @@ let render = (ast: ast, options: option<renderOptions>): renderResult => {
670
748
  let sceneMap = Map.make()
671
749
 
672
750
  ast.scenes->Array.forEach(scene => {
673
- let sceneEl = renderScene(scene, ~onAction=handleAction)
751
+ // Create a scene-specific dead end handler that includes the scene ID
752
+ let handleDeadEnd = switch opts.onDeadEndClick {
753
+ | Some(callback) =>
754
+ Some((elementId: string, elementText: string, elementType: [#button | #link]) => {
755
+ callback({
756
+ sceneId: scene.id,
757
+ elementId,
758
+ elementText,
759
+ elementType,
760
+ })
761
+ })
762
+ | None => None
763
+ }
764
+
765
+ let sceneEl = renderScene(scene, ~onAction=handleAction, ~onDeadEnd=?handleDeadEnd)
674
766
  app->DomBindings.appendChild(sceneEl)
675
767
  sceneMap->Map.set(scene.id, sceneEl)
676
768
  })