@hypericon/mico 0.3.23 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +2 -0
  2. package/dist/{components → cjs/components}/index.d.ts +2 -0
  3. package/dist/{components → cjs/components}/index.js +2 -2
  4. package/dist/cjs/components/toast/index.d.ts +1 -0
  5. package/dist/cjs/components/toast/index.js +17 -0
  6. package/dist/cjs/components/toast/toast.d.ts +15 -0
  7. package/dist/cjs/components/toast/toast.js +61 -0
  8. package/dist/cjs/components/tooltip/index.d.ts +3 -0
  9. package/dist/cjs/components/tooltip/index.js +19 -0
  10. package/dist/cjs/components/tooltip/tooltip-defaults.d.ts +23 -0
  11. package/dist/cjs/components/tooltip/tooltip-defaults.js +25 -0
  12. package/dist/cjs/components/tooltip/tooltip-function.d.ts +35 -0
  13. package/dist/cjs/components/tooltip/tooltip-function.js +205 -0
  14. package/dist/cjs/components/tooltip/tooltip-interfaces.d.ts +11 -0
  15. package/dist/cjs/components/tree/tree-node.interface.js +2 -0
  16. package/dist/esm/components/data-table/index.js +1 -0
  17. package/dist/esm/components/dialog/Dialog.d.ts +1 -0
  18. package/dist/esm/components/dialog/Dialog.js +10 -0
  19. package/dist/esm/components/dialog/dialog-manager.d.ts +45 -0
  20. package/dist/esm/components/dialog/dialog-manager.js +163 -0
  21. package/dist/esm/components/dialog/index.d.ts +1 -0
  22. package/dist/esm/components/dialog/index.js +2 -0
  23. package/dist/esm/components/drag-handler/DragHandler.d.ts +40 -0
  24. package/dist/esm/components/drag-handler/DragHandler.js +104 -0
  25. package/dist/esm/components/drag-handler/index.d.ts +1 -0
  26. package/dist/esm/components/drag-handler/index.js +1 -0
  27. package/dist/esm/components/drawer/index.d.ts +0 -0
  28. package/dist/esm/components/drawer/index.js +1 -0
  29. package/dist/esm/components/drop-target/DropTarget.d.ts +24 -0
  30. package/dist/esm/components/drop-target/DropTarget.js +56 -0
  31. package/dist/esm/components/drop-target/drop-target.state.d.ts +9 -0
  32. package/dist/esm/components/drop-target/drop-target.state.js +73 -0
  33. package/dist/esm/components/drop-target/index.d.ts +1 -0
  34. package/dist/esm/components/drop-target/index.js +1 -0
  35. package/dist/esm/components/form/Form.d.ts +2 -0
  36. package/dist/esm/components/form/Form.js +9 -0
  37. package/dist/esm/components/form/index.d.ts +1 -0
  38. package/dist/esm/components/form/index.js +1 -0
  39. package/dist/esm/components/icon/Icon.d.ts +21 -0
  40. package/dist/esm/components/icon/Icon.js +22 -0
  41. package/dist/esm/components/icon/icons.d.ts +3 -0
  42. package/dist/esm/components/icon/icons.js +1 -0
  43. package/dist/esm/components/icon/index.d.ts +2 -0
  44. package/dist/esm/components/icon/index.js +2 -0
  45. package/dist/esm/components/index.d.ts +12 -0
  46. package/dist/esm/components/index.js +20 -0
  47. package/dist/esm/components/markdown/Markdown.d.ts +34 -0
  48. package/dist/esm/components/markdown/Markdown.js +55 -0
  49. package/dist/esm/components/markdown/index.d.ts +1 -0
  50. package/dist/esm/components/markdown/index.js +1 -0
  51. package/dist/esm/components/markdown-editor/MarkdownEditor.d.ts +21 -0
  52. package/dist/esm/components/markdown-editor/MarkdownEditor.js +181 -0
  53. package/dist/esm/components/markdown-editor/index.d.ts +1 -0
  54. package/dist/esm/components/markdown-editor/index.js +1 -0
  55. package/dist/esm/components/markdown-editor/markdown-editor.state.d.ts +31 -0
  56. package/dist/esm/components/markdown-editor/markdown-editor.state.js +255 -0
  57. package/dist/esm/components/menu/Menu.d.ts +14 -0
  58. package/dist/esm/components/menu/Menu.js +81 -0
  59. package/dist/esm/components/menu/MenuButton.d.ts +16 -0
  60. package/dist/esm/components/menu/MenuButton.js +75 -0
  61. package/dist/esm/components/menu/MenuSeparator.d.ts +2 -0
  62. package/dist/esm/components/menu/MenuSeparator.js +11 -0
  63. package/dist/esm/components/menu/index.d.ts +6 -0
  64. package/dist/esm/components/menu/index.js +6 -0
  65. package/dist/esm/components/menu/menu-constants.d.ts +4 -0
  66. package/dist/esm/components/menu/menu-constants.js +4 -0
  67. package/dist/esm/components/menu/menu-manager.d.ts +22 -0
  68. package/dist/esm/components/menu/menu-manager.js +72 -0
  69. package/dist/esm/components/menu/menu-settings.d.ts +9 -0
  70. package/dist/esm/components/menu/menu-settings.js +9 -0
  71. package/dist/esm/components/modal/index.d.ts +0 -0
  72. package/dist/esm/components/modal/index.js +1 -0
  73. package/dist/esm/components/pagination/Pagination.d.ts +40 -0
  74. package/dist/esm/components/pagination/Pagination.js +66 -0
  75. package/dist/esm/components/pagination/index.d.ts +2 -0
  76. package/dist/esm/components/pagination/index.js +2 -0
  77. package/dist/esm/components/pagination/pagination-settings.d.ts +17 -0
  78. package/dist/esm/components/pagination/pagination-settings.js +16 -0
  79. package/dist/esm/components/panel-tree/PanelTree.d.ts +26 -0
  80. package/dist/esm/components/panel-tree/PanelTree.js +174 -0
  81. package/dist/esm/components/panel-tree/index.d.ts +0 -0
  82. package/dist/esm/components/panel-tree/index.js +1 -0
  83. package/dist/esm/components/panel-tree/panel-tree-constants.d.ts +3 -0
  84. package/dist/esm/components/panel-tree/panel-tree-constants.js +3 -0
  85. package/dist/esm/components/panel-tree/panel-tree-store.d.ts +23 -0
  86. package/dist/esm/components/panel-tree/panel-tree-store.js +59 -0
  87. package/dist/esm/components/panel-tree/panel-tree-utils.d.ts +17 -0
  88. package/dist/esm/components/panel-tree/panel-tree-utils.js +55 -0
  89. package/dist/esm/components/popover/index.d.ts +0 -0
  90. package/dist/esm/components/popover/index.js +1 -0
  91. package/dist/esm/components/reorderable-list/RedorderableList.d.ts +55 -0
  92. package/dist/esm/components/reorderable-list/RedorderableList.js +202 -0
  93. package/dist/esm/components/reorderable-list/index.d.ts +0 -0
  94. package/dist/esm/components/reorderable-list/index.js +1 -0
  95. package/dist/esm/components/select/Select.d.ts +44 -0
  96. package/dist/esm/components/select/Select.js +108 -0
  97. package/dist/esm/components/select/SelectOptionsPanel.d.ts +21 -0
  98. package/dist/esm/components/select/SelectOptionsPanel.js +168 -0
  99. package/dist/esm/components/select/constants.d.ts +2 -0
  100. package/dist/esm/components/select/constants.js +2 -0
  101. package/dist/esm/components/select/index.d.ts +2 -0
  102. package/dist/esm/components/select/index.js +3 -0
  103. package/dist/esm/components/select/select-options-manager.d.ts +39 -0
  104. package/dist/esm/components/select/select-options-manager.js +63 -0
  105. package/dist/esm/components/tab-panel/TabPanel.d.ts +23 -0
  106. package/dist/esm/components/tab-panel/TabPanel.js +88 -0
  107. package/dist/esm/components/tab-panel/index.d.ts +3 -0
  108. package/dist/esm/components/tab-panel/index.js +3 -0
  109. package/dist/esm/components/tab-panel/tab-panel-default-settings.d.ts +17 -0
  110. package/dist/esm/components/tab-panel/tab-panel-default-settings.js +17 -0
  111. package/dist/esm/components/tab-panel/tab-panel-settings.d.ts +28 -0
  112. package/dist/esm/components/tab-panel/tab-panel-settings.js +11 -0
  113. package/dist/esm/components/table/Table.d.ts +64 -0
  114. package/dist/esm/components/table/Table.js +68 -0
  115. package/dist/esm/components/table/index.d.ts +1 -0
  116. package/dist/esm/components/table/index.js +1 -0
  117. package/dist/esm/components/toast/index.d.ts +1 -0
  118. package/dist/esm/components/toast/index.js +1 -0
  119. package/dist/esm/components/toast/toast.d.ts +15 -0
  120. package/dist/esm/components/toast/toast.js +31 -0
  121. package/dist/esm/components/tooltip/index.d.ts +3 -0
  122. package/dist/esm/components/tooltip/index.js +3 -0
  123. package/dist/esm/components/tooltip/tooltip-defaults.d.ts +23 -0
  124. package/dist/esm/components/tooltip/tooltip-defaults.js +22 -0
  125. package/dist/esm/components/tooltip/tooltip-function.d.ts +35 -0
  126. package/dist/esm/components/tooltip/tooltip-function.js +200 -0
  127. package/dist/esm/components/tooltip/tooltip-interfaces.d.ts +11 -0
  128. package/dist/esm/components/tooltip/tooltip-interfaces.js +1 -0
  129. package/dist/esm/components/tree/Tree.d.ts +110 -0
  130. package/dist/esm/components/tree/Tree.js +222 -0
  131. package/dist/esm/components/tree/index.d.ts +3 -0
  132. package/dist/esm/components/tree/index.js +3 -0
  133. package/dist/esm/components/tree/tree-node.interface.d.ts +9 -0
  134. package/dist/esm/components/tree/tree-node.interface.js +1 -0
  135. package/dist/esm/components/tree/tree-utils.d.ts +11 -0
  136. package/dist/esm/components/tree/tree-utils.js +18 -0
  137. package/dist/esm/index.d.ts +2 -0
  138. package/dist/esm/index.js +2 -0
  139. package/dist/esm/utils/date-time.d.ts +3 -0
  140. package/dist/esm/utils/date-time.js +22 -0
  141. package/dist/esm/utils/dom.d.ts +16 -0
  142. package/dist/esm/utils/dom.js +28 -0
  143. package/dist/esm/utils/events.d.ts +1 -0
  144. package/dist/esm/utils/events.js +25 -0
  145. package/dist/esm/utils/index.d.ts +3 -0
  146. package/dist/esm/utils/index.js +3 -0
  147. package/package.json +10 -4
  148. package/dist/components/tooltip/tooltip-function.js +0 -204
  149. /package/dist/{components → cjs/components}/accordion/index.d.ts +0 -0
  150. /package/dist/{components → cjs/components}/accordion/index.js +0 -0
  151. /package/dist/{components → cjs/components}/data-grid/index.d.ts +0 -0
  152. /package/dist/{components → cjs/components}/data-grid/index.js +0 -0
  153. /package/dist/{components → cjs/components}/data-table/index.d.ts +0 -0
  154. /package/dist/{components → cjs/components}/data-table/index.js +0 -0
  155. /package/dist/{components → cjs/components}/dialog/Dialog.d.ts +0 -0
  156. /package/dist/{components → cjs/components}/dialog/Dialog.js +0 -0
  157. /package/dist/{components → cjs/components}/dialog/dialog-manager.d.ts +0 -0
  158. /package/dist/{components → cjs/components}/dialog/dialog-manager.js +0 -0
  159. /package/dist/{components → cjs/components}/dialog/index.d.ts +0 -0
  160. /package/dist/{components → cjs/components}/dialog/index.js +0 -0
  161. /package/dist/{components → cjs/components}/drag-handler/DragHandler.d.ts +0 -0
  162. /package/dist/{components → cjs/components}/drag-handler/DragHandler.js +0 -0
  163. /package/dist/{components → cjs/components}/drag-handler/index.d.ts +0 -0
  164. /package/dist/{components → cjs/components}/drag-handler/index.js +0 -0
  165. /package/dist/{components → cjs/components}/drawer/index.d.ts +0 -0
  166. /package/dist/{components → cjs/components}/drawer/index.js +0 -0
  167. /package/dist/{components → cjs/components}/drop-target/DropTarget.d.ts +0 -0
  168. /package/dist/{components → cjs/components}/drop-target/DropTarget.js +0 -0
  169. /package/dist/{components → cjs/components}/drop-target/drop-target.state.d.ts +0 -0
  170. /package/dist/{components → cjs/components}/drop-target/drop-target.state.js +0 -0
  171. /package/dist/{components → cjs/components}/drop-target/index.d.ts +0 -0
  172. /package/dist/{components → cjs/components}/drop-target/index.js +0 -0
  173. /package/dist/{components → cjs/components}/form/Form.d.ts +0 -0
  174. /package/dist/{components → cjs/components}/form/Form.js +0 -0
  175. /package/dist/{components → cjs/components}/form/index.d.ts +0 -0
  176. /package/dist/{components → cjs/components}/form/index.js +0 -0
  177. /package/dist/{components → cjs/components}/icon/Icon.d.ts +0 -0
  178. /package/dist/{components → cjs/components}/icon/Icon.js +0 -0
  179. /package/dist/{components → cjs/components}/icon/icons.d.ts +0 -0
  180. /package/dist/{components → cjs/components}/icon/icons.js +0 -0
  181. /package/dist/{components → cjs/components}/icon/index.d.ts +0 -0
  182. /package/dist/{components → cjs/components}/icon/index.js +0 -0
  183. /package/dist/{components → cjs/components}/markdown/Markdown.d.ts +0 -0
  184. /package/dist/{components → cjs/components}/markdown/Markdown.js +0 -0
  185. /package/dist/{components → cjs/components}/markdown/index.d.ts +0 -0
  186. /package/dist/{components → cjs/components}/markdown/index.js +0 -0
  187. /package/dist/{components → cjs/components}/markdown-editor/MarkdownEditor.d.ts +0 -0
  188. /package/dist/{components → cjs/components}/markdown-editor/MarkdownEditor.js +0 -0
  189. /package/dist/{components → cjs/components}/markdown-editor/index.d.ts +0 -0
  190. /package/dist/{components → cjs/components}/markdown-editor/index.js +0 -0
  191. /package/dist/{components → cjs/components}/markdown-editor/markdown-editor.state.d.ts +0 -0
  192. /package/dist/{components → cjs/components}/markdown-editor/markdown-editor.state.js +0 -0
  193. /package/dist/{components → cjs/components}/menu/Menu.d.ts +0 -0
  194. /package/dist/{components → cjs/components}/menu/Menu.js +0 -0
  195. /package/dist/{components → cjs/components}/menu/MenuButton.d.ts +0 -0
  196. /package/dist/{components → cjs/components}/menu/MenuButton.js +0 -0
  197. /package/dist/{components → cjs/components}/menu/MenuSeparator.d.ts +0 -0
  198. /package/dist/{components → cjs/components}/menu/MenuSeparator.js +0 -0
  199. /package/dist/{components → cjs/components}/menu/index.d.ts +0 -0
  200. /package/dist/{components → cjs/components}/menu/index.js +0 -0
  201. /package/dist/{components → cjs/components}/menu/menu-constants.d.ts +0 -0
  202. /package/dist/{components → cjs/components}/menu/menu-constants.js +0 -0
  203. /package/dist/{components → cjs/components}/menu/menu-manager.d.ts +0 -0
  204. /package/dist/{components → cjs/components}/menu/menu-manager.js +0 -0
  205. /package/dist/{components → cjs/components}/menu/menu-settings.d.ts +0 -0
  206. /package/dist/{components → cjs/components}/menu/menu-settings.js +0 -0
  207. /package/dist/{components → cjs/components}/modal/index.d.ts +0 -0
  208. /package/dist/{components → cjs/components}/modal/index.js +0 -0
  209. /package/dist/{components → cjs/components}/pagination/Pagination.d.ts +0 -0
  210. /package/dist/{components → cjs/components}/pagination/Pagination.js +0 -0
  211. /package/dist/{components → cjs/components}/pagination/index.d.ts +0 -0
  212. /package/dist/{components → cjs/components}/pagination/index.js +0 -0
  213. /package/dist/{components → cjs/components}/pagination/pagination-settings.d.ts +0 -0
  214. /package/dist/{components → cjs/components}/pagination/pagination-settings.js +0 -0
  215. /package/dist/{components → cjs/components}/panel-tree/PanelTree.d.ts +0 -0
  216. /package/dist/{components → cjs/components}/panel-tree/PanelTree.js +0 -0
  217. /package/dist/{components → cjs/components}/panel-tree/index.d.ts +0 -0
  218. /package/dist/{components → cjs/components}/panel-tree/index.js +0 -0
  219. /package/dist/{components → cjs/components}/panel-tree/panel-tree-constants.d.ts +0 -0
  220. /package/dist/{components → cjs/components}/panel-tree/panel-tree-constants.js +0 -0
  221. /package/dist/{components → cjs/components}/panel-tree/panel-tree-store.d.ts +0 -0
  222. /package/dist/{components → cjs/components}/panel-tree/panel-tree-store.js +0 -0
  223. /package/dist/{components → cjs/components}/panel-tree/panel-tree-utils.d.ts +0 -0
  224. /package/dist/{components → cjs/components}/panel-tree/panel-tree-utils.js +0 -0
  225. /package/dist/{components → cjs/components}/popover/index.d.ts +0 -0
  226. /package/dist/{components → cjs/components}/popover/index.js +0 -0
  227. /package/dist/{components → cjs/components}/reorderable-list/RedorderableList.d.ts +0 -0
  228. /package/dist/{components → cjs/components}/reorderable-list/RedorderableList.js +0 -0
  229. /package/dist/{components → cjs/components}/reorderable-list/index.d.ts +0 -0
  230. /package/dist/{components → cjs/components}/reorderable-list/index.js +0 -0
  231. /package/dist/{components → cjs/components}/select/Select.d.ts +0 -0
  232. /package/dist/{components → cjs/components}/select/Select.js +0 -0
  233. /package/dist/{components → cjs/components}/select/SelectOptionsPanel.d.ts +0 -0
  234. /package/dist/{components → cjs/components}/select/SelectOptionsPanel.js +0 -0
  235. /package/dist/{components → cjs/components}/select/constants.d.ts +0 -0
  236. /package/dist/{components → cjs/components}/select/constants.js +0 -0
  237. /package/dist/{components → cjs/components}/select/index.d.ts +0 -0
  238. /package/dist/{components → cjs/components}/select/index.js +0 -0
  239. /package/dist/{components → cjs/components}/select/select-options-manager.d.ts +0 -0
  240. /package/dist/{components → cjs/components}/select/select-options-manager.js +0 -0
  241. /package/dist/{components → cjs/components}/tab-panel/TabPanel.d.ts +0 -0
  242. /package/dist/{components → cjs/components}/tab-panel/TabPanel.js +0 -0
  243. /package/dist/{components → cjs/components}/tab-panel/index.d.ts +0 -0
  244. /package/dist/{components → cjs/components}/tab-panel/index.js +0 -0
  245. /package/dist/{components → cjs/components}/tab-panel/tab-panel-default-settings.d.ts +0 -0
  246. /package/dist/{components → cjs/components}/tab-panel/tab-panel-default-settings.js +0 -0
  247. /package/dist/{components → cjs/components}/tab-panel/tab-panel-settings.d.ts +0 -0
  248. /package/dist/{components → cjs/components}/tab-panel/tab-panel-settings.js +0 -0
  249. /package/dist/{components → cjs/components}/table/Table.d.ts +0 -0
  250. /package/dist/{components → cjs/components}/table/Table.js +0 -0
  251. /package/dist/{components → cjs/components}/table/index.d.ts +0 -0
  252. /package/dist/{components → cjs/components}/table/index.js +0 -0
  253. /package/dist/{components/tree/tree-node.interface.js → cjs/components/tooltip/tooltip-interfaces.js} +0 -0
  254. /package/dist/{components → cjs/components}/tree/Tree.d.ts +0 -0
  255. /package/dist/{components → cjs/components}/tree/Tree.js +0 -0
  256. /package/dist/{components → cjs/components}/tree/index.d.ts +0 -0
  257. /package/dist/{components → cjs/components}/tree/index.js +0 -0
  258. /package/dist/{components → cjs/components}/tree/tree-node.interface.d.ts +0 -0
  259. /package/dist/{components → cjs/components}/tree/tree-utils.d.ts +0 -0
  260. /package/dist/{components → cjs/components}/tree/tree-utils.js +0 -0
  261. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  262. /package/dist/{index.js → cjs/index.js} +0 -0
  263. /package/dist/{utils → cjs/utils}/date-time.d.ts +0 -0
  264. /package/dist/{utils → cjs/utils}/date-time.js +0 -0
  265. /package/dist/{utils → cjs/utils}/dom.d.ts +0 -0
  266. /package/dist/{utils → cjs/utils}/dom.js +0 -0
  267. /package/dist/{utils → cjs/utils}/events.d.ts +0 -0
  268. /package/dist/{utils → cjs/utils}/events.js +0 -0
  269. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  270. /package/dist/{utils → cjs/utils}/index.js +0 -0
  271. /package/dist/{components/toast → esm/components/accordion}/index.d.ts +0 -0
  272. /package/dist/{components/toast → esm/components/accordion}/index.js +0 -0
  273. /package/dist/{components/tooltip → esm/components/data-grid}/index.d.ts +0 -0
  274. /package/dist/{components/tooltip → esm/components/data-grid}/index.js +0 -0
  275. /package/dist/{components/tooltip/tooltip-function.d.ts → esm/components/data-table/index.d.ts} +0 -0
@@ -0,0 +1,255 @@
1
+ import { Subscription } from "rxjs";
2
+ import { mouseWithinElement } from "../../utils";
3
+ import { redraw } from "mithril";
4
+ export class MarkdownEditorState {
5
+ constructor(editValue) {
6
+ this.subs = new Subscription();
7
+ this.isEditing = false;
8
+ this.isEditingPrevious = false;
9
+ this.editorValue = "";
10
+ this.editorEl = undefined;
11
+ this.editorContainerEl = undefined;
12
+ this.selectionStart = 0;
13
+ this.selectionEnd = 0;
14
+ this.editValue = editValue;
15
+ const onclick = (ev) => {
16
+ if (this.isEditing && this.editorContainerEl) {
17
+ if (!mouseWithinElement(ev, this.editorContainerEl)) {
18
+ this.isEditing = false;
19
+ redraw();
20
+ }
21
+ }
22
+ };
23
+ document.addEventListener("click", onclick);
24
+ this.subs.add(() => document.removeEventListener("click", onclick));
25
+ }
26
+ selectedText() {
27
+ const selection = this.editorValue.slice(this.selectionStart, this.selectionEnd);
28
+ return selection;
29
+ }
30
+ findSelectedLines() {
31
+ // if (!this.editorEl) return [];
32
+ let linesStart = this.selectionStart;
33
+ let linesEnd = this.selectionEnd;
34
+ for (let i = this.selectionStart; i >= 0; i--) {
35
+ if (i > 1 && this.editorValue[i - 1] === "\n") {
36
+ linesStart = i;
37
+ break;
38
+ }
39
+ if (i === 0) {
40
+ linesStart = i;
41
+ break;
42
+ }
43
+ }
44
+ for (let i = this.selectionEnd; i < this.editorValue.length; i++) {
45
+ if (this.editorValue[i] === "\n" || i === 0) {
46
+ linesEnd = i;
47
+ break;
48
+ }
49
+ }
50
+ const selectedLinesString = this.editorValue.slice(linesStart, linesEnd);
51
+ // console.log("selectedLinesStr", linesStart, linesEnd, selectedLinesString);
52
+ let selectedLinesText = selectedLinesString.split("\n");
53
+ selectedLinesText = selectedLinesText.map((line, lineIndex) => {
54
+ return line + ((lineIndex <= (selectedLinesText.length - 2)) ? "\n" : "");
55
+ });
56
+ const lines = [];
57
+ let offset = linesStart;
58
+ for (let i = 0; i < selectedLinesText.length; i++) {
59
+ lines.push({
60
+ start: offset,
61
+ end: offset + selectedLinesText[i].length,
62
+ content: selectedLinesText[i],
63
+ });
64
+ offset = offset + selectedLinesText[i].length;
65
+ }
66
+ // console.log("lines", lines);
67
+ return lines;
68
+ }
69
+ findSelectedWord() {
70
+ let start = this.selectionStart;
71
+ let end = this.selectionEnd;
72
+ for (let i = this.selectionStart; i >= 0; i--) {
73
+ if (i > 1 && (this.editorValue[i - 1] === " " || this.editorValue[i - 1] === "\n")) {
74
+ start = i;
75
+ break;
76
+ }
77
+ if (i === 0) {
78
+ start = i;
79
+ break;
80
+ }
81
+ }
82
+ for (let i = this.selectionEnd; i < this.editorValue.length; i++) {
83
+ if (this.editorValue[i] === "" || this.editorValue[i] === "\n" || i === 0) {
84
+ end = i;
85
+ break;
86
+ }
87
+ }
88
+ return {
89
+ start,
90
+ end,
91
+ content: this.editorValue.slice(start, end),
92
+ };
93
+ }
94
+ destroy() {
95
+ this.subs.unsubscribe();
96
+ }
97
+ setSelection(start, end) {
98
+ this.selectionStart = start;
99
+ this.selectionEnd = end;
100
+ const selection = this.editorValue.slice(start, end);
101
+ // console.log(start, end, selection);
102
+ }
103
+ applyHeading(level = 1) {
104
+ // console.log("addHeading", "selection:", this.selectionStart, this.selectionEnd);
105
+ let value = this.editorValue;
106
+ const toInsert = "#".padEnd(level, "#") + " ";
107
+ const lines = this.findSelectedLines();
108
+ for (let i = lines.length - 1; i >= 0; i--) {
109
+ value = value.slice(0, lines[i].start) + toInsert + value.slice(lines[i].start);
110
+ }
111
+ this.editorValue = value;
112
+ this.editValue(value);
113
+ const newSelection = this.selectionStart + toInsert.length;
114
+ this.requestSelection = { start: newSelection, end: newSelection };
115
+ }
116
+ applyBold() {
117
+ // console.log("addBold", "selection:", this.selectionStart, this.selectionEnd);
118
+ let start = this.selectionStart;
119
+ let end = this.selectionEnd;
120
+ if (start === end) {
121
+ const word = this.findSelectedWord();
122
+ start = word.start;
123
+ end = word.end;
124
+ }
125
+ let value = this.editorValue;
126
+ value = value.slice(0, end) + "**" + value.slice(end);
127
+ value = value.slice(0, start) + "**" + value.slice(start);
128
+ this.editorValue = value;
129
+ this.editValue(value);
130
+ const newSelection = start + 2;
131
+ this.requestSelection = { start: newSelection, end: newSelection };
132
+ }
133
+ applyItalic() {
134
+ // console.log("addItalic", "selection:", this.selectionStart, this.selectionEnd);
135
+ let start = this.selectionStart;
136
+ let end = this.selectionEnd;
137
+ if (start === end) {
138
+ const word = this.findSelectedWord();
139
+ start = word.start;
140
+ end = word.end;
141
+ }
142
+ let value = this.editorValue;
143
+ value = value.slice(0, end) + "*" + value.slice(end);
144
+ value = value.slice(0, start) + "*" + value.slice(start);
145
+ this.editorValue = value;
146
+ this.editValue(value);
147
+ const newSelection = start + 1;
148
+ this.requestSelection = { start: newSelection, end: newSelection };
149
+ }
150
+ applyCode() {
151
+ // console.log("addCode", "selection:", this.selectionStart, this.selectionEnd);
152
+ let start = this.selectionStart;
153
+ let end = this.selectionEnd;
154
+ if (start === end) {
155
+ const word = this.findSelectedWord();
156
+ start = word.start;
157
+ end = word.end;
158
+ }
159
+ let value = this.editorValue;
160
+ value = value.slice(0, end) + "`" + value.slice(end);
161
+ value = value.slice(0, start) + "`" + value.slice(start);
162
+ this.editorValue = value;
163
+ this.editValue(value);
164
+ const newSelection = start + 1;
165
+ this.requestSelection = { start: newSelection, end: newSelection };
166
+ }
167
+ applyStrikethrough() {
168
+ // console.log("addStrikethrough", "selection:", this.selectionStart, this.selectionEnd);
169
+ let start = this.selectionStart;
170
+ let end = this.selectionEnd;
171
+ if (start === end) {
172
+ const word = this.findSelectedWord();
173
+ start = word.start;
174
+ end = word.end;
175
+ }
176
+ let value = this.editorValue;
177
+ value = value.slice(0, end) + "~~" + value.slice(end);
178
+ value = value.slice(0, start) + "~~" + value.slice(start);
179
+ this.editorValue = value;
180
+ this.editValue(value);
181
+ const newSelection = start + 2;
182
+ this.requestSelection = { start: newSelection, end: newSelection };
183
+ }
184
+ applyUnorderedList() {
185
+ // console.log("addUnorderedList", "selection:", this.selectionStart, this.selectionEnd);
186
+ let value = this.editorValue;
187
+ const toInsert = "- ";
188
+ const lines = this.findSelectedLines();
189
+ for (let i = lines.length - 1; i >= 0; i--) {
190
+ value = value.slice(0, lines[i].start) + toInsert + value.slice(lines[i].start);
191
+ }
192
+ this.editorValue = value;
193
+ this.editValue(value);
194
+ const newSelection = this.selectionStart + 2;
195
+ this.requestSelection = { start: newSelection, end: newSelection };
196
+ }
197
+ applyOrderedList() {
198
+ // console.log("addOrderedList", "selection:", this.selectionStart, this.selectionEnd);
199
+ let value = this.editorValue;
200
+ const lines = this.findSelectedLines();
201
+ for (let i = lines.length - 1; i >= 0; i--) {
202
+ let toInsert = `${i + 1}. `;
203
+ value = value.slice(0, lines[i].start) + toInsert + value.slice(lines[i].start);
204
+ }
205
+ this.editorValue = value;
206
+ this.editValue(value);
207
+ const newSelection = this.selectionStart + 3;
208
+ this.requestSelection = { start: newSelection, end: newSelection };
209
+ }
210
+ applyLink() {
211
+ // console.log("addLink", "selection:", this.selectionStart, this.selectionEnd);
212
+ let start = this.selectionStart;
213
+ let end = this.selectionEnd;
214
+ let content = this.selectedText();
215
+ if (start === end) {
216
+ const word = this.findSelectedWord();
217
+ start = word.start;
218
+ end = word.end;
219
+ content = word.content;
220
+ }
221
+ const isUrl = content.startsWith("http") || content.startsWith("www");
222
+ let url = (Boolean(content) && isUrl) ? content : "https://example.com";
223
+ let value = this.editorValue;
224
+ value = value.slice(0, end) + `](${url})` + value.slice(end);
225
+ value = value.slice(0, start) + "[" + value.slice(start);
226
+ this.editorValue = value;
227
+ this.editValue(value);
228
+ const newSelection = start + 1;
229
+ this.requestSelection = { start: newSelection, end: newSelection };
230
+ }
231
+ applyIndent(backward = false) {
232
+ // console.log("applyIndent", "selection:", this.selectionStart, this.selectionEnd);
233
+ let value = this.editorValue;
234
+ // const toInsert = "- ";
235
+ const lines = this.findSelectedLines();
236
+ for (let i = lines.length - 1; i >= 0; i--) {
237
+ if (backward) {
238
+ let newContent = lines[i].content;
239
+ if (newContent.startsWith(" "))
240
+ newContent = newContent.slice(1);
241
+ if (newContent.startsWith(" "))
242
+ newContent = newContent.slice(1);
243
+ value = value.slice(0, lines[i].start) + newContent + value.slice(lines[i].end);
244
+ }
245
+ else {
246
+ value = value.slice(0, lines[i].start) + " " + value.slice(lines[i].start);
247
+ }
248
+ }
249
+ this.editorValue = value;
250
+ this.editValue(value);
251
+ let newSelection = this.selectionStart + (backward ? -2 : 2);
252
+ newSelection = Math.max(newSelection, lines[0].start);
253
+ this.requestSelection = { start: newSelection, end: newSelection };
254
+ }
255
+ }
@@ -0,0 +1,14 @@
1
+ import m from "mithril";
2
+ export interface MenuOptions {
3
+ noFlipV?: boolean;
4
+ noFlipH?: boolean;
5
+ forceFlipV?: boolean;
6
+ forceFlipH?: boolean;
7
+ }
8
+ export declare const Menu: m.Component<{
9
+ x: number | undefined;
10
+ y: number | undefined;
11
+ options?: MenuOptions;
12
+ }, {
13
+ el?: HTMLDivElement;
14
+ }>;
@@ -0,0 +1,81 @@
1
+ import m from "mithril";
2
+ import { MENU_CONSTANTS } from "./menu-constants";
3
+ import { MENU_SETTINGS } from "./menu-settings";
4
+ export const Menu = {
5
+ oninit() { },
6
+ oncreate({ dom }) {
7
+ if (dom) {
8
+ this.el = dom;
9
+ this.el.focus();
10
+ }
11
+ },
12
+ onupdate({ dom }) {
13
+ // if (dom) this.el = dom as HTMLDivElement;
14
+ },
15
+ view({ attrs, children }) {
16
+ var _a, _b, _c, _d, _e, _f;
17
+ const maxWidthPx = Math.min(window.innerWidth, MENU_CONSTANTS.MAX_WIDTH_PX);
18
+ const maxHeightPx = window.innerHeight / 2;
19
+ const xPx = (_a = attrs.x) !== null && _a !== void 0 ? _a : 0;
20
+ const yPx = (_b = attrs.y) !== null && _b !== void 0 ? _b : 0;
21
+ let flipH = ((xPx + MENU_CONSTANTS.MIN_WIDTH_PX) > window.innerWidth);
22
+ let flipV = MENU_SETTINGS.ANCHOR === "page"
23
+ ? ((yPx + maxHeightPx - window.scrollY) > window.innerHeight)
24
+ : ((yPx + maxHeightPx) > window.innerHeight);
25
+ if (((_c = attrs.options) === null || _c === void 0 ? void 0 : _c.noFlipH) === true)
26
+ flipH = false;
27
+ if (((_d = attrs.options) === null || _d === void 0 ? void 0 : _d.noFlipV) === true)
28
+ flipV = false;
29
+ if (((_e = attrs.options) === null || _e === void 0 ? void 0 : _e.forceFlipH) === true)
30
+ flipH = true;
31
+ if (((_f = attrs.options) === null || _f === void 0 ? void 0 : _f.forceFlipV) === true)
32
+ flipV = true;
33
+ // console.log({
34
+ // "yPx": yPx,
35
+ // "maxHeightPx": maxHeightPx,
36
+ // "window.scrollY": window.scrollY,
37
+ // "window.innerHeight": window.innerHeight,
38
+ // "flipV": flipV,
39
+ // });
40
+ // TODO: don't let the menu width actually touch the screen width; it will fall off the left hand side
41
+ const posH = flipH ? `right: ${window.innerWidth - xPx}px;` : `left: ${xPx}px;`;
42
+ const posV = flipV ? `bottom: ${window.innerHeight - yPx}px;` : `top: ${yPx}px;`;
43
+ return m("", {
44
+ key: Date.now(),
45
+ class: `mico-menu ${MENU_SETTINGS.MENU_CLASS}`,
46
+ style: `position: absolute; overflow-y: auto; overflow-x: hidden; ${posH} ${posV} z-index: 100; min-width: ${MENU_CONSTANTS.MIN_WIDTH_PX}px; max-width: ${maxWidthPx}px; max-height: ${maxHeightPx}px;`,
47
+ tabIndex: -1,
48
+ onkeydown: (ev) => {
49
+ var _a, _b, _c, _d, _e, _f;
50
+ const focussableElems = Array.from((_b = (_a = this.el) === null || _a === void 0 ? void 0 : _a.querySelectorAll("button, input, select, textarea")) !== null && _b !== void 0 ? _b : [])
51
+ .filter(el => !Boolean(el.disabled));
52
+ let focusIndex = -1;
53
+ if (focussableElems) {
54
+ for (let i = 0; i < focussableElems.length; i++) {
55
+ const element = focussableElems[i];
56
+ if (document.activeElement === element) {
57
+ focusIndex = i;
58
+ break;
59
+ }
60
+ }
61
+ }
62
+ if (ev.key === "ArrowDown") {
63
+ // console.log("move down, focussable list:", focussableElems, "this.el", this.el);
64
+ focusIndex += 1;
65
+ if (focusIndex >= focussableElems.length)
66
+ focusIndex = 0;
67
+ (_d = (_c = focussableElems[focusIndex]).focus) === null || _d === void 0 ? void 0 : _d.call(_c);
68
+ }
69
+ if (ev.key === "ArrowUp") {
70
+ // console.log("move up, focussable list:", focussableElems, "this.el", this.el);
71
+ focusIndex -= 1;
72
+ if (focusIndex < 0)
73
+ focusIndex = focussableElems.length - 1;
74
+ (_f = (_e = focussableElems[focusIndex]).focus) === null || _f === void 0 ? void 0 : _f.call(_e);
75
+ }
76
+ },
77
+ }, [
78
+ children,
79
+ ]);
80
+ }
81
+ };
@@ -0,0 +1,16 @@
1
+ import m from "mithril";
2
+ import { IconAttrs } from "../icon";
3
+ export declare const MenuButton: m.Component<{
4
+ icon?: m.Vnode<any, any> | IconAttrs;
5
+ label?: string;
6
+ hint?: string;
7
+ /** If an href is supplied, `m.route.Link` is used instad of `button` */
8
+ href?: string;
9
+ disabled?: boolean;
10
+ onclick?: (ev: MouseEvent) => any;
11
+ onhover?: (ev: MouseEvent) => any;
12
+ onprev?: (ev: KeyboardEvent) => any;
13
+ onnext?: (ev: KeyboardEvent) => any;
14
+ class?: string;
15
+ style?: string;
16
+ }>;
@@ -0,0 +1,75 @@
1
+ import m from "mithril";
2
+ import { Icon } from "../icon";
3
+ import { MENU_SETTINGS } from "./menu-settings";
4
+ export const MenuButton = {
5
+ view({ attrs }) {
6
+ var _a, _b, _c, _d;
7
+ return (attrs.href !== undefined) ? [
8
+ m(m.route.Link, {
9
+ class: `mico-menu-button ${(_a = attrs.class) !== null && _a !== void 0 ? _a : ""} ${MENU_SETTINGS.MENU_BUTTON_CLASS}`,
10
+ style: `${(_b = attrs.style) !== null && _b !== void 0 ? _b : ""} width: 100%; height: 1.5rem; padding-right: 0.5rem; display: flex; align-items: center;`,
11
+ href: attrs.href,
12
+ disabled: attrs.disabled,
13
+ onclick: (ev) => {
14
+ var _a;
15
+ (_a = attrs.onclick) === null || _a === void 0 ? void 0 : _a.call(attrs, ev);
16
+ m.redraw();
17
+ },
18
+ }, [
19
+ m(ButtonIcon, { icon: attrs.icon }),
20
+ m(ButtonLabel, { label: attrs.label }),
21
+ m("", { style: "flex: 1 1 0%;" }),
22
+ m(ButtonHint, { hint: attrs.hint }),
23
+ ]),
24
+ ] : [
25
+ m("button", {
26
+ class: `mico-menu-button ${(_c = attrs.class) !== null && _c !== void 0 ? _c : ""} ${MENU_SETTINGS.MENU_BUTTON_CLASS}`,
27
+ style: `${(_d = attrs.style) !== null && _d !== void 0 ? _d : ""} width: 100%; height: 1.5rem; padding-right: 0.5rem; display: flex; align-items: center;`,
28
+ disabled: attrs.disabled,
29
+ onclick: (ev) => {
30
+ var _a;
31
+ (_a = attrs.onclick) === null || _a === void 0 ? void 0 : _a.call(attrs, ev);
32
+ m.redraw();
33
+ },
34
+ }, [
35
+ m(ButtonIcon, { icon: attrs.icon }),
36
+ m(ButtonLabel, { label: attrs.label }),
37
+ m("", { style: "flex: 1 1 0%;" }),
38
+ m(ButtonHint, { hint: attrs.hint }),
39
+ ]),
40
+ ];
41
+ }
42
+ };
43
+ const ButtonIcon = {
44
+ view({ attrs }) {
45
+ return m("", {
46
+ // class: attrs.disabled ? "text-disabled" : "text-icon",
47
+ class: `mico-menu-button-icon ${MENU_SETTINGS.MENU_BUTTON_ICON_CLASS}`,
48
+ style: "width: 2rem; flex: none; display: flex; align-items: center; justify-content: space-around;",
49
+ }, [
50
+ attrs.icon ? [
51
+ ("fas" in attrs.icon || "far" in attrs.icon || "fab" in attrs.icon)
52
+ ? m(Icon, Object.assign({}, attrs.icon))
53
+ : attrs.icon,
54
+ ] : [],
55
+ ]);
56
+ }
57
+ };
58
+ const ButtonLabel = {
59
+ view({ attrs }) {
60
+ return m("span", {
61
+ class: `mico-menu-button-label ${MENU_SETTINGS.MENU_BUTTON_LABEL_CLASS}`,
62
+ style: "overflow: hidden; text-overflow: ellipsis; white-space: nowrap;",
63
+ }, attrs.label);
64
+ }
65
+ };
66
+ const ButtonHint = {
67
+ view({ attrs }) {
68
+ return attrs.hint
69
+ ? m("span", {
70
+ class: `mico-menu-button-hint ${MENU_SETTINGS.MENU_BUTTON_HINT_CLASS}`,
71
+ style: "overflow: hidden; text-overflow: ellipsis; white-space: nowrap;",
72
+ }, attrs.hint)
73
+ : [];
74
+ }
75
+ };
@@ -0,0 +1,2 @@
1
+ import m from "mithril";
2
+ export declare const MenuSeparator: m.Component<{}>;
@@ -0,0 +1,11 @@
1
+ import m from "mithril";
2
+ import { MENU_SETTINGS } from "./menu-settings";
3
+ export const MenuSeparator = {
4
+ view() {
5
+ // return m(".my-2.ml-8.mr-2.border-b.border-slate-300");
6
+ return m("", {
7
+ class: `mico-menu-separator ${MENU_SETTINGS.MENU_SEPARATOR_CLASS}`,
8
+ style: "margin: 0.25rem 0; border-bottom-width: 1px; border-bottom-style: solid;",
9
+ });
10
+ }
11
+ };
@@ -0,0 +1,6 @@
1
+ export * from "./Menu";
2
+ export * from "./MenuButton";
3
+ export * from "./MenuSeparator";
4
+ export * from "./menu-constants";
5
+ export * from "./menu-manager";
6
+ export * from "./menu-settings";
@@ -0,0 +1,6 @@
1
+ export * from "./Menu";
2
+ export * from "./MenuButton";
3
+ export * from "./MenuSeparator";
4
+ export * from "./menu-constants";
5
+ export * from "./menu-manager";
6
+ export * from "./menu-settings";
@@ -0,0 +1,4 @@
1
+ export declare const MENU_CONSTANTS: {
2
+ readonly MIN_WIDTH_PX: 200;
3
+ readonly MAX_WIDTH_PX: 500;
4
+ };
@@ -0,0 +1,4 @@
1
+ export const MENU_CONSTANTS = {
2
+ MIN_WIDTH_PX: 200,
3
+ MAX_WIDTH_PX: 500,
4
+ };
@@ -0,0 +1,22 @@
1
+ import m from "mithril";
2
+ import { MenuOptions } from "./Menu";
3
+ export declare class MenuManager {
4
+ private containerEl;
5
+ private _menuVnode;
6
+ menuVnode$: import("rxjs").Observable<m.Vnode<any, any> | undefined>;
7
+ get menuVnode(): m.Vnode<any, any> | undefined;
8
+ get isOpen(): boolean;
9
+ constructor();
10
+ /**
11
+ * Show a new "right-click" menu at the position of the given mouse event,
12
+ * containing the given menu contents.
13
+ *
14
+ * This function handles stopping the mouse event propagation and aiting for any previous menus
15
+ * to be cleared.
16
+ * @param ev
17
+ * @param menuContents
18
+ */
19
+ show(ev: MouseEvent | undefined, menuContents: m.ChildArrayOrPrimitive, options?: MenuOptions): Promise<void>;
20
+ hide(): void;
21
+ }
22
+ export declare const menuMgr: MenuManager;
@@ -0,0 +1,72 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import m from "mithril";
11
+ import { BehaviorSubject } from "rxjs";
12
+ import { Menu } from "./Menu";
13
+ import { MENU_SETTINGS } from "./menu-settings";
14
+ export class MenuManager {
15
+ get menuVnode() { return this._menuVnode.value; }
16
+ get isOpen() {
17
+ return Boolean(this.menuVnode);
18
+ }
19
+ constructor() {
20
+ this._menuVnode = new BehaviorSubject(undefined);
21
+ this.menuVnode$ = this._menuVnode.asObservable();
22
+ this.containerEl = document.createElement("div");
23
+ this.containerEl.classList.add("menu-container");
24
+ document.body.append(this.containerEl);
25
+ document.addEventListener("click", () => {
26
+ if (this.isOpen) {
27
+ this.hide();
28
+ }
29
+ });
30
+ document.addEventListener("keydown", (ev) => {
31
+ if (this.isOpen && (ev.key === "Escape")) {
32
+ this.hide();
33
+ }
34
+ });
35
+ }
36
+ /**
37
+ * Show a new "right-click" menu at the position of the given mouse event,
38
+ * containing the given menu contents.
39
+ *
40
+ * This function handles stopping the mouse event propagation and aiting for any previous menus
41
+ * to be cleared.
42
+ * @param ev
43
+ * @param menuContents
44
+ */
45
+ show(ev, menuContents, options) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ ev === null || ev === void 0 ? void 0 : ev.stopPropagation();
48
+ if (this.isOpen) {
49
+ this.hide();
50
+ }
51
+ yield new Promise((resolve, reject) => {
52
+ setTimeout(() => resolve(), 0);
53
+ });
54
+ const menuVnode = m(Menu, {
55
+ x: ev === null || ev === void 0 ? void 0 : ev.clientX,
56
+ y: MENU_SETTINGS.ANCHOR === "page" ? ev === null || ev === void 0 ? void 0 : ev.pageY : ev === null || ev === void 0 ? void 0 : ev.clientY,
57
+ options,
58
+ }, [
59
+ menuContents,
60
+ ]);
61
+ this._menuVnode.next(menuVnode);
62
+ m.render(this.containerEl, menuVnode);
63
+ // console.log("Added menu");
64
+ });
65
+ }
66
+ hide() {
67
+ this._menuVnode.next(undefined);
68
+ m.render(this.containerEl, []);
69
+ // console.log("Closed menu");
70
+ }
71
+ }
72
+ export const menuMgr = new MenuManager();
@@ -0,0 +1,9 @@
1
+ export declare const MENU_SETTINGS: {
2
+ ANCHOR: "page" | "screen";
3
+ MENU_CLASS: string;
4
+ MENU_BUTTON_CLASS: string;
5
+ MENU_BUTTON_LABEL_CLASS: string;
6
+ MENU_BUTTON_ICON_CLASS: string;
7
+ MENU_BUTTON_HINT_CLASS: string;
8
+ MENU_SEPARATOR_CLASS: string;
9
+ };
@@ -0,0 +1,9 @@
1
+ export const MENU_SETTINGS = {
2
+ ANCHOR: "page",
3
+ MENU_CLASS: "",
4
+ MENU_BUTTON_CLASS: "",
5
+ MENU_BUTTON_LABEL_CLASS: "",
6
+ MENU_BUTTON_ICON_CLASS: "",
7
+ MENU_BUTTON_HINT_CLASS: "",
8
+ MENU_SEPARATOR_CLASS: "",
9
+ };
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,40 @@
1
+ import m from "mithril";
2
+ export type PaginationLayout = "left" | "middle" | "right";
3
+ export interface PaginationAttrs {
4
+ /** The start of the range currently being displayed */
5
+ from: number;
6
+ /** The end of the range currently being displayed */
7
+ to: number;
8
+ /** The total number of all records available for display */
9
+ of: number;
10
+ /** Optionally override the "x-y of z" message, or disable it entirely with `false` */
11
+ xToYOfZ?: string | m.Vnode<any, any> | false;
12
+ /** Called when clicking the "next" button. The button is not displayed if this function is undefined. */
13
+ next?: (ev: MouseEvent) => any;
14
+ /** Called when clicking the "prev" button. The button is not displayed if this function is undefined. */
15
+ prev?: (ev: MouseEvent) => any;
16
+ /** Called when clicking the "first" button. The button is not displayed if this function is undefined. */
17
+ first?: (ev: MouseEvent) => any;
18
+ /** Called when clicking the "last" button. The button is not displayed if this function is undefined. */
19
+ last?: (ev: MouseEvent) => any;
20
+ /** Indicate the user is at the start of the data */
21
+ isAtStart?: boolean;
22
+ /** Indicate the user is at the end of the data */
23
+ isAtEnd?: boolean;
24
+ /** Override how the pagination should float along the row */
25
+ layout?: PaginationLayout;
26
+ /** Enable display and selection of page sizes */
27
+ size?: {
28
+ /** The current size of the page */
29
+ size: number;
30
+ /** Function called when a new page size is selected */
31
+ onselect: (size: number) => any;
32
+ /** Override the default list of available sizes to choose from */
33
+ sizes?: number[];
34
+ };
35
+ /** CSS classes to apply to the row container element */
36
+ class?: string;
37
+ /** CSS styles to apply to the row container element */
38
+ style?: string;
39
+ }
40
+ export declare const Pagination: m.Component<PaginationAttrs>;