@dotglitch/ngx-common 2.0.0 → 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/README.md +37 -22
- package/{components/command-palette → command-palette}/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/{components/command-palette → command-palette}/command-palette.component.d.ts +1 -1
- package/{services → command-palette}/command-palette.service.d.ts +2 -2
- package/command-palette/index.d.ts +2 -0
- package/{components/command-palette → command-palette}/shortcut/shortcut.component.d.ts +1 -1
- 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} +12 -20
- package/{services → core/services}/navigation.service.d.ts +1 -1
- package/core/utils/index.d.ts +18 -0
- package/esm2022/{components/command-palette → command-palette}/breadcrumb/breadcrumb.component.mjs +1 -1
- 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/{components/command-palette → command-palette}/shortcut/shortcut.component.mjs +1 -1
- 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/{components/filemanager → filemanager}/filemanager.component.mjs +13 -14
- package/esm2022/{components/filemanager → filemanager}/folder-rename/folder-rename.component.mjs +2 -2
- 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/{components/filemanager → filemanager}/toolbar/breadcrumb/breadcrumb.component.mjs +1 -1
- package/esm2022/{components/filemanager → filemanager}/toolbar/icon-button/icon-button.component.mjs +1 -1
- package/esm2022/filemanager/toolbar/toolbar.component.mjs +165 -0
- package/esm2022/{components/filemanager → filemanager}/tree-view/tree-view.component.mjs +1 -1
- 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-folder-rename.component-Bh1IiRvd.mjs → dotglitch-ngx-common-filemanager-folder-rename.component-CnKuU8nn.mjs} +9 -30
- 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 -11686
- package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
- package/{components/filemanager → filemanager}/file-grid/file-grid.component.d.ts +7 -14
- package/{components/filemanager → filemanager}/filemanager.component.d.ts +4 -5
- package/{components/filemanager → filemanager}/folder-rename/folder-rename.component.d.ts +1 -1
- package/{components/filemanager → filemanager}/helpers.d.ts +1 -1
- package/filemanager/index.d.ts +1 -0
- package/{components/filemanager → filemanager}/toolbar/toolbar.component.d.ts +2 -2
- 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/overlay-wrapper/index.d.ts +1 -0
- package/overlay-wrapper/overlay-wrapper.component.d.ts +11 -0
- package/package.json +108 -47
- 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/components/dynamic-html/dynamic-html.component.d.ts +0 -15
- package/components/dynamic-html/dynamic-html.module.d.ts +0 -10
- package/components/dynamic-html/dynamic-html.service.d.ts +0 -18
- package/components/dynamic-html/types.d.ts +0 -12
- package/components/tabulator/tabulator.component.d.ts +0 -30
- package/components/vscode/vscode.component.d.ts +0 -52
- package/esm2022/assets/mat-icons.mjs +0 -5705
- package/esm2022/components/command-palette/command-palette.component.mjs +0 -257
- package/esm2022/components/dynamic-html/dynamic-html.component.mjs +0 -43
- package/esm2022/components/dynamic-html/dynamic-html.module.mjs +0 -27
- package/esm2022/components/dynamic-html/dynamic-html.service.mjs +0 -66
- package/esm2022/components/dynamic-html/types.mjs +0 -7
- package/esm2022/components/filemanager/file-grid/file-grid.component.mjs +0 -674
- package/esm2022/components/filemanager/helpers.mjs +0 -26
- package/esm2022/components/filemanager/icon-resolver.mjs +0 -155
- package/esm2022/components/filemanager/textextensions.mjs +0 -294
- package/esm2022/components/filemanager/toolbar/toolbar.component.mjs +0 -165
- 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/tabulator/tabulator.component.mjs +0 -93
- package/esm2022/components/tooltip/tooltip.component.mjs +0 -205
- package/esm2022/components/types.mjs +0 -3
- package/esm2022/components/vscode/ts-type-resolver/dependency-parser.mjs +0 -91
- package/esm2022/components/vscode/ts-type-resolver/dummy-source-cache.mjs +0 -15
- package/esm2022/components/vscode/ts-type-resolver/import-resolver.mjs +0 -311
- package/esm2022/components/vscode/ts-type-resolver/main.mjs +0 -112
- package/esm2022/components/vscode/ts-type-resolver/recursion-depth.mjs +0 -21
- package/esm2022/components/vscode/ts-type-resolver/types.mjs +0 -14
- package/esm2022/components/vscode/ts-type-resolver/unpkg-source-resolver.mjs +0 -21
- package/esm2022/components/vscode/ts-type-resolver/update-emitter.mjs +0 -37
- package/esm2022/components/vscode/vscode.component.mjs +0 -232
- package/esm2022/directives/image-cache.directive.mjs +0 -140
- 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 -59
- package/esm2022/services/command-palette.service.mjs +0 -209
- 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/fesm2022/dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs.map +0 -1
- 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
- /package/{components/filemanager → filemanager}/icon-resolver.d.ts +0 -0
- /package/{assets → filemanager}/mat-icons.d.ts +0 -0
- /package/{components/filemanager → filemanager}/textextensions.d.ts +0 -0
- /package/{components/filemanager → filemanager}/toolbar/breadcrumb/breadcrumb.component.d.ts +0 -0
- /package/{components/filemanager → filemanager}/toolbar/icon-button/icon-button.component.d.ts +0 -0
- /package/{components/filemanager → filemanager}/tree-view/tree-view.component.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/dependency-parser.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/dummy-source-cache.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/import-resolver.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/main.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/recursion-depth.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/types.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/unpkg-source-resolver.d.ts +0 -0
- /package/{components/vscode → monaco-editor}/ts-type-resolver/update-emitter.d.ts +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
4
|
+
import { ulid } from 'ulidx';
|
|
5
|
+
import { getPosition } from '../../directives/utils';
|
|
6
|
+
import { MenuComponent, calcMenuItemBounds } from './menu.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/dialog";
|
|
9
|
+
export class MenuDirective {
|
|
10
|
+
constructor(dialog, viewContainer) {
|
|
11
|
+
this.dialog = dialog;
|
|
12
|
+
this.viewContainer = viewContainer;
|
|
13
|
+
/**
|
|
14
|
+
* Configuration for opening the app menu
|
|
15
|
+
*/
|
|
16
|
+
this.config = {};
|
|
17
|
+
this.triggers = [];
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
this.ngOnChanges();
|
|
21
|
+
}
|
|
22
|
+
ngOnChanges() {
|
|
23
|
+
if (this.config.trigger) {
|
|
24
|
+
this.triggers = Array.isArray(this.config.trigger) ? this.config.trigger : [this.config.trigger];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
// const el = this.viewContainer.element.nativeElement as HTMLElement;
|
|
29
|
+
// // Automatically attach context menu items to
|
|
30
|
+
// // the contextmenu event
|
|
31
|
+
// if (this.ctxMenuItems) {
|
|
32
|
+
// el.addEventListener('contextmenu', (e) => {
|
|
33
|
+
// e.preventDefault();
|
|
34
|
+
// this.openMenu(e as any, this.ctxMenuItems, true);
|
|
35
|
+
// });
|
|
36
|
+
// }
|
|
37
|
+
// if (this.menuItems?.length > 0) {
|
|
38
|
+
// if (!this.config?.trigger) {
|
|
39
|
+
// el.addEventListener('click', (e) => {
|
|
40
|
+
// this.openMenu(e as any, this.menuItems, true);
|
|
41
|
+
// });
|
|
42
|
+
// }
|
|
43
|
+
// else {
|
|
44
|
+
// triggers.forEach(t => {
|
|
45
|
+
// if (["contextmenu", "click"].includes(t)) {
|
|
46
|
+
// el.addEventListener(t, (e) => {
|
|
47
|
+
// e.preventDefault();
|
|
48
|
+
// this.openMenu(e as any, this.ctxMenuItems, true);
|
|
49
|
+
// });
|
|
50
|
+
// }
|
|
51
|
+
// else {
|
|
52
|
+
// el.addEventListener(t, this.openMenu.bind(this));
|
|
53
|
+
// }
|
|
54
|
+
// });
|
|
55
|
+
// }
|
|
56
|
+
// }
|
|
57
|
+
}
|
|
58
|
+
async openMenu(evt, items = this.menuItems, keepOpen = false) {
|
|
59
|
+
const el = this.viewContainer.element.nativeElement;
|
|
60
|
+
el.classList.add("ngx-menu-open");
|
|
61
|
+
const isCtxEvent = evt.button == 2;
|
|
62
|
+
const config = structuredClone(this.config);
|
|
63
|
+
config['_isLockedOpen'] = keepOpen;
|
|
64
|
+
return openMenu(this.dialog, items, this.data, evt, this.config, isCtxEvent ? null : el)
|
|
65
|
+
.then((...res) => {
|
|
66
|
+
el.classList.remove("ngx-menu-open");
|
|
67
|
+
return res;
|
|
68
|
+
})
|
|
69
|
+
.catch((ex) => {
|
|
70
|
+
el.classList.remove("ngx-menu-open");
|
|
71
|
+
throw ex;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
onCtxMenu(e) {
|
|
75
|
+
if (this.ctxMenuItems || this.triggers.includes("contextmenu")) {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
this.openMenu(e, this.ctxMenuItems, true);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
onClick(e) {
|
|
81
|
+
if (this.menuItems &&
|
|
82
|
+
(this.triggers.length == 0 ||
|
|
83
|
+
this.triggers.includes("click"))) {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
this.openMenu(e, this.menuItems, true);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
onDblClick(e) {
|
|
89
|
+
if (this.menuItems && this.triggers.length == 0 ||
|
|
90
|
+
this.menuItems && this.triggers.includes("dblclick")) {
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
this.openMenu(e, this.menuItems, true);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDirective, deps: [{ token: i1.MatDialog }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
96
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: MenuDirective, isStandalone: true, selector: "[ngx-contextmenu],[ngx-menu]", inputs: { data: ["ngx-menu-context", "data"], ctxMenuItems: ["ngx-contextmenu", "ctxMenuItems"], menuItems: ["ngx-menu", "menuItems"], config: ["ngx-menu-config", "config"] }, host: { listeners: { "contextmenu": "onCtxMenu($event)", "click": "onClick($event)", "dblclick": "onDblClick($event)" } }, providers: [
|
|
97
|
+
MatDialog
|
|
98
|
+
], usesOnChanges: true, ngImport: i0 }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDirective, decorators: [{
|
|
101
|
+
type: Directive,
|
|
102
|
+
args: [{
|
|
103
|
+
selector: '[ngx-contextmenu],[ngx-menu]',
|
|
104
|
+
providers: [
|
|
105
|
+
MatDialog
|
|
106
|
+
],
|
|
107
|
+
standalone: true
|
|
108
|
+
}]
|
|
109
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i0.ViewContainerRef }], propDecorators: { data: [{
|
|
110
|
+
type: Input,
|
|
111
|
+
args: ["ngx-menu-context"]
|
|
112
|
+
}], ctxMenuItems: [{
|
|
113
|
+
type: Input,
|
|
114
|
+
args: ["ngx-contextmenu"]
|
|
115
|
+
}], menuItems: [{
|
|
116
|
+
type: Input,
|
|
117
|
+
args: ["ngx-menu"]
|
|
118
|
+
}], config: [{
|
|
119
|
+
type: Input,
|
|
120
|
+
args: ["ngx-menu-config"]
|
|
121
|
+
}], onCtxMenu: [{
|
|
122
|
+
type: HostListener,
|
|
123
|
+
args: ["contextmenu", ['$event']]
|
|
124
|
+
}], onClick: [{
|
|
125
|
+
type: HostListener,
|
|
126
|
+
args: ["click", ['$event']]
|
|
127
|
+
}], onDblClick: [{
|
|
128
|
+
type: HostListener,
|
|
129
|
+
args: ["dblclick", ['$event']]
|
|
130
|
+
}] } });
|
|
131
|
+
// Helper to open the menu without using the directive.
|
|
132
|
+
export const openMenu = async (dialog, menuItems, data, evt, config = {}, el) => {
|
|
133
|
+
// console.log({ dialog, menuItems, data, evt, config, el });
|
|
134
|
+
evt.preventDefault();
|
|
135
|
+
evt.stopPropagation();
|
|
136
|
+
// Apply defaults.
|
|
137
|
+
if (!config.alignment)
|
|
138
|
+
config.alignment = "start";
|
|
139
|
+
const initialBounds = await calcMenuItemBounds(menuItems, data);
|
|
140
|
+
const cords = getPosition(el || evt, config, initialBounds);
|
|
141
|
+
const specificId = ulid();
|
|
142
|
+
return firstValueFrom(dialog.open(MenuComponent, {
|
|
143
|
+
data: {
|
|
144
|
+
dialog,
|
|
145
|
+
data: data,
|
|
146
|
+
ownerCords: el?.getBoundingClientRect(),
|
|
147
|
+
selfCords: cords,
|
|
148
|
+
items: menuItems,
|
|
149
|
+
config: config,
|
|
150
|
+
id: specificId,
|
|
151
|
+
targetBounds: initialBounds
|
|
152
|
+
},
|
|
153
|
+
panelClass: ["ngx-menu", 'ngx-' + specificId].concat(config?.customClass || []),
|
|
154
|
+
position: cords,
|
|
155
|
+
backdropClass: "ngx-menu-backdrop"
|
|
156
|
+
})
|
|
157
|
+
.afterClosed());
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vY29yZS9jb21wb25lbnRzL21lbnUvbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQVVyRSxNQUFNLE9BQU8sYUFBYTtJQXlCdEIsWUFDWSxNQUFpQixFQUNqQixhQUErQjtRQUQvQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQVQzQzs7V0FFRztRQUN1QixXQUFNLEdBQWdCLEVBQUUsQ0FBQztRQUUzQyxhQUFRLEdBQWEsRUFBRSxDQUFDO0lBSzVCLENBQUM7SUFFTCxRQUFRO1FBQ0osSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBRVAsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FB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TUFBTSxhQUFhLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDO0lBRTFCLE9BQU8sY0FBYyxDQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUN2QixJQUFJLEVBQUU7WUFDRixNQUFNO1lBQ04sSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsRUFBRSxFQUFFLHFCQUFxQixFQUFFO1lBQ3ZDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsRUFBRSxFQUFFLFVBQVU7WUFDZCxZQUFZLEVBQUUsYUFBYTtTQUM5QjtRQUNELFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQy9FLFFBQVEsRUFBRSxLQUFLO1FBQ2YsYUFBYSxFQUFFLG1CQUFtQjtLQUNyQyxDQUFDO1NBQ0csV0FBVyxFQUFFLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdWxpZCB9IGZyb20gJ3VsaWR4JztcbmltcG9ydCB7IGdldFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy91dGlscyc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50LCBjYWxjTWVudUl0ZW1Cb3VuZHMgfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tuZ3gtY29udGV4dG1lbnVdLFtuZ3gtbWVudV0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNYXREaWFsb2dcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWVudURpcmVjdGl2ZSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSByZXByZXNlbnRpbmcgdGhlIGl0ZW0gdGhlIG1lbnUgd2FzIG9wZW5lZCBmb3IuXG4gICAgICovXG4gICAgQElucHV0KFwibmd4LW1lbnUtY29udGV4dFwiKSBkYXRhOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaXRlbXMgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBjb250ZXh0IG1lbnUuXG4gICAgICovXG4gICAgQElucHV0KFwibmd4LWNvbnRleHRtZW51XCIpIGN0eE1lbnVJdGVtczogTWVudUl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgYm91bmQgdG8gdGhlIG1lbnUgdGhhdCBwb3BzXG4gICAgICogdXAgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KFwibmd4LW1lbnVcIikgbWVudUl0ZW1zOiBNZW51SXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBmb3Igb3BlbmluZyB0aGUgYXBwIG1lbnVcbiAgICAgKi9cbiAgICBASW5wdXQoXCJuZ3gtbWVudS1jb25maWdcIikgY29uZmlnOiBNZW51T3B0aW9ucyA9IHt9O1xuXG4gICAgcHJpdmF0ZSB0cmlnZ2Vyczogc3RyaW5nW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubmdPbkNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcblxuICAgICAgICBpZiAodGhpcy5jb25maWcudHJpZ2dlcikge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VycyA9IEFycmF5LmlzQXJyYXkodGhpcy5jb25maWcudHJpZ2dlcikgPyB0aGlzLmNvbmZpZy50cmlnZ2VyIDogW3RoaXMuY29uZmlnLnRyaWdnZXJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBjb25zdCBlbCA9IHRoaXMudmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gLy8gQXV0b21hdGljYWxseSBhdHRhY2ggY29udGV4dCBtZW51IGl0ZW1zIHRvXG4gICAgICAgIC8vIC8vIHRoZSBjb250ZXh0bWVudSBldmVudFxuICAgICAgICAvLyBpZiAodGhpcy5jdHhNZW51SXRlbXMpIHtcbiAgICAgICAgLy8gICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgKGUpID0+IHtcbiAgICAgICAgLy8gICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vICAgICAgICAgdGhpcy5vcGVuTWVudShlIGFzIGFueSwgdGhpcy5jdHhNZW51SXRlbXMsIHRydWUpO1xuICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyBpZiAodGhpcy5tZW51SXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gICAgIGlmICghdGhpcy5jb25maWc/LnRyaWdnZXIpIHtcbiAgICAgICAgLy8gICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMub3Blbk1lbnUoZSBhcyBhbnksIHRoaXMubWVudUl0ZW1zLCB0cnVlKTtcbiAgICAgICAgLy8gICAgICAgICB9KTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gICAgIGVsc2Uge1xuXG4gICAgICAgIC8vICAgICAgICAgdHJpZ2dlcnMuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgLy8gICAgICAgICAgICAgaWYgKFtcImNvbnRleHRtZW51XCIsIFwiY2xpY2tcIl0uaW5jbHVkZXModCkpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodCwgKGUpID0+IHtcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTWVudShlIGFzIGFueSwgdGhpcy5jdHhNZW51SXRlbXMsIHRydWUpO1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIC8vICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKHQsIHRoaXMub3Blbk1lbnUuYmluZCh0aGlzKSk7XG4gICAgICAgIC8vICAgICAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICB9KTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIGFzeW5jIG9wZW5NZW51KGV2dDogUG9pbnRlckV2ZW50LCBpdGVtcyA9IHRoaXMubWVudUl0ZW1zLCBrZWVwT3BlbiA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy52aWV3Q29udGFpbmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKFwibmd4LW1lbnUtb3BlblwiKTtcblxuICAgICAgICBjb25zdCBpc0N0eEV2ZW50ID0gZXZ0LmJ1dHRvbiA9PSAyO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmNvbmZpZyk7XG4gICAgICAgIGNvbmZpZ1snX2lzTG9ja2VkT3BlbiddID0ga2VlcE9wZW47XG5cbiAgICAgICAgcmV0dXJuIG9wZW5NZW51KFxuICAgICAgICAgICAgdGhpcy5kaWFsb2csXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgICAgIGV2dCxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgaXNDdHhFdmVudCA/IG51bGwgOiBlbFxuICAgICAgICApXG4gICAgICAgICAgICAudGhlbigoLi4ucmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShcIm5neC1tZW51LW9wZW5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShcIm5neC1tZW51LW9wZW5cIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgWyckZXZlbnQnXSlcbiAgICBvbkN0eE1lbnUoZSkge1xuICAgICAgICBpZiAodGhpcy5jdHhNZW51SXRlbXMgfHwgdGhpcy50cmlnZ2Vycy5pbmNsdWRlcyhcImNvbnRleHRtZW51XCIpKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5NZW51KGUgYXMgYW55LCB0aGlzLmN0eE1lbnVJdGVtcywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIiwgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrKGUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMgJiZcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJzLmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2Vycy5pbmNsdWRlcyhcImNsaWNrXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vcGVuTWVudShlIGFzIGFueSwgdGhpcy5tZW51SXRlbXMsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImRibGNsaWNrXCIsIFsnJGV2ZW50J10pXG4gICAgb25EYmxDbGljayhlKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zICYmIHRoaXMudHJpZ2dlcnMubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zICYmIHRoaXMudHJpZ2dlcnMuaW5jbHVkZXMoXCJkYmxjbGlja1wiKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub3Blbk1lbnUoZSBhcyBhbnksIHRoaXMubWVudUl0ZW1zLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gSGVscGVyIHRvIG9wZW4gdGhlIG1lbnUgd2l0aG91dCB1c2luZyB0aGUgZGlyZWN0aXZlLlxuZXhwb3J0IGNvbnN0IG9wZW5NZW51ID0gYXN5bmMgKFxuICAgIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSxcbiAgICBkYXRhOiBhbnksXG4gICAgZXZ0OiBQb2ludGVyRXZlbnQsXG4gICAgY29uZmlnOiBNZW51T3B0aW9ucyA9IHt9LFxuICAgIGVsPzogSFRNTEVsZW1lbnRcbikgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKHsgZGlhbG9nLCBtZW51SXRlbXMsIGRhdGEsIGV2dCwgY29uZmlnLCBlbCB9KTtcblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIEFwcGx5IGRlZmF1bHRzLlxuICAgIGlmICghY29uZmlnLmFsaWdubWVudClcbiAgICAgICAgY29uZmlnLmFsaWdubWVudCA9IFwic3RhcnRcIjtcblxuICAgIGNvbnN0IGluaXRpYWxCb3VuZHMgPSBhd2FpdCBjYWxjTWVudUl0ZW1Cb3VuZHMobWVudUl0ZW1zLCBkYXRhKTtcbiAgICBjb25zdCBjb3JkcyA9IGdldFBvc2l0aW9uKGVsIHx8IGV2dCwgY29uZmlnLCBpbml0aWFsQm91bmRzKTtcbiAgICBjb25zdCBzcGVjaWZpY0lkID0gdWxpZCgpO1xuXG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICBkaWFsb2cub3BlbihNZW51Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZGlhbG9nLFxuICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgb3duZXJDb3JkczogZWw/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIHNlbGZDb3JkczogY29yZHMsXG4gICAgICAgICAgICAgICAgaXRlbXM6IG1lbnVJdGVtcyxcbiAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgICAgICBpZDogc3BlY2lmaWNJZCxcbiAgICAgICAgICAgICAgICB0YXJnZXRCb3VuZHM6IGluaXRpYWxCb3VuZHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbXCJuZ3gtbWVudVwiLCAnbmd4LScgKyBzcGVjaWZpY0lkXS5jb25jYXQoY29uZmlnPy5jdXN0b21DbGFzcyB8fCBbXSksXG4gICAgICAgICAgICBwb3NpdGlvbjogY29yZHMsXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiBcIm5neC1tZW51LWJhY2tkcm9wXCJcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpKTtcbn07XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vY29yZS9jb21wb25lbnRzL21lbnUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3B1cE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9wb3B1cCc7XG5cbnR5cGUgTWVudVRyaWdnZXIgPSBcImNsaWNrXCIgfCBcImRibGNsaWNrXCIgfCBcImhvdmVyXCIgfCBcImNvbnRleHRtZW51XCI7XG5cbmV4cG9ydCB0eXBlIE1lbnVPcHRpb25zID0gUGFydGlhbDxQb3B1cE9wdGlvbnMgJiB7XG4gICAgLyoqXG4gICAgICogV2hpY2ggZXZlbnQgc2hvdWxkIHRyaWdnZXIgdGhlIGFwcCBtZW51LlxuICAgICAqL1xuICAgIHRyaWdnZXI6IE1lbnVUcmlnZ2VyIHwgTWVudVRyaWdnZXJbXTtcblxuICAgIC8qKlxuICAgICAqIFNldCB0byBgdHJ1ZWAgdG8ga2VlcCB0aGUgbWVudSBvcGVuLlxuICAgICAqL1xuICAgIHN0YXlPcGVuOiBib29sZWFuLFxufT47XG5cbmV4cG9ydCB0eXBlIEJhc2VNZW51SXRlbTxUID0gYW55LCBRID0gb2JqZWN0IHwgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IGJpZ2ludCB8IHN5bWJvbCB8IHVuZGVmaW5lZD4gPSB7XG4gICAgLyoqXG4gICAgICogTGFiZWwgZm9yIHRoZSBtZW51LWl0ZW1cbiAgICAgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBhbmd1bGFyIHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhlIGxhYmVsXG4gICAgICogQWx0ZXJuYXRpdmVseSBhY2NlcHRzIGEgbGFtYmRhIGZ1bmN0aW9uXG4gICAgICovXG4gICAgbGFiZWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gfCAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IHN0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBtZXRob2QgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIHVzZXIgYWN0aXZhdGVzXG4gICAgICogYSBjb250ZXh0LW1lbnUgaXRlbS5cbiAgICAgKiBVc2UgdGhlIGBjb250ZXh0TWVudURhdGFgIGRlY29yYXRvciBmb3IgcGFzc2luZyBkYXRhLlxuICAgICAqL1xuICAgIGFjdGlvbj86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBhbnksXG5cbiAgICAvKipcbiAgICAgKiBJbnN0ZWFkIG9mIGFuIGFjdGlvbiwgdGhpcyBpdGVtIGNhbiBiZSBhIGh5cGVybGluayBwb2ludGluZyB0byB0aGlzIFVSTFxuICAgICAqIHd3dy5leGFtcGxlLmNvbS9mb28vYmFyLnppcFxuICAgICAqL1xuICAgIGxpbms/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGhhdmluZyBhIGNvbmZpZ3VyZWQgYGxpbmtgIHByb3BlcnR5LCB0aGlzIHNwZWNpZmllcyB0aGUgYHRhcmdldGBcbiAgICAgKiBhdHRyaWJ1dGUgYXBwbGllZCB0byB0aGUgbGlua1xuICAgICAqL1xuICAgIGxpbmtUYXJnZXQ/OiBcIl9ibGFua1wiIHwgXCJfc2VsZlwiIHwgXCJfcGFyZW50XCIgfCBcIl90b3BcIiwgLy8gXCJmcmFtZW5hbWVcIlxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciByZXNvbHZpbmcgYSBsaW5rIHdoZW4gdGhlIGNvbnRleHQgbWVudVxuICAgICAqIGlzIG9wZW5lZFxuICAgICAqL1xuICAgIGxpbmtUZW1wbGF0ZT86ICgoZGF0YTogVCwgY29udGV4dDogUSkgPT4gc3RyaW5nKSxcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCB1cG9uIGEgY29udGV4dCBtZW51IGFjdGl2YXRpb25cbiAgICAgKiB0aGF0IHdoZW4gaXQgcmV0dXJucyB0cnVlLCB3aWxsIHNob3cgdGhlIGl0ZW0gYXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgaXNEaXNhYmxlZD86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBib29sZWFuLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIHVwb24gYSBjb250ZXh0IG1lbnUgYWN0aXZhdGlvblxuICAgICAqIHRoYXQgd2hlbiByZXR1cm5pbmcgZmFsc2UsIHdpbGwgaGlkZSB0aGUgbWVudSBpdGVtLlxuICAgICAqL1xuICAgIGlzVmlzaWJsZT86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBib29sZWFuLFxuXG4gICAgLyoqXG4gICAgICogSWYgYSBzaG9ydGN1dCBpcyBzZXQsIHRoZSB0ZXh0LWxhYmVsLlxuICAgICAqL1xuICAgIHNob3J0Y3V0TGFiZWw/OiBzdHJpbmcsXG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBzaG9ydGN1dCB0byBhY3RpdmF0ZSB0aGlzIGl0ZW0uXG4gICAgICovXG4gICAgLy8gc2hvcnRjdXQ/OiBLZXlDb21tYW5kLFxuXG4gICAgLyoqXG4gICAgICogSWNvbiB0byByZW5kZXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgaXRlbS5cbiAgICAgKiBDYW4gYmUgYSBVUkwvVVJJIChtdXN0IGluY2x1ZGUgZXh0ZW5zaW9uKVxuICAgICAqIE9yIGNhbiBiZSBhIG1hdGVyaWFsIGljb24gaWRlbnRpZmllci5cbiAgICAgKi9cbiAgICBpY29uPzogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gY2hvb3NlIHRoZSBpY29uIHVzZWQgZm9yIGFuIGl0ZW0uXG4gICAgICogRXhlY3V0ZWQgdXBvbiBvcGVuaW5nIHRoZSBtZW51LlxuICAgICAqXG4gICAgICogU2VlIGBpY29uYCBmb3IgZGV0YWlscy5cbiAgICAgKi9cbiAgICBpY29uVGVtcGxhdGU/OiAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IHN0cmluZyksXG5cbiAgICAvKipcbiAgICAgKiBDU1MgY29sb3Igc3RyaW5nIHRvIGFwcGx5IG9uIHRoZSBtYXQgaWNvblxuICAgICAqL1xuICAgIGljb25Db2xvcj86IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGNoaWxkIG1lbnVcbiAgICAgKi9cbiAgICBjaGlsZHJlbj86IE1lbnVJdGVtPFQ+W10gfCAoKGRhdGE6IFQsIGNvbnRleHQ6IFEpID0+IE1lbnVJdGVtPFQ+W10pIHwgKChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBQcm9taXNlPE1lbnVJdGVtPFQ+W10+KSxcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHJlc29sdmVyIHRoYXQgZHluYW1pY2FsbHkgbG9hZHMgdGhlIGNvbnRlbnRzXG4gICAgICogZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQ2FuIGJlIHVzZWQgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIHRoZSBzdWJtZW51IGNvbnRlbnRzXG4gICAgICovXG4gICAgY2hpbGRyZW5SZXNvbHZlcj86IChkYXRhOiBULCBjb250ZXh0OiBRKSA9PiBQcm9taXNlPE1lbnVJdGVtPFQ+W10+LFxuXG4gICAgLyoqXG4gICAgICogSWYgYGNoaWxkcmVuYCBpcyBhIG1ldGhvZCBvciBgY2hpbGRyZW5SZXNvbHZlcmAgaXMgcHJvdmlkZWRcbiAgICAgKiBkaXNhYmxlIGNhY2hpbmcgb2ZcbiAgICAgKiB0aGUgcmVzb2x2ZWQgY2hpbGRyZW4uXG4gICAgICovXG4gICAgY2FjaGVSZXNvbHZlZENoaWxkcmVuPzogYm9vbGVhbixcblxuICAgIC8qKlxuICAgICAqIEluc3RlYWQgb2YgYW4gYXJyYXkgb2YgY2hpbGRyZW4sIHJlbmRlciBhIHRlbXBsYXRlXG4gICAgICovXG4gICAgY2hpbGRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gfCBUeXBlPGFueT4sXG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBgY29udGV4dGAgdGhhdCBjYW4gYmUgcGFzc2VkIGZyb20gdGhlIG1lbnVcbiAgICAgKi9cbiAgICBjb250ZXh0PzogKChkYXRhOiBUKSA9PiBQcm9taXNlPFE+KSB8XG4gICAgKChkYXRhOiBUKSA9PiBRKSB8XG4gICAgUTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXRlbSBpcyBhIHNlcGFyYXRvci5cbiAgICAgKiBDYW4gYmUgdXNlZCB3aXRoIGxhYmVsIHRvIG1ha2UgYSBsYWJlbCBzZXBhcmF0b3IuXG4gICAgICovXG4gICAgc2VwYXJhdG9yPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoYXQgdXNlciBldmVudHMgdHJpZ2dlciB0aGUgb3BlbmluZyBvZiBhbnkgY2hpbGRyZW4gLyBjaGlsZCB0ZW1wbGF0ZVxuICAgICAqIEBkZWZhdWx0IFtgaG92ZXJgXVxuICAgICAqL1xuICAgIHRyaWdnZXI/OiAoXCJjbGlja1wiIHwgXCJob3ZlclwiKVtdO1xufTtcblxuZXhwb3J0IHR5cGUgTWVudUl0ZW08VCA9IGFueSwgUSA9IGFueT4gPVxuICAgIEJhc2VNZW51SXRlbTxULCBRPiB8XG4gICAgXCJzZXBhcmF0b3JcIjtcbiJdfQ==
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
2
|
+
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ParallaxCardComponent {
|
|
5
|
+
get wrapper() { return this.element.nativeElement; }
|
|
6
|
+
get cardFront() { return this.wrapper.querySelector('.card.front'); }
|
|
7
|
+
get cardBack() { return this.wrapper.querySelector('.card.backface'); }
|
|
8
|
+
get backgroundElement() { return this.cardFront.querySelector('.card-bg'); }
|
|
9
|
+
get backfaceBackgroundElement() { return this.cardBack.querySelector('.card-bg'); }
|
|
10
|
+
constructor(element, ngZone) {
|
|
11
|
+
this.element = element;
|
|
12
|
+
this.ngZone = ngZone;
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
this.loaded = new EventEmitter();
|
|
17
|
+
/**
|
|
18
|
+
* Width of the card
|
|
19
|
+
* @default `240px`
|
|
20
|
+
*/
|
|
21
|
+
this.width = '240px';
|
|
22
|
+
/**
|
|
23
|
+
* Height of the card
|
|
24
|
+
* @default `320px`
|
|
25
|
+
*/
|
|
26
|
+
this.height = '320px';
|
|
27
|
+
/**
|
|
28
|
+
* Inset padding of the parallax
|
|
29
|
+
* @default 80
|
|
30
|
+
*/
|
|
31
|
+
this.bgInset = 80;
|
|
32
|
+
/**
|
|
33
|
+
* Duration for the flip animation in ms
|
|
34
|
+
* @default 1200
|
|
35
|
+
*/
|
|
36
|
+
this.flipAnimationDuration = 1200;
|
|
37
|
+
this.renderCardFront = true;
|
|
38
|
+
this.renderCardBack = true;
|
|
39
|
+
this.showBackOfCard = false;
|
|
40
|
+
this.pointerX = 0;
|
|
41
|
+
this.pointerY = 0;
|
|
42
|
+
this.pointerLeave = 0;
|
|
43
|
+
this.render = () => {
|
|
44
|
+
const { width, height } = this.wrapper.getBoundingClientRect();
|
|
45
|
+
const mousePX = this.pointerX / width;
|
|
46
|
+
const mousePY = this.pointerY / height;
|
|
47
|
+
// Rotation factors
|
|
48
|
+
const rX = mousePX * this.bgInset / 1.75;
|
|
49
|
+
const rY = mousePY * -this.bgInset / 1.75;
|
|
50
|
+
// Translation factors
|
|
51
|
+
const tX = mousePX * -this.bgInset * 2;
|
|
52
|
+
const tY = mousePY * -this.bgInset * 2;
|
|
53
|
+
if (this.renderCardFront) {
|
|
54
|
+
this.backgroundElement.style.transform = `translateX(${tX}px) translateY(${tY}px)`;
|
|
55
|
+
}
|
|
56
|
+
if (this.renderCardBack) {
|
|
57
|
+
this.backfaceBackgroundElement.style.transform = `translateX(${tX}px) translateY(${tY}px)`;
|
|
58
|
+
}
|
|
59
|
+
if (this.showBackOfCard) {
|
|
60
|
+
this.cardFront.style.transform = `rotateY(180deg) rotateX(${-rY}deg)`;
|
|
61
|
+
this.cardBack.style.transform = `rotateY(${-rX}deg) rotateX(${-rY}deg)`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.cardFront.style.transform = `rotateY(${rX}deg) rotateX(${rY}deg)`;
|
|
65
|
+
this.cardBack.style.transform = `rotateY(180deg) rotateX(${-rY}deg)`;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
ngAfterViewInit() {
|
|
70
|
+
const el = this.wrapper;
|
|
71
|
+
this.ngZone.runOutsideAngular(() => {
|
|
72
|
+
// Directly attach events to the wrapper
|
|
73
|
+
el.onpointermove = (e) => this.onPointerMove(e);
|
|
74
|
+
el.onpointerenter = () => this.onPointerEnter();
|
|
75
|
+
el.onpointerleave = () => this.onPointerLeave();
|
|
76
|
+
});
|
|
77
|
+
el.onclick = () => this.onClick();
|
|
78
|
+
this.loaded.emit();
|
|
79
|
+
}
|
|
80
|
+
onPointerMove(e) {
|
|
81
|
+
const { width, height, left, top } = this.wrapper.getBoundingClientRect();
|
|
82
|
+
this.pointerX = e.pageX - left - (width / 2);
|
|
83
|
+
this.pointerY = e.pageY - top - (height / 2);
|
|
84
|
+
this.render();
|
|
85
|
+
}
|
|
86
|
+
onPointerEnter() {
|
|
87
|
+
clearTimeout(this.pointerLeave);
|
|
88
|
+
}
|
|
89
|
+
onPointerLeave() {
|
|
90
|
+
this.pointerLeave = setTimeout(() => {
|
|
91
|
+
this.pointerX = 0;
|
|
92
|
+
this.pointerY = 0;
|
|
93
|
+
this.render();
|
|
94
|
+
}, 600);
|
|
95
|
+
}
|
|
96
|
+
// TODO: This can get intercepted in some states
|
|
97
|
+
onClick() {
|
|
98
|
+
this.showBackOfCard = !this.showBackOfCard;
|
|
99
|
+
this.render();
|
|
100
|
+
}
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ParallaxCardComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ParallaxCardComponent, isStandalone: true, selector: "ngx-parallax-card", inputs: { width: "width", height: "height", bgInset: "bgInset", flipAnimationDuration: "flipAnimationDuration" }, outputs: { loaded: "loaded" }, host: { properties: { "style.width": "width", "style.height": "height", "style.--card-bg-inset": "-bgInset+\"px\"", "style.--flip-animation-duration": "flipAnimationDuration+\"ms\"", "class.flip": "showBackOfCard" } }, queries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: TemplateRef }, { propertyName: "background", first: true, predicate: ["background"], descendants: true, read: TemplateRef }, { propertyName: "backContent", first: true, predicate: ["backContent"], descendants: true, read: TemplateRef }, { propertyName: "backBackground", first: true, predicate: ["backBackground"], descendants: true, read: TemplateRef }], ngImport: i0, template: "@if (renderCardBack) {\n <div class=\"card backface\">\n <div class=\"card-bg\" style=\"transform: translateX(0) translateY(0)\">\n <ng-template [ngTemplateOutlet]=\"backBackground\" />\n </div>\n <div class=\"card-content\">\n <ng-template [ngTemplateOutlet]=\"backContent\" />\n </div>\n </div>\n}\n\n@if (renderCardFront) {\n <div class=\"card front\">\n <div class=\"card-bg\" style=\"transform: translateX(0) translateY(0)\">\n <ng-template [ngTemplateOutlet]=\"background\" />\n </div>\n <div class=\"card-content\">\n @if (content) {\n <ng-template [ngTemplateOutlet]=\"content\"/>\n }\n @else {\n <ng-content/>\n }\n </div>\n </div>\n}\n\n\n", styles: [":host{display:block;position:relative;cursor:pointer;--easing-function: cubic-bezier(.23, 1, .32, 1);--border-radius: 9px}.card{position:absolute;height:100%;width:100%;background-color:#333;backface-visibility:hidden;overflow:hidden;box-shadow:#0000 0 0 40px 5px,#000000a8 0 30px 60px,inset #333 0 0 0 5px;border-radius:var(--border-radius);transition:transform var(--flip-animation-duration) var(--easing-function),box-shadow 2s var(--easing-function);transform-style:preserve-3d;will-change:transform}.card:hover{box-shadow:#fff6 0 0 40px 5px,#000000a8 0 30px 60px,inset #333 0 0 0 5px}.card:hover .card-content{border:2px solid #fff}.card-bg{inset:var(--card-bg-inset);position:absolute;pointer-events:none;transition:transform .6s var(--easing-function)}.card-content{position:absolute;top:0;color:#fff;height:100%;width:100%;z-index:1;border:2px solid rgba(255,255,255,0);border-radius:var(--border-radius);transition:transform .6s var(--easing-function),border-color .6s var(--easing-function)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ParallaxCardComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'ngx-parallax-card', imports: [
|
|
107
|
+
NgTemplateOutlet
|
|
108
|
+
], host: {
|
|
109
|
+
'[style.width]': 'width',
|
|
110
|
+
'[style.height]': 'height',
|
|
111
|
+
'[style.--card-bg-inset]': '-bgInset+"px"',
|
|
112
|
+
'[style.--flip-animation-duration]': 'flipAnimationDuration+"ms"',
|
|
113
|
+
'[class.flip]': 'showBackOfCard'
|
|
114
|
+
}, standalone: true, template: "@if (renderCardBack) {\n <div class=\"card backface\">\n <div class=\"card-bg\" style=\"transform: translateX(0) translateY(0)\">\n <ng-template [ngTemplateOutlet]=\"backBackground\" />\n </div>\n <div class=\"card-content\">\n <ng-template [ngTemplateOutlet]=\"backContent\" />\n </div>\n </div>\n}\n\n@if (renderCardFront) {\n <div class=\"card front\">\n <div class=\"card-bg\" style=\"transform: translateX(0) translateY(0)\">\n <ng-template [ngTemplateOutlet]=\"background\" />\n </div>\n <div class=\"card-content\">\n @if (content) {\n <ng-template [ngTemplateOutlet]=\"content\"/>\n }\n @else {\n <ng-content/>\n }\n </div>\n </div>\n}\n\n\n", styles: [":host{display:block;position:relative;cursor:pointer;--easing-function: cubic-bezier(.23, 1, .32, 1);--border-radius: 9px}.card{position:absolute;height:100%;width:100%;background-color:#333;backface-visibility:hidden;overflow:hidden;box-shadow:#0000 0 0 40px 5px,#000000a8 0 30px 60px,inset #333 0 0 0 5px;border-radius:var(--border-radius);transition:transform var(--flip-animation-duration) var(--easing-function),box-shadow 2s var(--easing-function);transform-style:preserve-3d;will-change:transform}.card:hover{box-shadow:#fff6 0 0 40px 5px,#000000a8 0 30px 60px,inset #333 0 0 0 5px}.card:hover .card-content{border:2px solid #fff}.card-bg{inset:var(--card-bg-inset);position:absolute;pointer-events:none;transition:transform .6s var(--easing-function)}.card-content{position:absolute;top:0;color:#fff;height:100%;width:100%;z-index:1;border:2px solid rgba(255,255,255,0);border-radius:var(--border-radius);transition:transform .6s var(--easing-function),border-color .6s var(--easing-function)}\n"] }]
|
|
115
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { content: [{
|
|
116
|
+
type: ContentChild,
|
|
117
|
+
args: ['content', { read: TemplateRef }]
|
|
118
|
+
}], background: [{
|
|
119
|
+
type: ContentChild,
|
|
120
|
+
args: ['background', { read: TemplateRef }]
|
|
121
|
+
}], backContent: [{
|
|
122
|
+
type: ContentChild,
|
|
123
|
+
args: ['backContent', { read: TemplateRef }]
|
|
124
|
+
}], backBackground: [{
|
|
125
|
+
type: ContentChild,
|
|
126
|
+
args: ['backBackground', { read: TemplateRef }]
|
|
127
|
+
}], loaded: [{
|
|
128
|
+
type: Output
|
|
129
|
+
}], width: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], height: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], bgInset: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], flipAnimationDuration: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}] } });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYWxsYXgtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vY29yZS9jb21wb25lbnRzL3BhcmFsbGF4LWNhcmQvcGFyYWxsYXgtY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vY29yZS9jb21wb25lbnRzL3BhcmFsbGF4LWNhcmQvcGFyYWxsYXgtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBdUJ0SCxNQUFNLE9BQU8scUJBQXFCO0lBd0M5QixJQUFZLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBNEIsQ0FBQyxDQUFDLENBQUM7SUFDM0UsSUFBWSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzVGLElBQVksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQVksaUJBQWlCLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLElBQVkseUJBQXlCLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQW1CLENBQUMsQ0FBQyxDQUFDO0lBTTdHLFlBQ3FCLE9BQW1CLEVBQ25CLE1BQWM7UUFEZCxZQUFPLEdBQVAsT0FBTyxDQUFZO1FB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QTtJQUNqQixDQUFDOytHQTdGUSxxQkFBcUI7bUdBQXJCLHFCQUFxQixvZ0JBR0csV0FBVyxtR0FDUixXQUFXLHFHQUdWLFdBQVcsMkdBQ1IsV0FBVyw2QkNoQ3ZELDB6QkE0QkEscWlDRGZRLGdCQUFnQjs7NEZBV1gscUJBQXFCO2tCQWhCakMsU0FBUzsrQkFDSSxtQkFBbUIsV0FHcEI7d0JBQ0wsZ0JBQWdCO3FCQUNuQixRQUNLO3dCQUNGLGVBQWUsRUFBRSxPQUFPO3dCQUN4QixnQkFBZ0IsRUFBRSxRQUFRO3dCQUMxQix5QkFBeUIsRUFBRSxlQUFlO3dCQUMxQyxtQ0FBbUMsRUFBRSw0QkFBNEI7d0JBQ2pFLGNBQWMsRUFBRSxnQkFBZ0I7cUJBQ25DLGNBQ1csSUFBSTtvR0FLZ0MsT0FBTztzQkFBdEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNLLFVBQVU7c0JBQTVELFlBQVk7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHRyxXQUFXO3NCQUE5RCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ0ssY0FBYztzQkFBcEUsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSzNDLE1BQU07c0JBQWYsTUFBTTtnQkFNRSxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxudHlwZSBDU1NVbml0U3RyaW5nID0gJ3B4JyB8ICclJyB8ICdlbScgfCAnaW4nIHwgJyc7XG50eXBlIENTU1VuaXQgPSBgJHtudW1iZXJ9JHtDU1NVbml0U3RyaW5nfWAgfCBgdmFyKC0tJHtzdHJpbmd9KWA7XG50eXBlIENTU1N0cmluZyA9IENTU1VuaXQgfFxuICAgIGBjYWxjKCR7Q1NTVW5pdHwnJ30keycnfCcgJ30keycrJ3wnLSd8Jy8nfCcqJ30keycnfCcgJ30ke0NTU1VuaXR8Jyd9KWBcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtcGFyYWxsYXgtY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhcmFsbGF4LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BhcmFsbGF4LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXRcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tzdHlsZS53aWR0aF0nOiAnd2lkdGgnLFxuICAgICAgICAnW3N0eWxlLmhlaWdodF0nOiAnaGVpZ2h0JyxcbiAgICAgICAgJ1tzdHlsZS4tLWNhcmQtYmctaW5zZXRdJzogJy1iZ0luc2V0K1wicHhcIicsXG4gICAgICAgICdbc3R5bGUuLS1mbGlwLWFuaW1hdGlvbi1kdXJhdGlvbl0nOiAnZmxpcEFuaW1hdGlvbkR1cmF0aW9uK1wibXNcIicsXG4gICAgICAgICdbY2xhc3MuZmxpcF0nOiAnc2hvd0JhY2tPZkNhcmQnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFsbGF4Q2FyZENvbXBvbmVudCB7XG5cbiAgICAvLyBGcm9udCBvZiBjYXJkXG4gICAgQENvbnRlbnRDaGlsZCgnY29udGVudCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29udGVudDogVGVtcGxhdGVSZWY8RWxlbWVudFJlZj47XG4gICAgQENvbnRlbnRDaGlsZCgnYmFja2dyb3VuZCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgYmFja2dyb3VuZDogVGVtcGxhdGVSZWY8RWxlbWVudFJlZj47XG5cbiAgICAvLyBCYWNrIG9mIGNhcmRcbiAgICBAQ29udGVudENoaWxkKCdiYWNrQ29udGVudCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgYmFja0NvbnRlbnQ6IFRlbXBsYXRlUmVmPEVsZW1lbnRSZWY+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2JhY2tCYWNrZ3JvdW5kJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBiYWNrQmFja2dyb3VuZDogVGVtcGxhdGVSZWY8RWxlbWVudFJlZj47XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBXaWR0aCBvZiB0aGUgY2FyZFxuICAgICAqIEBkZWZhdWx0IGAyNDBweGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSB3aWR0aDogIENTU1N0cmluZyA9ICcyNDBweCc7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIHRoZSBjYXJkXG4gICAgICogQGRlZmF1bHQgYDMyMHB4YFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGhlaWdodDogQ1NTU3RyaW5nID0gJzMyMHB4JztcbiAgICAvKipcbiAgICAgKiBJbnNldCBwYWRkaW5nIG9mIHRoZSBwYXJhbGxheFxuICAgICAqIEBkZWZhdWx0IDgwXG4gICAgICovXG4gICAgQElucHV0KCkgYmdJbnNldDogIG51bWJlciA9IDgwO1xuICAgIC8qKlxuICAgICAqIER1cmF0aW9uIGZvciB0aGUgZmxpcCBhbmltYXRpb24gaW4gbXNcbiAgICAgKiBAZGVmYXVsdCAxMjAwXG4gICAgICovXG4gICAgQElucHV0KCkgZmxpcEFuaW1hdGlvbkR1cmF0aW9uOiAgbnVtYmVyID0gMTIwMDtcblxuICAgIHJlbmRlckNhcmRGcm9udCA9IHRydWU7XG4gICAgcmVuZGVyQ2FyZEJhY2sgPSB0cnVlO1xuICAgIHNob3dCYWNrT2ZDYXJkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGdldCB3cmFwcGVyKCkgeyByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7IH1cbiAgICBwcml2YXRlIGdldCBjYXJkRnJvbnQoKSB7IHJldHVybiB0aGlzLndyYXBwZXIucXVlcnlTZWxlY3RvcignLmNhcmQuZnJvbnQnKSBhcyBIVE1MRWxlbWVudDsgfVxuICAgIHByaXZhdGUgZ2V0IGNhcmRCYWNrKCkgeyByZXR1cm4gdGhpcy53cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJy5jYXJkLmJhY2tmYWNlJykgYXMgSFRNTEVsZW1lbnQ7IH1cbiAgICBwcml2YXRlIGdldCBiYWNrZ3JvdW5kRWxlbWVudCgpIHsgcmV0dXJuIHRoaXMuY2FyZEZyb250LnF1ZXJ5U2VsZWN0b3IoJy5jYXJkLWJnJykgYXMgSFRNTERpdkVsZW1lbnQ7IH1cbiAgICBwcml2YXRlIGdldCBiYWNrZmFjZUJhY2tncm91bmRFbGVtZW50KCkgeyByZXR1cm4gdGhpcy5jYXJkQmFjay5xdWVyeVNlbGVjdG9yKCcuY2FyZC1iZycpIGFzIEhUTUxEaXZFbGVtZW50OyB9XG5cbiAgICBwcml2YXRlIHBvaW50ZXJYID0gMDtcbiAgICBwcml2YXRlIHBvaW50ZXJZID0gMDtcbiAgICBwcml2YXRlIHBvaW50ZXJMZWF2ZSA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLndyYXBwZXI7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgLy8gRGlyZWN0bHkgYXR0YWNoIGV2ZW50cyB0byB0aGUgd3JhcHBlclxuICAgICAgICAgICAgZWwub25wb2ludGVybW92ZSA9IChlKSA9PiB0aGlzLm9uUG9pbnRlck1vdmUoZSk7XG4gICAgICAgICAgICBlbC5vbnBvaW50ZXJlbnRlciA9ICgpID0+IHRoaXMub25Qb2ludGVyRW50ZXIoKTtcbiAgICAgICAgICAgIGVsLm9ucG9pbnRlcmxlYXZlID0gKCkgPT4gdGhpcy5vblBvaW50ZXJMZWF2ZSgpO1xuICAgICAgICB9KVxuICAgICAgICBlbC5vbmNsaWNrID0gKCkgPT4gdGhpcy5vbkNsaWNrKCk7XG5cbiAgICAgICAgdGhpcy5sb2FkZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uUG9pbnRlck1vdmUoZTogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgbGVmdCwgdG9wIH0gPSB0aGlzLndyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMucG9pbnRlclggPSBlLnBhZ2VYIC0gbGVmdCAtICh3aWR0aCAvIDIpO1xuICAgICAgICB0aGlzLnBvaW50ZXJZID0gZS5wYWdlWSAtIHRvcCAtIChoZWlnaHQgLyAyKTtcblxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIG9uUG9pbnRlckVudGVyKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wb2ludGVyTGVhdmUpO1xuICAgIH1cblxuICAgIG9uUG9pbnRlckxlYXZlKCkge1xuICAgICAgICB0aGlzLnBvaW50ZXJMZWF2ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb2ludGVyWCA9IDA7XG4gICAgICAgICAgICB0aGlzLnBvaW50ZXJZID0gMDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0sIDYwMCkgYXMgYW55O1xuICAgIH1cblxuICAgIC8vIFRPRE86IFRoaXMgY2FuIGdldCBpbnRlcmNlcHRlZCBpbiBzb21lIHN0YXRlc1xuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuc2hvd0JhY2tPZkNhcmQgPSAhdGhpcy5zaG93QmFja09mQ2FyZDtcbiAgICAgICAgdGhpcy5yZW5kZXIoKVxuICAgIH1cblxuICAgIHJlbmRlciA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLndyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG1vdXNlUFggPSB0aGlzLnBvaW50ZXJYIC8gd2lkdGg7XG4gICAgICAgIGNvbnN0IG1vdXNlUFkgPSB0aGlzLnBvaW50ZXJZIC8gaGVpZ2h0O1xuXG4gICAgICAgIC8vIFJvdGF0aW9uIGZhY3RvcnNcbiAgICAgICAgY29uc3QgclggPSBtb3VzZVBYICogdGhpcy5iZ0luc2V0IC8gMS43NTtcbiAgICAgICAgY29uc3QgclkgPSBtb3VzZVBZICogLXRoaXMuYmdJbnNldCAvIDEuNzU7XG5cbiAgICAgICAgLy8gVHJhbnNsYXRpb24gZmFjdG9yc1xuICAgICAgICBjb25zdCB0WCA9IG1vdXNlUFggKiAtdGhpcy5iZ0luc2V0ICogMjtcbiAgICAgICAgY29uc3QgdFkgPSBtb3VzZVBZICogLXRoaXMuYmdJbnNldCAqIDI7XG5cbiAgICAgICAgaWYgKHRoaXMucmVuZGVyQ2FyZEZyb250KSB7XG4gICAgICAgICAgICB0aGlzLmJhY2tncm91bmRFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7dFh9cHgpIHRyYW5zbGF0ZVkoJHt0WX1weClgO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlbmRlckNhcmRCYWNrKSB7XG4gICAgICAgICAgICB0aGlzLmJhY2tmYWNlQmFja2dyb3VuZEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHt0WH1weCkgdHJhbnNsYXRlWSgke3RZfXB4KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaG93QmFja09mQ2FyZCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkRnJvbnQuc3R5bGUudHJhbnNmb3JtID0gYHJvdGF0ZVkoMTgwZGVnKSByb3RhdGVYKCR7LXJZfWRlZylgO1xuICAgICAgICAgICAgdGhpcy5jYXJkQmFjay5zdHlsZS50cmFuc2Zvcm0gPSBgcm90YXRlWSgkey1yWH1kZWcpIHJvdGF0ZVgoJHstcll9ZGVnKWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRGcm9udC5zdHlsZS50cmFuc2Zvcm0gPSBgcm90YXRlWSgke3JYfWRlZykgcm90YXRlWCgke3JZfWRlZylgO1xuICAgICAgICAgICAgdGhpcy5jYXJkQmFjay5zdHlsZS50cmFuc2Zvcm0gPSBgcm90YXRlWSgxODBkZWcpIHJvdGF0ZVgoJHstcll9ZGVnKWA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKHJlbmRlckNhcmRCYWNrKSB7XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgYmFja2ZhY2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmdcIiBzdHlsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYmFja0JhY2tncm91bmRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJhY2tDb250ZW50XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbkBpZiAocmVuZGVyQ2FyZEZyb250KSB7XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgZnJvbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmdcIiBzdHlsZT1cInRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSB0cmFuc2xhdGVZKDApXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYmFja2dyb3VuZFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICBAaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGVudC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG5cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const NGX_WEB_COMPONENTS_CONFIG = new InjectionToken('webcomponents-config');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vY29yZS9jb21wb25lbnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxjQUFjLENBQXlCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTkdYX1dFQl9DT01QT05FTlRTX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hXZWJDb21wb25lbnRzQ29uZmlnPignd2ViY29tcG9uZW50cy1jb25maWcnKTtcblxuZXhwb3J0IHR5cGUgTmd4V2ViQ29tcG9uZW50c0NvbmZpZyA9IFBhcnRpYWw8e1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXRoIHRoYXQgYXNzZXRzIHdpbGwgdWx0aW1hdGVseSBiZSBzZXJ2ZWQgZnJvbS5cbiAgICAgKiBEZWZhdWx0IGAvYXNzZXRzL2BcbiAgICAgKi9cbiAgICBhc3NldFBhdGg6IHN0cmluZztcbn0+O1xuXG5cbiJdfQ==
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Directive, Inject, InjectionToken, Input, Optional } from '@angular/core';
|
|
2
|
+
import { INDEXEDDB, createInstance } from 'localforage';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const storage = createInstance({
|
|
5
|
+
name: "@dotglitch",
|
|
6
|
+
storeName: "image-cache",
|
|
7
|
+
driver: INDEXEDDB,
|
|
8
|
+
version: 1
|
|
9
|
+
});
|
|
10
|
+
const imageCache = {};
|
|
11
|
+
const loadingSvg = `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32px" height="32px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="50" cy="50" fill="none" stroke="%2340c4ff" stroke-width="10" r="35" stroke-dasharray="164.93361431346415 56.97787143782138"><animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s" values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform></circle><!-- [ldio] generated by https://loading.io/ --></svg>`;
|
|
12
|
+
const brokenSvg = `data:image/svg+xml;utf8,<svg width="800" height="800" viewBox="0 0 24 24" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><line x1="10.08" y1="8.29" x2="10.18" y2="8.29" style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round" /><path d="m 10.51,14.8 5.2,5.2 H 20 a 1,1 0 0 0 1,-1 V 15.73 L 15.29,10 Z M 3,16.71 V 19 a 1,1 0 0 0 1,1 h 11.71 l -8,-8 z M 21,5 v 14 a 1,1 0 0 1 -1,1 H 4 A 1,1 0 0 1 3,19 V 5 A 1,1 0 0 1 4,4 h 16 a 1,1 0 0 1 1,1 z" style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round" /><path d="M 21.193388,21.193388 2.8066108,2.8066108 m 18.3867772,0 L 2.8066108,21.193388" style="stroke:%23ff0000;stroke-width:2.62668;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></svg>`;
|
|
13
|
+
export const NGX_IMAGE_CACHE_CONFIG = new InjectionToken('ngx-image-cache-config');
|
|
14
|
+
export class NgxImageCacheDirective {
|
|
15
|
+
get el() { return this.element.nativeElement; }
|
|
16
|
+
constructor(element, cacheConfig) {
|
|
17
|
+
this.element = element;
|
|
18
|
+
this.cacheConfig = cacheConfig;
|
|
19
|
+
}
|
|
20
|
+
ngOnChanges() {
|
|
21
|
+
this.getCachedImage();
|
|
22
|
+
}
|
|
23
|
+
async getCachedImage() {
|
|
24
|
+
if (this.el.src?.trim() == this.url?.trim() || // Check that there's an actual change
|
|
25
|
+
this.url?.trim().length == 0 // Check that there's an actual URL
|
|
26
|
+
)
|
|
27
|
+
return;
|
|
28
|
+
// Check if it's in the memory cache
|
|
29
|
+
if (imageCache[this.url]) {
|
|
30
|
+
const image = imageCache[this.url];
|
|
31
|
+
// If the image is currently loading, show the loader
|
|
32
|
+
// and add it to the reflist
|
|
33
|
+
if (image['_loading'] == true) {
|
|
34
|
+
image['_refs'].push(this.el);
|
|
35
|
+
this.el.setAttribute("loading", "true");
|
|
36
|
+
this.el.src = this.cacheConfig?.loadingPlaceholder || loadingSvg;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// The image is fully loaded, swap out the src with a data-uri
|
|
40
|
+
this.el.setAttribute("loading", "false");
|
|
41
|
+
this.el.src = image.src;
|
|
42
|
+
}
|
|
43
|
+
// If it's already in the image cache, we're going to trust that it loads properly.
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Check if it's in indexedDB
|
|
47
|
+
if (this.configuration?.cacheInIndexedDB != false) {
|
|
48
|
+
const cached = await storage.getItem(this.url);
|
|
49
|
+
if (cached) {
|
|
50
|
+
// Attempt to load the base64 data from indexeddb.
|
|
51
|
+
// If this fails, we'll fall back to attempting to download the image
|
|
52
|
+
this.el.src = cached.data;
|
|
53
|
+
const evt = await new Promise(res => {
|
|
54
|
+
this.el.addEventListener('load', res);
|
|
55
|
+
this.el.addEventListener('error', res);
|
|
56
|
+
});
|
|
57
|
+
// If the event isn't an error
|
|
58
|
+
if (evt.type == "load") {
|
|
59
|
+
this.el.setAttribute("loading", "false");
|
|
60
|
+
if (this.configuration?.cacheInMemory != false) {
|
|
61
|
+
// Successfully loaded into element
|
|
62
|
+
// Create an entry in the memory cache
|
|
63
|
+
const image = imageCache[this.url] = new Image();
|
|
64
|
+
image.src = cached.data;
|
|
65
|
+
image['_createdAt'] = Date.now();
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// Else, we try to load again.
|
|
71
|
+
this.el.src = this.cacheConfig?.loadingPlaceholder || loadingSvg;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const image = (() => {
|
|
76
|
+
if (this.configuration?.cacheInMemory != false) {
|
|
77
|
+
return imageCache[this.url] = new Image();
|
|
78
|
+
}
|
|
79
|
+
return new Image();
|
|
80
|
+
})();
|
|
81
|
+
// const clone = image.cloneNode(true) as HTMLImageElement;
|
|
82
|
+
image['_refs'] = image['_refs'] ?? [];
|
|
83
|
+
image['_refs'].push(this.el);
|
|
84
|
+
image['_loading'] = true;
|
|
85
|
+
image['_createdAt'] = Date.now();
|
|
86
|
+
// Show a loader while the image downloads.
|
|
87
|
+
this.el.setAttribute("loading", "true");
|
|
88
|
+
this.el.src = this.cacheConfig?.loadingPlaceholder || loadingSvg;
|
|
89
|
+
// Fetch the image via JS and cache it as base64
|
|
90
|
+
window.fetch(this.url)
|
|
91
|
+
.then(response => response.blob())
|
|
92
|
+
.then(blob => new Promise((resolve, reject) => {
|
|
93
|
+
const reader = new FileReader();
|
|
94
|
+
reader.onloadend = () => {
|
|
95
|
+
image.src = reader.result;
|
|
96
|
+
storage.setItem(this.url, {
|
|
97
|
+
timestamp: Date.now(),
|
|
98
|
+
data: reader.result
|
|
99
|
+
});
|
|
100
|
+
image['_refs'].forEach((ref) => {
|
|
101
|
+
ref.src = image.src;
|
|
102
|
+
});
|
|
103
|
+
image['_loading'] = false;
|
|
104
|
+
resolve(0);
|
|
105
|
+
};
|
|
106
|
+
reader.onerror = reject;
|
|
107
|
+
reader.readAsDataURL(blob);
|
|
108
|
+
}))
|
|
109
|
+
.catch(err => {
|
|
110
|
+
// If a failure occurs, purge this entry from the cache
|
|
111
|
+
// TODO: Render better "broken" image
|
|
112
|
+
delete imageCache[this.url];
|
|
113
|
+
image['_refs'].forEach((ref) => {
|
|
114
|
+
ref.src = this.cacheConfig?.brokenPlaceholder || brokenSvg;
|
|
115
|
+
ref.setAttribute("loading", "failed");
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxImageCacheDirective, deps: [{ token: i0.ElementRef }, { token: NGX_IMAGE_CACHE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
120
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgxImageCacheDirective, isStandalone: true, selector: "img[ngx-cache]", inputs: { url: ["source", "url"], configuration: ["ngx-cache-config", "configuration"] }, usesOnChanges: true, ngImport: i0 }); }
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgxImageCacheDirective, decorators: [{
|
|
123
|
+
type: Directive,
|
|
124
|
+
args: [{
|
|
125
|
+
selector: 'img[ngx-cache]',
|
|
126
|
+
standalone: true
|
|
127
|
+
}]
|
|
128
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
129
|
+
type: Optional
|
|
130
|
+
}, {
|
|
131
|
+
type: Inject,
|
|
132
|
+
args: [NGX_IMAGE_CACHE_CONFIG]
|
|
133
|
+
}] }], propDecorators: { url: [{
|
|
134
|
+
type: Input,
|
|
135
|
+
args: ["source"]
|
|
136
|
+
}, {
|
|
137
|
+
type: Input,
|
|
138
|
+
args: ["ngx-cache"]
|
|
139
|
+
}], configuration: [{
|
|
140
|
+
type: Input,
|
|
141
|
+
args: ["ngx-cache-config"]
|
|
142
|
+
}] } });
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2FjaGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL2NvcmUvZGlyZWN0aXZlcy9pbWFnZS1jYWNoZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRXhELE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQztJQUMzQixJQUFJLEVBQUUsWUFBWTtJQUNsQixTQUFTLEVBQUUsYUFBYTtJQUN4QixNQUFNLEVBQUUsU0FBUztJQUNqQixPQUFPLEVBQUUsQ0FBQztDQUNiLENBQUMsQ0FBQztBQUdILE1BQU0sVUFBVSxHQUVaLEVBQUUsQ0FBQztBQUVQLE1BQU0sVUFBVSxHQUFHLDZoQkFBNmhCLENBQUM7QUFDampCLE1BQU0sU0FBUyxHQUFHLHcwQkFBdzBCLENBQUM7QUFlMzFCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFzQix3QkFBd0IsQ0FBQyxDQUFDO0FBMkJ4RyxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLElBQVksRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFpQyxDQUFBLENBQUMsQ0FBQztJQUUxRSxZQUNxQixPQUFtQixFQUN5QixXQUFnQztRQUQ1RSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ3lCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtJQUM3RixDQUFDO0lBRUwsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDaEIsSUFDSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJ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Q25COzswQkFZUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQjt5Q0FSMUIsR0FBRztzQkFEdEIsS0FBSzt1QkFBQyxRQUFROztzQkFDZCxLQUFLO3VCQUFDLFdBQVc7Z0JBRVMsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU5ERVhFRERCLCBjcmVhdGVJbnN0YW5jZSB9IGZyb20gJ2xvY2FsZm9yYWdlJztcblxuY29uc3Qgc3RvcmFnZSA9IGNyZWF0ZUluc3RhbmNlKHtcbiAgICBuYW1lOiBcIkBkb3RnbGl0Y2hcIixcbiAgICBzdG9yZU5hbWU6IFwiaW1hZ2UtY2FjaGVcIixcbiAgICBkcml2ZXI6IElOREVYRUREQixcbiAgICB2ZXJzaW9uOiAxXG59KTtcblxuXG5jb25zdCBpbWFnZUNhY2hlOiB7XG4gICAgW2tleTogc3RyaW5nXTogSFRNTEltYWdlRWxlbWVudDtcbn0gPSB7fTtcblxuY29uc3QgbG9hZGluZ1N2ZyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB3aWR0aD1cIjMycHhcIiBoZWlnaHQ9XCIzMnB4XCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkXCI+PGNpcmNsZSBjeD1cIjUwXCIgY3k9XCI1MFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiJTIzNDBjNGZmXCIgc3Ryb2tlLXdpZHRoPVwiMTBcIiByPVwiMzVcIiBzdHJva2UtZGFzaGFycmF5PVwiMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4XCI+PGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiIHR5cGU9XCJyb3RhdGVcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIiBkdXI9XCIxc1wiIHZhbHVlcz1cIjAgNTAgNTA7MzYwIDUwIDUwXCIga2V5VGltZXM9XCIwOzFcIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9jaXJjbGU+PCEtLSBbbGRpb10gZ2VuZXJhdGVkIGJ5IGh0dHBzOi8vbG9hZGluZy5pby8gLS0+PC9zdmc+YDtcbmNvbnN0IGJyb2tlblN2ZyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHdpZHRoPVwiODAwXCIgaGVpZ2h0PVwiODAwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHZlcnNpb249XCIxLjFcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczpzdmc9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxsaW5lIHgxPVwiMTAuMDhcIiB5MT1cIjguMjlcIiB4Mj1cIjEwLjE4XCIgeTI9XCI4LjI5XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjIuNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmRcIiAvPjxwYXRoIGQ9XCJtIDEwLjUxLDE0LjggNS4yLDUuMiBIIDIwIGEgMSwxIDAgMCAwIDEsLTEgViAxNS43MyBMIDE1LjI5LDEwIFogTSAzLDE2LjcxIFYgMTkgYSAxLDEgMCAwIDAgMSwxIGggMTEuNzEgbCAtOCwtOCB6IE0gMjEsNSB2IDE0IGEgMSwxIDAgMCAxIC0xLDEgSCA0IEEgMSwxIDAgMCAxIDMsMTkgViA1IEEgMSwxIDAgMCAxIDQsNCBoIDE2IGEgMSwxIDAgMCAxIDEsMSB6XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kXCIgLz48cGF0aCBkPVwiTSAyMS4xOTMzODgsMjEuMTkzMzg4IDIuODA2NjEwOCwyLjgwNjYxMDggbSAxOC4zODY3NzcyLDAgTCAyLjgwNjYxMDgsMjEuMTkzMzg4XCIgc3R5bGU9XCJzdHJva2U6JTIzZmYwMDAwO3N0cm9rZS13aWR0aDoyLjYyNjY4O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utb3BhY2l0eToxXCIgLz48L3N2Zz5gO1xuXG5leHBvcnQgdHlwZSBOZ3hJbWFnZUNhY2hlQ29uZmlnID0ge1xuICAgIC8qKlxuICAgICAqIEltYWdlIHRvIHVzZSBhcyBhIHBsYWNlaG9sZGVyIHdoaWxlIGxvYWRpbmcgdGhlIG1haW4gaW1hZ2VcbiAgICAgKiBSZWNvbW1lbmRlZCB0byB1c2UgaW5saW5lZCBTVkcgb3IgYSBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICAgICAqL1xuICAgIGxvYWRpbmdQbGFjZWhvbGRlcj86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBJbWFnZSB0byB1c2UgYXMgYSBwbGFjZWhvbGRlciB3aGVyZSBpbWFnZXMgZmFpbCB0byBsb2FkXG4gICAgICogUmVjb21tZW5kZWQgdG8gdXNlIGlubGluZWQgU1ZHIG9yIGEgYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAgICAgKi9cbiAgICBicm9rZW5QbGFjZWhvbGRlcj86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgTkdYX0lNQUdFX0NBQ0hFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hJbWFnZUNhY2hlQ29uZmlnPignbmd4LWltYWdlLWNhY2hlLWNvbmZpZycpO1xuXG5cbmV4cG9ydCB0eXBlIE5neEltYWdlQ2FjaGVDb25maWd1cmF0aW9uID0ge1xuICAgIC8qKlxuICAgICAqIE1heCBhZ2UgdG8gY2FjaGUgYW4gaW1hZ2UgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqIElmIHNldCB0byBgMGAgb3IgYSBuZWdhdGl2ZSBudW1iZXIsIGltYWdlcyB3aWxsIG5ldmVyIGV4cGlyZS5cbiAgICAgKi9cbiAgICBtYXhBZ2U6IG51bWJlcixcbiAgICAvKipcbiAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIG1lbW9yeSBjYWNoaW5nIGZvciB0aGUgaW1hZ2VcbiAgICAgKiBJZiBib3RoIGBjYWNoZUluTWVtb3J5YCBhbmQgYGNhY2hlSW5JbmRleGVkREJgIGFyZSBmYWxzZSxcbiAgICAgKiBubyBjYWNoaW5nIHdpbGwgaGFwcGVuLiAoWW91J2xsIHN0aWxsIGdldCB0aGUgbG9hZGVyKVxuICAgICAqL1xuICAgIGNhY2hlSW5NZW1vcnk6IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSBpbmRleGVkREIgY2FjaGluZyBmb3IgdGhlIGltYWdlXG4gICAgICogSWYgYm90aCBgY2FjaGVJbk1lbW9yeWAgYW5kIGBjYWNoZUluSW5kZXhlZERCYCBhcmUgZmFsc2UsXG4gICAgICogbm8gY2FjaGluZyB3aWxsIGhhcHBlbi4gKFlvdSdsbCBzdGlsbCBnZXQgdGhlIGxvYWRlcilcbiAgICAgKi9cbiAgICBjYWNoZUluSW5kZXhlZERCOiBib29sZWFuXG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW1nW25neC1jYWNoZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmd4SW1hZ2VDYWNoZURpcmVjdGl2ZSB7XG5cbiAgICBASW5wdXQoXCJzb3VyY2VcIilcbiAgICBASW5wdXQoXCJuZ3gtY2FjaGVcIikgdXJsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoXCJuZ3gtY2FjaGUtY29uZmlnXCIpIGNvbmZpZ3VyYXRpb246IE5neEltYWdlQ2FjaGVDb25maWd1cmF0aW9uO1xuXG4gICAgcHJpdmF0ZSBnZXQgZWwoKSB7IHJldHVybiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW1hZ2VFbGVtZW50IH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkdYX0lNQUdFX0NBQ0hFX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBjYWNoZUNvbmZpZzogTmd4SW1hZ2VDYWNoZUNvbmZpZ1xuICAgICkgeyB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5nZXRDYWNoZWRJbWFnZSgpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldENhY2hlZEltYWdlKCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmVsLnNyYz8udHJpbSgpID09IHRoaXMudXJsPy50cmltKCkgfHwgLy8gQ2hlY2sgdGhhdCB0aGVyZSdzIGFuIGFjdHVhbCBjaGFuZ2VcbiAgICAgICAgICAgIHRoaXMudXJsPy50cmltKCkubGVuZ3RoID09IDAgLy8gQ2hlY2sgdGhhdCB0aGVyZSdzIGFuIGFjdHVhbCBVUkxcbiAgICAgICAgKSByZXR1cm47XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaXQncyBpbiB0aGUgbWVtb3J5IGNhY2hlXG4gICAgICAgIGlmIChpbWFnZUNhY2hlW3RoaXMudXJsXSkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBpbWFnZUNhY2hlW3RoaXMudXJsXTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGN1cnJlbnRseSBsb2FkaW5nLCBzaG93IHRoZSBsb2FkZXJcbiAgICAgICAgICAgIC8vIGFuZCBhZGQgaXQgdG8gdGhlIHJlZmxpc3RcbiAgICAgICAgICAgIGlmIChpbWFnZVsnX2xvYWRpbmcnXSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaW1hZ2VbJ19yZWZzJ10ucHVzaCh0aGlzLmVsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKFwibG9hZGluZ1wiLCBcInRydWVcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5zcmMgPSB0aGlzLmNhY2hlQ29uZmlnPy5sb2FkaW5nUGxhY2Vob2xkZXIgfHwgbG9hZGluZ1N2ZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBpbWFnZSBpcyBmdWxseSBsb2FkZWQsIHN3YXAgb3V0IHRoZSBzcmMgd2l0aCBhIGRhdGEtdXJpXG4gICAgICAgICAgICAgICAgdGhpcy5lbC5zZXRBdHRyaWJ1dGUoXCJsb2FkaW5nXCIsIFwiZmFsc2VcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5zcmMgPSBpbWFnZS5zcmM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIGl0J3MgYWxyZWFkeSBpbiB0aGUgaW1hZ2UgY2FjaGUsIHdlJ3JlIGdvaW5nIHRvIHRydXN0IHRoYXQgaXQgbG9hZHMgcHJvcGVybHkuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGluIGluZGV4ZWREQlxuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5jYWNoZUluSW5kZXhlZERCICE9IGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBzdG9yYWdlLmdldEl0ZW08YW55Pih0aGlzLnVybCk7XG4gICAgICAgICAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBsb2FkIHRoZSBiYXNlNjQgZGF0YSBmcm9tIGluZGV4ZWRkYi5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGZhaWxzLCB3ZSdsbCBmYWxsIGJhY2sgdG8gYXR0ZW1wdGluZyB0byBkb3dubG9hZCB0aGUgaW1hZ2VcbiAgICAgICAgICAgICAgICB0aGlzLmVsLnNyYyA9IGNhY2hlZC5kYXRhO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZXZ0OiBFdmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzbid0IGFuIGVycm9yXG4gICAgICAgICAgICAgICAgaWYgKGV2dC50eXBlID09IFwibG9hZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKFwibG9hZGluZ1wiLCBcImZhbHNlXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24/LmNhY2hlSW5NZW1vcnkgIT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBsb2FkZWQgaW50byBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYW4gZW50cnkgaW4gdGhlIG1lbW9yeSBjYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBpbWFnZUNhY2hlW3RoaXMudXJsXSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gY2FjaGVkLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVsnX2NyZWF0ZWRBdCddID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBFbHNlLCB3ZSB0cnkgdG8gbG9hZCBhZ2Fpbi5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5zcmMgPSB0aGlzLmNhY2hlQ29uZmlnPy5sb2FkaW5nUGxhY2Vob2xkZXIgfHwgbG9hZGluZ1N2ZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbWFnZSA9ICgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5jYWNoZUluTWVtb3J5ICE9IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlQ2FjaGVbdGhpcy51cmxdID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IEltYWdlKCk7XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgLy8gY29uc3QgY2xvbmUgPSBpbWFnZS5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgaW1hZ2VbJ19yZWZzJ10gPSBpbWFnZVsnX3JlZnMnXSA/PyBbXTtcbiAgICAgICAgaW1hZ2VbJ19yZWZzJ10ucHVzaCh0aGlzLmVsKTtcbiAgICAgICAgaW1hZ2VbJ19sb2FkaW5nJ10gPSB0cnVlO1xuICAgICAgICBpbWFnZVsnX2NyZWF0ZWRBdCddID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvLyBTaG93IGEgbG9hZGVyIHdoaWxlIHRoZSBpbWFnZSBkb3dubG9hZHMuXG4gICAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKFwibG9hZGluZ1wiLCBcInRydWVcIik7XG4gICAgICAgIHRoaXMuZWwuc3JjID0gdGhpcy5jYWNoZUNvbmZpZz8ubG9hZGluZ1BsYWNlaG9sZGVyIHx8IGxvYWRpbmdTdmc7XG5cbiAgICAgICAgLy8gRmV0Y2ggdGhlIGltYWdlIHZpYSBKUyBhbmQgY2FjaGUgaXQgYXMgYmFzZTY0XG4gICAgICAgIHdpbmRvdy5mZXRjaCh0aGlzLnVybClcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJsb2IoKSlcbiAgICAgICAgICAgIC50aGVuKGJsb2IgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zZXRJdGVtKHRoaXMudXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiByZWFkZXIucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGltYWdlWydfcmVmcyddLmZvckVhY2goKHJlZjogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmLnNyYyA9IGltYWdlLnNyYztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VbJ19sb2FkaW5nJ10gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgwKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gcmVqZWN0O1xuICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiBhIGZhaWx1cmUgb2NjdXJzLCBwdXJnZSB0aGlzIGVudHJ5IGZyb20gdGhlIGNhY2hlXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogUmVuZGVyIGJldHRlciBcImJyb2tlblwiIGltYWdlXG4gICAgICAgICAgICAgICAgZGVsZXRlIGltYWdlQ2FjaGVbdGhpcy51cmxdO1xuICAgICAgICAgICAgICAgIGltYWdlWydfcmVmcyddLmZvckVhY2goKHJlZjogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWYuc3JjID0gdGhpcy5jYWNoZUNvbmZpZz8uYnJva2VuUGxhY2Vob2xkZXIgfHwgYnJva2VuU3ZnO1xuICAgICAgICAgICAgICAgICAgICByZWYuc2V0QXR0cmlidXRlKFwibG9hZGluZ1wiLCBcImZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|