@meltemi/diagrams-editor 1.9.0 → 1.10.17

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 (154) hide show
  1. package/dist/add-icons.d.ts +44 -0
  2. package/dist/add-icons.d.ts.map +1 -0
  3. package/dist/add-icons.js +178 -0
  4. package/dist/add-icons.js.map +1 -0
  5. package/dist/arrange.d.ts +54 -1
  6. package/dist/arrange.d.ts.map +1 -1
  7. package/dist/arrange.js +209 -8
  8. package/dist/arrange.js.map +1 -1
  9. package/dist/asset-files.d.ts +46 -0
  10. package/dist/asset-files.d.ts.map +1 -0
  11. package/dist/asset-files.js +79 -0
  12. package/dist/asset-files.js.map +1 -0
  13. package/dist/c4.d.ts +91 -1
  14. package/dist/c4.d.ts.map +1 -1
  15. package/dist/c4.js +358 -9
  16. package/dist/c4.js.map +1 -1
  17. package/dist/canvas/index.d.ts +1 -0
  18. package/dist/canvas/index.d.ts.map +1 -1
  19. package/dist/canvas/index.js +1 -0
  20. package/dist/canvas/index.js.map +1 -1
  21. package/dist/canvas/keyboard.d.ts +23 -2
  22. package/dist/canvas/keyboard.d.ts.map +1 -1
  23. package/dist/canvas/keyboard.js +23 -0
  24. package/dist/canvas/keyboard.js.map +1 -1
  25. package/dist/canvas/palette.d.ts +48 -6
  26. package/dist/canvas/palette.d.ts.map +1 -1
  27. package/dist/canvas/palette.js +55 -9
  28. package/dist/canvas/palette.js.map +1 -1
  29. package/dist/canvas/pens.d.ts +10 -0
  30. package/dist/canvas/pens.d.ts.map +1 -0
  31. package/dist/canvas/pens.js +29 -0
  32. package/dist/canvas/pens.js.map +1 -0
  33. package/dist/canvas/protocol.d.ts +580 -21
  34. package/dist/canvas/protocol.d.ts.map +1 -1
  35. package/dist/canvas/protocol.js +140 -3
  36. package/dist/canvas/protocol.js.map +1 -1
  37. package/dist/canvas/routes.d.ts +17 -0
  38. package/dist/canvas/routes.d.ts.map +1 -1
  39. package/dist/canvas/routes.js +37 -0
  40. package/dist/canvas/routes.js.map +1 -1
  41. package/dist/canvas/turning.d.ts +7 -0
  42. package/dist/canvas/turning.d.ts.map +1 -1
  43. package/dist/canvas/turning.js +17 -3
  44. package/dist/canvas/turning.js.map +1 -1
  45. package/dist/catalog.d.ts +5 -0
  46. package/dist/catalog.d.ts.map +1 -1
  47. package/dist/catalog.js +1 -1
  48. package/dist/catalog.js.map +1 -1
  49. package/dist/clipboard.d.ts.map +1 -1
  50. package/dist/clipboard.js +98 -9
  51. package/dist/clipboard.js.map +1 -1
  52. package/dist/effects.d.ts +5 -0
  53. package/dist/effects.d.ts.map +1 -1
  54. package/dist/effects.js +31 -22
  55. package/dist/effects.js.map +1 -1
  56. package/dist/exports.d.ts +25 -11
  57. package/dist/exports.d.ts.map +1 -1
  58. package/dist/exports.js +65 -28
  59. package/dist/exports.js.map +1 -1
  60. package/dist/fonts.d.ts +63 -0
  61. package/dist/fonts.d.ts.map +1 -0
  62. package/dist/fonts.js +175 -0
  63. package/dist/fonts.js.map +1 -0
  64. package/dist/icons.d.ts +2 -0
  65. package/dist/icons.d.ts.map +1 -1
  66. package/dist/icons.js +39 -6
  67. package/dist/icons.js.map +1 -1
  68. package/dist/index.d.ts +6 -3
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +4 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/inspector.d.ts.map +1 -1
  73. package/dist/inspector.js +545 -141
  74. package/dist/inspector.js.map +1 -1
  75. package/dist/layouts.d.ts +3 -2
  76. package/dist/layouts.d.ts.map +1 -1
  77. package/dist/layouts.js +4 -2
  78. package/dist/layouts.js.map +1 -1
  79. package/dist/messages/en.d.ts +106 -20
  80. package/dist/messages/en.d.ts.map +1 -1
  81. package/dist/messages/en.js +110 -26
  82. package/dist/messages/en.js.map +1 -1
  83. package/dist/messages/es.d.ts.map +1 -1
  84. package/dist/messages/es.js +80 -43
  85. package/dist/messages/es.js.map +1 -1
  86. package/dist/messages/index.d.ts +76 -17
  87. package/dist/messages/index.d.ts.map +1 -1
  88. package/dist/messages/keys.d.ts.map +1 -1
  89. package/dist/messages/keys.js +26 -0
  90. package/dist/messages/keys.js.map +1 -1
  91. package/dist/messages/services.d.ts +130 -1
  92. package/dist/messages/services.d.ts.map +1 -1
  93. package/dist/messages/services.js +150 -18
  94. package/dist/messages/services.js.map +1 -1
  95. package/dist/move-file.d.ts +32 -0
  96. package/dist/move-file.d.ts.map +1 -0
  97. package/dist/move-file.js +58 -0
  98. package/dist/move-file.js.map +1 -0
  99. package/dist/node.d.ts +1 -1
  100. package/dist/node.d.ts.map +1 -1
  101. package/dist/node.js.map +1 -1
  102. package/dist/projects.d.ts +65 -1
  103. package/dist/projects.d.ts.map +1 -1
  104. package/dist/projects.js +349 -1
  105. package/dist/projects.js.map +1 -1
  106. package/dist/render.d.ts +5 -0
  107. package/dist/render.d.ts.map +1 -1
  108. package/dist/render.js +4 -2
  109. package/dist/render.js.map +1 -1
  110. package/dist/sequence.d.ts +37 -8
  111. package/dist/sequence.d.ts.map +1 -1
  112. package/dist/sequence.js +409 -38
  113. package/dist/sequence.js.map +1 -1
  114. package/dist/services/actions.d.ts.map +1 -1
  115. package/dist/services/actions.js +65 -1
  116. package/dist/services/actions.js.map +1 -1
  117. package/dist/services/completion.d.ts.map +1 -1
  118. package/dist/services/completion.js +146 -16
  119. package/dist/services/completion.js.map +1 -1
  120. package/dist/services/docs.d.ts +5 -0
  121. package/dist/services/docs.d.ts.map +1 -1
  122. package/dist/services/docs.js +7 -0
  123. package/dist/services/docs.js.map +1 -1
  124. package/dist/services/hover.d.ts +5 -0
  125. package/dist/services/hover.d.ts.map +1 -1
  126. package/dist/services/hover.js +154 -21
  127. package/dist/services/hover.js.map +1 -1
  128. package/dist/services/navigation.d.ts +1 -1
  129. package/dist/services/navigation.d.ts.map +1 -1
  130. package/dist/services/navigation.js +8 -4
  131. package/dist/services/navigation.js.map +1 -1
  132. package/dist/services/stories.d.ts.map +1 -1
  133. package/dist/services/stories.js +31 -3
  134. package/dist/services/stories.js.map +1 -1
  135. package/dist/session.d.ts +121 -13
  136. package/dist/session.d.ts.map +1 -1
  137. package/dist/session.js +1349 -80
  138. package/dist/session.js.map +1 -1
  139. package/dist/syntax.d.ts.map +1 -1
  140. package/dist/syntax.js +3 -0
  141. package/dist/syntax.js.map +1 -1
  142. package/dist/targets.d.ts +25 -4
  143. package/dist/targets.d.ts.map +1 -1
  144. package/dist/targets.js +103 -7
  145. package/dist/targets.js.map +1 -1
  146. package/dist/text-places.d.ts +15 -3
  147. package/dist/text-places.d.ts.map +1 -1
  148. package/dist/text-places.js +187 -12
  149. package/dist/text-places.js.map +1 -1
  150. package/dist/themes.d.ts +0 -2
  151. package/dist/themes.d.ts.map +1 -1
  152. package/dist/themes.js +27 -13
  153. package/dist/themes.js.map +1 -1
  154. package/package.json +16 -16
package/dist/exports.js CHANGED
@@ -1,4 +1,4 @@
1
- import { animatedScene, motionOptions, planMotion, sceneAt, storyFrame, } from "@meltemi/diagrams-motion";
1
+ import { animatedScene, defaultMotionDuration, motionLoop, motionOptions, planMotion, sceneAt, storyFrame, } from "@meltemi/diagrams-motion";
2
2
  import { effectsDocument, framesPage, playerFragment, playerPage, rootView, storyDocument, } from "@meltemi/diagrams-player";
3
3
  import { renderSvg } from "@meltemi/diagrams-render";
4
4
  import { viewClosure } from "./drill.js";
@@ -15,20 +15,22 @@ export const VIDEO_DEFAULTS = {
15
15
  };
16
16
  /** The largest side of a captured picture, in pixels. */
17
17
  export const MAX_PIXELS = 16384;
18
+ /** The layout's frame option for a request: `"none"` for an export without the branding. */
19
+ const frameOf = (request) => request.branding === "none" ? "none" : undefined;
18
20
  /** The language of what an export adds: the request's, else the project's, else English. */
19
21
  function contentLocale(context, request) {
20
22
  return request.locale ?? context.projects.contentLocale(context.workspace);
21
23
  }
22
24
  /** Lays out a diagram with the themes, fonts and images of the file that defines it. */
23
- function layoutOf(context, owner, diagram, theme, scenario, locale) {
24
- const result = layoutIn(context.workspace, context.projects, owner, diagram, theme, scenario, locale);
25
+ function layoutOf(context, owner, diagram, theme, scenario, locale, frame) {
26
+ const result = layoutIn(context.workspace, context.projects, owner, diagram, theme, scenario, locale, frame);
25
27
  const own = owner === context.file;
26
28
  context.report(owner.path, result.diagnostics.filter((d) => !own || !context.printed.has(`${d.code}@${d.range.start.offset}`)));
27
29
  return result;
28
30
  }
29
31
  /** The laid-out views of a story, by view key, or undefined when one cannot be drawn. */
30
- function storyLayouts(context, story, theme, locale) {
31
- return storyLayoutsIn(context.workspace, context.file, story, (owner, diagram) => layoutOf(context, owner, diagram, theme, undefined, locale));
32
+ function storyLayouts(context, story, theme, locale, frame) {
33
+ return storyLayoutsIn(context.workspace, context.file, story, (owner, diagram) => layoutOf(context, owner, diagram, theme, undefined, locale, frame));
32
34
  }
33
35
  /** The scene with the request's background and picture link, and the background for capture. */
34
36
  function decorate(scene, request, colors) {
@@ -60,7 +62,7 @@ function drillViews(context, request, owner, diagram, layout, locale) {
60
62
  const sources = context.workspace.sources();
61
63
  const root = program.files.get(owner.path) ?? owner;
62
64
  const rootDiagram = root.compilation.document.diagrams.find((d) => d.id === diagram.id) ?? diagram;
63
- return viewClosure(program, sources, { owner: root, diagram: rootDiagram }, layout, (view) => layoutOf(context, view.owner, view.diagram, request.theme, undefined, locale));
65
+ return viewClosure(program, sources, { owner: root, diagram: rootDiagram }, layout, (view) => layoutOf(context, view.owner, view.diagram, request.theme, undefined, locale, frameOf(request)));
64
66
  }
65
67
  function playerHtml(doc, request, script, lang) {
66
68
  const options = { autoplay: request.autoplay, loop: request.loop, lang };
@@ -95,7 +97,7 @@ export function produceExport(context, request) {
95
97
  let scene;
96
98
  let colors;
97
99
  if (request.target.kind === "story") {
98
- const layouts = storyLayouts(context, request.target.story, request.theme, contentLocale(context, request));
100
+ const layouts = storyLayouts(context, request.target.story, request.theme, contentLocale(context, request), frameOf(request));
99
101
  const doc = layouts &&
100
102
  storyDocument(request.target.story, layouts, {
101
103
  ...fontsFor(request.fonts),
@@ -115,7 +117,7 @@ export function produceExport(context, request) {
115
117
  }
116
118
  else {
117
119
  const { diagram, owner } = request.target;
118
- const result = layoutOf(context, owner, diagram, request.theme, request.scenario, contentLocale(context, request));
120
+ const result = layoutOf(context, owner, diagram, request.theme, request.scenario, contentLocale(context, request), frameOf(request));
119
121
  if (!result.scene)
120
122
  return { problem: problems.cannotDraw(diagram.id) };
121
123
  if (request.format === "html") {
@@ -140,13 +142,30 @@ export function produceExport(context, request) {
140
142
  if (request.format === "svg") {
141
143
  return { text: renderSvg(decorated.scene, { fonts: request.fonts, provider }) };
142
144
  }
143
- const job = captureJob(context, decorated.scene, decorated.background, request);
144
- if (job.width * (job.scale ?? 1) > MAX_PIXELS || job.height * (job.scale ?? 1) > MAX_PIXELS) {
145
- return {
146
- problem: problems.tooLarge(request.format.toUpperCase(), Math.round(job.width * (job.scale ?? 1)), Math.round(job.height * (job.scale ?? 1)), MAX_PIXELS),
145
+ const fitted = fitPicture(captureJob(context, decorated.scene, decorated.background, request));
146
+ return fitted.notice ? { job: fitted.job, notices: [fitted.notice] } : { job: fitted.job };
147
+ }
148
+ /**
149
+ * A picture whose side would pass `MAX_PIXELS` made as large as fits, keeping its proportions: a
150
+ * PNG at a smaller scale, a PDF on a smaller page; with the notice naming the pixels used.
151
+ */
152
+ function fitPicture(job) {
153
+ const scale = job.scale ?? 1;
154
+ const factor = Math.min(1, MAX_PIXELS / (job.width * scale), MAX_PIXELS / (job.height * scale));
155
+ if (factor >= 1)
156
+ return { job };
157
+ const fitted = job.kind === "png"
158
+ ? { ...job, scale: scale * factor }
159
+ : {
160
+ ...job,
161
+ width: Math.floor(job.width * factor),
162
+ height: Math.floor(job.height * factor),
147
163
  };
148
- }
149
- return { job };
164
+ const used = fitted.scale ?? 1;
165
+ return {
166
+ job: fitted,
167
+ notice: messages().exports.notices.clamped(Math.round(fitted.width * used), Math.round(fitted.height * used), MAX_PIXELS),
168
+ };
150
169
  }
151
170
  /**
152
171
  * A video: the player document of the story or of the diagram's effects (with embedded fonts), and
@@ -156,43 +175,60 @@ function produceVideo(context, request) {
156
175
  const format = request.format;
157
176
  const fonts = { fonts: context.projects.fontsFor(context.workspace) };
158
177
  const problems = messages().exports;
178
+ const notices = [];
159
179
  let doc;
160
180
  let duration;
161
181
  let colors;
162
182
  if (request.target.kind === "story") {
163
- const layouts = storyLayouts(context, request.target.story, request.theme, contentLocale(context, request));
183
+ const layouts = storyLayouts(context, request.target.story, request.theme, contentLocale(context, request), frameOf(request));
164
184
  const story = layouts && storyDocument(request.target.story, layouts, fonts);
165
185
  if (!story)
166
186
  return { problem: problems.storyNotDrawn(request.target.story.id) };
167
187
  doc = story;
168
- duration = request.durationMs ?? story.timeline.durationMs;
188
+ duration = request.durationMs || story.timeline.durationMs;
169
189
  colors = [...layouts.values()][0]?.layout.theme;
170
190
  }
171
191
  else {
172
192
  const { diagram, owner } = request.target;
173
- const result = layoutOf(context, owner, diagram, request.theme, request.scenario, contentLocale(context, request));
193
+ const result = layoutOf(context, owner, diagram, request.theme, request.scenario, contentLocale(context, request), frameOf(request));
174
194
  const effects = result.scene ? effectsDocument({ diagram, layout: result }, fonts) : undefined;
175
195
  if (!effects)
176
196
  return { problem: problems.cannotDraw(diagram.id) };
177
197
  doc = effects;
178
- duration = request.durationMs ?? rootView(effects).durationMs;
179
198
  colors = result.theme;
180
- if (duration === null || duration === 0) {
181
- return {
182
- problem: duration === null ? problems.endless(diagram.id) : problems.still(diagram.id),
183
- };
199
+ // A given duration wins, then the end of finite effects; endless or still effects take the
200
+ // default, which the notice names.
201
+ const view = rootView(effects);
202
+ if (request.durationMs)
203
+ duration = request.durationMs;
204
+ else if (view.durationMs)
205
+ duration = view.durationMs;
206
+ else {
207
+ duration = defaultMotionDuration(view.plan);
208
+ const notices_ = problems.notices;
209
+ notices.push(view.plan.effects.length === 0
210
+ ? notices_.stillDuration(diagram.id, duration)
211
+ : motionLoop(view.plan) !== null
212
+ ? notices_.defaultDuration(diagram.id, duration)
213
+ : notices_.longestDuration(diagram.id, duration));
184
214
  }
185
215
  }
216
+ // MP4 has no transparency: it takes the theme's background, as the canvas shows it.
217
+ let drawn = request;
186
218
  if (format === "mp4" && request.background === "transparent") {
187
- return { problem: problems.transparentMp4 };
219
+ drawn = { ...request, background: null };
220
+ notices.push(problems.notices.mp4Background);
188
221
  }
189
222
  const scene = doc.kind === "story" ? Object.values(doc.views)[0].scene : rootView(doc).scene;
190
- const background = decorate(scene, request, colors).background;
223
+ const background = decorate(scene, drawn, colors).background;
191
224
  const defaults = VIDEO_DEFAULTS[format];
192
- const width = request.size?.width ?? defaults.width;
193
- const height = request.size?.height ?? defaults.height;
194
- if (width > MAX_PIXELS || height > MAX_PIXELS) {
195
- return { problem: problems.videoSide(MAX_PIXELS) };
225
+ let width = request.size?.width ?? defaults.width;
226
+ let height = request.size?.height ?? defaults.height;
227
+ const factor = Math.min(1, MAX_PIXELS / width, MAX_PIXELS / height);
228
+ if (factor < 1) {
229
+ width = Math.floor(width * factor);
230
+ height = Math.floor(height * factor);
231
+ notices.push(problems.notices.clamped(width, height, MAX_PIXELS));
196
232
  }
197
233
  return {
198
234
  video: {
@@ -206,6 +242,7 @@ function produceVideo(context, request) {
206
242
  out: request.out,
207
243
  },
208
244
  document: doc,
245
+ ...(notices.length > 0 ? { notices } : {}),
209
246
  };
210
247
  }
211
248
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { type FamilyInfo } from "@meltemi/diagrams-fonts";
2
+ import { StyleResolver, type ResolvedStyle, type Theme } from "@meltemi/diagrams-layout";
3
+ import { type FlowDiagram } from "@meltemi/diagrams-model";
4
+ import { type FontProvider } from "@meltemi/diagrams-render";
5
+ import type { FontOption } from "./canvas/protocol.js";
6
+ /**
7
+ * The common text sizes the strip's size list offers and its − and + buttons, and the text size
8
+ * keys, step along (decision 0067). Any size from 6 to 160 may still be typed.
9
+ */
10
+ export declare const FONT_SIZE_STEPS: readonly number[];
11
+ /**
12
+ * The size one step of the list up (1) or down (-1) from `size`: the next larger or smaller
13
+ * common size, so that a size between two of them steps to the nearer one in that direction;
14
+ * undefined past the ends of the list.
15
+ */
16
+ export declare function stepFontSize(size: number, step: 1 | -1): number | undefined;
17
+ /** A target of the selection: an element, a relation or a sequence event, by its id or key. */
18
+ export interface TextTarget {
19
+ readonly id: string;
20
+ readonly kind: "element" | "relation" | "event";
21
+ }
22
+ /** What a target's text draws: its family (the first of its stack), size and weight. */
23
+ export interface TextFace {
24
+ readonly family: string;
25
+ readonly size: number;
26
+ readonly weight: number;
27
+ }
28
+ /** The first family of a CSS font stack, without quotes. */
29
+ export declare function firstFamily(stack: string): string;
30
+ /**
31
+ * The family a theme's stack draws with: its first bundled family (`ui-monospace, "Cascadia
32
+ * Mono", …` is Cascadia Mono), else its first family.
33
+ */
34
+ export declare function stackFamily(stack: string): string;
35
+ /**
36
+ * The family, size and weight a target's text takes from the theme when its styles write none,
37
+ * as the layout draws it: labels at `labelSize` and `labelWeight`, free texts 1.6 times that,
38
+ * stickies 1.2 times at 400, group titles at `groupTitleSize`, notes at `noteSize` and 400, tags
39
+ * in the mono font at `tagSize` and 500, relation labels at `relationLabelSize` and 500 (400 for
40
+ * sequence messages), a fragment's operator at 600. Undefined for what draws no text.
41
+ */
42
+ export declare function themeText(theme: Theme, diagram: FlowDiagram, target: TextTarget): TextFace | undefined;
43
+ /** The style a target resolves to through rules, classes and its own statements. */
44
+ export declare function resolvedStyle(resolver: StyleResolver, diagram: FlowDiagram, target: TextTarget): ResolvedStyle;
45
+ /**
46
+ * What a target's text draws with its rules and classes but without its own `style` statements
47
+ * being asked for separately: the resolved family, size and weight over the theme's.
48
+ */
49
+ export declare function drawnText(theme: Theme, diagram: FlowDiagram, target: TextTarget, resolver?: StyleResolver): TextFace | undefined;
50
+ /**
51
+ * The families text can be measured with: the provider's catalogue (bundled families by group,
52
+ * then the project's fonts), or the bundled families when the host measures with estimates.
53
+ */
54
+ export declare function fontFamilies(provider: FontProvider | undefined): FamilyInfo[];
55
+ /** What a written stack is measured with: a family of the catalogue, or nothing (estimates). */
56
+ export declare function measuredFamily(provider: FontProvider | undefined, stack: string): FamilyInfo | undefined;
57
+ /**
58
+ * The families the font picker lists: the provider's catalogue (bundled families by group, then
59
+ * the project's fonts), each with the `@font-face` rules of its row's glyphs. Without a provider
60
+ * (a host that measures with estimates) the bundled families are listed without faces.
61
+ */
62
+ export declare function fontOptions(provider: FontProvider | undefined): FontOption[];
63
+ //# sourceMappingURL=fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAE5C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAG3E;AAED,+FAA+F;AAC/F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;CACjD;AAED,wFAAwF;AACxF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAID;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,QAAQ,GAAG,SAAS,CAgCtB;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,aAAa,CAaf;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,QAAQ,GAAE,aAAiD,GAC1D,QAAQ,GAAG,SAAS,CAStB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,EAAE,CAe7E;AAED,gGAAgG;AAChG,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,GAAG,SAAS,EAClC,KAAK,EAAE,MAAM,GACZ,UAAU,GAAG,SAAS,CAcxB;AAQD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,EAAE,CAqB5E"}
package/dist/fonts.js ADDED
@@ -0,0 +1,175 @@
1
+ import { BUNDLED_FAMILIES, FONT_GROUPS, resolveFontStack, } from "@meltemi/diagrams-fonts";
2
+ import { StyleResolver } from "@meltemi/diagrams-layout";
3
+ import { TEXTLESS_KINDS } from "@meltemi/diagrams-model";
4
+ import { fontFaceRule } from "@meltemi/diagrams-render";
5
+ /**
6
+ * The common text sizes the strip's size list offers and its − and + buttons, and the text size
7
+ * keys, step along (decision 0067). Any size from 6 to 160 may still be typed.
8
+ */
9
+ export const FONT_SIZE_STEPS = [
10
+ 8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 96,
11
+ ];
12
+ /**
13
+ * The size one step of the list up (1) or down (-1) from `size`: the next larger or smaller
14
+ * common size, so that a size between two of them steps to the nearer one in that direction;
15
+ * undefined past the ends of the list.
16
+ */
17
+ export function stepFontSize(size, step) {
18
+ if (step > 0)
19
+ return FONT_SIZE_STEPS.find((s) => s > size + 1e-9);
20
+ return [...FONT_SIZE_STEPS].reverse().find((s) => s < size - 1e-9);
21
+ }
22
+ /** The first family of a CSS font stack, without quotes. */
23
+ export function firstFamily(stack) {
24
+ return (stack.split(",")[0] ?? "").trim().replace(/^["']|["']$/g, "");
25
+ }
26
+ /**
27
+ * The family a theme's stack draws with: its first bundled family (`ui-monospace, "Cascadia
28
+ * Mono", …` is Cascadia Mono), else its first family.
29
+ */
30
+ export function stackFamily(stack) {
31
+ return resolveFontStack(stack) ?? firstFamily(stack);
32
+ }
33
+ const round2 = (value) => Math.round(value * 100) / 100;
34
+ /**
35
+ * The family, size and weight a target's text takes from the theme when its styles write none,
36
+ * as the layout draws it: labels at `labelSize` and `labelWeight`, free texts 1.6 times that,
37
+ * stickies 1.2 times at 400, group titles at `groupTitleSize`, notes at `noteSize` and 400, tags
38
+ * in the mono font at `tagSize` and 500, relation labels at `relationLabelSize` and 500 (400 for
39
+ * sequence messages), a fragment's operator at 600. Undefined for what draws no text.
40
+ */
41
+ export function themeText(theme, diagram, target) {
42
+ const body = stackFamily(theme.font);
43
+ if (target.kind === "relation") {
44
+ const weight = diagram.type === "sequence" ? 400 : 500;
45
+ return { family: body, size: theme.relationLabelSize, weight };
46
+ }
47
+ if (target.kind === "event") {
48
+ const event = diagram.eventsByKey.get(target.id);
49
+ if (event?.kind === "note")
50
+ return { family: body, size: theme.noteSize, weight: 400 };
51
+ if (event?.kind === "fragment") {
52
+ return { family: body, size: theme.relationLabelSize, weight: 600 };
53
+ }
54
+ return undefined;
55
+ }
56
+ const element = diagram.elementsById.get(target.id);
57
+ if (!element || TEXTLESS_KINDS.includes(element.kind))
58
+ return undefined;
59
+ switch (element.kind) {
60
+ case "text":
61
+ return { family: body, size: Math.round(theme.labelSize * 1.6), weight: theme.labelWeight };
62
+ case "sticky":
63
+ return { family: body, size: round2(theme.labelSize * 1.2), weight: 400 };
64
+ case "group":
65
+ return { family: body, size: theme.groupTitleSize, weight: theme.labelWeight };
66
+ case "note":
67
+ return { family: body, size: theme.noteSize, weight: 400 };
68
+ case "tag":
69
+ return { family: stackFamily(theme.mono), size: theme.tagSize, weight: 500 };
70
+ case "line":
71
+ return { family: body, size: theme.relationLabelSize, weight: 500 };
72
+ default:
73
+ return { family: body, size: theme.labelSize, weight: theme.labelWeight };
74
+ }
75
+ }
76
+ /** The style a target resolves to through rules, classes and its own statements. */
77
+ export function resolvedStyle(resolver, diagram, target) {
78
+ if (target.kind === "relation") {
79
+ const relation = diagram.relationsByKey.get(target.id);
80
+ return relation ? resolver.relation(relation) : {};
81
+ }
82
+ if (target.kind === "event") {
83
+ const event = diagram.eventsByKey.get(target.id);
84
+ return event?.kind === "note" || event?.kind === "fragment"
85
+ ? resolver.event(event.id ?? event.key, event.kind)
86
+ : {};
87
+ }
88
+ const element = diagram.elementsById.get(target.id);
89
+ return element ? resolver.element(element) : {};
90
+ }
91
+ /**
92
+ * What a target's text draws with its rules and classes but without its own `style` statements
93
+ * being asked for separately: the resolved family, size and weight over the theme's.
94
+ */
95
+ export function drawnText(theme, diagram, target, resolver = new StyleResolver(theme, diagram)) {
96
+ const base = themeText(theme, diagram, target);
97
+ if (!base)
98
+ return undefined;
99
+ const style = resolvedStyle(resolver, diagram, target);
100
+ return {
101
+ family: style.font ? firstFamily(style.font) : base.family,
102
+ size: style.fontSize ?? base.size,
103
+ weight: style.fontWeight ?? base.weight,
104
+ };
105
+ }
106
+ /**
107
+ * The families text can be measured with: the provider's catalogue (bundled families by group,
108
+ * then the project's fonts), or the bundled families when the host measures with estimates.
109
+ */
110
+ export function fontFamilies(provider) {
111
+ const catalogue = provider?.families?.();
112
+ return (catalogue ??
113
+ [...BUNDLED_FAMILIES]
114
+ .sort((a, b) => FONT_GROUPS.indexOf(a.group) - FONT_GROUPS.indexOf(b.group))
115
+ .map((f) => ({
116
+ family: f.family,
117
+ group: f.group,
118
+ weights: f.weights,
119
+ license: f.license,
120
+ source: "bundled",
121
+ restricted: false,
122
+ })));
123
+ }
124
+ /** What a written stack is measured with: a family of the catalogue, or nothing (estimates). */
125
+ export function measuredFamily(provider, stack) {
126
+ const families = fontFamilies(provider);
127
+ const name = provider?.family(stack);
128
+ if (name !== undefined)
129
+ return families.find((f) => f.family === name);
130
+ // Without a provider, a stack is measured with a bundled family when it names one.
131
+ for (const part of stack.split(",")) {
132
+ const word = part
133
+ .trim()
134
+ .replace(/^["']|["']$/g, "")
135
+ .toLowerCase();
136
+ const found = families.find((f) => f.family.toLowerCase() === word);
137
+ if (found)
138
+ return found;
139
+ }
140
+ return undefined;
141
+ }
142
+ /** The most bytes of font data a picker row's faces may carry: a project font is a whole file. */
143
+ const ROW_FACE_LIMIT = 256 * 1024;
144
+ /** The rules of each family's row, by provider, kept while it lives; empty answers are not kept. */
145
+ const rowFaces = new WeakMap();
146
+ /**
147
+ * The families the font picker lists: the provider's catalogue (bundled families by group, then
148
+ * the project's fonts), each with the `@font-face` rules of its row's glyphs. Without a provider
149
+ * (a host that measures with estimates) the bundled families are listed without faces.
150
+ */
151
+ export function fontOptions(provider) {
152
+ const families = fontFamilies(provider);
153
+ const known = provider ? (rowFaces.get(provider) ?? new Map()) : new Map();
154
+ if (provider)
155
+ rowFaces.set(provider, known);
156
+ return families.map((info) => {
157
+ let faces = known.get(info.family);
158
+ if (!faces && provider && !info.restricted) {
159
+ const sample = `${info.family} Aa`;
160
+ const found = provider.faces(info.family, 400, sample);
161
+ const bytes = found.reduce((sum, face) => sum + face.data.length, 0);
162
+ faces = bytes <= ROW_FACE_LIMIT ? found.map(fontFaceRule) : [];
163
+ if (found.length > 0)
164
+ known.set(info.family, faces);
165
+ }
166
+ return {
167
+ family: info.family,
168
+ group: info.group,
169
+ weights: [...info.weights],
170
+ faces: faces ?? [],
171
+ ...(info.restricted ? { restricted: true } : {}),
172
+ };
173
+ });
174
+ }
175
+ //# sourceMappingURL=fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"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"}
package/dist/icons.d.ts CHANGED
@@ -4,6 +4,8 @@ import type { DiagramView, DocumentAnalysis } from "./analysis.js";
4
4
  import type { IconChoiceInfo, IconGroupInfo } from "./canvas/protocol.js";
5
5
  /** How many icons the icon picker shows for one query, at most. */
6
6
  export declare const ICON_RESULTS = 60;
7
+ /** How many icons of each of the project's own packs the picker shows before anything is typed. */
8
+ export declare const PROJECT_PACK_ICONS = 24;
7
9
  /** Whether an element of a kind takes the icon fields, in flow and free diagrams. */
8
10
  export declare function iconKind(kind: string, diagram: FlowDiagram): boolean;
9
11
  /** Whether the icon picker and icon drops write `style <id> { icon }` on an element. */
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1E,mEAAmE;AACnE,eAAO,MAAM,YAAY,KAAK,CAAC;AAc/B,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAEpE;AAED,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzE;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GAAG,UAAU,GAC3B,MAAM,GAAG,IAAI,CAQf;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,GAAG,SAAS,GAAG,SAAS,CAEjC;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,CAAC,CAIzC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,SAA8B,GAClC,cAAc,CAEhB;AAuCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,OAAO,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,SAAe,GACnB,aAAa,EAAE,CAuEjB;AAcD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,EAAE,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CAYpB"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1E,mEAAmE;AACnE,eAAO,MAAM,YAAY,KAAK,CAAC;AAQ/B,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAWrC,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAEpE;AAED,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzE;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GAAG,UAAU,GAC3B,MAAM,GAAG,IAAI,CAQf;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,GAAG,SAAS,GAAG,SAAS,CAEjC;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,CAAC,CAIzC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKpF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,SAA8B,GAClC,cAAc,CAEhB;AAuCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,OAAO,EAAE,EAC7B,KAAK,EAAE,MAAM,EACb,KAAK,SAAe,GACnB,aAAa,EAAE,CAiGjB;AAcD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,EAAE,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CAYpB"}
package/dist/icons.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { drawableNames, geometrySvg, humanise, searchLibraries, } from "@meltemi/diagrams-assets";
2
+ import { PROJECT_LIBRARY } from "./asset-files.js";
2
3
  import { iconChoices } from "./services/completion.js";
3
4
  /** How many icons the icon picker shows for one query, at most. */
4
5
  export const ICON_RESULTS = 60;
@@ -6,6 +7,10 @@ export const ICON_RESULTS = 60;
6
7
  const TECHNOLOGY = "tech";
7
8
  /** A query that reads as an icon reference, `pack:name`. */
8
9
  const REFERENCE = /^[a-z0-9][a-z0-9-]*:[A-Za-z0-9_.-]+$/;
10
+ /** How many icons of each of the project's own packs the picker shows before anything is typed. */
11
+ export const PROJECT_PACK_ICONS = 24;
12
+ /** The room an empty search keeps for the Technology library after the project's packs. */
13
+ const TECHNOLOGY_ROOM = 12;
9
14
  /**
10
15
  * The kinds whose icon takes the five positions, an icon size and a label position, and which the
11
16
  * icon picker and icon drops give an icon: they draw a box around their text.
@@ -143,17 +148,45 @@ export function iconGroups(analysis, libraries, query, limit = ICON_RESULTS) {
143
148
  const files = libraries.filter((l) => !fromPack(l, icons));
144
149
  const wanted = query.trim();
145
150
  if (wanted === "") {
146
- const library = files.find((l) => l.id === TECHNOLOGY) ?? files[0];
151
+ // The project's own packs first, named as the project's library names them.
152
+ const labels = new Map();
153
+ for (const library of files.filter((l) => l.id === PROJECT_LIBRARY.id)) {
154
+ for (const category of library.categories) {
155
+ for (const item of category.items)
156
+ if (!labels.has(item.icon))
157
+ labels.set(item.icon, item.label);
158
+ }
159
+ }
160
+ const own = icons
161
+ .list()
162
+ .filter((pack) => pack.metadata.source.startsWith("assets/icons/"))
163
+ .sort((a, b) => a.prefix.localeCompare(b.prefix))
164
+ .flatMap((pack) => drawableNames(pack, PROJECT_PACK_ICONS).map((name) => {
165
+ const reference = `${pack.prefix}:${name}`;
166
+ return {
167
+ ...packEntry(reference),
168
+ label: labels.get(reference) ?? iconLabel(icons, reference),
169
+ };
170
+ }))
171
+ .slice(0, Math.max(0, limit - TECHNOLOGY_ROOM));
172
+ const room = limit - own.length;
173
+ const library = files.find((l) => l.id === TECHNOLOGY) ?? files.find((l) => l.id !== PROJECT_LIBRARY.id);
147
174
  const category = library?.categories.find((c) => c.items.length > 0);
148
175
  if (library && category) {
149
- return grouped(icons, category.items
150
- .map((item) => libraryEntry({ library, category, item }))
151
- .filter(offered)
152
- .slice(0, limit));
176
+ return grouped(icons, [
177
+ ...own,
178
+ ...category.items
179
+ .map((item) => libraryEntry({ library, category, item }))
180
+ .filter(offered)
181
+ .slice(0, room),
182
+ ]);
153
183
  }
154
184
  // The general-purpose pack, when the project has it.
155
185
  const pack = icons.pack("tabler") ?? icons.list()[0];
156
- return grouped(icons, (pack ? drawableNames(pack, limit) : []).map((name) => packEntry(`${pack.prefix}:${name}`)));
186
+ return grouped(icons, [
187
+ ...own,
188
+ ...(pack ? drawableNames(pack, room) : []).map((name) => packEntry(`${pack.prefix}:${name}`)),
189
+ ]);
157
190
  }
158
191
  const seen = new Set();
159
192
  const fresh = (entry) => {