slotdeck 0.1.1 → 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 (109) hide show
  1. package/README.md +94 -8
  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 +44 -6
  10. package/dist/deck/validate.js.map +1 -1
  11. package/dist/index.d.ts +23 -1
  12. package/dist/index.js +14 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/llm/gemini.d.ts +4 -0
  15. package/dist/llm/gemini.js +43 -7
  16. package/dist/llm/gemini.js.map +1 -1
  17. package/dist/llm/provider.d.ts +12 -0
  18. package/dist/node.d.ts +7 -0
  19. package/dist/node.js +29 -0
  20. package/dist/node.js.map +1 -1
  21. package/dist/plan/catalog.d.ts +11 -1
  22. package/dist/plan/catalog.js +23 -8
  23. package/dist/plan/catalog.js.map +1 -1
  24. package/dist/plan/edit.js +14 -6
  25. package/dist/plan/edit.js.map +1 -1
  26. package/dist/plan/plan.d.ts +26 -2
  27. package/dist/plan/plan.js +58 -17
  28. package/dist/plan/plan.js.map +1 -1
  29. package/dist/plan/review.d.ts +43 -0
  30. package/dist/plan/review.js +141 -0
  31. package/dist/plan/review.js.map +1 -0
  32. package/dist/plan/write.d.ts +13 -1
  33. package/dist/plan/write.js +40 -7
  34. package/dist/plan/write.js.map +1 -1
  35. package/dist/preview/pagus.d.ts +30 -0
  36. package/dist/preview/pagus.js +45 -0
  37. package/dist/preview/pagus.js.map +1 -0
  38. package/dist/preview/patterns.d.ts +27 -0
  39. package/dist/preview/patterns.js +35 -0
  40. package/dist/preview/patterns.js.map +1 -0
  41. package/dist/preview/provider.d.ts +30 -0
  42. package/dist/preview/provider.js +11 -0
  43. package/dist/preview/provider.js.map +1 -0
  44. package/dist/render/render.d.ts +18 -1
  45. package/dist/render/render.js +32 -12
  46. package/dist/render/render.js.map +1 -1
  47. package/dist/render/repeat.d.ts +17 -2
  48. package/dist/render/repeat.js +150 -4
  49. package/dist/render/repeat.js.map +1 -1
  50. package/dist/render/text.d.ts +6 -0
  51. package/dist/render/text.js +24 -0
  52. package/dist/render/text.js.map +1 -1
  53. package/dist/template/budgets.d.ts +33 -0
  54. package/dist/template/budgets.js +38 -0
  55. package/dist/template/budgets.js.map +1 -0
  56. package/dist/template/change.d.ts +19 -1
  57. package/dist/template/change.js +45 -3
  58. package/dist/template/change.js.map +1 -1
  59. package/dist/template/check.d.ts +3 -0
  60. package/dist/template/check.js +53 -3
  61. package/dist/template/check.js.map +1 -1
  62. package/dist/template/derive.d.ts +54 -0
  63. package/dist/template/derive.js +402 -0
  64. package/dist/template/derive.js.map +1 -0
  65. package/dist/template/draft.d.ts +7 -0
  66. package/dist/template/draft.js +17 -1
  67. package/dist/template/draft.js.map +1 -1
  68. package/dist/template/instruct.js +15 -7
  69. package/dist/template/instruct.js.map +1 -1
  70. package/dist/template/manifest.d.ts +38 -0
  71. package/dist/template/manifest.js +43 -1
  72. package/dist/template/manifest.js.map +1 -1
  73. package/dist/template/sample.d.ts +17 -0
  74. package/dist/template/sample.js +31 -5
  75. package/dist/template/sample.js.map +1 -1
  76. package/dist/text/fontkit.d.ts +18 -0
  77. package/dist/text/fontkit.js +91 -0
  78. package/dist/text/fontkit.js.map +1 -0
  79. package/dist/text/fonts.d.ts +45 -0
  80. package/dist/text/fonts.js +59 -0
  81. package/dist/text/fonts.js.map +1 -0
  82. package/dist/text/layout.d.ts +12 -0
  83. package/dist/text/layout.js +104 -0
  84. package/dist/text/layout.js.map +1 -0
  85. package/dist/text/measure.d.ts +85 -0
  86. package/dist/text/measure.js +369 -0
  87. package/dist/text/measure.js.map +1 -0
  88. package/dist/text/styles.d.ts +123 -0
  89. package/dist/text/styles.js +417 -0
  90. package/dist/text/styles.js.map +1 -0
  91. package/dist/tools.d.ts +12 -0
  92. package/dist/tools.js +38 -6
  93. package/dist/tools.js.map +1 -1
  94. package/docs/README.md +16 -5
  95. package/docs/api-reference.md +291 -9
  96. package/docs/changelog.md +242 -0
  97. package/docs/chat-tools.md +26 -5
  98. package/docs/deck-format.md +6 -0
  99. package/docs/design-checks.md +216 -0
  100. package/docs/generating.md +43 -4
  101. package/docs/layout-freedom.md +278 -3
  102. package/docs/manifest-format.md +20 -3
  103. package/docs/preview.md +217 -0
  104. package/docs/providers.md +49 -4
  105. package/docs/rendering.md +8 -0
  106. package/docs/template-studio.md +121 -12
  107. package/docs/text-fit.md +456 -0
  108. package/docs/troubleshooting.md +21 -2
  109. package/package.json +7 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.js","sourceRoot":"","sources":["../../src/text/measure.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE/G,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2EzC,mGAAmG;AACnG,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,yGAAyG;AACzG,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,gGAAgG;AAChG,MAAM,IAAI,GAAG,GAAG,CAAC;AACjB;;;GAGG;AACH,MAAM,KAAK,GAAG,MAAM,CAAC;AAQrB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAuB,CAAC;AAElD,SAAS,SAAS,CAAC,GAAgB;IACjC,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QACvF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,WAAY,SAAQ,KAAK;IACpB,IAAI,CAAe;IAE5B,YAAY,IAAkB;QAC5B,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,0HAA0H;AAC1H,MAAM,gBAAgB,GAA2B,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AAE9N,SAAS,YAAY,CAAC,GAAa,EAAE,GAAgB,EAAE,IAAY;IACjE,MAAM,IAAI,GAAa,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACjF,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACjE,CAAC;AAED,MAAM,YAAY,GAAG,gDAAgD,CAAC;AACtE,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAkB,EAAE,GAAa,EAAE,IAAY,EAAE,GAAY,EAAE,KAA+B;IAChH,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAE,IAAY,EAAY,EAAE;QAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClD,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACjF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU;YAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACpD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,IAAI,OAAO,GAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,SAA+B,CAAC;QACpC,IAAI,UAAU,GAAgB,OAAO,CAAC;QACtC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,wFAAwF;YACxF,6FAA6F;YAC7F,oFAAoF;YACpF,MAAM,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC;YACpE,IAAI,KAAK,KAAK,EAAE,IAAI,SAAS;gBAAE,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAClF,KAAK,GAAG,EAAE,CAAC;QACb,CAAC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,MAAM;gBAAE,OAAO,GAAG,MAAM,CAAC;iBACxB,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,OAAO,CAAC;iBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC1C,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAW,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;gBAC7C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;gBACzB,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;YACpD,CAAC;YACD,yEAAyE;YACzE,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC;YACrC,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,YAAY,CAAC;gBAAE,KAAK,EAAE,CAAC;YAC5G,SAAS,GAAG,IAAI,CAAC;YACjB,UAAU,GAAG,OAAO,CAAC;YACrB,YAAY,GAAG,OAAO,CAAC;YACvB,KAAK,IAAI,IAAI,CAAC;QAChB,CAAC;QACD,KAAK,EAAE,CAAC;QACR,KAAK,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,IAAY,EAAU,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAc3H;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB,EAAE,KAAK,GAA4B,QAAQ,CAAC,KAAK;IAC9F,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IAC3G,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAU,EAAyB,EAAE;QACnE,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,qGAAqG;QACrG,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,OAAO,GAAG,CAAC,OAAmB,EAAE,IAAiB,EAAE,KAAc,EAAyB,EAAE;QAChG,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,iGAAiG;QACjG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAClI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxI,IAAI,OAAO;oBAAE,OAAO,OAAO,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC,CAAC;IAEF,6HAA6H;IAC7H,MAAM,GAAG,GAAG,CAAC,KAAgB,EAAE,UAAoB,EAAE,IAAuC,EAAE,GAAuB,EAAE,KAA+B,EAAE,KAAK,GAAG,CAAC,EAAQ,EAAE;QACzK,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QACtK,MAAM,IAAI,GAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACtH,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAmB,CAAC;YAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7C,IAAI,KAAK,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;YACzC,+FAA+F;YAC/F,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,KAAK,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACxH,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;YACzD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3E,uGAAuG;YACvG,wFAAwF;YACxF,yCAAyC;YACzC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,IAAY,EAAW,EAAE;gBACtD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAChE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,MAAM,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,MAAM,CAAC;YAC9E,CAAC,CAAC;YACF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9G,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACvE,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,KAAK,GAAG,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;YACxJ,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,wEAAwE;YACxE,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9I,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;YACvB,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAAc,EAAa,EAAE;QACzC,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;YAAE,MAAM,KAAK,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAwB,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QAC3E,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACzH,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,IAA6B,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,2FAA2F;YAC3F,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAC5J,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM;gBAAE,IAAI,GAAG,KAAK,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,qFAAqF;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;QACtF,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QACnJ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC;QACpB,MAAM,KAAK,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAEjD,6FAA6F;QAC7F,wFAAwF;QACxF,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,KAAqB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3G,OAAO,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/G,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YAClK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAClC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,yFAAyF;YACzF,kFAAkF;YAClF,wFAAwF;YACxF,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;YACrJ,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;gBACzG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC;wBACH,kFAAkF;wBAClF,iEAAiE;wBACjE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC9F,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;wBACvE,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvH,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/C,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAW,EAAE;gBAC3C,wFAAwF;gBACxF,4DAA4D;gBAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1G,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;gBACvE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACvG,OAAO;oBACL,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,UAAU,IAAI,KAAK;oBAC3C,KAAK;oBACL,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;oBAC/C,QAAQ;oBACR,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG;oBAC3C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;oBAClC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,IAAI;oBAChD,IAAI,EAAE,IAAI,CAAC,SAAS;oBACpB,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAmB,CAAC,CAAC;oBACrI,KAAK,EAAE,MAAM;oBACb,sGAAsG;oBACtG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,UAAU,EAAE,IAAI,CAAC,KAAK;oBACtB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,WAAW;oBACX,WAAW,EAAE,KAAK,CAAC,WAAW;iBAC/B,CAAC;YACJ,CAAC,CAAC;YAEF,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAmB,CAAC,CAAC;gBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClI,qGAAqG;gBACrG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;oBACrG,MAAM,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;oBAChC,IAAI,MAAM,CAAC,IAAI;wBAAE,MAAM;gBACzB,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,GAAG;QACH,YAAY;YACV,MAAM,MAAM,GAAG,IAAI,GAAG,CAAuB,OAAO,CAAC,CAAC;YACtD,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3G,CAAC;YACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7J,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,QAAQ,GAAuB,QAAQ,CAAC,QAAQ,CAAC,QAAQ;IACzG,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,GAAa,EAAE,EAAE;QAC9C,IAAI,QAAQ;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACrH,CAAC,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;gBAAE,SAAS;YACrF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;YACxF,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;gBAChD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5J,CAAC"}
@@ -0,0 +1,123 @@
1
+ import type { PptxPackage } from '../pptx/package.ts';
2
+ import type { RepeatDef } from '../template/manifest.ts';
3
+ /** A row of items laid out for a number of them: what decides how wide the row's text boxes are. */
4
+ export interface RowLayout {
5
+ /** Names the row among the patterns that use the slide, e.g. the pattern's id. */
6
+ key: string;
7
+ repeat: RepeatDef;
8
+ /** How many items the slide has. */
9
+ count: number;
10
+ /** The shapes of the row's text slots, as the renderer is told them. */
11
+ texts: ReadonlySet<string>;
12
+ }
13
+ /** A typeface as a run states it, with the theme font it came from when it named one. */
14
+ export interface Typeface {
15
+ /** The typeface name, or `''` when nothing states one. */
16
+ name: string;
17
+ /** Per-script typefaces of the theme font the run pointed at, for a script the name does not cover. */
18
+ scripts?: ReadonlyMap<string, string>;
19
+ }
20
+ export interface RunStyle {
21
+ /** Font size in points. */
22
+ size: number;
23
+ /** Whether the run itself states its size. A size that is only inherited is not rescaled by the renderer. */
24
+ ownSize: boolean;
25
+ bold: boolean;
26
+ italic: boolean;
27
+ latin: Typeface;
28
+ ea: Typeface;
29
+ cs: Typeface;
30
+ /** The size in points from which pairs of letters are kerned; 0 when they never are. */
31
+ kern: number;
32
+ /** Extra space after every character, in points. */
33
+ spacing: number;
34
+ /** Text is shown in capitals. */
35
+ caps: boolean;
36
+ /** The language the run is marked with, e.g. `he-IL`; `''` when nothing states one. */
37
+ lang: string;
38
+ }
39
+ /** A length in points, or a share of the line height. */
40
+ export type Spacing = {
41
+ points: number;
42
+ } | {
43
+ percent: number;
44
+ };
45
+ export interface ParagraphStyle {
46
+ /** Space kept free at the start side of every line, in points. */
47
+ marginStart: number;
48
+ marginEnd: number;
49
+ /** Shift of the first line against the others, in points; negative for a hanging bullet. */
50
+ indent: number;
51
+ bullet: boolean;
52
+ lineSpacing: Spacing;
53
+ before: Spacing;
54
+ after: Spacing;
55
+ run: RunStyle;
56
+ }
57
+ export interface TextFrame {
58
+ /** Size of the shape in points. */
59
+ width: number;
60
+ height: number;
61
+ insets: {
62
+ left: number;
63
+ right: number;
64
+ top: number;
65
+ bottom: number;
66
+ };
67
+ /** Whether lines wrap at the box's edge. */
68
+ wrap: boolean;
69
+ /** `shape`: the box grows with its text when edited in PowerPoint. `shrink`: PowerPoint shrinks the text. */
70
+ autofit: 'none' | 'shape' | 'shrink';
71
+ /** Factors a shrinking box already applies to its text: on the font size, and off the line spacing. */
72
+ fontScale: number;
73
+ lineReduction: number;
74
+ /** Text runs top to bottom, so the box's height is the length of a line. */
75
+ vertical: boolean;
76
+ columns: number;
77
+ /** One entry for each paragraph of the sample text, styled as the renderer will style new text. */
78
+ paragraphs: ParagraphStyle[];
79
+ /** The sample text, paragraph by paragraph. */
80
+ sample: string[];
81
+ /** The shape's outline is one whose text area is not known exactly, so the room is close but not exact. */
82
+ approximate: boolean;
83
+ }
84
+ /** Reads the text styling of a template's shapes. Parsed parts are kept, so asking again is cheap. */
85
+ export declare class TextStyles {
86
+ private readonly pkg;
87
+ private readonly pres;
88
+ private readonly defaults;
89
+ private readonly slides;
90
+ private readonly masters;
91
+ private readonly layouts;
92
+ private readonly frames;
93
+ private readonly rows;
94
+ constructor(pkg: PptxPackage);
95
+ get slideWidth(): number;
96
+ get slideHeight(): number;
97
+ /**
98
+ * The text frame of a shape on a template slide, or `undefined` when the shape is not there or
99
+ * holds no text. `box` is the shape's place in points when the caller knows it better than the
100
+ * shape's own transform does (a shape inside a scaled group).
101
+ */
102
+ frame(slideNumber: number, shapeId: string, styleRun?: 'first' | 'last', box?: {
103
+ width: number;
104
+ height: number;
105
+ }): TextFrame | undefined;
106
+ /**
107
+ * The text frame of a shape once the slide's row of items is laid out for a number of them.
108
+ * The renderer's own step is run on a copy of the slide, so the box is the one a deck gets: in
109
+ * a row that widens its items when it holds fewer, the text boxes are wider. `undefined` when
110
+ * the row cannot be laid out or the shape is not there.
111
+ */
112
+ rowFrame(slideNumber: number, shapeId: string, styleRun: 'first' | 'last', row: RowLayout): TextFrame | undefined;
113
+ /** The shapes of a slide after its row is laid out, on a copy that nothing else reads. */
114
+ private row;
115
+ private slide;
116
+ private layout;
117
+ private master;
118
+ /**
119
+ * `laidOut` is the shape on a copy of the slide whose row was laid out again: its size and the
120
+ * groups around it are read from there, and everything else is the same as on the template.
121
+ */
122
+ private read;
123
+ }
@@ -0,0 +1,417 @@
1
+ // How the text of a template shape is set: its typefaces, sizes, spacing and the room its box
2
+ // gives. Read from the shape and, where the shape is silent, from what it inherits: its layout
3
+ // and master placeholders, the master's text styles, the presentation's defaults and the theme.
4
+ import { isRelType, readRels, resolveTarget } from '../pptx/package.js';
5
+ import { readPresentation } from '../pptx/presentation.js';
6
+ import { NS, childElement, childElements, descendants, parseXml, path, rootElement } from '../pptx/xml.js';
7
+ import { applyRepeat } from '../render/repeat.js';
8
+ /** Maps `p:cNvPr/@id` to the shape element that owns it. */
9
+ function shapesById(root) {
10
+ const shapes = new Map();
11
+ for (const props of descendants(root, NS.p, 'cNvPr')) {
12
+ const shape = props.parentNode?.parentNode;
13
+ const id = props.getAttribute('id');
14
+ if (id && shape && shape.nodeType === 1)
15
+ shapes.set(id, shape);
16
+ }
17
+ return shapes;
18
+ }
19
+ const EMU = 12700;
20
+ const points = (value, fallback) => {
21
+ const number = Number(value);
22
+ return value !== null && value !== undefined && value !== '' && Number.isFinite(number) ? number / EMU : fallback;
23
+ };
24
+ const NO_THEME = { major: { name: '' }, minor: { name: '' }, majorEa: { name: '' }, minorEa: { name: '' }, majorCs: { name: '' }, minorCs: { name: '' } };
25
+ /** Reads the text styling of a template's shapes. Parsed parts are kept, so asking again is cheap. */
26
+ export class TextStyles {
27
+ pkg;
28
+ pres;
29
+ defaults;
30
+ slides = new Map();
31
+ masters = new Map();
32
+ layouts = new Map();
33
+ frames = new Map();
34
+ rows = new Map();
35
+ constructor(pkg) {
36
+ this.pkg = pkg;
37
+ this.pres = readPresentation(pkg);
38
+ this.defaults = childElement(rootElement(parseXml(pkg.readText(this.pres.part))), NS.p, 'defaultTextStyle');
39
+ }
40
+ get slideWidth() {
41
+ return this.pres.slideWidth / EMU;
42
+ }
43
+ get slideHeight() {
44
+ return this.pres.slideHeight / EMU;
45
+ }
46
+ /**
47
+ * The text frame of a shape on a template slide, or `undefined` when the shape is not there or
48
+ * holds no text. `box` is the shape's place in points when the caller knows it better than the
49
+ * shape's own transform does (a shape inside a scaled group).
50
+ */
51
+ frame(slideNumber, shapeId, styleRun = 'first', box) {
52
+ const key = `${slideNumber}|${shapeId}|${styleRun}|${box ? `${box.width}x${box.height}` : ''}`;
53
+ if (!this.frames.has(key))
54
+ this.frames.set(key, this.read(slideNumber, shapeId, styleRun, box));
55
+ return this.frames.get(key);
56
+ }
57
+ /**
58
+ * The text frame of a shape once the slide's row of items is laid out for a number of them.
59
+ * The renderer's own step is run on a copy of the slide, so the box is the one a deck gets: in
60
+ * a row that widens its items when it holds fewer, the text boxes are wider. `undefined` when
61
+ * the row cannot be laid out or the shape is not there.
62
+ */
63
+ rowFrame(slideNumber, shapeId, styleRun, row) {
64
+ const rowKey = `row|${slideNumber}|${row.key}|${row.count}`;
65
+ const key = `${rowKey}|${shapeId}|${styleRun}`;
66
+ if (!this.frames.has(key)) {
67
+ const shape = this.row(slideNumber, rowKey, row)?.get(shapeId);
68
+ this.frames.set(key, shape ? this.read(slideNumber, shapeId, styleRun, undefined, shape) : undefined);
69
+ }
70
+ return this.frames.get(key);
71
+ }
72
+ /** The shapes of a slide after its row is laid out, on a copy that nothing else reads. */
73
+ row(slideNumber, rowKey, row) {
74
+ if (this.rows.has(rowKey))
75
+ return this.rows.get(rowKey);
76
+ const ref = this.pres.slides[slideNumber - 1];
77
+ let shapes;
78
+ if (ref && this.pkg.has(ref.part)) {
79
+ const root = rootElement(parseXml(this.pkg.readText(ref.part)));
80
+ try {
81
+ applyRepeat(shapesById(root), row.repeat, row.count, this.pres.slideWidth, row.texts);
82
+ shapes = shapesById(root);
83
+ }
84
+ catch {
85
+ // A row that points at shapes the slide does not have is reported by `checkManifest`.
86
+ shapes = undefined;
87
+ }
88
+ }
89
+ this.rows.set(rowKey, shapes);
90
+ return shapes;
91
+ }
92
+ slide(number) {
93
+ if (this.slides.has(number))
94
+ return this.slides.get(number);
95
+ const ref = this.pres.slides[number - 1];
96
+ let part;
97
+ if (ref && this.pkg.has(ref.part)) {
98
+ const root = rootElement(parseXml(this.pkg.readText(ref.part)));
99
+ part = { root, shapes: shapesById(root) };
100
+ const layoutRel = readRels(this.pkg, ref.part).find((rel) => isRelType(rel, 'slideLayout'));
101
+ const layout = layoutRel ? this.layout(resolveTarget(ref.part, layoutRel.target)) : undefined;
102
+ if (layout) {
103
+ part.layout = layout.root;
104
+ if (layout.master)
105
+ part.master = layout.master;
106
+ }
107
+ }
108
+ this.slides.set(number, part);
109
+ return part;
110
+ }
111
+ layout(part) {
112
+ const known = this.layouts.get(part);
113
+ if (known)
114
+ return known;
115
+ if (!this.pkg.has(part))
116
+ return undefined;
117
+ const entry = { root: rootElement(parseXml(this.pkg.readText(part))) };
118
+ const masterRel = readRels(this.pkg, part).find((rel) => isRelType(rel, 'slideMaster'));
119
+ const master = masterRel ? this.master(resolveTarget(part, masterRel.target)) : undefined;
120
+ if (master)
121
+ entry.master = master;
122
+ this.layouts.set(part, entry);
123
+ return entry;
124
+ }
125
+ master(part) {
126
+ const known = this.masters.get(part);
127
+ if (known)
128
+ return known;
129
+ if (!this.pkg.has(part))
130
+ return undefined;
131
+ const themeRel = readRels(this.pkg, part).find((rel) => isRelType(rel, 'theme'));
132
+ const themePart = themeRel ? resolveTarget(part, themeRel.target) : '';
133
+ const entry = {
134
+ root: rootElement(parseXml(this.pkg.readText(part))),
135
+ theme: themePart && this.pkg.has(themePart) ? readTheme(rootElement(parseXml(this.pkg.readText(themePart)))) : NO_THEME,
136
+ };
137
+ this.masters.set(part, entry);
138
+ return entry;
139
+ }
140
+ /**
141
+ * `laidOut` is the shape on a copy of the slide whose row was laid out again: its size and the
142
+ * groups around it are read from there, and everything else is the same as on the template.
143
+ */
144
+ read(slideNumber, shapeId, styleRun, box, laidOut) {
145
+ const slide = this.slide(slideNumber);
146
+ const shape = laidOut ?? slide?.shapes.get(shapeId);
147
+ if (!slide || !shape || shape.localName !== 'sp')
148
+ return undefined;
149
+ const body = childElement(shape, NS.p, 'txBody');
150
+ if (!body)
151
+ return undefined;
152
+ const paragraphs = childElements(body, NS.a, 'p');
153
+ if (paragraphs.length === 0)
154
+ return undefined;
155
+ // A placeholder takes what it does not state from the same placeholder on its layout and master.
156
+ const placeholder = descendants(shape, NS.p, 'ph')[0];
157
+ const layoutShape = placeholder && slide.layout ? findPlaceholder(slide.layout, placeholder, false) : undefined;
158
+ const masterShape = placeholder && slide.master ? findPlaceholder(slide.master.root, layoutShape ? (descendants(layoutShape, NS.p, 'ph')[0] ?? placeholder) : placeholder, true) : undefined;
159
+ const inherited = [layoutShape, masterShape].filter((entry) => !!entry);
160
+ const lists = [];
161
+ for (const source of [shape, ...inherited]) {
162
+ const list = path(source, [NS.p, 'txBody'], [NS.a, 'lstStyle']);
163
+ if (list)
164
+ lists.push(list);
165
+ }
166
+ if (placeholder) {
167
+ const type = placeholder.getAttribute('type') ?? 'body';
168
+ const styles = slide.master ? childElement(slide.master.root, NS.p, 'txStyles') : undefined;
169
+ const name = type === 'title' || type === 'ctrTitle' ? 'titleStyle' : type === 'body' || type === 'subTitle' || type === 'obj' ? 'bodyStyle' : 'otherStyle';
170
+ const style = styles && childElement(styles, NS.p, name);
171
+ if (style)
172
+ lists.push(style);
173
+ }
174
+ if (this.defaults)
175
+ lists.push(this.defaults);
176
+ const theme = slide.master?.theme ?? NO_THEME;
177
+ const bodies = [shape, ...inherited].map((source) => path(source, [NS.p, 'txBody'], [NS.a, 'bodyPr'])).filter((entry) => !!entry);
178
+ const bodyAttr = (name) => {
179
+ for (const entry of bodies) {
180
+ const value = entry.getAttribute(name);
181
+ if (value !== null && value !== '')
182
+ return value;
183
+ }
184
+ return null;
185
+ };
186
+ const fit = bodies.map((entry) => childElements(entry, NS.a).find((child) => child.localName === 'normAutofit' || child.localName === 'spAutoFit' || child.localName === 'noAutofit')).find(Boolean);
187
+ let size = box;
188
+ if (!size) {
189
+ const ext = [shape, ...inherited].map((source) => path(source, [NS.p, 'spPr'], [NS.a, 'xfrm'], [NS.a, 'ext'])).find(Boolean);
190
+ size = { width: points(ext?.getAttribute('cx'), 0), height: points(ext?.getAttribute('cy'), 0) };
191
+ // A shape inside groups is drawn at the groups' scale: each maps its children's space onto its own extent.
192
+ for (let parent = shape.parentNode; parent && parent.nodeType === 1 && parent.localName === 'grpSp'; parent = parent.parentNode) {
193
+ const transform = path(parent, [NS.p, 'grpSpPr'], [NS.a, 'xfrm']);
194
+ const outer = transform && childElement(transform, NS.a, 'ext');
195
+ const inner = transform && childElement(transform, NS.a, 'chExt');
196
+ const scaleX = Number(outer?.getAttribute('cx')) / Number(inner?.getAttribute('cx'));
197
+ const scaleY = Number(outer?.getAttribute('cy')) / Number(inner?.getAttribute('cy'));
198
+ if (Number.isFinite(scaleX) && scaleX > 0)
199
+ size.width *= scaleX;
200
+ if (Number.isFinite(scaleY) && scaleY > 0)
201
+ size.height *= scaleY;
202
+ }
203
+ }
204
+ const vert = bodyAttr('vert');
205
+ // Text keeps clear of an outline that is not a rectangle: rounded corners, an ellipse.
206
+ const outline = [shape, ...inherited].map((source) => path(source, [NS.p, 'spPr'], [NS.a, 'prstGeom'])).find(Boolean);
207
+ const inside = textArea(outline, size.width, size.height);
208
+ const frame = {
209
+ width: size.width,
210
+ height: size.height,
211
+ insets: {
212
+ left: points(bodyAttr('lIns'), 7.2) + inside.x,
213
+ right: points(bodyAttr('rIns'), 7.2) + inside.x,
214
+ top: points(bodyAttr('tIns'), 3.6) + inside.y,
215
+ bottom: points(bodyAttr('bIns'), 3.6) + inside.y,
216
+ },
217
+ wrap: bodyAttr('wrap') !== 'none',
218
+ autofit: fit?.localName === 'normAutofit' ? 'shrink' : fit?.localName === 'spAutoFit' ? 'shape' : 'none',
219
+ fontScale: fit?.localName === 'normAutofit' ? Number(fit.getAttribute('fontScale') ?? 100000) / 100000 : 1,
220
+ lineReduction: fit?.localName === 'normAutofit' ? Number(fit.getAttribute('lnSpcReduction') ?? 0) / 100000 : 0,
221
+ vertical: vert !== null && vert !== 'horz',
222
+ columns: Math.max(1, Number(bodyAttr('numCol') ?? 1) || 1),
223
+ paragraphs: paragraphs.map((paragraph) => readParagraph(paragraph, styleRun, lists, theme)),
224
+ sample: paragraphs.map((paragraph) => descendants(paragraph, NS.a, 't')
225
+ .map((text) => text.textContent ?? '')
226
+ .join('')),
227
+ approximate: !inside.exact,
228
+ };
229
+ // Vertical text and text in columns are laid out in the box turned or divided, which is close.
230
+ if (frame.vertical || frame.columns > 1)
231
+ frame.approximate = true;
232
+ return frame;
233
+ }
234
+ }
235
+ /** Shapes whose text area is the whole of their box. */
236
+ const RECTANGULAR = new Set(['rect', 'flowChartProcess', 'actionButtonBlank', 'wedgeRectCallout', 'bracketPair', 'bracePair', 'frame', 'line']);
237
+ /** One minus the cosine of 45 degrees: how far a quarter circle of radius 1 keeps a square corner out. */
238
+ const CORNER = 0.29289;
239
+ /**
240
+ * How far a preset outline keeps text from the sides of the shape's box, in points on each side.
241
+ * The common outlines are worked out as PowerPoint defines them; for the rest the whole box is
242
+ * taken and the answer is marked as not exact.
243
+ */
244
+ function textArea(outline, width, height) {
245
+ const preset = outline?.getAttribute('prst') ?? 'rect';
246
+ if (RECTANGULAR.has(preset))
247
+ return { x: 0, y: 0, exact: true };
248
+ const guides = new Map();
249
+ for (const guide of outline ? descendants(outline, NS.a, 'gd') : []) {
250
+ const value = /^val\s+(-?\d+)/.exec(guide.getAttribute('fmla') ?? '');
251
+ if (value)
252
+ guides.set(guide.getAttribute('name') ?? '', Number(value[1]));
253
+ }
254
+ const short = Math.min(width, height);
255
+ const adjust = (name, fallback, most = 50000) => (Math.min(most, Math.max(0, guides.get(name) ?? fallback)) / 100000) * short;
256
+ switch (preset) {
257
+ case 'roundRect': {
258
+ const inset = adjust('adj', 16667) * CORNER;
259
+ return { x: inset, y: inset, exact: true };
260
+ }
261
+ case 'round2SameRect':
262
+ case 'round2DiagRect':
263
+ case 'round1Rect':
264
+ case 'snipRoundRect': {
265
+ const inset = Math.max(adjust('adj1', 16667), adjust('adj2', 0)) * CORNER;
266
+ return { x: inset, y: preset === 'round2SameRect' ? 0 : inset, exact: preset === 'round2DiagRect' };
267
+ }
268
+ case 'snip1Rect':
269
+ case 'snip2SameRect':
270
+ case 'snip2DiagRect': {
271
+ const inset = Math.max(adjust('adj1', 16667), adjust('adj2', 0)) / 2;
272
+ return { x: inset, y: preset === 'snip2DiagRect' ? inset : 0, exact: false };
273
+ }
274
+ case 'ellipse':
275
+ case 'flowChartConnector':
276
+ return { x: (width * CORNER) / 2, y: (height * CORNER) / 2, exact: true };
277
+ case 'diamond':
278
+ case 'flowChartDecision':
279
+ return { x: width / 4, y: height / 4, exact: true };
280
+ default:
281
+ return { x: 0, y: 0, exact: false };
282
+ }
283
+ }
284
+ /** The placeholder on a layout or master that a slide's placeholder stands for. */
285
+ function findPlaceholder(root, wanted, onMaster) {
286
+ const type = wanted.getAttribute('type') ?? (wanted.getAttribute('idx') ? 'body' : 'obj');
287
+ const index = wanted.getAttribute('idx');
288
+ const tree = path(root, [NS.p, 'cSld'], [NS.p, 'spTree']);
289
+ if (!tree)
290
+ return undefined;
291
+ const candidates = descendants(tree, NS.p, 'ph');
292
+ const shapeOf = (ph) => {
293
+ const shape = ph?.parentNode?.parentNode?.parentNode;
294
+ return shape && shape.nodeType === 1 ? shape : undefined;
295
+ };
296
+ // A master has one placeholder of each kind: centred titles and subtitles stand for its title and body.
297
+ const family = (name) => (name === 'ctrTitle' ? 'title' : name === 'subTitle' || name === 'obj' ? 'body' : name);
298
+ if (!onMaster && index !== null) {
299
+ const byIndex = candidates.find((ph) => ph.getAttribute('idx') === index);
300
+ if (byIndex)
301
+ return shapeOf(byIndex);
302
+ }
303
+ const byType = candidates.find((ph) => (ph.getAttribute('type') ?? 'obj') === type) ?? candidates.find((ph) => family(ph.getAttribute('type') ?? 'obj') === family(type));
304
+ return shapeOf(byType);
305
+ }
306
+ function readTheme(root) {
307
+ const scheme = descendants(root, NS.a, 'fontScheme')[0];
308
+ const read = (group, face) => {
309
+ const fonts = scheme && childElement(scheme, NS.a, group);
310
+ if (!fonts)
311
+ return { name: '' };
312
+ const scripts = new Map();
313
+ for (const font of childElements(fonts, NS.a, 'font')) {
314
+ const script = font.getAttribute('script');
315
+ const typeface = font.getAttribute('typeface');
316
+ if (script && typeface)
317
+ scripts.set(script, typeface);
318
+ }
319
+ return { name: childElement(fonts, NS.a, face)?.getAttribute('typeface') ?? '', scripts };
320
+ };
321
+ return {
322
+ major: read('majorFont', 'latin'),
323
+ minor: read('minorFont', 'latin'),
324
+ majorEa: read('majorFont', 'ea'),
325
+ minorEa: read('minorFont', 'ea'),
326
+ majorCs: read('majorFont', 'cs'),
327
+ minorCs: read('minorFont', 'cs'),
328
+ };
329
+ }
330
+ function readSpacing(element, fallback) {
331
+ const percent = element && childElement(element, NS.a, 'spcPct');
332
+ if (percent)
333
+ return { percent: Number(percent.getAttribute('val') ?? 100000) / 100000 };
334
+ const fixed = element && childElement(element, NS.a, 'spcPts');
335
+ if (fixed)
336
+ return { points: Number(fixed.getAttribute('val') ?? 0) / 100 };
337
+ return fallback;
338
+ }
339
+ function readParagraph(paragraph, styleRun, lists, theme) {
340
+ const own = childElement(paragraph, NS.a, 'pPr');
341
+ const level = Math.min(8, Math.max(0, Number(own?.getAttribute('lvl') ?? 0) || 0));
342
+ const levels = lists.map((list) => childElement(list, NS.a, `lvl${level + 1}pPr`)).filter((entry) => !!entry);
343
+ const paragraphSources = own ? [own, ...levels] : levels;
344
+ const attr = (name) => {
345
+ for (const source of paragraphSources) {
346
+ const value = source.getAttribute(name);
347
+ if (value !== null && value !== '')
348
+ return value;
349
+ }
350
+ return null;
351
+ };
352
+ const child = (name) => {
353
+ for (const source of paragraphSources) {
354
+ const found = childElement(source, NS.a, name);
355
+ if (found)
356
+ return found;
357
+ }
358
+ return undefined;
359
+ };
360
+ const bullet = paragraphSources.map((source) => childElements(source, NS.a).find((entry) => /^bu(None|Char|AutoNum|Blip)$/.test(entry.localName ?? ''))).find(Boolean);
361
+ // The renderer keeps one run of the template paragraph for its formatting; a paragraph that
362
+ // was empty in the template is formatted by its end-of-paragraph properties.
363
+ const runs = childElements(paragraph, NS.a, 'r');
364
+ const run = styleRun === 'last' ? runs[runs.length - 1] : runs[0];
365
+ const ownRun = run ? childElement(run, NS.a, 'rPr') : childElement(paragraph, NS.a, 'endParaRPr');
366
+ const runSources = [ownRun, ...levels.map((entry) => childElement(entry, NS.a, 'defRPr'))].filter((entry) => !!entry);
367
+ const runAttr = (name) => {
368
+ for (const source of runSources) {
369
+ const value = source.getAttribute(name);
370
+ if (value !== null && value !== '')
371
+ return value;
372
+ }
373
+ return null;
374
+ };
375
+ const typeface = (name) => {
376
+ for (const source of runSources) {
377
+ const stated = childElement(source, NS.a, name)?.getAttribute('typeface');
378
+ if (stated === null || stated === undefined)
379
+ continue;
380
+ const themed = /^\+(mj|mn)-(lt|ea|cs)$/.exec(stated);
381
+ if (!themed)
382
+ return { name: stated };
383
+ const major = themed[1] === 'mj';
384
+ if (themed[2] === 'lt')
385
+ return major ? theme.major : theme.minor;
386
+ if (themed[2] === 'ea')
387
+ return major ? theme.majorEa : theme.minorEa;
388
+ return major ? theme.majorCs : theme.minorCs;
389
+ }
390
+ // Text that names no typeface anywhere is set in the theme's body font.
391
+ return name === 'latin' ? theme.minor : name === 'ea' ? theme.minorEa : theme.minorCs;
392
+ };
393
+ const size = Number(runAttr('sz') ?? 1800) / 100;
394
+ return {
395
+ marginStart: points(attr('marL'), 0),
396
+ marginEnd: points(attr('marR'), 0),
397
+ indent: points(attr('indent'), 0),
398
+ bullet: !!bullet && bullet.localName !== 'buNone',
399
+ lineSpacing: readSpacing(child('lnSpc'), { percent: 1 }),
400
+ before: readSpacing(child('spcBef'), { points: 0 }),
401
+ after: readSpacing(child('spcAft'), { points: 0 }),
402
+ run: {
403
+ size: size > 0 ? size : 18,
404
+ ownSize: !!ownRun?.getAttribute('sz'),
405
+ bold: runAttr('b') === '1' || runAttr('b') === 'true',
406
+ italic: runAttr('i') === '1' || runAttr('i') === 'true',
407
+ latin: typeface('latin'),
408
+ ea: typeface('ea'),
409
+ cs: typeface('cs'),
410
+ kern: Number(runAttr('kern') ?? 0) / 100,
411
+ spacing: Number(runAttr('spc') ?? 0) / 100,
412
+ caps: runAttr('cap') === 'all',
413
+ lang: runAttr('lang') ?? lists.map((list) => path(list, [NS.a, 'defPPr'], [NS.a, 'defRPr'])?.getAttribute('lang')).find(Boolean) ?? '',
414
+ },
415
+ };
416
+ }
417
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/text/styles.ts"],"names":[],"mappings":"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"}