@omegagrid/core 0.10.2 → 0.10.4

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 +53 -0
  278. package/dist/ui/sizer.d.ts.map +1 -0
  279. package/dist/ui/sizer.js +203 -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
package/dist/types.js ADDED
@@ -0,0 +1,12 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ export var ColorTypes;
3
+ (function (ColorTypes) {
4
+ ColorTypes["Accent"] = "accent";
5
+ ColorTypes["Red"] = "red";
6
+ ColorTypes["Yellow"] = "yellow";
7
+ ColorTypes["Green"] = "green";
8
+ ColorTypes["Blue"] = "blue";
9
+ ColorTypes["Gray"] = "gray";
10
+ ColorTypes["Transparent"] = "transparent";
11
+ })(ColorTypes || (ColorTypes = {}));
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAwDvD,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACrB,+BAAiB,CAAA;IACjB,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,yCAA2B,CAAA;AAC5B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { TemplateResult } from \"lit-html\";\nimport { IconSpec } from \"./ui\";\n\nexport type ThemeDefinition = Record<string, string>;\nexport type ThemeVariables = Map<string, string>;\n\nexport type ThemeType = 'light'|'dark';\n\nexport type Theme = {\n\tname: string,\n\ttype: ThemeType,\n\tdefinition: ThemeDefinition,\n\taccentColor?: string,\n};\n\nexport type LocaleId = string;\n\nexport type LayoutOptions<TParent extends HTMLElement = HTMLElement> = {\n\tparent?: TParent,\n\telements?: Map<string, HTMLElement>,\n}\n\nexport interface Layout extends HTMLElement {\n\tlayout(options?: LayoutOptions) : void;\n}\n\nexport type ComponentState = {\n\tname?: string;\n\t[key: string]: unknown;\n}\n\nexport interface Statefull {\n\tget state(): ComponentState;\n\tset state(value: ComponentState);\n\tgetState(): ComponentState;\n\tsetState(state: ComponentState): void;\n}\n\n/**\n * General = 'g',\n * Text = 't',\n * Number = 'n',\n * Date = 'd',\n * DateTime = 'dt',\n * Time = 'tm',\n * Checkbox = 'b',\n * Select = 's',\n * MultiSelect = 'm',\n */\nexport type UIValueType = 'g'|'t'|'n'|'d'|'dt'|'tm'|'b'|'s'|'m';\n\nexport type UIValueFormat = string;\n\n\nexport enum ColorTypes {\n\tAccent = 'accent',\n\tRed = 'red',\n\tYellow = 'yellow',\n\tGreen = 'green',\n\tBlue = 'blue',\n\tGray = 'gray',\n\tTransparent = 'transparent',\n}\n\nexport type DecimalSeparator = '.'|',';\nexport type Orientation = 'vertical'|'horizontal';\nexport type VerticalDirection = 'up'|'down';\nexport type HorizontalDirection = 'left'|'right';\nexport type Direction = VerticalDirection | HorizontalDirection;\nexport type DiagonalDirection = 'ne'|'nw'|'se'|'sw';\nexport type VerticalPosition = 'top'|'bottom'|'center';\nexport type HorizontalPosition = 'left'|'right'|'center';\nexport type DirectionalPosition = VerticalPosition | HorizontalPosition;\nexport type Size = {w: number, h: number};\nexport type Location = {x: number, y: number};\nexport type Position = {r?: number, b?: number, l?: number, t?: number};\nexport type CssPosition = {r?: string|number, b?: string|number, l?: string|number, t?: string|number};\nexport type Rect = {x: number, y: number, w: number, h: number};\n\nexport type AcordionItem = SplitContainerItem & {\n\ttitle?: string|HTMLElement|TemplateResult<1>,\n\ticon?: string|IconSpec\n}\n\nexport type SplitContainerItem = {\n\tid?: ComponentId,\n\tsize?: number|null, // width or height\n\tcollapsed?: boolean\n}\n\nexport type ComponentId = string|number;\n\nexport type ComponentFactory<T = HTMLElement> = (id?: ComponentId) => T|Promise<T>;\n\nexport interface ComponentContainer<T = HTMLElement> {\n\tcreateComponent: ComponentFactory<T>;\n}\n\nexport type Matrix<T = unknown> = T[][];\n\nexport type Scalar<T = unknown> = T;\n\nexport type DeepPartial<T> = {\n\t[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport interface Populatable {\n\tpopulate(source: Record<PropertyKey, unknown>): void;\n\tgetSourceData(): Record<PropertyKey, unknown>;\n}\n\nexport interface IPrototype<T> { prototype: T }\n\nexport type ValueFormatter<T = unknown> = (value: T) => string;\n\nexport type CustomProperties = Record<string, unknown>;\n\nexport type User = {\n\tid: string,\n\tname?: string\n};\n\nexport type AnyFunction<A = any> = (...input: any[]) => A\nexport type AnyConstructor<A = object> = new (...input: any[]) => A\nexport type Mixin<T extends AnyFunction> = InstanceType<ReturnType<T>>\n\nexport interface Model<TSource = unknown> {\n\t\n\tpopulate(source: TSource): void;\n\tgetSourceData(): TSource;\n\n}\n\nexport type KeyValue = {\n\tkey: string,\n\tvalue?: string\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { AcordionItem, ComponentId } from '../types';
2
+ import { Panel } from './panel';
3
+ import { SplitContainer } from './splitContainer';
4
+ export declare class Accordion extends SplitContainer {
5
+ #private;
6
+ static styles: import("lit").CSSResult[];
7
+ items: AcordionItem[];
8
+ constructor();
9
+ willUpdate(props: Map<string, unknown>): void;
10
+ get totalCollapsedHeight(): number;
11
+ fixSizes(): Promise<void>;
12
+ layout(): Promise<void>;
13
+ getComponent(index: number, id?: ComponentId): Panel;
14
+ connectedCallback(): void;
15
+ }
16
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,qBACa,SAAU,SAAQ,cAAc;;IAE5C,MAAM,CAAC,MAAM,4BAsBV;IAGH,KAAK,EAAE,YAAY,EAAE,CAAM;;IAe3B,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IActC,IAAI,oBAAoB,WAMvB;IAEK,QAAQ;IAkER,MAAM;IAQZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW;IAwC5C,iBAAiB;CAKjB"}
@@ -0,0 +1,209 @@
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
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
+ };
18
+ var _Accordion_panels, _Accordion_collapsedIndices, _Accordion_heights;
19
+ import { html, render, css } from 'lit';
20
+ import { customElement, property } from 'lit/decorators.js';
21
+ import { dom } from '../common';
22
+ import { SplitContainer } from './splitContainer';
23
+ import { until } from 'lit/directives/until.js';
24
+ const MIN_PANEL_SIZE = 50;
25
+ let Accordion = class Accordion extends SplitContainer {
26
+ constructor() {
27
+ super();
28
+ this.items = [];
29
+ _Accordion_panels.set(this, new Map());
30
+ _Accordion_collapsedIndices.set(this, new Set());
31
+ _Accordion_heights.set(this, []);
32
+ this.defaultLayout = false;
33
+ this.addEventListener('splitContainer.resize', () => {
34
+ __classPrivateFieldSet(this, _Accordion_heights, [...this.containers].map(c => c.offsetHeight), "f");
35
+ this.layout();
36
+ });
37
+ }
38
+ willUpdate(props) {
39
+ if (props.has('items')) {
40
+ __classPrivateFieldGet(this, _Accordion_panels, "f").clear();
41
+ __classPrivateFieldSet(this, _Accordion_heights, [], "f");
42
+ this.items?.forEach((item, i) => {
43
+ // override SplitContainer collapse logic
44
+ if (item.collapsed)
45
+ __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").add(i);
46
+ item.collapsed = false;
47
+ __classPrivateFieldGet(this, _Accordion_heights, "f").push(item.size);
48
+ });
49
+ }
50
+ super.willUpdate(props);
51
+ }
52
+ get totalCollapsedHeight() {
53
+ return [...__classPrivateFieldGet(this, _Accordion_collapsedIndices, "f")].reduce((acc, i) => {
54
+ const panel = __classPrivateFieldGet(this, _Accordion_panels, "f").get(i);
55
+ if (!panel)
56
+ return acc;
57
+ return acc + (panel.collapsed ? panel.header.offsetHeight ?? 0 : 0);
58
+ }, 0);
59
+ }
60
+ async fixSizes() {
61
+ await Promise.all([...__classPrivateFieldGet(this, _Accordion_panels, "f").values()].map(panel => panel.updateComplete));
62
+ const containerHeight = this.clientHeight;
63
+ const collapsedCount = __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").size;
64
+ const visibleCount = this.items.length - collapsedCount;
65
+ let totalCollapsedHeight = 0;
66
+ let totalVisibleHeight = 0;
67
+ let unsetHeightCount = 0;
68
+ let heights = new Array(this.items.length).fill(null);
69
+ let lastIndex;
70
+ for (let i = 0; i < this.items.length; i++) {
71
+ const collapsed = __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").has(i);
72
+ if (collapsed) {
73
+ const panel = __classPrivateFieldGet(this, _Accordion_panels, "f").get(i);
74
+ if (!panel)
75
+ continue;
76
+ heights[i] = panel.header?.offsetHeight || 0;
77
+ totalCollapsedHeight += heights[i];
78
+ }
79
+ else {
80
+ heights[i] = __classPrivateFieldGet(this, _Accordion_heights, "f")[i];
81
+ if (!heights[i])
82
+ unsetHeightCount++;
83
+ totalVisibleHeight += heights[i] || 0;
84
+ lastIndex = i;
85
+ }
86
+ }
87
+ let remainingHeight = containerHeight - totalCollapsedHeight - totalVisibleHeight;
88
+ let reset = false;
89
+ let addHeight = 0;
90
+ let remainingCount = visibleCount;
91
+ if (remainingHeight > 0) {
92
+ for (let i = 0; i < this.items.length; i++) {
93
+ if (__classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").has(i))
94
+ continue;
95
+ if (!heights[i]) {
96
+ addHeight = remainingHeight / unsetHeightCount;
97
+ heights[i] = addHeight;
98
+ unsetHeightCount--;
99
+ remainingHeight -= addHeight;
100
+ totalVisibleHeight += addHeight;
101
+ }
102
+ else {
103
+ addHeight = remainingHeight / remainingCount;
104
+ heights[i] += addHeight;
105
+ remainingHeight -= addHeight;
106
+ }
107
+ remainingCount--;
108
+ }
109
+ }
110
+ for (let i = 0; i < this.items.length; i++) {
111
+ if (__classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").has(i))
112
+ continue;
113
+ if (heights[i] < MIN_PANEL_SIZE) {
114
+ reset = true;
115
+ break;
116
+ }
117
+ }
118
+ if (reset) {
119
+ heights = heights.map((h, i) => __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").has(i) ? h : (totalVisibleHeight / visibleCount));
120
+ }
121
+ else if (remainingHeight > 0) {
122
+ heights[lastIndex] += remainingHeight;
123
+ }
124
+ heights.forEach((h, i) => this.setContainerSize(i, h));
125
+ }
126
+ async layout() {
127
+ await this.fixSizes();
128
+ this.containers.forEach((_, i) => {
129
+ const component = this.getContainerComponent(i);
130
+ if (component?.layout)
131
+ component.layout();
132
+ });
133
+ }
134
+ getComponent(index, id) {
135
+ let panel = __classPrivateFieldGet(this, _Accordion_panels, "f").get(index);
136
+ if (panel)
137
+ return panel;
138
+ panel = dom.createElement('og-panel');
139
+ const item = this.items[index];
140
+ panel.collapsible = true;
141
+ panel.collapsed = __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").has(index) ?? false;
142
+ panel.icon = item.icon;
143
+ panel.arrowPosition = 'left';
144
+ __classPrivateFieldGet(this, _Accordion_panels, "f").set(index, panel);
145
+ panel.addEventListener('resizestart', () => {
146
+ if (panel.collapsed) {
147
+ if (!__classPrivateFieldGet(this, _Accordion_heights, "f")[index])
148
+ __classPrivateFieldGet(this, _Accordion_heights, "f")[index] = this.getContainer(index).offsetHeight;
149
+ __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").add(index);
150
+ }
151
+ else {
152
+ __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").delete(index);
153
+ }
154
+ });
155
+ // panel.addEventListener('resize', () => {
156
+ // console.log(panel.body.offsetHeight + panel.header.offsetHeight);
157
+ // let h = panel.body.offsetHeight + panel.header.offsetHeight;
158
+ // this.setContainerSize(index, h);
159
+ // });
160
+ panel.addEventListener('resizestop', () => {
161
+ this.layout();
162
+ });
163
+ render(html `
164
+ <div slot="header">${item.title ?? ''}</div>
165
+ <div slot="body" style="height: 100%; overflow: hidden; position: relative">
166
+ ${until(this.createComponent(id ?? index))}
167
+ </div>
168
+ `, panel);
169
+ return panel;
170
+ }
171
+ connectedCallback() {
172
+ super.connectedCallback();
173
+ this.orientation = 'vertical';
174
+ }
175
+ };
176
+ _Accordion_panels = new WeakMap();
177
+ _Accordion_collapsedIndices = new WeakMap();
178
+ _Accordion_heights = new WeakMap();
179
+ Accordion.styles = [...SplitContainer.styles, css `
180
+ :host {
181
+ border: 1px solid var(--og-border-color);
182
+ }
183
+
184
+ .item {
185
+ border-top: none !important;
186
+ }
187
+
188
+ .item.first og-panel {
189
+ border-top: none;
190
+ }
191
+
192
+ .item og-panel {
193
+ border-bottom-width: 0;
194
+ border-left-width: 0;
195
+ border-right-width: 0;
196
+ }
197
+
198
+ .item.last og-panel {
199
+ border-bottom-width: 1px;
200
+ }
201
+ `];
202
+ __decorate([
203
+ property({ type: Array })
204
+ ], Accordion.prototype, "items", void 0);
205
+ Accordion = __decorate([
206
+ customElement(`og-accordion`)
207
+ ], Accordion);
208
+ export { Accordion };
209
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, render, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { AcordionItem, ComponentId } from '../types';\nimport { dom } from '../common';\nimport { Panel } from './panel';\nimport { SplitContainer } from './splitContainer';\nimport { until } from 'lit/directives/until.js';\n\nconst MIN_PANEL_SIZE = 50;\n\n@customElement(`og-accordion`)\nexport class Accordion extends SplitContainer {\n\n\tstatic styles = [...SplitContainer.styles, css`\n\t\t:host {\n\t\t\tborder: 1px solid var(--og-border-color);\n\t\t}\n\n\t\t.item {\n\t\t\tborder-top: none !important;\n\t\t}\n\t\t\n\t\t.item.first og-panel {\n\t\t\tborder-top: none;\n\t\t}\n\n\t\t.item og-panel {\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-width: 0;\n\t\t}\n\n\t\t.item.last og-panel {\n\t\t\tborder-bottom-width: 1px;\n\t\t}\n\t`];\n\n\t@property({type: Array})\n\titems: AcordionItem[] = [];\n\n\t#panels = new Map<number, Panel>();\n\t#collapsedIndices = new Set<number>();\n\t#heights: number[] = [];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.defaultLayout = false;\n\t\tthis.addEventListener('splitContainer.resize', () => {\n\t\t\tthis.#heights = [...this.containers].map(c => c.offsetHeight);\n\t\t\tthis.layout();\n\t\t});\n\t}\n\n\twillUpdate(props: Map<string, unknown>) {\n\t\tif (props.has('items')) {\n\t\t\tthis.#panels.clear();\n\t\t\tthis.#heights = [];\n\t\t\tthis.items?.forEach((item, i) => {\n\t\t\t\t// override SplitContainer collapse logic\n\t\t\t\tif (item.collapsed) this.#collapsedIndices.add(i);\n\t\t\t\titem.collapsed = false;\n\t\t\t\tthis.#heights.push(item.size);\n\t\t\t});\n\t\t}\n\t\tsuper.willUpdate(props);\n\t}\n\n\tget totalCollapsedHeight() {\n\t\treturn [...this.#collapsedIndices].reduce((acc, i) => {\n\t\t\tconst panel = this.#panels.get(i);\n\t\t\tif (!panel) return acc;\n\t\t\treturn acc + (panel.collapsed ? panel.header.offsetHeight ?? 0 : 0);\n\t\t}, 0);\n\t}\n\n\tasync fixSizes() {\n\t\tawait Promise.all([...this.#panels.values()].map(panel => panel.updateComplete));\n\t\tconst containerHeight = this.clientHeight;\n\t\tconst collapsedCount = this.#collapsedIndices.size;\n\t\tconst visibleCount = this.items.length - collapsedCount;\n\t\tlet totalCollapsedHeight = 0;\n\t\tlet totalVisibleHeight = 0;\n\t\tlet unsetHeightCount = 0;\n\t\tlet heights: number[] = new Array(this.items.length).fill(null);\n\t\tlet lastIndex: number;\n\n\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\tconst collapsed = this.#collapsedIndices.has(i);\n\t\t\tif (collapsed) {\n\t\t\t\tconst panel = this.#panels.get(i);\n\t\t\t\tif (!panel) continue;\n\t\t\t\theights[i] = panel.header?.offsetHeight || 0;\n\t\t\t\ttotalCollapsedHeight += heights[i];\n\t\t\t} else {\n\t\t\t\theights[i] = this.#heights[i];\n\t\t\t\tif (!heights[i]) unsetHeightCount++;\n\t\t\t\ttotalVisibleHeight += heights[i] || 0;\n\t\t\t\tlastIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tlet remainingHeight = containerHeight - totalCollapsedHeight - totalVisibleHeight;\n\t\tlet reset = false;\n\t\tlet addHeight = 0;\n\t\tlet remainingCount = visibleCount;\n\n\t\tif (remainingHeight > 0) {\n\t\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\t\tif (this.#collapsedIndices.has(i)) continue;\n\t\t\t\tif (!heights[i]) {\n\t\t\t\t\taddHeight = remainingHeight / unsetHeightCount\n\t\t\t\t\theights[i] = addHeight;\n\t\t\t\t\tunsetHeightCount--;\n\t\t\t\t\tremainingHeight -= addHeight;\n\t\t\t\t\ttotalVisibleHeight += addHeight;\n\t\t\t\t} else {\n\t\t\t\t\taddHeight = remainingHeight / remainingCount;\n\t\t\t\t\theights[i] += addHeight;\n\t\t\t\t\tremainingHeight -= addHeight;\n\t\t\t\t}\n\t\t\t\tremainingCount--;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\tif (this.#collapsedIndices.has(i)) continue;\n\t\t\tif (heights[i] < MIN_PANEL_SIZE) {\n\t\t\t\treset = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (reset) {\n\t\t\theights = heights.map((h, i) => this.#collapsedIndices.has(i) ? h : (totalVisibleHeight / visibleCount));\n\t\t} else if (remainingHeight > 0) {\n\t\t\theights[lastIndex] += remainingHeight;\n\t\t}\n\n\t\theights.forEach((h, i) => this.setContainerSize(i, h));\n\t}\n\n\tasync layout() {\n\t\tawait this.fixSizes();\n\t\tthis.containers.forEach((_, i) => {\n\t\t\tconst component = this.getContainerComponent(i);\n\t\t\tif (component?.layout) component.layout();\n\t\t});\n\t}\n\n\tgetComponent(index: number, id?: ComponentId) {\n\t\tlet panel = this.#panels.get(index);\n\t\tif (panel) return panel;\n\n\t\tpanel = dom.createElement<Panel>('og-panel');\n\t\tconst item = this.items[index];\n\t\tpanel.collapsible = true;\n\t\tpanel.collapsed = this.#collapsedIndices.has(index) ?? false;\n\t\tpanel.icon = item.icon;\n\t\tpanel.arrowPosition = 'left';\n\t\tthis.#panels.set(index, panel);\n\n\t\tpanel.addEventListener('resizestart', () => {\n\t\t\tif (panel.collapsed) {\n\t\t\t\tif (!this.#heights[index]) this.#heights[index] = this.getContainer(index).offsetHeight;\n\t\t\t\tthis.#collapsedIndices.add(index);\n\t\t\t} else {\n\t\t\t\tthis.#collapsedIndices.delete(index);\n\t\t\t}\n\t\t});\n\t\t\n\t\t// panel.addEventListener('resize', () => {\n\t\t// \tconsole.log(panel.body.offsetHeight + panel.header.offsetHeight);\n\t\t// \tlet h = panel.body.offsetHeight + panel.header.offsetHeight;\n\t\t// \tthis.setContainerSize(index, h);\n\t\t// });\n\t\t\n\t\tpanel.addEventListener('resizestop', () => {\n\t\t\tthis.layout();\n\t\t});\n\n\t\trender(html`\n\t\t\t<div slot=\"header\">${item.title ?? ''}</div>\n\t\t\t<div slot=\"body\" style=\"height: 100%; overflow: hidden; position: relative\">\n\t\t\t\t${until(this.createComponent(id ?? index))}\n\t\t\t</div>\n\t\t`, panel);\n\t\treturn panel;\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.orientation = 'vertical';\n\t}\n\t\n}"]}
@@ -0,0 +1,15 @@
1
+ import { LitElement } from 'lit';
2
+ export type AlertType = 'danger' | 'warning' | 'info' | 'success';
3
+ export declare class AlertEvent extends Event {
4
+ constructor(type: string);
5
+ }
6
+ export declare class Alert extends LitElement {
7
+ static styles: import("lit").CSSResult[];
8
+ text: string;
9
+ icon: string;
10
+ type: AlertType;
11
+ closable: boolean;
12
+ close(dispatchEvent?: boolean): void;
13
+ render: () => import("lit-html").TemplateResult<1>;
14
+ }
15
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/ui/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAKvD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAC,SAAS,GAAC,MAAM,GAAC,SAAS,CAAC;AAS5D,qBAAa,UAAW,SAAQ,KAAK;gBACxB,IAAI,EAAE,MAAM;CAGxB;AAED,qBACa,KAAM,SAAQ,UAAU;IAEpC,MAAM,CAAC,MAAM,4BAwCX;IAGF,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,SAAS,CAAC;IAGhB,QAAQ,UAAS;IAEjB,KAAK,CAAC,aAAa,CAAC,EAAE,OAAO;IAK7B,MAAM,6CAUJ;CAEF"}
@@ -0,0 +1,101 @@
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 { LitElement, html, css, unsafeCSS } from 'lit';
8
+ import { customElement, property } from 'lit/decorators.js';
9
+ import { ColorTypes } from '../types';
10
+ import { dom } from '../common';
11
+ const typeMap = {
12
+ 'danger': ColorTypes.Red,
13
+ 'warning': ColorTypes.Yellow,
14
+ 'info': ColorTypes.Blue,
15
+ 'success': ColorTypes.Green
16
+ };
17
+ export class AlertEvent extends Event {
18
+ constructor(type) {
19
+ super(`alert.${type}`, { bubbles: true, composed: true });
20
+ }
21
+ }
22
+ let Alert = class Alert extends LitElement {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.closable = false;
26
+ this.render = () => html `
27
+ ${this.icon ? html `
28
+ <og-icon .icon="${this.icon}"></og-icon>
29
+ ` : ''}
30
+ <div id="text">
31
+ ${this.text ? html `${this.text}` : html `<slot name="content"></slot>`}
32
+ </div>
33
+ ${this.closable ? html `
34
+ <div id="close" @click="${() => this.close(true)}">&times</div>
35
+ ` : ``}
36
+ `;
37
+ }
38
+ close(dispatchEvent) {
39
+ dom.remove(this);
40
+ if (dispatchEvent)
41
+ this.dispatchEvent(new AlertEvent('close'));
42
+ }
43
+ };
44
+ Alert.styles = [css `
45
+ :host {
46
+ font-size: var(--og-font-size);
47
+ padding: 5px;
48
+ display: flex;
49
+ flex-direction: row;
50
+ align-items: center;
51
+ gap: 5px;
52
+ border-radius: var(--og-base-radius);
53
+ }
54
+
55
+ * {
56
+ box-sizing: border-box;
57
+ }
58
+
59
+ #text {
60
+ flex: 1;
61
+ }
62
+
63
+ #close {
64
+ min-width: 16px;
65
+ height: 16px;
66
+ line-height: 16px;
67
+ flex: 0;
68
+ border-radius: 50%;
69
+ cursor: pointer;
70
+ text-align: center;
71
+ }
72
+
73
+ #close:hover {
74
+ background-color: #000000;
75
+ opacity: 0.5;
76
+ }
77
+ `, ...Array.from(Object.keys(typeMap)).map(key => css `
78
+ :host([type="${unsafeCSS(key)}"]) {
79
+ color: var(--og-colortype-${unsafeCSS(typeMap[key])}-text-color);
80
+ background-color: var(--og-colortype-${unsafeCSS(typeMap[key])}-background-color);
81
+ border: 1px solid var(--og-colortype-${unsafeCSS(typeMap[key])}-border-color);
82
+ }
83
+ `)
84
+ ];
85
+ __decorate([
86
+ property({ type: String })
87
+ ], Alert.prototype, "text", void 0);
88
+ __decorate([
89
+ property({ type: String })
90
+ ], Alert.prototype, "icon", void 0);
91
+ __decorate([
92
+ property({ type: String, reflect: true })
93
+ ], Alert.prototype, "type", void 0);
94
+ __decorate([
95
+ property({ type: Boolean })
96
+ ], Alert.prototype, "closable", void 0);
97
+ Alert = __decorate([
98
+ customElement(`og-alert`)
99
+ ], Alert);
100
+ export { Alert };
101
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../src/ui/alert.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhC,MAAM,OAAO,GAAkC;IAC9C,QAAQ,EAAE,UAAU,CAAC,GAAG;IACxB,SAAS,EAAE,UAAU,CAAC,MAAM;IAC5B,MAAM,EAAE,UAAU,CAAC,IAAI;IACvB,SAAS,EAAE,UAAU,CAAC,KAAK;CAC3B,CAAC;AAEF,MAAM,OAAO,UAAW,SAAQ,KAAK;IACpC,YAAY,IAAY;QACvB,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;IACzD,CAAC;CACD;AAGM,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,UAAU;IAA9B;;QAsDN,aAAQ,GAAG,KAAK,CAAC;QAOjB,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;IAChB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;qBACC,IAAI,CAAC,IAAI;GAC3B,CAAC,CAAC,CAAC,EAAE;;KAEH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,8BAA8B;;IAEpE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;6BACK,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;GAChD,CAAC,CAAC,CAAC,EAAE;EACN,CAAC;IAEH,CAAC;IAjBA,KAAK,CAAC,aAAuB;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,aAAa;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;;AAzDM,YAAM,GAAG,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiClB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAA;kBACrC,SAAS,CAAC,GAAG,CAAC;gCACA,SAAS,CAAC,OAAO,CAAC,GAAgB,CAAC,CAAC;2CACzB,SAAS,CAAC,OAAO,CAAC,GAAgB,CAAC,CAAC;2CACpC,SAAS,CAAC,OAAO,CAAC,GAAgB,CAAC,CAAC;;GAE5E,CAAC;CACF,AAxCY,CAwCX;AAGF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;mCACZ;AAGb;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;mCACZ;AAGb;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;mCACxB;AAGhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;uCACT;AAtDL,KAAK;IADjB,aAAa,CAAC,UAAU,CAAC;GACb,KAAK,CAyEjB","sourcesContent":["import { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ColorTypes } from '../types';\nimport { dom } from '../common';\n\nexport type AlertType = 'danger'|'warning'|'info'|'success';\n\nconst typeMap: Record<AlertType, ColorTypes> = {\n\t'danger': ColorTypes.Red,\n\t'warning': ColorTypes.Yellow,\n\t'info': ColorTypes.Blue,\n\t'success': ColorTypes.Green\n};\n\nexport class AlertEvent extends Event {\n\tconstructor(type: string) {\n\t\tsuper(`alert.${type}`, {bubbles: true, composed: true});\n\t}\n}\n\n@customElement(`og-alert`)\nexport class Alert extends LitElement {\n\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tfont-size: var(--og-font-size);\n\t\t\tpadding: 5px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tgap: 5px;\n\t\t\tborder-radius: var(--og-base-radius);\n\t\t}\n\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\t#text {\n\t\t\tflex: 1;\n\t\t}\n\n\t\t#close {\n\t\t\tmin-width: 16px;\n\t\t\theight: 16px;\n\t\t\tline-height: 16px;\n\t\t\tflex: 0;\n\t\t\tborder-radius: 50%;\n\t\t\tcursor: pointer;\n\t\t\ttext-align: center;\n\t\t}\n\n\t\t#close:hover {\n\t\t\tbackground-color: #000000;\n\t\t\topacity: 0.5;\n\t\t}\n\t\t`, ...Array.from(Object.keys(typeMap)).map(key => css`\n\t\t\t:host([type=\"${unsafeCSS(key)}\"]) {\n\t\t\t\tcolor: var(--og-colortype-${unsafeCSS(typeMap[key as AlertType])}-text-color);\n\t\t\t\tbackground-color: var(--og-colortype-${unsafeCSS(typeMap[key as AlertType])}-background-color);\n\t\t\t\tborder: 1px solid var(--og-colortype-${unsafeCSS(typeMap[key as AlertType])}-border-color);\n\t\t\t}\n\t\t`)\n\t];\n\n\t@property({type: String})\n\ttext: string;\n\n\t@property({type: String})\n\ticon: string;\n\n\t@property({type: String, reflect: true})\n\ttype: AlertType;\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\tclose(dispatchEvent?: boolean) {\n\t\tdom.remove(this);\n\t\tif (dispatchEvent) this.dispatchEvent(new AlertEvent('close'));\n\t}\n\n\trender = () => html`\n\t\t${this.icon ? html`\n\t\t\t<og-icon .icon=\"${this.icon}\"></og-icon>\n\t\t` : ''}\n\t\t<div id=\"text\">\n\t\t\t${this.text ? html`${this.text}` : html`<slot name=\"content\"></slot>`}\n\t\t</div>\n\t\t${this.closable ? html`\n\t\t\t<div id=\"close\" @click=\"${() => this.close(true)}\">&times</div>\n\t\t` : ``}\n\t`;\n\t\n}"]}
@@ -0,0 +1,7 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class ComponentEvent extends Event {
3
+ }
4
+ export declare class BaseElement extends LitElement {
5
+ readonly customProperties: Record<string, unknown>;
6
+ }
7
+ //# sourceMappingURL=baseElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseElement.d.ts","sourceRoot":"","sources":["../../src/ui/baseElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,qBAAa,cAAe,SAAQ,KAAK;CAAI;AAE7C,qBAAa,WAAY,SAAQ,UAAU;IAE1C,SAAgB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;CAE/D"}
@@ -0,0 +1,10 @@
1
+ import { LitElement } from 'lit';
2
+ export class ComponentEvent extends Event {
3
+ }
4
+ export class BaseElement extends LitElement {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.customProperties = {};
8
+ }
9
+ }
10
+ //# sourceMappingURL=baseElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseElement.js","sourceRoot":"","sources":["../../src/ui/baseElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAI;AAE7C,MAAM,OAAO,WAAY,SAAQ,UAAU;IAA3C;;QAEiB,qBAAgB,GAA4B,EAAE,CAAC;IAEhE,CAAC;CAAA","sourcesContent":["import { LitElement } from 'lit';\n\nexport class ComponentEvent extends Event { }\n\nexport class BaseElement extends LitElement {\n\n\tpublic readonly customProperties: Record<string, unknown> = {};\n\n}"]}
@@ -0,0 +1,21 @@
1
+ import { LitElement } from 'lit';
2
+ import { ColorTypes } from '../types';
3
+ import { IconSpec } from './icon';
4
+ export declare class Button extends LitElement {
5
+ static styles: import("lit").CSSResult[];
6
+ icon: string | IconSpec;
7
+ text: string;
8
+ color: ColorTypes;
9
+ caret: 'none' | 'down' | 'up';
10
+ disabled: boolean;
11
+ default: boolean;
12
+ state: 'checked' | 'unchecked';
13
+ type: 'normal' | 'toggle';
14
+ buttonIcon: IconSpec;
15
+ constructor();
16
+ connectedCallback(): void;
17
+ willUpdate(props: Map<PropertyKey, undefined>): void;
18
+ get hasContent(): string | boolean;
19
+ render: () => import("lit-html").TemplateResult<1>;
20
+ }
21
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/ui/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAItC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,qBAEa,MAAO,SAAQ,UAAU;IAErC,MAAM,CAAC,MAAM,4BAAW;IAGxB,IAAI,EAAE,MAAM,GAAC,QAAQ,CAAC;IAGtB,IAAI,EAAE,MAAM,CAAQ;IAGpB,KAAK,EAAE,UAAU,CAAqB;IAGtC,KAAK,EAAE,MAAM,GAAC,MAAM,GAAC,IAAI,CAAU;IAGnC,QAAQ,UAAS;IAGjB,OAAO,UAAS;IAGhB,KAAK,EAAE,SAAS,GAAC,WAAW,CAAQ;IAGpC,IAAI,EAAE,QAAQ,GAAC,QAAQ,CAAY;IAGnC,UAAU,EAAE,QAAQ,CAAC;;IAYrB,iBAAiB;IAKjB,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;IAgB7C,IAAI,UAAU,qBAA2F;IAEzG,MAAM,6CAWJ;CAEF"}
@@ -0,0 +1,100 @@
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 { LitElement, html } from 'lit';
8
+ import { customElement, property, state } from 'lit/decorators.js';
9
+ import { ColorTypes } from '../types';
10
+ import { colorable } from '../themes';
11
+ import { style } from './button.style';
12
+ import { classMap } from 'lit-html/directives/class-map.js';
13
+ import { utils } from '../common';
14
+ import { msg } from '@omegagrid/localize';
15
+ let Button = class Button extends LitElement {
16
+ constructor() {
17
+ super();
18
+ this.text = null;
19
+ this.color = ColorTypes.Accent;
20
+ this.caret = 'none';
21
+ this.disabled = false;
22
+ this.default = false;
23
+ this.state = null;
24
+ this.type = 'normal';
25
+ this.render = () => html `
26
+ <div class="${classMap({ inner: true, 'has-content': this.hasContent })}">
27
+ ${this.buttonIcon ? html `<og-icon .icon="${this.buttonIcon}"></og-icon>` : html ``}
28
+ ${this.hasContent ? html `
29
+ <div class="content">${this.text == null || this.text === ''
30
+ ? html `<slot name="content"></slot>`
31
+ : html `${msg(this.text)}`}
32
+ </div>
33
+ ` : html ``}
34
+ ${this.caret == 'none' ? '' : html `<og-icon icon="caret-${this.caret}" style="margin: 0"></og-icon>`}
35
+ </div>
36
+ `;
37
+ this.addEventListener('click', (e) => {
38
+ if (this.disabled)
39
+ e.stopImmediatePropagation();
40
+ else if (this.type == 'toggle') {
41
+ this.state = this.state == 'checked' ? 'unchecked' : 'checked';
42
+ }
43
+ });
44
+ }
45
+ connectedCallback() {
46
+ super.connectedCallback();
47
+ this.tabIndex = 1;
48
+ }
49
+ willUpdate(props) {
50
+ if (this.type == 'toggle' && this.state == null) {
51
+ this.state = 'unchecked';
52
+ }
53
+ if (props.has('icon')) {
54
+ if (utils.isObject(this.icon)) {
55
+ this.buttonIcon = this.icon;
56
+ }
57
+ else if (this.icon) {
58
+ this.buttonIcon = { icon: this.icon };
59
+ }
60
+ else {
61
+ this.buttonIcon = null;
62
+ }
63
+ }
64
+ }
65
+ get hasContent() { return this.text || (this.children.length > 0 && this.children[0].slot == 'content'); }
66
+ };
67
+ Button.styles = [style];
68
+ __decorate([
69
+ property()
70
+ ], Button.prototype, "icon", void 0);
71
+ __decorate([
72
+ property({ type: String })
73
+ ], Button.prototype, "text", void 0);
74
+ __decorate([
75
+ property({ type: String, reflect: true })
76
+ ], Button.prototype, "color", void 0);
77
+ __decorate([
78
+ property({ type: String, reflect: true })
79
+ ], Button.prototype, "caret", void 0);
80
+ __decorate([
81
+ property({ type: Boolean, reflect: true })
82
+ ], Button.prototype, "disabled", void 0);
83
+ __decorate([
84
+ property({ type: Boolean, reflect: true })
85
+ ], Button.prototype, "default", void 0);
86
+ __decorate([
87
+ property({ type: String, reflect: true })
88
+ ], Button.prototype, "state", void 0);
89
+ __decorate([
90
+ property({ type: String, reflect: true })
91
+ ], Button.prototype, "type", void 0);
92
+ __decorate([
93
+ state()
94
+ ], Button.prototype, "buttonIcon", void 0);
95
+ Button = __decorate([
96
+ customElement(`og-button`),
97
+ colorable({ props: ['color', 'border', 'background'] })
98
+ ], Button);
99
+ export { Button };
100
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/ui/button.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ColorTypes } from '../types';\nimport { colorable } from '../themes';\nimport { style } from './button.style';\nimport { classMap } from 'lit-html/directives/class-map.js';\nimport { IconSpec } from './icon';\nimport { utils } from '../common';\nimport { msg } from '@omegagrid/localize';\n\n@customElement(`og-button`)\n@colorable({props: ['color', 'border', 'background']})\nexport class Button extends LitElement {\n\n\tstatic styles = [style];\n\n\t@property()\n\ticon: string|IconSpec;\n\n\t@property({type: String})\n\ttext: string = null;\n\n\t@property({type: String, reflect: true})\n\tcolor: ColorTypes = ColorTypes.Accent;\n\n\t@property({type: String, reflect: true})\n\tcaret: 'none'|'down'|'up' = 'none';\n\n\t@property({type: Boolean, reflect: true})\n\tdisabled = false;\n\n\t@property({type: Boolean, reflect: true})\n\tdefault = false;\n\n\t@property({type: String, reflect: true})\n\tstate: 'checked'|'unchecked' = null;\n\n\t@property({type: String, reflect: true})\n\ttype: 'normal'|'toggle' = 'normal';\n\n\t@state()\n\tbuttonIcon: IconSpec;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.addEventListener('click', (e: PointerEvent) => {\n\t\t\tif (this.disabled) e.stopImmediatePropagation();\n\t\t\telse if (this.type == 'toggle') {\n\t\t\t\tthis.state = this.state == 'checked' ? 'unchecked' : 'checked';\n\t\t\t}\n\t\t});\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.tabIndex = 1;\n\t}\n\n\twillUpdate(props: Map<PropertyKey, undefined>) {\n\t\tif (this.type == 'toggle' && this.state == null) {\n\t\t\tthis.state = 'unchecked';\n\t\t}\n\n\t\tif (props.has('icon')) {\n\t\t\tif (utils.isObject(this.icon)) {\n\t\t\t\tthis.buttonIcon = this.icon as IconSpec;\n\t\t\t} else if (this.icon) {\n\t\t\t\tthis.buttonIcon = {icon: this.icon as string};\n\t\t\t} else {\n\t\t\t\tthis.buttonIcon = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tget hasContent() { return this.text || (this.children.length > 0 && this.children[0].slot == 'content') }\n\n\trender = () => html`\n\t\t<div class=\"${classMap({inner: true, 'has-content': this.hasContent})}\">\n\t\t\t${this.buttonIcon ? html`<og-icon .icon=\"${this.buttonIcon}\"></og-icon>` : html``}\n\t\t\t${this.hasContent ? html`\n\t\t\t<div class=\"content\">${this.text == null || this.text === ''\n\t\t\t\t? html`<slot name=\"content\"></slot>`\n\t\t\t\t: html`${msg(this.text)}`}\n\t\t\t</div>\n\t\t\t` : html``}\n\t\t\t${this.caret == 'none' ? '' : html`<og-icon icon=\"caret-${this.caret}\" style=\"margin: 0\"></og-icon>`}\n\t\t</div>\n\t`;\n\t\n}"]}
@@ -0,0 +1,2 @@
1
+ export declare const style: import("lit").CSSResult;
2
+ //# sourceMappingURL=button.style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.style.d.ts","sourceRoot":"","sources":["../../src/ui/button.style.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,yBAwDjB,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { css } from 'lit';
2
+ import constants from '../constants';
3
+ export const style = css `
4
+ :host {
5
+ box-sizing: border-box;
6
+ font-size: var(--og-font-size);
7
+ cursor: pointer;
8
+ display: inline-block;
9
+ vertical-align: middle;
10
+ overflow: hidden;
11
+ height: ${constants.BUTTON_HEIGHT}px;
12
+ outline: none;
13
+ user-select: none;
14
+ border-radius: var(--og-base-radius);
15
+ }
16
+
17
+ :host([default]) {
18
+ font-weight: bold;
19
+ text-decoration: underline;
20
+ }
21
+
22
+ :host([state=unchecked]) {
23
+ border-color: var(--og-background-color);
24
+ background-color: var(--og-background-color);
25
+ color: var(--og-text-color);
26
+ }
27
+
28
+ :host([disabled]), :host([disabled]:hover) {
29
+ background-color: gray;
30
+ border-color: var(--og-border-color);
31
+ cursor: not-allowed;
32
+ opacity: 0.5;
33
+ }
34
+
35
+ :host(:hover) {
36
+ opacity: 0.8;
37
+ }
38
+
39
+ div.inner {
40
+ display: flex;
41
+ flex-direction: row;
42
+ align-items: center;
43
+ justify-content: center;
44
+ width: 100%;
45
+ height: 100%;
46
+ }
47
+
48
+ div.content {
49
+ flex: 1 0;
50
+ white-space: nowrap;
51
+ overflow: hidden;
52
+ padding: 0 4px;
53
+ }
54
+
55
+ .has-content og-icon {
56
+ margin-left: 2px;
57
+ }
58
+
59
+ `;
60
+ //# sourceMappingURL=button.style.js.map