@omegagrid/core 0.10.2 → 0.10.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 (317) hide show
  1. package/dist/common/actions.d.ts +16 -0
  2. package/dist/common/actions.d.ts.map +1 -0
  3. package/dist/common/actions.js +14 -0
  4. package/dist/common/actions.js.map +1 -0
  5. package/dist/common/colors.d.ts +39 -0
  6. package/dist/common/colors.d.ts.map +1 -0
  7. package/dist/common/colors.js +59 -0
  8. package/dist/common/colors.js.map +1 -0
  9. package/dist/common/csv.d.ts +23 -0
  10. package/dist/common/csv.d.ts.map +1 -0
  11. package/dist/common/csv.js +93 -0
  12. package/dist/common/csv.js.map +1 -0
  13. package/dist/common/dates.d.ts +32 -0
  14. package/dist/common/dates.d.ts.map +1 -0
  15. package/dist/common/dates.js +172 -0
  16. package/dist/common/dates.js.map +1 -0
  17. package/dist/common/device.d.ts +2 -0
  18. package/dist/common/device.d.ts.map +1 -0
  19. package/dist/common/device.js +13 -0
  20. package/dist/common/device.js.map +1 -0
  21. package/dist/common/dom.d.ts +90 -0
  22. package/dist/common/dom.d.ts.map +1 -0
  23. package/dist/common/dom.js +308 -0
  24. package/dist/common/dom.js.map +1 -0
  25. package/dist/common/events.d.ts +15 -0
  26. package/dist/common/events.d.ts.map +1 -0
  27. package/dist/common/events.js +33 -0
  28. package/dist/common/events.js.map +1 -0
  29. package/dist/common/html.d.ts +3 -0
  30. package/dist/common/html.d.ts.map +1 -0
  31. package/dist/common/html.js +25 -0
  32. package/dist/common/html.js.map +1 -0
  33. package/dist/common/index.d.ts +19 -0
  34. package/dist/common/index.d.ts.map +1 -0
  35. package/dist/common/index.js +19 -0
  36. package/dist/common/index.js.map +1 -0
  37. package/dist/common/linkedList.d.ts +24 -0
  38. package/dist/common/linkedList.d.ts.map +1 -0
  39. package/dist/common/linkedList.js +65 -0
  40. package/dist/common/linkedList.js.map +1 -0
  41. package/dist/common/loaders.d.ts +17 -0
  42. package/dist/common/loaders.d.ts.map +1 -0
  43. package/dist/common/loaders.js +54 -0
  44. package/dist/common/loaders.js.map +1 -0
  45. package/dist/common/logger.d.ts +25 -0
  46. package/dist/common/logger.d.ts.map +1 -0
  47. package/dist/common/logger.js +57 -0
  48. package/dist/common/logger.js.map +1 -0
  49. package/dist/common/matrix.d.ts +6 -0
  50. package/dist/common/matrix.d.ts.map +1 -0
  51. package/dist/common/matrix.js +17 -0
  52. package/dist/common/matrix.js.map +1 -0
  53. package/dist/common/numbers.d.ts +26 -0
  54. package/dist/common/numbers.d.ts.map +1 -0
  55. package/dist/common/numbers.js +239 -0
  56. package/dist/common/numbers.js.map +1 -0
  57. package/dist/common/options.d.ts +17 -0
  58. package/dist/common/options.d.ts.map +1 -0
  59. package/dist/common/options.js +29 -0
  60. package/dist/common/options.js.map +1 -0
  61. package/dist/common/paper.d.ts +8 -0
  62. package/dist/common/paper.d.ts.map +1 -0
  63. package/dist/common/paper.js +17 -0
  64. package/dist/common/paper.js.map +1 -0
  65. package/dist/common/shortcutManager.d.ts +17 -0
  66. package/dist/common/shortcutManager.d.ts.map +1 -0
  67. package/dist/common/shortcutManager.js +49 -0
  68. package/dist/common/shortcutManager.js.map +1 -0
  69. package/dist/common/tree.d.ts +87 -0
  70. package/dist/common/tree.d.ts.map +1 -0
  71. package/dist/common/tree.js +204 -0
  72. package/dist/common/tree.js.map +1 -0
  73. package/dist/common/utils.d.ts +30 -0
  74. package/dist/common/utils.d.ts.map +1 -0
  75. package/dist/common/utils.js +136 -0
  76. package/dist/common/utils.js.map +1 -0
  77. package/dist/constants.d.ts +48 -0
  78. package/dist/constants.d.ts.map +1 -0
  79. package/dist/constants.js +24 -0
  80. package/dist/constants.js.map +1 -0
  81. package/dist/index.d.ts +8 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +8 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/model/adapter.d.ts +8 -0
  86. package/dist/model/adapter.d.ts.map +1 -0
  87. package/dist/model/adapter.js +13 -0
  88. package/dist/model/adapter.js.map +1 -0
  89. package/dist/model/component.d.ts +19 -0
  90. package/dist/model/component.d.ts.map +1 -0
  91. package/dist/model/component.js +84 -0
  92. package/dist/model/component.js.map +1 -0
  93. package/dist/model/componentSlice.d.ts +8 -0
  94. package/dist/model/componentSlice.d.ts.map +1 -0
  95. package/dist/model/componentSlice.js +10 -0
  96. package/dist/model/componentSlice.js.map +1 -0
  97. package/dist/model/componentStore.d.ts +12 -0
  98. package/dist/model/componentStore.d.ts.map +1 -0
  99. package/dist/model/componentStore.js +26 -0
  100. package/dist/model/componentStore.js.map +1 -0
  101. package/dist/model/index.d.ts +6 -0
  102. package/dist/model/index.d.ts.map +1 -0
  103. package/dist/model/index.js +6 -0
  104. package/dist/model/index.js.map +1 -0
  105. package/dist/model/plugins.d.ts +13 -0
  106. package/dist/model/plugins.d.ts.map +1 -0
  107. package/dist/model/plugins.js +27 -0
  108. package/dist/model/plugins.js.map +1 -0
  109. package/dist/themes/definitions/tmDark.d.ts +4 -0
  110. package/dist/themes/definitions/tmDark.d.ts.map +1 -0
  111. package/dist/themes/definitions/tmDark.js +83 -0
  112. package/dist/themes/definitions/tmDark.js.map +1 -0
  113. package/dist/themes/definitions/tmLight.d.ts +4 -0
  114. package/dist/themes/definitions/tmLight.d.ts.map +1 -0
  115. package/dist/themes/definitions/tmLight.js +83 -0
  116. package/dist/themes/definitions/tmLight.js.map +1 -0
  117. package/dist/themes/helpers.d.ts +7 -0
  118. package/dist/themes/helpers.d.ts.map +1 -0
  119. package/dist/themes/helpers.js +34 -0
  120. package/dist/themes/helpers.js.map +1 -0
  121. package/dist/themes/index.d.ts +18 -0
  122. package/dist/themes/index.d.ts.map +1 -0
  123. package/dist/themes/index.js +48 -0
  124. package/dist/themes/index.js.map +1 -0
  125. package/dist/themes/mixins.d.ts +10 -0
  126. package/dist/themes/mixins.d.ts.map +1 -0
  127. package/dist/themes/mixins.js +39 -0
  128. package/dist/themes/mixins.js.map +1 -0
  129. package/dist/themes/transformations.d.ts +9 -0
  130. package/dist/themes/transformations.d.ts.map +1 -0
  131. package/dist/themes/transformations.js +48 -0
  132. package/dist/themes/transformations.js.map +1 -0
  133. package/dist/types.d.ts +130 -0
  134. package/dist/types.d.ts.map +1 -0
  135. package/dist/types.js +12 -0
  136. package/dist/types.js.map +1 -0
  137. package/dist/ui/accordion.d.ts +16 -0
  138. package/dist/ui/accordion.d.ts.map +1 -0
  139. package/dist/ui/accordion.js +209 -0
  140. package/dist/ui/accordion.js.map +1 -0
  141. package/dist/ui/alert.d.ts +15 -0
  142. package/dist/ui/alert.d.ts.map +1 -0
  143. package/dist/ui/alert.js +101 -0
  144. package/dist/ui/alert.js.map +1 -0
  145. package/dist/ui/baseElement.d.ts +7 -0
  146. package/dist/ui/baseElement.d.ts.map +1 -0
  147. package/dist/ui/baseElement.js +10 -0
  148. package/dist/ui/baseElement.js.map +1 -0
  149. package/dist/ui/button.d.ts +21 -0
  150. package/dist/ui/button.d.ts.map +1 -0
  151. package/dist/ui/button.js +100 -0
  152. package/dist/ui/button.js.map +1 -0
  153. package/dist/ui/button.style.d.ts +2 -0
  154. package/dist/ui/button.style.d.ts.map +1 -0
  155. package/dist/ui/button.style.js +60 -0
  156. package/dist/ui/button.style.js.map +1 -0
  157. package/dist/ui/checkbox.d.ts +14 -0
  158. package/dist/ui/checkbox.d.ts.map +1 -0
  159. package/dist/ui/checkbox.js +47 -0
  160. package/dist/ui/checkbox.js.map +1 -0
  161. package/dist/ui/close.d.ts +6 -0
  162. package/dist/ui/close.d.ts.map +1 -0
  163. package/dist/ui/close.js +33 -0
  164. package/dist/ui/close.js.map +1 -0
  165. package/dist/ui/colorpicker.d.ts +24 -0
  166. package/dist/ui/colorpicker.d.ts.map +1 -0
  167. package/dist/ui/colorpicker.js +228 -0
  168. package/dist/ui/colorpicker.js.map +1 -0
  169. package/dist/ui/container.d.ts +39 -0
  170. package/dist/ui/container.d.ts.map +1 -0
  171. package/dist/ui/container.js +313 -0
  172. package/dist/ui/container.js.map +1 -0
  173. package/dist/ui/dropdown.d.ts +48 -0
  174. package/dist/ui/dropdown.d.ts.map +1 -0
  175. package/dist/ui/dropdown.js +300 -0
  176. package/dist/ui/dropdown.js.map +1 -0
  177. package/dist/ui/dropdownColorPicker.d.ts +12 -0
  178. package/dist/ui/dropdownColorPicker.d.ts.map +1 -0
  179. package/dist/ui/dropdownColorPicker.js +60 -0
  180. package/dist/ui/dropdownColorPicker.js.map +1 -0
  181. package/dist/ui/dropdownList.d.ts +8 -0
  182. package/dist/ui/dropdownList.d.ts.map +1 -0
  183. package/dist/ui/dropdownList.js +48 -0
  184. package/dist/ui/dropdownList.js.map +1 -0
  185. package/dist/ui/dropdownMenu.d.ts +11 -0
  186. package/dist/ui/dropdownMenu.d.ts.map +1 -0
  187. package/dist/ui/dropdownMenu.js +61 -0
  188. package/dist/ui/dropdownMenu.js.map +1 -0
  189. package/dist/ui/expander.d.ts +28 -0
  190. package/dist/ui/expander.d.ts.map +1 -0
  191. package/dist/ui/expander.js +144 -0
  192. package/dist/ui/expander.js.map +1 -0
  193. package/dist/ui/fileInput.d.ts +24 -0
  194. package/dist/ui/fileInput.d.ts.map +1 -0
  195. package/dist/ui/fileInput.js +130 -0
  196. package/dist/ui/fileInput.js.map +1 -0
  197. package/dist/ui/fileInput.style.d.ts +2 -0
  198. package/dist/ui/fileInput.style.d.ts.map +1 -0
  199. package/dist/ui/fileInput.style.js +73 -0
  200. package/dist/ui/fileInput.style.js.map +1 -0
  201. package/dist/ui/floatingWindow.d.ts +19 -0
  202. package/dist/ui/floatingWindow.d.ts.map +1 -0
  203. package/dist/ui/floatingWindow.js +87 -0
  204. package/dist/ui/floatingWindow.js.map +1 -0
  205. package/dist/ui/icon.d.ts +46 -0
  206. package/dist/ui/icon.d.ts.map +1 -0
  207. package/dist/ui/icon.js +189 -0
  208. package/dist/ui/icon.js.map +1 -0
  209. package/dist/ui/icon.style.d.ts +2 -0
  210. package/dist/ui/icon.style.d.ts.map +1 -0
  211. package/dist/ui/icon.style.js +556 -0
  212. package/dist/ui/icon.style.js.map +1 -0
  213. package/dist/ui/images.d.ts +2 -0
  214. package/dist/ui/images.d.ts.map +1 -0
  215. package/dist/ui/images.js +14 -0
  216. package/dist/ui/images.js.map +1 -0
  217. package/dist/ui/index.d.ts +32 -0
  218. package/dist/ui/index.d.ts.map +1 -0
  219. package/dist/ui/index.js +32 -0
  220. package/dist/ui/index.js.map +1 -0
  221. package/dist/ui/input.d.ts +12 -0
  222. package/dist/ui/input.d.ts.map +1 -0
  223. package/dist/ui/input.js +45 -0
  224. package/dist/ui/input.js.map +1 -0
  225. package/dist/ui/input.style.d.ts +2 -0
  226. package/dist/ui/input.style.d.ts.map +1 -0
  227. package/dist/ui/input.style.js +36 -0
  228. package/dist/ui/input.style.js.map +1 -0
  229. package/dist/ui/label.d.ts +16 -0
  230. package/dist/ui/label.d.ts.map +1 -0
  231. package/dist/ui/label.js +90 -0
  232. package/dist/ui/label.js.map +1 -0
  233. package/dist/ui/list.d.ts +87 -0
  234. package/dist/ui/list.d.ts.map +1 -0
  235. package/dist/ui/list.js +427 -0
  236. package/dist/ui/list.js.map +1 -0
  237. package/dist/ui/list.style.d.ts +2 -0
  238. package/dist/ui/list.style.d.ts.map +1 -0
  239. package/dist/ui/list.style.js +35 -0
  240. package/dist/ui/list.style.js.map +1 -0
  241. package/dist/ui/loader.d.ts +6 -0
  242. package/dist/ui/loader.d.ts.map +1 -0
  243. package/dist/ui/loader.js +25 -0
  244. package/dist/ui/loader.js.map +1 -0
  245. package/dist/ui/menu.d.ts +41 -0
  246. package/dist/ui/menu.d.ts.map +1 -0
  247. package/dist/ui/menu.js +154 -0
  248. package/dist/ui/menu.js.map +1 -0
  249. package/dist/ui/menu.style.d.ts +3 -0
  250. package/dist/ui/menu.style.d.ts.map +1 -0
  251. package/dist/ui/menu.style.js +50 -0
  252. package/dist/ui/menu.style.js.map +1 -0
  253. package/dist/ui/numericInput.d.ts +37 -0
  254. package/dist/ui/numericInput.d.ts.map +1 -0
  255. package/dist/ui/numericInput.js +175 -0
  256. package/dist/ui/numericInput.js.map +1 -0
  257. package/dist/ui/numericInput.style.d.ts +2 -0
  258. package/dist/ui/numericInput.style.d.ts.map +1 -0
  259. package/dist/ui/numericInput.style.js +29 -0
  260. package/dist/ui/numericInput.style.js.map +1 -0
  261. package/dist/ui/overlay.d.ts +17 -0
  262. package/dist/ui/overlay.d.ts.map +1 -0
  263. package/dist/ui/overlay.js +87 -0
  264. package/dist/ui/overlay.js.map +1 -0
  265. package/dist/ui/overlay.style.d.ts +2 -0
  266. package/dist/ui/overlay.style.d.ts.map +1 -0
  267. package/dist/ui/overlay.style.js +46 -0
  268. package/dist/ui/overlay.style.js.map +1 -0
  269. package/dist/ui/panel.d.ts +25 -0
  270. package/dist/ui/panel.d.ts.map +1 -0
  271. package/dist/ui/panel.js +151 -0
  272. package/dist/ui/panel.js.map +1 -0
  273. package/dist/ui/panel.style.d.ts +2 -0
  274. package/dist/ui/panel.style.d.ts.map +1 -0
  275. package/dist/ui/panel.style.js +73 -0
  276. package/dist/ui/panel.style.js.map +1 -0
  277. package/dist/ui/sizer.d.ts +57 -0
  278. package/dist/ui/sizer.d.ts.map +1 -0
  279. package/dist/ui/sizer.js +224 -0
  280. package/dist/ui/sizer.js.map +1 -0
  281. package/dist/ui/slider.d.ts +52 -0
  282. package/dist/ui/slider.d.ts.map +1 -0
  283. package/dist/ui/slider.js +213 -0
  284. package/dist/ui/slider.js.map +1 -0
  285. package/dist/ui/slider.style.d.ts +2 -0
  286. package/dist/ui/slider.style.d.ts.map +1 -0
  287. package/dist/ui/slider.style.js +61 -0
  288. package/dist/ui/slider.style.js.map +1 -0
  289. package/dist/ui/sortableList.d.ts +39 -0
  290. package/dist/ui/sortableList.d.ts.map +1 -0
  291. package/dist/ui/sortableList.js +167 -0
  292. package/dist/ui/sortableList.js.map +1 -0
  293. package/dist/ui/splitContainer.d.ts +52 -0
  294. package/dist/ui/splitContainer.d.ts.map +1 -0
  295. package/dist/ui/splitContainer.js +252 -0
  296. package/dist/ui/splitContainer.js.map +1 -0
  297. package/dist/ui/splitContainer.style.d.ts +2 -0
  298. package/dist/ui/splitContainer.style.d.ts.map +1 -0
  299. package/dist/ui/splitContainer.style.js +62 -0
  300. package/dist/ui/splitContainer.style.js.map +1 -0
  301. package/dist/ui/switch.d.ts +22 -0
  302. package/dist/ui/switch.d.ts.map +1 -0
  303. package/dist/ui/switch.js +83 -0
  304. package/dist/ui/switch.js.map +1 -0
  305. package/dist/ui/switch.style.d.ts +2 -0
  306. package/dist/ui/switch.style.d.ts.map +1 -0
  307. package/dist/ui/switch.style.js +149 -0
  308. package/dist/ui/switch.style.js.map +1 -0
  309. package/dist/ui/tooltip.d.ts +24 -0
  310. package/dist/ui/tooltip.d.ts.map +1 -0
  311. package/dist/ui/tooltip.js +143 -0
  312. package/dist/ui/tooltip.js.map +1 -0
  313. package/dist/ui/tooltip.style.d.ts +2 -0
  314. package/dist/ui/tooltip.style.d.ts.map +1 -0
  315. package/dist/ui/tooltip.style.js +112 -0
  316. package/dist/ui/tooltip.style.js.map +1 -0
  317. package/package.json +2 -2
@@ -0,0 +1,29 @@
1
+ import constants from "../constants";
2
+ import { createDateFormatter, getDateFormat } from "./dates";
3
+ import { getLocalDecimalSeparator } from "./numbers";
4
+ import { mergeDeep } from "./utils";
5
+ import { getLocale, setLocale } from "@omegagrid/localize";
6
+ let defaultOptions = {};
7
+ export const setDefaultOptions = (options) => {
8
+ if (options.locale)
9
+ setLocale(options.locale);
10
+ defaultOptions = options;
11
+ };
12
+ export const getDefaultOptions = () => mergeDeep({
13
+ locale: getLocale(),
14
+ formatLocale: getLocale(),
15
+ dateFormat: getDateFormat(),
16
+ fontSize: constants.FONT_SIZE,
17
+ systemDecimalSeparator: getLocalDecimalSeparator(getLocale()),
18
+ user: {
19
+ id: '0',
20
+ name: 'Anonymous'
21
+ }
22
+ }, defaultOptions);
23
+ export function initOptions(options, origOptions = null) {
24
+ const opts = mergeDeep({}, getDefaultOptions(), origOptions, options);
25
+ opts.dateFormatter = opts.dateFormatter || createDateFormatter(opts.locale, opts.dateFormat);
26
+ //console.log(opts.dateFormatter('31.12.2024', opts.dateFormat));
27
+ return opts;
28
+ }
29
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/common/options.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAA2C,aAAa,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAc3D,IAAI,cAAc,GAAqB,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAyB,EAAE,EAAE;IAC9D,IAAI,OAAO,CAAC,MAAM;QAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,cAAc,GAAG,OAAO,CAAC;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAqB,EAAE,CAAC,SAAS,CAAC;IAClE,MAAM,EAAE,SAAS,EAAE;IACnB,YAAY,EAAE,SAAS,EAAE;IACzB,UAAU,EAAE,aAAa,EAAE;IAC3B,QAAQ,EAAE,SAAS,CAAC,SAAS;IAC7B,sBAAsB,EAAE,wBAAwB,CAAC,SAAS,EAAE,CAAC;IAC7D,IAAI,EAAE;QACL,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;KACjB;CACD,EAAE,cAAc,CAAC,CAAC;AAEnB,MAAM,UAAU,WAAW,CAA6B,OAAW,EAAE,cAAiB,IAAI;IACzF,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,iBAAiB,EAAO,EAAE,WAAW,EAAE,OAAO,CAAM,CAAC;IAChF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7F,iEAAiE;IACjE,OAAO,IAAI,CAAC;AACb,CAAC","sourcesContent":["import constants from \"../constants\";\nimport { DecimalSeparator, User } from \"../types\";\nimport { createDateFormatter, DateFormatString, DateFormatterFunction, getDateFormat } from \"./dates\";\nimport { getLocalDecimalSeparator } from \"./numbers\";\nimport { mergeDeep } from \"./utils\";\nimport { getLocale, setLocale } from \"@omegagrid/localize\";\n\nexport type Options = {\n\t/** formatting, numbers, dates, etc */\n\tformatLocale?: string,\n\t/** translation */\n\tlocale?: string,\n\tdateFormat?: DateFormatString,\n\tdateFormatter?: DateFormatterFunction,\n\tsystemDecimalSeparator?: DecimalSeparator,\n\tfontSize?: number,\n\tuser?: User\n}\n\nlet defaultOptions: Partial<Options> = {};\n\nexport const setDefaultOptions = (options: Partial<Options>) => {\n\tif (options.locale) setLocale(options.locale);\n\tdefaultOptions = options;\n}\n\nexport const getDefaultOptions = (): Partial<Options> => mergeDeep({\n\tlocale: getLocale(),\n\tformatLocale: getLocale(),\n\tdateFormat: getDateFormat(),\n\tfontSize: constants.FONT_SIZE,\n\tsystemDecimalSeparator: getLocalDecimalSeparator(getLocale()),\n\tuser: {\n\t\tid: '0',\n\t\tname: 'Anonymous'\n\t}\n}, defaultOptions);\n\nexport function initOptions<T extends Partial<Options>>(options?: T, origOptions: T = null): T {\n\tconst opts = mergeDeep({}, getDefaultOptions() as T, origOptions, options) as T;\n\topts.dateFormatter = opts.dateFormatter || createDateFormatter(opts.locale, opts.dateFormat);\n\t//console.log(opts.dateFormatter('31.12.2024', opts.dateFormat));\n\treturn opts;\n}"]}
@@ -0,0 +1,8 @@
1
+ export type PaperType = 'Letter' | 'Tabloid' | 'Legal' | 'Executive' | 'A3' | 'A4' | 'A5' | 'A6' | 'B4' | 'B5' | 'Folio' | 'Envelope' | 'Monarch';
2
+ export type PaperSize = {
3
+ width: number;
4
+ height: number;
5
+ };
6
+ /** paper sizes in mm */
7
+ export declare const PAPER_SIZES: Record<PaperType, PaperSize>;
8
+ //# sourceMappingURL=paper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper.d.ts","sourceRoot":"","sources":["../../src/common/paper.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAC,SAAS,GAAC,OAAO,GAAC,WAAW,GAAC,IAAI,GAAC,IAAI,GAAC,IAAI,GAAC,IAAI,GAAC,IAAI,GAAC,IAAI,GAAC,OAAO,GAAC,UAAU,GAAC,SAAS,CAAC;AAC1H,MAAM,MAAM,SAAS,GAAG;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAC;AAExD,wBAAwB;AACxB,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAcpD,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** paper sizes in mm */
2
+ export const PAPER_SIZES = {
3
+ Letter: { width: 215.9, height: 279.4 },
4
+ Tabloid: { width: 279.4, height: 431.8 },
5
+ Legal: { width: 215.9, height: 355.6 },
6
+ Executive: { width: 184.15, height: 266.7 },
7
+ A3: { width: 297, height: 420 },
8
+ A4: { width: 210, height: 297 },
9
+ A5: { width: 148, height: 210 },
10
+ A6: { width: 105, height: 148 },
11
+ B4: { width: 250, height: 353 },
12
+ B5: { width: 176, height: 250 },
13
+ Folio: { width: 215.9, height: 330.2 },
14
+ Envelope: { width: 104.8, height: 241.3 },
15
+ Monarch: { width: 98.4, height: 190.5 }
16
+ };
17
+ //# sourceMappingURL=paper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper.js","sourceRoot":"","sources":["../../src/common/paper.ts"],"names":[],"mappings":"AAGA,wBAAwB;AACxB,MAAM,CAAC,MAAM,WAAW,GAAiC;IACxD,MAAM,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC;IACrC,OAAO,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC;IACtC,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC;IACpC,SAAS,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC;IACzC,EAAE,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;IAC7B,EAAE,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;IAC7B,EAAE,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;IAC7B,EAAE,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;IAC7B,EAAE,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;IAC7B,EAAE,EAAE,EAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC;IAC7B,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC;IACpC,QAAQ,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC;IACvC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAC;CACrC,CAAC","sourcesContent":["export type PaperType = 'Letter'|'Tabloid'|'Legal'|'Executive'|'A3'|'A4'|'A5'|'A6'|'B4'|'B5'|'Folio'|'Envelope'|'Monarch';\nexport type PaperSize = {width: number, height: number};\n\n/** paper sizes in mm */\nexport const PAPER_SIZES: Record<PaperType, PaperSize> = {\n\tLetter: {width: 215.9, height: 279.4},\n\tTabloid: {width: 279.4, height: 431.8},\n\tLegal: {width: 215.9, height: 355.6},\n\tExecutive: {width: 184.15, height: 266.7},\n\tA3: {width: 297, height: 420},\n\tA4: {width: 210, height: 297},\n\tA5: {width: 148, height: 210},\n\tA6: {width: 105, height: 148},\n\tB4: {width: 250, height: 353},\n\tB5: {width: 176, height: 250},\n\tFolio: {width: 215.9, height: 330.2},\n\tEnvelope: {width: 104.8, height: 241.3},\n\tMonarch: {width: 98.4, height: 190.5}\n};\n"]}
@@ -0,0 +1,17 @@
1
+ export declare class ShortcutEvent extends Event {
2
+ readonly shortcut: string;
3
+ readonly action: string;
4
+ constructor(shortcut: string, action: string);
5
+ }
6
+ export declare class ShortcutManager extends EventTarget {
7
+ readonly target: HTMLElement;
8
+ private shortcuts;
9
+ private stack;
10
+ constructor(target: HTMLElement);
11
+ matchStack(): string;
12
+ private _onKeyUp;
13
+ private _onKeyDown;
14
+ reset(): void;
15
+ register(shortcut: string, action: string): void;
16
+ }
17
+ //# sourceMappingURL=shortcutManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcutManager.d.ts","sourceRoot":"","sources":["../../src/common/shortcutManager.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAMD,qBAAa,eAAgB,SAAQ,WAAW;IAInC,QAAQ,CAAC,MAAM,EAAE,WAAW;IAHxC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,KAAK,CAAqB;gBAEb,MAAM,EAAE,WAAW;IAMxC,UAAU;IAKV,OAAO,CAAC,QAAQ,CAEf;IAED,OAAO,CAAC,UAAU,CAejB;IAED,KAAK;IAIL,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKzC"}
@@ -0,0 +1,49 @@
1
+ export class ShortcutEvent extends Event {
2
+ constructor(shortcut, action) {
3
+ super('shortcut', { cancelable: true });
4
+ this.shortcut = shortcut;
5
+ this.action = action;
6
+ }
7
+ }
8
+ const keyMap = {
9
+ 'control': 'ctrl',
10
+ };
11
+ export class ShortcutManager extends EventTarget {
12
+ constructor(target) {
13
+ super();
14
+ this.target = target;
15
+ this.shortcuts = new Map();
16
+ this.stack = new Set();
17
+ this._onKeyUp = () => {
18
+ this.reset();
19
+ };
20
+ this._onKeyDown = (e) => {
21
+ let key = e.key.toLowerCase();
22
+ if (key in keyMap)
23
+ key = keyMap[key];
24
+ if (this.stack.has(key))
25
+ return;
26
+ this.stack.add(key);
27
+ const shortcut = this.matchStack();
28
+ if (shortcut == null)
29
+ return;
30
+ e.preventDefault();
31
+ e.stopImmediatePropagation();
32
+ this.reset();
33
+ this.dispatchEvent(new ShortcutEvent(shortcut, this.shortcuts.get(shortcut)));
34
+ };
35
+ target.addEventListener('keydown', this._onKeyDown);
36
+ target.addEventListener('keyup', this._onKeyUp);
37
+ }
38
+ matchStack() {
39
+ const shortcut = [...this.stack.values()].join('+').toLowerCase();
40
+ return this.shortcuts.has(shortcut) ? shortcut : null;
41
+ }
42
+ reset() {
43
+ this.stack.clear();
44
+ }
45
+ register(shortcut, action) {
46
+ this.shortcuts.set(shortcut.toLowerCase(), action);
47
+ }
48
+ }
49
+ //# sourceMappingURL=shortcutManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shortcutManager.js","sourceRoot":"","sources":["../../src/common/shortcutManager.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAIvC,YAAY,QAAgB,EAAE,MAAc;QAC3C,KAAK,CAAC,UAAU,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;CACD;AAED,MAAM,MAAM,GAA2B;IACtC,SAAS,EAAE,MAAM;CACjB,CAAA;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAI/C,YAAqB,MAAmB;QACvC,KAAK,EAAE,CAAC;QADY,WAAM,GAAN,MAAM,CAAa;QAHhC,cAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,UAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAa1B,aAAQ,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAA;QAEO,eAAU,GAAG,CAAC,CAAgB,EAAE,EAAE;YACzC,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,GAAG,IAAI,MAAM;gBAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,QAAQ,IAAI,IAAI;gBAAE,OAAO;YAE7B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,wBAAwB,EAAE,CAAC;YAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAA;QA5BA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,UAAU;QACT,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAuBD,KAAK;QACJ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,QAAgB,EAAE,MAAc;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CAGD","sourcesContent":["export class ShortcutEvent extends Event {\n\treadonly shortcut: string;\n\treadonly action: string;\n\t\n\tconstructor(shortcut: string, action: string) {\n\t\tsuper('shortcut', {cancelable: true});\n\t\tthis.shortcut = shortcut;\n\t\tthis.action = action;\n\t}\n}\n\nconst keyMap: Record<string, string> = {\n\t'control': 'ctrl',\n}\n\nexport class ShortcutManager extends EventTarget {\n\tprivate shortcuts = new Map<string, string>();\n\tprivate stack = new Set<string>();\n\n\tconstructor(readonly target: HTMLElement) {\n\t\tsuper();\n\t\ttarget.addEventListener('keydown', this._onKeyDown);\n\t\ttarget.addEventListener('keyup', this._onKeyUp);\n\t}\n\n\tmatchStack() {\n\t\tconst shortcut = [...this.stack.values()].join('+').toLowerCase();\n\t\treturn this.shortcuts.has(shortcut) ? shortcut : null;\n\t}\n\t\n\tprivate _onKeyUp = () => {\n\t\tthis.reset();\n\t}\n\n\tprivate _onKeyDown = (e: KeyboardEvent) => {\n\t\tlet key = e.key.toLowerCase();\n\t\tif (key in keyMap) key = keyMap[key];\n\n\t\tif (this.stack.has(key)) return;\n\t\tthis.stack.add(key);\n\n\t\tconst shortcut = this.matchStack();\n\t\tif (shortcut == null) return;\n\t\t\n\t\te.preventDefault();\n\t\te.stopImmediatePropagation();\n\n\t\tthis.reset();\n\t\tthis.dispatchEvent(new ShortcutEvent(shortcut, this.shortcuts.get(shortcut)));\n\t}\n\n\treset() {\n\t\tthis.stack.clear();\n\t}\n\n\tregister(shortcut: string, action: string) {\n\t\tthis.shortcuts.set(shortcut.toLowerCase(), action);\n\t}\n\n\t\n}"]}
@@ -0,0 +1,87 @@
1
+ import { Populatable, Mixin } from "../types";
2
+ export declare enum FilterState {
3
+ Filtered = 0,
4
+ Matched = 1,
5
+ ChildMatched = 2,
6
+ ParentMatched = 3
7
+ }
8
+ /** Source object type for tree node */
9
+ export type TreeNodeSource = {
10
+ /** node index (readonly) */
11
+ i?: number;
12
+ /** node level */
13
+ l?: number;
14
+ /** node level */
15
+ level?: number;
16
+ /** parent index */
17
+ p?: number;
18
+ /** children count */
19
+ count?: number;
20
+ /** initital collapse state */
21
+ collapsed?: boolean;
22
+ /** node visibility */
23
+ hidden?: boolean;
24
+ /** false for excluding node from sorting, default = true */
25
+ sortable?: boolean;
26
+ /** false for excluding node from filtering, default = true */
27
+ filterable?: boolean;
28
+ };
29
+ export type Constructor<A = Populatable> = new (...input: any[]) => A;
30
+ export declare function TreeNodeMixin<TBase extends Constructor>(Base?: TBase): {
31
+ new (...input: any[]): {
32
+ index: number;
33
+ parentIndex: number;
34
+ level: number;
35
+ visibleIndex: number;
36
+ _children: /*elided*/ any[];
37
+ _count: number;
38
+ _parent: /*elided*/ any;
39
+ _collapsed: boolean;
40
+ _hidden: boolean;
41
+ _filterState: FilterState;
42
+ _filterable: boolean;
43
+ _sortable: boolean;
44
+ populate(source: TreeNodeSource): void;
45
+ getSourceData(): TreeNodeSource;
46
+ get filterable(): boolean;
47
+ get sortable(): boolean;
48
+ get filterState(): FilterState;
49
+ set filterState(v: FilterState);
50
+ get hidden(): boolean;
51
+ set hidden(value: boolean);
52
+ get visible(): boolean;
53
+ get collapsed(): boolean;
54
+ set collapsed(value: boolean);
55
+ get parent(): /*elided*/ any;
56
+ set parent(parent: /*elided*/ any);
57
+ get children(): /*elided*/ any[];
58
+ set children(value: /*elided*/ any[]);
59
+ get hasChildren(): boolean;
60
+ set count(value: number);
61
+ get isLoaded(): boolean;
62
+ get isPartialyLoaded(): boolean;
63
+ get hasParent(): boolean;
64
+ get firstChild(): /*elided*/ any;
65
+ get lastChild(): /*elided*/ any;
66
+ addChild(child: /*elided*/ any): void;
67
+ insertChildren(children: /*elided*/ any[], index: number): void;
68
+ deleteChildren(index: number | /*elided*/ any[], count?: number): void;
69
+ expand(unhide?: boolean): void;
70
+ collapse(): void;
71
+ toggleCollapse(recursive?: boolean, unhide?: boolean): void;
72
+ clearChildren(): void;
73
+ walk(cb: (m: /*elided*/ any) => unknown | void): void;
74
+ walkVisible(cb: (m: /*elided*/ any) => unknown | void): void;
75
+ walkUp(cb: (m: /*elided*/ any) => unknown | void): void;
76
+ _sort(comparer: (a: /*elided*/ any, b: /*elided*/ any) => number): void;
77
+ sort(comparer: (a: /*elided*/ any, b: /*elided*/ any) => number): void;
78
+ };
79
+ } & TBase;
80
+ export type TreeNodeType = Mixin<typeof TreeNodeMixin>;
81
+ export type LevelBasedTreeCreateOptions = {
82
+ reverse?: boolean;
83
+ };
84
+ export declare function buildLevelBasedTree(nodes: TreeNodeType[], root: TreeNodeType, options?: LevelBasedTreeCreateOptions): number;
85
+ export declare function buildParentBasedTree(nodes: TreeNodeType[], root: TreeNodeType): number;
86
+ export declare function buildTree(nodes: TreeNodeType[], root: TreeNodeType): number;
87
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/common/tree.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE9C,oBAAY,WAAW;IACtB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,YAAY,IAAI;IAChB,aAAa,IAAI;CACjB;AAED,uCAAuC;AACvC,MAAM,MAAM,cAAc,GAAG;IAC5B,4BAA4B;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB,CAAA;AAOD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,WAAW,IAAI,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEtE,wBAAgB,aAAa,CAAC,KAAK,SAAS,WAAW,EAAE,IAAI,GAAE,KAA6B;mBAFlC,GAAG,EAAE;eAKtD,MAAM;qBACA,MAAM;eACZ,MAAM;sBACC,MAAM;mBAET,gBAAU;gBACb,MAAM;;oBAEF,OAAO;iBACV,OAAO;sBACF,WAAW;qBACZ,OAAO;mBACT,OAAO;yBAED,cAAc;;;;2BAuBX,WAAW;2BAAX,WAAW;sBAEb,OAAO;0BAAP,OAAO;;yBAGJ,OAAO;6BAAP,OAAO;;;wBAGR,gBAAU;4BAAV,gBAAU;;yBAMZ,MAAM;;;;;;;iCAcC,gBAAU,SAAS,MAAM;8BAS5B,MAAM,GAAC,gBAAU,UAAU,MAAM;wBAgBvC,OAAO;;qDAQoB,OAAO;;iBAiBzC,CAAC,CAAC,gBAAU,KAAK,OAAO,GAAC,IAAI;wBAMtB,CAAC,CAAC,gBAAU,KAAK,OAAO,GAAC,IAAI;mBAUlC,CAAC,CAAC,gBAAU,KAAK,OAAO,GAAC,IAAI;wBAMxB,CAAC,CAAC,gBAAU,EAAE,CAAC,gBAAU,KAAK,MAAM;uBAOrC,CAAC,CAAC,gBAAU,EAAE,CAAC,gBAAU,KAAK,MAAM;;UAMpD;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEvD,MAAM,MAAM,2BAA2B,GAAG;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAA;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,YAAY,EAAE,EACrB,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,2BAA2B,GACnC,MAAM,CA2BR;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAUtF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAS3E"}
@@ -0,0 +1,204 @@
1
+ export var FilterState;
2
+ (function (FilterState) {
3
+ FilterState[FilterState["Filtered"] = 0] = "Filtered";
4
+ FilterState[FilterState["Matched"] = 1] = "Matched";
5
+ FilterState[FilterState["ChildMatched"] = 2] = "ChildMatched";
6
+ FilterState[FilterState["ParentMatched"] = 3] = "ParentMatched";
7
+ })(FilterState || (FilterState = {}));
8
+ class TreeNodeBase {
9
+ populate(_source) { }
10
+ getSourceData() { return {}; }
11
+ }
12
+ export function TreeNodeMixin(Base = TreeNodeBase) {
13
+ return class TreeNode extends Base {
14
+ constructor() {
15
+ super(...arguments);
16
+ this._children = [];
17
+ this._filterState = FilterState.Matched;
18
+ }
19
+ populate(source) {
20
+ super.populate(source);
21
+ if (!isNaN(source.i))
22
+ this.index = source.i;
23
+ this.level = source.level || source.l || 0;
24
+ this.parentIndex = source.p;
25
+ this._count = source.count;
26
+ this._hidden = source.hidden;
27
+ this._filterable = source.filterable;
28
+ this._sortable = source.sortable;
29
+ if (source.collapsed || source.count)
30
+ this._collapsed = true;
31
+ }
32
+ getSourceData() {
33
+ const data = super.getSourceData();
34
+ if (this.level > 0)
35
+ data.l = this.level;
36
+ if (this.parentIndex != null)
37
+ data.p = this.parentIndex;
38
+ if (this._collapsed != null)
39
+ data.collapsed = this._collapsed;
40
+ return data;
41
+ }
42
+ get filterable() { return this._filterable !== false; }
43
+ get sortable() { return this._sortable !== false; }
44
+ get filterState() { return this._filterState; }
45
+ set filterState(v) { this._filterState = v; }
46
+ get hidden() { return this._hidden; }
47
+ set hidden(value) { this._hidden = value; }
48
+ get visible() { return !this.hidden && this.filterState > 0; }
49
+ get collapsed() { return this._collapsed; }
50
+ set collapsed(value) { this._collapsed = value; }
51
+ set parent(parent) { this._parent = parent; }
52
+ get parent() { return this._parent; }
53
+ set children(value) {
54
+ this._children = value;
55
+ this._count = Math.max(this._count || 0, this._children.length);
56
+ }
57
+ get children() { return this._children; }
58
+ get hasChildren() { return this._children.length > 0 || this._count > 0; }
59
+ set count(value) { this._count = value; }
60
+ get isLoaded() { return this._count == null || this._count <= this._children.length; }
61
+ get isPartialyLoaded() { return this._children.length > 0 && this._count > this._children.length; }
62
+ get hasParent() { return this.parent ? this.parent.level > -1 : false; }
63
+ get firstChild() { return this.children[0]; }
64
+ get lastChild() { return this.children[this.children.length - 1]; }
65
+ addChild(child) {
66
+ this._children.push(child);
67
+ child.parent = this;
68
+ child.level = this.level + 1;
69
+ this._count = Math.max(this._count || 0, this._children.length);
70
+ }
71
+ insertChildren(children, index) {
72
+ this._children.splice(index, 0, ...children);
73
+ children.forEach(n => {
74
+ n.parent = this;
75
+ n.level = this.level + 1;
76
+ });
77
+ this._count = Math.max(this._count || 0, this._children.length);
78
+ }
79
+ deleteChildren(index, count) {
80
+ if (Array.isArray(index)) {
81
+ const stack = new Set();
82
+ index.forEach(ch => {
83
+ ch.parent = null;
84
+ stack.add(ch);
85
+ });
86
+ this._children = this._children.filter(ch => !stack.has(ch));
87
+ this._count -= index.length;
88
+ }
89
+ else {
90
+ count = count || 1;
91
+ this._children.splice(index, count);
92
+ this._count -= count;
93
+ }
94
+ }
95
+ expand(unhide) {
96
+ this._collapsed = false;
97
+ if (unhide && this.hasChildren) {
98
+ this.walk(ch => ch.hidden = false);
99
+ }
100
+ }
101
+ collapse() { this._collapsed = true; }
102
+ toggleCollapse(recursive = false, unhide) {
103
+ const expand = this._collapsed;
104
+ if (expand)
105
+ this.expand(unhide);
106
+ else
107
+ this.collapse();
108
+ if (recursive) {
109
+ if (expand)
110
+ this.walk(ch => ch.expand(unhide));
111
+ else
112
+ this.walk(ch => ch.collapse());
113
+ }
114
+ }
115
+ clearChildren() {
116
+ this._children.forEach(ch => ch.parent = null);
117
+ this._children = [];
118
+ this._count = null;
119
+ }
120
+ walk(cb) {
121
+ this._children.forEach(ch => {
122
+ if (cb(ch) !== false)
123
+ ch.walk(cb);
124
+ });
125
+ }
126
+ walkVisible(cb) {
127
+ this._children.forEach(ch => {
128
+ if (ch.visible) {
129
+ if (cb(ch) !== false && !ch.collapsed)
130
+ ch.walkVisible(cb);
131
+ }
132
+ else {
133
+ ch.walkVisible(cb);
134
+ }
135
+ });
136
+ }
137
+ walkUp(cb) {
138
+ if (this._parent) {
139
+ if (cb(this._parent) !== false)
140
+ this._parent.walkUp(cb);
141
+ }
142
+ }
143
+ _sort(comparer) {
144
+ if (this.hasChildren) {
145
+ this._children.sort(comparer);
146
+ this._children.forEach(ch => ch._sort(comparer));
147
+ }
148
+ }
149
+ sort(comparer) {
150
+ // use physical index for sorting if one or both nodes are not sortable
151
+ this._sort((a, b) => a.sortable && b.sortable ? comparer(a, b) : (a.index - b.index));
152
+ }
153
+ };
154
+ }
155
+ export function buildLevelBasedTree(nodes, root, options) {
156
+ // [node, originalLevel]
157
+ // levels are beeing normalized, so it is necessary to remember the original level during tree building
158
+ const parents = [[root, -1]];
159
+ let prev;
160
+ let prevLevel = -1;
161
+ let maxLevel = -1;
162
+ let nodeLevel = 0;
163
+ if (options?.reverse)
164
+ nodes = [...nodes].reverse();
165
+ root._children = [];
166
+ root._parent = null;
167
+ nodes.forEach(node => {
168
+ node._children = [];
169
+ node._parent = null;
170
+ nodeLevel = node.level + root.level + 1;
171
+ if (prev && prevLevel < nodeLevel)
172
+ parents.push([prev, prevLevel]);
173
+ while (parents[parents.length - 1][1] >= nodeLevel)
174
+ parents.pop();
175
+ prevLevel = nodeLevel;
176
+ parents[parents.length - 1][0].addChild(node);
177
+ maxLevel = Math.max(maxLevel, node.level + (node.hasChildren ? 1 : 0));
178
+ prev = node;
179
+ });
180
+ return maxLevel;
181
+ }
182
+ export function buildParentBasedTree(nodes, root) {
183
+ let maxLevel = -1;
184
+ nodes.forEach(node => {
185
+ (node.parentIndex == null ? root : nodes[node.parentIndex]).addChild(node);
186
+ });
187
+ root.walk(node => {
188
+ node.level = node.parent ? node.parent.level + 1 : 0;
189
+ maxLevel = Math.max(maxLevel, node.level);
190
+ });
191
+ return maxLevel;
192
+ }
193
+ export function buildTree(nodes, root) {
194
+ if (nodes.length > 0) {
195
+ if (nodes[0].level == null) {
196
+ return buildParentBasedTree(nodes, root);
197
+ }
198
+ else {
199
+ return buildLevelBasedTree(nodes, root);
200
+ }
201
+ }
202
+ return -1;
203
+ }
204
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/common/tree.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Populatable, Mixin } from \"../types\";\n\nexport enum FilterState {\n\tFiltered = 0,\n\tMatched = 1,\n\tChildMatched = 2,\n\tParentMatched = 3\n}\n\n/** Source object type for tree node */\nexport type TreeNodeSource = {\n\t/** node index (readonly) */\n\ti?: number,\n\t/** node level */\n\tl?: number,\n\t/** node level */\n\tlevel?: number,\n\t/** parent index */\n\tp?: number,\n\t/** children count */\n\tcount?: number,\n\t/** initital collapse state */\n\tcollapsed?: boolean,\n\t/** node visibility */\n\thidden?: boolean,\n\t/** false for excluding node from sorting, default = true */\n\tsortable?: boolean,\n\t/** false for excluding node from filtering, default = true */\n\tfilterable?: boolean,\n}\n\nclass TreeNodeBase implements Populatable {\n\tpopulate(_source: TreeNodeSource) { /* empty */ }\n\tgetSourceData(): TreeNodeSource { return {} }\n}\n\nexport type Constructor<A = Populatable> = new (...input: any[]) => A;\n\nexport function TreeNodeMixin<TBase extends Constructor>(Base: TBase = TreeNodeBase as TBase) {\n\treturn class TreeNode extends Base {\n\n\t\tindex: number;\n\t\tparentIndex: number;\n\t\tlevel: number;\n\t\tvisibleIndex: number;\n\n\t\t_children: TreeNode[] = [];\n\t\t_count: number;\n\t\t_parent: TreeNode;\n\t\t_collapsed: boolean;\n\t\t_hidden: boolean;\n\t\t_filterState: FilterState = FilterState.Matched;\n\t\t_filterable: boolean;\n\t\t_sortable: boolean;\n\n\t\tpopulate(source: TreeNodeSource) {\n\t\t\tsuper.populate(source);\n\t\t\tif (!isNaN(source.i)) this.index = source.i;\n\t\t\tthis.level = source.level || source.l || 0;\n\t\t\tthis.parentIndex = source.p;\n\t\t\tthis._count = source.count;\n\t\t\tthis._hidden = source.hidden;\n\t\t\tthis._filterable = source.filterable;\n\t\t\tthis._sortable = source.sortable;\n\t\t\tif (source.collapsed || source.count) this._collapsed = true;\n\t\t}\n\n\t\tgetSourceData() {\n\t\t\tconst data = super.getSourceData() as TreeNodeSource;\n\t\t\tif (this.level > 0) data.l = this.level;\n\t\t\tif (this.parentIndex != null) data.p = this.parentIndex;\n\t\t\tif (this._collapsed != null) data.collapsed = this._collapsed;\n\t\t\treturn data;\n\t\t}\n\n\t\tget filterable() { return this._filterable !== false }\n\t\tget sortable() { return this._sortable !== false }\n\t\tget filterState() { return this._filterState }\n\t\tset filterState(v : FilterState) { this._filterState = v }\n\t\tget hidden() { return this._hidden }\n\t\tset hidden(value: boolean) { this._hidden = value }\n\t\tget visible() { return !this.hidden && this.filterState > 0 }\n\t\tget collapsed() { return this._collapsed }\n\t\tset collapsed(value: boolean) { this._collapsed = value }\n\t\tset parent(parent: TreeNode) { this._parent = parent }\n\t\tget parent() { return this._parent }\n\t\tset children(value: TreeNode[]) { \n\t\t\tthis._children = value;\n\t\t\tthis._count = Math.max(this._count || 0, this._children.length);\n\t\t}\n\t\tget children() { return this._children }\n\t\tget hasChildren() { return this._children.length > 0 || this._count > 0 }\n\t\tset count (value: number) { this._count = value }\n\t\tget isLoaded() { return this._count == null || this._count <= this._children.length }\n\t\tget isPartialyLoaded() { return this._children.length > 0 && this._count > this._children.length }\n\t\tget hasParent() { return this.parent ? this.parent.level > -1 : false }\n\t\tget firstChild() { return this.children[0] }\n\t\tget lastChild() { return this.children[this.children.length - 1] }\n\n\t\taddChild(child: TreeNode) {\n\t\t\tthis._children.push(child);\n\t\t\tchild.parent = this;\n\t\t\tchild.level = this.level + 1;\n\t\t\tthis._count = Math.max(this._count || 0, this._children.length);\n\t\t}\n\n\t\tinsertChildren(children: TreeNode[], index: number) {\n\t\t\tthis._children.splice(index, 0, ...children);\n\t\t\tchildren.forEach(n => {\n\t\t\t\tn.parent = this;\n\t\t\t\tn.level = this.level + 1\n\t\t\t});\n\t\t\tthis._count = Math.max(this._count || 0, this._children.length);\n\t\t}\n\n\t\tdeleteChildren(index: number|TreeNode[], count?: number) {\n\t\t\tif (Array.isArray(index)) {\n\t\t\t\tconst stack = new Set<TreeNode>();\n\t\t\t\tindex.forEach(ch => {\n\t\t\t\t\tch.parent = null;\n\t\t\t\t\tstack.add(ch);\n\t\t\t\t});\n\t\t\t\tthis._children = this._children.filter(ch => !stack.has(ch));\n\t\t\t\tthis._count -= index.length;\n\t\t\t} else {\n\t\t\t\tcount = count || 1;\n\t\t\t\tthis._children.splice(index as number, count);\n\t\t\t\tthis._count -= count;\n\t\t\t}\n\t\t}\n\n\t\texpand(unhide?: boolean) {\n\t\t\tthis._collapsed = false;\n\t\t\tif (unhide && this.hasChildren) {\n\t\t\t\tthis.walk(ch => ch.hidden = false);\n\t\t\t}\n\t\t}\n\t\tcollapse() { this._collapsed = true }\n\n\t\ttoggleCollapse(recursive = false, unhide?: boolean) {\n\t\t\tconst expand = this._collapsed;\n\t\t\tif (expand) this.expand(unhide);\n\t\t\telse this.collapse();\n\n\t\t\tif (recursive) {\n\t\t\t\tif (expand) this.walk(ch => ch.expand(unhide));\n\t\t\t\telse this.walk(ch => ch.collapse());\n\t\t\t}\n\t\t}\n\n\t\tclearChildren() {\n\t\t\tthis._children.forEach(ch => ch.parent = null);\n\t\t\tthis._children = [];\n\t\t\tthis._count = null;\n\t\t}\n\n\t\twalk(cb: (m: TreeNode) => unknown|void) {\n\t\t\tthis._children.forEach(ch => {\n\t\t\t\tif (cb(ch) !== false) ch.walk(cb);\n\t\t\t});\n\t\t}\n\n\t\twalkVisible(cb: (m: TreeNode) => unknown|void) {\n\t\t\tthis._children.forEach(ch => {\n\t\t\t\tif (ch.visible) {\n\t\t\t\t\tif (cb(ch) !== false && !ch.collapsed) ch.walkVisible(cb);\n\t\t\t\t} else {\n\t\t\t\t\tch.walkVisible(cb);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\twalkUp(cb: (m: TreeNode) => unknown|void) {\n\t\t\tif (this._parent) {\n\t\t\t\tif (cb(this._parent) !== false) this._parent.walkUp(cb);\n\t\t\t}\n\t\t}\n\n\t\t_sort(comparer: (a: TreeNode, b: TreeNode) => number) {\n\t\t\tif (this.hasChildren) {\n\t\t\t\tthis._children.sort(comparer);\n\t\t\t\tthis._children.forEach(ch => ch._sort(comparer));\n\t\t\t}\n\t\t}\n\n\t\tsort(comparer: (a: TreeNode, b: TreeNode) => number) {\n\t\t\t// use physical index for sorting if one or both nodes are not sortable\n\t\t\tthis._sort((a: TreeNode, b: TreeNode) => a.sortable && b.sortable ? comparer(a, b) : (a.index - b.index));\n\t\t}\n\n\t}\n}\n\nexport type TreeNodeType = Mixin<typeof TreeNodeMixin>;\n\nexport type LevelBasedTreeCreateOptions = {\n\treverse?: boolean,\n}\n\nexport function buildLevelBasedTree(\n\tnodes: TreeNodeType[],\n\troot: TreeNodeType,\n\toptions?: LevelBasedTreeCreateOptions\n): number {\n\ttype OriginalLevel = number;\n\t// [node, originalLevel]\n\t// levels are beeing normalized, so it is necessary to remember the original level during tree building\n\tconst parents: [TreeNodeType, OriginalLevel][] = [[root, -1]];\n\tlet prev: TreeNodeType;\n\tlet prevLevel = -1;\n\tlet maxLevel = -1;\n\tlet nodeLevel = 0;\n\n\tif (options?.reverse) nodes = [...nodes].reverse();\n\n\troot._children = [];\n\troot._parent = null;\n\tnodes.forEach(node => {\n\t\tnode._children = [];\n\t\tnode._parent = null;\n\n\t\tnodeLevel = node.level + root.level + 1;\n\t\tif (prev && prevLevel < nodeLevel) parents.push([prev, prevLevel]);\n\t\twhile (parents[parents.length - 1][1] >= nodeLevel) parents.pop();\n\t\tprevLevel = nodeLevel;\n\t\tparents[parents.length - 1][0].addChild(node);\n\t\tmaxLevel = Math.max(maxLevel, node.level + (node.hasChildren ? 1 : 0));\n\t\tprev = node;\n\t});\n\treturn maxLevel;\n}\n\nexport function buildParentBasedTree(nodes: TreeNodeType[], root: TreeNodeType): number {\n\tlet maxLevel = -1;\n\tnodes.forEach(node => {\n\t\t(node.parentIndex == null ? root : nodes[node.parentIndex]).addChild(node);\n\t});\n\troot.walk(node => {\n\t\tnode.level = node.parent ? node.parent.level + 1 : 0;\n\t\tmaxLevel = Math.max(maxLevel, node.level);\n\t});\n\treturn maxLevel;\n}\n\nexport function buildTree(nodes: TreeNodeType[], root: TreeNodeType): number {\n\tif (nodes.length > 0) {\n\t\tif (nodes[0].level == null) {\n\t\t\treturn buildParentBasedTree(nodes, root);\n\t\t} else {\n\t\t\treturn buildLevelBasedTree(nodes, root);\n\t\t}\n\t}\n\treturn -1;\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { Matrix, Rect } from "../types";
2
+ export declare function isBool(value: unknown): value is boolean;
3
+ export declare function isObject(value: unknown): boolean;
4
+ export declare function isFunction(value: unknown): boolean;
5
+ export declare function isString(value: unknown): value is string;
6
+ export declare function isNumericString(value: string): boolean;
7
+ export declare function strToNum(str: string): number;
8
+ export declare function isNumber(value: unknown): value is number;
9
+ export declare function isCharLetter(char: string): boolean;
10
+ export declare function ifNull<T>(value: T | null, def: T): T;
11
+ export declare function mergeDeep<T>(...sources: Partial<T>[]): T;
12
+ export declare function cloneDeep<T>(obj: T): T;
13
+ export declare function clone(obj: any): any;
14
+ export declare function trim(value: string, char: string): string;
15
+ export declare function minmax(values: number[]): [number, number];
16
+ export declare function minmax2d(...values: Matrix<number>[]): [number, number];
17
+ export declare function removeAccents(str: string): string;
18
+ export declare function isControlCharacter(charCode: string): boolean;
19
+ export declare function escapeRegExp(value: string): string;
20
+ export declare function intersect<T>(arr1: T[], arr2: T[]): T[];
21
+ export declare function rectIntersect(r1: Rect, r2: Rect): Rect;
22
+ /**
23
+ * Binds a method to a context and optionally executes a callback with the result.
24
+ * @param {any} context - The context to bind the method to.
25
+ * @param {Function} method - The method to bind.
26
+ * @param {Function} [callback] - Optional callback to execute with the result of the method.
27
+ * @returns {Function} A new function that, when called, will execute the method with the bound context.
28
+ */
29
+ export declare function bind<T extends (...args: any[]) => any>(context: any, method: T, callback?: (result: ReturnType<T>, ...args: Parameters<T>) => void): (...args: Parameters<T>) => ReturnType<T>;
30
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,oBAEpC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,WAEtC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,WAExC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,mBAEtC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,WAW5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,UAEnC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,mBAEtC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,WAExC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAE9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAqBxD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAElC;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,OAE7B;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAK/C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAS1D;AAED,wBAAgB,QAAQ,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CASvE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,UAExC;AAKD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,WAElD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEtD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,CAWtD;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrD,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,CAAC,EACT,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,GAChE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAM3C"}