jpf 4.2.18 → 5.0.6

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 (292) hide show
  1. package/dist/controls/codeMirror/Editor/Editor.d.ts +19 -0
  2. package/dist/controls/codeMirror/Editor/Editor.js +151 -0
  3. package/dist/controls/codeMirror/Editor/Editor.js.map +1 -0
  4. package/dist/controls/codeMirror/index.d.ts +1 -2
  5. package/dist/controls/codeMirror/index.js +1 -2
  6. package/dist/controls/codeMirror/index.js.map +1 -1
  7. package/dist/controls/custom/FileSelector/FileSelector.d.ts +18 -18
  8. package/dist/controls/custom/FileSelector/FileSelector.js +47 -46
  9. package/dist/controls/custom/FileSelector/FileSelector.js.map +1 -1
  10. package/dist/controls/custom/LabeledControl/LabeledControl.d.ts +15 -15
  11. package/dist/controls/custom/LabeledControl/LabeledControl.js +31 -36
  12. package/dist/controls/custom/LabeledControl/LabeledControl.js.map +1 -1
  13. package/dist/controls/custom/ListItem/ListItem.d.ts +37 -36
  14. package/dist/controls/custom/ListItem/ListItem.js +62 -62
  15. package/dist/controls/custom/ListItem/ListItem.js.map +1 -1
  16. package/dist/controls/custom/index.d.ts +3 -3
  17. package/dist/controls/custom/index.js +3 -3
  18. package/dist/controls/html/Button/Button.d.ts +16 -16
  19. package/dist/controls/html/Button/Button.js +47 -50
  20. package/dist/controls/html/Button/Button.js.map +1 -1
  21. package/dist/controls/html/Div/Div.d.ts +14 -14
  22. package/dist/controls/html/Div/Div.js +23 -24
  23. package/dist/controls/html/Div/Div.js.map +1 -1
  24. package/dist/controls/html/Image/Image.d.ts +16 -16
  25. package/dist/controls/html/Image/Image.js +29 -28
  26. package/dist/controls/html/Image/Image.js.map +1 -1
  27. package/dist/controls/html/Input/Input.d.ts +34 -34
  28. package/dist/controls/html/Input/Input.js +166 -170
  29. package/dist/controls/html/Input/Input.js.map +1 -1
  30. package/dist/controls/html/Select/Select.d.ts +30 -30
  31. package/dist/controls/html/Select/Select.js +109 -110
  32. package/dist/controls/html/Select/Select.js.map +1 -1
  33. package/dist/controls/html/Span/Span.d.ts +11 -11
  34. package/dist/controls/html/Span/Span.js +22 -22
  35. package/dist/controls/html/Span/Span.js.map +1 -1
  36. package/dist/controls/html/index.d.ts +6 -6
  37. package/dist/controls/html/index.js +6 -6
  38. package/dist/controls/index.d.ts +14 -14
  39. package/dist/controls/index.js +14 -14
  40. package/dist/controls/index.js.map +1 -1
  41. package/dist/controls/{jsonViewAwesome → jsonViewerAwesome}/index.d.ts +1 -1
  42. package/dist/controls/{jsonViewAwesome → jsonViewerAwesome}/index.js +1 -1
  43. package/dist/controls/jsonViewerAwesome/index.js.map +1 -0
  44. package/dist/controls/jsonViewerAwesome/jsonFormatter/JsonFormatter.d.ts +28 -0
  45. package/dist/controls/{jsonViewAwesome → jsonViewerAwesome}/jsonFormatter/JsonFormatter.js +65 -65
  46. package/dist/controls/jsonViewerAwesome/jsonFormatter/JsonFormatter.js.map +1 -0
  47. package/dist/controls/kendo/Chart/Chart.d.ts +19 -19
  48. package/dist/controls/kendo/Chart/Chart.js +62 -62
  49. package/dist/controls/kendo/Chart/Chart.js.map +1 -1
  50. package/dist/controls/kendo/Culture/Culture.d.ts +1 -1
  51. package/dist/controls/kendo/Culture/Culture.js +25 -25
  52. package/dist/controls/kendo/Culture/Culture.js.map +1 -1
  53. package/dist/controls/kendo/DataSource/DataSource.d.ts +4 -4
  54. package/dist/controls/kendo/DataSource/DataSource.js +1 -1
  55. package/dist/controls/kendo/Editor/Editor.d.ts +14 -19
  56. package/dist/controls/kendo/Editor/Editor.js +94 -104
  57. package/dist/controls/kendo/Editor/Editor.js.map +1 -1
  58. package/dist/controls/kendo/Grid/Grid.d.ts +54 -54
  59. package/dist/controls/kendo/Grid/Grid.js +201 -218
  60. package/dist/controls/kendo/Grid/Grid.js.map +1 -1
  61. package/dist/controls/kendo/Menu/Menu.d.ts +15 -15
  62. package/dist/controls/kendo/Menu/Menu.js +90 -90
  63. package/dist/controls/kendo/Menu/Menu.js.map +1 -1
  64. package/dist/controls/kendo/ObservableObject/ObservableObject.d.ts +0 -5
  65. package/dist/controls/kendo/ObservableObject/ObservableObject.js +0 -34
  66. package/dist/controls/kendo/ObservableObject/ObservableObject.js.map +1 -1
  67. package/dist/controls/kendo/Treeview/Treeview.d.ts +17 -0
  68. package/dist/controls/kendo/{Tree/Tree.js → Treeview/Treeview.js} +107 -107
  69. package/dist/controls/kendo/Treeview/Treeview.js.map +1 -0
  70. package/dist/controls/kendo/Window/Window.d.ts +14 -0
  71. package/dist/controls/kendo/{Dialog/Dialog.js → Window/Window.js} +49 -49
  72. package/dist/controls/kendo/Window/Window.js.map +1 -0
  73. package/dist/controls/kendo/index.d.ts +8 -9
  74. package/dist/controls/kendo/index.js +8 -9
  75. package/dist/controls/kendo/index.js.map +1 -1
  76. package/dist/controls/leaflet/LabelControl/LabelControl.d.ts +12 -12
  77. package/dist/controls/leaflet/LabelControl/LabelControl.js +33 -33
  78. package/dist/controls/leaflet/LabelControl/LabelControl.js.map +1 -1
  79. package/dist/controls/leaflet/Map/Map.d.ts +45 -45
  80. package/dist/controls/leaflet/Map/Map.js +116 -115
  81. package/dist/controls/leaflet/Map/Map.js.map +1 -1
  82. package/dist/controls/leaflet/OpenStreetMapTileLayer/OpenStreetMapTileLayer.d.ts +8 -8
  83. package/dist/controls/leaflet/OpenStreetMapTileLayer/OpenStreetMapTileLayer.js +13 -13
  84. package/dist/controls/leaflet/OpenStreetMapTileLayer/OpenStreetMapTileLayer.js.map +1 -1
  85. package/dist/controls/leaflet/PointerEvent/PointerEvent.d.ts +2 -2
  86. package/dist/controls/leaflet/PointerEvent/PointerEvent.js +7 -7
  87. package/dist/controls/leaflet/PointerEvent/PointerEvent.js.map +1 -1
  88. package/dist/controls/leaflet/index.d.ts +4 -4
  89. package/dist/controls/leaflet/index.js +4 -4
  90. package/dist/controls/svg/Circle/Circle.d.ts +12 -12
  91. package/dist/controls/svg/Circle/Circle.js +20 -20
  92. package/dist/controls/svg/Circle/Circle.js.map +1 -1
  93. package/dist/controls/svg/Ellipse/Ellipse.d.ts +13 -13
  94. package/dist/controls/svg/Ellipse/Ellipse.js +21 -21
  95. package/dist/controls/svg/Ellipse/Ellipse.js.map +1 -1
  96. package/dist/controls/svg/ForeignObject/ForeignObject.d.ts +15 -14
  97. package/dist/controls/svg/ForeignObject/ForeignObject.js +21 -22
  98. package/dist/controls/svg/ForeignObject/ForeignObject.js.map +1 -1
  99. package/dist/controls/svg/Group/Group.d.ts +15 -14
  100. package/dist/controls/svg/Group/Group.js +21 -22
  101. package/dist/controls/svg/Group/Group.js.map +1 -1
  102. package/dist/controls/svg/Line/Line.d.ts +13 -13
  103. package/dist/controls/svg/Line/Line.js +21 -21
  104. package/dist/controls/svg/Line/Line.js.map +1 -1
  105. package/dist/controls/svg/Pattern/Pattern.d.ts +22 -22
  106. package/dist/controls/svg/Pattern/Pattern.js +22 -23
  107. package/dist/controls/svg/Pattern/Pattern.js.map +1 -1
  108. package/dist/controls/svg/Polygon/Polygon.d.ts +11 -11
  109. package/dist/controls/svg/Polygon/Polygon.js +20 -20
  110. package/dist/controls/svg/Polygon/Polygon.js.map +1 -1
  111. package/dist/controls/svg/Polyline/Polyline.d.ts +11 -11
  112. package/dist/controls/svg/Polyline/Polyline.js +19 -19
  113. package/dist/controls/svg/Polyline/Polyline.js.map +1 -1
  114. package/dist/controls/svg/Rectangle/Rectangle.d.ts +13 -13
  115. package/dist/controls/svg/Rectangle/Rectangle.js +21 -21
  116. package/dist/controls/svg/Rectangle/Rectangle.js.map +1 -1
  117. package/dist/controls/svg/Svg/Svg.d.ts +17 -17
  118. package/dist/controls/svg/Svg/Svg.js +23 -24
  119. package/dist/controls/svg/Svg/Svg.js.map +1 -1
  120. package/dist/controls/svg/Text/Text.d.ts +14 -14
  121. package/dist/controls/svg/Text/Text.js +22 -22
  122. package/dist/controls/svg/Text/Text.js.map +1 -1
  123. package/dist/controls/svg/Title/Title.d.ts +10 -10
  124. package/dist/controls/svg/Title/Title.js +16 -16
  125. package/dist/controls/svg/Title/Title.js.map +1 -1
  126. package/dist/controls/svg/index.d.ts +13 -13
  127. package/dist/controls/svg/index.js +13 -13
  128. package/dist/controls/svg/svg.d.ts +6 -6
  129. package/dist/controls/svg/svg.js +12 -12
  130. package/dist/controls/svg/svg.js.map +1 -1
  131. package/dist/framework/attributes.d.ts +90 -90
  132. package/dist/framework/attributes.js +1 -1
  133. package/dist/framework/{View.d.ts → element.d.ts} +61 -62
  134. package/dist/framework/{View.js → element.js} +157 -150
  135. package/dist/framework/element.js.map +1 -0
  136. package/dist/framework/event.d.ts +80 -80
  137. package/dist/framework/event.js +25 -25
  138. package/dist/framework/event.js.map +1 -1
  139. package/dist/framework/observable.d.ts +37 -12
  140. package/dist/framework/observable.js +66 -58
  141. package/dist/framework/observable.js.map +1 -1
  142. package/dist/framework/properties.d.ts +40 -0
  143. package/dist/framework/{ViewModel.js → properties.js} +303 -312
  144. package/dist/framework/properties.js.map +1 -0
  145. package/dist/framework/root.d.ts +9 -0
  146. package/dist/framework/root.js +38 -0
  147. package/dist/framework/root.js.map +1 -0
  148. package/dist/framework/style.d.ts +657 -658
  149. package/dist/framework/style.js +146 -153
  150. package/dist/framework/style.js.map +1 -1
  151. package/dist/framework/types.d.ts +87 -87
  152. package/dist/framework/types.js +1 -1
  153. package/dist/index.d.ts +12 -12
  154. package/dist/index.js +12 -12
  155. package/dist/index.js.map +1 -1
  156. package/dist/utilities/blob/blob.d.ts +1 -1
  157. package/dist/utilities/blob/blob.js +17 -17
  158. package/dist/utilities/blob/blob.js.map +1 -1
  159. package/dist/utilities/contextMenu/contextMenu.d.ts +2 -0
  160. package/dist/utilities/contextMenu/contextMenu.js +11 -0
  161. package/dist/utilities/contextMenu/contextMenu.js.map +1 -0
  162. package/dist/utilities/cookie/cookie.d.ts +3 -3
  163. package/dist/utilities/cookie/cookie.js +26 -26
  164. package/dist/utilities/cookie/cookie.js.map +1 -1
  165. package/dist/utilities/dataReaderTable/dataReaderTable.d.ts +9 -9
  166. package/dist/utilities/dataReaderTable/dataReaderTable.js +23 -23
  167. package/dist/utilities/dataReaderTable/dataReaderTable.js.map +1 -1
  168. package/dist/utilities/fetch/fetch.d.ts +7 -8
  169. package/dist/utilities/fetch/fetch.js +139 -137
  170. package/dist/utilities/fetch/fetch.js.map +1 -1
  171. package/dist/utilities/float/float.d.ts +1 -1
  172. package/dist/utilities/float/float.js +3 -3
  173. package/dist/utilities/formData/formData.d.ts +1 -1
  174. package/dist/utilities/formData/formData.js +11 -11
  175. package/dist/utilities/formData/formData.js.map +1 -1
  176. package/dist/utilities/formatting/formatting.d.ts +4 -0
  177. package/dist/utilities/formatting/formatting.js +26 -0
  178. package/dist/utilities/formatting/formatting.js.map +1 -0
  179. package/dist/utilities/htmlElement/htmlElement.d.ts +1 -1
  180. package/dist/utilities/htmlElement/htmlElement.js +16 -16
  181. package/dist/utilities/htmlElement/htmlElement.js.map +1 -1
  182. package/dist/utilities/image/image.d.ts +1 -1
  183. package/dist/utilities/image/image.js +1 -1
  184. package/dist/utilities/index.d.ts +40 -36
  185. package/dist/utilities/index.js +40 -36
  186. package/dist/utilities/index.js.map +1 -1
  187. package/dist/utilities/integer/integer.d.ts +3 -3
  188. package/dist/utilities/integer/integer.js +27 -27
  189. package/dist/utilities/integer/integer.js.map +1 -1
  190. package/dist/utilities/key/key.d.ts +2 -2
  191. package/dist/utilities/key/key.js +6 -6
  192. package/dist/utilities/navigator/navigator.d.ts +1 -1
  193. package/dist/utilities/navigator/navigator.js +8 -8
  194. package/dist/utilities/navigator/navigator.js.map +1 -1
  195. package/dist/utilities/notification/notification.d.ts +5 -5
  196. package/dist/utilities/notification/notification.js +66 -66
  197. package/dist/utilities/notification/notification.js.map +1 -1
  198. package/dist/utilities/querystring/querystring.d.ts +6 -6
  199. package/dist/utilities/querystring/querystring.js +53 -53
  200. package/dist/utilities/querystring/querystring.js.map +1 -1
  201. package/dist/utilities/router/router.d.ts +19 -19
  202. package/dist/utilities/router/router.js +80 -80
  203. package/dist/utilities/router/router.js.map +1 -1
  204. package/dist/utilities/stylesheet/stylesheet.d.ts +2 -2
  205. package/dist/utilities/stylesheet/stylesheet.js +47 -47
  206. package/dist/utilities/stylesheet/stylesheet.js.map +1 -1
  207. package/dist/utilities/uniqueId/uniqueId.d.ts +1 -1
  208. package/dist/utilities/uniqueId/uniqueId.js +4 -4
  209. package/dist/{framework → utilities/userAgent}/userAgent.d.ts +31 -31
  210. package/dist/{framework → utilities/userAgent}/userAgent.js +46 -46
  211. package/dist/utilities/userAgent/userAgent.js.map +1 -0
  212. package/dist/utilities/webSocket/webSocket.d.ts +1 -1
  213. package/dist/utilities/webSocket/webSocket.js +54 -54
  214. package/dist/utilities/webSocket/webSocket.js.map +1 -1
  215. package/package.json +18 -14
  216. package/src/controls/codeMirror/Editor/Editor.ts +207 -0
  217. package/src/controls/codeMirror/index.ts +1 -2
  218. package/src/controls/custom/FileSelector/FileSelector.ts +30 -28
  219. package/src/controls/custom/LabeledControl/LabeledControl.ts +32 -36
  220. package/src/controls/custom/ListItem/ListItem.ts +36 -36
  221. package/src/controls/html/Button/Button.ts +36 -29
  222. package/src/controls/html/Div/Div.ts +20 -21
  223. package/src/controls/html/Image/Image.ts +22 -20
  224. package/src/controls/html/Input/Input.ts +59 -61
  225. package/src/controls/html/Select/Select.ts +37 -39
  226. package/src/controls/html/Span/Span.ts +14 -14
  227. package/src/controls/index.ts +2 -2
  228. package/src/controls/{jsonViewAwesome → jsonViewerAwesome}/jsonFormatter/JsonFormatter.ts +23 -23
  229. package/src/controls/kendo/Chart/Chart.ts +34 -34
  230. package/src/controls/kendo/DataSource/DataSource.ts +1 -1
  231. package/src/controls/kendo/Editor/Editor.ts +58 -68
  232. package/src/controls/kendo/Grid/Grid.ts +77 -80
  233. package/src/controls/kendo/Menu/Menu.ts +22 -22
  234. package/src/controls/kendo/ObservableObject/ObservableObject.ts +45 -45
  235. package/src/controls/kendo/{Tree/Tree.ts → Treeview/Treeview.ts} +15 -15
  236. package/src/controls/kendo/{Dialog/Dialog.ts → Window/Window.ts} +21 -19
  237. package/src/controls/kendo/index.ts +3 -3
  238. package/src/controls/leaflet/LabelControl/LabelControl.ts +10 -10
  239. package/src/controls/leaflet/Map/Map.ts +41 -38
  240. package/src/controls/leaflet/OpenStreetMapTileLayer/OpenStreetMapTileLayer.ts +3 -3
  241. package/src/controls/svg/Circle/Circle.ts +14 -14
  242. package/src/controls/svg/Ellipse/Ellipse.ts +15 -15
  243. package/src/controls/svg/ForeignObject/ForeignObject.ts +19 -20
  244. package/src/controls/svg/Group/Group.ts +19 -19
  245. package/src/controls/svg/Line/Line.ts +15 -15
  246. package/src/controls/svg/Pattern/Pattern.ts +25 -25
  247. package/src/controls/svg/Polygon/Polygon.ts +13 -13
  248. package/src/controls/svg/Polyline/Polyline.ts +13 -13
  249. package/src/controls/svg/Rectangle/Rectangle.ts +15 -15
  250. package/src/controls/svg/Svg/Svg.ts +19 -19
  251. package/src/controls/svg/Text/Text.ts +16 -16
  252. package/src/controls/svg/Title/Title.ts +12 -12
  253. package/src/controls/svg/svg.ts +4 -4
  254. package/src/framework/attributes.ts +46 -46
  255. package/src/framework/{View.ts → element.ts} +52 -39
  256. package/src/framework/event.ts +7 -7
  257. package/src/framework/observable.ts +94 -60
  258. package/src/framework/properties.ts +393 -0
  259. package/src/framework/root.ts +45 -0
  260. package/src/framework/style.ts +330 -340
  261. package/src/index.ts +4 -4
  262. package/src/utilities/contextMenu/contextMenu.ts +16 -0
  263. package/src/utilities/fetch/fetch.ts +16 -14
  264. package/src/utilities/formatting/formatting.ts +29 -0
  265. package/src/utilities/index.ts +7 -3
  266. package/src/utilities/router/router.ts +3 -3
  267. package/dist/controls/codeMirror/HtmlEditor/HtmlEditor.d.ts +0 -16
  268. package/dist/controls/codeMirror/HtmlEditor/HtmlEditor.js +0 -120
  269. package/dist/controls/codeMirror/HtmlEditor/HtmlEditor.js.map +0 -1
  270. package/dist/controls/codeMirror/JsonEditor/JsonEditor.d.ts +0 -16
  271. package/dist/controls/codeMirror/JsonEditor/JsonEditor.js +0 -104
  272. package/dist/controls/codeMirror/JsonEditor/JsonEditor.js.map +0 -1
  273. package/dist/controls/jsonViewAwesome/index.js.map +0 -1
  274. package/dist/controls/jsonViewAwesome/jsonFormatter/JsonFormatter.d.ts +0 -28
  275. package/dist/controls/jsonViewAwesome/jsonFormatter/JsonFormatter.js.map +0 -1
  276. package/dist/controls/kendo/Dialog/Dialog.d.ts +0 -14
  277. package/dist/controls/kendo/Dialog/Dialog.js.map +0 -1
  278. package/dist/controls/kendo/Tree/Tree.d.ts +0 -17
  279. package/dist/controls/kendo/Tree/Tree.js.map +0 -1
  280. package/dist/framework/View.js.map +0 -1
  281. package/dist/framework/ViewModel.d.ts +0 -42
  282. package/dist/framework/ViewModel.js.map +0 -1
  283. package/dist/framework/userAgent.js.map +0 -1
  284. package/dist/utilities/html/html.d.ts +0 -1
  285. package/dist/utilities/html/html.js +0 -8
  286. package/dist/utilities/html/html.js.map +0 -1
  287. package/src/controls/codeMirror/HtmlEditor/HtmlEditor.ts +0 -153
  288. package/src/controls/codeMirror/JsonEditor/JsonEditor.ts +0 -136
  289. package/src/framework/ViewModel.ts +0 -528
  290. package/src/utilities/html/html.ts +0 -8
  291. /package/src/controls/{jsonViewAwesome → jsonViewerAwesome}/index.ts +0 -0
  292. /package/src/{framework → utilities/userAgent}/userAgent.ts +0 -0
@@ -1,312 +1,303 @@
1
- import { unwrap, isSubscribable } from "knockout";
2
- import { userAgent } from "./userAgent";
3
- import { mouseEvents, touchEvents, isGlobalEvent } from "./event";
4
- import { extend } from "jquery";
5
- export function handleWebSocketMessage(object, message) {
6
- bubbleDownObjectTreeAndExecuteHandler(object, (object) => {
7
- const webSocketMessageHandler = object;
8
- if (webSocketMessageHandler.handleWebSocketMessage && typeof webSocketMessageHandler.handleWebSocketMessage === "function") {
9
- webSocketMessageHandler.handleWebSocketMessage(message);
10
- }
11
- });
12
- }
13
- export function bubbleDownObjectTreeAndExecuteHandler(object, handler) {
14
- if (object.constructor === Array) {
15
- for (const arrayEntry of object) {
16
- if (typeof arrayEntry === "object") {
17
- bubbleDownObjectTreeAndExecuteHandler(arrayEntry, handler);
18
- }
19
- }
20
- }
21
- else {
22
- if (isSubscribable(object)) {
23
- var unwrapped = unwrap(object);
24
- if (typeof unwrapped === "object") {
25
- bubbleDownObjectTreeAndExecuteHandler(unwrapped, handler);
26
- }
27
- }
28
- else {
29
- handler(object);
30
- for (const key in Object.keys(object)) {
31
- const property = object[key];
32
- if (property && typeof property === "object") {
33
- bubbleDownObjectTreeAndExecuteHandler(property, handler);
34
- }
35
- }
36
- }
37
- }
38
- }
39
- export function isNullOrUndefined(value) {
40
- return value === null || typeof value === "undefined";
41
- }
42
- export class ViewModel {
43
- constructor(properties) {
44
- this.setProperties(this, properties);
45
- }
46
- setProperties(object, properties) {
47
- if (properties) {
48
- Object.keys(properties).forEach((property) => {
49
- object[property] = properties[property];
50
- });
51
- }
52
- }
53
- attributes;
54
- classNames;
55
- style;
56
- visible;
57
- disabled;
58
- innerHtml;
59
- textContent;
60
- addViewModelToDataObject;
61
- userSelectable;
62
- eventListeners;
63
- viewType;
64
- focused;
65
- }
66
- export function extendProperties(target, source) {
67
- return extend(true, target, source);
68
- }
69
- export function applyBindings(properties, element, subscriptions) {
70
- element.setAttribute("viewtype", properties.viewType || "View");
71
- if (properties.classNames) {
72
- applyClassesToElement(unwrap(properties.classNames), true, element);
73
- if (isSubscribable(properties.classNames)) {
74
- const subscription = properties.classNames.subscribe((classNames) => {
75
- applyClassesToElement(classNames, true, element);
76
- });
77
- if (subscriptions) {
78
- subscriptions.push(subscription);
79
- }
80
- }
81
- }
82
- if (properties.attributes) {
83
- Object.keys(properties.attributes).forEach((key) => {
84
- var value = properties.attributes[key];
85
- applyAttributeToElement(key, unwrap(value), element);
86
- if (isSubscribable(value)) {
87
- const subscription = value.subscribe((newValue) => {
88
- applyAttributeToElement(key, newValue, element);
89
- });
90
- if (subscriptions) {
91
- subscriptions.push(subscription);
92
- }
93
- }
94
- });
95
- }
96
- if (properties.style) {
97
- Object.keys(properties.style).forEach((key) => {
98
- const style = properties.style[key];
99
- element.style[key] = unwrap(style);
100
- if (isSubscribable(style)) {
101
- const subscription = style.subscribe((newStyle) => {
102
- element.style[key] = newStyle;
103
- });
104
- if (subscriptions) {
105
- subscriptions.push(subscription);
106
- }
107
- }
108
- });
109
- }
110
- if (!isNullOrUndefined(properties.innerHtml)) {
111
- element.innerHTML = unwrap(properties.innerHtml);
112
- if (isSubscribable(properties.innerHtml)) {
113
- const subscription = properties.innerHtml.subscribe((innerHtml) => {
114
- element.innerHTML = innerHtml;
115
- });
116
- if (subscriptions) {
117
- subscriptions.push(subscription);
118
- }
119
- }
120
- }
121
- if (!isNullOrUndefined(properties.textContent)) {
122
- element.textContent = unwrap(properties.textContent);
123
- if (isSubscribable(properties.textContent)) {
124
- const subscription = properties.textContent.subscribe((textContent) => {
125
- if (element.hasChildNodes() && element.childNodes.length === 1 && element.childNodes[0].nodeType === 3) {
126
- element.firstChild.nodeValue = textContent;
127
- }
128
- else {
129
- element.textContent = textContent;
130
- }
131
- });
132
- if (subscriptions) {
133
- subscriptions.push(subscription);
134
- }
135
- }
136
- }
137
- if (properties.userSelectable === false) {
138
- applyEventListenerToElement("selectstart", () => { return false; }, { passive: true }, element);
139
- element.style.userSelect = "none";
140
- }
141
- if (properties.addViewModelToDataObject) {
142
- if (!element["data"]) {
143
- element["data"] = {};
144
- }
145
- element["data"].viewModel = properties;
146
- }
147
- if (properties.eventListeners) {
148
- applyEventListenersToElement(properties, element);
149
- }
150
- applyVisibilityToElement(unwrap(properties.visible), element);
151
- if (isSubscribable(properties.visible)) {
152
- const subscription = properties.visible.subscribe((visible) => {
153
- applyVisibilityToElement(visible, element);
154
- });
155
- if (subscriptions) {
156
- subscriptions.push(subscription);
157
- }
158
- }
159
- applyDisabledToElement(unwrap(properties.disabled), element);
160
- if (isSubscribable(properties.disabled)) {
161
- const subscription = properties.disabled.subscribe((disabled) => {
162
- applyDisabledToElement(disabled, element);
163
- });
164
- if (subscriptions) {
165
- subscriptions.push(subscription);
166
- }
167
- }
168
- applyFocusToElement(unwrap(properties.focused), element);
169
- if (isSubscribable(properties.focused)) {
170
- const subscription = properties.focused.subscribe((focused) => {
171
- applyFocusToElement(focused, element);
172
- });
173
- if (subscriptions) {
174
- subscriptions.push(subscription);
175
- }
176
- }
177
- }
178
- function applyVisibilityToElement(visible, element) {
179
- if (visible === false) {
180
- element.classList.add("hidden");
181
- }
182
- else {
183
- element.classList.remove("hidden");
184
- }
185
- }
186
- function applyDisabledToElement(disabled, element) {
187
- if (disabled) {
188
- element.setAttribute("disabled", "disabled");
189
- }
190
- else {
191
- element.removeAttribute("disabled");
192
- }
193
- }
194
- function applyEventListenersToElement(viewModel, element) {
195
- const clickEventListeners = new Array();
196
- const doubleClickEventListeners = new Array();
197
- Object.entries(viewModel.eventListeners).forEach((entry) => {
198
- var eventName = entry[0];
199
- var eventListener = entry[1];
200
- if (eventName === "click") {
201
- clickEventListeners.push(eventListener);
202
- return;
203
- }
204
- if (eventName === "dblclick") {
205
- doubleClickEventListeners.push(eventListener);
206
- return;
207
- }
208
- if (eventName === "dragstart") {
209
- element.setAttribute("draggable", "true");
210
- }
211
- if (isGlobalEvent(eventName)) {
212
- applyEventListenerToElement(eventName, (event) => {
213
- if (eventListener.options) {
214
- const options = eventListener.options;
215
- const keyEvent = event;
216
- if (options.altKey && !keyEvent.altKey) {
217
- return;
218
- }
219
- if (options.shiftKey && !keyEvent.shiftKey) {
220
- return;
221
- }
222
- if (options.ctrlKey && !keyEvent.ctrlKey) {
223
- return;
224
- }
225
- if (options.eventKey && options.eventKey !== keyEvent.key) {
226
- return;
227
- }
228
- }
229
- eventListener.listener.call(viewModel, event);
230
- }, eventListener.options, element);
231
- }
232
- else if (mouseEvents[eventName] && userAgent.device.supportsMouseEvents) {
233
- applyEventListenerToElement(eventName, eventListener.listener, eventListener.options, element);
234
- }
235
- else if (touchEvents[eventName] && userAgent.device.supportsTouchEvents) {
236
- applyEventListenerToElement(eventName, eventListener.listener, eventListener.options, element);
237
- }
238
- });
239
- clickEventListeners.forEach((clickEventListener) => {
240
- if (userAgent.device.supportsTouchEvents) {
241
- applyEventListenerToElement("tap", clickEventListener.listener, clickEventListener.options, element);
242
- }
243
- if (userAgent.device.supportsMouseEvents) {
244
- applyEventListenerToElement("click", clickEventListener.listener, clickEventListener.options, element);
245
- }
246
- });
247
- doubleClickEventListeners.forEach((doubleClickEventListener) => {
248
- if (userAgent.device.supportsTouchEvents) {
249
- applyEventListenerToElement("dbltap", doubleClickEventListener.listener, doubleClickEventListener.options, element);
250
- }
251
- if (userAgent.device.supportsMouseEvents) {
252
- applyEventListenerToElement("dblclick", doubleClickEventListener.listener, doubleClickEventListener.options, element);
253
- }
254
- });
255
- }
256
- function applyEventListenerToElement(type, listener, options, element) {
257
- if (!type) {
258
- throw new Error("type is mandatory");
259
- }
260
- if (!listener) {
261
- throw new Error("listener is mandatory");
262
- }
263
- if (!options) {
264
- options = {};
265
- }
266
- if (!options.passive) {
267
- options.passive = false;
268
- }
269
- if (!options.once) {
270
- options.once = false;
271
- }
272
- if (element.addEventListener) {
273
- element.addEventListener(type, (event) => {
274
- listener(event);
275
- }, {
276
- passive: options.passive,
277
- once: options.once
278
- });
279
- }
280
- else if (element["attachEvent"]) {
281
- element["attachEvent"](type, (event) => {
282
- listener(event);
283
- });
284
- }
285
- else {
286
- throw "Your browser does not support 'addEventListener'";
287
- }
288
- }
289
- function applyClassesToElement(classNames, replace, element) {
290
- if (replace) {
291
- element.className = "";
292
- }
293
- if (classNames) {
294
- classNames.forEach((className) => {
295
- element.classList.add(className);
296
- });
297
- }
298
- }
299
- function applyAttributeToElement(name, value, element) {
300
- if (isNullOrUndefined(value)) {
301
- element.removeAttribute(name);
302
- }
303
- else {
304
- element.setAttribute(name, value);
305
- }
306
- }
307
- function applyFocusToElement(focused, element) {
308
- if (focused) {
309
- element.focus();
310
- }
311
- }
312
- //# sourceMappingURL=ViewModel.js.map
1
+ import { mouseEvents, touchEvents, isGlobalEvent } from "./event";
2
+ import { unwrap, executeHandlerOnObject, isSubscribable } from "./observable";
3
+ import { userAgent } from "../utilities/userAgent/userAgent";
4
+ export class Properties {
5
+ setProperties(object, properties) {
6
+ if (properties) {
7
+ Object.keys(properties).forEach((property) => {
8
+ object[property] = properties[property];
9
+ });
10
+ }
11
+ }
12
+ attributes;
13
+ classNames;
14
+ style;
15
+ visible;
16
+ disabled;
17
+ innerHtml;
18
+ textContent;
19
+ addViewModelToDataObject;
20
+ userSelectable;
21
+ eventListeners;
22
+ elementType;
23
+ focused;
24
+ }
25
+ export function handleWebSocketMessage(object, message) {
26
+ executeHandlerOnObject((object) => {
27
+ const webSocketMessageHandler = object;
28
+ if (webSocketMessageHandler.handleWebSocketMessage && typeof webSocketMessageHandler.handleWebSocketMessage === "function") {
29
+ webSocketMessageHandler.handleWebSocketMessage(message);
30
+ }
31
+ }, object);
32
+ }
33
+ export function isNullOrUndefined(value) {
34
+ return value === null || typeof value === "undefined";
35
+ }
36
+ export function extendProperties(target, preserveExisting, overWriteExisting) {
37
+ if (overWriteExisting || preserveExisting) {
38
+ target = target || {};
39
+ if (typeof preserveExisting === "object") {
40
+ Object.keys(preserveExisting).forEach((key) => {
41
+ if (!target.hasOwnProperty(key) || typeof target[key] === "undefined") {
42
+ target[key] = preserveExisting[key];
43
+ }
44
+ });
45
+ }
46
+ if (typeof overWriteExisting === "object") {
47
+ Object.keys(overWriteExisting).forEach((key) => {
48
+ target[key] = overWriteExisting[key];
49
+ });
50
+ }
51
+ }
52
+ return target;
53
+ }
54
+ export function applyBindings(properties, element, disposers) {
55
+ element.setAttribute("elementtype", properties.elementType || "Element");
56
+ if (properties.classNames) {
57
+ applyClassesToElement(unwrap(properties.classNames), true, element);
58
+ if (isSubscribable(properties.classNames)) {
59
+ const disposer = properties.classNames.subscribe((classNames) => {
60
+ applyClassesToElement(classNames, true, element);
61
+ });
62
+ if (disposers) {
63
+ disposers.push(disposer);
64
+ }
65
+ }
66
+ }
67
+ if (properties.attributes) {
68
+ Object.keys(properties.attributes).forEach((key) => {
69
+ var value = properties.attributes[key];
70
+ applyAttributeToElement(key, unwrap(value), element);
71
+ if (isSubscribable(value)) {
72
+ const disposer = value.subscribe((value) => {
73
+ applyAttributeToElement(key, value, element);
74
+ });
75
+ if (disposers) {
76
+ disposers.push(disposer);
77
+ }
78
+ }
79
+ });
80
+ }
81
+ if (properties.style) {
82
+ Object.keys(properties.style).forEach((key) => {
83
+ const style = properties.style[key];
84
+ element.style[key] = unwrap(style);
85
+ if (isSubscribable(style)) {
86
+ const disposer = style.subscribe((style) => {
87
+ element.style[key] = style;
88
+ });
89
+ if (disposers) {
90
+ disposers.push(disposer);
91
+ }
92
+ }
93
+ });
94
+ }
95
+ if (!isNullOrUndefined(properties.innerHtml)) {
96
+ element.innerHTML = unwrap(properties.innerHtml);
97
+ if (isSubscribable(properties.innerHtml)) {
98
+ const disposer = properties.innerHtml.subscribe((innerHtml) => {
99
+ element.innerHTML = innerHtml;
100
+ });
101
+ if (disposers) {
102
+ disposers.push(disposer);
103
+ }
104
+ }
105
+ }
106
+ if (!isNullOrUndefined(properties.textContent)) {
107
+ const textContent = unwrap(properties.textContent);
108
+ if (element.hasChildNodes() && element.childNodes.length === 1 && element.childNodes[0].nodeType === 3) {
109
+ element.firstChild.nodeValue = textContent;
110
+ }
111
+ else {
112
+ element.textContent = unwrap(properties.textContent);
113
+ }
114
+ if (isSubscribable(properties.textContent)) {
115
+ const disposer = properties.textContent.subscribe((textContent) => {
116
+ if (element.hasChildNodes() && element.childNodes.length === 1 && element.childNodes[0].nodeType === 3) {
117
+ element.firstChild.nodeValue = textContent;
118
+ }
119
+ else {
120
+ element.textContent = unwrap(properties.textContent);
121
+ }
122
+ });
123
+ if (disposers) {
124
+ disposers.push(disposer);
125
+ }
126
+ }
127
+ }
128
+ if (properties.userSelectable === false) {
129
+ applyEventListenerToElement("selectstart", () => { return false; }, { passive: true }, element);
130
+ element.style.userSelect = "none";
131
+ }
132
+ if (properties.addViewModelToDataObject) {
133
+ if (!element["data"]) {
134
+ element["data"] = {};
135
+ }
136
+ element["data"].viewModel = properties;
137
+ }
138
+ if (properties.eventListeners) {
139
+ applyEventListenersToElement(properties, element);
140
+ }
141
+ applyVisibilityToElement(unwrap(properties.visible), element);
142
+ if (isSubscribable(properties.visible)) {
143
+ const disposer = properties.visible.subscribe((visible) => {
144
+ applyVisibilityToElement(visible, element);
145
+ });
146
+ if (disposers) {
147
+ disposers.push(disposer);
148
+ }
149
+ }
150
+ applyDisabledToElement(unwrap(properties.disabled), element);
151
+ if (isSubscribable(properties.disabled)) {
152
+ const disposer = properties.disabled.subscribe((disabled) => {
153
+ applyDisabledToElement(disabled, element);
154
+ });
155
+ if (disposers) {
156
+ disposers.push(disposer);
157
+ }
158
+ }
159
+ applyFocusToElement(unwrap(properties.focused), element);
160
+ if (isSubscribable(properties.focused)) {
161
+ const disposer = properties.focused.subscribe((focused) => {
162
+ applyFocusToElement(focused, element);
163
+ });
164
+ if (disposers) {
165
+ disposers.push(disposer);
166
+ }
167
+ }
168
+ }
169
+ function applyVisibilityToElement(visible, element) {
170
+ if (visible === false) {
171
+ element.classList.add("hidden");
172
+ }
173
+ else {
174
+ element.classList.remove("hidden");
175
+ }
176
+ }
177
+ function applyDisabledToElement(disabled, element) {
178
+ if (disabled) {
179
+ element.setAttribute("disabled", "disabled");
180
+ }
181
+ else {
182
+ element.removeAttribute("disabled");
183
+ }
184
+ }
185
+ function applyEventListenersToElement(properties, element) {
186
+ const clickEventListeners = new Array();
187
+ const doubleClickEventListeners = new Array();
188
+ Object.entries(properties.eventListeners).forEach((entry) => {
189
+ var eventName = entry[0];
190
+ var eventListener = entry[1];
191
+ if (eventName === "click") {
192
+ clickEventListeners.push(eventListener);
193
+ return;
194
+ }
195
+ if (eventName === "dblclick") {
196
+ doubleClickEventListeners.push(eventListener);
197
+ return;
198
+ }
199
+ if (eventName === "dragstart") {
200
+ element.setAttribute("draggable", "true");
201
+ }
202
+ if (isGlobalEvent(eventName)) {
203
+ applyEventListenerToElement(eventName, (event) => {
204
+ if (eventListener.options) {
205
+ const options = eventListener.options;
206
+ const keyEvent = event;
207
+ if (options.altKey && !keyEvent.altKey) {
208
+ return;
209
+ }
210
+ if (options.shiftKey && !keyEvent.shiftKey) {
211
+ return;
212
+ }
213
+ if (options.ctrlKey && !keyEvent.ctrlKey) {
214
+ return;
215
+ }
216
+ if (options.eventKey && options.eventKey !== keyEvent.key) {
217
+ return;
218
+ }
219
+ }
220
+ eventListener.listener.call(properties, event);
221
+ }, eventListener.options, element);
222
+ }
223
+ else if (mouseEvents[eventName] && userAgent.device.supportsMouseEvents) {
224
+ applyEventListenerToElement(eventName, eventListener.listener, eventListener.options, element);
225
+ }
226
+ else if (touchEvents[eventName] && userAgent.device.supportsTouchEvents) {
227
+ applyEventListenerToElement(eventName, eventListener.listener, eventListener.options, element);
228
+ }
229
+ });
230
+ clickEventListeners.forEach((clickEventListener) => {
231
+ if (userAgent.device.supportsTouchEvents) {
232
+ applyEventListenerToElement("tap", clickEventListener.listener, clickEventListener.options, element);
233
+ }
234
+ if (userAgent.device.supportsMouseEvents) {
235
+ applyEventListenerToElement("click", clickEventListener.listener, clickEventListener.options, element);
236
+ }
237
+ });
238
+ doubleClickEventListeners.forEach((doubleClickEventListener) => {
239
+ if (userAgent.device.supportsTouchEvents) {
240
+ applyEventListenerToElement("dbltap", doubleClickEventListener.listener, doubleClickEventListener.options, element);
241
+ }
242
+ if (userAgent.device.supportsMouseEvents) {
243
+ applyEventListenerToElement("dblclick", doubleClickEventListener.listener, doubleClickEventListener.options, element);
244
+ }
245
+ });
246
+ }
247
+ function applyEventListenerToElement(type, listener, options, element) {
248
+ if (!type) {
249
+ throw new Error("type is mandatory");
250
+ }
251
+ if (!listener) {
252
+ throw new Error("listener is mandatory");
253
+ }
254
+ if (!options) {
255
+ options = {};
256
+ }
257
+ if (!options.passive) {
258
+ options.passive = false;
259
+ }
260
+ if (!options.once) {
261
+ options.once = false;
262
+ }
263
+ if (element.addEventListener) {
264
+ element.addEventListener(type, (event) => {
265
+ listener.call(event);
266
+ }, {
267
+ passive: options.passive,
268
+ once: options.once
269
+ });
270
+ }
271
+ else if (element["attachEvent"]) {
272
+ element["attachEvent"](type, (event) => {
273
+ listener(event);
274
+ });
275
+ }
276
+ else {
277
+ throw "Your browser does not support 'addEventListener'";
278
+ }
279
+ }
280
+ function applyClassesToElement(classNames, replace, element) {
281
+ if (replace) {
282
+ element.className = "";
283
+ }
284
+ if (classNames) {
285
+ classNames.forEach((className) => {
286
+ element.classList.add(className);
287
+ });
288
+ }
289
+ }
290
+ function applyAttributeToElement(name, value, element) {
291
+ if (isNullOrUndefined(value)) {
292
+ element.removeAttribute(name);
293
+ }
294
+ else {
295
+ element.setAttribute(name, value);
296
+ }
297
+ }
298
+ function applyFocusToElement(focused, element) {
299
+ if (focused) {
300
+ element.focus();
301
+ }
302
+ }
303
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/framework/properties.ts"],"names":[],"mappings":"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"}