base-paint 0.3.15 → 0.3.16

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 (841) hide show
  1. package/README.md +23 -6
  2. package/dist/charts.js +1 -0
  3. package/dist/components/bulk-bar/attrs.js +1 -0
  4. package/dist/components/bulk-bar/index.js +1 -0
  5. package/dist/components/bulk-bar/keys.d.ts +23 -0
  6. package/dist/components/bulk-bar/keys.d.ts.map +1 -0
  7. package/dist/components/bulk-bar/keys.js +55 -0
  8. package/dist/components/bulk-bar/keys.js.map +1 -0
  9. package/dist/components/bulk-bar/model.d.ts.map +1 -1
  10. package/dist/components/bulk-bar/model.js +10 -0
  11. package/dist/components/bulk-bar/model.js.map +1 -1
  12. package/dist/components/bulk-bar/render.js +1 -0
  13. package/dist/components/bulk-bar/runtime.js +1 -0
  14. package/dist/components/bulk-bar/style-column.js +1 -0
  15. package/dist/components/bulk-bar/style-confirm.js +1 -0
  16. package/dist/components/bulk-bar/style-sizes.js +1 -0
  17. package/dist/components/bulk-bar/style.js +1 -0
  18. package/dist/components/calendar-month/attrs.js +1 -0
  19. package/dist/components/calendar-month/index.js +1 -0
  20. package/dist/components/calendar-month/model.js +1 -0
  21. package/dist/components/calendar-month/render.js +1 -0
  22. package/dist/components/calendar-month/style.js +1 -0
  23. package/dist/components/cash-waterline/attrs.js +1 -0
  24. package/dist/components/cash-waterline/fields.d.ts +17 -0
  25. package/dist/components/cash-waterline/fields.d.ts.map +1 -1
  26. package/dist/components/cash-waterline/fields.js +41 -0
  27. package/dist/components/cash-waterline/fields.js.map +1 -1
  28. package/dist/components/cash-waterline/index.js +1 -0
  29. package/dist/components/cash-waterline/model.d.ts.map +1 -1
  30. package/dist/components/cash-waterline/model.js +3 -1
  31. package/dist/components/cash-waterline/model.js.map +1 -1
  32. package/dist/components/cash-waterline/render.js +1 -0
  33. package/dist/components/cash-waterline/style-forms.js +1 -0
  34. package/dist/components/cash-waterline/style.js +1 -0
  35. package/dist/components/charts/bar.js +1 -0
  36. package/dist/components/charts/combo.js +1 -0
  37. package/dist/components/charts/coords.js +1 -0
  38. package/dist/components/charts/dispatch.js +1 -0
  39. package/dist/components/charts/donut.js +1 -0
  40. package/dist/components/charts/gauge.js +1 -0
  41. package/dist/components/charts/helpers.js +1 -0
  42. package/dist/components/charts/index.js +1 -0
  43. package/dist/components/charts/line.js +1 -0
  44. package/dist/components/charts/options.js +1 -0
  45. package/dist/components/charts/progress.js +1 -0
  46. package/dist/components/charts/scatter.js +1 -0
  47. package/dist/components/charts/shared.js +1 -0
  48. package/dist/components/charts/sparkline.js +1 -0
  49. package/dist/components/charts/style.d.ts.map +1 -1
  50. package/dist/components/charts/style.js +5 -1
  51. package/dist/components/charts/style.js.map +1 -1
  52. package/dist/components/charts/svg.js +1 -0
  53. package/dist/components/command-palette/attrs.js +1 -0
  54. package/dist/components/command-palette/index.js +1 -0
  55. package/dist/components/command-palette/model.js +1 -0
  56. package/dist/components/command-palette/render.js +1 -0
  57. package/dist/components/command-palette/runtime.js +1 -0
  58. package/dist/components/command-palette/style.js +1 -0
  59. package/dist/components/compare-columns/attrs.js +1 -0
  60. package/dist/components/compare-columns/index.js +1 -0
  61. package/dist/components/compare-columns/model.js +1 -0
  62. package/dist/components/compare-columns/render.js +1 -0
  63. package/dist/components/compare-columns/style.js +1 -0
  64. package/dist/components/confirm-strip/attrs.js +1 -0
  65. package/dist/components/confirm-strip/index.js +1 -0
  66. package/dist/components/confirm-strip/model.js +1 -0
  67. package/dist/components/confirm-strip/render.js +1 -0
  68. package/dist/components/confirm-strip/runtime.js +1 -0
  69. package/dist/components/confirm-strip/style.js +1 -0
  70. package/dist/components/controls/action-bar.js +1 -0
  71. package/dist/components/controls/bind.js +1 -0
  72. package/dist/components/controls/copy.js +1 -0
  73. package/dist/components/controls/helpers-meta.js +1 -0
  74. package/dist/components/controls/helpers.js +1 -0
  75. package/dist/components/controls/index.js +1 -0
  76. package/dist/components/controls/shared.js +1 -0
  77. package/dist/components/controls/status.js +1 -0
  78. package/dist/components/controls/toast.js +1 -0
  79. package/dist/components/date-range/attrs.d.ts +11 -2
  80. package/dist/components/date-range/attrs.d.ts.map +1 -1
  81. package/dist/components/date-range/attrs.js +12 -2
  82. package/dist/components/date-range/attrs.js.map +1 -1
  83. package/dist/components/date-range/index.js +1 -0
  84. package/dist/components/date-range/model.js +1 -0
  85. package/dist/components/date-range/render.js +1 -0
  86. package/dist/components/date-range/runtime.js +1 -0
  87. package/dist/components/date-range/style-calendar.d.ts.map +1 -1
  88. package/dist/components/date-range/style-calendar.js +24 -6
  89. package/dist/components/date-range/style-calendar.js.map +1 -1
  90. package/dist/components/date-range/style.d.ts.map +1 -1
  91. package/dist/components/date-range/style.js +8 -5
  92. package/dist/components/date-range/style.js.map +1 -1
  93. package/dist/components/dialog/attrs.js +1 -0
  94. package/dist/components/dialog/index.js +1 -0
  95. package/dist/components/dialog/model.js +1 -0
  96. package/dist/components/dialog/render.js +1 -0
  97. package/dist/components/dialog/runtime.js +1 -0
  98. package/dist/components/dialog/style.js +1 -0
  99. package/dist/components/drag-sort/attrs.d.ts +182 -0
  100. package/dist/components/drag-sort/attrs.d.ts.map +1 -0
  101. package/dist/components/drag-sort/attrs.js +204 -0
  102. package/dist/components/drag-sort/attrs.js.map +1 -0
  103. package/dist/components/drag-sort/index.d.ts +22 -0
  104. package/dist/components/drag-sort/index.d.ts.map +1 -0
  105. package/dist/components/drag-sort/index.js +21 -0
  106. package/dist/components/drag-sort/index.js.map +1 -0
  107. package/dist/components/drag-sort/model.d.ts +46 -0
  108. package/dist/components/drag-sort/model.d.ts.map +1 -0
  109. package/dist/components/drag-sort/model.js +200 -0
  110. package/dist/components/drag-sort/model.js.map +1 -0
  111. package/dist/components/drag-sort/render.d.ts +3 -0
  112. package/dist/components/drag-sort/render.d.ts.map +1 -0
  113. package/dist/components/drag-sort/render.js +182 -0
  114. package/dist/components/drag-sort/render.js.map +1 -0
  115. package/dist/components/drag-sort/runtime-buttons.d.ts +27 -0
  116. package/dist/components/drag-sort/runtime-buttons.d.ts.map +1 -0
  117. package/dist/components/drag-sort/runtime-buttons.js +139 -0
  118. package/dist/components/drag-sort/runtime-buttons.js.map +1 -0
  119. package/dist/components/drag-sort/runtime-lift.d.ts +16 -0
  120. package/dist/components/drag-sort/runtime-lift.d.ts.map +1 -0
  121. package/dist/components/drag-sort/runtime-lift.js +74 -0
  122. package/dist/components/drag-sort/runtime-lift.js.map +1 -0
  123. package/dist/components/drag-sort/runtime-prelude.d.ts +18 -0
  124. package/dist/components/drag-sort/runtime-prelude.d.ts.map +1 -0
  125. package/dist/components/drag-sort/runtime-prelude.js +168 -0
  126. package/dist/components/drag-sort/runtime-prelude.js.map +1 -0
  127. package/dist/components/drag-sort/runtime-text.d.ts +58 -0
  128. package/dist/components/drag-sort/runtime-text.d.ts.map +1 -0
  129. package/dist/components/drag-sort/runtime-text.js +81 -0
  130. package/dist/components/drag-sort/runtime-text.js.map +1 -0
  131. package/dist/components/drag-sort/runtime.d.ts +9 -0
  132. package/dist/components/drag-sort/runtime.d.ts.map +1 -0
  133. package/dist/components/drag-sort/runtime.js +181 -0
  134. package/dist/components/drag-sort/runtime.js.map +1 -0
  135. package/dist/components/drag-sort/style-forms.d.ts +5 -0
  136. package/dist/components/drag-sort/style-forms.d.ts.map +1 -0
  137. package/dist/components/drag-sort/style-forms.js +135 -0
  138. package/dist/components/drag-sort/style-forms.js.map +1 -0
  139. package/dist/components/drag-sort/style.d.ts +5 -0
  140. package/dist/components/drag-sort/style.d.ts.map +1 -0
  141. package/dist/components/drag-sort/style.js +304 -0
  142. package/dist/components/drag-sort/style.js.map +1 -0
  143. package/dist/components/drawer-sheet/attrs.js +1 -0
  144. package/dist/components/drawer-sheet/index.js +1 -0
  145. package/dist/components/drawer-sheet/model.js +1 -0
  146. package/dist/components/drawer-sheet/render.js +1 -0
  147. package/dist/components/drawer-sheet/runtime.js +1 -0
  148. package/dist/components/drawer-sheet/style.js +1 -0
  149. package/dist/components/due-row/attrs.js +1 -0
  150. package/dist/components/due-row/index.js +1 -0
  151. package/dist/components/due-row/model.js +1 -0
  152. package/dist/components/due-row/render.js +1 -0
  153. package/dist/components/due-row/runtime.js +1 -0
  154. package/dist/components/due-row/style.js +1 -0
  155. package/dist/components/editable-value/attrs.d.ts +2 -2
  156. package/dist/components/editable-value/attrs.d.ts.map +1 -1
  157. package/dist/components/editable-value/attrs.js +3 -2
  158. package/dist/components/editable-value/attrs.js.map +1 -1
  159. package/dist/components/editable-value/index.js +1 -0
  160. package/dist/components/editable-value/render.d.ts.map +1 -1
  161. package/dist/components/editable-value/render.js +40 -0
  162. package/dist/components/editable-value/render.js.map +1 -1
  163. package/dist/components/editable-value/runtime.d.ts.map +1 -1
  164. package/dist/components/editable-value/runtime.js +15 -5
  165. package/dist/components/editable-value/runtime.js.map +1 -1
  166. package/dist/components/editable-value/style.js +1 -0
  167. package/dist/components/entry-rows/index.js +1 -0
  168. package/dist/components/entry-rows/render.js +1 -0
  169. package/dist/components/entry-rows/style.js +1 -0
  170. package/dist/components/filter-chips/attrs.js +1 -0
  171. package/dist/components/filter-chips/index.js +1 -0
  172. package/dist/components/filter-chips/model.js +1 -0
  173. package/dist/components/filter-chips/render.js +1 -0
  174. package/dist/components/filter-chips/runtime.js +1 -0
  175. package/dist/components/filter-chips/style.js +1 -0
  176. package/dist/components/flow-ribbon/fields.d.ts +8 -1
  177. package/dist/components/flow-ribbon/fields.d.ts.map +1 -1
  178. package/dist/components/flow-ribbon/fields.js +39 -3
  179. package/dist/components/flow-ribbon/fields.js.map +1 -1
  180. package/dist/components/flow-ribbon/forms-rails.d.ts +26 -0
  181. package/dist/components/flow-ribbon/forms-rails.d.ts.map +1 -0
  182. package/dist/components/flow-ribbon/forms-rails.js +63 -0
  183. package/dist/components/flow-ribbon/forms-rails.js.map +1 -0
  184. package/dist/components/flow-ribbon/forms.d.ts +6 -25
  185. package/dist/components/flow-ribbon/forms.d.ts.map +1 -1
  186. package/dist/components/flow-ribbon/forms.js +11 -49
  187. package/dist/components/flow-ribbon/forms.js.map +1 -1
  188. package/dist/components/flow-ribbon/model.d.ts.map +1 -1
  189. package/dist/components/flow-ribbon/model.js +2 -1
  190. package/dist/components/flow-ribbon/model.js.map +1 -1
  191. package/dist/components/gantt-timeline/attrs.js +1 -0
  192. package/dist/components/gantt-timeline/index.js +1 -0
  193. package/dist/components/gantt-timeline/layout.js +1 -0
  194. package/dist/components/gantt-timeline/model.d.ts.map +1 -1
  195. package/dist/components/gantt-timeline/model.js +51 -0
  196. package/dist/components/gantt-timeline/model.js.map +1 -1
  197. package/dist/components/gantt-timeline/render.js +1 -0
  198. package/dist/components/gantt-timeline/scale.js +1 -0
  199. package/dist/components/gantt-timeline/style-marks.js +1 -0
  200. package/dist/components/gantt-timeline/style.js +1 -0
  201. package/dist/components/gap-band/attrs.d.ts +77 -0
  202. package/dist/components/gap-band/attrs.d.ts.map +1 -0
  203. package/dist/components/gap-band/attrs.js +113 -0
  204. package/dist/components/gap-band/attrs.js.map +1 -0
  205. package/dist/components/gap-band/forms.d.ts +117 -0
  206. package/dist/components/gap-band/forms.d.ts.map +1 -0
  207. package/dist/components/gap-band/forms.js +172 -0
  208. package/dist/components/gap-band/forms.js.map +1 -0
  209. package/dist/components/gap-band/index.d.ts +16 -0
  210. package/dist/components/gap-band/index.d.ts.map +1 -0
  211. package/dist/components/gap-band/index.js +15 -0
  212. package/dist/components/gap-band/index.js.map +1 -0
  213. package/dist/components/gap-band/model.d.ts +5 -0
  214. package/dist/components/gap-band/model.d.ts.map +1 -0
  215. package/dist/components/gap-band/model.js +116 -0
  216. package/dist/components/gap-band/model.js.map +1 -0
  217. package/dist/components/gap-band/render.d.ts +3 -0
  218. package/dist/components/gap-band/render.d.ts.map +1 -0
  219. package/dist/components/gap-band/render.js +142 -0
  220. package/dist/components/gap-band/render.js.map +1 -0
  221. package/dist/components/gap-band/scale.d.ts +45 -0
  222. package/dist/components/gap-band/scale.d.ts.map +1 -0
  223. package/dist/components/gap-band/scale.js +163 -0
  224. package/dist/components/gap-band/scale.js.map +1 -0
  225. package/dist/components/gap-band/style-forms.d.ts +10 -0
  226. package/dist/components/gap-band/style-forms.d.ts.map +1 -0
  227. package/dist/components/gap-band/style-forms.js +244 -0
  228. package/dist/components/gap-band/style-forms.js.map +1 -0
  229. package/dist/components/gap-band/style.d.ts +9 -0
  230. package/dist/components/gap-band/style.d.ts.map +1 -0
  231. package/dist/components/gap-band/style.js +334 -0
  232. package/dist/components/gap-band/style.js.map +1 -0
  233. package/dist/components/goal-stairs/attrs.js +1 -0
  234. package/dist/components/goal-stairs/index.js +1 -0
  235. package/dist/components/goal-stairs/model.d.ts.map +1 -1
  236. package/dist/components/goal-stairs/model.js +31 -0
  237. package/dist/components/goal-stairs/model.js.map +1 -1
  238. package/dist/components/goal-stairs/render.js +1 -0
  239. package/dist/components/goal-stairs/style.js +1 -0
  240. package/dist/components/heat-grid/attrs.js +1 -0
  241. package/dist/components/heat-grid/index.js +1 -0
  242. package/dist/components/heat-grid/model.js +1 -0
  243. package/dist/components/heat-grid/render.js +1 -0
  244. package/dist/components/heat-grid/style.js +1 -0
  245. package/dist/components/help/index.js +1 -0
  246. package/dist/components/help/render.d.ts.map +1 -1
  247. package/dist/components/help/render.js +12 -2
  248. package/dist/components/help/render.js.map +1 -1
  249. package/dist/components/help/schema.js +1 -0
  250. package/dist/components/help/shared.js +1 -0
  251. package/dist/components/help/shell.js +1 -0
  252. package/dist/components/help/template.js +1 -0
  253. package/dist/components/hour-band/attrs.js +1 -0
  254. package/dist/components/hour-band/index.js +1 -0
  255. package/dist/components/hour-band/model.js +1 -0
  256. package/dist/components/hour-band/render.js +1 -0
  257. package/dist/components/hour-band/style.js +1 -0
  258. package/dist/components/index.d.ts +7 -0
  259. package/dist/components/index.d.ts.map +1 -1
  260. package/dist/components/index.js +53 -0
  261. package/dist/components/index.js.map +1 -1
  262. package/dist/components/invoice-lines/attrs.js +1 -0
  263. package/dist/components/invoice-lines/index.js +1 -0
  264. package/dist/components/invoice-lines/model.js +1 -0
  265. package/dist/components/invoice-lines/render.js +1 -0
  266. package/dist/components/invoice-lines/style.js +1 -0
  267. package/dist/components/kanban-columns/attrs.d.ts +213 -0
  268. package/dist/components/kanban-columns/attrs.d.ts.map +1 -0
  269. package/dist/components/kanban-columns/attrs.js +242 -0
  270. package/dist/components/kanban-columns/attrs.js.map +1 -0
  271. package/dist/components/kanban-columns/index.d.ts +21 -0
  272. package/dist/components/kanban-columns/index.d.ts.map +1 -0
  273. package/dist/components/kanban-columns/index.js +20 -0
  274. package/dist/components/kanban-columns/index.js.map +1 -0
  275. package/dist/components/kanban-columns/model.d.ts +63 -0
  276. package/dist/components/kanban-columns/model.d.ts.map +1 -0
  277. package/dist/components/kanban-columns/model.js +251 -0
  278. package/dist/components/kanban-columns/model.js.map +1 -0
  279. package/dist/components/kanban-columns/render.d.ts +3 -0
  280. package/dist/components/kanban-columns/render.d.ts.map +1 -0
  281. package/dist/components/kanban-columns/render.js +209 -0
  282. package/dist/components/kanban-columns/render.js.map +1 -0
  283. package/dist/components/kanban-columns/runtime.d.ts +3 -0
  284. package/dist/components/kanban-columns/runtime.d.ts.map +1 -0
  285. package/dist/components/kanban-columns/runtime.js +228 -0
  286. package/dist/components/kanban-columns/runtime.js.map +1 -0
  287. package/dist/components/kanban-columns/style-grouped.d.ts +5 -0
  288. package/dist/components/kanban-columns/style-grouped.d.ts.map +1 -0
  289. package/dist/components/kanban-columns/style-grouped.js +145 -0
  290. package/dist/components/kanban-columns/style-grouped.js.map +1 -0
  291. package/dist/components/kanban-columns/style-narrow.d.ts +5 -0
  292. package/dist/components/kanban-columns/style-narrow.d.ts.map +1 -0
  293. package/dist/components/kanban-columns/style-narrow.js +49 -0
  294. package/dist/components/kanban-columns/style-narrow.js.map +1 -0
  295. package/dist/components/kanban-columns/style.d.ts +5 -0
  296. package/dist/components/kanban-columns/style.d.ts.map +1 -0
  297. package/dist/components/kanban-columns/style.js +328 -0
  298. package/dist/components/kanban-columns/style.js.map +1 -0
  299. package/dist/components/key-value-list/attrs.js +1 -0
  300. package/dist/components/key-value-list/index.js +1 -0
  301. package/dist/components/key-value-list/model.js +1 -0
  302. package/dist/components/key-value-list/render.js +1 -0
  303. package/dist/components/key-value-list/style.js +1 -0
  304. package/dist/components/ledger-rows/index.js +1 -0
  305. package/dist/components/ledger-rows/render.js +1 -0
  306. package/dist/components/ledger-rows/style.js +1 -0
  307. package/dist/components/multi-checks/attrs.js +1 -0
  308. package/dist/components/multi-checks/index.js +1 -0
  309. package/dist/components/multi-checks/model.js +1 -0
  310. package/dist/components/multi-checks/render.js +1 -0
  311. package/dist/components/multi-checks/runtime.js +1 -0
  312. package/dist/components/multi-checks/style.js +1 -0
  313. package/dist/components/note-block/attrs.js +1 -0
  314. package/dist/components/note-block/index.js +1 -0
  315. package/dist/components/note-block/model.js +1 -0
  316. package/dist/components/note-block/render.js +1 -0
  317. package/dist/components/note-block/style.js +1 -0
  318. package/dist/components/number-stepper/attrs.js +1 -0
  319. package/dist/components/number-stepper/index.js +1 -0
  320. package/dist/components/number-stepper/model.js +1 -0
  321. package/dist/components/number-stepper/render.js +1 -0
  322. package/dist/components/number-stepper/runtime.js +1 -0
  323. package/dist/components/number-stepper/style.js +1 -0
  324. package/dist/components/page/fact-strip.js +1 -0
  325. package/dist/components/page/index.js +1 -0
  326. package/dist/components/page/media.js +1 -0
  327. package/dist/components/page/shared.js +1 -0
  328. package/dist/components/page/style.js +1 -0
  329. package/dist/components/page/timeline.js +1 -0
  330. package/dist/components/page-bars/index.js +1 -0
  331. package/dist/components/page-bars/style.js +1 -0
  332. package/dist/components/page-head/attrs.js +1 -0
  333. package/dist/components/page-head/index.js +1 -0
  334. package/dist/components/page-head/model.js +1 -0
  335. package/dist/components/page-head/render.js +1 -0
  336. package/dist/components/page-head/style.js +1 -0
  337. package/dist/components/page-nav/index.js +1 -0
  338. package/dist/components/page-nav/style.js +1 -0
  339. package/dist/components/page-ui/index.js +1 -0
  340. package/dist/components/page-ui/toast.js +1 -0
  341. package/dist/components/photo-compare/attrs.js +1 -0
  342. package/dist/components/photo-compare/index.js +1 -0
  343. package/dist/components/photo-compare/model.js +1 -0
  344. package/dist/components/photo-compare/render.js +1 -0
  345. package/dist/components/photo-compare/runtime.js +1 -0
  346. package/dist/components/photo-compare/style.js +1 -0
  347. package/dist/components/photo-grid/attrs.js +1 -0
  348. package/dist/components/photo-grid/index.js +1 -0
  349. package/dist/components/photo-grid/model.js +1 -0
  350. package/dist/components/photo-grid/render.js +1 -0
  351. package/dist/components/photo-grid/style.js +1 -0
  352. package/dist/components/popover-menu/attrs.js +1 -0
  353. package/dist/components/popover-menu/index.js +1 -0
  354. package/dist/components/popover-menu/model.js +1 -0
  355. package/dist/components/popover-menu/render.js +1 -0
  356. package/dist/components/popover-menu/runtime.js +1 -0
  357. package/dist/components/popover-menu/style.js +1 -0
  358. package/dist/components/portion-gauge/attrs.d.ts +103 -0
  359. package/dist/components/portion-gauge/attrs.d.ts.map +1 -0
  360. package/dist/components/portion-gauge/attrs.js +108 -0
  361. package/dist/components/portion-gauge/attrs.js.map +1 -0
  362. package/dist/components/portion-gauge/fields.d.ts +26 -0
  363. package/dist/components/portion-gauge/fields.d.ts.map +1 -0
  364. package/dist/components/portion-gauge/fields.js +172 -0
  365. package/dist/components/portion-gauge/fields.js.map +1 -0
  366. package/dist/components/portion-gauge/index.d.ts +18 -0
  367. package/dist/components/portion-gauge/index.d.ts.map +1 -0
  368. package/dist/components/portion-gauge/index.js +16 -0
  369. package/dist/components/portion-gauge/index.js.map +1 -0
  370. package/dist/components/portion-gauge/model.d.ts +76 -0
  371. package/dist/components/portion-gauge/model.d.ts.map +1 -0
  372. package/dist/components/portion-gauge/model.js +127 -0
  373. package/dist/components/portion-gauge/model.js.map +1 -0
  374. package/dist/components/portion-gauge/render.d.ts +3 -0
  375. package/dist/components/portion-gauge/render.d.ts.map +1 -0
  376. package/dist/components/portion-gauge/render.js +158 -0
  377. package/dist/components/portion-gauge/render.js.map +1 -0
  378. package/dist/components/portion-gauge/style-gauge.d.ts +7 -0
  379. package/dist/components/portion-gauge/style-gauge.d.ts.map +1 -0
  380. package/dist/components/portion-gauge/style-gauge.js +154 -0
  381. package/dist/components/portion-gauge/style-gauge.js.map +1 -0
  382. package/dist/components/portion-gauge/style.d.ts +10 -0
  383. package/dist/components/portion-gauge/style.d.ts.map +1 -0
  384. package/dist/components/portion-gauge/style.js +293 -0
  385. package/dist/components/portion-gauge/style.js.map +1 -0
  386. package/dist/components/progress-list/attrs.js +1 -0
  387. package/dist/components/progress-list/index.js +1 -0
  388. package/dist/components/progress-list/model.js +1 -0
  389. package/dist/components/progress-list/render.js +1 -0
  390. package/dist/components/progress-list/style.js +1 -0
  391. package/dist/components/progress-ring/attrs.js +1 -0
  392. package/dist/components/progress-ring/index.js +1 -0
  393. package/dist/components/progress-ring/model.js +1 -0
  394. package/dist/components/progress-ring/render.js +1 -0
  395. package/dist/components/progress-ring/style.js +1 -0
  396. package/dist/components/punch-strip/index.js +1 -0
  397. package/dist/components/punch-strip/render.js +1 -0
  398. package/dist/components/punch-strip/style.js +1 -0
  399. package/dist/components/quick-capture/attrs.d.ts +181 -0
  400. package/dist/components/quick-capture/attrs.d.ts.map +1 -0
  401. package/dist/components/quick-capture/attrs.js +203 -0
  402. package/dist/components/quick-capture/attrs.js.map +1 -0
  403. package/dist/components/quick-capture/index.d.ts +23 -0
  404. package/dist/components/quick-capture/index.d.ts.map +1 -0
  405. package/dist/components/quick-capture/index.js +22 -0
  406. package/dist/components/quick-capture/index.js.map +1 -0
  407. package/dist/components/quick-capture/model.d.ts +34 -0
  408. package/dist/components/quick-capture/model.d.ts.map +1 -0
  409. package/dist/components/quick-capture/model.js +183 -0
  410. package/dist/components/quick-capture/model.js.map +1 -0
  411. package/dist/components/quick-capture/render.d.ts +3 -0
  412. package/dist/components/quick-capture/render.d.ts.map +1 -0
  413. package/dist/components/quick-capture/render.js +143 -0
  414. package/dist/components/quick-capture/render.js.map +1 -0
  415. package/dist/components/quick-capture/runtime.d.ts +3 -0
  416. package/dist/components/quick-capture/runtime.d.ts.map +1 -0
  417. package/dist/components/quick-capture/runtime.js +184 -0
  418. package/dist/components/quick-capture/runtime.js.map +1 -0
  419. package/dist/components/quick-capture/style-cells.d.ts +5 -0
  420. package/dist/components/quick-capture/style-cells.d.ts.map +1 -0
  421. package/dist/components/quick-capture/style-cells.js +108 -0
  422. package/dist/components/quick-capture/style-cells.js.map +1 -0
  423. package/dist/components/quick-capture/style-choices.d.ts +5 -0
  424. package/dist/components/quick-capture/style-choices.d.ts.map +1 -0
  425. package/dist/components/quick-capture/style-choices.js +132 -0
  426. package/dist/components/quick-capture/style-choices.js.map +1 -0
  427. package/dist/components/quick-capture/style-drawer.d.ts +5 -0
  428. package/dist/components/quick-capture/style-drawer.d.ts.map +1 -0
  429. package/dist/components/quick-capture/style-drawer.js +88 -0
  430. package/dist/components/quick-capture/style-drawer.js.map +1 -0
  431. package/dist/components/quick-capture/style.d.ts +5 -0
  432. package/dist/components/quick-capture/style.d.ts.map +1 -0
  433. package/dist/components/quick-capture/style.js +177 -0
  434. package/dist/components/quick-capture/style.js.map +1 -0
  435. package/dist/components/radar-profile/attrs.js +1 -1
  436. package/dist/components/radar-profile/attrs.js.map +1 -1
  437. package/dist/components/radar-profile/fields.d.ts +149 -0
  438. package/dist/components/radar-profile/fields.d.ts.map +1 -0
  439. package/dist/components/radar-profile/fields.js +77 -0
  440. package/dist/components/radar-profile/fields.js.map +1 -0
  441. package/dist/components/radar-profile/forms.d.ts +2 -140
  442. package/dist/components/radar-profile/forms.d.ts.map +1 -1
  443. package/dist/components/radar-profile/forms.js +50 -84
  444. package/dist/components/radar-profile/forms.js.map +1 -1
  445. package/dist/components/radar-profile/model.d.ts +2 -2
  446. package/dist/components/radar-profile/model.d.ts.map +1 -1
  447. package/dist/components/radar-profile/model.js +22 -2
  448. package/dist/components/radar-profile/model.js.map +1 -1
  449. package/dist/components/radar-profile/render.d.ts.map +1 -1
  450. package/dist/components/radar-profile/render.js +8 -5
  451. package/dist/components/radar-profile/render.js.map +1 -1
  452. package/dist/components/radar-profile/scale.d.ts +0 -2
  453. package/dist/components/radar-profile/scale.d.ts.map +1 -1
  454. package/dist/components/radar-profile/scale.js +0 -3
  455. package/dist/components/radar-profile/scale.js.map +1 -1
  456. package/dist/components/radar-profile/style-readouts.d.ts +5 -0
  457. package/dist/components/radar-profile/style-readouts.d.ts.map +1 -0
  458. package/dist/components/radar-profile/style-readouts.js +257 -0
  459. package/dist/components/radar-profile/style-readouts.js.map +1 -0
  460. package/dist/components/radar-profile/style.d.ts.map +1 -1
  461. package/dist/components/radar-profile/style.js +19 -232
  462. package/dist/components/radar-profile/style.js.map +1 -1
  463. package/dist/components/radio-cards/attrs.js +1 -0
  464. package/dist/components/radio-cards/index.js +1 -0
  465. package/dist/components/radio-cards/model.js +1 -0
  466. package/dist/components/radio-cards/render.js +1 -0
  467. package/dist/components/radio-cards/runtime.js +1 -0
  468. package/dist/components/radio-cards/style.js +1 -0
  469. package/dist/components/range-bar/attrs.js +1 -0
  470. package/dist/components/range-bar/index.js +1 -0
  471. package/dist/components/range-bar/model.js +1 -0
  472. package/dist/components/range-bar/render.js +1 -0
  473. package/dist/components/range-bar/style.js +1 -0
  474. package/dist/components/rank-list/attrs.js +1 -0
  475. package/dist/components/rank-list/index.js +1 -0
  476. package/dist/components/rank-list/model.js +1 -0
  477. package/dist/components/rank-list/render.js +1 -0
  478. package/dist/components/rank-list/style.js +1 -0
  479. package/dist/components/rating-row/attrs.js +1 -0
  480. package/dist/components/rating-row/index.js +1 -0
  481. package/dist/components/rating-row/model.js +1 -0
  482. package/dist/components/rating-row/render.js +1 -0
  483. package/dist/components/rating-row/runtime.js +1 -0
  484. package/dist/components/rating-row/style.js +1 -0
  485. package/dist/components/relation-picker/attrs.d.ts +196 -0
  486. package/dist/components/relation-picker/attrs.d.ts.map +1 -0
  487. package/dist/components/relation-picker/attrs.js +240 -0
  488. package/dist/components/relation-picker/attrs.js.map +1 -0
  489. package/dist/components/relation-picker/index.d.ts +20 -0
  490. package/dist/components/relation-picker/index.d.ts.map +1 -0
  491. package/dist/components/relation-picker/index.js +19 -0
  492. package/dist/components/relation-picker/index.js.map +1 -0
  493. package/dist/components/relation-picker/model.d.ts +85 -0
  494. package/dist/components/relation-picker/model.d.ts.map +1 -0
  495. package/dist/components/relation-picker/model.js +189 -0
  496. package/dist/components/relation-picker/model.js.map +1 -0
  497. package/dist/components/relation-picker/render.d.ts +3 -0
  498. package/dist/components/relation-picker/render.d.ts.map +1 -0
  499. package/dist/components/relation-picker/render.js +244 -0
  500. package/dist/components/relation-picker/render.js.map +1 -0
  501. package/dist/components/relation-picker/runtime.d.ts +3 -0
  502. package/dist/components/relation-picker/runtime.d.ts.map +1 -0
  503. package/dist/components/relation-picker/runtime.js +260 -0
  504. package/dist/components/relation-picker/runtime.js.map +1 -0
  505. package/dist/components/relation-picker/style-forms.d.ts +5 -0
  506. package/dist/components/relation-picker/style-forms.d.ts.map +1 -0
  507. package/dist/components/relation-picker/style-forms.js +190 -0
  508. package/dist/components/relation-picker/style-forms.js.map +1 -0
  509. package/dist/components/relation-picker/style-list.d.ts +5 -0
  510. package/dist/components/relation-picker/style-list.d.ts.map +1 -0
  511. package/dist/components/relation-picker/style-list.js +146 -0
  512. package/dist/components/relation-picker/style-list.js.map +1 -0
  513. package/dist/components/relation-picker/style.d.ts +5 -0
  514. package/dist/components/relation-picker/style.d.ts.map +1 -0
  515. package/dist/components/relation-picker/style.js +308 -0
  516. package/dist/components/relation-picker/style.js.map +1 -0
  517. package/dist/components/reminder-setter/attrs.d.ts +240 -0
  518. package/dist/components/reminder-setter/attrs.d.ts.map +1 -0
  519. package/dist/components/reminder-setter/attrs.js +268 -0
  520. package/dist/components/reminder-setter/attrs.js.map +1 -0
  521. package/dist/components/reminder-setter/index.d.ts +22 -0
  522. package/dist/components/reminder-setter/index.d.ts.map +1 -0
  523. package/dist/components/reminder-setter/index.js +21 -0
  524. package/dist/components/reminder-setter/index.js.map +1 -0
  525. package/dist/components/reminder-setter/model-track.d.ts +29 -0
  526. package/dist/components/reminder-setter/model-track.d.ts.map +1 -0
  527. package/dist/components/reminder-setter/model-track.js +110 -0
  528. package/dist/components/reminder-setter/model-track.js.map +1 -0
  529. package/dist/components/reminder-setter/model.d.ts +51 -0
  530. package/dist/components/reminder-setter/model.d.ts.map +1 -0
  531. package/dist/components/reminder-setter/model.js +110 -0
  532. package/dist/components/reminder-setter/model.js.map +1 -0
  533. package/dist/components/reminder-setter/render.d.ts +3 -0
  534. package/dist/components/reminder-setter/render.d.ts.map +1 -0
  535. package/dist/components/reminder-setter/render.js +221 -0
  536. package/dist/components/reminder-setter/render.js.map +1 -0
  537. package/dist/components/reminder-setter/rules.d.ts +34 -0
  538. package/dist/components/reminder-setter/rules.d.ts.map +1 -0
  539. package/dist/components/reminder-setter/rules.js +121 -0
  540. package/dist/components/reminder-setter/rules.js.map +1 -0
  541. package/dist/components/reminder-setter/runtime.d.ts +3 -0
  542. package/dist/components/reminder-setter/runtime.d.ts.map +1 -0
  543. package/dist/components/reminder-setter/runtime.js +264 -0
  544. package/dist/components/reminder-setter/runtime.js.map +1 -0
  545. package/dist/components/reminder-setter/style-track.d.ts +3 -0
  546. package/dist/components/reminder-setter/style-track.d.ts.map +1 -0
  547. package/dist/components/reminder-setter/style-track.js +189 -0
  548. package/dist/components/reminder-setter/style-track.js.map +1 -0
  549. package/dist/components/reminder-setter/style.d.ts +5 -0
  550. package/dist/components/reminder-setter/style.d.ts.map +1 -0
  551. package/dist/components/reminder-setter/style.js +306 -0
  552. package/dist/components/reminder-setter/style.js.map +1 -0
  553. package/dist/components/result-row/attrs.js +1 -0
  554. package/dist/components/result-row/index.js +1 -0
  555. package/dist/components/result-row/model.js +1 -0
  556. package/dist/components/result-row/render.js +1 -0
  557. package/dist/components/result-row/style.js +1 -0
  558. package/dist/components/scale-bar/index.js +1 -0
  559. package/dist/components/scale-bar/render.js +1 -0
  560. package/dist/components/scale-bar/style.js +1 -0
  561. package/dist/components/scatter-fit/attrs.js +1 -0
  562. package/dist/components/scatter-fit/forms.js +1 -0
  563. package/dist/components/scatter-fit/index.js +1 -0
  564. package/dist/components/scatter-fit/model.d.ts.map +1 -1
  565. package/dist/components/scatter-fit/model.js +68 -18
  566. package/dist/components/scatter-fit/model.js.map +1 -1
  567. package/dist/components/scatter-fit/render.js +1 -0
  568. package/dist/components/scatter-fit/scale.js +1 -0
  569. package/dist/components/scatter-fit/style-forms.js +1 -0
  570. package/dist/components/scatter-fit/style.js +1 -0
  571. package/dist/components/search-field/attrs.js +1 -0
  572. package/dist/components/search-field/index.js +1 -0
  573. package/dist/components/search-field/model.js +1 -0
  574. package/dist/components/search-field/render.js +1 -0
  575. package/dist/components/search-field/runtime.js +1 -0
  576. package/dist/components/search-field/style.js +1 -0
  577. package/dist/components/section-head/attrs.js +1 -0
  578. package/dist/components/section-head/index.js +1 -0
  579. package/dist/components/section-head/model.js +1 -0
  580. package/dist/components/section-head/render.js +1 -0
  581. package/dist/components/section-head/style.js +1 -0
  582. package/dist/components/shared/escape.js +1 -0
  583. package/dist/components/shared/typography.js +1 -0
  584. package/dist/components/shared/validate.js +1 -0
  585. package/dist/components/sheet-frame/index.js +1 -0
  586. package/dist/components/sheet-frame/render.js +1 -0
  587. package/dist/components/sheet-frame/style.js +1 -0
  588. package/dist/components/skeleton/attrs.js +1 -0
  589. package/dist/components/skeleton/index.js +1 -0
  590. package/dist/components/skeleton/model.js +1 -0
  591. package/dist/components/skeleton/render.js +1 -0
  592. package/dist/components/skeleton/style.js +1 -0
  593. package/dist/components/skin/contract.d.ts +1 -1
  594. package/dist/components/skin/contract.js +1 -0
  595. package/dist/components/skin/index.js +1 -0
  596. package/dist/components/skin/skins/broadsheet.js +1 -0
  597. package/dist/components/skin/skins/ink.js +1 -0
  598. package/dist/components/skin/skins/neutral.js +1 -0
  599. package/dist/components/skin/skins/paper.js +1 -0
  600. package/dist/components/slider-row/attrs.js +1 -0
  601. package/dist/components/slider-row/index.js +1 -0
  602. package/dist/components/slider-row/model.js +1 -0
  603. package/dist/components/slider-row/render.js +1 -0
  604. package/dist/components/slider-row/runtime.js +1 -0
  605. package/dist/components/slider-row/style.js +1 -0
  606. package/dist/components/small-multiples/attrs.js +1 -0
  607. package/dist/components/small-multiples/index.js +1 -0
  608. package/dist/components/small-multiples/model.d.ts.map +1 -1
  609. package/dist/components/small-multiples/model.js +43 -0
  610. package/dist/components/small-multiples/model.js.map +1 -1
  611. package/dist/components/small-multiples/render.js +1 -0
  612. package/dist/components/small-multiples/scale.js +1 -0
  613. package/dist/components/small-multiples/style.js +1 -0
  614. package/dist/components/sort-toggle/attrs.js +1 -0
  615. package/dist/components/sort-toggle/index.js +1 -0
  616. package/dist/components/sort-toggle/model.js +1 -0
  617. package/dist/components/sort-toggle/render.js +1 -0
  618. package/dist/components/sort-toggle/runtime.js +1 -0
  619. package/dist/components/sort-toggle/style.js +1 -0
  620. package/dist/components/spread-dist/attrs.d.ts +56 -12
  621. package/dist/components/spread-dist/attrs.d.ts.map +1 -1
  622. package/dist/components/spread-dist/attrs.js +72 -12
  623. package/dist/components/spread-dist/attrs.js.map +1 -1
  624. package/dist/components/spread-dist/forms.d.ts +53 -10
  625. package/dist/components/spread-dist/forms.d.ts.map +1 -1
  626. package/dist/components/spread-dist/forms.js +104 -7
  627. package/dist/components/spread-dist/forms.js.map +1 -1
  628. package/dist/components/spread-dist/index.d.ts +5 -4
  629. package/dist/components/spread-dist/index.d.ts.map +1 -1
  630. package/dist/components/spread-dist/index.js +5 -3
  631. package/dist/components/spread-dist/index.js.map +1 -1
  632. package/dist/components/spread-dist/model.d.ts +1 -1
  633. package/dist/components/spread-dist/model.d.ts.map +1 -1
  634. package/dist/components/spread-dist/model.js +154 -4
  635. package/dist/components/spread-dist/model.js.map +1 -1
  636. package/dist/components/spread-dist/render.d.ts.map +1 -1
  637. package/dist/components/spread-dist/render.js +79 -10
  638. package/dist/components/spread-dist/render.js.map +1 -1
  639. package/dist/components/spread-dist/scale.d.ts +15 -3
  640. package/dist/components/spread-dist/scale.d.ts.map +1 -1
  641. package/dist/components/spread-dist/scale.js +50 -15
  642. package/dist/components/spread-dist/scale.js.map +1 -1
  643. package/dist/components/spread-dist/style-box.d.ts +5 -0
  644. package/dist/components/spread-dist/style-box.d.ts.map +1 -0
  645. package/dist/components/spread-dist/style-box.js +252 -0
  646. package/dist/components/spread-dist/style-box.js.map +1 -0
  647. package/dist/components/spread-dist/style-quantile.d.ts +5 -0
  648. package/dist/components/spread-dist/style-quantile.d.ts.map +1 -0
  649. package/dist/components/spread-dist/style-quantile.js +97 -0
  650. package/dist/components/spread-dist/style-quantile.js.map +1 -0
  651. package/dist/components/spread-dist/style.d.ts.map +1 -1
  652. package/dist/components/spread-dist/style.js +28 -87
  653. package/dist/components/spread-dist/style.js.map +1 -1
  654. package/dist/components/stacked-bar/attrs.js +1 -0
  655. package/dist/components/stacked-bar/index.js +1 -0
  656. package/dist/components/stacked-bar/model.js +1 -0
  657. package/dist/components/stacked-bar/render.js +1 -0
  658. package/dist/components/stacked-bar/style.js +1 -0
  659. package/dist/components/stat-inline/attrs.js +1 -0
  660. package/dist/components/stat-inline/index.js +1 -0
  661. package/dist/components/stat-inline/model.js +1 -0
  662. package/dist/components/stat-inline/render.js +1 -0
  663. package/dist/components/stat-inline/style.js +1 -0
  664. package/dist/components/status-row/attrs.js +1 -0
  665. package/dist/components/status-row/index.js +1 -0
  666. package/dist/components/status-row/model.js +1 -0
  667. package/dist/components/status-row/render.js +1 -0
  668. package/dist/components/status-row/style.js +1 -0
  669. package/dist/components/step-flow/attrs.js +1 -0
  670. package/dist/components/step-flow/index.js +1 -0
  671. package/dist/components/step-flow/model.js +1 -0
  672. package/dist/components/step-flow/render.js +1 -0
  673. package/dist/components/step-flow/style.js +1 -0
  674. package/dist/components/streak-badge/attrs.js +1 -0
  675. package/dist/components/streak-badge/index.js +1 -0
  676. package/dist/components/streak-badge/model.js +1 -0
  677. package/dist/components/streak-badge/render.js +1 -0
  678. package/dist/components/streak-badge/style.js +1 -0
  679. package/dist/components/style/action-bar.js +1 -0
  680. package/dist/components/style/copy-button.js +1 -0
  681. package/dist/components/style/empty-state.js +1 -0
  682. package/dist/components/style/error-receipt.js +1 -0
  683. package/dist/components/style/help-shell.js +1 -0
  684. package/dist/components/style/index.js +1 -0
  685. package/dist/components/style/parts.js +1 -0
  686. package/dist/components/style/sheet.js +1 -0
  687. package/dist/components/style/status-badge.js +1 -0
  688. package/dist/components/style/toast.js +1 -0
  689. package/dist/components/style/tokens.js +1 -0
  690. package/dist/components/sub-list/attrs.js +1 -0
  691. package/dist/components/sub-list/index.js +1 -0
  692. package/dist/components/sub-list/model.js +1 -0
  693. package/dist/components/sub-list/render.js +1 -0
  694. package/dist/components/sub-list/style.js +1 -0
  695. package/dist/components/summary-head/index.js +1 -0
  696. package/dist/components/summary-head/render.js +1 -0
  697. package/dist/components/summary-head/style.js +1 -0
  698. package/dist/components/switch-row/attrs.js +1 -0
  699. package/dist/components/switch-row/index.js +1 -0
  700. package/dist/components/switch-row/model.js +1 -0
  701. package/dist/components/switch-row/render.js +1 -0
  702. package/dist/components/switch-row/runtime.js +1 -0
  703. package/dist/components/switch-row/style.js +1 -0
  704. package/dist/components/sync-status/attrs.js +1 -0
  705. package/dist/components/sync-status/index.js +1 -0
  706. package/dist/components/sync-status/model.js +1 -0
  707. package/dist/components/sync-status/render.js +1 -0
  708. package/dist/components/sync-status/runtime.js +1 -0
  709. package/dist/components/sync-status/style.js +1 -0
  710. package/dist/components/task-list/attrs.js +1 -0
  711. package/dist/components/task-list/index.js +1 -0
  712. package/dist/components/task-list/model.js +1 -0
  713. package/dist/components/task-list/render.js +1 -0
  714. package/dist/components/task-list/runtime.js +1 -0
  715. package/dist/components/task-list/style.js +1 -0
  716. package/dist/components/template/fill.js +1 -0
  717. package/dist/components/template/index.js +1 -0
  718. package/dist/components/template/markers.d.ts +1 -1
  719. package/dist/components/template/markers.js +2 -1
  720. package/dist/components/template/shared.js +1 -0
  721. package/dist/components/text/api.js +1 -0
  722. package/dist/components/text/formats.js +1 -0
  723. package/dist/components/text/index.js +1 -0
  724. package/dist/components/text/input.js +1 -0
  725. package/dist/components/text/log.js +1 -0
  726. package/dist/components/text/rows.js +1 -0
  727. package/dist/components/text/shared.js +1 -0
  728. package/dist/components/timer-card/attrs.js +1 -0
  729. package/dist/components/timer-card/index.js +1 -0
  730. package/dist/components/timer-card/model.js +1 -0
  731. package/dist/components/timer-card/render.js +1 -0
  732. package/dist/components/timer-card/runtime.js +1 -0
  733. package/dist/components/timer-card/style.js +1 -0
  734. package/dist/components/toast-card/attrs.js +1 -0
  735. package/dist/components/toast-card/index.js +1 -0
  736. package/dist/components/toast-card/model.js +1 -0
  737. package/dist/components/toast-card/render.js +1 -0
  738. package/dist/components/toast-card/runtime.js +1 -0
  739. package/dist/components/toast-card/style.js +1 -0
  740. package/dist/components/tooltip/attrs.d.ts +11 -4
  741. package/dist/components/tooltip/attrs.d.ts.map +1 -1
  742. package/dist/components/tooltip/attrs.js +12 -4
  743. package/dist/components/tooltip/attrs.js.map +1 -1
  744. package/dist/components/tooltip/index.d.ts +2 -1
  745. package/dist/components/tooltip/index.d.ts.map +1 -1
  746. package/dist/components/tooltip/index.js +3 -1
  747. package/dist/components/tooltip/index.js.map +1 -1
  748. package/dist/components/tooltip/model.js +1 -0
  749. package/dist/components/tooltip/render.d.ts.map +1 -1
  750. package/dist/components/tooltip/render.js +4 -2
  751. package/dist/components/tooltip/render.js.map +1 -1
  752. package/dist/components/tooltip/runtime.d.ts.map +1 -1
  753. package/dist/components/tooltip/runtime.js +28 -6
  754. package/dist/components/tooltip/runtime.js.map +1 -1
  755. package/dist/components/tooltip/style.d.ts.map +1 -1
  756. package/dist/components/tooltip/style.js +11 -4
  757. package/dist/components/tooltip/style.js.map +1 -1
  758. package/dist/components/undo-timeline/attrs.d.ts +1 -1
  759. package/dist/components/undo-timeline/attrs.d.ts.map +1 -1
  760. package/dist/components/undo-timeline/attrs.js +1 -1
  761. package/dist/components/undo-timeline/attrs.js.map +1 -1
  762. package/dist/components/undo-timeline/index.d.ts +1 -1
  763. package/dist/components/undo-timeline/index.d.ts.map +1 -1
  764. package/dist/components/undo-timeline/index.js +1 -1
  765. package/dist/components/undo-timeline/index.js.map +1 -1
  766. package/dist/components/undo-timeline/keys.d.ts +17 -0
  767. package/dist/components/undo-timeline/keys.d.ts.map +1 -0
  768. package/dist/components/undo-timeline/keys.js +47 -0
  769. package/dist/components/undo-timeline/keys.js.map +1 -0
  770. package/dist/components/undo-timeline/model.d.ts.map +1 -1
  771. package/dist/components/undo-timeline/model.js +20 -1
  772. package/dist/components/undo-timeline/model.js.map +1 -1
  773. package/dist/components/undo-timeline/render.d.ts.map +1 -1
  774. package/dist/components/undo-timeline/render.js +10 -2
  775. package/dist/components/undo-timeline/render.js.map +1 -1
  776. package/dist/components/undo-timeline/runtime.d.ts.map +1 -1
  777. package/dist/components/undo-timeline/runtime.js +19 -12
  778. package/dist/components/undo-timeline/runtime.js.map +1 -1
  779. package/dist/components/undo-timeline/style-impact.d.ts.map +1 -1
  780. package/dist/components/undo-timeline/style-impact.js +2 -4
  781. package/dist/components/undo-timeline/style-impact.js.map +1 -1
  782. package/dist/components/undo-timeline/style-track.d.ts.map +1 -1
  783. package/dist/components/undo-timeline/style-track.js +5 -0
  784. package/dist/components/undo-timeline/style-track.js.map +1 -1
  785. package/dist/components/undo-timeline/text.d.ts +0 -2
  786. package/dist/components/undo-timeline/text.d.ts.map +1 -1
  787. package/dist/components/undo-timeline/text.js +0 -2
  788. package/dist/components/undo-timeline/text.js.map +1 -1
  789. package/dist/components/window-picker/attrs.js +1 -0
  790. package/dist/components/window-picker/index.js +1 -0
  791. package/dist/components/window-picker/model.js +1 -0
  792. package/dist/components/window-picker/render.js +1 -0
  793. package/dist/components/window-picker/runtime.js +1 -0
  794. package/dist/components/window-picker/style.js +1 -0
  795. package/dist/components/wizard-shell/attrs.d.ts +2 -1
  796. package/dist/components/wizard-shell/attrs.d.ts.map +1 -1
  797. package/dist/components/wizard-shell/attrs.js +3 -1
  798. package/dist/components/wizard-shell/attrs.js.map +1 -1
  799. package/dist/components/wizard-shell/index.js +1 -0
  800. package/dist/components/wizard-shell/model.d.ts.map +1 -1
  801. package/dist/components/wizard-shell/model.js +36 -0
  802. package/dist/components/wizard-shell/model.js.map +1 -1
  803. package/dist/components/wizard-shell/render.js +1 -0
  804. package/dist/components/wizard-shell/runtime.js +1 -0
  805. package/dist/components/wizard-shell/style-answer.js +1 -0
  806. package/dist/components/wizard-shell/style.js +1 -0
  807. package/dist/components//346/270/205/345/215/225.d.ts +2 -2
  808. package/dist/components//346/270/205/345/215/225.d.ts.map +1 -1
  809. package/dist/components//346/270/205/345/215/225.js +68 -54
  810. package/dist/components//346/270/205/345/215/225.js.map +1 -1
  811. package/dist/contract.js +1 -0
  812. package/dist/controls.js +1 -0
  813. package/dist/font.js +1 -0
  814. package/dist/help.js +1 -0
  815. package/dist/helpShell.d.ts.map +1 -1
  816. package/dist/helpShell.js +3 -2
  817. package/dist/helpShell.js.map +1 -1
  818. package/dist/index.js +1 -0
  819. package/dist/injector.js +1 -0
  820. package/dist/output/saveHtml.js +1 -0
  821. package/dist/pageUi.js +1 -0
  822. package/dist/spec/charts.js +1 -0
  823. package/dist/spec/controls.js +1 -0
  824. package/dist/spec/help.d.ts +59 -0
  825. package/dist/spec/help.d.ts.map +1 -1
  826. package/dist/spec/help.js +20 -0
  827. package/dist/spec/help.js.map +1 -1
  828. package/dist/spec/index.js +2 -1
  829. package/dist/spec/index.js.map +1 -1
  830. package/dist/spec/style.js +1 -0
  831. package/dist/spec/template.d.ts +1 -1
  832. package/dist/spec/template.d.ts.map +1 -1
  833. package/dist/spec/template.js +2 -1
  834. package/dist/spec/template.js.map +1 -1
  835. package/dist/spec/text.d.ts +1 -1
  836. package/dist/spec/text.js +2 -1
  837. package/dist/style.js +1 -0
  838. package/dist/template.js +1 -0
  839. package/dist/text.js +1 -0
  840. package/dist/ui.js +1 -0
  841. package/package.json +2 -2
@@ -0,0 +1,172 @@
1
+ /** portion-gauge · **入参小件**(形状校验与数字写法;`model.ts` 只管「算什么」,本文件管「收不收」)。
2
+ *
3
+ * 为什么独立成件:本件两档(换算三栏/量感条)的行数与量感那一份都要逐字段校验,攒在 `model.ts` 里
4
+ * 过了本包的行数告警线(350 行/LF 口径,见 `packages/base-render/AGENTS.md`)。分开之后:
5
+ * · **一个规矩只有一处**:读数怎么闸、键表怎么列、数怎么写,都只在本文件里;
6
+ * · **没有环**:本文件只依赖 `attrs.ts` 与 `shared/validate.ts`,`model.ts` 单向依赖它。
7
+ *
8
+ * 报错句的口径(别处也会读它):每句都点名**路径**(`portion-gauge: input.rows[2].grams`)与**为什么**。
9
+ */
10
+ import { assertDenseArray, assertPlainObject, badInput, optText, reqText } from '../shared/validate.js';
11
+ import { PORTION_GAUGE_MAX_ROWS, PORTION_GAUGE_MIN_ROWS, } from './attrs.js';
12
+ /** 必填文本:非空串**且不是全空白**(全空白的标题会在屏上留一块空白,那是“看得到的错”)。 */
13
+ export function reqRealText(value, field) {
14
+ const text = reqText(value, field);
15
+ if (text.trim() === '')
16
+ badInput(field + ' 必须是真正的文本(全空白不算)');
17
+ return text;
18
+ }
19
+ /** 可选文本:空串=未给(与全层 `optText` 同口径);**全空白=拒**(那会在屏上留一块空白)。 */
20
+ export function optRealText(value, field) {
21
+ const text = optText(value, field);
22
+ if (text !== undefined && text.trim() === '')
23
+ badInput(field + ' 必须是真正的文本(全空白不算)');
24
+ return text;
25
+ }
26
+ /** 可加性的量级上界(`Number.MAX_VALUE ÷ 2`)。**判据是「相加会不会溢出」,不是「好不好读」**:
27
+ * `|a| + |b| > Number.MAX_VALUE` 那一刻就是双精度的 `Infinity`,屏上写出 `1e+308` 这种读不出来的东西
28
+ * (本件实测:`grams = 1e308` 原样渲成 `1e+308 g`)。故 `1e21`/`1e-7`(十进制写法与指数写法的分界那一档)**照旧合法**。 */
29
+ const PORTION_GAUGE_MAGNITUDE_MAX = Number.MAX_VALUE / 2;
30
+ /** 读数的量级闸(上界住 `PORTION_GAUGE_MAGNITUDE_MAX`,那一档的数是**有限的**:`Number.isFinite(1e308)` 为真)。 */
31
+ function reqMagnitude(n, field) {
32
+ if (Math.abs(n) > PORTION_GAUGE_MAGNITUDE_MAX) {
33
+ badInput(field + ' 的量级太大:两笔同量级的读数相加就溢出成 `Infinity`'
34
+ + '(图上会写出 `1e+308` 这类读不出来的数;读数至多到 `Number.MAX_VALUE ÷ 2` 那一档)');
35
+ }
36
+ return n;
37
+ }
38
+ /** 只许入参表里写着的键:多给一个键(多半是打错名)=拒,不静默吞掉(先例:`relation-picker`/
39
+ * `kanban-columns` 的同名小件)。**两条都会被查到**(只走 `Object.keys` 会漏一半):
40
+ * · `Object.getOwnPropertyNames` —— 自有的**全部**键,含**不可枚举**的;
41
+ * · `for…in` —— 走**整条原型链**(`Object.create({ zzUnknown: 1 })` 那种继承来的键就是这一路)。 */
42
+ export function assertKeys(raw, allowed, field) {
43
+ const bad = [];
44
+ const note = (key) => {
45
+ if (!allowed.includes(key) && !bad.includes(key))
46
+ bad.push(key);
47
+ };
48
+ for (const key of Object.getOwnPropertyNames(raw))
49
+ note(key);
50
+ for (const key in raw)
51
+ note(key);
52
+ if (bad.length > 0) {
53
+ badInput(field + ' 里没有 `' + bad.join('`/`') + '` 这个键(入参表以外的键一律拒:写错的键静默吞掉会让'
54
+ + '调用方以为自己设上了;继承来的与不可枚举的键同样算)');
55
+ }
56
+ }
57
+ /** 顶层入参表的键(照 `attrs.ts` 的 `PortionGaugeInput` 列全:两个形态的字段都在表里——
58
+ * 形状决定读哪一组,不读的那一组照收不误,**别把合法入参误拒**)。 */
59
+ export const INPUT_KEYS = ['title', 'form', 'stamp', 'tail', 'rows', 'gauge', 'note', 'missingCount', 'extraClass'];
60
+ /** 换算一行的键(照 `attrs.ts` 的 `PortionGaugeRow`)。 */
61
+ const ROW_KEYS = ['name', 'kind', 'recipe', 'grams', 'basis', 'toLabel', 'shareOf', 'sharePct'];
62
+ /** A 档那一份量感的键(照 `attrs.ts` 的 `PortionGaugeGauge`)。 */
63
+ const GAUGE_KEYS = ['name', 'usedPct', 'capText', 'refText', 'refPct', 'equiv'];
64
+ /** 三位分组(`1200` → `1,200`;负号留在最前;小数部分原样)。
65
+ *
66
+ * **指数写法原样返回**:量级大到(或小到)`String()` 只给指数写法时(`1e+21`/`1e-7`),
67
+ * 按三位插逗号会把它切成 `1e,+21`/`1,e-7`——那是**读不出来的数**(同族先例
68
+ * `spread-dist/scale.ts` 的 `numText()`)。**非有限值一律 `badInput`**:写不出数的东西不上屏。 */
69
+ export function groupNum(value) {
70
+ if (!Number.isFinite(value))
71
+ badInput('portion-gauge: 要写的数必须是有限数(读不到 ' + String(value) + ')');
72
+ const s = String(value);
73
+ if (s.includes('e') || s.includes('E'))
74
+ return s;
75
+ const dot = s.indexOf('.');
76
+ const head = dot < 0 ? s : s.slice(0, dot);
77
+ const frac = dot < 0 ? '' : s.slice(dot);
78
+ const neg = head.startsWith('-');
79
+ const body = neg ? head.slice(1) : head;
80
+ let out = '';
81
+ for (let i = 0; i < body.length; i += 1) {
82
+ if (i > 0 && (body.length - i) % 3 === 0)
83
+ out += ',';
84
+ out += body[i];
85
+ }
86
+ return (neg ? '-' : '') + out + frac;
87
+ }
88
+ /** 一行的克数(有限数、量级可读、且大于 0):0 与负数不是“一行菜的量”,小数照收(`12.5 g`)。 */
89
+ function reqGrams(value, field) {
90
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
91
+ badInput(field + ' 必须是有限数(`NaN`/`Infinity` 这类"写不成数的东西"一律拒)');
92
+ }
93
+ if (!(value > 0))
94
+ badInput(field + ' 必须大于 0(一行菜没有克数就谈不上换算)');
95
+ return reqMagnitude(value, field);
96
+ }
97
+ /** 占比(有限数且落在 0…100):越界的占比画出来会顶出轨道,不静默夹。 */
98
+ function reqSharePct(value, field) {
99
+ if (typeof value !== 'number' || !Number.isFinite(value))
100
+ badInput(field + ' 必须是有限数');
101
+ if (!(value >= 0 && value <= 100))
102
+ badInput(field + ' 必须落在 0 到 100 之间(越界的占比会顶出轨道)');
103
+ return reqMagnitude(Math.round(value * 10) / 10, field);
104
+ }
105
+ /** 换算各行:1–8 行;每一行的名字、菜谱写法、克数、占比项、占比都得到位。 */
106
+ export function reqRows(value) {
107
+ if (!Array.isArray(value) || value.length < PORTION_GAUGE_MIN_ROWS) {
108
+ badInput('portion-gauge: input.rows 至少 ' + String(PORTION_GAUGE_MIN_ROWS)
109
+ + ' 行(一道菜也要换算,请调用方至少给一行)');
110
+ }
111
+ if (value.length > PORTION_GAUGE_MAX_ROWS) {
112
+ badInput('portion-gauge: input.rows 最多 ' + String(PORTION_GAUGE_MAX_ROWS)
113
+ + ' 行(再多一屏读不完,请调用方先按餐分组)');
114
+ }
115
+ assertDenseArray(value, 'portion-gauge: input.rows');
116
+ return value.map((item, i) => {
117
+ const at = 'portion-gauge: input.rows[' + String(i) + ']';
118
+ assertPlainObject(item, at);
119
+ const r = item;
120
+ assertKeys(r, ROW_KEYS, at);
121
+ const row = {
122
+ name: reqRealText(r.name, at + '.name'),
123
+ recipe: reqRealText(r.recipe, at + '.recipe'),
124
+ grams: reqGrams(r.grams, at + '.grams'),
125
+ shareOf: reqRealText(r.shareOf, at + '.shareOf'),
126
+ sharePct: reqSharePct(r.sharePct, at + '.sharePct'),
127
+ };
128
+ const kind = optRealText(r.kind, at + '.kind');
129
+ const basis = optRealText(r.basis, at + '.basis');
130
+ const toLabel = optRealText(r.toLabel, at + '.toLabel');
131
+ return {
132
+ ...row,
133
+ ...(kind === undefined ? {} : { kind }),
134
+ ...(basis === undefined ? {} : { basis }),
135
+ ...(toLabel === undefined ? {} : { toLabel }),
136
+ };
137
+ });
138
+ }
139
+ /** 缺换算有几样(非负整数、量级可读;0=没有缺的)。**写法与克数同一处出**:屏上那个数经 `groupNum()`。 */
140
+ export function reqMissingCount(value) {
141
+ if (value === undefined)
142
+ return 0;
143
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {
144
+ badInput('portion-gauge: input.missingCount 必须是非负整数(缺几样就写几样,没有缺的就不给)');
145
+ }
146
+ return reqMagnitude(value, 'portion-gauge: input.missingCount');
147
+ }
148
+ /** A 档那一份量感:名字、已用几成、上限那个量必给;**建议那句与它落的位置成对给**。 */
149
+ export function reqGauge(value) {
150
+ assertPlainObject(value, 'portion-gauge: input.gauge');
151
+ const g = value;
152
+ const at = 'portion-gauge: input.gauge';
153
+ assertKeys(g, GAUGE_KEYS, at);
154
+ const name = reqRealText(g.name, at + '.name');
155
+ const usedPct = reqSharePct(g.usedPct, at + '.usedPct');
156
+ const capText = reqRealText(g.capText, at + '.capText');
157
+ const refText = optRealText(g.refText, at + '.refText');
158
+ const refPct = g.refPct === undefined ? undefined : reqSharePct(g.refPct, at + '.refPct');
159
+ if ((refText === undefined) !== (refPct === undefined)) {
160
+ badInput(at + ' 的一餐建议要**成对**给(`refText` 那句字与 `refPct` 它落在几成处)——'
161
+ + '只给一样,那句参照要么没地方挂,要么挂在编出来的位置上');
162
+ }
163
+ const equiv = optRealText(g.equiv, at + '.equiv');
164
+ return {
165
+ name,
166
+ usedPct,
167
+ capText,
168
+ ...(refText === undefined ? {} : { refText, refPct }),
169
+ ...(equiv === undefined ? {} : { equiv }),
170
+ };
171
+ }
172
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/components/portion-gauge/fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** portion-gauge · **组件出口**(本组件对外的唯一名字面)。
2
+ *
3
+ * 出口:`renderPortionGauge(input)`(产标记,零 DOM)/`portionGaugeCss()`(样式段)/
4
+ * `PORTION_GAUGE_FORMS`(形态闭集:换算三栏 `convert`/量感条 `gauge`)/
5
+ * `PORTION_GAUGE_CLASS` 与 `portionGaugeSlot()`(标记契约)/
6
+ * `PORTION_GAUGE_NARROW_PX` 与 `PORTION_GAUGE_BAR_MIN_PX`(几何常量:判据拿它对两档几何与条宽)/
7
+ * `normalizePortionGauge`(归一化入口)/行数上下限(判据拿它对非法入参)。
8
+ *
9
+ * 用法与参数表见同目录 `README.md`。消费方走 `base-paint/blocks`(组件层出口),不走根出口。
10
+ */
11
+ export { renderPortionGauge } from './render.js';
12
+ export type { PortionGaugeForm, PortionGaugeGauge, PortionGaugeInput, PortionGaugeRow, PortionGaugeSlot, } from './attrs.js';
13
+ export { PORTION_GAUGE_CLASS, PORTION_GAUGE_FORMS, PORTION_GAUGE_MAX_ROWS, PORTION_GAUGE_MIN_ROWS, PORTION_GAUGE_NARROW_PX, PORTION_GAUGE_SLOTS, portionGaugeSlot, } from './attrs.js';
14
+ export { PORTION_GAUGE_NOTE, normalizePortionGauge } from './model.js';
15
+ export type { PortionGaugeGaugeModel, PortionGaugeMarkModel, PortionGaugeModel, PortionGaugeRowModel, PortionGaugeTickModel, } from './model.js';
16
+ export { PORTION_GAUGE_BAR_MIN_PX, portionGaugeCss } from './style.js';
17
+ export { PORTION_GAUGE_RAIL_PX } from './style-gauge.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/portion-gauge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** portion-gauge · **组件出口**(本组件对外的唯一名字面)。
2
+ *
3
+ * 出口:`renderPortionGauge(input)`(产标记,零 DOM)/`portionGaugeCss()`(样式段)/
4
+ * `PORTION_GAUGE_FORMS`(形态闭集:换算三栏 `convert`/量感条 `gauge`)/
5
+ * `PORTION_GAUGE_CLASS` 与 `portionGaugeSlot()`(标记契约)/
6
+ * `PORTION_GAUGE_NARROW_PX` 与 `PORTION_GAUGE_BAR_MIN_PX`(几何常量:判据拿它对两档几何与条宽)/
7
+ * `normalizePortionGauge`(归一化入口)/行数上下限(判据拿它对非法入参)。
8
+ *
9
+ * 用法与参数表见同目录 `README.md`。消费方走 `base-paint/blocks`(组件层出口),不走根出口。
10
+ */
11
+ export { renderPortionGauge } from './render.js';
12
+ export { PORTION_GAUGE_CLASS, PORTION_GAUGE_FORMS, PORTION_GAUGE_MAX_ROWS, PORTION_GAUGE_MIN_ROWS, PORTION_GAUGE_NARROW_PX, PORTION_GAUGE_SLOTS, portionGaugeSlot, } from './attrs.js';
13
+ export { PORTION_GAUGE_NOTE, normalizePortionGauge } from './model.js';
14
+ export { PORTION_GAUGE_BAR_MIN_PX, portionGaugeCss } from './style.js';
15
+ export { PORTION_GAUGE_RAIL_PX } from './style-gauge.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/portion-gauge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQvE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { type PortionGaugeForm } from './attrs.js';
2
+ /** 一行的内部形状:每个字段都已校验、已归一、已算好(`render.ts` 只拼标记,一个算术都不写)。 */
3
+ export interface PortionGaugeRowModel {
4
+ readonly name: string;
5
+ /** 出处那句(`主料,菜谱写“2 份”`):分档与菜谱写法拼在这里,换算左栏读的是同一个菜谱串。 */
6
+ readonly sub: string;
7
+ /** 这一行合计多少克的写法(`700 g`):行头与换算右栏读的是**同一个串**。 */
8
+ readonly gramsText: string;
9
+ /** 菜谱写的那一句(`2 份`):出处句与换算左栏读的是**同一个串**。 */
10
+ readonly recipeText: string;
11
+ /** 右栏口径名(`营养库口径`/`生重(1 碗 = 150 g)`)。 */
12
+ readonly toLabelText: string;
13
+ /** 占比(0…100,取一位小数):占比那句的字与占比条的宽度读的是**同一个数**。 */
14
+ readonly sharePct: number;
15
+ /** 占比那句(`占一天蛋白 70%`)。 */
16
+ readonly shareText: string;
17
+ }
18
+ /** 轨道上的一根刻度竖线:位置与粗细都由 `model.ts` 定形(`render.ts` 只贴上去,不拼算术)。 */
19
+ export interface PortionGaugeTickModel {
20
+ /** 行内定位(`left: 25%`)。 */
21
+ readonly pos: string;
22
+ /** 整份那一档(`0`/`50`):刻度画长一档。 */
23
+ readonly major: boolean;
24
+ }
25
+ /** 轨道上的一枚参照刻度竖线:一餐建议(实线)/一天上限(虚线)。 */
26
+ export interface PortionGaugeMarkModel {
27
+ readonly kind: 'ref' | 'cap';
28
+ /** 行内定位。右端那枚是 `right: 0`——`left: 100%` 会把它自己那 1px 描边推到轨道外面(横溢)。 */
29
+ readonly pos: string;
30
+ }
31
+ /** A 档量感条(`gauge`)的内部形状:每个字段都已校验、已归一、已算好。 */
32
+ export interface PortionGaugeGaugeModel {
33
+ /** 这一份叫什么(`红烧肉`):卡头上屏 + 进无障碍名。 */
34
+ readonly name: string;
35
+ /** 已用占上限的几成(0…100,取一位小数):大字与已用那一段的长度读的是**同一个数**。 */
36
+ readonly usedPct: number;
37
+ /** 那个大字(`58%`)。 */
38
+ readonly usedText: string;
39
+ /** 上限那枚刻度值(`一天上限 2 份`),挂在尺子右端。 */
40
+ readonly capLabel: string;
41
+ /** 一餐建议那枚刻度值(`一餐建议 1.2 份`);没给建议=不出这一行。 */
42
+ readonly refLabel?: string;
43
+ /** 建议那枚刻度值那一行的**行内内距**(把那一行的话居中到它那枚刻度上);正中那一档是空串=不写。 */
44
+ readonly refPad?: string;
45
+ /** 实物参照那一行(`≈ 1 个拳头 + 2 汤勺`);不给=不出那一行。 */
46
+ readonly equiv?: string;
47
+ /** 轨道那句话(`role="img"` 的无障碍名):把这一条读数说成一句话,数出自上面同一批字段。 */
48
+ readonly ariaText: string;
49
+ /** 刻度竖线(四等分;右端那枚由「一天上限」那枚参照收口,同一处不画两条线)。 */
50
+ readonly ticks: readonly PortionGaugeTickModel[];
51
+ /** 参照刻度竖线(有建议时两枚,否则只有上限那一枚)。 */
52
+ readonly marks: readonly PortionGaugeMarkModel[];
53
+ }
54
+ /** 内部类型:每个字段都已校验、已归一、已算好。 */
55
+ export interface PortionGaugeModel {
56
+ readonly form: PortionGaugeForm;
57
+ readonly title: string;
58
+ readonly stamp?: string;
59
+ readonly tail?: string;
60
+ /** `convert` 的行;`gauge` 形态是**空数组**(那个形态读 `gauge`)。 */
61
+ readonly rows: readonly PortionGaugeRowModel[];
62
+ /** `gauge` 的那一份;`convert` 形态是 `null`。 */
63
+ readonly gauge: PortionGaugeGaugeModel | null;
64
+ readonly note: string;
65
+ /** 缺换算的食材有几样(0=没有缺的,那一行整行不出)。 */
66
+ readonly missingCount: number;
67
+ /** 缺换算那一行里的数(`还差 12 样没有换算` 里的 `12`):**与克数走同一把分组**(同一处出,
68
+ * 指数写法同样不被打散);`missingCount` 是 0 时是空串(那一行整行不出)。 */
69
+ readonly missingText: string;
70
+ readonly extraClass?: string;
71
+ }
72
+ /** 本件的口径句(调用方不给 `note` 时用它;分隔符只用逗号与句号)。 */
73
+ export declare const PORTION_GAUGE_NOTE: string;
74
+ /** 入参归一化。**唯一入口**:`render.ts` 只吃它产出的 `PortionGaugeModel`,不再自己碰 `any`。 */
75
+ export declare function normalizePortionGauge(input: unknown): PortionGaugeModel;
76
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/components/portion-gauge/model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAKpB,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mBAAmB;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAClD;AAED,6BAA6B;AAC7B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;wDACoD;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,2CAA2C;AAC3C,eAAO,MAAM,kBAAkB,QAGE,CAAC;AA4DlC,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAiDvE"}
@@ -0,0 +1,127 @@
1
+ /** portion-gauge · **入参校验与归一化入口**(把 `any` 与说不出的 `unknown` 挡在门外,产出内部类型)。
2
+ *
3
+ * 三条口径:
4
+ * 1. **非法入参一律 `badInput()`**(抛 `BlocksError`)——不静默降级、不“尽量猜”:
5
+ * 行数不够、克数不是数、占比越界,画出来都是“错位”,而调用方以为拿到了一组完整换算。
6
+ * 2. **换算链三栏的数是同一份真值**:克数串、百分比、菜谱那一句都在这里**各算一次**,
7
+ * `render.ts` 只把算好的串写进两处(行头与换算栏各一处)——两处各算一遍必然走散。
8
+ * A 档量感条同此:那个百分比大字与已用那一段的长度是**同一个数**,两枚参照刻度值的位置
9
+ * 与它们各自那句字也在这一处定形。
10
+ * 3. **空白串不是文本**:全空白的 `title`/食材名会在屏上留一块空白,**一律拒**
11
+ * (与同层 `optExtraClass` 对空白串的口径一致;可选文本字段同办:空串仍按“未给”处理)。
12
+ *
13
+ * **形态决定读哪一组字段**(同族先例 `spread-dist/model.ts`):`convert` 读 `rows`、`gauge` 读 `gauge`,
14
+ * 另一个形态的字段一概不读(缺了就是缺了,不拿另一形态的字段顶上)。
15
+ */
16
+ import { assertPlainObject, badInput, optExtraClass } from '../shared/validate.js';
17
+ import { PORTION_GAUGE_FORMS, } from './attrs.js';
18
+ import { assertKeys, groupNum, INPUT_KEYS, optRealText, reqGauge, reqMissingCount, reqRealText, reqRows, } from './fields.js';
19
+ /** 本件的口径句(调用方不给 `note` 时用它;分隔符只用逗号与句号)。 */
20
+ export const PORTION_GAUGE_NOTE = '口径:左边永远是菜谱写的单位(份,碗,把),'
21
+ + '右边永远是营养库认的单位(g)。中间是这一份菜的换算系数,'
22
+ + '系数变了要写明是哪一版菜谱改的,不悄悄改数。'
23
+ + '缺换算系数的食材整行不画,只在下面写还差几样没有换算。';
24
+ /** 尺子的刻度:四等分(0/25/50/75)。**右端那枚不画**——它由「一天上限」那枚参照收口
25
+ * (同一处画两条线=同一个位置说两遍)。 */
26
+ const RAIL_TICKS = [0, 25, 50, 75];
27
+ /** 参照刻度值那一行的**行内内距**:把那一行的话**居中到它那枚刻度**上(`text-align: center` + 一侧内距)。
28
+ * 刻度过半时内距压在左边、不过半时压右边 —— 两侧都推不出轨道,也不用 `translateX`(那会让
29
+ * 0 宽刻度上的标签自己吃掉一半宽)。
30
+ *
31
+ * **内距最多压到 `REF_PAD_MAX_PCT`**:刻度贴着尺子两端时(0/100),按上面那把尺算出来的内距
32
+ * 会把那一行的可用宽压成 0,一个字居中在 0 宽里 ⇒ 半个字被推到轨道外(真机读数 `scrollWidth`
33
+ * 比 `clientWidth` 多 12px)。压到 75% = 至少给那枚标签留四分之一条轨道:话仍**贴着它那一端**,
34
+ * 只是不再严格居中(尺子两端本来就摆不下居中)。 */
35
+ const REF_PAD_MAX_PCT = 75;
36
+ function refPad(pct) {
37
+ if (pct > 50)
38
+ return 'padding-left: ' + String(Math.min(2 * pct - 100, REF_PAD_MAX_PCT)) + '%';
39
+ if (pct < 50)
40
+ return 'padding-right: ' + String(Math.min(100 - 2 * pct, REF_PAD_MAX_PCT)) + '%';
41
+ return '';
42
+ }
43
+ /** 一枚刻度/参照竖线的位置:贴着尺子右端(100%)的那一枚用 `right: 0` 收口 ——
44
+ * `left: 100%` 会把它自己那 1px 描边推到轨道外面(真机读数:`scrollWidth` 比 `clientWidth` 多 1)。 */
45
+ function markPos(pct) {
46
+ return pct >= 100 ? 'right: 0' : 'left: ' + String(pct) + '%';
47
+ }
48
+ /** A 档那一份量感:大字、两枚参照刻度值、刻度竖线、无障碍名都在这一处定形。 */
49
+ function gaugeModel(g) {
50
+ const usedText = String(g.usedPct) + '%';
51
+ const capLabel = '一天上限 ' + g.capText;
52
+ const ticks = RAIL_TICKS
53
+ .map((p) => ({ pos: 'left: ' + String(p) + '%', major: p % 50 === 0 }));
54
+ /* 上限那枚收右端;有建议时它排在前面(屏上先读到建议,再读到上限)。 */
55
+ const marks = [{ kind: 'cap', pos: markPos(100) }];
56
+ let refLabel;
57
+ let pad;
58
+ if (g.refPct !== undefined && g.refText !== undefined) {
59
+ refLabel = '一餐建议 ' + g.refText;
60
+ pad = refPad(g.refPct);
61
+ marks.unshift({ kind: 'ref', pos: markPos(g.refPct) });
62
+ }
63
+ /* 无障碍名把这一条读数说成一句话:数**出自上面同一批字段**(不另算一遍)。 */
64
+ const ariaText = '量感条:' + g.name + '用掉一天上限 ' + g.capText + '的' + usedText
65
+ + (refLabel === undefined || g.refPct === undefined
66
+ ? '。' : ',' + refLabel + '那枚刻度落在 ' + String(g.refPct) + '% 处。');
67
+ return {
68
+ name: g.name,
69
+ usedPct: g.usedPct,
70
+ usedText,
71
+ capLabel,
72
+ ...(refLabel === undefined ? {} : { refLabel }),
73
+ ...(pad === undefined ? {} : { refPad: pad }),
74
+ ...(g.equiv === undefined ? {} : { equiv: g.equiv }),
75
+ ariaText,
76
+ ticks,
77
+ marks,
78
+ };
79
+ }
80
+ /** 入参归一化。**唯一入口**:`render.ts` 只吃它产出的 `PortionGaugeModel`,不再自己碰 `any`。 */
81
+ export function normalizePortionGauge(input) {
82
+ assertPlainObject(input, 'renderPortionGauge: input');
83
+ const raw = input;
84
+ assertKeys(raw, INPUT_KEYS, 'portion-gauge: input');
85
+ const form = raw.form === undefined ? PORTION_GAUGE_FORMS[0] : raw.form;
86
+ if (!PORTION_GAUGE_FORMS.includes(form)) {
87
+ badInput('portion-gauge: input.form 必须是 ' + PORTION_GAUGE_FORMS.join('/')
88
+ + ' 之一(A 量感条/B 换算三栏)');
89
+ }
90
+ const gauge = form === 'gauge' ? gaugeModel(reqGauge(raw.gauge)) : null;
91
+ const rows = form === 'gauge' ? [] : reqRows(raw.rows).map((r) => {
92
+ /* 同一份真值各算一次:克数串只拼一遍(行头与右栏同引),菜谱串只收一遍
93
+ (出处句与左栏同引),百分比只取一位(占比句与条宽同引)。 */
94
+ const gramsText = groupNum(r.grams) + ' g';
95
+ const pctText = String(r.sharePct) + '%';
96
+ const toName = r.toLabel ?? '营养库口径';
97
+ const model = {
98
+ name: r.name,
99
+ sub: (r.kind === undefined ? '' : r.kind + ',') + '菜谱写「' + r.recipe + '」',
100
+ gramsText,
101
+ recipeText: r.recipe,
102
+ toLabelText: r.basis === undefined ? toName : toName + '(' + r.basis + ')',
103
+ sharePct: r.sharePct,
104
+ shareText: '占一天' + r.shareOf + ' ' + pctText,
105
+ };
106
+ return model;
107
+ });
108
+ /* 缺换算那个数也在这一处定形(写法与克数同一把分组):`render.ts` 只贴它,不再自己 `String()`。 */
109
+ const missingCount = reqMissingCount(raw.missingCount);
110
+ /* 脚注缺省按形态分:`convert` 用本件的口径句;`gauge` **不出脚注**(那两条参照刻度值在尺子上
111
+ 自己报了名,再写一句口径=同一件事印两遍,正是用户砍掉的那类文字)。 */
112
+ const noteIn = optRealText(raw.note, 'portion-gauge: input.note');
113
+ const note = noteIn ?? (form === 'gauge' ? '' : PORTION_GAUGE_NOTE);
114
+ return {
115
+ form: form,
116
+ title: reqRealText(raw.title, 'portion-gauge: input.title'),
117
+ stamp: optRealText(raw.stamp, 'portion-gauge: input.stamp'),
118
+ tail: optRealText(raw.tail, 'portion-gauge: input.tail'),
119
+ rows,
120
+ gauge,
121
+ note,
122
+ missingCount,
123
+ missingText: missingCount > 0 ? groupNum(missingCount) : '',
124
+ extraClass: optExtraClass(raw.extraClass, 'portion-gauge: input.extraClass'),
125
+ };
126
+ }
127
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/components/portion-gauge/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** 渲染份量换算(纯函数:同样的入参恒产同样的字节;转义只经 `shared/escape.ts`)。 */
2
+ export declare function renderPortionGauge(input: unknown): string;
3
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/components/portion-gauge/render.ts"],"names":[],"mappings":"AAkKA,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKzD"}
@@ -0,0 +1,158 @@
1
+ /** portion-gauge · **渲染**(纯函数产 HTML;本件两档骨架:A 量感条/B 换算三栏)。
2
+ *
3
+ * —— 形态 `convert`:换算三栏 ——
4
+ *
5
+ * 一行一样食材,每行三栏:第一栏是菜谱写的那一句(`2 份`),第二栏是营养库认的那一句
6
+ * (`700 g`),第三栏是实物占比(占比条 + `占一天蛋白 70%`)。行头写清食材名、
7
+ * 出处与这一行合计多少克,脚注写口径,缺换算的另起一行只报数。
8
+ * 它替掉的两种错法:
9
+ * · 只给克数 —— 人对着 `200 g` 不知道这是多是少;
10
+ * · 单位靠人自己心算 —— 菜谱的份碗把与营养库的克各说各的。
11
+ *
12
+ * —— 形态 `gauge`:量感条(占上限几成 + 两条参照刻度)——
13
+ *
14
+ * 一条尺子(量程=0…上限):余量底是一根发丝线、已用那一段压在它上面、刻度是竖线(三级重量);
15
+ * 上面一档大字是占比,两枚参照刻度值(一餐建议/一天上限)**一高一低挂在自己那枚刻度上**;
16
+ * 最下面一行是实物参照(`≈ 1 个拳头 + 2 汤勺`)。
17
+ * 它替掉的那一种错法:**只报一个百分比**(58% 是多少,人对着手比不出来)。
18
+ *
19
+ * 三条硬口径(判据断的就是它们):
20
+ * · **算数不在这里**:克数串、百分比、菜谱串、刻度位置、无障碍名都在 `model.ts` 算好;
21
+ * 这一支只把**算好的数**写进它该去的地方,静态规则一律住 `style.ts`;
22
+ * · **同一份真值只印一次**:换算三栏的行头与换算栏同引一个串;量感条的占比大字、已用那一段的
23
+ * 宽度、无障碍名里的百分比是**同一个数**(`usedPct`);
24
+ * · **本件不带可点元素、不带脚本**:没有 `runtime.ts`;调用方把某一行包成入口时,
25
+ * 件里那条 `:focus-visible` 地板保证焦点看得见(见 `README.md`)。
26
+ */
27
+ import { esc } from '../shared/escape.js';
28
+ import { badInput } from '../shared/validate.js';
29
+ import { PORTION_GAUGE_CLASS, portionGaugeSlot } from './attrs.js';
30
+ import { normalizePortionGauge, } from './model.js';
31
+ /** 卡头:标题(+ A 档的「这一份叫什么」)+ 口径那枚 + 换算基准。 */
32
+ function headHtml(m) {
33
+ const parts = ['<div class="' + portionGaugeSlot('hd') + '">'];
34
+ parts.push('<h4 class="' + portionGaugeSlot('title') + '">' + esc(m.title) + '</h4>');
35
+ /* A 档才有「这一份叫什么」(`convert` 那一档的模型里 `gauge` 恒为 `null` ⇒ 这段不进标记)。 */
36
+ if (m.gauge !== null) {
37
+ parts.push('<b class="' + portionGaugeSlot('subject') + '">' + esc(m.gauge.name) + '</b>');
38
+ }
39
+ if (m.stamp !== undefined) {
40
+ parts.push('<span class="' + portionGaugeSlot('stamp') + '">' + esc(m.stamp) + '</span>');
41
+ }
42
+ if (m.tail !== undefined) {
43
+ parts.push('<span class="' + portionGaugeSlot('tail') + '">' + esc(m.tail) + '</span>');
44
+ }
45
+ parts.push('</div>');
46
+ return parts.join('');
47
+ }
48
+ /** 一行:行头(名 + 出处 + 合计)→ 换算框(左栏 → 右栏)→ 实物占比(条 + 那句)。 */
49
+ function rowHtml(r) {
50
+ const parts = ['<div class="' + portionGaugeSlot('row') + '">'];
51
+ parts.push('<span class="' + portionGaugeSlot('head') + '">'
52
+ + '<b class="' + portionGaugeSlot('name') + '">' + esc(r.name) + '</b>'
53
+ + '<span class="' + portionGaugeSlot('sub') + '">' + esc(r.sub) + '</span>'
54
+ + '<span class="' + portionGaugeSlot('same') + '">' + esc(r.gramsText) + '</span>'
55
+ + '</span>');
56
+ parts.push('<span class="' + portionGaugeSlot('eq') + '">'
57
+ + '<span class="' + portionGaugeSlot('side') + '">'
58
+ + '<b class="' + portionGaugeSlot('side-value') + '">' + esc(r.recipeText) + '</b>'
59
+ + '<em class="' + portionGaugeSlot('side-label') + '">菜谱单位</em>'
60
+ + '</span>'
61
+ + '<span class="' + portionGaugeSlot('arrow') + '" aria-hidden="true">→</span>'
62
+ + '<span class="' + portionGaugeSlot('side') + ' is-to">'
63
+ + '<b class="' + portionGaugeSlot('side-value') + '">' + esc(r.gramsText) + '</b>'
64
+ + '<em class="' + portionGaugeSlot('side-label') + '">' + esc(r.toLabelText) + '</em>'
65
+ + '</span>'
66
+ + '</span>');
67
+ /* 占比条是纯装饰(那句占比已经把数说出来了):填充宽度就是占比本身,与那句同源。 */
68
+ parts.push('<span class="' + portionGaugeSlot('obj') + '">'
69
+ + '<span class="' + portionGaugeSlot('bar') + '" aria-hidden="true">'
70
+ + '<i class="' + portionGaugeSlot('fill') + '" style="width: ' + String(r.sharePct) + '%"></i>'
71
+ + '</span>'
72
+ + '<span class="' + portionGaugeSlot('share') + '">' + esc(r.shareText) + '</span>'
73
+ + '</span>');
74
+ parts.push('</div>');
75
+ return parts.join('');
76
+ }
77
+ /** 脚注一句人话 +(有缺换算时)缺的那一行。 */
78
+ function footHtml(m) {
79
+ const parts = ['<p class="' + portionGaugeSlot('note') + '">' + esc(m.note) + '</p>'];
80
+ if (m.missingCount > 0) {
81
+ /* 那个数在 `model.ts` 就定好形(与克数同一把分组):这里只贴,不再自己 `String()` 一遍
82
+ ——两处各拼一遍必然走散(同 `gramsText`/`shareText` 的口径)。 */
83
+ parts.push('<p class="' + portionGaugeSlot('missing') + '">还差 ' + m.missingText
84
+ + ' 样没有换算</p>');
85
+ }
86
+ return parts.join('');
87
+ }
88
+ /** 形态 `convert` 的骨架:卡头 → 一行一样 → 脚注。 */
89
+ function renderConvert(m) {
90
+ const parts = [headHtml(m)];
91
+ parts.push('<div class="' + portionGaugeSlot('conv') + '">'
92
+ + m.rows.map(rowHtml).join('') + '</div>');
93
+ parts.push(footHtml(m));
94
+ return parts.join('');
95
+ }
96
+ /** A 档那一份量感(归一化保证 `form === 'gauge'` 时它**不是** `null`;真缺了就当错报,不静默降级)。 */
97
+ function gaugeOf(m) {
98
+ if (m.gauge === null)
99
+ badInput('portion-gauge: 形态 gauge 缺 input.gauge');
100
+ return m.gauge;
101
+ }
102
+ /** 尺子:余量底 → 已用那一段 → 刻度竖线 → 参照刻度竖线(位置一律由 `model.ts` 定形)。 */
103
+ function railHtml(g) {
104
+ const parts = ['<span class="' + portionGaugeSlot('rail') + '" role="img" aria-label="'
105
+ + esc(g.ariaText) + '">'];
106
+ parts.push('<span class="' + portionGaugeSlot('rest') + '" aria-hidden="true"></span>');
107
+ /* 已用那一段的宽度**就是占比本身**(与大字、与无障碍名同一个数)。 */
108
+ parts.push('<span class="' + portionGaugeSlot('used') + '" aria-hidden="true" style="width: '
109
+ + String(g.usedPct) + '%"></span>');
110
+ for (const tick of g.ticks) {
111
+ parts.push('<span class="' + portionGaugeSlot('tick') + (tick.major ? ' is-major' : '')
112
+ + '" aria-hidden="true" style="' + tick.pos + '"></span>');
113
+ }
114
+ for (const mark of g.marks) {
115
+ parts.push('<span class="' + portionGaugeSlot('mark') + ' is-' + mark.kind
116
+ + '" aria-hidden="true" style="' + mark.pos + '"></span>');
117
+ }
118
+ parts.push('</span>');
119
+ return parts.join('');
120
+ }
121
+ /** 形态 `gauge` 的骨架:卡头 → 占比大字 → 尺子(两枚参照刻度值 + 轨道)→ 实物参照 →(给了才出)脚注。 */
122
+ function renderGauge(m) {
123
+ const g = gaugeOf(m);
124
+ const parts = [headHtml(m)];
125
+ parts.push('<p class="' + portionGaugeSlot('lead') + '"><b class="'
126
+ + portionGaugeSlot('lead-value') + '">' + esc(g.usedText) + '</b></p>');
127
+ const box = ['<span class="' + portionGaugeSlot('gauge') + '">'];
128
+ /* 两枚参照刻度值一高一低:上面那行是上限,贴着轨道那行是建议(离得近的那一枚是「这一餐」)。 */
129
+ box.push('<span class="' + portionGaugeSlot('mark-label') + ' is-cap" aria-hidden="true">'
130
+ + esc(g.capLabel) + '</span>');
131
+ if (g.refLabel !== undefined) {
132
+ box.push('<span class="' + portionGaugeSlot('mark-label') + ' is-ref" aria-hidden="true"'
133
+ + (g.refPad === undefined || g.refPad === '' ? '' : ' style="' + g.refPad + '"') + '>'
134
+ + esc(g.refLabel) + '</span>');
135
+ }
136
+ box.push(railHtml(g));
137
+ box.push('</span>');
138
+ parts.push(box.join(''));
139
+ if (g.equiv !== undefined) {
140
+ parts.push('<p class="' + portionGaugeSlot('equiv') + '"><b>' + esc(g.equiv) + '</b></p>');
141
+ }
142
+ if (m.note !== '')
143
+ parts.push('<p class="' + portionGaugeSlot('note') + '">' + esc(m.note) + '</p>');
144
+ return parts.join('');
145
+ }
146
+ /** 形态 → 骨架(分派写在这里;加形态就是在这里加一支)。 */
147
+ const SKELETONS = {
148
+ convert: renderConvert,
149
+ gauge: renderGauge,
150
+ };
151
+ /** 渲染份量换算(纯函数:同样的入参恒产同样的字节;转义只经 `shared/escape.ts`)。 */
152
+ export function renderPortionGauge(input) {
153
+ const m = normalizePortionGauge(input);
154
+ const extra = m.extraClass === undefined ? '' : ' ' + m.extraClass;
155
+ return '<div class="' + PORTION_GAUGE_CLASS + ' is-' + m.form + extra + '">'
156
+ + SKELETONS[m.form](m) + '</div>';
157
+ }
158
+ //# sourceMappingURL=render.js.map