angular-slickgrid 4.2.0 → 4.2.3

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 (415) hide show
  1. package/LICENSE +20 -20
  2. package/{dist/app → app}/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +2 -2
  3. package/{dist/app → app}/modules/angular-slickgrid/constants.d.ts +0 -0
  4. package/{dist/app → app}/modules/angular-slickgrid/extensions/index.d.ts +0 -0
  5. package/{dist/app → app}/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +0 -2
  6. package/{dist/app → app}/modules/angular-slickgrid/global-grid-options.d.ts +0 -0
  7. package/{dist/app → app}/modules/angular-slickgrid/index.d.ts +0 -0
  8. package/{dist/app → app}/modules/angular-slickgrid/models/angularComponentOutput.interface.d.ts +0 -0
  9. package/{dist/app → app}/modules/angular-slickgrid/models/angularGridInstance.interface.d.ts +0 -0
  10. package/{dist/app → app}/modules/angular-slickgrid/models/externalTestingDependencies.interface.d.ts +0 -0
  11. package/{dist/app → app}/modules/angular-slickgrid/models/gridOption.interface.d.ts +0 -0
  12. package/{dist/app → app}/modules/angular-slickgrid/models/index.d.ts +0 -0
  13. package/{dist/app → app}/modules/angular-slickgrid/models/rowDetailView.interface.d.ts +0 -0
  14. package/{dist/app → app}/modules/angular-slickgrid/models/slickGrid.interface.d.ts +0 -0
  15. package/{dist/app → app}/modules/angular-slickgrid/modules/angular-slickgrid.module.d.ts +0 -0
  16. package/{dist/app → app}/modules/angular-slickgrid/services/angularUtil.service.d.ts +0 -0
  17. package/{dist/app → app}/modules/angular-slickgrid/services/bsDropdown.service.d.ts +0 -0
  18. package/{dist/app → app}/modules/angular-slickgrid/services/container.service.d.ts +1 -0
  19. package/{dist/app → app}/modules/angular-slickgrid/services/index.d.ts +0 -0
  20. package/{dist/app → app}/modules/angular-slickgrid/services/translater.service.d.ts +0 -0
  21. package/{dist/app → app}/modules/angular-slickgrid/services/utilities.d.ts +0 -0
  22. package/{dist/app → app}/modules/angular-slickgrid/slickgrid-config.d.ts +0 -0
  23. package/docs/assets/lib/multiple-select/README.md +17 -0
  24. package/{dist/esm2020 → esm2020}/angular-slickgrid.mjs +0 -0
  25. package/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +1170 -0
  26. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/constants.mjs +1 -1
  27. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/extensions/index.mjs +1 -1
  28. package/esm2020/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +298 -0
  29. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/global-grid-options.mjs +1 -1
  30. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/index.mjs +1 -1
  31. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +1 -1
  32. package/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +2 -0
  33. package/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +2 -0
  34. package/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +2 -0
  35. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/index.mjs +1 -1
  36. package/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +2 -0
  37. package/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +2 -0
  38. package/esm2020/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +43 -0
  39. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/angularUtil.service.mjs +4 -4
  40. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/bsDropdown.service.mjs +4 -4
  41. package/esm2020/app/modules/angular-slickgrid/services/container.service.mjs +29 -0
  42. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/index.mjs +1 -1
  43. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/translater.service.mjs +4 -4
  44. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/utilities.mjs +1 -1
  45. package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/slickgrid-config.mjs +1 -1
  46. package/{dist/esm2020 → esm2020}/public_api.mjs +1 -1
  47. package/{dist/fesm2015 → fesm2015}/angular-slickgrid.mjs +48 -51
  48. package/fesm2015/angular-slickgrid.mjs.map +1 -0
  49. package/{dist/fesm2020 → fesm2020}/angular-slickgrid.mjs +48 -51
  50. package/fesm2020/angular-slickgrid.mjs.map +1 -0
  51. package/{dist/i18n → i18n}/en.json +89 -89
  52. package/{dist/i18n → i18n}/fr.json +90 -90
  53. package/{dist/angular-slickgrid.d.ts → index.d.ts} +0 -0
  54. package/package.json +33 -118
  55. package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
  56. package/test/cypress/node_modules/@cypress/request/README.md +1038 -0
  57. package/test/cypress/node_modules/@cypress/xvfb/README.md +48 -0
  58. package/test/cypress/node_modules/@cypress/xvfb/node_modules/debug/README.md +437 -0
  59. package/test/cypress/node_modules/@types/node/README.md +16 -0
  60. package/test/cypress/node_modules/@types/sinonjs__fake-timers/README.md +16 -0
  61. package/test/cypress/node_modules/@types/sizzle/README.md +16 -0
  62. package/test/cypress/node_modules/@types/yauzl/README.md +16 -0
  63. package/test/cypress/node_modules/@types/yauzl/node_modules/@types/node/README.md +16 -0
  64. package/test/cypress/node_modules/aggregate-error/README.md +61 -0
  65. package/test/cypress/node_modules/ansi-colors/README.md +315 -0
  66. package/test/cypress/node_modules/ansi-escapes/README.md +245 -0
  67. package/test/cypress/node_modules/ansi-regex/README.md +78 -0
  68. package/test/cypress/node_modules/ansi-styles/README.md +152 -0
  69. package/test/cypress/node_modules/arch/README.md +71 -0
  70. package/test/cypress/node_modules/asn1/README.md +50 -0
  71. package/test/cypress/node_modules/assert-plus/README.md +162 -0
  72. package/test/cypress/node_modules/astral-regex/README.md +46 -0
  73. package/test/cypress/node_modules/async/README.md +60 -0
  74. package/test/cypress/node_modules/asynckit/README.md +233 -0
  75. package/test/cypress/node_modules/at-least-node/README.md +25 -0
  76. package/test/cypress/node_modules/aws-sign2/README.md +4 -0
  77. package/test/cypress/node_modules/aws4/README.md +183 -0
  78. package/test/cypress/node_modules/balanced-match/README.md +91 -0
  79. package/test/cypress/node_modules/base64-js/README.md +34 -0
  80. package/test/cypress/node_modules/bcrypt-pbkdf/README.md +45 -0
  81. package/test/cypress/node_modules/blob-util/README.md +623 -0
  82. package/test/cypress/node_modules/bluebird/README.md +57 -0
  83. package/test/cypress/node_modules/brace-expansion/README.md +129 -0
  84. package/test/cypress/node_modules/buffer/README.md +410 -0
  85. package/test/cypress/node_modules/buffer-crc32/README.md +47 -0
  86. package/test/cypress/node_modules/cachedir/README.md +27 -0
  87. package/test/cypress/node_modules/caseless/README.md +45 -0
  88. package/test/cypress/node_modules/chalk/README.md +293 -0
  89. package/test/cypress/node_modules/chalk/node_modules/supports-color/README.md +76 -0
  90. package/test/cypress/node_modules/check-more-types/README.md +952 -0
  91. package/test/cypress/node_modules/ci-info/README.md +114 -0
  92. package/test/cypress/node_modules/clean-stack/README.md +76 -0
  93. package/test/cypress/node_modules/cli-cursor/README.md +55 -0
  94. package/test/cypress/node_modules/cli-table3/README.md +218 -0
  95. package/test/cypress/node_modules/cli-truncate/README.md +139 -0
  96. package/test/cypress/node_modules/color-convert/README.md +68 -0
  97. package/test/cypress/node_modules/color-name/README.md +11 -0
  98. package/test/cypress/node_modules/colorette/README.md +102 -0
  99. package/test/cypress/node_modules/colors/README.md +221 -0
  100. package/test/cypress/node_modules/combined-stream/README.md +138 -0
  101. package/test/cypress/node_modules/commander/README.md +737 -0
  102. package/test/cypress/node_modules/common-tags/README.md +687 -0
  103. package/test/cypress/node_modules/core-util-is/README.md +3 -0
  104. package/test/cypress/node_modules/cross-spawn/README.md +96 -0
  105. package/test/cypress/node_modules/cypress/README.md +25 -0
  106. package/test/cypress/node_modules/cypress/mount-utils/README.md +14 -0
  107. package/test/cypress/node_modules/cypress/react/README.md +414 -0
  108. package/test/cypress/node_modules/cypress/vue/README.md +678 -0
  109. package/test/cypress/node_modules/cypress/vue2/README.md +693 -0
  110. package/test/cypress/node_modules/dashdash/README.md +574 -0
  111. package/test/cypress/node_modules/dayjs/README.md +128 -0
  112. package/test/cypress/node_modules/debug/README.md +455 -0
  113. package/test/cypress/node_modules/delayed-stream/README.md +141 -0
  114. package/test/cypress/node_modules/ecc-jsbn/README.md +8 -0
  115. package/test/cypress/node_modules/emoji-regex/README.md +73 -0
  116. package/test/cypress/node_modules/end-of-stream/README.md +54 -0
  117. package/test/cypress/node_modules/enquirer/README.md +1752 -0
  118. package/test/cypress/node_modules/escape-string-regexp/README.md +27 -0
  119. package/test/cypress/node_modules/eventemitter2/README.md +809 -0
  120. package/test/cypress/node_modules/execa/README.md +656 -0
  121. package/test/cypress/node_modules/executable/README.md +64 -0
  122. package/test/cypress/node_modules/extend/README.md +81 -0
  123. package/test/cypress/node_modules/extract-zip/README.md +57 -0
  124. package/test/cypress/node_modules/extract-zip/node_modules/debug/README.md +455 -0
  125. package/test/cypress/node_modules/extsprintf/README.md +46 -0
  126. package/test/cypress/node_modules/fd-slicer/README.md +199 -0
  127. package/test/cypress/node_modules/figures/README.md +139 -0
  128. package/test/cypress/node_modules/forever-agent/README.md +4 -0
  129. package/test/cypress/node_modules/form-data/README.md +234 -0
  130. package/test/cypress/node_modules/fs-extra/README.md +264 -0
  131. package/test/cypress/node_modules/fs.realpath/README.md +33 -0
  132. package/test/cypress/node_modules/get-stream/README.md +124 -0
  133. package/test/cypress/node_modules/getos/README.md +79 -0
  134. package/test/cypress/node_modules/getpass/README.md +32 -0
  135. package/test/cypress/node_modules/glob/README.md +375 -0
  136. package/test/cypress/node_modules/global-dirs/README.md +72 -0
  137. package/test/cypress/node_modules/graceful-fs/README.md +133 -0
  138. package/test/cypress/node_modules/has-flag/README.md +89 -0
  139. package/test/cypress/node_modules/http-signature/README.md +80 -0
  140. package/test/cypress/node_modules/human-signals/README.md +155 -0
  141. package/test/cypress/node_modules/ieee754/README.md +51 -0
  142. package/test/cypress/node_modules/indent-string/README.md +70 -0
  143. package/test/cypress/node_modules/inflight/README.md +37 -0
  144. package/test/cypress/node_modules/inherits/README.md +42 -0
  145. package/test/cypress/node_modules/ini/README.md +102 -0
  146. package/test/cypress/node_modules/is-ci/README.md +50 -0
  147. package/test/cypress/node_modules/is-fullwidth-code-point/README.md +39 -0
  148. package/test/cypress/node_modules/is-installed-globally/README.md +31 -0
  149. package/test/cypress/node_modules/is-path-inside/README.md +63 -0
  150. package/test/cypress/node_modules/is-stream/README.md +57 -0
  151. package/test/cypress/node_modules/is-typedarray/README.md +16 -0
  152. package/test/cypress/node_modules/isexe/README.md +51 -0
  153. package/test/cypress/node_modules/isstream/README.md +66 -0
  154. package/test/cypress/node_modules/jsbn/README.md +175 -0
  155. package/test/cypress/node_modules/json-schema/README.md +3 -0
  156. package/test/cypress/node_modules/json-stringify-safe/README.md +52 -0
  157. package/test/cypress/node_modules/jsonfile/README.md +205 -0
  158. package/test/cypress/node_modules/jsonfile/node_modules/universalify/README.md +76 -0
  159. package/test/cypress/node_modules/jsprim/README.md +287 -0
  160. package/test/cypress/node_modules/lazy-ass/README.md +269 -0
  161. package/test/cypress/node_modules/listr2/README.md +17 -0
  162. package/test/cypress/node_modules/lodash/README.md +39 -0
  163. package/test/cypress/node_modules/lodash.once/README.md +18 -0
  164. package/test/cypress/node_modules/log-symbols/README.md +51 -0
  165. package/test/cypress/node_modules/log-update/README.md +97 -0
  166. package/test/cypress/node_modules/log-update/node_modules/slice-ansi/README.md +66 -0
  167. package/test/cypress/node_modules/log-update/node_modules/wrap-ansi/README.md +97 -0
  168. package/test/cypress/node_modules/lru-cache/README.md +166 -0
  169. package/test/cypress/node_modules/merge-stream/README.md +78 -0
  170. package/test/cypress/node_modules/mime-db/README.md +102 -0
  171. package/test/cypress/node_modules/mime-types/README.md +123 -0
  172. package/test/cypress/node_modules/mimic-fn/README.md +69 -0
  173. package/test/cypress/node_modules/minimatch/README.md +209 -0
  174. package/test/cypress/node_modules/ms/README.md +60 -0
  175. package/test/cypress/node_modules/npm-run-path/README.md +115 -0
  176. package/test/cypress/node_modules/once/README.md +79 -0
  177. package/test/cypress/node_modules/onetime/README.md +94 -0
  178. package/test/cypress/node_modules/ospath/README.md +53 -0
  179. package/test/cypress/node_modules/p-map/README.md +89 -0
  180. package/test/cypress/node_modules/path-is-absolute/README.md +59 -0
  181. package/test/cypress/node_modules/path-key/README.md +61 -0
  182. package/test/cypress/node_modules/pend/README.md +41 -0
  183. package/test/cypress/node_modules/performance-now/README.md +30 -0
  184. package/test/cypress/node_modules/pify/README.md +119 -0
  185. package/test/cypress/node_modules/pretty-bytes/README.md +131 -0
  186. package/test/cypress/node_modules/proxy-from-env/README.md +131 -0
  187. package/test/cypress/node_modules/psl/README.md +215 -0
  188. package/test/cypress/node_modules/pump/README.md +65 -0
  189. package/test/cypress/node_modules/punycode/README.md +122 -0
  190. package/test/cypress/node_modules/qs/README.md +475 -0
  191. package/test/cypress/node_modules/request-progress/README.md +78 -0
  192. package/test/cypress/node_modules/restore-cursor/README.md +26 -0
  193. package/test/cypress/node_modules/rimraf/README.md +101 -0
  194. package/test/cypress/node_modules/rxjs/README.md +147 -0
  195. package/test/cypress/node_modules/rxjs/_esm2015/README.md +147 -0
  196. package/test/cypress/node_modules/rxjs/_esm5/README.md +147 -0
  197. package/test/cypress/node_modules/rxjs/src/README.md +147 -0
  198. package/test/cypress/node_modules/safe-buffer/README.md +584 -0
  199. package/test/cypress/node_modules/safer-buffer/README.md +156 -0
  200. package/test/cypress/node_modules/semver/README.md +566 -0
  201. package/test/cypress/node_modules/shebang-command/README.md +34 -0
  202. package/test/cypress/node_modules/shebang-regex/README.md +33 -0
  203. package/test/cypress/node_modules/signal-exit/README.md +39 -0
  204. package/test/cypress/node_modules/slice-ansi/README.md +72 -0
  205. package/test/cypress/node_modules/sshpk/README.md +804 -0
  206. package/test/cypress/node_modules/string-width/README.md +50 -0
  207. package/test/cypress/node_modules/strip-ansi/README.md +46 -0
  208. package/test/cypress/node_modules/strip-final-newline/README.md +30 -0
  209. package/test/cypress/node_modules/supports-color/README.md +77 -0
  210. package/test/cypress/node_modules/throttleit/README.md +32 -0
  211. package/test/cypress/node_modules/tmp/README.md +365 -0
  212. package/test/cypress/node_modules/tough-cookie/README.md +527 -0
  213. package/test/cypress/node_modules/tslib/README.md +142 -0
  214. package/test/cypress/node_modules/tunnel-agent/README.md +4 -0
  215. package/test/cypress/node_modules/tweetnacl/README.md +459 -0
  216. package/test/cypress/node_modules/type-fest/README.md +760 -0
  217. package/test/cypress/node_modules/universalify/README.md +76 -0
  218. package/test/cypress/node_modules/untildify/README.md +30 -0
  219. package/test/cypress/node_modules/uuid/README.md +505 -0
  220. package/test/cypress/node_modules/verror/README.md +528 -0
  221. package/test/cypress/node_modules/verror/node_modules/extsprintf/README.md +46 -0
  222. package/test/cypress/node_modules/which/README.md +54 -0
  223. package/test/cypress/node_modules/wrap-ansi/README.md +91 -0
  224. package/test/cypress/node_modules/wrappy/README.md +36 -0
  225. package/test/cypress/node_modules/yallist/README.md +204 -0
  226. package/test/cypress/node_modules/yauzl/README.md +658 -0
  227. package/.browserslistrc +0 -12
  228. package/.codecov.yml +0 -17
  229. package/.editorconfig +0 -18
  230. package/.eslintrc.json +0 -50
  231. package/.github/CODE_OF_CONDUCT.md +0 -76
  232. package/.github/FUNDING.yml +0 -8
  233. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -54
  234. package/.github/ISSUE_TEMPLATE/config.yml +0 -5
  235. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -44
  236. package/.github/renovate.json5 +0 -26
  237. package/.github/stale.yml +0 -7
  238. package/.github/workflows/main.yml +0 -83
  239. package/.vscode/extensions.json +0 -9
  240. package/.vscode/launch.json +0 -72
  241. package/.vscode/settings.json +0 -7
  242. package/.vscode/tasks.json +0 -77
  243. package/CHANGELOG.md +0 -1172
  244. package/angular.json +0 -148
  245. package/dist/LICENSE +0 -20
  246. package/dist/README.md +0 -182
  247. package/dist/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -1171
  248. package/dist/esm2020/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -300
  249. package/dist/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -2
  250. package/dist/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -2
  251. package/dist/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -2
  252. package/dist/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -2
  253. package/dist/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +0 -2
  254. package/dist/esm2020/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -46
  255. package/dist/esm2020/app/modules/angular-slickgrid/services/container.service.mjs +0 -26
  256. package/dist/fesm2015/angular-slickgrid.mjs.map +0 -1
  257. package/dist/fesm2020/angular-slickgrid.mjs.map +0 -1
  258. package/dist/package.json +0 -79
  259. package/global.d.ts +0 -1
  260. package/ngcc.config.js +0 -13
  261. package/screenshots/column-picker.png +0 -0
  262. package/screenshots/composite-editor.png +0 -0
  263. package/screenshots/draggable-grouping.png +0 -0
  264. package/screenshots/editors.png +0 -0
  265. package/screenshots/export-to-file.png +0 -0
  266. package/screenshots/filter_and_sort.png +0 -0
  267. package/screenshots/formatters.png +0 -0
  268. package/screenshots/frozen.png +0 -0
  269. package/screenshots/multipleSelectFilter.png +0 -0
  270. package/screenshots/pagination.png +0 -0
  271. package/screenshots/selectFilter.png +0 -0
  272. package/screenshots/singleFilter.png +0 -0
  273. package/src/app/app-routing.module.ts +0 -83
  274. package/src/app/app.component.html +0 -160
  275. package/src/app/app.component.scss +0 -65
  276. package/src/app/app.component.ts +0 -10
  277. package/src/app/app.module.ts +0 -175
  278. package/src/app/examples/custom-angularComponentEditor.ts +0 -184
  279. package/src/app/examples/custom-angularComponentFilter.ts +0 -126
  280. package/src/app/examples/custom-inputEditor.ts +0 -124
  281. package/src/app/examples/custom-inputFilter.ts +0 -142
  282. package/src/app/examples/custom-titleFormatter.component.ts +0 -8
  283. package/src/app/examples/editor-ng-select.component.ts +0 -37
  284. package/src/app/examples/filter-ng-select.component.ts +0 -32
  285. package/src/app/examples/grid-additem.component.html +0 -48
  286. package/src/app/examples/grid-additem.component.ts +0 -272
  287. package/src/app/examples/grid-angular.component.html +0 -79
  288. package/src/app/examples/grid-angular.component.scss +0 -28
  289. package/src/app/examples/grid-angular.component.ts +0 -370
  290. package/src/app/examples/grid-autoheight.component.html +0 -52
  291. package/src/app/examples/grid-autoheight.component.ts +0 -147
  292. package/src/app/examples/grid-basic.component.html +0 -29
  293. package/src/app/examples/grid-basic.component.ts +0 -82
  294. package/src/app/examples/grid-clientside.component.html +0 -51
  295. package/src/app/examples/grid-clientside.component.ts +0 -293
  296. package/src/app/examples/grid-colspan.component.html +0 -39
  297. package/src/app/examples/grid-colspan.component.scss +0 -11
  298. package/src/app/examples/grid-colspan.component.ts +0 -155
  299. package/src/app/examples/grid-composite-editor.component.html +0 -79
  300. package/src/app/examples/grid-composite-editor.component.scss +0 -19
  301. package/src/app/examples/grid-composite-editor.component.ts +0 -948
  302. package/src/app/examples/grid-contextmenu.component.html +0 -62
  303. package/src/app/examples/grid-contextmenu.component.scss +0 -44
  304. package/src/app/examples/grid-contextmenu.component.ts +0 -473
  305. package/src/app/examples/grid-custom-tooltip.component.html +0 -25
  306. package/src/app/examples/grid-custom-tooltip.component.scss +0 -77
  307. package/src/app/examples/grid-custom-tooltip.component.ts +0 -483
  308. package/src/app/examples/grid-draggrouping.component.html +0 -93
  309. package/src/app/examples/grid-draggrouping.component.ts +0 -397
  310. package/src/app/examples/grid-editor.component.html +0 -88
  311. package/src/app/examples/grid-editor.component.ts +0 -699
  312. package/src/app/examples/grid-formatter.component.html +0 -26
  313. package/src/app/examples/grid-formatter.component.ts +0 -162
  314. package/src/app/examples/grid-frozen.component.html +0 -65
  315. package/src/app/examples/grid-frozen.component.scss +0 -11
  316. package/src/app/examples/grid-frozen.component.ts +0 -303
  317. package/src/app/examples/grid-graphql-nopage.component.html +0 -33
  318. package/src/app/examples/grid-graphql-nopage.component.scss +0 -9
  319. package/src/app/examples/grid-graphql-nopage.component.ts +0 -242
  320. package/src/app/examples/grid-graphql.component.html +0 -87
  321. package/src/app/examples/grid-graphql.component.ts +0 -304
  322. package/src/app/examples/grid-grouping.component.html +0 -80
  323. package/src/app/examples/grid-grouping.component.ts +0 -313
  324. package/src/app/examples/grid-headerbutton.component.html +0 -31
  325. package/src/app/examples/grid-headerbutton.component.scss +0 -10
  326. package/src/app/examples/grid-headerbutton.component.ts +0 -233
  327. package/src/app/examples/grid-headermenu.component.html +0 -31
  328. package/src/app/examples/grid-headermenu.component.scss +0 -25
  329. package/src/app/examples/grid-headermenu.component.ts +0 -159
  330. package/src/app/examples/grid-localization.component.html +0 -54
  331. package/src/app/examples/grid-localization.component.ts +0 -293
  332. package/src/app/examples/grid-menu.component.html +0 -37
  333. package/src/app/examples/grid-menu.component.scss +0 -28
  334. package/src/app/examples/grid-menu.component.ts +0 -229
  335. package/src/app/examples/grid-odata.component.html +0 -116
  336. package/src/app/examples/grid-odata.component.ts +0 -441
  337. package/src/app/examples/grid-range.component.html +0 -74
  338. package/src/app/examples/grid-range.component.ts +0 -291
  339. package/src/app/examples/grid-remote.component.html +0 -37
  340. package/src/app/examples/grid-remote.component.ts +0 -153
  341. package/src/app/examples/grid-resize-by-content.component.html +0 -62
  342. package/src/app/examples/grid-resize-by-content.component.scss +0 -19
  343. package/src/app/examples/grid-resize-by-content.component.ts +0 -780
  344. package/src/app/examples/grid-rowdetail.component.html +0 -35
  345. package/src/app/examples/grid-rowdetail.component.ts +0 -205
  346. package/src/app/examples/grid-rowmove.component.html +0 -49
  347. package/src/app/examples/grid-rowmove.component.ts +0 -234
  348. package/src/app/examples/grid-rowselection.component.html +0 -76
  349. package/src/app/examples/grid-rowselection.component.ts +0 -267
  350. package/src/app/examples/grid-state.component.html +0 -36
  351. package/src/app/examples/grid-state.component.ts +0 -259
  352. package/src/app/examples/grid-tabs.component.html +0 -35
  353. package/src/app/examples/grid-tabs.component.ts +0 -115
  354. package/src/app/examples/grid-trading.component.html +0 -58
  355. package/src/app/examples/grid-trading.component.scss +0 -49
  356. package/src/app/examples/grid-trading.component.ts +0 -319
  357. package/src/app/examples/grid-tree-data-hierarchical.component.html +0 -79
  358. package/src/app/examples/grid-tree-data-hierarchical.component.scss +0 -47
  359. package/src/app/examples/grid-tree-data-hierarchical.component.ts +0 -311
  360. package/src/app/examples/grid-tree-data-parent-child.component.html +0 -108
  361. package/src/app/examples/grid-tree-data-parent-child.component.scss +0 -10
  362. package/src/app/examples/grid-tree-data-parent-child.component.ts +0 -351
  363. package/src/app/examples/home.component.html +0 -41
  364. package/src/app/examples/home.component.ts +0 -9
  365. package/src/app/examples/rowdetail-preload.component.ts +0 -10
  366. package/src/app/examples/rowdetail-view.component.html +0 -36
  367. package/src/app/examples/rowdetail-view.component.ts +0 -54
  368. package/src/app/examples/swt-common-grid-pagination.component.ts +0 -156
  369. package/src/app/examples/swt-common-grid-test.component.html +0 -30
  370. package/src/app/examples/swt-common-grid-test.component.ts +0 -219
  371. package/src/app/examples/swt-common-grid.component.ts +0 -436
  372. package/src/app/examples/swt-logger.service.ts +0 -165
  373. package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.html +0 -4
  374. package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +0 -1395
  375. package/src/app/modules/angular-slickgrid/constants.ts +0 -97
  376. package/src/app/modules/angular-slickgrid/extensions/index.ts +0 -1
  377. package/src/app/modules/angular-slickgrid/extensions/slickRowDetailView.ts +0 -375
  378. package/src/app/modules/angular-slickgrid/global-grid-options.ts +0 -245
  379. package/src/app/modules/angular-slickgrid/index.ts +0 -11
  380. package/src/app/modules/angular-slickgrid/models/angularComponentOutput.interface.ts +0 -6
  381. package/src/app/modules/angular-slickgrid/models/angularGridInstance.interface.ts +0 -68
  382. package/src/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.ts +0 -37
  383. package/src/app/modules/angular-slickgrid/models/gridOption.interface.ts +0 -12
  384. package/src/app/modules/angular-slickgrid/models/index.ts +0 -6
  385. package/src/app/modules/angular-slickgrid/models/rowDetailView.interface.ts +0 -33
  386. package/src/app/modules/angular-slickgrid/models/slickGrid.interface.ts +0 -7
  387. package/src/app/modules/angular-slickgrid/modules/angular-slickgrid.module.ts +0 -37
  388. package/src/app/modules/angular-slickgrid/services/angularUtil.service.ts +0 -48
  389. package/src/app/modules/angular-slickgrid/services/bsDropdown.service.ts +0 -142
  390. package/src/app/modules/angular-slickgrid/services/container.service.ts +0 -24
  391. package/src/app/modules/angular-slickgrid/services/index.ts +0 -5
  392. package/src/app/modules/angular-slickgrid/services/translater.service.ts +0 -38
  393. package/src/app/modules/angular-slickgrid/services/utilities.ts +0 -19
  394. package/src/app/modules/angular-slickgrid/slickgrid-config.ts +0 -10
  395. package/src/app/slickgrid-custom-variables.scss +0 -10
  396. package/src/assets/.gitkeep +0 -0
  397. package/src/assets/data/collection_100_numbers.json +0 -12
  398. package/src/assets/data/collection_500_numbers.json +0 -52
  399. package/src/assets/data/countries.json +0 -245
  400. package/src/assets/data/country_names.json +0 -245
  401. package/src/assets/data/customers_100.json +0 -102
  402. package/src/assets/i18n/en.json +0 -90
  403. package/src/assets/i18n/fr.json +0 -91
  404. package/src/environments/environment.prod.ts +0 -3
  405. package/src/environments/environment.ts +0 -8
  406. package/src/favicon.ico +0 -0
  407. package/src/index.html +0 -18
  408. package/src/main.ts +0 -13
  409. package/src/polyfills.ts +0 -52
  410. package/src/public_api.ts +0 -1
  411. package/src/styles.scss +0 -66
  412. package/src/typings.d.ts +0 -10
  413. package/tsconfig.app.json +0 -25
  414. package/tsconfig.json +0 -40
  415. package/tsconfig.spec.json +0 -23
@@ -1,300 +0,0 @@
1
- import 'slickgrid/plugins/slick.rowdetailview';
2
- import 'slickgrid/plugins/slick.rowselectionmodel';
3
- import { addToArrayWhenNotExists, castObservableToPromise, SlickRowSelectionModel, unsubscribeAll, } from '@slickgrid-universal/common';
4
- import { SlickRowDetailView as UniversalSlickRowDetailView } from '@slickgrid-universal/row-detail-view-plugin';
5
- import { Observable } from 'rxjs';
6
- import * as DOMPurify from 'dompurify';
7
- const ROW_DETAIL_CONTAINER_PREFIX = 'container_';
8
- const PRELOAD_CONTAINER_PREFIX = 'container_loading';
9
- export class SlickRowDetailView extends UniversalSlickRowDetailView {
10
- constructor(angularUtilService, appRef, eventPubSubService, gridContainerElement, rxjs) {
11
- super();
12
- this.angularUtilService = angularUtilService;
13
- this.appRef = appRef;
14
- this.eventPubSubService = eventPubSubService;
15
- this.gridContainerElement = gridContainerElement;
16
- this.rxjs = rxjs;
17
- this._views = [];
18
- this._subscriptions = [];
19
- }
20
- get addonOptions() {
21
- return this.getOptions();
22
- }
23
- get datasetIdPropName() {
24
- return this.gridOptions.datasetIdPropertyName || 'id';
25
- }
26
- get eventHandler() {
27
- return this._eventHandler;
28
- }
29
- set eventHandler(eventHandler) {
30
- this._eventHandler = eventHandler;
31
- }
32
- /** Getter for the Grid Options pulled through the Grid Object */
33
- get gridOptions() {
34
- return (this._grid?.getOptions() || {});
35
- }
36
- get rowDetailViewOptions() {
37
- return this.gridOptions.rowDetailView;
38
- }
39
- addRxJsResource(rxjs) {
40
- this.rxjs = rxjs;
41
- }
42
- /** Dispose of the RowDetailView Extension */
43
- dispose() {
44
- this.disposeAllViewComponents();
45
- this._subscriptions = unsubscribeAll(this._subscriptions); // also unsubscribe all RxJS subscriptions
46
- super.dispose();
47
- }
48
- /** Dispose of all the opened Row Detail Panels Angular View Components */
49
- disposeAllViewComponents() {
50
- this._views.forEach((compRef) => this.disposeViewComponent(compRef));
51
- this._views = [];
52
- }
53
- /** Get the instance of the SlickGrid addon (control or plugin). */
54
- getAddonInstance() {
55
- return this;
56
- }
57
- init(grid) {
58
- this._grid = grid;
59
- super.init(this._grid);
60
- this.register(grid?.getSelectionModel());
61
- }
62
- /**
63
- * Create the plugin before the Grid creation, else it will behave oddly.
64
- * Mostly because the column definitions might change after the grid creation
65
- */
66
- register(rowSelectionPlugin) {
67
- if (typeof this.gridOptions.rowDetailView?.process === 'function') {
68
- // we need to keep the user "process" method and replace it with our own execution method
69
- // we do this because when we get the item detail, we need to call "onAsyncResponse.notify" for the plugin to work
70
- this._userProcessFn = this.gridOptions.rowDetailView.process; // keep user's process method
71
- this.gridOptions.rowDetailView.process = (item) => this.onProcessing(item); // replace process method & run our internal one
72
- }
73
- else {
74
- throw new Error('[Angular-Slickgrid] You need to provide a "process" function for the Row Detail Extension to work properly');
75
- }
76
- if (this._grid && this.gridOptions?.rowDetailView) {
77
- // load the Preload & RowDetail Templates (could be straight HTML or Angular View/ViewModel)
78
- // when those are Angular View/ViewModel, we need to create View Component & provide the html containers to the Plugin (preTemplate/postTemplate methods)
79
- if (!this.gridOptions.rowDetailView.preTemplate) {
80
- this._preloadComponent = this.gridOptions?.rowDetailView?.preloadComponent;
81
- this.gridOptions.rowDetailView.preTemplate = () => DOMPurify.sanitize(`<div class="${PRELOAD_CONTAINER_PREFIX}"></div>`);
82
- }
83
- if (!this.gridOptions.rowDetailView.postTemplate) {
84
- this._viewComponent = this.gridOptions?.rowDetailView?.viewComponent;
85
- this.gridOptions.rowDetailView.postTemplate = (itemDetail) => DOMPurify.sanitize(`<div class="${ROW_DETAIL_CONTAINER_PREFIX}${itemDetail[this.datasetIdPropName]}"></div>`);
86
- }
87
- // this also requires the Row Selection Model to be registered as well
88
- if (!rowSelectionPlugin || !this._grid.getSelectionModel()) {
89
- rowSelectionPlugin = new SlickRowSelectionModel(this.gridOptions.rowSelectionOptions || { selectActiveRow: true });
90
- this._grid.setSelectionModel(rowSelectionPlugin);
91
- }
92
- // hook all events
93
- if (this._grid && this.rowDetailViewOptions) {
94
- if (this.rowDetailViewOptions.onExtensionRegistered) {
95
- this.rowDetailViewOptions.onExtensionRegistered(this);
96
- }
97
- if (this.onAsyncResponse) {
98
- this._eventHandler.subscribe(this.onAsyncResponse, (event, args) => {
99
- if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAsyncResponse === 'function') {
100
- this.rowDetailViewOptions.onAsyncResponse(event, args);
101
- }
102
- });
103
- }
104
- if (this.onAsyncEndUpdate) {
105
- this._eventHandler.subscribe(this.onAsyncEndUpdate, (e, args) => {
106
- // triggers after backend called "onAsyncResponse.notify()"
107
- this.renderViewModel(args?.item);
108
- if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAsyncEndUpdate === 'function') {
109
- this.rowDetailViewOptions.onAsyncEndUpdate(e, args);
110
- }
111
- });
112
- }
113
- if (this.onAfterRowDetailToggle) {
114
- this._eventHandler.subscribe(this.onAfterRowDetailToggle, (e, args) => {
115
- // display preload template & re-render all the other Detail Views after toggling
116
- // the preload View will eventually go away once the data gets loaded after the "onAsyncEndUpdate" event
117
- this.renderPreloadView();
118
- this.renderAllViewComponents();
119
- if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAfterRowDetailToggle === 'function') {
120
- this.rowDetailViewOptions.onAfterRowDetailToggle(e, args);
121
- }
122
- });
123
- }
124
- if (this.onBeforeRowDetailToggle) {
125
- this._eventHandler.subscribe(this.onBeforeRowDetailToggle, (e, args) => {
126
- // before toggling row detail, we need to create View Component if it doesn't exist
127
- this.handleOnBeforeRowDetailToggle(e, args);
128
- if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onBeforeRowDetailToggle === 'function') {
129
- this.rowDetailViewOptions.onBeforeRowDetailToggle(e, args);
130
- }
131
- });
132
- }
133
- if (this.onRowBackToViewportRange) {
134
- this._eventHandler.subscribe(this.onRowBackToViewportRange, (e, args) => {
135
- // when row is back to viewport range, we will re-render the View Component(s)
136
- this.handleOnRowBackToViewportRange(e, args);
137
- if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onRowBackToViewportRange === 'function') {
138
- this.rowDetailViewOptions.onRowBackToViewportRange(e, args);
139
- }
140
- });
141
- }
142
- if (this.onRowOutOfViewportRange) {
143
- this._eventHandler.subscribe(this.onRowOutOfViewportRange, (e, args) => {
144
- if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onRowOutOfViewportRange === 'function') {
145
- this.rowDetailViewOptions.onRowOutOfViewportRange(e, args);
146
- }
147
- });
148
- }
149
- // --
150
- // hook some events needed by the Plugin itself
151
- // we need to redraw the open detail views if we change column position (column reorder)
152
- this._eventHandler.subscribe(this._grid.onColumnsReordered, this.redrawAllViewComponents.bind(this));
153
- // on row selection changed, we also need to redraw
154
- if (this.gridOptions.enableRowSelection || this.gridOptions.enableCheckboxSelector) {
155
- this._eventHandler.subscribe(this._grid.onSelectedRowsChanged, this.redrawAllViewComponents.bind(this));
156
- }
157
- // on sort, all row detail are collapsed so we can dispose of all the Views as well
158
- this._eventHandler.subscribe(this._grid.onSort, this.disposeAllViewComponents.bind(this));
159
- // on filter changed, we need to re-render all Views
160
- this._subscriptions.push(this.eventPubSubService?.subscribe('onFilterChanged', this.redrawAllViewComponents.bind(this)), this.eventPubSubService?.subscribe('onGridMenuClearAllFilters', () => setTimeout(() => this.redrawAllViewComponents())), this.eventPubSubService?.subscribe('onGridMenuClearAllSorting', () => setTimeout(() => this.redrawAllViewComponents())));
161
- }
162
- }
163
- return this;
164
- }
165
- /** Redraw (re-render) all the expanded row detail View Components */
166
- redrawAllViewComponents() {
167
- this._views.forEach((compRef) => {
168
- this.redrawViewComponent(compRef);
169
- });
170
- }
171
- /** Render all the expanded row detail View Components */
172
- renderAllViewComponents() {
173
- this._views.forEach((view) => {
174
- if (view && view.dataContext) {
175
- this.renderViewModel(view.dataContext);
176
- }
177
- });
178
- }
179
- /** Redraw the necessary View Component */
180
- redrawViewComponent(createdView) {
181
- const containerElements = this.gridContainerElement.getElementsByClassName(`${ROW_DETAIL_CONTAINER_PREFIX}${createdView.id}`);
182
- if (containerElements && containerElements.length >= 0) {
183
- this.renderViewModel(createdView.dataContext);
184
- }
185
- }
186
- /** Render (or re-render) the View Component (Row Detail) */
187
- renderPreloadView() {
188
- const containerElements = this.gridContainerElement.getElementsByClassName(`${PRELOAD_CONTAINER_PREFIX}`);
189
- if (containerElements && containerElements.length >= 0) {
190
- this.angularUtilService.createAngularComponentAppendToDom(this._preloadComponent, containerElements[containerElements.length - 1], true);
191
- }
192
- }
193
- /** Render (or re-render) the View Component (Row Detail) */
194
- renderViewModel(item) {
195
- const containerElements = this.gridContainerElement.getElementsByClassName(`${ROW_DETAIL_CONTAINER_PREFIX}${item[this.datasetIdPropName]}`);
196
- if (containerElements && containerElements.length > 0) {
197
- const componentOutput = this.angularUtilService.createAngularComponentAppendToDom(this._viewComponent, containerElements[containerElements.length - 1], true);
198
- if (componentOutput && componentOutput.componentRef && componentOutput.componentRef.instance) {
199
- // pass a few properties to the Row Detail template component
200
- Object.assign(componentOutput.componentRef.instance, {
201
- model: item,
202
- addon: this,
203
- grid: this._grid,
204
- dataView: this.dataView,
205
- parent: this.rowDetailViewOptions && this.rowDetailViewOptions.parent,
206
- });
207
- const viewObj = this._views.find(obj => obj.id === item[this.datasetIdPropName]);
208
- if (viewObj) {
209
- viewObj.componentRef = componentOutput.componentRef;
210
- }
211
- return viewObj;
212
- }
213
- }
214
- return undefined;
215
- }
216
- // --
217
- // protected functions
218
- // ------------------
219
- disposeViewComponent(expandedView) {
220
- const compRef = expandedView?.componentRef;
221
- if (compRef) {
222
- this.appRef.detachView(compRef.hostView);
223
- if (compRef?.destroy) {
224
- compRef.destroy();
225
- }
226
- return expandedView;
227
- }
228
- }
229
- /**
230
- * notify the onAsyncResponse with the "args.item" (required property)
231
- * the plugin will then use item to populate the row detail panel with the "postTemplate"
232
- * @param item
233
- */
234
- notifyTemplate(item) {
235
- if (this.onAsyncResponse) {
236
- this.onAsyncResponse.notify({ item }, undefined, this);
237
- }
238
- }
239
- /**
240
- * On Processing, we will notify the plugin with the new item detail once backend server call completes
241
- * @param item
242
- */
243
- async onProcessing(item) {
244
- if (item && typeof this._userProcessFn === 'function') {
245
- let awaitedItemDetail;
246
- const userProcessFn = this._userProcessFn(item);
247
- // wait for the "userProcessFn", once resolved we will save it into the "collection"
248
- const response = await userProcessFn;
249
- if (response.hasOwnProperty(this.datasetIdPropName)) {
250
- awaitedItemDetail = response; // from Promise
251
- }
252
- else if (response && response instanceof Observable || response instanceof Promise) {
253
- awaitedItemDetail = await castObservableToPromise(this.rxjs, response); // from Angular-http-client
254
- }
255
- if (!awaitedItemDetail || !awaitedItemDetail.hasOwnProperty(this.datasetIdPropName)) {
256
- throw new Error(`[Angular-Slickgrid] could not process the Row Detail, you must make sure that your "process" callback
257
- (a Promise or an HttpClient call returning an Observable) returns an item object that has an "${this.datasetIdPropName}" property`);
258
- }
259
- // notify the plugin with the new item details
260
- this.notifyTemplate(awaitedItemDetail || {});
261
- }
262
- }
263
- /**
264
- * Just before the row get expanded or collapsed we will do the following
265
- * First determine if the row is expanding or collapsing,
266
- * if it's expanding we will add it to our View Components reference array if we don't already have it
267
- * or if it's collapsing we will remove it from our View Components reference array
268
- */
269
- handleOnBeforeRowDetailToggle(e, args) {
270
- // expanding
271
- if (args && args.item && args.item.__collapsed) {
272
- // expanding row detail
273
- const viewInfo = {
274
- id: args.item[this.datasetIdPropName],
275
- dataContext: args.item
276
- };
277
- const idPropName = this.gridOptions.datasetIdPropertyName || 'id';
278
- addToArrayWhenNotExists(this._views, viewInfo, idPropName);
279
- }
280
- else {
281
- // collapsing, so dispose of the View/Component
282
- const foundViewIndex = this._views.findIndex((view) => view.id === args.item[this.datasetIdPropName]);
283
- if (foundViewIndex >= 0 && this._views.hasOwnProperty(foundViewIndex)) {
284
- const compRef = this._views[foundViewIndex].componentRef;
285
- if (compRef) {
286
- this.appRef.detachView(compRef.hostView);
287
- compRef.destroy();
288
- }
289
- this._views.splice(foundViewIndex, 1);
290
- }
291
- }
292
- }
293
- /** When Row comes back to Viewport Range, we need to redraw the View */
294
- handleOnRowBackToViewportRange(e, args) {
295
- if (args?.item) {
296
- this.redrawAllViewComponents();
297
- }
298
- }
299
- }
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2tSb3dEZXRhaWxWaWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL2V4dGVuc2lvbnMvc2xpY2tSb3dEZXRhaWxWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sdUNBQXVDLENBQUM7QUFDL0MsT0FBTywyQ0FBMkMsQ0FBQztBQUduRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUt2QixzQkFBc0IsRUFDdEIsY0FBYyxHQUNmLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFFLGtCQUFrQixJQUFJLDJCQUEyQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUt2QyxNQUFNLDJCQUEyQixHQUFHLFlBQVksQ0FBQztBQUNqRCxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0FBUXJELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSwyQkFBMkI7SUFTakUsWUFDcUIsa0JBQXNDLEVBQ3RDLE1BQXNCLEVBQ3RCLGtCQUFzQyxFQUN0QyxvQkFBb0MsRUFDN0MsSUFBaUI7UUFFM0IsS0FBSyxFQUFFLENBQUM7UUFOVyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFnQjtRQUM3QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBVm5CLFdBQU0sR0FBa0IsRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztJQVduRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7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RyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ25ILElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3pELElBQUksT0FBTyxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDekMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNuQjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkM7U0FDRjtJQUNILENBQUM7SUFFRCx3RUFBd0U7SUFDOUQsOEJBQThCLENBQUMsQ0FBUSxFQUFFLElBQTBIO1FBQzNLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzbGlja2dyaWQvcGx1Z2lucy9zbGljay5yb3dkZXRhaWx2aWV3JztcbmltcG9ydCAnc2xpY2tncmlkL3BsdWdpbnMvc2xpY2sucm93c2VsZWN0aW9ubW9kZWwnO1xuXG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50UmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBhZGRUb0FycmF5V2hlbk5vdEV4aXN0cyxcbiAgY2FzdE9ic2VydmFibGVUb1Byb21pc2UsXG4gIEV2ZW50U3Vic2NyaXB0aW9uLFxuICBSeEpzRmFjYWRlLFxuICBTbGlja0V2ZW50SGFuZGxlcixcbiAgU2xpY2tHcmlkLFxuICBTbGlja1Jvd1NlbGVjdGlvbk1vZGVsLFxuICB1bnN1YnNjcmliZUFsbCxcbn0gZnJvbSAnQHNsaWNrZ3JpZC11bml2ZXJzYWwvY29tbW9uJztcbmltcG9ydCB7IEV2ZW50UHViU3ViU2VydmljZSB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2V2ZW50LXB1Yi1zdWInO1xuaW1wb3J0IHsgU2xpY2tSb3dEZXRhaWxWaWV3IGFzIFVuaXZlcnNhbFNsaWNrUm93RGV0YWlsVmlldyB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL3Jvdy1kZXRhaWwtdmlldy1wbHVnaW4nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgRE9NUHVyaWZ5IGZyb20gJ2RvbXB1cmlmeSc7XG5cbmltcG9ydCB7IEdyaWRPcHRpb24sIFJvd0RldGFpbFZpZXcgfSBmcm9tICcuLi9tb2RlbHMvaW5kZXgnO1xuaW1wb3J0IHsgQW5ndWxhclV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYW5ndWxhclV0aWwuc2VydmljZSc7XG5cbmNvbnN0IFJPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWCA9ICdjb250YWluZXJfJztcbmNvbnN0IFBSRUxPQURfQ09OVEFJTkVSX1BSRUZJWCA9ICdjb250YWluZXJfbG9hZGluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlZFZpZXcge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICBkYXRhQ29udGV4dDogYW55O1xuICBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55Pjtcbn1cblxuZXhwb3J0IGNsYXNzIFNsaWNrUm93RGV0YWlsVmlldyBleHRlbmRzIFVuaXZlcnNhbFNsaWNrUm93RGV0YWlsVmlldyB7XG4gIHJvd0RldGFpbENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG4gIHByb3RlY3RlZCBfZXZlbnRIYW5kbGVyITogU2xpY2tFdmVudEhhbmRsZXI7XG4gIHByb3RlY3RlZCBfcHJlbG9hZENvbXBvbmVudDogVHlwZTxvYmplY3Q+IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3ZpZXdzOiBDcmVhdGVkVmlld1tdID0gW107XG4gIHByb3RlY3RlZCBfdmlld0NvbXBvbmVudCE6IFR5cGU8b2JqZWN0PjtcbiAgcHJvdGVjdGVkIF9zdWJzY3JpcHRpb25zOiBFdmVudFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByb3RlY3RlZCBfdXNlclByb2Nlc3NGbiE6IChpdGVtOiBhbnkpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PiB8IFN1YmplY3Q8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYW5ndWxhclV0aWxTZXJ2aWNlOiBBbmd1bGFyVXRpbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2ZW50UHViU3ViU2VydmljZTogRXZlbnRQdWJTdWJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBncmlkQ29udGFpbmVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgcHJvdGVjdGVkIHJ4anM/OiBSeEpzRmFjYWRlLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGFkZG9uT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25zKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRhdGFzZXRJZFByb3BOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMuZGF0YXNldElkUHJvcGVydHlOYW1lIHx8ICdpZCc7XG4gIH1cblxuICBnZXQgZXZlbnRIYW5kbGVyKCk6IFNsaWNrRXZlbnRIYW5kbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRIYW5kbGVyO1xuICB9XG4gIHNldCBldmVudEhhbmRsZXIoZXZlbnRIYW5kbGVyOiBTbGlja0V2ZW50SGFuZGxlcikge1xuICAgIHRoaXMuX2V2ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlcjtcbiAgfVxuXG4gIC8qKiBHZXR0ZXIgZm9yIHRoZSBHcmlkIE9wdGlvbnMgcHVsbGVkIHRocm91Z2ggdGhlIEdyaWQgT2JqZWN0ICovXG4gIGdldCBncmlkT3B0aW9ucygpOiBHcmlkT3B0aW9uIHtcbiAgICByZXR1cm4gKHRoaXMuX2dyaWQ/LmdldE9wdGlvbnMoKSB8fCB7fSkgYXMgR3JpZE9wdGlvbjtcbiAgfVxuXG4gIGdldCByb3dEZXRhaWxWaWV3T3B0aW9ucygpOiBSb3dEZXRhaWxWaWV3IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3O1xuICB9XG5cbiAgYWRkUnhKc1Jlc291cmNlKHJ4anM6IFJ4SnNGYWNhZGUpIHtcbiAgICB0aGlzLnJ4anMgPSByeGpzO1xuICB9XG5cbiAgLyoqIERpc3Bvc2Ugb2YgdGhlIFJvd0RldGFpbFZpZXcgRXh0ZW5zaW9uICovXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gdW5zdWJzY3JpYmVBbGwodGhpcy5fc3Vic2NyaXB0aW9ucyk7IC8vIGFsc28gdW5zdWJzY3JpYmUgYWxsIFJ4SlMgc3Vic2NyaXB0aW9uc1xuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8qKiBEaXNwb3NlIG9mIGFsbCB0aGUgb3BlbmVkIFJvdyBEZXRhaWwgUGFuZWxzIEFuZ3VsYXIgVmlldyBDb21wb25lbnRzICovXG4gIGRpc3Bvc2VBbGxWaWV3Q29tcG9uZW50cygpIHtcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKChjb21wUmVmKSA9PiB0aGlzLmRpc3Bvc2VWaWV3Q29tcG9uZW50KGNvbXBSZWYpKTtcbiAgICB0aGlzLl92aWV3cyA9IFtdO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgaW5zdGFuY2Ugb2YgdGhlIFNsaWNrR3JpZCBhZGRvbiAoY29udHJvbCBvciBwbHVnaW4pLiAqL1xuICBnZXRBZGRvbkluc3RhbmNlKCk6IFNsaWNrUm93RGV0YWlsVmlldyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdChncmlkOiBTbGlja0dyaWQpIHtcbiAgICB0aGlzLl9ncmlkID0gZ3JpZDtcbiAgICBzdXBlci5pbml0KHRoaXMuX2dyaWQpO1xuICAgIHRoaXMucmVnaXN0ZXIoZ3JpZD8uZ2V0U2VsZWN0aW9uTW9kZWwoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBwbHVnaW4gYmVmb3JlIHRoZSBHcmlkIGNyZWF0aW9uLCBlbHNlIGl0IHdpbGwgYmVoYXZlIG9kZGx5LlxuICAgKiBNb3N0bHkgYmVjYXVzZSB0aGUgY29sdW1uIGRlZmluaXRpb25zIG1pZ2h0IGNoYW5nZSBhZnRlciB0aGUgZ3JpZCBjcmVhdGlvblxuICAgKi9cbiAgcmVnaXN0ZXIocm93U2VsZWN0aW9uUGx1Z2luPzogU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5ncmlkT3B0aW9ucy5yb3dEZXRhaWxWaWV3Py5wcm9jZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB3ZSBuZWVkIHRvIGtlZXAgdGhlIHVzZXIgXCJwcm9jZXNzXCIgbWV0aG9kIGFuZCByZXBsYWNlIGl0IHdpdGggb3VyIG93biBleGVjdXRpb24gbWV0aG9kXG4gICAgICAvLyB3ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiB3ZSBnZXQgdGhlIGl0ZW0gZGV0YWlsLCB3ZSBuZWVkIHRvIGNhbGwgXCJvbkFzeW5jUmVzcG9uc2Uubm90aWZ5XCIgZm9yIHRoZSBwbHVnaW4gdG8gd29ya1xuICAgICAgdGhpcy5fdXNlclByb2Nlc3NGbiA9IHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcm9jZXNzIGFzIChpdGVtOiBhbnkpID0+IFByb21pc2U8YW55PjsgICAgICAgICAgICAgICAgLy8ga2VlcCB1c2VyJ3MgcHJvY2VzcyBtZXRob2RcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcm9jZXNzID0gKGl0ZW0pID0+IHRoaXMub25Qcm9jZXNzaW5nKGl0ZW0pOyAgLy8gcmVwbGFjZSBwcm9jZXNzIG1ldGhvZCAmIHJ1biBvdXIgaW50ZXJuYWwgb25lXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0FuZ3VsYXItU2xpY2tncmlkXSBZb3UgbmVlZCB0byBwcm92aWRlIGEgXCJwcm9jZXNzXCIgZnVuY3Rpb24gZm9yIHRoZSBSb3cgRGV0YWlsIEV4dGVuc2lvbiB0byB3b3JrIHByb3Blcmx5Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2dyaWQgJiYgdGhpcy5ncmlkT3B0aW9ucz8ucm93RGV0YWlsVmlldykge1xuICAgICAgLy8gbG9hZCB0aGUgUHJlbG9hZCAmIFJvd0RldGFpbCBUZW1wbGF0ZXMgKGNvdWxkIGJlIHN0cmFpZ2h0IEhUTUwgb3IgQW5ndWxhciBWaWV3L1ZpZXdNb2RlbClcbiAgICAgIC8vIHdoZW4gdGhvc2UgYXJlIEFuZ3VsYXIgVmlldy9WaWV3TW9kZWwsIHdlIG5lZWQgdG8gY3JlYXRlIFZpZXcgQ29tcG9uZW50ICYgcHJvdmlkZSB0aGUgaHRtbCBjb250YWluZXJzIHRvIHRoZSBQbHVnaW4gKHByZVRlbXBsYXRlL3Bvc3RUZW1wbGF0ZSBtZXRob2RzKVxuICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJlVGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5fcHJlbG9hZENvbXBvbmVudCA9IHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnByZWxvYWRDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wcmVUZW1wbGF0ZSA9ICgpID0+IERPTVB1cmlmeS5zYW5pdGl6ZShgPGRpdiBjbGFzcz1cIiR7UFJFTE9BRF9DT05UQUlORVJfUFJFRklYfVwiPjwvZGl2PmApO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucG9zdFRlbXBsYXRlKSB7XG4gICAgICAgIHRoaXMuX3ZpZXdDb21wb25lbnQgPSB0aGlzLmdyaWRPcHRpb25zPy5yb3dEZXRhaWxWaWV3Py52aWV3Q29tcG9uZW50O1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucG9zdFRlbXBsYXRlID0gKGl0ZW1EZXRhaWw6IGFueSkgPT4gRE9NUHVyaWZ5LnNhbml0aXplKGA8ZGl2IGNsYXNzPVwiJHtST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVh9JHtpdGVtRGV0YWlsW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdfVwiPjwvZGl2PmApO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzIGFsc28gcmVxdWlyZXMgdGhlIFJvdyBTZWxlY3Rpb24gTW9kZWwgdG8gYmUgcmVnaXN0ZXJlZCBhcyB3ZWxsXG4gICAgICBpZiAoIXJvd1NlbGVjdGlvblBsdWdpbiB8fCAhdGhpcy5fZ3JpZC5nZXRTZWxlY3Rpb25Nb2RlbCgpKSB7XG4gICAgICAgIHJvd1NlbGVjdGlvblBsdWdpbiA9IG5ldyBTbGlja1Jvd1NlbGVjdGlvbk1vZGVsKHRoaXMuZ3JpZE9wdGlvbnMucm93U2VsZWN0aW9uT3B0aW9ucyB8fCB7IHNlbGVjdEFjdGl2ZVJvdzogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy5fZ3JpZC5zZXRTZWxlY3Rpb25Nb2RlbChyb3dTZWxlY3Rpb25QbHVnaW4pO1xuICAgICAgfVxuXG4gICAgICAvLyBob29rIGFsbCBldmVudHNcbiAgICAgIGlmICh0aGlzLl9ncmlkICYmIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25FeHRlbnNpb25SZWdpc3RlcmVkKSB7XG4gICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkV4dGVuc2lvblJlZ2lzdGVyZWQodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vbkFzeW5jUmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25Bc3luY1Jlc3BvbnNlLCAoZXZlbnQsIGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZShldmVudCwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vbkFzeW5jRW5kVXBkYXRlKSB7XG4gICAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQXN5bmNFbmRVcGRhdGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IH0pID0+IHtcbiAgICAgICAgICAgIC8vIHRyaWdnZXJzIGFmdGVyIGJhY2tlbmQgY2FsbGVkIFwib25Bc3luY1Jlc3BvbnNlLm5vdGlmeSgpXCJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVmlld01vZGVsKGFyZ3M/Lml0ZW0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jRW5kVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Bc3luY0VuZFVwZGF0ZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25BZnRlclJvd0RldGFpbFRvZ2dsZSwgKGU6IGFueSwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgZXhwYW5kZWRSb3dzOiBudW1iZXJbXTsgfSkgPT4ge1xuICAgICAgICAgICAgLy8gZGlzcGxheSBwcmVsb2FkIHRlbXBsYXRlICYgcmUtcmVuZGVyIGFsbCB0aGUgb3RoZXIgRGV0YWlsIFZpZXdzIGFmdGVyIHRvZ2dsaW5nXG4gICAgICAgICAgICAvLyB0aGUgcHJlbG9hZCBWaWV3IHdpbGwgZXZlbnR1YWxseSBnbyBhd2F5IG9uY2UgdGhlIGRhdGEgZ2V0cyBsb2FkZWQgYWZ0ZXIgdGhlIFwib25Bc3luY0VuZFVwZGF0ZVwiIGV2ZW50XG4gICAgICAgICAgICB0aGlzLnJlbmRlclByZWxvYWRWaWV3KCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckFsbFZpZXdDb21wb25lbnRzKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlKGUsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUpIHtcbiAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUsIChlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAvLyBiZWZvcmUgdG9nZ2xpbmcgcm93IGRldGFpbCwgd2UgbmVlZCB0byBjcmVhdGUgVmlldyBDb21wb25lbnQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgdGhpcy5oYW5kbGVPbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IHJvd0lkOiBudW1iZXI7IHJvd0luZGV4OiBudW1iZXI7IGV4cGFuZGVkUm93czogYW55W107IHJvd0lkc091dE9mVmlld3BvcnQ6IG51bWJlcltdOyB9KSA9PiB7XG4gICAgICAgICAgICAvLyB3aGVuIHJvdyBpcyBiYWNrIHRvIHZpZXdwb3J0IHJhbmdlLCB3ZSB3aWxsIHJlLXJlbmRlciB0aGUgVmlldyBDb21wb25lbnQocylcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlT25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UoZSwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vblJvd091dE9mVmlld3BvcnRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5vblJvd091dE9mVmlld3BvcnRSYW5nZSwgKGU6IGFueSwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgcm93SWQ6IG51bWJlcjsgcm93SW5kZXg6IG51bWJlcjsgZXhwYW5kZWRSb3dzOiBhbnlbXTsgcm93SWRzT3V0T2ZWaWV3cG9ydDogbnVtYmVyW107IH0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25Sb3dPdXRPZlZpZXdwb3J0UmFuZ2UoZSwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLVxuICAgICAgICAvLyBob29rIHNvbWUgZXZlbnRzIG5lZWRlZCBieSB0aGUgUGx1Z2luIGl0c2VsZlxuXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcmVkcmF3IHRoZSBvcGVuIGRldGFpbCB2aWV3cyBpZiB3ZSBjaGFuZ2UgY29sdW1uIHBvc2l0aW9uIChjb2x1bW4gcmVvcmRlcilcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uQ29sdW1uc1Jlb3JkZXJlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcblxuICAgICAgICAvLyBvbiByb3cgc2VsZWN0aW9uIGNoYW5nZWQsIHdlIGFsc28gbmVlZCB0byByZWRyYXdcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uIHx8IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlQ2hlY2tib3hTZWxlY3Rvcikge1xuICAgICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlci5zdWJzY3JpYmUodGhpcy5fZ3JpZC5vblNlbGVjdGVkUm93c0NoYW5nZWQsIHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBvbiBzb3J0LCBhbGwgcm93IGRldGFpbCBhcmUgY29sbGFwc2VkIHNvIHdlIGNhbiBkaXNwb3NlIG9mIGFsbCB0aGUgVmlld3MgYXMgd2VsbFxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMuX2dyaWQub25Tb3J0LCB0aGlzLmRpc3Bvc2VBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcblxuICAgICAgICAvLyBvbiBmaWx0ZXIgY2hhbmdlZCwgd2UgbmVlZCB0byByZS1yZW5kZXIgYWxsIFZpZXdzXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICB0aGlzLmV2ZW50UHViU3ViU2VydmljZT8uc3Vic2NyaWJlKCdvbkZpbHRlckNoYW5nZWQnLCB0aGlzLnJlZHJhd0FsbFZpZXdDb21wb25lbnRzLmJpbmQodGhpcykpLFxuICAgICAgICAgIHRoaXMuZXZlbnRQdWJTdWJTZXJ2aWNlPy5zdWJzY3JpYmUoJ29uR3JpZE1lbnVDbGVhckFsbEZpbHRlcnMnLCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSkpLFxuICAgICAgICAgIHRoaXMuZXZlbnRQdWJTdWJTZXJ2aWNlPy5zdWJzY3JpYmUoJ29uR3JpZE1lbnVDbGVhckFsbFNvcnRpbmcnLCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBSZWRyYXcgKHJlLXJlbmRlcikgYWxsIHRoZSBleHBhbmRlZCByb3cgZGV0YWlsIFZpZXcgQ29tcG9uZW50cyAqL1xuICByZWRyYXdBbGxWaWV3Q29tcG9uZW50cygpIHtcbiAgICB0aGlzLl92aWV3cy5mb3JFYWNoKChjb21wUmVmKSA9PiB7XG4gICAgICB0aGlzLnJlZHJhd1ZpZXdDb21wb25lbnQoY29tcFJlZik7XG4gICAgfSk7XG4gIH1cblxuICAvKiogUmVuZGVyIGFsbCB0aGUgZXhwYW5kZWQgcm93IGRldGFpbCBWaWV3IENvbXBvbmVudHMgKi9cbiAgcmVuZGVyQWxsVmlld0NvbXBvbmVudHMoKSB7XG4gICAgdGhpcy5fdmlld3MuZm9yRWFjaCgodmlldykgPT4ge1xuICAgICAgaWYgKHZpZXcgJiYgdmlldy5kYXRhQ29udGV4dCkge1xuICAgICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbCh2aWV3LmRhdGFDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZWRyYXcgdGhlIG5lY2Vzc2FyeSBWaWV3IENvbXBvbmVudCAqL1xuICByZWRyYXdWaWV3Q29tcG9uZW50KGNyZWF0ZWRWaWV3OiBDcmVhdGVkVmlldykge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gdGhpcy5ncmlkQ29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2NyZWF0ZWRWaWV3LmlkfWApO1xuICAgIGlmIChjb250YWluZXJFbGVtZW50cyAmJiBjb250YWluZXJFbGVtZW50cy5sZW5ndGggPj0gMCkge1xuICAgICAgdGhpcy5yZW5kZXJWaWV3TW9kZWwoY3JlYXRlZFZpZXcuZGF0YUNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZW5kZXIgKG9yIHJlLXJlbmRlcikgdGhlIFZpZXcgQ29tcG9uZW50IChSb3cgRGV0YWlsKSAqL1xuICByZW5kZXJQcmVsb2FkVmlldygpIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50cyA9IHRoaXMuZ3JpZENvbnRhaW5lckVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShgJHtQUkVMT0FEX0NPTlRBSU5FUl9QUkVGSVh9YCk7XG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnRzICYmIGNvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCA+PSAwKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJVdGlsU2VydmljZS5jcmVhdGVBbmd1bGFyQ29tcG9uZW50QXBwZW5kVG9Eb20odGhpcy5fcHJlbG9hZENvbXBvbmVudCwgY29udGFpbmVyRWxlbWVudHNbY29udGFpbmVyRWxlbWVudHMubGVuZ3RoIC0gMV0sIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZW5kZXIgKG9yIHJlLXJlbmRlcikgdGhlIFZpZXcgQ29tcG9uZW50IChSb3cgRGV0YWlsKSAqL1xuICByZW5kZXJWaWV3TW9kZWwoaXRlbTogYW55KTogQ3JlYXRlZFZpZXcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gdGhpcy5ncmlkQ29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2l0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV19YCk7XG4gICAgaWYgKGNvbnRhaW5lckVsZW1lbnRzICYmIGNvbnRhaW5lckVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudE91dHB1dCA9IHRoaXMuYW5ndWxhclV0aWxTZXJ2aWNlLmNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbSh0aGlzLl92aWV3Q29tcG9uZW50LCBjb250YWluZXJFbGVtZW50c1tjb250YWluZXJFbGVtZW50cy5sZW5ndGggLSAxXSwgdHJ1ZSk7XG4gICAgICBpZiAoY29tcG9uZW50T3V0cHV0ICYmIGNvbXBvbmVudE91dHB1dC5jb21wb25lbnRSZWYgJiYgY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xuICAgICAgICAvLyBwYXNzIGEgZmV3IHByb3BlcnRpZXMgdG8gdGhlIFJvdyBEZXRhaWwgdGVtcGxhdGUgY29tcG9uZW50XG4gICAgICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZi5pbnN0YW5jZSwge1xuICAgICAgICAgIG1vZGVsOiBpdGVtLFxuICAgICAgICAgIGFkZG9uOiB0aGlzLFxuICAgICAgICAgIGdyaWQ6IHRoaXMuX2dyaWQsXG4gICAgICAgICAgZGF0YVZpZXc6IHRoaXMuZGF0YVZpZXcsXG4gICAgICAgICAgcGFyZW50OiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMucGFyZW50LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB2aWV3T2JqID0gdGhpcy5fdmlld3MuZmluZChvYmogPT4gb2JqLmlkID09PSBpdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdKTtcbiAgICAgICAgaWYgKHZpZXdPYmopIHtcbiAgICAgICAgICB2aWV3T2JqLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudE91dHB1dC5jb21wb25lbnRSZWY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZpZXdPYmo7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyAtLVxuICAvLyBwcm90ZWN0ZWQgZnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3RlY3RlZCBkaXNwb3NlVmlld0NvbXBvbmVudChleHBhbmRlZFZpZXc6IENyZWF0ZWRWaWV3KTogQ3JlYXRlZFZpZXcgfCB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gZXhwYW5kZWRWaWV3Py5jb21wb25lbnRSZWY7XG4gICAgaWYgKGNvbXBSZWYpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcFJlZi5ob3N0Vmlldyk7XG4gICAgICBpZiAoY29tcFJlZj8uZGVzdHJveSkge1xuICAgICAgICBjb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBleHBhbmRlZFZpZXc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIG5vdGlmeSB0aGUgb25Bc3luY1Jlc3BvbnNlIHdpdGggdGhlIFwiYXJncy5pdGVtXCIgKHJlcXVpcmVkIHByb3BlcnR5KVxuICAgKiB0aGUgcGx1Z2luIHdpbGwgdGhlbiB1c2UgaXRlbSB0byBwb3B1bGF0ZSB0aGUgcm93IGRldGFpbCBwYW5lbCB3aXRoIHRoZSBcInBvc3RUZW1wbGF0ZVwiXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBwcm90ZWN0ZWQgbm90aWZ5VGVtcGxhdGUoaXRlbTogYW55KSB7XG4gICAgaWYgKHRoaXMub25Bc3luY1Jlc3BvbnNlKSB7XG4gICAgICB0aGlzLm9uQXN5bmNSZXNwb25zZS5ub3RpZnkoeyBpdGVtIH0sIHVuZGVmaW5lZCwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9uIFByb2Nlc3NpbmcsIHdlIHdpbGwgbm90aWZ5IHRoZSBwbHVnaW4gd2l0aCB0aGUgbmV3IGl0ZW0gZGV0YWlsIG9uY2UgYmFja2VuZCBzZXJ2ZXIgY2FsbCBjb21wbGV0ZXNcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvblByb2Nlc3NpbmcoaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0gJiYgdHlwZW9mIHRoaXMuX3VzZXJQcm9jZXNzRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCBhd2FpdGVkSXRlbURldGFpbDogYW55O1xuICAgICAgY29uc3QgdXNlclByb2Nlc3NGbiA9IHRoaXMuX3VzZXJQcm9jZXNzRm4oaXRlbSk7XG5cbiAgICAgIC8vIHdhaXQgZm9yIHRoZSBcInVzZXJQcm9jZXNzRm5cIiwgb25jZSByZXNvbHZlZCB3ZSB3aWxsIHNhdmUgaXQgaW50byB0aGUgXCJjb2xsZWN0aW9uXCJcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgfCBhbnlbXSA9IGF3YWl0IHVzZXJQcm9jZXNzRm47XG5cbiAgICAgIGlmIChyZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmRhdGFzZXRJZFByb3BOYW1lKSkge1xuICAgICAgICBhd2FpdGVkSXRlbURldGFpbCA9IHJlc3BvbnNlOyAvLyBmcm9tIFByb21pc2VcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UgaW5zdGFuY2VvZiBPYnNlcnZhYmxlIHx8IHJlc3BvbnNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBhd2FpdGVkSXRlbURldGFpbCA9IGF3YWl0IGNhc3RPYnNlcnZhYmxlVG9Qcm9taXNlKHRoaXMucnhqcyBhcyBSeEpzRmFjYWRlLCByZXNwb25zZSk7IC8vIGZyb20gQW5ndWxhci1odHRwLWNsaWVudFxuICAgICAgfVxuXG4gICAgICBpZiAoIWF3YWl0ZWRJdGVtRGV0YWlsIHx8ICFhd2FpdGVkSXRlbURldGFpbC5oYXNPd25Qcm9wZXJ0eSh0aGlzLmRhdGFzZXRJZFByb3BOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtBbmd1bGFyLVNsaWNrZ3JpZF0gY291bGQgbm90IHByb2Nlc3MgdGhlIFJvdyBEZXRhaWwsIHlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHlvdXIgXCJwcm9jZXNzXCIgY2FsbGJhY2tcbiAgICAgICAgICAoYSBQcm9taXNlIG9yIGFuIEh0dHBDbGllbnQgY2FsbCByZXR1cm5pbmcgYW4gT2JzZXJ2YWJsZSkgcmV0dXJucyBhbiBpdGVtIG9iamVjdCB0aGF0IGhhcyBhbiBcIiR7dGhpcy5kYXRhc2V0SWRQcm9wTmFtZX1cIiBwcm9wZXJ0eWApO1xuICAgICAgfVxuXG4gICAgICAvLyBub3RpZnkgdGhlIHBsdWdpbiB3aXRoIHRoZSBuZXcgaXRlbSBkZXRhaWxzXG4gICAgICB0aGlzLm5vdGlmeVRlbXBsYXRlKGF3YWl0ZWRJdGVtRGV0YWlsIHx8IHt9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSnVzdCBiZWZvcmUgdGhlIHJvdyBnZXQgZXhwYW5kZWQgb3IgY29sbGFwc2VkIHdlIHdpbGwgZG8gdGhlIGZvbGxvd2luZ1xuICAgKiBGaXJzdCBkZXRlcm1pbmUgaWYgdGhlIHJvdyBpcyBleHBhbmRpbmcgb3IgY29sbGFwc2luZyxcbiAgICogaWYgaXQncyBleHBhbmRpbmcgd2Ugd2lsbCBhZGQgaXQgdG8gb3VyIFZpZXcgQ29tcG9uZW50cyByZWZlcmVuY2UgYXJyYXkgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0XG4gICAqIG9yIGlmIGl0J3MgY29sbGFwc2luZyB3ZSB3aWxsIHJlbW92ZSBpdCBmcm9tIG91ciBWaWV3IENvbXBvbmVudHMgcmVmZXJlbmNlIGFycmF5XG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25CZWZvcmVSb3dEZXRhaWxUb2dnbGUoZTogRXZlbnQsIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IH0pIHtcbiAgICAvLyBleHBhbmRpbmdcbiAgICBpZiAoYXJncyAmJiBhcmdzLml0ZW0gJiYgYXJncy5pdGVtLl9fY29sbGFwc2VkKSB7XG4gICAgICAvLyBleHBhbmRpbmcgcm93IGRldGFpbFxuICAgICAgY29uc3Qgdmlld0luZm86IENyZWF0ZWRWaWV3ID0ge1xuICAgICAgICBpZDogYXJncy5pdGVtW3RoaXMuZGF0YXNldElkUHJvcE5hbWVdLFxuICAgICAgICBkYXRhQ29udGV4dDogYXJncy5pdGVtXG4gICAgICB9O1xuICAgICAgY29uc3QgaWRQcm9wTmFtZSA9IHRoaXMuZ3JpZE9wdGlvbnMuZGF0YXNldElkUHJvcGVydHlOYW1lIHx8ICdpZCc7XG4gICAgICBhZGRUb0FycmF5V2hlbk5vdEV4aXN0cyh0aGlzLl92aWV3cywgdmlld0luZm8sIGlkUHJvcE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb2xsYXBzaW5nLCBzbyBkaXNwb3NlIG9mIHRoZSBWaWV3L0NvbXBvbmVudFxuICAgICAgY29uc3QgZm91bmRWaWV3SW5kZXggPSB0aGlzLl92aWV3cy5maW5kSW5kZXgoKHZpZXc6IENyZWF0ZWRWaWV3KSA9PiB2aWV3LmlkID09PSBhcmdzLml0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV0pO1xuICAgICAgaWYgKGZvdW5kVmlld0luZGV4ID49IDAgJiYgdGhpcy5fdmlld3MuaGFzT3duUHJvcGVydHkoZm91bmRWaWV3SW5kZXgpKSB7XG4gICAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLl92aWV3c1tmb3VuZFZpZXdJbmRleF0uY29tcG9uZW50UmVmO1xuICAgICAgICBpZiAoY29tcFJlZikge1xuICAgICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcoY29tcFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgY29tcFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmlld3Muc3BsaWNlKGZvdW5kVmlld0luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogV2hlbiBSb3cgY29tZXMgYmFjayB0byBWaWV3cG9ydCBSYW5nZSwgd2UgbmVlZCB0byByZWRyYXcgdGhlIFZpZXcgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZU9uUm93QmFja1RvVmlld3BvcnRSYW5nZShlOiBFdmVudCwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgcm93SWQ6IG51bWJlcjsgcm93SW5kZXg6IG51bWJlcjsgZXhwYW5kZWRSb3dzOiBhbnlbXTsgcm93SWRzT3V0T2ZWaWV3cG9ydDogbnVtYmVyW107IH0pIHtcbiAgICBpZiAoYXJncz8uaXRlbSkge1xuICAgICAgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhckdyaWRJbnN0YW5jZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvbW9kZWxzL2FuZ3VsYXJHcmlkSW5zdGFuY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWNrZW5kU2VydmljZSxcbiAgRXh0ZW5zaW9uTGlzdCxcbiAgRXh0ZW5zaW9uU2VydmljZSxcbiAgRmlsdGVyU2VydmljZSxcbiAgR3JpZEV2ZW50U2VydmljZSxcbiAgR3JpZFNlcnZpY2UsXG4gIEdyaWRTdGF0ZVNlcnZpY2UsXG4gIEdyb3VwaW5nQW5kQ29sc3BhblNlcnZpY2UsXG4gIFBhZ2luYXRpb25TZXJ2aWNlLFxuICBSZXNpemVyU2VydmljZSxcbiAgU2xpY2tEYXRhVmlldyxcbiAgU2xpY2tHcmlkLFxuICBTb3J0U2VydmljZSxcbiAgVHJlZURhdGFTZXJ2aWNlXG59IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhckdyaWRJbnN0YW5jZSB7XG4gIC8qKiBTbGljayBEYXRhVmlldyBvYmplY3QgKi9cbiAgZGF0YVZpZXc6IFNsaWNrRGF0YVZpZXc7XG5cbiAgLyoqIFNsaWNrIEdyaWQgb2JqZWN0ICovXG4gIHNsaWNrR3JpZDogU2xpY2tHcmlkO1xuXG4gIC8qKiBTbGlja0dyaWQgZXh0ZW5zaW9ucyAoZXh0ZXJuYWwgY29udHJvbHMvcGx1Z2lucykgKi9cbiAgZXh0ZW5zaW9uczogRXh0ZW5zaW9uTGlzdDxhbnk+O1xuXG4gIC8vIC0tXG4gIC8vIE1ldGhvZHNcbiAgLyoqIERpc3Bvc2Ugb2YgdGhlIGdyaWQgYW5kIG9wdGlvbmFsbHkgZW1wdHkgdGhlIERPTSBlbGVtZW50IGdyaWQgY29udGFpbmVyIGFzIHdlbGwgKi9cbiAgZGVzdHJveTogKGVtcHR5RG9tRWxlbWVudENvbnRhaW5lcj86IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLy8gLS1cbiAgLy8gU2VydmljZXNcblxuICAvKiogQmFja2VuZCBTZXJ2aWNlLCB3aGVuIGF2YWlsYWJsZSAqL1xuICBiYWNrZW5kU2VydmljZT86IEJhY2tlbmRTZXJ2aWNlO1xuXG4gIC8qKiBFeHRlbnNpb24gKFBsdWdpbnMgJiBDb250cm9scykgU2VydmljZSAqL1xuICBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlO1xuXG4gIC8qKiBGaWx0ZXIgU2VydmljZSAqL1xuICBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlO1xuXG4gIC8qKiBHcmlkIFNlcnZpY2UgKGdyaWQgZXh0cmEgZnVuY3Rpb25hbGl0aWVzKSAqL1xuICBncmlkU2VydmljZTogR3JpZFNlcnZpY2U7XG5cbiAgLyoqIEdyaWQgRXZlbnRzIFNlcnZpY2UgKi9cbiAgZ3JpZEV2ZW50U2VydmljZTogR3JpZEV2ZW50U2VydmljZTtcblxuICAvKiogR3JpZCBTdGF0ZSBTZXJ2aWNlICovXG4gIGdyaWRTdGF0ZVNlcnZpY2U6IEdyaWRTdGF0ZVNlcnZpY2U7XG5cbiAgLyoqIEdyb3VwaW5nIChhbmQgY29sc3BhbikgU2VydmljZSAqL1xuICBncm91cGluZ1NlcnZpY2U6IEdyb3VwaW5nQW5kQ29sc3BhblNlcnZpY2U7XG5cbiAgLyoqIFBhZ2luYXRpb24gU2VydmljZSAoYWxsb3dzIHlvdSB0byBwcm9ncmFtbWF0aWNhbGx5IGdvIHRvIGZpcnN0L2xhc3QgcGFnZSwgZXRjLi4uKSAqL1xuICBwYWdpbmF0aW9uU2VydmljZT86IFBhZ2luYXRpb25TZXJ2aWNlO1xuXG4gIC8qKiBSZXNpemVyIFNlcnZpY2UgKGluY2x1ZGluZyBhdXRvLXJlc2l6ZSkgKi9cbiAgcmVzaXplclNlcnZpY2U6IFJlc2l6ZXJTZXJ2aWNlO1xuXG4gIC8qKiBTb3J0IFNlcnZpY2UgKi9cbiAgc29ydFNlcnZpY2U6IFNvcnRTZXJ2aWNlO1xuXG4gIC8qKiBUcmVlIERhdGEgVmlldyBTZXJ2aWNlICovXG4gIHRyZWVEYXRhU2VydmljZTogVHJlZURhdGFTZXJ2aWNlO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxUZXN0aW5nRGVwZW5kZW5jaWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9tb2RlbHMvZXh0ZXJuYWxUZXN0aW5nRGVwZW5kZW5jaWVzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFja2VuZFV0aWxpdHlTZXJ2aWNlLFxuICBDb2xsZWN0aW9uU2VydmljZSxcbiAgRXh0ZW5zaW9uU2VydmljZSxcbiAgRXh0ZW5zaW9uVXRpbGl0eSxcbiAgRmlsdGVyU2VydmljZSxcbiAgR3JpZEV2ZW50U2VydmljZSxcbiAgR3JpZFNlcnZpY2UsXG4gIEdyaWRTdGF0ZVNlcnZpY2UsXG4gIEdyb3VwaW5nQW5kQ29sc3BhblNlcnZpY2UsXG4gIFBhZ2luYXRpb25TZXJ2aWNlLFxuICBSZXNpemVyU2VydmljZSxcbiAgUnhKc0ZhY2FkZSxcbiAgU2hhcmVkU2VydmljZSxcbiAgU29ydFNlcnZpY2UsXG4gIFRyZWVEYXRhU2VydmljZVxufSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuaW1wb3J0IHsgRXZlbnRQdWJTdWJTZXJ2aWNlIH0gZnJvbSAnQHNsaWNrZ3JpZC11bml2ZXJzYWwvZXZlbnQtcHViLXN1Yic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxUZXN0aW5nRGVwZW5kZW5jaWVzIHtcbiAgYmFja2VuZFV0aWxpdHlTZXJ2aWNlPzogQmFja2VuZFV0aWxpdHlTZXJ2aWNlO1xuICBjb2xsZWN0aW9uU2VydmljZT86IENvbGxlY3Rpb25TZXJ2aWNlO1xuICBldmVudFB1YlN1YlNlcnZpY2U/OiBFdmVudFB1YlN1YlNlcnZpY2U7XG4gIGV4dGVuc2lvblNlcnZpY2U/OiBFeHRlbnNpb25TZXJ2aWNlO1xuICBleHRlbnNpb25VdGlsaXR5PzogRXh0ZW5zaW9uVXRpbGl0eTtcbiAgZmlsdGVyU2VydmljZT86IEZpbHRlclNlcnZpY2U7XG4gIGdyaWRFdmVudFNlcnZpY2U/OiBHcmlkRXZlbnRTZXJ2aWNlO1xuICBncmlkU2VydmljZT86IEdyaWRTZXJ2aWNlO1xuICBncmlkU3RhdGVTZXJ2aWNlPzogR3JpZFN0YXRlU2VydmljZTtcbiAgZ3JvdXBpbmdBbmRDb2xzcGFuU2VydmljZT86IEdyb3VwaW5nQW5kQ29sc3BhblNlcnZpY2U7XG4gIHBhZ2luYXRpb25TZXJ2aWNlPzogUGFnaW5hdGlvblNlcnZpY2U7XG4gIHJlc2l6ZXJTZXJ2aWNlPzogUmVzaXplclNlcnZpY2U7XG4gIHJ4anM/OiBSeEpzRmFjYWRlO1xuICBzaGFyZWRTZXJ2aWNlPzogU2hhcmVkU2VydmljZTtcbiAgc29ydFNlcnZpY2U/OiBTb3J0U2VydmljZTtcbiAgdHJlZURhdGFTZXJ2aWNlPzogVHJlZURhdGFTZXJ2aWNlO1xufSJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZE9wdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvbW9kZWxzL2dyaWRPcHRpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHcmlkT3B0aW9uIGFzIFVuaXZlcnNhbEdyaWRPcHRpb24gfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuXG5pbXBvcnQgeyBSb3dEZXRhaWxWaWV3IH0gZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZE9wdGlvbiBleHRlbmRzIFVuaXZlcnNhbEdyaWRPcHRpb24ge1xuICAvKiogbmd4LXRyYW5zbGF0ZSBpMThuIHRyYW5zbGF0aW9uIHNlcnZpY2UgaW5zdGFuY2UgKi9cbiAgaTE4bj86IFRyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgLyoqIFJvdyBEZXRhaWwgVmlldyBQbHVnaW4gb3B0aW9ucyAmIGV2ZW50cyAoY29sdW1uSWQsIGNzc0NsYXNzLCB0b29sVGlwLCB3aWR0aCkgKi9cbiAgcm93RGV0YWlsVmlldz86IFJvd0RldGFpbFZpZXc7XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93RGV0YWlsVmlldy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvbW9kZWxzL3Jvd0RldGFpbFZpZXcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3dEZXRhaWxWaWV3IGFzIFVuaXZlcnNhbFJvd0RldGFpbFZpZXcgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvd0RldGFpbFZpZXcgZXh0ZW5kcyBVbml2ZXJzYWxSb3dEZXRhaWxWaWV3IHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgcGFzcyB5b3VyIFBhcmVudCBDb21wb25lbnQgcmVmZXJlbmNlIHRvIHlvdXIgQ2hpbGQgQ29tcG9uZW50IChyb3cgZGV0YWlsIGNvbXBvbmVudCkuXG4gICAqIG5vdGU6OiBJZiBhbnlvbmUgZmluZHMgYSBiZXR0ZXIgd2F5IG9mIHBhc3NpbmcgdGhlIHBhcmVudCB0byB0aGUgcm93IGRldGFpbCBleHRlbnNpb24sIHBsZWFzZSByZWFjaCBvdXQgYW5kL29yIGNyZWF0ZSBhIFBSXG4gICAqL1xuICBwYXJlbnQ/OiBhbnk7XG5cbiAgLyoqIFZpZXcgQ29tcG9uZW50IG9mIHRoZSBwcmVsb2FkIHRlbXBsYXRlICh0eXBpY2FsbHkgYSBzcGlubmVyKSB3aGljaCBzaG93cyBhZnRlciBvcGVuaW5nIG9uIHRoZSByb3cgZGV0YWlsIGJ1dCBiZWZvcmUgdGhlIHJvdyBkZXRhaWwgaXMgcmVhZHkgKi9cbiAgcHJlbG9hZENvbXBvbmVudD86IFR5cGU8b2JqZWN0PjtcblxuICAvKiogVmlldyBDb21wb25lbnQgdGhhdCB3aWxsIGJlIGxvYWRlZCBpbiB0aGUgcm93IGRldGFpbCBhZnRlciB0aGUgYXN5bmMgZnVuY3Rpb24gY29tcGxldGVkICovXG4gIHZpZXdDb21wb25lbnQ6IFR5cGU8b2JqZWN0PjtcblxuICAvLyAtLVxuICAvLyBDYWxsYmFjayBNZXRob2RzXG5cbiAgLyoqXG4gICAqIEhUTUwgUHJlbG9hZCBUZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCBiZWZvcmUgdGhlIGFzeW5jIHByb2Nlc3MgKHR5cGljYWxseSB1c2VkIHRvIHNob3cgYSBzcGlubmVyL2xvYWRpbmcpXG4gICAqIEl0J3MgcHJlZmVyYWJsZSB0byB1c2UgdGhlIFwicHJlbG9hZFZpZXdcIiBwcm9wZXJ0eSB0byB1c2UgYW4gQW5ndWxhciBWaWV3IGluc3RlYWQgb2YgcGxhaW4gSFRNTC5cbiAgICogSWYgeW91IHN0aWxsIHdpc2ggdG8gdXNlIHRoZXNlIG1ldGhvZHMsIHdlIHN0cm9uZ2x5IHN1Z2dlc3QgeW91IHRvIHNhbml0aXplIHlvdXIgSFRNTCwgZS5nLiBcIkRPTVB1cmlmeS5zYW5pdGl6ZSgpXCJcbiAgICovXG4gIHByZVRlbXBsYXRlPzogKCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIVE1MIFBvc3QgVGVtcGxhdGUgKHdoZW4gUm93IERldGFpbCBkYXRhIGlzIGF2YWlsYWJsZSkgdGhhdCB3aWxsIGJlIGxvYWRlZCBvbmNlIHRoZSBhc3luYyBmdW5jdGlvbiBmaW5pc2hlc1xuICAgKiBJdCdzIHByZWZlcmFibGUgdG8gdXNlIHRoZSBcInByZWxvYWRWaWV3XCIgcHJvcGVydHkgdG8gdXNlIGFuIEFuZ3VsYXIgVmlldyBpbnN0ZWFkIG9mIHBsYWluIEhUTUxcbiAgICogSWYgeW91IHN0aWxsIHdpc2ggdG8gdXNlIHRoZXNlIG1ldGhvZHMsIHdlIHN0cm9uZ2x5IHN1Z2dlc3QgeW91IHRvIHNhbml0aXplIHlvdXIgSFRNTCwgZS5nLiBcIkRPTVB1cmlmeS5zYW5pdGl6ZSgpXCJcbiAgICovXG4gIHBvc3RUZW1wbGF0ZT86IChpdGVtOiBhbnkpID0+IHN0cmluZztcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2tHcmlkLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9tb2RlbHMvc2xpY2tHcmlkLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2xpY2tHcmlkIGFzIFVuaXZlcnNhbFNsaWNrR3JpZCB9IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XG5pbXBvcnQgeyBHcmlkT3B0aW9uIH0gZnJvbSAnLi9ncmlkT3B0aW9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xpY2tHcmlkIGV4dGVuZHMgVW5pdmVyc2FsU2xpY2tHcmlkIHtcbiAgLyoqIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBHcmlkIG9wdGlvbnMgc2V0IG9uIHRoZSBncmlkLiBTZWUgYSBsaXN0IG9mIEdyaWQgT3B0aW9ucyBoZXJlLiAgKi9cbiAgZ2V0T3B0aW9ucygpOiBHcmlkT3B0aW9uO1xufVxuIl19
@@ -1,46 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { TranslateModule } from '@ngx-translate/core';
4
- import { AngularSlickgridComponent } from './../components/angular-slickgrid.component';
5
- import { AngularUtilService } from '../services/angularUtil.service';
6
- import { BsDropDownService } from '../services/bsDropdown.service';
7
- import { ContainerService } from '../services/container.service';
8
- import * as i0 from "@angular/core";
9
- export class AngularSlickgridModule {
10
- static forRoot(config = {}) {
11
- return {
12
- ngModule: AngularSlickgridModule,
13
- providers: [
14
- { provide: 'config', useValue: config },
15
- { provide: 'externalService', useValue: null },
16
- AngularUtilService,
17
- BsDropDownService,
18
- ContainerService,
19
- ]
20
- };
21
- }
22
- }
23
- AngularSlickgridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- AngularSlickgridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule,
25
- TranslateModule], exports: [AngularSlickgridComponent] });
26
- AngularSlickgridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AngularSlickgridModule, imports: [[
27
- CommonModule,
28
- TranslateModule
29
- ]] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AngularSlickgridModule, decorators: [{
31
- type: NgModule,
32
- args: [{
33
- imports: [
34
- CommonModule,
35
- TranslateModule
36
- ],
37
- declarations: [
38
- AngularSlickgridComponent,
39
- ],
40
- exports: [
41
- AngularSlickgridComponent,
42
- ],
43
- entryComponents: [AngularSlickgridComponent]
44
- }]
45
- }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1zbGlja2dyaWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBZWpFLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFxQixFQUFFO1FBQ3BDLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDdkMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDOUMsa0JBQWtCO2dCQUNsQixpQkFBaUI7Z0JBQ2pCLGdCQUFnQjthQUNqQjtTQUNGLENBQUM7SUFDSixDQUFDOztvSEFaVSxzQkFBc0I7cUhBQXRCLHNCQUFzQixpQkFQL0IseUJBQXlCLGFBSnpCLFlBQVk7UUFDWixlQUFlLGFBTWYseUJBQXlCO3FIQUloQixzQkFBc0IsWUFaeEI7WUFDUCxZQUFZO1lBQ1osZUFBZTtTQUNoQjs0RkFTVSxzQkFBc0I7a0JBYmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTtxQkFDaEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHlCQUF5QjtxQkFDMUI7b0JBQ0QsZUFBZSxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgQW5ndWxhclNsaWNrZ3JpZENvbXBvbmVudCB9IGZyb20gJy4vLi4vY29tcG9uZW50cy9hbmd1bGFyLXNsaWNrZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZE9wdGlvbiB9IGZyb20gJy4vLi4vbW9kZWxzL2dyaWRPcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEFuZ3VsYXJVdGlsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FuZ3VsYXJVdGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnNEcm9wRG93blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ic0Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGFpbmVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRhaW5lci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQW5ndWxhclNsaWNrZ3JpZENvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFuZ3VsYXJTbGlja2dyaWRDb21wb25lbnQsXG4gIF0sXG4gIGVudHJ5Q29tcG9uZW50czogW0FuZ3VsYXJTbGlja2dyaWRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJTbGlja2dyaWRNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IEdyaWRPcHRpb24gPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhclNsaWNrZ3JpZE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQW5ndWxhclNsaWNrZ3JpZE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6ICdjb25maWcnLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogJ2V4dGVybmFsU2VydmljZScsIHVzZVZhbHVlOiBudWxsIH0sXG4gICAgICAgIEFuZ3VsYXJVdGlsU2VydmljZSxcbiAgICAgICAgQnNEcm9wRG93blNlcnZpY2UsXG4gICAgICAgIENvbnRhaW5lclNlcnZpY2UsXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,26 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ContainerService {
4
- constructor() {
5
- this.dependencies = [];
6
- }
7
- get(key) {
8
- const dependency = this.dependencies.find(dep => dep.key === key);
9
- if (dependency?.instance) {
10
- return dependency.instance;
11
- }
12
- return null;
13
- }
14
- registerInstance(key, instance) {
15
- const dependency = this.dependencies.some(dep => dep.key === key);
16
- if (!dependency) {
17
- this.dependencies.push({ key, instance });
18
- }
19
- }
20
- }
21
- ContainerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- ContainerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ContainerService });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ContainerService, decorators: [{
24
- type: Injectable
25
- }], ctorParameters: function () { return []; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvc2VydmljZXMvY29udGFpbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUczQjtRQUZBLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztJQUV2QixDQUFDO0lBRWpCLEdBQUcsQ0FBVSxHQUFXO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRSxRQUFRLEVBQUU7WUFDeEIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLFFBQWE7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQzs7OEdBbEJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250YWluZXJJbnN0YW5jZSwgQ29udGFpbmVyU2VydmljZSBhcyBVbml2ZXJzYWxDb250YWluZXJTZXJ2aWNlIH0gZnJvbSAnQHNsaWNrZ3JpZC11bml2ZXJzYWwvY29tbW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRhaW5lclNlcnZpY2UgaW1wbGVtZW50cyBVbml2ZXJzYWxDb250YWluZXJTZXJ2aWNlIHtcbiAgZGVwZW5kZW5jaWVzOiBDb250YWluZXJJbnN0YW5jZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXQ8VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgY29uc3QgZGVwZW5kZW5jeSA9IHRoaXMuZGVwZW5kZW5jaWVzLmZpbmQoZGVwID0+IGRlcC5rZXkgPT09IGtleSk7XG4gICAgaWYgKGRlcGVuZGVuY3k/Lmluc3RhbmNlKSB7XG4gICAgICByZXR1cm4gZGVwZW5kZW5jeS5pbnN0YW5jZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZWdpc3Rlckluc3RhbmNlKGtleTogc3RyaW5nLCBpbnN0YW5jZTogYW55KSB7XG4gICAgY29uc3QgZGVwZW5kZW5jeSA9IHRoaXMuZGVwZW5kZW5jaWVzLnNvbWUoZGVwID0+IGRlcC5rZXkgPT09IGtleSk7XG4gICAgaWYgKCFkZXBlbmRlbmN5KSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHsga2V5LCBpbnN0YW5jZSB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==