roamjs-components 0.86.0-alpha → 0.86.0-alpha.3

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 (806) hide show
  1. package/components/AutocompleteInput.d.ts +28 -0
  2. package/components/AutocompleteInput.js +121 -0
  3. package/components/AutocompleteInput.js.map +1 -0
  4. package/components/BlockErrorBoundary.d.ts +16 -0
  5. package/components/BlockErrorBoundary.js +28 -0
  6. package/components/BlockErrorBoundary.js.map +1 -0
  7. package/components/BlockInput.d.ts +13 -0
  8. package/components/BlockInput.js +56 -0
  9. package/components/BlockInput.js.map +1 -0
  10. package/components/ComponentContainer.d.ts +11 -0
  11. package/components/ComponentContainer.js +38 -0
  12. package/components/ComponentContainer.js.map +1 -0
  13. package/components/ConfigPage.d.ts +35 -0
  14. package/components/ConfigPage.js +160 -0
  15. package/components/ConfigPage.js.map +1 -0
  16. package/components/ConfigPanels/BlockPanel.d.ts +3 -0
  17. package/components/ConfigPanels/BlockPanel.js +43 -0
  18. package/components/ConfigPanels/BlockPanel.js.map +1 -0
  19. package/components/ConfigPanels/BlocksPanel.d.ts +3 -0
  20. package/components/ConfigPanels/BlocksPanel.js +69 -0
  21. package/components/ConfigPanels/BlocksPanel.js.map +1 -0
  22. package/components/ConfigPanels/CustomPanel.d.ts +3 -0
  23. package/components/ConfigPanels/CustomPanel.js +25 -0
  24. package/components/ConfigPanels/CustomPanel.js.map +1 -0
  25. package/components/ConfigPanels/FlagPanel.d.ts +3 -0
  26. package/components/ConfigPanels/FlagPanel.js +32 -0
  27. package/components/ConfigPanels/FlagPanel.js.map +1 -0
  28. package/components/ConfigPanels/MultiChildPanel.d.ts +9 -0
  29. package/components/ConfigPanels/MultiChildPanel.js +59 -0
  30. package/components/ConfigPanels/MultiChildPanel.js.map +1 -0
  31. package/components/ConfigPanels/MultiTextPanel.d.ts +3 -0
  32. package/components/ConfigPanels/MultiTextPanel.js +15 -0
  33. package/components/ConfigPanels/MultiTextPanel.js.map +1 -0
  34. package/components/ConfigPanels/NumberPanel.d.ts +3 -0
  35. package/components/ConfigPanels/NumberPanel.js +26 -0
  36. package/components/ConfigPanels/NumberPanel.js.map +1 -0
  37. package/components/ConfigPanels/OauthPanel.d.ts +3 -0
  38. package/components/ConfigPanels/OauthPanel.js +82 -0
  39. package/components/ConfigPanels/OauthPanel.js.map +1 -0
  40. package/components/ConfigPanels/PagesPanel.d.ts +3 -0
  41. package/components/ConfigPanels/PagesPanel.js +12 -0
  42. package/components/ConfigPanels/PagesPanel.js.map +1 -0
  43. package/components/ConfigPanels/SelectPanel.d.ts +3 -0
  44. package/components/ConfigPanels/SelectPanel.js +28 -0
  45. package/components/ConfigPanels/SelectPanel.js.map +1 -0
  46. package/components/ConfigPanels/TextPanel.d.ts +3 -0
  47. package/components/ConfigPanels/TextPanel.js +29 -0
  48. package/components/ConfigPanels/TextPanel.js.map +1 -0
  49. package/components/ConfigPanels/TimePanel.d.ts +3 -0
  50. package/components/ConfigPanels/TimePanel.js +35 -0
  51. package/components/ConfigPanels/TimePanel.js.map +1 -0
  52. package/components/ConfigPanels/getBrandColors.d.ts +7 -0
  53. package/components/ConfigPanels/getBrandColors.js +29 -0
  54. package/components/ConfigPanels/getBrandColors.js.map +1 -0
  55. package/components/ConfigPanels/types.d.ts +84 -0
  56. package/components/ConfigPanels/types.js +3 -0
  57. package/components/ConfigPanels/types.js.map +1 -0
  58. package/components/ConfigPanels/useSingleChildValue.d.ts +13 -0
  59. package/components/ConfigPanels/useSingleChildValue.js +44 -0
  60. package/components/ConfigPanels/useSingleChildValue.js.map +1 -0
  61. package/components/CursorMenu.d.ts +21 -0
  62. package/components/CursorMenu.js +182 -0
  63. package/components/CursorMenu.js.map +1 -0
  64. package/components/Description.d.ts +5 -0
  65. package/components/Description.js +17 -0
  66. package/components/Description.js.map +1 -0
  67. package/components/ExtensionApiContext.d.ts +31 -0
  68. package/components/ExtensionApiContext.js +17 -0
  69. package/components/ExtensionApiContext.js.map +1 -0
  70. package/components/ExternalLogin.d.ts +18 -0
  71. package/components/ExternalLogin.js +142 -0
  72. package/components/ExternalLogin.js.map +1 -0
  73. package/components/Filter.d.ts +15 -0
  74. package/components/Filter.js +143 -0
  75. package/components/Filter.js.map +1 -0
  76. package/components/FormDialog.d.ts +55 -0
  77. package/components/FormDialog.js +224 -0
  78. package/components/FormDialog.js.map +1 -0
  79. package/components/Loading.d.ts +4 -0
  80. package/components/Loading.js +36 -0
  81. package/components/Loading.js.map +1 -0
  82. package/components/MenuItemSelect.d.ts +17 -0
  83. package/components/MenuItemSelect.js +24 -0
  84. package/components/MenuItemSelect.js.map +1 -0
  85. package/components/OauthPanel.d.ts +7 -0
  86. package/components/OauthPanel.js +31 -0
  87. package/components/OauthPanel.js.map +1 -0
  88. package/components/OauthSelect.d.ts +5 -0
  89. package/components/OauthSelect.js +26 -0
  90. package/components/OauthSelect.js.map +1 -0
  91. package/components/PageInput.d.ts +6 -0
  92. package/components/PageInput.js +14 -0
  93. package/components/PageInput.js.map +1 -0
  94. package/components/PageLink.d.ts +6 -0
  95. package/components/PageLink.js +32 -0
  96. package/components/PageLink.js.map +1 -0
  97. package/components/ProgressDialog.d.ts +11 -0
  98. package/components/ProgressDialog.js +61 -0
  99. package/components/ProgressDialog.js.map +1 -0
  100. package/components/SimpleAlert.d.ts +15 -0
  101. package/components/SimpleAlert.js +48 -0
  102. package/components/SimpleAlert.js.map +1 -0
  103. package/components/Toast.d.ts +15 -0
  104. package/components/Toast.js +51 -0
  105. package/components/Toast.js.map +1 -0
  106. package/components/index.d.ts +0 -0
  107. package/components/index.js +5 -0
  108. package/components/index.js.map +1 -0
  109. package/components.d.ts +5 -0
  110. package/components.js +202 -0
  111. package/components.js.map +1 -0
  112. package/date/constants.d.ts +3 -0
  113. package/date/constants.js +20 -0
  114. package/date/constants.js.map +1 -0
  115. package/date/index.js +10 -0
  116. package/date/index.js.map +1 -0
  117. package/date/parseNlpDate.d.ts +5 -0
  118. package/date/parseNlpDate.js +227 -0
  119. package/date/parseNlpDate.js.map +1 -0
  120. package/date/parseRoamDateUid.d.ts +2 -0
  121. package/date/parseRoamDateUid.js +8 -0
  122. package/date/parseRoamDateUid.js.map +1 -0
  123. package/dom/addBlockCommand.d.ts +5 -0
  124. package/dom/addBlockCommand.js +54 -0
  125. package/dom/addBlockCommand.js.map +1 -0
  126. package/dom/addKeyboardTriggers.d.ts +11 -0
  127. package/dom/addKeyboardTriggers.js +39 -0
  128. package/dom/addKeyboardTriggers.js.map +1 -0
  129. package/dom/addOldRoamJSDependency.d.ts +2 -0
  130. package/dom/addOldRoamJSDependency.js +11 -0
  131. package/dom/addOldRoamJSDependency.js.map +1 -0
  132. package/dom/addRoamJSDependency.d.ts +2 -0
  133. package/dom/addRoamJSDependency.js +9 -0
  134. package/dom/addRoamJSDependency.js.map +1 -0
  135. package/dom/addScriptAsDependency.d.ts +6 -0
  136. package/dom/addScriptAsDependency.js +17 -0
  137. package/dom/addScriptAsDependency.js.map +1 -0
  138. package/dom/addStyle.d.ts +2 -0
  139. package/dom/addStyle.js +15 -0
  140. package/dom/addStyle.js.map +1 -0
  141. package/dom/constants.d.ts +1 -0
  142. package/dom/constants.js +5 -0
  143. package/dom/constants.js.map +1 -0
  144. package/dom/createBlockObserver.d.ts +7 -0
  145. package/dom/createBlockObserver.js +44 -0
  146. package/dom/createBlockObserver.js.map +1 -0
  147. package/dom/createButtonObserver.d.ts +6 -0
  148. package/dom/createButtonObserver.js +22 -0
  149. package/dom/createButtonObserver.js.map +1 -0
  150. package/dom/createDivObserver.d.ts +2 -0
  151. package/dom/createDivObserver.js +14 -0
  152. package/dom/createDivObserver.js.map +1 -0
  153. package/dom/createHTMLObserver.d.ts +8 -0
  154. package/dom/createHTMLObserver.js +25 -0
  155. package/dom/createHTMLObserver.js.map +1 -0
  156. package/dom/createHashtagObserver.d.ts +5 -0
  157. package/dom/createHashtagObserver.js +17 -0
  158. package/dom/createHashtagObserver.js.map +1 -0
  159. package/dom/createIconButton.d.ts +2 -0
  160. package/dom/createIconButton.js +13 -0
  161. package/dom/createIconButton.js.map +1 -0
  162. package/dom/createObserver.d.ts +2 -0
  163. package/dom/createObserver.js +10 -0
  164. package/dom/createObserver.js.map +1 -0
  165. package/dom/createOverlayObserver.d.ts +2 -0
  166. package/dom/createOverlayObserver.js +7 -0
  167. package/dom/createOverlayObserver.js.map +1 -0
  168. package/dom/createPageObserver.d.ts +2 -0
  169. package/dom/createPageObserver.js +35 -0
  170. package/dom/createPageObserver.js.map +1 -0
  171. package/dom/createPageTitleObserver.d.ts +6 -0
  172. package/dom/createPageTitleObserver.js +32 -0
  173. package/dom/createPageTitleObserver.js.map +1 -0
  174. package/dom/elToTitle.d.ts +2 -0
  175. package/dom/elToTitle.js +23 -0
  176. package/dom/elToTitle.js.map +1 -0
  177. package/dom/genericError.d.ts +3 -0
  178. package/dom/genericError.js +12 -0
  179. package/dom/genericError.js.map +1 -0
  180. package/dom/getActiveUids.d.ts +3 -0
  181. package/dom/getActiveUids.js +7 -0
  182. package/dom/getActiveUids.js.map +1 -0
  183. package/dom/getBlockUidFromTarget.d.ts +2 -0
  184. package/dom/getBlockUidFromTarget.js +34 -0
  185. package/dom/getBlockUidFromTarget.js.map +1 -0
  186. package/dom/getCurrentPageUid.d.ts +2 -0
  187. package/dom/getCurrentPageUid.js +9 -0
  188. package/dom/getCurrentPageUid.js.map +1 -0
  189. package/dom/getDomRefs.d.ts +2 -0
  190. package/dom/getDomRefs.js +13 -0
  191. package/dom/getDomRefs.js.map +1 -0
  192. package/dom/getDropUidOffset.d.ts +5 -0
  193. package/dom/getDropUidOffset.js +28 -0
  194. package/dom/getDropUidOffset.js.map +1 -0
  195. package/dom/getMutatedNodes.d.ts +7 -0
  196. package/dom/getMutatedNodes.js +12 -0
  197. package/dom/getMutatedNodes.js.map +1 -0
  198. package/dom/getPageTitleByHtmlElement.d.ts +2 -0
  199. package/dom/getPageTitleByHtmlElement.js +13 -0
  200. package/dom/getPageTitleByHtmlElement.js.map +1 -0
  201. package/dom/getPageTitleValueByHtmlElement.d.ts +2 -0
  202. package/dom/getPageTitleValueByHtmlElement.js +10 -0
  203. package/dom/getPageTitleValueByHtmlElement.js.map +1 -0
  204. package/dom/getReferenceBlockUid.d.ts +2 -0
  205. package/dom/getReferenceBlockUid.js +19 -0
  206. package/dom/getReferenceBlockUid.js.map +1 -0
  207. package/dom/getRoamUrl.d.ts +2 -0
  208. package/dom/getRoamUrl.js +5 -0
  209. package/dom/getRoamUrl.js.map +1 -0
  210. package/dom/getRoamUrlByPage.d.ts +2 -0
  211. package/dom/getRoamUrlByPage.js +11 -0
  212. package/dom/getRoamUrlByPage.js.map +1 -0
  213. package/dom/getUids.d.ts +3 -0
  214. package/dom/getUids.js +9 -0
  215. package/dom/getUids.js.map +1 -0
  216. package/dom/getUidsFromButton.d.ts +3 -0
  217. package/dom/getUidsFromButton.js +9 -0
  218. package/dom/getUidsFromButton.js.map +1 -0
  219. package/dom/getUidsFromId.d.ts +5 -0
  220. package/dom/getUidsFromId.js +16 -0
  221. package/dom/getUidsFromId.js.map +1 -0
  222. package/dom/index.js +64 -0
  223. package/dom/index.js.map +1 -0
  224. package/dom/parseRoamBlocksToHtml.d.ts +11 -0
  225. package/dom/parseRoamBlocksToHtml.js +80 -0
  226. package/dom/parseRoamBlocksToHtml.js.map +1 -0
  227. package/dom/resolveRefs.d.ts +2 -0
  228. package/dom/resolveRefs.js +25 -0
  229. package/dom/resolveRefs.js.map +1 -0
  230. package/events/index.js +9 -0
  231. package/events/index.js.map +1 -0
  232. package/events/watchOnce.d.ts +3 -0
  233. package/events/watchOnce.js +13 -0
  234. package/events/watchOnce.js.map +1 -0
  235. package/hooks/index.js +11 -0
  236. package/hooks/index.js.map +1 -0
  237. package/hooks/useArrowKeyDown.d.ts +10 -0
  238. package/hooks/useArrowKeyDown.js +55 -0
  239. package/hooks/useArrowKeyDown.js.map +1 -0
  240. package/hooks/useSubTree.d.ts +3 -0
  241. package/hooks/useSubTree.js +12 -0
  242. package/hooks/useSubTree.js.map +1 -0
  243. package/marked/index.d.ts +25 -0
  244. package/marked/index.js +568 -0
  245. package/marked/index.js.map +1 -0
  246. package/package.json +18 -10
  247. package/queries/compileDatalog.d.ts +3 -0
  248. package/queries/compileDatalog.js +64 -0
  249. package/queries/compileDatalog.js.map +1 -0
  250. package/queries/getAllBlockUids.d.ts +2 -0
  251. package/queries/getAllBlockUids.js +7 -0
  252. package/queries/getAllBlockUids.js.map +1 -0
  253. package/queries/getAllBlockUidsAndTexts.d.ts +5 -0
  254. package/queries/getAllBlockUidsAndTexts.js +7 -0
  255. package/queries/getAllBlockUidsAndTexts.js.map +1 -0
  256. package/queries/getAllPageNames.d.ts +2 -0
  257. package/queries/getAllPageNames.js +7 -0
  258. package/queries/getAllPageNames.js.map +1 -0
  259. package/queries/getAttributeValueByBlockAndName.d.ts +5 -0
  260. package/queries/getAttributeValueByBlockAndName.js +12 -0
  261. package/queries/getAttributeValueByBlockAndName.js.map +1 -0
  262. package/queries/getBasicTreeByParentUid.d.ts +3 -0
  263. package/queries/getBasicTreeByParentUid.js +14 -0
  264. package/queries/getBasicTreeByParentUid.js.map +1 -0
  265. package/queries/getBlockUidAndTextIncludingText.d.ts +5 -0
  266. package/queries/getBlockUidAndTextIncludingText.js +8 -0
  267. package/queries/getBlockUidAndTextIncludingText.js.map +1 -0
  268. package/queries/getBlockUidByTextOnPage.d.ts +5 -0
  269. package/queries/getBlockUidByTextOnPage.js +8 -0
  270. package/queries/getBlockUidByTextOnPage.js.map +1 -0
  271. package/queries/getBlockUidsAndTextsReferencingPage.d.ts +5 -0
  272. package/queries/getBlockUidsAndTextsReferencingPage.js +10 -0
  273. package/queries/getBlockUidsAndTextsReferencingPage.js.map +1 -0
  274. package/queries/getBlockUidsByPageTitle.d.ts +2 -0
  275. package/queries/getBlockUidsByPageTitle.js +9 -0
  276. package/queries/getBlockUidsByPageTitle.js.map +1 -0
  277. package/queries/getBlockUidsReferencingBlock.d.ts +2 -0
  278. package/queries/getBlockUidsReferencingBlock.js +5 -0
  279. package/queries/getBlockUidsReferencingBlock.js.map +1 -0
  280. package/queries/getBlockUidsReferencingPage.d.ts +2 -0
  281. package/queries/getBlockUidsReferencingPage.js +7 -0
  282. package/queries/getBlockUidsReferencingPage.js.map +1 -0
  283. package/queries/getBlockUidsWithParentUid.d.ts +2 -0
  284. package/queries/getBlockUidsWithParentUid.js +7 -0
  285. package/queries/getBlockUidsWithParentUid.js.map +1 -0
  286. package/queries/getChildrenLengthByPageUid.d.ts +2 -0
  287. package/queries/getChildrenLengthByPageUid.js +9 -0
  288. package/queries/getChildrenLengthByPageUid.js.map +1 -0
  289. package/queries/getChildrenLengthByParentUid.d.ts +2 -0
  290. package/queries/getChildrenLengthByParentUid.js +8 -0
  291. package/queries/getChildrenLengthByParentUid.js.map +1 -0
  292. package/queries/getCreateTimeByBlockUid.d.ts +2 -0
  293. package/queries/getCreateTimeByBlockUid.js +8 -0
  294. package/queries/getCreateTimeByBlockUid.js.map +1 -0
  295. package/queries/getCurrentUser.d.ts +2 -0
  296. package/queries/getCurrentUser.js +12 -0
  297. package/queries/getCurrentUser.js.map +1 -0
  298. package/queries/getCurrentUserDisplayName.d.ts +2 -0
  299. package/queries/getCurrentUserDisplayName.js +11 -0
  300. package/queries/getCurrentUserDisplayName.js.map +1 -0
  301. package/queries/getCurrentUserEmail.d.ts +2 -0
  302. package/queries/getCurrentUserEmail.js +14 -0
  303. package/queries/getCurrentUserEmail.js.map +1 -0
  304. package/queries/getCurrentUserUid.d.ts +2 -0
  305. package/queries/getCurrentUserUid.js +14 -0
  306. package/queries/getCurrentUserUid.js.map +1 -0
  307. package/queries/getDisplayNameByEmail.d.ts +2 -0
  308. package/queries/getDisplayNameByEmail.js +8 -0
  309. package/queries/getDisplayNameByEmail.js.map +1 -0
  310. package/queries/getDisplayNameByUid.d.ts +2 -0
  311. package/queries/getDisplayNameByUid.js +8 -0
  312. package/queries/getDisplayNameByUid.js.map +1 -0
  313. package/queries/getEditTimeByBlockUid.d.ts +2 -0
  314. package/queries/getEditTimeByBlockUid.js +8 -0
  315. package/queries/getEditTimeByBlockUid.js.map +1 -0
  316. package/queries/getEditedUserEmailByBlockUid.d.ts +2 -0
  317. package/queries/getEditedUserEmailByBlockUid.js +8 -0
  318. package/queries/getEditedUserEmailByBlockUid.js.map +1 -0
  319. package/queries/getFirstChildTextByBlockUid.d.ts +2 -0
  320. package/queries/getFirstChildTextByBlockUid.js +8 -0
  321. package/queries/getFirstChildTextByBlockUid.js.map +1 -0
  322. package/queries/getFirstChildUidByBlockUid.d.ts +2 -0
  323. package/queries/getFirstChildUidByBlockUid.js +7 -0
  324. package/queries/getFirstChildUidByBlockUid.js.map +1 -0
  325. package/queries/getFullTreeByParentUid.d.ts +3 -0
  326. package/queries/getFullTreeByParentUid.js +52 -0
  327. package/queries/getFullTreeByParentUid.js.map +1 -0
  328. package/queries/getLinkedPageTitlesUnderUid.d.ts +2 -0
  329. package/queries/getLinkedPageTitlesUnderUid.js +7 -0
  330. package/queries/getLinkedPageTitlesUnderUid.js.map +1 -0
  331. package/queries/getNthChildUidByBlockUid.d.ts +5 -0
  332. package/queries/getNthChildUidByBlockUid.js +8 -0
  333. package/queries/getNthChildUidByBlockUid.js.map +1 -0
  334. package/queries/getOrderByBlockUid.d.ts +2 -0
  335. package/queries/getOrderByBlockUid.js +8 -0
  336. package/queries/getOrderByBlockUid.js.map +1 -0
  337. package/queries/getPageTitleByBlockUid.d.ts +2 -0
  338. package/queries/getPageTitleByBlockUid.js +8 -0
  339. package/queries/getPageTitleByBlockUid.js.map +1 -0
  340. package/queries/getPageTitleByPageUid.d.ts +2 -0
  341. package/queries/getPageTitleByPageUid.js +13 -0
  342. package/queries/getPageTitleByPageUid.js.map +1 -0
  343. package/queries/getPageTitleReferencesByPageTitle.d.ts +2 -0
  344. package/queries/getPageTitleReferencesByPageTitle.js +7 -0
  345. package/queries/getPageTitleReferencesByPageTitle.js.map +1 -0
  346. package/queries/getPageTitlesAndBlockUidsReferencingPage.d.ts +5 -0
  347. package/queries/getPageTitlesAndBlockUidsReferencingPage.js +10 -0
  348. package/queries/getPageTitlesAndBlockUidsReferencingPage.js.map +1 -0
  349. package/queries/getPageTitlesAndUidsDirectlyReferencingPage.d.ts +5 -0
  350. package/queries/getPageTitlesAndUidsDirectlyReferencingPage.js +10 -0
  351. package/queries/getPageTitlesAndUidsDirectlyReferencingPage.js.map +1 -0
  352. package/queries/getPageTitlesReferencingBlockUid.d.ts +2 -0
  353. package/queries/getPageTitlesReferencingBlockUid.js +5 -0
  354. package/queries/getPageTitlesReferencingBlockUid.js.map +1 -0
  355. package/queries/getPageTitlesStartingWithPrefix.d.ts +2 -0
  356. package/queries/getPageTitlesStartingWithPrefix.js +7 -0
  357. package/queries/getPageTitlesStartingWithPrefix.js.map +1 -0
  358. package/queries/getPageUidByBlockUid.d.ts +2 -0
  359. package/queries/getPageUidByBlockUid.js +8 -0
  360. package/queries/getPageUidByBlockUid.js.map +1 -0
  361. package/queries/getPageUidByPageTitle.d.ts +2 -0
  362. package/queries/getPageUidByPageTitle.js +10 -0
  363. package/queries/getPageUidByPageTitle.js.map +1 -0
  364. package/queries/getPageViewType.d.ts +3 -0
  365. package/queries/getPageViewType.js +10 -0
  366. package/queries/getPageViewType.js.map +1 -0
  367. package/queries/getParentTextByBlockUid.d.ts +2 -0
  368. package/queries/getParentTextByBlockUid.js +8 -0
  369. package/queries/getParentTextByBlockUid.js.map +1 -0
  370. package/queries/getParentTextByBlockUidAndTag.d.ts +5 -0
  371. package/queries/getParentTextByBlockUidAndTag.js +8 -0
  372. package/queries/getParentTextByBlockUidAndTag.js.map +1 -0
  373. package/queries/getParentUidByBlockUid.d.ts +2 -0
  374. package/queries/getParentUidByBlockUid.js +8 -0
  375. package/queries/getParentUidByBlockUid.js.map +1 -0
  376. package/queries/getParentUidsOfBlockUid.d.ts +2 -0
  377. package/queries/getParentUidsOfBlockUid.js +5 -0
  378. package/queries/getParentUidsOfBlockUid.js.map +1 -0
  379. package/queries/getSettingsByEmail.d.ts +3 -0
  380. package/queries/getSettingsByEmail.js +8 -0
  381. package/queries/getSettingsByEmail.js.map +1 -0
  382. package/queries/getShallowTreeByParentUid.d.ts +5 -0
  383. package/queries/getShallowTreeByParentUid.js +10 -0
  384. package/queries/getShallowTreeByParentUid.js.map +1 -0
  385. package/queries/getTextByBlockUid.d.ts +2 -0
  386. package/queries/getTextByBlockUid.js +10 -0
  387. package/queries/getTextByBlockUid.js.map +1 -0
  388. package/queries/index.d.ts +0 -0
  389. package/queries/index.js +5 -0
  390. package/queries/index.js.map +1 -0
  391. package/queries/isLiveBlock.d.ts +2 -0
  392. package/queries/isLiveBlock.js +5 -0
  393. package/queries/isLiveBlock.js.map +1 -0
  394. package/queries/isTagOnPage.d.ts +5 -0
  395. package/queries/isTagOnPage.js +10 -0
  396. package/queries/isTagOnPage.js.map +1 -0
  397. package/queries/normalizePageTitle.d.ts +2 -0
  398. package/queries/normalizePageTitle.js +5 -0
  399. package/queries/normalizePageTitle.js.map +1 -0
  400. package/scripts/index.d.ts +1 -0
  401. package/scripts/index.js +27 -0
  402. package/scripts/index.js.map +1 -0
  403. package/scripts/publishToRoamDepot.d.ts +7 -0
  404. package/scripts/publishToRoamDepot.js +114 -0
  405. package/scripts/publishToRoamDepot.js.map +1 -0
  406. package/testing/mockRoamEnvironment.d.ts +2 -0
  407. package/testing/mockRoamEnvironment.js +1254 -0
  408. package/testing/mockRoamEnvironment.js.map +1 -0
  409. package/types/index.d.ts +250 -0
  410. package/types/index.js +5 -0
  411. package/types/index.js.map +1 -0
  412. package/types/native.d.ts +402 -0
  413. package/types/native.js +5 -0
  414. package/types/native.js.map +1 -0
  415. package/types/query-builder.d.ts +10 -0
  416. package/types/query-builder.js +3 -0
  417. package/types/query-builder.js.map +1 -0
  418. package/types/smartblocks.d.ts +35 -0
  419. package/types/smartblocks.js +3 -0
  420. package/types/smartblocks.js.map +1 -0
  421. package/util/addInputSetting.d.ts +7 -0
  422. package/util/addInputSetting.js +26 -0
  423. package/util/addInputSetting.js.map +1 -0
  424. package/util/apiDelete.d.ts +2 -0
  425. package/util/apiDelete.js +7 -0
  426. package/util/apiDelete.js.map +1 -0
  427. package/util/apiGet.d.ts +2 -0
  428. package/util/apiGet.js +7 -0
  429. package/util/apiGet.js.map +1 -0
  430. package/util/apiPost.d.ts +2 -0
  431. package/util/apiPost.js +7 -0
  432. package/util/apiPost.js.map +1 -0
  433. package/util/apiPut.d.ts +2 -0
  434. package/util/apiPut.js +7 -0
  435. package/util/apiPut.js.map +1 -0
  436. package/util/createOverlayRender.d.ts +4 -0
  437. package/util/createOverlayRender.js +7 -0
  438. package/util/createOverlayRender.js.map +1 -0
  439. package/util/createTagRegex.d.ts +2 -0
  440. package/util/createTagRegex.js +8 -0
  441. package/util/createTagRegex.js.map +1 -0
  442. package/util/dispatchToRegistry.d.ts +3 -0
  443. package/util/dispatchToRegistry.js +8 -0
  444. package/util/dispatchToRegistry.js.map +1 -0
  445. package/util/env.d.ts +4 -0
  446. package/util/env.js +48 -0
  447. package/util/env.js.map +1 -0
  448. package/util/extensionApiContext.d.ts +29 -0
  449. package/util/extensionApiContext.js +18 -0
  450. package/util/extensionApiContext.js.map +1 -0
  451. package/util/extensionDeprecatedWarning.d.ts +5 -0
  452. package/util/extensionDeprecatedWarning.js +40 -0
  453. package/util/extensionDeprecatedWarning.js.map +1 -0
  454. package/util/extractRef.d.ts +2 -0
  455. package/util/extractRef.js +9 -0
  456. package/util/extractRef.js.map +1 -0
  457. package/util/extractTag.d.ts +2 -0
  458. package/util/extractTag.js +16 -0
  459. package/util/extractTag.js.map +1 -0
  460. package/util/focusMainWindowBlock.d.ts +2 -0
  461. package/util/focusMainWindowBlock.js +13 -0
  462. package/util/focusMainWindowBlock.js.map +1 -0
  463. package/util/getAuthorizationHeader.d.ts +2 -0
  464. package/util/getAuthorizationHeader.js +13 -0
  465. package/util/getAuthorizationHeader.js.map +1 -0
  466. package/util/getLocalStorageKey.d.ts +2 -0
  467. package/util/getLocalStorageKey.js +5 -0
  468. package/util/getLocalStorageKey.js.map +1 -0
  469. package/util/getOauth.d.ts +2 -0
  470. package/util/getOauth.js +53 -0
  471. package/util/getOauth.js.map +1 -0
  472. package/util/getOauthAccounts.d.ts +2 -0
  473. package/util/getOauthAccounts.js +23 -0
  474. package/util/getOauthAccounts.js.map +1 -0
  475. package/util/getRenderRoot.d.ts +2 -0
  476. package/util/getRenderRoot.js +19 -0
  477. package/util/getRenderRoot.js.map +1 -0
  478. package/util/getSettingIntFromTree.d.ts +7 -0
  479. package/util/getSettingIntFromTree.js +12 -0
  480. package/util/getSettingIntFromTree.js.map +1 -0
  481. package/util/getSettingValueFromTree.d.ts +8 -0
  482. package/util/getSettingValueFromTree.js +15 -0
  483. package/util/getSettingValueFromTree.js.map +1 -0
  484. package/util/getSettingValuesFromTree.d.ts +7 -0
  485. package/util/getSettingValuesFromTree.js +13 -0
  486. package/util/getSettingValuesFromTree.js.map +1 -0
  487. package/util/getSubTree.d.ts +8 -0
  488. package/util/getSubTree.js +20 -0
  489. package/util/getSubTree.js.map +1 -0
  490. package/util/getToken.d.ts +2 -0
  491. package/util/getToken.js +11 -0
  492. package/util/getToken.js.map +1 -0
  493. package/util/getTokenFromTree.d.ts +3 -0
  494. package/util/getTokenFromTree.js +5 -0
  495. package/util/getTokenFromTree.js.map +1 -0
  496. package/util/getWorkerClient.d.ts +12 -0
  497. package/util/getWorkerClient.js +42 -0
  498. package/util/getWorkerClient.js.map +1 -0
  499. package/util/handleBodyFetch.d.ts +3 -0
  500. package/util/handleBodyFetch.js +22 -0
  501. package/util/handleBodyFetch.js.map +1 -0
  502. package/util/handleFetch.d.ts +13 -0
  503. package/util/handleFetch.js +41 -0
  504. package/util/handleFetch.js.map +1 -0
  505. package/util/handleUrlFetch.d.ts +3 -0
  506. package/util/handleUrlFetch.js +20 -0
  507. package/util/handleUrlFetch.js.map +1 -0
  508. package/util/idToTitle.d.ts +2 -0
  509. package/util/idToTitle.js +9 -0
  510. package/util/idToTitle.js.map +1 -0
  511. package/{src/util/index.ts → util/index.d.ts} +4 -4
  512. package/util/index.js +55 -0
  513. package/util/index.js.map +1 -0
  514. package/util/isControl.d.ts +2 -0
  515. package/util/isControl.js +5 -0
  516. package/util/isControl.js.map +1 -0
  517. package/util/localStorageGet.d.ts +2 -0
  518. package/util/localStorageGet.js +9 -0
  519. package/util/localStorageGet.js.map +1 -0
  520. package/util/localStorageRemove.d.ts +2 -0
  521. package/util/localStorageRemove.js +7 -0
  522. package/util/localStorageRemove.js.map +1 -0
  523. package/util/localStorageSet.d.ts +2 -0
  524. package/util/localStorageSet.js +9 -0
  525. package/util/localStorageSet.js.map +1 -0
  526. package/util/registerExperimentalMode.d.ts +6 -0
  527. package/util/registerExperimentalMode.js +66 -0
  528. package/util/registerExperimentalMode.js.map +1 -0
  529. package/util/registerSmartBlocksCommand.d.ts +3 -0
  530. package/util/registerSmartBlocksCommand.js +24 -0
  531. package/util/registerSmartBlocksCommand.js.map +1 -0
  532. package/util/removeFromRegistry.d.ts +3 -0
  533. package/util/removeFromRegistry.js +8 -0
  534. package/util/removeFromRegistry.js.map +1 -0
  535. package/util/renderOverlay.d.ts +12 -0
  536. package/util/renderOverlay.js +49 -0
  537. package/util/renderOverlay.js.map +1 -0
  538. package/util/renderWithUnmount.d.ts +4 -0
  539. package/util/renderWithUnmount.js +45 -0
  540. package/util/renderWithUnmount.js.map +1 -0
  541. package/util/runExtension.d.ts +11 -0
  542. package/util/runExtension.js +175 -0
  543. package/util/runExtension.js.map +1 -0
  544. package/util/setInputSetting.d.ts +7 -0
  545. package/util/setInputSetting.js +38 -0
  546. package/util/setInputSetting.js.map +1 -0
  547. package/util/setInputSettings.d.ts +7 -0
  548. package/util/setInputSettings.js +29 -0
  549. package/util/setInputSettings.js.map +1 -0
  550. package/util/stripUid.d.ts +3 -0
  551. package/util/stripUid.js +11 -0
  552. package/util/stripUid.js.map +1 -0
  553. package/util/toConfigPageName.d.ts +2 -0
  554. package/util/toConfigPageName.js +5 -0
  555. package/util/toConfigPageName.js.map +1 -0
  556. package/util/toFlexRegex.d.ts +2 -0
  557. package/util/toFlexRegex.js +5 -0
  558. package/util/toFlexRegex.js.map +1 -0
  559. package/writes/clearBlockById.d.ts +2 -0
  560. package/writes/clearBlockById.js +18 -0
  561. package/writes/clearBlockById.js.map +1 -0
  562. package/writes/clearBlockByUid.d.ts +2 -0
  563. package/writes/clearBlockByUid.js +17 -0
  564. package/writes/clearBlockByUid.js.map +1 -0
  565. package/writes/createBlock.d.ts +8 -0
  566. package/writes/createBlock.js +29 -0
  567. package/writes/createBlock.js.map +1 -0
  568. package/writes/createPage.d.ts +7 -0
  569. package/writes/createPage.js +21 -0
  570. package/writes/createPage.js.map +1 -0
  571. package/writes/deleteBlock.d.ts +2 -0
  572. package/writes/deleteBlock.js +11 -0
  573. package/writes/deleteBlock.js.map +1 -0
  574. package/writes/index.js +23 -0
  575. package/writes/index.js.map +1 -0
  576. package/writes/openBlockInSidebar.d.ts +2 -0
  577. package/writes/openBlockInSidebar.js +14 -0
  578. package/writes/openBlockInSidebar.js.map +1 -0
  579. package/writes/submitActions.d.ts +8 -0
  580. package/writes/submitActions.js +37 -0
  581. package/writes/submitActions.js.map +1 -0
  582. package/writes/updateActiveBlock.d.ts +2 -0
  583. package/writes/updateActiveBlock.js +18 -0
  584. package/writes/updateActiveBlock.js.map +1 -0
  585. package/writes/updateBlock.d.ts +5 -0
  586. package/writes/updateBlock.js +24 -0
  587. package/writes/updateBlock.js.map +1 -0
  588. package/.eslintrc.json +0 -19
  589. package/.github/workflows/main.yaml +0 -34
  590. package/docs/components.md +0 -32
  591. package/docs/date.md +0 -13
  592. package/docs/dom.md +0 -58
  593. package/docs/events.md +0 -16
  594. package/docs/hooks.md +0 -15
  595. package/docs/marked.md +0 -56
  596. package/docs/queries.md +0 -24
  597. package/docs/scripts.md +0 -20
  598. package/docs/types.md +0 -32
  599. package/docs/util.md +0 -38
  600. package/docs/writes.md +0 -23
  601. package/patches/dotenv+16.3.1.patch +0 -12
  602. package/src/components/AutocompleteInput.tsx +0 -248
  603. package/src/components/BlockErrorBoundary.tsx +0 -35
  604. package/src/components/BlockInput.tsx +0 -117
  605. package/src/components/ComponentContainer.tsx +0 -69
  606. package/src/components/ConfigPage.tsx +0 -320
  607. package/src/components/ConfigPanels/BlockPanel.tsx +0 -60
  608. package/src/components/ConfigPanels/BlocksPanel.tsx +0 -100
  609. package/src/components/ConfigPanels/CustomPanel.tsx +0 -41
  610. package/src/components/ConfigPanels/FlagPanel.tsx +0 -48
  611. package/src/components/ConfigPanels/MultiChildPanel.tsx +0 -99
  612. package/src/components/ConfigPanels/MultiTextPanel.tsx +0 -23
  613. package/src/components/ConfigPanels/NumberPanel.tsx +0 -36
  614. package/src/components/ConfigPanels/OauthPanel.tsx +0 -127
  615. package/src/components/ConfigPanels/PagesPanel.tsx +0 -19
  616. package/src/components/ConfigPanels/SelectPanel.tsx +0 -46
  617. package/src/components/ConfigPanels/TextPanel.tsx +0 -44
  618. package/src/components/ConfigPanels/TimePanel.tsx +0 -45
  619. package/src/components/ConfigPanels/getBrandColors.tsx +0 -31
  620. package/src/components/ConfigPanels/types.ts +0 -111
  621. package/src/components/ConfigPanels/useSingleChildValue.tsx +0 -63
  622. package/src/components/CursorMenu.tsx +0 -286
  623. package/src/components/Description.tsx +0 -31
  624. package/src/components/ExtensionApiContext.tsx +0 -24
  625. package/src/components/ExternalLogin.tsx +0 -190
  626. package/src/components/Filter.tsx +0 -313
  627. package/src/components/FormDialog.tsx +0 -503
  628. package/src/components/Loading.tsx +0 -33
  629. package/src/components/MenuItemSelect.tsx +0 -88
  630. package/src/components/OauthPanel.tsx +0 -62
  631. package/src/components/OauthSelect.tsx +0 -40
  632. package/src/components/PageInput.tsx +0 -17
  633. package/src/components/PageLink.tsx +0 -50
  634. package/src/components/ProgressDialog.tsx +0 -85
  635. package/src/components/SimpleAlert.tsx +0 -103
  636. package/src/components/Toast.tsx +0 -85
  637. package/src/components/index.ts +0 -5
  638. package/src/components.tsx +0 -242
  639. package/src/date/constants.ts +0 -19
  640. package/src/date/parseNlpDate.ts +0 -255
  641. package/src/date/parseRoamDateUid.ts +0 -6
  642. package/src/dom/addBlockCommand.ts +0 -59
  643. package/src/dom/addKeyboardTriggers.ts +0 -52
  644. package/src/dom/addOldRoamJSDependency.ts +0 -10
  645. package/src/dom/addRoamJSDependency.ts +0 -7
  646. package/src/dom/addScriptAsDependency.ts +0 -24
  647. package/src/dom/addStyle.ts +0 -11
  648. package/src/dom/constants.ts +0 -1
  649. package/src/dom/createBlockObserver.ts +0 -44
  650. package/src/dom/createButtonObserver.ts +0 -31
  651. package/src/dom/createDivObserver.ts +0 -15
  652. package/src/dom/createHTMLObserver.ts +0 -44
  653. package/src/dom/createHashtagObserver.ts +0 -22
  654. package/src/dom/createIconButton.ts +0 -13
  655. package/src/dom/createObserver.ts +0 -15
  656. package/src/dom/createOverlayObserver.ts +0 -7
  657. package/src/dom/createPageObserver.ts +0 -37
  658. package/src/dom/createPageTitleObserver.ts +0 -43
  659. package/src/dom/elToTitle.ts +0 -21
  660. package/src/dom/genericError.ts +0 -13
  661. package/src/dom/getActiveUids.ts +0 -6
  662. package/src/dom/getBlockUidFromTarget.ts +0 -39
  663. package/src/dom/getCurrentPageUid.ts +0 -5
  664. package/src/dom/getDomRefs.ts +0 -15
  665. package/src/dom/getDropUidOffset.ts +0 -36
  666. package/src/dom/getMutatedNodes.ts +0 -31
  667. package/src/dom/getPageTitleByHtmlElement.ts +0 -19
  668. package/src/dom/getPageTitleValueByHtmlElement.ts +0 -8
  669. package/src/dom/getReferenceBlockUid.ts +0 -22
  670. package/src/dom/getRoamUrl.ts +0 -6
  671. package/src/dom/getRoamUrlByPage.ts +0 -9
  672. package/src/dom/getUids.ts +0 -9
  673. package/src/dom/getUidsFromButton.ts +0 -9
  674. package/src/dom/getUidsFromId.ts +0 -13
  675. package/src/dom/parseRoamBlocksToHtml.ts +0 -118
  676. package/src/dom/resolveRefs.ts +0 -31
  677. package/src/events/watchOnce.ts +0 -17
  678. package/src/hooks/useArrowKeyDown.ts +0 -72
  679. package/src/hooks/useSubTree.ts +0 -16
  680. package/src/marked/index.ts +0 -619
  681. package/src/queries/compileDatalog.ts +0 -81
  682. package/src/queries/getAllBlockUids.ts +0 -6
  683. package/src/queries/getAllBlockUidsAndTexts.ts +0 -6
  684. package/src/queries/getAllPageNames.ts +0 -6
  685. package/src/queries/getAttributeValueByBlockAndName.ts +0 -23
  686. package/src/queries/getBasicTreeByParentUid.ts +0 -21
  687. package/src/queries/getBlockUidAndTextIncludingText.ts +0 -15
  688. package/src/queries/getBlockUidByTextOnPage.ts +0 -12
  689. package/src/queries/getBlockUidsAndTextsReferencingPage.ts +0 -18
  690. package/src/queries/getBlockUidsByPageTitle.ts +0 -12
  691. package/src/queries/getBlockUidsReferencingBlock.ts +0 -10
  692. package/src/queries/getBlockUidsReferencingPage.ts +0 -13
  693. package/src/queries/getBlockUidsWithParentUid.ts +0 -10
  694. package/src/queries/getChildrenLengthByPageUid.ts +0 -7
  695. package/src/queries/getChildrenLengthByParentUid.ts +0 -6
  696. package/src/queries/getCreateTimeByBlockUid.ts +0 -6
  697. package/src/queries/getCurrentUser.ts +0 -12
  698. package/src/queries/getCurrentUserDisplayName.ts +0 -9
  699. package/src/queries/getCurrentUserEmail.ts +0 -12
  700. package/src/queries/getCurrentUserUid.ts +0 -12
  701. package/src/queries/getDisplayNameByEmail.ts +0 -6
  702. package/src/queries/getDisplayNameByUid.ts +0 -6
  703. package/src/queries/getEditTimeByBlockUid.ts +0 -6
  704. package/src/queries/getEditedUserEmailByBlockUid.ts +0 -6
  705. package/src/queries/getFirstChildTextByBlockUid.ts +0 -8
  706. package/src/queries/getFirstChildUidByBlockUid.ts +0 -6
  707. package/src/queries/getFullTreeByParentUid.ts +0 -60
  708. package/src/queries/getLinkedPageTitlesUnderUid.ts +0 -8
  709. package/src/queries/getNthChildUidByBlockUid.ts +0 -16
  710. package/src/queries/getOrderByBlockUid.ts +0 -6
  711. package/src/queries/getPageTitleByBlockUid.ts +0 -8
  712. package/src/queries/getPageTitleByPageUid.ts +0 -11
  713. package/src/queries/getPageTitleReferencesByPageTitle.ts +0 -13
  714. package/src/queries/getPageTitlesAndBlockUidsReferencingPage.ts +0 -18
  715. package/src/queries/getPageTitlesAndUidsDirectlyReferencingPage.ts +0 -18
  716. package/src/queries/getPageTitlesReferencingBlockUid.ts +0 -10
  717. package/src/queries/getPageTitlesStartingWithPrefix.ts +0 -8
  718. package/src/queries/getPageUidByBlockUid.ts +0 -8
  719. package/src/queries/getPageUidByPageTitle.ts +0 -10
  720. package/src/queries/getPageViewType.ts +0 -11
  721. package/src/queries/getParentTextByBlockUid.ts +0 -6
  722. package/src/queries/getParentTextByBlockUidAndTag.ts +0 -12
  723. package/src/queries/getParentUidByBlockUid.ts +0 -10
  724. package/src/queries/getParentUidsOfBlockUid.ts +0 -10
  725. package/src/queries/getSettingsByEmail.ts +0 -8
  726. package/src/queries/getShallowTreeByParentUid.ts +0 -17
  727. package/src/queries/getTextByBlockUid.ts +0 -8
  728. package/src/queries/index.ts +0 -5
  729. package/src/queries/isLiveBlock.ts +0 -4
  730. package/src/queries/isTagOnPage.ts +0 -12
  731. package/src/queries/normalizePageTitle.ts +0 -4
  732. package/src/scripts/index.ts +0 -2
  733. package/src/scripts/publishToRoamDepot.ts +0 -163
  734. package/src/testing/mockRoamEnvironment.ts +0 -1489
  735. package/src/types/index.ts +0 -260
  736. package/src/types/native.ts +0 -495
  737. package/src/types/query-builder.ts +0 -10
  738. package/src/types/smartblocks.ts +0 -39
  739. package/src/util/addInputSetting.ts +0 -33
  740. package/src/util/apiDelete.ts +0 -5
  741. package/src/util/apiGet.ts +0 -5
  742. package/src/util/apiPost.ts +0 -5
  743. package/src/util/apiPut.ts +0 -5
  744. package/src/util/createOverlayRender.ts +0 -12
  745. package/src/util/createTagRegex.ts +0 -7
  746. package/src/util/dispatchToRegistry.ts +0 -11
  747. package/src/util/env.ts +0 -44
  748. package/src/util/extensionApiContext.ts +0 -17
  749. package/src/util/extensionDeprecatedWarning.ts +0 -57
  750. package/src/util/extractRef.ts +0 -8
  751. package/src/util/extractTag.ts +0 -15
  752. package/src/util/focusMainWindowBlock.ts +0 -13
  753. package/src/util/getAuthorizationHeader.ts +0 -11
  754. package/src/util/getLocalStorageKey.ts +0 -4
  755. package/src/util/getOauth.ts +0 -57
  756. package/src/util/getOauthAccounts.ts +0 -26
  757. package/src/util/getRenderRoot.ts +0 -17
  758. package/src/util/getSettingIntFromTree.ts +0 -18
  759. package/src/util/getSettingValueFromTree.ts +0 -23
  760. package/src/util/getSettingValuesFromTree.ts +0 -20
  761. package/src/util/getSubTree.ts +0 -31
  762. package/src/util/getToken.ts +0 -12
  763. package/src/util/getTokenFromTree.ts +0 -6
  764. package/src/util/getWorkerClient.ts +0 -55
  765. package/src/util/handleBodyFetch.ts +0 -38
  766. package/src/util/handleFetch.ts +0 -70
  767. package/src/util/handleUrlFetch.ts +0 -30
  768. package/src/util/idToTitle.ts +0 -8
  769. package/src/util/isControl.ts +0 -4
  770. package/src/util/localStorageGet.ts +0 -6
  771. package/src/util/localStorageRemove.ts +0 -6
  772. package/src/util/localStorageSet.ts +0 -6
  773. package/src/util/registerExperimentalMode.ts +0 -76
  774. package/src/util/registerSmartBlocksCommand.ts +0 -23
  775. package/src/util/removeFromRegistry.ts +0 -11
  776. package/src/util/renderOverlay.ts +0 -69
  777. package/src/util/renderWithUnmount.ts +0 -50
  778. package/src/util/runExtension.ts +0 -206
  779. package/src/util/setInputSetting.ts +0 -46
  780. package/src/util/setInputSettings.ts +0 -37
  781. package/src/util/stripUid.ts +0 -10
  782. package/src/util/toConfigPageName.ts +0 -3
  783. package/src/util/toFlexRegex.ts +0 -7
  784. package/src/writes/clearBlockById.ts +0 -17
  785. package/src/writes/clearBlockByUid.ts +0 -16
  786. package/src/writes/createBlock.ts +0 -50
  787. package/src/writes/createPage.ts +0 -30
  788. package/src/writes/deleteBlock.ts +0 -9
  789. package/src/writes/openBlockInSidebar.ts +0 -13
  790. package/src/writes/submitActions.ts +0 -54
  791. package/src/writes/updateActiveBlock.ts +0 -17
  792. package/src/writes/updateBlock.ts +0 -33
  793. package/tests/backend.test.tsx +0 -28
  794. package/tests/date.test.ts +0 -26
  795. package/tests/dom.test.tsx +0 -10
  796. package/tests/index.test.tsx +0 -25
  797. package/tests/marked.test.ts +0 -474
  798. package/tests/util/createTagRegex.test.ts +0 -63
  799. package/tests/util/extractTag.test.ts +0 -17
  800. package/tests/util/toFlexRegex.test.ts +0 -7
  801. package/tsconfig.json +0 -26
  802. /package/{src/date/index.ts → date/index.d.ts} +0 -0
  803. /package/{src/dom/index.ts → dom/index.d.ts} +0 -0
  804. /package/{src/events/index.ts → events/index.d.ts} +0 -0
  805. /package/{src/hooks/index.ts → hooks/index.d.ts} +0 -0
  806. /package/{src/writes/index.ts → writes/index.d.ts} +0 -0
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ declare type FilterOptions<T> = (options: T[], query: string) => T[];
3
+ declare type OnNewItem<T> = (s: string) => T;
4
+ declare type ItemToQuery<T> = (t?: T) => string;
5
+ export declare type AutocompleteInputProps<T = string> = {
6
+ value?: T;
7
+ setValue: (q: T) => void;
8
+ showButton?: boolean;
9
+ onBlur?: (v: string) => void;
10
+ onConfirm?: () => void;
11
+ options?: T[];
12
+ placeholder?: string;
13
+ autoFocus?: boolean;
14
+ multiline?: boolean;
15
+ id?: string;
16
+ filterOptions?: FilterOptions<T>;
17
+ itemToQuery?: ItemToQuery<T>;
18
+ renderItem?: (props: {
19
+ item: T;
20
+ onClick: () => void;
21
+ active: boolean;
22
+ }) => React.ReactElement;
23
+ onNewItem?: OnNewItem<T>;
24
+ disabled?: boolean;
25
+ maxItemsDisplayed?: number;
26
+ };
27
+ declare const AutocompleteInput: <T extends unknown = string>({ value, setValue, onBlur, onConfirm, showButton, options, placeholder, autoFocus, multiline, id, filterOptions: _filterOptions, itemToQuery: _itemToQuery, renderItem, onNewItem: _onNewItem, disabled, maxItemsDisplayed, }: AutocompleteInputProps<T>) => React.ReactElement;
28
+ export default AutocompleteInput;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const core_1 = require("@blueprintjs/core");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const useArrowKeyDown_1 = tslib_1.__importDefault(require("../hooks/useArrowKeyDown"));
7
+ const fuzzy_1 = tslib_1.__importDefault(require("fuzzy"));
8
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
9
+ const AutocompleteInput = ({ value, setValue, onBlur, onConfirm, showButton, options = [], placeholder = "Enter value", autoFocus, multiline, id, filterOptions: _filterOptions, itemToQuery: _itemToQuery, renderItem, onNewItem: _onNewItem, disabled, maxItemsDisplayed = Infinity, }) => {
10
+ const [isOpen, setIsOpen] = (0, react_1.useState)(false);
11
+ const itemToQuery = (0, react_1.useMemo)(() => _itemToQuery || ((s) => (s ? `${s}` : "")), [_itemToQuery]);
12
+ const [query, setQuery] = (0, react_1.useState)(() => itemToQuery(value));
13
+ const open = (0, react_1.useCallback)(() => setIsOpen(true), [setIsOpen]);
14
+ const close = (0, react_1.useCallback)(() => setIsOpen(false), [setIsOpen]);
15
+ const [isTyping, setIsTyping] = (0, react_1.useState)(false);
16
+ const filterOptions = (0, react_1.useMemo)(() => _filterOptions ||
17
+ ((o, q) => fuzzy_1.default
18
+ .filter(q, o, { extract: itemToQuery })
19
+ .map((f) => f.original)
20
+ .filter((f) => !!f)), [_filterOptions, itemToQuery]);
21
+ const onNewItem = (0, react_1.useMemo)(() => _onNewItem || ((s) => s), [_onNewItem]);
22
+ const items = (0, react_1.useMemo)(() => (query ? filterOptions(options, query) : options).slice(0, maxItemsDisplayed), [query, options, filterOptions, maxItemsDisplayed]);
23
+ const menuRef = (0, react_1.useRef)(null);
24
+ const inputRef = (0, react_1.useRef)(null);
25
+ const onEnter = (0, react_1.useCallback)((value) => {
26
+ if (isOpen && value) {
27
+ setQuery(itemToQuery(value));
28
+ setValue(value);
29
+ setIsTyping(false);
30
+ }
31
+ else if (onConfirm) {
32
+ onConfirm();
33
+ }
34
+ else {
35
+ setIsOpen(true);
36
+ }
37
+ }, [setValue, onConfirm, isOpen]);
38
+ const { activeIndex, onKeyDown } = (0, useArrowKeyDown_1.default)({
39
+ onEnter,
40
+ results: items,
41
+ menuRef,
42
+ });
43
+ (0, react_1.useEffect)(() => {
44
+ if (!items.length || !isTyping)
45
+ close();
46
+ else
47
+ open();
48
+ }, [items, close, open, isTyping]);
49
+ (0, react_1.useEffect)(() => {
50
+ if (query && isOpen)
51
+ setValue(items[activeIndex] || onNewItem(query));
52
+ else if (query)
53
+ setValue(onNewItem(query));
54
+ }, [setValue, activeIndex, items, onNewItem, query]);
55
+ (0, react_1.useEffect)(() => {
56
+ if (inputRef.current &&
57
+ inputRef.current === document.activeElement &&
58
+ value) {
59
+ const index = itemToQuery(value).length;
60
+ inputRef.current.setSelectionRange(index, index);
61
+ }
62
+ const touchEndListener = (e) => {
63
+ if (!e.target ||
64
+ !menuRef.current ||
65
+ menuRef.current.contains(e.target)) {
66
+ return;
67
+ }
68
+ if (!inputRef.current || inputRef.current.contains(e.target)) {
69
+ return;
70
+ }
71
+ close();
72
+ };
73
+ document.body.addEventListener("touchend", touchEndListener);
74
+ return () => document.body.removeEventListener("touchend", touchEndListener);
75
+ }, [inputRef, menuRef, close]);
76
+ const Input = (0, react_1.useMemo)(() => (multiline ? core_1.TextArea : core_1.InputGroup), [multiline]);
77
+ return (react_1.default.createElement(core_1.Popover, { portalClassName: "roamjs-autocomplete-input", targetClassName: "roamjs-autocomplete-input-target", captureDismiss: true, isOpen: isOpen, onOpened: open, minimal: true, autoFocus: false, enforceFocus: false, position: core_1.PopoverPosition.BOTTOM_LEFT, modifiers: {
78
+ flip: { enabled: false },
79
+ preventOverflow: { enabled: false },
80
+ }, content: react_1.default.createElement(core_1.Menu, { className: "max-h-64 overflow-auto max-w-md", ulRef: menuRef }, items.map((t, i) => {
81
+ const onClick = () => {
82
+ var _a;
83
+ setIsTyping(false);
84
+ setValue(t);
85
+ setQuery(itemToQuery(t));
86
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
87
+ };
88
+ const sharedProps = {
89
+ onClick,
90
+ onTouchEnd: onClick,
91
+ active: activeIndex === i,
92
+ };
93
+ return renderItem ? (react_1.default.createElement(react_1.default.Fragment, { key: i }, renderItem === null || renderItem === void 0 ? void 0 : renderItem(Object.assign({ item: t }, sharedProps)))) : (react_1.default.createElement(core_1.MenuItem, Object.assign({ text: itemToQuery(t), key: i, multiline: true }, sharedProps)));
94
+ })), target: react_1.default.createElement(Input, Object.assign({ disabled: disabled, value: query, onChange: (e) => {
95
+ setIsTyping(true);
96
+ setQuery(e.target.value);
97
+ }, autoFocus: autoFocus, placeholder: placeholder, onKeyDown: (e) => {
98
+ if (e.key === "Escape") {
99
+ e.stopPropagation();
100
+ close();
101
+ }
102
+ else {
103
+ onKeyDown(e);
104
+ }
105
+ }, id: id, onClick: () => setIsTyping(true), onBlur: (e) => {
106
+ var _a, _b;
107
+ if (e.relatedTarget === null ||
108
+ !((_b = (_a = e.relatedTarget).closest) === null || _b === void 0 ? void 0 : _b.call(_a, ".roamjs-autocomplete-input"))) {
109
+ setIsTyping(false);
110
+ }
111
+ if (onBlur) {
112
+ onBlur(e.target.value);
113
+ }
114
+ }, inputRef: inputRef }, (showButton
115
+ ? {
116
+ rightElement: (react_1.default.createElement(core_1.Button, { icon: "add", minimal: true, onClick: () => onEnter() })),
117
+ }
118
+ : {}))) }));
119
+ };
120
+ exports.default = AutocompleteInput;
121
+ //# sourceMappingURL=AutocompleteInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutocompleteInput.js","sourceRoot":"","sources":["../../src/components/AutocompleteInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n InputGroup,\n Menu,\n MenuItem,\n PopoverPosition,\n Popover,\n Button,\n TextArea,\n} from \"@blueprintjs/core\";\nimport React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n} from \"react\";\nimport useArrowKeyDown from \"../hooks/useArrowKeyDown\";\nimport fuzzy from \"fuzzy\";\n\ntype FilterOptions<T> = (options: T[], query: string) => T[];\ntype OnNewItem<T> = (s: string) => T;\ntype ItemToQuery<T> = (t?: T) => string;\n\nexport type AutocompleteInputProps<T = string> = {\n value?: T;\n setValue: (q: T) => void;\n showButton?: boolean;\n onBlur?: (v: string) => void;\n onConfirm?: () => void;\n options?: T[];\n placeholder?: string;\n autoFocus?: boolean;\n multiline?: boolean;\n id?: string;\n filterOptions?: FilterOptions<T>;\n itemToQuery?: ItemToQuery<T>;\n renderItem?: (props: {\n item: T;\n onClick: () => void;\n active: boolean;\n }) => React.ReactElement;\n onNewItem?: OnNewItem<T>;\n disabled?: boolean;\n maxItemsDisplayed?: number;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst AutocompleteInput = <T extends unknown = string>({\n value,\n setValue,\n onBlur,\n onConfirm,\n showButton,\n options = [],\n placeholder = \"Enter value\",\n autoFocus,\n multiline,\n id,\n filterOptions: _filterOptions,\n itemToQuery: _itemToQuery,\n renderItem,\n onNewItem: _onNewItem,\n disabled,\n maxItemsDisplayed = Infinity,\n}: AutocompleteInputProps<T>): React.ReactElement => {\n const [isOpen, setIsOpen] = useState(false);\n const itemToQuery = useMemo<ItemToQuery<T>>(\n () => _itemToQuery || ((s) => (s ? `${s}` : \"\")),\n [_itemToQuery]\n );\n const [query, setQuery] = useState<string>(() => itemToQuery(value));\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const [isTyping, setIsTyping] = useState(false);\n const filterOptions = useMemo<FilterOptions<T>>(\n () =>\n _filterOptions ||\n ((o, q) =>\n fuzzy\n .filter(q, o, { extract: itemToQuery })\n .map((f) => f.original)\n .filter((f): f is T => !!f)),\n [_filterOptions, itemToQuery]\n );\n const onNewItem = useMemo<OnNewItem<T>>(\n () => _onNewItem || ((s) => s as T),\n [_onNewItem]\n );\n\n const items = useMemo(\n () =>\n (query ? filterOptions(options, query) : options).slice(\n 0,\n maxItemsDisplayed\n ),\n [query, options, filterOptions, maxItemsDisplayed]\n );\n const menuRef = useRef<HTMLUListElement>(null);\n const inputRef = useRef<HTMLInputElement & HTMLTextAreaElement>(null);\n const onEnter = useCallback(\n (value?: T) => {\n if (isOpen && value) {\n setQuery(itemToQuery(value));\n setValue(value);\n setIsTyping(false);\n } else if (onConfirm) {\n onConfirm();\n } else {\n setIsOpen(true);\n }\n },\n [setValue, onConfirm, isOpen]\n );\n const { activeIndex, onKeyDown } = useArrowKeyDown({\n onEnter,\n results: items,\n menuRef,\n });\n useEffect(() => {\n if (!items.length || !isTyping) close();\n else open();\n }, [items, close, open, isTyping]);\n useEffect(() => {\n if (query && isOpen) setValue(items[activeIndex] || onNewItem(query));\n else if (query) setValue(onNewItem(query));\n }, [setValue, activeIndex, items, onNewItem, query]);\n useEffect(() => {\n if (\n inputRef.current &&\n inputRef.current === document.activeElement &&\n value\n ) {\n const index = itemToQuery(value).length;\n inputRef.current.setSelectionRange(index, index);\n }\n const touchEndListener = (e: TouchEvent) => {\n if (\n !e.target ||\n !menuRef.current ||\n menuRef.current.contains(e.target as Element)\n ) {\n return;\n }\n if (!inputRef.current || inputRef.current.contains(e.target as Element)) {\n return;\n }\n close();\n };\n document.body.addEventListener(\"touchend\", touchEndListener);\n return () =>\n document.body.removeEventListener(\"touchend\", touchEndListener);\n }, [inputRef, menuRef, close]);\n const Input = useMemo(() => (multiline ? TextArea : InputGroup), [multiline]);\n return (\n <Popover\n portalClassName={\"roamjs-autocomplete-input\"}\n targetClassName={\"roamjs-autocomplete-input-target\"}\n captureDismiss={true}\n isOpen={isOpen}\n onOpened={open}\n minimal\n autoFocus={false}\n enforceFocus={false}\n position={PopoverPosition.BOTTOM_LEFT}\n modifiers={{\n flip: { enabled: false },\n preventOverflow: { enabled: false },\n }}\n content={\n <Menu className={\"max-h-64 overflow-auto max-w-md\"} ulRef={menuRef}>\n {items.map((t, i) => {\n const onClick = () => {\n setIsTyping(false);\n setValue(t);\n setQuery(itemToQuery(t));\n inputRef.current?.focus();\n };\n const sharedProps = {\n onClick,\n onTouchEnd: onClick,\n active: activeIndex === i,\n };\n return renderItem ? (\n <React.Fragment key={i}>\n {renderItem?.({\n item: t,\n ...sharedProps,\n })}\n </React.Fragment>\n ) : (\n <MenuItem\n text={itemToQuery(t)}\n key={i}\n multiline\n {...sharedProps}\n />\n );\n })}\n </Menu>\n }\n target={\n <Input\n disabled={disabled}\n value={query}\n onChange={(e) => {\n setIsTyping(true);\n setQuery(e.target.value);\n }}\n autoFocus={autoFocus}\n placeholder={placeholder}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n close();\n } else {\n onKeyDown(e);\n }\n }}\n id={id}\n onClick={() => setIsTyping(true)}\n onBlur={(e) => {\n if (\n e.relatedTarget === null ||\n !(e.relatedTarget as HTMLElement).closest?.(\n \".roamjs-autocomplete-input\"\n )\n ) {\n setIsTyping(false);\n }\n if (onBlur) {\n onBlur(e.target.value);\n }\n }}\n inputRef={inputRef}\n {...(showButton\n ? {\n rightElement: (\n <Button icon={\"add\"} minimal onClick={() => onEnter()} />\n ),\n }\n : {})}\n />\n }\n />\n );\n};\n\nexport default AutocompleteInput;\n"]}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ declare type BlockErrorBoundaryProps = {
3
+ blockUid: string;
4
+ message: string;
5
+ children: React.ReactNode;
6
+ };
7
+ declare type BlockErrorBoundaryState = {
8
+ hasError: boolean;
9
+ };
10
+ declare class BlockErrorBoundary extends React.Component<BlockErrorBoundaryProps, BlockErrorBoundaryState> {
11
+ constructor(props: BlockErrorBoundaryProps);
12
+ static getDerivedStateFromError(): BlockErrorBoundaryState;
13
+ componentDidCatch(error: Error): void;
14
+ render(): React.ReactNode;
15
+ }
16
+ export default BlockErrorBoundary;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importDefault(require("react"));
5
+ const createBlock_1 = tslib_1.__importDefault(require("../writes/createBlock"));
6
+ class BlockErrorBoundary extends react_1.default.Component {
7
+ constructor(props) {
8
+ super(props);
9
+ this.state = { hasError: false };
10
+ }
11
+ static getDerivedStateFromError() {
12
+ return { hasError: true };
13
+ }
14
+ componentDidCatch(error) {
15
+ (0, createBlock_1.default)({
16
+ node: { text: this.props.message.replace("{ERROR}", error.message) },
17
+ parentUid: this.props.blockUid,
18
+ });
19
+ }
20
+ render() {
21
+ if (this.state.hasError) {
22
+ return react_1.default.createElement("div", null, "Component Failed To Load");
23
+ }
24
+ return this.props.children;
25
+ }
26
+ }
27
+ exports.default = BlockErrorBoundary;
28
+ //# sourceMappingURL=BlockErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockErrorBoundary.js","sourceRoot":"","sources":["../../src/components/BlockErrorBoundary.tsx"],"names":[],"mappings":";;;AAAA,0DAA0B;AAC1B,gFAAgD;AAShD,MAAM,kBAAmB,SAAQ,eAAK,CAAC,SAGtC;IACC,YAAY,KAA8B;QACxC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,wBAAwB;QAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,KAAY;QAC5B,IAAA,qBAAW,EAAC;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YACpE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,OAAO,sEAAmC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF;AAED,kBAAe,kBAAkB,CAAC","sourcesContent":["import React from \"react\";\nimport createBlock from \"../writes/createBlock\";\n\ntype BlockErrorBoundaryProps = {\n blockUid: string;\n message: string;\n children: React.ReactNode;\n};\ntype BlockErrorBoundaryState = { hasError: boolean };\n\nclass BlockErrorBoundary extends React.Component<\n BlockErrorBoundaryProps,\n BlockErrorBoundaryState\n> {\n constructor(props: BlockErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(): BlockErrorBoundaryState {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error): void {\n createBlock({\n node: { text: this.props.message.replace(\"{ERROR}\", error.message) },\n parentUid: this.props.blockUid,\n });\n }\n\n render(): React.ReactNode {\n if (this.state.hasError) {\n return <div>Component Failed To Load</div>;\n }\n return this.props.children;\n }\n}\n\nexport default BlockErrorBoundary;\n"]}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ declare const BlockInput: ({ value, setValue, onBlur, onConfirm, getAllBlocks, autoFocus, }: {
3
+ value: string;
4
+ setValue: (q: string, uid?: string) => void;
5
+ onBlur?: ((v: string) => void) | undefined;
6
+ onConfirm?: (() => void) | undefined;
7
+ getAllBlocks?: (() => {
8
+ text: string;
9
+ uid: string;
10
+ }[]) | undefined;
11
+ autoFocus?: boolean | undefined;
12
+ }) => React.ReactElement;
13
+ export default BlockInput;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const core_1 = require("@blueprintjs/core");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const getAllBlockUidsAndTexts_1 = tslib_1.__importDefault(require("../queries/getAllBlockUidsAndTexts"));
7
+ const useArrowKeyDown_1 = tslib_1.__importDefault(require("../hooks/useArrowKeyDown"));
8
+ const searchBlocksByString = (q, blocks) => {
9
+ const regex = new RegExp(q, "i");
10
+ return blocks.filter((a) => regex.test(a.text)).slice(0, 9);
11
+ };
12
+ const BlockInput = ({ value, setValue, onBlur, onConfirm, getAllBlocks = getAllBlockUidsAndTexts_1.default, autoFocus, }) => {
13
+ const [isOpen, setIsOpen] = (0, react_1.useState)(false);
14
+ const open = (0, react_1.useCallback)(() => setIsOpen(true), [setIsOpen]);
15
+ const close = (0, react_1.useCallback)(() => setIsOpen(false), [setIsOpen]);
16
+ const allBlocks = (0, react_1.useMemo)(getAllBlocks, []);
17
+ const items = (0, react_1.useMemo)(() => (value && isOpen ? searchBlocksByString(value, allBlocks) : []), [value, allBlocks]);
18
+ const menuRef = (0, react_1.useRef)(null);
19
+ const inputRef = (0, react_1.useRef)(null);
20
+ const { activeIndex, onKeyDown } = (0, useArrowKeyDown_1.default)({
21
+ onEnter: (value) => {
22
+ if (isOpen) {
23
+ setValue(value.text, value.uid);
24
+ close();
25
+ }
26
+ else if (onConfirm) {
27
+ onConfirm();
28
+ }
29
+ },
30
+ results: items,
31
+ menuRef,
32
+ });
33
+ return (react_1.default.createElement(core_1.Popover, { portalClassName: "roamjs-block-input", targetClassName: "roamjs-block-input-target", captureDismiss: true, isOpen: isOpen, onOpened: open, minimal: true, autoFocus: false, enforceFocus: false, position: core_1.PopoverPosition.BOTTOM_LEFT, modifiers: {
34
+ flip: { enabled: false },
35
+ preventOverflow: { enabled: false },
36
+ }, content: react_1.default.createElement(core_1.Menu, { className: "max-h-64 overflow-auto max-w-md", ulRef: menuRef }, items.map((t, i) => (react_1.default.createElement(core_1.MenuItem, { text: t.text, active: activeIndex === i, key: t.uid, multiline: true, onClick: () => {
37
+ var _a;
38
+ setValue(t.text, t.uid);
39
+ close();
40
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
41
+ } })))), target: react_1.default.createElement(core_1.InputGroup, { value: value || "", onChange: (e) => {
42
+ setValue(e.target.value);
43
+ setIsOpen(!!e.target.value);
44
+ }, placeholder: "Search for a block", onKeyDown: onKeyDown, onBlur: (e) => {
45
+ var _a, _b;
46
+ if (e.relatedTarget &&
47
+ !((_b = (_a = e.relatedTarget).closest) === null || _b === void 0 ? void 0 : _b.call(_a, ".roamjs-block-input"))) {
48
+ close();
49
+ }
50
+ if (onBlur) {
51
+ onBlur(e.target.value);
52
+ }
53
+ }, inputRef: inputRef, autoFocus: autoFocus }) }));
54
+ };
55
+ exports.default = BlockInput;
56
+ //# sourceMappingURL=BlockInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockInput.js","sourceRoot":"","sources":["../../src/components/BlockInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Popover,\n PopoverPosition,\n Menu,\n MenuItem,\n InputGroup,\n} from \"@blueprintjs/core\";\nimport React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport getAllBlockUidsAndTexts from \"../queries/getAllBlockUidsAndTexts\";\nimport useArrowKeyDown from \"../hooks/useArrowKeyDown\";\n\nconst searchBlocksByString = (\n q: string,\n blocks: { text: string; uid: string }[]\n) => {\n const regex = new RegExp(q, \"i\");\n return blocks.filter((a) => regex.test(a.text)).slice(0, 9);\n};\n\nconst BlockInput = ({\n value,\n setValue,\n onBlur,\n onConfirm,\n getAllBlocks = getAllBlockUidsAndTexts,\n autoFocus,\n}: {\n value: string;\n setValue: (q: string, uid?: string) => void;\n onBlur?: (v: string) => void;\n onConfirm?: () => void;\n getAllBlocks?: () => { text: string; uid: string }[];\n autoFocus?: boolean;\n}): React.ReactElement => {\n const [isOpen, setIsOpen] = useState(false);\n const open = useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = useCallback(() => setIsOpen(false), [setIsOpen]);\n const allBlocks = useMemo(getAllBlocks, []);\n const items = useMemo(\n () => (value && isOpen ? searchBlocksByString(value, allBlocks) : []),\n [value, allBlocks]\n );\n const menuRef = useRef<HTMLUListElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const { activeIndex, onKeyDown } = useArrowKeyDown({\n onEnter: (value) => {\n if (isOpen) {\n setValue(value.text, value.uid);\n close();\n } else if (onConfirm) {\n onConfirm();\n }\n },\n results: items,\n menuRef,\n });\n return (\n <Popover\n portalClassName={\"roamjs-block-input\"}\n targetClassName={\"roamjs-block-input-target\"}\n captureDismiss={true}\n isOpen={isOpen}\n onOpened={open}\n minimal={true}\n autoFocus={false}\n enforceFocus={false}\n position={PopoverPosition.BOTTOM_LEFT}\n modifiers={{\n flip: { enabled: false },\n preventOverflow: { enabled: false },\n }}\n content={\n <Menu className={\"max-h-64 overflow-auto max-w-md\"} ulRef={menuRef}>\n {items.map((t, i) => (\n <MenuItem\n text={t.text}\n active={activeIndex === i}\n key={t.uid}\n multiline\n onClick={() => {\n setValue(t.text, t.uid);\n close();\n inputRef.current?.focus();\n }}\n />\n ))}\n </Menu>\n }\n target={\n <InputGroup\n value={value || \"\"}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n setIsOpen(!!e.target.value);\n }}\n placeholder={\"Search for a block\"}\n onKeyDown={onKeyDown}\n onBlur={(e) => {\n if (\n e.relatedTarget &&\n !(e.relatedTarget as HTMLElement).closest?.(\".roamjs-block-input\")\n ) {\n close();\n }\n if (onBlur) {\n onBlur(e.target.value);\n }\n }}\n inputRef={inputRef}\n autoFocus={autoFocus}\n />\n }\n />\n );\n};\n\nexport default BlockInput;\n"]}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { OnloadArgs } from "../types/native";
3
+ declare const ComponentContainer: React.FunctionComponent<{
4
+ blockId?: string;
5
+ className?: string;
6
+ children?: React.ReactNode;
7
+ }>;
8
+ export declare const createComponentRender: (Fc: (props: {
9
+ blockUid: string;
10
+ }) => React.ReactElement, className?: string) => (b: HTMLButtonElement, args?: OnloadArgs) => void;
11
+ export default ComponentContainer;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createComponentRender = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@blueprintjs/core");
6
+ const react_1 = tslib_1.__importStar(require("react"));
7
+ const getUidsFromId_1 = tslib_1.__importDefault(require("../dom/getUidsFromId"));
8
+ const getBlockUidFromTarget_1 = tslib_1.__importDefault(require("../dom/getBlockUidFromTarget"));
9
+ const renderWithUnmount_1 = tslib_1.__importDefault(require("../util/renderWithUnmount"));
10
+ const ComponentContainer = ({ blockId, className, children }) => {
11
+ const [showIcons, setShowIcons] = (0, react_1.useState)(false);
12
+ const appear = (0, react_1.useCallback)(() => setShowIcons(true), [setShowIcons]);
13
+ const disappear = (0, react_1.useCallback)(() => setShowIcons(false), [setShowIcons]);
14
+ const { blockUid, windowId } = (0, getUidsFromId_1.default)(blockId);
15
+ return (react_1.default.createElement("div", { className: className, onMouseOver: appear, onMouseLeave: disappear, style: { position: "relative", width: "fit-content", minWidth: 300 } },
16
+ showIcons && (react_1.default.createElement("div", { className: "roamjs-edit-component absolute top-2 right-2 z-50" }, blockId && (react_1.default.createElement(core_1.Button, { icon: "edit", minimal: true, onClick: () => window.roamAlphaAPI.ui.setBlockFocusAndSelection({
17
+ location: { "block-uid": blockUid, "window-id": windowId },
18
+ }) })))),
19
+ children));
20
+ };
21
+ const createComponentRender = (Fc, className) => (b, args) => {
22
+ var _a, _b;
23
+ if (b.parentElement) {
24
+ b.parentElement.onmousedown = (e) => e.stopPropagation();
25
+ const blockUid = (0, getBlockUidFromTarget_1.default)(b);
26
+ const possibleBlockId = (_a = b.closest(".roam-block")) === null || _a === void 0 ? void 0 : _a.id;
27
+ const blockId = ((_b = possibleBlockId === null || possibleBlockId === void 0 ? void 0 : possibleBlockId.endsWith) === null || _b === void 0 ? void 0 : _b.call(possibleBlockId, blockUid))
28
+ ? possibleBlockId
29
+ : undefined;
30
+ if (blockUid) {
31
+ (0, renderWithUnmount_1.default)(react_1.default.createElement(ComponentContainer, { blockId: blockId, className: className },
32
+ react_1.default.createElement(Fc, { blockUid: blockUid })), b.parentElement, args);
33
+ }
34
+ }
35
+ };
36
+ exports.createComponentRender = createComponentRender;
37
+ exports.default = ComponentContainer;
38
+ //# sourceMappingURL=ComponentContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentContainer.js","sourceRoot":"","sources":["../../src/components/ComponentContainer.tsx"],"names":[],"mappings":";;;;AAAA,4CAA2C;AAC3C,uDAAqD;AACrD,iFAAiD;AACjD,iGAAiE;AACjE,0FAA0D;AAG1D,MAAM,kBAAkB,GAInB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC;IACtD,OAAO,CACL,uCACE,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,SAAS,EACvB,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE;QAEnE,SAAS,IAAI,CACZ,uCAAK,SAAS,EAAE,mDAAmD,IAChE,OAAO,IAAI,CACV,8BAAC,aAAM,IACL,IAAI,EAAC,MAAM,EACX,OAAO,QACP,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,yBAAyB,CAAC;gBAC/C,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;aAC3D,CAAC,GAEJ,CACH,CACG,CACP;QACA,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAChC,CACE,EAAuD,EACvD,SAAkB,EAClB,EAAE,CACJ,CAAC,CAAoB,EAAE,IAAiB,EAAQ,EAAE;;IAChD,IAAI,CAAC,CAAC,aAAa,EAAE;QACnB,CAAC,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAA,+BAAqB,EAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,MAAA,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,0CAAE,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,CAAA,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,gEAAG,QAAQ,CAAC;YACnD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,QAAQ,EAAE;YACZ,IAAA,2BAAiB,EACf,8BAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;gBACxD,8BAAC,EAAE,IAAC,QAAQ,EAAE,QAAQ,GAAI,CACP,EACrB,CAAC,CAAC,aAAa,EACf,IAAI,CACL,CAAC;SACH;KACF;AACH,CAAC,CAAC;AAvBS,QAAA,qBAAqB,yBAuB9B;AAEJ,kBAAe,kBAAkB,CAAC","sourcesContent":["import { Button } from \"@blueprintjs/core\";\nimport React, { useCallback, useState } from \"react\";\nimport getUidsFromId from \"../dom/getUidsFromId\";\nimport getBlockUidFromTarget from \"../dom/getBlockUidFromTarget\";\nimport renderWithUnmount from \"../util/renderWithUnmount\";\nimport { OnloadArgs } from \"../types/native\";\n\nconst ComponentContainer: React.FunctionComponent<{\n blockId?: string;\n className?: string;\n children?: React.ReactNode;\n}> = ({ blockId, className, children }) => {\n const [showIcons, setShowIcons] = useState(false);\n const appear = useCallback(() => setShowIcons(true), [setShowIcons]);\n const disappear = useCallback(() => setShowIcons(false), [setShowIcons]);\n\n const { blockUid, windowId } = getUidsFromId(blockId);\n return (\n <div\n className={className}\n onMouseOver={appear}\n onMouseLeave={disappear}\n style={{ position: \"relative\", width: \"fit-content\", minWidth: 300 }}\n >\n {showIcons && (\n <div className={\"roamjs-edit-component absolute top-2 right-2 z-50\"}>\n {blockId && (\n <Button\n icon=\"edit\"\n minimal\n onClick={() =>\n window.roamAlphaAPI.ui.setBlockFocusAndSelection({\n location: { \"block-uid\": blockUid, \"window-id\": windowId },\n })\n }\n />\n )}\n </div>\n )}\n {children}\n </div>\n );\n};\n\nexport const createComponentRender =\n (\n Fc: (props: { blockUid: string }) => React.ReactElement,\n className?: string\n ) =>\n (b: HTMLButtonElement, args?: OnloadArgs): void => {\n if (b.parentElement) {\n b.parentElement.onmousedown = (e: MouseEvent) => e.stopPropagation();\n const blockUid = getBlockUidFromTarget(b);\n const possibleBlockId = b.closest(\".roam-block\")?.id;\n const blockId = possibleBlockId?.endsWith?.(blockUid)\n ? possibleBlockId\n : undefined;\n if (blockUid) {\n renderWithUnmount(\n <ComponentContainer blockId={blockId} className={className}>\n <Fc blockUid={blockUid} />\n </ComponentContainer>,\n b.parentElement,\n args\n );\n }\n }\n };\n\nexport default ComponentContainer;\n"]}
@@ -0,0 +1,35 @@
1
+ import React from "react";
2
+ import type { Field, UnionField } from "./ConfigPanels/types";
3
+ import { Brand } from "./ConfigPanels/getBrandColors";
4
+ export declare type ConfigTab = {
5
+ id: string;
6
+ toggleable?: boolean | "premium";
7
+ onEnable?: () => void;
8
+ onDisable?: () => void;
9
+ development?: boolean;
10
+ fields: Field<UnionField>[];
11
+ };
12
+ declare type Config = {
13
+ tabs: ConfigTab[];
14
+ versioning?: boolean;
15
+ brand?: Brand;
16
+ } | Field<UnionField>[];
17
+ declare const ConfigPage: ({ id, config, pageUid, }: {
18
+ id: string;
19
+ config: Config;
20
+ pageUid: string;
21
+ }) => React.ReactElement;
22
+ export declare const render: ({ h, title, pageUid, config, }: {
23
+ h: HTMLHeadingElement;
24
+ title: string;
25
+ pageUid?: string | undefined;
26
+ config: Config;
27
+ }) => void;
28
+ export declare const createConfigObserver: ({ title, config, }: {
29
+ title: string;
30
+ config: Config;
31
+ }) => Promise<{
32
+ pageUid: string;
33
+ observer?: MutationObserver | undefined;
34
+ }>;
35
+ export default ConfigPage;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createConfigObserver = exports.render = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@blueprintjs/core");
6
+ const react_1 = tslib_1.__importStar(require("react"));
7
+ const react_dom_1 = tslib_1.__importDefault(require("react-dom"));
8
+ const createHTMLObserver_1 = tslib_1.__importDefault(require("../dom/createHTMLObserver"));
9
+ const createBlock_1 = tslib_1.__importDefault(require("../writes/createBlock"));
10
+ const createPage_1 = tslib_1.__importDefault(require("../writes/createPage"));
11
+ const getBasicTreeByParentUid_1 = tslib_1.__importDefault(require("../queries/getBasicTreeByParentUid"));
12
+ const getPageUidByPageTitle_1 = tslib_1.__importDefault(require("../queries/getPageUidByPageTitle"));
13
+ const getShallowTreeByParentUid_1 = tslib_1.__importDefault(require("../queries/getShallowTreeByParentUid"));
14
+ const localStorageGet_1 = tslib_1.__importDefault(require("../util/localStorageGet"));
15
+ const idToTitle_1 = tslib_1.__importDefault(require("../util/idToTitle"));
16
+ const FieldTabs = ({ id, fields, uid, pageUid, order, toggleable, }) => {
17
+ const parentUid = (0, react_1.useMemo)(() => {
18
+ if (/home/i.test(id)) {
19
+ return pageUid;
20
+ }
21
+ if (uid) {
22
+ return uid;
23
+ }
24
+ if (toggleable) {
25
+ return "";
26
+ }
27
+ const newUid = window.roamAlphaAPI.util.generateUID();
28
+ (0, createBlock_1.default)({
29
+ parentUid: pageUid,
30
+ order,
31
+ node: { text: id, uid: newUid },
32
+ });
33
+ return newUid;
34
+ }, [pageUid, uid, id, toggleable]);
35
+ const childUids = Object.fromEntries((0, getShallowTreeByParentUid_1.default)(parentUid).map(({ text, uid }) => [
36
+ text.toLowerCase().trim(),
37
+ uid,
38
+ ]));
39
+ const [selectedTabId, setSelectedTabId] = (0, react_1.useState)(fields.length && typeof toggleable !== "string"
40
+ ? fields[0].title
41
+ : "enabled");
42
+ const onTabsChange = (0, react_1.useCallback)((tabId) => setSelectedTabId(tabId), [setSelectedTabId]);
43
+ return (react_1.default.createElement(core_1.Tabs, { vertical: true, id: `${id}-field-tabs`, onChange: onTabsChange, selectedTabId: selectedTabId, renderActiveTabPanelOnly: true }, fields.map((field, i) => {
44
+ const { Panel, title, defaultValue } = field;
45
+ return (react_1.default.createElement(core_1.Tab, { id: title, key: title, title: (0, idToTitle_1.default)(title), panel: react_1.default.createElement(Panel, Object.assign({}, field, { defaultValue: defaultValue, order: i, parentUid: parentUid, uid: childUids[title.toLowerCase()] })) }));
46
+ })));
47
+ };
48
+ const ConfigPage = ({ id, config, pageUid, }) => {
49
+ var _a;
50
+ const isLegacy = "tabs" in config;
51
+ const userTabs = isLegacy
52
+ ? config.tabs.filter((t) => t.fields.length || t.toggleable)
53
+ : [{ fields: config, id: "home" }];
54
+ const [selectedTabId, setSelectedTabId] = (0, react_1.useState)((_a = userTabs[0]) === null || _a === void 0 ? void 0 : _a.id);
55
+ const onTabsChange = (0, react_1.useCallback)((tabId) => setSelectedTabId(tabId), [setSelectedTabId]);
56
+ const tree = (0, getBasicTreeByParentUid_1.default)(pageUid);
57
+ // first character trimmed intentionally for the `v` below
58
+ const titleRef = (0, react_1.useRef)(null);
59
+ const experimentalMode = (0, react_1.useMemo)(() => (0, localStorageGet_1.default)("experimental"), []);
60
+ return (react_1.default.createElement(core_1.Card, { style: { color: "#202B33" }, className: "roamjs-config-panel" },
61
+ react_1.default.createElement("div", { style: { display: "flex", justifyContent: "space-between" }, ref: titleRef, tabIndex: -1 },
62
+ react_1.default.createElement("h4", { style: { padding: 4 } },
63
+ (0, idToTitle_1.default)(id),
64
+ " Configuration")),
65
+ react_1.default.createElement("style", null, `.roamjs-config-tabs {\npadding: 4px;\n}`),
66
+ isLegacy ? (react_1.default.createElement(core_1.Tabs, { id: `${id}-config-tabs`, onChange: onTabsChange, selectedTabId: selectedTabId, renderActiveTabPanelOnly: true, className: "roamjs-config-tabs" }, userTabs.map(({ id: tabId, fields, toggleable, development = false, onEnable, onDisable, }, i) => {
67
+ var _a;
68
+ return (react_1.default.createElement(core_1.Tab, { id: tabId, key: tabId, title: (0, idToTitle_1.default)(tabId), disabled: development && !experimentalMode, panel: react_1.default.createElement(FieldTabs, { id: tabId, extensionId: id, fields: fields, uid: ((_a = tree.find((t) => new RegExp(tabId, "i").test(t.text))) === null || _a === void 0 ? void 0 : _a.uid) || "", pageUid: pageUid, order: i, toggleable: toggleable, onEnable: onEnable, onDisable: onDisable }) }));
69
+ }))) : (react_1.default.createElement(FieldTabs, { id: "home", extensionId: id, fields: config, uid: pageUid, pageUid: pageUid, order: 0, toggleable: false }))));
70
+ };
71
+ // TODO: better nested type discrimination here
72
+ const fieldsToChildren = (fields) => fields
73
+ .filter((f) => !!f.defaultValue)
74
+ .map((f) => {
75
+ var _a;
76
+ return ({
77
+ text: f.title,
78
+ children: f.Panel.type === "flag"
79
+ ? []
80
+ : f.Panel.type === "custom"
81
+ ? f.defaultValue || []
82
+ : f.Panel.type === "pages" || f.Panel.type === "multitext"
83
+ ? (_a = f.defaultValue) === null || _a === void 0 ? void 0 : _a.map((v) => ({ text: v }))
84
+ : f.Panel.type === "block"
85
+ ? f.defaultValue
86
+ ? [f.defaultValue]
87
+ : []
88
+ : [{ text: `${f.defaultValue}` }],
89
+ });
90
+ });
91
+ const createConfigPage = ({ title, config, }) => {
92
+ var _a;
93
+ const homeTab = "tabs" in config
94
+ ? (_a = config.tabs.find((t) => /home/i.test(t.id))) === null || _a === void 0 ? void 0 : _a.fields
95
+ : config;
96
+ const rawTree = [
97
+ ...(homeTab ? fieldsToChildren(homeTab) : []),
98
+ ...("tabs" in config
99
+ ? config.tabs
100
+ .filter((t) => !/home/i.test(t.id) && !t.toggleable && !t.development)
101
+ .map((t) => ({
102
+ text: t.id,
103
+ children: fieldsToChildren(t.fields),
104
+ }))
105
+ : []),
106
+ ];
107
+ return (0, createPage_1.default)({
108
+ title,
109
+ tree: rawTree.length ? rawTree : [{ text: " " }],
110
+ });
111
+ };
112
+ const render = ({ h, title, pageUid = (0, getPageUidByPageTitle_1.default)(title), config, }) => {
113
+ var _a, _b;
114
+ const uid = (0, getPageUidByPageTitle_1.default)(title);
115
+ const attribute = `data-roamjs-${uid}`;
116
+ const containerParent = (_a = h.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
117
+ if (containerParent && !containerParent.hasAttribute(attribute)) {
118
+ containerParent.setAttribute(attribute, "true");
119
+ const parent = document.createElement("div");
120
+ const configPageId = title.split("/").slice(-1)[0];
121
+ parent.id = `${configPageId}-config`;
122
+ containerParent.insertBefore(parent, ((_b = h.parentElement) === null || _b === void 0 ? void 0 : _b.nextElementSibling) || null);
123
+ react_dom_1.default.render(react_1.default.createElement(ConfigPage, { id: configPageId, config: config, pageUid: pageUid }), parent);
124
+ }
125
+ };
126
+ exports.render = render;
127
+ const createConfigObserver = ({ title, config, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
128
+ const pageUid = (0, getPageUidByPageTitle_1.default)(title) ||
129
+ (yield createConfigPage({
130
+ title,
131
+ config,
132
+ }));
133
+ if ("tabs" in config ? !!config.tabs.length : !!config.length) {
134
+ const observer = (0, createHTMLObserver_1.default)({
135
+ className: "rm-title-display",
136
+ tag: "H1",
137
+ callback: (d) => {
138
+ const h = d;
139
+ if (h.innerText === title) {
140
+ (0, exports.render)({
141
+ pageUid,
142
+ config,
143
+ title,
144
+ h,
145
+ });
146
+ }
147
+ },
148
+ });
149
+ return {
150
+ pageUid,
151
+ observer,
152
+ };
153
+ }
154
+ return {
155
+ pageUid,
156
+ };
157
+ });
158
+ exports.createConfigObserver = createConfigObserver;
159
+ exports.default = ConfigPage;
160
+ //# sourceMappingURL=ConfigPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigPage.js","sourceRoot":"","sources":["../../src/components/ConfigPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Card, Tab, Tabs } from \"@blueprintjs/core\";\nimport React, { useCallback, useMemo, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport createHTMLObserver from \"../dom/createHTMLObserver\";\nimport createBlock from \"../writes/createBlock\";\nimport createPage from \"../writes/createPage\";\nimport getBasicTreeByParentUid from \"../queries/getBasicTreeByParentUid\";\nimport getPageUidByPageTitle from \"../queries/getPageUidByPageTitle\";\nimport getShallowTreeByParentUid from \"../queries/getShallowTreeByParentUid\";\nimport localStorageGet from \"../util/localStorageGet\";\nimport idToTitle from \"../util/idToTitle\";\nimport type { Field, UnionField } from \"./ConfigPanels/types\";\nimport { Brand } from \"./ConfigPanels/getBrandColors\";\nimport { InputTextNode } from \"../types\";\n\nexport type ConfigTab = {\n id: string;\n toggleable?: boolean | \"premium\";\n onEnable?: () => void;\n onDisable?: () => void;\n development?: boolean;\n fields: Field<UnionField>[];\n};\n\ntype Config =\n | {\n tabs: ConfigTab[];\n versioning?: boolean;\n brand?: Brand;\n }\n | Field<UnionField>[];\n\nconst FieldTabs = ({\n id,\n fields,\n uid,\n pageUid,\n order,\n toggleable,\n}: {\n uid: string;\n pageUid: string;\n order: number;\n extensionId: string;\n} & ConfigTab) => {\n const parentUid = useMemo(() => {\n if (/home/i.test(id)) {\n return pageUid;\n }\n if (uid) {\n return uid;\n }\n if (toggleable) {\n return \"\";\n }\n const newUid = window.roamAlphaAPI.util.generateUID();\n createBlock({\n parentUid: pageUid,\n order,\n node: { text: id, uid: newUid },\n });\n return newUid;\n }, [pageUid, uid, id, toggleable]);\n const childUids = Object.fromEntries(\n getShallowTreeByParentUid(parentUid).map(({ text, uid }) => [\n text.toLowerCase().trim(),\n uid,\n ])\n );\n const [selectedTabId, setSelectedTabId] = useState(\n fields.length && typeof toggleable !== \"string\"\n ? fields[0].title\n : \"enabled\"\n );\n const onTabsChange = useCallback(\n (tabId: string) => setSelectedTabId(tabId),\n [setSelectedTabId]\n );\n return (\n <Tabs\n vertical\n id={`${id}-field-tabs`}\n onChange={onTabsChange}\n selectedTabId={selectedTabId}\n renderActiveTabPanelOnly\n >\n {fields.map((field, i) => {\n const { Panel, title, defaultValue } = field;\n return (\n <Tab\n id={title}\n key={title}\n title={idToTitle(title)}\n panel={\n <Panel\n {...field}\n defaultValue={defaultValue}\n order={i}\n parentUid={parentUid}\n uid={childUids[title.toLowerCase()]}\n />\n }\n />\n );\n })}\n </Tabs>\n );\n};\n\nconst ConfigPage = ({\n id,\n config,\n pageUid,\n}: {\n id: string;\n config: Config;\n pageUid: string;\n}): React.ReactElement => {\n const isLegacy = \"tabs\" in config;\n const userTabs = isLegacy\n ? config.tabs.filter((t) => t.fields.length || t.toggleable)\n : [{ fields: config, id: \"home\" }];\n const [selectedTabId, setSelectedTabId] = useState(userTabs[0]?.id);\n const onTabsChange = useCallback(\n (tabId: string) => setSelectedTabId(tabId),\n [setSelectedTabId]\n );\n const tree = getBasicTreeByParentUid(pageUid);\n\n // first character trimmed intentionally for the `v` below\n const titleRef = useRef<HTMLDivElement>(null);\n const experimentalMode = useMemo(() => localStorageGet(\"experimental\"), []);\n return (\n <Card style={{ color: \"#202B33\" }} className={\"roamjs-config-panel\"}>\n <div\n style={{ display: \"flex\", justifyContent: \"space-between\" }}\n ref={titleRef}\n tabIndex={-1}\n >\n <h4 style={{ padding: 4 }}>{idToTitle(id)} Configuration</h4>\n </div>\n <style>{`.roamjs-config-tabs {\\npadding: 4px;\\n}`}</style>\n {isLegacy ? (\n <Tabs\n id={`${id}-config-tabs`}\n onChange={onTabsChange}\n selectedTabId={selectedTabId}\n renderActiveTabPanelOnly\n className={\"roamjs-config-tabs\"}\n >\n {userTabs.map(\n (\n {\n id: tabId,\n fields,\n toggleable,\n development = false,\n onEnable,\n onDisable,\n },\n i\n ) => (\n <Tab\n id={tabId}\n key={tabId}\n title={idToTitle(tabId)}\n disabled={development && !experimentalMode}\n panel={\n <FieldTabs\n id={tabId}\n extensionId={id}\n fields={fields}\n uid={\n tree.find((t) => new RegExp(tabId, \"i\").test(t.text))\n ?.uid || \"\"\n }\n pageUid={pageUid}\n order={i}\n toggleable={toggleable}\n onEnable={onEnable}\n onDisable={onDisable}\n />\n }\n />\n )\n )}\n </Tabs>\n ) : (\n <FieldTabs\n id={\"home\"}\n extensionId={id}\n fields={config}\n uid={pageUid}\n pageUid={pageUid}\n order={0}\n toggleable={false}\n />\n )}\n </Card>\n );\n};\n\n// TODO: better nested type discrimination here\nconst fieldsToChildren = (fields: Field<UnionField>[]) =>\n fields\n .filter((f) => !!f.defaultValue)\n .map((f) => ({\n text: f.title,\n children:\n f.Panel.type === \"flag\"\n ? []\n : f.Panel.type === \"custom\"\n ? (f.defaultValue as InputTextNode[]) || []\n : f.Panel.type === \"pages\" || f.Panel.type === \"multitext\"\n ? (f.defaultValue as string[])?.map((v) => ({ text: v }))\n : f.Panel.type === \"block\"\n ? f.defaultValue\n ? [f.defaultValue as InputTextNode]\n : []\n : [{ text: `${f.defaultValue}` }],\n }));\n\nconst createConfigPage = ({\n title,\n config,\n}: {\n title: string;\n config: Config;\n}) => {\n const homeTab =\n \"tabs\" in config\n ? config.tabs.find((t) => /home/i.test(t.id))?.fields\n : config;\n const rawTree = [\n ...(homeTab ? fieldsToChildren(homeTab) : []),\n ...(\"tabs\" in config\n ? config.tabs\n .filter((t) => !/home/i.test(t.id) && !t.toggleable && !t.development)\n .map((t) => ({\n text: t.id,\n children: fieldsToChildren(t.fields),\n }))\n : []),\n ];\n return createPage({\n title,\n tree: rawTree.length ? rawTree : [{ text: \" \" }],\n });\n};\n\nexport const render = ({\n h,\n title,\n pageUid = getPageUidByPageTitle(title),\n config,\n}: {\n h: HTMLHeadingElement;\n title: string;\n pageUid?: string;\n config: Config;\n}) => {\n const uid = getPageUidByPageTitle(title);\n const attribute = `data-roamjs-${uid}`;\n const containerParent = h.parentElement?.parentElement;\n if (containerParent && !containerParent.hasAttribute(attribute)) {\n containerParent.setAttribute(attribute, \"true\");\n const parent = document.createElement(\"div\");\n const configPageId = title.split(\"/\").slice(-1)[0];\n parent.id = `${configPageId}-config`;\n containerParent.insertBefore(\n parent,\n h.parentElement?.nextElementSibling || null\n );\n ReactDOM.render(\n <ConfigPage id={configPageId} config={config} pageUid={pageUid} />,\n parent\n );\n }\n};\n\nexport const createConfigObserver = async ({\n title,\n config,\n}: {\n title: string;\n config: Config;\n}): Promise<{ pageUid: string; observer?: MutationObserver }> => {\n const pageUid =\n getPageUidByPageTitle(title) ||\n (await createConfigPage({\n title,\n config,\n }));\n if (\"tabs\" in config ? !!config.tabs.length : !!config.length) {\n const observer = createHTMLObserver({\n className: \"rm-title-display\",\n tag: \"H1\",\n callback: (d: HTMLElement) => {\n const h = d as HTMLHeadingElement;\n if (h.innerText === title) {\n render({\n pageUid,\n config,\n title,\n h,\n });\n }\n },\n });\n return {\n pageUid,\n observer,\n };\n }\n return {\n pageUid,\n };\n};\n\nexport default ConfigPage;\n"]}
@@ -0,0 +1,3 @@
1
+ import type { FieldPanel, BlockField } from "./types";
2
+ declare const BlockPanel: FieldPanel<BlockField>;
3
+ export default BlockPanel;