@fieldia/designer 0.15.0 → 0.17.0

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 (221) hide show
  1. package/package.json +4 -4
  2. package/src/lib/canvas-blocks.d.mts +4 -3
  3. package/src/lib/canvas-blocks.d.ts +4 -3
  4. package/src/lib/canvas-blocks.js +8 -1
  5. package/src/lib/canvas-blocks.js.map +1 -1
  6. package/src/lib/canvas-blocks.mjs +8 -1
  7. package/src/lib/canvas-blocks.mjs.map +1 -1
  8. package/src/lib/canvas-icons.js +1 -0
  9. package/src/lib/canvas-icons.js.map +1 -1
  10. package/src/lib/canvas-icons.mjs +1 -0
  11. package/src/lib/canvas-icons.mjs.map +1 -1
  12. package/src/lib/designer.d.mts +29 -1
  13. package/src/lib/designer.d.ts +29 -1
  14. package/src/lib/designer.js +31 -1
  15. package/src/lib/designer.js.map +1 -1
  16. package/src/lib/designer.mjs +32 -2
  17. package/src/lib/designer.mjs.map +1 -1
  18. package/src/lib/icons.js +1 -0
  19. package/src/lib/icons.js.map +1 -1
  20. package/src/lib/icons.mjs +1 -0
  21. package/src/lib/icons.mjs.map +1 -1
  22. package/src/lib/json-checks.js +4 -0
  23. package/src/lib/json-checks.js.map +1 -1
  24. package/src/lib/json-checks.mjs +4 -0
  25. package/src/lib/json-checks.mjs.map +1 -1
  26. package/src/lib/layout-changes.js +2 -0
  27. package/src/lib/layout-changes.js.map +1 -1
  28. package/src/lib/layout-changes.mjs +2 -0
  29. package/src/lib/layout-changes.mjs.map +1 -1
  30. package/src/lib/layout-ops.d.mts +1 -1
  31. package/src/lib/layout-ops.d.ts +1 -1
  32. package/src/lib/layout-ops.js +4 -1
  33. package/src/lib/layout-ops.js.map +1 -1
  34. package/src/lib/layout-ops.mjs +4 -1
  35. package/src/lib/layout-ops.mjs.map +1 -1
  36. package/src/lib/layout-tree.js +3 -1
  37. package/src/lib/layout-tree.js.map +1 -1
  38. package/src/lib/layout-tree.mjs +3 -1
  39. package/src/lib/layout-tree.mjs.map +1 -1
  40. package/src/lib/list-properties.js +59 -2
  41. package/src/lib/list-properties.js.map +1 -1
  42. package/src/lib/list-properties.mjs +59 -2
  43. package/src/lib/list-properties.mjs.map +1 -1
  44. package/src/lib/locales/ar/canvas.js +2 -0
  45. package/src/lib/locales/ar/canvas.js.map +1 -1
  46. package/src/lib/locales/ar/canvas.mjs +2 -0
  47. package/src/lib/locales/ar/canvas.mjs.map +1 -1
  48. package/src/lib/locales/ar/changes.js +1 -0
  49. package/src/lib/locales/ar/changes.js.map +1 -1
  50. package/src/lib/locales/ar/changes.mjs +1 -0
  51. package/src/lib/locales/ar/changes.mjs.map +1 -1
  52. package/src/lib/locales/ar/defaults.js +2 -0
  53. package/src/lib/locales/ar/defaults.js.map +1 -1
  54. package/src/lib/locales/ar/defaults.mjs +2 -0
  55. package/src/lib/locales/ar/defaults.mjs.map +1 -1
  56. package/src/lib/locales/ar/index.js +2 -1
  57. package/src/lib/locales/ar/index.js.map +1 -1
  58. package/src/lib/locales/ar/index.mjs +2 -1
  59. package/src/lib/locales/ar/index.mjs.map +1 -1
  60. package/src/lib/locales/ar/list.js +9 -0
  61. package/src/lib/locales/ar/list.js.map +1 -1
  62. package/src/lib/locales/ar/list.mjs +9 -0
  63. package/src/lib/locales/ar/list.mjs.map +1 -1
  64. package/src/lib/locales/ar/map-part.d.mts +2 -0
  65. package/src/lib/locales/ar/map-part.d.ts +2 -0
  66. package/src/lib/locales/ar/map-part.js +68 -0
  67. package/src/lib/locales/ar/map-part.js.map +1 -0
  68. package/src/lib/locales/ar/map-part.mjs +65 -0
  69. package/src/lib/locales/ar/map-part.mjs.map +1 -0
  70. package/src/lib/locales/ar/outline.js +1 -0
  71. package/src/lib/locales/ar/outline.js.map +1 -1
  72. package/src/lib/locales/ar/outline.mjs +1 -0
  73. package/src/lib/locales/ar/outline.mjs.map +1 -1
  74. package/src/lib/locales/ar/panel.js +7 -0
  75. package/src/lib/locales/ar/panel.js.map +1 -1
  76. package/src/lib/locales/ar/panel.mjs +7 -0
  77. package/src/lib/locales/ar/panel.mjs.map +1 -1
  78. package/src/lib/locales/ar/parts.js +1 -0
  79. package/src/lib/locales/ar/parts.js.map +1 -1
  80. package/src/lib/locales/ar/parts.mjs +1 -0
  81. package/src/lib/locales/ar/parts.mjs.map +1 -1
  82. package/src/lib/locales/ar/steps.js +2 -0
  83. package/src/lib/locales/ar/steps.js.map +1 -1
  84. package/src/lib/locales/ar/steps.mjs +2 -0
  85. package/src/lib/locales/ar/steps.mjs.map +1 -1
  86. package/src/lib/locales/ar/toolbox.js +1 -0
  87. package/src/lib/locales/ar/toolbox.js.map +1 -1
  88. package/src/lib/locales/ar/toolbox.mjs +1 -0
  89. package/src/lib/locales/ar/toolbox.mjs.map +1 -1
  90. package/src/lib/locales/en/canvas.d.mts +2 -0
  91. package/src/lib/locales/en/canvas.d.ts +2 -0
  92. package/src/lib/locales/en/canvas.js +2 -0
  93. package/src/lib/locales/en/canvas.js.map +1 -1
  94. package/src/lib/locales/en/canvas.mjs +2 -0
  95. package/src/lib/locales/en/canvas.mjs.map +1 -1
  96. package/src/lib/locales/en/changes.d.mts +1 -0
  97. package/src/lib/locales/en/changes.d.ts +1 -0
  98. package/src/lib/locales/en/changes.js +1 -0
  99. package/src/lib/locales/en/changes.js.map +1 -1
  100. package/src/lib/locales/en/changes.mjs +1 -0
  101. package/src/lib/locales/en/changes.mjs.map +1 -1
  102. package/src/lib/locales/en/defaults.d.mts +2 -0
  103. package/src/lib/locales/en/defaults.d.ts +2 -0
  104. package/src/lib/locales/en/defaults.js +2 -0
  105. package/src/lib/locales/en/defaults.js.map +1 -1
  106. package/src/lib/locales/en/defaults.mjs +2 -0
  107. package/src/lib/locales/en/defaults.mjs.map +1 -1
  108. package/src/lib/locales/en/index.d.mts +118 -1
  109. package/src/lib/locales/en/index.d.ts +118 -1
  110. package/src/lib/locales/en/index.js +2 -1
  111. package/src/lib/locales/en/index.js.map +1 -1
  112. package/src/lib/locales/en/index.mjs +2 -1
  113. package/src/lib/locales/en/index.mjs.map +1 -1
  114. package/src/lib/locales/en/list.d.mts +14 -0
  115. package/src/lib/locales/en/list.d.ts +14 -0
  116. package/src/lib/locales/en/list.js +9 -0
  117. package/src/lib/locales/en/list.js.map +1 -1
  118. package/src/lib/locales/en/list.mjs +9 -0
  119. package/src/lib/locales/en/list.mjs.map +1 -1
  120. package/src/lib/locales/en/map-part.d.mts +93 -0
  121. package/src/lib/locales/en/map-part.d.ts +93 -0
  122. package/src/lib/locales/en/map-part.js +69 -0
  123. package/src/lib/locales/en/map-part.js.map +1 -0
  124. package/src/lib/locales/en/map-part.mjs +66 -0
  125. package/src/lib/locales/en/map-part.mjs.map +1 -0
  126. package/src/lib/locales/en/outline.d.mts +1 -0
  127. package/src/lib/locales/en/outline.d.ts +1 -0
  128. package/src/lib/locales/en/outline.js +1 -0
  129. package/src/lib/locales/en/outline.js.map +1 -1
  130. package/src/lib/locales/en/outline.mjs +1 -0
  131. package/src/lib/locales/en/outline.mjs.map +1 -1
  132. package/src/lib/locales/en/panel.d.mts +2 -0
  133. package/src/lib/locales/en/panel.d.ts +2 -0
  134. package/src/lib/locales/en/panel.js +2 -0
  135. package/src/lib/locales/en/panel.js.map +1 -1
  136. package/src/lib/locales/en/panel.mjs +2 -0
  137. package/src/lib/locales/en/panel.mjs.map +1 -1
  138. package/src/lib/locales/en/parts.d.mts +1 -0
  139. package/src/lib/locales/en/parts.d.ts +1 -0
  140. package/src/lib/locales/en/parts.js +1 -0
  141. package/src/lib/locales/en/parts.js.map +1 -1
  142. package/src/lib/locales/en/parts.mjs +1 -0
  143. package/src/lib/locales/en/parts.mjs.map +1 -1
  144. package/src/lib/locales/en/steps.d.mts +2 -0
  145. package/src/lib/locales/en/steps.d.ts +2 -0
  146. package/src/lib/locales/en/steps.js +2 -0
  147. package/src/lib/locales/en/steps.js.map +1 -1
  148. package/src/lib/locales/en/steps.mjs +2 -0
  149. package/src/lib/locales/en/steps.mjs.map +1 -1
  150. package/src/lib/locales/en/toolbox.d.mts +1 -1
  151. package/src/lib/locales/en/toolbox.d.ts +1 -1
  152. package/src/lib/locales/en/toolbox.js +1 -0
  153. package/src/lib/locales/en/toolbox.js.map +1 -1
  154. package/src/lib/locales/en/toolbox.mjs +1 -0
  155. package/src/lib/locales/en/toolbox.mjs.map +1 -1
  156. package/src/lib/outline-rows.js +1 -0
  157. package/src/lib/outline-rows.js.map +1 -1
  158. package/src/lib/outline-rows.mjs +1 -0
  159. package/src/lib/outline-rows.mjs.map +1 -1
  160. package/src/lib/page-tree.d.mts +11 -3
  161. package/src/lib/page-tree.d.ts +11 -3
  162. package/src/lib/page-tree.js +38 -2
  163. package/src/lib/page-tree.js.map +1 -1
  164. package/src/lib/page-tree.mjs +37 -2
  165. package/src/lib/page-tree.mjs.map +1 -1
  166. package/src/lib/panel-block.js +4 -0
  167. package/src/lib/panel-block.js.map +1 -1
  168. package/src/lib/panel-block.mjs +4 -0
  169. package/src/lib/panel-block.mjs.map +1 -1
  170. package/src/lib/panel-map.d.mts +4 -0
  171. package/src/lib/panel-map.d.ts +4 -0
  172. package/src/lib/panel-map.js +562 -0
  173. package/src/lib/panel-map.js.map +1 -0
  174. package/src/lib/panel-map.mjs +559 -0
  175. package/src/lib/panel-map.mjs.map +1 -0
  176. package/src/lib/panel-screen.js +1 -0
  177. package/src/lib/panel-screen.js.map +1 -1
  178. package/src/lib/panel-screen.mjs +1 -0
  179. package/src/lib/panel-screen.mjs.map +1 -1
  180. package/src/lib/screen-editor.d.mts +3 -1
  181. package/src/lib/screen-editor.d.ts +3 -1
  182. package/src/lib/screen-editor.js +3 -1
  183. package/src/lib/screen-editor.js.map +1 -1
  184. package/src/lib/screen-editor.mjs +3 -1
  185. package/src/lib/screen-editor.mjs.map +1 -1
  186. package/src/lib/steps-checks.js +6 -4
  187. package/src/lib/steps-checks.js.map +1 -1
  188. package/src/lib/steps-checks.mjs +6 -4
  189. package/src/lib/steps-checks.mjs.map +1 -1
  190. package/src/lib/steps-marks.js +4 -4
  191. package/src/lib/steps-marks.js.map +1 -1
  192. package/src/lib/steps-marks.mjs +5 -5
  193. package/src/lib/steps-marks.mjs.map +1 -1
  194. package/src/lib/steps-places.d.mts +13 -2
  195. package/src/lib/steps-places.d.ts +13 -2
  196. package/src/lib/steps-places.js +26 -0
  197. package/src/lib/steps-places.js.map +1 -1
  198. package/src/lib/steps-places.mjs +25 -0
  199. package/src/lib/steps-places.mjs.map +1 -1
  200. package/src/lib/steps-words.js +12 -1
  201. package/src/lib/steps-words.js.map +1 -1
  202. package/src/lib/steps-words.mjs +13 -2
  203. package/src/lib/steps-words.mjs.map +1 -1
  204. package/src/lib/styles-kinds.d.mts +1 -1
  205. package/src/lib/styles-kinds.d.ts +1 -1
  206. package/src/lib/styles-kinds.js +12 -0
  207. package/src/lib/styles-kinds.js.map +1 -1
  208. package/src/lib/styles-kinds.mjs +12 -0
  209. package/src/lib/styles-kinds.mjs.map +1 -1
  210. package/src/lib/toolbox.d.mts +2 -0
  211. package/src/lib/toolbox.d.ts +2 -0
  212. package/src/lib/toolbox.js +1 -1
  213. package/src/lib/toolbox.js.map +1 -1
  214. package/src/lib/toolbox.mjs +1 -1
  215. package/src/lib/toolbox.mjs.map +1 -1
  216. package/src/lib/try-it.d.mts +3 -1
  217. package/src/lib/try-it.d.ts +3 -1
  218. package/src/lib/try-it.js +18 -0
  219. package/src/lib/try-it.js.map +1 -1
  220. package/src/lib/try-it.mjs +18 -0
  221. package/src/lib/try-it.mjs.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fieldia/designer",
3
- "version": "0.15.0",
3
+ "version": "0.17.0",
4
4
  "description": "Build Fieldia pages without writing JSON: an editing model with undo and versions, a survey editor, and a canvas.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://fieldia.dev",
@@ -44,9 +44,9 @@
44
44
  "./package.json": "./package.json"
45
45
  },
46
46
  "dependencies": {
47
- "@fieldia/core": "0.15.0",
48
- "@fieldia/viewer": "0.15.0",
49
- "@fieldia/widgets": "0.15.0",
47
+ "@fieldia/core": "0.17.0",
48
+ "@fieldia/viewer": "0.17.0",
49
+ "@fieldia/widgets": "0.17.0",
50
50
  "tslib": "^2.8.1"
51
51
  },
52
52
  "peerDependencies": {
@@ -1,13 +1,14 @@
1
- import type { ButtonNode, DividerNode, ImageNode, SlotNode, SpacerNode, TextNode } from '@fieldia/core';
1
+ import type { ButtonNode, DividerNode, ImageNode, MapNode, SlotNode, SpacerNode, TextNode } from '@fieldia/core';
2
2
  import type { ElementFactory } from './chrome.mjs';
3
3
  import type { Designer } from './designer.mjs';
4
4
  /**
5
5
  * The blocks between fields on the canvas — words, a button, a line, room, a
6
- * picture, a slot the app fills — drawn as the viewer draws them, so they sit
6
+ * picture, a slot the app fills, a map (its name and layers: the map itself
7
+ * is in Try it) — drawn as the viewer draws them, so they sit
7
8
  * in the grid exactly where they will. Picked, words and a button's label are
8
9
  * typed in where they stand; a run of typing is one undo step.
9
10
  */
10
- export type BlockNode = TextNode | ButtonNode | DividerNode | SpacerNode | ImageNode | SlotNode;
11
+ export type BlockNode = TextNode | ButtonNode | DividerNode | SpacerNode | ImageNode | SlotNode | MapNode;
11
12
  export interface BlockViews {
12
13
  /** The block's element, made or patched; `picked` opens its words to typing. */
13
14
  draw(node: BlockNode, picked: boolean): HTMLElement;
@@ -1,13 +1,14 @@
1
- import type { ButtonNode, DividerNode, ImageNode, SlotNode, SpacerNode, TextNode } from '@fieldia/core';
1
+ import type { ButtonNode, DividerNode, ImageNode, MapNode, SlotNode, SpacerNode, TextNode } from '@fieldia/core';
2
2
  import type { ElementFactory } from './chrome';
3
3
  import type { Designer } from './designer';
4
4
  /**
5
5
  * The blocks between fields on the canvas — words, a button, a line, room, a
6
- * picture, a slot the app fills — drawn as the viewer draws them, so they sit
6
+ * picture, a slot the app fills, a map (its name and layers: the map itself
7
+ * is in Try it) — drawn as the viewer draws them, so they sit
7
8
  * in the grid exactly where they will. Picked, words and a button's label are
8
9
  * typed in where they stand; a run of typing is one undo step.
9
10
  */
10
- export type BlockNode = TextNode | ButtonNode | DividerNode | SpacerNode | ImageNode | SlotNode;
11
+ export type BlockNode = TextNode | ButtonNode | DividerNode | SpacerNode | ImageNode | SlotNode | MapNode;
11
12
  export interface BlockViews {
12
13
  /** The block's element, made or patched; `picked` opens its words to typing. */
13
14
  draw(node: BlockNode, picked: boolean): HTMLElement;
@@ -35,6 +35,8 @@ function blockViews(options) {
35
35
  return el('img', { class: 'fd-block fd-image fd-canvas-block', 'data-node': id, alt: '' });
36
36
  case 'slot':
37
37
  return el('div', { class: 'fd-slot fd-canvas-block', 'data-node': id });
38
+ case 'map':
39
+ return el('div', { class: 'fd-map-preview fd-canvas-block', 'data-node': id });
38
40
  }
39
41
  }
40
42
  /** Words typed in where they stand: kept as they are while the cursor is in them. */
@@ -71,7 +73,12 @@ function blockViews(options) {
71
73
  }
72
74
  else if (node.type === 'slot')
73
75
  element.textContent = node.name;
74
- const span = node.type === 'divider' ? undefined : node.colspan;
76
+ else if (node.type === 'map') {
77
+ const w = designer.words.canvas;
78
+ element.replaceChildren(el('strong', {}, node.label || w.map), el('span', {}, w.mapLayers(node.layers.map((layer) => layer.id))));
79
+ element.style.minHeight = `${Math.round((node.height ?? 360) / 2)}px`;
80
+ }
81
+ const span = node.type === 'divider' ? undefined : node.type === 'map' ? (node.colspan ?? 12) : node.colspan;
75
82
  if (span)
76
83
  element.style.setProperty('--fd-span', String(span));
77
84
  else
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-blocks.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-blocks.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-blocks.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,8 @@ export function blockViews(options) {
32
32
  return el('img', { class: 'fd-block fd-image fd-canvas-block', 'data-node': id, alt: '' });
33
33
  case 'slot':
34
34
  return el('div', { class: 'fd-slot fd-canvas-block', 'data-node': id });
35
+ case 'map':
36
+ return el('div', { class: 'fd-map-preview fd-canvas-block', 'data-node': id });
35
37
  }
36
38
  }
37
39
  /** Words typed in where they stand: kept as they are while the cursor is in them. */
@@ -68,7 +70,12 @@ export function blockViews(options) {
68
70
  }
69
71
  else if (node.type === 'slot')
70
72
  element.textContent = node.name;
71
- const span = node.type === 'divider' ? undefined : node.colspan;
73
+ else if (node.type === 'map') {
74
+ const w = designer.words.canvas;
75
+ element.replaceChildren(el('strong', {}, node.label || w.map), el('span', {}, w.mapLayers(node.layers.map((layer) => layer.id))));
76
+ element.style.minHeight = `${Math.round((node.height ?? 360) / 2)}px`;
77
+ }
78
+ const span = node.type === 'divider' ? undefined : node.type === 'map' ? (node.colspan ?? 12) : node.colspan;
72
79
  if (span)
73
80
  element.style.setProperty('--fd-span', String(span));
74
81
  else
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-blocks.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas-blocks.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-blocks.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ const SHAPES = {
17
17
  image: '<rect x="3" y="5" width="18" height="14" rx="2"/><circle cx="9" cy="10" r="1.5"/><path d="m21 16-5-5-8 8"/>',
18
18
  button: '<rect x="3" y="8" width="18" height="8" rx="4"/><path d="M9 12h6"/>',
19
19
  form: '<rect x="3" y="3" width="13" height="16" rx="2"/><path d="M7 8h5M7 12h5M20 7v12a2 2 0 0 1-2 2H8"/>',
20
+ map: '<path d="M3 6.5l6-2.5 6 2.5 6-2.5v13.5l-6 2.5-6-2.5-6 2.5z"/><path d="M9 4v13.5M15 6.5V20"/>',
20
21
  };
21
22
  function blockIcon(doc, name) {
22
23
  const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-icons.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-icons.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAeH,8BASC;AAtBD,MAAM,MAAM,GAA2B;IACrC,KAAK,EAAE,sEAAsE;IAC7E,IAAI,EAAE,uGAAuG;IAC7G,IAAI,EAAE,0EAA0E;IAChF,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,+DAA+D;IACxE,MAAM,EAAE,oDAAoD;IAC5D,KAAK,EAAE,6GAA6G;IACpH,MAAM,EAAE,qEAAqE;IAC7E,IAAI,EAAE,oGAAoG;CAC3G,CAAC;AAEF,SAAgB,SAAS,CAAC,GAAa,EAAE,IAAY;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACrE,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,kEAAkE;IAClE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"canvas-icons.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-icons.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAgBH,8BASC;AAvBD,MAAM,MAAM,GAA2B;IACrC,KAAK,EAAE,sEAAsE;IAC7E,IAAI,EAAE,uGAAuG;IAC7G,IAAI,EAAE,0EAA0E;IAChF,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,+DAA+D;IACxE,MAAM,EAAE,oDAAoD;IAC5D,KAAK,EAAE,6GAA6G;IACpH,MAAM,EAAE,qEAAqE;IAC7E,IAAI,EAAE,oGAAoG;IAC1G,GAAG,EAAE,8FAA8F;CACpG,CAAC;AAEF,SAAgB,SAAS,CAAC,GAAa,EAAE,IAAY;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACrE,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,kEAAkE;IAClE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -14,6 +14,7 @@ const SHAPES = {
14
14
  image: '<rect x="3" y="5" width="18" height="14" rx="2"/><circle cx="9" cy="10" r="1.5"/><path d="m21 16-5-5-8 8"/>',
15
15
  button: '<rect x="3" y="8" width="18" height="8" rx="4"/><path d="M9 12h6"/>',
16
16
  form: '<rect x="3" y="3" width="13" height="16" rx="2"/><path d="M7 8h5M7 12h5M20 7v12a2 2 0 0 1-2 2H8"/>',
17
+ map: '<path d="M3 6.5l6-2.5 6 2.5 6-2.5v13.5l-6 2.5-6-2.5-6 2.5z"/><path d="M9 4v13.5M15 6.5V20"/>',
17
18
  };
18
19
  export function blockIcon(doc, name) {
19
20
  const svg = doc.createElementNS('http://www.w3.org/2000/svg', 'svg');
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-icons.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-icons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,GAA2B;IACrC,KAAK,EAAE,sEAAsE;IAC7E,IAAI,EAAE,uGAAuG;IAC7G,IAAI,EAAE,0EAA0E;IAChF,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,+DAA+D;IACxE,MAAM,EAAE,oDAAoD;IAC5D,KAAK,EAAE,6GAA6G;IACpH,MAAM,EAAE,qEAAqE;IAC7E,IAAI,EAAE,oGAAoG;CAC3G,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,GAAa,EAAE,IAAY;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACrE,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,kEAAkE;IAClE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"canvas-icons.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-icons.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,GAA2B;IACrC,KAAK,EAAE,sEAAsE;IAC7E,IAAI,EAAE,uGAAuG;IAC7G,IAAI,EAAE,0EAA0E;IAChF,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,+DAA+D;IACxE,MAAM,EAAE,oDAAoD;IAC5D,KAAK,EAAE,6GAA6G;IACpH,MAAM,EAAE,qEAAqE;IAC7E,IAAI,EAAE,oGAAoG;IAC1G,GAAG,EAAE,8FAA8F;CACpG,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,GAAa,EAAE,IAAY;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACrE,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,kEAAkE;IAClE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type AnswerRule, type ColumnCount, type ColumnsByWidth, type Field, type LabelPlace, type OptionsFrom, type PartLookKind, type HelpShown, type Page, type PageLook, type SetWhen } from '@fieldia/core';
1
+ import { type AnswerRule, type ColumnCount, type ColumnsByWidth, type Field, type LabelPlace, type OptionsFrom, type PartLookKind, type HelpShown, type MapFence, type MapLayer, type MapNode, type Page, type PageLook, type SetWhen } from '@fieldia/core';
2
2
  import { type Condition, type ShownWhile } from './conditions.mjs';
3
3
  import { type HeaderCommands } from './header-commands.mjs';
4
4
  import { type ListCommands } from './list-commands.mjs';
@@ -333,6 +333,18 @@ export interface Designer extends HeaderCommands, ListCommands, ChoiceCommands,
333
333
  setOptionsFrom(id: string, from: OptionsFrom | null): boolean;
334
334
  /** A block's words and look, a button's label, a picture's address and description; a run of typing in one is one undo step. */
335
335
  updateBlock(id: string, patch: BlockPatch): boolean;
336
+ /**
337
+ * A map's name, height and layers. The fields its layers name come onto the
338
+ * page from the model; the page check says what else is wrong with them.
339
+ */
340
+ /** A map's name, height, layers, tools under its zoom, and fences; `null` takes a height, tools or fences away. Its fields come onto the page from the model. */
341
+ updateMap(id: string, patch: {
342
+ label?: string;
343
+ height?: number | null;
344
+ layers?: MapLayer[];
345
+ tools?: NonNullable<MapNode['tools']> | null;
346
+ fences?: MapFence[] | null;
347
+ }): boolean;
336
348
  /**
337
349
  * Several parts' widths as one edit: two trading width across the gutter
338
350
  * between them. With `twelfths`, widths are twelfths of their row, and a
@@ -406,6 +418,8 @@ export interface Designer extends HeaderCommands, ListCommands, ChoiceCommands,
406
418
  setFold(id: string, fold: Fold): boolean;
407
419
  /** Whether a saved form can be placed in the page: the app's store lists its saved forms (`PageStore.list`). */
408
420
  canPlaceForms(): boolean;
421
+ /** The sets of borders the app's maps know, for a map's areas by colour. */
422
+ regionSets(): readonly RegionSet[];
409
423
  /** The saved forms that can be placed in this page: the store's, this page itself left out. None without a store that lists them. */
410
424
  savedForms(): Promise<SavedFormRef[]>;
411
425
  /**
@@ -462,6 +476,8 @@ export declare function createDesigner(options: {
462
476
  locale?: DesignerLocale | (string & {});
463
477
  /** Open a saved form placed in the page where it is made, by its id: “Open it” on the canvas. Without one, it is not offered. */
464
478
  openForm?: (id: string) => void;
479
+ /** The sets of borders the app's maps know (their `regions`), offered for a map's areas by colour. Without them, a map has no areas to add. */
480
+ regionSets?: readonly RegionSet[];
465
481
  }): Designer;
466
482
  export declare namespace createDesigner {
467
483
  var open: (id: string, store: PageStore, options?: {
@@ -471,5 +487,17 @@ export declare namespace createDesigner {
471
487
  looks?: LookStore;
472
488
  openForm?: (id: string) => void;
473
489
  locale?: DesignerLocale | (string & {});
490
+ regionSets?: readonly RegionSet[];
474
491
  }) => Promise<Designer>;
475
492
  }
493
+ /**
494
+ * A set of borders an app's maps know, by the name its maps' `regions` give:
495
+ * the property that keys each border (what a record's field holds), the one
496
+ * that names it, and the numbers among its properties an area can be shaded by.
497
+ */
498
+ export interface RegionSet {
499
+ name: string;
500
+ key: string;
501
+ nameKey?: string;
502
+ numbers?: readonly string[];
503
+ }
@@ -1,4 +1,4 @@
1
- import { type AnswerRule, type ColumnCount, type ColumnsByWidth, type Field, type LabelPlace, type OptionsFrom, type PartLookKind, type HelpShown, type Page, type PageLook, type SetWhen } from '@fieldia/core';
1
+ import { type AnswerRule, type ColumnCount, type ColumnsByWidth, type Field, type LabelPlace, type OptionsFrom, type PartLookKind, type HelpShown, type MapFence, type MapLayer, type MapNode, type Page, type PageLook, type SetWhen } from '@fieldia/core';
2
2
  import { type Condition, type ShownWhile } from './conditions';
3
3
  import { type HeaderCommands } from './header-commands';
4
4
  import { type ListCommands } from './list-commands';
@@ -333,6 +333,18 @@ export interface Designer extends HeaderCommands, ListCommands, ChoiceCommands,
333
333
  setOptionsFrom(id: string, from: OptionsFrom | null): boolean;
334
334
  /** A block's words and look, a button's label, a picture's address and description; a run of typing in one is one undo step. */
335
335
  updateBlock(id: string, patch: BlockPatch): boolean;
336
+ /**
337
+ * A map's name, height and layers. The fields its layers name come onto the
338
+ * page from the model; the page check says what else is wrong with them.
339
+ */
340
+ /** A map's name, height, layers, tools under its zoom, and fences; `null` takes a height, tools or fences away. Its fields come onto the page from the model. */
341
+ updateMap(id: string, patch: {
342
+ label?: string;
343
+ height?: number | null;
344
+ layers?: MapLayer[];
345
+ tools?: NonNullable<MapNode['tools']> | null;
346
+ fences?: MapFence[] | null;
347
+ }): boolean;
336
348
  /**
337
349
  * Several parts' widths as one edit: two trading width across the gutter
338
350
  * between them. With `twelfths`, widths are twelfths of their row, and a
@@ -406,6 +418,8 @@ export interface Designer extends HeaderCommands, ListCommands, ChoiceCommands,
406
418
  setFold(id: string, fold: Fold): boolean;
407
419
  /** Whether a saved form can be placed in the page: the app's store lists its saved forms (`PageStore.list`). */
408
420
  canPlaceForms(): boolean;
421
+ /** The sets of borders the app's maps know, for a map's areas by colour. */
422
+ regionSets(): readonly RegionSet[];
409
423
  /** The saved forms that can be placed in this page: the store's, this page itself left out. None without a store that lists them. */
410
424
  savedForms(): Promise<SavedFormRef[]>;
411
425
  /**
@@ -462,6 +476,8 @@ export declare function createDesigner(options: {
462
476
  locale?: DesignerLocale | (string & {});
463
477
  /** Open a saved form placed in the page where it is made, by its id: “Open it” on the canvas. Without one, it is not offered. */
464
478
  openForm?: (id: string) => void;
479
+ /** The sets of borders the app's maps know (their `regions`), offered for a map's areas by colour. Without them, a map has no areas to add. */
480
+ regionSets?: readonly RegionSet[];
465
481
  }): Designer;
466
482
  export declare namespace createDesigner {
467
483
  var open: (id: string, store: PageStore, options?: {
@@ -471,5 +487,17 @@ export declare namespace createDesigner {
471
487
  looks?: LookStore;
472
488
  openForm?: (id: string) => void;
473
489
  locale?: DesignerLocale | (string & {});
490
+ regionSets?: readonly RegionSet[];
474
491
  }) => Promise<Designer>;
475
492
  }
493
+ /**
494
+ * A set of borders an app's maps know, by the name its maps' `regions` give:
495
+ * the property that keys each border (what a record's field holds), the one
496
+ * that names it, and the numbers among its properties an area can be shaded by.
497
+ */
498
+ export interface RegionSet {
499
+ name: string;
500
+ key: string;
501
+ nameKey?: string;
502
+ numbers?: readonly string[];
503
+ }
@@ -1184,6 +1184,35 @@ function createDesigner(options) {
1184
1184
  },
1185
1185
  // canvas lane
1186
1186
  updateBlock: (id, patch) => apply((draft) => settings.updateBlock(draft, id, patch), `block:${id}:${Object.keys(patch).join(',')}`),
1187
+ updateMap: (id, patch) => apply((draft) => {
1188
+ const node = (0, page_tree_1.findNode)(draft, id)?.node;
1189
+ if (!node || node.type !== 'map')
1190
+ throw new refusal_1.Refusal((w) => w.layout.noPart(id));
1191
+ if (patch.label !== undefined) {
1192
+ if (patch.label.trim())
1193
+ node.label = patch.label;
1194
+ else
1195
+ delete node.label;
1196
+ }
1197
+ if (patch.height === null)
1198
+ delete node.height;
1199
+ else if (patch.height !== undefined)
1200
+ node.height = patch.height;
1201
+ if (patch.tools === null || patch.tools?.length === 0)
1202
+ delete node.tools;
1203
+ else if (patch.tools !== undefined)
1204
+ node.tools = [...patch.tools];
1205
+ if (patch.fences === null || patch.fences?.length === 0)
1206
+ delete node.fences;
1207
+ else if (patch.fences !== undefined)
1208
+ node.fences = clone(patch.fences);
1209
+ if (patch.layers !== undefined)
1210
+ node.layers = clone(patch.layers);
1211
+ if (patch.layers !== undefined || patch.fences !== undefined)
1212
+ for (const name of (0, page_tree_1.mapNodeFields)(node))
1213
+ if (!draft.fields[name] && model[name])
1214
+ draft.fields[name] = model[name];
1215
+ }, `map:${id}:${Object.keys(patch).join(',')}`),
1187
1216
  setWidths: (widths, options) => apply((draft) => settings.setWidths(draft, widths, options?.twelfths)),
1188
1217
  // rules lane
1189
1218
  ...(0, rules_commands_1.rulesCommands)({ apply, getPage: () => page, fromModel }),
@@ -1235,6 +1264,7 @@ function createDesigner(options) {
1235
1264
  setFold: (id, fold) => apply((draft) => (0, group_fold_1.setFold)(draft, id, fold)),
1236
1265
  // embed lane
1237
1266
  canPlaceForms: () => typeof store?.list === 'function',
1267
+ regionSets: () => options.regionSets ?? [],
1238
1268
  async savedForms() {
1239
1269
  if (!store?.list)
1240
1270
  return [];
@@ -1280,7 +1310,7 @@ createDesigner.open = async (id, store, options = {}) => {
1280
1310
  const page = draft ?? versions[versions.length - 1]?.page;
1281
1311
  if (!page)
1282
1312
  throw new Error(`The store has no page "${id}"`);
1283
- return createDesigner({ page, store, versions, model: options.model, lists: options.lists, kinds: options.kinds, looks: options.looks, openForm: options.openForm, locale: options.locale });
1313
+ return createDesigner({ page, store, versions, model: options.model, lists: options.lists, kinds: options.kinds, looks: options.looks, openForm: options.openForm, locale: options.locale, regionSets: options.regionSets });
1284
1314
  };
1285
1315
  /** A sheet's status steps, by the id the designer picks them by: they show for some records only, and to some roles, as any part. */
1286
1316
  function statusbarOf(page, id) {