@omegagrid/grid 0.10.0 → 0.10.2

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 (257) hide show
  1. package/package.json +7 -7
  2. package/dist/commands/editingCommands.d.ts +0 -4
  3. package/dist/commands/editingCommands.d.ts.map +0 -1
  4. package/dist/commands/editingCommands.js +0 -74
  5. package/dist/commands/editingCommands.js.map +0 -1
  6. package/dist/commands/groupCommands.d.ts +0 -8
  7. package/dist/commands/groupCommands.d.ts.map +0 -1
  8. package/dist/commands/groupCommands.js +0 -7
  9. package/dist/commands/groupCommands.js.map +0 -1
  10. package/dist/commands/index.d.ts +0 -4
  11. package/dist/commands/index.d.ts.map +0 -1
  12. package/dist/commands/index.js +0 -9
  13. package/dist/commands/index.js.map +0 -1
  14. package/dist/commands/navigationCommands.d.ts +0 -5
  15. package/dist/commands/navigationCommands.d.ts.map +0 -1
  16. package/dist/commands/navigationCommands.js +0 -117
  17. package/dist/commands/navigationCommands.js.map +0 -1
  18. package/dist/constants.d.ts +0 -65
  19. package/dist/constants.d.ts.map +0 -1
  20. package/dist/constants.js +0 -8
  21. package/dist/constants.js.map +0 -1
  22. package/dist/editors/baseEditor.d.ts +0 -31
  23. package/dist/editors/baseEditor.d.ts.map +0 -1
  24. package/dist/editors/baseEditor.js +0 -112
  25. package/dist/editors/baseEditor.js.map +0 -1
  26. package/dist/editors/calendarEditor.d.ts +0 -12
  27. package/dist/editors/calendarEditor.d.ts.map +0 -1
  28. package/dist/editors/calendarEditor.js +0 -74
  29. package/dist/editors/calendarEditor.js.map +0 -1
  30. package/dist/editors/checkboxEditor.d.ts +0 -9
  31. package/dist/editors/checkboxEditor.d.ts.map +0 -1
  32. package/dist/editors/checkboxEditor.js +0 -32
  33. package/dist/editors/checkboxEditor.js.map +0 -1
  34. package/dist/editors/dateEditor.d.ts +0 -8
  35. package/dist/editors/dateEditor.d.ts.map +0 -1
  36. package/dist/editors/dateEditor.js +0 -37
  37. package/dist/editors/dateEditor.js.map +0 -1
  38. package/dist/editors/dropdownEditor.d.ts +0 -26
  39. package/dist/editors/dropdownEditor.d.ts.map +0 -1
  40. package/dist/editors/dropdownEditor.js +0 -142
  41. package/dist/editors/dropdownEditor.js.map +0 -1
  42. package/dist/editors/formulaEditor.d.ts +0 -21
  43. package/dist/editors/formulaEditor.d.ts.map +0 -1
  44. package/dist/editors/formulaEditor.js +0 -109
  45. package/dist/editors/formulaEditor.js.map +0 -1
  46. package/dist/editors/index.d.ts +0 -8
  47. package/dist/editors/index.d.ts.map +0 -1
  48. package/dist/editors/index.js +0 -19
  49. package/dist/editors/index.js.map +0 -1
  50. package/dist/editors/numberEditor.d.ts +0 -9
  51. package/dist/editors/numberEditor.d.ts.map +0 -1
  52. package/dist/editors/numberEditor.js +0 -37
  53. package/dist/editors/numberEditor.js.map +0 -1
  54. package/dist/editors/textEditor.d.ts +0 -15
  55. package/dist/editors/textEditor.d.ts.map +0 -1
  56. package/dist/editors/textEditor.js +0 -74
  57. package/dist/editors/textEditor.js.map +0 -1
  58. package/dist/filters/NumberFilter.d.ts +0 -8
  59. package/dist/filters/NumberFilter.d.ts.map +0 -1
  60. package/dist/filters/NumberFilter.js +0 -13
  61. package/dist/filters/NumberFilter.js.map +0 -1
  62. package/dist/filters/baseFilter.d.ts +0 -20
  63. package/dist/filters/baseFilter.d.ts.map +0 -1
  64. package/dist/filters/baseFilter.js +0 -47
  65. package/dist/filters/baseFilter.js.map +0 -1
  66. package/dist/filters/checkboxFilter.d.ts +0 -12
  67. package/dist/filters/checkboxFilter.d.ts.map +0 -1
  68. package/dist/filters/checkboxFilter.js +0 -67
  69. package/dist/filters/checkboxFilter.js.map +0 -1
  70. package/dist/filters/dropdownFilter.d.ts +0 -17
  71. package/dist/filters/dropdownFilter.d.ts.map +0 -1
  72. package/dist/filters/dropdownFilter.js +0 -116
  73. package/dist/filters/dropdownFilter.js.map +0 -1
  74. package/dist/filters/filterFactory.d.ts +0 -4
  75. package/dist/filters/filterFactory.d.ts.map +0 -1
  76. package/dist/filters/filterFactory.js +0 -39
  77. package/dist/filters/filterFactory.js.map +0 -1
  78. package/dist/filters/index.d.ts +0 -5
  79. package/dist/filters/index.d.ts.map +0 -1
  80. package/dist/filters/index.js +0 -5
  81. package/dist/filters/index.js.map +0 -1
  82. package/dist/filters/textFilter.d.ts +0 -17
  83. package/dist/filters/textFilter.d.ts.map +0 -1
  84. package/dist/filters/textFilter.js +0 -89
  85. package/dist/filters/textFilter.js.map +0 -1
  86. package/dist/gridAdapter.d.ts +0 -30
  87. package/dist/gridAdapter.d.ts.map +0 -1
  88. package/dist/gridAdapter.js +0 -11
  89. package/dist/gridAdapter.js.map +0 -1
  90. package/dist/i18n/en-us.d.ts +0 -4
  91. package/dist/i18n/en-us.d.ts.map +0 -1
  92. package/dist/i18n/en-us.js +0 -5
  93. package/dist/i18n/en-us.js.map +0 -1
  94. package/dist/i18n/index.d.ts +0 -5
  95. package/dist/i18n/index.d.ts.map +0 -1
  96. package/dist/i18n/index.js +0 -8
  97. package/dist/i18n/index.js.map +0 -1
  98. package/dist/index.d.ts +0 -7
  99. package/dist/index.d.ts.map +0 -1
  100. package/dist/index.js +0 -7
  101. package/dist/index.js.map +0 -1
  102. package/dist/renderers/ActionRenderer.d.ts +0 -3
  103. package/dist/renderers/ActionRenderer.d.ts.map +0 -1
  104. package/dist/renderers/ActionRenderer.js +0 -68
  105. package/dist/renderers/ActionRenderer.js.map +0 -1
  106. package/dist/renderers/BaseRenderer.d.ts +0 -6
  107. package/dist/renderers/BaseRenderer.d.ts.map +0 -1
  108. package/dist/renderers/BaseRenderer.js +0 -56
  109. package/dist/renderers/BaseRenderer.js.map +0 -1
  110. package/dist/renderers/CheckboxRenderer.d.ts +0 -4
  111. package/dist/renderers/CheckboxRenderer.d.ts.map +0 -1
  112. package/dist/renderers/CheckboxRenderer.js +0 -22
  113. package/dist/renderers/CheckboxRenderer.js.map +0 -1
  114. package/dist/renderers/DateTimeRenderer.d.ts +0 -4
  115. package/dist/renderers/DateTimeRenderer.d.ts.map +0 -1
  116. package/dist/renderers/DateTimeRenderer.js +0 -21
  117. package/dist/renderers/DateTimeRenderer.js.map +0 -1
  118. package/dist/renderers/DropdownRenderer.d.ts +0 -4
  119. package/dist/renderers/DropdownRenderer.d.ts.map +0 -1
  120. package/dist/renderers/DropdownRenderer.js +0 -18
  121. package/dist/renderers/DropdownRenderer.js.map +0 -1
  122. package/dist/renderers/GeneralRenderer.d.ts +0 -4
  123. package/dist/renderers/GeneralRenderer.d.ts.map +0 -1
  124. package/dist/renderers/GeneralRenderer.js +0 -12
  125. package/dist/renderers/GeneralRenderer.js.map +0 -1
  126. package/dist/renderers/HtmlRenderer.d.ts +0 -4
  127. package/dist/renderers/HtmlRenderer.d.ts.map +0 -1
  128. package/dist/renderers/HtmlRenderer.js +0 -6
  129. package/dist/renderers/HtmlRenderer.js.map +0 -1
  130. package/dist/renderers/NumberRenderer.d.ts +0 -4
  131. package/dist/renderers/NumberRenderer.d.ts.map +0 -1
  132. package/dist/renderers/NumberRenderer.js +0 -14
  133. package/dist/renderers/NumberRenderer.js.map +0 -1
  134. package/dist/renderers/SparklineRenderer.d.ts +0 -3
  135. package/dist/renderers/SparklineRenderer.d.ts.map +0 -1
  136. package/dist/renderers/SparklineRenderer.js +0 -8
  137. package/dist/renderers/SparklineRenderer.js.map +0 -1
  138. package/dist/renderers/TextRenderer.d.ts +0 -4
  139. package/dist/renderers/TextRenderer.d.ts.map +0 -1
  140. package/dist/renderers/TextRenderer.js +0 -38
  141. package/dist/renderers/TextRenderer.js.map +0 -1
  142. package/dist/renderers/index.d.ts +0 -12
  143. package/dist/renderers/index.d.ts.map +0 -1
  144. package/dist/renderers/index.js +0 -32
  145. package/dist/renderers/index.js.map +0 -1
  146. package/dist/types.d.ts +0 -10
  147. package/dist/types.d.ts.map +0 -1
  148. package/dist/types.js +0 -2
  149. package/dist/types.js.map +0 -1
  150. package/dist/ui/comment.d.ts +0 -59
  151. package/dist/ui/comment.d.ts.map +0 -1
  152. package/dist/ui/comment.js +0 -284
  153. package/dist/ui/comment.js.map +0 -1
  154. package/dist/ui/comment.style.d.ts +0 -2
  155. package/dist/ui/comment.style.d.ts.map +0 -1
  156. package/dist/ui/comment.style.js +0 -108
  157. package/dist/ui/comment.style.js.map +0 -1
  158. package/dist/ui/elementCache.d.ts +0 -15
  159. package/dist/ui/elementCache.d.ts.map +0 -1
  160. package/dist/ui/elementCache.js +0 -57
  161. package/dist/ui/elementCache.js.map +0 -1
  162. package/dist/ui/filterLabel.d.ts +0 -10
  163. package/dist/ui/filterLabel.d.ts.map +0 -1
  164. package/dist/ui/filterLabel.js +0 -76
  165. package/dist/ui/filterLabel.js.map +0 -1
  166. package/dist/ui/formulaInput.d.ts +0 -56
  167. package/dist/ui/formulaInput.d.ts.map +0 -1
  168. package/dist/ui/formulaInput.js +0 -251
  169. package/dist/ui/formulaInput.js.map +0 -1
  170. package/dist/ui/formulaInput.style.d.ts +0 -2
  171. package/dist/ui/formulaInput.style.d.ts.map +0 -1
  172. package/dist/ui/formulaInput.style.js +0 -65
  173. package/dist/ui/formulaInput.style.js.map +0 -1
  174. package/dist/ui/grid.d.ts +0 -91
  175. package/dist/ui/grid.d.ts.map +0 -1
  176. package/dist/ui/grid.editing.d.ts +0 -61
  177. package/dist/ui/grid.editing.d.ts.map +0 -1
  178. package/dist/ui/grid.editing.js +0 -439
  179. package/dist/ui/grid.editing.js.map +0 -1
  180. package/dist/ui/grid.events.d.ts +0 -97
  181. package/dist/ui/grid.events.d.ts.map +0 -1
  182. package/dist/ui/grid.events.js +0 -581
  183. package/dist/ui/grid.events.js.map +0 -1
  184. package/dist/ui/grid.filtering.d.ts +0 -23
  185. package/dist/ui/grid.filtering.d.ts.map +0 -1
  186. package/dist/ui/grid.filtering.js +0 -68
  187. package/dist/ui/grid.filtering.js.map +0 -1
  188. package/dist/ui/grid.js +0 -297
  189. package/dist/ui/grid.js.map +0 -1
  190. package/dist/ui/grid.menu.d.ts +0 -43
  191. package/dist/ui/grid.menu.d.ts.map +0 -1
  192. package/dist/ui/grid.menu.js +0 -168
  193. package/dist/ui/grid.menu.js.map +0 -1
  194. package/dist/ui/grid.objects.d.ts +0 -24
  195. package/dist/ui/grid.objects.d.ts.map +0 -1
  196. package/dist/ui/grid.objects.js +0 -69
  197. package/dist/ui/grid.objects.js.map +0 -1
  198. package/dist/ui/grid.rendering.d.ts +0 -84
  199. package/dist/ui/grid.rendering.d.ts.map +0 -1
  200. package/dist/ui/grid.rendering.js +0 -471
  201. package/dist/ui/grid.rendering.js.map +0 -1
  202. package/dist/ui/grid.selecting.d.ts +0 -99
  203. package/dist/ui/grid.selecting.d.ts.map +0 -1
  204. package/dist/ui/grid.selecting.js +0 -319
  205. package/dist/ui/grid.selecting.js.map +0 -1
  206. package/dist/ui/grid.sorting.d.ts +0 -23
  207. package/dist/ui/grid.sorting.d.ts.map +0 -1
  208. package/dist/ui/grid.sorting.js +0 -47
  209. package/dist/ui/grid.sorting.js.map +0 -1
  210. package/dist/ui/grid.style.d.ts +0 -2
  211. package/dist/ui/grid.style.d.ts.map +0 -1
  212. package/dist/ui/grid.style.js +0 -39
  213. package/dist/ui/grid.style.js.map +0 -1
  214. package/dist/ui/group.d.ts +0 -71
  215. package/dist/ui/group.d.ts.map +0 -1
  216. package/dist/ui/group.js +0 -312
  217. package/dist/ui/group.js.map +0 -1
  218. package/dist/ui/index.d.ts +0 -19
  219. package/dist/ui/index.d.ts.map +0 -1
  220. package/dist/ui/index.js +0 -19
  221. package/dist/ui/index.js.map +0 -1
  222. package/dist/ui/objectHost.d.ts +0 -30
  223. package/dist/ui/objectHost.d.ts.map +0 -1
  224. package/dist/ui/objectHost.js +0 -114
  225. package/dist/ui/objectHost.js.map +0 -1
  226. package/dist/ui/objectHost.style.d.ts +0 -2
  227. package/dist/ui/objectHost.style.d.ts.map +0 -1
  228. package/dist/ui/objectHost.style.js +0 -43
  229. package/dist/ui/objectHost.style.js.map +0 -1
  230. package/dist/ui/selector.d.ts +0 -97
  231. package/dist/ui/selector.d.ts.map +0 -1
  232. package/dist/ui/selector.js +0 -489
  233. package/dist/ui/selector.js.map +0 -1
  234. package/dist/ui/selector.style.d.ts +0 -2
  235. package/dist/ui/selector.style.d.ts.map +0 -1
  236. package/dist/ui/selector.style.js +0 -106
  237. package/dist/ui/selector.style.js.map +0 -1
  238. package/dist/ui/sortingArrow.d.ts +0 -8
  239. package/dist/ui/sortingArrow.d.ts.map +0 -1
  240. package/dist/ui/sortingArrow.js +0 -42
  241. package/dist/ui/sortingArrow.js.map +0 -1
  242. package/dist/ui/sparkline.d.ts +0 -14
  243. package/dist/ui/sparkline.d.ts.map +0 -1
  244. package/dist/ui/sparkline.js +0 -111
  245. package/dist/ui/sparkline.js.map +0 -1
  246. package/dist/ui/table.d.ts +0 -122
  247. package/dist/ui/table.d.ts.map +0 -1
  248. package/dist/ui/table.js +0 -1063
  249. package/dist/ui/table.js.map +0 -1
  250. package/dist/ui/table.styles.d.ts +0 -2
  251. package/dist/ui/table.styles.d.ts.map +0 -1
  252. package/dist/ui/table.styles.js +0 -249
  253. package/dist/ui/table.styles.js.map +0 -1
  254. package/dist/ui/tooltip.d.ts +0 -9
  255. package/dist/ui/tooltip.d.ts.map +0 -1
  256. package/dist/ui/tooltip.js +0 -32
  257. package/dist/ui/tooltip.js.map +0 -1
@@ -1,108 +0,0 @@
1
- import { css } from 'lit';
2
- export const style = css `
3
- * {
4
- box-sizing: border-box;
5
- }
6
-
7
- :host {
8
- z-index: 500;
9
- position: absolute;
10
- background-color: var(--og-colortype-yellow-background-color-dark-50);
11
- border: 1px solid var(--og-colortype-yellow-border-color);
12
- color: var(--og-colortype-yellow-text-color);
13
- font-size: var(--og-font-size);
14
- font-family: var(--og-font-family);
15
- width: 250px;
16
- height: 100px;
17
- resize: both;
18
- overflow: hidden;
19
- border-radius: var(--og-base-radius);
20
- }
21
-
22
- .container {
23
- overflow: hidden;
24
- display: flex;
25
- flex-direction: column;
26
- height: 100%;
27
- }
28
-
29
- .head {
30
- cursor: move;
31
- user-select: none;
32
- background: var(--og-colortype-yellow-border-color);
33
- min-height: 10px;
34
- flex: 0;
35
- }
36
-
37
- .controls {
38
- height: 20px;
39
- padding: 2px;
40
- }
41
-
42
- .controls og-button {
43
- width: 100%;
44
- height: 100%;
45
- }
46
-
47
- og-container {
48
- flex: 1;
49
- }
50
-
51
- .comment {
52
- padding-top: 5px;
53
- }
54
-
55
- .controls+.comment {
56
- padding-top: 0;
57
- }
58
-
59
- .comment > div:last-child {
60
- padding-top: 0;
61
- }
62
-
63
- .comment-title {
64
- padding: 0 2px 2px 2px;
65
- user-select: none;
66
- display: flex;
67
- flex-direction: row;
68
- gap: 5px;
69
- align-items: center;
70
- justify-content: center;
71
- white-space: nowrap;
72
- color: var(--og-colortype-yellow-border-color);
73
- }
74
-
75
- .comment-title > div {
76
- flex: 1;
77
- }
78
-
79
- .comment-title > div.date {
80
- text-align: right;
81
- }
82
-
83
- .comment-title og-dropdown-menu {
84
- width: 16px;
85
- height: 16px;
86
- text-align: center
87
- }
88
-
89
- .comment-body {
90
- text-align: justify;
91
- padding: 2px;
92
- outline: none;
93
- color: var(--og-text-color-2);
94
- }
95
-
96
- .comment-body[contenteditable] {
97
- border: 2px solid var(--og-text-color);
98
- }
99
-
100
- .comment {
101
- border-bottom: 1px solid var(--og-colortype-yellow-border-color);
102
- }
103
-
104
- .comment:last-child {
105
- border-bottom: none;
106
- }
107
- `;
108
- //# sourceMappingURL=comment.style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.style.js","sourceRoot":"","sources":["../../src/ui/comment.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const style = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\n\t:host {\n\t\tz-index: 500;\n\t\tposition: absolute;\n\t\tbackground-color: var(--og-colortype-yellow-background-color-dark-50);\n\t\tborder: 1px solid var(--og-colortype-yellow-border-color);\n\t\tcolor: var(--og-colortype-yellow-text-color);\n\t\tfont-size: var(--og-font-size);\n\t\tfont-family: var(--og-font-family);\n\t\twidth: 250px;\n\t\theight: 100px;\n\t\tresize: both;\n\t\toverflow: hidden;\n\t\tborder-radius: var(--og-base-radius);\n\t}\n\n\t.container {\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t}\n\n\t.head {\n\t\tcursor: move;\n\t\tuser-select: none;\n\t\tbackground: var(--og-colortype-yellow-border-color);\n\t\tmin-height: 10px;\n\t\tflex: 0;\n\t}\n\n\t.controls {\n\t\theight: 20px;\n\t\tpadding: 2px;\n\t}\n\n\t.controls og-button {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n\n\tog-container {\n\t\tflex: 1;\n\t}\n\n\t.comment {\n\t\tpadding-top: 5px;\n\t}\n\n\t.controls+.comment {\n\t\tpadding-top: 0;\n\t}\n\n\t.comment > div:last-child {\n\t\tpadding-top: 0;\n\t}\n\n\t.comment-title {\n\t\tpadding: 0 2px 2px 2px;\n\t\tuser-select: none;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 5px;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--og-colortype-yellow-border-color);\n\t}\n\n\t.comment-title > div {\n\t\tflex: 1;\n\t}\n\n\t.comment-title > div.date {\n\t\ttext-align: right;\n\t}\n\n\t.comment-title og-dropdown-menu {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\ttext-align: center\n\t}\n\n\t.comment-body {\n\t\ttext-align: justify;\n\t\tpadding: 2px;\n\t\toutline: none;\n\t\tcolor: var(--og-text-color-2);\n\t}\n\n\t.comment-body[contenteditable] {\n\t\tborder: 2px solid var(--og-text-color);\n\t}\n\n\t.comment {\n\t\tborder-bottom: 1px solid var(--og-colortype-yellow-border-color);\n\t}\n\n\t.comment:last-child {\n\t\tborder-bottom: none;\n\t}\n`;"]}
@@ -1,15 +0,0 @@
1
- export declare class ElementCache {
2
- private maxCacheItems;
3
- private table;
4
- private queue;
5
- disabled: boolean;
6
- constructor(columns: number, rows: number, maxCacheItems?: number);
7
- get(c: number, r: number): HTMLElement;
8
- delete(c: number, r: number): this;
9
- deleteColumn(c: number): this;
10
- deleteRow(r: number): this;
11
- set(c: number, r: number, content: HTMLElement): void;
12
- clear(): void;
13
- clean(): void;
14
- }
15
- //# sourceMappingURL=elementCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elementCache.d.ts","sourceRoot":"","sources":["../../src/ui/elementCache.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IAMmB,OAAO,CAAC,aAAa;IAJhE,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,KAAK,CAAkB;IAC/B,QAAQ,UAAS;gBAEL,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAU,aAAa,SAA4B;IAIrF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAIxB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK3B,YAAY,CAAC,CAAC,EAAE,MAAM;IAOtB,SAAS,CAAC,CAAC,EAAE,MAAM;IAKnB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAM9C,KAAK;IAKL,KAAK;CAqBZ"}
@@ -1,57 +0,0 @@
1
- import constants from "../constants";
2
- export class ElementCache {
3
- constructor(columns, rows, maxCacheItems = constants.MAX_CACHE_ITEMS) {
4
- this.maxCacheItems = maxCacheItems;
5
- this.queue = [];
6
- this.disabled = false;
7
- this.table = new Array(rows).fill(null).map(() => new Array(columns));
8
- }
9
- get(c, r) {
10
- return this.table[r][c];
11
- }
12
- delete(c, r) {
13
- this.table[r][c] = null;
14
- return this;
15
- }
16
- deleteColumn(c) {
17
- for (let r = 0; r < this.table.length; r++) {
18
- this.table[r][c] = null;
19
- }
20
- return this;
21
- }
22
- deleteRow(r) {
23
- this.table[r] = new Array(this.table[0].length).fill(null);
24
- return this;
25
- }
26
- set(c, r, content) {
27
- if (this.disabled)
28
- return;
29
- if (!this.get(c, r))
30
- this.queue.push([r, c]);
31
- this.table[r][c] = content;
32
- }
33
- clear() {
34
- this.queue = [];
35
- this.table = this.table.map(row => new Array(row.length));
36
- }
37
- clean() {
38
- if (this.maxCacheItems > 0 && this.queue.length > this.maxCacheItems) {
39
- let size = this.queue.length;
40
- for (let i = 0; i < this.queue.length; i++) {
41
- const coords = this.queue[i];
42
- const item = this.table[coords[0]][coords[1]];
43
- if (!item.parentNode) {
44
- this.queue[i] = null;
45
- this.table[coords[0]][coords[1]] = null;
46
- if (--size <= this.maxCacheItems) {
47
- break;
48
- }
49
- }
50
- }
51
- if (size < this.queue.length) {
52
- this.queue = this.queue.filter(item => item);
53
- }
54
- }
55
- }
56
- }
57
- //# sourceMappingURL=elementCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elementCache.js","sourceRoot":"","sources":["../../src/ui/elementCache.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from \"../constants\";\n\nexport class ElementCache {\n\n\tprivate table: HTMLElement[][];\n\tprivate queue: number[][] = [];\n\tdisabled = false;\n\n\tconstructor(columns: number, rows: number, private maxCacheItems = constants.MAX_CACHE_ITEMS) {\n\t\tthis.table = new Array(rows).fill(null).map(() => new Array(columns));\n\t}\n\n\tpublic get(c: number, r: number) {\n\t\treturn this.table[r][c];\n\t}\n\n\tpublic delete(c: number, r: number) {\n\t\tthis.table[r][c] = null;\n\t\treturn this;\n\t}\n\n\tpublic deleteColumn(c: number) {\n\t\tfor (let r = 0; r < this.table.length; r++) {\n\t\t\tthis.table[r][c] = null;\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic deleteRow(r: number) {\n\t\tthis.table[r] = new Array(this.table[0].length).fill(null);\n\t\treturn this;\n\t}\n\n\tpublic set(c: number, r: number, content: HTMLElement) {\n\t\tif (this.disabled) return;\n\t\tif (!this.get(c, r)) this.queue.push([r, c]);\t\n\t\tthis.table[r][c] = content;\n\t}\n\n\tpublic clear() {\n\t\tthis.queue = [];\n\t\tthis.table = this.table.map(row => new Array(row.length));\n\t}\n\n\tpublic clean() {\n\t\tif (this.maxCacheItems > 0 && this.queue.length > this.maxCacheItems) {\n\t\t\tlet size = this.queue.length;\n\t\t\tfor (let i = 0; i < this.queue.length; i++) {\n\t\t\t\tconst coords = this.queue[i];\n\t\t\t\tconst item = this.table[coords[0]][coords[1]];\n\t\t\t\tif (!item.parentNode) {\n\t\t\t\t\tthis.queue[i] = null;\n\t\t\t\t\tthis.table[coords[0]][coords[1]] = null;\n\t\t\t\t\tif (--size <= this.maxCacheItems) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (size < this.queue.length) {\n\t\t\t\tthis.queue = this.queue.filter(item => item);\n\t\t\t}\n\t\t}\n\t}\n\n}"]}
@@ -1,10 +0,0 @@
1
- import { FilterValue } from '@omegagrid/grid-core';
2
- import { LitElement } from 'lit';
3
- export declare class FilterLabel extends LitElement {
4
- static styles: import("lit").CSSResult;
5
- value: FilterValue;
6
- constructor();
7
- connectedCallback(): void;
8
- render: () => import("lit-html").TemplateResult<1>;
9
- }
10
- //# sourceMappingURL=filterLabel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filterLabel.d.ts","sourceRoot":"","sources":["../../src/ui/filterLabel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C,qBACa,WAAY,SAAQ,UAAU;IAE1C,MAAM,CAAC,MAAM,0BA4CX;IAGF,KAAK,EAAE,WAAW,CAAC;;IAMnB,iBAAiB;IAIjB,MAAM,6CAKJ;CAEF"}
@@ -1,76 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { utils } from '@omegagrid/core';
8
- import { LitElement, html, css } from 'lit';
9
- import { customElement, property } from 'lit/decorators.js';
10
- let FilterLabel = class FilterLabel extends LitElement {
11
- constructor() {
12
- super();
13
- this.render = () => html `
14
- <og-icon id="filterIcon" .icon="${{ icon: "filter" }}"></og-icon>
15
- <div class="text">${utils.isBool(this.value) ? html `
16
- <og-icon .icon="${this.value ? 'square-check' : 'square'}"></og-icon>
17
- ` : this.value}</div>
18
- `;
19
- }
20
- connectedCallback() {
21
- super.connectedCallback();
22
- }
23
- };
24
- FilterLabel.styles = css `
25
- :host {
26
- padding: 0;
27
- display: block;
28
- align-items: center;
29
- cursor: pointer;
30
- height: 100%;
31
- line-height: 21px;
32
- }
33
-
34
- :host(:hover og-icon) {
35
- background-color: var(--og-accent-color-highlight);
36
- }
37
-
38
- input {
39
- color: var(--og-text-color);
40
- }
41
-
42
- og-icon {
43
- color: var(--og-accent-color);
44
- flex: 0;
45
- min-width: 20px;
46
- padding-top: 1px;
47
- padding-left: 0px;
48
- }
49
-
50
- #filterIcon {
51
- position: absolute;
52
- left: 0px;
53
- top: 0px;
54
- }
55
-
56
- .text {
57
- flex: 1;
58
- height: 100%;
59
- font-style: italic;
60
- font-weight: normal;
61
- }
62
-
63
- .text:empty {
64
- background-image: repeating-linear-gradient(45deg, var(--og-accent-color-alpha) 0, var(--og-accent-color-alpha) 2px, transparent 0, transparent 50%);
65
- background-size: 10px 10px;
66
- background-color: transparent;
67
- }
68
- `;
69
- __decorate([
70
- property()
71
- ], FilterLabel.prototype, "value", void 0);
72
- FilterLabel = __decorate([
73
- customElement('og-filter-label')
74
- ], FilterLabel);
75
- export { FilterLabel };
76
- //# sourceMappingURL=filterLabel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filterLabel.js","sourceRoot":"","sources":["../../src/ui/filterLabel.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIrD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAmD1C;QACC,KAAK,EAAE,CAAC;QAOT,WAAM,GAAG,GAAG,EAAE,CAAA,IAAI,CAAA;oCACiB,EAAC,IAAI,EAAE,QAAQ,EAAC;sBAC9B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;qBAChC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ;GACxD,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;EACd,CAAC;IAXF,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;;AAvDM,kBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ClB,AA5CY,CA4CX;AAGF;IADC,QAAQ,EAAE;0CACQ;AAjDP,WAAW;IADvB,aAAa,CAAC,iBAAiB,CAAC;GACpB,WAAW,CAkEvB","sourcesContent":["import { utils } from '@omegagrid/core';\nimport { FilterValue } from '@omegagrid/grid-core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n\n@customElement('og-filter-label')\nexport class FilterLabel extends LitElement {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tpadding: 0;\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tcursor: pointer;\n\t\t\theight: 100%;\n\t\t\tline-height: 21px;\n\t\t}\n\n\t\t:host(:hover og-icon) {\n\t\t\tbackground-color: var(--og-accent-color-highlight);\n\t\t}\n\n\t\tinput {\n\t\t\tcolor: var(--og-text-color);\n\t\t}\n\n\t\tog-icon {\n\t\t\tcolor: var(--og-accent-color);\n\t\t\tflex: 0;\n\t\t\tmin-width: 20px;\n\t\t\tpadding-top: 1px;\n\t\t\tpadding-left: 0px;\n\t\t}\n\n\t\t#filterIcon {\n\t\t\tposition: absolute;\n\t\t\tleft: 0px;\n\t\t\ttop: 0px;\n\t\t}\n\n\t\t.text {\n\t\t\tflex: 1;\n\t\t\theight: 100%;\n\t\t\tfont-style: italic;\n\t\t\tfont-weight: normal;\n\t\t}\n\n\t\t.text:empty {\n\t\t\tbackground-image: repeating-linear-gradient(45deg, var(--og-accent-color-alpha) 0, var(--og-accent-color-alpha) 2px, transparent 0, transparent 50%);\n\t\t\tbackground-size: 10px 10px;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t`;\n\n\t@property()\n\tvalue: FilterValue;\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t}\n\n\trender = () =>html`\n\t\t<og-icon id=\"filterIcon\" .icon=\"${{icon: \"filter\"}}\"></og-icon>\n\t\t<div class=\"text\">${utils.isBool(this.value) ? html`\n\t\t\t<og-icon .icon=\"${this.value ? 'square-check' : 'square'}\"></og-icon>\t\n\t\t` : this.value}</div>\n\t`;\n\t\n}"]}
@@ -1,56 +0,0 @@
1
- import { CellRange, Formula, Tokenizer } from '@omegagrid/grid-core';
2
- import { LitElement } from 'lit';
3
- export declare class FormulaInputEvent extends Event {
4
- value: string;
5
- formula: Formula;
6
- constructor(type: string, args?: Partial<FormulaInputEvent>);
7
- }
8
- export declare class FormulaInput extends LitElement {
9
- static styles: import("lit").CSSResult[];
10
- tokenizer: Tokenizer;
11
- formulaPreview: HTMLDivElement;
12
- formulaInput: HTMLInputElement;
13
- preview: boolean;
14
- get formula(): Formula;
15
- private _value;
16
- private _isDiscarded;
17
- get isDiscarded(): boolean;
18
- set value(v: string);
19
- get value(): string;
20
- private origWidth;
21
- private hasInput;
22
- private _selection;
23
- get selection(): {
24
- start: number;
25
- end: number;
26
- };
27
- set selection(v: {
28
- start: number;
29
- end: number;
30
- });
31
- get inputValue(): string;
32
- constructor();
33
- connectedCallback(): void;
34
- activate(value: string): void;
35
- debounceUpdatePreview: {
36
- (this: unknown, ...args: [] & any[]): Promise<void>;
37
- cancel: (reason?: any) => void;
38
- };
39
- updateSize(): void;
40
- updatePreview(): void;
41
- willUpdate(): void;
42
- updated(): void;
43
- setRange(range: CellRange, index?: number): void;
44
- commit(dispatchEvent?: boolean): void;
45
- discard(dispatchEvent?: boolean): void;
46
- _onInput: () => void;
47
- _onMouseUp: () => void;
48
- _onMouseDown: () => void;
49
- _onKeyUp: () => void;
50
- _onKeyDown: (e: KeyboardEvent) => void;
51
- _onBlur: () => void;
52
- _onFocus: () => void;
53
- focus(): void;
54
- render: () => import("lit-html").TemplateResult<1>;
55
- }
56
- //# sourceMappingURL=formulaInput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formulaInput.d.ts","sourceRoot":"","sources":["../../src/ui/formulaInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAA4B,SAAS,EAAa,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;gBAEL,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;CAI3D;AAED,qBACa,YAAa,SAAQ,UAAU;IAE3C,MAAM,CAAC,MAAM,4BAAW;IAGxB,SAAS,EAAE,SAAS,CAAC;IAGrB,cAAc,EAAE,cAAc,CAAC;IAG/B,YAAY,EAAE,gBAAgB,CAAC;IAG/B,OAAO,UAAS;IAEhB,IAAI,OAAO,YAGV;IAED,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAI,WAAW,YAA+B;IAE9C,IACI,KAAK,CAAC,CAAC,EAAE,MAAM,EAMlB;IACD,IAAI,KAAK,IAPI,MAAM,CAOqB;IAExC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,UAAU,CAA+B;IACjD,IAAI,SAAS,IACI;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAD+E;IAC5H,IAAI,SAAS,CAAC,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAI5C;IAED,IAAI,UAAU,WAA4C;;IAM1D,iBAAiB;IAKjB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAQtB,qBAAqB;;uBAjEK,CAAC;MAiE8B;IAEzD,UAAU;IAIV,aAAa;IAyBb,UAAU;IAIV,OAAO;IAiBP,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM;IA2CzC,MAAM,CAAC,aAAa,UAAO;IAO3B,OAAO,CAAC,aAAa,UAAO;IAQ5B,QAAQ,aAMP;IAED,UAAU,aAGT;IAED,YAAY,aAGX;IAED,QAAQ,aAGP;IAED,UAAU,GAAI,GAAG,aAAa,UAQ7B;IAED,OAAO,aAMN;IAED,QAAQ,aAEP;IAED,KAAK;IAKL,MAAM,6CAeJ;CACF"}
@@ -1,251 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { dom } from '@omegagrid/core';
8
- import { Formula, isFormula, prefixFormula, TokenType } from '@omegagrid/grid-core';
9
- import { LitElement, html } from 'lit';
10
- import { customElement, property, query } from 'lit/decorators.js';
11
- import { debounce } from 'ts-debounce';
12
- import { style } from './formulaInput.style';
13
- export class FormulaInputEvent extends Event {
14
- constructor(type, args) {
15
- super(`formula.${type}`);
16
- Object.assign(this, args);
17
- }
18
- }
19
- let FormulaInput = class FormulaInput extends LitElement {
20
- get formula() {
21
- const value = this.inputValue;
22
- return isFormula(value) ? new Formula(value, this.tokenizer) : null;
23
- }
24
- get isDiscarded() { return this._isDiscarded; }
25
- set value(v) {
26
- this._value = v;
27
- this._selection = null;
28
- this.preview = false;
29
- if (this.formulaInput)
30
- this.formulaInput.value = v;
31
- this.requestUpdate();
32
- }
33
- get value() { return this._value ?? ''; }
34
- get selection() { return this._selection ?? { start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd }; }
35
- set selection(v) {
36
- this._selection = v;
37
- this.formulaInput.selectionStart = v.start;
38
- this.formulaInput.selectionEnd = v.end;
39
- }
40
- get inputValue() { return this.formulaInput?.value ?? ''; }
41
- constructor() {
42
- super();
43
- this.preview = false;
44
- this._value = '';
45
- this._isDiscarded = false;
46
- this.origWidth = null;
47
- this.hasInput = false;
48
- this.debounceUpdatePreview = debounce(this.updatePreview, 10);
49
- this._onInput = () => {
50
- this._isDiscarded = false;
51
- this._selection = null;
52
- this.preview = isFormula(this.inputValue);
53
- this.hasInput = true;
54
- this.debounceUpdatePreview();
55
- };
56
- this._onMouseUp = () => {
57
- this.hasInput = true;
58
- this._selection = { start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd };
59
- };
60
- this._onMouseDown = () => {
61
- this.hasInput = true;
62
- this._selection = { start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd };
63
- };
64
- this._onKeyUp = () => {
65
- this.hasInput = true;
66
- this._selection = { start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd };
67
- };
68
- this._onKeyDown = (e) => {
69
- this.hasInput = true;
70
- this._selection = { start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd };
71
- switch (e.key) {
72
- case 'Enter':
73
- this.commit();
74
- break;
75
- case 'Escape':
76
- this.discard();
77
- break;
78
- default:
79
- this.hasInput = true;
80
- break;
81
- }
82
- };
83
- this._onBlur = () => {
84
- if (!this.hasInput)
85
- this.discard();
86
- if (!isFormula(this.inputValue)) {
87
- this._value = this.inputValue;
88
- this.commit();
89
- }
90
- };
91
- this._onFocus = () => {
92
- if (!this.preview && isFormula(this.value))
93
- this.preview = true;
94
- };
95
- this.render = () => html `
96
- <div id="formulaPreview"></div>
97
- <input
98
- id="formulaInput"
99
- type="text"
100
- autocomplete="off"
101
- spellcheck="false"
102
- .value="${this.value}"
103
- @input="${this._onInput}"
104
- @mousedown="${this._onMouseDown}"
105
- @mouseup="${this._onMouseUp}"
106
- @keyup="${this._onKeyUp}"
107
- @keydown="${this._onKeyDown}"
108
- @blur="${this._onBlur}"
109
- @focus="${this._onFocus}">
110
- `;
111
- }
112
- connectedCallback() {
113
- super.connectedCallback();
114
- this.tabIndex = 0;
115
- }
116
- activate(value) {
117
- this.origWidth = this.offsetWidth;
118
- this.hasInput = [null, '', '='].includes(value);
119
- this.value = value;
120
- this.preview = isFormula(value);
121
- this.requestUpdate();
122
- }
123
- updateSize() {
124
- dom.setSize(this, { w: Math.max(this.origWidth, this.formulaPreview.offsetWidth + 5) });
125
- }
126
- updatePreview() {
127
- const value = this.inputValue;
128
- const formula = this.formula;
129
- if (formula) {
130
- const previewHTML = prefixFormula(formula.createFormulaString(true));
131
- const updatedInput = prefixFormula(formula.createFormulaString(false));
132
- const s1 = this.formulaInput.selectionStart;
133
- const s2 = this.formulaInput.selectionEnd;
134
- this.formulaInput.value = updatedInput.length > value.length
135
- ? updatedInput
136
- : (updatedInput + value.substring(updatedInput.length));
137
- this.formulaInput.selectionStart = s1;
138
- this.formulaInput.selectionEnd = s2;
139
- this.formulaPreview.innerHTML = previewHTML + (updatedInput.length < value.length ? value.substring(updatedInput.length) : '');
140
- }
141
- else {
142
- this.formulaPreview.textContent = value;
143
- }
144
- if (formula) {
145
- this.updateSize();
146
- this.dispatchEvent(new FormulaInputEvent('preview', { value: value, formula: formula }));
147
- }
148
- }
149
- willUpdate() {
150
- if (this.preview)
151
- this.preview = isFormula(this.formulaInput ? this.inputValue : this.value);
152
- }
153
- updated() {
154
- this.origWidth = this.origWidth ?? this.offsetWidth;
155
- const h = this.clientHeight;
156
- this.formulaPreview.style.lineHeight = dom.numToPixels(h);
157
- this.formulaInput.style.lineHeight = dom.numToPixels(h);
158
- if (this.preview) {
159
- this.formulaInput.focus();
160
- this.updatePreview();
161
- }
162
- else {
163
- this.updateSize();
164
- }
165
- if (this.selection) {
166
- this.formulaInput.selectionStart = this.selection.start;
167
- this.formulaInput.selectionEnd = this.selection.end;
168
- }
169
- }
170
- setRange(range, index) {
171
- const formula = this.formula;
172
- index = index ?? formula?.findTokenIndexAtPosition(Math.max(0, this.selection.start - 1));
173
- let token = index > -1 && index < formula.tokens.length ? formula.tokens[index] : null;
174
- if (token && ![TokenType.Cell, TokenType.Range, TokenType.Variable].includes(token[1])) {
175
- token = null;
176
- }
177
- if (token) {
178
- const sheetTokenIndex = formula.findSheetTokenIndex(index);
179
- const sheet = range.sheet;
180
- range = range.clone();
181
- range.sheet = null;
182
- if (sheetTokenIndex > -1) {
183
- if (sheet == null)
184
- index -= formula.removeSheetToken(sheetTokenIndex);
185
- else
186
- formula.updateToken(sheetTokenIndex, sheet);
187
- }
188
- else if (sheet) {
189
- index += formula.insertToken(index, sheet, TokenType.Sheet);
190
- }
191
- formula.updateToken(index, range.A1);
192
- const position = formula.getTokenPosition(index);
193
- this.formulaInput.value = prefixFormula(formula.createFormulaString());
194
- this.selection = { start: position.max + 1, end: position.max + 1 };
195
- }
196
- else {
197
- const value = this.formulaInput.value;
198
- const startChunk = value.substring(0, this.selection.start);
199
- const endChunk = value.substring(this.selection.end);
200
- this.formulaInput.value = startChunk + range.A1 + endChunk;
201
- this.selection = { start: (startChunk + range.A1).length, end: (startChunk + range.A1).length };
202
- }
203
- this._value = this.formulaInput.value;
204
- this.updatePreview();
205
- setTimeout(() => {
206
- this.formulaInput.focus();
207
- this.formulaInput.selectionStart = this.selection.start;
208
- this.formulaInput.selectionEnd = this.selection.end;
209
- }, 100);
210
- }
211
- commit(dispatchEvent = true) {
212
- dom.setSize(this, { w: this.origWidth });
213
- this._value = this.inputValue;
214
- this.preview = false;
215
- if (dispatchEvent)
216
- this.dispatchEvent(new FormulaInputEvent('commit', { value: this.value, formula: this.formula }));
217
- }
218
- discard(dispatchEvent = true) {
219
- this._isDiscarded = true;
220
- dom.setSize(this, { w: this.origWidth });
221
- this.preview = false;
222
- this.requestUpdate();
223
- if (dispatchEvent)
224
- this.dispatchEvent(new FormulaInputEvent('discard', { value: this.value, formula: this.formula }));
225
- }
226
- focus() {
227
- super.focus();
228
- this.formulaInput.focus();
229
- }
230
- };
231
- FormulaInput.styles = [style];
232
- __decorate([
233
- property({ type: Object })
234
- ], FormulaInput.prototype, "tokenizer", void 0);
235
- __decorate([
236
- query('#formulaPreview')
237
- ], FormulaInput.prototype, "formulaPreview", void 0);
238
- __decorate([
239
- query('#formulaInput')
240
- ], FormulaInput.prototype, "formulaInput", void 0);
241
- __decorate([
242
- property({ type: Boolean, reflect: true })
243
- ], FormulaInput.prototype, "preview", void 0);
244
- __decorate([
245
- property()
246
- ], FormulaInput.prototype, "value", null);
247
- FormulaInput = __decorate([
248
- customElement('og-grid-formula')
249
- ], FormulaInput);
250
- export { FormulaInput };
251
- //# sourceMappingURL=formulaInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formulaInput.js","sourceRoot":"","sources":["../../src/ui/formulaInput.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom } from '@omegagrid/core';\nimport { CellRange, Formula, isFormula, prefixFormula, Tokenizer, TokenType } from '@omegagrid/grid-core';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { debounce } from 'ts-debounce';\nimport { style } from './formulaInput.style';\n\nexport class FormulaInputEvent extends Event {\n\tvalue: string;\n\tformula: Formula;\n\n\tconstructor(type: string, args?: Partial<FormulaInputEvent>) {\n\t\tsuper(`formula.${type}`);\n\t\tObject.assign(this, args);\n\t}\n}\n\n@customElement('og-grid-formula')\nexport class FormulaInput extends LitElement {\n\n\tstatic styles = [style];\n\t\n\t@property({type: Object})\n\ttokenizer: Tokenizer;\n\n\t@query('#formulaPreview')\n\tformulaPreview: HTMLDivElement;\n\n\t@query('#formulaInput')\n\tformulaInput: HTMLInputElement;\n\n\t@property({type: Boolean, reflect: true})\n\tpreview = false;\n\n\tget formula() {\n\t\tconst value = this.inputValue;\n\t\treturn isFormula(value) ? new Formula(value, this.tokenizer) : null;\n\t}\n\n\tprivate _value = '';\n\tprivate _isDiscarded = false;\n\tget isDiscarded() { return this._isDiscarded }\n\t\n\t@property()\n\tset value(v: string) {\n\t\tthis._value = v;\n\t\tthis._selection = null;\n\t\tthis.preview = false;\n\t\tif (this.formulaInput) this.formulaInput.value = v;\n\t\tthis.requestUpdate();\n\t}\n\tget value() { return this._value ?? '' }\n\t\n\tprivate origWidth: number = null;\n\tprivate hasInput = false;\n\n\tprivate _selection: {start: number, end: number};\n\tget selection() { return this._selection ?? {start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd} }\n\tset selection(v: {start: number, end: number}) {\n\t\tthis._selection = v;\n\t\tthis.formulaInput.selectionStart = v.start;\n\t\tthis.formulaInput.selectionEnd = v.end;\n\t}\n\n\tget inputValue () { return this.formulaInput?.value ?? ''}\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.tabIndex = 0;\n\t}\n\n\tactivate(value: string) {\n\t\tthis.origWidth = this.offsetWidth;\n\t\tthis.hasInput = [null, '', '='].includes(value);\n\t\tthis.value = value;\n\t\tthis.preview = isFormula(value);\n\t\tthis.requestUpdate();\n\t}\n\n\tdebounceUpdatePreview = debounce(this.updatePreview, 10);\n\n\tupdateSize() {\n\t\tdom.setSize(this, {w: Math.max(this.origWidth, this.formulaPreview.offsetWidth + 5)});\n\t}\n\t\n\tupdatePreview() {\n\t\tconst value = this.inputValue;\n\t\tconst formula = this.formula;\n\t\tif (formula) {\n\t\t\tconst previewHTML = prefixFormula(formula.createFormulaString(true));\n\t\t\tconst updatedInput = prefixFormula(formula.createFormulaString(false));\n\t\t\t\n\t\t\tconst s1 = this.formulaInput.selectionStart;\n\t\t\tconst s2 = this.formulaInput.selectionEnd;\n\t\t\tthis.formulaInput.value = updatedInput.length > value.length\n\t\t\t\t? updatedInput\n\t\t\t\t: (updatedInput + value.substring(updatedInput.length));\n\t\t\tthis.formulaInput.selectionStart = s1;\n\t\t\tthis.formulaInput.selectionEnd = s2;\n\t\t\tthis.formulaPreview.innerHTML = previewHTML + (updatedInput.length < value.length ? value.substring(updatedInput.length) : '');\n\t\t} else {\n\t\t\tthis.formulaPreview.textContent = value;\n\t\t}\n\n\t\tif (formula) {\n\t\t\tthis.updateSize();\n\t\t\tthis.dispatchEvent(new FormulaInputEvent('preview', {value: value, formula: formula}));\n\t\t}\n\t}\n\n\twillUpdate() {\n\t\tif (this.preview) this.preview = isFormula(this.formulaInput ? this.inputValue : this.value);\n\t}\n\n\tupdated() {\n\t\tthis.origWidth = this.origWidth ?? this.offsetWidth;\n\t\tconst h = this.clientHeight;\n\t\tthis.formulaPreview.style.lineHeight = dom.numToPixels(h);\n\t\tthis.formulaInput.style.lineHeight = dom.numToPixels(h);\n\t\tif (this.preview) {\n\t\t\tthis.formulaInput.focus();\n\t\t\tthis.updatePreview();\n\t\t} else {\n\t\t\tthis.updateSize();\n\t\t}\n\t\tif (this.selection) {\n\t\t\tthis.formulaInput.selectionStart = this.selection.start;\n\t\t\tthis.formulaInput.selectionEnd = this.selection.end;\n\t\t}\n\t}\n\n\tsetRange(range: CellRange, index?: number) {\n\t\tconst formula = this.formula;\n\t\tindex = index ?? formula?.findTokenIndexAtPosition(Math.max(0, this.selection.start - 1));\n\t\tlet token = index > -1 && index < formula.tokens.length ? formula.tokens[index] : null;\n\t\tif (token && ![TokenType.Cell, TokenType.Range, TokenType.Variable].includes(token[1])) {\n\t\t\ttoken = null;\n\t\t}\n\n\t\tif (token) {\n\t\t\tconst sheetTokenIndex = formula.findSheetTokenIndex(index);\n\t\t\tconst sheet = range.sheet;\n\t\t\trange = range.clone();\n\t\t\trange.sheet = null;\n\n\t\t\tif (sheetTokenIndex > -1) {\n\t\t\t\tif (sheet == null) index -= formula.removeSheetToken(sheetTokenIndex);\n\t\t\t\telse formula.updateToken(sheetTokenIndex, sheet);\n\t\t\t} else if (sheet) {\n\t\t\t\tindex += formula.insertToken(index, sheet, TokenType.Sheet);\n\t\t\t}\n\n\t\t\tformula.updateToken(index, range.A1);\n\t\t\tconst position = formula.getTokenPosition(index);\n\t\t\tthis.formulaInput.value = prefixFormula(formula.createFormulaString());\n\t\t\tthis.selection = {start: position.max + 1, end: position.max + 1};\n\t\t} else {\n\t\t\tconst value = this.formulaInput.value;\n\t\t\tconst startChunk = value.substring(0, this.selection.start);\n\t\t\tconst endChunk = value.substring(this.selection.end);\n\t\t\tthis.formulaInput.value = startChunk + range.A1 + endChunk;\n\t\t\tthis.selection = {start: (startChunk + range.A1).length, end: (startChunk + range.A1).length};\n\t\t}\n\n\t\tthis._value = this.formulaInput.value;\n\t\tthis.updatePreview();\n\n\t\tsetTimeout(() => {\n\t\t\tthis.formulaInput.focus();\n\t\t\tthis.formulaInput.selectionStart = this.selection.start;\n\t\t\tthis.formulaInput.selectionEnd = this.selection.end;\n\t\t}, 100);\n\t}\n\n\tcommit(dispatchEvent = true) {\n\t\tdom.setSize(this, {w: this.origWidth});\n\t\tthis._value = this.inputValue;\n\t\tthis.preview = false;\n\t\tif (dispatchEvent) this.dispatchEvent(new FormulaInputEvent('commit', {value: this.value, formula: this.formula}));\n\t}\n\n\tdiscard(dispatchEvent = true) {\n\t\tthis._isDiscarded = true;\n\t\tdom.setSize(this, {w: this.origWidth});\n\t\tthis.preview = false;\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new FormulaInputEvent('discard', {value: this.value, formula: this.formula}));\n\t}\n\n\t_onInput = () => {\n\t\tthis._isDiscarded = false;\n\t\tthis._selection = null;\n\t\tthis.preview = isFormula(this.inputValue);\n\t\tthis.hasInput = true;\n\t\tthis.debounceUpdatePreview();\n\t}\n\n\t_onMouseUp = () => {\n\t\tthis.hasInput = true;\n\t\tthis._selection = {start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd};\n\t}\n\n\t_onMouseDown = () => {\n\t\tthis.hasInput = true;\n\t\tthis._selection = {start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd};\n\t}\n\n\t_onKeyUp = () => {\n\t\tthis.hasInput = true;\n\t\tthis._selection = {start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd};\n\t}\n\n\t_onKeyDown = (e: KeyboardEvent) => {\n\t\tthis.hasInput = true;\n\t\tthis._selection = {start: this.formulaInput.selectionStart, end: this.formulaInput.selectionEnd};\n\t\tswitch (e.key) {\n\t\t\tcase 'Enter': this.commit(); break;\n\t\t\tcase 'Escape': this.discard(); break;\n\t\t\tdefault : this.hasInput = true; break;\n\t\t}\n\t}\n\n\t_onBlur = () => {\n\t\tif (!this.hasInput) this.discard();\n\t\tif (!isFormula(this.inputValue)) {\n\t\t\tthis._value = this.inputValue;\n\t\t\tthis.commit();\n\t\t}\n\t}\n\n\t_onFocus = () => {\n\t\tif (!this.preview && isFormula(this.value)) this.preview = true;\n\t}\n\n\tfocus() {\n\t\tsuper.focus();\n\t\tthis.formulaInput.focus();\n\t}\n\n\trender = () => html`\n\t\t<div id=\"formulaPreview\"></div>\n\t\t<input \n\t\t\tid=\"formulaInput\"\n\t\t\ttype=\"text\"\n\t\t\tautocomplete=\"off\"\n\t\t\tspellcheck=\"false\"\n\t\t\t.value=\"${this.value}\"\n\t\t\t@input=\"${this._onInput}\"\n\t\t\t@mousedown=\"${this._onMouseDown}\"\n\t\t\t@mouseup=\"${this._onMouseUp}\"\n\t\t\t@keyup=\"${this._onKeyUp}\"\n\t\t\t@keydown=\"${this._onKeyDown}\"\n\t\t\t@blur=\"${this._onBlur}\"\n\t\t\t@focus=\"${this._onFocus}\">\n\t`;\n}"]}
@@ -1,2 +0,0 @@
1
- export declare const style: import("lit").CSSResult;
2
- //# sourceMappingURL=formulaInput.style.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formulaInput.style.d.ts","sourceRoot":"","sources":["../../src/ui/formulaInput.style.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,yBA8DjB,CAAC"}