slotdeck 0.1.2 → 0.2.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 (104) hide show
  1. package/README.md +86 -6
  2. package/dist/deck/alternatives.d.ts +34 -0
  3. package/dist/deck/alternatives.js +370 -0
  4. package/dist/deck/alternatives.js.map +1 -0
  5. package/dist/deck/design.d.ts +40 -0
  6. package/dist/deck/design.js +112 -0
  7. package/dist/deck/design.js.map +1 -0
  8. package/dist/deck/validate.d.ts +18 -0
  9. package/dist/deck/validate.js +38 -2
  10. package/dist/deck/validate.js.map +1 -1
  11. package/dist/index.d.ts +22 -1
  12. package/dist/index.js +13 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/node.d.ts +7 -0
  15. package/dist/node.js +29 -0
  16. package/dist/node.js.map +1 -1
  17. package/dist/plan/catalog.js +3 -1
  18. package/dist/plan/catalog.js.map +1 -1
  19. package/dist/plan/edit.js +6 -2
  20. package/dist/plan/edit.js.map +1 -1
  21. package/dist/plan/plan.d.ts +10 -0
  22. package/dist/plan/plan.js +8 -0
  23. package/dist/plan/plan.js.map +1 -1
  24. package/dist/plan/review.d.ts +43 -0
  25. package/dist/plan/review.js +141 -0
  26. package/dist/plan/review.js.map +1 -0
  27. package/dist/plan/write.d.ts +5 -0
  28. package/dist/plan/write.js +11 -4
  29. package/dist/plan/write.js.map +1 -1
  30. package/dist/preview/pagus.d.ts +30 -0
  31. package/dist/preview/pagus.js +45 -0
  32. package/dist/preview/pagus.js.map +1 -0
  33. package/dist/preview/patterns.d.ts +27 -0
  34. package/dist/preview/patterns.js +35 -0
  35. package/dist/preview/patterns.js.map +1 -0
  36. package/dist/preview/provider.d.ts +30 -0
  37. package/dist/preview/provider.js +11 -0
  38. package/dist/preview/provider.js.map +1 -0
  39. package/dist/render/render.d.ts +18 -1
  40. package/dist/render/render.js +28 -8
  41. package/dist/render/render.js.map +1 -1
  42. package/dist/render/repeat.d.ts +17 -2
  43. package/dist/render/repeat.js +150 -4
  44. package/dist/render/repeat.js.map +1 -1
  45. package/dist/render/text.d.ts +6 -0
  46. package/dist/render/text.js +24 -0
  47. package/dist/render/text.js.map +1 -1
  48. package/dist/template/budgets.d.ts +33 -0
  49. package/dist/template/budgets.js +38 -0
  50. package/dist/template/budgets.js.map +1 -0
  51. package/dist/template/change.d.ts +18 -1
  52. package/dist/template/change.js +33 -3
  53. package/dist/template/change.js.map +1 -1
  54. package/dist/template/check.d.ts +3 -0
  55. package/dist/template/check.js +53 -3
  56. package/dist/template/check.js.map +1 -1
  57. package/dist/template/derive.d.ts +54 -0
  58. package/dist/template/derive.js +402 -0
  59. package/dist/template/derive.js.map +1 -0
  60. package/dist/template/draft.d.ts +7 -0
  61. package/dist/template/draft.js +17 -1
  62. package/dist/template/draft.js.map +1 -1
  63. package/dist/template/instruct.js +11 -5
  64. package/dist/template/instruct.js.map +1 -1
  65. package/dist/template/manifest.d.ts +22 -0
  66. package/dist/template/manifest.js +17 -1
  67. package/dist/template/manifest.js.map +1 -1
  68. package/dist/template/sample.d.ts +17 -0
  69. package/dist/template/sample.js +27 -2
  70. package/dist/template/sample.js.map +1 -1
  71. package/dist/text/fontkit.d.ts +18 -0
  72. package/dist/text/fontkit.js +91 -0
  73. package/dist/text/fontkit.js.map +1 -0
  74. package/dist/text/fonts.d.ts +45 -0
  75. package/dist/text/fonts.js +59 -0
  76. package/dist/text/fonts.js.map +1 -0
  77. package/dist/text/layout.d.ts +12 -0
  78. package/dist/text/layout.js +104 -0
  79. package/dist/text/layout.js.map +1 -0
  80. package/dist/text/measure.d.ts +85 -0
  81. package/dist/text/measure.js +369 -0
  82. package/dist/text/measure.js.map +1 -0
  83. package/dist/text/styles.d.ts +123 -0
  84. package/dist/text/styles.js +417 -0
  85. package/dist/text/styles.js.map +1 -0
  86. package/dist/tools.d.ts +12 -0
  87. package/dist/tools.js +32 -6
  88. package/dist/tools.js.map +1 -1
  89. package/docs/README.md +15 -5
  90. package/docs/api-reference.md +278 -8
  91. package/docs/changelog.md +135 -0
  92. package/docs/chat-tools.md +22 -5
  93. package/docs/deck-format.md +6 -0
  94. package/docs/design-checks.md +216 -0
  95. package/docs/generating.md +4 -1
  96. package/docs/layout-freedom.md +255 -3
  97. package/docs/manifest-format.md +19 -3
  98. package/docs/preview.md +217 -0
  99. package/docs/providers.md +1 -1
  100. package/docs/rendering.md +8 -0
  101. package/docs/template-studio.md +110 -11
  102. package/docs/text-fit.md +456 -0
  103. package/docs/troubleshooting.md +13 -2
  104. package/package.json +7 -1
@@ -1,7 +1,8 @@
1
1
  import { changeManifest, describeSlot } from './change.js';
2
+ import { VARIANTS } from './derive.js';
2
3
  import { inspectTemplate } from './inspect.js';
3
4
  import { ROLES, describeShape, frameFacts } from './measure.js';
4
- const OPS = ['setSlot', 'addSlot', 'removeSlot', 'setRepeat', 'removeRepeat', 'setPattern', 'copyPattern', 'removePattern', 'addPattern', 'setManifest'];
5
+ const OPS = ['setSlot', 'addSlot', 'removeSlot', 'setRepeat', 'removeRepeat', 'setPattern', 'copyPattern', 'derivePattern', 'removePattern', 'addPattern', 'setManifest'];
5
6
  /** What an operation's values may set. A table's text styles are spelled out so that every value is one word or number. */
6
7
  const PROPERTIES = [
7
8
  'name',
@@ -36,6 +37,8 @@ const PROPERTIES = [
36
37
  'direction',
37
38
  'alignOnDirectionChange',
38
39
  'textScale',
40
+ 'variant',
41
+ 'widen',
39
42
  ];
40
43
  const SYSTEM = [
41
44
  'You maintain the manifest of a presentation template. The manifest says which slides of a pptx are reusable layouts ("patterns") and which shapes on them are slots that new content replaces.',
@@ -48,10 +51,11 @@ const GUIDE = [
48
51
  '- setSlot (pattern, slot): change a slot. Values: empty ("error" makes it required, "remove" optional, "keep" always leaves the template\'s own content, "drop" always removes the shape); maxChars, maxParagraphs (limits of a text); fontSize (a text size in points); deckField (ties a text to one value for the whole deck); name (renames the slot); imageKind ("photo", "icon" or "graphic"). For a table: maxColumns, maxRows, maxCellChars, headerSize, headerBold, headerColor (hex), headerFont, bodySize, bodyBold, bodyColor, bodyFont. For a chart: maxCategories, maxSeries.',
49
52
  '- addSlot (pattern, shape): make a shape of the slide a slot, or give the shape of an existing slot another role. Values: role, and optionally name and optional ("true"). Roles: title, subtitle, text, list (one paragraph per item), number (a large figure), caption, photo, icon, graphic (a supplied chart or diagram picture), chart (a native editable chart in place of a picture), table, decoration (removed from every slide made with the pattern), fixed (stays exactly as designed).',
50
53
  '- removeSlot (pattern, slot): the shape stays as the template shows it.',
51
- '- setRepeat (pattern): how many items the row or grid of a pattern takes. Values: min, max.',
54
+ '- setRepeat (pattern): how many items the row or grid of a pattern takes. Values: min, max, and widen (a factor such as "1.5": with fewer items than the slide draws, each item may grow up to that many times as wide, so the row is filled and does not float in the middle; "1" keeps the drawn width).',
52
55
  '- removeRepeat (pattern): the items stop being a row whose number can change.',
53
56
  '- setPattern (pattern): Values: id (renames the pattern), description, figures ("true" offers it only when a brief has numbers).',
54
- '- copyPattern (pattern): a second pattern from the same slide, to turn into a variant with further operations. Values: id of the new pattern, and optionally description.',
57
+ '- copyPattern (pattern): a second pattern from the same slide, to turn into a variant by hand with further operations. Values: id of the new pattern, and optionally description.',
58
+ '- derivePattern (pattern): a second pattern from the same slide that the software lays out itself. Values: variant, and optionally id and description. Variants: "mirror" (the picture and the text beside it change sides), "text-only" (the picture is left out and the text widens over the room it leaves), "without" (leaves out the optional text named in "slot"; what sits under it moves up). The software works out every position and budget, and refuses a variant the slide does not allow. In a description, say what the layout holds and where the picture is.',
55
59
  '- removePattern (pattern).',
56
60
  '- addPattern: make a slide without a pattern into one. Values: slide, id, and optionally description.',
57
61
  '- setManifest: settings of the whole template. Values: name, language, direction ("rtl" or "ltr"), alignOnDirectionChange ("flip" or "keep"), textScale (a factor on the body text of every deck, such as "1.3" when the template\'s body text is too small; "1" for the designed size).',
@@ -112,7 +116,7 @@ export function describeManifest(template) {
112
116
  const repeat = pattern.repeat;
113
117
  if (repeat) {
114
118
  const drawn = repeat.shapes.length;
115
- lines.push(` ${repeat.columns ? `grid of ${drawn} ${repeat.item}s, ${repeat.columns} to a line` : `row of ${drawn} ${repeat.item}s`} (${repeat.slots.join(', ')}); takes ${repeat.min ?? drawn} to ${repeat.max ?? drawn}`);
119
+ lines.push(` ${repeat.columns ? `grid of ${drawn} ${repeat.item}s, ${repeat.columns} to a line` : `row of ${drawn} ${repeat.item}s`} (${repeat.slots.join(', ')}); takes ${repeat.min ?? drawn} to ${repeat.max ?? drawn}${repeat.widen && repeat.widen > 1 ? `; fewer on a line grow up to ${repeat.widen} times as wide` : ''}`);
116
120
  }
117
121
  lines.push(' slots:');
118
122
  for (const slot of pattern.slots) {
@@ -213,7 +217,7 @@ function toChange(raw) {
213
217
  case 'removeSlot':
214
218
  return { op, pattern, slot };
215
219
  case 'setRepeat':
216
- return put({ op, pattern }, { min: count('min'), max: count('max') });
220
+ return put({ op, pattern }, { min: count('min'), max: count('max'), widen: num('widen') });
217
221
  case 'removeRepeat':
218
222
  case 'removePattern':
219
223
  return { op, pattern };
@@ -221,6 +225,8 @@ function toChange(raw) {
221
225
  return put({ op, pattern }, { id: str('id'), description: str('description'), figures: bool('figures') });
222
226
  case 'copyPattern':
223
227
  return put({ op, pattern, id: str('id') ?? '' }, { description: str('description') });
228
+ case 'derivePattern':
229
+ return put({ op, pattern, variant: choice('variant', VARIANTS) ?? values.get('variant') ?? '' }, { slot: slot || undefined, id: str('id'), description: str('description') });
224
230
  case 'addPattern':
225
231
  return put({ op, slide: count('slide') ?? 0, id: str('id') ?? '' }, { description: str('description') });
226
232
  case 'setManifest':
@@ -1 +1 @@
1
- {"version":3,"file":"instruct.js","sourceRoot":"","sources":["../../src/template/instruct.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAahE,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAU,CAAC;AAElK,2HAA2H;AAC3H,MAAM,UAAU,GAAG;IACjB,MAAM;IACN,IAAI;IACJ,aAAa;IACb,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,UAAU;IACV,eAAe;IACf,WAAW;IACX,UAAU;IACV,WAAW;IACX,YAAY;IACZ,SAAS;IACT,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,eAAe;IACf,WAAW;IACX,KAAK;IACL,KAAK;IACL,OAAO;IACP,UAAU;IACV,WAAW;IACX,wBAAwB;IACxB,WAAW;CACH,CAAC;AAEX,MAAM,MAAM,GAAG;IACb,gMAAgM;IAChM,6JAA6J;IAC7J,6HAA6H;CAC9H,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,KAAK,GAAG;IACZ,yQAAyQ;IACzQ,aAAa;IACb,6jBAA6jB;IAC7jB,qeAAqe;IACre,yEAAyE;IACzE,6FAA6F;IAC7F,+EAA+E;IAC/E,kIAAkI;IAClI,2KAA2K;IAC3K,4BAA4B;IAC5B,uGAAuG;IACvG,0RAA0R;IAC1R,gGAAgG;IAChG,+HAA+H;IAC/H,oGAAoG;IACpG,0FAA0F;IAC1F,8JAA8J;CAC/J,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,gGAAgG;AAChG,kGAAkG;AAClG,oFAAoF;AACpF,gHAAgH;AAChH,MAAM,MAAM,GAAe;IACzB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE;oBACtC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACpE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;oBACvE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;oBAChE,MAAM,EAAE;wBACN,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BAC9F,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;yBAChC;qBACF;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;aACvD;SACF;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACzB;IACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9F,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,CAAC,YAAY,OAAO,CAAC,EAAE,YAAY,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAClK,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,GAAG,IAAI,KAAK,OAAO,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAC/N,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,oBAAoB,EAAE,CAAC,CAAC;QACvI,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACzG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACnE,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvI,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,sBAAsB,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,8CAA8C,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,2BAA2B,QAAQ,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,qDAAqD;QACtd,GAAG,MAAM;QACT,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,6BAA6B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;KAC3E;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAc,EAAsB,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACnI,MAAM,KAAK,GAAG,CAAmB,KAAc,EAAE,OAAqB,EAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAErI,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,GAA4B;IAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAE,KAAuC,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAI,KAAoC,EAAE,KAAK,CAAC;QAC3D,IAAI,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrJ,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;QAClD,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAmB,QAAgB,EAAE,OAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACnH,MAAM,KAAK,GAAG,CAAC,MAAyB,EAA8B,EAAE;QACtE,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,IAAI,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;QAClC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAmB,MAAS,EAAE,OAAgC,EAAK,EAAE;QAC/E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,IAAI,KAAK,KAAK,SAAS;gBAAG,MAAkC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9H,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAoB,EAAE;gBAClD,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;gBACjB,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC;gBAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;gBACpE,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC3B,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC;gBACrC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC;gBAC3B,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC;gBACzB,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;gBACrE,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC;gBAC/B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;gBACzB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC;gBACnC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;gBAC3B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;gBACvB,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC;gBACrC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC;aAC9B,CAAC,CAAC;QACL,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAS,EAAoB,EAAE;gBACtH,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aACvD,CAAC,CAAC;QACL,KAAK,YAAY;YACf,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAoB,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,KAAK,cAAc,CAAC;QACpB,KAAK,eAAe;YAClB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAoB,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9H,KAAK,aAAa;YAChB,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAoB,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC1G,KAAK,YAAY;YACf,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAoB,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC7H,KAAK,aAAa;YAChB,OAAO,GAAG,CAAC,EAAE,EAAE,EAAoB,EAAE;gBACnC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;gBACjB,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC;gBACzB,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;gBACvD,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;gBACnF,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC;aAC5B,CAAC,CAAC;QACL;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAkB,EAAE,WAAmB,EAAE,OAA4B;IACtG,MAAM,GAAG,GAAG,KAAK,EAAE,MAAc,EAAwD,EAAE;QACzF,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAGzI,CAAC;QACT,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAA8B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aACrG,MAAM,CAAC,CAAC,MAAM,EAA4B,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACtE,OAAO,EAAE,IAAI,EAAE,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;IACvF,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,qBAAqB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3G,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAEtB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CACtB;YACE,MAAM;YACN,wCAAwC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpI,6BAA6B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;YAC3H,oDAAoD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtI,6QAA6Q;SAC9Q,CAAC,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/F,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,MAAM,GAAG;gBACP,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC1G,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC;gBACpF,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"instruct.js","sourceRoot":"","sources":["../../src/template/instruct.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,15 @@ export interface TemplateManifest {
24
24
  * comfortably. Budgets shrink with it, and a deck's own text size is applied on top.
25
25
  */
26
26
  textScale?: number;
27
+ /**
28
+ * Lets text that does not fit its box be set smaller: down to `to` of its size (0.85 is 85%)
29
+ * and never under `minSize` points. It needs fonts to measure with, so it only acts for a
30
+ * template loaded with fonts; without them nothing is shrunk.
31
+ */
32
+ shrinkText?: {
33
+ to: number;
34
+ minSize?: number;
35
+ };
27
36
  patterns: PatternDef[];
28
37
  }
29
38
  /**
@@ -86,7 +95,20 @@ export interface RepeatDef {
86
95
  * reading order, spread evenly over as few rows as they need. Leave it out for a single row.
87
96
  */
88
97
  columns?: number;
98
+ /**
99
+ * Lets items grow wider when a line holds fewer of them than the template draws, so that they
100
+ * fill the row's span and do not float in the middle of it. The value is the most an item may
101
+ * grow, as a factor on its drawn width: 1.5 lets a card become half as wide again. Backgrounds
102
+ * and text boxes widen; pictures keep their size and their side. Left out, items keep their size.
103
+ */
104
+ widen?: number;
89
105
  }
106
+ /**
107
+ * The factor by which the items of a row are at least wider than drawn for a given count: 1 when
108
+ * the row does not widen. Items grow when the fullest line holds fewer than the template draws on
109
+ * a line; with the same gaps between them, they are then at least `drawn / held` times as wide.
110
+ */
111
+ export declare function widenFactor(repeat: RepeatDef, count: number): number;
90
112
  /**
91
113
  * How many items each row of a repeat holds for a given count. A single row takes them all.
92
114
  * A grid uses as few rows as the count needs and spreads the items evenly: four items in a
@@ -24,6 +24,18 @@ export function chartAtScale(slot, scale) {
24
24
  export function bodyTextScale(manifest, deckScale = 1) {
25
25
  return (manifest.textScale ?? 1) * deckScale;
26
26
  }
27
+ /**
28
+ * The factor by which the items of a row are at least wider than drawn for a given count: 1 when
29
+ * the row does not widen. Items grow when the fullest line holds fewer than the template draws on
30
+ * a line; with the same gaps between them, they are then at least `drawn / held` times as wide.
31
+ */
32
+ export function widenFactor(repeat, count) {
33
+ if (!repeat.widen || !(repeat.widen > 1))
34
+ return 1;
35
+ const drawn = repeat.columns ?? repeat.shapes.length;
36
+ const held = Math.max(0, ...rowLayout(repeat, count));
37
+ return held > 0 && held < drawn ? Math.min(repeat.widen, drawn / held) : 1;
38
+ }
27
39
  /**
28
40
  * How many items each row of a repeat holds for a given count. A single row takes them all.
29
41
  * A grid uses as few rows as the count needs and spreads the items evenly: four items in a
@@ -116,7 +128,11 @@ export function effectiveSlots(pattern, items) {
116
128
  slots.push(copy.kind === 'image' ? { ...copy, copyOf: original.shapeId } : copy);
117
129
  }
118
130
  }
119
- return slots;
131
+ // Wider items hold more text: the budgets of the row's texts grow with the items.
132
+ const factor = widenFactor(repeat, count);
133
+ if (factor === 1)
134
+ return slots;
135
+ return slots.map((slot) => (slot.kind === 'text' && slot.maxChars !== undefined && itemOf.has(slot.name) ? { ...slot, maxChars: Math.floor(slot.maxChars * factor) } : slot));
120
136
  }
121
137
  /** Deck text sizes by name, as factors on the template's body text. */
122
138
  export const TEXT_SIZES = { normal: 1, large: 1.25, 'x-large': 1.5 };
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/template/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/template/manifest.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,19 @@
1
1
  import type { DeckSpec } from '../deck/spec.ts';
2
2
  import type { Template } from '../render/render.ts';
3
+ import type { TextMeasurer } from '../text/measure.ts';
4
+ import type { PatternDef, TextSlotDef } from './manifest.ts';
3
5
  export interface SampleOptions {
4
6
  /** How full to make each text slot, as a share of its budget. Defaults to 0.95. */
5
7
  fill?: number;
6
8
  /** For patterns with a row of items: `drawn` (default) uses the template's number, `max` the most allowed. */
7
9
  items?: 'drawn' | 'max' | 'min';
10
+ /**
11
+ * What "full" means for a text slot. `budget` (default) is the slot's character budget. `box` is
12
+ * what the slot's box holds as measured with the template's fonts, whatever the budget says:
13
+ * the deck then shows every box at its true capacity. `box` needs a template loaded with fonts;
14
+ * a slot that cannot be measured is filled to its budget.
15
+ */
16
+ fit?: 'budget' | 'box';
8
17
  }
9
18
  /**
10
19
  * Builds a deck that uses every pattern once and fills every slot close to its limit, with the
@@ -15,3 +24,11 @@ export declare function sampleDeck(template: Template, options?: SampleOptions):
15
24
  deck: DeckSpec;
16
25
  assets: Record<string, Uint8Array>;
17
26
  };
27
+ /**
28
+ * The most characters of filler text, in a number of paragraphs, that a slot's box holds as
29
+ * measured. `undefined` when the slot cannot be measured. `items` is the number of items on the
30
+ * slide, for a slot of a row whose items widen when there are fewer of them.
31
+ */
32
+ export declare function boxCapacity(measure: TextMeasurer, pattern: PatternDef, slot: TextSlotDef, words: string[], paragraphs: number, textScale?: number, items?: number): number | undefined;
33
+ /** Text of about `length` characters, made of whole words where they fit, starting at a different word each time. */
34
+ export declare function filler(words: string[], length: number, start: number): string;
@@ -1,4 +1,5 @@
1
1
  import { solidPng } from '../util/png.js';
2
+ import { measurerFor } from '../text/measure.js';
2
3
  import { inspectTemplate } from './inspect.js';
3
4
  import { COPY_ID_STEP, effectiveSlots, itemRange, tableAtScale, textBudget } from './manifest.js';
4
5
  /**
@@ -10,6 +11,7 @@ export function sampleDeck(template, options = {}) {
10
11
  const { manifest } = template;
11
12
  const info = inspectTemplate(template.pkg);
12
13
  const fill = options.fill ?? 0.95;
14
+ const measure = options.fit === 'box' ? measurerFor(template) : undefined;
13
15
  const assets = {
14
16
  'sample-photo': solidPng(96, 64, [120, 150, 135]),
15
17
  'sample-icon': solidPng(32, 32, [105, 36, 232]),
@@ -37,7 +39,8 @@ export function sampleDeck(template, options = {}) {
37
39
  const budget = textBudget(slot, manifest.textScale ?? 1);
38
40
  const several = (slot.maxParagraphs ?? 1) > 1;
39
41
  const paragraphs = several ? (budget.maxParagraphs ?? 2) : 1;
40
- const total = budget.maxChars !== undefined ? Math.max(1, Math.floor(budget.maxChars * fill)) : words.join(' ').length || 12;
42
+ const held = measure ? boxCapacity(measure, pattern, slot, words, paragraphs, manifest.textScale ?? 1, items) : undefined;
43
+ const total = held !== undefined ? Math.max(1, Math.floor(held * fill)) : budget.maxChars !== undefined ? Math.max(1, Math.floor(budget.maxChars * fill)) : words.join(' ').length || 12;
41
44
  const each = Math.max(1, Math.floor(total / paragraphs));
42
45
  const text = Array.from({ length: paragraphs }, (_, index) => filler(words, each, index));
43
46
  slots[slot.name] = several ? text : text[0];
@@ -77,8 +80,30 @@ export function sampleDeck(template, options = {}) {
77
80
  deck.fields = fields;
78
81
  return { deck, assets };
79
82
  }
83
+ /**
84
+ * The most characters of filler text, in a number of paragraphs, that a slot's box holds as
85
+ * measured. `undefined` when the slot cannot be measured. `items` is the number of items on the
86
+ * slide, for a slot of a row whose items widen when there are fewer of them.
87
+ */
88
+ export function boxCapacity(measure, pattern, slot, words, paragraphs, textScale = 1, items) {
89
+ const make = (total) => Array.from({ length: paragraphs }, (_, index) => filler(words, Math.max(1, Math.floor(total / paragraphs)), index));
90
+ const options = items === undefined ? { textScale } : { textScale, items };
91
+ const fits = (total) => measure.fit(pattern, slot, make(total), options)?.fits;
92
+ if (fits(paragraphs) === undefined)
93
+ return undefined;
94
+ let low = paragraphs;
95
+ let high = 6000;
96
+ while (low < high) {
97
+ const middle = Math.ceil((low + high) / 2);
98
+ if (fits(middle))
99
+ low = middle;
100
+ else
101
+ high = middle - 1;
102
+ }
103
+ return low;
104
+ }
80
105
  /** Text of about `length` characters, made of whole words where they fit, starting at a different word each time. */
81
- function filler(words, length, start) {
106
+ export function filler(words, length, start) {
82
107
  if (words.length === 0)
83
108
  return 'x'.repeat(length);
84
109
  let text = '';
@@ -1 +1 @@
1
- {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/template/sample.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/template/sample.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { FontMetrics } from './fonts.ts';
2
+ /** The part of the `fontkit` module this adapter uses: `import * as fontkit from 'fontkit'`. */
3
+ export interface FontkitModule {
4
+ create(buffer: never, postscriptName?: string): unknown;
5
+ }
6
+ /** Font files by the typeface name the template uses. Several files give a family its weights and slants. */
7
+ export type FontFiles = Record<string, Uint8Array | Uint8Array[]>;
8
+ /**
9
+ * Builds {@link FontMetrics} from font files, read with `fontkit` (TrueType, OpenType, WOFF,
10
+ * WOFF2 and .ttc collections). Each key is a typeface name as the template states it; its
11
+ * value is one file or several (regular, bold, italic), told apart by what each file says of
12
+ * itself. A file may stand in for a typeface of another name, such as an open metric-compatible
13
+ * font for a licensed one.
14
+ *
15
+ * A weight or slant that was not supplied is measured with the nearest face that was. A
16
+ * character that a typeface lacks is measured in the first supplied typeface that has it.
17
+ */
18
+ export declare function fontkitMetrics(fontkit: FontkitModule, files: FontFiles): FontMetrics;
@@ -0,0 +1,91 @@
1
+ /** A synthesized bold is drawn a little wider than the regular face it is made from. */
2
+ const FAKE_BOLD = 0.02;
3
+ /**
4
+ * Builds {@link FontMetrics} from font files, read with `fontkit` (TrueType, OpenType, WOFF,
5
+ * WOFF2 and .ttc collections). Each key is a typeface name as the template states it; its
6
+ * value is one file or several (regular, bold, italic), told apart by what each file says of
7
+ * itself. A file may stand in for a typeface of another name, such as an open metric-compatible
8
+ * font for a licensed one.
9
+ *
10
+ * A weight or slant that was not supplied is measured with the nearest face that was. A
11
+ * character that a typeface lacks is measured in the first supplied typeface that has it.
12
+ */
13
+ export function fontkitMetrics(fontkit, files) {
14
+ const families = new Map();
15
+ for (const [name, value] of Object.entries(files)) {
16
+ const loaded = [];
17
+ for (const bytes of Array.isArray(value) ? value : [value]) {
18
+ const opened = fontkit.create(bytes);
19
+ // A collection holds several families; the one asked for is taken, or the first.
20
+ const members = opened.fonts ?? [opened];
21
+ const named = members.filter((font) => (font.familyName ?? '').toLowerCase() === name.toLowerCase());
22
+ for (const font of named.length > 0 ? named : members.slice(0, 1)) {
23
+ loaded.push({
24
+ font,
25
+ bold: !!(font['OS/2']?.fsSelection?.bold ?? font.head?.macStyle?.bold) || (font['OS/2']?.usWeightClass ?? 400) >= 600,
26
+ italic: !!(font['OS/2']?.fsSelection?.italic ?? font.head?.macStyle?.italic) || (font.italicAngle ?? 0) !== 0,
27
+ });
28
+ }
29
+ }
30
+ if (loaded.length > 0)
31
+ families.set(name.toLowerCase(), loaded);
32
+ }
33
+ const faces = new Map();
34
+ const build = (family, style) => {
35
+ const exact = family.find((entry) => entry.bold === style.bold && entry.italic === style.italic);
36
+ let chosen = exact ?? family.find((entry) => entry.bold === style.bold) ?? family.find((entry) => !entry.bold && !entry.italic) ?? family[0];
37
+ if (!chosen)
38
+ return undefined;
39
+ let font = chosen.font;
40
+ let substitute = !exact;
41
+ // A variable font carries its bold in the same file.
42
+ if (!exact && style.bold && !chosen.bold && font.variationAxes?.wght && font.getVariation) {
43
+ try {
44
+ font = font.getVariation({ wght: Math.min(700, font.variationAxes.wght.max) });
45
+ chosen = { font, bold: true, italic: chosen.italic };
46
+ substitute = chosen.italic !== style.italic;
47
+ }
48
+ catch {
49
+ // Kept as the regular face.
50
+ }
51
+ }
52
+ const widen = style.bold && !chosen.bold ? FAKE_BOLD : 0;
53
+ const known = new Map();
54
+ const face = {
55
+ has: (codePoint) => font.hasGlyphForCodePoint(codePoint),
56
+ advances(text, kerning) {
57
+ const key = kerning ? `k${text}` : `n${text}`;
58
+ let advances = known.get(key);
59
+ if (!advances) {
60
+ advances = font.layout(text, kerning ? undefined : { kern: false }).positions.map((position) => position.xAdvance / font.unitsPerEm + widen);
61
+ if (known.size < 50000)
62
+ known.set(key, advances);
63
+ }
64
+ return advances;
65
+ },
66
+ };
67
+ if (substitute)
68
+ face.substitute = true;
69
+ return face;
70
+ };
71
+ const lookup = (name, style) => {
72
+ const key = `${name.toLowerCase()}|${style.bold ? 'b' : ''}${style.italic ? 'i' : ''}`;
73
+ if (!faces.has(key)) {
74
+ const family = families.get(name.toLowerCase());
75
+ faces.set(key, family ? build(family, style) : undefined);
76
+ }
77
+ return faces.get(key);
78
+ };
79
+ return {
80
+ face: lookup,
81
+ fallback(codePoint, style) {
82
+ for (const name of families.keys()) {
83
+ const face = lookup(name, style);
84
+ if (face?.has(codePoint))
85
+ return face;
86
+ }
87
+ return undefined;
88
+ },
89
+ };
90
+ }
91
+ //# sourceMappingURL=fontkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontkit.js","sourceRoot":"","sources":["../../src/text/fontkit.ts"],"names":[],"mappings":"AAgCA,wFAAwF;AACxF,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,OAAsB,EAAE,KAAgB;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAI,OAAO,CAAC,MAA0C,CAAC,KAAK,CAAY,CAAC;YACrF,iFAAiF;YACjF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACrG,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,IAAI,GAAG,CAAC,IAAI,GAAG;oBACrH,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC;iBAC9G,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,MAAgB,EAAE,KAAgB,EAAwB,EAAE;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACjG,IAAI,MAAM,GAAG,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7I,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC;QACxB,qDAAqD;QACrD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1F,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/E,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrD,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC1C,MAAM,IAAI,GAAa;YACrB,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;YACxD,QAAQ,CAAC,IAAI,EAAE,OAAO;gBACpB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC9C,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;oBAC7I,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF,CAAC;QACF,IAAI,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAAgB,EAAwB,EAAE;QACtE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,CAAC,SAAS,EAAE,KAAK;YACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjC,IAAI,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;YACxC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ /** Weight and slant of a face. */
2
+ export interface FontStyle {
3
+ bold: boolean;
4
+ italic: boolean;
5
+ }
6
+ /** A typeface in one weight and slant, as far as measuring needs it. */
7
+ export interface FontFace {
8
+ /** Whether the face has a glyph for a character, given as a code point. */
9
+ has(codePoint: number): boolean;
10
+ /**
11
+ * The advance of each glyph of a text set on one line, in ems, after the font's own shaping
12
+ * (ligatures, Arabic joining) and with kerning when asked for. Their sum times the font size is
13
+ * the width of the text. They are wanted one by one because PowerPoint rounds each of them.
14
+ */
15
+ advances(text: string, kerning: boolean): number[];
16
+ /** Set when the face stands in for a weight or slant that was not supplied, so widths are a little off. */
17
+ substitute?: boolean;
18
+ }
19
+ /**
20
+ * The one thing slotdeck needs from a font library: the widths of glyphs in a typeface.
21
+ * Implement this to plug in any library; {@link fontkitMetrics} does it for `fontkit`.
22
+ */
23
+ export interface FontMetrics {
24
+ /** The face for a typeface name as the template states it, or `undefined` when it was not supplied. */
25
+ face(typeface: string, style: FontStyle): FontFace | undefined;
26
+ /** A face for a character that the chosen face has no glyph for. */
27
+ fallback?(codePoint: number, style: FontStyle): FontFace | undefined;
28
+ }
29
+ /**
30
+ * The width of a piece of text at a font size, in points, as PowerPoint lays it out: on a grid of
31
+ * an eighth of a point, to which the advance of every glyph is rounded. At small sizes that
32
+ * rounding moves a line's width by a percent or two, enough to move a word to the next line.
33
+ */
34
+ export declare function textWidth(face: FontFace, text: string, size: number, kerning: boolean): number;
35
+ /**
36
+ * The three typefaces a run of text carries. PowerPoint sets Hebrew, Arabic and the like in the
37
+ * complex-script face, Chinese, Japanese and Korean in the East Asian one, and the rest in the Latin one.
38
+ */
39
+ export type ScriptClass = 'latin' | 'cs' | 'ea';
40
+ /** The typeface class of a character, or `undefined` for one that takes its neighbour's (a space, a digit, punctuation). */
41
+ export declare function scriptClass(char: string): ScriptClass | undefined;
42
+ /** Whether a line may break before and after the character without a space, as between Chinese or Japanese characters. */
43
+ export declare function breaksAnywhere(char: string): boolean;
44
+ /** The theme's name for the script of a complex-script or East Asian character, as in `<a:font script="Hebr">`. */
45
+ export declare function themeScript(char: string): string | undefined;
@@ -0,0 +1,59 @@
1
+ // What measuring text needs from a font library, and which typeface a character is set in.
2
+ /**
3
+ * The width of a piece of text at a font size, in points, as PowerPoint lays it out: on a grid of
4
+ * an eighth of a point, to which the advance of every glyph is rounded. At small sizes that
5
+ * rounding moves a line's width by a percent or two, enough to move a word to the next line.
6
+ */
7
+ export function textWidth(face, text, size, kerning) {
8
+ let units = 0;
9
+ for (const advance of face.advances(text, kerning))
10
+ units += Math.round(advance * size * 8);
11
+ return units / 8;
12
+ }
13
+ const COMPLEX = /[\p{Script=Hebrew}\p{Script=Arabic}\p{Script=Syriac}\p{Script=Thaana}\p{Script=Thai}\p{Script=Lao}\p{Script=Khmer}\p{Script=Devanagari}\p{Script=Bengali}\p{Script=Gurmukhi}\p{Script=Gujarati}\p{Script=Tamil}\p{Script=Telugu}\p{Script=Kannada}\p{Script=Malayalam}\p{Script=Sinhala}\p{Script=Tibetan}\p{Script=Myanmar}]/u;
14
+ const EAST_ASIAN = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Bopomofo} -〿＀-￯]/u;
15
+ const STRONG = /[\p{L}\p{M}]/u;
16
+ const classes = new Map();
17
+ /** The typeface class of a character, or `undefined` for one that takes its neighbour's (a space, a digit, punctuation). */
18
+ export function scriptClass(char) {
19
+ if (classes.has(char))
20
+ return classes.get(char);
21
+ const found = COMPLEX.test(char) ? 'cs' : EAST_ASIAN.test(char) ? 'ea' : STRONG.test(char) ? 'latin' : undefined;
22
+ if (classes.size < 20000)
23
+ classes.set(char, found);
24
+ return found;
25
+ }
26
+ /** Whether a line may break before and after the character without a space, as between Chinese or Japanese characters. */
27
+ export function breaksAnywhere(char) {
28
+ return /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Bopomofo}]/u.test(char);
29
+ }
30
+ /** The theme's name for the script of a complex-script or East Asian character, as in `<a:font script="Hebr">`. */
31
+ export function themeScript(char) {
32
+ for (const [tag, test] of THEME_SCRIPTS)
33
+ if (test.test(char))
34
+ return tag;
35
+ return undefined;
36
+ }
37
+ const THEME_SCRIPTS = [
38
+ ['Hebr', /\p{Script=Hebrew}/u],
39
+ ['Arab', /\p{Script=Arabic}/u],
40
+ ['Syrc', /\p{Script=Syriac}/u],
41
+ ['Thaa', /\p{Script=Thaana}/u],
42
+ ['Thai', /\p{Script=Thai}/u],
43
+ ['Laoo', /\p{Script=Lao}/u],
44
+ ['Khmr', /\p{Script=Khmer}/u],
45
+ ['Deva', /\p{Script=Devanagari}/u],
46
+ ['Beng', /\p{Script=Bengali}/u],
47
+ ['Guru', /\p{Script=Gurmukhi}/u],
48
+ ['Gujr', /\p{Script=Gujarati}/u],
49
+ ['Taml', /\p{Script=Tamil}/u],
50
+ ['Telu', /\p{Script=Telugu}/u],
51
+ ['Knda', /\p{Script=Kannada}/u],
52
+ ['Mlym', /\p{Script=Malayalam}/u],
53
+ ['Sinh', /\p{Script=Sinhala}/u],
54
+ ['Tibt', /\p{Script=Tibetan}/u],
55
+ ['Hang', /\p{Script=Hangul}/u],
56
+ ['Jpan', /[\p{Script=Hiragana}\p{Script=Katakana}]/u],
57
+ ['Hans', /\p{Script=Han}/u],
58
+ ];
59
+ //# sourceMappingURL=fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../src/text/fonts.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAiC3F;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,IAAY,EAAE,IAAY,EAAE,OAAgB;IACpF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAC5F,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC;AAQD,MAAM,OAAO,GACX,gUAAgU,CAAC;AACnU,MAAM,UAAU,GAAG,mGAAmG,CAAC;AACvH,MAAM,MAAM,GAAG,eAAe,CAAC;AAE/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAC;AAE3D,4HAA4H;AAC5H,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,KAAK,GAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1I,IAAI,OAAO,CAAC,IAAI,GAAG,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,4EAA4E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjG,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,aAAa;QAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;IACzE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,aAAa,GAA4B;IAC7C,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC5B,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAC3B,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAClC,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAC/B,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAC/B,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACjC,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAC/B,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAC/B,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,MAAM,EAAE,2CAA2C,CAAC;IACrD,CAAC,MAAM,EAAE,iBAAiB,CAAC;CAC5B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Breaks one paragraph into lines. `first` and `rest` are the widths the first and the later
3
+ * lines may take; `measure` gives the width of a piece of text set on one line, in the same
4
+ * unit. Words go on a line while they fit; a word wider than a whole line is cut where the
5
+ * line ends. Spaces at the end of a line hang outside it and do not count.
6
+ *
7
+ * `inside` names the exception to that: it is asked whether the space after a line that would
8
+ * end with the given text, with the given word to follow, stays inside the line and so needs
9
+ * room. PowerPoint keeps it inside when the text on both sides of that space runs against the
10
+ * paragraph's direction.
11
+ */
12
+ export declare function breakLines(text: string, first: number, rest: number, measure: (text: string) => number, inside?: (line: string, next: string) => boolean): string[];