@dotglitch/ngx-common 3.0.0-beta.1 → 3.0.0-beta.2
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.
- package/command-palette/breadcrumb/breadcrumb.component.d.ts +16 -0
- package/command-palette/command-palette.component.d.ts +38 -0
- package/command-palette/command-palette.service.d.ts +128 -0
- package/command-palette/index.d.ts +2 -0
- package/command-palette/shortcut/shortcut.component.d.ts +9 -0
- package/{components → core/components}/menu/menu.component.d.ts +2 -2
- package/{directives → core/components/menu}/menu.directive.d.ts +1 -1
- package/{types/menu.d.ts → core/components/menu/types.d.ts} +1 -1
- package/{components → core/components}/types.d.ts +0 -1
- package/{public-api.d.ts → core/index.d.ts} +8 -4
- package/{services → core/services}/navigation.service.d.ts +1 -1
- package/core/utils/index.d.ts +18 -0
- package/esm2022/command-palette/breadcrumb/breadcrumb.component.mjs +30 -0
- package/esm2022/command-palette/command-palette.component.mjs +257 -0
- package/esm2022/command-palette/command-palette.service.mjs +207 -0
- package/esm2022/command-palette/dotglitch-ngx-common-command-palette.mjs +5 -0
- package/esm2022/command-palette/index.mjs +3 -0
- package/esm2022/command-palette/shortcut/shortcut.component.mjs +19 -0
- package/esm2022/core/components/lazy-loader/lazy-loader.component.mjs +383 -0
- package/esm2022/core/components/lazy-loader/lazy-loader.module.mjs +33 -0
- package/esm2022/core/components/lazy-loader/lazy-loader.service.mjs +216 -0
- package/esm2022/core/components/lazy-loader/types.mjs +26 -0
- package/esm2022/core/components/menu/menu.component.mjs +433 -0
- package/esm2022/core/components/menu/menu.directive.mjs +159 -0
- package/esm2022/core/components/menu/types.mjs +2 -0
- package/esm2022/core/components/parallax-card/parallax-card.component.mjs +138 -0
- package/esm2022/core/components/types.mjs +3 -0
- package/esm2022/core/directives/image-cache.directive.mjs +143 -0
- package/esm2022/core/directives/utils.mjs +120 -0
- package/esm2022/core/dotglitch-ngx-common-core.mjs +5 -0
- package/esm2022/core/index.mjs +50 -0
- package/esm2022/core/pipes/html-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/resource-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/script-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/style-bypass.pipe.mjs +27 -0
- package/esm2022/core/pipes/url-bypass.pipe.mjs +27 -0
- package/esm2022/core/services/dependency.service.mjs +55 -0
- package/esm2022/core/services/dialog.service.mjs +67 -0
- package/esm2022/core/services/fetch.service.mjs +74 -0
- package/esm2022/core/services/file.service.mjs +42 -0
- package/esm2022/core/services/keyboard.service.mjs +128 -0
- package/esm2022/core/services/navigation.service.mjs +50 -0
- package/esm2022/core/services/theme.service.mjs +64 -0
- package/esm2022/core/types/popup.mjs +2 -0
- package/esm2022/core/utils/index.mjs +69 -0
- package/esm2022/dotglitch-ngx-common.mjs +2 -2
- package/esm2022/filemanager/dotglitch-ngx-common-filemanager.mjs +5 -0
- package/esm2022/filemanager/file-grid/file-grid.component.mjs +676 -0
- package/esm2022/filemanager/filemanager.component.mjs +313 -0
- package/esm2022/filemanager/folder-rename/folder-rename.component.mjs +57 -0
- package/esm2022/filemanager/helpers.mjs +26 -0
- package/esm2022/filemanager/icon-resolver.mjs +155 -0
- package/esm2022/filemanager/index.mjs +2 -0
- package/esm2022/filemanager/mat-icons.mjs +5705 -0
- package/esm2022/filemanager/textextensions.mjs +294 -0
- package/esm2022/filemanager/toolbar/breadcrumb/breadcrumb.component.mjs +22 -0
- package/esm2022/filemanager/toolbar/icon-button/icon-button.component.mjs +32 -0
- package/esm2022/filemanager/toolbar/toolbar.component.mjs +165 -0
- package/esm2022/filemanager/tree-view/tree-view.component.mjs +51 -0
- package/esm2022/filemanager/types.mjs +2 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/monaco-editor/dotglitch-ngx-common-monaco-editor.mjs +5 -0
- package/esm2022/monaco-editor/index.mjs +2 -0
- package/esm2022/monaco-editor/monaco-editor.component.mjs +234 -0
- package/esm2022/monaco-editor/ts-type-resolver/dependency-parser.mjs +91 -0
- package/esm2022/monaco-editor/ts-type-resolver/dummy-source-cache.mjs +15 -0
- package/esm2022/monaco-editor/ts-type-resolver/import-resolver.mjs +311 -0
- package/esm2022/monaco-editor/ts-type-resolver/main.mjs +112 -0
- package/esm2022/monaco-editor/ts-type-resolver/recursion-depth.mjs +21 -0
- package/esm2022/monaco-editor/ts-type-resolver/types.mjs +14 -0
- package/esm2022/monaco-editor/ts-type-resolver/unpkg-source-resolver.mjs +21 -0
- package/esm2022/monaco-editor/ts-type-resolver/update-emitter.mjs +37 -0
- package/esm2022/overlay-wrapper/dotglitch-ngx-common-overlay-wrapper.mjs +5 -0
- package/esm2022/overlay-wrapper/index.mjs +2 -0
- package/esm2022/overlay-wrapper/overlay-wrapper.component.mjs +247 -0
- package/esm2022/tooltip/dotglitch-ngx-common-tooltip.mjs +5 -0
- package/esm2022/tooltip/index.mjs +4 -0
- package/esm2022/tooltip/tooltip.component.mjs +204 -0
- package/esm2022/tooltip/tooltip.directive.mjs +153 -0
- package/esm2022/tooltip/types.mjs +2 -0
- package/fesm2022/dotglitch-ngx-common-command-palette.mjs +508 -0
- package/fesm2022/dotglitch-ngx-common-command-palette.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-core.mjs +2280 -0
- package/fesm2022/dotglitch-ngx-common-core.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs +60 -0
- package/fesm2022/dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-filemanager.mjs +7403 -0
- package/fesm2022/dotglitch-ngx-common-filemanager.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-monaco-editor.mjs +850 -0
- package/fesm2022/dotglitch-ngx-common-monaco-editor.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-overlay-wrapper.mjs +254 -0
- package/fesm2022/dotglitch-ngx-common-overlay-wrapper.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common-tooltip.mjs +357 -0
- package/fesm2022/dotglitch-ngx-common-tooltip.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common.mjs +3 -2757
- package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
- package/filemanager/file-grid/file-grid.component.d.ts +94 -0
- package/filemanager/filemanager.component.d.ts +206 -0
- package/filemanager/folder-rename/folder-rename.component.d.ts +18 -0
- package/filemanager/helpers.d.ts +5 -0
- package/filemanager/icon-resolver.d.ts +13 -0
- package/filemanager/index.d.ts +1 -0
- package/filemanager/mat-icons.d.ts +5705 -0
- package/filemanager/textextensions.d.ts +3 -0
- package/filemanager/toolbar/breadcrumb/breadcrumb.component.d.ts +16 -0
- package/filemanager/toolbar/icon-button/icon-button.component.d.ts +11 -0
- package/filemanager/toolbar/toolbar.component.d.ts +31 -0
- package/filemanager/tree-view/tree-view.component.d.ts +21 -0
- package/filemanager/types.d.ts +1 -0
- package/index.d.ts +1 -5
- package/monaco-editor/README.md +3 -0
- package/monaco-editor/index.d.ts +1 -0
- package/monaco-editor/monaco-editor.component.d.ts +53 -0
- package/monaco-editor/ts-type-resolver/dependency-parser.d.ts +6 -0
- package/monaco-editor/ts-type-resolver/dummy-source-cache.d.ts +7 -0
- package/monaco-editor/ts-type-resolver/import-resolver.d.ts +28 -0
- package/monaco-editor/ts-type-resolver/main.d.ts +22 -0
- package/monaco-editor/ts-type-resolver/recursion-depth.d.ts +11 -0
- package/monaco-editor/ts-type-resolver/types.d.ts +179 -0
- package/monaco-editor/ts-type-resolver/unpkg-source-resolver.d.ts +5 -0
- package/monaco-editor/ts-type-resolver/update-emitter.d.ts +2 -0
- package/overlay-wrapper/index.d.ts +1 -0
- package/overlay-wrapper/overlay-wrapper.component.d.ts +11 -0
- package/package.json +104 -64
- package/tooltip/index.d.ts +3 -0
- package/{components/tooltip → tooltip}/tooltip.component.d.ts +3 -3
- package/{directives → tooltip}/tooltip.directive.d.ts +2 -2
- package/{types/tooltip.d.ts → tooltip/types.d.ts} +1 -1
- package/assets/lib/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.de.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.es.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.fr.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.it.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.ja.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.ko.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.ru.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.zh-cn.js +0 -8
- package/assets/lib/vs/base/common/worker/simpleWorker.nls.zh-tw.js +0 -8
- package/assets/lib/vs/base/worker/workerMain.js +0 -24
- package/assets/lib/vs/basic-languages/abap/abap.js +0 -10
- package/assets/lib/vs/basic-languages/apex/apex.js +0 -10
- package/assets/lib/vs/basic-languages/azcli/azcli.js +0 -10
- package/assets/lib/vs/basic-languages/bat/bat.js +0 -10
- package/assets/lib/vs/basic-languages/bicep/bicep.js +0 -11
- package/assets/lib/vs/basic-languages/cameligo/cameligo.js +0 -10
- package/assets/lib/vs/basic-languages/clojure/clojure.js +0 -10
- package/assets/lib/vs/basic-languages/coffee/coffee.js +0 -10
- package/assets/lib/vs/basic-languages/cpp/cpp.js +0 -10
- package/assets/lib/vs/basic-languages/csharp/csharp.js +0 -10
- package/assets/lib/vs/basic-languages/csp/csp.js +0 -10
- package/assets/lib/vs/basic-languages/css/css.js +0 -12
- package/assets/lib/vs/basic-languages/cypher/cypher.js +0 -10
- package/assets/lib/vs/basic-languages/dart/dart.js +0 -10
- package/assets/lib/vs/basic-languages/dockerfile/dockerfile.js +0 -10
- package/assets/lib/vs/basic-languages/ecl/ecl.js +0 -10
- package/assets/lib/vs/basic-languages/elixir/elixir.js +0 -10
- package/assets/lib/vs/basic-languages/flow9/flow9.js +0 -10
- package/assets/lib/vs/basic-languages/freemarker2/freemarker2.js +0 -12
- package/assets/lib/vs/basic-languages/fsharp/fsharp.js +0 -10
- package/assets/lib/vs/basic-languages/go/go.js +0 -10
- package/assets/lib/vs/basic-languages/graphql/graphql.js +0 -10
- package/assets/lib/vs/basic-languages/handlebars/handlebars.js +0 -10
- package/assets/lib/vs/basic-languages/hcl/hcl.js +0 -10
- package/assets/lib/vs/basic-languages/html/html.js +0 -10
- package/assets/lib/vs/basic-languages/ini/ini.js +0 -10
- package/assets/lib/vs/basic-languages/java/java.js +0 -10
- package/assets/lib/vs/basic-languages/javascript/javascript.js +0 -10
- package/assets/lib/vs/basic-languages/julia/julia.js +0 -10
- package/assets/lib/vs/basic-languages/kotlin/kotlin.js +0 -10
- package/assets/lib/vs/basic-languages/less/less.js +0 -11
- package/assets/lib/vs/basic-languages/lexon/lexon.js +0 -10
- package/assets/lib/vs/basic-languages/liquid/liquid.js +0 -10
- package/assets/lib/vs/basic-languages/lua/lua.js +0 -10
- package/assets/lib/vs/basic-languages/m3/m3.js +0 -10
- package/assets/lib/vs/basic-languages/markdown/markdown.js +0 -10
- package/assets/lib/vs/basic-languages/mips/mips.js +0 -10
- package/assets/lib/vs/basic-languages/msdax/msdax.js +0 -10
- package/assets/lib/vs/basic-languages/mysql/mysql.js +0 -10
- package/assets/lib/vs/basic-languages/objective-c/objective-c.js +0 -10
- package/assets/lib/vs/basic-languages/pascal/pascal.js +0 -10
- package/assets/lib/vs/basic-languages/pascaligo/pascaligo.js +0 -10
- package/assets/lib/vs/basic-languages/perl/perl.js +0 -10
- package/assets/lib/vs/basic-languages/pgsql/pgsql.js +0 -10
- package/assets/lib/vs/basic-languages/php/php.js +0 -10
- package/assets/lib/vs/basic-languages/pla/pla.js +0 -10
- package/assets/lib/vs/basic-languages/postiats/postiats.js +0 -10
- package/assets/lib/vs/basic-languages/powerquery/powerquery.js +0 -10
- package/assets/lib/vs/basic-languages/powershell/powershell.js +0 -10
- package/assets/lib/vs/basic-languages/protobuf/protobuf.js +0 -11
- package/assets/lib/vs/basic-languages/pug/pug.js +0 -10
- package/assets/lib/vs/basic-languages/python/python.js +0 -10
- package/assets/lib/vs/basic-languages/qsharp/qsharp.js +0 -10
- package/assets/lib/vs/basic-languages/r/r.js +0 -10
- package/assets/lib/vs/basic-languages/razor/razor.js +0 -10
- package/assets/lib/vs/basic-languages/redis/redis.js +0 -10
- package/assets/lib/vs/basic-languages/redshift/redshift.js +0 -10
- package/assets/lib/vs/basic-languages/restructuredtext/restructuredtext.js +0 -10
- package/assets/lib/vs/basic-languages/ruby/ruby.js +0 -10
- package/assets/lib/vs/basic-languages/rust/rust.js +0 -10
- package/assets/lib/vs/basic-languages/sb/sb.js +0 -10
- package/assets/lib/vs/basic-languages/scala/scala.js +0 -10
- package/assets/lib/vs/basic-languages/scheme/scheme.js +0 -10
- package/assets/lib/vs/basic-languages/scss/scss.js +0 -12
- package/assets/lib/vs/basic-languages/shell/shell.js +0 -10
- package/assets/lib/vs/basic-languages/solidity/solidity.js +0 -10
- package/assets/lib/vs/basic-languages/sophia/sophia.js +0 -10
- package/assets/lib/vs/basic-languages/sparql/sparql.js +0 -10
- package/assets/lib/vs/basic-languages/sql/sql.js +0 -10
- package/assets/lib/vs/basic-languages/st/st.js +0 -10
- package/assets/lib/vs/basic-languages/swift/swift.js +0 -13
- package/assets/lib/vs/basic-languages/systemverilog/systemverilog.js +0 -10
- package/assets/lib/vs/basic-languages/tcl/tcl.js +0 -10
- package/assets/lib/vs/basic-languages/twig/twig.js +0 -10
- package/assets/lib/vs/basic-languages/typescript/typescript.js +0 -10
- package/assets/lib/vs/basic-languages/vb/vb.js +0 -10
- package/assets/lib/vs/basic-languages/wgsl/wgsl.js +0 -307
- package/assets/lib/vs/basic-languages/xml/xml.js +0 -10
- package/assets/lib/vs/basic-languages/yaml/yaml.js +0 -10
- package/assets/lib/vs/editor/editor.main.css +0 -6
- package/assets/lib/vs/editor/editor.main.js +0 -752
- package/assets/lib/vs/editor/editor.main.nls.de.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.es.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.fr.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.it.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.ja.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.ko.js +0 -29
- package/assets/lib/vs/editor/editor.main.nls.ru.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.zh-cn.js +0 -31
- package/assets/lib/vs/editor/editor.main.nls.zh-tw.js +0 -29
- package/assets/lib/vs/language/css/cssMode.js +0 -13
- package/assets/lib/vs/language/css/cssWorker.js +0 -81
- package/assets/lib/vs/language/html/htmlMode.js +0 -13
- package/assets/lib/vs/language/html/htmlWorker.js +0 -453
- package/assets/lib/vs/language/json/jsonMode.js +0 -15
- package/assets/lib/vs/language/json/jsonWorker.js +0 -36
- package/assets/lib/vs/language/typescript/tsMode.js +0 -20
- package/assets/lib/vs/language/typescript/tsWorker.js +0 -37016
- package/assets/lib/vs/loader.js +0 -11
- package/assets/mat-icons.ts +0 -5704
- package/assets/material/3d.svg +0 -1
- package/assets/material/abc.svg +0 -1
- package/assets/material/actionscript.svg +0 -1
- package/assets/material/ada.svg +0 -1
- package/assets/material/adonis.svg +0 -1
- package/assets/material/advpl_include.svg +0 -1
- package/assets/material/advpl_prw.svg +0 -1
- package/assets/material/advpl_ptm.svg +0 -1
- package/assets/material/advpl_tlpp.svg +0 -1
- package/assets/material/android.svg +0 -1
- package/assets/material/angular-component.svg +0 -1
- package/assets/material/angular-directive.svg +0 -1
- package/assets/material/angular-guard.svg +0 -1
- package/assets/material/angular-pipe.svg +0 -1
- package/assets/material/angular-resolver.svg +0 -1
- package/assets/material/angular-service.svg +0 -1
- package/assets/material/angular.svg +0 -1
- package/assets/material/antlr.svg +0 -1
- package/assets/material/apiblueprint.svg +0 -1
- package/assets/material/apollo.svg +0 -1
- package/assets/material/applescript.svg +0 -1
- package/assets/material/appveyor.svg +0 -1
- package/assets/material/architecture.svg +0 -1
- package/assets/material/arduino.svg +0 -1
- package/assets/material/asciidoc.svg +0 -1
- package/assets/material/assembly.svg +0 -1
- package/assets/material/astro.svg +0 -1
- package/assets/material/astyle.svg +0 -1
- package/assets/material/audio.svg +0 -1
- package/assets/material/aurelia.svg +0 -1
- package/assets/material/authors.svg +0 -1
- package/assets/material/auto.svg +0 -1
- package/assets/material/auto_light.svg +0 -1
- package/assets/material/autohotkey.svg +0 -1
- package/assets/material/autoit.svg +0 -1
- package/assets/material/azure-pipelines.svg +0 -1
- package/assets/material/azure.svg +0 -1
- package/assets/material/babel.svg +0 -1
- package/assets/material/ballerina.svg +0 -1
- package/assets/material/bazel.svg +0 -1
- package/assets/material/bicep.svg +0 -1
- package/assets/material/bitbucket.svg +0 -13
- package/assets/material/bithound.svg +0 -1
- package/assets/material/blink.svg +0 -1
- package/assets/material/blink_light.svg +0 -1
- package/assets/material/blitz.svg +0 -1
- package/assets/material/bower.svg +0 -1
- package/assets/material/brainfuck.svg +0 -1
- package/assets/material/browserlist.svg +0 -1
- package/assets/material/browserlist_light.svg +0 -1
- package/assets/material/buck.svg +0 -1
- package/assets/material/bucklescript.svg +0 -1
- package/assets/material/buildkite.svg +0 -1
- package/assets/material/bun.svg +0 -2
- package/assets/material/bun_light.svg +0 -2
- package/assets/material/c.svg +0 -4
- package/assets/material/cabal.svg +0 -1
- package/assets/material/caddy.svg +0 -1
- package/assets/material/cadence.svg +0 -1
- package/assets/material/cake.svg +0 -1
- package/assets/material/capacitor.svg +0 -1
- package/assets/material/certificate.svg +0 -1
- package/assets/material/changelog.svg +0 -1
- package/assets/material/chess.svg +0 -1
- package/assets/material/chess_light.svg +0 -1
- package/assets/material/circleci.svg +0 -1
- package/assets/material/circleci_light.svg +0 -1
- package/assets/material/clojure.svg +0 -1
- package/assets/material/cloudfoundry.svg +0 -1
- package/assets/material/cmake.svg +0 -1
- package/assets/material/coala.svg +0 -1
- package/assets/material/cobol.svg +0 -1
- package/assets/material/coconut.svg +0 -1
- package/assets/material/code-climate.svg +0 -1
- package/assets/material/code-climate_light.svg +0 -1
- package/assets/material/codecov.svg +0 -1
- package/assets/material/codeowners.svg +0 -1
- package/assets/material/coffee.svg +0 -1
- package/assets/material/coldfusion.svg +0 -1
- package/assets/material/command.svg +0 -1
- package/assets/material/commitlint.svg +0 -1
- package/assets/material/conduct.svg +0 -1
- package/assets/material/console.svg +0 -1
- package/assets/material/contributing.svg +0 -1
- package/assets/material/cpp.svg +0 -4
- package/assets/material/craco.svg +0 -45
- package/assets/material/credits.svg +0 -1
- package/assets/material/crystal.svg +0 -1
- package/assets/material/crystal_light.svg +0 -1
- package/assets/material/csharp.svg +0 -4
- package/assets/material/css-map.svg +0 -1
- package/assets/material/css.svg +0 -1
- package/assets/material/cucumber.svg +0 -1
- package/assets/material/cuda.svg +0 -1
- package/assets/material/cypress.svg +0 -1
- package/assets/material/d.svg +0 -1
- package/assets/material/dart.svg +0 -1
- package/assets/material/dart_generated.svg +0 -1
- package/assets/material/database.svg +0 -1
- package/assets/material/denizenscript.svg +0 -1
- package/assets/material/deno.svg +0 -1
- package/assets/material/deno_light.svg +0 -1
- package/assets/material/dependabot.svg +0 -1
- package/assets/material/dhall.svg +0 -1
- package/assets/material/diff.svg +0 -1
- package/assets/material/dinophp.svg +0 -1
- package/assets/material/disc.svg +0 -1
- package/assets/material/django.svg +0 -1
- package/assets/material/docker.svg +0 -1
- package/assets/material/document.svg +0 -1
- package/assets/material/dotjs.svg +0 -1
- package/assets/material/drawio.svg +0 -1
- package/assets/material/drone.svg +0 -1
- package/assets/material/drone_light.svg +0 -1
- package/assets/material/dune.svg +0 -1
- package/assets/material/edge.svg +0 -1
- package/assets/material/editorconfig.svg +0 -1
- package/assets/material/ejs.svg +0 -1
- package/assets/material/elixir.svg +0 -1
- package/assets/material/elm.svg +0 -1
- package/assets/material/email.svg +0 -1
- package/assets/material/ember.svg +0 -1
- package/assets/material/erlang.svg +0 -1
- package/assets/material/eslint.svg +0 -1
- package/assets/material/exe.svg +0 -1
- package/assets/material/fastlane.svg +0 -1
- package/assets/material/favicon.svg +0 -1
- package/assets/material/figma.svg +0 -1
- package/assets/material/file.svg +0 -1
- package/assets/material/firebase.svg +0 -1
- package/assets/material/flash.svg +0 -1
- package/assets/material/flow.svg +0 -1
- package/assets/material/folder-admin-open.svg +0 -1
- package/assets/material/folder-admin.svg +0 -1
- package/assets/material/folder-android-open.svg +0 -1
- package/assets/material/folder-android.svg +0 -1
- package/assets/material/folder-angular-open.svg +0 -1
- package/assets/material/folder-angular.svg +0 -1
- package/assets/material/folder-animation-open.svg +0 -1
- package/assets/material/folder-animation.svg +0 -1
- package/assets/material/folder-ansible-open.svg +0 -1
- package/assets/material/folder-ansible.svg +0 -1
- package/assets/material/folder-api-open.svg +0 -1
- package/assets/material/folder-api.svg +0 -1
- package/assets/material/folder-apollo-open.svg +0 -1
- package/assets/material/folder-apollo.svg +0 -1
- package/assets/material/folder-app-open.svg +0 -1
- package/assets/material/folder-app.svg +0 -1
- package/assets/material/folder-archive-open.svg +0 -1
- package/assets/material/folder-archive.svg +0 -1
- package/assets/material/folder-audio-open.svg +0 -1
- package/assets/material/folder-audio.svg +0 -1
- package/assets/material/folder-aurelia-open.svg +0 -1
- package/assets/material/folder-aurelia.svg +0 -1
- package/assets/material/folder-aws-open.svg +0 -1
- package/assets/material/folder-aws.svg +0 -1
- package/assets/material/folder-azure-pipelines-open.svg +0 -1
- package/assets/material/folder-azure-pipelines.svg +0 -1
- package/assets/material/folder-base-open.svg +0 -1
- package/assets/material/folder-base.svg +0 -1
- package/assets/material/folder-batch-open.svg +0 -1
- package/assets/material/folder-batch.svg +0 -1
- package/assets/material/folder-benchmark-open.svg +0 -1
- package/assets/material/folder-benchmark.svg +0 -1
- package/assets/material/folder-bower-open.svg +0 -1
- package/assets/material/folder-bower.svg +0 -1
- package/assets/material/folder-buildkite-open.svg +0 -1
- package/assets/material/folder-buildkite.svg +0 -1
- package/assets/material/folder-cart-open.svg +0 -1
- package/assets/material/folder-cart.svg +0 -1
- package/assets/material/folder-changesets-open.svg +0 -5
- package/assets/material/folder-changesets.svg +0 -2
- package/assets/material/folder-ci-open.svg +0 -1
- package/assets/material/folder-ci.svg +0 -1
- package/assets/material/folder-circleci-open.svg +0 -1
- package/assets/material/folder-circleci.svg +0 -1
- package/assets/material/folder-class-open.svg +0 -1
- package/assets/material/folder-class.svg +0 -1
- package/assets/material/folder-client-open.svg +0 -1
- package/assets/material/folder-client.svg +0 -1
- package/assets/material/folder-cluster-open.svg +0 -1
- package/assets/material/folder-cluster.svg +0 -1
- package/assets/material/folder-cobol-open.svg +0 -1
- package/assets/material/folder-cobol.svg +0 -1
- package/assets/material/folder-command-open.svg +0 -1
- package/assets/material/folder-command.svg +0 -1
- package/assets/material/folder-components-open.svg +0 -1
- package/assets/material/folder-components.svg +0 -1
- package/assets/material/folder-config-open.svg +0 -1
- package/assets/material/folder-config.svg +0 -1
- package/assets/material/folder-connection-open.svg +0 -1
- package/assets/material/folder-connection.svg +0 -1
- package/assets/material/folder-constant-open.svg +0 -1
- package/assets/material/folder-constant.svg +0 -1
- package/assets/material/folder-container-open.svg +0 -1
- package/assets/material/folder-container.svg +0 -1
- package/assets/material/folder-content-open.svg +0 -1
- package/assets/material/folder-content.svg +0 -1
- package/assets/material/folder-context-open.svg +0 -1
- package/assets/material/folder-context.svg +0 -1
- package/assets/material/folder-contract-open.svg +0 -1
- package/assets/material/folder-contract.svg +0 -1
- package/assets/material/folder-controller-open.svg +0 -1
- package/assets/material/folder-controller.svg +0 -1
- package/assets/material/folder-core-open.svg +0 -1
- package/assets/material/folder-core.svg +0 -1
- package/assets/material/folder-coverage-open.svg +0 -1
- package/assets/material/folder-coverage.svg +0 -1
- package/assets/material/folder-css-open.svg +0 -1
- package/assets/material/folder-css.svg +0 -1
- package/assets/material/folder-custom-open.svg +0 -1
- package/assets/material/folder-custom.svg +0 -1
- package/assets/material/folder-cypress-open.svg +0 -1
- package/assets/material/folder-cypress.svg +0 -1
- package/assets/material/folder-database-open.svg +0 -1
- package/assets/material/folder-database.svg +0 -1
- package/assets/material/folder-debug-open.svg +0 -1
- package/assets/material/folder-debug.svg +0 -1
- package/assets/material/folder-decorators-open.svg +0 -2
- package/assets/material/folder-decorators.svg +0 -5
- package/assets/material/folder-delta-open.svg +0 -1
- package/assets/material/folder-delta.svg +0 -1
- package/assets/material/folder-dist-open.svg +0 -1
- package/assets/material/folder-dist.svg +0 -1
- package/assets/material/folder-docker-open.svg +0 -1
- package/assets/material/folder-docker.svg +0 -1
- package/assets/material/folder-docs-open.svg +0 -1
- package/assets/material/folder-docs.svg +0 -1
- package/assets/material/folder-download-open.svg +0 -1
- package/assets/material/folder-download.svg +0 -1
- package/assets/material/folder-dump-open.svg +0 -1
- package/assets/material/folder-dump.svg +0 -1
- package/assets/material/folder-environment-open.svg +0 -1
- package/assets/material/folder-environment.svg +0 -1
- package/assets/material/folder-error-open.svg +0 -1
- package/assets/material/folder-error.svg +0 -1
- package/assets/material/folder-event-open.svg +0 -1
- package/assets/material/folder-event.svg +0 -1
- package/assets/material/folder-examples-open.svg +0 -1
- package/assets/material/folder-examples.svg +0 -1
- package/assets/material/folder-expo-open.svg +0 -1
- package/assets/material/folder-expo.svg +0 -1
- package/assets/material/folder-export-open.svg +0 -1
- package/assets/material/folder-export.svg +0 -1
- package/assets/material/folder-fastlane-open.svg +0 -1
- package/assets/material/folder-fastlane.svg +0 -1
- package/assets/material/folder-firebase-open.svg +0 -1
- package/assets/material/folder-firebase.svg +0 -1
- package/assets/material/folder-flow-open.svg +0 -1
- package/assets/material/folder-flow.svg +0 -1
- package/assets/material/folder-font-open.svg +0 -1
- package/assets/material/folder-font.svg +0 -1
- package/assets/material/folder-functions-open.svg +0 -1
- package/assets/material/folder-functions.svg +0 -1
- package/assets/material/folder-gamemaker-open.svg +0 -2
- package/assets/material/folder-gamemaker.svg +0 -2
- package/assets/material/folder-generator-open.svg +0 -1
- package/assets/material/folder-generator.svg +0 -1
- package/assets/material/folder-git-open.svg +0 -1
- package/assets/material/folder-git.svg +0 -1
- package/assets/material/folder-github-open.svg +0 -1
- package/assets/material/folder-github.svg +0 -1
- package/assets/material/folder-gitlab-open.svg +0 -1
- package/assets/material/folder-gitlab.svg +0 -1
- package/assets/material/folder-global-open.svg +0 -1
- package/assets/material/folder-global.svg +0 -1
- package/assets/material/folder-godot-open.svg +0 -2
- package/assets/material/folder-godot.svg +0 -8
- package/assets/material/folder-gradle-open.svg +0 -1
- package/assets/material/folder-gradle.svg +0 -1
- package/assets/material/folder-graphql-open.svg +0 -1
- package/assets/material/folder-graphql.svg +0 -1
- package/assets/material/folder-guard-open.svg +0 -1
- package/assets/material/folder-guard.svg +0 -1
- package/assets/material/folder-gulp-open.svg +0 -1
- package/assets/material/folder-gulp.svg +0 -1
- package/assets/material/folder-helper-open.svg +0 -1
- package/assets/material/folder-helper.svg +0 -1
- package/assets/material/folder-home-open.svg +0 -1
- package/assets/material/folder-home.svg +0 -1
- package/assets/material/folder-hook-open.svg +0 -1
- package/assets/material/folder-hook.svg +0 -1
- package/assets/material/folder-husky-open.svg +0 -1
- package/assets/material/folder-husky.svg +0 -1
- package/assets/material/folder-i18n-open.svg +0 -1
- package/assets/material/folder-i18n.svg +0 -1
- package/assets/material/folder-images-open.svg +0 -1
- package/assets/material/folder-images.svg +0 -1
- package/assets/material/folder-import-open.svg +0 -1
- package/assets/material/folder-import.svg +0 -1
- package/assets/material/folder-include-open.svg +0 -1
- package/assets/material/folder-include.svg +0 -1
- package/assets/material/folder-intellij-open.svg +0 -1
- package/assets/material/folder-intellij-open_light.svg +0 -1
- package/assets/material/folder-intellij.svg +0 -1
- package/assets/material/folder-intellij_light.svg +0 -1
- package/assets/material/folder-interface-open.svg +0 -1
- package/assets/material/folder-interface.svg +0 -1
- package/assets/material/folder-ios-open.svg +0 -1
- package/assets/material/folder-ios.svg +0 -1
- package/assets/material/folder-java-open.svg +0 -1
- package/assets/material/folder-java.svg +0 -1
- package/assets/material/folder-javascript-open.svg +0 -1
- package/assets/material/folder-javascript.svg +0 -1
- package/assets/material/folder-jinja-open.svg +0 -1
- package/assets/material/folder-jinja-open_light.svg +0 -1
- package/assets/material/folder-jinja.svg +0 -1
- package/assets/material/folder-jinja_light.svg +0 -1
- package/assets/material/folder-job-open.svg +0 -1
- package/assets/material/folder-job.svg +0 -1
- package/assets/material/folder-json-open.svg +0 -1
- package/assets/material/folder-json.svg +0 -1
- package/assets/material/folder-keys-open.svg +0 -1
- package/assets/material/folder-keys.svg +0 -1
- package/assets/material/folder-kubernetes-open.svg +0 -1
- package/assets/material/folder-kubernetes.svg +0 -1
- package/assets/material/folder-layout-open.svg +0 -1
- package/assets/material/folder-layout.svg +0 -1
- package/assets/material/folder-less-open.svg +0 -1
- package/assets/material/folder-less.svg +0 -1
- package/assets/material/folder-lib-open.svg +0 -1
- package/assets/material/folder-lib.svg +0 -1
- package/assets/material/folder-log-open.svg +0 -1
- package/assets/material/folder-log.svg +0 -1
- package/assets/material/folder-lua-open.svg +0 -1
- package/assets/material/folder-lua.svg +0 -1
- package/assets/material/folder-mail-open.svg +0 -1
- package/assets/material/folder-mail.svg +0 -1
- package/assets/material/folder-mappings-open.svg +0 -1
- package/assets/material/folder-mappings.svg +0 -1
- package/assets/material/folder-markdown-open.svg +0 -1
- package/assets/material/folder-markdown.svg +0 -1
- package/assets/material/folder-mercurial-open.svg +0 -5
- package/assets/material/folder-mercurial.svg +0 -2
- package/assets/material/folder-messages-open.svg +0 -1
- package/assets/material/folder-messages.svg +0 -1
- package/assets/material/folder-meta-open.svg +0 -1
- package/assets/material/folder-meta.svg +0 -1
- package/assets/material/folder-middleware-open.svg +0 -1
- package/assets/material/folder-middleware.svg +0 -1
- package/assets/material/folder-mjml-open.svg +0 -1
- package/assets/material/folder-mjml.svg +0 -1
- package/assets/material/folder-mobile-open.svg +0 -1
- package/assets/material/folder-mobile.svg +0 -1
- package/assets/material/folder-mock-open.svg +0 -1
- package/assets/material/folder-mock.svg +0 -1
- package/assets/material/folder-netlify-open.svg +0 -5
- package/assets/material/folder-netlify.svg +0 -2
- package/assets/material/folder-next-open.svg +0 -1
- package/assets/material/folder-next.svg +0 -1
- package/assets/material/folder-ngrx-actions-open.svg +0 -1
- package/assets/material/folder-ngrx-actions.svg +0 -1
- package/assets/material/folder-ngrx-effects-open.svg +0 -1
- package/assets/material/folder-ngrx-effects.svg +0 -1
- package/assets/material/folder-ngrx-entities-open.svg +0 -1
- package/assets/material/folder-ngrx-entities.svg +0 -1
- package/assets/material/folder-ngrx-reducer-open.svg +0 -1
- package/assets/material/folder-ngrx-reducer.svg +0 -1
- package/assets/material/folder-ngrx-selectors-open.svg +0 -1
- package/assets/material/folder-ngrx-selectors.svg +0 -1
- package/assets/material/folder-ngrx-state-open.svg +0 -1
- package/assets/material/folder-ngrx-state.svg +0 -1
- package/assets/material/folder-ngrx-store-open.svg +0 -1
- package/assets/material/folder-ngrx-store.svg +0 -1
- package/assets/material/folder-node-open.svg +0 -1
- package/assets/material/folder-node.svg +0 -1
- package/assets/material/folder-nuxt-open.svg +0 -1
- package/assets/material/folder-nuxt.svg +0 -1
- package/assets/material/folder-open.svg +0 -1
- package/assets/material/folder-other-open.svg +0 -1
- package/assets/material/folder-other.svg +0 -1
- package/assets/material/folder-packages-open.svg +0 -1
- package/assets/material/folder-packages.svg +0 -1
- package/assets/material/folder-pdf-open.svg +0 -1
- package/assets/material/folder-pdf.svg +0 -1
- package/assets/material/folder-php-open.svg +0 -1
- package/assets/material/folder-php.svg +0 -1
- package/assets/material/folder-phpmailer-open.svg +0 -1
- package/assets/material/folder-phpmailer.svg +0 -1
- package/assets/material/folder-pipe-open.svg +0 -1
- package/assets/material/folder-pipe.svg +0 -1
- package/assets/material/folder-plastic-open.svg +0 -8
- package/assets/material/folder-plastic.svg +0 -2
- package/assets/material/folder-plugin-open.svg +0 -1
- package/assets/material/folder-plugin.svg +0 -1
- package/assets/material/folder-prisma-open.svg +0 -1
- package/assets/material/folder-prisma.svg +0 -1
- package/assets/material/folder-private-open.svg +0 -1
- package/assets/material/folder-private.svg +0 -1
- package/assets/material/folder-project-open.svg +0 -1
- package/assets/material/folder-project.svg +0 -1
- package/assets/material/folder-proto-open.svg +0 -1
- package/assets/material/folder-proto.svg +0 -1
- package/assets/material/folder-public-open.svg +0 -1
- package/assets/material/folder-public.svg +0 -1
- package/assets/material/folder-python-open.svg +0 -1
- package/assets/material/folder-python.svg +0 -1
- package/assets/material/folder-quasar-open.svg +0 -1
- package/assets/material/folder-quasar.svg +0 -1
- package/assets/material/folder-queue-open.svg +0 -1
- package/assets/material/folder-queue.svg +0 -1
- package/assets/material/folder-react-components-open.svg +0 -1
- package/assets/material/folder-react-components.svg +0 -1
- package/assets/material/folder-redux-actions-open.svg +0 -1
- package/assets/material/folder-redux-actions.svg +0 -1
- package/assets/material/folder-redux-reducer-open.svg +0 -1
- package/assets/material/folder-redux-reducer.svg +0 -1
- package/assets/material/folder-redux-selector-open.svg +0 -1
- package/assets/material/folder-redux-selector.svg +0 -1
- package/assets/material/folder-redux-store-open.svg +0 -1
- package/assets/material/folder-redux-store.svg +0 -1
- package/assets/material/folder-resolver-open.svg +0 -1
- package/assets/material/folder-resolver.svg +0 -1
- package/assets/material/folder-resource-open.svg +0 -1
- package/assets/material/folder-resource.svg +0 -1
- package/assets/material/folder-review-open.svg +0 -1
- package/assets/material/folder-review.svg +0 -1
- package/assets/material/folder-root-open.svg +0 -1
- package/assets/material/folder-root.svg +0 -1
- package/assets/material/folder-routes-open.svg +0 -1
- package/assets/material/folder-routes.svg +0 -1
- package/assets/material/folder-rules-open.svg +0 -1
- package/assets/material/folder-rules.svg +0 -1
- package/assets/material/folder-sass-open.svg +0 -1
- package/assets/material/folder-sass.svg +0 -1
- package/assets/material/folder-scala-open.svg +0 -1
- package/assets/material/folder-scala.svg +0 -1
- package/assets/material/folder-scripts-open.svg +0 -1
- package/assets/material/folder-scripts.svg +0 -1
- package/assets/material/folder-secure-open.svg +0 -1
- package/assets/material/folder-secure.svg +0 -1
- package/assets/material/folder-server-open.svg +0 -1
- package/assets/material/folder-server.svg +0 -1
- package/assets/material/folder-serverless-open.svg +0 -1
- package/assets/material/folder-serverless.svg +0 -1
- package/assets/material/folder-shader-open.svg +0 -1
- package/assets/material/folder-shader.svg +0 -1
- package/assets/material/folder-shared-open.svg +0 -1
- package/assets/material/folder-shared.svg +0 -1
- package/assets/material/folder-src-open.svg +0 -1
- package/assets/material/folder-src.svg +0 -1
- package/assets/material/folder-stack-open.svg +0 -1
- package/assets/material/folder-stack.svg +0 -1
- package/assets/material/folder-stencil-open.svg +0 -1
- package/assets/material/folder-stencil.svg +0 -1
- package/assets/material/folder-storybook-open.svg +0 -1
- package/assets/material/folder-storybook.svg +0 -1
- package/assets/material/folder-stylus-open.svg +0 -1
- package/assets/material/folder-stylus.svg +0 -1
- package/assets/material/folder-sublime-open.svg +0 -1
- package/assets/material/folder-sublime.svg +0 -1
- package/assets/material/folder-supabase-open.svg +0 -5
- package/assets/material/folder-supabase.svg +0 -2
- package/assets/material/folder-svelte-open.svg +0 -1
- package/assets/material/folder-svelte.svg +0 -1
- package/assets/material/folder-svg-open.svg +0 -1
- package/assets/material/folder-svg.svg +0 -1
- package/assets/material/folder-syntax-open.svg +0 -1
- package/assets/material/folder-syntax.svg +0 -1
- package/assets/material/folder-target-open.svg +0 -1
- package/assets/material/folder-target.svg +0 -1
- package/assets/material/folder-tasks-open.svg +0 -1
- package/assets/material/folder-tasks.svg +0 -1
- package/assets/material/folder-temp-open.svg +0 -1
- package/assets/material/folder-temp.svg +0 -1
- package/assets/material/folder-template-open.svg +0 -1
- package/assets/material/folder-template.svg +0 -1
- package/assets/material/folder-terraform-open.svg +0 -1
- package/assets/material/folder-terraform.svg +0 -1
- package/assets/material/folder-test-open.svg +0 -1
- package/assets/material/folder-test.svg +0 -1
- package/assets/material/folder-theme-open.svg +0 -1
- package/assets/material/folder-theme.svg +0 -1
- package/assets/material/folder-tools-open.svg +0 -1
- package/assets/material/folder-tools.svg +0 -1
- package/assets/material/folder-typescript-open.svg +0 -1
- package/assets/material/folder-typescript.svg +0 -1
- package/assets/material/folder-unity-open.svg +0 -1
- package/assets/material/folder-unity.svg +0 -1
- package/assets/material/folder-update-open.svg +0 -1
- package/assets/material/folder-update.svg +0 -1
- package/assets/material/folder-upload-open.svg +0 -1
- package/assets/material/folder-upload.svg +0 -1
- package/assets/material/folder-utils-open.svg +0 -1
- package/assets/material/folder-utils.svg +0 -1
- package/assets/material/folder-vercel-open.svg +0 -1
- package/assets/material/folder-vercel.svg +0 -1
- package/assets/material/folder-verdaccio-open.svg +0 -1
- package/assets/material/folder-verdaccio.svg +0 -1
- package/assets/material/folder-video-open.svg +0 -1
- package/assets/material/folder-video.svg +0 -1
- package/assets/material/folder-views-open.svg +0 -1
- package/assets/material/folder-views.svg +0 -1
- package/assets/material/folder-vm-open.svg +0 -1
- package/assets/material/folder-vm.svg +0 -1
- package/assets/material/folder-vscode-open.svg +0 -1
- package/assets/material/folder-vscode.svg +0 -1
- package/assets/material/folder-vue-directives-open.svg +0 -1
- package/assets/material/folder-vue-directives.svg +0 -1
- package/assets/material/folder-vue-open.svg +0 -1
- package/assets/material/folder-vue.svg +0 -1
- package/assets/material/folder-vuepress-open.svg +0 -1
- package/assets/material/folder-vuepress.svg +0 -1
- package/assets/material/folder-vuex-store-open.svg +0 -1
- package/assets/material/folder-vuex-store.svg +0 -1
- package/assets/material/folder-wakatime-open.svg +0 -1
- package/assets/material/folder-wakatime.svg +0 -1
- package/assets/material/folder-webpack-open.svg +0 -1
- package/assets/material/folder-webpack.svg +0 -1
- package/assets/material/folder-wordpress-open.svg +0 -1
- package/assets/material/folder-wordpress.svg +0 -1
- package/assets/material/folder-yarn-open.svg +0 -1
- package/assets/material/folder-yarn.svg +0 -1
- package/assets/material/folder.svg +0 -1
- package/assets/material/font.svg +0 -1
- package/assets/material/forth.svg +0 -1
- package/assets/material/fortran.svg +0 -1
- package/assets/material/foxpro.svg +0 -1
- package/assets/material/fsharp.svg +0 -1
- package/assets/material/fusebox.svg +0 -1
- package/assets/material/gamemaker.svg +0 -4
- package/assets/material/gatsby.svg +0 -1
- package/assets/material/gcp.svg +0 -1
- package/assets/material/gemfile.svg +0 -1
- package/assets/material/gemini.svg +0 -1
- package/assets/material/git.svg +0 -1
- package/assets/material/gitlab.svg +0 -1
- package/assets/material/gitpod.svg +0 -1
- package/assets/material/gleam.svg +0 -1
- package/assets/material/go-mod.svg +0 -1
- package/assets/material/go.svg +0 -1
- package/assets/material/go_gopher.svg +0 -1
- package/assets/material/godot-assets.svg +0 -7
- package/assets/material/godot.svg +0 -7
- package/assets/material/gradle.svg +0 -1
- package/assets/material/grain.svg +0 -1
- package/assets/material/graphcool.svg +0 -1
- package/assets/material/graphql.svg +0 -1
- package/assets/material/gridsome.svg +0 -1
- package/assets/material/groovy.svg +0 -1
- package/assets/material/grunt.svg +0 -1
- package/assets/material/gulp.svg +0 -1
- package/assets/material/h.svg +0 -1
- package/assets/material/hack.svg +0 -1
- package/assets/material/haml.svg +0 -1
- package/assets/material/handlebars.svg +0 -1
- package/assets/material/hardhat.svg +0 -1
- package/assets/material/haskell.svg +0 -1
- package/assets/material/haxe.svg +0 -1
- package/assets/material/hcl.svg +0 -1
- package/assets/material/hcl_light.svg +0 -1
- package/assets/material/helm.svg +0 -1
- package/assets/material/heroku.svg +0 -1
- package/assets/material/hex.svg +0 -1
- package/assets/material/horusec.svg +0 -1
- package/assets/material/hpp.svg +0 -1
- package/assets/material/html.svg +0 -1
- package/assets/material/http.svg +0 -1
- package/assets/material/husky.svg +0 -1
- package/assets/material/i18n.svg +0 -1
- package/assets/material/idris.svg +0 -1
- package/assets/material/ifanr-cloud.svg +0 -10
- package/assets/material/image.svg +0 -1
- package/assets/material/imba.svg +0 -1
- package/assets/material/ionic.svg +0 -1
- package/assets/material/istanbul.svg +0 -1
- package/assets/material/jar.svg +0 -1
- package/assets/material/java.svg +0 -1
- package/assets/material/javaclass.svg +0 -1
- package/assets/material/javascript-map.svg +0 -1
- package/assets/material/javascript.svg +0 -1
- package/assets/material/jenkins.svg +0 -1
- package/assets/material/jest.svg +0 -1
- package/assets/material/jinja.svg +0 -1
- package/assets/material/jinja_light.svg +0 -1
- package/assets/material/jsconfig.svg +0 -1
- package/assets/material/json.svg +0 -1
- package/assets/material/julia.svg +0 -1
- package/assets/material/jupyter.svg +0 -1
- package/assets/material/karma.svg +0 -1
- package/assets/material/key.svg +0 -1
- package/assets/material/kivy.svg +0 -1
- package/assets/material/kl.svg +0 -1
- package/assets/material/kotlin.svg +0 -1
- package/assets/material/kusto.svg +0 -1
- package/assets/material/laravel.svg +0 -1
- package/assets/material/lerna.svg +0 -1
- package/assets/material/less.svg +0 -1
- package/assets/material/lib.svg +0 -1
- package/assets/material/lighthouse.svg +0 -1
- package/assets/material/lilypond.svg +0 -1
- package/assets/material/liquid.svg +0 -1
- package/assets/material/lisp.svg +0 -1
- package/assets/material/livescript.svg +0 -1
- package/assets/material/lock.svg +0 -1
- package/assets/material/log.svg +0 -1
- package/assets/material/lolcode.svg +0 -1
- package/assets/material/lua.svg +0 -1
- package/assets/material/makefile.svg +0 -1
- package/assets/material/markdown.svg +0 -1
- package/assets/material/markojs.svg +0 -1
- package/assets/material/mathematica.svg +0 -1
- package/assets/material/matlab.svg +0 -1
- package/assets/material/maven.svg +0 -1
- package/assets/material/mdsvex.svg +0 -1
- package/assets/material/mdx.svg +0 -1
- package/assets/material/mercurial.svg +0 -6
- package/assets/material/merlin.svg +0 -1
- package/assets/material/mermaid.svg +0 -4
- package/assets/material/meson.svg +0 -1
- package/assets/material/minecraft.svg +0 -1
- package/assets/material/mint.svg +0 -1
- package/assets/material/mjml.svg +0 -1
- package/assets/material/mocha.svg +0 -1
- package/assets/material/modernizr.svg +0 -1
- package/assets/material/moonscript.svg +0 -1
- package/assets/material/mxml.svg +0 -1
- package/assets/material/nano-staged.svg +0 -1
- package/assets/material/nano-staged_light.svg +0 -1
- package/assets/material/ndst.svg +0 -1
- package/assets/material/nest-controller.svg +0 -1
- package/assets/material/nest-decorator.svg +0 -1
- package/assets/material/nest-filter.svg +0 -1
- package/assets/material/nest-gateway.svg +0 -1
- package/assets/material/nest-guard.svg +0 -1
- package/assets/material/nest-middleware.svg +0 -1
- package/assets/material/nest-module.svg +0 -1
- package/assets/material/nest-pipe.svg +0 -1
- package/assets/material/nest-resolver.svg +0 -1
- package/assets/material/nest-service.svg +0 -1
- package/assets/material/nest.svg +0 -1
- package/assets/material/netlify.svg +0 -7
- package/assets/material/netlify_light.svg +0 -7
- package/assets/material/next.svg +0 -1
- package/assets/material/next_light.svg +0 -1
- package/assets/material/nginx.svg +0 -1
- package/assets/material/ngrx-actions.svg +0 -1
- package/assets/material/ngrx-effects.svg +0 -1
- package/assets/material/ngrx-entity.svg +0 -1
- package/assets/material/ngrx-reducer.svg +0 -1
- package/assets/material/ngrx-selectors.svg +0 -1
- package/assets/material/ngrx-state.svg +0 -1
- package/assets/material/nim.svg +0 -1
- package/assets/material/nix.svg +0 -1
- package/assets/material/nodejs.svg +0 -1
- package/assets/material/nodejs_alt.svg +0 -1
- package/assets/material/nodemon.svg +0 -1
- package/assets/material/npm.svg +0 -1
- package/assets/material/nrwl.svg +0 -1
- package/assets/material/nuget.svg +0 -1
- package/assets/material/nunjucks.svg +0 -1
- package/assets/material/nuxt.svg +0 -1
- package/assets/material/objective-c.svg +0 -4
- package/assets/material/objective-cpp.svg +0 -1
- package/assets/material/ocaml.svg +0 -1
- package/assets/material/odin.svg +0 -1
- package/assets/material/opa.svg +0 -1
- package/assets/material/opam.svg +0 -1
- package/assets/material/otne.svg +0 -1
- package/assets/material/parcel.svg +0 -1
- package/assets/material/pascal.svg +0 -6
- package/assets/material/pawn.svg +0 -1
- package/assets/material/pdf.svg +0 -1
- package/assets/material/percy.svg +0 -1
- package/assets/material/perl.svg +0 -1
- package/assets/material/php-cs-fixer.svg +0 -1
- package/assets/material/php.svg +0 -1
- package/assets/material/php_elephant.svg +0 -1
- package/assets/material/php_elephant_pink.svg +0 -1
- package/assets/material/phpunit.svg +0 -1
- package/assets/material/pinejs.svg +0 -1
- package/assets/material/pipeline.svg +0 -1
- package/assets/material/plastic.svg +0 -7
- package/assets/material/playwright.svg +0 -1
- package/assets/material/plop.svg +0 -1
- package/assets/material/pnpm.svg +0 -1
- package/assets/material/pnpm_light.svg +0 -1
- package/assets/material/poetry.svg +0 -1
- package/assets/material/postcss.svg +0 -1
- package/assets/material/posthtml.svg +0 -1
- package/assets/material/powerpoint.svg +0 -1
- package/assets/material/powershell.svg +0 -1
- package/assets/material/prettier.svg +0 -1
- package/assets/material/prisma.svg +0 -1
- package/assets/material/processing.svg +0 -1
- package/assets/material/prolog.svg +0 -1
- package/assets/material/proto.svg +0 -1
- package/assets/material/protractor.svg +0 -1
- package/assets/material/pug.svg +0 -1
- package/assets/material/puppet.svg +0 -1
- package/assets/material/purescript.svg +0 -1
- package/assets/material/python-misc.svg +0 -1
- package/assets/material/python.svg +0 -1
- package/assets/material/qsharp.svg +0 -1
- package/assets/material/quasar.svg +0 -1
- package/assets/material/qwik.svg +0 -2
- package/assets/material/r.svg +0 -1
- package/assets/material/racket.svg +0 -1
- package/assets/material/raml.svg +0 -1
- package/assets/material/razor.svg +0 -1
- package/assets/material/rc.svg +0 -2
- package/assets/material/react.svg +0 -1
- package/assets/material/react_ts.svg +0 -1
- package/assets/material/readme.svg +0 -1
- package/assets/material/reason.svg +0 -1
- package/assets/material/red.svg +0 -1
- package/assets/material/redux-action.svg +0 -1
- package/assets/material/redux-reducer.svg +0 -1
- package/assets/material/redux-selector.svg +0 -1
- package/assets/material/redux-store.svg +0 -1
- package/assets/material/remix.svg +0 -1
- package/assets/material/remix_light.svg +0 -1
- package/assets/material/renovate.svg +0 -1
- package/assets/material/replit.svg +0 -1
- package/assets/material/rescript-interface.svg +0 -1
- package/assets/material/rescript.svg +0 -1
- package/assets/material/restql.svg +0 -1
- package/assets/material/riot.svg +0 -1
- package/assets/material/roadmap.svg +0 -1
- package/assets/material/robot.svg +0 -1
- package/assets/material/robots.svg +0 -1
- package/assets/material/rollup.svg +0 -1
- package/assets/material/rome.svg +0 -1
- package/assets/material/routing.svg +0 -1
- package/assets/material/rubocop.svg +0 -1
- package/assets/material/rubocop_light.svg +0 -1
- package/assets/material/ruby.svg +0 -1
- package/assets/material/rust.svg +0 -1
- package/assets/material/salesforce.svg +0 -1
- package/assets/material/san.svg +0 -1
- package/assets/material/sas.svg +0 -1
- package/assets/material/sass.svg +0 -1
- package/assets/material/sbt.svg +0 -1
- package/assets/material/scala.svg +0 -1
- package/assets/material/scheme.svg +0 -1
- package/assets/material/search.svg +0 -1
- package/assets/material/semantic-release.svg +0 -1
- package/assets/material/semantic-release_light.svg +0 -1
- package/assets/material/sentry.svg +0 -1
- package/assets/material/sequelize.svg +0 -1
- package/assets/material/serverless.svg +0 -1
- package/assets/material/settings.svg +0 -1
- package/assets/material/shader.svg +0 -1
- package/assets/material/shaderlab.svg +0 -1
- package/assets/material/silverstripe.svg +0 -1
- package/assets/material/siyuan.svg +0 -1
- package/assets/material/sketch.svg +0 -1
- package/assets/material/slim.svg +0 -1
- package/assets/material/slug.svg +0 -1
- package/assets/material/smarty.svg +0 -1
- package/assets/material/sml.svg +0 -1
- package/assets/material/snowpack.svg +0 -1
- package/assets/material/snowpack_light.svg +0 -1
- package/assets/material/snyk.svg +0 -1
- package/assets/material/solidity.svg +0 -1
- package/assets/material/sonarcloud.svg +0 -4
- package/assets/material/steadybit.svg +0 -1
- package/assets/material/stencil.svg +0 -1
- package/assets/material/stitches.svg +0 -1
- package/assets/material/stitches_light.svg +0 -1
- package/assets/material/storybook.svg +0 -1
- package/assets/material/stryker.svg +0 -1
- package/assets/material/stylable.svg +0 -10
- package/assets/material/stylelint.svg +0 -1
- package/assets/material/stylelint_light.svg +0 -1
- package/assets/material/stylus.svg +0 -1
- package/assets/material/sublime.svg +0 -1
- package/assets/material/supabase.svg +0 -4
- package/assets/material/svelte.svg +0 -1
- package/assets/material/svg.svg +0 -1
- package/assets/material/svgo.svg +0 -1
- package/assets/material/svgr.svg +0 -1
- package/assets/material/swc.svg +0 -1
- package/assets/material/swift.svg +0 -1
- package/assets/material/table.svg +0 -1
- package/assets/material/tailwindcss.svg +0 -1
- package/assets/material/tauri.svg +0 -1
- package/assets/material/tcl.svg +0 -1
- package/assets/material/teal.svg +0 -1
- package/assets/material/template.svg +0 -1
- package/assets/material/terraform.svg +0 -1
- package/assets/material/test-js.svg +0 -1
- package/assets/material/test-jsx.svg +0 -1
- package/assets/material/test-ts.svg +0 -1
- package/assets/material/tex.svg +0 -1
- package/assets/material/textlint.svg +0 -1
- package/assets/material/tilt.svg +0 -1
- package/assets/material/tldraw.svg +0 -4
- package/assets/material/tldraw_light.svg +0 -4
- package/assets/material/tobi.svg +0 -1
- package/assets/material/tobimake.svg +0 -1
- package/assets/material/todo.svg +0 -1
- package/assets/material/travis.svg +0 -1
- package/assets/material/tree.svg +0 -1
- package/assets/material/tsconfig.svg +0 -1
- package/assets/material/tune.svg +0 -1
- package/assets/material/turborepo.svg +0 -1
- package/assets/material/turborepo_light.svg +0 -1
- package/assets/material/twig.svg +0 -1
- package/assets/material/twine.svg +0 -1
- package/assets/material/typescript-def.svg +0 -1
- package/assets/material/typescript.svg +0 -1
- package/assets/material/typst.svg +0 -2
- package/assets/material/uml.svg +0 -1
- package/assets/material/uml_light.svg +0 -1
- package/assets/material/url.svg +0 -1
- package/assets/material/vagrant.svg +0 -1
- package/assets/material/vala.svg +0 -1
- package/assets/material/velocity.svg +0 -1
- package/assets/material/vercel.svg +0 -1
- package/assets/material/vercel_light.svg +0 -1
- package/assets/material/verdaccio.svg +0 -1
- package/assets/material/verilog.svg +0 -1
- package/assets/material/vfl.svg +0 -1
- package/assets/material/video.svg +0 -1
- package/assets/material/vim.svg +0 -1
- package/assets/material/virtual.svg +0 -1
- package/assets/material/visualstudio.svg +0 -1
- package/assets/material/vite.svg +0 -1
- package/assets/material/vitest.svg +0 -6
- package/assets/material/vlang.svg +0 -1
- package/assets/material/vscode.svg +0 -1
- package/assets/material/vue-config.svg +0 -1
- package/assets/material/vue.svg +0 -1
- package/assets/material/vuex-store.svg +0 -1
- package/assets/material/wakatime.svg +0 -1
- package/assets/material/wakatime_light.svg +0 -1
- package/assets/material/wallaby.svg +0 -1
- package/assets/material/watchman.svg +0 -1
- package/assets/material/webassembly.svg +0 -1
- package/assets/material/webhint.svg +0 -1
- package/assets/material/webpack.svg +0 -1
- package/assets/material/wepy.svg +0 -1
- package/assets/material/windicss.svg +0 -1
- package/assets/material/wolframlanguage.svg +0 -1
- package/assets/material/word.svg +0 -1
- package/assets/material/xaml.svg +0 -1
- package/assets/material/xml.svg +0 -1
- package/assets/material/yaml.svg +0 -1
- package/assets/material/yang.svg +0 -1
- package/assets/material/yarn.svg +0 -1
- package/assets/material/zig.svg +0 -1
- package/assets/material/zip.svg +0 -1
- package/assets/pop/LICENSE +0 -2
- package/assets/pop/binary.svg +0 -1
- package/assets/pop/compressed.svg +0 -1
- package/assets/pop/database.svg +0 -1
- package/assets/pop/exts/7z.svg +0 -1
- package/assets/pop/exts/apk.svg +0 -1
- package/assets/pop/exts/arc.svg +0 -1
- package/assets/pop/exts/bz.svg +0 -1
- package/assets/pop/exts/deb.svg +0 -1
- package/assets/pop/exts/gz.svg +0 -1
- package/assets/pop/exts/pdf.svg +0 -1
- package/assets/pop/exts/rar.svg +0 -1
- package/assets/pop/exts/rpm.svg +0 -1
- package/assets/pop/exts/tar.svg +0 -1
- package/assets/pop/exts/xar.svg +0 -1
- package/assets/pop/exts/xz.svg +0 -1
- package/assets/pop/exts/zip.svg +0 -1
- package/assets/pop/folder-open.svg +0 -1
- package/assets/pop/folder.svg +0 -1
- package/assets/pop/generic.svg +0 -1
- package/assets/pop/presentation.svg +0 -1
- package/assets/pop/richtext.svg +0 -1
- package/assets/pop/spreadsheet.svg +0 -1
- package/assets/pop/text.svg +0 -1
- package/esm2022/components/lazy-loader/lazy-loader.component.mjs +0 -383
- package/esm2022/components/lazy-loader/lazy-loader.module.mjs +0 -33
- package/esm2022/components/lazy-loader/lazy-loader.service.mjs +0 -217
- package/esm2022/components/lazy-loader/types.mjs +0 -26
- package/esm2022/components/menu/menu.component.mjs +0 -433
- package/esm2022/components/parallax-card/parallax-card.component.mjs +0 -138
- package/esm2022/components/tooltip/tooltip.component.mjs +0 -205
- package/esm2022/components/types.mjs +0 -3
- package/esm2022/directives/image-cache.directive.mjs +0 -143
- package/esm2022/directives/menu.directive.mjs +0 -159
- package/esm2022/directives/tooltip.directive.mjs +0 -154
- package/esm2022/directives/utils.mjs +0 -120
- package/esm2022/pipes/html-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/resource-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/script-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/style-bypass.pipe.mjs +0 -27
- package/esm2022/pipes/url-bypass.pipe.mjs +0 -27
- package/esm2022/public-api.mjs +0 -46
- package/esm2022/services/dependency.service.mjs +0 -55
- package/esm2022/services/dialog.service.mjs +0 -69
- package/esm2022/services/fetch.service.mjs +0 -74
- package/esm2022/services/file.service.mjs +0 -42
- package/esm2022/services/keyboard.service.mjs +0 -128
- package/esm2022/services/navigation.service.mjs +0 -52
- package/esm2022/services/theme.service.mjs +0 -64
- package/esm2022/types/menu.mjs +0 -2
- package/esm2022/types/popup.mjs +0 -2
- package/esm2022/types/tooltip.mjs +0 -2
- package/esm2022/utils/index.mjs +0 -205
- package/utils/index.d.ts +0 -128
- /package/{components → core/components}/lazy-loader/lazy-loader.component.d.ts +0 -0
- /package/{components → core/components}/lazy-loader/lazy-loader.module.d.ts +0 -0
- /package/{components → core/components}/lazy-loader/lazy-loader.service.d.ts +0 -0
- /package/{components → core/components}/lazy-loader/types.d.ts +0 -0
- /package/{components → core/components}/parallax-card/parallax-card.component.d.ts +0 -0
- /package/{directives → core/directives}/image-cache.directive.d.ts +0 -0
- /package/{directives → core/directives}/utils.d.ts +0 -0
- /package/{pipes → core/pipes}/html-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/resource-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/script-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/style-bypass.pipe.d.ts +0 -0
- /package/{pipes → core/pipes}/url-bypass.pipe.d.ts +0 -0
- /package/{services → core/services}/dependency.service.d.ts +0 -0
- /package/{services → core/services}/dialog.service.d.ts +0 -0
- /package/{services → core/services}/fetch.service.d.ts +0 -0
- /package/{services → core/services}/file.service.d.ts +0 -0
- /package/{services → core/services}/keyboard.service.d.ts +0 -0
- /package/{services → core/services}/theme.service.d.ts +0 -0
- /package/{types → core/types}/popup.d.ts +0 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import { Input, ViewContainerRef, isDevMode, EventEmitter, Optional, ViewChild, Component, Inject, Output } from '@angular/core';
|
|
2
|
+
import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
|
|
3
|
+
import { MAT_DIALOG_DATA, } from '@angular/material/dialog';
|
|
4
|
+
import { debounceTime } from 'rxjs';
|
|
5
|
+
import { LazyLoaderService } from './lazy-loader.service';
|
|
6
|
+
import { stringToSlug } from '../../utils';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./lazy-loader.service";
|
|
9
|
+
import * as i2 from "@angular/cdk/dialog";
|
|
10
|
+
export class LazyLoaderComponent {
|
|
11
|
+
/**
|
|
12
|
+
* The id of the component that will be lazy loaded
|
|
13
|
+
*/
|
|
14
|
+
set id(data) {
|
|
15
|
+
this.originalId = data;
|
|
16
|
+
const id = stringToSlug(data);
|
|
17
|
+
// Check if there is a change to the loaded component's id
|
|
18
|
+
// if it's updated, we destroy and rehydrate the entire container
|
|
19
|
+
if (this.initialized && this._id != id) {
|
|
20
|
+
this._id = id;
|
|
21
|
+
this.ngAfterViewInit();
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this._id = id;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
;
|
|
28
|
+
set group(data) {
|
|
29
|
+
this.originalGroup = data;
|
|
30
|
+
const group = stringToSlug(data);
|
|
31
|
+
if (typeof group != "string" || !group)
|
|
32
|
+
return;
|
|
33
|
+
// If the group was updated, retry to bootstrap something into the container.
|
|
34
|
+
if (this.initialized && this._group != group) {
|
|
35
|
+
this._group = group;
|
|
36
|
+
this.ngAfterViewInit();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this._group = group;
|
|
40
|
+
}
|
|
41
|
+
get group() { return this._group; }
|
|
42
|
+
/**
|
|
43
|
+
* A map of inputs to bind to the child.
|
|
44
|
+
* Supports change detection. (May fail on deep JSON changes)
|
|
45
|
+
*
|
|
46
|
+
* ```html
|
|
47
|
+
* <lazy-loader component="MyLazyComponent"
|
|
48
|
+
* [inputs]="{
|
|
49
|
+
* prop1: true,
|
|
50
|
+
* prop2: false,
|
|
51
|
+
* complex: {
|
|
52
|
+
* a: true,
|
|
53
|
+
* b: 0
|
|
54
|
+
* }
|
|
55
|
+
* }"
|
|
56
|
+
* >
|
|
57
|
+
* </lazy-loader>
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
set inputs(data) {
|
|
61
|
+
if (data == undefined)
|
|
62
|
+
return;
|
|
63
|
+
let previous = this._inputs;
|
|
64
|
+
this._inputs = data;
|
|
65
|
+
if (data == undefined)
|
|
66
|
+
console.trace(data);
|
|
67
|
+
if (this.targetComponentFactory) {
|
|
68
|
+
const { inputs } = this.targetComponentFactory.ɵcmp;
|
|
69
|
+
const currentKeys = Object.keys(inputs);
|
|
70
|
+
const oldKeys = Object.keys(previous).filter(key => currentKeys.includes(key));
|
|
71
|
+
const newKeys = Object.keys(data).filter(key => currentKeys.includes(key));
|
|
72
|
+
const removed = oldKeys.filter(key => !newKeys.includes(key));
|
|
73
|
+
// ? perhaps set to null or undefined instead
|
|
74
|
+
removed.forEach(k => this.targetComponentInstance[k] = null);
|
|
75
|
+
this.bindInputs();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A map of outputs to bind from the child.
|
|
80
|
+
* Should support change detection.
|
|
81
|
+
* ```html
|
|
82
|
+
* <lazy-loader component="MyLazyComponent"
|
|
83
|
+
* [outputs]="{
|
|
84
|
+
* prop3: onOutputFire
|
|
85
|
+
* }"
|
|
86
|
+
* >
|
|
87
|
+
* </lazy-loader>
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
set outputs(data) {
|
|
91
|
+
let previous = this._outputs;
|
|
92
|
+
this._outputs = data;
|
|
93
|
+
if (this.targetComponentFactory) {
|
|
94
|
+
const { inputs } = this.targetComponentFactory.ɵcmp;
|
|
95
|
+
const currentKeys = Object.keys(inputs);
|
|
96
|
+
const removed = Object.keys(previous).filter(key => !currentKeys.includes(key));
|
|
97
|
+
removed.forEach(k => {
|
|
98
|
+
// Unsubscribe from observable
|
|
99
|
+
this.outputSubscriptions[k]?.unsubscribe();
|
|
100
|
+
delete this.targetComponentInstance[k];
|
|
101
|
+
});
|
|
102
|
+
this.bindOutputs();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
constructor(service, viewContainerRef, dialog, dialogArguments) {
|
|
106
|
+
this.service = service;
|
|
107
|
+
this.viewContainerRef = viewContainerRef;
|
|
108
|
+
this.dialog = dialog;
|
|
109
|
+
this.dialogArguments = dialogArguments;
|
|
110
|
+
this._group = "default";
|
|
111
|
+
this.outputSubscriptions = {};
|
|
112
|
+
/**
|
|
113
|
+
* Emits errors encountered when loading components
|
|
114
|
+
*/
|
|
115
|
+
this.componentLoadError = new EventEmitter();
|
|
116
|
+
/**
|
|
117
|
+
* Emits when the component is fully constructed
|
|
118
|
+
* and had it's inputs and outputs bound
|
|
119
|
+
* > before `OnInit`
|
|
120
|
+
*
|
|
121
|
+
* Returns the active class instance of the lazy-loaded component
|
|
122
|
+
*/
|
|
123
|
+
this.componentLoaded = new EventEmitter();
|
|
124
|
+
// Force 500ms delay before revealing the spinner
|
|
125
|
+
this.clearEmitter = new EventEmitter();
|
|
126
|
+
this.clearLoader$ = this.clearEmitter.pipe(debounceTime(300));
|
|
127
|
+
this.showEmitter = new EventEmitter();
|
|
128
|
+
this.showLoader$ = this.showEmitter.pipe(debounceTime(1));
|
|
129
|
+
this.subscriptions = [
|
|
130
|
+
this.clearLoader$.subscribe(() => {
|
|
131
|
+
this.isClearingLoader = true;
|
|
132
|
+
setTimeout(() => {
|
|
133
|
+
this.renderSpinner = false;
|
|
134
|
+
}, 300);
|
|
135
|
+
}),
|
|
136
|
+
this.showLoader$.subscribe(() => {
|
|
137
|
+
this.isClearingLoader = false;
|
|
138
|
+
this.renderSpinner = true;
|
|
139
|
+
})
|
|
140
|
+
];
|
|
141
|
+
this.renderSpinner = true; // whether we render the DOM for the spinner
|
|
142
|
+
this.isClearingLoader = false; // should the spinner start fading out
|
|
143
|
+
this.initialized = false;
|
|
144
|
+
this.config = LazyLoaderService.config;
|
|
145
|
+
this.err = LazyLoaderService.config.logger.err;
|
|
146
|
+
this.warn = LazyLoaderService.config.logger.warn;
|
|
147
|
+
this.log = LazyLoaderService.config.logger.log;
|
|
148
|
+
// First, check for dialog arguments
|
|
149
|
+
if (this.dialogArguments) {
|
|
150
|
+
this.inputs = this.dialogArguments.inputs || this.dialogArguments.data;
|
|
151
|
+
this.outputs = this.dialogArguments.outputs;
|
|
152
|
+
this.id = this.dialogArguments.id;
|
|
153
|
+
this.group = this.dialogArguments.group;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async ngAfterViewInit() {
|
|
157
|
+
this.ngOnDestroy(false);
|
|
158
|
+
this.isClearingLoader = false;
|
|
159
|
+
this.renderSpinner = true;
|
|
160
|
+
this.initialized = true;
|
|
161
|
+
if (!this._id) {
|
|
162
|
+
this.warn("No component was specified!");
|
|
163
|
+
return this.loadDefault();
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
const _entry = this.service.resolveRegistrationEntry(this.originalId, this.originalGroup);
|
|
167
|
+
if (!_entry || !_entry.entry) {
|
|
168
|
+
this.err(`Failed to find Component '${this._id}' in group '${this._group}' in registry!`);
|
|
169
|
+
return this.loadDefault();
|
|
170
|
+
}
|
|
171
|
+
const { entry, matchGroups } = _entry;
|
|
172
|
+
this._matchGroups = matchGroups;
|
|
173
|
+
// Download the "module" (the standalone component)
|
|
174
|
+
const bundle = this.targetModule = await entry.load();
|
|
175
|
+
// Check if there is some corruption on the bundle.
|
|
176
|
+
if (!bundle || typeof bundle != 'object') {
|
|
177
|
+
this.err(`Failed to load component/module for '${this._id}'! Parsed resource is invalid.`);
|
|
178
|
+
return this.loadError();
|
|
179
|
+
}
|
|
180
|
+
const modules = Object.keys(bundle)
|
|
181
|
+
.map(k => {
|
|
182
|
+
const entry = bundle[k];
|
|
183
|
+
// Strictly check for exported modules or standalone components
|
|
184
|
+
if (typeof entry == "function" && typeof entry["ɵfac"] == "function")
|
|
185
|
+
return entry;
|
|
186
|
+
return null;
|
|
187
|
+
})
|
|
188
|
+
.filter(e => e != null)
|
|
189
|
+
.filter(entry => {
|
|
190
|
+
entry['_isModule'] = !!entry['ɵmod']; // module
|
|
191
|
+
entry['_isComponent'] = !!entry['ɵcmp']; // component
|
|
192
|
+
return (entry['_isModule'] || entry['_isComponent']);
|
|
193
|
+
});
|
|
194
|
+
if (modules.length == 0) {
|
|
195
|
+
this.err(`Component/Module loaded for '${this._id}' has no exported components or modules!`);
|
|
196
|
+
return this.loadError();
|
|
197
|
+
}
|
|
198
|
+
const component = this.targetComponentFactory = this.service.resolveComponent(this._id, "default", modules);
|
|
199
|
+
if (!component) {
|
|
200
|
+
this.err(`Component '${this._id}' is invalid or corrupted!`);
|
|
201
|
+
return this.loadError();
|
|
202
|
+
}
|
|
203
|
+
// const componentRef = this.targetComponentContainerRef = createComponent(component as any, {
|
|
204
|
+
// environmentInjector: this.appRef.injector,
|
|
205
|
+
// elementInjector: this.injector,
|
|
206
|
+
// hostElement: this.viewContainerRef.element.nativeElement,
|
|
207
|
+
// // projectableNodes:
|
|
208
|
+
// });
|
|
209
|
+
// // this.targetRef = this.targetContainer.insert(this.targetComponentContainerRef.hostView);
|
|
210
|
+
// this.appRef.attachView(componentRef.hostView);
|
|
211
|
+
// Bootstrap the component into the container
|
|
212
|
+
const componentRef = this.targetComponentContainerRef = this.targetContainer.createComponent(component);
|
|
213
|
+
this.targetRef = this.targetContainer.insert(this.targetComponentContainerRef.hostView);
|
|
214
|
+
const instance = this.targetComponentInstance = componentRef['instance'];
|
|
215
|
+
this.bindInputs();
|
|
216
|
+
this.bindOutputs();
|
|
217
|
+
this.componentLoaded.next(instance);
|
|
218
|
+
this.instance = instance;
|
|
219
|
+
// Look for an observable called isLoading$ that will make us show/hide
|
|
220
|
+
// the same distractor that is used on basic loading
|
|
221
|
+
const isLoading$ = instance['ngxShowDistractor$'];
|
|
222
|
+
if (isLoading$ && typeof isLoading$.subscribe == "function") {
|
|
223
|
+
this.distractorSubscription = isLoading$.subscribe(loading => {
|
|
224
|
+
loading ? this.showEmitter.emit() : this.clearEmitter.emit();
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
this.clearEmitter.emit();
|
|
229
|
+
}
|
|
230
|
+
const name = Object.keys(bundle)[0];
|
|
231
|
+
this.log(`Loaded '${name}'`);
|
|
232
|
+
this.clearEmitter.emit();
|
|
233
|
+
return componentRef;
|
|
234
|
+
}
|
|
235
|
+
catch (ex) {
|
|
236
|
+
if (isDevMode()) {
|
|
237
|
+
console.warn("Component DDD " + this._id + " threw an error on mount!");
|
|
238
|
+
console.warn("This will cause you to see a 404 panel.");
|
|
239
|
+
console.error(ex);
|
|
240
|
+
}
|
|
241
|
+
// Network errors throw a toast and return an error component
|
|
242
|
+
if (ex && !isDevMode()) {
|
|
243
|
+
console.error("Uncaught error when loading component");
|
|
244
|
+
throw ex;
|
|
245
|
+
}
|
|
246
|
+
return this.loadDefault();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
ngOnDestroy(clearAll = true) {
|
|
250
|
+
// unsubscribe from all subscriptions
|
|
251
|
+
Object.entries(this.outputSubscriptions).forEach(([key, sub]) => {
|
|
252
|
+
sub.unsubscribe();
|
|
253
|
+
});
|
|
254
|
+
this.outputSubscriptions = {};
|
|
255
|
+
// Clear all things
|
|
256
|
+
if (clearAll) {
|
|
257
|
+
Object.entries(this.subscriptions).forEach(([key, sub]) => {
|
|
258
|
+
sub.unsubscribe();
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
this.distractorSubscription?.unsubscribe();
|
|
262
|
+
// Clear target container
|
|
263
|
+
this.targetRef?.destroy();
|
|
264
|
+
this.targetComponentContainerRef?.destroy();
|
|
265
|
+
this.targetContainer?.clear();
|
|
266
|
+
// Wipe the rest of the state clean
|
|
267
|
+
this.targetRef = null;
|
|
268
|
+
this.targetComponentContainerRef = null;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Bind the input values to the child component.
|
|
272
|
+
*/
|
|
273
|
+
bindInputs() {
|
|
274
|
+
if (!this._inputs || !this.targetComponentInstance)
|
|
275
|
+
return;
|
|
276
|
+
// Merge match groups
|
|
277
|
+
if (typeof this._matchGroups == "object") {
|
|
278
|
+
Object.entries(this._matchGroups).forEach(([key, val]) => {
|
|
279
|
+
if (typeof this._inputs[key] == 'undefined')
|
|
280
|
+
this._inputs[key] = val;
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
// forward-bind inputs
|
|
284
|
+
const { inputs } = this.targetComponentFactory.ɵcmp;
|
|
285
|
+
// Returns a list of entries that need to be set
|
|
286
|
+
// This makes it so that unnecessary setters are not invoked.
|
|
287
|
+
const updated = Object.entries(inputs).filter(([parentKey, childKey]) => {
|
|
288
|
+
return this.targetComponentInstance[childKey] != this._inputs[parentKey];
|
|
289
|
+
});
|
|
290
|
+
updated.forEach(([parentKey, childKey]) => {
|
|
291
|
+
if (this._inputs.hasOwnProperty(parentKey)) {
|
|
292
|
+
// Angular 19.2+
|
|
293
|
+
if (Array.isArray(childKey)) {
|
|
294
|
+
this.targetComponentInstance[childKey[0]] = this._inputs[parentKey];
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
this.targetComponentInstance[childKey] = this._inputs[parentKey];
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Bind the output handlers to the loaded child component
|
|
304
|
+
*/
|
|
305
|
+
bindOutputs() {
|
|
306
|
+
if (!this._outputs || !this.targetComponentInstance)
|
|
307
|
+
return;
|
|
308
|
+
const { outputs } = this.targetComponentFactory.ɵcmp;
|
|
309
|
+
// Get a list of unregistered outputs
|
|
310
|
+
const newOutputs = Object.entries(outputs).filter(([parentKey, childKey]) => {
|
|
311
|
+
return !this.outputSubscriptions[parentKey];
|
|
312
|
+
});
|
|
313
|
+
// Reverse bind via subscription
|
|
314
|
+
newOutputs.forEach(([parentKey, childKey]) => {
|
|
315
|
+
if (this._outputs.hasOwnProperty(parentKey)) {
|
|
316
|
+
const target = this.targetComponentInstance[childKey];
|
|
317
|
+
const outputs = this._outputs;
|
|
318
|
+
// Angular folks, stop making this so difficult.
|
|
319
|
+
const ctx = this.viewContainerRef['_hostLView'][8];
|
|
320
|
+
const sub = target.subscribe(outputs[parentKey].bind(ctx)); // Subscription
|
|
321
|
+
this.outputSubscriptions[parentKey] = sub;
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Load the "Default" component (404) screen normally.
|
|
327
|
+
* This is shown when the component id isn't in the
|
|
328
|
+
* registry or otherwise doesn't match
|
|
329
|
+
*
|
|
330
|
+
* This
|
|
331
|
+
*/
|
|
332
|
+
loadDefault() {
|
|
333
|
+
if (this.config.notFoundComponent)
|
|
334
|
+
this.targetContainer.createComponent(this.config.notFoundComponent);
|
|
335
|
+
this.clearEmitter.emit();
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Load the "Error" component.
|
|
339
|
+
* This is shown when we are able to resolve the component
|
|
340
|
+
* in the registry, but have some issue boostrapping the
|
|
341
|
+
* component into the viewContainer
|
|
342
|
+
*/
|
|
343
|
+
loadError() {
|
|
344
|
+
if (this.config.errorComponent)
|
|
345
|
+
this.targetContainer.createComponent(this.config.errorComponent);
|
|
346
|
+
this.clearEmitter.emit();
|
|
347
|
+
}
|
|
348
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LazyLoaderComponent, deps: [{ token: i1.LazyLoaderService }, { token: i0.ViewContainerRef, optional: true }, { token: i2.DialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
349
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LazyLoaderComponent, isStandalone: true, selector: "ngx-lazy-loader", inputs: { id: ["component", "id"], group: "group", inputs: "inputs", outputs: "outputs" }, outputs: { componentLoadError: "componentLoadError", componentLoaded: "componentLoaded" }, viewQueries: [{ propertyName: "targetContainer", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #content></ng-container>\n\n@if (renderSpinner) {\n <div\n class=\"ngx-lazy-loader-distractor\"\n [class.destroying]=\"isClearingLoader\"\n >\n @if (config.loaderDistractorComponent) {\n <ng-container\n [ngComponentOutlet]=\"config.loaderDistractorComponent\"\n />\n }\n @if (config.loaderDistractorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"config.loaderDistractorTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"\n />\n }\n </div>\n}\n", styles: [":host{display:contents;contain:content;z-index:1;position:relative}.ngx-lazy-loader-distractor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:var(--background-color, #212121);opacity:1;transition:opacity .3s ease;z-index:999999;animation:fade-in .3s ease}.ngx-lazy-loader-distractor.destroying{opacity:0;pointer-events:none}@keyframes fade-in{0%{opacity:0;pointer-events:none}to{opacity:1;pointer-events:all}}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
350
|
+
}
|
|
351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LazyLoaderComponent, decorators: [{
|
|
352
|
+
type: Component,
|
|
353
|
+
args: [{ selector: 'ngx-lazy-loader', imports: [NgComponentOutlet, NgTemplateOutlet], standalone: true, template: "<ng-container #content></ng-container>\n\n@if (renderSpinner) {\n <div\n class=\"ngx-lazy-loader-distractor\"\n [class.destroying]=\"isClearingLoader\"\n >\n @if (config.loaderDistractorComponent) {\n <ng-container\n [ngComponentOutlet]=\"config.loaderDistractorComponent\"\n />\n }\n @if (config.loaderDistractorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"config.loaderDistractorTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"\n />\n }\n </div>\n}\n", styles: [":host{display:contents;contain:content;z-index:1;position:relative}.ngx-lazy-loader-distractor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:var(--background-color, #212121);opacity:1;transition:opacity .3s ease;z-index:999999;animation:fade-in .3s ease}.ngx-lazy-loader-distractor.destroying{opacity:0;pointer-events:none}@keyframes fade-in{0%{opacity:0;pointer-events:none}to{opacity:1;pointer-events:all}}\n"] }]
|
|
354
|
+
}], ctorParameters: () => [{ type: i1.LazyLoaderService }, { type: i0.ViewContainerRef, decorators: [{
|
|
355
|
+
type: Optional
|
|
356
|
+
}] }, { type: i2.DialogRef, decorators: [{
|
|
357
|
+
type: Optional
|
|
358
|
+
}] }, { type: undefined, decorators: [{
|
|
359
|
+
type: Optional
|
|
360
|
+
}, {
|
|
361
|
+
type: Inject,
|
|
362
|
+
args: [MAT_DIALOG_DATA]
|
|
363
|
+
}] }], propDecorators: { targetContainer: [{
|
|
364
|
+
type: ViewChild,
|
|
365
|
+
args: ["content", { read: ViewContainerRef }]
|
|
366
|
+
}], id: [{
|
|
367
|
+
type: Input,
|
|
368
|
+
args: ["component"]
|
|
369
|
+
}], group: [{
|
|
370
|
+
type: Input,
|
|
371
|
+
args: ["group"]
|
|
372
|
+
}], inputs: [{
|
|
373
|
+
type: Input,
|
|
374
|
+
args: ["inputs"]
|
|
375
|
+
}], outputs: [{
|
|
376
|
+
type: Input,
|
|
377
|
+
args: ["outputs"]
|
|
378
|
+
}], componentLoadError: [{
|
|
379
|
+
type: Output
|
|
380
|
+
}], componentLoaded: [{
|
|
381
|
+
type: Output
|
|
382
|
+
}] } });
|
|
383
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL2NvcmUvY29tcG9uZW50cy9sYXp5LWxvYWRlci9sYXp5LWxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vY29yZS9jb21wb25lbnRzL2xhenktbG9hZGVyL2xhenktbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFnQixZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDaEwsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsR0FBRyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBbUIsWUFBWSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7O0FBVzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCOztPQUVHO0lBQ0gsSUFBd0IsRUFBRSxDQUFDLElBQVk7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlCLDBEQUEwRDtRQUMxRCxpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7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TUFBTTtnQkFTRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIGlzRGV2TW9kZSwgQ29tcG9uZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsLCBWaWV3Q2hpbGQsIENvbXBvbmVudCwgSW5qZWN0LCBPdXRwdXQsIE5nTW9kdWxlLCBBZnRlclZpZXdJbml0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXp5TG9hZGVyU2VydmljZSB9IGZyb20gJy4vbGF6eS1sb2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBzdHJpbmdUb1NsdWcgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDb21waWxlZEJ1bmRsZSwgTmd4TGF6eUxvYWRlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LWxhenktbG9hZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGF6eS1sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWyAnLi9sYXp5LWxvYWRlci5jb21wb25lbnQuc2NzcycgXSxcbiAgICBpbXBvcnRzOiBbIE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0IF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMYXp5TG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZChcImNvbnRlbnRcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHRhcmdldENvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKlxuICAgICAqICEgSGVyZSBiZSBkcmFnb25zLlxuICAgICAqIE9ubHkgdGhlIGJyYXZlc3Qgb2YgQWR2ZW50dXJlcnMgY2FuIHN1cnZpdmUgdGhlIGJhdHRsZXMgYmVsb3csXG4gICAgICogYW5kIHRoZXkgbXVzdCBiZSB0cmFpbmVkIGFuZCByZWFkeSBmb3IgdGhlIGdydWVsbGluZyBqb3VybmV5IGFoZWFkLlxuICAgICAqIE1hbnkgYSBzb3VsIGhhcyB0cmllZCB0byBiZXN0IHRoZXNlIERyYWdvbnMsIHlldCBvbmx5IG9uZSBoYXNcbiAgICAgKiBzdWNjZWVkZWQgc2luY2Ugb3VyIGZvdW5kaW5nLlxuICAgICAqXG4gICAgICogVEw7RFIgLS0gRG9uJ3QgbWVzcyB3aXRoIHRoaXMgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLlxuICAgICAqICAgICBUaGlzIGlzIGNlbnRyYWwgdG8gYSB0b24gb2YgbW92aW5nIHBhcnRzIC0tIGJyZWFraW5nIGl0IHdpbGxcbiAgICAgKiAgICAgY2F1c2UgbW9yZSBjb2xsYXRlcmFsIGRhbWFnZSB0aGFuIHlvdSBtYXkgcmVhbGl6ZS5cbiAgICAgKi9cblxuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBvcmlnaW5hbElkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGlkIG9mIHRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGJlIGxhenkgbG9hZGVkXG4gICAgICovXG4gICAgQElucHV0KFwiY29tcG9uZW50XCIpIHNldCBpZChkYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5hbElkID0gZGF0YTtcbiAgICAgICAgY29uc3QgaWQgPSBzdHJpbmdUb1NsdWcoZGF0YSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSBjaGFuZ2UgdG8gdGhlIGxvYWRlZCBjb21wb25lbnQncyBpZFxuICAgICAgICAvLyBpZiBpdCdzIHVwZGF0ZWQsIHdlIGRlc3Ryb3kgYW5kIHJlaHlkcmF0ZSB0aGUgZW50aXJlIGNvbnRhaW5lclxuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCAmJiB0aGlzLl9pZCAhPSBpZCkge1xuICAgICAgICAgICAgdGhpcy5faWQgPSBpZDtcbiAgICAgICAgICAgIHRoaXMubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pZCA9IGlkO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgX2dyb3VwID0gXCJkZWZhdWx0XCI7XG4gICAgcHJpdmF0ZSBvcmlnaW5hbEdyb3VwOiBzdHJpbmc7XG4gICAgQElucHV0KFwiZ3JvdXBcIikgc2V0IGdyb3VwKGRhdGE6IHN0cmluZykge1xuICAgICAgICB0aGlzLm9yaWdpbmFsR3JvdXAgPSBkYXRhO1xuICAgICAgICBjb25zdCBncm91cCA9IHN0cmluZ1RvU2x1ZyhkYXRhKTtcblxuICAgICAgICBpZiAodHlwZW9mIGdyb3VwICE9IFwic3RyaW5nXCIgfHwgIWdyb3VwKSByZXR1cm47XG5cbiAgICAgICAgLy8gSWYgdGhlIGdyb3VwIHdhcyB1cGRhdGVkLCByZXRyeSB0byBib290c3RyYXAgc29tZXRoaW5nIGludG8gdGhlIGNvbnRhaW5lci5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgJiYgdGhpcy5fZ3JvdXAgIT0gZ3JvdXApIHtcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwID0gZ3JvdXA7XG5cbiAgICAgICAgICAgIHRoaXMubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ncm91cCA9IGdyb3VwO1xuICAgIH1cbiAgICBnZXQgZ3JvdXAoKSB7IHJldHVybiB0aGlzLl9ncm91cCB9XG5cbiAgICBwcml2YXRlIF9tYXRjaEdyb3VwczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBwcml2YXRlIF9pbnB1dHM6IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xuICAgIC8qKlxuICAgICAqIEEgbWFwIG9mIGlucHV0cyB0byBiaW5kIHRvIHRoZSBjaGlsZC5cbiAgICAgKiBTdXBwb3J0cyBjaGFuZ2UgZGV0ZWN0aW9uLiAoTWF5IGZhaWwgb24gZGVlcCBKU09OIGNoYW5nZXMpXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGxhenktbG9hZGVyIGNvbXBvbmVudD1cIk15TGF6eUNvbXBvbmVudFwiXG4gICAgICogICAgICAgW2lucHV0c109XCJ7XG4gICAgICogICAgICAgICAgcHJvcDE6IHRydWUsXG4gICAgICogICAgICAgICAgcHJvcDI6IGZhbHNlLFxuICAgICAqICAgICAgICAgIGNvbXBsZXg6IHtcbiAgICAgKiAgICAgICAgICAgICAgYTogdHJ1ZSxcbiAgICAgKiAgICAgICAgICAgICAgYjogMFxuICAgICAqICAgICAgICAgIH1cbiAgICAgKiAgICAgICB9XCJcbiAgICAgKiA+XG4gICAgICogPC9sYXp5LWxvYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoXCJpbnB1dHNcIikgc2V0IGlucHV0cyhkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSkge1xuICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBsZXQgcHJldmlvdXMgPSB0aGlzLl9pbnB1dHM7XG4gICAgICAgIHRoaXMuX2lucHV0cyA9IGRhdGE7XG4gICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGNvbnNvbGUudHJhY2UoZGF0YSk7XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0Q29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgICAgICAgY29uc3QgeyBpbnB1dHMgfSA9IHRoaXMudGFyZ2V0Q29tcG9uZW50RmFjdG9yeS7JtWNtcDtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dHMpO1xuXG4gICAgICAgICAgICBjb25zdCBvbGRLZXlzID0gT2JqZWN0LmtleXMocHJldmlvdXMpLmZpbHRlcihrZXkgPT4gY3VycmVudEtleXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgICAgICAgICBjb25zdCBuZXdLZXlzID0gT2JqZWN0LmtleXMoZGF0YSkuZmlsdGVyKGtleSA9PiBjdXJyZW50S2V5cy5pbmNsdWRlcyhrZXkpKTtcblxuICAgICAgICAgICAgY29uc3QgcmVtb3ZlZCA9IG9sZEtleXMuZmlsdGVyKGtleSA9PiAhbmV3S2V5cy5pbmNsdWRlcyhrZXkpKTtcblxuICAgICAgICAgICAgLy8gPyBwZXJoYXBzIHNldCB0byBudWxsIG9yIHVuZGVmaW5lZCBpbnN0ZWFkXG4gICAgICAgICAgICByZW1vdmVkLmZvckVhY2goayA9PiB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2tdID0gbnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMuYmluZElucHV0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIG91dHB1dFN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uOyB9ID0ge307XG4gICAgcHJpdmF0ZSBfb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbjsgfTtcbiAgICAvKipcbiAgICAgKiBBIG1hcCBvZiBvdXRwdXRzIHRvIGJpbmQgZnJvbSB0aGUgY2hpbGQuXG4gICAgICogU2hvdWxkIHN1cHBvcnQgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGxhenktbG9hZGVyIGNvbXBvbmVudD1cIk15TGF6eUNvbXBvbmVudFwiXG4gICAgICogICAgICAgW291dHB1dHNdPVwie1xuICAgICAqICAgICAgICAgICBwcm9wMzogb25PdXRwdXRGaXJlXG4gICAgICogICAgICAgfVwiXG4gICAgICogPlxuICAgICAqIDwvbGF6eS1sb2FkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KFwib3V0cHV0c1wiKSBzZXQgb3V0cHV0cyhkYXRhOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uOyB9KSB7XG4gICAgICAgIGxldCBwcmV2aW91cyA9IHRoaXMuX291dHB1dHM7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSBkYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBPYmplY3Qua2V5cyhwcmV2aW91cykuZmlsdGVyKGtleSA9PiAhY3VycmVudEtleXMuaW5jbHVkZXMoa2V5KSk7XG5cbiAgICAgICAgICAgIHJlbW92ZWQuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICAgICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9ic2VydmFibGVcbiAgICAgICAgICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnNba10/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2Vba107XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5iaW5kT3V0cHV0cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyBjb21wb25lbnRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIGNvbXBvbmVudExvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBmdWxseSBjb25zdHJ1Y3RlZFxuICAgICAqIGFuZCBoYWQgaXQncyBpbnB1dHMgYW5kIG91dHB1dHMgYm91bmRcbiAgICAgKiA+IGJlZm9yZSBgT25Jbml0YFxuICAgICAqXG4gICAgICogUmV0dXJucyB0aGUgYWN0aXZlIGNsYXNzIGluc3RhbmNlIG9mIHRoZSBsYXp5LWxvYWRlZCBjb21wb25lbnRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgY29tcG9uZW50TG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQgdGhhdCBpcyBjdXJyZW50bHkgbG9hZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBpbnN0YW5jZTogYW55O1xuXG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXIgdGhhdCBwcm92aWRlcyB0aGUgY29tcG9uZW50IGRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIHRhcmdldE1vZHVsZTogQ29tcGlsZWRCdW5kbGU7XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgZGVmaW5pdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgdGFyZ2V0Q29tcG9uZW50RmFjdG9yeTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQWN0aXZlIGNvbXBvbmVudCBjb250YWluZXIgcmVmZXJlbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YXJnZXRDb21wb25lbnRDb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIHByaXZhdGUgdGFyZ2V0UmVmOiBhbnk7XG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQgY2xhc3MgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIHRhcmdldENvbXBvbmVudEluc3RhbmNlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpcHRpb24gd2l0aCB0cnVlL2ZhbHNlIHN0YXRlIG9uIHdoZXRoZXIgdGhlIGRpc3RyYWN0b3Igc2hvdWxkIGJlXG4gICAgICovXG4gICAgcHJpdmF0ZSBkaXN0cmFjdG9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgY29uZmlnOiBOZ3hMYXp5TG9hZGVyQ29uZmlnO1xuICAgIHByaXZhdGUgZXJyO1xuICAgIHByaXZhdGUgd2FybjtcbiAgICBwcml2YXRlIGxvZztcblxuICAgIC8vIEZvcmNlIDUwMG1zIGRlbGF5IGJlZm9yZSByZXZlYWxpbmcgdGhlIHNwaW5uZXJcbiAgICBwcml2YXRlIGNsZWFyRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBwcml2YXRlIGNsZWFyTG9hZGVyJCA9IHRoaXMuY2xlYXJFbWl0dGVyLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpO1xuXG4gICAgcHJpdmF0ZSBzaG93RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBwcml2YXRlIHNob3dMb2FkZXIkID0gdGhpcy5zaG93RW1pdHRlci5waXBlKGRlYm91bmNlVGltZSgxKSk7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBbXG4gICAgICAgIHRoaXMuY2xlYXJMb2FkZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ2xlYXJpbmdMb2FkZXIgPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclNwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sIDMwMClcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhcmluZ0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJTcGlubmVyID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICBdO1xuXG4gICAgcHVibGljIHJlbmRlclNwaW5uZXIgPSB0cnVlOyAvLyB3aGV0aGVyIHdlIHJlbmRlciB0aGUgRE9NIGZvciB0aGUgc3Bpbm5lclxuICAgIHB1YmxpYyBpc0NsZWFyaW5nTG9hZGVyID0gZmFsc2U7IC8vIHNob3VsZCB0aGUgc3Bpbm5lciBzdGFydCBmYWRpbmcgb3V0XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlOiBMYXp5TG9hZGVyU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGlhbG9nOiBEaWFsb2dSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGlhbG9nQXJndW1lbnRzXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gTGF6eUxvYWRlclNlcnZpY2UuY29uZmlnO1xuICAgICAgICB0aGlzLmVyciA9IExhenlMb2FkZXJTZXJ2aWNlLmNvbmZpZy5sb2dnZXIuZXJyO1xuICAgICAgICB0aGlzLndhcm4gPSBMYXp5TG9hZGVyU2VydmljZS5jb25maWcubG9nZ2VyLndhcm47XG4gICAgICAgIHRoaXMubG9nID0gTGF6eUxvYWRlclNlcnZpY2UuY29uZmlnLmxvZ2dlci5sb2c7XG5cbiAgICAgICAgLy8gRmlyc3QsIGNoZWNrIGZvciBkaWFsb2cgYXJndW1lbnRzXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0FyZ3VtZW50cykge1xuICAgICAgICAgICAgdGhpcy5pbnB1dHMgPSB0aGlzLmRpYWxvZ0FyZ3VtZW50cy5pbnB1dHMgfHwgdGhpcy5kaWFsb2dBcmd1bWVudHMuZGF0YTtcbiAgICAgICAgICAgIHRoaXMub3V0cHV0cyA9IHRoaXMuZGlhbG9nQXJndW1lbnRzLm91dHB1dHM7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5kaWFsb2dBcmd1bWVudHMuaWQ7XG4gICAgICAgICAgICB0aGlzLmdyb3VwID0gdGhpcy5kaWFsb2dBcmd1bWVudHMuZ3JvdXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm5nT25EZXN0cm95KGZhbHNlKTtcbiAgICAgICAgdGhpcy5pc0NsZWFyaW5nTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVuZGVyU3Bpbm5lciA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICghdGhpcy5faWQpIHtcbiAgICAgICAgICAgIHRoaXMud2FybihcIk5vIGNvbXBvbmVudCB3YXMgc3BlY2lmaWVkIVwiKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgX2VudHJ5ID0gdGhpcy5zZXJ2aWNlLnJlc29sdmVSZWdpc3RyYXRpb25FbnRyeSh0aGlzLm9yaWdpbmFsSWQsIHRoaXMub3JpZ2luYWxHcm91cCk7XG4gICAgICAgICAgICBpZiAoIV9lbnRyeSB8fCAhX2VudHJ5LmVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnIoYEZhaWxlZCB0byBmaW5kIENvbXBvbmVudCAnJHt0aGlzLl9pZH0nIGluIGdyb3VwICcke3RoaXMuX2dyb3VwfScgaW4gcmVnaXN0cnkhYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBlbnRyeSwgbWF0Y2hHcm91cHMgfSA9IF9lbnRyeTtcbiAgICAgICAgICAgIHRoaXMuX21hdGNoR3JvdXBzID0gbWF0Y2hHcm91cHM7XG5cbiAgICAgICAgICAgIC8vIERvd25sb2FkIHRoZSBcIm1vZHVsZVwiICh0aGUgc3RhbmRhbG9uZSBjb21wb25lbnQpXG4gICAgICAgICAgICBjb25zdCBidW5kbGU6IENvbXBpbGVkQnVuZGxlID0gdGhpcy50YXJnZXRNb2R1bGUgPSBhd2FpdCBlbnRyeS5sb2FkKCk7XG5cblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgc29tZSBjb3JydXB0aW9uIG9uIHRoZSBidW5kbGUuXG4gICAgICAgICAgICBpZiAoIWJ1bmRsZSB8fCB0eXBlb2YgYnVuZGxlICE9ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnIoYEZhaWxlZCB0byBsb2FkIGNvbXBvbmVudC9tb2R1bGUgZm9yICcke3RoaXMuX2lkfSchIFBhcnNlZCByZXNvdXJjZSBpcyBpbnZhbGlkLmApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRFcnJvcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtb2R1bGVzID0gT2JqZWN0LmtleXMoYnVuZGxlKVxuICAgICAgICAgICAgICAgIC5tYXAoayA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gYnVuZGxlW2tdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN0cmljdGx5IGNoZWNrIGZvciBleHBvcnRlZCBtb2R1bGVzIG9yIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgZW50cnlbXCLJtWZhY1wiXSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZpbHRlcihlID0+IGUgIT0gbnVsbClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZW50cnlbJ19pc01vZHVsZSddID0gISFlbnRyeVsnybVtb2QnXTsgLy8gbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgIGVudHJ5WydfaXNDb21wb25lbnQnXSA9ICEhZW50cnlbJ8m1Y21wJ107IC8vIGNvbXBvbmVudFxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoZW50cnlbJ19pc01vZHVsZSddIHx8IGVudHJ5WydfaXNDb21wb25lbnQnXSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChtb2R1bGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnIoYENvbXBvbmVudC9Nb2R1bGUgbG9hZGVkIGZvciAnJHt0aGlzLl9pZH0nIGhhcyBubyBleHBvcnRlZCBjb21wb25lbnRzIG9yIG1vZHVsZXMhYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZEVycm9yKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMudGFyZ2V0Q29tcG9uZW50RmFjdG9yeSA9IHRoaXMuc2VydmljZS5yZXNvbHZlQ29tcG9uZW50KHRoaXMuX2lkLCBcImRlZmF1bHRcIiwgbW9kdWxlcyk7XG5cbiAgICAgICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnIoYENvbXBvbmVudCAnJHt0aGlzLl9pZH0nIGlzIGludmFsaWQgb3IgY29ycnVwdGVkIWApO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRFcnJvcigpO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCBhcyBhbnksIHtcbiAgICAgICAgICAgIC8vICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmFwcFJlZi5pbmplY3RvcixcbiAgICAgICAgICAgIC8vICAgICBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICAvLyAgICAgaG9zdEVsZW1lbnQ6IHRoaXMudmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAvLyAgICAgLy8gcHJvamVjdGFibGVOb2RlczpcbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgLy8gLy8gdGhpcy50YXJnZXRSZWYgPSB0aGlzLnRhcmdldENvbnRhaW5lci5pbnNlcnQodGhpcy50YXJnZXRDb21wb25lbnRDb250YWluZXJSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgLy8gdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgICAgICAgICAvLyBCb290c3RyYXAgdGhlIGNvbXBvbmVudCBpbnRvIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmID0gdGhpcy50YXJnZXRDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCBhcyBhbnkpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXRSZWYgPSB0aGlzLnRhcmdldENvbnRhaW5lci5pbnNlcnQodGhpcy50YXJnZXRDb21wb25lbnRDb250YWluZXJSZWYuaG9zdFZpZXcpO1xuXG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZTogYW55ID0gdGhpcy50YXJnZXRDb21wb25lbnRJbnN0YW5jZSA9IGNvbXBvbmVudFJlZlsnaW5zdGFuY2UnXTtcblxuICAgICAgICAgICAgdGhpcy5iaW5kSW5wdXRzKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRPdXRwdXRzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TG9hZGVkLm5leHQoaW5zdGFuY2UpO1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgICAgICAvLyBMb29rIGZvciBhbiBvYnNlcnZhYmxlIGNhbGxlZCBpc0xvYWRpbmckIHRoYXQgd2lsbCBtYWtlIHVzIHNob3cvaGlkZVxuICAgICAgICAgICAgLy8gdGhlIHNhbWUgZGlzdHJhY3RvciB0aGF0IGlzIHVzZWQgb24gYmFzaWMgbG9hZGluZ1xuICAgICAgICAgICAgY29uc3QgaXNMb2FkaW5nJCA9IGluc3RhbmNlWyduZ3hTaG93RGlzdHJhY3RvciQnXSBhcyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgICAgICAgICAgIGlmIChpc0xvYWRpbmckICYmIHR5cGVvZiBpc0xvYWRpbmckLnN1YnNjcmliZSA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3RyYWN0b3JTdWJzY3JpcHRpb24gPSBpc0xvYWRpbmckLnN1YnNjcmliZShsb2FkaW5nID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZyA/IHRoaXMuc2hvd0VtaXR0ZXIuZW1pdCgpIDogdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gT2JqZWN0LmtleXMoYnVuZGxlKVswXTtcbiAgICAgICAgICAgIHRoaXMubG9nKGBMb2FkZWQgJyR7bmFtZX0nYCk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRW1pdHRlci5lbWl0KCk7XG5cbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGV4KSB7XG5cbiAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkNvbXBvbmVudCBEREQgXCIgKyB0aGlzLl9pZCArIFwiIHRocmV3IGFuIGVycm9yIG9uIG1vdW50IVwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJUaGlzIHdpbGwgY2F1c2UgeW91IHRvIHNlZSBhIDQwNCBwYW5lbC5cIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihleCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE5ldHdvcmsgZXJyb3JzIHRocm93IGEgdG9hc3QgYW5kIHJldHVybiBhbiBlcnJvciBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChleCAmJiAhaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVW5jYXVnaHQgZXJyb3Igd2hlbiBsb2FkaW5nIGNvbXBvbmVudFwiKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KGNsZWFyQWxsID0gdHJ1ZSkge1xuICAgICAgICAvLyB1bnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMub3V0cHV0U3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoW2tleSwgc3ViXSkgPT4ge1xuICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm91dHB1dFN1YnNjcmlwdGlvbnMgPSB7fTtcblxuICAgICAgICAvLyBDbGVhciBhbGwgdGhpbmdzXG4gICAgICAgIGlmIChjbGVhckFsbCkge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5zdWJzY3JpcHRpb25zKS5mb3JFYWNoKChba2V5LCBzdWJdKSA9PiB7XG4gICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzdHJhY3RvclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAvLyBDbGVhciB0YXJnZXQgY29udGFpbmVyXG4gICAgICAgIHRoaXMudGFyZ2V0UmVmPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0Q29tcG9uZW50Q29udGFpbmVyUmVmPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0Q29udGFpbmVyPy5jbGVhcigpO1xuXG4gICAgICAgIC8vIFdpcGUgdGhlIHJlc3Qgb2YgdGhlIHN0YXRlIGNsZWFuXG4gICAgICAgIHRoaXMudGFyZ2V0UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRDb21wb25lbnRDb250YWluZXJSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJpbmQgdGhlIGlucHV0IHZhbHVlcyB0byB0aGUgY2hpbGQgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgYmluZElucHV0cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dHMgfHwgIXRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2UpIHJldHVybjtcblxuICAgICAgICAvLyBNZXJnZSBtYXRjaCBncm91cHNcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9tYXRjaEdyb3VwcyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9tYXRjaEdyb3VwcykuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5faW5wdXRzW2tleV0gPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0c1trZXldID0gdmFsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmb3J3YXJkLWJpbmQgaW5wdXRzXG4gICAgICAgIGNvbnN0IHsgaW5wdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb2YgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgc2V0XG4gICAgICAgIC8vIFRoaXMgbWFrZXMgaXQgc28gdGhhdCB1bm5lY2Vzc2FyeSBzZXR0ZXJzIGFyZSBub3QgaW52b2tlZC5cbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IE9iamVjdC5lbnRyaWVzKGlucHV0cykuZmlsdGVyKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2NoaWxkS2V5XSAhPSB0aGlzLl9pbnB1dHNbcGFyZW50S2V5XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdXBkYXRlZC5mb3JFYWNoKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZyB8IFtzdHJpbmcsIG51bWJlciwgdW5rbm93bl1dKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5wdXRzLmhhc093blByb3BlcnR5KHBhcmVudEtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBbmd1bGFyIDE5LjIrXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRLZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0Q29tcG9uZW50SW5zdGFuY2VbY2hpbGRLZXlbMF1dID0gdGhpcy5faW5wdXRzW3BhcmVudEtleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2NoaWxkS2V5XSA9IHRoaXMuX2lucHV0c1twYXJlbnRLZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmluZCB0aGUgb3V0cHV0IGhhbmRsZXJzIHRvIHRoZSBsb2FkZWQgY2hpbGQgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBiaW5kT3V0cHV0cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9vdXRwdXRzIHx8ICF0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgeyBvdXRwdXRzIH0gPSB0aGlzLnRhcmdldENvbXBvbmVudEZhY3RvcnkuybVjbXA7XG5cbiAgICAgICAgLy8gR2V0IGEgbGlzdCBvZiB1bnJlZ2lzdGVyZWQgb3V0cHV0c1xuICAgICAgICBjb25zdCBuZXdPdXRwdXRzID0gT2JqZWN0LmVudHJpZXMob3V0cHV0cykuZmlsdGVyKChbcGFyZW50S2V5LCBjaGlsZEtleV06IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zW3BhcmVudEtleV07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJldmVyc2UgYmluZCB2aWEgc3Vic2NyaXB0aW9uXG4gICAgICAgIG5ld091dHB1dHMuZm9yRWFjaCgoW3BhcmVudEtleSwgY2hpbGRLZXldOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fb3V0cHV0cy5oYXNPd25Qcm9wZXJ0eShwYXJlbnRLZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0OiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSB0aGlzLnRhcmdldENvbXBvbmVudEluc3RhbmNlW2NoaWxkS2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRzID0gdGhpcy5fb3V0cHV0cztcblxuICAgICAgICAgICAgICAgIC8vIEFuZ3VsYXIgZm9sa3MsIHN0b3AgbWFraW5nIHRoaXMgc28gZGlmZmljdWx0LlxuICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMudmlld0NvbnRhaW5lclJlZlsnX2hvc3RMVmlldyddWzhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YiA9IHRhcmdldC5zdWJzY3JpYmUob3V0cHV0c1twYXJlbnRLZXldLmJpbmQoY3R4KSk7IC8vIFN1YnNjcmlwdGlvblxuXG4gICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRTdWJzY3JpcHRpb25zW3BhcmVudEtleV0gPSBzdWI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWQgdGhlIFwiRGVmYXVsdFwiIGNvbXBvbmVudCAoNDA0KSBzY3JlZW4gbm9ybWFsbHkuXG4gICAgICogVGhpcyBpcyBzaG93biB3aGVuIHRoZSBjb21wb25lbnQgaWQgaXNuJ3QgaW4gdGhlXG4gICAgICogcmVnaXN0cnkgb3Igb3RoZXJ3aXNlIGRvZXNuJ3QgbWF0Y2hcbiAgICAgKlxuICAgICAqIFRoaXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWREZWZhdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcubm90Rm91bmRDb21wb25lbnQpXG4gICAgICAgICAgICB0aGlzLnRhcmdldENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy5jb25maWcubm90Rm91bmRDb21wb25lbnQpO1xuXG4gICAgICAgIHRoaXMuY2xlYXJFbWl0dGVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHRoZSBcIkVycm9yXCIgY29tcG9uZW50LlxuICAgICAqIFRoaXMgaXMgc2hvd24gd2hlbiB3ZSBhcmUgYWJsZSB0byByZXNvbHZlIHRoZSBjb21wb25lbnRcbiAgICAgKiBpbiB0aGUgcmVnaXN0cnksIGJ1dCBoYXZlIHNvbWUgaXNzdWUgYm9vc3RyYXBwaW5nIHRoZVxuICAgICAqIGNvbXBvbmVudCBpbnRvIHRoZSB2aWV3Q29udGFpbmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkRXJyb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5lcnJvckNvbXBvbmVudClcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmNvbmZpZy5lcnJvckNvbXBvbmVudCk7XG5cbiAgICAgICAgdGhpcy5jbGVhckVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI2NvbnRlbnQ+PC9uZy1jb250YWluZXI+XG5cbkBpZiAocmVuZGVyU3Bpbm5lcikge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJuZ3gtbGF6eS1sb2FkZXItZGlzdHJhY3RvclwiXG4gICAgICAgIFtjbGFzcy5kZXN0cm95aW5nXT1cImlzQ2xlYXJpbmdMb2FkZXJcIlxuICAgID5cbiAgICAgICAgQGlmIChjb25maWcubG9hZGVyRGlzdHJhY3RvckNvbXBvbmVudCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ0NvbXBvbmVudE91dGxldF09XCJjb25maWcubG9hZGVyRGlzdHJhY3RvckNvbXBvbmVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29uZmlnLmxvYWRlckRpc3RyYWN0b3JUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbmZpZy5sb2FkZXJEaXN0cmFjdG9yVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICckaW1wbGljaXQnOiBpbnB1dHMgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { __decorate, __param } from "tslib";
|
|
2
|
+
import { NgModule, Optional } from '@angular/core';
|
|
3
|
+
import { LazyLoaderComponent } from './lazy-loader.component';
|
|
4
|
+
import { LazyLoaderService, NGX_LAZY_LOADER_CONFIG } from './lazy-loader.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LazyLoaderModule {
|
|
7
|
+
static forRoot(config) {
|
|
8
|
+
return ({
|
|
9
|
+
ngModule: LazyLoaderModule,
|
|
10
|
+
providers: [
|
|
11
|
+
{
|
|
12
|
+
provide: NGX_LAZY_LOADER_CONFIG,
|
|
13
|
+
useValue: config
|
|
14
|
+
},
|
|
15
|
+
LazyLoaderService
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LazyLoaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
20
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: LazyLoaderModule, imports: [LazyLoaderComponent], exports: [LazyLoaderComponent] }); }
|
|
21
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LazyLoaderModule }); }
|
|
22
|
+
}
|
|
23
|
+
__decorate([
|
|
24
|
+
__param(0, Optional())
|
|
25
|
+
], LazyLoaderModule, "forRoot", null);
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LazyLoaderModule, decorators: [{
|
|
27
|
+
type: NgModule,
|
|
28
|
+
args: [{
|
|
29
|
+
imports: [LazyLoaderComponent],
|
|
30
|
+
exports: [LazyLoaderComponent]
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL2NvcmUvY29tcG9uZW50cy9sYXp5LWxvYWRlci9sYXp5LWxvYWRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNbEYsTUFBTSxPQUFPLGdCQUFnQjtJQUNYLEFBQVAsTUFBTSxDQUFDLE9BQU8sQ0FBYSxNQUEyQjtRQUN6RCxPQUFPLENBQUM7WUFDSixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsc0JBQXNCO29CQUMvQixRQUFRLEVBQUUsTUFBTTtpQkFDbkI7Z0JBQ0QsaUJBQWlCO2FBQ3BCO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FaUSxnQkFBZ0I7Z0hBQWhCLGdCQUFnQixZQUhmLG1CQUFtQixhQUNuQixtQkFBbUI7Z0hBRXBCLGdCQUFnQjs7QUFDWDtJQUFTLFdBQUEsUUFBUSxFQUFFLENBQUE7cUNBV2hDOzRGQVpRLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4TGF6eUxvYWRlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTGF6eUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbGF6eS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExhenlMb2FkZXJTZXJ2aWNlLCBOR1hfTEFaWV9MT0FERVJfQ09ORklHIH0gZnJvbSAnLi9sYXp5LWxvYWRlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTGF6eUxvYWRlckNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0xhenlMb2FkZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIExhenlMb2FkZXJNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChAT3B0aW9uYWwoKSBjb25maWc6IE5neExhenlMb2FkZXJDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExhenlMb2FkZXJNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICBuZ01vZHVsZTogTGF6eUxvYWRlck1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTkdYX0xBWllfTE9BREVSX0NPTkZJRyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgTGF6eUxvYWRlclNlcnZpY2VcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|