roamjs-components 0.53.2 → 0.53.5

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 (333) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +154 -154
  3. package/backend/emailCatch.d.ts +4 -4
  4. package/backend/emailCatch.js +11 -11
  5. package/backend/emailError.d.ts +4 -4
  6. package/backend/emailError.js +56 -56
  7. package/backend/getRoamJSUser.d.ts +11 -11
  8. package/backend/getRoamJSUser.js +30 -30
  9. package/backend/headers.d.ts +5 -5
  10. package/backend/headers.js +7 -7
  11. package/backend/index.d.ts +6 -6
  12. package/backend/index.js +20 -20
  13. package/backend/meterRoamJSUser.d.ts +4 -4
  14. package/backend/meterRoamJSUser.js +14 -14
  15. package/backend/putRoamJSUser.d.ts +10 -10
  16. package/backend/putRoamJSUser.js +25 -25
  17. package/components/BlockErrorBoundary.d.ts +15 -15
  18. package/components/BlockErrorBoundary.js +27 -27
  19. package/components/BlockInput.d.ts +12 -12
  20. package/components/BlockInput.js +53 -53
  21. package/components/ComponentContainer.d.ts +9 -9
  22. package/components/ComponentContainer.js +46 -46
  23. package/components/ConfigPage.d.ts +99 -99
  24. package/components/ConfigPage.js +751 -751
  25. package/components/CursorMenu.d.ts +21 -21
  26. package/components/CursorMenu.js +181 -181
  27. package/components/Description.d.ts +5 -5
  28. package/components/Description.js +16 -16
  29. package/components/ExternalLogin.d.ts +18 -18
  30. package/components/ExternalLogin.js +131 -131
  31. package/components/Filter.d.ts +14 -14
  32. package/components/Filter.js +147 -147
  33. package/components/Loading.d.ts +4 -4
  34. package/components/Loading.js +33 -33
  35. package/components/MenuItemSelect.d.ts +10 -10
  36. package/components/MenuItemSelect.js +13 -13
  37. package/components/OauthSelect.d.ts +5 -5
  38. package/components/OauthSelect.js +25 -25
  39. package/components/PageInput.d.ts +10 -10
  40. package/components/PageInput.js +69 -69
  41. package/components/ServiceComponents.d.ts +49 -49
  42. package/components/ServiceComponents.js +277 -277
  43. package/components/SimpleAlert.d.ts +12 -12
  44. package/components/SimpleAlert.js +38 -38
  45. package/components/Toast.d.ts +10 -10
  46. package/components/Toast.js +41 -41
  47. package/components/TokenDialog.d.ts +11 -11
  48. package/components/TokenDialog.js +100 -100
  49. package/components/index.d.ts +15 -15
  50. package/components/index.js +60 -60
  51. package/date/constants.d.ts +2 -2
  52. package/date/constants.js +5 -5
  53. package/date/index.d.ts +5 -5
  54. package/date/index.js +13 -13
  55. package/date/parseRoamDate.d.ts +2 -2
  56. package/date/parseRoamDate.js +6 -6
  57. package/date/parseRoamDateUid.d.ts +2 -2
  58. package/date/parseRoamDateUid.js +6 -6
  59. package/date/toRoamDate.d.ts +2 -2
  60. package/date/toRoamDate.js +6 -6
  61. package/date/toRoamDateUid.d.ts +2 -2
  62. package/date/toRoamDateUid.js +6 -6
  63. package/dom/addBlockCommand.d.ts +5 -5
  64. package/dom/addBlockCommand.js +53 -53
  65. package/dom/addOldRoamJSDependency.d.ts +2 -2
  66. package/dom/addOldRoamJSDependency.js +10 -10
  67. package/dom/addRoamJSDependency.d.ts +2 -2
  68. package/dom/addRoamJSDependency.js +8 -8
  69. package/dom/addScriptAsDependency.d.ts +6 -6
  70. package/dom/addScriptAsDependency.js +16 -16
  71. package/dom/addStyle.d.ts +2 -2
  72. package/dom/addStyle.js +14 -14
  73. package/dom/constants.d.ts +1 -1
  74. package/dom/constants.js +4 -4
  75. package/dom/createBlockObserver.d.ts +7 -7
  76. package/dom/createBlockObserver.js +43 -43
  77. package/dom/createButtonObserver.d.ts +6 -6
  78. package/dom/createButtonObserver.js +21 -21
  79. package/dom/createDivObserver.d.ts +2 -2
  80. package/dom/createDivObserver.js +8 -8
  81. package/dom/createHTMLObserver.d.ts +8 -8
  82. package/dom/createHTMLObserver.js +24 -24
  83. package/dom/createHashtagObserver.d.ts +5 -5
  84. package/dom/createHashtagObserver.js +16 -16
  85. package/dom/createIconButton.d.ts +2 -2
  86. package/dom/createIconButton.js +12 -12
  87. package/dom/createObserver.d.ts +2 -2
  88. package/dom/createObserver.js +6 -6
  89. package/dom/createOverlayObserver.d.ts +2 -2
  90. package/dom/createOverlayObserver.js +6 -6
  91. package/dom/createPageObserver.d.ts +2 -2
  92. package/dom/createPageObserver.js +34 -34
  93. package/dom/createPageTitleObserver.d.ts +6 -6
  94. package/dom/createPageTitleObserver.js +29 -29
  95. package/dom/genericError.d.ts +4 -4
  96. package/dom/genericError.js +16 -16
  97. package/dom/getActiveUids.d.ts +3 -3
  98. package/dom/getActiveUids.js +6 -6
  99. package/dom/getBlockUidFromTarget.d.ts +2 -2
  100. package/dom/getBlockUidFromTarget.js +33 -33
  101. package/dom/getCurrentPageUid.d.ts +2 -2
  102. package/dom/getCurrentPageUid.js +6 -6
  103. package/dom/getDomRefs.d.ts +2 -2
  104. package/dom/getDomRefs.js +12 -12
  105. package/dom/getDropUidOffset.d.ts +5 -5
  106. package/dom/getDropUidOffset.js +27 -27
  107. package/dom/getMutatedNodes.d.ts +7 -7
  108. package/dom/getMutatedNodes.js +11 -11
  109. package/dom/getPageTitleByHtmlElement.d.ts +2 -2
  110. package/dom/getPageTitleByHtmlElement.js +12 -12
  111. package/dom/getPageTitleValueByHtmlElement.d.ts +2 -2
  112. package/dom/getPageTitleValueByHtmlElement.js +27 -27
  113. package/dom/getReferenceBlockUid.d.ts +2 -2
  114. package/dom/getReferenceBlockUid.js +18 -18
  115. package/dom/getRoamUrl.d.ts +2 -2
  116. package/dom/getRoamUrl.js +4 -4
  117. package/dom/getRoamUrlByPage.d.ts +2 -2
  118. package/dom/getRoamUrlByPage.js +10 -10
  119. package/dom/getUids.d.ts +3 -3
  120. package/dom/getUids.js +8 -8
  121. package/dom/getUidsFromButton.d.ts +3 -3
  122. package/dom/getUidsFromButton.js +9 -9
  123. package/dom/getUidsFromId.d.ts +5 -5
  124. package/dom/getUidsFromId.js +15 -15
  125. package/dom/index.d.ts +31 -31
  126. package/dom/index.js +65 -65
  127. package/dom/openBlock.d.ts +2 -2
  128. package/dom/openBlock.js +6 -6
  129. package/dom/openBlockElement.d.ts +2 -2
  130. package/dom/openBlockElement.js +16 -16
  131. package/dom/parseRoamBlocksToHtml.d.ts +9 -9
  132. package/dom/parseRoamBlocksToHtml.js +75 -75
  133. package/dom/resolveRefs.d.ts +2 -2
  134. package/dom/resolveRefs.js +24 -24
  135. package/events/index.d.ts +1 -1
  136. package/events/index.js +8 -8
  137. package/events/watchOnce.d.ts +3 -3
  138. package/events/watchOnce.js +11 -11
  139. package/hooks/index.d.ts +3 -3
  140. package/hooks/index.js +12 -12
  141. package/hooks/useArrowKeyDown.d.ts +8 -8
  142. package/hooks/useArrowKeyDown.js +31 -31
  143. package/hooks/useRoamJSTokenWarning.d.ts +2 -2
  144. package/hooks/useRoamJSTokenWarning.js +11 -11
  145. package/hooks/useSubTree.d.ts +3 -3
  146. package/hooks/useSubTree.js +11 -11
  147. package/index.d.ts +11 -11
  148. package/index.js +14 -14
  149. package/marked/index.d.ts +14 -14
  150. package/marked/index.js +518 -518
  151. package/package.json +86 -86
  152. package/queries/getAllBlockUids.d.ts +2 -2
  153. package/queries/getAllBlockUids.js +6 -6
  154. package/queries/getAllBlockUidsAndTexts.d.ts +5 -5
  155. package/queries/getAllBlockUidsAndTexts.js +6 -6
  156. package/queries/getAllPageNames.d.ts +2 -2
  157. package/queries/getAllPageNames.js +6 -6
  158. package/queries/getAttributeValueByBlockAndName.d.ts +5 -5
  159. package/queries/getAttributeValueByBlockAndName.js +11 -11
  160. package/queries/getBasicTreeByParentUid.d.ts +3 -3
  161. package/queries/getBasicTreeByParentUid.js +13 -13
  162. package/queries/getBlockUidAndTextIncludingText.d.ts +5 -5
  163. package/queries/getBlockUidAndTextIncludingText.js +6 -6
  164. package/queries/getBlockUidByTextOnPage.d.ts +5 -5
  165. package/queries/getBlockUidByTextOnPage.js +7 -7
  166. package/queries/getBlockUidsAndTextsReferencingPage.d.ts +5 -5
  167. package/queries/getBlockUidsAndTextsReferencingPage.js +11 -11
  168. package/queries/getBlockUidsByPageTitle.d.ts +2 -2
  169. package/queries/getBlockUidsByPageTitle.js +8 -8
  170. package/queries/getBlockUidsReferencingBlock.d.ts +2 -2
  171. package/queries/getBlockUidsReferencingBlock.js +6 -6
  172. package/queries/getBlockUidsReferencingPage.d.ts +2 -2
  173. package/queries/getBlockUidsReferencingPage.js +8 -8
  174. package/queries/getBlockUidsWithParentUid.d.ts +2 -2
  175. package/queries/getBlockUidsWithParentUid.js +6 -6
  176. package/queries/getChildrenLengthByPageUid.d.ts +2 -2
  177. package/queries/getChildrenLengthByPageUid.js +4 -4
  178. package/queries/getCreateTimeByBlockUid.d.ts +2 -2
  179. package/queries/getCreateTimeByBlockUid.js +7 -7
  180. package/queries/getCurrentUser.d.ts +2 -2
  181. package/queries/getCurrentUser.js +11 -11
  182. package/queries/getCurrentUserDisplayName.d.ts +2 -2
  183. package/queries/getCurrentUserDisplayName.js +13 -13
  184. package/queries/getCurrentUserEmail.d.ts +2 -2
  185. package/queries/getCurrentUserEmail.js +13 -13
  186. package/queries/getCurrentUserUid.d.ts +2 -2
  187. package/queries/getCurrentUserUid.js +13 -13
  188. package/queries/getDisplayNameByEmail.d.ts +2 -2
  189. package/queries/getDisplayNameByEmail.js +7 -7
  190. package/queries/getDisplayNameByUid.d.ts +2 -2
  191. package/queries/getDisplayNameByUid.js +7 -7
  192. package/queries/getEditTimeByBlockUid.d.ts +2 -2
  193. package/queries/getEditTimeByBlockUid.js +7 -7
  194. package/queries/getEditedUserEmailByBlockUid.d.ts +2 -2
  195. package/queries/getEditedUserEmailByBlockUid.js +7 -7
  196. package/queries/getFirstChildTextByBlockUid.d.ts +2 -2
  197. package/queries/getFirstChildTextByBlockUid.js +7 -7
  198. package/queries/getFirstChildUidByBlockUid.d.ts +2 -2
  199. package/queries/getFirstChildUidByBlockUid.js +5 -5
  200. package/queries/getFullTreeByParentUid.d.ts +3 -3
  201. package/queries/getFullTreeByParentUid.js +26 -26
  202. package/queries/getLinkedPageTitlesUnderUid.d.ts +2 -2
  203. package/queries/getLinkedPageTitlesUnderUid.js +6 -6
  204. package/queries/getNthChildUidByBlockUid.d.ts +5 -5
  205. package/queries/getNthChildUidByBlockUid.js +7 -7
  206. package/queries/getOrderByBlockUid.d.ts +2 -2
  207. package/queries/getOrderByBlockUid.js +7 -7
  208. package/queries/getPageTitleByBlockUid.d.ts +2 -2
  209. package/queries/getPageTitleByBlockUid.js +7 -7
  210. package/queries/getPageTitleByPageUid.d.ts +2 -2
  211. package/queries/getPageTitleByPageUid.js +9 -9
  212. package/queries/getPageTitleReferencesByPageTitle.d.ts +2 -2
  213. package/queries/getPageTitleReferencesByPageTitle.js +8 -8
  214. package/queries/getPageTitlesAndBlockUidsReferencingPage.d.ts +5 -5
  215. package/queries/getPageTitlesAndBlockUidsReferencingPage.js +8 -8
  216. package/queries/getPageTitlesAndUidsDirectlyReferencingPage.d.ts +5 -5
  217. package/queries/getPageTitlesAndUidsDirectlyReferencingPage.js +8 -8
  218. package/queries/getPageTitlesReferencingBlockUid.d.ts +2 -2
  219. package/queries/getPageTitlesReferencingBlockUid.js +6 -6
  220. package/queries/getPageTitlesStartingWithPrefix.d.ts +2 -2
  221. package/queries/getPageTitlesStartingWithPrefix.js +6 -6
  222. package/queries/getPageUidByPageTitle.d.ts +2 -2
  223. package/queries/getPageUidByPageTitle.js +9 -9
  224. package/queries/getPageViewType.d.ts +3 -3
  225. package/queries/getPageViewType.js +9 -9
  226. package/queries/getParentTextByBlockUid.d.ts +2 -2
  227. package/queries/getParentTextByBlockUid.js +7 -7
  228. package/queries/getParentTextByBlockUidAndTag.d.ts +5 -5
  229. package/queries/getParentTextByBlockUidAndTag.js +7 -7
  230. package/queries/getParentUidByBlockUid.d.ts +2 -2
  231. package/queries/getParentUidByBlockUid.js +7 -7
  232. package/queries/getParentUidsOfBlockUid.d.ts +2 -2
  233. package/queries/getParentUidsOfBlockUid.js +6 -6
  234. package/queries/getSettingsByEmail.d.ts +3 -3
  235. package/queries/getSettingsByEmail.js +7 -7
  236. package/queries/getShallowTreeByParentUid.d.ts +5 -5
  237. package/queries/getShallowTreeByParentUid.js +10 -10
  238. package/queries/getTextByBlockUid.d.ts +2 -2
  239. package/queries/getTextByBlockUid.js +7 -7
  240. package/queries/index.d.ts +45 -45
  241. package/queries/index.js +96 -96
  242. package/queries/isTagOnPage.d.ts +5 -5
  243. package/queries/isTagOnPage.js +9 -9
  244. package/queries/normalizePageTitle.d.ts +2 -2
  245. package/queries/normalizePageTitle.js +4 -4
  246. package/types/index.d.ts +461 -459
  247. package/types/index.js +2 -2
  248. package/types/query-builder.d.ts +16 -16
  249. package/types/query-builder.js +2 -2
  250. package/util/addInputSetting.d.ts +7 -7
  251. package/util/addInputSetting.js +25 -25
  252. package/util/apiDelete.d.ts +2 -2
  253. package/util/apiDelete.js +9 -9
  254. package/util/apiGet.d.ts +2 -2
  255. package/util/apiGet.js +9 -9
  256. package/util/apiPost.d.ts +2 -2
  257. package/util/apiPost.js +9 -9
  258. package/util/apiPut.d.ts +2 -2
  259. package/util/apiPut.js +9 -9
  260. package/util/createOverlayRender.d.ts +6 -6
  261. package/util/createOverlayRender.js +18 -18
  262. package/util/createTagRegex.d.ts +2 -2
  263. package/util/createTagRegex.js +4 -4
  264. package/util/extractRef.d.ts +2 -2
  265. package/util/extractRef.js +8 -8
  266. package/util/extractTag.d.ts +2 -2
  267. package/util/extractTag.js +12 -12
  268. package/util/getAuthorizationHeader.d.ts +2 -2
  269. package/util/getAuthorizationHeader.js +12 -12
  270. package/util/getGraph.d.ts +2 -2
  271. package/util/getGraph.js +8 -8
  272. package/util/getLocalStorageKey.d.ts +2 -2
  273. package/util/getLocalStorageKey.js +6 -6
  274. package/util/getOauth.d.ts +2 -2
  275. package/util/getOauth.js +50 -50
  276. package/util/getOauthAccounts.d.ts +2 -2
  277. package/util/getOauthAccounts.js +21 -21
  278. package/util/getRenderRoot.d.ts +2 -2
  279. package/util/getRenderRoot.js +11 -11
  280. package/util/getSettingIntFromTree.d.ts +7 -7
  281. package/util/getSettingIntFromTree.js +11 -11
  282. package/util/getSettingValueFromTree.d.ts +7 -7
  283. package/util/getSettingValueFromTree.js +13 -13
  284. package/util/getSettingValuesFromTree.d.ts +7 -7
  285. package/util/getSettingValuesFromTree.js +12 -12
  286. package/util/getSubTree.d.ts +8 -8
  287. package/util/getSubTree.js +19 -19
  288. package/util/getToken.d.ts +2 -2
  289. package/util/getToken.js +9 -9
  290. package/util/getTokenFromTree.d.ts +2 -2
  291. package/util/getTokenFromTree.js +5 -5
  292. package/util/idToTitle.d.ts +2 -2
  293. package/util/idToTitle.js +8 -8
  294. package/util/index.d.ts +23 -23
  295. package/util/index.js +52 -52
  296. package/util/isControl.d.ts +2 -2
  297. package/util/isControl.js +6 -6
  298. package/util/localStorageGet.d.ts +2 -2
  299. package/util/localStorageGet.js +8 -8
  300. package/util/localStorageRemove.d.ts +2 -2
  301. package/util/localStorageRemove.js +6 -6
  302. package/util/localStorageSet.d.ts +2 -2
  303. package/util/localStorageSet.js +8 -8
  304. package/util/registerSmartBlocksCommand.d.ts +8 -8
  305. package/util/registerSmartBlocksCommand.js +24 -24
  306. package/util/runExtension.d.ts +4 -4
  307. package/util/runExtension.js +40 -40
  308. package/util/setInputSetting.d.ts +7 -7
  309. package/util/setInputSetting.js +33 -33
  310. package/util/setInputSettings.d.ts +7 -7
  311. package/util/setInputSettings.js +28 -28
  312. package/util/toConfigPageName.d.ts +2 -2
  313. package/util/toConfigPageName.js +4 -4
  314. package/util/toFlexRegex.d.ts +2 -2
  315. package/util/toFlexRegex.js +4 -4
  316. package/writes/clearBlockById.d.ts +2 -2
  317. package/writes/clearBlockById.js +11 -11
  318. package/writes/clearBlockByUid.d.ts +2 -2
  319. package/writes/clearBlockByUid.js +9 -9
  320. package/writes/createBlock.d.ts +9 -9
  321. package/writes/createBlock.js +61 -61
  322. package/writes/createPage.d.ts +7 -7
  323. package/writes/createPage.js +18 -18
  324. package/writes/deleteBlock.d.ts +2 -2
  325. package/writes/deleteBlock.js +6 -6
  326. package/writes/index.d.ts +8 -8
  327. package/writes/index.js +22 -22
  328. package/writes/openBlockInSidebar.d.ts +2 -2
  329. package/writes/openBlockInSidebar.js +13 -13
  330. package/writes/updateActiveBlock.d.ts +2 -2
  331. package/writes/updateActiveBlock.js +11 -11
  332. package/writes/updateBlock.d.ts +5 -5
  333. package/writes/updateBlock.js +17 -17
@@ -1,21 +1,21 @@
1
- import React from "react";
2
- export declare const getCoordsFromTextarea: (t: HTMLTextAreaElement) => {
3
- top: number;
4
- left: number;
5
- };
6
- declare type Props<T> = {
7
- textarea: HTMLTextAreaElement;
8
- onItemSelect: (item: {
9
- text: string;
10
- id: string;
11
- } & T) => void;
12
- initialItems: ({
13
- text: string;
14
- id: string;
15
- } & T)[];
16
- };
17
- declare const CursorMenu: <T extends Record<string, string>>({ textarea, onClose, onItemSelect, initialItems, }: {
18
- onClose: () => void;
19
- } & Props<T>) => React.ReactElement;
20
- export declare const render: <T extends Record<string, string>>(props: Props<T>) => void;
21
- export default CursorMenu;
1
+ import React from "react";
2
+ export declare const getCoordsFromTextarea: (t: HTMLTextAreaElement) => {
3
+ top: number;
4
+ left: number;
5
+ };
6
+ declare type Props<T> = {
7
+ textarea: HTMLTextAreaElement;
8
+ onItemSelect: (item: {
9
+ text: string;
10
+ id: string;
11
+ } & T) => void;
12
+ initialItems: ({
13
+ text: string;
14
+ id: string;
15
+ } & T)[];
16
+ };
17
+ declare const CursorMenu: <T extends Record<string, string>>({ textarea, onClose, onItemSelect, initialItems, }: {
18
+ onClose: () => void;
19
+ } & Props<T>) => React.ReactElement;
20
+ export declare const render: <T extends Record<string, string>>(props: Props<T>) => void;
21
+ export default CursorMenu;
@@ -1,182 +1,182 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.render = exports.getCoordsFromTextarea = void 0;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@blueprintjs/core");
6
- const react_1 = (0, tslib_1.__importStar)(require("react"));
7
- const react_dom_1 = (0, tslib_1.__importDefault)(require("react-dom"));
8
- const fuzzy_1 = (0, tslib_1.__importDefault)(require("fuzzy"));
9
- const dom_1 = require("../dom");
10
- const writes_1 = require("../writes");
11
- // inspired by https://github.com/zurb/tribute/blob/master/src/TributeRange.js#L446-L556
12
- const getCoordsFromTextarea = (t) => {
13
- const properties = [
14
- "direction",
15
- "boxSizing",
16
- "width",
17
- "height",
18
- "overflowX",
19
- "overflowY",
20
- "borderTopWidth",
21
- "borderRightWidth",
22
- "borderBottomWidth",
23
- "borderLeftWidth",
24
- "paddingTop",
25
- "paddingRight",
26
- "paddingBottom",
27
- "paddingLeft",
28
- "fontStyle",
29
- "fontVariant",
30
- "fontWeight",
31
- "fontStretch",
32
- "fontSize",
33
- "fontSizeAdjust",
34
- "lineHeight",
35
- "fontFamily",
36
- "textAlign",
37
- "textTransform",
38
- "textIndent",
39
- "textDecoration",
40
- "letterSpacing",
41
- "wordSpacing",
42
- ];
43
- const div = document.createElement("div");
44
- div.id = "input-textarea-caret-position-mirror-div";
45
- document.body.appendChild(div);
46
- const style = div.style;
47
- const computed = getComputedStyle(t);
48
- style.whiteSpace = "pre-wrap";
49
- style.wordWrap = "break-word";
50
- // position off-screen
51
- style.position = "absolute";
52
- style.visibility = "hidden";
53
- style.overflow = "hidden";
54
- // transfer the element's properties to the div
55
- properties.forEach((prop) => {
56
- style[prop] = computed[prop];
57
- });
58
- div.textContent = t.value.substring(0, t.selectionStart);
59
- const span = document.createElement("span");
60
- span.textContent = t.value.substring(t.selectionStart) || ".";
61
- div.appendChild(span);
62
- const doc = document.documentElement;
63
- const windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
64
- const windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
65
- const coordinates = {
66
- top: windowTop +
67
- span.offsetTop +
68
- parseInt(computed.borderTopWidth) +
69
- parseInt(computed.fontSize) -
70
- t.scrollTop -
71
- 9,
72
- left: windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth) - 1,
73
- };
74
- document.body.removeChild(div);
75
- return coordinates;
76
- };
77
- exports.getCoordsFromTextarea = getCoordsFromTextarea;
78
- const VALID_FILTER = /^[\w\d\s_-]$/;
79
- const CursorMenu = ({ textarea, onClose, onItemSelect, initialItems, }) => {
80
- const itemsById = (0, react_1.useMemo)(() => Object.fromEntries(initialItems.map((item) => [item.id, item])), [initialItems]);
81
- const menuRef = (0, react_1.useRef)(null);
82
- const [activeIndex, setActiveIndex] = (0, react_1.useState)(0);
83
- const [filter, setFilter] = (0, react_1.useState)("");
84
- const onPopoverClose = (0, react_1.useCallback)(() => {
85
- if (menuRef.current) {
86
- const value = menuRef.current.getAttribute("data-filter");
87
- const text = `${textarea.value.substring(0, textarea.selectionStart)}${value}${textarea.value.substring(textarea.selectionStart)}`;
88
- (0, writes_1.updateBlock)({ uid: (0, dom_1.getUids)(textarea).blockUid, text });
89
- setTimeout(() => {
90
- textarea.setSelectionRange(textarea.selectionStart + text.length, textarea.selectionEnd + text.length);
91
- onClose();
92
- }, 1);
93
- }
94
- }, [onClose, textarea, menuRef]);
95
- const items = (0, react_1.useMemo)(() => (filter
96
- ? fuzzy_1.default
97
- .filter(filter, initialItems, {
98
- extract: (s) => s.text,
99
- pre: "<b>",
100
- post: "</b>",
101
- })
102
- .map((r) => (Object.assign(Object.assign({}, r.original), { displayName: r.string })))
103
- : initialItems.map((r) => (Object.assign(Object.assign({}, r), { displayName: r.text })))).slice(0, 10), [filter, initialItems]);
104
- const onSelect = (0, react_1.useCallback)((item) => {
105
- if (menuRef.current) {
106
- onItemSelect(item);
107
- onClose();
108
- }
109
- }, [menuRef, onClose, textarea, onItemSelect]);
110
- const keydownListener = (0, react_1.useCallback)((e) => {
111
- var _a;
112
- if (menuRef.current &&
113
- (e.key === "ArrowRight" || e.key === "ArrowDown")) {
114
- const index = Number(menuRef.current.getAttribute("data-active-index"));
115
- const count = menuRef.current.childElementCount;
116
- setActiveIndex((index + 1) % count);
117
- }
118
- else if (menuRef.current &&
119
- (e.key === "ArrowLeft" || e.key === "ArrowUp")) {
120
- const index = Number(menuRef.current.getAttribute("data-active-index"));
121
- const count = menuRef.current.childElementCount;
122
- setActiveIndex((index - 1 + count) % count);
123
- }
124
- else if (menuRef.current && e.key === "Enter") {
125
- const index = Number(menuRef.current.getAttribute("data-active-index"));
126
- const id = ((_a = menuRef.current.children[index]
127
- .querySelector(".bp3-menu-item")) === null || _a === void 0 ? void 0 : _a.getAttribute("data-id")) || "";
128
- onSelect(itemsById[id]);
129
- }
130
- else if (menuRef.current && VALID_FILTER.test(e.key)) {
131
- const value = menuRef.current.getAttribute("data-filter");
132
- setFilter(`${value}${e.key}`);
133
- }
134
- else if (menuRef.current && e.key === "Backspace") {
135
- const value = menuRef.current.getAttribute("data-filter");
136
- if (value) {
137
- setFilter(value.slice(0, -1));
138
- }
139
- else {
140
- onClose();
141
- return;
142
- }
143
- }
144
- else if (e.key !== "Shift") {
145
- onPopoverClose();
146
- return;
147
- }
148
- e.stopPropagation();
149
- e.preventDefault();
150
- }, [menuRef, setActiveIndex, onClose, onPopoverClose]);
151
- (0, react_1.useEffect)(() => {
152
- textarea.addEventListener("keydown", keydownListener);
153
- return () => {
154
- textarea.removeEventListener("keydown", keydownListener);
155
- };
156
- }, [keydownListener]);
157
- return (react_1.default.createElement(core_1.Popover, { onClose: onPopoverClose, isOpen: true, canEscapeKeyClose: true, minimal: true, target: react_1.default.createElement("span", null), position: core_1.Position.BOTTOM_LEFT, modifiers: {
158
- flip: { enabled: false },
159
- preventOverflow: { enabled: false },
160
- }, autoFocus: false, content: react_1.default.createElement(core_1.Menu, { ulRef: menuRef, "data-active-index": activeIndex, "data-filter": filter, style: { width: 300 } }, items.length ? (items.map(({ id, displayName }, i) => {
161
- return (react_1.default.createElement(core_1.MenuItem, { key: id, "data-id": id, text: displayName
162
- .split(/<b>(.*?)<\/b>/)
163
- .map((part, i) => i % 2 === 1 ? (react_1.default.createElement("b", { key: i }, part)) : (react_1.default.createElement("span", { key: i }, part))), active: i === activeIndex, onMouseEnter: () => setActiveIndex(i), onClick: () => onSelect(itemsById[id]) }));
164
- })) : (react_1.default.createElement(core_1.MenuItem, { text: react_1.default.createElement("span", { style: { opacity: 0.75 } },
165
- react_1.default.createElement("i", null, "None")), active: false, disabled: true }))) }));
166
- };
167
- const render = (props) => {
168
- var _a;
169
- const parent = document.createElement("span");
170
- const coords = (0, exports.getCoordsFromTextarea)(props.textarea);
171
- parent.style.position = "absolute";
172
- parent.style.left = `${coords.left}px`;
173
- parent.style.top = `${coords.top}px`;
174
- (_a = props.textarea.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(parent, props.textarea);
175
- react_dom_1.default.render(react_1.default.createElement(CursorMenu, Object.assign({}, props, { onClose: () => {
176
- react_dom_1.default.unmountComponentAtNode(parent);
177
- parent.remove();
178
- } })), parent);
179
- };
180
- exports.render = render;
181
- exports.default = CursorMenu;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.render = exports.getCoordsFromTextarea = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@blueprintjs/core");
6
+ const react_1 = (0, tslib_1.__importStar)(require("react"));
7
+ const react_dom_1 = (0, tslib_1.__importDefault)(require("react-dom"));
8
+ const fuzzy_1 = (0, tslib_1.__importDefault)(require("fuzzy"));
9
+ const dom_1 = require("../dom");
10
+ const writes_1 = require("../writes");
11
+ // inspired by https://github.com/zurb/tribute/blob/master/src/TributeRange.js#L446-L556
12
+ const getCoordsFromTextarea = (t) => {
13
+ const properties = [
14
+ "direction",
15
+ "boxSizing",
16
+ "width",
17
+ "height",
18
+ "overflowX",
19
+ "overflowY",
20
+ "borderTopWidth",
21
+ "borderRightWidth",
22
+ "borderBottomWidth",
23
+ "borderLeftWidth",
24
+ "paddingTop",
25
+ "paddingRight",
26
+ "paddingBottom",
27
+ "paddingLeft",
28
+ "fontStyle",
29
+ "fontVariant",
30
+ "fontWeight",
31
+ "fontStretch",
32
+ "fontSize",
33
+ "fontSizeAdjust",
34
+ "lineHeight",
35
+ "fontFamily",
36
+ "textAlign",
37
+ "textTransform",
38
+ "textIndent",
39
+ "textDecoration",
40
+ "letterSpacing",
41
+ "wordSpacing",
42
+ ];
43
+ const div = document.createElement("div");
44
+ div.id = "input-textarea-caret-position-mirror-div";
45
+ document.body.appendChild(div);
46
+ const style = div.style;
47
+ const computed = getComputedStyle(t);
48
+ style.whiteSpace = "pre-wrap";
49
+ style.wordWrap = "break-word";
50
+ // position off-screen
51
+ style.position = "absolute";
52
+ style.visibility = "hidden";
53
+ style.overflow = "hidden";
54
+ // transfer the element's properties to the div
55
+ properties.forEach((prop) => {
56
+ style[prop] = computed[prop];
57
+ });
58
+ div.textContent = t.value.substring(0, t.selectionStart);
59
+ const span = document.createElement("span");
60
+ span.textContent = t.value.substring(t.selectionStart) || ".";
61
+ div.appendChild(span);
62
+ const doc = document.documentElement;
63
+ const windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
64
+ const windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
65
+ const coordinates = {
66
+ top: windowTop +
67
+ span.offsetTop +
68
+ parseInt(computed.borderTopWidth) +
69
+ parseInt(computed.fontSize) -
70
+ t.scrollTop -
71
+ 9,
72
+ left: windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth) - 1,
73
+ };
74
+ document.body.removeChild(div);
75
+ return coordinates;
76
+ };
77
+ exports.getCoordsFromTextarea = getCoordsFromTextarea;
78
+ const VALID_FILTER = /^[\w\d\s_-]$/;
79
+ const CursorMenu = ({ textarea, onClose, onItemSelect, initialItems, }) => {
80
+ const itemsById = (0, react_1.useMemo)(() => Object.fromEntries(initialItems.map((item) => [item.id, item])), [initialItems]);
81
+ const menuRef = (0, react_1.useRef)(null);
82
+ const [activeIndex, setActiveIndex] = (0, react_1.useState)(0);
83
+ const [filter, setFilter] = (0, react_1.useState)("");
84
+ const onPopoverClose = (0, react_1.useCallback)(() => {
85
+ if (menuRef.current) {
86
+ const value = menuRef.current.getAttribute("data-filter");
87
+ const text = `${textarea.value.substring(0, textarea.selectionStart)}${value}${textarea.value.substring(textarea.selectionStart)}`;
88
+ (0, writes_1.updateBlock)({ uid: (0, dom_1.getUids)(textarea).blockUid, text });
89
+ setTimeout(() => {
90
+ textarea.setSelectionRange(textarea.selectionStart + text.length, textarea.selectionEnd + text.length);
91
+ onClose();
92
+ }, 1);
93
+ }
94
+ }, [onClose, textarea, menuRef]);
95
+ const items = (0, react_1.useMemo)(() => (filter
96
+ ? fuzzy_1.default
97
+ .filter(filter, initialItems, {
98
+ extract: (s) => s.text,
99
+ pre: "<b>",
100
+ post: "</b>",
101
+ })
102
+ .map((r) => (Object.assign(Object.assign({}, r.original), { displayName: r.string })))
103
+ : initialItems.map((r) => (Object.assign(Object.assign({}, r), { displayName: r.text })))).slice(0, 10), [filter, initialItems]);
104
+ const onSelect = (0, react_1.useCallback)((item) => {
105
+ if (menuRef.current) {
106
+ onItemSelect(item);
107
+ onClose();
108
+ }
109
+ }, [menuRef, onClose, textarea, onItemSelect]);
110
+ const keydownListener = (0, react_1.useCallback)((e) => {
111
+ var _a;
112
+ if (menuRef.current &&
113
+ (e.key === "ArrowRight" || e.key === "ArrowDown")) {
114
+ const index = Number(menuRef.current.getAttribute("data-active-index"));
115
+ const count = menuRef.current.childElementCount;
116
+ setActiveIndex((index + 1) % count);
117
+ }
118
+ else if (menuRef.current &&
119
+ (e.key === "ArrowLeft" || e.key === "ArrowUp")) {
120
+ const index = Number(menuRef.current.getAttribute("data-active-index"));
121
+ const count = menuRef.current.childElementCount;
122
+ setActiveIndex((index - 1 + count) % count);
123
+ }
124
+ else if (menuRef.current && e.key === "Enter") {
125
+ const index = Number(menuRef.current.getAttribute("data-active-index"));
126
+ const id = ((_a = menuRef.current.children[index]
127
+ .querySelector(".bp3-menu-item")) === null || _a === void 0 ? void 0 : _a.getAttribute("data-id")) || "";
128
+ onSelect(itemsById[id]);
129
+ }
130
+ else if (menuRef.current && VALID_FILTER.test(e.key)) {
131
+ const value = menuRef.current.getAttribute("data-filter");
132
+ setFilter(`${value}${e.key}`);
133
+ }
134
+ else if (menuRef.current && e.key === "Backspace") {
135
+ const value = menuRef.current.getAttribute("data-filter");
136
+ if (value) {
137
+ setFilter(value.slice(0, -1));
138
+ }
139
+ else {
140
+ onClose();
141
+ return;
142
+ }
143
+ }
144
+ else if (e.key !== "Shift") {
145
+ onPopoverClose();
146
+ return;
147
+ }
148
+ e.stopPropagation();
149
+ e.preventDefault();
150
+ }, [menuRef, setActiveIndex, onClose, onPopoverClose]);
151
+ (0, react_1.useEffect)(() => {
152
+ textarea.addEventListener("keydown", keydownListener);
153
+ return () => {
154
+ textarea.removeEventListener("keydown", keydownListener);
155
+ };
156
+ }, [keydownListener]);
157
+ return (react_1.default.createElement(core_1.Popover, { onClose: onPopoverClose, isOpen: true, canEscapeKeyClose: true, minimal: true, target: react_1.default.createElement("span", null), position: core_1.Position.BOTTOM_LEFT, modifiers: {
158
+ flip: { enabled: false },
159
+ preventOverflow: { enabled: false },
160
+ }, autoFocus: false, content: react_1.default.createElement(core_1.Menu, { ulRef: menuRef, "data-active-index": activeIndex, "data-filter": filter, style: { width: 300 } }, items.length ? (items.map(({ id, displayName }, i) => {
161
+ return (react_1.default.createElement(core_1.MenuItem, { key: id, "data-id": id, text: displayName
162
+ .split(/<b>(.*?)<\/b>/)
163
+ .map((part, i) => i % 2 === 1 ? (react_1.default.createElement("b", { key: i }, part)) : (react_1.default.createElement("span", { key: i }, part))), active: i === activeIndex, onMouseEnter: () => setActiveIndex(i), onClick: () => onSelect(itemsById[id]) }));
164
+ })) : (react_1.default.createElement(core_1.MenuItem, { text: react_1.default.createElement("span", { style: { opacity: 0.75 } },
165
+ react_1.default.createElement("i", null, "None")), active: false, disabled: true }))) }));
166
+ };
167
+ const render = (props) => {
168
+ var _a;
169
+ const parent = document.createElement("span");
170
+ const coords = (0, exports.getCoordsFromTextarea)(props.textarea);
171
+ parent.style.position = "absolute";
172
+ parent.style.left = `${coords.left}px`;
173
+ parent.style.top = `${coords.top}px`;
174
+ (_a = props.textarea.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(parent, props.textarea);
175
+ react_dom_1.default.render(react_1.default.createElement(CursorMenu, Object.assign({}, props, { onClose: () => {
176
+ react_dom_1.default.unmountComponentAtNode(parent);
177
+ parent.remove();
178
+ } })), parent);
179
+ };
180
+ exports.render = render;
181
+ exports.default = CursorMenu;
182
182
  //# sourceMappingURL=CursorMenu.js.map
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- declare const Description: ({ description, }: {
3
- description: string;
4
- }) => React.ReactElement;
5
- export default Description;
1
+ import React from "react";
2
+ declare const Description: ({ description, }: {
3
+ description: string;
4
+ }) => React.ReactElement;
5
+ export default Description;
@@ -1,17 +1,17 @@
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 = (0, tslib_1.__importDefault)(require("react"));
6
- const Description = ({ description, }) => {
7
- return (react_1.default.createElement("span", { style: {
8
- marginLeft: 12,
9
- display: "inline-block",
10
- opacity: 0.8,
11
- verticalAlign: "text-bottom",
12
- } },
13
- react_1.default.createElement(core_1.Tooltip, { content: react_1.default.createElement("span", { style: { maxWidth: 400, display: "inline-block" } }, description) },
14
- react_1.default.createElement(core_1.Icon, { icon: "info-sign", iconSize: 12 }))));
15
- };
16
- exports.default = Description;
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 = (0, tslib_1.__importDefault)(require("react"));
6
+ const Description = ({ description, }) => {
7
+ return (react_1.default.createElement("span", { style: {
8
+ marginLeft: 12,
9
+ display: "inline-block",
10
+ opacity: 0.8,
11
+ verticalAlign: "text-bottom",
12
+ } },
13
+ react_1.default.createElement(core_1.Tooltip, { content: react_1.default.createElement("span", { style: { maxWidth: 400, display: "inline-block" } }, description) },
14
+ react_1.default.createElement(core_1.Icon, { icon: "info-sign", iconSize: 12 }))));
15
+ };
16
+ exports.default = Description;
17
17
  //# sourceMappingURL=Description.js.map
@@ -1,18 +1,18 @@
1
- import React from "react";
2
- export declare type ExternalLoginOptions = {
3
- service: string;
4
- getPopoutUrl: (state: string) => Promise<string>;
5
- getAuthData: (d: string) => Promise<Record<string, string>>;
6
- ServiceIcon: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
7
- };
8
- declare const ExternalLogin: ({ onSuccess, useLocal, parentUid, service, getPopoutUrl, getAuthData, ServiceIcon, loggedIn, }: {
9
- onSuccess: (block: {
10
- text: string;
11
- uid: string;
12
- data: string;
13
- }) => void;
14
- parentUid: string;
15
- useLocal?: boolean | undefined;
16
- loggedIn?: boolean | undefined;
17
- } & ExternalLoginOptions) => React.ReactElement;
18
- export default ExternalLogin;
1
+ import React from "react";
2
+ export declare type ExternalLoginOptions = {
3
+ service: string;
4
+ getPopoutUrl: (state: string) => Promise<string>;
5
+ getAuthData: (d: string) => Promise<Record<string, string>>;
6
+ ServiceIcon: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
7
+ };
8
+ declare const ExternalLogin: ({ onSuccess, useLocal, parentUid, service, getPopoutUrl, getAuthData, ServiceIcon, loggedIn, }: {
9
+ onSuccess: (block: {
10
+ text: string;
11
+ uid: string;
12
+ data: string;
13
+ }) => void;
14
+ parentUid: string;
15
+ useLocal?: boolean | undefined;
16
+ loggedIn?: boolean | undefined;
17
+ } & ExternalLoginOptions) => React.ReactElement;
18
+ export default ExternalLogin;