kireji 0.8.2 → 0.10.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 (291) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/src/app/kireji/description +1 -1
  4. package/src/app/kireji/editor/point.js +0 -1
  5. package/src/app/kireji/editor/sections/issues/part.html_.js +5 -0
  6. package/src/app/kireji/editor/sections/issues/part.json +3 -0
  7. package/src/app/kireji/editor/sections/issues/title +1 -0
  8. package/src/app/kireji/editor/sections/state/part.html_.js +8 -8
  9. package/src/app/kireji/editor/tab-group/build.js +0 -1
  10. package/src/app/kireji/editor/tab-group/view-update.js +0 -3
  11. package/src/app/kireji/issue-tracker/constants.js +3 -0
  12. package/src/app/kireji/issue-tracker/filters/apply.js +29 -0
  13. package/src/app/kireji/issue-tracker/filters/boolean/part.json +10 -0
  14. package/src/app/kireji/issue-tracker/filters/boolean/point.js +7 -0
  15. package/src/app/kireji/issue-tracker/filters/boolean/view-update.js +1 -0
  16. package/src/app/kireji/issue-tracker/filters/constants.js +2 -0
  17. package/src/app/kireji/issue-tracker/filters/dropdown/constants.js +2 -0
  18. package/src/app/kireji/issue-tracker/filters/dropdown/none/part.json +1 -0
  19. package/src/app/kireji/issue-tracker/filters/dropdown/part.html_.js +15 -0
  20. package/src/app/kireji/issue-tracker/filters/dropdown/part.json +3 -0
  21. package/src/app/kireji/issue-tracker/filters/dropdown/priority/part.json +1 -0
  22. package/src/app/kireji/issue-tracker/filters/dropdown/status/part.json +1 -0
  23. package/src/app/kireji/issue-tracker/filters/dropdown/type.d.ts +12 -0
  24. package/src/app/kireji/issue-tracker/filters/dropdown/view-update.js +10 -0
  25. package/src/app/kireji/issue-tracker/filters/order/by/date/part.json +1 -0
  26. package/src/app/kireji/issue-tracker/filters/order/by/part.json +9 -0
  27. package/src/app/kireji/issue-tracker/filters/order/by/priority/part.json +1 -0
  28. package/src/app/kireji/issue-tracker/filters/order/by/status/part.json +1 -0
  29. package/src/app/kireji/issue-tracker/filters/order/by/title/part.json +1 -0
  30. package/src/app/kireji/issue-tracker/filters/order/by/type.d.ts +11 -0
  31. package/src/app/kireji/issue-tracker/filters/order/by/view-update.js +2 -0
  32. package/src/app/kireji/issue-tracker/filters/order/descending/part.json +3 -0
  33. package/src/app/kireji/issue-tracker/filters/order/descending/view-update.js +6 -0
  34. package/src/app/kireji/issue-tracker/filters/order/part.json +3 -0
  35. package/src/app/kireji/issue-tracker/filters/order/type.d.ts +10 -0
  36. package/src/app/kireji/issue-tracker/filters/part.css +149 -0
  37. package/src/app/kireji/issue-tracker/filters/part.html_.js +13 -0
  38. package/src/app/kireji/issue-tracker/filters/part.json +12 -0
  39. package/src/app/kireji/issue-tracker/filters/point.js +27 -0
  40. package/src/app/kireji/issue-tracker/filters/priority/a/part.json +3 -0
  41. package/src/app/kireji/issue-tracker/filters/priority/b/part.json +3 -0
  42. package/src/app/kireji/issue-tracker/filters/priority/c/part.json +3 -0
  43. package/src/app/kireji/issue-tracker/filters/priority/part.json +3 -0
  44. package/src/app/kireji/issue-tracker/filters/priority/type.d.ts +11 -0
  45. package/src/app/kireji/issue-tracker/filters/status/doing/part.json +3 -0
  46. package/src/app/kireji/issue-tracker/filters/status/done/part.json +3 -0
  47. package/src/app/kireji/issue-tracker/filters/status/part.json +8 -0
  48. package/src/app/kireji/issue-tracker/filters/status/to-do/part.json +3 -0
  49. package/src/app/kireji/issue-tracker/filters/status/type.d.ts +11 -0
  50. package/src/app/kireji/issue-tracker/filters/type.d.ts +17 -0
  51. package/src/app/kireji/issue-tracker/filters/view-hydrate.js +15 -0
  52. package/src/app/kireji/issue-tracker/filters/view-update.js +1 -0
  53. package/src/app/kireji/issue-tracker/issues.html_.js +1 -0
  54. package/src/app/kireji/issue-tracker/menu-appear-on +1 -0
  55. package/src/app/kireji/issue-tracker/part.css_.js +1 -0
  56. package/src/app/kireji/issue-tracker/part.html_.js +4 -0
  57. package/src/app/kireji/issue-tracker/part.json +9 -0
  58. package/src/app/kireji/issue-tracker/pathname-canonical_.js +1 -0
  59. package/src/app/kireji/issue-tracker/pathname-translate-canonical.js +39 -0
  60. package/src/app/kireji/issue-tracker/scroller/part.json +3 -0
  61. package/src/app/kireji/issue-tracker/scroller/query +1 -0
  62. package/src/app/kireji/issue-tracker/sections/issues/1776193480/description +1 -0
  63. package/src/app/kireji/issue-tracker/sections/issues/1776193480/part.json +3 -0
  64. package/src/app/kireji/issue-tracker/sections/issues/1776193480/status +1 -0
  65. package/src/app/kireji/issue-tracker/sections/issues/1776193480/title +1 -0
  66. package/src/app/kireji/issue-tracker/sections/issues/1776193941/affects_.js +3 -0
  67. package/src/app/kireji/issue-tracker/sections/issues/1776193941/description +1 -0
  68. package/src/app/kireji/issue-tracker/sections/issues/1776193941/part.json +3 -0
  69. package/src/app/kireji/issue-tracker/sections/issues/1776193941/priority +1 -0
  70. package/src/app/kireji/issue-tracker/sections/issues/1776193941/title +1 -0
  71. package/src/app/kireji/issue-tracker/sections/issues/1776204452/description +1 -0
  72. package/src/app/kireji/issue-tracker/sections/issues/1776204452/part.json +3 -0
  73. package/src/app/kireji/issue-tracker/sections/issues/1776204452/priority +1 -0
  74. package/src/app/kireji/issue-tracker/sections/issues/1776204452/title +1 -0
  75. package/src/app/kireji/issue-tracker/sections/issues/1776204550/description +1 -0
  76. package/src/app/kireji/issue-tracker/sections/issues/1776204550/part.json +3 -0
  77. package/src/app/kireji/issue-tracker/sections/issues/1776204550/priority +1 -0
  78. package/src/app/kireji/issue-tracker/sections/issues/1776204550/title +1 -0
  79. package/src/app/kireji/issue-tracker/sections/issues/1776204640/affects_.js +3 -0
  80. package/src/app/kireji/issue-tracker/sections/issues/1776204640/description +5 -0
  81. package/src/app/kireji/issue-tracker/sections/issues/1776204640/part.json +3 -0
  82. package/src/app/kireji/issue-tracker/sections/issues/1776204640/priority +1 -0
  83. package/src/app/kireji/issue-tracker/sections/issues/1776204640/status +1 -0
  84. package/src/app/kireji/issue-tracker/sections/issues/1776204640/title +1 -0
  85. package/src/app/kireji/issue-tracker/sections/issues/1776204869/description +1 -0
  86. package/src/app/kireji/issue-tracker/sections/issues/1776204869/part.json +3 -0
  87. package/src/app/kireji/issue-tracker/sections/issues/1776204869/priority +1 -0
  88. package/src/app/kireji/issue-tracker/sections/issues/1776204869/status +1 -0
  89. package/src/app/kireji/issue-tracker/sections/issues/1776204869/title +1 -0
  90. package/src/app/kireji/issue-tracker/sections/issues/1776204979/affects_.js +3 -0
  91. package/src/app/kireji/issue-tracker/sections/issues/1776204979/description +1 -0
  92. package/src/app/kireji/issue-tracker/sections/issues/1776204979/part.json +3 -0
  93. package/src/app/kireji/issue-tracker/sections/issues/1776204979/priority +1 -0
  94. package/src/app/kireji/issue-tracker/sections/issues/1776204979/title +1 -0
  95. package/src/app/kireji/issue-tracker/sections/issues/1776205152/affects_.js +4 -0
  96. package/src/app/kireji/issue-tracker/sections/issues/1776205152/description +30 -0
  97. package/src/app/kireji/issue-tracker/sections/issues/1776205152/part.json +3 -0
  98. package/src/app/kireji/issue-tracker/sections/issues/1776205152/priority +1 -0
  99. package/src/app/kireji/issue-tracker/sections/issues/1776205152/status +1 -0
  100. package/src/app/kireji/issue-tracker/sections/issues/1776205152/title +1 -0
  101. package/src/app/kireji/issue-tracker/sections/issues/1776205544/description +5 -0
  102. package/src/app/kireji/issue-tracker/sections/issues/1776205544/links_.js +1 -0
  103. package/src/app/kireji/issue-tracker/sections/issues/1776205544/part.json +3 -0
  104. package/src/app/kireji/issue-tracker/sections/issues/1776205544/title +1 -0
  105. package/src/app/kireji/issue-tracker/sections/issues/1776205973/affects_.js +3 -0
  106. package/src/app/kireji/issue-tracker/sections/issues/1776205973/description +6 -0
  107. package/src/app/kireji/issue-tracker/sections/issues/1776205973/part.json +3 -0
  108. package/src/app/kireji/issue-tracker/sections/issues/1776205973/priority +1 -0
  109. package/src/app/kireji/issue-tracker/sections/issues/1776205973/title +1 -0
  110. package/src/app/kireji/issue-tracker/sections/issues/1776206413/affects_.js +3 -0
  111. package/src/app/kireji/issue-tracker/sections/issues/1776206413/description +1 -0
  112. package/src/app/kireji/issue-tracker/sections/issues/1776206413/part.json +3 -0
  113. package/src/app/kireji/issue-tracker/sections/issues/1776206413/priority +1 -0
  114. package/src/app/kireji/issue-tracker/sections/issues/1776206413/title +1 -0
  115. package/src/app/kireji/issue-tracker/sections/issues/1776206609/affects_.js +3 -0
  116. package/src/app/kireji/issue-tracker/sections/issues/1776206609/description +1 -0
  117. package/src/app/kireji/issue-tracker/sections/issues/1776206609/part.json +3 -0
  118. package/src/app/kireji/issue-tracker/sections/issues/1776206609/priority +1 -0
  119. package/src/app/kireji/issue-tracker/sections/issues/1776206609/title +1 -0
  120. package/src/app/kireji/issue-tracker/sections/issues/1776206848/affects_.js +3 -0
  121. package/src/app/kireji/issue-tracker/sections/issues/1776206848/description +1 -0
  122. package/src/app/kireji/issue-tracker/sections/issues/1776206848/part.json +3 -0
  123. package/src/app/kireji/issue-tracker/sections/issues/1776206848/priority +1 -0
  124. package/src/app/kireji/issue-tracker/sections/issues/1776206848/title +1 -0
  125. package/src/app/kireji/issue-tracker/sections/issues/1776207072/description +1 -0
  126. package/src/app/kireji/issue-tracker/sections/issues/1776207072/part.json +3 -0
  127. package/src/app/kireji/issue-tracker/sections/issues/1776207072/status +1 -0
  128. package/src/app/kireji/issue-tracker/sections/issues/1776207072/title +1 -0
  129. package/src/app/kireji/issue-tracker/sections/issues/1776207212/description +1 -0
  130. package/src/app/kireji/issue-tracker/sections/issues/1776207212/part.json +3 -0
  131. package/src/app/kireji/issue-tracker/sections/issues/1776207212/status +1 -0
  132. package/src/app/kireji/issue-tracker/sections/issues/1776207212/title +1 -0
  133. package/src/app/kireji/issue-tracker/sections/issues/1776207331/affects_.js +5 -0
  134. package/src/app/kireji/issue-tracker/sections/issues/1776207331/description +1 -0
  135. package/src/app/kireji/issue-tracker/sections/issues/1776207331/part.json +3 -0
  136. package/src/app/kireji/issue-tracker/sections/issues/1776207331/status +1 -0
  137. package/src/app/kireji/issue-tracker/sections/issues/1776207331/title +1 -0
  138. package/src/app/kireji/issue-tracker/sections/issues/1776207644/description +1 -0
  139. package/src/app/kireji/issue-tracker/sections/issues/1776207644/links_.js +1 -0
  140. package/src/app/kireji/issue-tracker/sections/issues/1776207644/part.json +3 -0
  141. package/src/app/kireji/issue-tracker/sections/issues/1776207644/priority +1 -0
  142. package/src/app/kireji/issue-tracker/sections/issues/1776207644/status +1 -0
  143. package/src/app/kireji/issue-tracker/sections/issues/1776207644/title +1 -0
  144. package/src/app/kireji/issue-tracker/sections/issues/1776208336/affects_.js +3 -0
  145. package/src/app/kireji/issue-tracker/sections/issues/1776208336/description +1 -0
  146. package/src/app/kireji/issue-tracker/sections/issues/1776208336/part.json +3 -0
  147. package/src/app/kireji/issue-tracker/sections/issues/1776208336/priority +1 -0
  148. package/src/app/kireji/issue-tracker/sections/issues/1776208336/title +1 -0
  149. package/src/app/kireji/issue-tracker/sections/issues/1776208669/description +1 -0
  150. package/src/app/kireji/issue-tracker/sections/issues/1776208669/links_.js +1 -0
  151. package/src/app/kireji/issue-tracker/sections/issues/1776208669/part.json +3 -0
  152. package/src/app/kireji/issue-tracker/sections/issues/1776208669/status +1 -0
  153. package/src/app/kireji/issue-tracker/sections/issues/1776208669/title +1 -0
  154. package/src/app/kireji/issue-tracker/sections/issues/1776208910/affects_.js +3 -0
  155. package/src/app/kireji/issue-tracker/sections/issues/1776208910/description +1 -0
  156. package/src/app/kireji/issue-tracker/sections/issues/1776208910/part.json +3 -0
  157. package/src/app/kireji/issue-tracker/sections/issues/1776208910/title +1 -0
  158. package/src/app/kireji/issue-tracker/sections/issues/1776209115/affects_.js +3 -0
  159. package/src/app/kireji/issue-tracker/sections/issues/1776209115/description +1 -0
  160. package/src/app/kireji/issue-tracker/sections/issues/1776209115/links_.js +3 -0
  161. package/src/app/kireji/issue-tracker/sections/issues/1776209115/part.json +3 -0
  162. package/src/app/kireji/issue-tracker/sections/issues/1776209115/title +1 -0
  163. package/src/app/kireji/issue-tracker/sections/issues/1776209268/description +5 -0
  164. package/src/app/kireji/issue-tracker/sections/issues/1776209268/part.json +3 -0
  165. package/src/app/kireji/issue-tracker/sections/issues/1776209268/priority +1 -0
  166. package/src/app/kireji/issue-tracker/sections/issues/1776209268/title +1 -0
  167. package/src/app/kireji/issue-tracker/sections/issues/1776211364/affects_.js +6 -0
  168. package/src/app/kireji/issue-tracker/sections/issues/1776211364/description +1 -0
  169. package/src/app/kireji/issue-tracker/sections/issues/1776211364/links_.js +5 -0
  170. package/src/app/kireji/issue-tracker/sections/issues/1776211364/part.json +3 -0
  171. package/src/app/kireji/issue-tracker/sections/issues/1776211364/priority +1 -0
  172. package/src/app/kireji/issue-tracker/sections/issues/1776211364/status +1 -0
  173. package/src/app/kireji/issue-tracker/sections/issues/1776211364/title +1 -0
  174. package/src/app/kireji/issue-tracker/sections/issues/1776212048/affects_.js +3 -0
  175. package/src/app/kireji/issue-tracker/sections/issues/1776212048/description +1 -0
  176. package/src/app/kireji/issue-tracker/sections/issues/1776212048/links_.js +3 -0
  177. package/src/app/kireji/issue-tracker/sections/issues/1776212048/part.json +3 -0
  178. package/src/app/kireji/issue-tracker/sections/issues/1776212048/priority +1 -0
  179. package/src/app/kireji/issue-tracker/sections/issues/1776212048/title +1 -0
  180. package/src/app/kireji/issue-tracker/sections/issues/1776212294/affects_.js +3 -0
  181. package/src/app/kireji/issue-tracker/sections/issues/1776212294/description +1 -0
  182. package/src/app/kireji/issue-tracker/sections/issues/1776212294/links_.js +3 -0
  183. package/src/app/kireji/issue-tracker/sections/issues/1776212294/part.json +3 -0
  184. package/src/app/kireji/issue-tracker/sections/issues/1776212294/priority +1 -0
  185. package/src/app/kireji/issue-tracker/sections/issues/1776212294/title +1 -0
  186. package/src/app/kireji/issue-tracker/sections/issues/1776212412/affects_.js +3 -0
  187. package/src/app/kireji/issue-tracker/sections/issues/1776212412/description +1 -0
  188. package/src/app/kireji/issue-tracker/sections/issues/1776212412/links_.js +3 -0
  189. package/src/app/kireji/issue-tracker/sections/issues/1776212412/part.json +3 -0
  190. package/src/app/kireji/issue-tracker/sections/issues/1776212412/priority +1 -0
  191. package/src/app/kireji/issue-tracker/sections/issues/1776212412/title +1 -0
  192. package/src/app/kireji/issue-tracker/sections/issues/1776212585/description +3 -0
  193. package/src/app/kireji/issue-tracker/sections/issues/1776212585/links_.js +3 -0
  194. package/src/app/kireji/issue-tracker/sections/issues/1776212585/part.json +3 -0
  195. package/src/app/kireji/issue-tracker/sections/issues/1776212585/priority +1 -0
  196. package/src/app/kireji/issue-tracker/sections/issues/1776212585/title +1 -0
  197. package/src/app/kireji/issue-tracker/sections/issues/1776212811/description +1 -0
  198. package/src/app/kireji/issue-tracker/sections/issues/1776212811/links_.js +3 -0
  199. package/src/app/kireji/issue-tracker/sections/issues/1776212811/part.json +3 -0
  200. package/src/app/kireji/issue-tracker/sections/issues/1776212811/priority +1 -0
  201. package/src/app/kireji/issue-tracker/sections/issues/1776212811/title +1 -0
  202. package/src/app/kireji/issue-tracker/sections/issues/1776213238/description +4 -0
  203. package/src/app/kireji/issue-tracker/sections/issues/1776213238/part.json +3 -0
  204. package/src/app/kireji/issue-tracker/sections/issues/1776213238/priority +1 -0
  205. package/src/app/kireji/issue-tracker/sections/issues/1776213238/title +1 -0
  206. package/src/app/kireji/issue-tracker/sections/issues/1776262432/description +1 -0
  207. package/src/app/kireji/issue-tracker/sections/issues/1776262432/links_.js +8 -0
  208. package/src/app/kireji/issue-tracker/sections/issues/1776262432/part.json +3 -0
  209. package/src/app/kireji/issue-tracker/sections/issues/1776262432/priority +1 -0
  210. package/src/app/kireji/issue-tracker/sections/issues/1776262432/status +1 -0
  211. package/src/app/kireji/issue-tracker/sections/issues/1776262432/title +1 -0
  212. package/src/app/kireji/issue-tracker/sections/issues/1776263309/description +3 -0
  213. package/src/app/kireji/issue-tracker/sections/issues/1776263309/links_.js +3 -0
  214. package/src/app/kireji/issue-tracker/sections/issues/1776263309/part.json +3 -0
  215. package/src/app/kireji/issue-tracker/sections/issues/1776263309/priority +1 -0
  216. package/src/app/kireji/issue-tracker/sections/issues/1776263309/status +1 -0
  217. package/src/app/kireji/issue-tracker/sections/issues/1776263309/title +1 -0
  218. package/src/app/kireji/issue-tracker/sections/issues/1776282415/description +1 -0
  219. package/src/app/kireji/issue-tracker/sections/issues/1776282415/links_.js +3 -0
  220. package/src/app/kireji/issue-tracker/sections/issues/1776282415/part.json +3 -0
  221. package/src/app/kireji/issue-tracker/sections/issues/1776282415/priority +1 -0
  222. package/src/app/kireji/issue-tracker/sections/issues/1776282415/status +1 -0
  223. package/src/app/kireji/issue-tracker/sections/issues/1776282415/title +1 -0
  224. package/src/app/kireji/issue-tracker/sections/issues/1776307785/affects_.js +3 -0
  225. package/src/app/kireji/issue-tracker/sections/issues/1776307785/description +1 -0
  226. package/src/app/kireji/issue-tracker/sections/issues/1776307785/part.json +3 -0
  227. package/src/app/kireji/issue-tracker/sections/issues/1776307785/priority +1 -0
  228. package/src/app/kireji/issue-tracker/sections/issues/1776307785/status +1 -0
  229. package/src/app/kireji/issue-tracker/sections/issues/1776307785/title +1 -0
  230. package/src/app/kireji/issue-tracker/sections/issues/issue/URL-canonical_.js +1 -0
  231. package/src/app/kireji/issue-tracker/sections/issues/issue/affects_.js +3 -0
  232. package/src/app/kireji/issue-tracker/sections/issues/issue/card.html_.js +8 -0
  233. package/src/app/kireji/issue-tracker/sections/issues/issue/close.js +7 -0
  234. package/src/app/kireji/issue-tracker/sections/issues/issue/constants.js +4 -0
  235. package/src/app/kireji/issue-tracker/sections/issues/issue/date-nice.js +1 -0
  236. package/src/app/kireji/issue-tracker/sections/issues/issue/links_.js +1 -0
  237. package/src/app/kireji/issue-tracker/sections/issues/issue/part.html_.js +13 -0
  238. package/src/app/kireji/issue-tracker/sections/issues/issue/part.json +12 -0
  239. package/src/app/kireji/issue-tracker/sections/issues/issue/pathname-canonical_.js +1 -0
  240. package/src/app/kireji/issue-tracker/sections/issues/issue/pathname_.js +1 -0
  241. package/src/app/kireji/issue-tracker/sections/issues/issue/priority +1 -0
  242. package/src/app/kireji/issue-tracker/sections/issues/issue/status +1 -0
  243. package/src/app/kireji/issue-tracker/sections/issues/issue/type.d.ts +15 -0
  244. package/src/app/kireji/issue-tracker/sections/issues/issue/urls.xml_.js +7 -0
  245. package/src/app/kireji/issue-tracker/sections/issues/issue/view-add.js +1 -0
  246. package/src/app/kireji/issue-tracker/sections/issues/issue/view-remove.js +1 -0
  247. package/src/app/kireji/issue-tracker/sections/issues/part.json +3 -0
  248. package/src/app/kireji/issue-tracker/sections/issues/type.d.ts +6 -0
  249. package/src/app/kireji/issue-tracker/sections/part.json +3 -0
  250. package/src/app/kireji/issue-tracker/sections/summary/URL-canonical_.js +1 -0
  251. package/src/app/kireji/issue-tracker/sections/summary/constants.js +4 -0
  252. package/src/app/kireji/issue-tracker/sections/summary/part.html_.js +1 -0
  253. package/src/app/kireji/issue-tracker/sections/summary/pathname-canonical +1 -0
  254. package/src/app/kireji/issue-tracker/sections/summary/title +1 -0
  255. package/src/app/kireji/issue-tracker/sections/summary/type.d.ts +7 -0
  256. package/src/app/kireji/issue-tracker/sections/summary/urls.xml_.js +7 -0
  257. package/src/app/kireji/issue-tracker/sections/type.d.ts +9 -0
  258. package/src/app/kireji/issue-tracker/static.css +255 -0
  259. package/src/app/kireji/issue-tracker/title +1 -0
  260. package/src/app/kireji/issue-tracker/type.d.ts +13 -0
  261. package/src/app/kireji/issue-tracker/urls.xml_.js +1 -0
  262. package/src/app/kireji/meta-description +1 -1
  263. package/src/app/kireji/type.d.ts +1 -0
  264. package/src/build.js +0 -2
  265. package/src/description +1 -1
  266. package/src/landing-model.json +21 -0
  267. package/src/parts/abstract/mesh/point-tri-that-contains.js +1 -1
  268. package/src/parts/abstract/mesh/ray-cast.js +1 -4
  269. package/src/parts/abstract/mesh/routeID-model-to.js +0 -1
  270. package/src/parts/abstract/part/build.js +20 -12
  271. package/src/parts/abstract/part/mathML.js +0 -2
  272. package/src/parts/abstract/part/type.d.ts +7 -3
  273. package/src/parts/abstract/part-outliner/itemHTML-recursive.js +1 -3
  274. package/src/parts/abstract/permutation/build.js +0 -18
  275. package/src/parts/abstract/permutation/mathML-subpart.js +0 -2
  276. package/src/parts/abstract/permutation/view-hydrate.js +0 -1
  277. package/src/parts/abstract/permutation/view-update.js +0 -2
  278. package/src/parts/abstract/scroller/build.js +0 -1
  279. package/src/parts/abstract/type.d.ts +8 -1
  280. package/src/parts/core/client/async-install.js +1 -1
  281. package/src/parts/core/server/sync-install.js +0 -1
  282. package/src/parts/desktop/color/part.html_.js +1 -1
  283. package/src/parts/desktop/era/modern/part.css +5 -10
  284. package/src/parts/desktop/era/part.html_.js +1 -1
  285. package/src/parts/desktop/era/vintage/static.css +5 -7
  286. package/src/parts/desktop/task-bar/tray/fullscreen/point.js +0 -1
  287. package/src/parts/desktop/task-bar/tray/share/point.js +0 -2
  288. package/src/{kireji.schema.json → schema.kireji.json} +3 -3
  289. package/src/schema.part.json +37 -0
  290. package/src/static.css +2 -2
  291. package/src/type.d.ts +4 -4
@@ -0,0 +1,255 @@
1
+ body.modern:not(.dark) #issue-tracker_kireji_app {
2
+ background-color: white;
3
+ }
4
+
5
+ #issue-tracker_kireji_app {
6
+ display: flex;
7
+ flex-flow: column nowrap;
8
+ }
9
+
10
+ body.modern #issue-tracker_kireji_app {
11
+ padding: var(--spacing);
12
+ }
13
+
14
+ #kireji-issue-modal {
15
+ position: absolute;
16
+ background-color: var(--bg);
17
+ padding: var(--spacing);
18
+ display: flex;
19
+ gap: var(--spacing);
20
+ flex-flow: column nowrap;
21
+ }
22
+
23
+ body.modern #kireji-issue-modal {
24
+ left: calc(3 * var(--spacing));
25
+ right: calc(3 * var(--spacing));
26
+ top: calc(2 * var(--spacing));
27
+ bottom: calc(2 * var(--spacing));
28
+ }
29
+
30
+ body.vintage #kireji-issue-modal {
31
+ left: 0;
32
+ right: 0;
33
+ top: 0;
34
+ bottom: 0;
35
+ }
36
+
37
+ #kireji-issue-modal .exit-button {
38
+ position: absolute;
39
+ right: var(--spacing);
40
+ top: var(--spacing);
41
+ width: var(--spacing);
42
+ height: var(--spacing);
43
+ font-size: var(--spacing);
44
+ line-height: var(--spacing);
45
+ text-align: center;
46
+ cursor: pointer;
47
+ pointer-events: all;
48
+ }
49
+
50
+ body.modern #kireji-issue-modal {
51
+ border-radius: calc(var(--spacing) / 2);
52
+ }
53
+
54
+ body.modern:not(.dark) #kireji-issue-modal {
55
+ background-color: white;
56
+ }
57
+
58
+ body.vintage #kireji-issue-modal {
59
+ background-color: var(--bg);
60
+ }
61
+
62
+ #issue-tracker_kireji_app:has(#kireji-issue-modal:not(:empty)) {
63
+ pointer-events: none;
64
+ color: var(--fg-mode);
65
+ background-color: var(--bg-un-mode);
66
+ }
67
+
68
+ #kireji-issue-modal:empty {
69
+ display: none;
70
+ }
71
+
72
+ #kireji-issue-modal>* {
73
+ margin: 0;
74
+ padding: 0;
75
+ }
76
+
77
+ #kireji-issue-modal>h1 {
78
+ margin-right: var(--spacing);
79
+ font-size: var(--spacing);
80
+ line-height: var(--spacing);
81
+ }
82
+
83
+ #kireji-issue-modal .issue-description {
84
+ white-space: pre-wrap;
85
+ }
86
+
87
+ #issue-tracker_kireji_app .issue-title {
88
+ flex: 1;
89
+ overflow: hidden;
90
+ text-overflow: ellipsis;
91
+ white-space: pre;
92
+ }
93
+
94
+ body.modern #issue-tracker_kireji_app .issue-title {
95
+ font-weight: 500;
96
+ }
97
+
98
+ #issue-tracker_kireji_app :is(.issue-table>scroller->scroll-content, .issue-links) {
99
+ display: flex;
100
+ flex-flow: column nowrap;
101
+ width: 100%;
102
+ }
103
+
104
+ #issue-tracker_kireji_app .issue-row {
105
+ position: relative;
106
+ display: flex;
107
+ text-decoration: none;
108
+ color: inherit;
109
+ }
110
+
111
+ body.modern #issue-tracker_kireji_app .issue-row {
112
+ padding: calc(var(--spacing) / 2) 0;
113
+ }
114
+
115
+ body.modern #issue-tracker_kireji_app .issue-row:not(.header) {
116
+ border-radius: calc(var(--spacing) / 3);
117
+ cursor: pointer;
118
+ }
119
+
120
+ body.modern #issue-tracker_kireji_app .issue-row:not(.header):hover {
121
+ background-color: var(--accent-mode-est);
122
+ }
123
+
124
+ body.vintage #issue-tracker_kireji_app .issue-row>* {
125
+ padding: 4px;
126
+ }
127
+
128
+ #issue-tracker_kireji_app .issue-row>* {
129
+ line-height: var(--spacing);
130
+ }
131
+
132
+ body.vintage #issue-tracker_kireji_app .issue-row:not(.header):hover {
133
+ background-color: var(--accent);
134
+ color: white;
135
+ }
136
+
137
+ body.vintage.dark #issue-tracker_kireji_app .issue-row:not(.header):hover {
138
+ color: black;
139
+ }
140
+
141
+ #issue-tracker_kireji_app :is(.issue-status, .issue-priority, .issue-date) {
142
+ width: var(--column-width);
143
+ display: inline-block;
144
+ }
145
+
146
+ #issue-tracker_kireji_app .issue-row>span {
147
+ position: relative;
148
+ }
149
+
150
+ body.vintage #issue-tracker_kireji_app .issue-date {
151
+ --column-width: calc(7 * var(--spacing));
152
+ }
153
+
154
+ body.modern #issue-tracker_kireji_app .issue-date {
155
+ --column-width: calc(7 * var(--spacing));
156
+ }
157
+
158
+ body.vintage #issue-tracker_kireji_app .issue-status {
159
+ --column-width: 76px;
160
+ }
161
+
162
+ body.modern #issue-tracker_kireji_app .issue-status {
163
+ --column-width: calc(6 * var(--spacing));
164
+ }
165
+
166
+ body.vintage #issue-tracker_kireji_app .issue-priority {
167
+ --column-width: 42px;
168
+ }
169
+
170
+ body.modern #issue-tracker_kireji_app .issue-priority {
171
+ --column-width: calc(4 * var(--spacing));
172
+ }
173
+
174
+ body.modern #issue-tracker_kireji_app :not(.header)>:is(.issue-status, .issue-priority, .issue-date) {
175
+ border-radius: calc(var(--spacing) / 4);
176
+ font-weight: 600;
177
+ font-size: calc(var(--spacing) * .7);
178
+ text-align: center;
179
+ line-height: inherit;
180
+ }
181
+
182
+ #issue-tracker_kireji_app :is(.issue-status, .issue-date) {
183
+ white-space: nowrap;
184
+ }
185
+
186
+ body.modern #issue-tracker_kireji_app :not(.header)>.issue-status {
187
+ color: steelblue;
188
+ background-color: powderblue;
189
+ }
190
+
191
+ body.modern.dark #issue-tracker_kireji_app :not(.header)>.issue-status {
192
+ color: powderblue;
193
+ background-color: steelblue;
194
+ }
195
+
196
+ body.modern #issue-tracker_kireji_app :not(.header)[data-status="doing"]>.issue-status {
197
+ color: brown;
198
+ background-color: wheat;
199
+ }
200
+
201
+ body.modern.dark #issue-tracker_kireji_app :not(.header)[data-status="doing"]>.issue-status {
202
+ color: wheat;
203
+ background-color: peru;
204
+ }
205
+
206
+ body.modern #issue-tracker_kireji_app :not(.header)[data-status="done"]>.issue-status {
207
+ color: seagreen;
208
+ background-color: palegreen;
209
+ }
210
+
211
+ body.modern.dark #issue-tracker_kireji_app :not(.header)[data-status="done"]>.issue-status {
212
+ color: palegreen;
213
+ background-color: seagreen;
214
+ }
215
+
216
+ body.modern #issue-tracker_kireji_app :not(.header)[data-priority="A"]>.issue-priority {
217
+ color: red;
218
+ }
219
+
220
+ body.modern #issue-tracker_kireji_app :not(.header)[data-priority="B"]>.issue-priority {
221
+ color: orange;
222
+ }
223
+
224
+ body.modern #issue-tracker_kireji_app :not(.header)[data-priority="C"]>.issue-priority {
225
+ color: green;
226
+ }
227
+
228
+ #issue-tracker_kireji_app .issue-table {
229
+ min-height: 0;
230
+ position: relative;
231
+ overflow: hidden;
232
+ flex: 1;
233
+ }
234
+
235
+ #kireji-issue-modal .issue-row {
236
+ pointer-events: all;
237
+ }
238
+
239
+ body.vintage #issue-tracker_kireji_app {
240
+ padding: 2px;
241
+ box-shadow: var(--deep-inset);
242
+ }
243
+
244
+ body.vintage #issue-tracker_kireji_app :is(.issue-table, .issue-links) {
245
+ background: white;
246
+ }
247
+
248
+ body.vintage.dark #issue-tracker_kireji_app :is(.issue-table, .issue-links) {
249
+ background: black;
250
+ }
251
+
252
+ body.vintage #issue-tracker_kireji_app .issue-links {
253
+ padding: 2px;
254
+ box-shadow: var(--deep-inset);
255
+ }
@@ -0,0 +1 @@
1
+ Issue Tracker
@@ -0,0 +1,13 @@
1
+ declare interface IKirejiIssueTrackerApp
2
+ extends IApplication<IKirejiApp, IPartAny> {
3
+
4
+ // Subparts.
5
+ readonly scroller: IScroller<IKirejiIssueTrackerApp>
6
+ readonly sections: IKirejiIssueSections
7
+ readonly filters: IKirejiIssueFilters
8
+
9
+ // Serialized Properties.
10
+ readonly "issues.html": string
11
+ }
12
+
13
+ declare const kirejiIssueTracker: IKirejiIssueTrackerApp
@@ -0,0 +1 @@
1
+ return kirejiIssueSections["urls.xml"]
@@ -1 +1 @@
1
- This is a work-in-progress IDE. Everything is currently read-only. Explore the component model and hash function that power the Kireji Demo App Ecosystem.
1
+ This is a work-in-progress IDE. Everything is currently read-only. Explore the component model and hash function that power the Kireji Demo Ecosystem.
@@ -5,6 +5,7 @@ declare interface IKirejiApp
5
5
  readonly toolBar: IKirejiAppToolBar
6
6
  readonly sidebar: IKirejiAppSidebar
7
7
  readonly editor: IKirejiAppEditor
8
+ readonly issueTracker: IKirejiIssueTrackerApp
8
9
  }
9
10
 
10
11
  declare const kirejiApp: IKirejiApp
package/src/build.js CHANGED
@@ -894,7 +894,6 @@ function ƒ(_, compressedSubjectOrigins) {
894
894
  return totalInheritors
895
895
  },
896
896
  configureArchiveContent = () => {
897
- // TODO: Consider merging user landing model with stock landing model instead of replacing it.
898
897
  const landingModel = JSON.parse(_["landing-model.json"])
899
898
 
900
899
  let desktopFeatures = 3
@@ -1050,7 +1049,6 @@ function ƒ(_, compressedSubjectOrigins) {
1050
1049
  }
1051
1050
 
1052
1051
  ƒ({
1053
- // TODO: fix source mapping bugs.
1054
1052
  verbosity: "1",
1055
1053
  change: "major",
1056
1054
  hangHydration: "0",
package/src/description CHANGED
@@ -1,4 +1,4 @@
1
- This part represents the root of the Kireji Demo App Ecosystem. Its domain name is the empty string ("", representing the DNS root), and all of its subparts represent top-level domains (TLDs) like ".com" and ".io".
1
+ This part represents the root of the Kireji Demo Ecosystem. Its domain name is the empty string ("", representing the DNS root), and all of its subparts represent top-level domains (TLDs) like ".com" and ".io".
2
2
 
3
3
  It forms the root of the runtime state space used to compute a two-way minimal perfect hash function (MPHF) across all hosted applications. When serialized, it inlines all metadata and file structure compiled from the repository at build time.
4
4
 
@@ -15,6 +15,27 @@
15
15
  "about": true
16
16
  }
17
17
  },
18
+ "issue-tracker": {
19
+ "sections": "summary",
20
+ "filters": {
21
+ "dropdown": "none",
22
+ "order": {
23
+ "descending": true,
24
+ "by": "date"
25
+ },
26
+ "priority": {
27
+ "a": true,
28
+ "b": true,
29
+ "c": true
30
+ },
31
+ "status": {
32
+ "doing": true,
33
+ "done": false,
34
+ "to-do": true
35
+ }
36
+ },
37
+ "scroller": 0
38
+ },
18
39
  "sidebar": {
19
40
  "outliner-domains": {
20
41
  "folders": [
@@ -2,7 +2,7 @@
2
2
  if (mesh.triIndex !== -1 && mesh.triContainsPoint(mesh.triIndex, POINT))
3
3
  return mesh.triIndex
4
4
 
5
- // Check all tris. TODO: Memoize neighbors.
5
+ // Check all tris.
6
6
  for (let triIndex = 0; triIndex < mesh.triTable.length; triIndex++)
7
7
  if (triIndex !== mesh.triIndex && mesh.triContainsPoint(triIndex, POINT))
8
8
  return triIndex
@@ -160,7 +160,7 @@ while (true) {
160
160
  }
161
161
 
162
162
  if (boundaryAppearsFlat) {
163
- // TODO: Consider using the line through the opposing neighbors to search for asymmetry in the mesh boundary.
163
+ // Do nothing for now...
164
164
  }
165
165
 
166
166
  // If there is no neighboring point, we are "stuck". The ray cast ends here.
@@ -176,7 +176,6 @@ while (true) {
176
176
  const distance = Vector.magnitude(vectorToNeighbor)
177
177
 
178
178
  // Construct a force vector pointing to the chosen neighbor.
179
- // TODO: speed should actually be reduced.
180
179
  const forceVectorToNeighbor = Vector.multiply(Vector.normalize(vectorToNeighbor), speed)
181
180
 
182
181
  // Compute travel time to reach the neighbor.
@@ -222,8 +221,6 @@ while (true) {
222
221
  }
223
222
 
224
223
  return safeIterationResult
225
-
226
- // TODO: Consider moving toward a 4-point neighbor instead.
227
224
  }
228
225
 
229
226
  // Set the neighbor as the new safe point.
@@ -1,4 +1,3 @@
1
- // TODO: Validate MODEL and handle out-of-range points.
2
1
  const triIndex = mesh.triThatContainsPoint(MODEL)
3
2
  const triData = mesh.triTable[triIndex]
4
3
  const row = triData.rows[Math.floor(MODEL.y) - triData.range.min]
@@ -1,15 +1,23 @@
1
- /* Sort ascending by cardinality to optimize Route ID encoding:
2
- 1. In mix parts, using the largest factor as the most significant digit
3
- prevents its large cardinality from being a multiplier for other factors.
4
- 2. In match parts, placing larger arms at the end of the address space
5
- prevents their large cardinalities from being offsets for smaller arms. */
6
- part.subparts.sort((a, b) => {
7
- /* Relational comparisons are used to avoid BigInt subtraction which
8
- would unnecessarily compute and store a third BigInt. */
9
- if (a.cardinality < b.cardinality) return -1
10
- if (a.cardinality > b.cardinality) return 1
11
- return 0
12
- })
1
+ part.subparts.sort((() => {
2
+
3
+ if (Array.isArray(part.manifest.order)) {
4
+ // If there is a custom order defined, just used that.
5
+ return (a, b) => part.manifest.order.indexOf(a.key) - part.manifest.order.indexOf(b.key)
6
+ }
7
+
8
+ /* Otherwise, sort ascending by cardinality to optimize Route ID encoding:
9
+ 1. In mix parts, using the largest factor as the most significant digit
10
+ prevents its large cardinality from being a multiplier for other factors.
11
+ 2. In match parts, placing larger arms at the end of the address space
12
+ prevents their large cardinalities from being offsets for smaller arms. */
13
+ return (a, b) => {
14
+ /* Relational comparisons are used to avoid BigInt subtraction which
15
+ would unnecessarily compute and store a third BigInt. */
16
+ if (a.cardinality < b.cardinality) return -1
17
+ if (a.cardinality > b.cardinality) return 1
18
+ return 0
19
+ }
20
+ })())
13
21
 
14
22
  part.define({
15
23
  dirty: { value: false, writable: true },
@@ -15,8 +15,6 @@ const expression = (() => {
15
15
  return (LABELS ? "<munder>" + (needsParentheses ? "" : "<mrow>") : "") + (needsParentheses ? "<mrow class=parenthetic><mo>(</mo>" : "") + terms.join("") + (needsParentheses ? `<mo>)</mo></mrow>` : "") + (LABELS ? (needsParentheses ? "" : "</mrow>") + `<munder><mo stretchy="true">&#x23df;</mo>${recurse(0, "none", false, false)}</munder></munder>` : "")
16
16
  })()
17
17
 
18
- // TODO: handle parenthesis!
19
-
20
18
  const showBracketBelow = DEPTH > 2
21
19
 
22
20
  return /* html */`${WRAP_IN_MATH_TAG ? "<math displaystyle=true><mrow>" : ""}${equationVariable}${expression}${equationValue}${WRAP_IN_MATH_TAG ? "</mrow></math>" : ""}`
@@ -64,6 +64,8 @@ declare interface IPart<TOwner, TSubpart>
64
64
  readonly cssVariableOfImage(IMAGE_NAME: string): string
65
65
  /** Collects every build function in the part's prototype chain and then calls them all on the part itself. */
66
66
  readonly startBuild(): void
67
+ /** Performs `part.modelToRouteID()` on MODEL and then performs `part.setRouteID()` on the resulting route ID. */
68
+ readonly setModel(MODEL: any)
67
69
  /** Sets the part's routeID, propagating it leafward and rootward and updating all views. If DELTA is true, then ROUTE_ID is added to the part's current route ID. */
68
70
  readonly setRouteID(ROUTE_ID: bigint, DELTA: boolean = false): void
69
71
  /** Recomputes and then updates the part's routeID in response to a change in the the given subpart's routeID.
@@ -199,10 +201,12 @@ declare type IRuntimePropertyDefinition<TOwner, TValue> = {
199
201
  declare interface IPartManifest {
200
202
  /** Whether or not the part should be considered a subpart of its parent part (abstract = false) or an uninstanceable prototype for other parts (abstract = true). */
201
203
  readonly abstract?: boolean
202
- /** Whether or not the part will be instanced (inherit = false) or retained (inherit = true) during the create step. */
203
- readonly inherit?: boolean
204
204
  /** The list of methods that the part adds. The prototype of the methods object is set to the part's prototype's manifest methods object. If no object is defined in a manifest, the empty object will be created automatically. */
205
- readonly methods: Record<string, string[]>
205
+ readonly methods?: Record<string, string[]>
206
+ /** The relative or absolute host name of the part that this part inherits from. The default value is `part`. */
207
+ readonly extends?: string
208
+ /** An optional string array of subpart keys representing the explicit order that the subparts should take in the part's subpart array. This affects how parts are iterated over and how they are integrated into the hash function. */
209
+ readonly order?: string[]
206
210
  }
207
211
 
208
212
  declare type IPartAny =
@@ -8,6 +8,4 @@ return partOutliner.getChildren(SUBJECT).map((childPart, i, childArray) => {
8
8
  const label = `<span class="label${childPart.isAbstract ? " abstract" : ""}">${partOutliner.getLabel(childPart)}</span>`
9
9
  const summary = `<summary ${partOutliner.pointAttr("point", partIndex)} data-index="${partIndex}"${partOutliner.isActive(childPart) ? " data-active" : ""}${IS_LAST_OF_TYPE && !hasSubparts ? ' id="lastOutlinerItem"' : ""}><outliner-spacer style="--depth:${DEPTH + +!hasSubparts}"></outliner-spacer>${handle}${symbol}${label}</summary>`
10
10
  return `<details${hasSubparts ? "" : ` class=empty`} ${isOpen ? "open" : ""}>${summary}${recurse(childPart, DEPTH + 1, IS_LAST_OF_TYPE && i === childArray.length - 1)}</details>`
11
- }).join("")
12
-
13
- /* TODO: the children of collapsed outliner items should not be rendered into HTML as it bloats the fetch size. Instead, they should be rendered during hydration. */
11
+ }).join("")
@@ -1,21 +1,3 @@
1
-
2
- /* TODO:
3
- * 1. Instantiate a concrete innstance of an abstract part per-instance. Offload all per-instance logic there.
4
- * - Such a part will have optional subparts 'instance' and 'meta'
5
- * - "instance" corresponds to each instance part's statically-sized data model
6
- * - which also receives its specific subject assigment from the outside (not part of it's route ID)
7
- * - "meta" (name pending) corresponds to a non-instance-specific part whose cardinality is dependant upon the number of instances.
8
- * - get its implementation details by generalizing the active and preview tab data in the tab group.
9
- * - At build time, the parent permutation will need to be able to query this part to get its cardinality once for every instance up to the max count.
10
- * - This part can support mixes, matches, etc. and might even be the ideal place to place a sub-permutation.
11
- * 2. Convert the tab group to use this abstract type.
12
- * Considerations;
13
- * - How do we inspect the states of existing tab instances in `kireji.app`?
14
- * - Files will be easy: they are part of the abstract.
15
- * - Perhaps the state space box depicts an array of instance space states instead of the single state? Perhaps that is all that is needed?
16
- * - Then, how do we depict the states of subparts of the parent part? Do we simply have an array for the entire instance part's tree?
17
- * - We might need "push", "pop", "insert", "splice" and/or similar array methods to make it easier to modify the instance set on the fly. */
18
-
19
1
  // Memoize the permutation data.
20
2
  const instanceOffsets = [0n]
21
3
  const instanceBitDepths = [0n, 0n]
@@ -1,7 +1,5 @@
1
1
  const n = permutation.supersetSize
2
2
 
3
- // TODO: factor in other aspects when expanding to the collection type.
4
-
5
3
  return [
6
4
  "<mn>1</mn>",
7
5
  "<mo>+</mo>",
@@ -1,3 +1,2 @@
1
- // TODO: Replace with subparts and let their own view controls manage this.
2
1
  permutation.viewedPermutationRouteID = permutation.permutationRouteID
3
2
  permutation.viewedInstances = [...permutation.instances]
@@ -1,6 +1,4 @@
1
- // TODO: Consider if this should be distribute view update instead of just view update.
2
1
  if (permutation.instances.length !== permutation.viewedInstances.length || permutation.viewedPermutationRouteID !== permutation.permutationRouteID) {
3
- // TODO: This is a dead-simple approach ... more performant approaches exist.
4
2
  const existingInstanceCount = permutation.viewedInstances.length
5
3
  const targetInstanceCount = permutation.instances.length
6
4
  const maxLength = Math.max(existingInstanceCount, targetInstanceCount)
@@ -1,4 +1,3 @@
1
- // TODO: consider moving this check (and the cardinality type check) to a post-build "validation" step?
2
1
  if (!scroller.query)
3
2
  throw new ReferenceError(`Scrollers must define a css selector at \`scroller.query\` which can select the parent element of the scroller (from ${scroller.host}).`)
4
3
 
@@ -3,14 +3,21 @@ declare interface IAbstract
3
3
 
4
4
  // Subparts.
5
5
  readonly application: IApplication<IAbstract, null>
6
+ readonly bodyMode: IBodyMode<IAbstract>
7
+ readonly boolean: IBoolean<IAbstract>
6
8
  readonly clip: IClip<IAbstract, null>
9
+ readonly comingSoon: IComingSoonApplication<IAbstract>
7
10
  readonly error: IErrorApplication<IAbstract>
8
11
  readonly facet: IFacet<IAbstract, null>
12
+ readonly issue: ITrackedIssue<IAbstract>
9
13
  readonly match: IMatch<IAbstract, null>
14
+ readonly mesh: IMesh<IAbstract>
10
15
  readonly mix: IMix<IAbstract, null>
11
16
  readonly part: IPart<IAbstract, null>
17
+ readonly partMask: IPartMask<IAbstract, null>
18
+ readonly partOutliner: IPartOutliner<IAbstract>
19
+ readonly permutation: IPermutation<IAbstract, null, null, null>
12
20
  readonly scroller: IScroller<IAbstract, null>
13
- readonly section: IApplicationSection<IAbstract, null>
14
21
  readonly sections: IApplicationSections<IAbstract, null>
15
22
  readonly tld: ITopLevelDomain<IAbstract, null>
16
23
  }
@@ -40,7 +40,7 @@ logScope(0, "Finalizing Hydration", log => {
40
40
  client: _.parts.core.client
41
41
  })
42
42
 
43
- // Handle navigation. TODO: fix bugs here.
43
+ // Handle forward/back button navigation.
44
44
  window.addEventListener("pageshow", pageTransitionEvent => {
45
45
  log("Setting Initial State")
46
46
  addressBar.useRoute()
@@ -23,7 +23,6 @@ const
23
23
  'Content-Type': 'text/html;charset=UTF-8',
24
24
  "Document-Policy": "force-load-at-top",
25
25
  "Vary": "Sec-CH-Prefers-Color-Scheme",
26
- // TODO: Finish the security setup.
27
26
  // 'Content-Security-Policy': "default-src 'none'; style-src 'unsafe-inline'; image-src data:; script-src self 'unsafe-inline'",
28
27
  // 'Permissions-Policy': 'microphone=(), camera=(), web-share=(self), full-screen=(self)',
29
28
  'Cross-Origin-Embedder-Policy': 'require-corp',
@@ -1,4 +1,4 @@
1
- return `<span ${color.pointAttr()} id="color-control" tabIndex=0 data-state="${color.arm.stateData}">
1
+ return `<span ${color.pointAttr()} id="color-control" tabIndex=0 data-state="${color.arm.stateData}" class="toggle-control">
2
2
  <span class="label">${color.title}:</span><flex-spacer></flex-spacer>
3
3
  <span class="base"><span class="handle"></span></span>
4
4
  </span>`
@@ -28,14 +28,12 @@ title-bar>.part-icon {
28
28
  margin: calc(var(--spacing) / 2);
29
29
  }
30
30
 
31
- #color-control,
32
- #era-control {
31
+ .toggle-control {
33
32
  cursor: pointer;
34
33
  position: relative;
35
34
  }
36
35
 
37
- #color-control .base,
38
- #era-control .base {
36
+ .toggle-control .base {
39
37
  width: 100%;
40
38
  border-radius: var(--spacing);
41
39
  background: var(--light-bg);
@@ -149,7 +147,8 @@ task-menu>* {
149
147
  background-color: var(--bg-dark);
150
148
  }
151
149
 
152
- #settings>span {
150
+ #settings>span,
151
+ .toggle-control {
153
152
  gap: 1ch;
154
153
  height: var(--spacing);
155
154
  box-sizing: content-box;
@@ -174,14 +173,10 @@ task-menu>* {
174
173
  }
175
174
 
176
175
 
177
- #settings>span[data-state="enabled"] .handle {
176
+ .toggle-control[data-state="enabled"] .handle {
178
177
  left: calc(var(--spacing) + 2px);
179
178
  }
180
179
 
181
- #settings>span[data-state="partial"] .handle {
182
- left: calc(.5 * var(--spacing) + 2px);
183
- }
184
-
185
180
  .task-link[data-here]>a::before {
186
181
  content: "";
187
182
  position: absolute;
@@ -1,4 +1,4 @@
1
- return `<span ${era.pointAttr()} id="era-control" tabIndex=0 data-state="${era.arm.stateData}">
1
+ return `<span ${era.pointAttr()} id="era-control" tabIndex=0 data-state="${era.arm.stateData}" class="toggle-control">
2
2
  <span class="label">${era.title}:</span><flex-spacer></flex-spacer>
3
3
  <span class="base"><span class="handle"></span></span>
4
4
  </span>`
@@ -60,16 +60,14 @@ scroll-bar>thumb- {
60
60
  --thumb-start: var(--scrollbar-width);
61
61
  }
62
62
 
63
- #color-control .base,
64
- #era-control .base {
63
+ .toggle-control .base {
65
64
  background: white;
66
65
  width: 16px;
67
66
  height: 16px;
68
67
  box-shadow: var(--deep-inset);
69
68
  }
70
69
 
71
- #color-control .base::after,
72
- #era-control .base::after {
70
+ .toggle-control .base::after {
73
71
  content: "";
74
72
  display: block;
75
73
  width: 16px;
@@ -81,11 +79,11 @@ scroll-bar>thumb- {
81
79
  color: black;
82
80
  }
83
81
 
84
- #settings>span[data-state="enabled"] .base::after {
82
+ .toggle-control[data-state="enabled"] .base::after {
85
83
  content: "✓";
86
84
  }
87
85
 
88
- #settings>span[data-state="partial"] .base::after {
86
+ .toggle-control[data-state="partial"] .base::after {
89
87
  content: "–";
90
88
  }
91
89
 
@@ -190,7 +188,7 @@ body {
190
188
  inset 2px 2px var(--bg-light-est);
191
189
  --default-font-size: 11px;
192
190
  font: var(--default-font-size) var(--system-ui);
193
- image-rendering: pixelated;
191
+ /*image-rendering: pixelated;*/
194
192
  }
195
193
 
196
194
  body,
@@ -1,4 +1,3 @@
1
- // TODO: check for support and show the tray item only if the browser supports it. Prefer instructing user to enter the browser's native fullscreen instead of JS fullscreen (which doesn't have cross-origin support).
2
1
  pointer.handle({
3
2
  click() {
4
3
  if (!document.fullscreenElement) {