@kwiz/common 1.0.1

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 (310) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_dependencies.d.ts +1 -0
  3. package/dist/_dependencies.js +8 -0
  4. package/dist/_dependencies.js.map +1 -0
  5. package/dist/helpers/Guid.d.ts +119 -0
  6. package/dist/helpers/Guid.js +183 -0
  7. package/dist/helpers/Guid.js.map +1 -0
  8. package/dist/helpers/_dependencies.d.ts +2 -0
  9. package/dist/helpers/_dependencies.js +21 -0
  10. package/dist/helpers/_dependencies.js.map +1 -0
  11. package/dist/helpers/base64.d.ts +8 -0
  12. package/dist/helpers/base64.js +178 -0
  13. package/dist/helpers/base64.js.map +1 -0
  14. package/dist/helpers/browser.d.ts +144 -0
  15. package/dist/helpers/browser.js +1200 -0
  16. package/dist/helpers/browser.js.map +1 -0
  17. package/dist/helpers/browserinfo.d.ts +23 -0
  18. package/dist/helpers/browserinfo.js +215 -0
  19. package/dist/helpers/browserinfo.js.map +1 -0
  20. package/dist/helpers/collections.base.d.ts +128 -0
  21. package/dist/helpers/collections.base.js +430 -0
  22. package/dist/helpers/collections.base.js.map +1 -0
  23. package/dist/helpers/collections.d.ts +18 -0
  24. package/dist/helpers/collections.js +99 -0
  25. package/dist/helpers/collections.js.map +1 -0
  26. package/dist/helpers/color.d.ts +11 -0
  27. package/dist/helpers/color.js +57 -0
  28. package/dist/helpers/color.js.map +1 -0
  29. package/dist/helpers/cookies.d.ts +6 -0
  30. package/dist/helpers/cookies.js +56 -0
  31. package/dist/helpers/cookies.js.map +1 -0
  32. package/dist/helpers/date.d.ts +43 -0
  33. package/dist/helpers/date.js +158 -0
  34. package/dist/helpers/date.js.map +1 -0
  35. package/dist/helpers/debug.d.ts +33 -0
  36. package/dist/helpers/debug.js +177 -0
  37. package/dist/helpers/debug.js.map +1 -0
  38. package/dist/helpers/emails.d.ts +2 -0
  39. package/dist/helpers/emails.js +10 -0
  40. package/dist/helpers/emails.js.map +1 -0
  41. package/dist/helpers/eval.d.ts +1 -0
  42. package/dist/helpers/eval.js +10 -0
  43. package/dist/helpers/eval.js.map +1 -0
  44. package/dist/helpers/file.d.ts +11 -0
  45. package/dist/helpers/file.js +55 -0
  46. package/dist/helpers/file.js.map +1 -0
  47. package/dist/helpers/flatted.d.ts +20 -0
  48. package/dist/helpers/flatted.js +135 -0
  49. package/dist/helpers/flatted.js.map +1 -0
  50. package/dist/helpers/functions.d.ts +4 -0
  51. package/dist/helpers/functions.js +17 -0
  52. package/dist/helpers/functions.js.map +1 -0
  53. package/dist/helpers/graph/calendar.types.d.ts +3 -0
  54. package/dist/helpers/graph/calendar.types.js +15 -0
  55. package/dist/helpers/graph/calendar.types.js.map +1 -0
  56. package/dist/helpers/http.d.ts +25 -0
  57. package/dist/helpers/http.js +70 -0
  58. package/dist/helpers/http.js.map +1 -0
  59. package/dist/helpers/images.d.ts +16 -0
  60. package/dist/helpers/images.js +21 -0
  61. package/dist/helpers/images.js.map +1 -0
  62. package/dist/helpers/index.d.ts +29 -0
  63. package/dist/helpers/index.js +46 -0
  64. package/dist/helpers/index.js.map +1 -0
  65. package/dist/helpers/json.d.ts +3 -0
  66. package/dist/helpers/json.js +44 -0
  67. package/dist/helpers/json.js.map +1 -0
  68. package/dist/helpers/md5.d.ts +5 -0
  69. package/dist/helpers/md5.js +172 -0
  70. package/dist/helpers/md5.js.map +1 -0
  71. package/dist/helpers/objects.d.ts +49 -0
  72. package/dist/helpers/objects.js +271 -0
  73. package/dist/helpers/objects.js.map +1 -0
  74. package/dist/helpers/promises.d.ts +14 -0
  75. package/dist/helpers/promises.js +112 -0
  76. package/dist/helpers/promises.js.map +1 -0
  77. package/dist/helpers/random.d.ts +2 -0
  78. package/dist/helpers/random.js +32 -0
  79. package/dist/helpers/random.js.map +1 -0
  80. package/dist/helpers/scheduler/scheduler.d.ts +39 -0
  81. package/dist/helpers/scheduler/scheduler.js +109 -0
  82. package/dist/helpers/scheduler/scheduler.js.map +1 -0
  83. package/dist/helpers/sharepoint.d.ts +112 -0
  84. package/dist/helpers/sharepoint.js +629 -0
  85. package/dist/helpers/sharepoint.js.map +1 -0
  86. package/dist/helpers/strings.d.ts +56 -0
  87. package/dist/helpers/strings.js +282 -0
  88. package/dist/helpers/strings.js.map +1 -0
  89. package/dist/helpers/typecheckers.d.ts +56 -0
  90. package/dist/helpers/typecheckers.js +274 -0
  91. package/dist/helpers/typecheckers.js.map +1 -0
  92. package/dist/helpers/url.d.ts +46 -0
  93. package/dist/helpers/url.js +199 -0
  94. package/dist/helpers/url.js.map +1 -0
  95. package/dist/helpers/urlhelper.d.ts +16 -0
  96. package/dist/helpers/urlhelper.js +96 -0
  97. package/dist/helpers/urlhelper.js.map +1 -0
  98. package/dist/index.d.ts +15 -0
  99. package/dist/index.js +37 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/types/common.types.d.ts +19 -0
  102. package/dist/types/common.types.js +4 -0
  103. package/dist/types/common.types.js.map +1 -0
  104. package/dist/types/flatted.types.d.ts +49 -0
  105. package/dist/types/flatted.types.js +3 -0
  106. package/dist/types/flatted.types.js.map +1 -0
  107. package/dist/types/globals.types.d.ts +6 -0
  108. package/dist/types/globals.types.js +3 -0
  109. package/dist/types/globals.types.js.map +1 -0
  110. package/dist/types/graph/calendar.types.d.ts +79 -0
  111. package/dist/types/graph/calendar.types.js +3 -0
  112. package/dist/types/graph/calendar.types.js.map +1 -0
  113. package/dist/types/graph/index.d.ts +1 -0
  114. package/dist/types/graph/index.js +18 -0
  115. package/dist/types/graph/index.js.map +1 -0
  116. package/dist/types/index.d.ts +11 -0
  117. package/dist/types/index.js +28 -0
  118. package/dist/types/index.js.map +1 -0
  119. package/dist/types/knownscript.types.d.ts +22 -0
  120. package/dist/types/knownscript.types.js +3 -0
  121. package/dist/types/knownscript.types.js.map +1 -0
  122. package/dist/types/libs/datajs.types.d.ts +29 -0
  123. package/dist/types/libs/datajs.types.js +3 -0
  124. package/dist/types/libs/datajs.types.js.map +1 -0
  125. package/dist/types/libs/ics.types.d.ts +29 -0
  126. package/dist/types/libs/ics.types.js +3 -0
  127. package/dist/types/libs/ics.types.js.map +1 -0
  128. package/dist/types/libs/index.d.ts +3 -0
  129. package/dist/types/libs/index.js +20 -0
  130. package/dist/types/libs/index.js.map +1 -0
  131. package/dist/types/libs/msal.types.d.ts +33 -0
  132. package/dist/types/libs/msal.types.js +63 -0
  133. package/dist/types/libs/msal.types.js.map +1 -0
  134. package/dist/types/locales.d.ts +122 -0
  135. package/dist/types/locales.js +1 -0
  136. package/dist/types/locales.js.map +1 -0
  137. package/dist/types/localstoragecache.types.d.ts +8 -0
  138. package/dist/types/localstoragecache.types.js +3 -0
  139. package/dist/types/localstoragecache.types.js.map +1 -0
  140. package/dist/types/moment.d.ts +6 -0
  141. package/dist/types/moment.js +1 -0
  142. package/dist/types/moment.js.map +1 -0
  143. package/dist/types/regex.types.d.ts +14 -0
  144. package/dist/types/regex.types.js +3 -0
  145. package/dist/types/regex.types.js.map +1 -0
  146. package/dist/types/rest.types.d.ts +81 -0
  147. package/dist/types/rest.types.js +24 -0
  148. package/dist/types/rest.types.js.map +1 -0
  149. package/dist/types/sharepoint.types.d.ts +1432 -0
  150. package/dist/types/sharepoint.types.js +629 -0
  151. package/dist/types/sharepoint.types.js.map +1 -0
  152. package/dist/types/sharepoint.utils.types.d.ts +246 -0
  153. package/dist/types/sharepoint.utils.types.js +26 -0
  154. package/dist/types/sharepoint.utils.types.js.map +1 -0
  155. package/dist/utils/_dependencies.d.ts +3 -0
  156. package/dist/utils/_dependencies.js +24 -0
  157. package/dist/utils/_dependencies.js.map +1 -0
  158. package/dist/utils/base64.d.ts +2 -0
  159. package/dist/utils/base64.js +41 -0
  160. package/dist/utils/base64.js.map +1 -0
  161. package/dist/utils/consolelogger.d.ts +73 -0
  162. package/dist/utils/consolelogger.js +281 -0
  163. package/dist/utils/consolelogger.js.map +1 -0
  164. package/dist/utils/date.d.ts +10 -0
  165. package/dist/utils/date.js +30 -0
  166. package/dist/utils/date.js.map +1 -0
  167. package/dist/utils/emails.d.ts +2 -0
  168. package/dist/utils/emails.js +24 -0
  169. package/dist/utils/emails.js.map +1 -0
  170. package/dist/utils/index.d.ts +13 -0
  171. package/dist/utils/index.js +31 -0
  172. package/dist/utils/index.js.map +1 -0
  173. package/dist/utils/knownscript.d.ts +99 -0
  174. package/dist/utils/knownscript.js +261 -0
  175. package/dist/utils/knownscript.js.map +1 -0
  176. package/dist/utils/localstoragecache.d.ts +19 -0
  177. package/dist/utils/localstoragecache.js +372 -0
  178. package/dist/utils/localstoragecache.js.map +1 -0
  179. package/dist/utils/rest.d.ts +17 -0
  180. package/dist/utils/rest.js +402 -0
  181. package/dist/utils/rest.js.map +1 -0
  182. package/dist/utils/script.d.ts +33 -0
  183. package/dist/utils/script.js +169 -0
  184. package/dist/utils/script.js.map +1 -0
  185. package/dist/utils/sharepoint.rest/common.d.ts +32 -0
  186. package/dist/utils/sharepoint.rest/common.js +146 -0
  187. package/dist/utils/sharepoint.rest/common.js.map +1 -0
  188. package/dist/utils/sharepoint.rest/date.d.ts +2 -0
  189. package/dist/utils/sharepoint.rest/date.js +57 -0
  190. package/dist/utils/sharepoint.rest/date.js.map +1 -0
  191. package/dist/utils/sharepoint.rest/file.folder.d.ts +58 -0
  192. package/dist/utils/sharepoint.rest/file.folder.js +305 -0
  193. package/dist/utils/sharepoint.rest/file.folder.js.map +1 -0
  194. package/dist/utils/sharepoint.rest/index.d.ts +11 -0
  195. package/dist/utils/sharepoint.rest/index.js +28 -0
  196. package/dist/utils/sharepoint.rest/index.js.map +1 -0
  197. package/dist/utils/sharepoint.rest/item.d.ts +81 -0
  198. package/dist/utils/sharepoint.rest/item.js +444 -0
  199. package/dist/utils/sharepoint.rest/item.js.map +1 -0
  200. package/dist/utils/sharepoint.rest/list.d.ts +228 -0
  201. package/dist/utils/sharepoint.rest/list.js +868 -0
  202. package/dist/utils/sharepoint.rest/list.js.map +1 -0
  203. package/dist/utils/sharepoint.rest/listutils/GetListItemsByCaml.d.ts +19 -0
  204. package/dist/utils/sharepoint.rest/listutils/GetListItemsByCaml.js +629 -0
  205. package/dist/utils/sharepoint.rest/listutils/GetListItemsByCaml.js.map +1 -0
  206. package/dist/utils/sharepoint.rest/listutils/GetListItemsById.d.ts +14 -0
  207. package/dist/utils/sharepoint.rest/listutils/GetListItemsById.js +222 -0
  208. package/dist/utils/sharepoint.rest/listutils/GetListItemsById.js.map +1 -0
  209. package/dist/utils/sharepoint.rest/listutils/common.d.ts +3 -0
  210. package/dist/utils/sharepoint.rest/listutils/common.js +198 -0
  211. package/dist/utils/sharepoint.rest/listutils/common.js.map +1 -0
  212. package/dist/utils/sharepoint.rest/user-search.d.ts +76 -0
  213. package/dist/utils/sharepoint.rest/user-search.js +239 -0
  214. package/dist/utils/sharepoint.rest/user-search.js.map +1 -0
  215. package/dist/utils/sharepoint.rest/user.d.ts +71 -0
  216. package/dist/utils/sharepoint.rest/user.js +404 -0
  217. package/dist/utils/sharepoint.rest/user.js.map +1 -0
  218. package/dist/utils/sharepoint.rest/web.d.ts +107 -0
  219. package/dist/utils/sharepoint.rest/web.js +929 -0
  220. package/dist/utils/sharepoint.rest/web.js.map +1 -0
  221. package/dist/utils/sod.d.ts +29 -0
  222. package/dist/utils/sod.js +177 -0
  223. package/dist/utils/sod.js.map +1 -0
  224. package/package.json +60 -0
  225. package/readme.md +13 -0
  226. package/src/_dependencies.ts +2 -0
  227. package/src/helpers/Guid.ts +182 -0
  228. package/src/helpers/_dependencies.ts +3 -0
  229. package/src/helpers/base64.ts +174 -0
  230. package/src/helpers/browser.test.js +9 -0
  231. package/src/helpers/browser.ts +1299 -0
  232. package/src/helpers/browserinfo.ts +293 -0
  233. package/src/helpers/collections.base.test.js +26 -0
  234. package/src/helpers/collections.base.ts +439 -0
  235. package/src/helpers/collections.ts +108 -0
  236. package/src/helpers/color.ts +55 -0
  237. package/src/helpers/cookies.ts +55 -0
  238. package/src/helpers/date.test.js +97 -0
  239. package/src/helpers/date.ts +163 -0
  240. package/src/helpers/debug.ts +187 -0
  241. package/src/helpers/emails.ts +7 -0
  242. package/src/helpers/eval.ts +5 -0
  243. package/src/helpers/file.test.js +51 -0
  244. package/src/helpers/file.ts +59 -0
  245. package/src/helpers/flatted.ts +150 -0
  246. package/src/helpers/functions.ts +17 -0
  247. package/src/helpers/graph/calendar.types.ts +11 -0
  248. package/src/helpers/http.ts +70 -0
  249. package/src/helpers/images.ts +23 -0
  250. package/src/helpers/index.ts +29 -0
  251. package/src/helpers/json.ts +39 -0
  252. package/src/helpers/md5.ts +190 -0
  253. package/src/helpers/objects.test.js +27 -0
  254. package/src/helpers/objects.ts +256 -0
  255. package/src/helpers/promises.test.js +18 -0
  256. package/src/helpers/promises.ts +102 -0
  257. package/src/helpers/random.ts +27 -0
  258. package/src/helpers/scheduler/scheduler.test.js +104 -0
  259. package/src/helpers/scheduler/scheduler.ts +132 -0
  260. package/src/helpers/sharepoint.ts +681 -0
  261. package/src/helpers/strings.test.js +43 -0
  262. package/src/helpers/strings.ts +288 -0
  263. package/src/helpers/typecheckers.test.js +35 -0
  264. package/src/helpers/typecheckers.ts +263 -0
  265. package/src/helpers/url.test.js +18 -0
  266. package/src/helpers/url.ts +202 -0
  267. package/src/helpers/urlhelper.ts +104 -0
  268. package/src/index.ts +24 -0
  269. package/src/types/common.types.ts +16 -0
  270. package/src/types/flatted.types.ts +60 -0
  271. package/src/types/globals.types.ts +7 -0
  272. package/src/types/graph/calendar.types.ts +81 -0
  273. package/src/types/graph/index.ts +1 -0
  274. package/src/types/index.ts +12 -0
  275. package/src/types/knownscript.types.ts +19 -0
  276. package/src/types/libs/datajs.types.ts +29 -0
  277. package/src/types/libs/ics.types.ts +31 -0
  278. package/src/types/libs/index.ts +4 -0
  279. package/src/types/libs/msal.types.ts +79 -0
  280. package/src/types/locales.ts +125 -0
  281. package/src/types/localstoragecache.types.ts +9 -0
  282. package/src/types/moment.ts +7 -0
  283. package/src/types/regex.types.ts +17 -0
  284. package/src/types/rest.types.ts +94 -0
  285. package/src/types/sharepoint.types.ts +1413 -0
  286. package/src/types/sharepoint.utils.types.ts +246 -0
  287. package/src/utils/_dependencies.ts +4 -0
  288. package/src/utils/base64.ts +27 -0
  289. package/src/utils/consolelogger.ts +315 -0
  290. package/src/utils/date.ts +36 -0
  291. package/src/utils/emails.ts +25 -0
  292. package/src/utils/index.ts +13 -0
  293. package/src/utils/knownscript.ts +280 -0
  294. package/src/utils/localstoragecache.ts +419 -0
  295. package/src/utils/rest.ts +465 -0
  296. package/src/utils/script.ts +168 -0
  297. package/src/utils/sharepoint.rest/common.ts +149 -0
  298. package/src/utils/sharepoint.rest/date.ts +61 -0
  299. package/src/utils/sharepoint.rest/file.folder.ts +368 -0
  300. package/src/utils/sharepoint.rest/index.ts +11 -0
  301. package/src/utils/sharepoint.rest/item.ts +456 -0
  302. package/src/utils/sharepoint.rest/list.ts +1144 -0
  303. package/src/utils/sharepoint.rest/listutils/GetListItemsByCaml.ts +750 -0
  304. package/src/utils/sharepoint.rest/listutils/GetListItemsById.ts +265 -0
  305. package/src/utils/sharepoint.rest/listutils/common.ts +202 -0
  306. package/src/utils/sharepoint.rest/user-search.ts +254 -0
  307. package/src/utils/sharepoint.rest/user.ts +447 -0
  308. package/src/utils/sharepoint.rest/web.ts +1031 -0
  309. package/src/utils/sod.ts +193 -0
  310. package/tsconfig.json +21 -0
@@ -0,0 +1,1200 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.interval = exports.debounce = exports.addEventListeners = exports.ScriptEncode = exports.HTMLDecode = exports.HTMLEncode = exports.isIFrameAccessible = exports.isInsideIFrame = exports.createHtmlElement = exports.createStylesheet = exports.addStyleSheet = exports.delayAsync = exports.waitForAsync = exports.waitFor = exports.waitForWindowObject = exports.composePath = exports.setSelectOptionByIndex = exports.setSelectOptionByValue = exports.getSelectedOption = exports.getSelectOptionByIndex = exports.getSelectOptionByValue = exports.removeAttributeFromHTMLElements = exports.removeHTMLElement = exports.emptyHTMLElement = exports.isNode = exports.isElement = exports.getAnimationEndEventName = exports.getAnimationFlags = exports.getPageHidden = exports.computedStyleToInlineStyle = exports.cumulativeOffset = exports.getScrollbarWidth = exports.getScrollParent = exports.querySelectorAllMaintainOrder = exports.querySelectorAllFirstOrNull = exports.isElementVisible = exports.removeDOMChangedObserver = exports.registerDOMChangedObserver = exports.registerModernThemeChanged = exports.registerModernInplaceNavigationOnInit = exports.registerDocumentLoadComplete = exports.registerDOMContentLoadedListener = exports.HtmlTextContents = exports.elementFromHtml = exports.copyToClipboard = exports.copyTextToClipboard = exports.downloadFile = exports.saveFile = exports.addEventHandler = exports.triggerNativeEvent = void 0;
13
+ exports.getUniqueElementId = exports.getLoadingOverlayHtml = exports.hideLoadingOverlay = exports.showLoadingOverlay = exports.loadModernFormsCSS = exports.findAcestor = exports.isChildOf = exports.DisableAnchorInterceptInHtml = exports.DisableAnchorIntercept = exports.DisableAnchorInterceptValue = exports.DisableAnchorInterceptAttribute = exports.registerUrlChanged = exports.getReactInstanceFromElement = exports.addStyleElement = exports.dispatchCustomEvent = exports.OnWindowResize = exports.throttle = void 0;
14
+ const collections_base_1 = require("./collections.base");
15
+ const images_1 = require("./images");
16
+ const random_1 = require("./random");
17
+ const strings_1 = require("./strings");
18
+ const typecheckers_1 = require("./typecheckers");
19
+ function triggerNativeEvent(ele, eventName) {
20
+ if ((0, typecheckers_1.isNullOrUndefined)(ele)) {
21
+ return;
22
+ }
23
+ if (!(0, typecheckers_1.isNullOrUndefined)(ele.fireEvent)) { // < IE9
24
+ ele.fireEvent('on' + eventName);
25
+ }
26
+ else {
27
+ // Different events have different event classes.
28
+ // If this switch statement can't map an eventName to an eventClass,
29
+ // the event firing is going to fail.
30
+ let eventClass = "Events";
31
+ switch (eventName) {
32
+ case "click": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.
33
+ case "mousedown":
34
+ case "mouseup":
35
+ eventClass = "MouseEvents";
36
+ break;
37
+ case "focus":
38
+ case "change":
39
+ case "blur":
40
+ case "select":
41
+ eventClass = "HTMLEvents";
42
+ break;
43
+ default:
44
+ eventClass = "CustomEvent";
45
+ break;
46
+ }
47
+ var evt = document.createEvent(eventClass);
48
+ evt.initEvent(eventName, true, true);
49
+ ele.dispatchEvent(evt);
50
+ }
51
+ }
52
+ exports.triggerNativeEvent = triggerNativeEvent;
53
+ function addEventHandler(elm, event, handler) {
54
+ if ((0, typecheckers_1.isUndefined)(elm.addEventListener)) //IE8
55
+ elm.attachEvent("on" + event, handler);
56
+ else
57
+ elm.addEventListener(event, handler, false);
58
+ }
59
+ exports.addEventHandler = addEventHandler;
60
+ /** prompts user to save/download a text file */
61
+ function saveFile(fileName, fileData, type) {
62
+ //Issue 6003
63
+ let blobObject = new Blob([fileData], { type: `${type};charset=utf-8;` });
64
+ if (window.Blob && window.navigator["msSaveOrOpenBlob"]) {
65
+ //edge/IE
66
+ window.navigator["msSaveOrOpenBlob"](blobObject, fileName);
67
+ }
68
+ else {
69
+ //Issue 6025
70
+ //var encodedUri = `data:${type};charset=utf-8,` + encodeURIComponent(fileData);
71
+ let link = document.getElementById('kwizcom_download_link_tmp');
72
+ if (link) {
73
+ link.remove();
74
+ link = null;
75
+ }
76
+ var url = URL.createObjectURL(blobObject);
77
+ if (!link) {
78
+ link = document.createElement("a");
79
+ link.style.position = "fixed";
80
+ link.style.top = "-200px";
81
+ link.download = fileName;
82
+ link.innerHTML = "Click Here to download";
83
+ DisableAnchorIntercept(link);
84
+ link.id = "kwizcom_download_link_tmp";
85
+ document.body.appendChild(link); // Required for FF
86
+ link.href = url;
87
+ }
88
+ window.setTimeout(() => {
89
+ link.click();
90
+ }, 200);
91
+ }
92
+ }
93
+ exports.saveFile = saveFile;
94
+ /** force browser to download instead of opening a file */
95
+ function downloadFile(url) {
96
+ var link = document.createElement('a');
97
+ link.href = url;
98
+ var parts = link.href.replace(/\\/g, "/").split('/');
99
+ var fileName = parts[parts.length - 1];
100
+ link.download = fileName;
101
+ DisableAnchorIntercept(link);
102
+ document.body.appendChild(link);
103
+ link.click();
104
+ document.body.removeChild(link);
105
+ }
106
+ exports.downloadFile = downloadFile;
107
+ function copyTextToClipboard(text) {
108
+ var input = document.createElement("input");
109
+ input.value = text;
110
+ input.style.position = "absolute";
111
+ input.style.top = "-100px";
112
+ input.style.left = "-100px";
113
+ document.body.appendChild(input);
114
+ let copied = copyToClipboard(input);
115
+ input.remove();
116
+ return copied;
117
+ }
118
+ exports.copyTextToClipboard = copyTextToClipboard;
119
+ /** copies the text of an element to the clipboard. if not supported by browser - will return false so caller must check and show
120
+ * a message to the user asking him to hit ctrl+c
121
+ */
122
+ function copyToClipboard(el) {
123
+ // Copy textarea, pre, div, etc.
124
+ if (document.body.createTextRange) {
125
+ // IE
126
+ var textRange = document.body.createTextRange();
127
+ textRange.moveToElementText(el);
128
+ textRange.select();
129
+ textRange.execCommand("Copy");
130
+ return true;
131
+ }
132
+ else if (window.getSelection && document.createRange) {
133
+ // non-IE
134
+ var editable = el.contentEditable; // Record contentEditable status of element
135
+ var readOnly = el.readOnly; // Record readOnly status of element
136
+ el.contentEditable = true; // iOS will only select text on non-form elements if contentEditable = true;
137
+ el.readOnly = false; // iOS will not select in a read only form element
138
+ var range = document.createRange();
139
+ range.selectNodeContents(el);
140
+ var sel = window.getSelection();
141
+ sel.removeAllRanges();
142
+ sel.addRange(range); // Does not work for Firefox if a textarea or input
143
+ if (el.nodeName === "TEXTAREA" || el.nodeName === "INPUT")
144
+ el.select(); // Firefox will only select a form element with select()
145
+ if (el.setSelectionRange && navigator.userAgent.match(/ipad|ipod|iphone/i))
146
+ el.setSelectionRange(0, 999999); // iOS only selects "form" elements with SelectionRange
147
+ el.contentEditable = editable; // Restore previous contentEditable status
148
+ el.readOnly = readOnly; // Restore previous readOnly status
149
+ if (document.queryCommandSupported("copy")) {
150
+ var successful = document.execCommand('copy');
151
+ if (successful)
152
+ return true;
153
+ else
154
+ return false;
155
+ }
156
+ else {
157
+ if (!navigator.userAgent.match(/ipad|ipod|iphone|android|silk/i))
158
+ return false;
159
+ }
160
+ }
161
+ return false;
162
+ }
163
+ exports.copyToClipboard = copyToClipboard;
164
+ /** wraps the html in a div element and returns it */
165
+ function elementFromHtml(html) {
166
+ var d = document.createElement("div");
167
+ d.innerHTML = html;
168
+ return d;
169
+ }
170
+ exports.elementFromHtml = elementFromHtml;
171
+ function HtmlTextContents(htmlElement) {
172
+ let innerText = ((0, typecheckers_1.isString)(htmlElement) ? elementFromHtml(htmlElement) : htmlElement).innerText;
173
+ return (0, strings_1.stripRichTextWhitespace)(innerText.replace(/\n/g, " ").replace(/ {2}/g, " "));
174
+ }
175
+ exports.HtmlTextContents = HtmlTextContents;
176
+ function registerDOMContentLoadedListener(doc) {
177
+ return new Promise((resolve, reject) => {
178
+ doc = doc || document;
179
+ if ((0, typecheckers_1.isNullOrUndefined)(doc)) {
180
+ reject();
181
+ return;
182
+ }
183
+ if (!(0, typecheckers_1.isNullOrUndefined)(doc) && doc.readyState === "loading") {
184
+ doc.addEventListener("DOMContentLoaded", () => {
185
+ resolve();
186
+ });
187
+ }
188
+ else {
189
+ resolve();
190
+ }
191
+ });
192
+ }
193
+ exports.registerDOMContentLoadedListener = registerDOMContentLoadedListener;
194
+ function registerDocumentLoadComplete(doc) {
195
+ return new Promise((resolve, reject) => {
196
+ doc = doc || document;
197
+ if ((0, typecheckers_1.isNullOrUndefined)(doc) || !(0, typecheckers_1.isFunction)(doc.addEventListener)) {
198
+ reject();
199
+ return;
200
+ }
201
+ if (doc.readyState === "complete") {
202
+ resolve();
203
+ }
204
+ else {
205
+ doc.addEventListener("readystatechange", () => {
206
+ if (doc.readyState === "complete") {
207
+ resolve();
208
+ }
209
+ });
210
+ }
211
+ });
212
+ }
213
+ exports.registerDocumentLoadComplete = registerDocumentLoadComplete;
214
+ /** on modern experience, using navagation does inplace-page update.
215
+ * document ready, and all windows events will not trigger and global objects will remain.
216
+ * our app loader will fire this event when the page does that navigation so we can hook up to be notified.
217
+ */
218
+ function registerModernInplaceNavigationOnInit(handler) {
219
+ addEventHandler(document, "kwOnInit", handler);
220
+ }
221
+ exports.registerModernInplaceNavigationOnInit = registerModernInplaceNavigationOnInit;
222
+ /** Triggers handler when theme changes on a modern page
223
+ * When the user changes the site's theme, or when navigating to a sub-site, or clicking back
224
+ * in the browser navigating back to parent site with different theme
225
+ */
226
+ function registerModernThemeChanged(handler) {
227
+ addEventHandler(document, "kwOnThemeChanged", handler);
228
+ }
229
+ exports.registerModernThemeChanged = registerModernThemeChanged;
230
+ let _DOMChangedObserverDefs = [];
231
+ function _getDOMChangedObserverDef(ele) {
232
+ if (!isElement(ele)) {
233
+ return null;
234
+ }
235
+ let existingDef = _DOMChangedObserverDefs.filter((observer) => {
236
+ let observerEle = observer.ele;
237
+ return isElement(observerEle) && observerEle.isSameNode(ele);
238
+ })[0];
239
+ return existingDef;
240
+ }
241
+ function _getDomObserverCallbackInfo(callbackOrHandler) {
242
+ return {
243
+ handler: (0, typecheckers_1.isNullOrUndefined)(callbackOrHandler) ? null : (0, typecheckers_1.isFunction)(callbackOrHandler) ? callbackOrHandler : callbackOrHandler.handler,
244
+ key: (0, typecheckers_1.isNullOrUndefined)(callbackOrHandler) || (0, typecheckers_1.isFunction)(callbackOrHandler) ? null : callbackOrHandler.key
245
+ };
246
+ }
247
+ function registerDOMChangedObserver(callbackOrHandler, ele) {
248
+ let callbackInfo = _getDomObserverCallbackInfo(callbackOrHandler);
249
+ if (!(0, typecheckers_1.isFunction)(callbackInfo.handler)) {
250
+ return;
251
+ }
252
+ var win;
253
+ var doc;
254
+ if (ele) {
255
+ try {
256
+ doc = ele.ownerDocument;
257
+ win = doc.defaultView || doc.parentWindow;
258
+ }
259
+ catch (ex) {
260
+ }
261
+ }
262
+ else {
263
+ win = window;
264
+ doc = window && window.document;
265
+ ele = doc.body;
266
+ }
267
+ if ((0, typecheckers_1.isNullOrUndefined)(win) || (0, typecheckers_1.isNullOrUndefined)(doc)) {
268
+ return;
269
+ }
270
+ registerDOMContentLoadedListener(win.document).then(() => {
271
+ let existingDef = _getDOMChangedObserverDef(ele);
272
+ if (!(0, typecheckers_1.isNullOrUndefined)(existingDef)) {
273
+ let existingCallbackIndex = (0, typecheckers_1.isNullOrEmptyString)(callbackInfo.key) ? -1 : (0, collections_base_1.firstIndexOf)(existingDef.callbacks, cb => cb.key === callbackInfo.key);
274
+ if (existingCallbackIndex >= 0) {
275
+ //replace
276
+ existingDef.callbacks[existingCallbackIndex].handler = callbackInfo.handler;
277
+ }
278
+ else {
279
+ existingDef.callbacks.push(callbackInfo);
280
+ }
281
+ return;
282
+ }
283
+ let newDef = {
284
+ ele: ele,
285
+ callbacks: [callbackInfo]
286
+ };
287
+ let onDomChanged = debounce(() => {
288
+ if (!(0, typecheckers_1.isNullOrUndefined)(newDef) && !(0, typecheckers_1.isNullOrEmptyArray)(newDef.callbacks)) {
289
+ newDef.callbacks.forEach((c) => {
290
+ try {
291
+ c.handler();
292
+ }
293
+ catch (e) { }
294
+ });
295
+ }
296
+ }, 100);
297
+ if ("MutationObserver" in win) {
298
+ let observer = new win.MutationObserver((mutations) => {
299
+ let hasUpdates = mutations.some((mutation) => {
300
+ return !!mutation.addedNodes && !!mutation.addedNodes.length
301
+ || !!mutation.removedNodes && !!mutation.removedNodes.length;
302
+ });
303
+ if (hasUpdates) {
304
+ onDomChanged();
305
+ }
306
+ });
307
+ observer.observe(ele, {
308
+ childList: true,
309
+ subtree: true,
310
+ attributes: false,
311
+ characterData: false
312
+ });
313
+ newDef.disconnect = () => {
314
+ observer.disconnect();
315
+ observer = null;
316
+ };
317
+ }
318
+ else {
319
+ let domEvents = ["DOMNodeInsertedIntoDocument", "DOMNodeRemovedFromDocument"];
320
+ domEvents.forEach((eventName) => {
321
+ newDef.ele.addEventListener(eventName, onDomChanged, false);
322
+ });
323
+ newDef.disconnect = () => {
324
+ domEvents.forEach((eventName) => {
325
+ newDef.ele.removeEventListener(eventName, onDomChanged, false);
326
+ });
327
+ };
328
+ }
329
+ _DOMChangedObserverDefs.push(newDef);
330
+ });
331
+ }
332
+ exports.registerDOMChangedObserver = registerDOMChangedObserver;
333
+ function removeDOMChangedObserver(callbackOrHandler, ele) {
334
+ let callbackInfo = _getDomObserverCallbackInfo(callbackOrHandler);
335
+ if (!(0, typecheckers_1.isFunction)(callbackInfo.handler) && (0, typecheckers_1.isNullOrEmptyString)(callbackInfo.key)) {
336
+ return; //need function or key to remove
337
+ }
338
+ var win;
339
+ var doc;
340
+ if (ele) {
341
+ try {
342
+ doc = ele.ownerDocument;
343
+ win = doc.defaultView || doc.parentWindow;
344
+ }
345
+ catch (ex) {
346
+ }
347
+ }
348
+ else {
349
+ win = window;
350
+ doc = window && window.document;
351
+ ele = doc.body;
352
+ }
353
+ if ((0, typecheckers_1.isNullOrUndefined)(win) || (0, typecheckers_1.isNullOrUndefined)(doc)) {
354
+ return;
355
+ }
356
+ registerDOMContentLoadedListener(win.document).then(() => {
357
+ let existingDef = _getDOMChangedObserverDef(ele);
358
+ if ((0, typecheckers_1.isNullOrUndefined)(existingDef) || !isElement(existingDef.ele)) {
359
+ return;
360
+ }
361
+ if (!(0, typecheckers_1.isNullOrEmptyString)(callbackInfo.key)) //find by key
362
+ {
363
+ existingDef.callbacks = existingDef.callbacks.filter((cb) => {
364
+ return cb.key !== callbackInfo.key;
365
+ });
366
+ }
367
+ else //find by handler - probably won't work for functions that are declared inline
368
+ {
369
+ existingDef.callbacks = existingDef.callbacks.filter((cb) => {
370
+ return (0, typecheckers_1.isNullOrEmptyString)(cb.key) && cb.handler !== callbackInfo.handler;
371
+ });
372
+ }
373
+ if (existingDef.callbacks.length === 0) {
374
+ existingDef.disconnect();
375
+ _DOMChangedObserverDefs = _DOMChangedObserverDefs.filter((def) => {
376
+ return def !== existingDef;
377
+ });
378
+ }
379
+ });
380
+ }
381
+ exports.removeDOMChangedObserver = removeDOMChangedObserver;
382
+ function isElementVisible(ele) {
383
+ //must be a valid element
384
+ if (!isElement(ele) || !ele.getAttribute) {
385
+ return false;
386
+ }
387
+ try {
388
+ var doc = ele.ownerDocument;
389
+ var win = doc.defaultView || doc.parentWindow;
390
+ var computed = win.getComputedStyle(ele);
391
+ return !!(computed.display.toLowerCase() !== "none"
392
+ && computed.visibility.toLowerCase() !== "hidden"
393
+ && (ele.offsetWidth !== 0
394
+ || ele.offsetHeight !== 0
395
+ || ele.offsetParent !== null
396
+ || ele.getClientRects().length));
397
+ }
398
+ catch (ex) {
399
+ }
400
+ return false;
401
+ }
402
+ exports.isElementVisible = isElementVisible;
403
+ function querySelectorAllFirstOrNull(selectors, maintainOrder = false) {
404
+ if ((0, typecheckers_1.isNullOrUndefined)(selectors)) {
405
+ return null;
406
+ }
407
+ if (maintainOrder) {
408
+ return (querySelectorAllMaintainOrder(selectors)[0] || null);
409
+ }
410
+ else {
411
+ var result = (0, typecheckers_1.isString)(selectors) && !(0, typecheckers_1.isNullOrEmptyString)(selectors) ? document.querySelectorAll(selectors)[0] :
412
+ Array.isArray(selectors) ? document.querySelectorAll(selectors.join(","))[0] : null;
413
+ return (result || null);
414
+ }
415
+ }
416
+ exports.querySelectorAllFirstOrNull = querySelectorAllFirstOrNull;
417
+ function querySelectorAllMaintainOrder(selectors, parent) {
418
+ if ((0, typecheckers_1.isNullOrUndefined)(selectors)) {
419
+ return null;
420
+ }
421
+ var query;
422
+ if ((0, typecheckers_1.isString)(selectors) && !(0, typecheckers_1.isNullOrEmptyString)(selectors)) {
423
+ query = selectors.split(",");
424
+ }
425
+ if (Array.isArray(selectors)) {
426
+ query = selectors;
427
+ }
428
+ var eles = [];
429
+ parent = parent || document;
430
+ query.forEach((selector) => {
431
+ if ((0, typecheckers_1.isString)(selector) && !(0, typecheckers_1.isNullOrEmptyString)(selector)) {
432
+ var result = Array.prototype.slice.call(parent.querySelectorAll(selector));
433
+ eles = eles.concat(result);
434
+ }
435
+ });
436
+ return eles;
437
+ }
438
+ exports.querySelectorAllMaintainOrder = querySelectorAllMaintainOrder;
439
+ function getScrollParent(node) {
440
+ if (node === null) {
441
+ return null;
442
+ }
443
+ if (node.scrollHeight > node.clientHeight) {
444
+ return node;
445
+ }
446
+ else {
447
+ return getScrollParent(node.parentNode);
448
+ }
449
+ }
450
+ exports.getScrollParent = getScrollParent;
451
+ var _scrollbarWidth = -1;
452
+ function getScrollbarWidth() {
453
+ if (_scrollbarWidth < 0) {
454
+ var outer = document.createElement("div");
455
+ outer.style.visibility = "hidden";
456
+ outer.style.width = "100px";
457
+ outer.style["msOverflowStyle"] = "scrollbar"; // needed for WinJS apps
458
+ document.body.appendChild(outer);
459
+ var widthNoScroll = outer.offsetWidth;
460
+ // force scrollbars
461
+ outer.style.overflow = "scroll";
462
+ // add innerdiv
463
+ var inner = document.createElement("div");
464
+ inner.style.width = "100%";
465
+ outer.appendChild(inner);
466
+ var widthWithScroll = inner.offsetWidth;
467
+ // remove divs
468
+ outer.parentNode.removeChild(outer);
469
+ _scrollbarWidth = widthNoScroll - widthWithScroll;
470
+ }
471
+ return _scrollbarWidth;
472
+ }
473
+ exports.getScrollbarWidth = getScrollbarWidth;
474
+ function cumulativeOffset(element) {
475
+ var top = 0, left = 0;
476
+ do {
477
+ top += element.offsetTop || 0;
478
+ left += element.offsetLeft || 0;
479
+ element = element.offsetParent;
480
+ } while (element);
481
+ return {
482
+ top: top,
483
+ left: left
484
+ };
485
+ }
486
+ exports.cumulativeOffset = cumulativeOffset;
487
+ function computedStyleToInlineStyle(elm, options = { recursive: true, removeClassNames: true }) {
488
+ if (!elm) {
489
+ return;
490
+ }
491
+ if (options.recursive && elm.children && elm.children.length) {
492
+ var children = Array.prototype.slice.call(elm.children);
493
+ children.forEach(child => {
494
+ computedStyleToInlineStyle(child, options);
495
+ });
496
+ }
497
+ var computedStyle = window.getComputedStyle(elm);
498
+ if (options.removeClassNames) {
499
+ elm.removeAttribute("class");
500
+ }
501
+ elm.setAttribute("style", computedStyle.cssText);
502
+ }
503
+ exports.computedStyleToInlineStyle = computedStyleToInlineStyle;
504
+ function getPageHidden(document = window.document) {
505
+ var hiddenPropName;
506
+ if (typeof document.hidden !== "undefined") {
507
+ // Opera 12.10 and Firefox 18 and later support
508
+ hiddenPropName = "hidden";
509
+ }
510
+ else if (typeof document.msHidden !== "undefined") {
511
+ hiddenPropName = "msHidden";
512
+ }
513
+ else if (typeof document.webkitHidden !== "undefined") {
514
+ hiddenPropName = "webkitHidden";
515
+ }
516
+ return (0, typecheckers_1.isString)(hiddenPropName) ? document[hiddenPropName] : false;
517
+ }
518
+ exports.getPageHidden = getPageHidden;
519
+ function getAnimationFlags() {
520
+ var isSupported = false, animationstring = 'animation', keyframeprefix = '', domPrefixes = 'Webkit Moz O ms Khtml'.split(' '), pfx = '', elem = document.createElement('div');
521
+ if (elem.style.animationName !== undefined) {
522
+ isSupported = true;
523
+ }
524
+ if (isSupported === false) {
525
+ for (var i = 0; i < domPrefixes.length; i++) {
526
+ if (elem.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
527
+ pfx = domPrefixes[i];
528
+ animationstring = pfx + 'Animation';
529
+ keyframeprefix = '-' + pfx.toLowerCase() + '-';
530
+ isSupported = true;
531
+ break;
532
+ }
533
+ }
534
+ }
535
+ return {
536
+ supported: isSupported,
537
+ animationName: animationstring,
538
+ keyFramePrefix: keyframeprefix,
539
+ prefix: pfx
540
+ };
541
+ }
542
+ exports.getAnimationFlags = getAnimationFlags;
543
+ function getAnimationEndEventName() {
544
+ var animations = {
545
+ "animation": "animationend",
546
+ "OAnimation": "oAnimationEnd",
547
+ "MozAnimation": "animationend",
548
+ "WebkitAnimation": "webkitAnimationEnd"
549
+ };
550
+ var flags = getAnimationFlags();
551
+ if (flags.supported) {
552
+ return animations[flags.animationName];
553
+ }
554
+ }
555
+ exports.getAnimationEndEventName = getAnimationEndEventName;
556
+ function isElement(ele) {
557
+ return !(0, typecheckers_1.isNullOrUndefined)(ele) && (ele.nodeType === 1 || ele instanceof Element);
558
+ }
559
+ exports.isElement = isElement;
560
+ function isNode(ele) {
561
+ return !(0, typecheckers_1.isNullOrUndefined)(ele) && ((ele.nodeName && ele.nodeType >= 1 && ele.nodeType <= 12) || ele instanceof Node);
562
+ }
563
+ exports.isNode = isNode;
564
+ function _eleOrSelectorToElementArray(eleOrSelector) {
565
+ if ((0, typecheckers_1.isNullOrUndefined)(eleOrSelector)) {
566
+ return [];
567
+ }
568
+ var elements;
569
+ if ((0, typecheckers_1.isString)(eleOrSelector)) {
570
+ elements = Array.from(document.querySelectorAll(eleOrSelector));
571
+ }
572
+ else if (isElement(eleOrSelector)) {
573
+ elements = [eleOrSelector];
574
+ }
575
+ else if (Array.isArray(eleOrSelector)) {
576
+ elements = eleOrSelector;
577
+ }
578
+ else if (eleOrSelector.length
579
+ || (0, typecheckers_1.isFunction)(eleOrSelector.forEach)
580
+ || eleOrSelector instanceof NodeList) {
581
+ elements = Array.from(eleOrSelector);
582
+ }
583
+ return elements || [];
584
+ }
585
+ function emptyHTMLElement(eleOrSelector) {
586
+ var elements = _eleOrSelectorToElementArray(eleOrSelector);
587
+ elements.forEach((ele) => {
588
+ if (ele && isElement(ele) && ele.firstChild) {
589
+ while (ele.firstChild) {
590
+ try {
591
+ ele.removeChild(ele.firstChild);
592
+ }
593
+ catch (ex) {
594
+ break;
595
+ }
596
+ }
597
+ }
598
+ });
599
+ }
600
+ exports.emptyHTMLElement = emptyHTMLElement;
601
+ function removeHTMLElement(eleOrSelector) {
602
+ var elements = _eleOrSelectorToElementArray(eleOrSelector);
603
+ elements.forEach((ele) => {
604
+ try {
605
+ var parent = ele.parentNode || ele.parentElement;
606
+ if (ele && isElement(ele) && parent && parent.removeChild) {
607
+ parent.removeChild(ele);
608
+ }
609
+ }
610
+ catch (ex) {
611
+ }
612
+ });
613
+ }
614
+ exports.removeHTMLElement = removeHTMLElement;
615
+ function removeAttributeFromHTMLElements(eleOrSelector, attributeName) {
616
+ var elements = _eleOrSelectorToElementArray(eleOrSelector);
617
+ elements.forEach((elm) => {
618
+ try {
619
+ elm.removeAttribute(attributeName);
620
+ }
621
+ catch (ex) {
622
+ }
623
+ });
624
+ }
625
+ exports.removeAttributeFromHTMLElements = removeAttributeFromHTMLElements;
626
+ function getSelectOptionByValue(selectElement, value) {
627
+ if ((0, typecheckers_1.isNullOrUndefined)(selectElement) || (0, typecheckers_1.isNullOrUndefined)(value)) {
628
+ return null;
629
+ }
630
+ var option = Array.from(selectElement.options).filter(o => {
631
+ return o.value === value.toString();
632
+ })[0];
633
+ return option;
634
+ }
635
+ exports.getSelectOptionByValue = getSelectOptionByValue;
636
+ function getSelectOptionByIndex(selectElement, index) {
637
+ if ((0, typecheckers_1.isNullOrUndefined)(selectElement) || !(0, typecheckers_1.isNumeric)(index)) {
638
+ return null;
639
+ }
640
+ return selectElement.options[Number(index)];
641
+ }
642
+ exports.getSelectOptionByIndex = getSelectOptionByIndex;
643
+ function getSelectedOption(selectElement) {
644
+ if ((0, typecheckers_1.isNullOrUndefined)(selectElement)) {
645
+ return null;
646
+ }
647
+ return selectElement.options[selectElement.selectedIndex] || Array.from(selectElement.options).filter((option) => {
648
+ return option.selected;
649
+ })[0];
650
+ }
651
+ exports.getSelectedOption = getSelectedOption;
652
+ function setSelectOptionByValue(selectElement, value) {
653
+ var option = getSelectOptionByValue(selectElement, value);
654
+ if (option) {
655
+ option.selected = true;
656
+ return option;
657
+ }
658
+ return null;
659
+ }
660
+ exports.setSelectOptionByValue = setSelectOptionByValue;
661
+ function setSelectOptionByIndex(selectElement, index) {
662
+ if ((0, typecheckers_1.isNullOrUndefined)(selectElement) || (0, typecheckers_1.isNumeric)(index)) {
663
+ return null;
664
+ }
665
+ var option = selectElement.options[Number(index)];
666
+ if (option) {
667
+ option.selected = true;
668
+ return option;
669
+ }
670
+ return null;
671
+ }
672
+ exports.setSelectOptionByIndex = setSelectOptionByIndex;
673
+ function composePath(evt) {
674
+ var path = ((0, typecheckers_1.isFunction)(evt["composedPath"]) && evt["composedPath"]()) || evt.path, target = evt.target;
675
+ if (path !== null) {
676
+ // Safari doesn't include Window, and it should.
677
+ path = (path.indexOf(window) < 0) ? path.concat([window]) : path;
678
+ return path;
679
+ }
680
+ if (target === window) {
681
+ return [window];
682
+ }
683
+ function getParents(node, memo) {
684
+ memo = memo || [];
685
+ var parentNode = node.parentNode;
686
+ if (!parentNode) {
687
+ return memo;
688
+ }
689
+ else {
690
+ return getParents(parentNode, memo.concat([parentNode]));
691
+ }
692
+ }
693
+ return [target].concat(getParents(target)).concat([window]);
694
+ }
695
+ exports.composePath = composePath;
696
+ /** timeouts after 10 seconds by default */
697
+ function waitForWindowObject(typeFullName, windowOrParent, timeout = 10000) {
698
+ return waitFor(() => !(0, typecheckers_1.isTypeofFullNameNullOrUndefined)(typeFullName, windowOrParent), timeout);
699
+ }
700
+ exports.waitForWindowObject = waitForWindowObject;
701
+ /** timeouts after 10 seconds by default */
702
+ function waitFor(checker, timeout = 10000, intervalLength = 50) {
703
+ return new Promise((resolve, reject) => {
704
+ var timeoutId = null;
705
+ var max = Math.round(timeout / intervalLength);
706
+ var count = 0;
707
+ var exists = false;
708
+ var _retry = () => {
709
+ if (timeoutId) {
710
+ window.clearTimeout(timeoutId);
711
+ }
712
+ try {
713
+ exists = checker();
714
+ }
715
+ catch (ex) {
716
+ resolve(false);
717
+ return;
718
+ }
719
+ if (exists || count > max) {
720
+ resolve(exists);
721
+ }
722
+ else {
723
+ timeoutId = window.setTimeout(_retry, intervalLength);
724
+ }
725
+ count++;
726
+ };
727
+ _retry();
728
+ });
729
+ }
730
+ exports.waitFor = waitFor;
731
+ /**
732
+ * Waits for an async check to return true or times out.
733
+ * @param checker Async function that returns boolean result.
734
+ * @param timeout The timeout in milliseconds. Defaults to 10000ms.
735
+ * @param intervalLength The interval length in milliseconds to retry the checker function. Defaults to 50ms.
736
+ */
737
+ function waitForAsync(checker, timeout = 10000, intervalLength = 50) {
738
+ return __awaiter(this, void 0, void 0, function* () {
739
+ var max = Math.round(timeout / intervalLength);
740
+ var count = 0;
741
+ var exists = false;
742
+ for (var count = 0; count < max; count++) {
743
+ exists = yield checker();
744
+ if (exists) {
745
+ break;
746
+ }
747
+ yield delayAsync(intervalLength);
748
+ }
749
+ return exists;
750
+ });
751
+ }
752
+ exports.waitForAsync = waitForAsync;
753
+ /**
754
+ * An async function that returns after a set delay.
755
+ * @param delay The delay in milliseconds. Defaults to 500ms.
756
+ */
757
+ function delayAsync(delay = 500) {
758
+ return new Promise((resolve) => {
759
+ window.setTimeout(() => {
760
+ resolve(null);
761
+ }, delay);
762
+ });
763
+ }
764
+ exports.delayAsync = delayAsync;
765
+ function addStyleSheet(options, doc) {
766
+ doc = doc || document;
767
+ var head = doc.head || doc.getElementsByTagName("head")[0];
768
+ if (head) {
769
+ var link = createStylesheet(options, doc);
770
+ head.appendChild(link);
771
+ }
772
+ }
773
+ exports.addStyleSheet = addStyleSheet;
774
+ function createStylesheet(options, doc) {
775
+ doc = doc || document;
776
+ options = options || {};
777
+ options.properties = Object.assign({
778
+ type: "text/css",
779
+ rel: "stylesheet",
780
+ }, options.properties);
781
+ return createHtmlElement("link", options, doc);
782
+ }
783
+ exports.createStylesheet = createStylesheet;
784
+ function createHtmlElement(tagName, options, doc) {
785
+ doc = doc || document;
786
+ var element = doc.createElement(tagName);
787
+ if (options) {
788
+ if (options.attributes) {
789
+ Object.keys(options.attributes).forEach((attribName) => {
790
+ var attribValue = options.attributes[attribName];
791
+ if (!(0, typecheckers_1.isNullOrUndefined)(attribValue)) {
792
+ element.setAttribute(attribName, attribValue);
793
+ }
794
+ });
795
+ }
796
+ if (options.properties) {
797
+ var mergedProps = Object.assign(Object.assign({}, options.properties), {
798
+ style: options.style
799
+ });
800
+ Object.keys(mergedProps).forEach((propName) => {
801
+ var obj = mergedProps[propName];
802
+ if (!(0, typecheckers_1.isNullOrUndefined)(obj)) {
803
+ if ((0, typecheckers_1.isString)(obj) || (0, typecheckers_1.isBoolean)(obj) || (0, typecheckers_1.isNumber)(obj)) {
804
+ element[propName] = obj;
805
+ }
806
+ else {
807
+ if (!element[propName]) {
808
+ element[propName] = obj;
809
+ }
810
+ else {
811
+ Object.keys(obj).forEach((objName) => {
812
+ element[propName][objName] = obj[objName];
813
+ });
814
+ }
815
+ }
816
+ }
817
+ });
818
+ }
819
+ }
820
+ return element;
821
+ }
822
+ exports.createHtmlElement = createHtmlElement;
823
+ function isInsideIFrame(win) {
824
+ win = win || window;
825
+ try {
826
+ return win.parent.location !== win.location;
827
+ }
828
+ catch (ex) {
829
+ return true;
830
+ }
831
+ }
832
+ exports.isInsideIFrame = isInsideIFrame;
833
+ function isIFrameAccessible(iframeEle) {
834
+ try {
835
+ var location = (iframeEle.contentWindow || iframeEle.contentDocument).location;
836
+ return location && location.origin ? true : false;
837
+ }
838
+ catch (ex) {
839
+ return false;
840
+ }
841
+ }
842
+ exports.isIFrameAccessible = isIFrameAccessible;
843
+ function HTMLEncode(d) {
844
+ if ((0, typecheckers_1.isNullOrEmptyString)(d)) {
845
+ return "";
846
+ }
847
+ var tempString = String(d);
848
+ var result = [];
849
+ for (var index = 0; index < tempString.length; index++) {
850
+ var char = tempString.charAt(index);
851
+ switch (char) {
852
+ case "<":
853
+ result.push("&lt;");
854
+ break;
855
+ case ">":
856
+ result.push("&gt;");
857
+ break;
858
+ case "&":
859
+ result.push("&amp;");
860
+ break;
861
+ case '"':
862
+ result.push("&quot;");
863
+ break;
864
+ case "'":
865
+ result.push("&#39;");
866
+ break;
867
+ default:
868
+ result.push(char);
869
+ }
870
+ }
871
+ return result.join("");
872
+ }
873
+ exports.HTMLEncode = HTMLEncode;
874
+ function HTMLDecode(a) {
875
+ if ((0, typecheckers_1.isNullOrEmptyString)(a)) {
876
+ return "";
877
+ }
878
+ var e = [/&lt;/g, /&gt;/g, /&quot;/g, /&#39;/g, /&#58;/g, /&#123;/g, /&#125;/g, /&amp;/g];
879
+ var f = ["<", ">", '"', "'", ":", "{", "}", "&"];
880
+ var d = [];
881
+ for (var c = 0; c < a.length; c++) {
882
+ var b = a.indexOf("&");
883
+ if (b !== -1) {
884
+ if (b > 0) {
885
+ d.push(a.substr(0, b));
886
+ a = a.substr(b);
887
+ }
888
+ a = a.replace(e[c], f[c]);
889
+ }
890
+ else {
891
+ break;
892
+ }
893
+ }
894
+ d.push(a);
895
+ return d.join("");
896
+ }
897
+ exports.HTMLDecode = HTMLDecode;
898
+ function ScriptEncode(e) {
899
+ if (null === e || typeof e === "undefined")
900
+ return "";
901
+ for (var d = String(e), a = [], c = 0, g = d.length; c < g; c++) {
902
+ var b = d.charCodeAt(c);
903
+ if (b > 4095)
904
+ a.push("\\u" + b.toString(16).toUpperCase());
905
+ else if (b > 255)
906
+ a.push("\\u0" + b.toString(16).toUpperCase());
907
+ else if (b > 127)
908
+ a.push("\\u00" + b.toString(16).toUpperCase());
909
+ else {
910
+ var f = d.charAt(c);
911
+ switch (f) {
912
+ case "\n":
913
+ a.push("\\n");
914
+ break;
915
+ case "\r":
916
+ a.push("\\r");
917
+ break;
918
+ case '"':
919
+ a.push("\\u0022");
920
+ break;
921
+ case "%":
922
+ a.push("\\u0025");
923
+ break;
924
+ case "&":
925
+ a.push("\\u0026");
926
+ break;
927
+ case "'":
928
+ a.push("\\u0027");
929
+ break;
930
+ case "(":
931
+ a.push("\\u0028");
932
+ break;
933
+ case ")":
934
+ a.push("\\u0029");
935
+ break;
936
+ case "+":
937
+ a.push("\\u002b");
938
+ break;
939
+ case "/":
940
+ a.push("\\u002f");
941
+ break;
942
+ case "<":
943
+ a.push("\\u003c");
944
+ break;
945
+ case ">":
946
+ a.push("\\u003e");
947
+ break;
948
+ case "\\":
949
+ a.push("\\\\");
950
+ break;
951
+ default:
952
+ a.push(f);
953
+ }
954
+ }
955
+ }
956
+ return a.join("");
957
+ }
958
+ exports.ScriptEncode = ScriptEncode;
959
+ function addEventListeners(eles, events, listener, useCapture = false) {
960
+ if (!(0, typecheckers_1.isFunction)(listener)) {
961
+ return;
962
+ }
963
+ var eventNames;
964
+ if ((0, typecheckers_1.isString)(events)) {
965
+ eventNames = events.split(" ");
966
+ }
967
+ else if (Array.isArray(events)) {
968
+ eventNames = events;
969
+ }
970
+ if ((0, typecheckers_1.isNullOrEmptyArray)(eventNames)) {
971
+ return;
972
+ }
973
+ var elements = _eleOrSelectorToElementArray(eles);
974
+ if ((0, typecheckers_1.isNullOrEmptyArray)(elements)) {
975
+ return;
976
+ }
977
+ elements.forEach((ele) => {
978
+ if (isElement(ele) && (0, typecheckers_1.isFunction)(ele.addEventListener)) {
979
+ eventNames.forEach((eventName) => {
980
+ ele.addEventListener(eventName, listener, useCapture);
981
+ });
982
+ }
983
+ });
984
+ }
985
+ exports.addEventListeners = addEventListeners;
986
+ /** defer calling this function multiple times within X time frame to execute only once after the last call */
987
+ function debounce(callback, ms, thisArg = null) {
988
+ let timeoutId = null;
989
+ let func = (...args) => {
990
+ window.clearTimeout(timeoutId);
991
+ timeoutId = window.setTimeout(() => {
992
+ callback.apply(thisArg, args);
993
+ }, ms);
994
+ };
995
+ return func;
996
+ }
997
+ exports.debounce = debounce;
998
+ /** call a funciton X number of times, on a specific interval. */
999
+ function interval(callback, msBetweenCalls, numberOfTimesToCall, thisArg = null) {
1000
+ for (let index = 1; index <= numberOfTimesToCall; index++)
1001
+ window.setTimeout(() => { callback.apply(thisArg); }, msBetweenCalls * index);
1002
+ }
1003
+ exports.interval = interval;
1004
+ /** throttle repeated calls to callback, makes sure it is only called once per *wait* at most, but won't defer it for longer than that.
1005
+ * Unlike debounce, which can end up waiting for 5 minutes if it is being called repeatedly.
1006
+ */
1007
+ function throttle(callback, wait = 250, thisArg = null) {
1008
+ let previous = 0;
1009
+ let timeout = null;
1010
+ let result;
1011
+ let storedContext = thisArg;
1012
+ let storedArgs;
1013
+ const later = () => {
1014
+ previous = Date.now();
1015
+ timeout = null;
1016
+ result = callback.apply(storedContext, storedArgs);
1017
+ if (!timeout) {
1018
+ storedArgs = [];
1019
+ }
1020
+ };
1021
+ let wrapper = (...args) => {
1022
+ const now = Date.now();
1023
+ const remaining = wait - (now - previous);
1024
+ storedArgs = args;
1025
+ if (remaining <= 0 || remaining > wait) {
1026
+ if (timeout) {
1027
+ clearTimeout(timeout);
1028
+ timeout = null;
1029
+ }
1030
+ previous = now;
1031
+ result = callback.apply(storedContext, storedArgs);
1032
+ if (!timeout) {
1033
+ storedArgs = [];
1034
+ }
1035
+ }
1036
+ else if (!timeout) {
1037
+ timeout = window.setTimeout(later, remaining);
1038
+ }
1039
+ return result;
1040
+ };
1041
+ return wrapper;
1042
+ }
1043
+ exports.throttle = throttle;
1044
+ var _resizeHandlers = {};
1045
+ var _resizeRegistered = false;
1046
+ function _handleResize() {
1047
+ Object.keys(_resizeHandlers).forEach(key => {
1048
+ try {
1049
+ _resizeHandlers[key]();
1050
+ }
1051
+ catch (e) { }
1052
+ });
1053
+ }
1054
+ /** allows you to register, re-register or remove a resize handler without ending up with multiple registrations. */
1055
+ function OnWindowResize(handlerID, handler) {
1056
+ if (!(0, typecheckers_1.isNullOrUndefined)(handler))
1057
+ _resizeHandlers[handlerID] = handler;
1058
+ else
1059
+ delete _resizeHandlers[handlerID];
1060
+ if (!_resizeRegistered) {
1061
+ _resizeRegistered = true;
1062
+ addEventHandler(window, "resize", debounce(_handleResize, 250));
1063
+ }
1064
+ }
1065
+ exports.OnWindowResize = OnWindowResize;
1066
+ function dispatchCustomEvent(obj, eventName, params = { bubbles: false, cancelable: false, detail: null }) {
1067
+ if ((0, typecheckers_1.isNullOrUndefined)(obj) || !(0, typecheckers_1.isFunction)(obj.dispatchEvent)) {
1068
+ return;
1069
+ }
1070
+ params.bubbles = params.bubbles || false;
1071
+ params.cancelable = params.cancelable || false;
1072
+ params.detail = params.detail || null;
1073
+ let event = null;
1074
+ if ((0, typecheckers_1.isFunction)(window.CustomEvent)) {
1075
+ event = new CustomEvent(eventName, params);
1076
+ }
1077
+ else {
1078
+ event = document.createEvent('CustomEvent');
1079
+ event.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);
1080
+ }
1081
+ obj.dispatchEvent(event);
1082
+ }
1083
+ exports.dispatchCustomEvent = dispatchCustomEvent;
1084
+ function addStyleElement(cssText, id) {
1085
+ var parent = document.head || document.getElementsByTagName("head")[0] || document;
1086
+ let cssElm = !(0, typecheckers_1.isNullOrEmptyString)(id) ? document.getElementById(id) : null;
1087
+ if (!cssElm) {
1088
+ cssElm = document.createElement("style");
1089
+ if (!(0, typecheckers_1.isNullOrEmptyString)(id))
1090
+ cssElm.id = id;
1091
+ parent.appendChild(cssElm);
1092
+ }
1093
+ cssElm.innerHTML = cssText;
1094
+ return cssElm;
1095
+ }
1096
+ exports.addStyleElement = addStyleElement;
1097
+ function getReactInstanceFromElement(node) {
1098
+ if (!(0, typecheckers_1.isNullOrUndefined)(node)) {
1099
+ for (const key in node) {
1100
+ if ((key).startsWith("__reactInternalInstance$") || key.startsWith("__reactFiber$")) {
1101
+ return node[key];
1102
+ }
1103
+ }
1104
+ }
1105
+ return null;
1106
+ }
1107
+ exports.getReactInstanceFromElement = getReactInstanceFromElement;
1108
+ /** registers a listener to when the browser url changed */
1109
+ function registerUrlChanged(callback) {
1110
+ let url = window.location.href;
1111
+ window.setInterval(() => {
1112
+ if (url !== window.location.href) {
1113
+ url = window.location.href;
1114
+ if ((0, typecheckers_1.isFunction)(callback)) {
1115
+ callback();
1116
+ }
1117
+ }
1118
+ }, 333);
1119
+ }
1120
+ exports.registerUrlChanged = registerUrlChanged;
1121
+ exports.DisableAnchorInterceptAttribute = "data-interception";
1122
+ exports.DisableAnchorInterceptValue = "off";
1123
+ function DisableAnchorIntercept(link) {
1124
+ link.setAttribute(exports.DisableAnchorInterceptAttribute, exports.DisableAnchorInterceptValue);
1125
+ }
1126
+ exports.DisableAnchorIntercept = DisableAnchorIntercept;
1127
+ /** go over HTML and add data-interception="off" to all <a> tags. */
1128
+ function DisableAnchorInterceptInHtml(html) {
1129
+ return html.replace(/<a /g, `<a ${exports.DisableAnchorInterceptAttribute}="${exports.DisableAnchorInterceptValue}" `);
1130
+ }
1131
+ exports.DisableAnchorInterceptInHtml = DisableAnchorInterceptInHtml;
1132
+ function isChildOf(node, parent) {
1133
+ let _parent = node && node.parentElement;
1134
+ while (_parent) {
1135
+ if (((0, typecheckers_1.isNullOrEmptyString)(parent.id) || _parent.id === parent.id)
1136
+ && ((0, typecheckers_1.isNullOrEmptyString)(parent.class) || _parent.classList.contains(parent.class))
1137
+ && ((0, typecheckers_1.isNullOrEmptyString)(parent.tagName) || _parent.tagName.toUpperCase() === parent.tagName.toUpperCase()))
1138
+ return true;
1139
+ _parent = _parent.parentElement;
1140
+ }
1141
+ return false;
1142
+ }
1143
+ exports.isChildOf = isChildOf;
1144
+ function findAcestor(ele, predicate) {
1145
+ if (!isElement(ele) || !(0, typecheckers_1.isFunction)(predicate)) {
1146
+ return null;
1147
+ }
1148
+ while (ele) {
1149
+ if (predicate(ele)) {
1150
+ return ele;
1151
+ }
1152
+ ele = ele.parentElement;
1153
+ }
1154
+ return null;
1155
+ }
1156
+ exports.findAcestor = findAcestor;
1157
+ function loadModernFormsCSS() {
1158
+ let styleElm = document.getElementById('kw_modernui_css');
1159
+ if (!styleElm) {
1160
+ styleElm = document.createElement("link");
1161
+ styleElm.id = "kw_modernui_css";
1162
+ styleElm.rel = "stylesheet";
1163
+ styleElm.href = "https://apps.kwizcom.com/products/modern/css/app.min.css";
1164
+ document.head.appendChild(styleElm);
1165
+ }
1166
+ }
1167
+ exports.loadModernFormsCSS = loadModernFormsCSS;
1168
+ function showLoadingOverlay(elm, options) {
1169
+ loadModernFormsCSS();
1170
+ let overlay = elm.querySelector('.kw-loading-overlay');
1171
+ if (!overlay) {
1172
+ overlay = document.createElement("div");
1173
+ overlay.className = "kw-loading-overlay kw-fixedCenter kw-absoluteFull";
1174
+ elm.appendChild(overlay);
1175
+ }
1176
+ overlay.innerHTML = options && options.innerHtml || `<img src="${images_1.LOGO_ANIM}" style="max-width: 30%;max-height: 30%;">`;
1177
+ overlay.style.backgroundColor = options && options.bgColor || "white";
1178
+ }
1179
+ exports.showLoadingOverlay = showLoadingOverlay;
1180
+ function hideLoadingOverlay(elm) {
1181
+ if (isElement(elm)) {
1182
+ let overlays = Array.from(elm.querySelectorAll('.kw-loading-overlay'));
1183
+ removeHTMLElement(overlays);
1184
+ }
1185
+ }
1186
+ exports.hideLoadingOverlay = hideLoadingOverlay;
1187
+ function getLoadingOverlayHtml(options) {
1188
+ loadModernFormsCSS();
1189
+ let overlay = document.createElement("div");
1190
+ overlay.className = "kw-loading-overlay kw-fixedCenter kw-absoluteFull";
1191
+ overlay.innerHTML = options && options.innerHtml || `<img src="${images_1.LOGO_ANIM}" style="max-width: 30%;max-height: 30%;">`;
1192
+ overlay.style.backgroundColor = options && options.bgColor || "white";
1193
+ return overlay.outerHTML;
1194
+ }
1195
+ exports.getLoadingOverlayHtml = getLoadingOverlayHtml;
1196
+ function getUniqueElementId(id = "") {
1197
+ return `${id}${(0, random_1.getUniqueId)()}`;
1198
+ }
1199
+ exports.getUniqueElementId = getUniqueElementId;
1200
+ //# sourceMappingURL=browser.js.map