@alauda-fe/common 1.0.0-next.0

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 (1188) hide show
  1. package/a-chart/a-chart.module.d.ts +16 -0
  2. package/a-chart/base-chart.d.ts +23 -0
  3. package/a-chart/chart-status.component.d.ts +15 -0
  4. package/a-chart/chart.component.d.ts +55 -0
  5. package/a-chart/components/base-component.d.ts +12 -0
  6. package/a-chart/components/index.d.ts +3 -0
  7. package/a-chart/components/legend/base-legend.component.d.ts +32 -0
  8. package/a-chart/components/legend/dropdown-legend.d.ts +17 -0
  9. package/a-chart/components/legend/index.d.ts +3 -0
  10. package/a-chart/components/legend/legend.component.d.ts +17 -0
  11. package/a-chart/components/title.component.d.ts +17 -0
  12. package/a-chart/constant.d.ts +3 -0
  13. package/a-chart/public-api.d.ts +12 -0
  14. package/a-chart/types.d.ts +28 -0
  15. package/a-chart/utils.d.ts +13 -0
  16. package/a-metric-chart/a-metric-chart.component.d.ts +108 -0
  17. package/a-metric-chart/a-metric-chart.module.d.ts +16 -0
  18. package/a-metric-chart/bar-gauge/bar-gauge.component.d.ts +25 -0
  19. package/a-metric-chart/base-chart.component.d.ts +14 -0
  20. package/a-metric-chart/metric-chart-refresh.service.d.ts +8 -0
  21. package/a-metric-chart/public-api.d.ts +13 -0
  22. package/a-metric-chart/stat-chart/stat-chart.component.d.ts +7 -0
  23. package/a-metric-chart/table-chart/table-chart.component.d.ts +29 -0
  24. package/a-metric-chart/types.d.ts +113 -0
  25. package/a-metric-chart/utils/index.d.ts +3 -0
  26. package/a-metric-chart/utils/range.d.ts +1 -0
  27. package/a-metric-chart/utils/unit.d.ts +48 -0
  28. package/a-metric-chart/utils/util.d.ts +38 -0
  29. package/abnormal-page/abnormal-page.component.d.ts +19 -0
  30. package/abnormal-page/abnormal-page.module.d.ts +11 -0
  31. package/abnormal-page/public-api.d.ts +2 -0
  32. package/api/api-gateway.interceptor.d.ts +14 -0
  33. package/api/api-gateway.service.d.ts +23 -0
  34. package/api/cluster-version.service.d.ts +22 -0
  35. package/api/crypto.interceptor.d.ts +18 -0
  36. package/api/helpers.d.ts +31 -0
  37. package/api/k8s-api-resource.service.d.ts +29 -0
  38. package/api/k8s-api.service.d.ts +112 -0
  39. package/api/monitor-api.service.d.ts +103 -0
  40. package/api/page-visibility.service.d.ts +7 -0
  41. package/api/platform-ui.service.d.ts +45 -0
  42. package/api/product.service.d.ts +13 -0
  43. package/api/project-api.service.d.ts +16 -0
  44. package/api/public-api.d.ts +20 -0
  45. package/api/resource-update.service.d.ts +31 -0
  46. package/api/types.d.ts +119 -0
  47. package/array-form-table/base-string-map-form.component.d.ts +22 -0
  48. package/array-form-table/form/component.d.ts +91 -0
  49. package/array-form-table/form/module.d.ts +7 -0
  50. package/array-form-table/key-value-form/component.d.ts +37 -0
  51. package/array-form-table/key-value-table/component.d.ts +9 -0
  52. package/array-form-table/public-api.d.ts +10 -0
  53. package/assets/header/cluster-blue.svg +1 -0
  54. package/assets/header/cluster-white.svg +1 -0
  55. package/assets/header/namespace-blue.svg +1 -0
  56. package/assets/header/namespace-white.svg +1 -0
  57. package/assets/header/portrait.svg +1 -0
  58. package/assets/header/project-blue.svg +1 -0
  59. package/assets/header/project-white.svg +1 -0
  60. package/assets/header/servicemesh-blue.svg +1 -0
  61. package/assets/header/servicemesh-white.svg +1 -0
  62. package/assets/icons/ClickHouse.svg +1 -0
  63. package/assets/icons/Containerd.svg +1 -0
  64. package/assets/icons/Docker.svg +1 -0
  65. package/assets/icons/ETCD.svg +1 -0
  66. package/assets/icons/ElasticSearch.svg +1 -0
  67. package/assets/icons/Grafana.svg +1 -0
  68. package/assets/icons/Istio.svg +1 -0
  69. package/assets/icons/Jaeger.svg +1 -0
  70. package/assets/icons/Kafka.svg +1 -0
  71. package/assets/icons/Kibana.svg +1 -0
  72. package/assets/icons/KubeVela.svg +1 -0
  73. package/assets/icons/Kubernetes.svg +1 -0
  74. package/assets/icons/Prometheus.svg +1 -0
  75. package/assets/icons/VictoriaMetrics.svg +1 -0
  76. package/assets/icons/Zookeeper.svg +1 -0
  77. package/assets/icons/bicolor-icons.js +1 -0
  78. package/assets/icons/icon-card-blue.svg +1 -0
  79. package/assets/icons/icon-card.svg +1 -0
  80. package/assets/icons/icon-cluster-small-white.svg +1 -0
  81. package/assets/icons/icon-cluster-small.svg +1 -0
  82. package/assets/icons/icon-list-blue.svg +1 -0
  83. package/assets/icons/icon-list.svg +1 -0
  84. package/assets/icons/icon-namespace-small-white.svg +1 -0
  85. package/assets/icons/icon-namespace-small.svg +1 -0
  86. package/assets/icons/icon-project-small-white.svg +1 -0
  87. package/assets/icons/icon-project-small.svg +1 -0
  88. package/assets/icons/icon-servicemesh-small-white.svg +1 -0
  89. package/assets/icons/icon-servicemesh-small.svg +1 -0
  90. package/assets/icons/navigation-icons.js +1 -0
  91. package/assets/icons/os/centos.svg +1 -0
  92. package/assets/icons/os/debian.svg +1 -0
  93. package/assets/icons/os/linux.svg +1 -0
  94. package/assets/icons/os/other.svg +1 -0
  95. package/assets/icons/os/red-hat.svg +1 -0
  96. package/assets/icons/os/t-linux.svg +1 -0
  97. package/assets/icons/os/ubuntu.svg +1 -0
  98. package/assets/icons/os/windows.svg +1 -0
  99. package/assets/icons/prod-icons.js +1 -0
  100. package/assets/icons/time.svg +1 -0
  101. package/assets/images/abnormal.svg +1 -0
  102. package/assets/images/alarm_critical.png +0 -0
  103. package/assets/images/avatar.svg +1 -0
  104. package/assets/images/dark/disconnected.svg +1 -0
  105. package/assets/images/dark/feature-reach-bg.svg +1 -0
  106. package/assets/images/dark/license-abnormal.svg +1 -0
  107. package/assets/images/dark/network-abnormal.svg +1 -0
  108. package/assets/images/dark/no-data.svg +1 -0
  109. package/assets/images/dark/no-message.svg +1 -0
  110. package/assets/images/dark/no-permission.svg +1 -0
  111. package/assets/images/dark/no_realtime_alarm.svg +1 -0
  112. package/assets/images/dark/not-deployed.svg +1 -0
  113. package/assets/images/dark/not-found.svg +1 -0
  114. package/assets/images/dark/not-supported.svg +1 -0
  115. package/assets/images/dark/system-abnormal.svg +1 -0
  116. package/assets/images/light/disconnected.svg +1 -0
  117. package/assets/images/light/feature-reach-bg.svg +1 -0
  118. package/assets/images/light/license-abnormal.svg +1 -0
  119. package/assets/images/light/network-abnormal.svg +1 -0
  120. package/assets/images/light/no-data.svg +1 -0
  121. package/assets/images/light/no-message.svg +1 -0
  122. package/assets/images/light/no-permission.svg +1 -0
  123. package/assets/images/light/no_realtime_alarm.svg +1 -0
  124. package/assets/images/light/not-deployed.svg +1 -0
  125. package/assets/images/light/not-found.svg +1 -0
  126. package/assets/images/light/not-supported.svg +1 -0
  127. package/assets/images/light/system-abnormal.svg +1 -0
  128. package/assets/images/no-data.png +0 -0
  129. package/assets/images/overview-banner.svg +1 -0
  130. package/assets/images/platform_version_bg.svg +1 -0
  131. package/assets/images/product-default-logo.png +0 -0
  132. package/assets/logos/favicon.ico +0 -0
  133. package/assets/logos/logo.svg +1 -0
  134. package/assets/logos/tke_logo_white.svg +1 -0
  135. package/assets/themes/override-theme.js +11 -0
  136. package/assets/themes/refresh-favicon.js +6 -0
  137. package/async-data/async-data-loader.d.ts +31 -0
  138. package/async-data/async-data.module.d.ts +8 -0
  139. package/async-data/error-page/component.d.ts +30 -0
  140. package/async-data/page-state/component.d.ts +21 -0
  141. package/async-data/public-api.d.ts +11 -0
  142. package/async-data/types.d.ts +29 -0
  143. package/authorization/app-init-url.d.ts +6 -0
  144. package/authorization/guard.service.d.ts +22 -0
  145. package/authorization/interceptor.service.d.ts +34 -0
  146. package/authorization/public-api.d.ts +11 -0
  147. package/authorization/session-manage.service.d.ts +18 -0
  148. package/authorization/state.service.d.ts +52 -0
  149. package/business/module-info/api.service.d.ts +24 -0
  150. package/business/module-info/public-api.d.ts +1 -0
  151. package/business/public-api.d.ts +7 -0
  152. package/business/resource-select/base-list.d.ts +32 -0
  153. package/business/resource-select/context.service.d.ts +47 -0
  154. package/business/resource-select/exports/cluster-selector/component.d.ts +23 -0
  155. package/business/resource-select/exports/mesh-group-selector/component.d.ts +23 -0
  156. package/business/resource-select/exports/namespace-page/component.d.ts +25 -0
  157. package/business/resource-select/exports/namespace-selector/component.d.ts +33 -0
  158. package/business/resource-select/exports/project-page/component.d.ts +18 -0
  159. package/business/resource-select/exports/project-selector/component.d.ts +27 -0
  160. package/business/resource-select/helpers.directive.d.ts +5 -0
  161. package/business/resource-select/internals/cluster-list/component.d.ts +26 -0
  162. package/business/resource-select/internals/data-grid/component.d.ts +42 -0
  163. package/business/resource-select/internals/icon/component.d.ts +12 -0
  164. package/business/resource-select/internals/meshgroup-list/component.d.ts +22 -0
  165. package/business/resource-select/internals/namespace-list/component.d.ts +65 -0
  166. package/business/resource-select/internals/no-data/component.d.ts +11 -0
  167. package/business/resource-select/internals/project-list/component.d.ts +22 -0
  168. package/business/resource-select/internals/resource-dashboard/component.d.ts +14 -0
  169. package/business/resource-select/internals/selector-popup/component.d.ts +14 -0
  170. package/business/resource-select/internals/selector-popup/ref.d.ts +10 -0
  171. package/business/resource-select/internals/selector-popup/service.d.ts +21 -0
  172. package/business/resource-select/module.d.ts +31 -0
  173. package/business/resource-select/project.service.d.ts +16 -0
  174. package/business/resource-select/public-api.d.ts +16 -0
  175. package/business/resource-select/types.d.ts +77 -0
  176. package/business/resource-select/utils.d.ts +5 -0
  177. package/chart/chart.module.d.ts +29 -0
  178. package/chart/chart.service.d.ts +72 -0
  179. package/chart/common/axis/axis-label.component.d.ts +23 -0
  180. package/chart/common/axis/x-axis-ticks.component.d.ts +24 -0
  181. package/chart/common/axis/x-axis.component.d.ts +26 -0
  182. package/chart/common/axis/x-plot-lines.component.d.ts +23 -0
  183. package/chart/common/axis/y-axis-ticks.component.d.ts +33 -0
  184. package/chart/common/axis/y-axis.component.d.ts +28 -0
  185. package/chart/common/axis/y-plot-lines.component.d.ts +31 -0
  186. package/chart/common/chart/chart.component.d.ts +63 -0
  187. package/chart/common/index.d.ts +17 -0
  188. package/chart/common/legend/legend.component.d.ts +41 -0
  189. package/chart/common/range-area/range-area.component.d.ts +48 -0
  190. package/chart/common/reference-area/reference-area.component.d.ts +12 -0
  191. package/chart/common/series/area-series.component.d.ts +21 -0
  192. package/chart/common/series/bar-path.component.d.ts +47 -0
  193. package/chart/common/series/bar-series.component.d.ts +29 -0
  194. package/chart/common/series/line-series.component.d.ts +8 -0
  195. package/chart/common/series/series.component.d.ts +39 -0
  196. package/chart/common/tooltip/tooltip.component.d.ts +119 -0
  197. package/chart/constants.d.ts +10 -0
  198. package/chart/custom-template/dropdown-legend.d.ts +11 -0
  199. package/chart/public-api.d.ts +9 -0
  200. package/chart/types.d.ts +47 -0
  201. package/chart/utils.d.ts +36 -0
  202. package/code/code-display-dialog/component.d.ts +17 -0
  203. package/code/code-editor-configs.d.ts +18 -0
  204. package/code/code.module.d.ts +14 -0
  205. package/code/k8s-yaml-display-dialog/component.d.ts +16 -0
  206. package/code/public-api.d.ts +11 -0
  207. package/code/resource-yaml-display/component.d.ts +22 -0
  208. package/core/abstract/base-form-container.d.ts +41 -0
  209. package/core/abstract/base-nested-form-control.d.ts +58 -0
  210. package/core/abstract/index.d.ts +2 -0
  211. package/core/components/index.d.ts +1 -0
  212. package/core/components/tree/index.d.ts +1 -0
  213. package/core/components/tree/module.d.ts +12 -0
  214. package/core/components/tree/node/component.d.ts +12 -0
  215. package/core/components/tree/outlet.d.ts +10 -0
  216. package/core/components/tree/padding.d.ts +12 -0
  217. package/core/components/tree/public-api.d.ts +6 -0
  218. package/core/components/tree/toggle.d.ts +12 -0
  219. package/core/components/tree/tree/component.d.ts +8 -0
  220. package/core/constants/constants.d.ts +61 -0
  221. package/core/constants/index.d.ts +5 -0
  222. package/core/constants/patterns.d.ts +25 -0
  223. package/core/constants/status-icons.d.ts +28 -0
  224. package/core/constants/timezones.d.ts +6 -0
  225. package/core/constants/tokens.d.ts +44 -0
  226. package/core/directives/click-outside.directive.d.ts +12 -0
  227. package/core/directives/disabled.directive.d.ts +28 -0
  228. package/core/directives/feature-gate.directive.d.ts +30 -0
  229. package/core/directives/index.d.ts +10 -0
  230. package/core/directives/intercept-deactivate.directive.d.ts +18 -0
  231. package/core/directives/last-form-item.directive.d.ts +8 -0
  232. package/core/directives/page-header-content.directive.d.ts +25 -0
  233. package/core/directives/readonly-field.directive.d.ts +39 -0
  234. package/core/directives/resize.directive.d.ts +17 -0
  235. package/core/directives/scroll-border-observer.directive.d.ts +23 -0
  236. package/core/directives/scroll-to-first-invalid.directive.d.ts +24 -0
  237. package/core/guards/feature.guard.d.ts +28 -0
  238. package/core/guards/index.d.ts +4 -0
  239. package/core/guards/intercept-deactivate.guard.d.ts +13 -0
  240. package/core/guards/leave-edit-page.guard.d.ts +13 -0
  241. package/core/guards/project-namespace.guard.d.ts +23 -0
  242. package/core/index.d.ts +1 -0
  243. package/core/module.d.ts +33 -0
  244. package/core/pipes/cron-human-readable.pipe.d.ts +14 -0
  245. package/core/pipes/crontab-next.pipe.d.ts +18 -0
  246. package/core/pipes/field-not-available.pipe.d.ts +13 -0
  247. package/core/pipes/img-header.pipe.d.ts +7 -0
  248. package/core/pipes/img-theme.pipe.d.ts +13 -0
  249. package/core/pipes/index.d.ts +17 -0
  250. package/core/pipes/k8s-util.pipe.d.ts +98 -0
  251. package/core/pipes/k8s-util.pipe.module.d.ts +7 -0
  252. package/core/pipes/keyvalue.pipe.d.ts +9 -0
  253. package/core/pipes/marked.pipe.d.ts +8 -0
  254. package/core/pipes/minimum-format.pipe.d.ts +10 -0
  255. package/core/pipes/page-env.pipe.d.ts +34 -0
  256. package/core/pipes/parse-json-translate.pipe.d.ts +9 -0
  257. package/core/pipes/parse-json.pipe.d.ts +7 -0
  258. package/core/pipes/safe.pipe.d.ts +10 -0
  259. package/core/pipes/time.pipe.d.ts +41 -0
  260. package/core/pipes/timezone-display.pipe.d.ts +10 -0
  261. package/core/pipes/trust-url.pipe.d.ts +19 -0
  262. package/core/public-api.d.ts +16 -0
  263. package/core/services/aui-paginator-intl.service.d.ts +13 -0
  264. package/core/services/aui-tooltip-copy-intl.service.d.ts +11 -0
  265. package/core/services/context.service.d.ts +33 -0
  266. package/core/services/custom-code-editor-intl.service.d.ts +33 -0
  267. package/core/services/feature-gate.service.d.ts +35 -0
  268. package/core/services/form-row-duplicate/form-row-duplicate.service.d.ts +45 -0
  269. package/core/services/index.d.ts +14 -0
  270. package/core/services/intercept-deactivate.service.d.ts +28 -0
  271. package/core/services/k8s-util.service.d.ts +78 -0
  272. package/core/services/on-resize.service.d.ts +20 -0
  273. package/core/services/silently-navigate.service.d.ts +11 -0
  274. package/core/services/time.service.d.ts +17 -0
  275. package/core/services/ui-state.service.d.ts +41 -0
  276. package/core/services/workspace-helper.service.d.ts +12 -0
  277. package/core/services/yaml-util.service.d.ts +20 -0
  278. package/core/types/commons.d.ts +40 -0
  279. package/core/types/helpers.d.ts +35 -0
  280. package/core/types/index.d.ts +10 -0
  281. package/core/types/k8s/core.d.ts +91 -0
  282. package/core/types/k8s/crd.d.ts +444 -0
  283. package/core/types/k8s/index.d.ts +3 -0
  284. package/core/types/k8s/raw.d.ts +978 -0
  285. package/core/types/resource-definitions.d.ts +734 -0
  286. package/core/types/schema.d.ts +14 -0
  287. package/core/utils/browser.d.ts +3 -0
  288. package/core/utils/cache-store.d.ts +33 -0
  289. package/core/utils/color-helpers.d.ts +4 -0
  290. package/core/utils/common.d.ts +54 -0
  291. package/core/utils/create-recursive-filter.d.ts +41 -0
  292. package/core/utils/cron-util.d.ts +8 -0
  293. package/core/utils/decorators.d.ts +12 -0
  294. package/core/utils/format-number.d.ts +11 -0
  295. package/core/utils/index.d.ts +22 -0
  296. package/core/utils/k8s-pattern.d.ts +12 -0
  297. package/core/utils/k8s-util.d.ts +28 -0
  298. package/core/utils/local-storage-constants.d.ts +1 -0
  299. package/core/utils/node.d.ts +8 -0
  300. package/core/utils/observable.d.ts +4 -0
  301. package/core/utils/operators.d.ts +19 -0
  302. package/core/utils/request-pool.d.ts +12 -0
  303. package/core/utils/resources.d.ts +19 -0
  304. package/core/utils/tree.d.ts +16 -0
  305. package/core/utils/unit.d.ts +23 -0
  306. package/core/utils/version.d.ts +39 -0
  307. package/core/utils/with-load-state.d.ts +11 -0
  308. package/core/utils/workspace.d.ts +28 -0
  309. package/core/utils/yaml.d.ts +10 -0
  310. package/custom-columns-setting/component.d.ts +16 -0
  311. package/custom-columns-setting/public-api.d.ts +1 -0
  312. package/disabled-container/disabled-container.component.d.ts +21 -0
  313. package/disabled-container/disabled-container.module.d.ts +10 -0
  314. package/disabled-container/public-api.d.ts +8 -0
  315. package/editable-text/component.d.ts +24 -0
  316. package/editable-text/index.d.ts +2 -0
  317. package/editable-text/module.d.ts +11 -0
  318. package/effect-directive/coerce-number.directive.d.ts +8 -0
  319. package/effect-directive/e2e-attribute-binding.directive.d.ts +10 -0
  320. package/effect-directive/event.directive.d.ts +11 -0
  321. package/effect-directive/min-max.directive.d.ts +30 -0
  322. package/effect-directive/module.d.ts +20 -0
  323. package/effect-directive/public-api.d.ts +7 -0
  324. package/effect-directive/trim.directive.d.ts +7 -0
  325. package/effect-directive/validators.directive.d.ts +12 -0
  326. package/errors-mapper/base-errors-mapper.d.ts +13 -0
  327. package/errors-mapper/default-errors-mapper.service.d.ts +10 -0
  328. package/errors-mapper/errors-mapper-component/component.d.ts +19 -0
  329. package/errors-mapper/errors-mapper.directive.d.ts +39 -0
  330. package/errors-mapper/errors-mapper.module.d.ts +8 -0
  331. package/errors-mapper/public-api.d.ts +4 -0
  332. package/errors-mapper/types.d.ts +16 -0
  333. package/esm2022/a-chart/a-chart.module.mjs +76 -0
  334. package/esm2022/a-chart/base-chart.mjs +84 -0
  335. package/esm2022/a-chart/chart-status.component.mjs +195 -0
  336. package/esm2022/a-chart/chart.component.mjs +283 -0
  337. package/esm2022/a-chart/components/base-component.mjs +23 -0
  338. package/esm2022/a-chart/components/index.mjs +4 -0
  339. package/esm2022/a-chart/components/legend/base-legend.component.mjs +110 -0
  340. package/esm2022/a-chart/components/legend/dropdown-legend.mjs +199 -0
  341. package/esm2022/a-chart/components/legend/index.mjs +4 -0
  342. package/esm2022/a-chart/components/legend/legend.component.mjs +102 -0
  343. package/esm2022/a-chart/components/title.component.mjs +99 -0
  344. package/esm2022/a-chart/constant.mjs +22 -0
  345. package/esm2022/a-chart/public-api.mjs +13 -0
  346. package/esm2022/a-chart/types.mjs +2 -0
  347. package/esm2022/a-chart/utils.mjs +37 -0
  348. package/esm2022/a-metric-chart/a-metric-chart.component.mjs +853 -0
  349. package/esm2022/a-metric-chart/a-metric-chart.module.mjs +76 -0
  350. package/esm2022/a-metric-chart/bar-gauge/bar-gauge.component.mjs +165 -0
  351. package/esm2022/a-metric-chart/base-chart.component.mjs +30 -0
  352. package/esm2022/a-metric-chart/metric-chart-refresh.service.mjs +18 -0
  353. package/esm2022/a-metric-chart/public-api.mjs +14 -0
  354. package/esm2022/a-metric-chart/stat-chart/stat-chart.component.mjs +70 -0
  355. package/esm2022/a-metric-chart/table-chart/table-chart.component.mjs +201 -0
  356. package/esm2022/a-metric-chart/types.mjs +17 -0
  357. package/esm2022/a-metric-chart/utils/index.mjs +4 -0
  358. package/esm2022/a-metric-chart/utils/range.mjs +35 -0
  359. package/esm2022/a-metric-chart/utils/unit.mjs +83 -0
  360. package/esm2022/a-metric-chart/utils/util.mjs +219 -0
  361. package/esm2022/abnormal-page/abnormal-page.component.mjs +66 -0
  362. package/esm2022/abnormal-page/abnormal-page.module.mjs +27 -0
  363. package/esm2022/abnormal-page/public-api.mjs +3 -0
  364. package/esm2022/alauda-fe-common.mjs +5 -0
  365. package/esm2022/api/api-gateway.interceptor.mjs +28 -0
  366. package/esm2022/api/api-gateway.service.mjs +38 -0
  367. package/esm2022/api/cluster-version.service.mjs +67 -0
  368. package/esm2022/api/crypto.interceptor.mjs +186 -0
  369. package/esm2022/api/helpers.mjs +101 -0
  370. package/esm2022/api/k8s-api-resource.service.mjs +73 -0
  371. package/esm2022/api/k8s-api.service.mjs +394 -0
  372. package/esm2022/api/monitor-api.service.mjs +158 -0
  373. package/esm2022/api/page-visibility.service.mjs +18 -0
  374. package/esm2022/api/platform-ui.service.mjs +95 -0
  375. package/esm2022/api/product.service.mjs +36 -0
  376. package/esm2022/api/project-api.service.mjs +32 -0
  377. package/esm2022/api/public-api.mjs +21 -0
  378. package/esm2022/api/resource-update.service.mjs +62 -0
  379. package/esm2022/api/types.mjs +30 -0
  380. package/esm2022/array-form-table/base-string-map-form.component.mjs +92 -0
  381. package/esm2022/array-form-table/form/component.mjs +466 -0
  382. package/esm2022/array-form-table/form/module.mjs +38 -0
  383. package/esm2022/array-form-table/key-value-form/component.mjs +280 -0
  384. package/esm2022/array-form-table/key-value-table/component.mjs +74 -0
  385. package/esm2022/array-form-table/public-api.mjs +11 -0
  386. package/esm2022/async-data/async-data-loader.mjs +63 -0
  387. package/esm2022/async-data/async-data.module.mjs +22 -0
  388. package/esm2022/async-data/error-page/component.mjs +152 -0
  389. package/esm2022/async-data/page-state/component.mjs +129 -0
  390. package/esm2022/async-data/public-api.mjs +12 -0
  391. package/esm2022/async-data/types.mjs +6 -0
  392. package/esm2022/authorization/app-init-url.mjs +33 -0
  393. package/esm2022/authorization/guard.service.mjs +42 -0
  394. package/esm2022/authorization/interceptor.service.mjs +149 -0
  395. package/esm2022/authorization/public-api.mjs +12 -0
  396. package/esm2022/authorization/session-manage.service.mjs +60 -0
  397. package/esm2022/authorization/state.service.mjs +254 -0
  398. package/esm2022/business/module-info/api.service.mjs +39 -0
  399. package/esm2022/business/module-info/public-api.mjs +2 -0
  400. package/esm2022/business/public-api.mjs +8 -0
  401. package/esm2022/business/resource-select/base-list.mjs +84 -0
  402. package/esm2022/business/resource-select/context.service.mjs +69 -0
  403. package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +98 -0
  404. package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +96 -0
  405. package/esm2022/business/resource-select/exports/namespace-page/component.mjs +78 -0
  406. package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +186 -0
  407. package/esm2022/business/resource-select/exports/project-page/component.mjs +53 -0
  408. package/esm2022/business/resource-select/exports/project-selector/component.mjs +124 -0
  409. package/esm2022/business/resource-select/helpers.directive.mjs +13 -0
  410. package/esm2022/business/resource-select/internals/cluster-list/component.mjs +74 -0
  411. package/esm2022/business/resource-select/internals/data-grid/component.mjs +584 -0
  412. package/esm2022/business/resource-select/internals/icon/component.mjs +56 -0
  413. package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +65 -0
  414. package/esm2022/business/resource-select/internals/namespace-list/component.mjs +432 -0
  415. package/esm2022/business/resource-select/internals/no-data/component.mjs +142 -0
  416. package/esm2022/business/resource-select/internals/project-list/component.mjs +75 -0
  417. package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +79 -0
  418. package/esm2022/business/resource-select/internals/selector-popup/component.mjs +45 -0
  419. package/esm2022/business/resource-select/internals/selector-popup/ref.mjs +20 -0
  420. package/esm2022/business/resource-select/internals/selector-popup/service.mjs +60 -0
  421. package/esm2022/business/resource-select/module.mjs +166 -0
  422. package/esm2022/business/resource-select/project.service.mjs +47 -0
  423. package/esm2022/business/resource-select/public-api.mjs +17 -0
  424. package/esm2022/business/resource-select/types.mjs +17 -0
  425. package/esm2022/business/resource-select/utils.mjs +25 -0
  426. package/esm2022/chart/chart.module.mjs +120 -0
  427. package/esm2022/chart/chart.service.mjs +237 -0
  428. package/esm2022/chart/common/axis/axis-label.component.mjs +106 -0
  429. package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +217 -0
  430. package/esm2022/chart/common/axis/x-axis.component.mjs +109 -0
  431. package/esm2022/chart/common/axis/x-plot-lines.component.mjs +101 -0
  432. package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +233 -0
  433. package/esm2022/chart/common/axis/y-axis.component.mjs +122 -0
  434. package/esm2022/chart/common/axis/y-plot-lines.component.mjs +126 -0
  435. package/esm2022/chart/common/chart/chart.component.mjs +269 -0
  436. package/esm2022/chart/common/index.mjs +18 -0
  437. package/esm2022/chart/common/legend/legend.component.mjs +269 -0
  438. package/esm2022/chart/common/range-area/range-area.component.mjs +144 -0
  439. package/esm2022/chart/common/reference-area/reference-area.component.mjs +46 -0
  440. package/esm2022/chart/common/series/area-series.component.mjs +89 -0
  441. package/esm2022/chart/common/series/bar-path.component.mjs +156 -0
  442. package/esm2022/chart/common/series/bar-series.component.mjs +88 -0
  443. package/esm2022/chart/common/series/line-series.component.mjs +59 -0
  444. package/esm2022/chart/common/series/series.component.mjs +166 -0
  445. package/esm2022/chart/common/tooltip/tooltip.component.mjs +520 -0
  446. package/esm2022/chart/constants.mjs +22 -0
  447. package/esm2022/chart/custom-template/dropdown-legend.mjs +112 -0
  448. package/esm2022/chart/public-api.mjs +10 -0
  449. package/esm2022/chart/types.mjs +6 -0
  450. package/esm2022/chart/utils.mjs +117 -0
  451. package/esm2022/code/code-display-dialog/component.mjs +59 -0
  452. package/esm2022/code/code-editor-configs.mjs +62 -0
  453. package/esm2022/code/code.module.mjs +73 -0
  454. package/esm2022/code/k8s-yaml-display-dialog/component.mjs +53 -0
  455. package/esm2022/code/public-api.mjs +12 -0
  456. package/esm2022/code/resource-yaml-display/component.mjs +114 -0
  457. package/esm2022/core/abstract/base-form-container.mjs +131 -0
  458. package/esm2022/core/abstract/base-nested-form-control.mjs +195 -0
  459. package/esm2022/core/abstract/index.mjs +3 -0
  460. package/esm2022/core/components/index.mjs +2 -0
  461. package/esm2022/core/components/tree/index.mjs +2 -0
  462. package/esm2022/core/components/tree/module.mjs +41 -0
  463. package/esm2022/core/components/tree/node/component.mjs +47 -0
  464. package/esm2022/core/components/tree/outlet.mjs +34 -0
  465. package/esm2022/core/components/tree/padding.mjs +41 -0
  466. package/esm2022/core/components/tree/public-api.mjs +7 -0
  467. package/esm2022/core/components/tree/toggle.mjs +44 -0
  468. package/esm2022/core/components/tree/tree/component.mjs +27 -0
  469. package/esm2022/core/constants/constants.mjs +84 -0
  470. package/esm2022/core/constants/index.mjs +6 -0
  471. package/esm2022/core/constants/patterns.mjs +28 -0
  472. package/esm2022/core/constants/status-icons.mjs +31 -0
  473. package/esm2022/core/constants/timezones.mjs +234 -0
  474. package/esm2022/core/constants/tokens.mjs +129 -0
  475. package/esm2022/core/directives/click-outside.directive.mjs +51 -0
  476. package/esm2022/core/directives/disabled.directive.mjs +76 -0
  477. package/esm2022/core/directives/feature-gate.directive.mjs +87 -0
  478. package/esm2022/core/directives/index.mjs +11 -0
  479. package/esm2022/core/directives/intercept-deactivate.directive.mjs +52 -0
  480. package/esm2022/core/directives/last-form-item.directive.mjs +18 -0
  481. package/esm2022/core/directives/page-header-content.directive.mjs +41 -0
  482. package/esm2022/core/directives/readonly-field.directive.mjs +157 -0
  483. package/esm2022/core/directives/resize.directive.mjs +39 -0
  484. package/esm2022/core/directives/scroll-border-observer.directive.mjs +77 -0
  485. package/esm2022/core/directives/scroll-to-first-invalid.directive.mjs +130 -0
  486. package/esm2022/core/guards/feature.guard.mjs +60 -0
  487. package/esm2022/core/guards/index.mjs +5 -0
  488. package/esm2022/core/guards/intercept-deactivate.guard.mjs +40 -0
  489. package/esm2022/core/guards/leave-edit-page.guard.mjs +32 -0
  490. package/esm2022/core/guards/project-namespace.guard.mjs +70 -0
  491. package/esm2022/core/index.mjs +2 -0
  492. package/esm2022/core/module.mjs +145 -0
  493. package/esm2022/core/pipes/cron-human-readable.pipe.mjs +33 -0
  494. package/esm2022/core/pipes/crontab-next.pipe.mjs +62 -0
  495. package/esm2022/core/pipes/field-not-available.pipe.mjs +25 -0
  496. package/esm2022/core/pipes/img-header.pipe.mjs +18 -0
  497. package/esm2022/core/pipes/img-theme.pipe.mjs +37 -0
  498. package/esm2022/core/pipes/index.mjs +18 -0
  499. package/esm2022/core/pipes/k8s-util.pipe.mjs +196 -0
  500. package/esm2022/core/pipes/k8s-util.pipe.module.mjs +56 -0
  501. package/esm2022/core/pipes/keyvalue.pipe.mjs +20 -0
  502. package/esm2022/core/pipes/marked.pipe.mjs +17 -0
  503. package/esm2022/core/pipes/minimum-format.pipe.mjs +24 -0
  504. package/esm2022/core/pipes/page-env.pipe.mjs +66 -0
  505. package/esm2022/core/pipes/parse-json-translate.pipe.mjs +29 -0
  506. package/esm2022/core/pipes/parse-json.pipe.mjs +22 -0
  507. package/esm2022/core/pipes/safe.pipe.mjs +44 -0
  508. package/esm2022/core/pipes/time.pipe.mjs +115 -0
  509. package/esm2022/core/pipes/timezone-display.pipe.mjs +21 -0
  510. package/esm2022/core/pipes/trust-url.pipe.mjs +28 -0
  511. package/esm2022/core/public-api.mjs +17 -0
  512. package/esm2022/core/services/aui-paginator-intl.service.mjs +26 -0
  513. package/esm2022/core/services/aui-tooltip-copy-intl.service.mjs +24 -0
  514. package/esm2022/core/services/context.service.mjs +48 -0
  515. package/esm2022/core/services/custom-code-editor-intl.service.mjs +54 -0
  516. package/esm2022/core/services/feature-gate.service.mjs +73 -0
  517. package/esm2022/core/services/form-row-duplicate/form-row-duplicate.service.mjs +280 -0
  518. package/esm2022/core/services/index.mjs +15 -0
  519. package/esm2022/core/services/intercept-deactivate.service.mjs +78 -0
  520. package/esm2022/core/services/k8s-util.service.mjs +181 -0
  521. package/esm2022/core/services/on-resize.service.mjs +52 -0
  522. package/esm2022/core/services/silently-navigate.service.mjs +28 -0
  523. package/esm2022/core/services/time.service.mjs +46 -0
  524. package/esm2022/core/services/ui-state.service.mjs +68 -0
  525. package/esm2022/core/services/workspace-helper.service.mjs +21 -0
  526. package/esm2022/core/services/yaml-util.service.mjs +97 -0
  527. package/esm2022/core/types/commons.mjs +6 -0
  528. package/esm2022/core/types/helpers.mjs +12 -0
  529. package/esm2022/core/types/index.mjs +11 -0
  530. package/esm2022/core/types/k8s/core.mjs +2 -0
  531. package/esm2022/core/types/k8s/crd.mjs +26 -0
  532. package/esm2022/core/types/k8s/index.mjs +4 -0
  533. package/esm2022/core/types/k8s/raw.mjs +123 -0
  534. package/esm2022/core/types/resource-definitions.mjs +408 -0
  535. package/esm2022/core/types/schema.mjs +2 -0
  536. package/esm2022/core/utils/browser.mjs +15 -0
  537. package/esm2022/core/utils/cache-store.mjs +55 -0
  538. package/esm2022/core/utils/color-helpers.mjs +6 -0
  539. package/esm2022/core/utils/common.mjs +261 -0
  540. package/esm2022/core/utils/create-recursive-filter.mjs +57 -0
  541. package/esm2022/core/utils/cron-util.mjs +44 -0
  542. package/esm2022/core/utils/decorators.mjs +116 -0
  543. package/esm2022/core/utils/format-number.mjs +229 -0
  544. package/esm2022/core/utils/index.mjs +23 -0
  545. package/esm2022/core/utils/k8s-pattern.mjs +13 -0
  546. package/esm2022/core/utils/k8s-util.mjs +97 -0
  547. package/esm2022/core/utils/local-storage-constants.mjs +2 -0
  548. package/esm2022/core/utils/node.mjs +18 -0
  549. package/esm2022/core/utils/observable.mjs +23 -0
  550. package/esm2022/core/utils/operators.mjs +32 -0
  551. package/esm2022/core/utils/request-pool.mjs +37 -0
  552. package/esm2022/core/utils/resources.mjs +66 -0
  553. package/esm2022/core/utils/tree.mjs +79 -0
  554. package/esm2022/core/utils/unit.mjs +199 -0
  555. package/esm2022/core/utils/version.mjs +76 -0
  556. package/esm2022/core/utils/with-load-state.mjs +21 -0
  557. package/esm2022/core/utils/workspace.mjs +59 -0
  558. package/esm2022/core/utils/yaml.mjs +46 -0
  559. package/esm2022/custom-columns-setting/component.mjs +107 -0
  560. package/esm2022/custom-columns-setting/public-api.mjs +2 -0
  561. package/esm2022/disabled-container/disabled-container.component.mjs +88 -0
  562. package/esm2022/disabled-container/disabled-container.module.mjs +28 -0
  563. package/esm2022/disabled-container/public-api.mjs +9 -0
  564. package/esm2022/editable-text/component.mjs +96 -0
  565. package/esm2022/editable-text/index.mjs +3 -0
  566. package/esm2022/editable-text/module.mjs +44 -0
  567. package/esm2022/effect-directive/coerce-number.directive.mjs +57 -0
  568. package/esm2022/effect-directive/e2e-attribute-binding.directive.mjs +57 -0
  569. package/esm2022/effect-directive/event.directive.mjs +56 -0
  570. package/esm2022/effect-directive/min-max.directive.mjs +111 -0
  571. package/esm2022/effect-directive/module.mjs +46 -0
  572. package/esm2022/effect-directive/public-api.mjs +8 -0
  573. package/esm2022/effect-directive/trim.directive.mjs +43 -0
  574. package/esm2022/effect-directive/validators.directive.mjs +43 -0
  575. package/esm2022/errors-mapper/base-errors-mapper.mjs +42 -0
  576. package/esm2022/errors-mapper/default-errors-mapper.service.mjs +65 -0
  577. package/esm2022/errors-mapper/errors-mapper-component/component.mjs +71 -0
  578. package/esm2022/errors-mapper/errors-mapper.directive.mjs +115 -0
  579. package/esm2022/errors-mapper/errors-mapper.module.mjs +18 -0
  580. package/esm2022/errors-mapper/public-api.mjs +5 -0
  581. package/esm2022/errors-mapper/types.mjs +2 -0
  582. package/esm2022/exec/constants.mjs +64 -0
  583. package/esm2022/exec/index.mjs +8 -0
  584. package/esm2022/exec/module.mjs +82 -0
  585. package/esm2022/exec/placeholder/component.mjs +42 -0
  586. package/esm2022/exec/service.mjs +38 -0
  587. package/esm2022/exec/terminal/component.mjs +571 -0
  588. package/esm2022/exec/terminal-group/component.mjs +206 -0
  589. package/esm2022/exec/types.mjs +2 -0
  590. package/esm2022/feature-gate-forbidden/component/component.mjs +36 -0
  591. package/esm2022/feature-gate-forbidden/index.mjs +3 -0
  592. package/esm2022/feature-gate-forbidden/module.mjs +28 -0
  593. package/esm2022/form/index.mjs +5 -0
  594. package/esm2022/form/labels-editor/component.mjs +240 -0
  595. package/esm2022/form/taints-editor/component.mjs +210 -0
  596. package/esm2022/form/utils.mjs +61 -0
  597. package/esm2022/form/validators/async-function-validator.directive.mjs +48 -0
  598. package/esm2022/form/validators/dns1123-subdomain.mjs +42 -0
  599. package/esm2022/form/validators/function-validator.directive.mjs +48 -0
  600. package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +69 -0
  601. package/esm2022/form/validators/module.mjs +42 -0
  602. package/esm2022/form/validators/not-be-validator.directive.mjs +55 -0
  603. package/esm2022/form/validators/one-of-validator.directive.mjs +56 -0
  604. package/esm2022/form/validators/public-api.mjs +11 -0
  605. package/esm2022/form/validators/resource-limit.mjs +79 -0
  606. package/esm2022/form/validators/strong-password/index.mjs +4 -0
  607. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +102 -0
  608. package/esm2022/form/validators/strong-password/strong-password-tooltip/index.mjs +2 -0
  609. package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +172 -0
  610. package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +42 -0
  611. package/esm2022/form/validators/utils.mjs +107 -0
  612. package/esm2022/graph-canvas/components/graph-actions.component.mjs +48 -0
  613. package/esm2022/graph-canvas/components/graph-canvas.component.mjs +354 -0
  614. package/esm2022/graph-canvas/components/graph-link.component.mjs +140 -0
  615. package/esm2022/graph-canvas/components/graph-links.component.mjs +19 -0
  616. package/esm2022/graph-canvas/components/graph-node.directive.mjs +30 -0
  617. package/esm2022/graph-canvas/graph-canvas.module.mjs +49 -0
  618. package/esm2022/graph-canvas/graph-store.service.mjs +45 -0
  619. package/esm2022/graph-canvas/public-api.mjs +8 -0
  620. package/esm2022/graph-canvas/types.mjs +2 -0
  621. package/esm2022/graph-canvas/utils.mjs +16 -0
  622. package/esm2022/grid-layout/components/grid/component.mjs +286 -0
  623. package/esm2022/grid-layout/components/grid-items/component.mjs +228 -0
  624. package/esm2022/grid-layout/constant.mjs +7 -0
  625. package/esm2022/grid-layout/directives/drag-handler.directive.mjs +29 -0
  626. package/esm2022/grid-layout/directives/placeholder.directive.mjs +36 -0
  627. package/esm2022/grid-layout/directives/remove-handler.directive.mjs +22 -0
  628. package/esm2022/grid-layout/directives/resize-handler.directive.mjs +29 -0
  629. package/esm2022/grid-layout/grid-layout.service.mjs +85 -0
  630. package/esm2022/grid-layout/grid-placeholder.service.mjs +45 -0
  631. package/esm2022/grid-layout/index.mjs +11 -0
  632. package/esm2022/grid-layout/module.mjs +38 -0
  633. package/esm2022/grid-layout/type.mjs +6 -0
  634. package/esm2022/grid-layout/utils/client-rect.utils.mjs +12 -0
  635. package/esm2022/grid-layout/utils/grid.utils.mjs +265 -0
  636. package/esm2022/grid-layout/utils/mouse.utils.mjs +50 -0
  637. package/esm2022/grid-layout/utils/operator.mjs +6 -0
  638. package/esm2022/grid-layout/utils/react-grid-layout.utils.mjs +471 -0
  639. package/esm2022/grid-layout/utils/scroll.utils.mjs +209 -0
  640. package/esm2022/help-document/component.mjs +103 -0
  641. package/esm2022/help-document/directive.mjs +128 -0
  642. package/esm2022/help-document/module.mjs +47 -0
  643. package/esm2022/help-document/public-api.mjs +10 -0
  644. package/esm2022/help-document/service.mjs +57 -0
  645. package/esm2022/iframe-config/config.service.mjs +49 -0
  646. package/esm2022/iframe-config/constants.mjs +8 -0
  647. package/esm2022/iframe-config/public-api.mjs +9 -0
  648. package/esm2022/k8s-resource-list/footer/component.mjs +331 -0
  649. package/esm2022/k8s-resource-list/k8s-resource-list.mjs +226 -0
  650. package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +43 -0
  651. package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +176 -0
  652. package/esm2022/k8s-resource-list/public-api.mjs +13 -0
  653. package/esm2022/k8s-resource-list/types.mjs +11 -0
  654. package/esm2022/k8s-resource-list/utils.mjs +81 -0
  655. package/esm2022/license/license-api.mjs +55 -0
  656. package/esm2022/license/license-error/component.mjs +113 -0
  657. package/esm2022/license/license-error/module.mjs +55 -0
  658. package/esm2022/license/license.guard.mjs +54 -0
  659. package/esm2022/license/license.service.mjs +53 -0
  660. package/esm2022/license/license.type.mjs +24 -0
  661. package/esm2022/license/public-api.mjs +12 -0
  662. package/esm2022/metric-chart/common-chart.service.mjs +77 -0
  663. package/esm2022/metric-chart/helpers.mjs +111 -0
  664. package/esm2022/metric-chart/metric-chart.component.mjs +344 -0
  665. package/esm2022/metric-chart/metric-chart.module.mjs +61 -0
  666. package/esm2022/metric-chart/metric-time-pick.mjs +114 -0
  667. package/esm2022/metric-chart/public-api.mjs +14 -0
  668. package/esm2022/metric-chart/range-util.mjs +35 -0
  669. package/esm2022/metric-chart/types.mjs +2 -0
  670. package/esm2022/metric-chart/utils.mjs +220 -0
  671. package/esm2022/multi-search/action-input/component.mjs +1055 -0
  672. package/esm2022/multi-search/form/component.mjs +379 -0
  673. package/esm2022/multi-search/index.mjs +5 -0
  674. package/esm2022/multi-search/multi-search-tags/component.mjs +129 -0
  675. package/esm2022/multi-search/types.mjs +2 -0
  676. package/esm2022/multi-search/utils.mjs +48 -0
  677. package/esm2022/mutable/element.mjs +23 -0
  678. package/esm2022/mutable/mosaic/mosaic.component.mjs +98 -0
  679. package/esm2022/mutable/mosaic/mosaic.directive.mjs +23 -0
  680. package/esm2022/mutable/mutable.directive.mjs +356 -0
  681. package/esm2022/mutable/mutable.module.mjs +41 -0
  682. package/esm2022/mutable/public-api.mjs +6 -0
  683. package/esm2022/mutable/util.mjs +16 -0
  684. package/esm2022/notification/errors-mapper.mjs +28 -0
  685. package/esm2022/notification/feedback-notification/component.mjs +95 -0
  686. package/esm2022/notification/helpers.mjs +4 -0
  687. package/esm2022/notification/notification-util.module.mjs +32 -0
  688. package/esm2022/notification/notification-util.service.mjs +156 -0
  689. package/esm2022/notification/public-api.mjs +13 -0
  690. package/esm2022/notification/resource-error.interceptor.mjs +60 -0
  691. package/esm2022/overview-banner/overview-banner.component.mjs +34 -0
  692. package/esm2022/overview-banner/overview-banner.module.mjs +20 -0
  693. package/esm2022/overview-banner/overview-banner.types.mjs +2 -0
  694. package/esm2022/overview-banner/public-api.mjs +4 -0
  695. package/esm2022/page-guard/component/component.mjs +295 -0
  696. package/esm2022/page-guard/component/helper-directives.mjs +51 -0
  697. package/esm2022/page-guard/component/page-guard.type.mjs +82 -0
  698. package/esm2022/page-guard/module.mjs +37 -0
  699. package/esm2022/page-guard/public-api.mjs +11 -0
  700. package/esm2022/page-scaffold/index.mjs +5 -0
  701. package/esm2022/page-scaffold/module.mjs +21 -0
  702. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb-slot.directive.mjs +26 -0
  703. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +266 -0
  704. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.service.mjs +27 -0
  705. package/esm2022/page-scaffold/navigation/breadcrumb/index.mjs +5 -0
  706. package/esm2022/page-scaffold/navigation/breadcrumb/module.mjs +44 -0
  707. package/esm2022/page-scaffold/navigation/index.mjs +7 -0
  708. package/esm2022/page-scaffold/navigation/lottie-icons/animation-data.mjs +113 -0
  709. package/esm2022/page-scaffold/navigation/lottie-icons/animations/alarm.json +1 -0
  710. package/esm2022/page-scaffold/navigation/lottie-icons/animations/app.json +1 -0
  711. package/esm2022/page-scaffold/navigation/lottie-icons/animations/application.json +1 -0
  712. package/esm2022/page-scaffold/navigation/lottie-icons/animations/artifactory.json +1 -0
  713. package/esm2022/page-scaffold/navigation/lottie-icons/animations/audit.json +1 -0
  714. package/esm2022/page-scaffold/navigation/lottie-icons/animations/auxiliary_function.json +1 -0
  715. package/esm2022/page-scaffold/navigation/lottie-icons/animations/backup.json +1 -0
  716. package/esm2022/page-scaffold/navigation/lottie-icons/animations/bar_chart.json +1 -0
  717. package/esm2022/page-scaffold/navigation/lottie-icons/animations/bill.json +1 -0
  718. package/esm2022/page-scaffold/navigation/lottie-icons/animations/catalog.json +1 -0
  719. package/esm2022/page-scaffold/navigation/lottie-icons/animations/certificate.json +1 -0
  720. package/esm2022/page-scaffold/navigation/lottie-icons/animations/ci.json +1 -0
  721. package/esm2022/page-scaffold/navigation/lottie-icons/animations/code.json +1 -0
  722. package/esm2022/page-scaffold/navigation/lottie-icons/animations/data_service.json +1 -0
  723. package/esm2022/page-scaffold/navigation/lottie-icons/animations/devops.json +1 -0
  724. package/esm2022/page-scaffold/navigation/lottie-icons/animations/devops_tools.json +1 -0
  725. package/esm2022/page-scaffold/navigation/lottie-icons/animations/events.json +1 -0
  726. package/esm2022/page-scaffold/navigation/lottie-icons/animations/file.json +1 -0
  727. package/esm2022/page-scaffold/navigation/lottie-icons/animations/gateway.json +1 -0
  728. package/esm2022/page-scaffold/navigation/lottie-icons/animations/gitops.json +1 -0
  729. package/esm2022/page-scaffold/navigation/lottie-icons/animations/inspection.json +1 -0
  730. package/esm2022/page-scaffold/navigation/lottie-icons/animations/internet.json +1 -0
  731. package/esm2022/page-scaffold/navigation/lottie-icons/animations/kafka.json +1 -0
  732. package/esm2022/page-scaffold/navigation/lottie-icons/animations/log.json +1 -0
  733. package/esm2022/page-scaffold/navigation/lottie-icons/animations/member.json +1 -0
  734. package/esm2022/page-scaffold/navigation/lottie-icons/animations/mongodb.json +1 -0
  735. package/esm2022/page-scaffold/navigation/lottie-icons/animations/monitor.json +1 -0
  736. package/esm2022/page-scaffold/navigation/lottie-icons/animations/mysql.json +1 -0
  737. package/esm2022/page-scaffold/navigation/lottie-icons/animations/namespace.json +1 -0
  738. package/esm2022/page-scaffold/navigation/lottie-icons/animations/notice.json +1 -0
  739. package/esm2022/page-scaffold/navigation/lottie-icons/animations/oam.json +1 -0
  740. package/esm2022/page-scaffold/navigation/lottie-icons/animations/operation_center.json +1 -0
  741. package/esm2022/page-scaffold/navigation/lottie-icons/animations/params_template.json +1 -0
  742. package/esm2022/page-scaffold/navigation/lottie-icons/animations/pipeline.json +1 -0
  743. package/esm2022/page-scaffold/navigation/lottie-icons/animations/platform_settings.json +1 -0
  744. package/esm2022/page-scaffold/navigation/lottie-icons/animations/postgresql.json +1 -0
  745. package/esm2022/page-scaffold/navigation/lottie-icons/animations/product.json +1 -0
  746. package/esm2022/page-scaffold/navigation/lottie-icons/animations/proj.json +1 -0
  747. package/esm2022/page-scaffold/navigation/lottie-icons/animations/rabbitmq.json +1 -0
  748. package/esm2022/page-scaffold/navigation/lottie-icons/animations/redis.json +1 -0
  749. package/esm2022/page-scaffold/navigation/lottie-icons/animations/resource_list.json +1 -0
  750. package/esm2022/page-scaffold/navigation/lottie-icons/animations/rocketmq.json +1 -0
  751. package/esm2022/page-scaffold/navigation/lottie-icons/animations/scrum.json +1 -0
  752. package/esm2022/page-scaffold/navigation/lottie-icons/animations/secrets.json +1 -0
  753. package/esm2022/page-scaffold/navigation/lottie-icons/animations/security.json +1 -0
  754. package/esm2022/page-scaffold/navigation/lottie-icons/animations/server.json +1 -0
  755. package/esm2022/page-scaffold/navigation/lottie-icons/animations/service_mesh.json +1 -0
  756. package/esm2022/page-scaffold/navigation/lottie-icons/animations/sitemap.json +1 -0
  757. package/esm2022/page-scaffold/navigation/lottie-icons/animations/sliders_up.json +1 -0
  758. package/esm2022/page-scaffold/navigation/lottie-icons/animations/storage.json +1 -0
  759. package/esm2022/page-scaffold/navigation/lottie-icons/animations/test_management.json +1 -0
  760. package/esm2022/page-scaffold/navigation/lottie-icons/animations/topology.json +1 -0
  761. package/esm2022/page-scaffold/navigation/lottie-icons/animations/user_role.json +1 -0
  762. package/esm2022/page-scaffold/navigation/lottie-icons/animations/view_jaeger.json +1 -0
  763. package/esm2022/page-scaffold/navigation/lottie-icons/animations/virtualization.json +1 -0
  764. package/esm2022/page-scaffold/navigation/lottie-icons/index.mjs +3 -0
  765. package/esm2022/page-scaffold/navigation/lottie-icons/lottie-icon.directive.mjs +91 -0
  766. package/esm2022/page-scaffold/navigation/lottie-icons/module.mjs +17 -0
  767. package/esm2022/page-scaffold/navigation/lottie-icons/replace-lottie-colors.mjs +70 -0
  768. package/esm2022/page-scaffold/navigation/module.mjs +18 -0
  769. package/esm2022/page-scaffold/navigation/nav-menu/index.mjs +4 -0
  770. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +443 -0
  771. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +83 -0
  772. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +185 -0
  773. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.module.mjs +63 -0
  774. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.types.mjs +2 -0
  775. package/esm2022/page-scaffold/navigation/navconfig-loader/index.mjs +8 -0
  776. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +175 -0
  777. package/esm2022/page-scaffold/navigation/utils.mjs +12 -0
  778. package/esm2022/page-scaffold/page/context.service.mjs +22 -0
  779. package/esm2022/page-scaffold/page/helper-directives.mjs +66 -0
  780. package/esm2022/page-scaffold/page/index.mjs +5 -0
  781. package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +146 -0
  782. package/esm2022/page-scaffold/page/notices/notice.component.mjs +129 -0
  783. package/esm2022/page-scaffold/page/page.component.mjs +140 -0
  784. package/esm2022/page-scaffold/page/page.module.mjs +67 -0
  785. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +199 -0
  786. package/esm2022/page-scaffold/page-header/account-menu/module.mjs +43 -0
  787. package/esm2022/page-scaffold/page-header/account-menu/public-api.mjs +8 -0
  788. package/esm2022/page-scaffold/page-header/common-layout/common-layout.module.mjs +75 -0
  789. package/esm2022/page-scaffold/page-header/common-layout/context.service.mjs +86 -0
  790. package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +271 -0
  791. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +273 -0
  792. package/esm2022/page-scaffold/page-header/common-layout/product-select/service.mjs +19 -0
  793. package/esm2022/page-scaffold/page-header/common-layout/project-select/base-selection.mjs +122 -0
  794. package/esm2022/page-scaffold/page-header/common-layout/public-api.mjs +14 -0
  795. package/esm2022/page-scaffold/page-header/common-layout/store.service.mjs +58 -0
  796. package/esm2022/page-scaffold/page-header/common-layout/utils.mjs +7 -0
  797. package/esm2022/page-scaffold/page-header/component.mjs +104 -0
  798. package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +131 -0
  799. package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +136 -0
  800. package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +95 -0
  801. package/esm2022/page-scaffold/page-header/header-notify/header-notify.module.mjs +71 -0
  802. package/esm2022/page-scaffold/page-header/header-notify/notify.service.mjs +282 -0
  803. package/esm2022/page-scaffold/page-header/header-notify/public-api.mjs +10 -0
  804. package/esm2022/page-scaffold/page-header/header-notify/utils.mjs +44 -0
  805. package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +306 -0
  806. package/esm2022/page-scaffold/page-header/help-menu/module.mjs +65 -0
  807. package/esm2022/page-scaffold/page-header/help-menu/public-api.mjs +8 -0
  808. package/esm2022/page-scaffold/page-header/index.mjs +14 -0
  809. package/esm2022/page-scaffold/page-header/module.mjs +61 -0
  810. package/esm2022/permission/admin.guard.mjs +43 -0
  811. package/esm2022/permission/constants.mjs +2 -0
  812. package/esm2022/permission/helpers.mjs +43 -0
  813. package/esm2022/permission/k8s-permission.service.mjs +110 -0
  814. package/esm2022/permission/permission.guard.mjs +108 -0
  815. package/esm2022/permission/public-api.mjs +13 -0
  816. package/esm2022/permission/types.mjs +38 -0
  817. package/esm2022/pie-derivative-chart/donut-status/component.mjs +195 -0
  818. package/esm2022/pie-derivative-chart/indicator-color.directive.mjs +30 -0
  819. package/esm2022/pie-derivative-chart/numerical-limit.pipe.mjs +26 -0
  820. package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +67 -0
  821. package/esm2022/pie-derivative-chart/public-api.mjs +11 -0
  822. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +244 -0
  823. package/esm2022/public-api.mjs +44 -0
  824. package/esm2022/scm/index.mjs +9 -0
  825. package/esm2022/scm/password-input/component.mjs +224 -0
  826. package/esm2022/scm/password-input/index.mjs +3 -0
  827. package/esm2022/scm/password-input/module.mjs +64 -0
  828. package/esm2022/scm/pure-pipe/calc.pipe.mjs +20 -0
  829. package/esm2022/scm/pure-pipe/index.mjs +4 -0
  830. package/esm2022/scm/pure-pipe/module.mjs +19 -0
  831. package/esm2022/scm/pure-pipe/pure.pipe.mjs +26 -0
  832. package/esm2022/scm/resource-multi-select/component.mjs +214 -0
  833. package/esm2022/scm/resource-multi-select/util.mjs +24 -0
  834. package/esm2022/scm/search-panel/component.mjs +86 -0
  835. package/esm2022/scm/search-panel/helper.directive.mjs +14 -0
  836. package/esm2022/scm/search-panel/search-item/component.mjs +28 -0
  837. package/esm2022/scm/text-ellipsis/component.mjs +55 -0
  838. package/esm2022/searchable-selector/component.mjs +275 -0
  839. package/esm2022/searchable-selector/module.mjs +63 -0
  840. package/esm2022/searchable-selector/public-api.mjs +3 -0
  841. package/esm2022/skeleton/item/component.mjs +44 -0
  842. package/esm2022/skeleton/module.mjs +26 -0
  843. package/esm2022/skeleton/nav-skeleton/component.mjs +35 -0
  844. package/esm2022/skeleton/public-api.mjs +4 -0
  845. package/esm2022/table/component.mjs +821 -0
  846. package/esm2022/table/constants.mjs +4 -0
  847. package/esm2022/table/helper.mjs +16 -0
  848. package/esm2022/table/helpers.directive.mjs +18 -0
  849. package/esm2022/table/module.mjs +82 -0
  850. package/esm2022/table/public-api.mjs +7 -0
  851. package/esm2022/table/types.mjs +2 -0
  852. package/esm2022/table/util.service.mjs +81 -0
  853. package/esm2022/translate/constants.mjs +13 -0
  854. package/esm2022/translate/en.json +533 -0
  855. package/esm2022/translate/helpers.mjs +22 -0
  856. package/esm2022/translate/pick-locale.pipe.mjs +34 -0
  857. package/esm2022/translate/public-api.mjs +16 -0
  858. package/esm2022/translate/tokens.mjs +13 -0
  859. package/esm2022/translate/translate.directive.mjs +164 -0
  860. package/esm2022/translate/translate.module.mjs +91 -0
  861. package/esm2022/translate/translate.pipe.mjs +72 -0
  862. package/esm2022/translate/translate.service.mjs +327 -0
  863. package/esm2022/translate/types.mjs +6 -0
  864. package/esm2022/translate/zh.json +533 -0
  865. package/esm2022/view-chart/custom-template/dropdown-legend.mjs +115 -0
  866. package/esm2022/view-chart/legend/legend.component.mjs +263 -0
  867. package/esm2022/view-chart/public-api.mjs +9 -0
  868. package/esm2022/view-chart/types.mjs +2 -0
  869. package/esm2022/view-chart/view-chart.component.mjs +845 -0
  870. package/esm2022/view-chart/view-chart.module.mjs +63 -0
  871. package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +115 -0
  872. package/esm2022/view-zchart/legend/legend.component.mjs +270 -0
  873. package/esm2022/view-zchart/public-api.mjs +8 -0
  874. package/esm2022/view-zchart/units.mjs +28 -0
  875. package/esm2022/view-zchart/view-zchart.component.mjs +999 -0
  876. package/esm2022/view-zchart/view-zchart.module.mjs +63 -0
  877. package/esm2022/widget/card-section/card-section.component.mjs +33 -0
  878. package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +342 -0
  879. package/esm2022/widget/confirm-delete/utils.mjs +8 -0
  880. package/esm2022/widget/current-time/component.mjs +42 -0
  881. package/esm2022/widget/date-range-picker/component.mjs +317 -0
  882. package/esm2022/widget/date-range-picker/public-api.mjs +4 -0
  883. package/esm2022/widget/date-range-picker/type.mjs +2 -0
  884. package/esm2022/widget/date-range-picker/util.mjs +57 -0
  885. package/esm2022/widget/field-set/column/component.mjs +34 -0
  886. package/esm2022/widget/field-set/group/component.mjs +22 -0
  887. package/esm2022/widget/field-set/item/component.mjs +60 -0
  888. package/esm2022/widget/foldable-block/component.mjs +109 -0
  889. package/esm2022/widget/foldable-item-in-table/component.mjs +126 -0
  890. package/esm2022/widget/loading-mask/loading-mask.component.mjs +75 -0
  891. package/esm2022/widget/public-api.mjs +20 -0
  892. package/esm2022/widget/relative-time/component.mjs +60 -0
  893. package/esm2022/widget/select-prefix-label/directive.mjs +89 -0
  894. package/esm2022/widget/tags-label/component.mjs +374 -0
  895. package/esm2022/widget/terminating-tag/component.mjs +27 -0
  896. package/esm2022/widget/text-tooltip/directive.mjs +73 -0
  897. package/esm2022/widget/text-with-url/component.mjs +76 -0
  898. package/esm2022/widget/widget.module.mjs +140 -0
  899. package/esm2022/widget/zero-state/zero-state.component.mjs +96 -0
  900. package/esm2022/window-channel/base-window-channel.mjs +38 -0
  901. package/esm2022/window-channel/directives/host-link.directive.mjs +43 -0
  902. package/esm2022/window-channel/host-window-channel.service.mjs +83 -0
  903. package/esm2022/window-channel/index.mjs +5 -0
  904. package/esm2022/window-channel/plugin-window-channel.service.mjs +38 -0
  905. package/esm2022/window-channel/utils.mjs +12 -0
  906. package/esm2022/xterm/public-api.mjs +4 -0
  907. package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +284 -0
  908. package/esm2022/xterm/xterm-terminal/xterm-terminal.directive.mjs +25 -0
  909. package/esm2022/xterm/xterm.component.mjs +128 -0
  910. package/exec/constants.d.ts +13 -0
  911. package/exec/index.d.ts +7 -0
  912. package/exec/module.d.ts +17 -0
  913. package/exec/placeholder/component.d.ts +20 -0
  914. package/exec/service.d.ts +12 -0
  915. package/exec/terminal/component.d.ts +95 -0
  916. package/exec/terminal-group/component.d.ts +41 -0
  917. package/exec/types.d.ts +14 -0
  918. package/feature-gate-forbidden/component/component.d.ts +6 -0
  919. package/feature-gate-forbidden/index.d.ts +2 -0
  920. package/feature-gate-forbidden/module.d.ts +11 -0
  921. package/form/index.d.ts +4 -0
  922. package/form/labels-editor/component.d.ts +31 -0
  923. package/form/taints-editor/component.d.ts +22 -0
  924. package/form/utils.d.ts +40 -0
  925. package/form/validators/async-function-validator.directive.d.ts +11 -0
  926. package/form/validators/dns1123-subdomain.d.ts +28 -0
  927. package/form/validators/function-validator.directive.d.ts +11 -0
  928. package/form/validators/maxlength-minlength-validator.directive.d.ts +20 -0
  929. package/form/validators/module.d.ts +13 -0
  930. package/form/validators/not-be-validator.directive.d.ts +12 -0
  931. package/form/validators/one-of-validator.directive.d.ts +12 -0
  932. package/form/validators/public-api.d.ts +10 -0
  933. package/form/validators/resource-limit.d.ts +16 -0
  934. package/form/validators/strong-password/index.d.ts +3 -0
  935. package/form/validators/strong-password/strong-password-tooltip/component.d.ts +6 -0
  936. package/form/validators/strong-password/strong-password-tooltip/index.d.ts +1 -0
  937. package/form/validators/strong-password/strong-password-validator.directive.d.ts +34 -0
  938. package/form/validators/strong-password/strong-password-validator.module.d.ts +12 -0
  939. package/form/validators/utils.d.ts +57 -0
  940. package/graph-canvas/components/graph-actions.component.d.ts +8 -0
  941. package/graph-canvas/components/graph-canvas.component.d.ts +47 -0
  942. package/graph-canvas/components/graph-link.component.d.ts +26 -0
  943. package/graph-canvas/components/graph-links.component.d.ts +5 -0
  944. package/graph-canvas/components/graph-node.directive.d.ts +15 -0
  945. package/graph-canvas/graph-canvas.module.d.ts +14 -0
  946. package/graph-canvas/graph-store.service.d.ts +19 -0
  947. package/graph-canvas/public-api.d.ts +7 -0
  948. package/graph-canvas/types.d.ts +30 -0
  949. package/graph-canvas/utils.d.ts +2 -0
  950. package/grid-layout/components/grid/component.d.ts +53 -0
  951. package/grid-layout/components/grid-items/component.d.ts +56 -0
  952. package/grid-layout/constant.d.ts +3 -0
  953. package/grid-layout/directives/drag-handler.directive.d.ts +11 -0
  954. package/grid-layout/directives/placeholder.directive.d.ts +12 -0
  955. package/grid-layout/directives/remove-handler.directive.d.ts +9 -0
  956. package/grid-layout/directives/resize-handler.directive.d.ts +11 -0
  957. package/grid-layout/grid-layout.service.d.ts +49 -0
  958. package/grid-layout/grid-placeholder.service.d.ts +17 -0
  959. package/grid-layout/index.d.ts +10 -0
  960. package/grid-layout/module.d.ts +14 -0
  961. package/grid-layout/type.d.ts +65 -0
  962. package/grid-layout/utils/client-rect.utils.d.ts +2 -0
  963. package/grid-layout/utils/grid.utils.d.ts +30 -0
  964. package/grid-layout/utils/mouse.utils.d.ts +24 -0
  965. package/grid-layout/utils/operator.d.ts +3 -0
  966. package/grid-layout/utils/react-grid-layout.utils.d.ts +171 -0
  967. package/grid-layout/utils/scroll.utils.d.ts +28 -0
  968. package/help-document/component.d.ts +30 -0
  969. package/help-document/directive.d.ts +38 -0
  970. package/help-document/module.d.ts +13 -0
  971. package/help-document/public-api.d.ts +9 -0
  972. package/help-document/service.d.ts +30 -0
  973. package/iframe-config/config.service.d.ts +20 -0
  974. package/iframe-config/constants.d.ts +7 -0
  975. package/iframe-config/public-api.d.ts +8 -0
  976. package/index.d.ts +5 -0
  977. package/k8s-resource-list/footer/component.d.ts +37 -0
  978. package/k8s-resource-list/k8s-resource-list.d.ts +42 -0
  979. package/k8s-resource-list/k8s-resource-list.module.d.ts +10 -0
  980. package/k8s-resource-list/k8s-resource-paged-list.d.ts +61 -0
  981. package/k8s-resource-list/public-api.d.ts +12 -0
  982. package/k8s-resource-list/types.d.ts +70 -0
  983. package/k8s-resource-list/utils.d.ts +19 -0
  984. package/license/license-api.d.ts +19 -0
  985. package/license/license-error/component.d.ts +33 -0
  986. package/license/license-error/module.d.ts +13 -0
  987. package/license/license.guard.d.ts +23 -0
  988. package/license/license.service.d.ts +21 -0
  989. package/license/license.type.d.ts +19 -0
  990. package/license/public-api.d.ts +11 -0
  991. package/metric-chart/common-chart.service.d.ts +30 -0
  992. package/metric-chart/helpers.d.ts +54 -0
  993. package/metric-chart/metric-chart.component.d.ts +115 -0
  994. package/metric-chart/metric-chart.module.d.ts +14 -0
  995. package/metric-chart/metric-time-pick.d.ts +12 -0
  996. package/metric-chart/public-api.d.ts +13 -0
  997. package/metric-chart/range-util.d.ts +1 -0
  998. package/metric-chart/types.d.ts +69 -0
  999. package/metric-chart/utils.d.ts +86 -0
  1000. package/multi-search/action-input/component.d.ts +119 -0
  1001. package/multi-search/form/component.d.ts +63 -0
  1002. package/multi-search/index.d.ts +4 -0
  1003. package/multi-search/multi-search-tags/component.d.ts +26 -0
  1004. package/multi-search/types.d.ts +32 -0
  1005. package/multi-search/utils.d.ts +24 -0
  1006. package/mutable/element.d.ts +10 -0
  1007. package/mutable/mosaic/mosaic.component.d.ts +32 -0
  1008. package/mutable/mosaic/mosaic.directive.d.ts +9 -0
  1009. package/mutable/mutable.directive.d.ts +83 -0
  1010. package/mutable/mutable.module.d.ts +10 -0
  1011. package/mutable/public-api.d.ts +5 -0
  1012. package/mutable/util.d.ts +18 -0
  1013. package/notification/errors-mapper.d.ts +7 -0
  1014. package/notification/feedback-notification/component.d.ts +17 -0
  1015. package/notification/helpers.d.ts +2 -0
  1016. package/notification/notification-util.module.d.ts +10 -0
  1017. package/notification/notification-util.service.d.ts +39 -0
  1018. package/notification/public-api.d.ts +12 -0
  1019. package/notification/resource-error.interceptor.d.ts +21 -0
  1020. package/overview-banner/overview-banner.component.d.ts +7 -0
  1021. package/overview-banner/overview-banner.module.d.ts +9 -0
  1022. package/overview-banner/overview-banner.types.d.ts +5 -0
  1023. package/overview-banner/public-api.d.ts +3 -0
  1024. package/package.json +65 -0
  1025. package/page-guard/component/component.d.ts +40 -0
  1026. package/page-guard/component/helper-directives.d.ts +17 -0
  1027. package/page-guard/component/page-guard.type.d.ts +86 -0
  1028. package/page-guard/module.d.ts +8 -0
  1029. package/page-guard/public-api.d.ts +10 -0
  1030. package/page-scaffold/index.d.ts +4 -0
  1031. package/page-scaffold/module.d.ts +10 -0
  1032. package/page-scaffold/navigation/breadcrumb/breadcrumb-slot.directive.d.ts +12 -0
  1033. package/page-scaffold/navigation/breadcrumb/breadcrumb.component.d.ts +40 -0
  1034. package/page-scaffold/navigation/breadcrumb/breadcrumb.service.d.ts +13 -0
  1035. package/page-scaffold/navigation/breadcrumb/index.d.ts +4 -0
  1036. package/page-scaffold/navigation/breadcrumb/module.d.ts +13 -0
  1037. package/page-scaffold/navigation/index.d.ts +6 -0
  1038. package/page-scaffold/navigation/lottie-icons/animation-data.d.ts +2 -0
  1039. package/page-scaffold/navigation/lottie-icons/index.d.ts +2 -0
  1040. package/page-scaffold/navigation/lottie-icons/lottie-icon.directive.d.ts +24 -0
  1041. package/page-scaffold/navigation/lottie-icons/module.d.ts +7 -0
  1042. package/page-scaffold/navigation/lottie-icons/replace-lottie-colors.d.ts +1 -0
  1043. package/page-scaffold/navigation/module.d.ts +7 -0
  1044. package/page-scaffold/navigation/nav-menu/index.d.ts +3 -0
  1045. package/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.d.ts +52 -0
  1046. package/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.d.ts +10 -0
  1047. package/page-scaffold/navigation/nav-menu/nav-menu.component.d.ts +47 -0
  1048. package/page-scaffold/navigation/nav-menu/nav-menu.module.d.ts +16 -0
  1049. package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts +21 -0
  1050. package/page-scaffold/navigation/navconfig-loader/index.d.ts +7 -0
  1051. package/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.d.ts +61 -0
  1052. package/page-scaffold/navigation/utils.d.ts +11 -0
  1053. package/page-scaffold/page/context.service.d.ts +9 -0
  1054. package/page-scaffold/page/helper-directives.d.ts +30 -0
  1055. package/page-scaffold/page/index.d.ts +4 -0
  1056. package/page-scaffold/page/notices/maintenance.component.d.ts +26 -0
  1057. package/page-scaffold/page/notices/notice.component.d.ts +22 -0
  1058. package/page-scaffold/page/page.component.d.ts +23 -0
  1059. package/page-scaffold/page/page.module.d.ts +14 -0
  1060. package/page-scaffold/page-header/account-menu/component/component.d.ts +38 -0
  1061. package/page-scaffold/page-header/account-menu/module.d.ts +10 -0
  1062. package/page-scaffold/page-header/account-menu/public-api.d.ts +7 -0
  1063. package/page-scaffold/page-header/common-layout/common-layout.module.d.ts +16 -0
  1064. package/page-scaffold/page-header/common-layout/context.service.d.ts +51 -0
  1065. package/page-scaffold/page-header/common-layout/namespace-select/component.d.ts +49 -0
  1066. package/page-scaffold/page-header/common-layout/product-select/component.d.ts +37 -0
  1067. package/page-scaffold/page-header/common-layout/product-select/service.d.ts +9 -0
  1068. package/page-scaffold/page-header/common-layout/project-select/base-selection.d.ts +24 -0
  1069. package/page-scaffold/page-header/common-layout/public-api.d.ts +13 -0
  1070. package/page-scaffold/page-header/common-layout/store.service.d.ts +31 -0
  1071. package/page-scaffold/page-header/common-layout/utils.d.ts +2 -0
  1072. package/page-scaffold/page-header/component.d.ts +21 -0
  1073. package/page-scaffold/page-header/enterprise-support-status/component.d.ts +24 -0
  1074. package/page-scaffold/page-header/header-notify/component/header-notify.component.d.ts +27 -0
  1075. package/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.d.ts +19 -0
  1076. package/page-scaffold/page-header/header-notify/header-notify.module.d.ts +14 -0
  1077. package/page-scaffold/page-header/header-notify/notify.service.d.ts +60 -0
  1078. package/page-scaffold/page-header/header-notify/public-api.d.ts +9 -0
  1079. package/page-scaffold/page-header/header-notify/utils.d.ts +35 -0
  1080. package/page-scaffold/page-header/help-menu/component/component.d.ts +45 -0
  1081. package/page-scaffold/page-header/help-menu/module.d.ts +13 -0
  1082. package/page-scaffold/page-header/help-menu/public-api.d.ts +7 -0
  1083. package/page-scaffold/page-header/index.d.ts +13 -0
  1084. package/page-scaffold/page-header/module.d.ts +15 -0
  1085. package/permission/admin.guard.d.ts +14 -0
  1086. package/permission/constants.d.ts +1 -0
  1087. package/permission/helpers.d.ts +11 -0
  1088. package/permission/k8s-permission.service.d.ts +80 -0
  1089. package/permission/permission.guard.d.ts +22 -0
  1090. package/permission/public-api.d.ts +12 -0
  1091. package/permission/types.d.ts +74 -0
  1092. package/pie-derivative-chart/donut-status/component.d.ts +79 -0
  1093. package/pie-derivative-chart/indicator-color.directive.d.ts +10 -0
  1094. package/pie-derivative-chart/numerical-limit.pipe.d.ts +7 -0
  1095. package/pie-derivative-chart/pie-derivative-chart.module.d.ts +15 -0
  1096. package/pie-derivative-chart/public-api.d.ts +10 -0
  1097. package/pie-derivative-chart/radial-bar/radial-bar-chart.component.d.ts +55 -0
  1098. package/public-api.d.ts +43 -0
  1099. package/scm/index.d.ts +8 -0
  1100. package/scm/password-input/component.d.ts +35 -0
  1101. package/scm/password-input/index.d.ts +2 -0
  1102. package/scm/password-input/module.d.ts +14 -0
  1103. package/scm/pure-pipe/calc.pipe.d.ts +11 -0
  1104. package/scm/pure-pipe/index.d.ts +3 -0
  1105. package/scm/pure-pipe/module.d.ts +8 -0
  1106. package/scm/pure-pipe/pure.pipe.d.ts +17 -0
  1107. package/scm/resource-multi-select/component.d.ts +40 -0
  1108. package/scm/resource-multi-select/util.d.ts +10 -0
  1109. package/scm/search-panel/component.d.ts +16 -0
  1110. package/scm/search-panel/helper.directive.d.ts +5 -0
  1111. package/scm/search-panel/search-item/component.d.ts +7 -0
  1112. package/scm/text-ellipsis/component.d.ts +9 -0
  1113. package/searchable-selector/component.d.ts +54 -0
  1114. package/searchable-selector/module.d.ts +12 -0
  1115. package/searchable-selector/public-api.d.ts +2 -0
  1116. package/skeleton/item/component.d.ts +12 -0
  1117. package/skeleton/module.d.ts +10 -0
  1118. package/skeleton/nav-skeleton/component.d.ts +6 -0
  1119. package/skeleton/public-api.d.ts +3 -0
  1120. package/styles/global.scss +890 -0
  1121. package/styles/markdown-body.scss +105 -0
  1122. package/styles/mixins.scss +640 -0
  1123. package/styles/reset-browser.scss +88 -0
  1124. package/styles/tailwind-preset.scss +1 -0
  1125. package/styles/var.scss +29 -0
  1126. package/table/component.d.ts +84 -0
  1127. package/table/constants.d.ts +3 -0
  1128. package/table/helper.d.ts +2 -0
  1129. package/table/helpers.directive.d.ts +21 -0
  1130. package/table/module.d.ts +19 -0
  1131. package/table/public-api.d.ts +6 -0
  1132. package/table/types.d.ts +69 -0
  1133. package/table/util.service.d.ts +13 -0
  1134. package/translate/constants.d.ts +13 -0
  1135. package/translate/helpers.d.ts +14 -0
  1136. package/translate/pick-locale.pipe.d.ts +12 -0
  1137. package/translate/public-api.d.ts +15 -0
  1138. package/translate/tokens.d.ts +12 -0
  1139. package/translate/translate.directive.d.ts +52 -0
  1140. package/translate/translate.module.d.ts +1084 -0
  1141. package/translate/translate.pipe.d.ts +25 -0
  1142. package/translate/translate.service.d.ts +68 -0
  1143. package/translate/types.d.ts +20 -0
  1144. package/view-chart/custom-template/dropdown-legend.d.ts +11 -0
  1145. package/view-chart/legend/legend.component.d.ts +36 -0
  1146. package/view-chart/public-api.d.ts +8 -0
  1147. package/view-chart/types.d.ts +37 -0
  1148. package/view-chart/view-chart.component.d.ts +187 -0
  1149. package/view-chart/view-chart.module.d.ts +15 -0
  1150. package/view-zchart/custom-template/dropdown-legend.d.ts +11 -0
  1151. package/view-zchart/legend/legend.component.d.ts +42 -0
  1152. package/view-zchart/public-api.d.ts +7 -0
  1153. package/view-zchart/units.d.ts +2 -0
  1154. package/view-zchart/view-zchart.component.d.ts +209 -0
  1155. package/view-zchart/view-zchart.module.d.ts +15 -0
  1156. package/widget/card-section/card-section.component.d.ts +7 -0
  1157. package/widget/confirm-delete/confirm-delete.component.d.ts +57 -0
  1158. package/widget/confirm-delete/utils.d.ts +25 -0
  1159. package/widget/current-time/component.d.ts +14 -0
  1160. package/widget/date-range-picker/component.d.ts +54 -0
  1161. package/widget/date-range-picker/public-api.d.ts +3 -0
  1162. package/widget/date-range-picker/type.d.ts +36 -0
  1163. package/widget/date-range-picker/util.d.ts +11 -0
  1164. package/widget/field-set/column/component.d.ts +10 -0
  1165. package/widget/field-set/group/component.d.ts +6 -0
  1166. package/widget/field-set/item/component.d.ts +13 -0
  1167. package/widget/foldable-block/component.d.ts +17 -0
  1168. package/widget/foldable-item-in-table/component.d.ts +22 -0
  1169. package/widget/loading-mask/loading-mask.component.d.ts +13 -0
  1170. package/widget/public-api.d.ts +19 -0
  1171. package/widget/relative-time/component.d.ts +15 -0
  1172. package/widget/select-prefix-label/directive.d.ts +17 -0
  1173. package/widget/tags-label/component.d.ts +51 -0
  1174. package/widget/terminating-tag/component.d.ts +7 -0
  1175. package/widget/text-tooltip/directive.d.ts +21 -0
  1176. package/widget/text-with-url/component.d.ts +12 -0
  1177. package/widget/widget.module.d.ts +26 -0
  1178. package/widget/zero-state/zero-state.component.d.ts +13 -0
  1179. package/window-channel/base-window-channel.d.ts +9 -0
  1180. package/window-channel/directives/host-link.directive.d.ts +11 -0
  1181. package/window-channel/host-window-channel.service.d.ts +15 -0
  1182. package/window-channel/index.d.ts +4 -0
  1183. package/window-channel/plugin-window-channel.service.d.ts +10 -0
  1184. package/window-channel/utils.d.ts +37 -0
  1185. package/xterm/public-api.d.ts +3 -0
  1186. package/xterm/xterm-terminal/xterm-terminal.component.d.ts +31 -0
  1187. package/xterm/xterm-terminal/xterm-terminal.directive.d.ts +9 -0
  1188. package/xterm/xterm.component.d.ts +28 -0
@@ -0,0 +1,471 @@
1
+ /* eslint-disable sonar/no-redundant-optional */
2
+ /* eslint-disable sonarjs/no-duplicate-string */
3
+ const DEBUG = false;
4
+ /**
5
+ * Return the bottom coordinate of the layout.
6
+ *
7
+ * @param {Array} layout Layout array.
8
+ * @return {Number} Bottom coordinate.
9
+ */
10
+ export function bottom(layout) {
11
+ let max = 0;
12
+ let bottomY;
13
+ for (let i = 0, len = layout.length; i < len; i++) {
14
+ bottomY = layout[i].y + layout[i].h;
15
+ if (bottomY > max) {
16
+ max = bottomY;
17
+ }
18
+ }
19
+ return max;
20
+ }
21
+ export function cloneLayout(layout) {
22
+ const newLayout = Array.from({ length: layout.length });
23
+ for (let i = 0, len = layout.length; i < len; i++) {
24
+ newLayout[i] = cloneLayoutItem(layout[i]);
25
+ }
26
+ return newLayout;
27
+ }
28
+ // Fast path to cloning, since this is monomorphic
29
+ /** NOTE: This code has been modified from the original source */
30
+ export function cloneLayoutItem(layoutItem) {
31
+ const clonedLayoutItem = {
32
+ w: layoutItem.w,
33
+ h: layoutItem.h,
34
+ x: layoutItem.x,
35
+ y: layoutItem.y,
36
+ id: layoutItem.id,
37
+ moved: !!layoutItem.moved,
38
+ static: !!layoutItem.static,
39
+ };
40
+ if (layoutItem.minW !== undefined) {
41
+ clonedLayoutItem.minW = layoutItem.minW;
42
+ }
43
+ if (layoutItem.maxW !== undefined) {
44
+ clonedLayoutItem.maxW = layoutItem.maxW;
45
+ }
46
+ if (layoutItem.minH !== undefined) {
47
+ clonedLayoutItem.minH = layoutItem.minH;
48
+ }
49
+ if (layoutItem.maxH !== undefined) {
50
+ clonedLayoutItem.maxH = layoutItem.maxH;
51
+ }
52
+ // These can be null
53
+ if (layoutItem.isDraggable !== undefined) {
54
+ clonedLayoutItem.isDraggable = layoutItem.isDraggable;
55
+ }
56
+ if (layoutItem.isResizable !== undefined) {
57
+ clonedLayoutItem.isResizable = layoutItem.isResizable;
58
+ }
59
+ return clonedLayoutItem;
60
+ }
61
+ /**
62
+ * Given two layout items, check if they collide.
63
+ */
64
+ export function collides(l1, l2) {
65
+ if (l1.id === l2.id) {
66
+ return false;
67
+ } // same element
68
+ if (l1.x + l1.w <= l2.x) {
69
+ return false;
70
+ } // l1 is left of l2
71
+ if (l1.x >= l2.x + l2.w) {
72
+ return false;
73
+ } // l1 is right of l2
74
+ if (l1.y + l1.h <= l2.y) {
75
+ return false;
76
+ } // l1 is above l2
77
+ if (l1.y >= l2.y + l2.h) {
78
+ return false;
79
+ } // l1 is below l2
80
+ return true; // boxes overlap
81
+ }
82
+ /**
83
+ * Given a layout, compact it. This involves going down each y coordinate and removing gaps
84
+ * between items.
85
+ *
86
+ * @param {Array} layout Layout.
87
+ * @param {Boolean} verticalCompact Whether or not to compact the layout
88
+ * vertically.
89
+ * @return {Array} Compacted Layout.
90
+ */
91
+ export function compact(layout, compactType, cols) {
92
+ // Statics go in the compareWith array right away so items flow around them.
93
+ const compareWith = getStatics(layout);
94
+ // We go through the items by row and column.
95
+ const sorted = sortLayoutItems(layout, compactType);
96
+ // Holding for new items.
97
+ const out = Array.from({ length: layout.length });
98
+ for (let i = 0, len = sorted.length; i < len; i++) {
99
+ let l = cloneLayoutItem(sorted[i]);
100
+ // Don't move static elements
101
+ if (!l.static) {
102
+ l = compactItem(compareWith, l, compactType, cols, sorted);
103
+ // Add to comparison array. We only collide with items before this one.
104
+ // Statics are already in this array.
105
+ compareWith.push(l);
106
+ }
107
+ // Add to output array to make sure they still come out in the right order.
108
+ out[layout.indexOf(sorted[i])] = l;
109
+ // Clear moved flag, if it exists.
110
+ l.moved = false;
111
+ }
112
+ return out;
113
+ }
114
+ const heightWidth = { x: 'w', y: 'h' };
115
+ /**
116
+ * Before moving item down, it will check if the movement will cause collisions and move those items down before.
117
+ */
118
+ function resolveCompactionCollision(layout, item, moveToCoord, axis) {
119
+ const sizeProp = heightWidth[axis];
120
+ item[axis] += 1;
121
+ const itemIndex = layout.map(layoutItem => layoutItem.id).indexOf(item.id);
122
+ // Go through each item we collide with.
123
+ for (let i = itemIndex + 1; i < layout.length; i++) {
124
+ const otherItem = layout[i];
125
+ // Ignore static items
126
+ if (otherItem.static) {
127
+ continue;
128
+ }
129
+ // Optimization: we can break early if we know we're past this el
130
+ // We can do this b/c it's a sorted layout
131
+ if (otherItem.y > item.y + item.h) {
132
+ break;
133
+ }
134
+ if (collides(item, otherItem)) {
135
+ resolveCompactionCollision(layout, otherItem,
136
+ // @ts-ignore
137
+ moveToCoord + item[sizeProp], axis);
138
+ }
139
+ }
140
+ item[axis] = moveToCoord;
141
+ }
142
+ /**
143
+ * Compact an item in the layout.
144
+ */
145
+ export function compactItem(compareWith, l, compactType, cols, fullLayout) {
146
+ const compactV = compactType === 'vertical';
147
+ const compactH = compactType === 'horizontal';
148
+ if (compactV) {
149
+ // Bottom 'y' possible is the bottom of the layout.
150
+ // This allows you to do nice stuff like specify {y: Infinity}
151
+ // This is here because the layout must be sorted in order to get the correct bottom `y`.
152
+ l.y = Math.min(bottom(compareWith), l.y);
153
+ // Move the element up as far as it can go without colliding.
154
+ while (l.y > 0 && !getFirstCollision(compareWith, l)) {
155
+ l.y--;
156
+ }
157
+ }
158
+ else if (compactH) {
159
+ l.y = Math.min(bottom(compareWith), l.y);
160
+ // Move the element left as far as it can go without colliding.
161
+ while (l.x > 0 && !getFirstCollision(compareWith, l)) {
162
+ l.x--;
163
+ }
164
+ }
165
+ // Move it down, and keep moving it down if it's colliding.
166
+ let collides;
167
+ while ((collides = getFirstCollision(compareWith, l))) {
168
+ if (compactH) {
169
+ resolveCompactionCollision(fullLayout, l, collides.x + collides.w, 'x');
170
+ }
171
+ else {
172
+ resolveCompactionCollision(fullLayout, l, collides.y + collides.h, 'y');
173
+ }
174
+ // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again.
175
+ if (compactH && l.x + l.w > cols) {
176
+ l.x = cols - l.w;
177
+ l.y++;
178
+ }
179
+ }
180
+ return l;
181
+ }
182
+ /**
183
+ * Given a layout, make sure all elements fit within its bounds.
184
+ *
185
+ * @param {Array} layout Layout array.
186
+ * @param {Number} bounds Number of columns.
187
+ */
188
+ export function correctBounds(layout, bounds) {
189
+ const collidesWith = getStatics(layout);
190
+ for (let i = 0, len = layout.length; i < len; i++) {
191
+ const l = layout[i];
192
+ // Overflows right
193
+ if (l.x + l.w > bounds.cols) {
194
+ l.x = bounds.cols - l.w;
195
+ }
196
+ // Overflows left
197
+ if (l.x < 0) {
198
+ l.x = 0;
199
+ l.w = bounds.cols;
200
+ }
201
+ if (l.static) {
202
+ // If this is static and collides with other statics, we must move it down.
203
+ // We have to do something nicer than just letting them overlap.
204
+ while (getFirstCollision(collidesWith, l)) {
205
+ l.y++;
206
+ }
207
+ }
208
+ else {
209
+ collidesWith.push(l);
210
+ }
211
+ }
212
+ return layout;
213
+ }
214
+ /**
215
+ * Get a layout item by ID. Used so we can override later on if necessary.
216
+ *
217
+ * @param {Array} layout Layout array.
218
+ * @param {String} id ID
219
+ * @return {LayoutItem} Item at ID.
220
+ */
221
+ export function getLayoutItem(layout, id) {
222
+ for (let i = 0, len = layout.length; i < len; i++) {
223
+ if (layout[i].id === id) {
224
+ return layout[i];
225
+ }
226
+ }
227
+ return null;
228
+ }
229
+ /**
230
+ * Returns the first item this layout collides with.
231
+ * It doesn't appear to matter which order we approach this from, although
232
+ * perhaps that is the wrong thing to do.
233
+ *
234
+ * @param {Object} layoutItem Layout item.
235
+ * @return {Object|undefined} A colliding layout item, or undefined.
236
+ */
237
+ export function getFirstCollision(layout, layoutItem) {
238
+ for (let i = 0, len = layout.length; i < len; i++) {
239
+ if (collides(layout[i], layoutItem)) {
240
+ return layout[i];
241
+ }
242
+ }
243
+ return null;
244
+ }
245
+ export function getAllCollisions(layout, layoutItem) {
246
+ return layout.filter(l => collides(l, layoutItem));
247
+ }
248
+ /**
249
+ * Get all static elements.
250
+ * @param {Array} layout Array of layout objects.
251
+ * @return {Array} Array of static layout items..
252
+ */
253
+ export function getStatics(layout) {
254
+ return layout.filter(l => l.static);
255
+ }
256
+ /**
257
+ * Move an element. Responsible for doing cascading movements of other elements.
258
+ *
259
+ * @param {Array} layout Full layout to modify.
260
+ * @param {LayoutItem} l element to move.
261
+ * @param {Number} [x] X position in grid units.
262
+ * @param {Number} [y] Y position in grid units.
263
+ */
264
+ export function moveElement(layout, l, x, y, isUserAction, preventCollision, compactType, cols) {
265
+ // If this is static and not explicitly enabled as draggable,
266
+ // no move is possible, so we can short-circuit this immediately.
267
+ if (l.static && l.isDraggable !== true) {
268
+ return layout;
269
+ }
270
+ // Short-circuit if nothing to do.
271
+ if (l.y === y && l.x === x) {
272
+ return layout;
273
+ }
274
+ log(`Moving element ${l.id} to [${String(x)},${String(y)}] from [${l.x},${l.y}]`);
275
+ const oldX = l.x;
276
+ const oldY = l.y;
277
+ // This is quite a bit faster than extending the object
278
+ if (typeof x === 'number') {
279
+ l.x = x;
280
+ }
281
+ if (typeof y === 'number') {
282
+ l.y = y;
283
+ }
284
+ l.moved = true;
285
+ // If this collides with anything, move it.
286
+ // When doing this comparison, we have to sort the items we compare with
287
+ // to ensure, in the case of multiple collisions, that we're getting the
288
+ // nearest collision.
289
+ let sorted = sortLayoutItems(layout, compactType);
290
+ const movingUp = compactType === 'vertical' && typeof y === 'number'
291
+ ? oldY >= y
292
+ : compactType === 'horizontal' && typeof x === 'number'
293
+ ? oldX >= x
294
+ : false;
295
+ if (movingUp) {
296
+ sorted = sorted.reverse();
297
+ }
298
+ const collisions = getAllCollisions(sorted, l);
299
+ // There was a collision; abort
300
+ if (preventCollision && collisions.length) {
301
+ log(`Collision prevented on ${l.id}, reverting.`);
302
+ l.x = oldX;
303
+ l.y = oldY;
304
+ l.moved = false;
305
+ return layout;
306
+ }
307
+ // Move each item that collides away from this element.
308
+ for (let i = 0, len = collisions.length; i < len; i++) {
309
+ const collision = collisions[i];
310
+ log(`Resolving collision between ${l.id} at [${l.x},${l.y}] and ${collision.id} at [${collision.x},${collision.y}]`);
311
+ // Short circuit so we can't infinite loop
312
+ if (collision.moved) {
313
+ continue;
314
+ }
315
+ // Don't move static items - we have to move *this* element away
316
+ layout = collision.static
317
+ ? moveElementAwayFromCollision(layout, collision, l, isUserAction, compactType, cols)
318
+ : moveElementAwayFromCollision(layout, l, collision, isUserAction, compactType, cols);
319
+ }
320
+ return layout;
321
+ }
322
+ /**
323
+ * This is where the magic needs to happen - given a collision, move an element away from the collision.
324
+ * We attempt to move it up if there's room, otherwise it goes below.
325
+ *
326
+ * @param {Array} layout Full layout to modify.
327
+ * @param {LayoutItem} collidesWith Layout item we're colliding with.
328
+ * @param {LayoutItem} itemToMove Layout item we're moving.
329
+ */
330
+ export function moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction, compactType, cols) {
331
+ const compactH = compactType === 'horizontal';
332
+ // Compact vertically if not set to horizontal
333
+ const compactV = compactType !== 'horizontal';
334
+ const preventCollision = collidesWith.static; // we're already colliding (not for static items)
335
+ // If there is enough space above the collision to put this element, move it there.
336
+ // We only do this on the main collision as this can get funky in cascades and cause
337
+ // unwanted swapping behavior.
338
+ if (isUserAction) {
339
+ // Reset isUserAction flag because we're not in the main collision anymore.
340
+ isUserAction = false;
341
+ // Make a mock item so we don't modify the item here, only modify in moveElement.
342
+ const fakeItem = {
343
+ x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x,
344
+ y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y,
345
+ w: itemToMove.w,
346
+ h: itemToMove.h,
347
+ id: '-1',
348
+ };
349
+ // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal
350
+ if (!getFirstCollision(layout, fakeItem)) {
351
+ log(`Doing reverse collision on ${itemToMove.id} up to [${fakeItem.x},${fakeItem.y}].`);
352
+ return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols);
353
+ }
354
+ }
355
+ return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols);
356
+ }
357
+ /**
358
+ * Helper to convert a number to a percentage string.
359
+ *
360
+ * @param {Number} num Any number
361
+ * @return {String} That number as a percentage.
362
+ */
363
+ export function percent(num) {
364
+ return num * 100 + '%';
365
+ }
366
+ export function setTransform({ top, left, width, height }) {
367
+ // Replace unit-less items with px
368
+ const translate = `translate(${left}px,${top}px)`;
369
+ return {
370
+ transform: translate,
371
+ WebkitTransform: translate,
372
+ MozTransform: translate,
373
+ msTransform: translate,
374
+ OTransform: translate,
375
+ width: `${width}px`,
376
+ height: `${height}px`,
377
+ position: 'absolute',
378
+ };
379
+ }
380
+ export function setTopLeft({ top, left, width, height }) {
381
+ return {
382
+ top: `${top}px`,
383
+ left: `${left}px`,
384
+ width: `${width}px`,
385
+ height: `${height}px`,
386
+ position: 'absolute',
387
+ };
388
+ }
389
+ /**
390
+ * Get layout items sorted from top left to right and down.
391
+ *
392
+ * @return {Array} Array of layout objects.
393
+ * @return {Array} Layout, sorted static items first.
394
+ */
395
+ export function sortLayoutItems(layout, compactType) {
396
+ if (compactType === 'horizontal') {
397
+ return sortLayoutItemsByColRow(layout);
398
+ }
399
+ return sortLayoutItemsByRowCol(layout);
400
+ }
401
+ export function sortLayoutItemsByRowCol(layout) {
402
+ return [].concat(layout).sort(function (a, b) {
403
+ if (a.y > b.y || (a.y === b.y && a.x > b.x)) {
404
+ return 1;
405
+ }
406
+ if (a.y === b.y && a.x === b.x) {
407
+ // Without this, we can get different sort results in IE vs. Chrome/FF
408
+ return 0;
409
+ }
410
+ return -1;
411
+ });
412
+ }
413
+ export function sortLayoutItemsByColRow(layout) {
414
+ return [].concat(layout).sort(function (a, b) {
415
+ if (a.x > b.x || (a.x === b.x && a.y > b.y)) {
416
+ return 1;
417
+ }
418
+ return -1;
419
+ });
420
+ }
421
+ /**
422
+ * Validate a layout. Throws errors.
423
+ *
424
+ * @param {Array} layout Array of layout items.
425
+ * @param {String} [contextName] Context name for errors.
426
+ * @throw {Error} Validation error.
427
+ */
428
+ export function validateLayout(layout, contextName = 'Layout') {
429
+ const subProps = ['x', 'y', 'w', 'h'];
430
+ if (!Array.isArray(layout)) {
431
+ throw new TypeError(contextName + ' must be an array!');
432
+ }
433
+ for (let i = 0, len = layout.length; i < len; i++) {
434
+ const item = layout[i];
435
+ for (const subProp of subProps) {
436
+ // @ts-ignore
437
+ if (typeof item[subProp] !== 'number') {
438
+ throw new TypeError('ReactGridLayout: ' +
439
+ contextName +
440
+ '[' +
441
+ i +
442
+ '].' +
443
+ subProp +
444
+ ' must be a number!');
445
+ }
446
+ }
447
+ if (item.id && typeof item.id !== 'string') {
448
+ throw new Error('ReactGridLayout: ' + contextName + '[' + i + '].i must be a string!');
449
+ }
450
+ if (item.static !== undefined && typeof item.static !== 'boolean') {
451
+ throw new Error('ReactGridLayout: ' +
452
+ contextName +
453
+ '[' +
454
+ i +
455
+ '].static must be a boolean!');
456
+ }
457
+ }
458
+ }
459
+ // Flow can't really figure this out, so we just use Object
460
+ export function autoBindHandlers(el, fns) {
461
+ // @ts-ignore
462
+ fns.forEach(key => (el[key] = el[key].bind(el)));
463
+ }
464
+ function log(...args) {
465
+ if (!DEBUG) {
466
+ return;
467
+ }
468
+ // eslint-disable-next-line no-console
469
+ console.log(...args);
470
+ }
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtZ3JpZC1sYXlvdXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvZ3JpZC1sYXlvdXQvdXRpbHMvcmVhY3QtZ3JpZC1sYXlvdXQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0RBQWdEO0FBQ2hELGdEQUFnRDtBQTBGaEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBRXBCOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFjO0lBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLElBQUksT0FBTyxDQUFDO0lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNqRCxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUNqQixHQUFHLEdBQUcsT0FBTyxDQUFDO1NBQ2Y7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBYztJQUN4QyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBVyxDQUFDO0lBQ2xFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakQsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMs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LENBQUMsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29uYXIvbm8tcmVkdW5kYW50LW9wdGlvbmFsICovXG4vKiBlc2xpbnQtZGlzYWJsZSBzb25hcmpzL25vLWR1cGxpY2F0ZS1zdHJpbmcgKi9cblxuLyogZXNsaW50LWRpc2FibGUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eSAqL1xuLyogZXNsaW50LWRpc2FibGUgc29uYXJqcy9wcmVmZXItc2luZ2xlLWJvb2xlYW4tcmV0dXJuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwgKi9cblxuLy8gVGhlc2UgdXRpbHMgZm9yayBmcm9tIDogaHR0cHM6Ly9naXRodWIuY29tL1NUUk1ML3JlYWN0LWdyaWQtbGF5b3V0LlxuLy8gTk9URTogLS0tLS0tLT4gRG8gbm90IG1vZGlmeSB0aGlzIGZpbGUgZm9yIGVhc3kgbWFpbnRlbmFuY2UgISEhIDwtLS0tLS0tXG4vLyBXZSBvbmx5IGFkZCBlc2xpbnQtZGlzYWJsZS90cy1pZ25vcmUgdG8gaWdub3JlIHVubmVjZXNzYXJ5IGNoYW5nZXNcblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRJdGVtIHtcbiAgdzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBpZDogc3RyaW5nO1xuICBtaW5XPzogbnVtYmVyO1xuICBtaW5IPzogbnVtYmVyO1xuICBtYXhXPzogbnVtYmVyO1xuICBtYXhIPzogbnVtYmVyO1xuICBtb3ZlZD86IGJvb2xlYW47XG4gIHN0YXRpYz86IGJvb2xlYW47XG4gIGlzRHJhZ2dhYmxlPzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGlzUmVzaXphYmxlPzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ7XG59XG5leHBvcnQgdHlwZSBMYXlvdXQgPSBMYXlvdXRJdGVtW107XG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcbiAgbGVmdDogbnVtYmVyO1xuICB0b3A6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0RHJhZ2dhYmxlQ2FsbGJhY2tEYXRhIHtcbiAgbm9kZTogSFRNTEVsZW1lbnQ7XG4gIHg/OiBudW1iZXI7XG4gIHk/OiBudW1iZXI7XG4gIGRlbHRhWDogbnVtYmVyO1xuICBkZWx0YVk6IG51bWJlcjtcbiAgbGFzdFg/OiBudW1iZXI7XG4gIGxhc3RZPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpYWxQb3NpdGlvbiB7XG4gIGxlZnQ6IG51bWJlcjtcbiAgdG9wOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIERyb3BwaW5nUG9zaXRpb24ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgZTogRXZlbnQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNpemUge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZERyYWdFdmVudCB7XG4gIGU6IEV2ZW50O1xuICBub2RlOiBIVE1MRWxlbWVudDtcbiAgbmV3UG9zaXRpb246IFBhcnRpYWxQb3NpdGlvbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZFJlc2l6ZUV2ZW50IHtcbiAgZTogRXZlbnQ7XG4gIG5vZGU6IEhUTUxFbGVtZW50O1xuICBzaXplOiBTaXplO1xufVxuZXhwb3J0IHR5cGUgRHJhZ092ZXJFdmVudCA9IE1vdXNlRXZlbnQgJiB7XG4gIG5hdGl2ZUV2ZW50OiB7XG4gICAgbGF5ZXJYOiBudW1iZXI7XG4gICAgbGF5ZXJZOiBudW1iZXI7XG4gICAgdGFyZ2V0OiB7XG4gICAgICBjbGFzc05hbWU6IFN0cmluZztcbiAgICB9O1xuICB9O1xufTtcblxuLy8gdHlwZSBSRWwgPSBSZWFjdEVsZW1lbnQ8YW55Pjtcbi8vIGV4cG9ydCB0eXBlIFJlYWN0Q2hpbGRyZW4gPSBSZWFjdENoaWxkcmVuQXJyYXk8UkVsPjtcblxuLy8gQWxsIGNhbGxiYWNrcyBhcmUgb2YgdGhlIHNpZ25hdHVyZSAobGF5b3V0LCBvbGRJdGVtLCBuZXdJdGVtLCBwbGFjZWhvbGRlciwgZSkuXG5leHBvcnQgdHlwZSBFdmVudENhbGxiYWNrID0gKFxuICBhcmcwOiBMYXlvdXQsXG4gIG9sZEl0ZW06IExheW91dEl0ZW0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBuZXdJdGVtOiBMYXlvdXRJdGVtIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgcGxhY2Vob2xkZXI6IExheW91dEl0ZW0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBhcmc0OiBFdmVudCxcbiAgYXJnNTogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgQ29tcGFjdFR5cGUgPSAoJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJykgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5jb25zdCBERUJVRyA9IGZhbHNlO1xuXG4vKipcbiAqIFJldHVybiB0aGUgYm90dG9tIGNvb3JkaW5hdGUgb2YgdGhlIGxheW91dC5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gbGF5b3V0IExheW91dCBhcnJheS5cbiAqIEByZXR1cm4ge051bWJlcn0gICAgICAgQm90dG9tIGNvb3JkaW5hdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib3R0b20obGF5b3V0OiBMYXlvdXQpOiBudW1iZXIge1xuICBsZXQgbWF4ID0gMDtcbiAgbGV0IGJvdHRvbVk7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBsYXlvdXQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBib3R0b21ZID0gbGF5b3V0W2ldLnkgKyBsYXlvdXRbaV0uaDtcbiAgICBpZiAoYm90dG9tWSA+IG1heCkge1xuICAgICAgbWF4ID0gYm90dG9tWTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1heDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lTGF5b3V0KGxheW91dDogTGF5b3V0KTogTGF5b3V0IHtcbiAgY29uc3QgbmV3TGF5b3V0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbGF5b3V0Lmxlbmd0aCB9KSBhcyBMYXlvdXQ7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBsYXlvdXQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuZXdMYXlvdXRbaV0gPSBjbG9uZUxheW91dEl0ZW0obGF5b3V0W2ldKTtcbiAgfVxuICByZXR1cm4gbmV3TGF5b3V0O1xufVxuXG4vLyBGYXN0IHBhdGggdG8gY2xvbmluZywgc2luY2UgdGhpcyBpcyBtb25vbW9ycGhpY1xuLyoqIE5PVEU6IFRoaXMgY29kZSBoYXMgYmVlbiBtb2RpZmllZCBmcm9tIHRoZSBvcmlnaW5hbCBzb3VyY2UgKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZUxheW91dEl0ZW0obGF5b3V0SXRlbTogTGF5b3V0SXRlbSk6IExheW91dEl0ZW0ge1xuICBjb25zdCBjbG9uZWRMYXlvdXRJdGVtOiBMYXlvdXRJdGVtID0ge1xuICAgIHc6IGxheW91dEl0ZW0udyxcbiAgICBoOiBsYXlvdXRJdGVtLmgsXG4gICAgeDogbGF5b3V0SXRlbS54LFxuICAgIHk6IGxheW91dEl0ZW0ueSxcbiAgICBpZDogbGF5b3V0SXRlbS5pZCxcbiAgICBtb3ZlZDogISFsYXlvdXRJdGVtLm1vdmVkLFxuICAgIHN0YXRpYzogISFsYXlvdXRJdGVtLnN0YXRpYyxcbiAgfTtcblxuICBpZiAobGF5b3V0SXRlbS5taW5XICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbG9uZWRMYXlvdXRJdGVtLm1pblcgPSBsYXlvdXRJdGVtLm1pblc7XG4gIH1cbiAgaWYgKGxheW91dEl0ZW0ubWF4VyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xvbmVkTGF5b3V0SXRlbS5tYXhXID0gbGF5b3V0SXRlbS5tYXhXO1xuICB9XG4gIGlmIChsYXlvdXRJdGVtLm1pbkggIT09IHVuZGVmaW5lZCkge1xuICAgIGNsb25lZExheW91dEl0ZW0ubWluSCA9IGxheW91dEl0ZW0ubWluSDtcbiAgfVxuICBpZiAobGF5b3V0SXRlbS5tYXhIICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbG9uZWRMYXlvdXRJdGVtLm1heEggPSBsYXlvdXRJdGVtLm1heEg7XG4gIH1cbiAgLy8gVGhlc2UgY2FuIGJlIG51bGxcbiAgaWYgKGxheW91dEl0ZW0uaXNEcmFnZ2FibGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNsb25lZExheW91dEl0ZW0uaXNEcmFnZ2FibGUgPSBsYXlvdXRJdGVtLmlzRHJhZ2dhYmxlO1xuICB9XG4gIGlmIChsYXlvdXRJdGVtLmlzUmVzaXphYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbG9uZWRMYXlvdXRJdGVtLmlzUmVzaXphYmxlID0gbGF5b3V0SXRlbS5pc1Jlc2l6YWJsZTtcbiAgfVxuXG4gIHJldHVybiBjbG9uZWRMYXlvdXRJdGVtO1xufVxuXG4vKipcbiAqIEdpdmVuIHR3byBsYXlvdXQgaXRlbXMsIGNoZWNrIGlmIHRoZXkgY29sbGlkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbGxpZGVzKGwxOiBMYXlvdXRJdGVtLCBsMjogTGF5b3V0SXRlbSk6IGJvb2xlYW4ge1xuICBpZiAobDEuaWQgPT09IGwyLmlkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIHNhbWUgZWxlbWVudFxuICBpZiAobDEueCArIGwxLncgPD0gbDIueCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBsMSBpcyBsZWZ0IG9mIGwyXG4gIGlmIChsMS54ID49IGwyLnggKyBsMi53KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIGwxIGlzIHJpZ2h0IG9mIGwyXG4gIGlmIChsMS55ICsgbDEuaCA8PSBsMi55KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIGwxIGlzIGFib3ZlIGwyXG4gIGlmIChsMS55ID49IGwyLnkgKyBsMi5oKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IC8vIGwxIGlzIGJlbG93IGwyXG4gIHJldHVybiB0cnVlOyAvLyBib3hlcyBvdmVybGFwXG59XG5cbi8qKlxuICogR2l2ZW4gYSBsYXlvdXQsIGNvbXBhY3QgaXQuIFRoaXMgaW52b2x2ZXMgZ29pbmcgZG93biBlYWNoIHkgY29vcmRpbmF0ZSBhbmQgcmVtb3ZpbmcgZ2Fwc1xuICogYmV0d2VlbiBpdGVtcy5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gbGF5b3V0IExheW91dC5cbiAqIEBwYXJhbSAge0Jvb2xlYW59IHZlcnRpY2FsQ29tcGFjdCBXaGV0aGVyIG9yIG5vdCB0byBjb21wYWN0IHRoZSBsYXlvdXRcbiAqICAgdmVydGljYWxseS5cbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICBDb21wYWN0ZWQgTGF5b3V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFjdChcbiAgbGF5b3V0OiBMYXlvdXQsXG4gIGNvbXBhY3RUeXBlOiBDb21wYWN0VHlwZSxcbiAgY29sczogbnVtYmVyLFxuKTogTGF5b3V0IHtcbiAgLy8gU3RhdGljcyBnbyBpbiB0aGUgY29tcGFyZVdpdGggYXJyYXkgcmlnaHQgYXdheSBzbyBpdGVtcyBmbG93IGFyb3VuZCB0aGVtLlxuICBjb25zdCBjb21wYXJlV2l0aCA9IGdldFN0YXRpY3MobGF5b3V0KTtcbiAgLy8gV2UgZ28gdGhyb3VnaCB0aGUgaXRlbXMgYnkgcm93IGFuZCBjb2x1bW4uXG4gIGNvbnN0IHNvcnRlZCA9IHNvcnRMYXlvdXRJdGVtcyhsYXlvdXQsIGNvbXBhY3RUeXBlKTtcbiAgLy8gSG9sZGluZyBmb3IgbmV3IGl0ZW1zLlxuICBjb25zdCBvdXQgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBsYXlvdXQubGVuZ3RoIH0pO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBzb3J0ZWQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBsZXQgbCA9IGNsb25lTGF5b3V0SXRlbShzb3J0ZWRbaV0pO1xuXG4gICAgLy8gRG9uJ3QgbW92ZSBzdGF0aWMgZWxlbWVudHNcbiAgICBpZiAoIWwuc3RhdGljKSB7XG4gICAgICBsID0gY29tcGFjdEl0ZW0oY29tcGFyZVdpdGgsIGwsIGNvbXBhY3RUeXBlLCBjb2xzLCBzb3J0ZWQpO1xuXG4gICAgICAvLyBBZGQgdG8gY29tcGFyaXNvbiBhcnJheS4gV2Ugb25seSBjb2xsaWRlIHdpdGggaXRlbXMgYmVmb3JlIHRoaXMgb25lLlxuICAgICAgLy8gU3RhdGljcyBhcmUgYWxyZWFkeSBpbiB0aGlzIGFycmF5LlxuICAgICAgY29tcGFyZVdpdGgucHVzaChsKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdG8gb3V0cHV0IGFycmF5IHRvIG1ha2Ugc3VyZSB0aGV5IHN0aWxsIGNvbWUgb3V0IGluIHRoZSByaWdodCBvcmRlci5cbiAgICBvdXRbbGF5b3V0LmluZGV4T2Yoc29ydGVkW2ldKV0gPSBsO1xuXG4gICAgLy8gQ2xlYXIgbW92ZWQgZmxhZywgaWYgaXQgZXhpc3RzLlxuICAgIGwubW92ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBvdXQgYXMgTGF5b3V0O1xufVxuXG5jb25zdCBoZWlnaHRXaWR0aCA9IHsgeDogJ3cnLCB5OiAnaCcgfTtcblxuLyoqXG4gKiBCZWZvcmUgbW92aW5nIGl0ZW0gZG93biwgaXQgd2lsbCBjaGVjayBpZiB0aGUgbW92ZW1lbnQgd2lsbCBjYXVzZSBjb2xsaXNpb25zIGFuZCBtb3ZlIHRob3NlIGl0ZW1zIGRvd24gYmVmb3JlLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29tcGFjdGlvbkNvbGxpc2lvbihcbiAgbGF5b3V0OiBMYXlvdXQsXG4gIGl0ZW06IExheW91dEl0ZW0sXG4gIG1vdmVUb0Nvb3JkOiBudW1iZXIsXG4gIGF4aXM6ICd4JyB8ICd5Jyxcbikge1xuICBjb25zdCBzaXplUHJvcCA9IGhlaWdodFdpZHRoW2F4aXNdO1xuICBpdGVtW2F4aXNdICs9IDE7XG4gIGNvbnN0IGl0ZW1JbmRleCA9IGxheW91dC5tYXAobGF5b3V0SXRlbSA9PiBsYXlvdXRJdGVtLmlkKS5pbmRleE9mKGl0ZW0uaWQpO1xuXG4gIC8vIEdvIHRocm91Z2ggZWFjaCBpdGVtIHdlIGNvbGxpZGUgd2l0aC5cbiAgZm9yIChsZXQgaSA9IGl0ZW1JbmRleCArIDE7IGkgPCBsYXlvdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvdGhlckl0ZW0gPSBsYXlvdXRbaV07XG4gICAgLy8gSWdub3JlIHN0YXRpYyBpdGVtc1xuICAgIGlmIChvdGhlckl0ZW0uc3RhdGljKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBPcHRpbWl6YXRpb246IHdlIGNhbiBicmVhayBlYXJseSBpZiB3ZSBrbm93IHdlJ3JlIHBhc3QgdGhpcyBlbFxuICAgIC8vIFdlIGNhbiBkbyB0aGlzIGIvYyBpdCdzIGEgc29ydGVkIGxheW91dFxuICAgIGlmIChvdGhlckl0ZW0ueSA+IGl0ZW0ueSArIGl0ZW0uaCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGNvbGxpZGVzKGl0ZW0sIG90aGVySXRlbSkpIHtcbiAgICAgIHJlc29sdmVDb21wYWN0aW9uQ29sbGlzaW9uKFxuICAgICAgICBsYXlvdXQsXG4gICAgICAgIG90aGVySXRlbSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBtb3ZlVG9Db29yZCArIGl0ZW1bc2l6ZVByb3BdLFxuICAgICAgICBheGlzLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpdGVtW2F4aXNdID0gbW92ZVRvQ29vcmQ7XG59XG5cbi8qKlxuICogQ29tcGFjdCBhbiBpdGVtIGluIHRoZSBsYXlvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYWN0SXRlbShcbiAgY29tcGFyZVdpdGg6IExheW91dCxcbiAgbDogTGF5b3V0SXRlbSxcbiAgY29tcGFjdFR5cGU6IENvbXBhY3RUeXBlLFxuICBjb2xzOiBudW1iZXIsXG4gIGZ1bGxMYXlvdXQ6IExheW91dCxcbik6IExheW91dEl0ZW0ge1xuICBjb25zdCBjb21wYWN0ViA9IGNvbXBhY3RUeXBlID09PSAndmVydGljYWwnO1xuICBjb25zdCBjb21wYWN0SCA9IGNvbXBhY3RUeXBlID09PSAnaG9yaXpvbnRhbCc7XG4gIGlmIChjb21wYWN0Vikge1xuICAgIC8vIEJvdHRvbSAneScgcG9zc2libGUgaXMgdGhlIGJvdHRvbSBvZiB0aGUgbGF5b3V0LlxuICAgIC8vIFRoaXMgYWxsb3dzIHlvdSB0byBkbyBuaWNlIHN0dWZmIGxpa2Ugc3BlY2lmeSB7eTogSW5maW5pdHl9XG4gICAgLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgdGhlIGxheW91dCBtdXN0IGJlIHNvcnRlZCBpbiBvcmRlciB0byBnZXQgdGhlIGNvcnJlY3QgYm90dG9tIGB5YC5cbiAgICBsLnkgPSBNYXRoLm1pbihib3R0b20oY29tcGFyZVdpdGgpLCBsLnkpO1xuICAgIC8vIE1vdmUgdGhlIGVsZW1lbnQgdXAgYXMgZmFyIGFzIGl0IGNhbiBnbyB3aXRob3V0IGNvbGxpZGluZy5cbiAgICB3aGlsZSAobC55ID4gMCAmJiAhZ2V0Rmlyc3RDb2xsaXNpb24oY29tcGFyZVdpdGgsIGwpKSB7XG4gICAgICBsLnktLTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY29tcGFjdEgpIHtcbiAgICBsLnkgPSBNYXRoLm1pbihib3R0b20oY29tcGFyZVdpdGgpLCBsLnkpO1xuICAgIC8vIE1vdmUgdGhlIGVsZW1lbnQgbGVmdCBhcyBmYXIgYXMgaXQgY2FuIGdvIHdpdGhvdXQgY29sbGlkaW5nLlxuICAgIHdoaWxlIChsLnggPiAwICYmICFnZXRGaXJzdENvbGxpc2lvbihjb21wYXJlV2l0aCwgbCkpIHtcbiAgICAgIGwueC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1vdmUgaXQgZG93biwgYW5kIGtlZXAgbW92aW5nIGl0IGRvd24gaWYgaXQncyBjb2xsaWRpbmcuXG4gIGxldCBjb2xsaWRlcztcbiAgd2hpbGUgKChjb2xsaWRlcyA9IGdldEZpcnN0Q29sbGlzaW9uKGNvbXBhcmVXaXRoLCBsKSkpIHtcbiAgICBpZiAoY29tcGFjdEgpIHtcbiAgICAgIHJlc29sdmVDb21wYWN0aW9uQ29sbGlzaW9uKGZ1bGxMYXlvdXQsIGwsIGNvbGxpZGVzLnggKyBjb2xsaWRlcy53LCAneCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlQ29tcGFjdGlvbkNvbGxpc2lvbihmdWxsTGF5b3V0LCBsLCBjb2xsaWRlcy55ICsgY29sbGlkZXMuaCwgJ3knKTtcbiAgICB9XG4gICAgLy8gU2luY2Ugd2UgY2FuJ3QgZ3JvdyB3aXRob3V0IGJvdW5kcyBob3Jpem9udGFsbHksIGlmIHdlJ3ZlIG92ZXJmbG93biwgbGV0J3MgbW92ZSBpdCBkb3duIGFuZCB0cnkgYWdhaW4uXG4gICAgaWYgKGNvbXBhY3RIICYmIGwueCArIGwudyA+IGNvbHMpIHtcbiAgICAgIGwueCA9IGNvbHMgLSBsLnc7XG4gICAgICBsLnkrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBsYXlvdXQsIG1ha2Ugc3VyZSBhbGwgZWxlbWVudHMgZml0IHdpdGhpbiBpdHMgYm91bmRzLlxuICpcbiAqIEBwYXJhbSAge0FycmF5fSBsYXlvdXQgTGF5b3V0IGFycmF5LlxuICogQHBhcmFtICB7TnVtYmVyfSBib3VuZHMgTnVtYmVyIG9mIGNvbHVtbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3JyZWN0Qm91bmRzKFxuICBsYXlvdXQ6IExheW91dCxcbiAgYm91bmRzOiB7IGNvbHM6IG51bWJlciB9LFxuKTogTGF5b3V0IHtcbiAgY29uc3QgY29sbGlkZXNXaXRoID0gZ2V0U3RhdGljcyhsYXlvdXQpO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5b3V0Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgbCA9IGxheW91dFtpXTtcbiAgICAvLyBPdmVyZmxvd3MgcmlnaHRcbiAgICBpZiAobC54ICsgbC53ID4gYm91bmRzLmNvbHMpIHtcbiAgICAgIGwueCA9IGJvdW5kcy5jb2xzIC0gbC53O1xuICAgIH1cbiAgICAvLyBPdmVyZmxvd3MgbGVmdFxuICAgIGlmIChsLnggPCAwKSB7XG4gICAgICBsLnggPSAwO1xuICAgICAgbC53ID0gYm91bmRzLmNvbHM7XG4gICAgfVxuICAgIGlmIChsLnN0YXRpYykge1xuICAgICAgLy8gSWYgdGhpcyBpcyBzdGF0aWMgYW5kIGNvbGxpZGVzIHdpdGggb3RoZXIgc3RhdGljcywgd2UgbXVzdCBtb3ZlIGl0IGRvd24uXG4gICAgICAvLyBXZSBoYXZlIHRvIGRvIHNvbWV0aGluZyBuaWNlciB0aGFuIGp1c3QgbGV0dGluZyB0aGVtIG92ZXJsYXAuXG4gICAgICB3aGlsZSAoZ2V0Rmlyc3RDb2xsaXNpb24oY29sbGlkZXNXaXRoLCBsKSkge1xuICAgICAgICBsLnkrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29sbGlkZXNXaXRoLnB1c2gobCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsYXlvdXQ7XG59XG5cbi8qKlxuICogR2V0IGEgbGF5b3V0IGl0ZW0gYnkgSUQuIFVzZWQgc28gd2UgY2FuIG92ZXJyaWRlIGxhdGVyIG9uIGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gIGxheW91dCBMYXlvdXQgYXJyYXkuXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGlkICAgICBJRFxuICogQHJldHVybiB7TGF5b3V0SXRlbX0gICAgSXRlbSBhdCBJRC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheW91dEl0ZW0oXG4gIGxheW91dDogTGF5b3V0LFxuICBpZDogc3RyaW5nLFxuKTogTGF5b3V0SXRlbSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5b3V0Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGxheW91dFtpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHJldHVybiBsYXlvdXRbaV07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGl0ZW0gdGhpcyBsYXlvdXQgY29sbGlkZXMgd2l0aC5cbiAqIEl0IGRvZXNuJ3QgYXBwZWFyIHRvIG1hdHRlciB3aGljaCBvcmRlciB3ZSBhcHByb2FjaCB0aGlzIGZyb20sIGFsdGhvdWdoXG4gKiBwZXJoYXBzIHRoYXQgaXMgdGhlIHdyb25nIHRoaW5nIHRvIGRvLlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gbGF5b3V0SXRlbSBMYXlvdXQgaXRlbS5cbiAqIEByZXR1cm4ge09iamVjdHx1bmRlZmluZWR9ICBBIGNvbGxpZGluZyBsYXlvdXQgaXRlbSwgb3IgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmlyc3RDb2xsaXNpb24oXG4gIGxheW91dDogTGF5b3V0LFxuICBsYXlvdXRJdGVtOiBMYXlvdXRJdGVtLFxuKTogTGF5b3V0SXRlbSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5b3V0Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGNvbGxpZGVzKGxheW91dFtpXSwgbGF5b3V0SXRlbSkpIHtcbiAgICAgIHJldHVybiBsYXlvdXRbaV07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ29sbGlzaW9ucyhcbiAgbGF5b3V0OiBMYXlvdXQsXG4gIGxheW91dEl0ZW06IExheW91dEl0ZW0sXG4pOiBMYXlvdXRJdGVtW10ge1xuICByZXR1cm4gbGF5b3V0LmZpbHRlcihsID0+IGNvbGxpZGVzKGwsIGxheW91dEl0ZW0pKTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHN0YXRpYyBlbGVtZW50cy5cbiAqIEBwYXJhbSAge0FycmF5fSBsYXlvdXQgQXJyYXkgb2YgbGF5b3V0IG9iamVjdHMuXG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgIEFycmF5IG9mIHN0YXRpYyBsYXlvdXQgaXRlbXMuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGljcyhsYXlvdXQ6IExheW91dCk6IExheW91dEl0ZW1bXSB7XG4gIHJldHVybiBsYXlvdXQuZmlsdGVyKGwgPT4gbC5zdGF0aWMpO1xufVxuXG4vKipcbiAqIE1vdmUgYW4gZWxlbWVudC4gUmVzcG9uc2libGUgZm9yIGRvaW5nIGNhc2NhZGluZyBtb3ZlbWVudHMgb2Ygb3RoZXIgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtICB7QXJyYXl9ICAgICAgbGF5b3V0ICAgICAgICAgICAgRnVsbCBsYXlvdXQgdG8gbW9kaWZ5LlxuICogQHBhcmFtICB7TGF5b3V0SXRlbX0gbCAgICAgICAgICAgICAgICAgZWxlbWVudCB0byBtb3ZlLlxuICogQHBhcmFtICB7TnVtYmVyfSAgICAgW3hdICAgICAgICAgICAgICAgWCBwb3NpdGlvbiBpbiBncmlkIHVuaXRzLlxuICogQHBhcmFtICB7TnVtYmVyfSAgICAgW3ldICAgICAgICAgICAgICAgWSBwb3NpdGlvbiBpbiBncmlkIHVuaXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW92ZUVsZW1lbnQoXG4gIGxheW91dDogTGF5b3V0LFxuICBsOiBMYXlvdXRJdGVtLFxuICB4OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICB5OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBpc1VzZXJBY3Rpb246IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBwcmV2ZW50Q29sbGlzaW9uOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY29tcGFjdFR5cGU6IENvbXBhY3RUeXBlLFxuICBjb2xzOiBudW1iZXIsXG4pOiBMYXlvdXQge1xuICAvLyBJZiB0aGlzIGlzIHN0YXRpYyBhbmQgbm90IGV4cGxpY2l0bHkgZW5hYmxlZCBhcyBkcmFnZ2FibGUsXG4gIC8vIG5vIG1vdmUgaXMgcG9zc2libGUsIHNvIHdlIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMgaW1tZWRpYXRlbHkuXG4gIGlmIChsLnN0YXRpYyAmJiBsLmlzRHJhZ2dhYmxlICE9PSB0cnVlKSB7XG4gICAgcmV0dXJuIGxheW91dDtcbiAgfVxuXG4gIC8vIFNob3J0LWNpcmN1aXQgaWYgbm90aGluZyB0byBkby5cbiAgaWYgKGwueSA9PT0geSAmJiBsLnggPT09IHgpIHtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9XG5cbiAgbG9nKFxuICAgIGBNb3ZpbmcgZWxlbWVudCAke2wuaWR9IHRvIFske1N0cmluZyh4KX0sJHtTdHJpbmcoeSl9XSBmcm9tIFske2wueH0sJHtcbiAgICAgIGwueVxuICAgIH1dYCxcbiAgKTtcbiAgY29uc3Qgb2xkWCA9IGwueDtcbiAgY29uc3Qgb2xkWSA9IGwueTtcblxuICAvLyBUaGlzIGlzIHF1aXRlIGEgYml0IGZhc3RlciB0aGFuIGV4dGVuZGluZyB0aGUgb2JqZWN0XG4gIGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicpIHtcbiAgICBsLnggPSB4O1xuICB9XG4gIGlmICh0eXBlb2YgeSA9PT0gJ251bWJlcicpIHtcbiAgICBsLnkgPSB5O1xuICB9XG4gIGwubW92ZWQgPSB0cnVlO1xuXG4gIC8vIElmIHRoaXMgY29sbGlkZXMgd2l0aCBhbnl0aGluZywgbW92ZSBpdC5cbiAgLy8gV2hlbiBkb2luZyB0aGlzIGNvbXBhcmlzb24sIHdlIGhhdmUgdG8gc29ydCB0aGUgaXRlbXMgd2UgY29tcGFyZSB3aXRoXG4gIC8vIHRvIGVuc3VyZSwgaW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUgY29sbGlzaW9ucywgdGhhdCB3ZSdyZSBnZXR0aW5nIHRoZVxuICAvLyBuZWFyZXN0IGNvbGxpc2lvbi5cbiAgbGV0IHNvcnRlZCA9IHNvcnRMYXlvdXRJdGVtcyhsYXlvdXQsIGNvbXBhY3RUeXBlKTtcbiAgY29uc3QgbW92aW5nVXAgPVxuICAgIGNvbXBhY3RUeXBlID09PSAndmVydGljYWwnICYmIHR5cGVvZiB5ID09PSAnbnVtYmVyJ1xuICAgICAgPyBvbGRZID49IHlcbiAgICAgIDogY29tcGFjdFR5cGUgPT09ICdob3Jpem9udGFsJyAmJiB0eXBlb2YgeCA9PT0gJ251bWJlcidcbiAgICAgID8gb2xkWCA+PSB4XG4gICAgICA6IGZhbHNlO1xuICBpZiAobW92aW5nVXApIHtcbiAgICBzb3J0ZWQgPSBzb3J0ZWQucmV2ZXJzZSgpO1xuICB9XG4gIGNvbnN0IGNvbGxpc2lvbnMgPSBnZXRBbGxDb2xsaXNpb25zKHNvcnRlZCwgbCk7XG5cbiAgLy8gVGhlcmUgd2FzIGEgY29sbGlzaW9uOyBhYm9ydFxuICBpZiAocHJldmVudENvbGxpc2lvbiAmJiBjb2xsaXNpb25zLmxlbmd0aCkge1xuICAgIGxvZyhgQ29sbGlzaW9uIHByZXZlbnRlZCBvbiAke2wuaWR9LCByZXZlcnRpbmcuYCk7XG4gICAgbC54ID0gb2xkWDtcbiAgICBsLnkgPSBvbGRZO1xuICAgIGwubW92ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gbGF5b3V0O1xuICB9XG5cbiAgLy8gTW92ZSBlYWNoIGl0ZW0gdGhhdCBjb2xsaWRlcyBhd2F5IGZyb20gdGhpcyBlbGVtZW50LlxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gY29sbGlzaW9ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGNvbGxpc2lvbiA9IGNvbGxpc2lvbnNbaV07XG4gICAgbG9nKFxuICAgICAgYFJlc29sdmluZyBjb2xsaXNpb24gYmV0d2VlbiAke2wuaWR9IGF0IFske2wueH0sJHtsLnl9XSBhbmQgJHtjb2xsaXNpb24uaWR9IGF0IFske2NvbGxpc2lvbi54fSwke2NvbGxpc2lvbi55fV1gLFxuICAgICk7XG5cbiAgICAvLyBTaG9ydCBjaXJjdWl0IHNvIHdlIGNhbid0IGluZmluaXRlIGxvb3BcbiAgICBpZiAoY29sbGlzaW9uLm1vdmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBEb24ndCBtb3ZlIHN0YXRpYyBpdGVtcyAtIHdlIGhhdmUgdG8gbW92ZSAqdGhpcyogZWxlbWVudCBhd2F5XG4gICAgbGF5b3V0ID0gY29sbGlzaW9uLnN0YXRpY1xuICAgICAgPyBtb3ZlRWxlbWVudEF3YXlGcm9tQ29sbGlzaW9uKFxuICAgICAgICAgIGxheW91dCxcbiAgICAgICAgICBjb2xsaXNpb24sXG4gICAgICAgICAgbCxcbiAgICAgICAgICBpc1VzZXJBY3Rpb24sXG4gICAgICAgICAgY29tcGFjdFR5cGUsXG4gICAgICAgICAgY29scyxcbiAgICAgICAgKVxuICAgICAgOiBtb3ZlRWxlbWVudEF3YXlGcm9tQ29sbGlzaW9uKFxuICAgICAgICAgIGxheW91dCxcbiAgICAgICAgICBsLFxuICAgICAgICAgIGNvbGxpc2lvbixcbiAgICAgICAgICBpc1VzZXJBY3Rpb24sXG4gICAgICAgICAgY29tcGFjdFR5cGUsXG4gICAgICAgICAgY29scyxcbiAgICAgICAgKTtcbiAgfVxuXG4gIHJldHVybiBsYXlvdXQ7XG59XG5cbi8qKlxuICogVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgbmVlZHMgdG8gaGFwcGVuIC0gZ2l2ZW4gYSBjb2xsaXNpb24sIG1vdmUgYW4gZWxlbWVudCBhd2F5IGZyb20gdGhlIGNvbGxpc2lvbi5cbiAqIFdlIGF0dGVtcHQgdG8gbW92ZSBpdCB1cCBpZiB0aGVyZSdzIHJvb20sIG90aGVyd2lzZSBpdCBnb2VzIGJlbG93LlxuICpcbiAqIEBwYXJhbSAge0FycmF5fSBsYXlvdXQgICAgICAgICAgICBGdWxsIGxheW91dCB0byBtb2RpZnkuXG4gKiBAcGFyYW0gIHtMYXlvdXRJdGVtfSBjb2xsaWRlc1dpdGggTGF5b3V0IGl0ZW0gd2UncmUgY29sbGlkaW5nIHdpdGguXG4gKiBAcGFyYW0gIHtMYXlvdXRJdGVtfSBpdGVtVG9Nb3ZlICAgTGF5b3V0IGl0ZW0gd2UncmUgbW92aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW92ZUVsZW1lbnRBd2F5RnJvbUNvbGxpc2lvbihcbiAgbGF5b3V0OiBMYXlvdXQsXG4gIGNvbGxpZGVzV2l0aDogTGF5b3V0SXRlbSxcbiAgaXRlbVRvTW92ZTogTGF5b3V0SXRlbSxcbiAgaXNVc2VyQWN0aW9uOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY29tcGFjdFR5cGU6IENvbXBhY3RUeXBlLFxuICBjb2xzOiBudW1iZXIsXG4pOiBMYXlvdXQge1xuICBjb25zdCBjb21wYWN0SCA9IGNvbXBhY3RUeXBlID09PSAnaG9yaXpvbnRhbCc7XG4gIC8vIENvbXBhY3QgdmVydGljYWxseSBpZiBub3Qgc2V0IHRvIGhvcml6b250YWxcbiAgY29uc3QgY29tcGFjdFYgPSBjb21wYWN0VHlwZSAhPT0gJ2hvcml6b250YWwnO1xuICBjb25zdCBwcmV2ZW50Q29sbGlzaW9uID0gY29sbGlkZXNXaXRoLnN0YXRpYzsgLy8gd2UncmUgYWxyZWFkeSBjb2xsaWRpbmcgKG5vdCBmb3Igc3RhdGljIGl0ZW1zKVxuXG4gIC8vIElmIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBhYm92ZSB0aGUgY29sbGlzaW9uIHRvIHB1dCB0aGlzIGVsZW1lbnQsIG1vdmUgaXQgdGhlcmUuXG4gIC8vIFdlIG9ubHkgZG8gdGhpcyBvbiB0aGUgbWFpbiBjb2xsaXNpb24gYXMgdGhpcyBjYW4gZ2V0IGZ1bmt5IGluIGNhc2NhZGVzIGFuZCBjYXVzZVxuICAvLyB1bndhbnRlZCBzd2FwcGluZyBiZWhhdmlvci5cbiAgaWYgKGlzVXNlckFjdGlvbikge1xuICAgIC8vIFJlc2V0IGlzVXNlckFjdGlvbiBmbGFnIGJlY2F1c2Ugd2UncmUgbm90IGluIHRoZSBtYWluIGNvbGxpc2lvbiBhbnltb3JlLlxuICAgIGlzVXNlckFjdGlvbiA9IGZhbHNlO1xuXG4gICAgLy8gTWFrZSBhIG1vY2sgaXRlbSBzbyB3ZSBkb24ndCBtb2RpZnkgdGhlIGl0ZW0gaGVyZSwgb25seSBtb2RpZnkgaW4gbW92ZUVsZW1lbnQuXG4gICAgY29uc3QgZmFrZUl0ZW06IExheW91dEl0ZW0gPSB7XG4gICAgICB4OiBjb21wYWN0SCA/IE1hdGgubWF4KGNvbGxpZGVzV2l0aC54IC0gaXRlbVRvTW92ZS53LCAwKSA6IGl0ZW1Ub01vdmUueCxcbiAgICAgIHk6IGNvbXBhY3RWID8gTWF0aC5tYXgoY29sbGlkZXNXaXRoLnkgLSBpdGVtVG9Nb3ZlLmgsIDApIDogaXRlbVRvTW92ZS55LFxuICAgICAgdzogaXRlbVRvTW92ZS53LFxuICAgICAgaDogaXRlbVRvTW92ZS5oLFxuICAgICAgaWQ6ICctMScsXG4gICAgfTtcblxuICAgIC8vIE5vIGNvbGxpc2lvbj8gSWYgc28sIHdlIGNhbiBnbyB1cCB0aGVyZTsgb3RoZXJ3aXNlLCB3ZSdsbCBlbmQgdXAgbW92aW5nIGRvd24gYXMgbm9ybWFsXG4gICAgaWYgKCFnZXRGaXJzdENvbGxpc2lvbihsYXlvdXQsIGZha2VJdGVtKSkge1xuICAgICAgbG9nKFxuICAgICAgICBgRG9pbmcgcmV2ZXJzZSBjb2xsaXNpb24gb24gJHtpdGVtVG9Nb3ZlLmlkfSB1cCB0byBbJHtmYWtlSXRlbS54fSwke2Zha2VJdGVtLnl9XS5gLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBtb3ZlRWxlbWVudChcbiAgICAgICAgbGF5b3V0LFxuICAgICAgICBpdGVtVG9Nb3ZlLFxuICAgICAgICBjb21wYWN0SCA/IGZha2VJdGVtLnggOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbXBhY3RWID8gZmFrZUl0ZW0ueSA6IHVuZGVmaW5lZCxcbiAgICAgICAgaXNVc2VyQWN0aW9uLFxuICAgICAgICBwcmV2ZW50Q29sbGlzaW9uLFxuICAgICAgICBjb21wYWN0VHlwZSxcbiAgICAgICAgY29scyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVFbGVtZW50KFxuICAgIGxheW91dCxcbiAgICBpdGVtVG9Nb3ZlLFxuICAgIGNvbXBhY3RIID8gaXRlbVRvTW92ZS54ICsgMSA6IHVuZGVmaW5lZCxcbiAgICBjb21wYWN0ViA/IGl0ZW1Ub01vdmUueSArIDEgOiB1bmRlZmluZWQsXG4gICAgaXNVc2VyQWN0aW9uLFxuICAgIHByZXZlbnRDb2xsaXNpb24sXG4gICAgY29tcGFjdFR5cGUsXG4gICAgY29scyxcbiAgKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdG8gY29udmVydCBhIG51bWJlciB0byBhIHBlcmNlbnRhZ2Ugc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAge051bWJlcn0gbnVtIEFueSBudW1iZXJcbiAqIEByZXR1cm4ge1N0cmluZ30gICAgIFRoYXQgbnVtYmVyIGFzIGEgcGVyY2VudGFnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcmNlbnQobnVtOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gbnVtICogMTAwICsgJyUnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNmb3JtKHsgdG9wLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0IH06IFBvc2l0aW9uKTogT2JqZWN0IHtcbiAgLy8gUmVwbGFjZSB1bml0LWxlc3MgaXRlbXMgd2l0aCBweFxuICBjb25zdCB0cmFuc2xhdGUgPSBgdHJhbnNsYXRlKCR7bGVmdH1weCwke3RvcH1weClgO1xuICByZXR1cm4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlLFxuICAgIFdlYmtpdFRyYW5zZm9ybTogdHJhbnNsYXRlLFxuICAgIE1velRyYW5zZm9ybTogdHJhbnNsYXRlLFxuICAgIG1zVHJhbnNmb3JtOiB0cmFuc2xhdGUsXG4gICAgT1RyYW5zZm9ybTogdHJhbnNsYXRlLFxuICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9wTGVmdCh7IHRvcCwgbGVmdCwgd2lkdGgsIGhlaWdodCB9OiBQb3NpdGlvbik6IE9iamVjdCB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBgJHt0b3B9cHhgLFxuICAgIGxlZnQ6IGAke2xlZnR9cHhgLFxuICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB9O1xufVxuXG4vKipcbiAqIEdldCBsYXlvdXQgaXRlbXMgc29ydGVkIGZyb20gdG9wIGxlZnQgdG8gcmlnaHQgYW5kIGRvd24uXG4gKlxuICogQHJldHVybiB7QXJyYXl9IEFycmF5IG9mIGxheW91dCBvYmplY3RzLlxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICBMYXlvdXQsIHNvcnRlZCBzdGF0aWMgaXRlbXMgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0TGF5b3V0SXRlbXMoXG4gIGxheW91dDogTGF5b3V0LFxuICBjb21wYWN0VHlwZTogQ29tcGFjdFR5cGUsXG4pOiBMYXlvdXQge1xuICBpZiAoY29tcGFjdFR5cGUgPT09ICdob3Jpem9udGFsJykge1xuICAgIHJldHVybiBzb3J0TGF5b3V0SXRlbXNCeUNvbFJvdyhsYXlvdXQpO1xuICB9XG4gIHJldHVybiBzb3J0TGF5b3V0SXRlbXNCeVJvd0NvbChsYXlvdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydExheW91dEl0ZW1zQnlSb3dDb2wobGF5b3V0OiBMYXlvdXQpOiBMYXlvdXQge1xuICByZXR1cm4gKFtdIGFzIGFueVtdKS5jb25jYXQobGF5b3V0KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgaWYgKGEueSA+IGIueSB8fCAoYS55ID09PSBiLnkgJiYgYS54ID4gYi54KSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmIChhLnkgPT09IGIueSAmJiBhLnggPT09IGIueCkge1xuICAgICAgLy8gV2l0aG91dCB0aGlzLCB3ZSBjYW4gZ2V0IGRpZmZlcmVudCBzb3J0IHJlc3VsdHMgaW4gSUUgdnMuIENocm9tZS9GRlxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0TGF5b3V0SXRlbXNCeUNvbFJvdyhsYXlvdXQ6IExheW91dCk6IExheW91dCB7XG4gIHJldHVybiAoW10gYXMgYW55W10pLmNvbmNhdChsYXlvdXQpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICBpZiAoYS54ID4gYi54IHx8IChhLnggPT09IGIueCAmJiBhLnkgPiBiLnkpKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhIGxheW91dC4gVGhyb3dzIGVycm9ycy5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gIGxheW91dCAgICAgICAgQXJyYXkgb2YgbGF5b3V0IGl0ZW1zLlxuICogQHBhcmFtICB7U3RyaW5nfSBbY29udGV4dE5hbWVdIENvbnRleHQgbmFtZSBmb3IgZXJyb3JzLlxuICogQHRocm93ICB7RXJyb3J9ICAgICAgICAgICAgICAgIFZhbGlkYXRpb24gZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxheW91dChsYXlvdXQ6IExheW91dCwgY29udGV4dE5hbWUgPSAnTGF5b3V0Jyk6IHZvaWQge1xuICBjb25zdCBzdWJQcm9wcyA9IFsneCcsICd5JywgJ3cnLCAnaCddO1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGF5b3V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoY29udGV4dE5hbWUgKyAnIG11c3QgYmUgYW4gYXJyYXkhJyk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGxheW91dC5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGl0ZW0gPSBsYXlvdXRbaV07XG4gICAgZm9yIChjb25zdCBzdWJQcm9wIG9mIHN1YlByb3BzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodHlwZW9mIGl0ZW1bc3ViUHJvcF0gIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ1JlYWN0R3JpZExheW91dDogJyArXG4gICAgICAgICAgICBjb250ZXh0TmFtZSArXG4gICAgICAgICAgICAnWycgK1xuICAgICAgICAgICAgaSArXG4gICAgICAgICAgICAnXS4nICtcbiAgICAgICAgICAgIHN1YlByb3AgK1xuICAgICAgICAgICAgJyBtdXN0IGJlIGEgbnVtYmVyIScsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdGVtLmlkICYmIHR5cGVvZiBpdGVtLmlkICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUmVhY3RHcmlkTGF5b3V0OiAnICsgY29udGV4dE5hbWUgKyAnWycgKyBpICsgJ10uaSBtdXN0IGJlIGEgc3RyaW5nIScsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXRlbS5zdGF0aWMgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgaXRlbS5zdGF0aWMgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUmVhY3RHcmlkTGF5b3V0OiAnICtcbiAgICAgICAgICBjb250ZXh0TmFtZSArXG4gICAgICAgICAgJ1snICtcbiAgICAgICAgICBpICtcbiAgICAgICAgICAnXS5zdGF0aWMgbXVzdCBiZSBhIGJvb2xlYW4hJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8vIEZsb3cgY2FuJ3QgcmVhbGx5IGZpZ3VyZSB0aGlzIG91dCwgc28gd2UganVzdCB1c2UgT2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gYXV0b0JpbmRIYW5kbGVycyhlbDogT2JqZWN0LCBmbnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgZm5zLmZvckVhY2goa2V5ID0+IChlbFtrZXldID0gZWxba2V5XS5iaW5kKGVsKSkpO1xufVxuXG5mdW5jdGlvbiBsb2coLi4uYXJnczogdW5rbm93bltdKSB7XG4gIGlmICghREVCVUcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coLi4uYXJncyk7XG59XG4iXX0=