@fc3/mmcadi 0.1.23 → 0.1.24

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 (438) hide show
  1. package/bin/compile +2 -2
  2. package/dist/.last-compile-time +1 -1
  3. package/dist/.last-publish-time +1 -1
  4. package/dist/client.js +1343 -266
  5. package/dist/src/client/client.js +1 -1
  6. package/dist/src/client/client.js.map +1 -1
  7. package/dist/src/client/enum/media-ready-state.d.ts +8 -0
  8. package/dist/src/client/enum/media-ready-state.js +12 -0
  9. package/dist/src/client/enum/media-ready-state.js.map +1 -0
  10. package/dist/src/client/enum/page-type.d.ts +3 -1
  11. package/dist/src/client/enum/page-type.js +2 -0
  12. package/dist/src/client/enum/page-type.js.map +1 -1
  13. package/dist/src/client/factory/page.js +5 -1
  14. package/dist/src/client/factory/page.js.map +1 -1
  15. package/dist/src/client/page/add-block-to-playlist.d.ts +5 -0
  16. package/dist/src/client/page/add-block-to-playlist.js +12 -0
  17. package/dist/src/client/page/add-block-to-playlist.js.map +1 -0
  18. package/dist/src/client/page/confirm-delete-block.js +1 -1
  19. package/dist/src/client/page/confirm-delete-block.js.map +1 -1
  20. package/dist/src/client/page/confirm-hide-block.js +1 -1
  21. package/dist/src/client/page/confirm-hide-block.js.map +1 -1
  22. package/dist/src/client/page/cursor.d.ts +45 -0
  23. package/dist/src/client/page/cursor.js +429 -0
  24. package/dist/src/client/page/cursor.js.map +1 -0
  25. package/dist/src/client/page/edit-block.js +1 -1
  26. package/dist/src/client/page/edit-block.js.map +1 -1
  27. package/dist/src/client/page/history.js +1 -1
  28. package/dist/src/client/page/history.js.map +1 -1
  29. package/dist/src/client/page/select-block-type.js +1 -1
  30. package/dist/src/client/page/select-block-type.js.map +1 -1
  31. package/dist/src/client/page/view-custom.d.ts +3 -29
  32. package/dist/src/client/page/view-custom.js +4 -289
  33. package/dist/src/client/page/view-custom.js.map +1 -1
  34. package/dist/src/client/page/view-playlist.d.ts +5 -0
  35. package/dist/src/client/page/view-playlist.js +16 -0
  36. package/dist/src/client/page/view-playlist.js.map +1 -0
  37. package/dist/src/client/page.d.ts +1 -0
  38. package/dist/src/client/page.js +8 -1
  39. package/dist/src/client/page.js.map +1 -1
  40. package/dist/src/client/shim/logger.d.ts +8 -2
  41. package/dist/src/client/shim/logger.js +19 -2
  42. package/dist/src/client/shim/logger.js.map +1 -1
  43. package/dist/src/client/shim/process.d.ts +4 -0
  44. package/dist/src/client/shim/process.js +16 -0
  45. package/dist/src/client/shim/process.js.map +1 -0
  46. package/dist/src/client/utility/get-block-activation-href.js +1 -1
  47. package/dist/src/client/utility/get-block-activation-href.js.map +1 -1
  48. package/dist/src/client/utility/get-meta-value.js +1 -1
  49. package/dist/src/client/utility/get-meta-value.js.map +1 -1
  50. package/dist/src/common/builder/block/background.js +1 -1
  51. package/dist/src/common/builder/block/background.js.map +1 -1
  52. package/dist/src/common/builder/block/folder.js +1 -1
  53. package/dist/src/common/builder/block/folder.js.map +1 -1
  54. package/dist/src/common/builder/block/header.d.ts +4 -1
  55. package/dist/src/common/builder/block/header.js +16 -3
  56. package/dist/src/common/builder/block/header.js.map +1 -1
  57. package/dist/src/common/builder/block/link.js +1 -1
  58. package/dist/src/common/builder/block/link.js.map +1 -1
  59. package/dist/src/constant/role/creator.js +1 -1
  60. package/dist/src/constant/role/creator.js.map +1 -1
  61. package/dist/src/constant/role/public.js +1 -1
  62. package/dist/src/constant/role/public.js.map +1 -1
  63. package/dist/src/constant/role/unknown.js +1 -1
  64. package/dist/src/constant/role/unknown.js.map +1 -1
  65. package/dist/src/enum/action-type.d.ts +2 -1
  66. package/dist/src/enum/action-type.js +1 -0
  67. package/dist/src/enum/action-type.js.map +1 -1
  68. package/dist/src/enum/block-type.d.ts +1 -0
  69. package/dist/src/enum/block-type.js +1 -0
  70. package/dist/src/enum/block-type.js.map +1 -1
  71. package/dist/src/enum/emoji.d.ts +10 -2
  72. package/dist/src/enum/emoji.js +9 -1
  73. package/dist/src/enum/emoji.js.map +1 -1
  74. package/dist/src/index.d.ts +1 -0
  75. package/dist/src/index.js +3 -1
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/interface/repository.d.ts +10 -2
  78. package/dist/src/lib/feature/feature.js +2 -2
  79. package/dist/src/lib/feature/feature.js.map +1 -1
  80. package/dist/src/lib/filesystem/enum/file-extension.d.ts +1 -0
  81. package/dist/src/lib/filesystem/enum/file-extension.js +1 -0
  82. package/dist/src/lib/filesystem/enum/file-extension.js.map +1 -1
  83. package/dist/src/lib/http/enum/content-type.d.ts +1 -0
  84. package/dist/src/lib/http/enum/content-type.js +1 -0
  85. package/dist/src/lib/http/enum/content-type.js.map +1 -1
  86. package/dist/src/lib/http/enum/header.d.ts +4 -0
  87. package/dist/src/lib/http/enum/header.js +4 -0
  88. package/dist/src/lib/http/enum/header.js.map +1 -1
  89. package/dist/src/lib/http/utility/get-content-type-for-extension.js +2 -0
  90. package/dist/src/lib/http/utility/get-content-type-for-extension.js.map +1 -1
  91. package/dist/src/lib/random/elements.js +1 -1
  92. package/dist/src/lib/random/elements.js.map +1 -1
  93. package/dist/src/lib/server/http/endpoint/ping.d.ts +2 -3
  94. package/dist/src/lib/server/http/endpoint.js +1 -1
  95. package/dist/src/lib/server/http/endpoint.js.map +1 -1
  96. package/dist/src/operation.d.ts +2 -2
  97. package/dist/src/operation.js +3 -2
  98. package/dist/src/operation.js.map +1 -1
  99. package/dist/src/server/endpoint/abstract-page.d.ts +1 -1
  100. package/dist/src/server/endpoint/abstract-page.js +2 -2
  101. package/dist/src/server/endpoint/abstract-page.js.map +1 -1
  102. package/dist/src/server/endpoint/action/create.d.ts +2 -1
  103. package/dist/src/server/endpoint/action/create.js +65 -3
  104. package/dist/src/server/endpoint/action/create.js.map +1 -1
  105. package/dist/src/server/endpoint/action/get.d.ts +5 -1
  106. package/dist/src/server/endpoint/action/get.js +53 -6
  107. package/dist/src/server/endpoint/action/get.js.map +1 -1
  108. package/dist/src/server/endpoint/base.d.ts +3 -1
  109. package/dist/src/server/endpoint/base.js +8 -3
  110. package/dist/src/server/endpoint/base.js.map +1 -1
  111. package/dist/src/server/endpoint/history.d.ts +1 -1
  112. package/dist/src/server/endpoint/history.js +3 -3
  113. package/dist/src/server/endpoint/history.js.map +1 -1
  114. package/dist/src/server/endpoint/login.d.ts +1 -1
  115. package/dist/src/server/endpoint/login.js +2 -2
  116. package/dist/src/server/endpoint/login.js.map +1 -1
  117. package/dist/src/server/endpoint/logout.d.ts +1 -1
  118. package/dist/src/server/endpoint/logout.js +1 -1
  119. package/dist/src/server/endpoint/logout.js.map +1 -1
  120. package/dist/src/server/endpoint/month.d.ts +1 -1
  121. package/dist/src/server/endpoint/month.js +1 -1
  122. package/dist/src/server/endpoint/month.js.map +1 -1
  123. package/dist/src/server/endpoint/playlist/create.d.ts +14 -0
  124. package/dist/src/server/endpoint/playlist/create.js +38 -0
  125. package/dist/src/server/endpoint/playlist/create.js.map +1 -0
  126. package/dist/src/server/endpoint/playlist/get.d.ts +17 -0
  127. package/dist/src/server/endpoint/playlist/get.js +106 -0
  128. package/dist/src/server/endpoint/playlist/get.js.map +1 -0
  129. package/dist/src/server/endpoint/robots.d.ts +1 -1
  130. package/dist/src/server/endpoint/robots.js +1 -1
  131. package/dist/src/server/endpoint/robots.js.map +1 -1
  132. package/dist/src/server/endpoint/session/create.d.ts +1 -1
  133. package/dist/src/server/endpoint/session/create.js +2 -2
  134. package/dist/src/server/endpoint/session/create.js.map +1 -1
  135. package/dist/src/server/endpoint/settings/get.d.ts +3 -1
  136. package/dist/src/server/endpoint/settings/get.js +28 -9
  137. package/dist/src/server/endpoint/settings/get.js.map +1 -1
  138. package/dist/src/server/endpoint/settings/update.d.ts +1 -1
  139. package/dist/src/server/endpoint/settings/update.js +1 -1
  140. package/dist/src/server/endpoint/settings/update.js.map +1 -1
  141. package/dist/src/server/endpoint/week.d.ts +1 -1
  142. package/dist/src/server/endpoint/week.js +1 -1
  143. package/dist/src/server/endpoint/week.js.map +1 -1
  144. package/dist/src/server/endpoint/year.d.ts +1 -1
  145. package/dist/src/server/endpoint/year.js +1 -1
  146. package/dist/src/server/endpoint/year.js.map +1 -1
  147. package/dist/src/server/factory/block-serializer.d.ts +1 -1
  148. package/dist/src/server/factory/block-serializer.js +4 -1
  149. package/dist/src/server/factory/block-serializer.js.map +1 -1
  150. package/dist/src/server/middleware/base.d.ts +1 -1
  151. package/dist/src/server/middleware/base.js +1 -1
  152. package/dist/src/server/middleware/base.js.map +1 -1
  153. package/dist/src/server/middleware/error-handler.d.ts +1 -1
  154. package/dist/src/server/middleware/error-handler.js +4 -3
  155. package/dist/src/server/middleware/error-handler.js.map +1 -1
  156. package/dist/src/server/middleware/static-file.d.ts +1 -1
  157. package/dist/src/server/middleware/static-file.js +103 -24
  158. package/dist/src/server/middleware/static-file.js.map +1 -1
  159. package/dist/src/server/operation/add-block.d.ts +1 -1
  160. package/dist/src/server/operation/add-block.js +21 -3
  161. package/dist/src/server/operation/add-block.js.map +1 -1
  162. package/dist/src/server/operation/add-entry-to-playlist.d.ts +12 -0
  163. package/dist/src/server/operation/add-entry-to-playlist.js +65 -0
  164. package/dist/src/server/operation/add-entry-to-playlist.js.map +1 -0
  165. package/dist/src/server/operation/create-playlist.d.ts +10 -0
  166. package/dist/src/server/operation/create-playlist.js +35 -0
  167. package/dist/src/server/operation/create-playlist.js.map +1 -0
  168. package/dist/src/server/operation/create-session.d.ts +1 -1
  169. package/dist/src/server/operation/create-session.js +1 -1
  170. package/dist/src/server/operation/create-session.js.map +1 -1
  171. package/dist/src/server/operation/delete-block.d.ts +2 -1
  172. package/dist/src/server/operation/delete-block.js +21 -4
  173. package/dist/src/server/operation/delete-block.js.map +1 -1
  174. package/dist/src/server/operation/demote-block.d.ts +1 -1
  175. package/dist/src/server/operation/demote-block.js +1 -1
  176. package/dist/src/server/operation/demote-block.js.map +1 -1
  177. package/dist/src/server/operation/destroy-session.d.ts +1 -1
  178. package/dist/src/server/operation/destroy-session.js +1 -1
  179. package/dist/src/server/operation/destroy-session.js.map +1 -1
  180. package/dist/src/server/operation/find-account.d.ts +1 -1
  181. package/dist/src/server/operation/find-account.js +2 -6
  182. package/dist/src/server/operation/find-account.js.map +1 -1
  183. package/dist/src/server/operation/find-playlist.d.ts +10 -0
  184. package/dist/src/server/operation/find-playlist.js +22 -0
  185. package/dist/src/server/operation/find-playlist.js.map +1 -0
  186. package/dist/src/server/operation/hide-block.d.ts +1 -1
  187. package/dist/src/server/operation/hide-block.js +1 -1
  188. package/dist/src/server/operation/hide-block.js.map +1 -1
  189. package/dist/src/server/operation/load-account.d.ts +1 -0
  190. package/dist/src/server/operation/load-account.js +7 -0
  191. package/dist/src/server/operation/load-account.js.map +1 -1
  192. package/dist/src/server/operation/load-block.d.ts +1 -1
  193. package/dist/src/server/operation/load-block.js +1 -1
  194. package/dist/src/server/operation/load-block.js.map +1 -1
  195. package/dist/src/server/operation/load-directory-items.d.ts +1 -1
  196. package/dist/src/server/operation/load-directory-items.js +1 -1
  197. package/dist/src/server/operation/load-directory-items.js.map +1 -1
  198. package/dist/src/server/operation/load-page.d.ts +1 -1
  199. package/dist/src/server/operation/load-page.js +7 -9
  200. package/dist/src/server/operation/load-page.js.map +1 -1
  201. package/dist/src/server/operation/load-playlists-for-account.d.ts +11 -0
  202. package/dist/src/server/operation/load-playlists-for-account.js +22 -0
  203. package/dist/src/server/operation/load-playlists-for-account.js.map +1 -0
  204. package/dist/src/server/operation/move-block.d.ts +2 -1
  205. package/dist/src/server/operation/move-block.js +25 -5
  206. package/dist/src/server/operation/move-block.js.map +1 -1
  207. package/dist/src/server/operation/promote-block.d.ts +1 -1
  208. package/dist/src/server/operation/promote-block.js +1 -1
  209. package/dist/src/server/operation/promote-block.js.map +1 -1
  210. package/dist/src/server/operation/save-page.d.ts +1 -1
  211. package/dist/src/server/operation/save-page.js +1 -1
  212. package/dist/src/server/operation/save-page.js.map +1 -1
  213. package/dist/src/server/operation/store-file.d.ts +1 -1
  214. package/dist/src/server/operation/store-file.js +11 -8
  215. package/dist/src/server/operation/store-file.js.map +1 -1
  216. package/dist/src/server/operation/update-account-settings.d.ts +1 -1
  217. package/dist/src/server/operation/update-account-settings.js +2 -2
  218. package/dist/src/server/operation/update-account-settings.js.map +1 -1
  219. package/dist/src/server/operation/update-block.d.ts +1 -1
  220. package/dist/src/server/operation/update-block.js +1 -1
  221. package/dist/src/server/operation/update-block.js.map +1 -1
  222. package/dist/src/server/repository/filesystem.d.ts +30 -0
  223. package/dist/src/server/repository/filesystem.js +179 -0
  224. package/dist/src/server/repository/filesystem.js.map +1 -0
  225. package/dist/src/server/repository/memory.d.ts +11 -2
  226. package/dist/src/server/repository/memory.js +69 -5
  227. package/dist/src/server/repository/memory.js.map +1 -1
  228. package/dist/src/server/serializer/action.d.ts +6 -1
  229. package/dist/src/server/serializer/action.js +223 -10
  230. package/dist/src/server/serializer/action.js.map +1 -1
  231. package/dist/src/server/serializer/base.d.ts +3 -2
  232. package/dist/src/server/serializer/base.js +42 -3
  233. package/dist/src/server/serializer/base.js.map +1 -1
  234. package/dist/src/server/serializer/block/audio.js +11 -2
  235. package/dist/src/server/serializer/block/audio.js.map +1 -1
  236. package/dist/src/server/serializer/block/header.js +3 -2
  237. package/dist/src/server/serializer/block/header.js.map +1 -1
  238. package/dist/src/server/serializer/block/image.js +1 -1
  239. package/dist/src/server/serializer/block/image.js.map +1 -1
  240. package/dist/src/server/serializer/block/list.js +1 -1
  241. package/dist/src/server/serializer/block/list.js.map +1 -1
  242. package/dist/src/server/serializer/block/video.d.ts +6 -0
  243. package/dist/src/server/{result-serializer/block/note.js → serializer/block/video.js} +19 -19
  244. package/dist/src/server/serializer/block/video.js.map +1 -0
  245. package/dist/src/server/serializer/block/whitespace.js +12 -1
  246. package/dist/src/server/serializer/block/whitespace.js.map +1 -1
  247. package/dist/src/server/serializer/block.d.ts +2 -2
  248. package/dist/src/server/serializer/block.js +7 -6
  249. package/dist/src/server/serializer/block.js.map +1 -1
  250. package/dist/src/server/serializer/history.d.ts +1 -1
  251. package/dist/src/server/serializer/page.d.ts +1 -1
  252. package/dist/src/server/serializer/page.js +4 -31
  253. package/dist/src/server/serializer/page.js.map +1 -1
  254. package/dist/src/server/serializer/playlist.d.ts +27 -0
  255. package/dist/src/server/serializer/playlist.js +46 -0
  256. package/dist/src/server/serializer/playlist.js.map +1 -0
  257. package/dist/src/server/serializer/settings.d.ts +9 -0
  258. package/dist/src/server/serializer/settings.js +43 -0
  259. package/dist/src/server/serializer/settings.js.map +1 -1
  260. package/dist/src/server/serializer/week.js +2 -2
  261. package/dist/src/server/serializer/week.js.map +1 -1
  262. package/dist/src/server/serializer/year.js +2 -2
  263. package/dist/src/server/serializer/year.js.map +1 -1
  264. package/dist/src/server/utility/accepts-content-type.d.ts +1 -1
  265. package/dist/src/server/utility/accepts-content-type.js +1 -1
  266. package/dist/src/server/utility/accepts-content-type.js.map +1 -1
  267. package/dist/src/server/utility/accepts-html.d.ts +1 -1
  268. package/dist/src/server/utility/accepts-html.js +1 -1
  269. package/dist/src/server/utility/accepts-html.js.map +1 -1
  270. package/dist/src/server/utility/accepts-json.d.ts +1 -1
  271. package/dist/src/server/utility/accepts-json.js +1 -1
  272. package/dist/src/server/utility/accepts-json.js.map +1 -1
  273. package/dist/src/server/utility/create-date.js +1 -1
  274. package/dist/src/server/utility/create-date.js.map +1 -1
  275. package/dist/src/server/utility/day-to-date.js +1 -1
  276. package/dist/src/server/utility/day-to-date.js.map +1 -1
  277. package/dist/src/server/utility/get-block-at-index-path.js +1 -1
  278. package/dist/src/server/utility/get-block-at-index-path.js.map +1 -1
  279. package/dist/src/server/utility/get-custom-page-type-for-path.js +1 -1
  280. package/dist/src/server/utility/get-custom-page-type-for-path.js.map +1 -1
  281. package/dist/src/server/utility/get-emoji-for-block-type.js +6 -2
  282. package/dist/src/server/utility/get-emoji-for-block-type.js.map +1 -1
  283. package/dist/src/server/utility/get-hex-for-color.js +1 -1
  284. package/dist/src/server/utility/get-hex-for-color.js.map +1 -1
  285. package/dist/src/server/utility/get-key-for-role.js +1 -1
  286. package/dist/src/server/utility/get-key-for-role.js.map +1 -1
  287. package/dist/src/server/utility/get-label-for-time-place-visibility.js +1 -1
  288. package/dist/src/server/utility/get-label-for-time-place-visibility.js.map +1 -1
  289. package/dist/src/server/utility/get-month-name.js +1 -1
  290. package/dist/src/server/utility/get-month-name.js.map +1 -1
  291. package/dist/src/server/utility/get-parent-index-path.js +1 -1
  292. package/dist/src/server/utility/get-parent-index-path.js.map +1 -1
  293. package/dist/src/server/utility/get-random-emoji-for-date.js +2 -2
  294. package/dist/src/server/utility/get-random-emoji-for-date.js.map +1 -1
  295. package/dist/src/server/utility/get-siblings-and-index-for-index-path.js +2 -2
  296. package/dist/src/server/utility/get-siblings-and-index-for-index-path.js.map +1 -1
  297. package/dist/src/server/utility/get-thumbnail-filename.js +1 -1
  298. package/dist/src/server/utility/get-thumbnail-filename.js.map +1 -1
  299. package/dist/src/server/utility/get-weekday-name.js +1 -1
  300. package/dist/src/server/utility/get-weekday-name.js.map +1 -1
  301. package/dist/src/server/utility/key-to-date.js +1 -1
  302. package/dist/src/server/utility/key-to-date.js.map +1 -1
  303. package/dist/src/server/utility/month-to-date.js +1 -1
  304. package/dist/src/server/utility/month-to-date.js.map +1 -1
  305. package/dist/src/server/utility/parse-index-path.js +1 -1
  306. package/dist/src/server/utility/parse-index-path.js.map +1 -1
  307. package/dist/src/server/utility/path-to-date.js +1 -1
  308. package/dist/src/server/utility/path-to-date.js.map +1 -1
  309. package/dist/src/server/utility/supports-thumbnail.d.ts +2 -0
  310. package/dist/src/server/utility/supports-thumbnail.js +14 -0
  311. package/dist/src/server/utility/supports-thumbnail.js.map +1 -0
  312. package/dist/src/server/utility/validate-page.js +1 -1
  313. package/dist/src/server/utility/validate-page.js.map +1 -1
  314. package/dist/src/server/utility/validate-path.js +1 -1
  315. package/dist/src/server/utility/validate-path.js.map +1 -1
  316. package/dist/src/server/utility/validate-url.js +1 -1
  317. package/dist/src/server/utility/validate-url.js.map +1 -1
  318. package/dist/src/server/utility/year-to-date.js +1 -1
  319. package/dist/src/server/utility/year-to-date.js.map +1 -1
  320. package/dist/src/server.d.ts +6 -1
  321. package/dist/src/server.js +43 -11
  322. package/dist/src/server.js.map +1 -1
  323. package/dist/src/type/action/add-block-to-playlist.d.ts +11 -0
  324. package/dist/src/type/action/add-block-to-playlist.js +3 -0
  325. package/dist/src/type/action/add-block-to-playlist.js.map +1 -0
  326. package/dist/src/type/action/add-block.d.ts +10 -2
  327. package/dist/src/type/block/audio.d.ts +2 -0
  328. package/dist/src/type/block/header.d.ts +2 -0
  329. package/dist/src/type/block/video.d.ts +8 -0
  330. package/dist/src/type/{history-item.js → block/video.js} +1 -1
  331. package/dist/src/type/block/video.js.map +1 -0
  332. package/dist/src/type/playlist.d.ts +11 -0
  333. package/dist/src/type/playlist.js +3 -0
  334. package/dist/src/type/playlist.js.map +1 -0
  335. package/dist/src/type/unpersisted.d.ts +2 -0
  336. package/dist/src/type/unpersisted.js +3 -0
  337. package/dist/src/type/unpersisted.js.map +1 -0
  338. package/dist/test/unit/server/operation/promote-block.js +2 -2
  339. package/dist/test/unit/server/operation/promote-block.js.map +1 -1
  340. package/dist/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +18 -3
  342. package/dist/src/server/endpoint/account/get.d.ts +0 -14
  343. package/dist/src/server/endpoint/account/get.js +0 -34
  344. package/dist/src/server/endpoint/account/get.js.map +0 -1
  345. package/dist/src/server/endpoint/role/get.d.ts +0 -14
  346. package/dist/src/server/endpoint/role/get.js +0 -43
  347. package/dist/src/server/endpoint/role/get.js.map +0 -1
  348. package/dist/src/server/factory/block-result-serializer.d.ts +0 -15
  349. package/dist/src/server/factory/block-result-serializer.js +0 -80
  350. package/dist/src/server/factory/block-result-serializer.js.map +0 -1
  351. package/dist/src/server/operation/store-files.d.ts +0 -15
  352. package/dist/src/server/operation/store-files.js +0 -84
  353. package/dist/src/server/operation/store-files.js.map +0 -1
  354. package/dist/src/server/result-serializer/account.d.ts +0 -9
  355. package/dist/src/server/result-serializer/account.js +0 -26
  356. package/dist/src/server/result-serializer/account.js.map +0 -1
  357. package/dist/src/server/result-serializer/action.d.ts +0 -38
  358. package/dist/src/server/result-serializer/action.js +0 -794
  359. package/dist/src/server/result-serializer/action.js.map +0 -1
  360. package/dist/src/server/result-serializer/base.d.ts +0 -31
  361. package/dist/src/server/result-serializer/base.js +0 -1224
  362. package/dist/src/server/result-serializer/base.js.map +0 -1
  363. package/dist/src/server/result-serializer/block/audio.d.ts +0 -6
  364. package/dist/src/server/result-serializer/block/audio.js +0 -31
  365. package/dist/src/server/result-serializer/block/audio.js.map +0 -1
  366. package/dist/src/server/result-serializer/block/background.d.ts +0 -6
  367. package/dist/src/server/result-serializer/block/background.js +0 -22
  368. package/dist/src/server/result-serializer/block/background.js.map +0 -1
  369. package/dist/src/server/result-serializer/block/calendar.d.ts +0 -7
  370. package/dist/src/server/result-serializer/block/calendar.js +0 -140
  371. package/dist/src/server/result-serializer/block/calendar.js.map +0 -1
  372. package/dist/src/server/result-serializer/block/directory.d.ts +0 -7
  373. package/dist/src/server/result-serializer/block/directory.js +0 -53
  374. package/dist/src/server/result-serializer/block/directory.js.map +0 -1
  375. package/dist/src/server/result-serializer/block/ephemeral.d.ts +0 -6
  376. package/dist/src/server/result-serializer/block/ephemeral.js +0 -16
  377. package/dist/src/server/result-serializer/block/ephemeral.js.map +0 -1
  378. package/dist/src/server/result-serializer/block/folder.d.ts +0 -14
  379. package/dist/src/server/result-serializer/block/folder.js +0 -140
  380. package/dist/src/server/result-serializer/block/folder.js.map +0 -1
  381. package/dist/src/server/result-serializer/block/header.d.ts +0 -6
  382. package/dist/src/server/result-serializer/block/header.js +0 -35
  383. package/dist/src/server/result-serializer/block/header.js.map +0 -1
  384. package/dist/src/server/result-serializer/block/image.d.ts +0 -6
  385. package/dist/src/server/result-serializer/block/image.js +0 -46
  386. package/dist/src/server/result-serializer/block/image.js.map +0 -1
  387. package/dist/src/server/result-serializer/block/link.d.ts +0 -6
  388. package/dist/src/server/result-serializer/block/link.js +0 -39
  389. package/dist/src/server/result-serializer/block/link.js.map +0 -1
  390. package/dist/src/server/result-serializer/block/list.d.ts +0 -13
  391. package/dist/src/server/result-serializer/block/list.js +0 -113
  392. package/dist/src/server/result-serializer/block/list.js.map +0 -1
  393. package/dist/src/server/result-serializer/block/multi-column.d.ts +0 -6
  394. package/dist/src/server/result-serializer/block/multi-column.js +0 -78
  395. package/dist/src/server/result-serializer/block/multi-column.js.map +0 -1
  396. package/dist/src/server/result-serializer/block/note.d.ts +0 -6
  397. package/dist/src/server/result-serializer/block/note.js.map +0 -1
  398. package/dist/src/server/result-serializer/block/parameter.d.ts +0 -6
  399. package/dist/src/server/result-serializer/block/parameter.js +0 -13
  400. package/dist/src/server/result-serializer/block/parameter.js.map +0 -1
  401. package/dist/src/server/result-serializer/block/todo.d.ts +0 -6
  402. package/dist/src/server/result-serializer/block/todo.js +0 -76
  403. package/dist/src/server/result-serializer/block/todo.js.map +0 -1
  404. package/dist/src/server/result-serializer/block/whitespace.d.ts +0 -6
  405. package/dist/src/server/result-serializer/block/whitespace.js +0 -17
  406. package/dist/src/server/result-serializer/block/whitespace.js.map +0 -1
  407. package/dist/src/server/result-serializer/block.d.ts +0 -27
  408. package/dist/src/server/result-serializer/block.js +0 -224
  409. package/dist/src/server/result-serializer/block.js.map +0 -1
  410. package/dist/src/server/result-serializer/common/time-place-options.d.ts +0 -2
  411. package/dist/src/server/result-serializer/common/time-place-options.js +0 -34
  412. package/dist/src/server/result-serializer/common/time-place-options.js.map +0 -1
  413. package/dist/src/server/result-serializer/login.d.ts +0 -12
  414. package/dist/src/server/result-serializer/login.js +0 -54
  415. package/dist/src/server/result-serializer/login.js.map +0 -1
  416. package/dist/src/server/result-serializer/month.d.ts +0 -10
  417. package/dist/src/server/result-serializer/month.js +0 -160
  418. package/dist/src/server/result-serializer/month.js.map +0 -1
  419. package/dist/src/server/result-serializer/page.d.ts +0 -46
  420. package/dist/src/server/result-serializer/page.js +0 -442
  421. package/dist/src/server/result-serializer/page.js.map +0 -1
  422. package/dist/src/server/result-serializer/role.d.ts +0 -9
  423. package/dist/src/server/result-serializer/role.js +0 -26
  424. package/dist/src/server/result-serializer/role.js.map +0 -1
  425. package/dist/src/server/result-serializer/settings.d.ts +0 -9
  426. package/dist/src/server/result-serializer/settings.js +0 -80
  427. package/dist/src/server/result-serializer/settings.js.map +0 -1
  428. package/dist/src/server/result-serializer/week.d.ts +0 -10
  429. package/dist/src/server/result-serializer/week.js +0 -175
  430. package/dist/src/server/result-serializer/week.js.map +0 -1
  431. package/dist/src/server/result-serializer/year.d.ts +0 -10
  432. package/dist/src/server/result-serializer/year.js +0 -142
  433. package/dist/src/server/result-serializer/year.js.map +0 -1
  434. package/dist/src/type/history-item.d.ts +0 -5
  435. package/dist/src/type/history-item.js.map +0 -1
  436. package/dist/test/unit/lib/grammar/inflector.d.ts +0 -1
  437. package/dist/test/unit/lib/grammar/inflector.js +0 -72
  438. package/dist/test/unit/lib/grammar/inflector.js.map +0 -1
@@ -1,794 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const errors_1 = require("./../../lib/errors/index.js");
7
- const base_1 = __importDefault(require("./base.js"));
8
- const custom_page_type_1 = __importDefault(require("./../enum/custom-page-type.js"));
9
- const unknown_1 = __importDefault(require("./../../constant/role/unknown.js"));
10
- const permission_type_1 = __importDefault(require("./../../enum/permission-type.js"));
11
- const extract_role_1 = __importDefault(require("./../utility/extract-role.js"));
12
- const page_type_1 = __importDefault(require("./../../client/enum/page-type.js"));
13
- const role_matches_1 = __importDefault(require("./../utility/role-matches.js"));
14
- const get_block_permissions_1 = __importDefault(require("./../utility/get-block-permissions.js"));
15
- const get_key_for_role_1 = __importDefault(require("./../utility/get-key-for-role.js"));
16
- const get_path_for_folder_block_1 = __importDefault(require("./../utility/get-path-for-folder-block.js"));
17
- const validate_path_1 = __importDefault(require("./../utility/validate-path.js"));
18
- const color_1 = __importDefault(require("./../../enum/color.js"));
19
- const get_hex_for_color_1 = __importDefault(require("./../utility/get-hex-for-color.js"));
20
- const create_date_1 = __importDefault(require("./../utility/create-date.js"));
21
- const default_role_1 = __importDefault(require("./../../enum/default-role.js"));
22
- const emoji_1 = __importDefault(require("./../../enum/emoji.js"));
23
- const time_place_options_1 = __importDefault(require("./common/time-place-options.js"));
24
- const get_label_for_time_place_visibility_1 = __importDefault(require("./../utility/get-label-for-time-place-visibility.js"));
25
- const time_place_visibility_1 = __importDefault(require("./../../enum/time-place-visibility.js"));
26
- const get_element_id_for_block_1 = __importDefault(require("./../utility/get-element-id-for-block.js"));
27
- const get_emoji_for_block_type_1 = __importDefault(require("./../utility/get-emoji-for-block-type.js"));
28
- const block_type_1 = __importDefault(require("./../../enum/block-type.js"));
29
- const action_type_1 = __importDefault(require("./../../enum/action-type.js"));
30
- const block_result_serializer_1 = __importDefault(require("./../factory/block-result-serializer.js"));
31
- function getBlockIdForAction(action, action_metadata) {
32
- const { block, metadata } = buildBlockAndMetadataForAction(action, action_metadata);
33
- return (0, get_element_id_for_block_1.default)(block, metadata);
34
- }
35
- function serializeColorInputs(attribute, selected_color) {
36
- const colors = Object.values(color_1.default);
37
- const serialized_colors = colors.map((color) => {
38
- const hex = (0, get_hex_for_color_1.default)(color);
39
- const checked_attribute = color === selected_color ? 'checked' : '';
40
- return `
41
- <input autocomplete="off" class="color-option" type="radio" ${checked_attribute} id="${attribute}-${color}" name="${attribute}" value="${color}" />
42
- <label class="mb-0" for="${attribute}-${color}" style="background-color:${hex}">
43
- ${color}
44
- </label>
45
- `;
46
- });
47
- return serialized_colors.join('\n');
48
- }
49
- function buildBlockForAction(action, metadata) {
50
- const { action_type } = action;
51
- if (action_type === action_type_1.default.EDIT_BLOCK) {
52
- const { block } = action;
53
- if (block === undefined) {
54
- throw new errors_1.InvariantViolation(`
55
- Received an EditBlockAction with no block specified
56
- `);
57
- }
58
- return block;
59
- }
60
- const { block_type, create_role, read_role, update_role, delete_role } = action;
61
- const permissions = {
62
- [permission_type_1.default.CREATE]: create_role,
63
- [permission_type_1.default.READ]: read_role,
64
- [permission_type_1.default.UPDATE]: update_role,
65
- [permission_type_1.default.DELETE]: delete_role
66
- };
67
- const { account } = metadata;
68
- const { id: creator_id, settings } = account;
69
- const { default_time_place_visibility: visibility } = settings;
70
- const created_at = Date.now();
71
- const time = time_place_visibility_1.default.TIME;
72
- const place = time_place_visibility_1.default.PLACE;
73
- const both = time_place_visibility_1.default.BOTH;
74
- const show_place = visibility === place || visibility === both;
75
- const show_time = visibility === time || visibility === both;
76
- switch (block_type) {
77
- case block_type_1.default.AUDIO:
78
- return {
79
- block_type: block_type_1.default.AUDIO,
80
- show_place,
81
- show_time,
82
- created_at,
83
- creator_id,
84
- files: [],
85
- permissions
86
- };
87
- case block_type_1.default.IMAGE:
88
- return {
89
- block_type: block_type_1.default.IMAGE,
90
- show_place,
91
- show_time,
92
- created_at,
93
- creator_id,
94
- files: [],
95
- permissions
96
- };
97
- case block_type_1.default.NOTE:
98
- return {
99
- block_type: block_type_1.default.NOTE,
100
- show_place,
101
- show_time,
102
- created_at,
103
- creator_id,
104
- text: '',
105
- permissions
106
- };
107
- case block_type_1.default.TODO:
108
- return {
109
- block_type: block_type_1.default.TODO,
110
- show_place,
111
- show_time,
112
- created_at,
113
- creator_id,
114
- completed_at: null,
115
- title: '',
116
- permissions
117
- };
118
- case block_type_1.default.HEADER:
119
- return {
120
- block_type: block_type_1.default.HEADER,
121
- show_place,
122
- show_time,
123
- created_at,
124
- creator_id,
125
- title: '',
126
- permissions
127
- };
128
- case block_type_1.default.FOLDER:
129
- return {
130
- block_type: block_type_1.default.FOLDER,
131
- show_place,
132
- show_time,
133
- created_at,
134
- creator_id,
135
- title: '',
136
- subtitle: '',
137
- emoji: emoji_1.default.FOLDER,
138
- color: color_1.default.GREY,
139
- permissions
140
- };
141
- case block_type_1.default.LINK:
142
- return {
143
- block_type: block_type_1.default.LINK,
144
- show_place,
145
- show_time,
146
- created_at,
147
- creator_id,
148
- href: '',
149
- label: '',
150
- color: color_1.default.GREY,
151
- permissions
152
- };
153
- case block_type_1.default.MULTI_COLUMN:
154
- return {
155
- block_type: block_type_1.default.MULTI_COLUMN,
156
- show_place,
157
- show_time,
158
- created_at,
159
- creator_id,
160
- children: [],
161
- max_columns: 3,
162
- permissions
163
- };
164
- default:
165
- throw new errors_1.InvariantViolation(`Unsupported block type: ${block_type}`);
166
- }
167
- }
168
- function buildMetadataForAction(action, action_metadata) {
169
- const { path, editing, index_path } = action;
170
- const { roles, account, creator_username } = action_metadata;
171
- (0, validate_path_1.default)(path);
172
- return {
173
- page_path: path,
174
- editing,
175
- // TODO: Investigate whether there's a way to preserve this
176
- referrer_url: null,
177
- index_path,
178
- target_index_path: null,
179
- roles,
180
- account,
181
- creator_username
182
- };
183
- }
184
- function buildBlockAndMetadataForAction(action, action_metadata) {
185
- const block = buildBlockForAction(action, action_metadata);
186
- const metadata = buildMetadataForAction(action, action_metadata);
187
- return {
188
- block,
189
- metadata
190
- };
191
- }
192
- class ActionResultSerializer extends base_1.default {
193
- constructor(result, metadata, path, referrer_url, session) {
194
- super(result, path, referrer_url, session);
195
- this.metadata = metadata;
196
- }
197
- getTitle() {
198
- const { action_type, path } = this.getResult();
199
- return `applying action ${action_type} to page ${path}`;
200
- }
201
- getPageType() {
202
- const { action_type } = this.getResult();
203
- switch (action_type) {
204
- case action_type_1.default.ADD_BLOCK:
205
- return page_type_1.default.SELECT_BLOCK_TYPE;
206
- case action_type_1.default.DELETE_BLOCK:
207
- return page_type_1.default.CONFIRM_DELETE_BLOCK;
208
- case action_type_1.default.EDIT_BLOCK:
209
- return page_type_1.default.EDIT_BLOCK;
210
- default:
211
- throw new errors_1.InvariantViolation(`
212
- Unsupported action type when mapping to page type: ${action_type}
213
- `);
214
- }
215
- }
216
- serializeSections() {
217
- const action = this.getResult();
218
- const { action_type } = action;
219
- switch (action_type) {
220
- case action_type_1.default.ADD_BLOCK:
221
- return this.serializeAddBlock(action);
222
- case action_type_1.default.DELETE_BLOCK:
223
- return this.serializeDeleteBlock(action);
224
- case action_type_1.default.EDIT_BLOCK:
225
- return this.serializeModifiableBlock(action);
226
- default:
227
- throw new errors_1.InvariantViolation(`
228
- Invalid action type: ${action_type}
229
- `);
230
- }
231
- }
232
- serializeAddBlock(action) {
233
- const { block_type } = action;
234
- if (block_type === undefined) {
235
- return this.serializeUnselectedBlockType(action);
236
- }
237
- return this.serializeModifiableBlock(action);
238
- }
239
- serializeModifiableBlock(action) {
240
- const metadata = this.getMetadata();
241
- const { block_type } = buildBlockForAction(action, metadata);
242
- switch (block_type) {
243
- case block_type_1.default.NOTE:
244
- return this.serializeModifiableNoteBlock(action);
245
- case block_type_1.default.TODO:
246
- return this.serializeModifiableTodoBlock(action);
247
- case block_type_1.default.IMAGE:
248
- return this.serializeModifiableImageBlock(action);
249
- case block_type_1.default.AUDIO:
250
- return this.serializeModifiableAudioBlock(action);
251
- case block_type_1.default.HEADER:
252
- return this.serializeModifiableHeaderBlock(action);
253
- case block_type_1.default.FOLDER:
254
- return this.serializeModifiableFolderBlock(action);
255
- case block_type_1.default.MULTI_COLUMN:
256
- return this.serializeModifiableMultiColumnBlock(action);
257
- case block_type_1.default.LINK:
258
- return this.serializeModifiableLinkBlock(action);
259
- default:
260
- throw new errors_1.InvariantViolation(`
261
- Invalid block type: ${block_type}
262
- `);
263
- }
264
- }
265
- serializeUnselectedBlockType(action) {
266
- const { path, editing, index_path } = action;
267
- function serializeBlockLink(block_type, last = false) {
268
- const offset_class = last ? '' : 'mb-8';
269
- const emoji = (0, get_emoji_for_block_type_1.default)(block_type);
270
- const block_type_label = block_type.replace(/_/g, '-');
271
- const first_letter = block_type[0];
272
- return `
273
- <li class="${offset_class}">
274
- <a id="add-block-${block_type}" href="/actions?action_type=${action_type_1.default.ADD_BLOCK}&editing=${editing}&path=${path}&index_path=${index_path}&block_type=${block_type}" class="biglink yellow align-left">
275
- ${emoji} ${block_type_label} <span class="half-opacity">[${first_letter}]</span>
276
- </a>
277
- </li>
278
- `;
279
- }
280
- return `
281
- <section>
282
- <h2>${emoji_1.default.BOOKS} add block:</h2>
283
- <ul>
284
- ${serializeBlockLink(block_type_1.default.NOTE)}
285
- ${serializeBlockLink(block_type_1.default.IMAGE)}
286
- ${serializeBlockLink(block_type_1.default.AUDIO)}
287
- ${serializeBlockLink(block_type_1.default.TODO)}
288
- ${serializeBlockLink(block_type_1.default.HEADER)}
289
- ${serializeBlockLink(block_type_1.default.LINK)}
290
- ${serializeBlockLink(block_type_1.default.FOLDER)}
291
- ${serializeBlockLink(block_type_1.default.MULTI_COLUMN)}
292
- </ul>
293
- </section>
294
-
295
- <!--
296
- <section>
297
- <h2>create page:</h2>
298
- <ul>
299
- <li>
300
- <a href="/actions?action_type=${action_type_1.default.CREATE_PAGE}&custom_page_type=${custom_page_type_1.default.BLANK}" class="biglink align-left">
301
- ${emoji_1.default.DOCUMENT} blank
302
- </a>
303
- </li>
304
- <li class="mt-8">
305
- <a href="/actions?action_type=${action_type_1.default.CREATE_PAGE}&custom_page_type=${custom_page_type_1.default.FORM}" class="biglink align-left">
306
- ${emoji_1.default.RECEIPT} form
307
- </a>
308
- <li class="mt-8">
309
- </li>
310
- <a href="/actions?action_type=${action_type_1.default.CREATE_PAGE}&custom_page_type=${custom_page_type_1.default.PRODUCT}" class="biglink align-left">
311
- ${emoji_1.default.SHOPPING_BAGS} product
312
- </a>
313
- </li>
314
- </ul>
315
- </section>
316
- -->
317
- `;
318
- }
319
- serializeModifiableImageBlock(action) {
320
- const { path } = action;
321
- return this.wrapModifyBlockAction(action, `
322
- <fieldset>
323
- <legend>${emoji_1.default.CAMERA} adding image(s) to page: [${path}]</legend>
324
- <div class="file-wrapper">
325
- <input id="file-input" type="file" name="files" accept="image/*" multiple />
326
- <label class="biglink" for="files">select images</label>
327
- </div>
328
- </fieldset>
329
- `);
330
- }
331
- serializeModifiableAudioBlock(action) {
332
- const { path } = action;
333
- return this.wrapModifyBlockAction(action, `
334
- <fieldset>
335
- <legend>${emoji_1.default.MICROPHONE} adding audio to page: [${path}]</legend>
336
- <div class="file-wrapper">
337
- <input type="file" name="files" accept="audio/*" capture />
338
- <label class="biglink" for="files">upload audio</label>
339
- </div>
340
- </fieldset>
341
- `);
342
- }
343
- serializeModifiableTodoBlock(action) {
344
- const { path, action_type } = action;
345
- const is_adding = action_type === action_type_1.default.ADD_BLOCK;
346
- const verb = is_adding ? 'adding' : 'updating';
347
- const metadata = this.getMetadata();
348
- const block = buildBlockForAction(action, metadata);
349
- const todo_block = block;
350
- const title = todo_block.title || '';
351
- const placeholder = title || 'enter todo';
352
- const { completed_at } = todo_block;
353
- const completed = completed_at !== null;
354
- const checked_attribute = completed ? 'checked' : '';
355
- return this.wrapModifyBlockAction(action, `
356
- <fieldset>
357
- <legend>${emoji_1.default.COMPLETED_CHECKMARK} ${verb} todo on page: [${path}]</legend>
358
- <input id="text-input" name="title" placeholder="${placeholder}" autofocus autocomplete="off" value="${title}" />
359
- </fieldset>
360
-
361
- <fieldset>
362
- <legend>completed?</legend>
363
- <input type="checkbox" name="completed" ${checked_attribute} />
364
- <label for="completed">immediately mark this task as complete</label>
365
- </fieldset>
366
- `);
367
- }
368
- serializeModifiableNoteBlock(action) {
369
- const { path, action_type } = action;
370
- const is_adding = action_type === action_type_1.default.ADD_BLOCK;
371
- const verb = is_adding ? 'adding' : 'updating';
372
- const metadata = this.getMetadata();
373
- const block = buildBlockForAction(action, metadata);
374
- const { text } = block;
375
- return this.wrapModifyBlockAction(action, `
376
- <fieldset>
377
- <legend>${emoji_1.default.NOTEPAD} ${verb} text on page: [${path}]</legend>
378
- <textarea id="text-input" name="text" placeholder="${text}" autofocus autocomplete="off">${text}</textarea>
379
- </fieldset>
380
- `);
381
- }
382
- serializeModifiableHeaderBlock(action) {
383
- const { path } = action;
384
- return this.wrapModifyBlockAction(action, `
385
- <fieldset>
386
- <legend>${emoji_1.default.PLACARD} adding title to page: [${path}]</legend>
387
- <input name="title" type="text" placeholder="your title here" autofocus autocomplete="off" />
388
- </fieldset>
389
- `);
390
- }
391
- serializeModifiableLinkBlock(action) {
392
- const metadata = this.getMetadata();
393
- const block = buildBlockForAction(action, metadata);
394
- const link_block = block;
395
- const { label, href, color } = link_block;
396
- const color_inputs = serializeColorInputs('color', color);
397
- return this.wrapModifyBlockAction(action, `
398
- <fieldset>
399
- <legend>${emoji_1.default.LINK} link target</legend>
400
- <p class="text-smaller half-opacity">
401
- the URL where your link should point
402
- </p>
403
- <input id="href-text-input" name="href" type="text" placeholder="${href}" value="${href}" autofocus autocomplete="off" />
404
- </fieldset>
405
-
406
- <fieldset>
407
- <legend>${emoji_1.default.SIGN} link label</legend>
408
- <p class="text-smaller half-opacity">
409
- the text label for your link
410
- </p>
411
- <input id="label-text-input" name="label" type="text" placeholder="${label}" value="${label}" autocomplete="off" />
412
- </fieldset>
413
-
414
- <fieldset>
415
- <legend>${emoji_1.default.PALETTE} link color</legend>
416
- <div class="pt-8">
417
- ${color_inputs}
418
- </div>
419
- </fieldset>
420
- `);
421
- }
422
- serializeModifiableMultiColumnBlock(action) {
423
- const { path } = action;
424
- const metadata = this.getMetadata();
425
- const { block } = buildBlockAndMetadataForAction(action, metadata);
426
- const { max_columns } = block;
427
- return this.wrapModifyBlockAction(action, `
428
- <fieldset>
429
- <legend>${emoji_1.default.BAR_CHART} adding multi-column block to page: [${path}]</legend>
430
-
431
- <p>max columns:</p>
432
-
433
- <div class="p-16">
434
- <input type="range" min="1" max="8" value="${max_columns}" id="max-columns" name="max_columns" list="column_values" />
435
-
436
- <datalist id="column_values">
437
- <option value="1" label="1"></option>
438
- <option value="2" label="2"></option>
439
- <option value="3" label="3"></option>
440
- <option value="4" label="4"></option>
441
- <option value="5" label="5"></option>
442
- <option value="6" label="6"></option>
443
- <option value="7" label="7"></option>
444
- <option value="8" label="8"></option>
445
- </datalist>
446
- </div>
447
- </fieldset>
448
- `);
449
- }
450
- serializeModifiableFolderBlock(action) {
451
- const { action_type, path } = action;
452
- const is_adding = action_type === action_type_1.default.ADD_BLOCK;
453
- const adjective = is_adding ? 'new' : 'updated';
454
- const metadata = this.getMetadata();
455
- const block = buildBlockForAction(action, metadata);
456
- const folder_block = block;
457
- const { title, subtitle, emoji, color } = folder_block;
458
- const block_id = getBlockIdForAction(action, metadata);
459
- const folder_path = (0, get_path_for_folder_block_1.default)({
460
- base_path: path,
461
- block: folder_block
462
- });
463
- const color_inputs = serializeColorInputs('color', color);
464
- return this.wrapModifyBlockAction(action, `
465
- <fieldset>
466
- <legend>${emoji_1.default.FOLDER} folder title</legend>
467
- <p class="text-smaller half-opacity">
468
- your ${adjective} page will live at:
469
- </p>
470
- <p class="text-smaller">
471
- <code class="text-yellow" id="${block_id}-folder-path-target">${folder_path}</code>
472
- </p>
473
- <input id="title-text-input" name="title" type="text" placeholder="${title}" value="${title}" autofocus autocomplete="off" />
474
- </fieldset>
475
-
476
- <fieldset>
477
- <legend>${emoji_1.default.SUN_WITH_FACE} preview emoji</legend>
478
- <p class="text-smaller half-opacity">
479
- <span class="text-bold">[optional]</span> appears inside the folder button on its parent page
480
- </p>
481
- <input id="emoji-text-input" name="emoji" type="text" placeholder="${emoji}" value="${emoji}" autocomplete="off" />
482
- </fieldset>
483
-
484
- <fieldset>
485
- <legend>${emoji_1.default.NOTEPAD} folder subtitle</legend>
486
- <p class="text-smaller half-opacity">
487
- <span class="text-bold">[optional]</span> appears below the folder name
488
- </p>
489
- <input id="subtitle-text-input" name="subtitle" type="text" placeholder="${subtitle}" value="${subtitle}" autocomplete="off" />
490
- </fieldset>
491
-
492
- <fieldset>
493
- <legend>${emoji_1.default.PALETTE} link color</legend>
494
- <div class="pt-8">
495
- ${color_inputs}
496
- </div>
497
- </fieldset>
498
- `);
499
- }
500
- wrapModifyBlockAction(action, block_specific_markup) {
501
- const { path, editing, action_type, index_path } = action;
502
- const action_metadata = this.getMetadata();
503
- const { block, metadata } = buildBlockAndMetadataForAction(action, action_metadata);
504
- const { block_type } = block;
505
- const session = this.getSession();
506
- const updated_metadata = {
507
- ...metadata,
508
- editing: false
509
- };
510
- const factory = new block_result_serializer_1.default(block, updated_metadata, session);
511
- const serializer = factory.create();
512
- const block_preview = serializer.serializeContent();
513
- const selected_color = block.color || color_1.default.GREY;
514
- const color_inputs = serializeColorInputs('border_color', selected_color);
515
- const time_place_section = this.renderTimePlaceSection(block);
516
- const permissions_section = this.renderPermissionsSection(block);
517
- return `
518
- <section class="grey">
519
- <fieldset>
520
- <legend>${emoji_1.default.MAGNIFYING_GLASS} preview</legend>
521
- ${block_preview}
522
- </fieldset>
523
-
524
- <form class="mt-64" enctype="multipart/form-data" method="post" action="/actions?editing=${editing}">
525
- <input type="hidden" name="action_type" value="${action_type}" />
526
- <input type="hidden" name="path" value="${path}" />
527
- <input type="hidden" name="index_path" value="${index_path}" />
528
- <input type="hidden" name="block_type" value="${block_type}" />
529
-
530
- ${block_specific_markup}
531
-
532
- <fieldset class="mt-64">
533
- <legend>${emoji_1.default.GEAR} additional settings</legend>
534
-
535
- <details class="mb-8 clearfix">
536
- <summary>
537
- <span>border color</span>
538
- <span class="summary-label">
539
- <span class="icon" style="background-color: ${selected_color}"></span>
540
- ${selected_color}
541
- </span>
542
- </summary>
543
-
544
- <p class="mb-32 clearfix">
545
- ${color_inputs}
546
- </p>
547
-
548
- <aside>
549
- colors are defined in your <a href="/settings">account settings</a>.
550
- </aside>
551
- </details>
552
-
553
- ${permissions_section}
554
- ${time_place_section}
555
-
556
- </fieldset>
557
-
558
- <table class="button-row fixed mt-32">
559
- <tbody>
560
- <tr>
561
- <td>
562
- <a class="biglink grey" href="${path}?editing=true">
563
- ${emoji_1.default.LEFT_ARROW_UNICODE} cancel
564
- </a>
565
- </td>
566
-
567
- <td>
568
- <button class="biglink green" type="submit">
569
- submit ${emoji_1.default.RIGHT_ARROW_UNICODE}
570
- </button>
571
- </td>
572
- </tr>
573
- </tbody>
574
- </table>
575
- </form>
576
- </section>
577
- `;
578
- }
579
- renderPermissionsSection(block) {
580
- const permissions = (0, get_block_permissions_1.default)(block);
581
- const permission_types = Object.keys(permissions);
582
- const { roles } = this.getMetadata();
583
- const permission_rows = [];
584
- const summary_emojis = [];
585
- function renderPermissionOptions(selected_role) {
586
- const serialized_options = roles.map((role) => {
587
- const selected = (0, role_matches_1.default)(role, selected_role);
588
- const is_unknown = (0, role_matches_1.default)(role, unknown_1.default);
589
- const selected_attribute = selected ? 'selected' : '';
590
- const role_key = (0, get_key_for_role_1.default)(role);
591
- const hidden_class = is_unknown && !selected ? 'hidden' : '';
592
- return `
593
- <option class="${hidden_class}" ${selected_attribute} value="${role_key}">
594
- [${role.emoji} ${role.name}]
595
- </option>
596
- `;
597
- });
598
- return serialized_options.join('\n');
599
- }
600
- Object.entries(permissions).forEach(([permission_type, role_key]) => {
601
- const emoji = (() => {
602
- switch (role_key) {
603
- case default_role_1.default.PUBLIC:
604
- return emoji_1.default.GRID_GLOBE;
605
- case default_role_1.default.CREATOR:
606
- return emoji_1.default.LOCKED;
607
- default:
608
- return emoji_1.default.WINDOW;
609
- }
610
- })();
611
- const role = (0, extract_role_1.default)(roles, role_key);
612
- const options = renderPermissionOptions(role);
613
- const row = `
614
- <tr>
615
- <td>
616
- ${permission_type}
617
- </td>
618
- <td>
619
- <select name="${permission_type}_role" autocomplete="off">
620
- ${options}
621
- </select>
622
- </td>
623
- </tr>
624
- `;
625
- permission_rows.push(row);
626
- summary_emojis.push(emoji);
627
- });
628
- const summary_label = (() => {
629
- let role_index = 0;
630
- while (role_index < roles.length) {
631
- const role = roles[role_index++];
632
- const actual_role_key = (0, get_key_for_role_1.default)(role);
633
- let permission_index = 0;
634
- while (permission_index < permission_types.length) {
635
- const permission_type = permission_types[permission_index++];
636
- const assigned_role_key = permissions[permission_type];
637
- if (assigned_role_key === actual_role_key) {
638
- return `${role.name} ${permission_type}`;
639
- }
640
- }
641
- }
642
- throw new errors_1.InvariantViolation(`
643
- Unable to determine minimum role permission
644
- `);
645
- })();
646
- return `
647
- <details class="mb-8">
648
- <summary>
649
- permissions
650
- <span class="summary-label">
651
- ${summary_emojis.join('')} ${summary_label}
652
- </span>
653
- </summary>
654
- <table>
655
- <thead>
656
- <tr>
657
- <th>
658
- operation
659
- </th>
660
- <th>
661
- minimum required role
662
- </th>
663
- </tr>
664
- </thead>
665
- <tbody>
666
- ${permission_rows.join('\n')}
667
- </tbody>
668
- </table>
669
- </details>
670
- `;
671
- }
672
- renderTimePlaceSection(block) {
673
- const current_visibility = (() => {
674
- if (block.show_time && block.show_place) {
675
- return time_place_visibility_1.default.BOTH;
676
- }
677
- if (block.show_time) {
678
- return time_place_visibility_1.default.TIME;
679
- }
680
- if (block.show_place) {
681
- return time_place_visibility_1.default.PLACE;
682
- }
683
- return time_place_visibility_1.default.NONE;
684
- })();
685
- const label = (0, get_label_for_time_place_visibility_1.default)(current_visibility);
686
- const options = (0, time_place_options_1.default)(current_visibility);
687
- return `
688
- <details>
689
- <summary>time and place
690
- <span class="summary-label">
691
- ${label}
692
- </span>
693
- </summary>
694
-
695
- ${options}
696
- </details>
697
- `;
698
- }
699
- serializeDeleteBlock(action) {
700
- const { path, block, editing, index_path } = action;
701
- const session = this.getSession();
702
- const roles = this.getRoles();
703
- const account = this.getAccount();
704
- const { creator_username } = this.getMetadata();
705
- const block_metadata = {
706
- editing,
707
- page_path: path,
708
- // We are just displaying the single block;
709
- // there's no reason to highlight it.
710
- target_index: null,
711
- referrer_url: null,
712
- roles,
713
- account,
714
- index_path,
715
- target_index_path: null,
716
- creator_username
717
- };
718
- const factory = new block_result_serializer_1.default(block, block_metadata, session);
719
- const serializer = factory.create();
720
- const serialized_block = serializer.serializeContent();
721
- const block_type = 'title';
722
- const created_date = (0, create_date_1.default)(block.created_at);
723
- const created_timestamp = created_date.toString();
724
- return `
725
- <section>
726
- <h2>really delete this block?</h2>
727
-
728
- ${serialized_block}
729
-
730
- <section class="align-left mt-32">
731
- <h4 class="mb-8">block metadata</h4>
732
- <table style="font-size:75%">
733
- <tbody>
734
- <tr>
735
- <th>
736
- type
737
- </th>
738
- <td class="align-left">
739
- ${block_type}
740
- </td>
741
- </tr>
742
-
743
- <tr>
744
- <th>
745
- created on
746
- </th>
747
- <td class="align-left">
748
- ${created_timestamp}
749
- </td>
750
- </tr>
751
- </tbody>
752
- </table>
753
- </section>
754
-
755
- <form id="deletion-form" method="post" action="/actions?editing=${editing}">
756
- <input type="hidden" name="action_type" value="${action_type_1.default.DELETE_BLOCK}" />
757
- <input type="hidden" name="path" value="${path}" />
758
- <input type="hidden" name="index_path" value="${index_path}" />
759
-
760
- <table class="fixed mt-32">
761
- <tbody>
762
- <tr>
763
- <td>
764
- <a class="biglink grey" href="${path}?editing=${editing}">
765
- ${emoji_1.default.LEFT_ARROW_UNICODE} cancel
766
- </a>
767
- </td>
768
-
769
- <td>
770
- <button class="biglink red" type="submit">
771
- delete ${emoji_1.default.RIGHT_ARROW_UNICODE}
772
- </button>
773
- </td>
774
- </tr>
775
- </tbody>
776
- </table>
777
- </form>
778
- </section>
779
- `;
780
- }
781
- getRoles() {
782
- const { roles } = this.getMetadata();
783
- return roles;
784
- }
785
- getAccount() {
786
- const { account } = this.getMetadata();
787
- return account;
788
- }
789
- getMetadata() {
790
- return this.metadata;
791
- }
792
- }
793
- exports.default = ActionResultSerializer;
794
- //# sourceMappingURL=action.js.map