From bef87d737dcebf5232d5ec0c4ad49690d4ac2c58 Mon Sep 17 00:00:00 2001 From: Michael Hladky Date: Tue, 27 Mar 2018 16:28:43 +0200 Subject: [PATCH] =updated tooling --- .angular-cli.json | 108 + .editorconfig | 13 + .gitignore | 42 + .npmignore | 34 + .prettierrc | 3 + .travis.yml | 17 + @packaged/angular-star-rating.tgz | Bin 0 -> 60048 bytes .../angular-star-rating.d.ts | 4 + .../angular-star-rating.metadata.json | 1 + .../bundles/angular-star-rating.umd.js | 769 + .../bundles/angular-star-rating.umd.js.map | 32 + .../bundles/angular-star-rating.umd.min.js | 2 + .../angular-star-rating.umd.min.js.map | 213 + .../esm2015/angular-star-rating.js | 1072 ++ .../esm2015/angular-star-rating.js.map | 22 + .../esm5/angular-star-rating.js | 739 + .../esm5/angular-star-rating.js.map | 24 + @packaged/angular-star-rating/index.d.ts | 9 + @packaged/angular-star-rating/package.json | 59 + .../src/angular-star-rating.module.d.ts | 5 + .../src/components/star-rating.component.d.ts | 43 + .../src/interfaces/click-event.interface.d.ts | 3 + .../hover-rating-change-event.interface.d.ts | 3 + .../rating-change-event.interface.d.ts | 3 + .../star-rating-config.interface.d.ts | 28 + .../services/star-rating-config.service.d.ts | 44 + .../src/services/star-rating.d.ts | 130 + .../src/services/star-rating.utils.d.ts | 7 + CHANGELOG.md | 203 + LICENSE.txt | 21 + README.MD | 69 + SETUP-PROJECT.md | 152 + apps/.gitkeep | 1 + apps/angular5-example/e2e/app.e2e-spec.ts | 14 + apps/angular5-example/e2e/app.po.ts | 11 + apps/angular5-example/e2e/tsconfig.e2e.json | 20 + .../src/app/app.component.css | 0 .../src/app/app.component.html | 17 + .../src/app/app.component.spec.ts | 26 + .../angular5-example/src/app/app.component.ts | 12 + apps/angular5-example/src/app/app.module.ts | 12 + apps/angular5-example/src/assets/.gitkeep | 0 .../src/assets/images/star-rating.icons.svg | 24 + apps/angular5-example/src/assets/nx-logo.png | Bin 0 -> 71592 bytes .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 8 + apps/angular5-example/src/favicon.ico | Bin 0 -> 5430 bytes apps/angular5-example/src/index.html | 14 + apps/angular5-example/src/main.ts | 13 + apps/angular5-example/src/polyfills.ts | 70 + apps/angular5-example/src/styles.css | 2 + apps/angular5-example/src/tsconfig.app.json | 14 + .../src/tsconfig.packaged.json | 9 + changelog/README.md | 86 + changelog/changelog.config.js | 129 + changelog/templates/commit.hbs | 61 + changelog/templates/footer.hbs | 11 + changelog/templates/header.hbs | 26 + changelog/templates/template.hbs | 16 + chore/README.md | 178 + chore/config.js | 15 + chore/scripts/release.js | 27 + chore/scripts/tasks/build.js | 52 + chore/scripts/tasks/changelog.js | 71 + chore/scripts/tasks/ci-check.js | 24 + chore/scripts/tasks/refresh.js | 29 + chore/scripts/tasks/release-github.js | 31 + chore/scripts/tasks/release-npm.js | 26 + chore/scripts/tasks/version-bump.js | 47 + chore/scripts/utils.js | 143 + issue_template.md | 32 + karma.conf.js | 37 + libs/.gitkeep | 0 libs/angular-star-rating/index.ts | 13 + libs/angular-star-rating/package.json | 59 + libs/angular-star-rating/src/.browserslistcr | 3 + .../src/angular-star-rating.module.spec.ts | 7 + .../src/angular-star-rating.module.ts | 30 + .../src/assets/images/star-rating.icons.svg | 24 + .../src/components/star-rating.component.html | 28 + .../components/star-rating.component.spec.ts | 28 + .../src/components/star-rating.component.ts | 231 + .../src/configs/default.config.ts | 50 + .../src/interfaces/click-event.interface.ts | 3 + .../hover-rating-change-event.interface.ts | 3 + .../rating-change-event.interface.ts | 3 + .../star-rating-config.interface.ts | 31 + .../services/star-rating-config.service.ts | 217 + .../src/services/star-rating.ts | 452 + .../src/services/star-rating.utils.ts | 82 + package-lock.json | 12585 ++++++++++++++++ package.json | 77 + protractor.conf.js | 30 + resources/browser/chrome.png | Bin 0 -> 8197 bytes resources/browser/firefox.png | Bin 0 -> 7788 bytes resources/browser/ie.png | Bin 0 -> 7291 bytes resources/browser/opera.png | Bin 0 -> 5383 bytes resources/browser/safari.png | Bin 0 -> 11676 bytes resources/elements/star-color-default.PNG | Bin 0 -> 690 bytes resources/elements/star-color-middle.PNG | Bin 0 -> 684 bytes resources/elements/star-color-negative.PNG | Bin 0 -> 736 bytes resources/elements/star-color-positive.PNG | Bin 0 -> 761 bytes resources/elements/star-empty.png | Bin 0 -> 17182 bytes resources/elements/star-fill-empty.png | Bin 0 -> 469 bytes resources/elements/star-fill-filled.PNG | Bin 0 -> 405 bytes resources/elements/star-fill-half.PNG | Bin 0 -> 434 bytes resources/elements/star-filled.png | Bin 0 -> 25557 bytes resources/elements/star-icon-character.PNG | Bin 0 -> 737 bytes resources/elements/star-icon-svg.PNG | Bin 0 -> 663 bytes resources/elements/star-rating-options.PNG | Bin 0 -> 43817 bytes resources/elements/star-size-larg.PNG | Bin 0 -> 728 bytes resources/elements/star-size-medium.PNG | Bin 0 -> 474 bytes resources/elements/star-size-small.PNG | Bin 0 -> 315 bytes resources/examples/example-usage.PNG | Bin 0 -> 4250 bytes resources/examples/example-usage.gif | Bin 0 -> 1055503 bytes resources/family/angular.png | Bin 0 -> 3964 bytes resources/family/angular1.png | Bin 0 -> 3757 bytes resources/family/css3.png | Bin 0 -> 3783 bytes resources/family/ionic1.png | Bin 0 -> 4421 bytes .../prop-animation_speed-immediately.gif | Bin 0 -> 57832 bytes .../prop-animation_speed-noticeable.gif | Bin 0 -> 58684 bytes .../properties/prop-animation_speed-slow.gif | Bin 0 -> 136470 bytes resources/properties/prop-color-default.PNG | Bin 0 -> 3073 bytes resources/properties/prop-color-middle.PNG | Bin 0 -> 3751 bytes resources/properties/prop-color-negative.PNG | Bin 0 -> 3836 bytes resources/properties/prop-color-ok.PNG | Bin 0 -> 3751 bytes resources/properties/prop-color-positive.PNG | Bin 0 -> 3101 bytes resources/properties/prop-direction-ltr.PNG | Bin 0 -> 1408 bytes resources/properties/prop-direction-rtl.PNG | Bin 0 -> 1222 bytes resources/properties/prop-disabled-false.PNG | Bin 0 -> 9574 bytes resources/properties/prop-disabled-true.PNG | Bin 0 -> 9783 bytes .../properties/prop-get_color-function.PNG | Bin 0 -> 4193 bytes .../prop-get_half_star_visible-custom.PNG | Bin 0 -> 978 bytes .../prop-get_half_star_visible-default.PNG | Bin 0 -> 996 bytes resources/properties/prop-labe-hiddel.PNG | Bin 0 -> 888 bytes resources/properties/prop-label-bottom.PNG | Bin 0 -> 10978 bytes resources/properties/prop-label-left.PNG | Bin 0 -> 9930 bytes resources/properties/prop-label-right.PNG | Bin 0 -> 9906 bytes resources/properties/prop-label-top.PNG | Bin 0 -> 10946 bytes resources/properties/prop-label-visible.PNG | Bin 0 -> 1425 bytes resources/properties/prop-label_text.PNG | Bin 0 -> 1837 bytes resources/properties/prop-num_of_stars.PNG | Bin 0 -> 3447 bytes .../properties/prop-on_click-counter.PNG | Bin 0 -> 2633 bytes .../properties/prop-on_update-2waybinding.PNG | Bin 0 -> 2511 bytes .../properties/prop-show_half_stars-false.PNG | Bin 0 -> 3870 bytes .../properties/prop-show_half_stars-true.PNG | Bin 0 -> 3895 bytes resources/properties/prop-size-large.PNG | Bin 0 -> 2783 bytes resources/properties/prop-size-medium.PNG | Bin 0 -> 1781 bytes resources/properties/prop-size-small.PNG | Bin 0 -> 1218 bytes resources/properties/prop-space-around.PNG | Bin 0 -> 985 bytes resources/properties/prop-space-between.PNG | Bin 0 -> 1814 bytes resources/properties/prop-space-default.PNG | Bin 0 -> 1758 bytes resources/properties/prop-spread-false.PNG | Bin 0 -> 1758 bytes resources/properties/prop-spread-true.PNG | Bin 0 -> 1814 bytes .../properties/prop-type-custom_icon.PNG | Bin 0 -> 796 bytes resources/properties/prop-type-icon.PNG | Bin 0 -> 792 bytes resources/properties/prop-type-svg.PNG | Bin 0 -> 725 bytes resources/properties/prop-value.PNG | Bin 0 -> 3342 bytes test.js | 25 + tsconfig.json | 28 + tsconfig.packaged.json | 10 + tsconfig.spec.json | 22 + tslint.json | 104 + 163 files changed, 19330 insertions(+) create mode 100644 .angular-cli.json create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 .prettierrc create mode 100644 .travis.yml create mode 100644 @packaged/angular-star-rating.tgz create mode 100644 @packaged/angular-star-rating/angular-star-rating.d.ts create mode 100644 @packaged/angular-star-rating/angular-star-rating.metadata.json create mode 100644 @packaged/angular-star-rating/bundles/angular-star-rating.umd.js create mode 100644 @packaged/angular-star-rating/bundles/angular-star-rating.umd.js.map create mode 100644 @packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js create mode 100644 @packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js.map create mode 100644 @packaged/angular-star-rating/esm2015/angular-star-rating.js create mode 100644 @packaged/angular-star-rating/esm2015/angular-star-rating.js.map create mode 100644 @packaged/angular-star-rating/esm5/angular-star-rating.js create mode 100644 @packaged/angular-star-rating/esm5/angular-star-rating.js.map create mode 100644 @packaged/angular-star-rating/index.d.ts create mode 100644 @packaged/angular-star-rating/package.json create mode 100644 @packaged/angular-star-rating/src/angular-star-rating.module.d.ts create mode 100644 @packaged/angular-star-rating/src/components/star-rating.component.d.ts create mode 100644 @packaged/angular-star-rating/src/interfaces/click-event.interface.d.ts create mode 100644 @packaged/angular-star-rating/src/interfaces/hover-rating-change-event.interface.d.ts create mode 100644 @packaged/angular-star-rating/src/interfaces/rating-change-event.interface.d.ts create mode 100644 @packaged/angular-star-rating/src/interfaces/star-rating-config.interface.d.ts create mode 100644 @packaged/angular-star-rating/src/services/star-rating-config.service.d.ts create mode 100644 @packaged/angular-star-rating/src/services/star-rating.d.ts create mode 100644 @packaged/angular-star-rating/src/services/star-rating.utils.d.ts create mode 100644 CHANGELOG.md create mode 100644 LICENSE.txt create mode 100644 README.MD create mode 100644 SETUP-PROJECT.md create mode 100644 apps/.gitkeep create mode 100644 apps/angular5-example/e2e/app.e2e-spec.ts create mode 100644 apps/angular5-example/e2e/app.po.ts create mode 100644 apps/angular5-example/e2e/tsconfig.e2e.json create mode 100644 apps/angular5-example/src/app/app.component.css create mode 100644 apps/angular5-example/src/app/app.component.html create mode 100644 apps/angular5-example/src/app/app.component.spec.ts create mode 100644 apps/angular5-example/src/app/app.component.ts create mode 100644 apps/angular5-example/src/app/app.module.ts create mode 100644 apps/angular5-example/src/assets/.gitkeep create mode 100644 apps/angular5-example/src/assets/images/star-rating.icons.svg create mode 100644 apps/angular5-example/src/assets/nx-logo.png create mode 100644 apps/angular5-example/src/environments/environment.prod.ts create mode 100644 apps/angular5-example/src/environments/environment.ts create mode 100644 apps/angular5-example/src/favicon.ico create mode 100644 apps/angular5-example/src/index.html create mode 100644 apps/angular5-example/src/main.ts create mode 100644 apps/angular5-example/src/polyfills.ts create mode 100644 apps/angular5-example/src/styles.css create mode 100644 apps/angular5-example/src/tsconfig.app.json create mode 100644 apps/angular5-example/src/tsconfig.packaged.json create mode 100644 changelog/README.md create mode 100644 changelog/changelog.config.js create mode 100644 changelog/templates/commit.hbs create mode 100644 changelog/templates/footer.hbs create mode 100644 changelog/templates/header.hbs create mode 100644 changelog/templates/template.hbs create mode 100644 chore/README.md create mode 100644 chore/config.js create mode 100644 chore/scripts/release.js create mode 100644 chore/scripts/tasks/build.js create mode 100644 chore/scripts/tasks/changelog.js create mode 100644 chore/scripts/tasks/ci-check.js create mode 100644 chore/scripts/tasks/refresh.js create mode 100644 chore/scripts/tasks/release-github.js create mode 100644 chore/scripts/tasks/release-npm.js create mode 100644 chore/scripts/tasks/version-bump.js create mode 100644 chore/scripts/utils.js create mode 100644 issue_template.md create mode 100644 karma.conf.js create mode 100644 libs/.gitkeep create mode 100644 libs/angular-star-rating/index.ts create mode 100644 libs/angular-star-rating/package.json create mode 100644 libs/angular-star-rating/src/.browserslistcr create mode 100644 libs/angular-star-rating/src/angular-star-rating.module.spec.ts create mode 100644 libs/angular-star-rating/src/angular-star-rating.module.ts create mode 100644 libs/angular-star-rating/src/assets/images/star-rating.icons.svg create mode 100644 libs/angular-star-rating/src/components/star-rating.component.html create mode 100644 libs/angular-star-rating/src/components/star-rating.component.spec.ts create mode 100644 libs/angular-star-rating/src/components/star-rating.component.ts create mode 100644 libs/angular-star-rating/src/configs/default.config.ts create mode 100644 libs/angular-star-rating/src/interfaces/click-event.interface.ts create mode 100644 libs/angular-star-rating/src/interfaces/hover-rating-change-event.interface.ts create mode 100644 libs/angular-star-rating/src/interfaces/rating-change-event.interface.ts create mode 100644 libs/angular-star-rating/src/interfaces/star-rating-config.interface.ts create mode 100644 libs/angular-star-rating/src/services/star-rating-config.service.ts create mode 100644 libs/angular-star-rating/src/services/star-rating.ts create mode 100644 libs/angular-star-rating/src/services/star-rating.utils.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 protractor.conf.js create mode 100644 resources/browser/chrome.png create mode 100644 resources/browser/firefox.png create mode 100644 resources/browser/ie.png create mode 100644 resources/browser/opera.png create mode 100644 resources/browser/safari.png create mode 100644 resources/elements/star-color-default.PNG create mode 100644 resources/elements/star-color-middle.PNG create mode 100644 resources/elements/star-color-negative.PNG create mode 100644 resources/elements/star-color-positive.PNG create mode 100644 resources/elements/star-empty.png create mode 100644 resources/elements/star-fill-empty.png create mode 100644 resources/elements/star-fill-filled.PNG create mode 100644 resources/elements/star-fill-half.PNG create mode 100644 resources/elements/star-filled.png create mode 100644 resources/elements/star-icon-character.PNG create mode 100644 resources/elements/star-icon-svg.PNG create mode 100644 resources/elements/star-rating-options.PNG create mode 100644 resources/elements/star-size-larg.PNG create mode 100644 resources/elements/star-size-medium.PNG create mode 100644 resources/elements/star-size-small.PNG create mode 100644 resources/examples/example-usage.PNG create mode 100644 resources/examples/example-usage.gif create mode 100644 resources/family/angular.png create mode 100644 resources/family/angular1.png create mode 100644 resources/family/css3.png create mode 100644 resources/family/ionic1.png create mode 100644 resources/properties/prop-animation_speed-immediately.gif create mode 100644 resources/properties/prop-animation_speed-noticeable.gif create mode 100644 resources/properties/prop-animation_speed-slow.gif create mode 100644 resources/properties/prop-color-default.PNG create mode 100644 resources/properties/prop-color-middle.PNG create mode 100644 resources/properties/prop-color-negative.PNG create mode 100644 resources/properties/prop-color-ok.PNG create mode 100644 resources/properties/prop-color-positive.PNG create mode 100644 resources/properties/prop-direction-ltr.PNG create mode 100644 resources/properties/prop-direction-rtl.PNG create mode 100644 resources/properties/prop-disabled-false.PNG create mode 100644 resources/properties/prop-disabled-true.PNG create mode 100644 resources/properties/prop-get_color-function.PNG create mode 100644 resources/properties/prop-get_half_star_visible-custom.PNG create mode 100644 resources/properties/prop-get_half_star_visible-default.PNG create mode 100644 resources/properties/prop-labe-hiddel.PNG create mode 100644 resources/properties/prop-label-bottom.PNG create mode 100644 resources/properties/prop-label-left.PNG create mode 100644 resources/properties/prop-label-right.PNG create mode 100644 resources/properties/prop-label-top.PNG create mode 100644 resources/properties/prop-label-visible.PNG create mode 100644 resources/properties/prop-label_text.PNG create mode 100644 resources/properties/prop-num_of_stars.PNG create mode 100644 resources/properties/prop-on_click-counter.PNG create mode 100644 resources/properties/prop-on_update-2waybinding.PNG create mode 100644 resources/properties/prop-show_half_stars-false.PNG create mode 100644 resources/properties/prop-show_half_stars-true.PNG create mode 100644 resources/properties/prop-size-large.PNG create mode 100644 resources/properties/prop-size-medium.PNG create mode 100644 resources/properties/prop-size-small.PNG create mode 100644 resources/properties/prop-space-around.PNG create mode 100644 resources/properties/prop-space-between.PNG create mode 100644 resources/properties/prop-space-default.PNG create mode 100644 resources/properties/prop-spread-false.PNG create mode 100644 resources/properties/prop-spread-true.PNG create mode 100644 resources/properties/prop-type-custom_icon.PNG create mode 100644 resources/properties/prop-type-icon.PNG create mode 100644 resources/properties/prop-type-svg.PNG create mode 100644 resources/properties/prop-value.PNG create mode 100644 test.js create mode 100644 tsconfig.json create mode 100644 tsconfig.packaged.json create mode 100644 tsconfig.spec.json create mode 100644 tslint.json diff --git a/.angular-cli.json b/.angular-cli.json new file mode 100644 index 0000000..a63f066 --- /dev/null +++ b/.angular-cli.json @@ -0,0 +1,108 @@ +{ + "$schema": "./node_modules/@nrwl/schematics/src/schema.json", + "project": { + "name": "angular-star-rating-workspace", + "npmScope": "angular-star-rating-workspace", + "latestMigration": "20180313-add-tags" + }, + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "./tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "apps/angular5-example/src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "apps/angular5-example/e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "apps": [ + { + "name": "angular5-example", + "root": "apps/angular5-example/src", + "outDir": "dist/apps/angular5-example", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "../../../test.js", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "../../../tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + }, + "tags": [] + }, + { + "name": "angular5-example-packaged", + "root": "apps/angular5-example/src", + "outDir": "dist/apps/angular5-example-packaged", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "../../../test.js", + "tsconfig": "tsconfig.packaged.json", + "testTsconfig": "../../../tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + }, + "tags": [] + }, + { + "name": "angular-star-rating", + "root": "libs/angular-star-rating/src", + "test": "../../../test.js", + "appRoot": "", + "tags": [] + }, + { + "name": "$workspaceRoot", + "root": ".", + "appRoot": "" + } + ], + "defaults": { + "schematics": { + "collection": "@nrwl/schematics" + }, + "styleExt": "css", + "component": {} + }, + "warnings": { + "typescriptMismatch": false + } +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6e87a00 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..54bfd20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..fdb7f4f --- /dev/null +++ b/.npmignore @@ -0,0 +1,34 @@ +# Node +node_modules/* +npm-debug.log +docs/* +# DO NOT IGNORE TYPESCRIPT FILES FOR NPM +# TypeScript +# *.js +# *.map +# *.d.ts + +# JetBrains +.idea +.project +.settings +.idea/* +*.iml + +# VS Code +.vscode/* + +# Windows +Thumbs.db +Desktop.ini + +# Mac +.DS_Store +**/.DS_Store + +# Ngc generated files +**/*.ngfactory.ts + +# Library files +src/* +build/* diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..92cde39 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..ba41e18 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,17 @@ +language: node_js +sudo: false +node_js: +- '6.11.0' + +cache: + directories: + - ./node_modules + +install: + - npm install + +before_script: + +script: + - npm run build:lib + - npm run start:packaged diff --git a/@packaged/angular-star-rating.tgz b/@packaged/angular-star-rating.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1908da5dbf8496d69c02e69b395ed1538d35c54c GIT binary patch literal 60048 zcmV)BK*PTuiwFP!000003+%mXTN}r+D7?PDexCgw+FE-B$(ALsV`oK}ums2sJ2p6g zla-A*93c%bv7}LEMqont?{8K0{W3G+X6Ni3J&BQ~tE;Q3tGlbJt9x4Qzuo(1adGj* zix({PTzr`G{OfOCJY#=*e*dKX?QgRz@2Ak@ZShD(LJa+hKdp9uaxxqB(BFq|Klj{5Bqt)^=p<)Zrw)d_+NVV{F`sw@&EPLe~tgo^SP`Y9%dKg zqhu5hYMt6R8O}ygtyw#Z(kxCUwa(Ygn$(6`=d!jAa36bT(Im%TR^51#N9l2Y5Y?`l zweJ(autVCkehMlU%~9u?;JeUqqDnG3j!!)3!Kj~QHKc!h1nfZhl~wJ19*?qlYBg)1 zBzZg_;FBo-zCSufG(W{zd<5chQ5?@EgB+#TtWEoAALK`f_G^52)ebF=nk|f!~$)k@yRJvS-LvVKNhjq;%p;6iSr+# z3(}1BWOxm+N29DAPRX47!1h3B72ZVW18nmpoY;rP@rQ`8N^j!!j!U} zLq|^LkyvPEoSPsax2PkA&M`qOo(PT`0F`6V=@1D#Plj!pDpaqQIoC2XcPU^d#- zOu)1ePvFtg^JZ;u+DF~QfxP6+qI{a5>Bg|Xo(upJj-@m?i-&S3iC@Z$F&a35fNAW>5R`` z0flL5Rf8dTnw(1j`4-+Q2!@I4;l(vr+_$=ZPIq;Z_1 zFeRzNv{6q_JtIjJ;q;SVjA;IV?|C$yj=(ts5x*S9XDlABe5hSs#>1u#%raj33cotV<79@)-am^t49c5~#QGwDe1|ZM5qFO!C!5CrqvZRcrWmAWPiP5; zN|%=k=IZKY8!DT4WE~n7(DPKa6@=r&$`2GjNs-7XXIRdX zWBQvpSV=cDLNckNp+xze2@52~N+1vQa#(K|LLml0Me+;id3xBxAK2I5y==#Kfe=UG zE%6=4BN&?!;Vb%8gc9&5q}4PIqvJkIF;DcPCo%N5CrUyM9m+n9N0Y4c3Ff_zfax^P zr=52D{QSIi{;ZXxC+($gzx}pN#n9k>KhM(^{py^;q;~*SreGqIjEQ_e=`zp;s&C5F zDahL937>opmav!agCo)P7Ek=y=irK~+MIk@vxxZ4{|b}TG@M~F+n&(yEw>~I&Yb7x z0HNs)DMA&X5D`^@A>;jN)o;xR#Ewywzy~N) zVT+P#l1x!nD~L4+3ISz@lpgW9s*5rS0M@R)bol>otv289%kD7` z;QIUjFTP&-=CA$#&+%!sqipm| zVdz@;uYr1gq^^NkjI+!TEEE6ImlmIW{qJKM%f^ZrxdpVxGsmI zIY3P6EY4V;9nVIi3w9j!^H~}VS${HQd`6n3xYfsG#rK;`%_=S4gi2XswXa)?t;Hut zQQmJY^1{<(98LQtL?rGbWSw^VB+gG~M>spR*W%>eX_6h)1&C=0LnyNwVD{7}d%TF;cK(-+z{5FOa4FvK1s6YI8A)ABV zh^fIbFaFml6}S4i#)w;>X?!%}L0z^_H97Vw{FN<08}RP|wevB$I8V}{ZbJmBB&}kn zUH@Qy`4jt*t4;#SezG|b+K8n;y_R3scX#F2cc4?u_zhoKLRkX*_kZ=z`n#m2@`+G4 z=O;5VJ*SKc?M)bKMa7}ex3aKLF4r5n*S0zYChh$Dk)JK_(B{tpdI_QxOW|2)TUQYcQg zN(p58=~rI-Scuu#c&OwO zWf(3IBBaPknG|*IY*>s|rnQ_ZL$b`XQG7)7FSWiA^gp<|wH?H5t-DxBia$5-|DQj9 z`j`LzIX*i6TdeoDZKJgRU%Ys_=$-%h`mggppXpPVyJ@U`GD?p6qb37q7R{Rm%sl@e zS~kfs6Z@8IWo3meBuBqSgM5K~^%WDvd{to&u@tl^I*upNaDlB#RCQ6m$*yjf17WQvI71+D&g2o&)j^@V`8FErWyf}j+>J0zM9 zIAt~n5p-Zk4=Afk{)KG!gUueW6?S>mXmXeq`O9f!{G{frVr;C@SblI-&rf3ztI>;6 z)P#fA6!743FJMwl238>S-|~Y8?MDyUqr3b(SWl)Gl#9;lg9ZazGEK7NI0rK*ohEz_ zy~Vnt5hI|CVcK$f77beu-f$ae$WVb&mY+tf3+@K|5hYFb6F2bLQ!otb2v8G6wZ<~L zNM>x@zo64=%I`Il@Fia76~d z3#RY^l%$UJb7o{A^@%{rL=q-k)_$|O-rL&kJpm#g?0vtv%htCydJO))+u8nUbECJx zwzpV!i#_V@!qZ1=t-HIq+hjj)?tQ=gevkd!-P!4G?QQmU+4c_9-P+jP+uYuQU$3Cn zFAsj$+}dce9zgeYSnuEOc6z%6x%u|po6Q~+ZEmf}{^Uf79Jz@80jc+urRpAH41DtbY$!x@&JX_kKY{ zTiaVtHn(2w00q6by{*00gWV`HyVLANDOS)^mQABUd>jwh2nPwcYU~7qgA;TOr%^hN zDb*x+P)$T0LpcIAUR)oJ#q4FiSo;m3BOW6aoYvUh0$Bt=+y1|9)VPv7Nf z7%-r>X_9PZQ4WB4f^*dNF_^Pt%+)X1;o%gYA0C2}bil4aJ7G!y#RPrpf?soi6PF&; z!zMez@jGm(deFwvGP`O>oIWrLwT`q+QTO3de9Y=ctnhWZ9?Y_kbHbEdsV8n_ z1;GhVqkNY7P&gSQ1$Og1`g^n1sjkzwQ`$O-a&o7+&a4<(pp)7g%E@O8siTx+fZab> zR?n5L#89xf41ZoSjRAf?er%$_520yIXW3~zW{=rYLu0#A--NITmX}{G7ct@-1+ci` zOQlJIz>J60TK%I;K(K!RA?!O~p`tNL>JK#0G}vx3;{brwHg9W1egQ9aQFD*Ote~PT z5(yC!9QMVrIMcKn|Blkogt0bzwrqh81Um~N$9BOcN6-m!aj8)iC(#K2oka^FYAhTk zS%v75kJm%Q9ZoLT zr$%;m@=g{7ssyMKH3D?$Jn(Q8moU`R1vyPD;QDEbS9?AtDm|-!M(8X>SF5RtF$0BA z6b+pPf0~@1IB$NPi%fr3E=L<8ooX1Fp10L6E8vFtm9p;Za`4Qupnm&vTExBr{ubGX45>bO91q47kmE*dxunV1E~F!InIp-ZQmPyLjN(&ATW=#he|EjG@bpan5C^5eriyDez(W;+1IP5ZKgzzO0Ieg+HGR5#Ew|AAvAzNj8Dr7QH zQW|urJH~C}&#K7AWdpaHX*rI&m}r#?9PX&aFFCLByCH5mqhjsb&ZUT>a273W;4_Jb zZqT@?bTHoIG6c_VD=;1=`_d*&rtTTJ`EpDM0xKsyzx^7`(fei`B5pcNqVt_VL>1%8qBG&S#ne|{iLQOQ z;>K`Y{!QfW5D7JP9efUGVTAcm1&megU_`l_ZBFv&Btjo`3J4?kSvN7X@?2}xD5i8 zYgTUsn+V)9S=H7N3}4NcESXO@Q8cUs z!t9$WMV8AB(1YKf;9;lvR8ILkP*r}Px26nJQ&sUpi$a$>*kmG)M*3?KPwES7!8W7{ zmS%BFa_KzKKgu@ZV@w-Sd1K~?|A$U5aE-duGDgL($E+?faz{vKCp=MYbv&eHe5l)= zKPMkgTt03_JKaHDNOv%$qbOr4oGfJ@X1`5Nr@-M8cxdHF)e5c_tu2RYiHxLL`0mbd z9hH<+E4m%it7mO-Jal6q;>eQcfnY@tN5R;WFAM%}hcm%VKg`MTRe;AG*r z(AZxgVBS$4IPa(;eyp@M$s=&|_nKN59I6WtnaOTNcuaN*(AX((MTl%x#Xz0QhqVTm z<OnFAs$UMACFbRAR6dj%&S9>%*iI}C4c!h4_2`{{5eI<~jALiCAz2)q%7 zqobE@iXnF8Z=}iln@cv)4zn3dUs8tpDwqJ8CKJG1e!*=w0UEfu0BJkKxdy1=cv|?1 zDRH-zgcsTHT8|F-?!57$O`iG3g-3Thi05Yh*`cuyX}xrF{>nwK?VKM&V!n=TN4$uP zCRZmLMuO8T%E|zRN*rntxfjN$9xyYa^c(D~;Uiw%8A^yU$lOfn-xyc7hg3kre{$3`Y^|sMyus#*O z2M1_*xcRYxyQJz?EpMb^1GmS5A5-`axXt`r3Bd(S*UNF8@oA6#Zg9WFt-)ckJei^& z+(#EBnfPk}et6=EUU;076ID|#zKXVdzNH4_T{Dj5RK-grAGf6bl_YCU^3kII^H7iF zzM12@Ulr>bj_g@_2XWI07fds!x#Kr*6%-+VIlN_m z%_T_vf@4dL$O8nIOb0Y^LbBCw?8Y-Lgz}PZ0u<3CBUsZ8E};a!VdhZ@nky7Gx>rT_Y=D2(8nPm`5lb~<<|MFA|P|kDT3jmC~PK=LK31f zb$p@-vpA(uh#TF6;)Z#`MPYgTdvO`&vlJETkaaO%;vh!}Z8A*^~ctrs5 zaKS4GC|xqkOSR67T$QVV6>}-osz8ipE?TqvViX~%fwDXrPe*<9|7tIX@fnMUD<5i? zm+|oG>O<|rM4ZckXJV?mybK?it2bnYynjUZ+CrU0{-pjfx)_3s-+)Ids3DgK0dfR( zH!nvE+$kh;m6wu*>lBZZ8BR7ZKXMplN7fes;k0(*8+6uyPV&#Vu9pM_}5{wiApo+S|n8*i|E(2|#`ld|bffN=#QgqKOVK3hYN22SC4m{m6S6tQR z2wRepVhNR)Ho*{gk3kSjkd7A6mS;2mpn;9#oDp!P=ZdjE@}g4&tok>VtI? zf_$%s4=ms6;XDa}T2LVX_e^VH(m|-I-o+2PjeZq1x_zB_5YAmvukKnnJd839ywC)Z zlGVi%3@Cr+!Bqp5uHF7S%aU0-h~D<6_y)=MJ8xEs-!0b~_osio%=ycG=6U}g_R($H zD0~0k(u-%$zj@}q|L^&;rKf+r|L=2raE3SDocs*u}fN=BrToI5%GOJ2?S^ zEc6~)aJ?&D>Mma=I}ets*UVoBmw3^=h3SdBaZ{w7-4flc>(6Mn@ETYsPI}xgU`v(G zgVK5xIK70H|J#bP7pMpiBXU7Ci%6+2FovH$+W=L-pW=DMglESE8 zqJN?dGutA=vQi@q0erjb!{n;*VZxtt@6GoSs9hf9W5TAdH##iPa~xD##L~ekF@`0G zX$Nb+te{&Yzybeqg@3M4Sc*<2t@it+)FA-=lLO5d4l*2X<_b2M&iZV!O$?J4DSN85 z6bD_JjA+BCI{A#bB0DjIpm_~1&B_b;6SEQl!GZL;W`V~dHyt9>Q@GrW}~%bLdak@3vl zGBOIRZ6f2j&<+y?ZU-5^)fSLhOK$s^^=PZdLL|0#%xAczV^xZ5%*NJ@MT6X~vGJ=d z8u_^0Zi+pZfWYhx8@GTqX^e-lq)YaX-hxpbWbL|mQnhzZ+|CH?uGkG4`zZW@-aPrg zfz6Zj`r9XIU;`zcXA31Q-$Y5Pwo%f#Hd4|%+e$Gp6>p}b<=ZJn@mw1!7JTWJijBEy zQ^kV5n{Ac5KxuER+z?~=){2Yt&Nf#Z#Dx65wpUyxc-a1?tW|8W+$&@DCd=LOHOEHF zz4GR6wN!HF%rxp3|Mq{$plIN~1&)c1h>F8X=9^Z*${JBRcE&>XGB=HQ+wJx?U#R5I zd;91%&2_M2`2;VuP5zxYV^maJZ!Bw!X7&+ZHabkhHl!_Be7Hwz4hz={ z$)w~!k|UV;P9qgdM`Uew*ekJVvn-z*Ifq{9G>y-|kYfdjs2z5cBw!d#RLZwo%}Esv zS1=_h5~KsN3LS)UgrrYF6$`>ov=qB6VA3C1lAq(4lh=OWj8icw?MIKebG5m)`DSzP z7xw6pFU;1u!<^GtS_G;@WvNhnjvOcu)1IyDC(r_&-={@{MEJjc*s{mF%P zbn(+}Z^)BG`k^=i#r;|LxKUHX8Hb(bgXPDXN?=XGHYXlo{A80+-#A9(wk6Im%?FI9 zl}aE@vUczUkbYnsRx%KXV?stV@>o(ikT`(k1F7C!F6v%&;z%D2>VN})+5C+TJ4^80 z%HNq?kB)*kcJzUtJNi&tc8c+-9AURUeH2_W)XAeThxc*zNYioSgGZ)eR(9q{!(E9( zMt;rE`68p9{#tOJ#Rc#Wv;?Pyz~L5uqHFULIQBe7&bXMwsN7v914oKvQ3VfG9Lz(s zj0Vh2AsvGFj0CpZ{8W%FRqfyNfw8JqHZgjyvp^J{8Jcg|xXqCv6HmK+9H(ebc$O7s zUc%vAQ*MOes#SXE=ql6&_K_n=S!g|fm84_o`oMG*bb^$VM4fJ}`TC3!o=c*2*6KEY z(!&!^a<;+qj zJ^_G)hcftU4)3yKPWCcg=+5D&37pB%W2O4UlWqRYbL1&7qnK+t3^oDrh*<$h`Bar| zW(=o~Av-^fCalk+nsLUX0nxC>iQjZb?SN*JrC zcX>c}$Xy3jb1D+OuugqneU`tHoh2p%0X0Z>Q%BVJ~}#db;pDr;MZjw%)( zA`49S^u^tA<}mKeqxMPk<57}&Pw}Fs%zuhoPySP}Y30MeF?WxM(BS56SpAe@r2I$(UlyT%(TugrZFDVgt0MU7s(7p z52h^-jDvJAIKjTklQG_dg^iKEXSgqc!$u6Q7@ouv(PWYiVYuXp9Az>*E2|>e&?sS} z*?l*Ot5AeL#p|3zx$!Oq zGg4CYCI@d}%WM?-t8(<5CA#oU4jyV5`LSMS@S)&!En&W}5@wEYQp(t)y9JB6BSh+3 zId9&J7b-YYH}!oee5p*BJ6>@<{>1fv#T*J`#`khAgKtYH=G1u$j?IlOL}r9*A7;jQ z)j*IJ1C{<72*|nE?6(*c^MSkh9e1LozTh3*Di)RGO!9G*um^`7I zDNKdm^VX&QrCLqKOebXE5O3MpiO-aPaQIU73N@VHo?oQi9A_y>Ar<#-=Pzd0x}W}o z^V%+tO$}YSXc%|h2e~s)>92(=M$t9;CH+|PhOrOfSB&|+%5hZkD(|chccVZe{uZ+6 zUx8oBoO|WFnY9sO#DbrPBl`mRBGzoQ?t?OBEAOl?W#74`-AL>RF>gZ8!@G6mdlBmv zQs;LW;}ti|m$L0$r*36_gjlz0%)`8MJ$n)R4r1>~nF!{%6~1z0TTTM=UUB!K_V*9P zZ`})ybK%6yH`q(u84F#A+M=-^yyU%75T-*>EeB86JTc7W^O!fPmkEK81qdw?LEysn zN&(p3Mzsh6n&t^%PS?o38@)^r0%4HkB4HF!|+?59mk);8)YDp%M1op39mnFe_*Ja_A)8L>#8q6@im%J6q z4;}YGN?ES%ESJ!HW4ZjMb_Y9#T`mMKM;9JOi~$aU{*QIPyUDVU9lzdPa~!za-Qw7* z?%eDiz=YSj&yPb~>K?$OZ*&j#fpw>QNHg8{%6kD`nT6wyu)?d`omTEX__-ld=gR|{ zw+@=_Vva>|IF*>YVZe0$^K7>~t5SACr64?MMji2nIFL2Waz$HZ<~B>44oH2@EKPG~ zCm!nElRSZ+(Ik(LFDO8}vHg}sBQv!}Zf|G~4`VgsFY5&-u3ly0f~5tjs<=mR9l`t< zv1RW<_^R{DF?+&Q?VN52IEvvFPQ*14+IwGpJNar5Li4J$c%`G4-3LQcOU|N zz@ktL3M8Ncs;p8I6l6&_h!BjX$1L z&F9z(BJN81V$rP-zJLl1QnS2zteVgzl9l)>My?5a&jZ-ZC@L0~2^A8SSzawH6FMv` z3txq>Ojt~qJX2W~vkAZAW!PY=Qi!Z$<*?nYFb%uCSeBK$2Y>#Z1Lh8D69$Tu;2pPu zr+09Zxn;GINk=Z20d(t*QAa|HyG4O?LiVuHF$&P`76n?+HA4rL(=i&W*DVUO*EOn= zIoaC6zr7@VX=>N8Se(8CZiw)Hb}fre5Ck?X#Uw$_=qi&FgQ?L@yPgiyVNBLf)Bc66 z$f5-|5gFJfY+bCuQ>=^^#g~ke&pAwt49tqPKqhW_U2Bw9_N@V1vJ3>1{ep{tN^cE! zujfDC&76-;ZpmyP+@v$-`8(bf^rnyUUBRG@R?x^@NGtxm#3l=F(wnlnc1D25S$UR# zFTAoef%~({0OE`ThnHvc7LSTG7th1oCR?%6+* zDaB=mV^-)F$+BvpNXR1VFq_L4QVGy^FBBtBB$@^metcZH;v-Pe)B)AY*LVc67I$N9 zU%DTID44cw4u~Q%D4ov&N(+o1YwnV#6V#JU+E?mh3BHU|Wy8l45K(`KdqGsl#!-Hn z3^8OIk$=n*d6Yur3>&%hErnjBtn(XEY}Sj;UTF5(Z77M!e8rq$zK=AC&Mg*b|42PF zjwDJGjqlfpj)uo-kz!wcCHnlO*zGi|Xmb}wVRxoXZzF9Kk7JNj|C7KA!onYdBz5hI zPuAScJ8=Hql&K5+1iWDsYf6Pzz~Q>t<|L0!qO>JXp>U9yr$SAt%yVI3s!ruSQg+}?xh?KySdq&kcQuD>y~_IuFCTMw3&Ha~#pBPs zC9A}SFu_7=fdx>#AXwl9bEbu{Vrj5|o%NxxH?P&1cRl&a&3#Aa@^OdV!LC1^q7KL4 z?uLQygMu_zaR5A~h(cSLZc15ueQ)Ot+unNf%MI{c@53ALk2EYB1!hu=`P|MBG4yll zW)m&z=K*9>FWbbx6;56dH8ZY36smd2yWu-gtl5!#NvXMLJ+0PE#SsS3y7k!uDLC~ zDz1?=Ynp63+b0^qj$(@6U#*xjOFOc(njxDg2Z=*i5Cac`u8JFkH9h?K9CERfR93}( zz8aBTJ_kZRQvo9Sq7m`ub0AQw%c{5@S~Dd}=D|YSJQXmQGg}U#)}vK^ar2V|Z*HE4 z02O;&HLii4ucF+=UNtUn)>6>rzK+NwT#fhFB%ah4*h0W3H7)`(XLj`%VEA%U`j;!>gHoey{$t zYDNYaM2JDB73k*%guEgJEKtf;pc@-dJ3@~1vN3+EO&VdKZ#EjTBMkb}70%cyJL7ox zHPDx%%j?u=R5=bzz>6)B0F^o!0}ky5nhKWc@avg20nNcIk0 zc`C^%xW?Hl{NOY+|LH5V|Q`^Eh4RLAs!vL~wdsEz0O4k9D;uH`4OMEvV4x z80jgmmgU1`b7kJk#p@2%yTZ*y-;P@Clx+Md`Sa$4*!7OhYSI2$uz>G&xJCM&5Vu5Z zk^~-GR|^En%_H}LV*5CHL9;;yjh&u?q7akTT-JW{kUhG~4b?b$8+EBevGv-P~=mpEviu-+sTxe(vt_O|v~QYyPqWcIe%$x_yV(7~xwD zVa;GC7(bm*@=uhG;|#0OX+>B5c6%4!$W+_8M~r< zH`HQKPKpNL9-4j|`mo84@QvuhmZ}HM94)h}hJn_Hr^o?PIK{C7kI*VTYMu78?emFx zTllomV8i_>ZVnv5pJl^j5{s$Ae0V6{(IcCXZCfJXh07jYhlliDcexKLlLzpo{bg-E z4_i|yHKd5lxycMBnpG)SjQHeH{Rr>%t{)!S@cLJiUciElHuRinaD{?7#9OK2lZoy% z@f#dAgKqw?Zr;?cWScc9FtY^B;k{Pr$&Bvl6t5T%;hIpCCNshJ<3P|ybzR20PLQZL zbb7Ld7oXOF9_-Pa_h^PaYWW9-5uFF+V(<-yTZ~$aJ!{|L> zfWd{e&GE;7hlR2MWobOcWFUirhQI=pSUo2?OH8byUlPLmp=R`^0BA{016##NxeHby z5Jd`Y%v$}fD;nQ#!ioNs}F_p$67N z6TGEKR3K+utm^Mj3*g@sX=*eYb=?6l9VeqRSlH5tt`WD_6CEv{jrd)1A}JWx-1Gwe zrIQJYgw{k|GSR@UVuOA@IEA?jEASTJI~H68o8cf;t?YlO<)>+K{-Jhoi?#?Sun(R( zuYuoM!(@V6%|a}qyd}u#kVN14;u8q`Drir&z_Ogwl?0oL%f_-z8d0R#gdWp^rHE%p z2e5bd4;l?FdgIkYSCyKjuxq?W$?(FN+|e$)cp&Wxwj z!~2saJ3GM6H~QaJ%Vg>dM3nHc6fG(tMs9j(3VrvX_F8ESc(eTxCMH~f`5X;qbUFc@ zUlZ5)DLTCM!v-H*t_?v=aqE+OhB{hi7yHSSckojf9a`EjBzVE9?iP6Vp*Eq{3LlUm z_K;BI+&sI$t_O7hjm5Fnuq_jpkPB`%!3a&zcG}19d}tkb@EN%4H~|nrfp|E627Oqa z7d!m#QirV0WV+0bKxiL5jH<@h9d^ibUmibJN`1-1p#tIu7Cc}_+@Ha&ig7)+a9t1q zG&}@{@D1Oj98Zi>IUbU4Ivo741>>kSO{R6wr^6NwFZrt!i3m}4LS<6+yxTa^CgWWw z3>Zvdz;$syH%uDd*OY^;1nv(={@dG4Zo>Y;pkuq=BNH`!qp zm=iVOGIgN{dQKJbS|eq{#eolEy$(4!0M;VR75WAEdIwz57jZQPLz7;namgq{T|9Ot zJ2~Avmy@38#=zL4*@tU@NK9RngOL&i^jNGi9r+WCJJ-iRHT}v$4mvrdV{W!T6mX#! zh$!N|=2-fgB^2serC zr4B<1$frrfoB(q+9xtR0@iffqN6r9vyJ{wVm^jm@Qj)9cAVYsxPnv9UM{=|T_)tqQ zSvIkwtd&f`%xi*EOu09pOFBi&U30~9T%QmvTwFNGO`bgA+t9RvBBEH@cw*)3r+l7B zTh>WELr`)wqM?8zG9r75es=gD+X#_E(~6W7842V+K1{jEjFU4;H{RFA0lq#`$RjSv z719#|g*oJak6J{aL7p3H>Q{QD*_1RPG=x>x7%5PJNZaGbR*;2if!tx{1liVwrkNqP zhBun3$s`w#3`I9wgZmRkAXk9Ge8+PU&v1b8e17SjXl#|OW*3veYu^Vj{mYPZNn=2a z5W=yUOPH{I8iGYr6*pqUZA_MtirsT^E$;_ldn%yyV{WTInH@bmy9Q_CzsfT*d12!dDH`%R{t^MF_=aNt)Jic(frkasLZ zN{$o=5;U`woyN!b{$uzm7e|4am{|m7=*!Z<91$*3M|{ch2@PD=Sb(80z1b*e8p_C{ zFMKBEZg0r|3Hi>~92?NK6k1X}JnCp#KAhqOR?38sGhZU~SK1L1vB)c*^$M>!gqqkn zXfo;%QYG}CeDmzH%!atKCgIu0?ddTvri>8GF6ZWsG%bCDXVo%0I|1vbUb&Qv`yZpd zXgtNNKORx850c~~1-ts^jELtLh4(yYTst$+We0~$Bp%@2k;d4xrJYV)q z1`fg5DcO?bne*HcNQMsm@C3~r_|pQHA$yw)XCocQfX7zX@o=EMxh1iPt)_;yNkFiiN`1I7+8@1!=tGb*(X+viCr>&bXbFZKmQGBIWA#Qv>LugM3L|JNJG zc=?NbmS>~*=y0i}_L^k@$o;&Z4tJtsh5z;8Pu(}~dxzci_1^C8_Kv1*3|2@yIY9zz z%k=5K?RJ;VPq%xr)@^QfyPM5^x7%;N?si`{0qAXWz1v-H4!YgJ@(3Xx*?e?0x z-R>^`rvLe++x?~aL$~__NAtehea|aXss5&a(m#ZXn$yn|$ns`){dunfmu`~^^fxNi zKNTm&PY0>&RIP&FO0WP5(o1n!-?*X(~0a&C~LFcm2~VP_>QIwGD*oHbLj$-;eY!s84s9 zp6=?R*ZA;@aVtg%&ggQX+w`;CiYI$j~&@)o*fL<^E(p~>m zbd;mmMasFn+g(rBuzeEMwyunW_jC=vz5!m}|7@^|@_9kL{!UyjuAvSLkcQ`iRl*fw zg_Ol1#Qup5Pu69_1GC{DyWKIhdyLJV=w^Fb*gaJ67xXoK#fi~v(l=Ww0P;Fr;}2TwkJ)bEm);HYB zM31a|wr12;9AoX%lG;8I&(=z*=#{I@k7nunkuOlBrAGX2j#)ivhUx`1$(i6o^|U_!NRpekJ<<c&+xxUWw_Ma}hw^;B zZkP!4&8b2^ok>UIA__@w)YM73-J6>WDpi`l&NZI^lQkOH*Cz_K?&Dg3toADdUO*KR zCdwsgOB)7hx6;1AM2#?~rech`u-Ky%$qbAAiC;MJSxw^p9R~^;!%VKdpg*`$PA? zzE_jRYhdY@`8nDa3(3Fd=15N;yJ*7&IC_uN(rUNlaTHor^_0Ae%fT%0h>d8UXT`iIs_$HdmQlFj#R zJF_nhrC;agTd&xtP9eTei0_OLfASdD7NJzzAA)L2D?Alwo8*`7>xs9zT665LTovBg zB8mP4Gtwf-W66_;GbK43bGsnW%l-LT`h~g#&Effb+44_*4>1*~Y4%%hnstH!T7C8U z9&jUq1_X5ZsoCYaUW7E*Low7V3eEG4c{JxITg)HV{v4x;1l{%o?YLLvg4WW2w!R5! z)t|u_;Spgs`iH;4d2mE5Y=(E8u&v zPz{UN{J~{YuTzzt4Y}bin|(bg{_e4C&&{fe zys236$-2Yq&x%*yHPyj9Cvc~|($Tuj&h`c(ePxg?zmcu7r^Yfh$!(rZ!ybDrO(Nb9 z#;ev0aqEda>aOnvR{<*?^UYe(EH^R3!67@z4mX*23arv^%;2mRKUFa!ey@Kw<1l1k z5saG6LmlYYQW}@po(L$JdlRph%*Gsp?1ygeSBgJc! zT`Lm=_Z|aIOWX@9?0aGJ{lq!?F~E_IOxh9jbt%zaFNhjr>Az7}aI)rNceoeYQFuQ)vN<{A3OTZr--=L&hDu0tX-)3g+n0LtE8qiZ<>)Q# zcok96h#q7PbC5aM$n~vFW;Fxt-Q_r)nAQ!Z{IeCsVv_b@?42wh=OVc8 z1Yb$#&+F-XWYyw!W8Qm$V|@#R6Mia2Ml(qQpK-N&|1~b}&wyrYhcPBq-r|BLz%(PARB ze5J1s%*b)g;KVO6az~EZC5covS$;w^%99k~TSLYAhsQ1Ae4{3#qs<;moPx;7sDk*m z#I97oxDA(1&r?jv!ST|zBd;eJ&jjr0G4Y$z>hSgj>V?k&ZVQE=u&9Hh;ZaB^`zuhT z@D48Ra2yMfr@1HBGQUufQ`=If?4S3ZyQjJO_C~oOwvaHt(tlUz zn@n(5V2=5@N-Z zMen-%ND!_Ok**j+Tbm>P;rTH1*|ZL}y>=&1cAAsCMty9IP|C=R9@`rvS**tn-@)*? z2g#ugb2#fy6tpzBA*%=1Dd#Hh?S{PkUFoxB96~DW9^}rRo zf!8G((h#ktV_$N8f!TK-K1eMC6=-*C?b2x*?3ELt7b|c{o}sBISQ}#jm5x=C)kCkc zA24ncVmFiwX_MN_qxU#PS;3VR$Ej!fn@lSc-sof!Gig+>t3hHiXEWJKMd1YWlKV|n z(ePll>|OXdwY3h{id8ppSl2f>G{Ojeu~si{I$2B1DBD9b=R);ksHsaTz=w=*L}pB) zS(C#dJcoUH$^P~5d`FsHU=Vrpf(Z#rv89nZwzW%HcP=I!mtKpJMDaBBN2b-v8}Vnr z)vx4^tQjGCZHAam<5#WFKs9#n-x6arWON5=z^bAValr4eE$;YPO!@b)6Fr(!5n5hM>{fP(-%qw^gaxA7#&TH`zU;#U-=`4qX}hO7_X`2ZFl{h+P5`{$ff&t`*sT0oOw|KIl$W~2oij@!TTwFWY^22 zULC!z5o4QKe6h)&hryBk_)c@l+W?0Jwy)E}Wtw%8Et;ebA=~|8sWvd9oEhBC6Z2-N z`W1R}6w@;w8-~KfqdGT|=+FED)BCNJr7xqAGUf?*XTH#MRUP!nN}HkKmLj-D$7%w+ zhR67xm|~A0sV}t|5WGd*jD+8UU<-|5^lkhP9?SQfN8 zJe^j7<5uw&M75c&^pXUp)AE|c@$=5yX>8JKayb*|0klM!Xz@O^*qG@@fMU?v6f8#$ z=%?=8OHt$w3djZun=_htNpDU${pxvU_@C!t!4vq5-n{8!ikSK=?2#|PArzHnkZ5L! zsJfp3ZJvUkefdfeDXoc;ad{f4^fc#W-4FbS-o019jrPA)DHes@JlB5?GA~Kudw8{& zG@Fs`pCiep0i>Lm3OWjkwcn-df;{juc#6C9nKWPO|NK(BASz0FsI}hHfi~Vob&T zLvpVpwmHwk-(2;U-SRCw21qfG;p=uGiY(m_`(92-o9lLQx@;aG z18CbajLo=xpo6KoUJT+fiM{j5DsWN+3LC)+a_Su-;)X0S5=7%DO783p1rCjK-*WJi zBlkU+`7x)KWV1+P>!l*BG?iLLTVnBJe+Hf8@nY{GLv_s_2aZ$uE)1L5$YfQ@u8jwt z8`Xc~^3g1lv2oyQ0at_nc`&*L3XYvSFf)3KQu9a?42ZT6k9 zT^c<&IEX@{Q$Kq@IA}V(!~5J?Y$}`6^ZtH*JdL9JX>EV{+BjglvWsf7aNeDRc?VUr zjS5TGFuu6`CCUrCh+*?!veb@j(_2wh9e!>&5CPNkQ5i}zStMy`32U^MW^=3+bpc$F zF8XWgfVpDzi@3RrOKhQR1p*bDi09Xj_NMD_ZdtLJ0lW>Bkl)q$w@x$N!FZDVdyk7 z(A?xVAES<%c8u=Pq}!J7z%6SmE)8?)Vdjcl|F>oyl^3w{?ZJkR&*nL<(eo#+B(z-I zE=`v~WIh@z?VjO|f^M7?j*Lp-Q-evTBBIOEY6{ARM{nZy&FIfD(D4K8RencO8i!x1 zcd(uuUd7*sn5*&~aj`v|X8|}>{;8ENTr1_W&}i)ytQp^c>4Hvg@Cyg;#zeMvx@Wj6 zl%i#KYySf4f8jh!fcsa`PyH_r@a)MoMJ@f4&q|i;wetH5OIQ^170)=ACep5URJn9O zu%#3}mvnPu9%WbWYGo3T<$PCcoNj?AIItocwZ17T*7o41s5Kh*@ARPi4NH@R-$AYq zwbUba8h6Oz``s-~?rIjgfY8_iztNqWnjv@hmFa26ibVN9qB7MkOHqF1lG5G7$)lv-}@^uLfCPdBAKXG*#PiGfsvQh?Rl1O~U}U_dI_ zLF|xPlKCKma4ab^1NLf9Qw*%&??BDTo*dOTm5*}wpocw>s}-0yq~?EONT(%#>`g>6 zH1&L3)QHWVIBj^}hQbwKo-Wc^}xJ;6KMeQSOLRWH3iX7;61UI{hrf)AA1_-3WMq||n z!Y@aVM%EH5^`!{9zlz~m|?88g>fY335W7NMn~>DBt*X7p)0 zn7Z3D@OuC*xeWyFIpVXcM@YXG{0~bjsa6VrF%Z`YxjmV*!!6Q_>8aq*o$9IIks$^t zo8%NxVfm*;A9`gFL{Nu@^z9$Pc0Cv&BMx98uP*STLo?$A&s;f#>~)Q(3=q)qKP9+D zVgUB{5bt{)cUB&S^kb%t%2qzVsEzE<>=Q=B{WH&)7t1^yn;+sUt{I&e zORk~3-#TbY7zd@9q4o|%=dc71zv!r_))7WwrEa1tv$(f{`JKRW7A6;izEow5OW`@Z z1aPlU!5P;t*pxSJ&?}iblmsFJ4xfbmS>=fV-wy$9rottYDE!R7{J|1I_KaD@vb|vu zFZy;OqX+1+tx~ngr(9prU@ck@eH(Y#%qrDRHds)=>AE#^R=ee^$fjM+A7ugZ7{fL& zE}jW75eqf6=Uu=MSkG8J{R&U${X&eJe`@KkD7_pye18fYSziw8DGg7fKV;;+%e?Ks z$&NYN)Bw^1%-y2koIOQ&bG%FnIX$V6N5~kPA^Y!lGDNY6N9g`W3g+)_?AUh_xmA@V zx93!sU=UwzMpo>&;40(Ypc*2PAJ0B1Lh*=s|9rAl(EL{kLHiyyIxTycAW z4xD8ec2{Yvbr@wP^XBukx?6dv%qI&_yCy7EH5shBF=xgWl$)UfRZm_Rb1+p&bkxrc zgck{OQ6@8-hGh2DUp@!*^VsgzcR{o~GI<9%hPhud!e_rq{*AP7Zl6;0B;7H}vqgWA zWDKe^9Es>UVill6`H+Xisu!IEW175`W{o`(;Z4!O90jY|jg{elQO9P@(aD?yODxEh zVNOvIhK|@{=dwwTI2*%2)$((lO|noKHoO26)<_flT@nwc4GL6i(1^z^O5Oegxp-S6 z1?Qq^f~Ol(sx<#IYFyEr^5Y)tPL8R<-7@wfa?$O@x}@6A2R#4m(SGA-LMu3CNF=tT zurWE(FOk3NL^It3ZF0(j%2xD|;CLfewQ6@Lj}BAbk1kAzwih23evXJKK$r>X9Qo%V z+Y8}BH^OB7-pPi|ei2Zwi5q*%9@IU^WS}w+*ivd3IKA9Cu#Sy2ia<oe+qk%V~|nOT7-EnKn1#UQE9?YpYbV$oV*vIk)`%oBzYv0 zCg2xFL>+k{t)u4K13JRyK?*OQ!NQ`mkkTV*|NhgXsOh{hZ%B-5GD}C;TG>cXGS1kU z$vE?FMS-m<+cE^(5puFa=sxSO|7ulQe)fpsvO@VO5JUCTb>mbXEnm`1L&1K_{y&0y<^9BLlvcqTE1HPNPib`%YBDW_Is%W;cS6a#8Y z^ZOgjL6hY?A4%|Zj?ZxMUOv5=qbg6Og>8u|>PVarDW|#q8s8S{c-g0c&b_Bm56sgA zx%N{9W~QPBBQgJXZV;*w?xj@eZW?W3w5a){dO$+|Jh^_TrnW&^Pc7pRtzob-b`n{^ z73!uU3?6L;tB4B6V@4KFf@iLNZKM7Rrj^OeG1%$daRHH{=Z!y7BigplrOVk+jujXM zbZXDOMjrl;jzIAenKf5>gd+NXD`MJB`FJKcKhrR#L(OZQr^la@0R2}o2d$+6ZC&T1 z$(A(W^n@seMSmLG7OsggDvy8@Pz;D|&^<^P|Bi$whr4IP9H|!wF@?;=rgjWaF#SbQ z3WU#`phk<%081oXZe+AnRZZ7%o}Ye*QUD2u%luEdTm2<<_x~t&Tc)Ku++R_-9tviF zDyoI}x_V&j7KmhG2sr&Fnk><)pjo{A7&|kBxO4^PhOl5+{!KC+1p{Xf#K@9#xM+YPm%SWH>loI5K{8A3-QFj<^+H%(cGmnv%+4@_ufF zMUlZS1hc?NpYg!U9#U>a46HmSl&}mw93wyxz(S>#|Ae}_$E5y*kgbl4R0NJaPhbi9!0*}rnzi;^-itSA`@a{Nd=dy`M zya!Vg6Iz^T>k~62_Rjp5+{#*fF=9g|S3ayFibE+Q!o?Qx_ zsPKg;2}-1@%_#xT*-Z_OipZ$et8nl|(LyVkY0atf;Ww2HU-|z{Pbv{Rp3X?Vd;DE( z=lgcbmjAhQ%FFYZ^DE-rZjNbu{41r`r~c(R!SnlVct6tAH|ysYJ9i8`YN-!kYJTFj z-bDHn`b-;$SD-W(D!B}iI!A@!f6LduQVzDO%2h0V4f*C5_BHOlI{UBcYWUYiWCJ>) zwwl)+`yWf5dIB^)#!JAD!WS{n}5Jja~Ra~yZ)_*Ce_pfOjPP7x+F5NT20?oc4pc*0?J zHOV>iE~WSXYLJ3p{FghUsr~{B=9uW8A9~cKn35w}1^tWh6P`%=84(BdFL^e80dZGA zI?20?Idw&t(cthKD3h2SFc2!vP~UHVSAVvIpLyawiaWv+dEd{=75AuQDUol{pa&9r z1cAe`3VwDDTBLkDo}c)yM=CwphcJ11@_&h*QL7IB{>zm8|H+=+*x1?))Tzl|q78ri z&-7W?^Ut?!S({XUmfhc;jVpnLlhu!`SF9|pI+RtmEIYQ>&TxnXadBbQ)!p5b-7MXt zp3Uv8K~mlSeV5dqxvkyVk5~Wlu9yFkdBZI&JF2N9BBmTnh|f#hEbFg84Lv0B?MtgS-Ro*f)y7WJXksHuJsaf#3JwgNOb# zdW=4&AX|L;YSTTgfj-YEn`=hT21z(9>m*ngQ)KxWMJBE*^z$Eg7eQXt*-8%3A@3Z#@fvJ&TS5HM5r zgm7wvBiAP#b2Yb<*x@ zk%%wMYyWwZVVEcVxRY)%rYnUA^$GQl41o@G@1f#cqQP!0A36I1sl7G7g~oYW3Q_LZtCjTK(;r=nn;O%(^miUN9aa$71(k zgD|&9+9$^b$e7blcYvX9uW#k}dAqHbXU(UMDdWHuUPNXFLCqh&;8@TwG(`Cxv=jS~ zXYy167~c~d)PC$$q4lMrAQ9~{?kXuJ|eRRu5x_g~K+8q#rPW?cKtdPQh zyQFyF)&Cojhl-+X%44-BJ*%h&>h2RS7Ws=TOlCbT6Hp>-SBf55vDBCKZ}vG8SwJo8 z3EA}dthm-dF>j7#s7hC0jD7rVz<0ZLoQ8)G@+IIE2`0j}fE__q%#kgC))<{iIq@?0 z$>1*DoU|$S;SeTViU4!%quyDE_)K!W=L9e>%Va) z)MVaL%q*PXk~#bZ4SrqC8gd%s3QIjQwf`n*3hukz($LM+Jdag_ai+as(|Akt$&lX)g@Y+q5&rhyYrF#B`g`W5MUzy)grG1urr2B_+^)7QrF7N> z-?AoY)Sq=7XYck7G<|ALPt=C@|1E_U>H~I|1k(@}On7>-0qV+A4s1>x+Y)M%(H^XA z-vudZ9@x6X>w7A6*&j65uQLYe4`KNhy>B)jw&Kw+^h@h9ej!~tbp;XpvM^L`>AhnR z_H}fAI3`&^hXKFo--#C}2E?5~W;cqCbl3y_sLPtUxB0ns7@{}I_m?cPLMQOf}R{-2oD8{9S^^v_}JL@vnCRT zlc7>nG$xM!eWO1nWs;pG-*MN&0;flj@)(Y>m(#3ypbx{oQ;33K9(OX5`If9>&PpT= z4z0hyqafydRf$9%5wlsXnk9(=WDtZHGo>{ce6fH)l~LIa|Ks+mAxh~w zH__6KcQ!)$8N<1p;w$YiLfST8qO&RA7cx_cCw?rF{Yfw>^Xm_a4N|Ulf|vg!`$AT) zJ9bwWGWCQ!zHs!@xo`U-g8akAdpD8fuK|_|)O)**2KSw`+&4+ac zq{*Gf8TH_eyy6!GiZ)Fhy{9?ba;T0(=WPgORliqT@?{FQ&Dn%wij#4sj?B%|KfcTe zjeu`?fgiZ1^5UCBamtO43Wfcq5>lAFf^vidosdWb8VE9DZBlm6K>9GG*1--nJv>cF zFQk_WcM@)&zVi-g%;+W;VB;Mt@w&zzhfruQa2y|bGLi1?6G$HAI!L(yF9>At+s z>lUXeDw}Bya&u%opJ0=63-5X>x|hVXaKeUvT2WHM9N8ayP6j&#O*|Ia1e42q_lm z(E3|6#>Is8_x&btM;k-v!Nlwl$lP2$I;!cgORM}kdW=7cw~8NyQzJ}K@&dMWDl>q4 z>Zji^mWeP+b=77}7H!A)iPe}uZ=k>F{zrmfA^PC#vknY43bZKY#ER*=EO4$Qh9#ei zJtX{$3r(1eyWWd~5k`%P1CxKA1rjO0(k#qbCugVadl==e@O!(5AgvTnqkW{3DSdb) zA9*m+mPlgb>??9|6Qp;YXcx_<#Lu?VY~bo1x=X|M&vmmVza=qJ~IIySB5n;Jm@$u-NZ!T zl=XlGZHh@SMt&fX`0ZvRbn(s#$Q(lUnG}IwL7?6hySIt|O*%*o$ASThtJx9&IzEZP z{wGMlq61BXU@%{Kkvn@<>d4H~7&f@;?p)O)N8Rx;Tr7BSs#APSdVc#zt*xV6C8 z(Ek<2m*)N55`%NFJV|&+#$&j|b^6}+-@6nY{Wv2q@ikKjsGIB_A(9pbr^o<-@KMoxKZbcWm~J^*)qE1+>Vp z!HD0U=!u)?cB8UCb8FB)LM7_R!Stmh57?QEynVT#&sxYVT(qcw_o#gj0Kbeoy~vz- zB*;yy=pFs*G`q~e$BJTR1lAvkli`)(URp!(hKy)Mv@4(uOP=o^& zLqpk21f~)RA76zb+&i_U+~L{f%C?!_D?uh7#kzI(F`eeVej(MF!1wb3Giv=7hhsyx z79vg)q@$MGBl|a<@D`vt8-3A2jX5*Lh5YNv!5tkIixiMie_y{F9~ZR6`^L%&XeSMV zQAY`+Z)kn~(MV_ut#E{+S{VY0H-i%%LaR=0ni;v0&xT$W=xNS-_ZJ53e;RQFgwb$3 z#J!$yew|NwYA{elc|aA_3P>nMYJ`|_Z93#^<+#tJ$ZTpV;-Z`TI*5L9hl$f?QG*ml z3{G<)M`apv4KOW8=(X_kihHuTQg^$*U3}+TvDyiDpvva)na3+eE5Wo0)x&BGjxy_B zxcw(FJR^gQ1%iW&Q&k}*f?**h`&9_3kWpr!?W;T>SrR>{@IrTj;nKxqyHWH$W3>2F z?}5dnwVoMHs?KEY>h+|mcFtY0>0wGS7H;xc^zy|Zb{uloFV>vGW6{=MsVkAb1B*S* z(Va|{?OIP>I3qGccKv#EyS}_F7$pHa#*Uk@iTkr&UCosiaH}x} z!uX`unm_f`?#O4xMpK8Xo4NVK- zn^vb}t5FDsz#Mi%#kV6)BvfxKVg3Blqu^yA+sTvyD>@^cyVNVCTr^t>tYWt$J91GY z80FW?h`4@8kV?@V7?mOPWCT4J7to?xPyBkGidV6ZlThN{hv)OfuFb^Fi zvIGKpW6U_8sX0l>J;I64w*Rr(Z}{dvcy1jTZ;rG2+~ptDS-BIMm_DtxU3RQxl61Ch z7|=SlEJQ-|njU**?p}>bAzgPEr&mkA7Rmamg6wKG>HM0!=?o2r^~wj?jZgixZ%qw8 zp4sIAK1({BK2O|TiS+`-p6y9zDRncx=ySBZaZil)jpb09tB-rnjxjpsV9bRK$7tU3 zpfh1md1R%|L>462Nwez}39XIW;l*Wqsj@5Q{+>RhW#7!s?2`V^nICrkKRRw#QH#yPo%BF!$Qmeb}?FiNdFegDZ(D zVHnno>a*p#dnEBe@m1W zinm}Mork;HFkuB;AayW8&dH)tf1=2D6S#Zh0-PGctL%}uqO8=(f->=~)cwJq5Z8R( z4`SBns3sXyX2WLsk1dCG6x8ewf;Oc)w{n_hC2`-oz#j6?$HZg~C$L@=&&foipz|RLv?uHOeX2p>`R1beNlR0UM59TGm%sk zMq`9yJbN%G!yP^OypSIA|8(W|U)a6lq6Cdor~Kn)l>EYa%!EJQa3Gd00=4vI^8byN z18D!FkeS8w6?)`RfK+0EtEGKWBRFk{bm6g8c|A#EEHu&$dT$jLn_UeLRRQ67t z{eL6N^?EI%zx>Rrgq*Cg$WQ*ORQJz=dTFahZh0vuuWS&(p-VKW&_#oxd2;q&EC z1Z**Pt|)UxiF4HZ;0U*U@?QyMk;Vdr!O%d28|TpbD}sOfeoz>|Hk_n0MIvI+3~#mK^UyvF|~&=p>IJ z4jEs#sT^5haeszAvPiIJ)1qW^!q`~cbzVD^mQIV>7)5#tb!q?xm}wEidfx`uPPt~U zp_CNTw^aP+mM;#l2~EX1sX_DTipbODmCOHA4rJ0H^vma^x3!{L%jC)HR`ZGXVt?b5 zzm&|cwMiizmehkpzNDy0e(fAu%S!+mkC?~|IiEJ=*O&T5y7jP&1#zA2l~;|Cx!y=U z(MrA5h&^Vv-U5go&-UIFIUq2);x7ZO!)~E2pUV|E=^HbP4wvCkZo@UHV{H?M1mczt zTQkA||9I%0YoiiT6t4z~W+56P{EcO@fQT(3mf=*WKkjP*!xH-kycb4HHh|oUR+En) zP9rbifRf^qc|7bGx0)l?14<{<4GPa>N8sXn)@Ylkr=D}N6{~xgkyeH$)}>7t<75X> z;e}^dKr$Bsh*eVgGS1p8AwR4GSD1eEw}Z{-CAz&ACEBSaoPurLDU}J1Gj?-*eJv{U zi_%+Q9#o_OJFpiuykI$#j9c|6#D5%J(1=jpDo^{V7hrouv;iVL7Zsx5Xpx+oDh5)J zz*r&{a)>$ss`8!p4;@sIj&ha6yF8kQ0j(pDwtKAQ1PP&5e%b)ZfhNQir~nNu#ylZe zx`-@#6m+XQvo|PKdm*|QLOmgwa>x>xbU0L-nJ({-Y{xp+dsbe?PV>+mQcM!iWjUCLDc4r|c+hrEZ%`H1fSx0nK<{lmnfi0Cw&saN(7>^2&q&SzP|pDy85l5naS9 zBKmbMk-$h#yl00z3U@3OXw9C&`#x3i$GV5k)=#~TR}XqG~KvrSQVm94iH3ilt(5-L3U{$9KB&o;oE&r&ixcPpsm zrE02zqhcTEY%~*TrB~XJ{AgY1c`63wdxyTwk7`j3djI!dW$p01hoW0kC27 z{0JSHG~2v^^IUF>J?bC;tj8AgM`!f#r#-*2lfuTD)jppn52AI#q!V5+0K^hh=gn=0QzVQ_Yg>_K+RTo+>GW-iLT4p6|StW@-e z52s)ILw^2^H$0|L4Uc@_DCJn0MIjuA|WUH(H(kPsR+gj*z zOGw;!i+xp*5&2<=;fM@kY#PzhpK0IiA_db>M#IDFV&aL9>&k~b-KFvEm zuq4`X@4f%fd3cKPt*6iz!45^9{4RX@2puT#X9Uw+aMQmMw zhw$2XJR^jQ_tn|DyAaga+cBUeCb7cW{<7$P z)rnxCOC6Et*UndU{_#5iVGj!t^fF@{3?iqtx$#f87AI-Tm{HNh+H&#kq@&CL7CuRE z&$7Zp?2-9C)QJ|Le*=YoYKP$l^iV_iVZaz zTT6|FDwG}*kB85r@g6Apo1-t(nFgqu-TCeh-MSXFKw)G#&Xn4^*XsqrRx+CnM}h*t zSqguasR?H%1sVKP%r^6-!QGi1q`*`NYjBU9>3M+TTpJW?-0p>_GuxQ11_0h|57ljpJ7sOmfHj5`$Rw>de zOlVBa-px8_Y27}T9+SP;&N2!{ts&uFa4e+|psU0iD9*OMJqodOs&lnq4ds|sRvj2i zg~av1JMiM6dCg!pnZU_)1XonDzpYS1??R|u^5KA96L+q7V@aWf%*^O63!3W2qf{c6 z;6M+A++}ie?X>7w^raiDEL@AubuX4&= zq6*z|c`EP`3ant9evJm61uE>FE)gE(Xy$BrdA26El0Jkt{xOdwdlKBK7zbXCPleE@i zhz6suWB6tgzILOD^;Ofoi#vy#b*6i8YqCTtrKO&g$z=Rk7*n=X^z%SmY$Gy^Ozu>l z*bU5BcSrX;C^K|U3hgpO&0UM4{Lg+Cr>U~dUt&&JTi&gP)8j*06KRdA_c;hIWfnXj zoyPzL)+53Q8}lZhLta^?ay}Lrx18wjN%jyiUs0>a6kRyL=!+Q|5$cYo^Dfd%MF-H5bL45IEaZcy-Dwy;t7mJsRgFscZbjO2} zJ>S%<;9{@rc7$LzReV+j9C?nDkQKDBRM{Q}n`u0D`bEC!iufb|F+NVfSchzB?kWdG z*O@DQICbYhZV86IyYXTB=(0bix}!_rTo7luwK)^nHQH1#>&LA@{_3EXej7i`Ty2~a zH(;3g-*KuconGFhvAz%mFZJEst==e5KIp*CdxVJ^lAhnK&BOw zrL9dFEJFjd{We(^C7jrin+F&zPM&nG>1$M2En8wVOB9g!8Yfk2T2oXyEoiVJ^-e8n zT;)n{lwB=bc3}2an#KcwfE7oB!HkyT-0G|&tHvYKDYqcg50%pNV-GS+!myu_8zWuzsmZ>k99uupm z(CDjdfCTtT5PVXnaGR+!tkx6tx{{ttQTIR}*WVd@C{O-!d@+f;fmFs2l}ofrs}5D} zUykBM!UC>)0Q+Sf%zY?+p!WJnh*)*|fCzV6L>~Cv^z~a>`CF>VFLAF22dkyH2@Z~L zU7q$k%aGWuVup!-0VciIw*Fw#Uw`$+!8B6>&;0OA{9rWliN;n@M5;PxsL8vxwf-=0 z0d0#FcC0q-XtJ%?aJUEYn889f*U#*p{WOLgL8ESIW)@y&xny;%AW&=^DwDF*bJZqX zxg;d=NSZ8m>KCqhN;a|yORCD4EP|!}q&#gYF@TTqAjYA*B^SzKqhHz^^4Z^21(R4l;V(ip(*4<2A-bBim;XwHTsGs zd~3WDhu$gnL|A-6+*8#Vet70!N8IlbVZD zOz8GQHRs@oZJ$A;dGLEvC3QJ6>6cUUkSG#OFZl zkys1p;rLWqaiAXQ4t0TfygDSt4_xdjto5v< z*+E3rNB;M@?wKir#Q7dr zU}j1|d-guIIiGV8FCn%WpKB4z`ftr-Pj%}j`SqBUrHEB0xOPP54>OBPeW{Pi5>I}y zYhRf67?f$;P} zE`%h8*c3F}t&H+FfyTif2Jh(ZbGE`QhfGhI~JhfrpzxB8g8F4b*86Rbb4+ywbh@x8w2XC$JGa<}E;;WveKUb7oq%|4xW(QO#Y) za~0`LA4FSp#)-`ypS7yw|8IPjZTM%I%la{8icm#)ewjuYU%%ya3?H`1=#sp_jX6&@sG z4_6V%YF9*{ep;+7enB5|@)C~CT`Md^sZ{XFK>_# zzm_z@j@VI-aZ^OIj}gjf0zs-`DEjw=^pFi2uhDqp$W?PnDBTszp${&!r)mO=9T@#Q zA8Yh=+Cf3Q-aOfI`95Rw?<%l`s*Tax^`*aXSfiP&qnt29Znk2fgJOk^`QZhMs3@1c zMV>?;Ts1`vK|&$`EVyRI0v{Ta2i>uiFjcRKu2wSy&ZT@-RtnqU(9=Jnb+i0F6-He| zFLf?t5(qq%d?xNfM)&fXZ$ry6L4q-d)YQ*|t4$I}^{L>`_5BQ%5pCpIx+laDj8QJi z#=04L{JR_EJZ2AY0vb`>3`t~Q1cbh1A}KtxxeOo__~^9&Pvlz=0jL-3Dn(~#m$HfG zfg>Nc>PHx+{w?<`KEhtd209lvZS{Ueor5=K8X;FWUByZlBSm}G3|>gaUlCTC#&0ud zSAI2OE{(g~1D$R%ndvvYY(Kc$f zpNuM-SL;Q?&YpOmUNV}2Wb=677JNyj#xk|Y;Pg`0aF;$ApTnnn5iBLMz0{spXO{Rhwm@+dfzl8F5&Rz`4N38^VLxtdwIEwkZ*kxIvb|%a34{ zePR9n>I>tdRgfJ)gWbSHu5FpVDHYJL=>20Gh1JKpLYKvxCq5ZZ01el)D{00NVdOQo zFXWmBX<+07JD<;Ejl($G#oQB>3y5J>{bL?45W?&m*3>mikiST-y=X(83yjrU@l*A> zJGDcb?Qm6>-stCrQ4mbm8{{KAz3MC+Sjey)wO3n~nxF0U+Dq^A%9WV}>!|mZ2hdGP zq1x%NHY{O=A&^u}WtafVF_mUOuCpq|qtv=_M;9$pYIQUQg%SKPVxMFFVly3IlFY6kV zQ<|}hBi)(@QdPB@n$P2l7a&=u@GQ_(E9KQ?dAze#WV>5nmeH}}=sYz>Zb_2Y8OmWa zJmOv+oqIOk6%bkL^~%l9-Cq9B-3pRolv0c!ny5 z6T9>L`Q_k+Vf;3)OLHDAIm1?5V#0;3b*-%ep5RuOC5rpJN=W?@lpb2rXpfek$aON) z7{Jvw3#+WMUG;I{S{iIVL7ypeEC8BWL>p|g zi*X)7Y_&wVlrtacma8_(h;%FfXWI2Q6R%Bm|d;RP#y} zXp~n)%CtZNT8yV!uS{OOEv9pA^6xeur&@7SxpqF%*MMuB97CE-;M!vYfNPmNd!A6` zt9o%*$w_q;nuIs}bHXWK4R85&-wGc9^VGJ1HLu=Ev*>+?y92S@W7PxU;*;|LwZF8mnIdOz z8?;ZkA6VsX%?h7^Bv$JVHwnksnuv9k7_7QBz$_DKoh=n6KSUjSh*m*#6qv=L5b1qh ztMTty>Awi{Q7#azS^5x1lpiNsr%5eM(zwOGqVC-Mw%#MW%}%l4lv;ReB?*Lb_o#ri zyL0tQEx8+lc*l^oM*f<5wB~wG2_+{^9e+NNe>H@gvrZca6SyZ+{b9HFheNb%4wK@~ zo02{ZTXiRd?Zz!5yPh{yi(+t08VJ zcDnO$OOO|WST+w=kFbdpc(jL_deY)npXLB7Pj#Yd(mK|05gT(A8~+agoj_v0ep!P> zM)vaYn*IrG^u-)6Zq#$oxU@<{QzE;2V>kDOux<~TKKWND2a zX57JQvzJxH(K?0NTATYKBhpJ8q0_*@5>JQHuEvb`E>#r@HJ9CV!FUPtviUf1l*9 zPe3<5gDjK3B=aBH%}dy)viXl_{#kkt4|{iP{$rBAK1?6@^;c#7B8(tG-vZh^uWbHN zM)LcB-_8GM^552WKBmVwrgo&G1OROIHl$K-sSb$Z6nO&O*G4RJt0qk5KKyv~{6wWa ztGxgf+EDW&40ySBxr^hpz64fecAjN&6B04+9&VU@s>cmEW}l64_TG5_eSGWBj1v5+ z);N<637ai+Z+U?Oce8^Q(Dq}wELm8GNpIuj(CND;s4e8t^bsoY=T+77H>A*nO56XK za@aw?zp&Vak>DZ!^c30^k-zF8@)uV}?o&Q~Y6t#f^kTsi!)NdG*ns`Sg;ee9%I&wW z8IF}RXWwp!gK*~*_mg(cq#KXk(-ZTvG_p1p&}Zd1dn{)(yZ0x$@aMYv`32SYJ0N?j z@9DkMr*fOxo*xW1$Og*c?=U+H>nC%x?o%{moKxb-2GJ#lDIO$bqf{kJjUzY*bRVoO0fMw#;peAp2=; zunsxDFJbvzS^mv&-A>-3qC=$nPdO{L2olj-GH_SHI*#%5|6$sDO18scJ4-Z={Bgdn zHljftH$JCoR(K$F^)Xn(vdk{5tB=>6IprxxR_-8-uvz|eyOveEM|2Mi#$W^2gBxQg zmaR>G_vmXJ$nT$INBIQfzW-dvCxbokr469&e*J6q5E;+3ts&y(R{aiFN8pqq6xzpB zZ59&eH&H7}wDvlaYD8J_S_WtUzIiFPBEbTD))=Eke6y}kXcT$tDW)5y@kc4s=70J zm)`ySIG#ow3kwSmA3jXDbdhua{=|_$pZsHC8kHA) zPJv%R%60J|GlCKQ?|;ZgU+7IrMZVU4%}L~@@hyWcxabiUQDLrcQ4)+>G*^SX3w`TW z_2-{&!EN<}Zm$E*?`Pf4dD3jd)%g7{$z5v?4{8^x2Bx*E)e`S8N`{O3K*z@vlL87_lJz0bfSvrja{M`FviU0%00_rXi{-e{;Z_{I!K8`n); zG@qMA1hcpC?RIBiu6!q@&FJe0)9^q{w>`)3CEso7wu>c?4x7{Fz4^r_7_NK95iGf~4u2>d|+M7E_ACB0-p7+_`d4P}3HJt~^f)3g%kfnO??^ zb4sD6$f;9#gi{Iw;X=<$j4>04;&!sCC6Fwu2#%MR#F#!D8xureoJ>UyWB+y8Pz>Yn zHCeyYQxK75#6v9_8GlU9(DQB;I%LP(?JEe+#Ak?$&VWo&aJJfr*bD#_nkSh{F-o6* zj&VvBHPd62R2<>ec_3Pi6Erhd6FoL)ck!uoI*44*HDMj-^%8~Ok3;J&9TAkQA7fo` zian4-RVdJ75@_0L%n7i_YcUg@ly98qN-Iz>Vo}!|{>S8KNJ$uY6r#wpX z7{n*Zqx`{g#jgpT5}zW=KtPORxq!Ut+^fS9-oz3 zLR^fz&MLB}+F7BxXlE6f*Wg75P>QpoA*RTYsWifr&cBvLs6#>J&E(^0TY{$2=sZ5w z7U0!6gD75kW34ls>Ua{BMaNQS=u87-7FfK>i&Cd$4 z5G4Fi4;bhd(Ky;JLx2a$kwSZke4>ULNs?G)w|UX*=JmcXhO@)I(CtrD^LHd)cmL|Y zPfiBy?m@TXnS35L`e*~CiH2=wXwre{#%e|E))5BMn_~@9y{+6%va8spSJCHrHe(R9 z`w9w=M)Awhd=zY&D$uDurVA;Muin{KzGNfku_DbWhww1QdqA^H7PQJQlvJF{ znv8lFlzZ$IHvt9p;8a$f%~)YdsOQRq0{Cz_18-jR4oaxEz1=bvTLBoDj2XoE&z~I(?^e(Oz?zzTBc6 z*_;QH7OeOkpkjn=4sN+_Bi{>(SIBG_O{MP3h&`AgoCYYEX3RTn&Wz;?`7-SoY0JwE zeIw{2e(Wq1d~@Y0_%KRvtuJmOFH+a0ON(U5Iu5 z1y(6v2B)KBG#E@Qh6?VoNwWq{KFkKs81|~*aVhl#Rac~R`%vFt)E4b7dVz|`Y!-8> z91tvOL{#`-mK5U{b|BkwvDCqRJwce-MT~mhs=)oKVdy$O+;wo);4{v%>K#bMSJh`$ zxKe7xJHx*+&zCWa-kI17?m;4wF!tDotgvjpeZl}Br0?k0bBVhbZteV;4l^edQ*$l1ieeT4stj{j z*Vyw=cc!tt`u<WI8u-$JFKi%f64XmDWV~VL2J~-S+p?4Oj_77Y?9jT*N|1mYAvQFuRW!8mD8LO zphRm*z*3E=Dpmh7O=%46g6i`*b8OaJ78&cdfLEtPNv2(T`~+4E{$imlt@(nXMtH7V zLTkN1EVMvLsW`-Vzgd}hE25HQ=1as~P2|d?+`_|=id&?lTs)G36jnCD0&p5DCAv;5 z)D$IGOBDJNIz!Sxe?+y1UNx1WtC;!xl~dp|P=fWct0zhT`5xt4t)WVgRLphJI*M_8 zD8YI8wUkSS^DD}~Sy5e*xSPMmd=vMVlkb0lIl0UYX8C;i)$cGT|8t2sKsLoo%;mxf zOf!za4P8{mZkG2ts}P)|Rc+-jhw(b(6NKbh)@2e2WKL+oC%-wn_Uc^Wwk(Iwu`VZ* zkywIXtT3DW+WkwtS(<;X`WjAt_!6v6r(?5;tvILdB@w1_V<$ak5z&t!mtFigRdRin? z@#j&_G%?En1NU9{z~^7{7>IQ?mWvqhC0WU(7<=R#OKZ?wSt17-#bsn#ZadI_wm94n zB($;vF+y>OvygbHi8s=X=NqrzCDEuGMLe0umFL(#BHbTZ?@8V!;^x_iVWS^wHq(v% zRI7FER^X)LYtGAwoL!{vhjmM+IH2aO=SzUYOVH)OtJRG@MBBKm+x4YfWsHAIXK$~R?2k(M1_}`NthRb)a@6n{o3A{ zz|1J$+a~9>@d5xyub8{~lH=zF%cD42~`pj6ta2`dHvY+rcZ4T4GHKn=L299!^%+_FV5A?0+n3 z%kxop(m}j)0y^%PCo+pi!$IM3=t!AuVg(~jvxD#m)Un-QocC990GySU9YfP16UR=c z&C`jQJcZ#ZupDjIz17RdjO=$O*v77hrzIK}?U759a=eI9EpN}ZQ0i^LPWKQz?$4Y) ziJf|ku8sq5y$^c95&|)Z2r2&fFB*3vI^;&dXfq8FUwTG?>B50h$S)sO{I-J zmUP=sX1;yvwl6MbZmBy%PiB<<`}Qq%$4^2}n)?_c_Q}iw{G2=Pd}$BP`?sIW*o`nX z=VJc8SlMAFF7ap%u7og4u9s-u$>0>!lF*6>U>6_@w`YDs{*aNM`-d9`Pi9Pe&uC`k z)ia!Z0n{8|+S2?|vJHD62E-OX;lGg5VMKr=+TlFSZFJ|39>d7FX?N`;Xx z2vh!LCSr+$4?C1WrKd%S>^G-bf9-1Kf1Xe&tJ5t_2m|A_}j15?saj2a=kh# zc|$XrQeI*;tCAoePpz)g!Ja#!ZY_<**Y zE*q+Sqt|zCj1}3H$}mHX)#MKVEKazeX@x?0tCF ztlpCdPnBb^ao;n-tJE19nM=)fTAV+eq8a7JZM5C zu4Hitu~W&8OP{wbsRljiV$p0n~kMejd>(5_oY-uq9B z_ZOG$J@Vgwdawv@LjBMCPdEPo9Xlhm#u(z!EGPFtInID85kF@5E-`~Ja?p)u^lUcM zKNR*5Q=%$XsnzkQ#dfe0sWT@MX&Ef$2K%^55!tKpm%ycN%R89v>M&+9@4D!&UH%l0 zcrSqk_ZknH5w=V&puDA4>bf!ETt|q|wyA!ai_W&uhq?Cp8e9Ut?M{wfY6HQ(9Ts^y z%$8WOlL0O0+-V+v{J#KGncc0~PT7TMJ|E+g?9z)<9maB?ADV@v_&y zxV_g`b8^fahN8ZyyPPmBCqb>DD1YVJh#G{NhdM24>uP}a^2-JMa{qQ1_iqC_r-;ZslyT@RaS|ip&GC!;$)C9Byb3vGA!+W(3dwLzQ%Jh%9TWwe znvmb-q=c5zrz5l+o`^Vz)F}u}gOd-ZP{+kgPB+F%;UIbaB+>K+pKjlmrxxD}Ek1DU{_6YQyjg1s3DBKP_B%A6MHBId+k zZ)QQK*<*vf@Z7)v$+Lq!@9@B6s{@2R{{+DR&{Kpx?-*fk<~J=da+I)V&l2`#4721k zVUImda4_jo?vVnikA>7k>yLA`uooUK`0(n0VJ|#k2r#QthCS|>!6Oq%?Hb`YoBBjR z(bI-KxvM`Fl=9Hwni%=BhZs`3-Mu$cOlRZ>f)Obq_xHT_ayPyAxLxl(dlIpyx4i=< zaOeBVtmT|Z+&E*<;y1-t!6C(s^Cr9ACAjl6jrpYxF3_O34SypGliWLD#<_6JJ0E`2 zmI}GrrGMVo$JR;b!DVMn@T;}Se`Bt9(d@a~D;8sTuWC85u(!1>7{6j=o2KA?l?J?! zUoI>S%q;FP7Z~&`k0BJpD&rKloCGB~#`zms9{+{cv*KciSu36__>~hYkO(Lv73!S3 zobcs1ndDsh@&r@v##dZA%C~emSyL{6D>|KcE(W>7QTGh)Oh$Ac?$VhjBzxm5E{Mq8v1RoH3}18X3RzG;bAK#OO7-WTy~|@i6J=Gc z3VU{cAQpwnKUO!Gb5CqJ(NMILQ5N!D8!ZRQuhAh_|B&lmeR*U#Y4*R^g)V%^O);C8 ze@)E772gr_U~?~sQM#QQVm2}NdYD&N{@pMSIOk%RPZr(`vkCdv!Yo|QoiG9vy%1(v zcO}-m%nh(*u>gPz5x19s~yE zH*w+1(sAY6UeqwlyXa-%F4WDguq1b>i)g7cc#1AwX*kd|`9>JbTDiBcF1RLe?_O!jxcU4FH?ZiO@7}AzdDdyRQ0c)9t8hgS z-j~Y3#oU~V=ZBY*a%#8NpmM7x7oxbF5>76lrUY^wGO?m7{52gsC)e4pEygHz`IVV50cy)jDl2%p*0Ru;piz$Rfkp~ z{BwGGgoLt(w|PD%_PkRMvMW7)p-O(w_b*hHQ-1E!e-4>`@H0o|0w4X8?3hj=cg9Ol;9u{$`=)P0`Vi{sC&e^W%iZ--|rl!Sf}fR%%l6*uyxH zaqisc{rS8FLHr9iGXWd-qR)%)-0A3)W%yH3Ambc{5&QGGWCQodIrZK{ak-(<`_0mx zXNH8$XL(^m@iQB8J~lTZf1D3E&0qEvEw-I}%Oz+j8LB@l!n22=^jXGC82$iNz!eS4 zpTmjuC0O?76Q2hfsXqXYu|nc#@*Md=_yf!#XG~E3IERk&!*Xn1!^VRLc7mq!g7?QU z@B(n-=CdNmiOV0YEf7k6y#AaH0M@{=ZyumH?2AHSf0ohw!*Y>cfPwb;_P2rh18iZ- zJAwOido>y}%bbCOyp7KeL#8G=tUq5a+QVg-{aE*QL-w<%xh@`r@sG3XM8eXuc>Tq^JMr*itmnnu&ttqG z{C+OmL3nz{^MhmE56oZ8ych01#(q(F{X7wrh_YWevYkaj_}JOr%s=Od7O(Q1oYG^R$8Ry=y2}aVlM3fAsuYto@ z`Z|XVq^~nCyb4Q%($~=PU^zc_mUOBF9jeNQhY0VC*6ZDxItUr+Dtk<>e{1^H!O!Ax<=!#*a@dwJj-+=Q;R5S_C45n1pH&v zsh!Z)v$G+ZDToDK4&qE>wi)Gwam<*@Q2>$$1mpRa7?cPUmOuvDBjTr@BHKMv5P`j5 z5fy_0VY-0HE9?mdGG{vo5#{#_0~g-}o0e4Q=}(Si3U{r1aec>awP0`Ya@%QU{7I*3 zsbdR>n3nX_q+1|-1;q_gnqNFtDRhoxHNJw8OJQ$#08@{mxUeV`CoGy@EG!Dm3(LV* zAS?zEYWTs_C!~;5R+xchi$sTBzAjTmW8JWfB%z%#2?fYMr0Ymd&>&x z-XTrqd8d}KUdXW?K-X>p+61W&$O|)X5J=&``=)-s!Gii=S%`a|8 zRyFvJ$bxOeR)Z4K#fm(5o-*wj{d|2e>XnXdMj_Ua-p9%)*BmY#8wb3G#Oha1TuQ@gudq_`Zb!m@)fU|rrflzpP zZUQ%FmFe@#Tq`1eH0qiW<<4jM16pRHFLQ7k%CXF;?G4Hk_M7qsDPH+u_NbhJDt?Dz zM6l>!wJ3tY3fNdVAx37vLOnMrB;R8;l#_OHvdY>M^;c>|sp#gmvTk_~r&32L%t$z6Fqr_@~z3&qre>6%~ zjtxPrL|gMxjX7=Qs}J`*nd{``WD2MLaEqGXgPRTm zPgy|{Ry=@!DWuTtOjo6>n!VnBo@~8%{_YBRF87fYgjX6?NCtI^q3N!N2eS%LlPBQCsO_)4nJ|)x z1!XbtCXJ@a4+dG9I}VMEH7)CWvplpnUcE_H0MF?UFT{QA0~jdm$&rDqF|gHcF#Ia_n_^5iSF2< zebKnyktV444OlVqGwyDo`Rj+$aOz_A(Wg?aE7riE2?d;Q8JQ?Wj+y0%@Dgprw$i1B zrH=Z*k4nZljfk@-&`AU{(^6$Cp(-H1TZGlR5lO<7ETAYXOOM4@RTx=XlCtd` zpI8LjhAA1p+Au|PmvwG2LoQJs5|1zzgWLvPRS|?OJuopJSqj$= zg1Kn!t-D>*Lx;omSLb$$){wCOIfo&DuoH=Yex=vclkS~6p24Ju94Xb*6$5nfwuAG6 z{;*dy{4L#BL-Bh-u8_Bt93jAxifS|Jz((I`ubu3}ray*ohFX&|iAM(KKr;wR^aqpq zy!LaBG~BjRE0z4#yZo&NBCUd(4Fv*pc7z??ULV=$BF3tQE+8jiy{k-au!utYP1r9V z$T%ad)6obtrXmbP3d!)lcNCBe)#8qb8Da@F=~kn@00iX?LFe6G507rTa0^(=#0eZ! zvdQv>qRb0j5#6@-HD+#`e}_9(*h#d~kKMDvPEjp?)e1g&*RA}K99+5zx}>Dw5_hlQ z18S)J?JHSD!38Xh_7az{v@jwUvE(P`I+l?Ii!6FA%fm}AXO+hoT+;HehF7)NmSe7L z<*6Jdcqqwjci`w}ECZe<$DJ=S9#=9Rm{4^I8ITy z+$6lx}K7x%2CXmZ44uaX_|0J_Aq6>cQHAjc8dF2%kdMuPO-4A|< zJ_G-_jU1sxxwXx9Pk;t7L}B#;2u)lL{5cjDaULE&&dDr7vA+40#S7K7*u@(aYAC@PLlK`<@{vd+%rywj28o1?*LznzD`cn}K&qls*y z-egpGUya7f!fT=M_6v+o)l{mRTV=ND9f*K>T#b43;fi%N<{Rm(!yPE@c8p#rujcu~ zjZ1mn>&a^h^Ii0CF|?yrmvavOjQnMFO6>N;W;J%c#%9RV4nNDr3Gs8(AqkW0gce}( z>6LpX+r5q+sg`Asob*JpI3}eoGw(R|VZUGoUrd6ZC-O;LNSRqtpW3rmwMtEVDx2`< zFonOF__LDL#%ZR2>W|Vof$A6__-xePZB({uwXI6CR%=3fR@tr9j?+q`R=c0AysBld zDxU=6jmooH?OA1A=QR)(@*k%%OF|(A0ktl_8AzEXQ16m7{04tk-qo^?nZ$!R8wQt$ z(EM51sb!-S2&hX2OyQMhwd^QW?Cq-D;}j{!;zABBsCG&5hX5N4^#X9yuiO0zb@i2` zMQtrr+pAjbm0MTCinURBTdO_9ucI|dfvpI?x!kV^nDtRAQ$^9YMr8Z4HcZnpnWP9` zSMBkxR(nTe?@bg_w!>ZFqxxyYa1H`{%66=DR5vDo-s55-9X zhGIhv#a%iSH)?Mil3DB`f{|^gcq7_70slwMLZeQ~YGRu3Q?|l}j{*N6!EQOg`Z+an z*`OWc50)To8(nnh6J%xbOpS!afFN#|IW2YO5roYk3LLNm+2%LA5Q1zIY6(3G2(m-P zA>*q@2C7T})=ybFTEMU_yX4bh^{uGm7wl@ix=#qA@S2K|yhR38E!JH!^^ocDWIAQ< z`($Ear~N)=K9yPy(e`_s{#c5T82p2+?@caNakxZ#Vni(~z&`Rs8?vwoe4>qthC0UB z+Mffet!~q;{fupGMCNv8)a3mJ0mmuG8P*?fY7{LXKZ^lB-Z1hg7HB7##JZ!f>HUHYW5$A{V^Y-O z8rdjMS^*u78angoaOBbAZ3HWh$fURUcO~dq`ChM!_I-jJIMgDa1A^?h@sx#aJZ@b_ z<^?S}-Q<6=lo|uvb^|QERcDO7uedyFY^XJl7TQ}vz$*|HA>5AePAz-QssppGg|*0| zlpQNOQjEAZi_SC-qWcsPH#6@*Wn`IT#eqd!>)>ljfN+XJAltPViF%U}K}Ks-Yim1a z0mLG$E|}9A!OF!^)lGh(;54VV)Y5B&&8ZvbEq>-{8QYv2Zy6=w3G{B zJ*uyC1?VPXea<4aLMw~(b3+KFvBoxr#p_rXV!7)`aGc_jW8Kx9#8@Kx?++@ZvX>&s+ zt3^y&>MWX&x=9g}b|`Wb+T2inUyD%NZ8HwF&1Fy*F@J+pTZFdNx!e%-<5IGAiYyh4 z68p{c{-Pq5#GHho9LhN{yz{NdIuwW?XA} zyHK89%4>zAdO;D-g7TKDoDISe=v54SHvW_NEXUJF%ab0uFH4;2sLjj_CN}%2)kpjE zg!U*pbfZNXI?1Mh?=$O*M$6H+Ef%`?y5u794kC{uz z-=<~sWOThf+zlN2;OvldHeu2%vZ=RB`NL6-?7m0Hl(zlEw=sH`EasfaJLl9RuZw)| zlP^PuCy?nJJG{~!OG`QDLeB1o-!OlhA*1#2ete5a7oGTYI9@*;{v5_zj<`HoGSsBB zZas87O6<%)*dVmnSxwGx=O~tHAQpuODI#UGdlIEdFT+PXMPBL0K1Ftyqk|TM-okds zv3!$l5xQNbiLrE_@#N5*NVAJa$RPs6?_cEP6AWm&%99Q1q4z3{PEXQ-j z(V2aZkiX4LI6Zy)DRSCQDKGXv{d9#GW?3mML-Jy3Tb)cjh=KTs0%%VyfX(){s66{qW{W;oUnA>UDB8vO z@|D5bS59UN8;$4*U`7oBZ>LyfPd0ifv!J<`5v|iu!|*F~|5tR$a-tVqU+OOWC%GtD z^9!8o0w)c(fLuO5TK5-4r)KeI4N~dp$Sx#LEz}Y;=!5lj)o(@{b)vd9_2_nNR!@KF z?&_S6T0P9zW2PS;Wo9>BsynaG%Gu;GU%Bcfy85Lw%qt||%qPI%{g==hv&hbkIiNl3 zgS^7(mu&UuN}*?*eYQq5Z|WMI!+$%(jBHcNn$QPys@BK!?ZiKGsDA>Q&NS?X; z+$VKPCm6?@U|{=F!&@4KZE8&QH{T!;zUN3G;K!^C zpnzQ0ZC{8|Z)_I=_GpXd)?LkE#|T96Z4VCf02fOEVr%Q!w6PXU%$n3Lwu>-=1?EjP zC+h_@wcg*sde@t?-x8Cr$1n6>+QosjcPYs1ioiF5XRg&izP>8pH7!OtZvN2IpPTq5u15NSNon2>_(9B%EYYNnTmCfxScxT;SZ}Yt37#n{{pD}Ah_mDoycPI;ch%@4SCA?Ys z8F<;PSOdYDs_TltQP8rMF+;V#IY>7a8cNfL{g^oo4jNg_)#3KxDC6gTU0v8CnFD>* zBl(>Ur#iED5_1V9-VwQ8Y3c;n_VTDlB6NZ?MH~XTuB3KWQ1hSLTgIxlaPBlZ%}y2* z#u=0AFTxaY%q1%MJX3IlPFD2D4lj<@iM^#4agXI<_&OF8*H>u+G)7ulcH^dlb97u@ za$#zkaE%>ZRC224G|&@yqjvQ2DWFvgmWFA0@$HRC!ezI$OZOW!x0zoN6;{=r<+b_?xOV+a?J0P6B{hk# zS!?L_ilE+syETRs;FcH-?0s&eE>rFm8VlV?hyMSZ$U*9GWinfX&0&8_Lh%iYZJ21QaihI`Aex^-kSAI zw7Q%w;D2UrUEKP|f68aR+8LiLRh#|8(_V9QmjslX|2Upf9SaK!4<9~ExO9>8VDY}l zTfBd7>EVM1OG^t6|FN)mfAQhHm!u8RkmSxC&k{~;e8ZZP@qq4Rmt z>9@y;4mCI#_qzMDE4K`Y2|8OzFknyPqzkXLR3I$bd2`g>?i^H-7l)gJ_GzzU(EMBV zt!is9>QHnq)<3+dJ>PA7sAXAWXJ>0WEFut}j6D)g2K{&qkSpMCoi#^c(3dChltJ=u z84~8_YBFcSm_e|{|Ahg8Op;&Pf?UXdQ~)9$ZsmX7x_~D|{+CCCjJSA360mSU0TZ6s z1|ozw!UnhVq>C&JAE0ooqLTmhe#K^Bs6oih4K--tRZu4{(4ft~uwR`ZgNmJ%C_iBg zcFUBCx=iUPipf`4pN`z**Fr<(I3aS}>bYodHam>l=1P!>+Qy0y8YVyZnhVl9=FWEJ=BR(;^rlY}(~;sgP+Ad^VO=UcYM*vBvrV6PL{C5+>#t*Y^qolDTz9 zbO{m?Qzci`BIxkc!f$mv%!=pcxZzuQR1l$w*z16 z2@Mkhe|6D)syu^<}qAlMI<3da3= zEzIj{NXFo}zH|&K^N!%(K|VVA;dNzXq9{&BP9$I^`>u4EI=`D`QzNnnHM9j0WKZ$wvv@h9e!|U%#gvqjcDdq=@lB`#*A<4+9=W2qa zVasC=!V?gYWdyv!;3Kbe{$N>~heNI*X@leXa<=c75Giw_{2{`!R^c_I#hR8^6qjSa z+DD&nlUJV$ty+UkZ`|bW0?m1L^XFX$8 zj8c7lwW~sv^9nboj_)U^?$_&BM))>@&zDG>g6QNv-rvGD(vionH=E06zQS1-)2A}U zs|PIqCPIT~_SYJMqWm<5AUqoPH<5{cdF>iv(I~Dj8S@O>-)0S>pOm|nEjOOh+QYnc z_qP!bY|vdx1$BngP&2qoXy<)0?JxdtdueoCQ)x6ED@j1ABL)d{19IUcVC!|xXF@{Z z{G{JG-{v-hVP9OeuE=ni``5ozWB>ZZ-+>MULGcIUhpp~XC_UJmUGfiR&)byecg5}d ztxuAnz}XQ$=O~K#$zTWHnvkbZev=1J3^Oq9!s6medVsz^d>w^A@k~K8P;{);EGw&< z9U|sUaA%BgN0;sct$4g6O3!$0$JW9;6kb?e;cMX~>K$`O_D*HFkAoK-UrpzEaCWH5 zx1e+CjCm(qzxpDH<~d!2vc>wmC&FE}O1}J^(-=lLSA6~3#dhKTUZMW+!8=QsyV@u~0vqy>+K7nRO?F5G2yijRd~j;Qdt@PhJX9t$r( zah2!73s9DMFuaH{J?|7f8D1zLd^EfW3ZD%x>eG1-hZmI1dpf+Z=;a;{4<=Uj>F`pM zxPD|iS2JAZjcwNMy!NZ%C3vw9hJROH%Dos~f_{8MJWf0B+oCZB?qn+wPcrGUy3-k* zb#d3|8vd~g2}9-w$A4@_IU!0{^A4omg?A%oeEEK$K4fkwm;~|)8E-AO*a0R-3OZ*q zOF_2UpPiA{s^XiQ<0^wrx~b`& zN($eRd%fD>9|SX=XKVCdMnuv~1G4b+r9=Y`EyqH;4<{OU*mm$-g0YWXSg{FWjoHUu}WrrI&+rD7Cy30c1C|8_M6-~ zE07#C?{x*|`HvRK4Z!onrg~)&>K`aH*^{p;w!nq9NN}=1p6JX#EUw_ki0_AZC**84 zGSgro_8%j;DIDUKlh&BKz~I;eIk@GyHSlwcA!3JA8Wvl$5D)YMgCy~3S#mX~p55?Q=DpAJ| zmEkpaQuw>L#S+ZfO>uYmiYxe`;=A^qO6+2Cu?TbbRs1c^GSy7SpCux)|B2Y}|9!-U zoSt!`u|p!!UlbuL?s?nm+V+R-+Ut!M>mRbM7q7Rsp4*r=Pc#jJ_OotVjD#RAjv6zk z<4)sqcMO#+laM>^DIG_c^88p4BTJz=5q+ww$K1tAcr2)j2hA~f zDv5$t(qm5%6)YE}0?7LSN=OhSG0nG{y&j&`RuWx6-8CS+>4Wq_=yhAiDp-;9ige-^ zIlg!w$jNGU)a)O2E>)2Db6lY`MmFm7WXbK$p=j*R2vx1`^`qfm4^CT0xsa+qd?1nu z!Uq}IQ$MigS!b)Cf#{r(^S?2`3GW6*1s!pyBM|c)@vp`gssL`R$H=4-FHJ4e$UM;u z;1p?p3SFi&(XkH3Qyzn!BKg<@OSlLIeU+zJfz4f$Dl(1=T*C>0?BI)$Nq`xr_sdW` z=s)XxsSnQkVUVGy67=*OFd?018An_(5%G3Q+*T26wR;^r1M*64cKfGe&k}WXjP<+` zZRnVS@TrYPgLB~Znkb%k4t#s~5-48w3V1M{P*DQ5yN5^l6cppw9bO$l+H4)8&tEPI z^djPl*E_w=&MoYg|fvZRZxaD5Dsjl-TFgxAu=+B*}_mNQt8I))ek$e=eGY(%c{ z>Hc^!ngbN`y-xpda#SJlx@1anR~UT0*DkdR1Zu2eg=YhfA@aXwTLS&;`}bg= z_};@ztg$(#R5*B{hAE(d4{ZYv-jhH{pXmtab4BRRq)Nnp>vGK#l#xK=$zTYJ>L#pi z27PX#fRFUFu`^U~1*J$Qr@hlrfkMVQbgUuY?kZ%dn4N3$u%>A%%LFV4{$@NterO^w z>$ieA5C-2*feZGfX2!tr+iV-GT5S{Fobmz$fR2)u7tF5I1AIBG;er<>3dFPD$_ey* z)SYzR;Qccy&%yr39RE_0d#OrB%6by(htLE&=!Z28e1om;^BrFrkv@A_>aa)3RZ{_Z z#>!;~3)f(mCh0Qw7`y%ML^mL5Cb~G3D`W;eT{QWyx;Z)&rubisDKQo%YD<(~ zR`)?9hj&||>}(|jSKDVJz?Qe+_MR!*?GH~UP%zAb4;M9)!J5nLGmZo_!R? zaka{af_REih;Dl}%;7rX;B=DT6Y2h0LBDV|eDXUQvqMyp;PK>3uLJaQnUl`Ru-AlT z=FG3{?pe}pKiQl4_O08#xY(Q7>#OTeB2DSSZ{PTfigUMhfk|^8qbiFs3o>Qyxbvkw zIPc#UNoFHO&nOCHUzqYTAB=i06HQ;4i{`SIeKI%&MI@A`gfZsm+=2l44PcT4x%;_) zxN#t0On2CuF$~HZb~xjTLf^g_n2U>FtD-Q)qsySuYYqC7X1CuNnYvgwNv!@zqB}58 z`9uToZ5LY5y*3yDk(~*;fhB_j8J^w4iha)_R1>F0`5T25BzBEJezI54=WY|B*!v@* z^ZQk4Bw?_o9f2myP5Lls*Gh zLG@Lcf~!3Ve@*L#S%Ox+3650L$L^5bFjumxmE_COBI>*RcgEXzsl3Mxz4sBb4J@vg z&5=;M6S@D(?(%u|T;vqAqH0R?31hvHJ+FaXw)J8MtU`u>_X@P}$IGql*9b*R>19~=%;7$Ru%Fk8OWqh$#B+-sHxW+;f@x7JH3zr?|jyX zRo8uAX5cBVN{%`lO1EywszkcqFDm}_GEJz&hbenv9}F>3b+!7>WIQ+>wK|*4;Sg%s ze*T1iJ8J%QS z%3ut4pO%yR75FWToR0W0!}p3Agpq1sEWrLkJvY-o6h;nHqAC`()$yps_OTPG|0WV? z87wWWp~h8;$Ru9|*H|h*2h&|0sZ_a?T@&54%b();-X*Z${^UV3!j{Pel(%3}Pa0E9 z3+>(0bEnPU;PKeDZQIVowr$&(*tTs}`{sM?>5|Z~ffH5&ET-m)pDY66l>t_dt(JCo417HS=}gD4v+)K37b= z=o5HbpAdvpb|SM5hs(MT+UR^)Zb6p80Oi zNGUrhrD%hECMFR_Um;w9Zn;8}Xg&vYeV7jWatsn;b|Txn=G~Oy4Hf}-SS1}Sd?6l! zUsa8BdrG`4WjYZLCdlht)Gp$Tg9K680mJdZof9^5f0QH4FMk8_aJ-rj)k(f6^2E7- z9GM$0(C}U*auv8s`UcE%98|)?@aLM$`m8Bx@O0A6zhM=nS{Ru70Lm6<+%VtJx40fG zf*U5fWhi-@%LLF$Be@auFZeyrt^NkTx&MG)l5g-!9rF!-yZ!;c*5Baw^c(ylsQwFn z@v{E|e#8F(zv18D7x^3fs{9Lnr#ZgCuhT!^*YM<@zAOS6R$#{{wm(FkVZzX_GMTn` z{v0Ow13U>ZWj92$kC7b&{0*4#-5}X|NEpB$JgOLmpCwGj2Z&kg&x?#i2@- zgQ0VaahOzPFTjITfQUfTbRJX39hZ1)-6=6hc!USnIGnP;d4Ah=l97*n2*T4v1U$Z> zh>x;3JYR|f^(QqgS}yl?rIC%`@Y6fBy_;QeulsmHn2vvFE_v@KCk|TMu7jzOF(dwI z_?R6*O@j9cEWbRLk5-m=G75em|uysmCzW@Qh2 zZaX?kjHlLC@cncL+XXb;-*W+&cax!|ftkbnMC~eNhjK#`P>$-_N zxX$vRMHwR7-54m}g9Djj-bNb!GJYRK?!YU^QlFVgX|K$azM(EHHABR#8ZvyNS^H_% zwPepwYH@-8QKwQ)%Gr$I{ndMJOFAX2o*X)pgWeAyq}rFAy6 zOVgB4Uk}O2K<7}`u_eKSPK|9GP5G?milG!c`kqsD`AhD8l1Wku5AkCci~QtuNwQ1<-S zP}a)ELj$IB+As)E&Vd6Xr3I+xxBTu*bVgj|N2so+TtfE=rWHR= z1c$xO_|p9e4ZjMbG>`Go0lf-dej}+X4n%5;Uh!YiFF?C)$m;A&oDw2p8mSt(y8L0$ zPNhRk|7hN5-v6n2Ydt`vRU%fPdq@M9s(w4}OE3MpKJ3$EXU)dxPR}GNYIB;9!(Hi! z6unighTKHXKn*k_&s=dVu(^w6%4l(}yVG@)+u7QmOZh+bQGIt6}HauVq-Ox77TbnZ211~|@t@>$Zuuwq4yU71(WhGrt0fGbtxu12_kALrz! z<9R+ys6E)bOgeC9t!60MiQ5;9bZRt1LgIO}B?=Rc;j>m8OSidvrCK;4phc1I<032( z{LT!e5!4*1D^#0b{&_j2p!ZkGBdHI?KE`q}mQbSlv*!5u;5V%;5fG~NTl3ofDO>3m zKbQhLc!^52Yt}4pYp0dV5p;2&=v!IqnBldK63|KUZZ1{l?jD152E(~_xV}crcBkoI*?#A?e;GY6+b_-2GW zq>Zmd!BE#%#f*BhLi0GqBnZQy6wh-BkM%;j$C{Y<3>2aGB*>_}E{qKOxI7}pd?%0T zJ^Kp-SW$Hy7~kCCXL9K@;{?$g7^e$G#CwjvgAT1o$BRBTqlY8rAgtC_GpwRpl!ji! z6&D)jqSK>C0)9xxpz`aJQN7lIAGiY5L!|lL0}UJHSHZlq0(s%%Op18}iys`X6EfebhR|RCc$v9evYeuG zfk3$95a5N&R7N5&DAR2Yp9FeqxT1GDN*ekuj0pYA(W7Mg%zI|g>?;dp$YGOA@Jahm zD8J$5mHRT|K4^^q5TdnOg(5**$Mb`KI|e55jdQ{n>sBD0Tksd}r4VDU3%ybu$J{ZXrEWa8{tG!XzWp!c91|Q@%)#-rrg<3}Q~(=g%njy8 zk0e^jjtC!~M+x?01PKQf7}c&@5$MXgSQAWE0X9U@+3FySbp|y=WGo2}Rh-P)TQSz_ zXmgXVcz4PUhdEF~G?;sa>p4!2>8gVq(>Wg5o#jA%vS53z&nUw+ zcQ8zHB@ZU7Qf54mc* zA}EjNKGB$z8#7?fZBA0piw8N}eR2**5%F7}AUvvbdZz(-WsSp;o`zTR3+nH>1CcB;?`Y2X;#+S8Kh>b=+^ zLFk}~Am|!9V$gsp-{zTiDqe=6w0PlDe-HICTA{*QSZiS+%BF$@+le=nIbzE?0llBW zoL&q>h6pus&&W)LOhp$6*DNulASl-AQ$_^h(@#PJ0XpCcoUE~m3THa)jzltXjS0cf z1IdCFKCZ?E- zLtJ+amAZIpr-M~M{Q9DV{ATRbF=H%2&uQrM-J)4j_ww{6-3ccA0lzkxj-)MrYr&1N zSRf{cF$dT;Va-Y|H1n(K4{Fv3H(^Z)FJy?Qu5}Ld_K=BM{Vg@o&DjOXiMTQU{sJdd z2B=IanIm&&mgTUJPqT)@Z1^pU`8-~1mcd3`jr9$FBKUelEd+THZH;*HL^B~H^~M1{p@h3_ld5bp!=`xPPy zCQc`0z7TgfjzAVb{O4|Uot03)*oiyzVzC=I!46Cvl(2H+G#gE}2A}Vn7St(I>%s(CKS)Y1N8SBE^@O*z{zb z!~ihSwI0lsXI+xfYJc7=NJK7y_-s=Od|9T{;Nb=ZIk^OaD)JF??I7o#8q#Ip;2Apj zN3+0>VObfU97mJ?+{Iw;h2+GC$ZHHDtMLQ^R*@`R&-^8=#qQJn$+zZx z`>~0BqkBb43suKflK^*yCc2=9h&(SC-orT;C1;TU59)v#6z!p}NIu#KxvT!Ct`XZ` zMJuo8!TgJ~m)UCYG>XwjVjkPK5o!bfCO)E&e@<03-BvqU2~ojrlmWy$Jml9!(EIm9 zUT1ljoycqyaLy}UVc^k333O}}NG6L~Y@Xmm6ga8EYqUTME11n_Pouw%G7otAS)d%v zMZcR&b);5lkZgWB?kraJCsQi)MJufv_^=w0p~6lW@5tfEB@@CmvbpK^JG(-J!qne2 z`;;Yxhc*;$tVhAxcWN`yiPwOmDAX9TwECba=n8s568l`U#A)d-vrTHw;jxf=kXud% zZ*)yBS)W%d@Pz$;5dHrqh|Vatc?}C$WwP)tALNtSeG_KF{L}5$X5)S0xcYUrAwP$M z@+5f71cu~JaywJ^kmWt!?J~-mftE;Gn$>9>z_8`+s6R{iR29}+ifcpV&p3vD*P28M zrm3uCCyu{*!h6}0?6>+biZrcg<4kcowu5I0AsqQ-$dbR}Kb;u1?rvS0wC$bVyChVi z=Gasy6fhlEKe&EQimNxIxikxYKvv_CIu4JaWZ4V-eh7+fQR2pf6F8z85-3TG{q-CN zl2oX@fy^vQS4gpGy@(l5@SFJL_xkznoE)Y-uuUdcV6ZfY)|O(5S0QcD`f|_6l->Qc z<0uSor21QfkNPTg)nT1>Kjn32s$f#EjD~P}3YzZT6}qnwd}^;Bc{NpgK>L3^*dB-IJ-e-(i-@-xr zz1YaU^avcx6K7zB(E=&Hi_Drt zJ##;pbLOz{ceEtmR9)P)zpnc` zMjxm!axzeGbbw@faDS9LGn9!^(-|x=;&$DXY3S!OWb*h9S$b6@d@(bx0Pm17lAo}D zUKPw?FFB*0Xaa^X_r){k z>Hhr0-WvJH&Aio`k?ECHIIq9E7HeF@{&75HMoGD|AhH78&NHT6D|4hvjc`fHd6F2T zC5vW9_@e?Bn5)OQl>7P~fWf_waKtkycvvrz?Q8IzO!Swv#)xY9> z$X2`5m?~SM&Qz`bGi8~5aTiAj9=9ts9Hd4|t8OXG%B)TOJ>+NnLaIhfO}_B>f5~WU zA-wWb@!I7I(*Vr_L3uL_5MdIa+DQip#WLueE;9Ju{`^#rmJ1V#Im5W&Lt?g{>h9KS zP^Z-z-|CuPNAo5Xzci?B^Us7+*hAEvL1J-ebE8&uOTj8r@*!6v_*9uec?b*T|D>dXwji9qA&PI z`Y%Ks)pVVbL;Xr*)uNsmEvpVT;c_c4hDv8muwE~*oAPoLI))M?ooy=Si`dwCUBh3e z)tML7P*B|_3HpH*`)H3clIm`;eY6!+Ml=S=t(uf2dezU&)@X)tmNO#`f%bNI5rHlb zt#QHD#f=Fd21VQkKrXQrdk}YmWgvO0MCN{3WH%+C5W(PN^ z8Z`2M3_7v|%>slM>4qlNHiNX;!pL=6E^>Pf3r8~z`fNfznCZIACI1Q?^nlLCdCud( zJ=0rlF0%b8UJReH$r{ZGu+M-Y0|FF8JzkLV5_g6;?*(z+&?9;G&0D##jjhjnMYzT# zb{HLDI^x`6uP0OtF%N$Kq_#f)6bj@Ky)908lrb!1jWwzdz>|HE8gdttDOOz;kCT%F z%Sh`I`jJgO&@kVlO~PYN$51BFzOwODZqkfyWkkG4N~5at3v{WgI}tToxJi|9fx|(F zZuC_3O+!V?Q}>yM7)z#G=!+`55hFbpz+5+S-;%*fhsixa&}Tqon@vtf*li-8Zx(ie zFVkAAOY&wsM%^l!_zna0jyhZO9-`%@YI%>h1aBnAize~=^8|_G5n4-qb3Ycn{7k7q zHmC~!&?&7`w=KwPl?6Z35d&b(cA;CgU=8-Uc$vnv7%p6QAl_`3Iwsy1f~(XU(VH!_ zft$wFRHjn9QG;(Txv3+%NtTc>ndVUQ$UYDciP;%-5J)9hrDr_ zlKKzkrU4o~_?a>yu8@C)?AR31RV1~hmcv>pP(o6*z|@WW_hApV^de( zqwp`80%>tnu|If-u9p(JeM>};&O?{R0bNEzPB7P>q9k+)8nuN36oem$mkUVO|9L{$v#)$ zipaA*_jhx>NxAsXk^Pj_I^FQr1>QCp6X-^3eVfDgSdhim`dTtYgSC47fD!FZ^-Ks$ z9R8&fckW?&5-tKe`!SQ22nm@SF;o;z>b*Gxp*WFj+^B0CWa}=&BgJ)H2sh+=PRSNA zOWfQ^cqKswa+~roC&XeuslIhZ#5qobp`UnmOiEKf`~SSi_AX+XO7n5T1EBD74!{+hNM3w%zto(K>F$Ept)+pB-Y^!GL5e}ie@ zPE4d4gXezN(&I|vPn$DPeib3g<&zFXbOdFXf4TJHzg&8AmK!F(9c`AsI$DHCq@!Ly z$eQHUg(zGD<^r`h5Wak)T=T(65tI!#?US5+hyel}&$=SKlKEVOC60YDck!Z-9$Zll z+!e3J;bJa$MemzSyZ(nu>;CUtx=-tPe;d~t*^RPmkD$VpAt0E>A9Yd7PJMiNkhZCF z=2tr;9is0iKJ$8NPHeJ-?o#+;^_62!D0`-}d&FP$&XduY%6CZVkLa=PdGi?vI322{ zp=;qRHZ|ug6h=4m!sxBzGl5?QUd2LaI2P@Rs?V^7htrv}5jIz$7Zh#Pa!YvIh)uLt zj6EU}=^k5B-7VcY{6^{rg7wLQNF6$gkA${MSJ*wZZ}>p&L3(O4os?|h>_4kS!$YgW zeI=T#HIwUX0A$D0E_BB)CKW7_LAk~y2OVD=6`;6s8*F=)H;#O*Y;ejMuJR2T`(Oo8 z?Ojk*;Bf&?_)AR%hC?bl+_ZRWgK<_KBpKB z)5*nGoKgW}Ylq&QS1O))Dk3X(%Sw~ueq!842k$d}Jyn1W;C(^PW}p4+;V&0&l#U{R zF7HtX2i>mVGy9p~N>9xDMsdaa2Gg0qN*XMsB7!$BYE+)4g><1q-Kp#=b8>WzL6F$; zF=pTTG({c`rJY-2mIE-lPQVk{67N2{);q+N0?{a-t=s0) zid1UPS9}7%#8c}EhFs6w>M(A7{Sl-I1{Gq;`HI4w2aIULcM$_GQS`Z8*Y&3Mnbjay zpVWQI2=`g#uMVi{+#rAKDgn=pr^~GAVpx)Dg#rRez2d!7DE;~8VRz#Dp^}PDy%kj# z_wv+*Vbs-IT?SNH;G15L>5%T=*PDpZyB4fjFLKbRsKyL{67&etJkUpJr>q>)ki_&p z0UDyJPZmZ9W-_*tX{o=Xgo$0HBLe7$x#M-hwDjL=5XBJCXAgHa0$7>7PP6^8+MC7B z=WDJMXzL}Wry2HyxM65VK0*Y?+U-hc#*1 z620_h1!lXFg?ht)f^xl-N`5j(^y*z|3=^om&f2S92*WX3IZDhy@Z3ZL7 zCK;x0_4`_8oy}j}P(&zICyEuyyo4g3Ns4lQHRChIP}|hT4I+ASeX8lhe4cbT$>9Oqgc z`iqBGB;)@=J!zkw$56jpwb^V+rO)p?lk&s4ZcTC}`1%Kvo`T$hih~xNW5EC`F;s!r zW$nZ2V?#%B?FzmH{>*5!o#zaQy`zd!6r(~DS^(i zFCS3*komoX%jNmqGws||pkrgqwZLyHYBz~1wAo)y=QA89VJCu>?IR(Le>fOxD0D!= zpDin%t?>sm3>HYgLPqMPe5A@9=WR||J;O9nmTp?Vcf#9~Rn-VXJka|^l+Fc{`y?%5 zth`$^ECf4|-X$+s65IpC)KYxCkvb*944f2E?GEjiDq}f_>Pim19mo_#8EK<($7J6T zuBRe0Ec~iqq11uZ%~pfVY6DgG!n!Yy*=ZM1^&g#*S-vakqjj|1TO5zq*|^8`LYW*sD?vYwsjGT|%)hS*<2a&W-$_54H)(B94!OOfs&v_fAjbvNnc^ z{egWdMFUKrsEP^0LGF)x)g7*~Uh0&r(q0_Mh4%zK zgX%m`g8}S}H_2k7A9l&cL{}P9R;oUO0f0&n*3kr zO;m?zABVgxeo%>dEj4It45N-G@VDK0o#*z7gGW25CG8h|9#NNh%~Ds1@`3(YI08DK zK!*EC2G^FsW&w9?Z*hfvj6_Hg%b4e9NBvnu@u3lT3+XX;3bx1TAC$N*F&Xq;x#Ok6 zhd=#R3%xMDV=DEBrWh4p3wBCstsBAZErsDC9dy}vEKY-VH_UFBL2Kml6_&89J6WN1m&Dq25SynTe;8m^(WAQ<{@iD z{q~ja4a^&mri*Pq90k&`jzr&{EkuZ9NE7~hV#@P;`29mNPRuDWw9Y2_Jx`gb;?ea| zZioxg)dNt-byk?~$(5HD{bsVu3XXzN6c-(qp52~fcMg!XQdmr!tQWUdUuX0ymV&ZKu^sZL)Gm^PH8WjT)>K6h?UA{8+S; z$x=|G2Yp@f<)mXASn?LZ4PCj7DNhkC5u5$Av54RMC>P<;wYZ80a_v%xtI$wDL*qhZUT>(?>c4sA+)tARi#R#k+O`Pz|;G^=$u%0`Y+#+yc1QjiRT9 zIJgFEYA?+LI6SIjodIjKMwR!SVu=_eUiM1$*pZ|3Fq3z7 zn?+ywZkFvK5cH9T@Z?$Xf!-iWp;ti0abB0#Vb)3*sx&eM9*L2nPVTc zck?BHoV&;8w}dQWdaQ3Yy2PXJ5=EmjO1B>+8%`*q5}fCKl7dIvY5}KDyg$UsCwo zzk-KTiLOuu$63euik)GZIPCNFdql?8YM~|I*hr!kHG`0%5DO|k#!QYj6h+bqcyFRG zG{Edtd65Ky90)xJ=)>VH`bzjx$R=q#4R^t}b#Ib21=C$vY%B*rS)8Lx>UYD4xI^8j z_JXOv`9srqW@Ut#o2eCLg^BGHD=qzDp%;I$Qamv6nYP+FV1zxFlb3>5nZ{&7O4Ng@yUCkd3ajP_2 z73;ED4BQQcZTyIZ+TG-4b2hE|&1UiloIRuG9ojg>=k?G}TK;2eC(*QtfvfNU2*b2* zNVZ8VJ8#U$Ud7;dPkbW?1+jBR%gbJ(BKGD4aGbphM)3j$ipOkAR&L^7I%pR)?1ge` zWNRy&enj+=IZHlbc)So*c+kjxIW~N9Vty6UodDoX6>4q+)?Z{I6y*~rsXFdK)*~lV z17%HXR2`T_DhTCsjhU>8*%6V@QnLl5MfopDgO-uROn>cISm@k|_qq^o4Z<__S{2-% zC65J8eKZ}h<`eBoPj_}Pm#Yn0%(f@qz-sm9^3hMGw()RH@Y0yxdb&`G-d&n_gr-1O z!NDFqS-fsM;Nj8F^TA`8$YGW0Mg*uGAp3QiJ zgyX&g*y6-Dq5lTVR%AZqFLjG|rvNliN)l}U+R#zDU`9+_pCqwtg%Zhv$P@3R;67D8 zZ2bA5b_%|j?A>3kp6e{_v>aQvcdGON^yHdL7PC5&dXjD!T8hyEXGS$xH3$HDMyb^S Iq5=o{AM{S5CIA2c literal 0 HcmV?d00001 diff --git a/@packaged/angular-star-rating/angular-star-rating.d.ts b/@packaged/angular-star-rating/angular-star-rating.d.ts new file mode 100644 index 0000000..67ff29a --- /dev/null +++ b/@packaged/angular-star-rating/angular-star-rating.d.ts @@ -0,0 +1,4 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './index'; diff --git a/@packaged/angular-star-rating/angular-star-rating.metadata.json b/@packaged/angular-star-rating/angular-star-rating.metadata.json new file mode 100644 index 0000000..b862a17 --- /dev/null +++ b/@packaged/angular-star-rating/angular-star-rating.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"metadata":{"ClickEvent":{"__symbolic":"interface"},"HoverRatingChangeEvent":{"__symbolic":"interface"},"RatingChangeEvent":{"__symbolic":"interface"},"StarRatingConfig":{"__symbolic":"class","members":{}},"StarRatingUtils":{"__symbolic":"class","members":{},"statics":{"getHalfStarVisible":{"__symbolic":"function","parameters":["rating"],"value":{"__symbolic":"binop","operator":">","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Math"},"member":"abs"},"arguments":[{"__symbolic":"binop","operator":"%","left":{"__symbolic":"reference","name":"rating"},"right":1}]},"right":0}},"isDigitKeyEventCode":{"__symbolic":"function","parameters":["eventCode"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"eventCode"},"member":"indexOf"},"arguments":["Digit"]},"right":0}}}},"StarRating":{"__symbolic":"class","members":{"setRating":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"StarRatingConfigService"}]}],"svgVisible":[{"__symbolic":"method"}],"interactionPossible":[{"__symbolic":"method"}],"setColor":[{"__symbolic":"method"}],"setHalfStarVisible":[{"__symbolic":"method"}],"getComponentClassNames":[{"__symbolic":"method"}],"increment":[{"__symbolic":"method"}],"decrement":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"StarRatingConfigService":{"__symbolic":"class","members":{"getColor":[{"__symbolic":"method"}],"getHalfStarVisible":[{"__symbolic":"method"}]}},"StarRatingComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StarRating"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"star-rating-comp","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":10,"character":11},"useExisting":{"__symbolic":"reference","name":"StarRatingComponent"},"multi":true}],"inputs":["getHalfStarVisible","getColor","showHalfStars","hoverEnabled","rating","step","disabled","readOnly","space","starType","size","speed","numOfStars","direction","staticColor","labelPosition","labelText","id"],"outputs":["clickEmitter","ratingChangeEmitter","hoverRatingChangeEmitter"],"styles":[],"template":"
\n
{{labelText}}
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
"}]}],"members":{"saveOnClick":[{"__symbolic":"method"}],"saveOnRatingChange":[{"__symbolic":"method"}],"saveOnHover":[{"__symbolic":"method"}],"saveOnTouch":[{"__symbolic":"method"}],"saveOnModelChange":[{"__symbolic":"method"}],"onKeyDown":[{"__symbolic":"method"}],"onBlur":[{"__symbolic":"method"}],"onFocus":[{"__symbolic":"method"}],"onStarHover":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"StarRatingConfigService"}]}],"setRating":[{"__symbolic":"method"}],"onStarClicked":[{"__symbolic":"method"}]}},"StarRatingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":12}],"declarations":[[{"__symbolic":"reference","name":"StarRatingComponent"}]],"exports":[[[{"__symbolic":"reference","name":"StarRatingComponent"}]]]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"StarRatingModule"},"providers":[{"__symbolic":"reference","name":"StarRatingConfigService"}]}},"forChild":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"StarRatingModule"},"providers":[]}}}}},"origins":{"ClickEvent":"./src/interfaces/click-event.interface","HoverRatingChangeEvent":"./src/interfaces/hover-rating-change-event.interface","RatingChangeEvent":"./src/interfaces/rating-change-event.interface","StarRatingConfig":"./src/interfaces/star-rating-config.interface","StarRatingUtils":"./src/services/star-rating.utils","StarRating":"./src/services/star-rating","StarRatingConfigService":"./src/services/star-rating-config.service","StarRatingComponent":"./src/components/star-rating.component","StarRatingModule":"./src/angular-star-rating.module"},"importAs":"angular-star-rating"} \ No newline at end of file diff --git a/@packaged/angular-star-rating/bundles/angular-star-rating.umd.js b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.js new file mode 100644 index 0000000..d953786 --- /dev/null +++ b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.js @@ -0,0 +1,769 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('@angular/common')) : + typeof define === 'function' && define.amd ? define('angular-star-rating', ['exports', '@angular/core', '@angular/forms', '@angular/common'], factory) : + (factory((global['angular-star-rating'] = {}),global.ng.core,global.ng.forms,global.ng.common)); +}(this, (function (exports,core,forms,common) { 'use strict'; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* global Reflect, Promise */ +var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var StarRatingConfig = /** @class */ (function () { + function StarRatingConfig() { + } + return StarRatingConfig; +}()); +var StarRatingUtils = /** @class */ (function () { + function StarRatingUtils() { + } + StarRatingUtils.getStarsArray = function (numOfStars) { + var stars = []; + for (var i = 0; i < numOfStars; i++) { + stars.push(i + 1); + } + return stars; + }; + StarRatingUtils.getHalfStarVisible = function (rating) { + return Math.abs(rating % 1) > 0; + }; + StarRatingUtils.getColor = function (rating, numOfStars, staticColor) { + rating = rating || 0; + if (staticColor) { + return staticColor; + } + var fractionSize = numOfStars / 3; + var color = 'default'; + if (rating > 0) { + color = 'negative'; + } + if (rating > fractionSize) { + color = 'ok'; + } + if (rating > fractionSize * 2) { + color = 'positive'; + } + return color; + }; + StarRatingUtils.isDigitKeyEventCode = function (eventCode) { + return eventCode.indexOf('Digit') === 0; + }; + return StarRatingUtils; +}()); +var StarRating = /** @class */ (function () { + function StarRating(config) { + this.config = config; + this.classEmpty = this.config.classEmpty; + this.classHalf = this.config.classHalf; + this.classFilled = this.config.classFilled; + this.pathEmpty = this.config.svgPathEmpty; + this.pathHalf = this.config.svgPathHalf; + this.pathFilled = this.config.svgPathFilled; + if ('getColor' in this.config && typeof this.config.getColor === "function") { + this.getColor = this.config.getColor; + } + if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === "function") { + this.getHalfStarVisible = this.config.getHalfStarVisible; + } + this.numOfStars = this.config.numOfStars; + this.rating = 0; + this.step = 1; + } + Object.defineProperty(StarRating.prototype, "id", { + get: function () { + return this._id; + }, + set: function (value) { + this._id = value || ''; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "focus", { + get: function () { + return this._focus; + }, + set: function (value) { + this._focus = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "labelText", { + get: function () { + return this._labelText; + }, + set: function (value) { + this._labelText = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "labelPosition", { + get: function () { + return this._labelPosition; + }, + set: function (value) { + this._labelPosition = value || this.config.labelPosition; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "labelVisible", { + get: function () { + return this._labelVisible; + }, + set: function (value) { + this._labelVisible = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "hoverEnabled", { + get: function () { + return this._hoverEnabled; + }, + set: function (value) { + this._hoverEnabled = (value !== undefined) ? !!value : false; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "staticColor", { + get: function () { + return this._staticColor; + }, + set: function (value) { + this._staticColor = value || this.config.staticColor || undefined; + this.setColor(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "direction", { + get: function () { + return this._direction; + }, + set: function (value) { + this._direction = value || undefined; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "numOfStars", { + get: function () { + return this._numOfStars; + }, + set: function (value) { + this._numOfStars = (value > 0) ? value : this.config.numOfStars; + this.stars = StarRatingUtils.getStarsArray(this.numOfStars); + this.setColor(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "hoverRating", { + get: function () { + return this._hoverRating; + }, + set: function (value) { + this._hoverRating = (value > 0) ? value : 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "speed", { + get: function () { + return this._speed; + }, + set: function (value) { + this._speed = value || this.config.speed; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "size", { + get: function () { + return this._size || this.config.size; + }, + set: function (value) { + this._size = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "starType", { + get: function () { + return this._starType || this.config.starType; + }, + set: function (value) { + this._starType = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "space", { + get: function () { + return this._space; + }, + set: function (value) { + this._space = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "readOnly", { + get: function () { + return this._readOnly; + }, + set: function (value) { + this._readOnly = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "disabled", { + get: function () { + return this._disabled; + }, + set: function (value) { + this._disabled = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "step", { + get: function () { + return this._step; + }, + set: function (value) { + this._step = (value > 0 ? value : 1); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "rating", { + get: function () { + return this._rating; + }, + set: function (value) { + this.setRating(value); + }, + enumerable: true, + configurable: true + }); + StarRating.prototype.setRating = function (value) { + var newRating = 0; + if (value >= 0 + && value <= this.numOfStars) { + newRating = value; + } + if (value > this.numOfStars) { + newRating = this.numOfStars; + } + this._rating = newRating; + this.ratingAsInteger = parseInt(this._rating.toString()); + this.setHalfStarVisible(); + this.setColor(); + }; + Object.defineProperty(StarRating.prototype, "showHalfStars", { + get: function () { + return this._showHalfStars; + }, + set: function (value) { + this._showHalfStars = !!value; + this.setHalfStarVisible(); + }, + enumerable: true, + configurable: true + }); + StarRating.prototype.svgVisible = function () { + return this.starType === "svg"; + }; + StarRating.prototype.interactionPossible = function () { + return !this.readOnly && !this.disabled; + }; + StarRating.prototype.setColor = function () { + if (typeof this.getColor === "function") { + this.color = this.getColor(this.rating, this.numOfStars, this.staticColor); + } + else { + this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor); + } + }; + StarRating.prototype.setHalfStarVisible = function () { + if (this.showHalfStars) { + if (typeof this.getHalfStarVisible === "function") { + this.halfStarVisible = this.getHalfStarVisible(this.rating); + } + else { + this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating); + } + } + else { + this.halfStarVisible = false; + } + }; + StarRating.prototype.getComponentClassNames = function () { + var classNames = []; + classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0'); + classNames.push(this.halfStarVisible ? 'half' : ''); + classNames.push(this.hoverEnabled ? 'hover' : ''); + var hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0'); + classNames.push(this.hoverEnabled ? hoverRating : ''); + classNames.push(this.space ? 'space-' + this.space : ''); + classNames.push(this.labelPosition ? 'label-' + this.labelPosition : ''); + classNames.push(this.color ? 'color-' + this.color : ''); + classNames.push(this.starType ? 'star-' + this.starType : ''); + classNames.push(this.speed); + classNames.push(this.size); + classNames.push(this.readOnly ? 'read-only' : ''); + classNames.push(this.disabled ? 'disabled' : ''); + classNames.push(this.direction ? 'direction-' + this.direction : ''); + return classNames.join(' '); + }; + StarRating.prototype.increment = function () { + var absDiff = Math.abs(this.rating % this.step); + this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step); + }; + StarRating.prototype.decrement = function () { + var absDiff = Math.abs(this.rating % this.step); + this.rating = this.rating - (absDiff > 0 ? absDiff : this.step); + }; + StarRating.prototype.reset = function () { + this.rating = 0; + }; + return StarRating; +}()); +var StarRatingConfigService = /** @class */ (function () { + function StarRatingConfigService() { + this._classEmpty = "default-star-empty-icon"; + this._classHalf = "default-star-half-icon"; + this._classFilled = "default-star-filled-icon"; + this._numOfStars = 5; + this._size = "medium"; + this._labelPosition = "left"; + this._speed = "noticeable"; + this._starType = "svg"; + this._assetsPath = "assets/images/"; + this._svgPath = this.assetsPath + "star-rating.icons.svg"; + this._svgEmptySymbolId = "star-empty"; + this._svgHalfSymbolId = "star-half"; + this._svgFilledSymbolId = "star-filled"; + this._svgPathEmpty = this.svgPath + "#" + this.svgEmptySymbolId; + this._svgPathHalf = this.svgPath + "#" + this.svgHalfSymbolId; + this._svgPathFilled = this.svgPath + "#" + this.svgFilledSymbolId; + } + Object.defineProperty(StarRatingConfigService.prototype, "classEmpty", { + get: function () { + return this._classEmpty; + }, + set: function (classEmpty) { + this._classEmpty = classEmpty; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "classHalf", { + get: function () { + return this._classHalf; + }, + set: function (classHalf) { + this._classHalf = classHalf; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "classFilled", { + get: function () { + return this._classFilled; + }, + set: function (classFilled) { + this._classFilled = classFilled; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "numOfStars", { + get: function () { + return this._numOfStars; + }, + set: function (numOfStars) { + this._numOfStars = numOfStars; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "size", { + get: function () { + return this._size; + }, + set: function (size) { + this._size = size; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "staticColor", { + get: function () { + return this._staticColor; + }, + set: function (value) { + this._staticColor = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "labelPosition", { + get: function () { + return this._labelPosition; + }, + set: function (labelPosition) { + this._labelPosition = labelPosition; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "speed", { + get: function () { + return this._speed; + }, + set: function (speed) { + this._speed = speed; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "starType", { + get: function () { + return this._starType; + }, + set: function (starType) { + this._starType = starType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "assetsPath", { + get: function () { + return this._assetsPath; + }, + set: function (assetsPath) { + this._assetsPath = assetsPath; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPath", { + get: function () { + return this._svgPath; + }, + set: function (svgPath) { + this._svgPath = svgPath; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgEmptySymbolId", { + get: function () { + return this._svgEmptySymbolId; + }, + set: function (svgEmptySymbolId) { + this._svgEmptySymbolId = svgEmptySymbolId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgHalfSymbolId", { + get: function () { + return this._svgHalfSymbolId; + }, + set: function (svgHalfSymbolId) { + this._svgHalfSymbolId = svgHalfSymbolId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgFilledSymbolId", { + get: function () { + return this._svgFilledSymbolId; + }, + set: function (svgFilledSymbolId) { + this._svgFilledSymbolId = svgFilledSymbolId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPathEmpty", { + get: function () { + return this._svgPathEmpty; + }, + set: function (svgPathEmpty) { + this._svgPathEmpty = svgPathEmpty; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPathHalf", { + get: function () { + return this._svgPathHalf; + }, + set: function (svgPathHalf) { + this._svgPathHalf = svgPathHalf; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPathFilled", { + get: function () { + return this._svgPathFilled; + }, + set: function (svgPathFilled) { + this._svgPathFilled = svgPathFilled; + }, + enumerable: true, + configurable: true + }); + StarRatingConfigService.prototype.getColor = function (rating, numOfStars, staticColor) { + rating = rating || 0; + if (staticColor) { + return staticColor; + } + var fractionSize = numOfStars / 3; + var color = 'default'; + if (rating > 0) { + color = 'negative'; + } + if (rating > fractionSize) { + color = 'ok'; + } + if (rating > fractionSize * 2) { + color = 'positive'; + } + return color; + }; + StarRatingConfigService.prototype.getHalfStarVisible = function (rating) { + return Math.abs(rating % 1) > 0; + }; + return StarRatingConfigService; +}()); +var STAR_RATING_CONTROL_ACCESSOR = { + provide: forms.NG_VALUE_ACCESSOR, + useExisting: core.forwardRef(function () { return StarRatingComponent; }), + multi: true +}; +var StarRatingComponent = /** @class */ (function (_super) { + __extends(StarRatingComponent, _super); + function StarRatingComponent(config) { + var _this = _super.call(this, config) || this; + _this.clickEmitter = new core.EventEmitter(); + _this.ratingChangeEmitter = new core.EventEmitter(); + _this.hoverRatingChangeEmitter = new core.EventEmitter(); + _this.onModelChangeRegistered = false; + _this.onTouchRegistered = false; + return _this; + } + StarRatingComponent.prototype.saveOnClick = function ($event) { + if (this.clickEmitter) { + this.clickEmitter.emit($event); + } + }; + StarRatingComponent.prototype.saveOnRatingChange = function ($event) { + if (this.ratingChangeEmitter) { + this.ratingChangeEmitter.emit($event); + } + }; + StarRatingComponent.prototype.saveOnHover = function ($event) { + if (this.hoverRatingChangeEmitter) { + this.hoverRatingChangeEmitter.emit($event); + } + }; + StarRatingComponent.prototype.saveOnTouch = function () { + if (this.onTouchRegistered) { + this.onTouch(); + } + }; + StarRatingComponent.prototype.saveOnModelChange = function (value) { + if (this.onModelChangeRegistered) { + this.onModelChange(value); + } + }; + StarRatingComponent.prototype.onKeyDown = function (event) { + var _this = this; + if (!this.interactionPossible()) { + return; + } + var handlers = { + Minus: function () { return _this.decrement(); }, + ArrowDown: function () { return _this.decrement(); }, + ArrowLeft: function () { return _this.decrement(); }, + Plus: function () { return _this.increment(); }, + ArrowRight: function () { return _this.increment(); }, + ArrowUp: function () { return _this.increment(); }, + Backspace: function () { return _this.reset(); }, + Delete: function () { return _this.reset(); }, + Digit0: function () { return _this.reset(); } + }; + var handleDigits = function (eventCode) { + var dStr = "Digit"; + var digit = parseInt(eventCode.substr(dStr.length, eventCode.length - 1)); + _this.rating = digit; + }; + if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) { + if (StarRatingUtils.isDigitKeyEventCode(event['code'])) { + handleDigits(event['code']); + } + else { + handlers[event['code']](); + } + event.preventDefault(); + event.stopPropagation(); + } + this.saveOnTouch(); + }; + StarRatingComponent.prototype.onBlur = function (event) { + this.focus = false; + event.preventDefault(); + event.stopPropagation(); + this.saveOnTouch(); + }; + StarRatingComponent.prototype.onFocus = function (event) { + this.focus = true; + event.preventDefault(); + event.stopPropagation(); + this.saveOnTouch(); + }; + StarRatingComponent.prototype.onStarHover = function (rating) { + if (!this.interactionPossible() || !this.hoverEnabled) { + return; + } + this.hoverRating = rating ? parseInt(rating.toString()) : 0; + var $event = { hoverRating: this.hoverRating }; + this.saveOnHover($event); + }; + StarRatingComponent.prototype.writeValue = function (obj) { + this.rating = obj; + }; + StarRatingComponent.prototype.registerOnChange = function (fn) { + this.onModelChange = fn; + this.onModelChangeRegistered = true; + }; + StarRatingComponent.prototype.registerOnTouched = function (fn) { + this.onTouch = fn; + this.onTouchRegistered = true; + }; + StarRatingComponent.prototype.setRating = function (value) { + var initValue = this.rating; + _super.prototype.setRating.call(this, value); + if (initValue !== this.rating) { + var $event = { rating: this.rating }; + this.saveOnRatingChange($event); + this.saveOnModelChange(this.rating); + } + }; + StarRatingComponent.prototype.onStarClicked = function (rating) { + if (!this.interactionPossible()) { + return; + } + this.rating = rating; + var onClickEventObject = { + rating: this.rating + }; + this.saveOnClick(onClickEventObject); + }; + return StarRatingComponent; +}(StarRating)); +StarRatingComponent.decorators = [ + { type: core.Component, args: [{ + selector: 'star-rating-comp', + providers: [STAR_RATING_CONTROL_ACCESSOR], + inputs: [ + 'getHalfStarVisible', + 'getColor', + 'showHalfStars', + 'hoverEnabled', + 'rating', + 'step', + 'disabled', + 'readOnly', + 'space', + 'starType', + 'size', + 'speed', + 'numOfStars', + 'direction', + 'staticColor', + 'labelPosition', + 'labelText', + 'id' + ], + outputs: [ + 'clickEmitter', + 'ratingChangeEmitter', + 'hoverRatingChangeEmitter' + ], + styles: [], + template: "
\n
{{labelText}}
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
" + },] }, +]; +StarRatingComponent.ctorParameters = function () { return [ + { type: StarRatingConfigService, }, +]; }; +var DECLARATIONS = [StarRatingComponent]; +var EXPORTS = [DECLARATIONS]; +var StarRatingModule = /** @class */ (function () { + function StarRatingModule() { + } + StarRatingModule.forRoot = function () { + return { + ngModule: StarRatingModule, + providers: [ + StarRatingConfigService + ] + }; + }; + StarRatingModule.forChild = function () { + return { + ngModule: StarRatingModule, + providers: [] + }; + }; + return StarRatingModule; +}()); +StarRatingModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [common.CommonModule], + declarations: [DECLARATIONS], + exports: [EXPORTS] + },] }, +]; +StarRatingModule.ctorParameters = function () { return []; }; + +exports.StarRatingConfig = StarRatingConfig; +exports.StarRatingUtils = StarRatingUtils; +exports.StarRating = StarRating; +exports.StarRatingConfigService = StarRatingConfigService; +exports.StarRatingComponent = StarRatingComponent; +exports.StarRatingModule = StarRatingModule; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=angular-star-rating.umd.js.map diff --git a/@packaged/angular-star-rating/bundles/angular-star-rating.umd.js.map b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.js.map new file mode 100644 index 0000000..33a029e --- /dev/null +++ b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.js.map @@ -0,0 +1,32 @@ +{ + "version": 3, + "file": "angular-star-rating.umd.js", + "sources": [ + "ng://angular-star-rating/out/src/angular-star-rating.module.ts", + "ng://angular-star-rating/out/src/components/star-rating.component.ts", + "ng://angular-star-rating/out/src/services/star-rating-config.service.ts", + "ng://angular-star-rating/out/src/services/star-rating.ts", + "ng://angular-star-rating/out/src/services/star-rating.utils.ts", + "ng://angular-star-rating/out/src/interfaces/star-rating-config.interface.ts", + "ng://angular-star-rating/node_modules/tslib/tslib.es6.js" + ], + "sourcesContent": [ + "import {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {StarRatingComponent} from './components/star-rating.component';\nimport {StarRatingConfigService} from './services/star-rating-config.service';\n\nconst DECLARATIONS = [StarRatingComponent];\nconst EXPORTS = [DECLARATIONS];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [DECLARATIONS],\n exports: [EXPORTS]\n})\nexport class StarRatingModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: [\n StarRatingConfigService\n ]\n }\n }\n\n static forChild(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: []\n }\n }\n}\n", + "import {Component, EventEmitter, forwardRef, Input} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {ClickEvent} from '../interfaces/click-event.interface';\r\nimport {HoverRatingChangeEvent} from '../interfaces/hover-rating-change-event.interface';\r\nimport {RatingChangeEvent} from '../interfaces/rating-change-event.interface';\r\nimport {StarRating} from '../services/star-rating';\r\nimport {StarRatingConfigService} from '../services/star-rating-config.service';\r\nimport {StarRatingUtils} from '../services/star-rating.utils';\r\n\r\nconst STAR_RATING_CONTROL_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => StarRatingComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'star-rating-comp',\r\n providers: [STAR_RATING_CONTROL_ACCESSOR],\r\n inputs: [\r\n 'getHalfStarVisible'\r\n , 'getColor'\r\n , 'showHalfStars'\r\n , 'hoverEnabled'\r\n , 'rating'\r\n , 'step'\r\n , 'disabled'\r\n , 'readOnly'\r\n , 'space'\r\n , 'starType'\r\n , 'size'\r\n , 'speed'\r\n , 'numOfStars'\r\n , 'direction'\r\n , 'staticColor'\r\n //, 'labelVisible'\r\n , 'labelPosition'\r\n , 'labelText'\r\n , 'id'\r\n ],\r\n outputs: [\r\n 'clickEmitter'\r\n , 'ratingChangeEmitter'\r\n , 'hoverRatingChangeEmitter'\r\n ],\r\n styles: [],\r\n template: `
\r\n
{{labelText}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
`\r\n})\r\nexport class StarRatingComponent extends StarRating implements ControlValueAccessor {\r\n\r\n //Outputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n clickEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnClick($event: ClickEvent) {\r\n if (this.clickEmitter) {\r\n this.clickEmitter.emit($event);\r\n }\r\n }\r\n\r\n ratingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnRatingChange($event: RatingChangeEvent) {\r\n if (this.ratingChangeEmitter) {\r\n this.ratingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n hoverRatingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnHover($event: HoverRatingChangeEvent) {\r\n if (this.hoverRatingChangeEmitter) {\r\n this.hoverRatingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n onTouch: Function;\r\n onModelChange: Function;\r\n private onModelChangeRegistered: boolean = false;\r\n private onTouchRegistered: boolean = false;\r\n\r\n saveOnTouch() {\r\n if (this.onTouchRegistered) {\r\n this.onTouch();\r\n }\r\n }\r\n\r\n saveOnModelChange(value: number) {\r\n if (this.onModelChangeRegistered) {\r\n this.onModelChange(value);\r\n }\r\n }\r\n\r\n /**ACCESSIBILITY **/\r\n\r\n //Keyboard events\r\n onKeyDown(event: KeyboardEvent) {\r\n\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n const handlers: any = {\r\n //Decrement\r\n Minus: () => this.decrement(),\r\n ArrowDown: () => this.decrement(),\r\n ArrowLeft: () => this.decrement(),\r\n\r\n //Increment\r\n Plus: () => this.increment(),\r\n ArrowRight: () => this.increment(),\r\n ArrowUp: () => this.increment(),\r\n\r\n //Reset\r\n Backspace: () => this.reset(),\r\n Delete: () => this.reset(),\r\n Digit0: () => this.reset()\r\n };\r\n\r\n const handleDigits = (eventCode: string): void => {\r\n let dStr = \"Digit\";\r\n let digit: number = parseInt(eventCode.substr(dStr.length, eventCode.length - 1));\r\n this.rating = digit;\r\n };\r\n\r\n if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n if (StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n handleDigits(event['code']);\r\n } else {\r\n handlers[event['code']]();\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n this.saveOnTouch();\r\n }\r\n\r\n //Focus events\r\n onBlur(event: FocusEvent) {\r\n this.focus = false;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n onFocus(event: FocusEvent) {\r\n this.focus = true;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n //Hover events\r\n onStarHover(rating?: number): void {\r\n\r\n if (!this.interactionPossible() || !this.hoverEnabled) {\r\n return;\r\n }\r\n\r\n this.hoverRating = rating ? parseInt(rating.toString()) : 0;\r\n\r\n //fire onHoverRatingChange event\r\n let $event: HoverRatingChangeEvent = {hoverRating: this.hoverRating};\r\n this.saveOnHover($event);\r\n\r\n\r\n }\r\n\r\n /**Form Control - ControlValueAccessor implementation**/\r\n\r\n writeValue(obj: any): void {\r\n this.rating = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn;\r\n this.onModelChangeRegistered = true;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n this.onTouchRegistered = true;\r\n }\r\n\r\n constructor(config: StarRatingConfigService) {\r\n super(config);\r\n }\r\n\r\n //Overrides\r\n setRating(value: number): void {\r\n let initValue = this.rating;\r\n super.setRating(value);\r\n\r\n //if value changed trigger valueAccessor events and outputs\r\n if (initValue !== this.rating) {\r\n let $event: RatingChangeEvent = {rating: this.rating};\r\n this.saveOnRatingChange($event);\r\n\r\n this.saveOnModelChange(this.rating);\r\n }\r\n\r\n };\r\n\r\n /**\r\n * onStarClicked\r\n *\r\n * Is fired when a star is clicked. And updated the rating value.\r\n * This function returns if the disabled or readOnly\r\n * property is set. If provided it emits the onClick event\r\n * handler with the actual rating value.\r\n *\r\n * @param rating\r\n */\r\n onStarClicked(rating: number): void {\r\n\r\n //fire onClick event\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n this.rating = rating;\r\n\r\n let onClickEventObject: ClickEvent = {\r\n rating: this.rating\r\n };\r\n this.saveOnClick(onClickEventObject);\r\n\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarTypes,\r\n starRatingLabelPosition\r\n} from '../interfaces/star-rating-config.interface';\r\n\r\n/**\r\n * Configuration service for the StarRating component.\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the star ratings used in the application.\r\n */\r\nexport class StarRatingConfigService implements StarRatingConfig {\r\n\r\n _classEmpty = \"default-star-empty-icon\";\r\n\r\n get classEmpty() {\r\n return this._classEmpty;\r\n }\r\n\r\n set classEmpty(classEmpty: string) {\r\n this._classEmpty = classEmpty;\r\n }\r\n\r\n private _classHalf = \"default-star-half-icon\";\r\n\r\n get classHalf(): string {\r\n return this._classHalf;\r\n }\r\n\r\n set classHalf(classHalf: string) {\r\n this._classHalf = classHalf;\r\n }\r\n\r\n private _classFilled = \"default-star-filled-icon\";\r\n\r\n get classFilled(): string {\r\n return this._classFilled;\r\n }\r\n\r\n set classFilled(classFilled: string) {\r\n this._classFilled = classFilled;\r\n }\r\n\r\n private _numOfStars = 5;\r\n\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(numOfStars: number) {\r\n this._numOfStars = numOfStars;\r\n }\r\n\r\n private _size: starRatingSizes = \"medium\";\r\n\r\n get size(): starRatingSizes {\r\n return this._size;\r\n }\r\n\r\n set size(size: starRatingSizes) {\r\n this._size = size;\r\n }\r\n\r\n private _staticColor: starRatingColor;\r\n\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value;\r\n }\r\n\r\n private _labelPosition: starRatingLabelPosition = \"left\";\r\n\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(labelPosition: starRatingLabelPosition) {\r\n this._labelPosition = labelPosition;\r\n }\r\n\r\n private _speed: starRatingSpeed = \"noticeable\";\r\n\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(speed: starRatingSpeed) {\r\n this._speed = speed;\r\n }\r\n\r\n private _starType: starRatingStarTypes = \"svg\";\r\n\r\n get starType(): starRatingStarTypes {\r\n return this._starType;\r\n }\r\n\r\n set starType(starType: starRatingStarTypes) {\r\n this._starType = starType;\r\n }\r\n\r\n private _assetsPath = \"assets/images/\";\r\n\r\n get assetsPath(): string {\r\n return this._assetsPath;\r\n }\r\n\r\n set assetsPath(assetsPath: string) {\r\n this._assetsPath = assetsPath;\r\n }\r\n\r\n private _svgPath = this.assetsPath + \"star-rating.icons.svg\";\r\n\r\n get svgPath(): string {\r\n return this._svgPath;\r\n }\r\n\r\n set svgPath(svgPath: string) {\r\n this._svgPath = svgPath;\r\n }\r\n\r\n private _svgEmptySymbolId = \"star-empty\";\r\n\r\n get svgEmptySymbolId(): string {\r\n return this._svgEmptySymbolId;\r\n }\r\n\r\n set svgEmptySymbolId(svgEmptySymbolId: string) {\r\n this._svgEmptySymbolId = svgEmptySymbolId;\r\n }\r\n\r\n private _svgHalfSymbolId = \"star-half\";\r\n\r\n get svgHalfSymbolId(): string {\r\n return this._svgHalfSymbolId;\r\n }\r\n\r\n set svgHalfSymbolId(svgHalfSymbolId: string) {\r\n this._svgHalfSymbolId = svgHalfSymbolId;\r\n }\r\n\r\n private _svgFilledSymbolId = \"star-filled\";\r\n\r\n get svgFilledSymbolId(): string {\r\n return this._svgFilledSymbolId;\r\n }\r\n\r\n set svgFilledSymbolId(svgFilledSymbolId: string) {\r\n this._svgFilledSymbolId = svgFilledSymbolId;\r\n }\r\n\r\n private _svgPathEmpty: string = this.svgPath + \"#\" + this.svgEmptySymbolId;\r\n\r\n get svgPathEmpty(): string {\r\n return this._svgPathEmpty;\r\n }\r\n\r\n set svgPathEmpty(svgPathEmpty: string) {\r\n this._svgPathEmpty = svgPathEmpty;\r\n }\r\n\r\n private _svgPathHalf: string = this.svgPath + \"#\" + this.svgHalfSymbolId;\r\n\r\n get svgPathHalf(): string {\r\n return this._svgPathHalf;\r\n }\r\n\r\n set svgPathHalf(svgPathHalf: string) {\r\n this._svgPathHalf = svgPathHalf;\r\n }\r\n\r\n private _svgPathFilled: string = this.svgPath + \"#\" + this.svgFilledSymbolId;\r\n\r\n get svgPathFilled(): string {\r\n return this._svgPathFilled;\r\n }\r\n\r\n set svgPathFilled(svgPathFilled: string) {\r\n this._svgPathFilled = svgPathFilled;\r\n }\r\n\r\n getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n // if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n // calculate size of smallest fraction\r\n const fractionSize = numOfStars / 3;\r\n\r\n // apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingDirection,\r\n starRatingLabelPosition,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarSpace,\r\n starRatingStarTypes\r\n} from '../interfaces/star-rating-config.interface';\r\nimport {StarRatingConfigService} from './star-rating-config.service';\r\nimport {StarRatingUtils} from './star-rating.utils';\r\n\r\nexport class StarRating {\r\n\r\n protected config: StarRatingConfig;\r\n\r\n //Inputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /**\r\n * id property to identify the DOM element\r\n */\r\n protected _id: string;\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || '';\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * focus\r\n */\r\n protected _focus: boolean;\r\n get focus(): boolean {\r\n return this._focus;\r\n }\r\n\r\n set focus(value: boolean) {\r\n this._focus = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelText\r\n */\r\n protected _labelText: string;\r\n get labelText(): string {\r\n return this._labelText;\r\n }\r\n\r\n set labelText(value: string) {\r\n this._labelText = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelPosition\r\n */\r\n protected _labelPosition: starRatingLabelPosition;\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(value: starRatingLabelPosition) {\r\n this._labelPosition = value || this.config.labelPosition;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelVisible\r\n */\r\n protected _labelVisible: boolean;\r\n get labelVisible(): boolean {\r\n return this._labelVisible;\r\n }\r\n\r\n set labelVisible(value: boolean) {\r\n this._labelVisible = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverEnabled\r\n */\r\n protected _hoverEnabled: boolean;\r\n get hoverEnabled(): boolean {\r\n return this._hoverEnabled;\r\n }\r\n\r\n set hoverEnabled(value: boolean) {\r\n this._hoverEnabled = (value !== undefined) ? !!value : false;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * staticColor\r\n */\r\n protected _staticColor: starRatingColor;\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value || this.config.staticColor || undefined;\r\n\r\n //update color.\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * direction\r\n */\r\n protected _direction: starRatingDirection;\r\n get direction(): starRatingDirection {\r\n return this._direction;\r\n }\r\n\r\n set direction(value: starRatingDirection) {\r\n this._direction = value || undefined;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n\r\n /**\r\n * numOfStars\r\n */\r\n protected _numOfStars: number;\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(value: number) {\r\n this._numOfStars = (value > 0) ? value : this.config.numOfStars;\r\n\r\n //update stars array\r\n this.stars = StarRatingUtils.getStarsArray(this.numOfStars);\r\n\r\n //update color\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverRating\r\n */\r\n protected _hoverRating: number;\r\n get hoverRating(): number {\r\n return this._hoverRating;\r\n }\r\n\r\n set hoverRating(value: number) {\r\n this._hoverRating = (value > 0) ? value : 0;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * speed\r\n */\r\n protected _speed: starRatingSpeed;\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(value: starRatingSpeed) {\r\n this._speed = value || this.config.speed;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * size\r\n */\r\n protected _size: starRatingSizes;\r\n get size(): starRatingSizes {\r\n return this._size || this.config.size;\r\n }\r\n\r\n set size(value: starRatingSizes) {\r\n this._size = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * starType\r\n */\r\n protected _starType: starRatingStarTypes;\r\n get starType(): starRatingStarTypes {\r\n return this._starType || this.config.starType;\r\n }\r\n\r\n set starType(value: starRatingStarTypes) {\r\n this._starType = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * space\r\n */\r\n protected _space: starRatingStarSpace;\r\n get space(): starRatingStarSpace {\r\n return this._space;\r\n }\r\n\r\n set space(value: starRatingStarSpace) {\r\n this._space = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * readOnly\r\n */\r\n protected _readOnly: boolean;\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n\r\n set readOnly(value: boolean) {\r\n this._readOnly = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * disabled\r\n */\r\n protected _disabled: boolean;\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n private _step: number;\r\n get step(): number {\r\n return this._step;\r\n }\r\n\r\n set step(value: number) {\r\n this._step = (value > 0 ? value : 1);\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * rating\r\n */\r\n protected _rating: number;\r\n get rating(): number {\r\n return this._rating;\r\n }\r\n\r\n /**\r\n * setRating\r\n * I use a setter function instead of a set method to enable overrides for this function.\r\n * @param value\r\n */\r\n setRating(value: number) {\r\n //validate and apply newRating\r\n let newRating: number = 0;\r\n if (value >= 0\r\n && value <= this.numOfStars) {\r\n newRating = value;\r\n }\r\n\r\n //limit max value to max number of stars\r\n if (value > this.numOfStars) {\r\n newRating = this.numOfStars;\r\n }\r\n this._rating = newRating;\r\n\r\n //update ratingAsInteger. rating parsed to int for the value-[n] modifier\r\n this.ratingAsInteger = parseInt(this._rating.toString());\r\n\r\n //update halfStarsVisible\r\n this.setHalfStarVisible();\r\n\r\n //update calculated Color\r\n this.setColor();\r\n\r\n }\r\n\r\n set rating(value: number) {\r\n this.setRating(value);\r\n }\r\n\r\n /**\r\n * showHalfStars\r\n */\r\n protected _showHalfStars: boolean;\r\n get showHalfStars(): boolean {\r\n return this._showHalfStars;\r\n }\r\n\r\n set showHalfStars(value: boolean) {\r\n this._showHalfStars = !!value;\r\n\r\n //update halfStarVisible\r\n this.setHalfStarVisible();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getColor\r\n */\r\n getColor: (rating: number, numOfStars: number, staticColor?: starRatingColor) => starRatingColor;\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getHalfStarVisible\r\n */\r\n getHalfStarVisible: (rating: number) => boolean;\r\n /////////////////////////////////////////////\r\n\r\n //CTRL ONLY\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n classEmpty: string;\r\n classHalf: string;\r\n classFilled: string;\r\n\r\n pathEmpty: string;\r\n pathHalf: string;\r\n pathFilled: string;\r\n\r\n color: starRatingColor;\r\n stars: Array;\r\n ratingAsInteger: number;\r\n halfStarVisible: boolean;\r\n\r\n constructor(config: StarRatingConfigService) {\r\n\r\n this.config = config;\r\n\r\n //set default ctrl props\r\n this.classEmpty = this.config.classEmpty;\r\n this.classHalf = this.config.classHalf;\r\n this.classFilled = this.config.classFilled;\r\n this.pathEmpty = this.config.svgPathEmpty;\r\n this.pathHalf = this.config.svgPathHalf;\r\n this.pathFilled = this.config.svgPathFilled;\r\n\r\n //set default Component Inputs\r\n if ('getColor' in this.config && typeof this.config.getColor === \"function\") {\r\n this.getColor = this.config.getColor;\r\n }\r\n\r\n if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === \"function\") {\r\n this.getHalfStarVisible = this.config.getHalfStarVisible;\r\n }\r\n\r\n this.numOfStars = this.config.numOfStars;\r\n this.rating = 0;\r\n this.step = 1;\r\n\r\n }\r\n\r\n svgVisible(): boolean {\r\n return this.starType === \"svg\";\r\n }\r\n\r\n interactionPossible(): boolean {\r\n return !this.readOnly && !this.disabled;\r\n }\r\n\r\n setColor(): void {\r\n //check if custom function is given\r\n if (typeof this.getColor === \"function\") {\r\n this.color = this.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n else {\r\n this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n }\r\n\r\n setHalfStarVisible(): void {\r\n //update halfStarVisible\r\n if (this.showHalfStars) {\r\n //check if custom function is given\r\n if (typeof this.getHalfStarVisible === \"function\") {\r\n this.halfStarVisible = this.getHalfStarVisible(this.rating);\r\n } else {\r\n this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating);\r\n }\r\n\r\n }\r\n else {\r\n this.halfStarVisible = false;\r\n }\r\n }\r\n\r\n getComponentClassNames(): string {\r\n let classNames: string[] = [];\r\n\r\n classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0');\r\n classNames.push(this.halfStarVisible ? 'half' : '');\r\n classNames.push(this.hoverEnabled ? 'hover' : '');\r\n\r\n let hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0');\r\n classNames.push(this.hoverEnabled ? hoverRating : '');\r\n\r\n classNames.push(this.space ? 'space-' + this.space : '');\r\n classNames.push(this.labelPosition ? 'label-' + this.labelPosition : '');\r\n classNames.push(this.color ? 'color-' + this.color : '');\r\n classNames.push(this.starType ? 'star-' + this.starType : '');\r\n classNames.push(this.speed);\r\n classNames.push(this.size);\r\n classNames.push(this.readOnly ? 'read-only' : '');\r\n classNames.push(this.disabled ? 'disabled' : '');\r\n classNames.push(this.direction ? 'direction-' + this.direction : '');\r\n\r\n return classNames.join(' ');\r\n }\r\n\r\n increment() {\r\n //increment to next higher step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step);\r\n }\r\n\r\n decrement() {\r\n //decrement to next lower step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating - (absDiff > 0 ? absDiff : this.step);\r\n }\r\n\r\n reset() {\r\n this.rating = 0;\r\n }\r\n\r\n}\r\n", + "import {starRatingColor} from '../interfaces/star-rating-config.interface';\r\nexport class StarRatingUtils {\r\n //Static methods\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /*\r\n * getStarsArray\r\n *\r\n * returns an array of increasing numbers starting at 1\r\n *\r\n * @param numOfStars\r\n * @returns {Array}\r\n */\r\n static getStarsArray(numOfStars: number): Array {\r\n let stars: Array = [];\r\n for (let i = 0; i < numOfStars; i++) {\r\n stars.push(i + 1);\r\n }\r\n return stars;\r\n }\r\n\r\n /*\r\n * getHalfStarVisible\r\n *\r\n * Returns true if there should be a half star visible, and false if not.\r\n *\r\n * @param rating\r\n * @returns {boolean}\r\n */\r\n static getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n /*\r\n * getColor\r\n *\r\n * The default function for color calculation\r\n * based on the current rating and the the number of stars possible.\r\n * If a staticColor is set the function will use it as return value.\r\n *\r\n * @param rating\r\n * @param numOfStars\r\n * @param staticColor\r\n * @returns {starRatingColor}\r\n */\r\n static getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n //if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n //calculate size of smallest fraction\r\n let fractionSize = numOfStars / 3;\r\n\r\n //apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n /*\r\n * isDigitKeyEventCode\r\n * detects digit key event sodes\r\n * @param eventCode\r\n * @returns {boolean}\r\n */\r\n static isDigitKeyEventCode(eventCode: string): boolean {\r\n return eventCode.indexOf('Digit') === 0;\r\n };\r\n\r\n}\r\n", + "export type starRatingSizes = 'small' | 'medium' | 'large';\r\nexport type starRatingColor = 'default' | 'negative' | 'ok' | 'positive';\r\nexport type starRatingSpeed = 'immediately' | 'noticeable' | 'slow';\r\nexport type starRatingLabelPosition = 'left' | 'right' | 'top' | 'bottom';\r\nexport type starRatingStarTypes = 'svg' | 'icon' | 'image';\r\nexport type starRatingStarSpace= 'no' | 'between' | 'around';\r\nexport type starRatingDirection= 'rtl' | 'ltr';\r\n\r\nexport class StarRatingConfig {\r\n // binding defaults\r\n numOfStars?: number;\r\n size?: starRatingSizes;\r\n speed?: starRatingSpeed;\r\n labelPosition?: starRatingLabelPosition;\r\n starType?: starRatingStarTypes;\r\n staticColor: starRatingColor;\r\n getColor?: (rating: number, numOfStars: number, staticColor?: starRatingColor)=> starRatingColor;\r\n getHalfStarVisible?:(rating: number) => boolean\r\n // statics\r\n classEmpty?: string;\r\n classHalf?: string;\r\n classFilled?: string;\r\n assetsPath?: string;\r\n svgPath?: string;\r\n svgEmptySymbolId?: string;\r\n svgHalfSymbolId?: string;\r\n svgFilledSymbolId?: string;\r\n svgPathEmpty?: string;\r\n svgPathHalf?: string;\r\n svgPathFilled?: string;\r\n}\r\n", + "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n" + ], + "names": [ + "CommonModule", + "NgModule", + "Component", + "EventEmitter", + "tslib_1.__extends", + "forwardRef", + "NG_VALUE_ACCESSOR" + ], + "mappings": "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" +} diff --git a/@packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js new file mode 100644 index 0000000..6bf051f --- /dev/null +++ b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("angular-star-rating",["exports","@angular/core","@angular/forms","@angular/common"],e):e(t["angular-star-rating"]={},t.ng.core,t.ng.forms,t.ng.common)}(this,function(t,i,e,n){"use strict";var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};var s=function(){},o=function(){function t(){}return t.getStarsArray=function(t){for(var e=[],i=0;ithis.numOfStars&&(e=this.numOfStars),this._rating=e,this.ratingAsInteger=parseInt(this._rating.toString()),this.setHalfStarVisible(),this.setColor()},Object.defineProperty(t.prototype,"showHalfStars",{get:function(){return this._showHalfStars},set:function(t){this._showHalfStars=!!t,this.setHalfStarVisible()},enumerable:!0,configurable:!0}),t.prototype.svgVisible=function(){return"svg"===this.starType},t.prototype.interactionPossible=function(){return!this.readOnly&&!this.disabled},t.prototype.setColor=function(){"function"==typeof this.getColor?this.color=this.getColor(this.rating,this.numOfStars,this.staticColor):this.color=o.getColor(this.rating,this.numOfStars,this.staticColor)},t.prototype.setHalfStarVisible=function(){this.showHalfStars?"function"==typeof this.getHalfStarVisible?this.halfStarVisible=this.getHalfStarVisible(this.rating):this.halfStarVisible=o.getHalfStarVisible(this.rating):this.halfStarVisible=!1},t.prototype.getComponentClassNames=function(){var t=[];t.push(this.rating?"value-"+this.ratingAsInteger:"value-0"),t.push(this.halfStarVisible?"half":""),t.push(this.hoverEnabled?"hover":"");var e=this.hoverRating?"hover-"+this.hoverRating:"hover-0";return t.push(this.hoverEnabled?e:""),t.push(this.space?"space-"+this.space:""),t.push(this.labelPosition?"label-"+this.labelPosition:""),t.push(this.color?"color-"+this.color:""),t.push(this.starType?"star-"+this.starType:""),t.push(this.speed),t.push(this.size),t.push(this.readOnly?"read-only":""),t.push(this.disabled?"disabled":""),t.push(this.direction?"direction-"+this.direction:""),t.join(" ")},t.prototype.increment=function(){var t=Math.abs(this.rating%this.step);this.rating=this.rating+(0\n
{{labelText}}
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n'}]}],c.ctorParameters=function(){return[{type:l}]};var f=[c],h=[f],g=function(){function t(){}return t.forRoot=function(){return{ngModule:t,providers:[l]}},t.forChild=function(){return{ngModule:t,providers:[]}},t}();g.decorators=[{type:i.NgModule,args:[{imports:[n.CommonModule],declarations:[f],exports:[h]}]}],g.ctorParameters=function(){return[]},t.StarRatingConfig=s,t.StarRatingUtils=o,t.StarRating=a,t.StarRatingConfigService=l,t.StarRatingComponent=c,t.StarRatingModule=g,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=angular-star-rating.umd.min.js.map diff --git a/@packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js.map b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js.map new file mode 100644 index 0000000..ffd65c1 --- /dev/null +++ b/@packaged/angular-star-rating/bundles/angular-star-rating.umd.min.js.map @@ -0,0 +1,213 @@ +{ + "version": 3, + "file": "angular-star-rating.umd.min.js", + "sources": [ + "ng://angular-star-rating/node_modules/tslib/tslib.es6.js", + "ng://angular-star-rating/out/src/interfaces/star-rating-config.interface.ts", + "ng://angular-star-rating/out/src/services/star-rating.utils.ts", + "ng://angular-star-rating/out/src/services/star-rating.ts", + "ng://angular-star-rating/out/src/services/star-rating-config.service.ts", + "ng://angular-star-rating/out/src/components/star-rating.component.ts", + "ng://angular-star-rating/out/src/angular-star-rating.module.ts" + ], + "sourcesContent": [ + "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n", + "export type starRatingSizes = 'small' | 'medium' | 'large';\r\nexport type starRatingColor = 'default' | 'negative' | 'ok' | 'positive';\r\nexport type starRatingSpeed = 'immediately' | 'noticeable' | 'slow';\r\nexport type starRatingLabelPosition = 'left' | 'right' | 'top' | 'bottom';\r\nexport type starRatingStarTypes = 'svg' | 'icon' | 'image';\r\nexport type starRatingStarSpace= 'no' | 'between' | 'around';\r\nexport type starRatingDirection= 'rtl' | 'ltr';\r\n\r\nexport class StarRatingConfig {\r\n // binding defaults\r\n numOfStars?: number;\r\n size?: starRatingSizes;\r\n speed?: starRatingSpeed;\r\n labelPosition?: starRatingLabelPosition;\r\n starType?: starRatingStarTypes;\r\n staticColor: starRatingColor;\r\n getColor?: (rating: number, numOfStars: number, staticColor?: starRatingColor)=> starRatingColor;\r\n getHalfStarVisible?:(rating: number) => boolean\r\n // statics\r\n classEmpty?: string;\r\n classHalf?: string;\r\n classFilled?: string;\r\n assetsPath?: string;\r\n svgPath?: string;\r\n svgEmptySymbolId?: string;\r\n svgHalfSymbolId?: string;\r\n svgFilledSymbolId?: string;\r\n svgPathEmpty?: string;\r\n svgPathHalf?: string;\r\n svgPathFilled?: string;\r\n}\r\n", + "import {starRatingColor} from '../interfaces/star-rating-config.interface';\r\nexport class StarRatingUtils {\r\n //Static methods\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /*\r\n * getStarsArray\r\n *\r\n * returns an array of increasing numbers starting at 1\r\n *\r\n * @param numOfStars\r\n * @returns {Array}\r\n */\r\n static getStarsArray(numOfStars: number): Array {\r\n let stars: Array = [];\r\n for (let i = 0; i < numOfStars; i++) {\r\n stars.push(i + 1);\r\n }\r\n return stars;\r\n }\r\n\r\n /*\r\n * getHalfStarVisible\r\n *\r\n * Returns true if there should be a half star visible, and false if not.\r\n *\r\n * @param rating\r\n * @returns {boolean}\r\n */\r\n static getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n /*\r\n * getColor\r\n *\r\n * The default function for color calculation\r\n * based on the current rating and the the number of stars possible.\r\n * If a staticColor is set the function will use it as return value.\r\n *\r\n * @param rating\r\n * @param numOfStars\r\n * @param staticColor\r\n * @returns {starRatingColor}\r\n */\r\n static getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n //if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n //calculate size of smallest fraction\r\n let fractionSize = numOfStars / 3;\r\n\r\n //apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n /*\r\n * isDigitKeyEventCode\r\n * detects digit key event sodes\r\n * @param eventCode\r\n * @returns {boolean}\r\n */\r\n static isDigitKeyEventCode(eventCode: string): boolean {\r\n return eventCode.indexOf('Digit') === 0;\r\n };\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingDirection,\r\n starRatingLabelPosition,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarSpace,\r\n starRatingStarTypes\r\n} from '../interfaces/star-rating-config.interface';\r\nimport {StarRatingConfigService} from './star-rating-config.service';\r\nimport {StarRatingUtils} from './star-rating.utils';\r\n\r\nexport class StarRating {\r\n\r\n protected config: StarRatingConfig;\r\n\r\n //Inputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /**\r\n * id property to identify the DOM element\r\n */\r\n protected _id: string;\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || '';\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * focus\r\n */\r\n protected _focus: boolean;\r\n get focus(): boolean {\r\n return this._focus;\r\n }\r\n\r\n set focus(value: boolean) {\r\n this._focus = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelText\r\n */\r\n protected _labelText: string;\r\n get labelText(): string {\r\n return this._labelText;\r\n }\r\n\r\n set labelText(value: string) {\r\n this._labelText = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelPosition\r\n */\r\n protected _labelPosition: starRatingLabelPosition;\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(value: starRatingLabelPosition) {\r\n this._labelPosition = value || this.config.labelPosition;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelVisible\r\n */\r\n protected _labelVisible: boolean;\r\n get labelVisible(): boolean {\r\n return this._labelVisible;\r\n }\r\n\r\n set labelVisible(value: boolean) {\r\n this._labelVisible = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverEnabled\r\n */\r\n protected _hoverEnabled: boolean;\r\n get hoverEnabled(): boolean {\r\n return this._hoverEnabled;\r\n }\r\n\r\n set hoverEnabled(value: boolean) {\r\n this._hoverEnabled = (value !== undefined) ? !!value : false;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * staticColor\r\n */\r\n protected _staticColor: starRatingColor;\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value || this.config.staticColor || undefined;\r\n\r\n //update color.\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * direction\r\n */\r\n protected _direction: starRatingDirection;\r\n get direction(): starRatingDirection {\r\n return this._direction;\r\n }\r\n\r\n set direction(value: starRatingDirection) {\r\n this._direction = value || undefined;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n\r\n /**\r\n * numOfStars\r\n */\r\n protected _numOfStars: number;\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(value: number) {\r\n this._numOfStars = (value > 0) ? value : this.config.numOfStars;\r\n\r\n //update stars array\r\n this.stars = StarRatingUtils.getStarsArray(this.numOfStars);\r\n\r\n //update color\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverRating\r\n */\r\n protected _hoverRating: number;\r\n get hoverRating(): number {\r\n return this._hoverRating;\r\n }\r\n\r\n set hoverRating(value: number) {\r\n this._hoverRating = (value > 0) ? value : 0;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * speed\r\n */\r\n protected _speed: starRatingSpeed;\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(value: starRatingSpeed) {\r\n this._speed = value || this.config.speed;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * size\r\n */\r\n protected _size: starRatingSizes;\r\n get size(): starRatingSizes {\r\n return this._size || this.config.size;\r\n }\r\n\r\n set size(value: starRatingSizes) {\r\n this._size = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * starType\r\n */\r\n protected _starType: starRatingStarTypes;\r\n get starType(): starRatingStarTypes {\r\n return this._starType || this.config.starType;\r\n }\r\n\r\n set starType(value: starRatingStarTypes) {\r\n this._starType = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * space\r\n */\r\n protected _space: starRatingStarSpace;\r\n get space(): starRatingStarSpace {\r\n return this._space;\r\n }\r\n\r\n set space(value: starRatingStarSpace) {\r\n this._space = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * readOnly\r\n */\r\n protected _readOnly: boolean;\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n\r\n set readOnly(value: boolean) {\r\n this._readOnly = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * disabled\r\n */\r\n protected _disabled: boolean;\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n private _step: number;\r\n get step(): number {\r\n return this._step;\r\n }\r\n\r\n set step(value: number) {\r\n this._step = (value > 0 ? value : 1);\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * rating\r\n */\r\n protected _rating: number;\r\n get rating(): number {\r\n return this._rating;\r\n }\r\n\r\n /**\r\n * setRating\r\n * I use a setter function instead of a set method to enable overrides for this function.\r\n * @param value\r\n */\r\n setRating(value: number) {\r\n //validate and apply newRating\r\n let newRating: number = 0;\r\n if (value >= 0\r\n && value <= this.numOfStars) {\r\n newRating = value;\r\n }\r\n\r\n //limit max value to max number of stars\r\n if (value > this.numOfStars) {\r\n newRating = this.numOfStars;\r\n }\r\n this._rating = newRating;\r\n\r\n //update ratingAsInteger. rating parsed to int for the value-[n] modifier\r\n this.ratingAsInteger = parseInt(this._rating.toString());\r\n\r\n //update halfStarsVisible\r\n this.setHalfStarVisible();\r\n\r\n //update calculated Color\r\n this.setColor();\r\n\r\n }\r\n\r\n set rating(value: number) {\r\n this.setRating(value);\r\n }\r\n\r\n /**\r\n * showHalfStars\r\n */\r\n protected _showHalfStars: boolean;\r\n get showHalfStars(): boolean {\r\n return this._showHalfStars;\r\n }\r\n\r\n set showHalfStars(value: boolean) {\r\n this._showHalfStars = !!value;\r\n\r\n //update halfStarVisible\r\n this.setHalfStarVisible();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getColor\r\n */\r\n getColor: (rating: number, numOfStars: number, staticColor?: starRatingColor) => starRatingColor;\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getHalfStarVisible\r\n */\r\n getHalfStarVisible: (rating: number) => boolean;\r\n /////////////////////////////////////////////\r\n\r\n //CTRL ONLY\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n classEmpty: string;\r\n classHalf: string;\r\n classFilled: string;\r\n\r\n pathEmpty: string;\r\n pathHalf: string;\r\n pathFilled: string;\r\n\r\n color: starRatingColor;\r\n stars: Array;\r\n ratingAsInteger: number;\r\n halfStarVisible: boolean;\r\n\r\n constructor(config: StarRatingConfigService) {\r\n\r\n this.config = config;\r\n\r\n //set default ctrl props\r\n this.classEmpty = this.config.classEmpty;\r\n this.classHalf = this.config.classHalf;\r\n this.classFilled = this.config.classFilled;\r\n this.pathEmpty = this.config.svgPathEmpty;\r\n this.pathHalf = this.config.svgPathHalf;\r\n this.pathFilled = this.config.svgPathFilled;\r\n\r\n //set default Component Inputs\r\n if ('getColor' in this.config && typeof this.config.getColor === \"function\") {\r\n this.getColor = this.config.getColor;\r\n }\r\n\r\n if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === \"function\") {\r\n this.getHalfStarVisible = this.config.getHalfStarVisible;\r\n }\r\n\r\n this.numOfStars = this.config.numOfStars;\r\n this.rating = 0;\r\n this.step = 1;\r\n\r\n }\r\n\r\n svgVisible(): boolean {\r\n return this.starType === \"svg\";\r\n }\r\n\r\n interactionPossible(): boolean {\r\n return !this.readOnly && !this.disabled;\r\n }\r\n\r\n setColor(): void {\r\n //check if custom function is given\r\n if (typeof this.getColor === \"function\") {\r\n this.color = this.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n else {\r\n this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n }\r\n\r\n setHalfStarVisible(): void {\r\n //update halfStarVisible\r\n if (this.showHalfStars) {\r\n //check if custom function is given\r\n if (typeof this.getHalfStarVisible === \"function\") {\r\n this.halfStarVisible = this.getHalfStarVisible(this.rating);\r\n } else {\r\n this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating);\r\n }\r\n\r\n }\r\n else {\r\n this.halfStarVisible = false;\r\n }\r\n }\r\n\r\n getComponentClassNames(): string {\r\n let classNames: string[] = [];\r\n\r\n classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0');\r\n classNames.push(this.halfStarVisible ? 'half' : '');\r\n classNames.push(this.hoverEnabled ? 'hover' : '');\r\n\r\n let hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0');\r\n classNames.push(this.hoverEnabled ? hoverRating : '');\r\n\r\n classNames.push(this.space ? 'space-' + this.space : '');\r\n classNames.push(this.labelPosition ? 'label-' + this.labelPosition : '');\r\n classNames.push(this.color ? 'color-' + this.color : '');\r\n classNames.push(this.starType ? 'star-' + this.starType : '');\r\n classNames.push(this.speed);\r\n classNames.push(this.size);\r\n classNames.push(this.readOnly ? 'read-only' : '');\r\n classNames.push(this.disabled ? 'disabled' : '');\r\n classNames.push(this.direction ? 'direction-' + this.direction : '');\r\n\r\n return classNames.join(' ');\r\n }\r\n\r\n increment() {\r\n //increment to next higher step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step);\r\n }\r\n\r\n decrement() {\r\n //decrement to next lower step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating - (absDiff > 0 ? absDiff : this.step);\r\n }\r\n\r\n reset() {\r\n this.rating = 0;\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarTypes,\r\n starRatingLabelPosition\r\n} from '../interfaces/star-rating-config.interface';\r\n\r\n/**\r\n * Configuration service for the StarRating component.\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the star ratings used in the application.\r\n */\r\nexport class StarRatingConfigService implements StarRatingConfig {\r\n\r\n _classEmpty = \"default-star-empty-icon\";\r\n\r\n get classEmpty() {\r\n return this._classEmpty;\r\n }\r\n\r\n set classEmpty(classEmpty: string) {\r\n this._classEmpty = classEmpty;\r\n }\r\n\r\n private _classHalf = \"default-star-half-icon\";\r\n\r\n get classHalf(): string {\r\n return this._classHalf;\r\n }\r\n\r\n set classHalf(classHalf: string) {\r\n this._classHalf = classHalf;\r\n }\r\n\r\n private _classFilled = \"default-star-filled-icon\";\r\n\r\n get classFilled(): string {\r\n return this._classFilled;\r\n }\r\n\r\n set classFilled(classFilled: string) {\r\n this._classFilled = classFilled;\r\n }\r\n\r\n private _numOfStars = 5;\r\n\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(numOfStars: number) {\r\n this._numOfStars = numOfStars;\r\n }\r\n\r\n private _size: starRatingSizes = \"medium\";\r\n\r\n get size(): starRatingSizes {\r\n return this._size;\r\n }\r\n\r\n set size(size: starRatingSizes) {\r\n this._size = size;\r\n }\r\n\r\n private _staticColor: starRatingColor;\r\n\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value;\r\n }\r\n\r\n private _labelPosition: starRatingLabelPosition = \"left\";\r\n\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(labelPosition: starRatingLabelPosition) {\r\n this._labelPosition = labelPosition;\r\n }\r\n\r\n private _speed: starRatingSpeed = \"noticeable\";\r\n\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(speed: starRatingSpeed) {\r\n this._speed = speed;\r\n }\r\n\r\n private _starType: starRatingStarTypes = \"svg\";\r\n\r\n get starType(): starRatingStarTypes {\r\n return this._starType;\r\n }\r\n\r\n set starType(starType: starRatingStarTypes) {\r\n this._starType = starType;\r\n }\r\n\r\n private _assetsPath = \"assets/images/\";\r\n\r\n get assetsPath(): string {\r\n return this._assetsPath;\r\n }\r\n\r\n set assetsPath(assetsPath: string) {\r\n this._assetsPath = assetsPath;\r\n }\r\n\r\n private _svgPath = this.assetsPath + \"star-rating.icons.svg\";\r\n\r\n get svgPath(): string {\r\n return this._svgPath;\r\n }\r\n\r\n set svgPath(svgPath: string) {\r\n this._svgPath = svgPath;\r\n }\r\n\r\n private _svgEmptySymbolId = \"star-empty\";\r\n\r\n get svgEmptySymbolId(): string {\r\n return this._svgEmptySymbolId;\r\n }\r\n\r\n set svgEmptySymbolId(svgEmptySymbolId: string) {\r\n this._svgEmptySymbolId = svgEmptySymbolId;\r\n }\r\n\r\n private _svgHalfSymbolId = \"star-half\";\r\n\r\n get svgHalfSymbolId(): string {\r\n return this._svgHalfSymbolId;\r\n }\r\n\r\n set svgHalfSymbolId(svgHalfSymbolId: string) {\r\n this._svgHalfSymbolId = svgHalfSymbolId;\r\n }\r\n\r\n private _svgFilledSymbolId = \"star-filled\";\r\n\r\n get svgFilledSymbolId(): string {\r\n return this._svgFilledSymbolId;\r\n }\r\n\r\n set svgFilledSymbolId(svgFilledSymbolId: string) {\r\n this._svgFilledSymbolId = svgFilledSymbolId;\r\n }\r\n\r\n private _svgPathEmpty: string = this.svgPath + \"#\" + this.svgEmptySymbolId;\r\n\r\n get svgPathEmpty(): string {\r\n return this._svgPathEmpty;\r\n }\r\n\r\n set svgPathEmpty(svgPathEmpty: string) {\r\n this._svgPathEmpty = svgPathEmpty;\r\n }\r\n\r\n private _svgPathHalf: string = this.svgPath + \"#\" + this.svgHalfSymbolId;\r\n\r\n get svgPathHalf(): string {\r\n return this._svgPathHalf;\r\n }\r\n\r\n set svgPathHalf(svgPathHalf: string) {\r\n this._svgPathHalf = svgPathHalf;\r\n }\r\n\r\n private _svgPathFilled: string = this.svgPath + \"#\" + this.svgFilledSymbolId;\r\n\r\n get svgPathFilled(): string {\r\n return this._svgPathFilled;\r\n }\r\n\r\n set svgPathFilled(svgPathFilled: string) {\r\n this._svgPathFilled = svgPathFilled;\r\n }\r\n\r\n getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n // if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n // calculate size of smallest fraction\r\n const fractionSize = numOfStars / 3;\r\n\r\n // apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n}\r\n", + "import {Component, EventEmitter, forwardRef, Input} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {ClickEvent} from '../interfaces/click-event.interface';\r\nimport {HoverRatingChangeEvent} from '../interfaces/hover-rating-change-event.interface';\r\nimport {RatingChangeEvent} from '../interfaces/rating-change-event.interface';\r\nimport {StarRating} from '../services/star-rating';\r\nimport {StarRatingConfigService} from '../services/star-rating-config.service';\r\nimport {StarRatingUtils} from '../services/star-rating.utils';\r\n\r\nconst STAR_RATING_CONTROL_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => StarRatingComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'star-rating-comp',\r\n providers: [STAR_RATING_CONTROL_ACCESSOR],\r\n inputs: [\r\n 'getHalfStarVisible'\r\n , 'getColor'\r\n , 'showHalfStars'\r\n , 'hoverEnabled'\r\n , 'rating'\r\n , 'step'\r\n , 'disabled'\r\n , 'readOnly'\r\n , 'space'\r\n , 'starType'\r\n , 'size'\r\n , 'speed'\r\n , 'numOfStars'\r\n , 'direction'\r\n , 'staticColor'\r\n //, 'labelVisible'\r\n , 'labelPosition'\r\n , 'labelText'\r\n , 'id'\r\n ],\r\n outputs: [\r\n 'clickEmitter'\r\n , 'ratingChangeEmitter'\r\n , 'hoverRatingChangeEmitter'\r\n ],\r\n styles: [],\r\n template: `
\r\n
{{labelText}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
`\r\n})\r\nexport class StarRatingComponent extends StarRating implements ControlValueAccessor {\r\n\r\n //Outputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n clickEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnClick($event: ClickEvent) {\r\n if (this.clickEmitter) {\r\n this.clickEmitter.emit($event);\r\n }\r\n }\r\n\r\n ratingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnRatingChange($event: RatingChangeEvent) {\r\n if (this.ratingChangeEmitter) {\r\n this.ratingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n hoverRatingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnHover($event: HoverRatingChangeEvent) {\r\n if (this.hoverRatingChangeEmitter) {\r\n this.hoverRatingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n onTouch: Function;\r\n onModelChange: Function;\r\n private onModelChangeRegistered: boolean = false;\r\n private onTouchRegistered: boolean = false;\r\n\r\n saveOnTouch() {\r\n if (this.onTouchRegistered) {\r\n this.onTouch();\r\n }\r\n }\r\n\r\n saveOnModelChange(value: number) {\r\n if (this.onModelChangeRegistered) {\r\n this.onModelChange(value);\r\n }\r\n }\r\n\r\n /**ACCESSIBILITY **/\r\n\r\n //Keyboard events\r\n onKeyDown(event: KeyboardEvent) {\r\n\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n const handlers: any = {\r\n //Decrement\r\n Minus: () => this.decrement(),\r\n ArrowDown: () => this.decrement(),\r\n ArrowLeft: () => this.decrement(),\r\n\r\n //Increment\r\n Plus: () => this.increment(),\r\n ArrowRight: () => this.increment(),\r\n ArrowUp: () => this.increment(),\r\n\r\n //Reset\r\n Backspace: () => this.reset(),\r\n Delete: () => this.reset(),\r\n Digit0: () => this.reset()\r\n };\r\n\r\n const handleDigits = (eventCode: string): void => {\r\n let dStr = \"Digit\";\r\n let digit: number = parseInt(eventCode.substr(dStr.length, eventCode.length - 1));\r\n this.rating = digit;\r\n };\r\n\r\n if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n if (StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n handleDigits(event['code']);\r\n } else {\r\n handlers[event['code']]();\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n this.saveOnTouch();\r\n }\r\n\r\n //Focus events\r\n onBlur(event: FocusEvent) {\r\n this.focus = false;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n onFocus(event: FocusEvent) {\r\n this.focus = true;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n //Hover events\r\n onStarHover(rating?: number): void {\r\n\r\n if (!this.interactionPossible() || !this.hoverEnabled) {\r\n return;\r\n }\r\n\r\n this.hoverRating = rating ? parseInt(rating.toString()) : 0;\r\n\r\n //fire onHoverRatingChange event\r\n let $event: HoverRatingChangeEvent = {hoverRating: this.hoverRating};\r\n this.saveOnHover($event);\r\n\r\n\r\n }\r\n\r\n /**Form Control - ControlValueAccessor implementation**/\r\n\r\n writeValue(obj: any): void {\r\n this.rating = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn;\r\n this.onModelChangeRegistered = true;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n this.onTouchRegistered = true;\r\n }\r\n\r\n constructor(config: StarRatingConfigService) {\r\n super(config);\r\n }\r\n\r\n //Overrides\r\n setRating(value: number): void {\r\n let initValue = this.rating;\r\n super.setRating(value);\r\n\r\n //if value changed trigger valueAccessor events and outputs\r\n if (initValue !== this.rating) {\r\n let $event: RatingChangeEvent = {rating: this.rating};\r\n this.saveOnRatingChange($event);\r\n\r\n this.saveOnModelChange(this.rating);\r\n }\r\n\r\n };\r\n\r\n /**\r\n * onStarClicked\r\n *\r\n * Is fired when a star is clicked. And updated the rating value.\r\n * This function returns if the disabled or readOnly\r\n * property is set. If provided it emits the onClick event\r\n * handler with the actual rating value.\r\n *\r\n * @param rating\r\n */\r\n onStarClicked(rating: number): void {\r\n\r\n //fire onClick event\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n this.rating = rating;\r\n\r\n let onClickEventObject: ClickEvent = {\r\n rating: this.rating\r\n };\r\n this.saveOnClick(onClickEventObject);\r\n\r\n }\r\n\r\n}\r\n", + "import {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {StarRatingComponent} from './components/star-rating.component';\nimport {StarRatingConfigService} from './services/star-rating-config.service';\n\nconst DECLARATIONS = [StarRatingComponent];\nconst EXPORTS = [DECLARATIONS];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [DECLARATIONS],\n exports: [EXPORTS]\n})\nexport class StarRatingModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: [\n StarRatingConfigService\n ]\n }\n }\n\n static forChild(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: []\n }\n }\n}\n" + ], + "names": [ + "extendStatics", + "Object", + "setPrototypeOf", + "__proto__", + "Array", + "d", + "b", + "p", + "hasOwnProperty", + "StarRatingConfig", + "StarRatingUtils", + "getStarsArray", + "numOfStars", + "stars", + "i", + "push", + "getHalfStarVisible", + "rating", + "Math", + "abs", + "getColor", + "staticColor", + "fractionSize", + "color", + "isDigitKeyEventCode", + "eventCode", + "indexOf", + "StarRating", + "config", + "this", + "classEmpty", + "classHalf", + "classFilled", + "pathEmpty", + "svgPathEmpty", + "pathHalf", + "svgPathHalf", + "pathFilled", + "svgPathFilled", + "step", + "defineProperty", + "prototype", + "get", + "_id", + "set", + "value", + "_focus", + "_labelText", + "_labelPosition", + "labelPosition", + "_labelVisible", + "_hoverEnabled", + "undefined", + "_staticColor", + "setColor", + "_direction", + "_numOfStars", + "_hoverRating", + "_speed", + "speed", + "_size", + "size", + "_starType", + "starType", + "_space", + "_readOnly", + "_disabled", + "_step", + "_rating", + "setRating", + "newRating", + "ratingAsInteger", + "parseInt", + "toString", + "setHalfStarVisible", + "_showHalfStars", + "svgVisible", + "interactionPossible", + "readOnly", + "disabled", + "showHalfStars", + "halfStarVisible", + "getComponentClassNames", + "classNames", + "hoverEnabled", + "hoverRating", + "space", + "direction", + "join", + "increment", + "absDiff", + "decrement", + "reset", + "StarRatingConfigService", + "_classEmpty", + "_classHalf", + "_classFilled", + "_assetsPath", + "_svgPath", + "assetsPath", + "_svgEmptySymbolId", + "_svgHalfSymbolId", + "_svgFilledSymbolId", + "_svgPathEmpty", + "svgPath", + "svgEmptySymbolId", + "_svgPathHalf", + "svgHalfSymbolId", + "_svgPathFilled", + "svgFilledSymbolId", + "STAR_RATING_CONTROL_ACCESSOR", + "provide", + "NG_VALUE_ACCESSOR", + "useExisting", + "forwardRef", + "StarRatingComponent", + "multi", + "_super", + "_this", + "call", + "clickEmitter", + "EventEmitter", + "ratingChangeEmitter", + "hoverRatingChangeEmitter", + "onModelChangeRegistered", + "onTouchRegistered", + "__", + "constructor", + "create", + "tslib_1.__extends", + "saveOnClick", + "$event", + "emit", + "saveOnRatingChange", + "saveOnHover", + "saveOnTouch", + "onTouch", + "saveOnModelChange", + "onModelChange", + "onKeyDown", + "event", + "digit", + "handlers", + "Minus", + "ArrowDown", + "ArrowLeft", + "Plus", + "ArrowRight", + "ArrowUp", + "Backspace", + "Delete", + "Digit0", + "substr", + "length", + "preventDefault", + "stopPropagation", + "onBlur", + "focus", + "onFocus", + "onStarHover", + "writeValue", + "obj", + "registerOnChange", + "fn", + "registerOnTouched", + "initValue", + "onStarClicked", + "onClickEventObject", + "type", + "Component", + "args", + "selector", + "providers", + "inputs", + "outputs", + "styles", + "template", + "DECLARATIONS", + "EXPORTS", + "StarRatingModule", + "forRoot", + "ngModule", + "forChild", + "NgModule", + "imports", + "CommonModule", + "declarations", + "exports" + ], + "mappings": "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" +} diff --git a/@packaged/angular-star-rating/esm2015/angular-star-rating.js b/@packaged/angular-star-rating/esm2015/angular-star-rating.js new file mode 100644 index 0000000..08440dc --- /dev/null +++ b/@packaged/angular-star-rating/esm2015/angular-star-rating.js @@ -0,0 +1,1072 @@ +import { Component, EventEmitter, forwardRef, NgModule } from '@angular/core'; +import { NG_VALUE_ACCESSOR } from '@angular/forms'; +import { CommonModule } from '@angular/common'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +class StarRatingConfig { +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +class StarRatingUtils { + /** + * @param {?} numOfStars + * @return {?} + */ + static getStarsArray(numOfStars) { + let /** @type {?} */ stars = []; + for (let /** @type {?} */ i = 0; i < numOfStars; i++) { + stars.push(i + 1); + } + return stars; + } + /** + * @param {?} rating + * @return {?} + */ + static getHalfStarVisible(rating) { + return Math.abs(rating % 1) > 0; + } + /** + * @param {?} rating + * @param {?} numOfStars + * @param {?=} staticColor + * @return {?} + */ + static getColor(rating, numOfStars, staticColor) { + rating = rating || 0; + //if a fix color is set use this one + if (staticColor) { + return staticColor; + } + //calculate size of smallest fraction + let /** @type {?} */ fractionSize = numOfStars / 3; + //apply color by fraction + let /** @type {?} */ color = 'default'; + if (rating > 0) { + color = 'negative'; + } + if (rating > fractionSize) { + color = 'ok'; + } + if (rating > fractionSize * 2) { + color = 'positive'; + } + return color; + } + /** + * @param {?} eventCode + * @return {?} + */ + static isDigitKeyEventCode(eventCode) { + return eventCode.indexOf('Digit') === 0; + } + ; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +class StarRating { + /** + * @return {?} + */ + get id() { + return this._id; + } + /** + * @param {?} value + * @return {?} + */ + set id(value) { + this._id = value || ''; + } + /** + * @return {?} + */ + get focus() { + return this._focus; + } + /** + * @param {?} value + * @return {?} + */ + set focus(value) { + this._focus = !!value; + } + /** + * @return {?} + */ + get labelText() { + return this._labelText; + } + /** + * @param {?} value + * @return {?} + */ + set labelText(value) { + this._labelText = value; + } + /** + * @return {?} + */ + get labelPosition() { + return this._labelPosition; + } + /** + * @param {?} value + * @return {?} + */ + set labelPosition(value) { + this._labelPosition = value || this.config.labelPosition; + } + /** + * @return {?} + */ + get labelVisible() { + return this._labelVisible; + } + /** + * @param {?} value + * @return {?} + */ + set labelVisible(value) { + this._labelVisible = !!value; + } + /** + * @return {?} + */ + get hoverEnabled() { + return this._hoverEnabled; + } + /** + * @param {?} value + * @return {?} + */ + set hoverEnabled(value) { + this._hoverEnabled = (value !== undefined) ? !!value : false; + } + /** + * @return {?} + */ + get staticColor() { + return this._staticColor; + } + /** + * @param {?} value + * @return {?} + */ + set staticColor(value) { + this._staticColor = value || this.config.staticColor || undefined; + //update color. + this.setColor(); + } + /** + * @return {?} + */ + get direction() { + return this._direction; + } + /** + * @param {?} value + * @return {?} + */ + set direction(value) { + this._direction = value || undefined; + } + /** + * @return {?} + */ + get numOfStars() { + return this._numOfStars; + } + /** + * @param {?} value + * @return {?} + */ + set numOfStars(value) { + this._numOfStars = (value > 0) ? value : this.config.numOfStars; + //update stars array + this.stars = StarRatingUtils.getStarsArray(this.numOfStars); + //update color + this.setColor(); + } + /** + * @return {?} + */ + get hoverRating() { + return this._hoverRating; + } + /** + * @param {?} value + * @return {?} + */ + set hoverRating(value) { + this._hoverRating = (value > 0) ? value : 0; + } + /** + * @return {?} + */ + get speed() { + return this._speed; + } + /** + * @param {?} value + * @return {?} + */ + set speed(value) { + this._speed = value || this.config.speed; + } + /** + * @return {?} + */ + get size() { + return this._size || this.config.size; + } + /** + * @param {?} value + * @return {?} + */ + set size(value) { + this._size = value; + } + /** + * @return {?} + */ + get starType() { + return this._starType || this.config.starType; + } + /** + * @param {?} value + * @return {?} + */ + set starType(value) { + this._starType = value; + } + /** + * @return {?} + */ + get space() { + return this._space; + } + /** + * @param {?} value + * @return {?} + */ + set space(value) { + this._space = value; + } + /** + * @return {?} + */ + get readOnly() { + return this._readOnly; + } + /** + * @param {?} value + * @return {?} + */ + set readOnly(value) { + this._readOnly = !!value; + } + /** + * @return {?} + */ + get disabled() { + return this._disabled; + } + /** + * @param {?} value + * @return {?} + */ + set disabled(value) { + this._disabled = !!value; + } + /** + * @return {?} + */ + get step() { + return this._step; + } + /** + * @param {?} value + * @return {?} + */ + set step(value) { + this._step = (value > 0 ? value : 1); + } + /** + * @return {?} + */ + get rating() { + return this._rating; + } + /** + * setRating + * I use a setter function instead of a set method to enable overrides for this function. + * @param {?} value + * @return {?} + */ + setRating(value) { + //validate and apply newRating + let /** @type {?} */ newRating = 0; + if (value >= 0 + && value <= this.numOfStars) { + newRating = value; + } + //limit max value to max number of stars + if (value > this.numOfStars) { + newRating = this.numOfStars; + } + this._rating = newRating; + //update ratingAsInteger. rating parsed to int for the value-[n] modifier + this.ratingAsInteger = parseInt(this._rating.toString()); + //update halfStarsVisible + this.setHalfStarVisible(); + //update calculated Color + this.setColor(); + } + /** + * @param {?} value + * @return {?} + */ + set rating(value) { + this.setRating(value); + } + /** + * @return {?} + */ + get showHalfStars() { + return this._showHalfStars; + } + /** + * @param {?} value + * @return {?} + */ + set showHalfStars(value) { + this._showHalfStars = !!value; + //update halfStarVisible + this.setHalfStarVisible(); + } + /** + * @param {?} config + */ + constructor(config) { + this.config = config; + //set default ctrl props + this.classEmpty = this.config.classEmpty; + this.classHalf = this.config.classHalf; + this.classFilled = this.config.classFilled; + this.pathEmpty = this.config.svgPathEmpty; + this.pathHalf = this.config.svgPathHalf; + this.pathFilled = this.config.svgPathFilled; + //set default Component Inputs + if ('getColor' in this.config && typeof this.config.getColor === "function") { + this.getColor = this.config.getColor; + } + if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === "function") { + this.getHalfStarVisible = this.config.getHalfStarVisible; + } + this.numOfStars = this.config.numOfStars; + this.rating = 0; + this.step = 1; + } + /** + * @return {?} + */ + svgVisible() { + return this.starType === "svg"; + } + /** + * @return {?} + */ + interactionPossible() { + return !this.readOnly && !this.disabled; + } + /** + * @return {?} + */ + setColor() { + //check if custom function is given + if (typeof this.getColor === "function") { + this.color = this.getColor(this.rating, this.numOfStars, this.staticColor); + } + else { + this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor); + } + } + /** + * @return {?} + */ + setHalfStarVisible() { + //update halfStarVisible + if (this.showHalfStars) { + //check if custom function is given + if (typeof this.getHalfStarVisible === "function") { + this.halfStarVisible = this.getHalfStarVisible(this.rating); + } + else { + this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating); + } + } + else { + this.halfStarVisible = false; + } + } + /** + * @return {?} + */ + getComponentClassNames() { + let /** @type {?} */ classNames = []; + classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0'); + classNames.push(this.halfStarVisible ? 'half' : ''); + classNames.push(this.hoverEnabled ? 'hover' : ''); + let /** @type {?} */ hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0'); + classNames.push(this.hoverEnabled ? hoverRating : ''); + classNames.push(this.space ? 'space-' + this.space : ''); + classNames.push(this.labelPosition ? 'label-' + this.labelPosition : ''); + classNames.push(this.color ? 'color-' + this.color : ''); + classNames.push(this.starType ? 'star-' + this.starType : ''); + classNames.push(this.speed); + classNames.push(this.size); + classNames.push(this.readOnly ? 'read-only' : ''); + classNames.push(this.disabled ? 'disabled' : ''); + classNames.push(this.direction ? 'direction-' + this.direction : ''); + return classNames.join(' '); + } + /** + * @return {?} + */ + increment() { + //increment to next higher step + let /** @type {?} */ absDiff = Math.abs(this.rating % this.step); + this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step); + } + /** + * @return {?} + */ + decrement() { + //decrement to next lower step + let /** @type {?} */ absDiff = Math.abs(this.rating % this.step); + this.rating = this.rating - (absDiff > 0 ? absDiff : this.step); + } + /** + * @return {?} + */ + reset() { + this.rating = 0; + } +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * Configuration service for the StarRating component. + * You can inject this service, typically in your root component, and customize the values of its properties in + * order to provide default values for all the star ratings used in the application. + */ +class StarRatingConfigService { + constructor() { + this._classEmpty = "default-star-empty-icon"; + this._classHalf = "default-star-half-icon"; + this._classFilled = "default-star-filled-icon"; + this._numOfStars = 5; + this._size = "medium"; + this._labelPosition = "left"; + this._speed = "noticeable"; + this._starType = "svg"; + this._assetsPath = "assets/images/"; + this._svgPath = this.assetsPath + "star-rating.icons.svg"; + this._svgEmptySymbolId = "star-empty"; + this._svgHalfSymbolId = "star-half"; + this._svgFilledSymbolId = "star-filled"; + this._svgPathEmpty = this.svgPath + "#" + this.svgEmptySymbolId; + this._svgPathHalf = this.svgPath + "#" + this.svgHalfSymbolId; + this._svgPathFilled = this.svgPath + "#" + this.svgFilledSymbolId; + } + /** + * @return {?} + */ + get classEmpty() { + return this._classEmpty; + } + /** + * @param {?} classEmpty + * @return {?} + */ + set classEmpty(classEmpty) { + this._classEmpty = classEmpty; + } + /** + * @return {?} + */ + get classHalf() { + return this._classHalf; + } + /** + * @param {?} classHalf + * @return {?} + */ + set classHalf(classHalf) { + this._classHalf = classHalf; + } + /** + * @return {?} + */ + get classFilled() { + return this._classFilled; + } + /** + * @param {?} classFilled + * @return {?} + */ + set classFilled(classFilled) { + this._classFilled = classFilled; + } + /** + * @return {?} + */ + get numOfStars() { + return this._numOfStars; + } + /** + * @param {?} numOfStars + * @return {?} + */ + set numOfStars(numOfStars) { + this._numOfStars = numOfStars; + } + /** + * @return {?} + */ + get size() { + return this._size; + } + /** + * @param {?} size + * @return {?} + */ + set size(size) { + this._size = size; + } + /** + * @return {?} + */ + get staticColor() { + return this._staticColor; + } + /** + * @param {?} value + * @return {?} + */ + set staticColor(value) { + this._staticColor = value; + } + /** + * @return {?} + */ + get labelPosition() { + return this._labelPosition; + } + /** + * @param {?} labelPosition + * @return {?} + */ + set labelPosition(labelPosition) { + this._labelPosition = labelPosition; + } + /** + * @return {?} + */ + get speed() { + return this._speed; + } + /** + * @param {?} speed + * @return {?} + */ + set speed(speed) { + this._speed = speed; + } + /** + * @return {?} + */ + get starType() { + return this._starType; + } + /** + * @param {?} starType + * @return {?} + */ + set starType(starType) { + this._starType = starType; + } + /** + * @return {?} + */ + get assetsPath() { + return this._assetsPath; + } + /** + * @param {?} assetsPath + * @return {?} + */ + set assetsPath(assetsPath) { + this._assetsPath = assetsPath; + } + /** + * @return {?} + */ + get svgPath() { + return this._svgPath; + } + /** + * @param {?} svgPath + * @return {?} + */ + set svgPath(svgPath) { + this._svgPath = svgPath; + } + /** + * @return {?} + */ + get svgEmptySymbolId() { + return this._svgEmptySymbolId; + } + /** + * @param {?} svgEmptySymbolId + * @return {?} + */ + set svgEmptySymbolId(svgEmptySymbolId) { + this._svgEmptySymbolId = svgEmptySymbolId; + } + /** + * @return {?} + */ + get svgHalfSymbolId() { + return this._svgHalfSymbolId; + } + /** + * @param {?} svgHalfSymbolId + * @return {?} + */ + set svgHalfSymbolId(svgHalfSymbolId) { + this._svgHalfSymbolId = svgHalfSymbolId; + } + /** + * @return {?} + */ + get svgFilledSymbolId() { + return this._svgFilledSymbolId; + } + /** + * @param {?} svgFilledSymbolId + * @return {?} + */ + set svgFilledSymbolId(svgFilledSymbolId) { + this._svgFilledSymbolId = svgFilledSymbolId; + } + /** + * @return {?} + */ + get svgPathEmpty() { + return this._svgPathEmpty; + } + /** + * @param {?} svgPathEmpty + * @return {?} + */ + set svgPathEmpty(svgPathEmpty) { + this._svgPathEmpty = svgPathEmpty; + } + /** + * @return {?} + */ + get svgPathHalf() { + return this._svgPathHalf; + } + /** + * @param {?} svgPathHalf + * @return {?} + */ + set svgPathHalf(svgPathHalf) { + this._svgPathHalf = svgPathHalf; + } + /** + * @return {?} + */ + get svgPathFilled() { + return this._svgPathFilled; + } + /** + * @param {?} svgPathFilled + * @return {?} + */ + set svgPathFilled(svgPathFilled) { + this._svgPathFilled = svgPathFilled; + } + /** + * @param {?} rating + * @param {?} numOfStars + * @param {?=} staticColor + * @return {?} + */ + getColor(rating, numOfStars, staticColor) { + rating = rating || 0; + // if a fix color is set use this one + if (staticColor) { + return staticColor; + } + // calculate size of smallest fraction + const /** @type {?} */ fractionSize = numOfStars / 3; + // apply color by fraction + let /** @type {?} */ color = 'default'; + if (rating > 0) { + color = 'negative'; + } + if (rating > fractionSize) { + color = 'ok'; + } + if (rating > fractionSize * 2) { + color = 'positive'; + } + return color; + } + /** + * @param {?} rating + * @return {?} + */ + getHalfStarVisible(rating) { + return Math.abs(rating % 1) > 0; + } +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +const STAR_RATING_CONTROL_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => StarRatingComponent), + multi: true +}; +class StarRatingComponent extends StarRating { + /** + * @param {?} config + */ + constructor(config) { + super(config); + //Outputs + this.clickEmitter = new EventEmitter(); + this.ratingChangeEmitter = new EventEmitter(); + this.hoverRatingChangeEmitter = new EventEmitter(); + this.onModelChangeRegistered = false; + this.onTouchRegistered = false; + } + /** + * @param {?} $event + * @return {?} + */ + saveOnClick($event) { + if (this.clickEmitter) { + this.clickEmitter.emit($event); + } + } + /** + * @param {?} $event + * @return {?} + */ + saveOnRatingChange($event) { + if (this.ratingChangeEmitter) { + this.ratingChangeEmitter.emit($event); + } + } + /** + * @param {?} $event + * @return {?} + */ + saveOnHover($event) { + if (this.hoverRatingChangeEmitter) { + this.hoverRatingChangeEmitter.emit($event); + } + } + /** + * @return {?} + */ + saveOnTouch() { + if (this.onTouchRegistered) { + this.onTouch(); + } + } + /** + * @param {?} value + * @return {?} + */ + saveOnModelChange(value) { + if (this.onModelChangeRegistered) { + this.onModelChange(value); + } + } + /** + * ACCESSIBILITY * + * @param {?} event + * @return {?} + */ + onKeyDown(event) { + if (!this.interactionPossible()) { + return; + } + const /** @type {?} */ handlers = { + //Decrement + Minus: () => this.decrement(), + ArrowDown: () => this.decrement(), + ArrowLeft: () => this.decrement(), + //Increment + Plus: () => this.increment(), + ArrowRight: () => this.increment(), + ArrowUp: () => this.increment(), + //Reset + Backspace: () => this.reset(), + Delete: () => this.reset(), + Digit0: () => this.reset() + }; + const /** @type {?} */ handleDigits = (eventCode) => { + let /** @type {?} */ dStr = "Digit"; + let /** @type {?} */ digit = parseInt(eventCode.substr(dStr.length, eventCode.length - 1)); + this.rating = digit; + }; + if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) { + if (StarRatingUtils.isDigitKeyEventCode(event['code'])) { + handleDigits(event['code']); + } + else { + handlers[event['code']](); + } + event.preventDefault(); + event.stopPropagation(); + } + this.saveOnTouch(); + } + /** + * @param {?} event + * @return {?} + */ + onBlur(event) { + this.focus = false; + event.preventDefault(); + event.stopPropagation(); + this.saveOnTouch(); + } + /** + * @param {?} event + * @return {?} + */ + onFocus(event) { + this.focus = true; + event.preventDefault(); + event.stopPropagation(); + this.saveOnTouch(); + } + /** + * @param {?=} rating + * @return {?} + */ + onStarHover(rating) { + if (!this.interactionPossible() || !this.hoverEnabled) { + return; + } + this.hoverRating = rating ? parseInt(rating.toString()) : 0; + //fire onHoverRatingChange event + let /** @type {?} */ $event = { hoverRating: this.hoverRating }; + this.saveOnHover($event); + } + /** + * Form Control - ControlValueAccessor implementation* + * @param {?} obj + * @return {?} + */ + writeValue(obj) { + this.rating = obj; + } + /** + * @param {?} fn + * @return {?} + */ + registerOnChange(fn) { + this.onModelChange = fn; + this.onModelChangeRegistered = true; + } + /** + * @param {?} fn + * @return {?} + */ + registerOnTouched(fn) { + this.onTouch = fn; + this.onTouchRegistered = true; + } + /** + * @param {?} value + * @return {?} + */ + setRating(value) { + let /** @type {?} */ initValue = this.rating; + super.setRating(value); + //if value changed trigger valueAccessor events and outputs + if (initValue !== this.rating) { + let /** @type {?} */ $event = { rating: this.rating }; + this.saveOnRatingChange($event); + this.saveOnModelChange(this.rating); + } + } + ; + /** + * onStarClicked + * + * Is fired when a star is clicked. And updated the rating value. + * This function returns if the disabled or readOnly + * property is set. If provided it emits the onClick event + * handler with the actual rating value. + * + * @param {?} rating + * @return {?} + */ + onStarClicked(rating) { + //fire onClick event + if (!this.interactionPossible()) { + return; + } + this.rating = rating; + let /** @type {?} */ onClickEventObject = { + rating: this.rating + }; + this.saveOnClick(onClickEventObject); + } +} +StarRatingComponent.decorators = [ + { type: Component, args: [{ + selector: 'star-rating-comp', + providers: [STAR_RATING_CONTROL_ACCESSOR], + inputs: [ + 'getHalfStarVisible', + 'getColor', + 'showHalfStars', + 'hoverEnabled', + 'rating', + 'step', + 'disabled', + 'readOnly', + 'space', + 'starType', + 'size', + 'speed', + 'numOfStars', + 'direction', + 'staticColor' + //, 'labelVisible' + , + 'labelPosition', + 'labelText', + 'id' + ], + outputs: [ + 'clickEmitter', + 'ratingChangeEmitter', + 'hoverRatingChangeEmitter' + ], + styles: [], + template: `
+
{{labelText}}
+
+
+ + + + + + + + + + + + +
+
+
` + },] }, +]; +/** @nocollapse */ +StarRatingComponent.ctorParameters = () => [ + { type: StarRatingConfigService, }, +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +const DECLARATIONS = [StarRatingComponent]; +const EXPORTS = [DECLARATIONS]; +class StarRatingModule { + /** + * @return {?} + */ + static forRoot() { + return { + ngModule: StarRatingModule, + providers: [ + StarRatingConfigService + ] + }; + } + /** + * @return {?} + */ + static forChild() { + return { + ngModule: StarRatingModule, + providers: [] + }; + } +} +StarRatingModule.decorators = [ + { type: NgModule, args: [{ + imports: [CommonModule], + declarations: [DECLARATIONS], + exports: [EXPORTS] + },] }, +]; +/** @nocollapse */ +StarRatingModule.ctorParameters = () => []; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ + +export { StarRatingConfig, StarRatingUtils, StarRating, StarRatingConfigService, StarRatingComponent, StarRatingModule }; +//# sourceMappingURL=angular-star-rating.js.map diff --git a/@packaged/angular-star-rating/esm2015/angular-star-rating.js.map b/@packaged/angular-star-rating/esm2015/angular-star-rating.js.map new file mode 100644 index 0000000..9d88e0d --- /dev/null +++ b/@packaged/angular-star-rating/esm2015/angular-star-rating.js.map @@ -0,0 +1,22 @@ +{ + "version": 3, + "file": "angular-star-rating.js", + "sources": [ + "ng://angular-star-rating/out/src/angular-star-rating.module.ts", + "ng://angular-star-rating/out/src/components/star-rating.component.ts", + "ng://angular-star-rating/out/src/services/star-rating-config.service.ts", + "ng://angular-star-rating/out/src/services/star-rating.ts", + "ng://angular-star-rating/out/src/services/star-rating.utils.ts", + "ng://angular-star-rating/out/src/interfaces/star-rating-config.interface.ts" + ], + "sourcesContent": [ + "import {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {StarRatingComponent} from './components/star-rating.component';\nimport {StarRatingConfigService} from './services/star-rating-config.service';\n\nconst DECLARATIONS = [StarRatingComponent];\nconst EXPORTS = [DECLARATIONS];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [DECLARATIONS],\n exports: [EXPORTS]\n})\nexport class StarRatingModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: [\n StarRatingConfigService\n ]\n }\n }\n\n static forChild(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: []\n }\n }\n}\n", + "import {Component, EventEmitter, forwardRef, Input} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {ClickEvent} from '../interfaces/click-event.interface';\r\nimport {HoverRatingChangeEvent} from '../interfaces/hover-rating-change-event.interface';\r\nimport {RatingChangeEvent} from '../interfaces/rating-change-event.interface';\r\nimport {StarRating} from '../services/star-rating';\r\nimport {StarRatingConfigService} from '../services/star-rating-config.service';\r\nimport {StarRatingUtils} from '../services/star-rating.utils';\r\n\r\nconst STAR_RATING_CONTROL_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => StarRatingComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'star-rating-comp',\r\n providers: [STAR_RATING_CONTROL_ACCESSOR],\r\n inputs: [\r\n 'getHalfStarVisible'\r\n , 'getColor'\r\n , 'showHalfStars'\r\n , 'hoverEnabled'\r\n , 'rating'\r\n , 'step'\r\n , 'disabled'\r\n , 'readOnly'\r\n , 'space'\r\n , 'starType'\r\n , 'size'\r\n , 'speed'\r\n , 'numOfStars'\r\n , 'direction'\r\n , 'staticColor'\r\n //, 'labelVisible'\r\n , 'labelPosition'\r\n , 'labelText'\r\n , 'id'\r\n ],\r\n outputs: [\r\n 'clickEmitter'\r\n , 'ratingChangeEmitter'\r\n , 'hoverRatingChangeEmitter'\r\n ],\r\n styles: [],\r\n template: `
\r\n
{{labelText}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
`\r\n})\r\nexport class StarRatingComponent extends StarRating implements ControlValueAccessor {\r\n\r\n //Outputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n clickEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnClick($event: ClickEvent) {\r\n if (this.clickEmitter) {\r\n this.clickEmitter.emit($event);\r\n }\r\n }\r\n\r\n ratingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnRatingChange($event: RatingChangeEvent) {\r\n if (this.ratingChangeEmitter) {\r\n this.ratingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n hoverRatingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnHover($event: HoverRatingChangeEvent) {\r\n if (this.hoverRatingChangeEmitter) {\r\n this.hoverRatingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n onTouch: Function;\r\n onModelChange: Function;\r\n private onModelChangeRegistered: boolean = false;\r\n private onTouchRegistered: boolean = false;\r\n\r\n saveOnTouch() {\r\n if (this.onTouchRegistered) {\r\n this.onTouch();\r\n }\r\n }\r\n\r\n saveOnModelChange(value: number) {\r\n if (this.onModelChangeRegistered) {\r\n this.onModelChange(value);\r\n }\r\n }\r\n\r\n /**ACCESSIBILITY **/\r\n\r\n //Keyboard events\r\n onKeyDown(event: KeyboardEvent) {\r\n\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n const handlers: any = {\r\n //Decrement\r\n Minus: () => this.decrement(),\r\n ArrowDown: () => this.decrement(),\r\n ArrowLeft: () => this.decrement(),\r\n\r\n //Increment\r\n Plus: () => this.increment(),\r\n ArrowRight: () => this.increment(),\r\n ArrowUp: () => this.increment(),\r\n\r\n //Reset\r\n Backspace: () => this.reset(),\r\n Delete: () => this.reset(),\r\n Digit0: () => this.reset()\r\n };\r\n\r\n const handleDigits = (eventCode: string): void => {\r\n let dStr = \"Digit\";\r\n let digit: number = parseInt(eventCode.substr(dStr.length, eventCode.length - 1));\r\n this.rating = digit;\r\n };\r\n\r\n if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n if (StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n handleDigits(event['code']);\r\n } else {\r\n handlers[event['code']]();\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n this.saveOnTouch();\r\n }\r\n\r\n //Focus events\r\n onBlur(event: FocusEvent) {\r\n this.focus = false;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n onFocus(event: FocusEvent) {\r\n this.focus = true;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n //Hover events\r\n onStarHover(rating?: number): void {\r\n\r\n if (!this.interactionPossible() || !this.hoverEnabled) {\r\n return;\r\n }\r\n\r\n this.hoverRating = rating ? parseInt(rating.toString()) : 0;\r\n\r\n //fire onHoverRatingChange event\r\n let $event: HoverRatingChangeEvent = {hoverRating: this.hoverRating};\r\n this.saveOnHover($event);\r\n\r\n\r\n }\r\n\r\n /**Form Control - ControlValueAccessor implementation**/\r\n\r\n writeValue(obj: any): void {\r\n this.rating = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn;\r\n this.onModelChangeRegistered = true;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n this.onTouchRegistered = true;\r\n }\r\n\r\n constructor(config: StarRatingConfigService) {\r\n super(config);\r\n }\r\n\r\n //Overrides\r\n setRating(value: number): void {\r\n let initValue = this.rating;\r\n super.setRating(value);\r\n\r\n //if value changed trigger valueAccessor events and outputs\r\n if (initValue !== this.rating) {\r\n let $event: RatingChangeEvent = {rating: this.rating};\r\n this.saveOnRatingChange($event);\r\n\r\n this.saveOnModelChange(this.rating);\r\n }\r\n\r\n };\r\n\r\n /**\r\n * onStarClicked\r\n *\r\n * Is fired when a star is clicked. And updated the rating value.\r\n * This function returns if the disabled or readOnly\r\n * property is set. If provided it emits the onClick event\r\n * handler with the actual rating value.\r\n *\r\n * @param rating\r\n */\r\n onStarClicked(rating: number): void {\r\n\r\n //fire onClick event\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n this.rating = rating;\r\n\r\n let onClickEventObject: ClickEvent = {\r\n rating: this.rating\r\n };\r\n this.saveOnClick(onClickEventObject);\r\n\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarTypes,\r\n starRatingLabelPosition\r\n} from '../interfaces/star-rating-config.interface';\r\n\r\n/**\r\n * Configuration service for the StarRating component.\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the star ratings used in the application.\r\n */\r\nexport class StarRatingConfigService implements StarRatingConfig {\r\n\r\n _classEmpty = \"default-star-empty-icon\";\r\n\r\n get classEmpty() {\r\n return this._classEmpty;\r\n }\r\n\r\n set classEmpty(classEmpty: string) {\r\n this._classEmpty = classEmpty;\r\n }\r\n\r\n private _classHalf = \"default-star-half-icon\";\r\n\r\n get classHalf(): string {\r\n return this._classHalf;\r\n }\r\n\r\n set classHalf(classHalf: string) {\r\n this._classHalf = classHalf;\r\n }\r\n\r\n private _classFilled = \"default-star-filled-icon\";\r\n\r\n get classFilled(): string {\r\n return this._classFilled;\r\n }\r\n\r\n set classFilled(classFilled: string) {\r\n this._classFilled = classFilled;\r\n }\r\n\r\n private _numOfStars = 5;\r\n\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(numOfStars: number) {\r\n this._numOfStars = numOfStars;\r\n }\r\n\r\n private _size: starRatingSizes = \"medium\";\r\n\r\n get size(): starRatingSizes {\r\n return this._size;\r\n }\r\n\r\n set size(size: starRatingSizes) {\r\n this._size = size;\r\n }\r\n\r\n private _staticColor: starRatingColor;\r\n\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value;\r\n }\r\n\r\n private _labelPosition: starRatingLabelPosition = \"left\";\r\n\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(labelPosition: starRatingLabelPosition) {\r\n this._labelPosition = labelPosition;\r\n }\r\n\r\n private _speed: starRatingSpeed = \"noticeable\";\r\n\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(speed: starRatingSpeed) {\r\n this._speed = speed;\r\n }\r\n\r\n private _starType: starRatingStarTypes = \"svg\";\r\n\r\n get starType(): starRatingStarTypes {\r\n return this._starType;\r\n }\r\n\r\n set starType(starType: starRatingStarTypes) {\r\n this._starType = starType;\r\n }\r\n\r\n private _assetsPath = \"assets/images/\";\r\n\r\n get assetsPath(): string {\r\n return this._assetsPath;\r\n }\r\n\r\n set assetsPath(assetsPath: string) {\r\n this._assetsPath = assetsPath;\r\n }\r\n\r\n private _svgPath = this.assetsPath + \"star-rating.icons.svg\";\r\n\r\n get svgPath(): string {\r\n return this._svgPath;\r\n }\r\n\r\n set svgPath(svgPath: string) {\r\n this._svgPath = svgPath;\r\n }\r\n\r\n private _svgEmptySymbolId = \"star-empty\";\r\n\r\n get svgEmptySymbolId(): string {\r\n return this._svgEmptySymbolId;\r\n }\r\n\r\n set svgEmptySymbolId(svgEmptySymbolId: string) {\r\n this._svgEmptySymbolId = svgEmptySymbolId;\r\n }\r\n\r\n private _svgHalfSymbolId = \"star-half\";\r\n\r\n get svgHalfSymbolId(): string {\r\n return this._svgHalfSymbolId;\r\n }\r\n\r\n set svgHalfSymbolId(svgHalfSymbolId: string) {\r\n this._svgHalfSymbolId = svgHalfSymbolId;\r\n }\r\n\r\n private _svgFilledSymbolId = \"star-filled\";\r\n\r\n get svgFilledSymbolId(): string {\r\n return this._svgFilledSymbolId;\r\n }\r\n\r\n set svgFilledSymbolId(svgFilledSymbolId: string) {\r\n this._svgFilledSymbolId = svgFilledSymbolId;\r\n }\r\n\r\n private _svgPathEmpty: string = this.svgPath + \"#\" + this.svgEmptySymbolId;\r\n\r\n get svgPathEmpty(): string {\r\n return this._svgPathEmpty;\r\n }\r\n\r\n set svgPathEmpty(svgPathEmpty: string) {\r\n this._svgPathEmpty = svgPathEmpty;\r\n }\r\n\r\n private _svgPathHalf: string = this.svgPath + \"#\" + this.svgHalfSymbolId;\r\n\r\n get svgPathHalf(): string {\r\n return this._svgPathHalf;\r\n }\r\n\r\n set svgPathHalf(svgPathHalf: string) {\r\n this._svgPathHalf = svgPathHalf;\r\n }\r\n\r\n private _svgPathFilled: string = this.svgPath + \"#\" + this.svgFilledSymbolId;\r\n\r\n get svgPathFilled(): string {\r\n return this._svgPathFilled;\r\n }\r\n\r\n set svgPathFilled(svgPathFilled: string) {\r\n this._svgPathFilled = svgPathFilled;\r\n }\r\n\r\n getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n // if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n // calculate size of smallest fraction\r\n const fractionSize = numOfStars / 3;\r\n\r\n // apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingDirection,\r\n starRatingLabelPosition,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarSpace,\r\n starRatingStarTypes\r\n} from '../interfaces/star-rating-config.interface';\r\nimport {StarRatingConfigService} from './star-rating-config.service';\r\nimport {StarRatingUtils} from './star-rating.utils';\r\n\r\nexport class StarRating {\r\n\r\n protected config: StarRatingConfig;\r\n\r\n //Inputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /**\r\n * id property to identify the DOM element\r\n */\r\n protected _id: string;\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || '';\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * focus\r\n */\r\n protected _focus: boolean;\r\n get focus(): boolean {\r\n return this._focus;\r\n }\r\n\r\n set focus(value: boolean) {\r\n this._focus = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelText\r\n */\r\n protected _labelText: string;\r\n get labelText(): string {\r\n return this._labelText;\r\n }\r\n\r\n set labelText(value: string) {\r\n this._labelText = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelPosition\r\n */\r\n protected _labelPosition: starRatingLabelPosition;\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(value: starRatingLabelPosition) {\r\n this._labelPosition = value || this.config.labelPosition;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelVisible\r\n */\r\n protected _labelVisible: boolean;\r\n get labelVisible(): boolean {\r\n return this._labelVisible;\r\n }\r\n\r\n set labelVisible(value: boolean) {\r\n this._labelVisible = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverEnabled\r\n */\r\n protected _hoverEnabled: boolean;\r\n get hoverEnabled(): boolean {\r\n return this._hoverEnabled;\r\n }\r\n\r\n set hoverEnabled(value: boolean) {\r\n this._hoverEnabled = (value !== undefined) ? !!value : false;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * staticColor\r\n */\r\n protected _staticColor: starRatingColor;\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value || this.config.staticColor || undefined;\r\n\r\n //update color.\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * direction\r\n */\r\n protected _direction: starRatingDirection;\r\n get direction(): starRatingDirection {\r\n return this._direction;\r\n }\r\n\r\n set direction(value: starRatingDirection) {\r\n this._direction = value || undefined;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n\r\n /**\r\n * numOfStars\r\n */\r\n protected _numOfStars: number;\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(value: number) {\r\n this._numOfStars = (value > 0) ? value : this.config.numOfStars;\r\n\r\n //update stars array\r\n this.stars = StarRatingUtils.getStarsArray(this.numOfStars);\r\n\r\n //update color\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverRating\r\n */\r\n protected _hoverRating: number;\r\n get hoverRating(): number {\r\n return this._hoverRating;\r\n }\r\n\r\n set hoverRating(value: number) {\r\n this._hoverRating = (value > 0) ? value : 0;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * speed\r\n */\r\n protected _speed: starRatingSpeed;\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(value: starRatingSpeed) {\r\n this._speed = value || this.config.speed;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * size\r\n */\r\n protected _size: starRatingSizes;\r\n get size(): starRatingSizes {\r\n return this._size || this.config.size;\r\n }\r\n\r\n set size(value: starRatingSizes) {\r\n this._size = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * starType\r\n */\r\n protected _starType: starRatingStarTypes;\r\n get starType(): starRatingStarTypes {\r\n return this._starType || this.config.starType;\r\n }\r\n\r\n set starType(value: starRatingStarTypes) {\r\n this._starType = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * space\r\n */\r\n protected _space: starRatingStarSpace;\r\n get space(): starRatingStarSpace {\r\n return this._space;\r\n }\r\n\r\n set space(value: starRatingStarSpace) {\r\n this._space = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * readOnly\r\n */\r\n protected _readOnly: boolean;\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n\r\n set readOnly(value: boolean) {\r\n this._readOnly = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * disabled\r\n */\r\n protected _disabled: boolean;\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n private _step: number;\r\n get step(): number {\r\n return this._step;\r\n }\r\n\r\n set step(value: number) {\r\n this._step = (value > 0 ? value : 1);\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * rating\r\n */\r\n protected _rating: number;\r\n get rating(): number {\r\n return this._rating;\r\n }\r\n\r\n /**\r\n * setRating\r\n * I use a setter function instead of a set method to enable overrides for this function.\r\n * @param value\r\n */\r\n setRating(value: number) {\r\n //validate and apply newRating\r\n let newRating: number = 0;\r\n if (value >= 0\r\n && value <= this.numOfStars) {\r\n newRating = value;\r\n }\r\n\r\n //limit max value to max number of stars\r\n if (value > this.numOfStars) {\r\n newRating = this.numOfStars;\r\n }\r\n this._rating = newRating;\r\n\r\n //update ratingAsInteger. rating parsed to int for the value-[n] modifier\r\n this.ratingAsInteger = parseInt(this._rating.toString());\r\n\r\n //update halfStarsVisible\r\n this.setHalfStarVisible();\r\n\r\n //update calculated Color\r\n this.setColor();\r\n\r\n }\r\n\r\n set rating(value: number) {\r\n this.setRating(value);\r\n }\r\n\r\n /**\r\n * showHalfStars\r\n */\r\n protected _showHalfStars: boolean;\r\n get showHalfStars(): boolean {\r\n return this._showHalfStars;\r\n }\r\n\r\n set showHalfStars(value: boolean) {\r\n this._showHalfStars = !!value;\r\n\r\n //update halfStarVisible\r\n this.setHalfStarVisible();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getColor\r\n */\r\n getColor: (rating: number, numOfStars: number, staticColor?: starRatingColor) => starRatingColor;\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getHalfStarVisible\r\n */\r\n getHalfStarVisible: (rating: number) => boolean;\r\n /////////////////////////////////////////////\r\n\r\n //CTRL ONLY\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n classEmpty: string;\r\n classHalf: string;\r\n classFilled: string;\r\n\r\n pathEmpty: string;\r\n pathHalf: string;\r\n pathFilled: string;\r\n\r\n color: starRatingColor;\r\n stars: Array;\r\n ratingAsInteger: number;\r\n halfStarVisible: boolean;\r\n\r\n constructor(config: StarRatingConfigService) {\r\n\r\n this.config = config;\r\n\r\n //set default ctrl props\r\n this.classEmpty = this.config.classEmpty;\r\n this.classHalf = this.config.classHalf;\r\n this.classFilled = this.config.classFilled;\r\n this.pathEmpty = this.config.svgPathEmpty;\r\n this.pathHalf = this.config.svgPathHalf;\r\n this.pathFilled = this.config.svgPathFilled;\r\n\r\n //set default Component Inputs\r\n if ('getColor' in this.config && typeof this.config.getColor === \"function\") {\r\n this.getColor = this.config.getColor;\r\n }\r\n\r\n if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === \"function\") {\r\n this.getHalfStarVisible = this.config.getHalfStarVisible;\r\n }\r\n\r\n this.numOfStars = this.config.numOfStars;\r\n this.rating = 0;\r\n this.step = 1;\r\n\r\n }\r\n\r\n svgVisible(): boolean {\r\n return this.starType === \"svg\";\r\n }\r\n\r\n interactionPossible(): boolean {\r\n return !this.readOnly && !this.disabled;\r\n }\r\n\r\n setColor(): void {\r\n //check if custom function is given\r\n if (typeof this.getColor === \"function\") {\r\n this.color = this.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n else {\r\n this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n }\r\n\r\n setHalfStarVisible(): void {\r\n //update halfStarVisible\r\n if (this.showHalfStars) {\r\n //check if custom function is given\r\n if (typeof this.getHalfStarVisible === \"function\") {\r\n this.halfStarVisible = this.getHalfStarVisible(this.rating);\r\n } else {\r\n this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating);\r\n }\r\n\r\n }\r\n else {\r\n this.halfStarVisible = false;\r\n }\r\n }\r\n\r\n getComponentClassNames(): string {\r\n let classNames: string[] = [];\r\n\r\n classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0');\r\n classNames.push(this.halfStarVisible ? 'half' : '');\r\n classNames.push(this.hoverEnabled ? 'hover' : '');\r\n\r\n let hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0');\r\n classNames.push(this.hoverEnabled ? hoverRating : '');\r\n\r\n classNames.push(this.space ? 'space-' + this.space : '');\r\n classNames.push(this.labelPosition ? 'label-' + this.labelPosition : '');\r\n classNames.push(this.color ? 'color-' + this.color : '');\r\n classNames.push(this.starType ? 'star-' + this.starType : '');\r\n classNames.push(this.speed);\r\n classNames.push(this.size);\r\n classNames.push(this.readOnly ? 'read-only' : '');\r\n classNames.push(this.disabled ? 'disabled' : '');\r\n classNames.push(this.direction ? 'direction-' + this.direction : '');\r\n\r\n return classNames.join(' ');\r\n }\r\n\r\n increment() {\r\n //increment to next higher step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step);\r\n }\r\n\r\n decrement() {\r\n //decrement to next lower step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating - (absDiff > 0 ? absDiff : this.step);\r\n }\r\n\r\n reset() {\r\n this.rating = 0;\r\n }\r\n\r\n}\r\n", + "import {starRatingColor} from '../interfaces/star-rating-config.interface';\r\nexport class StarRatingUtils {\r\n //Static methods\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /*\r\n * getStarsArray\r\n *\r\n * returns an array of increasing numbers starting at 1\r\n *\r\n * @param numOfStars\r\n * @returns {Array}\r\n */\r\n static getStarsArray(numOfStars: number): Array {\r\n let stars: Array = [];\r\n for (let i = 0; i < numOfStars; i++) {\r\n stars.push(i + 1);\r\n }\r\n return stars;\r\n }\r\n\r\n /*\r\n * getHalfStarVisible\r\n *\r\n * Returns true if there should be a half star visible, and false if not.\r\n *\r\n * @param rating\r\n * @returns {boolean}\r\n */\r\n static getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n /*\r\n * getColor\r\n *\r\n * The default function for color calculation\r\n * based on the current rating and the the number of stars possible.\r\n * If a staticColor is set the function will use it as return value.\r\n *\r\n * @param rating\r\n * @param numOfStars\r\n * @param staticColor\r\n * @returns {starRatingColor}\r\n */\r\n static getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n //if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n //calculate size of smallest fraction\r\n let fractionSize = numOfStars / 3;\r\n\r\n //apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n /*\r\n * isDigitKeyEventCode\r\n * detects digit key event sodes\r\n * @param eventCode\r\n * @returns {boolean}\r\n */\r\n static isDigitKeyEventCode(eventCode: string): boolean {\r\n return eventCode.indexOf('Digit') === 0;\r\n };\r\n\r\n}\r\n", + "export type starRatingSizes = 'small' | 'medium' | 'large';\r\nexport type starRatingColor = 'default' | 'negative' | 'ok' | 'positive';\r\nexport type starRatingSpeed = 'immediately' | 'noticeable' | 'slow';\r\nexport type starRatingLabelPosition = 'left' | 'right' | 'top' | 'bottom';\r\nexport type starRatingStarTypes = 'svg' | 'icon' | 'image';\r\nexport type starRatingStarSpace= 'no' | 'between' | 'around';\r\nexport type starRatingDirection= 'rtl' | 'ltr';\r\n\r\nexport class StarRatingConfig {\r\n // binding defaults\r\n numOfStars?: number;\r\n size?: starRatingSizes;\r\n speed?: starRatingSpeed;\r\n labelPosition?: starRatingLabelPosition;\r\n starType?: starRatingStarTypes;\r\n staticColor: starRatingColor;\r\n getColor?: (rating: number, numOfStars: number, staticColor?: starRatingColor)=> starRatingColor;\r\n getHalfStarVisible?:(rating: number) => boolean\r\n // statics\r\n classEmpty?: string;\r\n classHalf?: string;\r\n classFilled?: string;\r\n assetsPath?: string;\r\n svgPath?: string;\r\n svgEmptySymbolId?: string;\r\n svgHalfSymbolId?: string;\r\n svgFilledSymbolId?: string;\r\n svgPathEmpty?: string;\r\n svgPathHalf?: string;\r\n svgPathFilled?: string;\r\n}\r\n" + ], + "names": [], + "mappings": "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" +} diff --git a/@packaged/angular-star-rating/esm5/angular-star-rating.js b/@packaged/angular-star-rating/esm5/angular-star-rating.js new file mode 100644 index 0000000..3d6888e --- /dev/null +++ b/@packaged/angular-star-rating/esm5/angular-star-rating.js @@ -0,0 +1,739 @@ +import { __extends } from 'tslib'; +import { Component, EventEmitter, forwardRef, NgModule } from '@angular/core'; +import { NG_VALUE_ACCESSOR } from '@angular/forms'; +import { CommonModule } from '@angular/common'; + +var StarRatingConfig = /** @class */ (function () { + function StarRatingConfig() { + } + return StarRatingConfig; +}()); +var StarRatingUtils = /** @class */ (function () { + function StarRatingUtils() { + } + StarRatingUtils.getStarsArray = function (numOfStars) { + var stars = []; + for (var i = 0; i < numOfStars; i++) { + stars.push(i + 1); + } + return stars; + }; + StarRatingUtils.getHalfStarVisible = function (rating) { + return Math.abs(rating % 1) > 0; + }; + StarRatingUtils.getColor = function (rating, numOfStars, staticColor) { + rating = rating || 0; + if (staticColor) { + return staticColor; + } + var fractionSize = numOfStars / 3; + var color = 'default'; + if (rating > 0) { + color = 'negative'; + } + if (rating > fractionSize) { + color = 'ok'; + } + if (rating > fractionSize * 2) { + color = 'positive'; + } + return color; + }; + StarRatingUtils.isDigitKeyEventCode = function (eventCode) { + return eventCode.indexOf('Digit') === 0; + }; + + return StarRatingUtils; +}()); +var StarRating = /** @class */ (function () { + function StarRating(config) { + this.config = config; + this.classEmpty = this.config.classEmpty; + this.classHalf = this.config.classHalf; + this.classFilled = this.config.classFilled; + this.pathEmpty = this.config.svgPathEmpty; + this.pathHalf = this.config.svgPathHalf; + this.pathFilled = this.config.svgPathFilled; + if ('getColor' in this.config && typeof this.config.getColor === "function") { + this.getColor = this.config.getColor; + } + if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === "function") { + this.getHalfStarVisible = this.config.getHalfStarVisible; + } + this.numOfStars = this.config.numOfStars; + this.rating = 0; + this.step = 1; + } + Object.defineProperty(StarRating.prototype, "id", { + get: function () { + return this._id; + }, + set: function (value) { + this._id = value || ''; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "focus", { + get: function () { + return this._focus; + }, + set: function (value) { + this._focus = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "labelText", { + get: function () { + return this._labelText; + }, + set: function (value) { + this._labelText = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "labelPosition", { + get: function () { + return this._labelPosition; + }, + set: function (value) { + this._labelPosition = value || this.config.labelPosition; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "labelVisible", { + get: function () { + return this._labelVisible; + }, + set: function (value) { + this._labelVisible = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "hoverEnabled", { + get: function () { + return this._hoverEnabled; + }, + set: function (value) { + this._hoverEnabled = (value !== undefined) ? !!value : false; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "staticColor", { + get: function () { + return this._staticColor; + }, + set: function (value) { + this._staticColor = value || this.config.staticColor || undefined; + this.setColor(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "direction", { + get: function () { + return this._direction; + }, + set: function (value) { + this._direction = value || undefined; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "numOfStars", { + get: function () { + return this._numOfStars; + }, + set: function (value) { + this._numOfStars = (value > 0) ? value : this.config.numOfStars; + this.stars = StarRatingUtils.getStarsArray(this.numOfStars); + this.setColor(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "hoverRating", { + get: function () { + return this._hoverRating; + }, + set: function (value) { + this._hoverRating = (value > 0) ? value : 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "speed", { + get: function () { + return this._speed; + }, + set: function (value) { + this._speed = value || this.config.speed; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "size", { + get: function () { + return this._size || this.config.size; + }, + set: function (value) { + this._size = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "starType", { + get: function () { + return this._starType || this.config.starType; + }, + set: function (value) { + this._starType = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "space", { + get: function () { + return this._space; + }, + set: function (value) { + this._space = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "readOnly", { + get: function () { + return this._readOnly; + }, + set: function (value) { + this._readOnly = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "disabled", { + get: function () { + return this._disabled; + }, + set: function (value) { + this._disabled = !!value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "step", { + get: function () { + return this._step; + }, + set: function (value) { + this._step = (value > 0 ? value : 1); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRating.prototype, "rating", { + get: function () { + return this._rating; + }, + set: function (value) { + this.setRating(value); + }, + enumerable: true, + configurable: true + }); + StarRating.prototype.setRating = function (value) { + var newRating = 0; + if (value >= 0 + && value <= this.numOfStars) { + newRating = value; + } + if (value > this.numOfStars) { + newRating = this.numOfStars; + } + this._rating = newRating; + this.ratingAsInteger = parseInt(this._rating.toString()); + this.setHalfStarVisible(); + this.setColor(); + }; + Object.defineProperty(StarRating.prototype, "showHalfStars", { + get: function () { + return this._showHalfStars; + }, + set: function (value) { + this._showHalfStars = !!value; + this.setHalfStarVisible(); + }, + enumerable: true, + configurable: true + }); + StarRating.prototype.svgVisible = function () { + return this.starType === "svg"; + }; + StarRating.prototype.interactionPossible = function () { + return !this.readOnly && !this.disabled; + }; + StarRating.prototype.setColor = function () { + if (typeof this.getColor === "function") { + this.color = this.getColor(this.rating, this.numOfStars, this.staticColor); + } + else { + this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor); + } + }; + StarRating.prototype.setHalfStarVisible = function () { + if (this.showHalfStars) { + if (typeof this.getHalfStarVisible === "function") { + this.halfStarVisible = this.getHalfStarVisible(this.rating); + } + else { + this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating); + } + } + else { + this.halfStarVisible = false; + } + }; + StarRating.prototype.getComponentClassNames = function () { + var classNames = []; + classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0'); + classNames.push(this.halfStarVisible ? 'half' : ''); + classNames.push(this.hoverEnabled ? 'hover' : ''); + var hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0'); + classNames.push(this.hoverEnabled ? hoverRating : ''); + classNames.push(this.space ? 'space-' + this.space : ''); + classNames.push(this.labelPosition ? 'label-' + this.labelPosition : ''); + classNames.push(this.color ? 'color-' + this.color : ''); + classNames.push(this.starType ? 'star-' + this.starType : ''); + classNames.push(this.speed); + classNames.push(this.size); + classNames.push(this.readOnly ? 'read-only' : ''); + classNames.push(this.disabled ? 'disabled' : ''); + classNames.push(this.direction ? 'direction-' + this.direction : ''); + return classNames.join(' '); + }; + StarRating.prototype.increment = function () { + var absDiff = Math.abs(this.rating % this.step); + this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step); + }; + StarRating.prototype.decrement = function () { + var absDiff = Math.abs(this.rating % this.step); + this.rating = this.rating - (absDiff > 0 ? absDiff : this.step); + }; + StarRating.prototype.reset = function () { + this.rating = 0; + }; + return StarRating; +}()); +var StarRatingConfigService = /** @class */ (function () { + function StarRatingConfigService() { + this._classEmpty = "default-star-empty-icon"; + this._classHalf = "default-star-half-icon"; + this._classFilled = "default-star-filled-icon"; + this._numOfStars = 5; + this._size = "medium"; + this._labelPosition = "left"; + this._speed = "noticeable"; + this._starType = "svg"; + this._assetsPath = "assets/images/"; + this._svgPath = this.assetsPath + "star-rating.icons.svg"; + this._svgEmptySymbolId = "star-empty"; + this._svgHalfSymbolId = "star-half"; + this._svgFilledSymbolId = "star-filled"; + this._svgPathEmpty = this.svgPath + "#" + this.svgEmptySymbolId; + this._svgPathHalf = this.svgPath + "#" + this.svgHalfSymbolId; + this._svgPathFilled = this.svgPath + "#" + this.svgFilledSymbolId; + } + Object.defineProperty(StarRatingConfigService.prototype, "classEmpty", { + get: function () { + return this._classEmpty; + }, + set: function (classEmpty) { + this._classEmpty = classEmpty; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "classHalf", { + get: function () { + return this._classHalf; + }, + set: function (classHalf) { + this._classHalf = classHalf; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "classFilled", { + get: function () { + return this._classFilled; + }, + set: function (classFilled) { + this._classFilled = classFilled; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "numOfStars", { + get: function () { + return this._numOfStars; + }, + set: function (numOfStars) { + this._numOfStars = numOfStars; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "size", { + get: function () { + return this._size; + }, + set: function (size) { + this._size = size; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "staticColor", { + get: function () { + return this._staticColor; + }, + set: function (value) { + this._staticColor = value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "labelPosition", { + get: function () { + return this._labelPosition; + }, + set: function (labelPosition) { + this._labelPosition = labelPosition; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "speed", { + get: function () { + return this._speed; + }, + set: function (speed) { + this._speed = speed; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "starType", { + get: function () { + return this._starType; + }, + set: function (starType) { + this._starType = starType; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "assetsPath", { + get: function () { + return this._assetsPath; + }, + set: function (assetsPath) { + this._assetsPath = assetsPath; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPath", { + get: function () { + return this._svgPath; + }, + set: function (svgPath) { + this._svgPath = svgPath; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgEmptySymbolId", { + get: function () { + return this._svgEmptySymbolId; + }, + set: function (svgEmptySymbolId) { + this._svgEmptySymbolId = svgEmptySymbolId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgHalfSymbolId", { + get: function () { + return this._svgHalfSymbolId; + }, + set: function (svgHalfSymbolId) { + this._svgHalfSymbolId = svgHalfSymbolId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgFilledSymbolId", { + get: function () { + return this._svgFilledSymbolId; + }, + set: function (svgFilledSymbolId) { + this._svgFilledSymbolId = svgFilledSymbolId; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPathEmpty", { + get: function () { + return this._svgPathEmpty; + }, + set: function (svgPathEmpty) { + this._svgPathEmpty = svgPathEmpty; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPathHalf", { + get: function () { + return this._svgPathHalf; + }, + set: function (svgPathHalf) { + this._svgPathHalf = svgPathHalf; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(StarRatingConfigService.prototype, "svgPathFilled", { + get: function () { + return this._svgPathFilled; + }, + set: function (svgPathFilled) { + this._svgPathFilled = svgPathFilled; + }, + enumerable: true, + configurable: true + }); + StarRatingConfigService.prototype.getColor = function (rating, numOfStars, staticColor) { + rating = rating || 0; + if (staticColor) { + return staticColor; + } + var fractionSize = numOfStars / 3; + var color = 'default'; + if (rating > 0) { + color = 'negative'; + } + if (rating > fractionSize) { + color = 'ok'; + } + if (rating > fractionSize * 2) { + color = 'positive'; + } + return color; + }; + StarRatingConfigService.prototype.getHalfStarVisible = function (rating) { + return Math.abs(rating % 1) > 0; + }; + return StarRatingConfigService; +}()); +var STAR_RATING_CONTROL_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(function () { return StarRatingComponent; }), + multi: true +}; +var StarRatingComponent = /** @class */ (function (_super) { + __extends(StarRatingComponent, _super); + function StarRatingComponent(config) { + var _this = _super.call(this, config) || this; + _this.clickEmitter = new EventEmitter(); + _this.ratingChangeEmitter = new EventEmitter(); + _this.hoverRatingChangeEmitter = new EventEmitter(); + _this.onModelChangeRegistered = false; + _this.onTouchRegistered = false; + return _this; + } + StarRatingComponent.prototype.saveOnClick = function ($event) { + if (this.clickEmitter) { + this.clickEmitter.emit($event); + } + }; + StarRatingComponent.prototype.saveOnRatingChange = function ($event) { + if (this.ratingChangeEmitter) { + this.ratingChangeEmitter.emit($event); + } + }; + StarRatingComponent.prototype.saveOnHover = function ($event) { + if (this.hoverRatingChangeEmitter) { + this.hoverRatingChangeEmitter.emit($event); + } + }; + StarRatingComponent.prototype.saveOnTouch = function () { + if (this.onTouchRegistered) { + this.onTouch(); + } + }; + StarRatingComponent.prototype.saveOnModelChange = function (value) { + if (this.onModelChangeRegistered) { + this.onModelChange(value); + } + }; + StarRatingComponent.prototype.onKeyDown = function (event) { + var _this = this; + if (!this.interactionPossible()) { + return; + } + var handlers = { + Minus: function () { return _this.decrement(); }, + ArrowDown: function () { return _this.decrement(); }, + ArrowLeft: function () { return _this.decrement(); }, + Plus: function () { return _this.increment(); }, + ArrowRight: function () { return _this.increment(); }, + ArrowUp: function () { return _this.increment(); }, + Backspace: function () { return _this.reset(); }, + Delete: function () { return _this.reset(); }, + Digit0: function () { return _this.reset(); } + }; + var handleDigits = function (eventCode) { + var dStr = "Digit"; + var digit = parseInt(eventCode.substr(dStr.length, eventCode.length - 1)); + _this.rating = digit; + }; + if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) { + if (StarRatingUtils.isDigitKeyEventCode(event['code'])) { + handleDigits(event['code']); + } + else { + handlers[event['code']](); + } + event.preventDefault(); + event.stopPropagation(); + } + this.saveOnTouch(); + }; + StarRatingComponent.prototype.onBlur = function (event) { + this.focus = false; + event.preventDefault(); + event.stopPropagation(); + this.saveOnTouch(); + }; + StarRatingComponent.prototype.onFocus = function (event) { + this.focus = true; + event.preventDefault(); + event.stopPropagation(); + this.saveOnTouch(); + }; + StarRatingComponent.prototype.onStarHover = function (rating) { + if (!this.interactionPossible() || !this.hoverEnabled) { + return; + } + this.hoverRating = rating ? parseInt(rating.toString()) : 0; + var $event = { hoverRating: this.hoverRating }; + this.saveOnHover($event); + }; + StarRatingComponent.prototype.writeValue = function (obj) { + this.rating = obj; + }; + StarRatingComponent.prototype.registerOnChange = function (fn) { + this.onModelChange = fn; + this.onModelChangeRegistered = true; + }; + StarRatingComponent.prototype.registerOnTouched = function (fn) { + this.onTouch = fn; + this.onTouchRegistered = true; + }; + StarRatingComponent.prototype.setRating = function (value) { + var initValue = this.rating; + _super.prototype.setRating.call(this, value); + if (initValue !== this.rating) { + var $event = { rating: this.rating }; + this.saveOnRatingChange($event); + this.saveOnModelChange(this.rating); + } + }; + + StarRatingComponent.prototype.onStarClicked = function (rating) { + if (!this.interactionPossible()) { + return; + } + this.rating = rating; + var onClickEventObject = { + rating: this.rating + }; + this.saveOnClick(onClickEventObject); + }; + return StarRatingComponent; +}(StarRating)); +StarRatingComponent.decorators = [ + { type: Component, args: [{ + selector: 'star-rating-comp', + providers: [STAR_RATING_CONTROL_ACCESSOR], + inputs: [ + 'getHalfStarVisible', + 'getColor', + 'showHalfStars', + 'hoverEnabled', + 'rating', + 'step', + 'disabled', + 'readOnly', + 'space', + 'starType', + 'size', + 'speed', + 'numOfStars', + 'direction', + 'staticColor', + 'labelPosition', + 'labelText', + 'id' + ], + outputs: [ + 'clickEmitter', + 'ratingChangeEmitter', + 'hoverRatingChangeEmitter' + ], + styles: [], + template: "
\n asfasfdasf
{{labelText}}
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
" + },] }, +]; +StarRatingComponent.ctorParameters = function () { return [ + { type: StarRatingConfigService, }, +]; }; +var DECLARATIONS = [StarRatingComponent]; +var EXPORTS = [DECLARATIONS]; +var StarRatingModule = /** @class */ (function () { + function StarRatingModule() { + } + StarRatingModule.forRoot = function () { + return { + ngModule: StarRatingModule, + providers: [ + StarRatingConfigService + ] + }; + }; + StarRatingModule.forChild = function () { + return { + ngModule: StarRatingModule, + providers: [] + }; + }; + return StarRatingModule; +}()); +StarRatingModule.decorators = [ + { type: NgModule, args: [{ + imports: [CommonModule], + declarations: [DECLARATIONS], + exports: [EXPORTS] + },] }, +]; +StarRatingModule.ctorParameters = function () { return []; }; + +export { StarRatingConfig, StarRatingUtils, StarRating, StarRatingConfigService, StarRatingComponent, StarRatingModule }; +//# sourceMappingURL=angular-star-rating.js.map diff --git a/@packaged/angular-star-rating/esm5/angular-star-rating.js.map b/@packaged/angular-star-rating/esm5/angular-star-rating.js.map new file mode 100644 index 0000000..b694366 --- /dev/null +++ b/@packaged/angular-star-rating/esm5/angular-star-rating.js.map @@ -0,0 +1,24 @@ +{ + "version": 3, + "file": "angular-star-rating.js", + "sources": [ + "ng://angular-star-rating/out/src/angular-star-rating.module.ts", + "ng://angular-star-rating/out/src/components/star-rating.component.ts", + "ng://angular-star-rating/out/src/services/star-rating-config.service.ts", + "ng://angular-star-rating/out/src/services/star-rating.ts", + "ng://angular-star-rating/out/src/services/star-rating.utils.ts", + "ng://angular-star-rating/out/src/interfaces/star-rating-config.interface.ts" + ], + "sourcesContent": [ + "import {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {StarRatingComponent} from './components/star-rating.component';\nimport {StarRatingConfigService} from './services/star-rating-config.service';\n\nconst DECLARATIONS = [StarRatingComponent];\nconst EXPORTS = [DECLARATIONS];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [DECLARATIONS],\n exports: [EXPORTS]\n})\nexport class StarRatingModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: [\n StarRatingConfigService\n ]\n }\n }\n\n static forChild(): ModuleWithProviders {\n return {\n ngModule: StarRatingModule,\n providers: []\n }\n }\n}\n", + "import {Component, EventEmitter, forwardRef, Input} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {ClickEvent} from '../interfaces/click-event.interface';\r\nimport {HoverRatingChangeEvent} from '../interfaces/hover-rating-change-event.interface';\r\nimport {RatingChangeEvent} from '../interfaces/rating-change-event.interface';\r\nimport {StarRating} from '../services/star-rating';\r\nimport {StarRatingConfigService} from '../services/star-rating-config.service';\r\nimport {StarRatingUtils} from '../services/star-rating.utils';\r\n\r\nconst STAR_RATING_CONTROL_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => StarRatingComponent),\r\n multi: true\r\n};\r\n\r\n@Component({\r\n selector: 'star-rating-comp',\r\n providers: [STAR_RATING_CONTROL_ACCESSOR],\r\n inputs: [\r\n 'getHalfStarVisible'\r\n , 'getColor'\r\n , 'showHalfStars'\r\n , 'hoverEnabled'\r\n , 'rating'\r\n , 'step'\r\n , 'disabled'\r\n , 'readOnly'\r\n , 'space'\r\n , 'starType'\r\n , 'size'\r\n , 'speed'\r\n , 'numOfStars'\r\n , 'direction'\r\n , 'staticColor'\r\n //, 'labelVisible'\r\n , 'labelPosition'\r\n , 'labelText'\r\n , 'id'\r\n ],\r\n outputs: [\r\n 'clickEmitter'\r\n , 'ratingChangeEmitter'\r\n , 'hoverRatingChangeEmitter'\r\n ],\r\n styles: [],\r\n template: `
\r\n
{{labelText}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
`\r\n})\r\nexport class StarRatingComponent extends StarRating implements ControlValueAccessor {\r\n\r\n //Outputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n clickEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnClick($event: ClickEvent) {\r\n if (this.clickEmitter) {\r\n this.clickEmitter.emit($event);\r\n }\r\n }\r\n\r\n ratingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnRatingChange($event: RatingChangeEvent) {\r\n if (this.ratingChangeEmitter) {\r\n this.ratingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n hoverRatingChangeEmitter: EventEmitter = new EventEmitter();\r\n\r\n saveOnHover($event: HoverRatingChangeEvent) {\r\n if (this.hoverRatingChangeEmitter) {\r\n this.hoverRatingChangeEmitter.emit($event);\r\n }\r\n }\r\n\r\n onTouch: Function;\r\n onModelChange: Function;\r\n private onModelChangeRegistered: boolean = false;\r\n private onTouchRegistered: boolean = false;\r\n\r\n saveOnTouch() {\r\n if (this.onTouchRegistered) {\r\n this.onTouch();\r\n }\r\n }\r\n\r\n saveOnModelChange(value: number) {\r\n if (this.onModelChangeRegistered) {\r\n this.onModelChange(value);\r\n }\r\n }\r\n\r\n /**ACCESSIBILITY **/\r\n\r\n //Keyboard events\r\n onKeyDown(event: KeyboardEvent) {\r\n\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n const handlers: any = {\r\n //Decrement\r\n Minus: () => this.decrement(),\r\n ArrowDown: () => this.decrement(),\r\n ArrowLeft: () => this.decrement(),\r\n\r\n //Increment\r\n Plus: () => this.increment(),\r\n ArrowRight: () => this.increment(),\r\n ArrowUp: () => this.increment(),\r\n\r\n //Reset\r\n Backspace: () => this.reset(),\r\n Delete: () => this.reset(),\r\n Digit0: () => this.reset()\r\n };\r\n\r\n const handleDigits = (eventCode: string): void => {\r\n let dStr = \"Digit\";\r\n let digit: number = parseInt(eventCode.substr(dStr.length, eventCode.length - 1));\r\n this.rating = digit;\r\n };\r\n\r\n if (handlers[event['code']] || StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n if (StarRatingUtils.isDigitKeyEventCode(event['code'])) {\r\n handleDigits(event['code']);\r\n } else {\r\n handlers[event['code']]();\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n this.saveOnTouch();\r\n }\r\n\r\n //Focus events\r\n onBlur(event: FocusEvent) {\r\n this.focus = false;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n onFocus(event: FocusEvent) {\r\n this.focus = true;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.saveOnTouch();\r\n }\r\n\r\n //Hover events\r\n onStarHover(rating?: number): void {\r\n\r\n if (!this.interactionPossible() || !this.hoverEnabled) {\r\n return;\r\n }\r\n\r\n this.hoverRating = rating ? parseInt(rating.toString()) : 0;\r\n\r\n //fire onHoverRatingChange event\r\n let $event: HoverRatingChangeEvent = {hoverRating: this.hoverRating};\r\n this.saveOnHover($event);\r\n\r\n\r\n }\r\n\r\n /**Form Control - ControlValueAccessor implementation**/\r\n\r\n writeValue(obj: any): void {\r\n this.rating = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn;\r\n this.onModelChangeRegistered = true;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouch = fn;\r\n this.onTouchRegistered = true;\r\n }\r\n\r\n constructor(config: StarRatingConfigService) {\r\n super(config);\r\n }\r\n\r\n //Overrides\r\n setRating(value: number): void {\r\n let initValue = this.rating;\r\n super.setRating(value);\r\n\r\n //if value changed trigger valueAccessor events and outputs\r\n if (initValue !== this.rating) {\r\n let $event: RatingChangeEvent = {rating: this.rating};\r\n this.saveOnRatingChange($event);\r\n\r\n this.saveOnModelChange(this.rating);\r\n }\r\n\r\n };\r\n\r\n /**\r\n * onStarClicked\r\n *\r\n * Is fired when a star is clicked. And updated the rating value.\r\n * This function returns if the disabled or readOnly\r\n * property is set. If provided it emits the onClick event\r\n * handler with the actual rating value.\r\n *\r\n * @param rating\r\n */\r\n onStarClicked(rating: number): void {\r\n\r\n //fire onClick event\r\n if (!this.interactionPossible()) {\r\n return;\r\n }\r\n\r\n this.rating = rating;\r\n\r\n let onClickEventObject: ClickEvent = {\r\n rating: this.rating\r\n };\r\n this.saveOnClick(onClickEventObject);\r\n\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarTypes,\r\n starRatingLabelPosition\r\n} from '../interfaces/star-rating-config.interface';\r\n\r\n/**\r\n * Configuration service for the StarRating component.\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the star ratings used in the application.\r\n */\r\nexport class StarRatingConfigService implements StarRatingConfig {\r\n\r\n _classEmpty = \"default-star-empty-icon\";\r\n\r\n get classEmpty() {\r\n return this._classEmpty;\r\n }\r\n\r\n set classEmpty(classEmpty: string) {\r\n this._classEmpty = classEmpty;\r\n }\r\n\r\n private _classHalf = \"default-star-half-icon\";\r\n\r\n get classHalf(): string {\r\n return this._classHalf;\r\n }\r\n\r\n set classHalf(classHalf: string) {\r\n this._classHalf = classHalf;\r\n }\r\n\r\n private _classFilled = \"default-star-filled-icon\";\r\n\r\n get classFilled(): string {\r\n return this._classFilled;\r\n }\r\n\r\n set classFilled(classFilled: string) {\r\n this._classFilled = classFilled;\r\n }\r\n\r\n private _numOfStars = 5;\r\n\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(numOfStars: number) {\r\n this._numOfStars = numOfStars;\r\n }\r\n\r\n private _size: starRatingSizes = \"medium\";\r\n\r\n get size(): starRatingSizes {\r\n return this._size;\r\n }\r\n\r\n set size(size: starRatingSizes) {\r\n this._size = size;\r\n }\r\n\r\n private _staticColor: starRatingColor;\r\n\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value;\r\n }\r\n\r\n private _labelPosition: starRatingLabelPosition = \"left\";\r\n\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(labelPosition: starRatingLabelPosition) {\r\n this._labelPosition = labelPosition;\r\n }\r\n\r\n private _speed: starRatingSpeed = \"noticeable\";\r\n\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(speed: starRatingSpeed) {\r\n this._speed = speed;\r\n }\r\n\r\n private _starType: starRatingStarTypes = \"svg\";\r\n\r\n get starType(): starRatingStarTypes {\r\n return this._starType;\r\n }\r\n\r\n set starType(starType: starRatingStarTypes) {\r\n this._starType = starType;\r\n }\r\n\r\n private _assetsPath = \"assets/images/\";\r\n\r\n get assetsPath(): string {\r\n return this._assetsPath;\r\n }\r\n\r\n set assetsPath(assetsPath: string) {\r\n this._assetsPath = assetsPath;\r\n }\r\n\r\n private _svgPath = this.assetsPath + \"star-rating.icons.svg\";\r\n\r\n get svgPath(): string {\r\n return this._svgPath;\r\n }\r\n\r\n set svgPath(svgPath: string) {\r\n this._svgPath = svgPath;\r\n }\r\n\r\n private _svgEmptySymbolId = \"star-empty\";\r\n\r\n get svgEmptySymbolId(): string {\r\n return this._svgEmptySymbolId;\r\n }\r\n\r\n set svgEmptySymbolId(svgEmptySymbolId: string) {\r\n this._svgEmptySymbolId = svgEmptySymbolId;\r\n }\r\n\r\n private _svgHalfSymbolId = \"star-half\";\r\n\r\n get svgHalfSymbolId(): string {\r\n return this._svgHalfSymbolId;\r\n }\r\n\r\n set svgHalfSymbolId(svgHalfSymbolId: string) {\r\n this._svgHalfSymbolId = svgHalfSymbolId;\r\n }\r\n\r\n private _svgFilledSymbolId = \"star-filled\";\r\n\r\n get svgFilledSymbolId(): string {\r\n return this._svgFilledSymbolId;\r\n }\r\n\r\n set svgFilledSymbolId(svgFilledSymbolId: string) {\r\n this._svgFilledSymbolId = svgFilledSymbolId;\r\n }\r\n\r\n private _svgPathEmpty: string = this.svgPath + \"#\" + this.svgEmptySymbolId;\r\n\r\n get svgPathEmpty(): string {\r\n return this._svgPathEmpty;\r\n }\r\n\r\n set svgPathEmpty(svgPathEmpty: string) {\r\n this._svgPathEmpty = svgPathEmpty;\r\n }\r\n\r\n private _svgPathHalf: string = this.svgPath + \"#\" + this.svgHalfSymbolId;\r\n\r\n get svgPathHalf(): string {\r\n return this._svgPathHalf;\r\n }\r\n\r\n set svgPathHalf(svgPathHalf: string) {\r\n this._svgPathHalf = svgPathHalf;\r\n }\r\n\r\n private _svgPathFilled: string = this.svgPath + \"#\" + this.svgFilledSymbolId;\r\n\r\n get svgPathFilled(): string {\r\n return this._svgPathFilled;\r\n }\r\n\r\n set svgPathFilled(svgPathFilled: string) {\r\n this._svgPathFilled = svgPathFilled;\r\n }\r\n\r\n getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n // if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n // calculate size of smallest fraction\r\n const fractionSize = numOfStars / 3;\r\n\r\n // apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n}\r\n", + "import {\r\n StarRatingConfig,\r\n starRatingColor,\r\n starRatingDirection,\r\n starRatingLabelPosition,\r\n starRatingSizes,\r\n starRatingSpeed,\r\n starRatingStarSpace,\r\n starRatingStarTypes\r\n} from '../interfaces/star-rating-config.interface';\r\nimport {StarRatingConfigService} from './star-rating-config.service';\r\nimport {StarRatingUtils} from './star-rating.utils';\r\n\r\nexport class StarRating {\r\n\r\n protected config: StarRatingConfig;\r\n\r\n //Inputs\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /**\r\n * id property to identify the DOM element\r\n */\r\n protected _id: string;\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || '';\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * focus\r\n */\r\n protected _focus: boolean;\r\n get focus(): boolean {\r\n return this._focus;\r\n }\r\n\r\n set focus(value: boolean) {\r\n this._focus = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelText\r\n */\r\n protected _labelText: string;\r\n get labelText(): string {\r\n return this._labelText;\r\n }\r\n\r\n set labelText(value: string) {\r\n this._labelText = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelPosition\r\n */\r\n protected _labelPosition: starRatingLabelPosition;\r\n get labelPosition(): starRatingLabelPosition {\r\n return this._labelPosition;\r\n }\r\n\r\n set labelPosition(value: starRatingLabelPosition) {\r\n this._labelPosition = value || this.config.labelPosition;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * labelVisible\r\n */\r\n protected _labelVisible: boolean;\r\n get labelVisible(): boolean {\r\n return this._labelVisible;\r\n }\r\n\r\n set labelVisible(value: boolean) {\r\n this._labelVisible = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverEnabled\r\n */\r\n protected _hoverEnabled: boolean;\r\n get hoverEnabled(): boolean {\r\n return this._hoverEnabled;\r\n }\r\n\r\n set hoverEnabled(value: boolean) {\r\n this._hoverEnabled = (value !== undefined) ? !!value : false;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * staticColor\r\n */\r\n protected _staticColor: starRatingColor;\r\n get staticColor(): starRatingColor {\r\n return this._staticColor;\r\n }\r\n\r\n set staticColor(value: starRatingColor) {\r\n this._staticColor = value || this.config.staticColor || undefined;\r\n\r\n //update color.\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * direction\r\n */\r\n protected _direction: starRatingDirection;\r\n get direction(): starRatingDirection {\r\n return this._direction;\r\n }\r\n\r\n set direction(value: starRatingDirection) {\r\n this._direction = value || undefined;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n\r\n /**\r\n * numOfStars\r\n */\r\n protected _numOfStars: number;\r\n get numOfStars(): number {\r\n return this._numOfStars;\r\n }\r\n\r\n set numOfStars(value: number) {\r\n this._numOfStars = (value > 0) ? value : this.config.numOfStars;\r\n\r\n //update stars array\r\n this.stars = StarRatingUtils.getStarsArray(this.numOfStars);\r\n\r\n //update color\r\n this.setColor();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * hoverRating\r\n */\r\n protected _hoverRating: number;\r\n get hoverRating(): number {\r\n return this._hoverRating;\r\n }\r\n\r\n set hoverRating(value: number) {\r\n this._hoverRating = (value > 0) ? value : 0;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * speed\r\n */\r\n protected _speed: starRatingSpeed;\r\n get speed(): starRatingSpeed {\r\n return this._speed;\r\n }\r\n\r\n set speed(value: starRatingSpeed) {\r\n this._speed = value || this.config.speed;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * size\r\n */\r\n protected _size: starRatingSizes;\r\n get size(): starRatingSizes {\r\n return this._size || this.config.size;\r\n }\r\n\r\n set size(value: starRatingSizes) {\r\n this._size = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * starType\r\n */\r\n protected _starType: starRatingStarTypes;\r\n get starType(): starRatingStarTypes {\r\n return this._starType || this.config.starType;\r\n }\r\n\r\n set starType(value: starRatingStarTypes) {\r\n this._starType = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * space\r\n */\r\n protected _space: starRatingStarSpace;\r\n get space(): starRatingStarSpace {\r\n return this._space;\r\n }\r\n\r\n set space(value: starRatingStarSpace) {\r\n this._space = value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * readOnly\r\n */\r\n protected _readOnly: boolean;\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n\r\n set readOnly(value: boolean) {\r\n this._readOnly = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * disabled\r\n */\r\n protected _disabled: boolean;\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = !!value;\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n private _step: number;\r\n get step(): number {\r\n return this._step;\r\n }\r\n\r\n set step(value: number) {\r\n this._step = (value > 0 ? value : 1);\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * rating\r\n */\r\n protected _rating: number;\r\n get rating(): number {\r\n return this._rating;\r\n }\r\n\r\n /**\r\n * setRating\r\n * I use a setter function instead of a set method to enable overrides for this function.\r\n * @param value\r\n */\r\n setRating(value: number) {\r\n //validate and apply newRating\r\n let newRating: number = 0;\r\n if (value >= 0\r\n && value <= this.numOfStars) {\r\n newRating = value;\r\n }\r\n\r\n //limit max value to max number of stars\r\n if (value > this.numOfStars) {\r\n newRating = this.numOfStars;\r\n }\r\n this._rating = newRating;\r\n\r\n //update ratingAsInteger. rating parsed to int for the value-[n] modifier\r\n this.ratingAsInteger = parseInt(this._rating.toString());\r\n\r\n //update halfStarsVisible\r\n this.setHalfStarVisible();\r\n\r\n //update calculated Color\r\n this.setColor();\r\n\r\n }\r\n\r\n set rating(value: number) {\r\n this.setRating(value);\r\n }\r\n\r\n /**\r\n * showHalfStars\r\n */\r\n protected _showHalfStars: boolean;\r\n get showHalfStars(): boolean {\r\n return this._showHalfStars;\r\n }\r\n\r\n set showHalfStars(value: boolean) {\r\n this._showHalfStars = !!value;\r\n\r\n //update halfStarVisible\r\n this.setHalfStarVisible();\r\n }\r\n\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getColor\r\n */\r\n getColor: (rating: number, numOfStars: number, staticColor?: starRatingColor) => starRatingColor;\r\n /////////////////////////////////////////////\r\n\r\n /**\r\n * getHalfStarVisible\r\n */\r\n getHalfStarVisible: (rating: number) => boolean;\r\n /////////////////////////////////////////////\r\n\r\n //CTRL ONLY\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n classEmpty: string;\r\n classHalf: string;\r\n classFilled: string;\r\n\r\n pathEmpty: string;\r\n pathHalf: string;\r\n pathFilled: string;\r\n\r\n color: starRatingColor;\r\n stars: Array;\r\n ratingAsInteger: number;\r\n halfStarVisible: boolean;\r\n\r\n constructor(config: StarRatingConfigService) {\r\n\r\n this.config = config;\r\n\r\n //set default ctrl props\r\n this.classEmpty = this.config.classEmpty;\r\n this.classHalf = this.config.classHalf;\r\n this.classFilled = this.config.classFilled;\r\n this.pathEmpty = this.config.svgPathEmpty;\r\n this.pathHalf = this.config.svgPathHalf;\r\n this.pathFilled = this.config.svgPathFilled;\r\n\r\n //set default Component Inputs\r\n if ('getColor' in this.config && typeof this.config.getColor === \"function\") {\r\n this.getColor = this.config.getColor;\r\n }\r\n\r\n if ('getHalfStarVisible' in this.config && typeof this.config.getHalfStarVisible === \"function\") {\r\n this.getHalfStarVisible = this.config.getHalfStarVisible;\r\n }\r\n\r\n this.numOfStars = this.config.numOfStars;\r\n this.rating = 0;\r\n this.step = 1;\r\n\r\n }\r\n\r\n svgVisible(): boolean {\r\n return this.starType === \"svg\";\r\n }\r\n\r\n interactionPossible(): boolean {\r\n return !this.readOnly && !this.disabled;\r\n }\r\n\r\n setColor(): void {\r\n //check if custom function is given\r\n if (typeof this.getColor === \"function\") {\r\n this.color = this.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n else {\r\n this.color = StarRatingUtils.getColor(this.rating, this.numOfStars, this.staticColor);\r\n }\r\n }\r\n\r\n setHalfStarVisible(): void {\r\n //update halfStarVisible\r\n if (this.showHalfStars) {\r\n //check if custom function is given\r\n if (typeof this.getHalfStarVisible === \"function\") {\r\n this.halfStarVisible = this.getHalfStarVisible(this.rating);\r\n } else {\r\n this.halfStarVisible = StarRatingUtils.getHalfStarVisible(this.rating);\r\n }\r\n\r\n }\r\n else {\r\n this.halfStarVisible = false;\r\n }\r\n }\r\n\r\n getComponentClassNames(): string {\r\n let classNames: string[] = [];\r\n\r\n classNames.push(this.rating ? 'value-' + this.ratingAsInteger : 'value-0');\r\n classNames.push(this.halfStarVisible ? 'half' : '');\r\n classNames.push(this.hoverEnabled ? 'hover' : '');\r\n\r\n let hoverRating = (this.hoverRating ? 'hover-' + this.hoverRating : 'hover-0');\r\n classNames.push(this.hoverEnabled ? hoverRating : '');\r\n\r\n classNames.push(this.space ? 'space-' + this.space : '');\r\n classNames.push(this.labelPosition ? 'label-' + this.labelPosition : '');\r\n classNames.push(this.color ? 'color-' + this.color : '');\r\n classNames.push(this.starType ? 'star-' + this.starType : '');\r\n classNames.push(this.speed);\r\n classNames.push(this.size);\r\n classNames.push(this.readOnly ? 'read-only' : '');\r\n classNames.push(this.disabled ? 'disabled' : '');\r\n classNames.push(this.direction ? 'direction-' + this.direction : '');\r\n\r\n return classNames.join(' ');\r\n }\r\n\r\n increment() {\r\n //increment to next higher step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating + (absDiff > 0 ? this.step - absDiff : this.step);\r\n }\r\n\r\n decrement() {\r\n //decrement to next lower step\r\n let absDiff = Math.abs(this.rating % this.step);\r\n this.rating = this.rating - (absDiff > 0 ? absDiff : this.step);\r\n }\r\n\r\n reset() {\r\n this.rating = 0;\r\n }\r\n\r\n}\r\n", + "import {starRatingColor} from '../interfaces/star-rating-config.interface';\r\nexport class StarRatingUtils {\r\n //Static methods\r\n ///////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n /*\r\n * getStarsArray\r\n *\r\n * returns an array of increasing numbers starting at 1\r\n *\r\n * @param numOfStars\r\n * @returns {Array}\r\n */\r\n static getStarsArray(numOfStars: number): Array {\r\n let stars: Array = [];\r\n for (let i = 0; i < numOfStars; i++) {\r\n stars.push(i + 1);\r\n }\r\n return stars;\r\n }\r\n\r\n /*\r\n * getHalfStarVisible\r\n *\r\n * Returns true if there should be a half star visible, and false if not.\r\n *\r\n * @param rating\r\n * @returns {boolean}\r\n */\r\n static getHalfStarVisible(rating: number): boolean {\r\n return Math.abs(rating % 1) > 0;\r\n }\r\n\r\n /*\r\n * getColor\r\n *\r\n * The default function for color calculation\r\n * based on the current rating and the the number of stars possible.\r\n * If a staticColor is set the function will use it as return value.\r\n *\r\n * @param rating\r\n * @param numOfStars\r\n * @param staticColor\r\n * @returns {starRatingColor}\r\n */\r\n static getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor {\r\n rating = rating || 0;\r\n\r\n //if a fix color is set use this one\r\n if (staticColor) {\r\n return staticColor;\r\n }\r\n\r\n //calculate size of smallest fraction\r\n let fractionSize = numOfStars / 3;\r\n\r\n //apply color by fraction\r\n let color: starRatingColor = 'default';\r\n if (rating > 0) {\r\n color = 'negative';\r\n }\r\n if (rating > fractionSize) {\r\n color = 'ok';\r\n }\r\n if (rating > fractionSize * 2) {\r\n color = 'positive';\r\n }\r\n\r\n return color;\r\n }\r\n\r\n /*\r\n * isDigitKeyEventCode\r\n * detects digit key event sodes\r\n * @param eventCode\r\n * @returns {boolean}\r\n */\r\n static isDigitKeyEventCode(eventCode: string): boolean {\r\n return eventCode.indexOf('Digit') === 0;\r\n };\r\n\r\n}\r\n", + "export type starRatingSizes = 'small' | 'medium' | 'large';\r\nexport type starRatingColor = 'default' | 'negative' | 'ok' | 'positive';\r\nexport type starRatingSpeed = 'immediately' | 'noticeable' | 'slow';\r\nexport type starRatingLabelPosition = 'left' | 'right' | 'top' | 'bottom';\r\nexport type starRatingStarTypes = 'svg' | 'icon' | 'image';\r\nexport type starRatingStarSpace= 'no' | 'between' | 'around';\r\nexport type starRatingDirection= 'rtl' | 'ltr';\r\n\r\nexport class StarRatingConfig {\r\n // binding defaults\r\n numOfStars?: number;\r\n size?: starRatingSizes;\r\n speed?: starRatingSpeed;\r\n labelPosition?: starRatingLabelPosition;\r\n starType?: starRatingStarTypes;\r\n staticColor: starRatingColor;\r\n getColor?: (rating: number, numOfStars: number, staticColor?: starRatingColor)=> starRatingColor;\r\n getHalfStarVisible?:(rating: number) => boolean\r\n // statics\r\n classEmpty?: string;\r\n classHalf?: string;\r\n classFilled?: string;\r\n assetsPath?: string;\r\n svgPath?: string;\r\n svgEmptySymbolId?: string;\r\n svgHalfSymbolId?: string;\r\n svgFilledSymbolId?: string;\r\n svgPathEmpty?: string;\r\n svgPathHalf?: string;\r\n svgPathFilled?: string;\r\n}\r\n" + ], + "names": [ + "tslib_1.__extends" + ], + "mappings": "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" +} diff --git a/@packaged/angular-star-rating/index.d.ts b/@packaged/angular-star-rating/index.d.ts new file mode 100644 index 0000000..e974d6b --- /dev/null +++ b/@packaged/angular-star-rating/index.d.ts @@ -0,0 +1,9 @@ +export { ClickEvent } from './src/interfaces/click-event.interface'; +export { HoverRatingChangeEvent } from './src/interfaces/hover-rating-change-event.interface'; +export { RatingChangeEvent } from './src/interfaces/rating-change-event.interface'; +export { StarRatingConfig } from './src/interfaces/star-rating-config.interface'; +export { StarRatingUtils } from './src/services/star-rating.utils'; +export { StarRating } from './src/services/star-rating'; +export { StarRatingConfigService } from './src/services/star-rating-config.service'; +export { StarRatingComponent } from './src/components/star-rating.component'; +export { StarRatingModule } from './src/angular-star-rating.module'; diff --git a/@packaged/angular-star-rating/package.json b/@packaged/angular-star-rating/package.json new file mode 100644 index 0000000..e748b22 --- /dev/null +++ b/@packaged/angular-star-rating/package.json @@ -0,0 +1,59 @@ +{ + "$schema": "../../node_modules/ng-packagr/package.schema.json", + "name": "angular-star-rating", + "description": "Angular Star Rating is a fully featured and configurabel Angular UI component.", + "version": "4.0.0-beta.0", + "homepage": "https://github.com/BioPhoton/angular-star-rating#readme", + "repository": { + "type": "git", + "url": "https://github.com/BioPhoton/angular-star-rating" + }, + "author": { + "name": "Michael Hladky", + "email": "michael@hladky.at" + }, + "contributors": [ + { + "name": "Michael Hladky", + "email": "michael@hladky.at" + } + ], + "keywords": [ + "Rating", + "Stars", + "Star Rating", + "Star-Rating", + "star-rating", + "Starrating", + "Icon", + "SVG", + "CSS", + "Pure CSS", + "CSS only", + "JavaScript", + "Angular", + "Angular Component", + "Angular2", + "Angular2 Component", + "Typescript" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/BioPhoton/angular-star-rating/issues" + }, + "module": "esm5/angular-star-rating.js", + "typings": "angular-star-rating.d.ts", + "peerDependencies": { + "@angular/core": "^4.0.0 || ^5.0.0", + "@angular/forms": "^4.0.0 || ^5.0.0", + "rxjs": "^5.1.0", + "zone.js": "^0.8.4", + "css-star-rating": "^2.4.1" + }, + "main": "bundles/angular-star-rating.umd.js", + "es2015": "esm2015/angular-star-rating.js", + "metadata": "angular-star-rating.metadata.json", + "dependencies": { + "tslib": "^1.7.1" + } +} diff --git a/@packaged/angular-star-rating/src/angular-star-rating.module.d.ts b/@packaged/angular-star-rating/src/angular-star-rating.module.d.ts new file mode 100644 index 0000000..ccf8e71 --- /dev/null +++ b/@packaged/angular-star-rating/src/angular-star-rating.module.d.ts @@ -0,0 +1,5 @@ +import { ModuleWithProviders } from '@angular/core'; +export declare class StarRatingModule { + static forRoot(): ModuleWithProviders; + static forChild(): ModuleWithProviders; +} diff --git a/@packaged/angular-star-rating/src/components/star-rating.component.d.ts b/@packaged/angular-star-rating/src/components/star-rating.component.d.ts new file mode 100644 index 0000000..3703a6a --- /dev/null +++ b/@packaged/angular-star-rating/src/components/star-rating.component.d.ts @@ -0,0 +1,43 @@ +import { EventEmitter } from '@angular/core'; +import { ControlValueAccessor } from '@angular/forms'; +import { ClickEvent } from '../interfaces/click-event.interface'; +import { HoverRatingChangeEvent } from '../interfaces/hover-rating-change-event.interface'; +import { RatingChangeEvent } from '../interfaces/rating-change-event.interface'; +import { StarRating } from '../services/star-rating'; +import { StarRatingConfigService } from '../services/star-rating-config.service'; +export declare class StarRatingComponent extends StarRating implements ControlValueAccessor { + clickEmitter: EventEmitter; + saveOnClick($event: ClickEvent): void; + ratingChangeEmitter: EventEmitter; + saveOnRatingChange($event: RatingChangeEvent): void; + hoverRatingChangeEmitter: EventEmitter; + saveOnHover($event: HoverRatingChangeEvent): void; + onTouch: Function; + onModelChange: Function; + private onModelChangeRegistered; + private onTouchRegistered; + saveOnTouch(): void; + saveOnModelChange(value: number): void; + /**ACCESSIBILITY **/ + onKeyDown(event: KeyboardEvent): void; + onBlur(event: FocusEvent): void; + onFocus(event: FocusEvent): void; + onStarHover(rating?: number): void; + /**Form Control - ControlValueAccessor implementation**/ + writeValue(obj: any): void; + registerOnChange(fn: any): void; + registerOnTouched(fn: any): void; + constructor(config: StarRatingConfigService); + setRating(value: number): void; + /** + * onStarClicked + * + * Is fired when a star is clicked. And updated the rating value. + * This function returns if the disabled or readOnly + * property is set. If provided it emits the onClick event + * handler with the actual rating value. + * + * @param rating + */ + onStarClicked(rating: number): void; +} diff --git a/@packaged/angular-star-rating/src/interfaces/click-event.interface.d.ts b/@packaged/angular-star-rating/src/interfaces/click-event.interface.d.ts new file mode 100644 index 0000000..47ca820 --- /dev/null +++ b/@packaged/angular-star-rating/src/interfaces/click-event.interface.d.ts @@ -0,0 +1,3 @@ +export interface ClickEvent { + rating: number; +} diff --git a/@packaged/angular-star-rating/src/interfaces/hover-rating-change-event.interface.d.ts b/@packaged/angular-star-rating/src/interfaces/hover-rating-change-event.interface.d.ts new file mode 100644 index 0000000..4f2d2eb --- /dev/null +++ b/@packaged/angular-star-rating/src/interfaces/hover-rating-change-event.interface.d.ts @@ -0,0 +1,3 @@ +export interface HoverRatingChangeEvent { + hoverRating: number; +} diff --git a/@packaged/angular-star-rating/src/interfaces/rating-change-event.interface.d.ts b/@packaged/angular-star-rating/src/interfaces/rating-change-event.interface.d.ts new file mode 100644 index 0000000..95a7b4d --- /dev/null +++ b/@packaged/angular-star-rating/src/interfaces/rating-change-event.interface.d.ts @@ -0,0 +1,3 @@ +export interface RatingChangeEvent { + rating: number; +} diff --git a/@packaged/angular-star-rating/src/interfaces/star-rating-config.interface.d.ts b/@packaged/angular-star-rating/src/interfaces/star-rating-config.interface.d.ts new file mode 100644 index 0000000..a525282 --- /dev/null +++ b/@packaged/angular-star-rating/src/interfaces/star-rating-config.interface.d.ts @@ -0,0 +1,28 @@ +export declare type starRatingSizes = 'small' | 'medium' | 'large'; +export declare type starRatingColor = 'default' | 'negative' | 'ok' | 'positive'; +export declare type starRatingSpeed = 'immediately' | 'noticeable' | 'slow'; +export declare type starRatingLabelPosition = 'left' | 'right' | 'top' | 'bottom'; +export declare type starRatingStarTypes = 'svg' | 'icon' | 'image'; +export declare type starRatingStarSpace = 'no' | 'between' | 'around'; +export declare type starRatingDirection = 'rtl' | 'ltr'; +export declare class StarRatingConfig { + numOfStars?: number; + size?: starRatingSizes; + speed?: starRatingSpeed; + labelPosition?: starRatingLabelPosition; + starType?: starRatingStarTypes; + staticColor: starRatingColor; + getColor?: (rating: number, numOfStars: number, staticColor?: starRatingColor) => starRatingColor; + getHalfStarVisible?: (rating: number) => boolean; + classEmpty?: string; + classHalf?: string; + classFilled?: string; + assetsPath?: string; + svgPath?: string; + svgEmptySymbolId?: string; + svgHalfSymbolId?: string; + svgFilledSymbolId?: string; + svgPathEmpty?: string; + svgPathHalf?: string; + svgPathFilled?: string; +} diff --git a/@packaged/angular-star-rating/src/services/star-rating-config.service.d.ts b/@packaged/angular-star-rating/src/services/star-rating-config.service.d.ts new file mode 100644 index 0000000..43fc6e8 --- /dev/null +++ b/@packaged/angular-star-rating/src/services/star-rating-config.service.d.ts @@ -0,0 +1,44 @@ +import { StarRatingConfig, starRatingColor, starRatingSizes, starRatingSpeed, starRatingStarTypes, starRatingLabelPosition } from '../interfaces/star-rating-config.interface'; +/** + * Configuration service for the StarRating component. + * You can inject this service, typically in your root component, and customize the values of its properties in + * order to provide default values for all the star ratings used in the application. + */ +export declare class StarRatingConfigService implements StarRatingConfig { + _classEmpty: string; + classEmpty: string; + private _classHalf; + classHalf: string; + private _classFilled; + classFilled: string; + private _numOfStars; + numOfStars: number; + private _size; + size: starRatingSizes; + private _staticColor; + staticColor: starRatingColor; + private _labelPosition; + labelPosition: starRatingLabelPosition; + private _speed; + speed: starRatingSpeed; + private _starType; + starType: starRatingStarTypes; + private _assetsPath; + assetsPath: string; + private _svgPath; + svgPath: string; + private _svgEmptySymbolId; + svgEmptySymbolId: string; + private _svgHalfSymbolId; + svgHalfSymbolId: string; + private _svgFilledSymbolId; + svgFilledSymbolId: string; + private _svgPathEmpty; + svgPathEmpty: string; + private _svgPathHalf; + svgPathHalf: string; + private _svgPathFilled; + svgPathFilled: string; + getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor; + getHalfStarVisible(rating: number): boolean; +} diff --git a/@packaged/angular-star-rating/src/services/star-rating.d.ts b/@packaged/angular-star-rating/src/services/star-rating.d.ts new file mode 100644 index 0000000..1628a0e --- /dev/null +++ b/@packaged/angular-star-rating/src/services/star-rating.d.ts @@ -0,0 +1,130 @@ +import { StarRatingConfig, starRatingColor, starRatingDirection, starRatingLabelPosition, starRatingSizes, starRatingSpeed, starRatingStarSpace, starRatingStarTypes } from '../interfaces/star-rating-config.interface'; +import { StarRatingConfigService } from './star-rating-config.service'; +export declare class StarRating { + protected config: StarRatingConfig; + /** + * id property to identify the DOM element + */ + protected _id: string; + id: string; + /** + * focus + */ + protected _focus: boolean; + focus: boolean; + /** + * labelText + */ + protected _labelText: string; + labelText: string; + /** + * labelPosition + */ + protected _labelPosition: starRatingLabelPosition; + labelPosition: starRatingLabelPosition; + /** + * labelVisible + */ + protected _labelVisible: boolean; + labelVisible: boolean; + /** + * hoverEnabled + */ + protected _hoverEnabled: boolean; + hoverEnabled: boolean; + /** + * staticColor + */ + protected _staticColor: starRatingColor; + staticColor: starRatingColor; + /** + * direction + */ + protected _direction: starRatingDirection; + direction: starRatingDirection; + /** + * numOfStars + */ + protected _numOfStars: number; + numOfStars: number; + /** + * hoverRating + */ + protected _hoverRating: number; + hoverRating: number; + /** + * speed + */ + protected _speed: starRatingSpeed; + speed: starRatingSpeed; + /** + * size + */ + protected _size: starRatingSizes; + size: starRatingSizes; + /** + * starType + */ + protected _starType: starRatingStarTypes; + starType: starRatingStarTypes; + /** + * space + */ + protected _space: starRatingStarSpace; + space: starRatingStarSpace; + /** + * readOnly + */ + protected _readOnly: boolean; + readOnly: boolean; + /** + * disabled + */ + protected _disabled: boolean; + disabled: boolean; + private _step; + step: number; + /** + * rating + */ + protected _rating: number; + rating: number; + /** + * setRating + * I use a setter function instead of a set method to enable overrides for this function. + * @param value + */ + setRating(value: number): void; + /** + * showHalfStars + */ + protected _showHalfStars: boolean; + showHalfStars: boolean; + /** + * getColor + */ + getColor: (rating: number, numOfStars: number, staticColor?: starRatingColor) => starRatingColor; + /** + * getHalfStarVisible + */ + getHalfStarVisible: (rating: number) => boolean; + classEmpty: string; + classHalf: string; + classFilled: string; + pathEmpty: string; + pathHalf: string; + pathFilled: string; + color: starRatingColor; + stars: Array; + ratingAsInteger: number; + halfStarVisible: boolean; + constructor(config: StarRatingConfigService); + svgVisible(): boolean; + interactionPossible(): boolean; + setColor(): void; + setHalfStarVisible(): void; + getComponentClassNames(): string; + increment(): void; + decrement(): void; + reset(): void; +} diff --git a/@packaged/angular-star-rating/src/services/star-rating.utils.d.ts b/@packaged/angular-star-rating/src/services/star-rating.utils.d.ts new file mode 100644 index 0000000..c49c2cf --- /dev/null +++ b/@packaged/angular-star-rating/src/services/star-rating.utils.d.ts @@ -0,0 +1,7 @@ +import { starRatingColor } from '../interfaces/star-rating-config.interface'; +export declare class StarRatingUtils { + static getStarsArray(numOfStars: number): Array; + static getHalfStarVisible(rating: number): boolean; + static getColor(rating: number, numOfStars: number, staticColor?: starRatingColor): starRatingColor; + static isDigitKeyEventCode(eventCode: string): boolean; +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..58e79ec --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,203 @@ +
+# [4.0.0.0-beta](https://github.com/BioPhoton/angular-star-rating/compare/3.0.8...v) (2018-03-24) + + +### Bug Fixes + +* **update package.json peerDependencies:** Update package deps for angular 5.x fixes [#67](https://github.com/BioPhoton/angular-star-rating/issues/67) ([bc30186](https://github.com/BioPhoton/angular-star-rating/commit/bc30186)) + + +### Features + +* **move packaging to ngPackagr <3:** Switch the release and bundle process to ngPackagr ([9b4929e](https://github.com/BioPhoton/angular-star-rating/commit/9b4929e)), closes [#76](https://github.com/BioPhoton/angular-star-rating/issues/76) +* **setup automated release:** setup scripts implemented for [#78](https://github.com/BioPhoton/angular-star-rating/issues/78) ([49d9fec](https://github.com/BioPhoton/angular-star-rating/commit/49d9fec)) + + + + + + +## [3.0.8](https://github.com/BioPhoton/angular-star-rating/compare/3.0.7...3.0.8) (2017-08-23) + + + + +## [3.0.7](https://github.com/BioPhoton/angular-star-rating/compare/3.0.6...3.0.7) (2017-08-22) + + +### Bug Fixes + +* **dependencies:** add css-star-rating to dependencies ([591054b](https://github.com/BioPhoton/angular-star-rating/commit/591054b)) + + + + +## [3.0.6](https://github.com/BioPhoton/angular-star-rating/compare/3.0.5...3.0.6) (2017-08-22) + + + + +## [3.0.5](https://github.com/BioPhoton/angular-star-rating/compare/3.0.4...3.0.5) (2017-08-22) + + +### Bug Fixes + +* **dependencies:** added css to dependencies ([9c480c9](https://github.com/BioPhoton/angular-star-rating/commit/9c480c9)) + + + + +## [3.0.4](https://github.com/BioPhoton/angular-star-rating/compare/2.5.10...3.0.4) (2017-08-16) + + +### Bug Fixes + +* **feature rollback:** removed input binding ([23806b0](https://github.com/BioPhoton/angular-star-rating/commit/23806b0)) +* **features rollback:** label visible property binding ([b3459ff](https://github.com/BioPhoton/angular-star-rating/commit/b3459ff)) + + + + +## [2.5.10](https://github.com/BioPhoton/angular-star-rating/compare/0.5.10...2.5.10) (2017-07-07) + + + + +## [3.0.3](https://github.com/BioPhoton/angular-star-rating/compare/3.0.2...3.0.3) (2017-07-07) + + + + +## [3.0.2](https://github.com/BioPhoton/angular-star-rating/compare/v3.0.0...3.0.2) (2017-07-07) + + +### Bug Fixes + +* **module export:** implemented a forRoot method ([c5acad7](https://github.com/BioPhoton/angular-star-rating/commit/c5acad7)) + + + + +# [3.0.0](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.4...v3.0.0) (2017-05-29) + + +### Bug Fixes + +* **aot:** fixed build for AOT ([928bda8](https://github.com/BioPhoton/angular-star-rating/commit/928bda8)), closes [#22](https://github.com/BioPhoton/angular-star-rating/issues/22) +* **renaming:** renamed controller ([8131351](https://github.com/BioPhoton/angular-star-rating/commit/8131351)) + + + + +## [2.0.4](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.3...v2.0.4) (2017-05-28) + + + + +## [2.0.3](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.2...v2.0.3) (2017-04-29) + + + + +## [2.0.2](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.1...v2.0.2) (2017-04-29) + + +### Bug Fixes + +* **increment:** fixed increment function ([0f0e911](https://github.com/BioPhoton/angular-star-rating/commit/0f0e911)) +* **refactoring:** code readebility improved ([3364cbb](https://github.com/BioPhoton/angular-star-rating/commit/3364cbb)) + + +### Features + +* **hover:** implement on hover events and styles ([e5f9f2c](https://github.com/BioPhoton/angular-star-rating/commit/e5f9f2c)) +* **hover:** implemented examples for hover feature ([df5a9a4](https://github.com/BioPhoton/angular-star-rating/commit/df5a9a4)) +* **hover:** removed unused imports ([1586c0b](https://github.com/BioPhoton/angular-star-rating/commit/1586c0b)) +* **hover:** renamed callback ([68c8939](https://github.com/BioPhoton/angular-star-rating/commit/68c8939)) +* **hover:** updated readme ([3916f05](https://github.com/BioPhoton/angular-star-rating/commit/3916f05)) + + + + +## [2.0.1](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.0-rc.0...v2.0.1) (2017-04-12) + + + + +# [2.0.0-rc.0](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.0-beta.3...v2.0.0-rc.0) (2017-04-12) + + +### Bug Fixes + +* **examples:** updated examples ([b05d28e](https://github.com/BioPhoton/angular-star-rating/commit/b05d28e)) +* **examples:** updated examples ([a44ef30](https://github.com/BioPhoton/angular-star-rating/commit/a44ef30)) +* **fixed binding names:** fixed binding names and class names ([73cc7d0](https://github.com/BioPhoton/angular-star-rating/commit/73cc7d0)) +* **typings:** updated typings ([f4a1dd7](https://github.com/BioPhoton/angular-star-rating/commit/f4a1dd7)) +* **versions:** updated versions of libs ([fc28c88](https://github.com/BioPhoton/angular-star-rating/commit/fc28c88)) + + +### Features + +* **controlValueAccessor:** finished implement control value accessor ([5cb28d1](https://github.com/BioPhoton/angular-star-rating/commit/5cb28d1)), closes [#11](https://github.com/BioPhoton/angular-star-rating/issues/11) +* **controlValueAccessor:** updated examples ([2097b40](https://github.com/BioPhoton/angular-star-rating/commit/2097b40)) +* **direction and types:** added direction in component and changed type names ([c9ddaf5](https://github.com/BioPhoton/angular-star-rating/commit/c9ddaf5)) +* **keyboard:** finished keyboard implementation ([ca35e8a](https://github.com/BioPhoton/angular-star-rating/commit/ca35e8a)) +* **keybord interaction:** progress implementing keybord interaction ([b071567](https://github.com/BioPhoton/angular-star-rating/commit/b071567)) +* **keybord interaction:** star implementing keybord interaction ([a1a72ae](https://github.com/BioPhoton/angular-star-rating/commit/a1a72ae)) +* **labelVisible:** added labelVisible property ([16412dd](https://github.com/BioPhoton/angular-star-rating/commit/16412dd)) +* **refactoring:** enable overrides for set rating ([ae9749f](https://github.com/BioPhoton/angular-star-rating/commit/ae9749f)) +* **utils:** implement utils and controller class ([80ab369](https://github.com/BioPhoton/angular-star-rating/commit/80ab369)), closes [#12](https://github.com/BioPhoton/angular-star-rating/issues/12) +* **valueAccessor:** created new example for value accessor ([20bd211](https://github.com/BioPhoton/angular-star-rating/commit/20bd211)) +* **valueAccessor:** progress implementation ([ba1c664](https://github.com/BioPhoton/angular-star-rating/commit/ba1c664)) +* **valueAccessor:** progress implementing the value accessor for reactive forms ([059a0f9](https://github.com/BioPhoton/angular-star-rating/commit/059a0f9)) +* **valueAccessor:** progress implementing the value accessor for reactive froms ([cd8136d](https://github.com/BioPhoton/angular-star-rating/commit/cd8136d)) +* **valueAccessor:** start implement the value accessor for reactive froms ([d7adcf3](https://github.com/BioPhoton/angular-star-rating/commit/d7adcf3)) +* **valueAccessor:** start progress implementing the value accessor for reactive froms ([5c4e9be](https://github.com/BioPhoton/angular-star-rating/commit/5c4e9be)) +* **valueAccessor:** start progress implementing the value accessor for reactive froms ([0f27794](https://github.com/BioPhoton/angular-star-rating/commit/0f27794)) + + + + +# [2.0.0-beta2](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.0-beta.1...v2.0.0-beta2) (2017-04-06) + + + + +# [2.0.0-beta.1](https://github.com/BioPhoton/angular-star-rating/compare/v2.0.0-beta.0...v2.0.0-beta.1) (2017-01-31) + + +### Bug Fixes + +* **component:** updated component ([94ad8b6](https://github.com/BioPhoton/angular-star-rating/commit/94ad8b6)) +* **example:** updated angular2 example ([b89e3aa](https://github.com/BioPhoton/angular-star-rating/commit/b89e3aa)) +* **star rating:** progress star rating component ([a32a360](https://github.com/BioPhoton/angular-star-rating/commit/a32a360)) + + +### Features + +* **example:** added basic components ([8c2a50c](https://github.com/BioPhoton/angular-star-rating/commit/8c2a50c)) +* **example:** added test folder ([fece3b9](https://github.com/BioPhoton/angular-star-rating/commit/fece3b9)) +* **example:** start implementing star-rating component ([0856f9e](https://github.com/BioPhoton/angular-star-rating/commit/0856f9e)) +* **resources:** added resources ([18d0183](https://github.com/BioPhoton/angular-star-rating/commit/18d0183)) + + + + +# [2.0.0-beta.0](https://github.com/BioPhoton/angular-star-rating/compare/0939e67...v2.0.0-beta.0) (2017-01-13) + + +### Features + +* **cli-migration:** migrate to webpack and sass ([dbc57ea](https://github.com/BioPhoton/angular-star-rating/commit/dbc57ea)) +* **cli-migration:** migrate to webpack and sass ([bf59f86](https://github.com/BioPhoton/angular-star-rating/commit/bf59f86)) +* **cli-migration:** migrate to webpack and sass ([e78d5a1](https://github.com/BioPhoton/angular-star-rating/commit/e78d5a1)) +* **cli-migration:** Start migration from systemJs to webpack ([51a31a4](https://github.com/BioPhoton/angular-star-rating/commit/51a31a4)) +* **component:** setup component and example folders ([7968d02](https://github.com/BioPhoton/angular-star-rating/commit/7968d02)) +* **created example folder:** created folder and gitignore [#1](https://github.com/BioPhoton/angular-star-rating/issues/1) ([0939e67](https://github.com/BioPhoton/angular-star-rating/commit/0939e67)) +* **formComponent:** started form component ([4516f89](https://github.com/BioPhoton/angular-star-rating/commit/4516f89)) +* **ngModule:** include third party css into project ([facbeab](https://github.com/BioPhoton/angular-star-rating/commit/facbeab)) +* **started example project:** initialized ng2 project over cli [#1](https://github.com/BioPhoton/angular-star-rating/issues/1) ([37dfa9a](https://github.com/BioPhoton/angular-star-rating/commit/37dfa9a)) +* **version bump:** bumped version to 2..0.0-beta.0 ([883ea1d](https://github.com/BioPhoton/angular-star-rating/commit/883ea1d)) + + + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..5b94432 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Michael Hladky + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..a644fe5 --- /dev/null +++ b/README.MD @@ -0,0 +1,69 @@ +# Angular Star Rating ⭐⭐⭐⭐⭐ +#### ⭐ Angular Star Rating is a Angular 2+ component made with ❤, based on css only techniques. ⭐ + +![License](https://img.shields.io/npm/l/angular-star-rating.svg) +[![NPM Version](https://img.shields.io/npm/v/angular-star-rating.svg)](https://www.npmjs.com/package/angular-star-rating) +[![Build Status](https://travis-ci.org/BioPhoton/angular-star-rating.svg?branch=master)](https://travis-ci.org/BioPhoton/angular-star-rating) + +[![NPM](https://img.shields.io/npm/dt/angular-star-rating.svg)](https://www.npmjs.com/package/angular-star-rating) + +Angular Star Rating is a Angular 2+ component made with ❤. + +It is based on best practice UX/UI methods, accessibility in mind and an eye for details. +In love with reactive forms, the component is easy to control over the keyboard. +It is a perfect fit for all angular projects with ⭐'s. + +To keep it as flexible as possible a major part of the logic is based on [css only techniques](https://github.com/BioPhoton/css-star-rating). The component simple applies the state depending css modifiers. + +![Angular-Star-Rating](https://raw.githubusercontent.com/BioPhoton/angular-star-rating/master/resources/examples/example-usage.gif) + +## Browser support + + +| IE | Firefox | Chrome | Safari | Opera | +|--- |--- |--- |--- |---| +| >11 | >50 | >55 | >10 | >41 | +| | | | | | + + +## Features +Fully featured this component is provided with: +- [x] easy **configurable** and reasonable defaults +- [x] all **12 css modifiers** of the awesome [css only star rating](https://github.com/BioPhoton/css-star-rating) library +- [x] it integrates well with **reactive forms** and all it's states +- [x] focus and blur events are handled for a **smooth keyboard navigation** +- [x] it's **keyboard control** is even better than a native input once :-) +- [x] mouse enter and leave events are used to generate a nice **on hover interaction** +- [x] importable as a **angular ngModule** it is a plug and play to use +- [x] and is tested for **AOT** + +## Related Projects +| Css | Angular 1 | Angular | Ionic 1 | +|--- |--- |--- |--- | +| | | | | +| [Css Star Rating](https://github.com/BioPhoton/css-star-rating) | [Angular1 Star Rating](https://github.com/BioPhoton/angular1-star-rating) | [Angular Star Rating](https://github.com/BioPhoton/angular-star-rating) |[Ionic1 Star Rating](https://github.com/BioPhoton/ionic1-star-rating) | + +## DEMO +- [x] [Example-App](https://github.com/BioPhoton/angular-star-rating/tree/master/examples/angular4) + +## [Documentation](https://github.com/BioPhoton/angular-star-rating/wiki) +- [[Installing|Installing]] +- [[Customizing Styles|Customizing-Styles]] +- [[Property bindings|Property bindings]] + - [[Implement property bindings|Implement property bindings]] +- [[Event bindings|Event bindings]] + - [[Implement event bindings|Implement event bindings]] +- [[Use it with reactive forms|Use it with reactive forms]] +- [[Custom configuration |Custom configuration]] + +## License + +MIT © [Michael Hladky](mailto:michael@hladky.at) + +# Custom configuration + +## Globally + +## FeatureModules + +## Locally diff --git a/SETUP-PROJECT.md b/SETUP-PROJECT.md new file mode 100644 index 0000000..d78e53c --- /dev/null +++ b/SETUP-PROJECT.md @@ -0,0 +1,152 @@ +# AngularStarRatingWorkspace + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) using [Nrwl Nx](https://nrwl.io/nx). + +**Create a workspace:** +1. Open the console and run `create-nx-workspace [workspaceName]` +2. cd into the folder [workspaceName] +**Create an app:** +1. Create new app in workspace `ng generate app [appName]` +2. Test the created app by running `ng serve --app=[appName]` +**Create a lib:** +1. Create a new lib by running `ng generate lib [libName]` +2. Create a component in the lib `ng generate component test --app=[libName] --export` +3. In `./apps/[appName]/src/app/[appName].module.ts` add the module of your lib. +```typescritp +// /apps/[appName]/src/app/[appName].module.ts + +[...] +import { [moduleClassName] } from '[workspaceName]/[libName]' + +@NgModule({ + imports: [ + [...] + [moduleClassName] + ], + [...] +}) +export class AppModule {} + +``` +4. Use the component in `app.component.html` +```html +// /apps/[appName]/src/app/[appName].component.html +<[componentSelector]> +``` +5. Test that the app can be served. + +**Setup ng-packagr** +1. Install ng-packagr locally `npm install --save-dev ng-packagr` +2. Create a file `package.json` in `libs/[libName]` with following content. +```json +// libs/[libName]/package.json +{ + "$schema": "../../node_modules/ng-packagr/package.schema.json", + "name": "[libName]", + "version": "1.0.0", + "ngPackage": { + "lib": { + "entryFile": "index.ts" + }, + "dest": "../../@packaged/[libName]" + } +} +``` +3. Implement a script in the roots `package.json` file. +```json +{ +[...], +scripts: { +[...], +"build:lib": "ng-packagr -p libs/[libName]/package.json" +} +[...] +} +``` +4. Run the build script in the console `npm run build:lib` + You should see a new folder on your root folder called `@packaged`. If you import the lib from there it should also work. + +**Setting up typescript configuration files for serving the packaged lib** +1. Create a new file called `tsconfig.packaged.json` in the root folder and insert following content. +```json +// tsconfig.packaged.json +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "paths": { + "@[workspaceName]/*": [ + "@packaged/*" + ] + } + } +} +``` +This overrides the path mapping to use the folder `@packaged/*` instead of `libs/*` +2. Create a new file called `tsconfig.packaged.json` in your app folder and insert following content. +```json +// apps/[appName]/src/tsconfig.packaged.json +{ + "$schema": "../../node_modules/ng-packagr/package.schema.json", + "name": "[libNameForNPM]", + "version": "1.0.0", + "ngPackage": { + "lib": { + "entryFile": "index.ts" + }, + "dest": "../../@packaged/[libName]" + } +} +``` +This configures the entry file of your lib as well as the output folder +3. Create a new entry under `apps` in the `.angular-cli.json` to have a separate configuration for serving the packaged libs. +```json +// .angular-cli.json +{ +[...] +"apps": [ + [...], + { + "name": "angular5-example-packaged", + "root": "apps/angular5-example/src", + "outDir": "dist/apps/angular5-example-packaged", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "../../../test.js", + "tsconfig": "tsconfig.packaged.json", + "testTsconfig": "../../../tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + }, + "tags": [] + } + ], +[...] +} +``` +Notice the changes in the key "name", "outDir" and "tsconfig". +The important change is under the "tsconfig" key. We now use the `tsconfig.packaged.json` file instead of `tsconfig.app.json` +4. Add another script in you root `package.json` +```json +{ + [...] + "scripts": [ + [...] + "start:packaged":"ng serve --app=angular5-exmple-packaged", + [...] + ] +} +``` +This script will use the newly created settings in `.angular-cli.json` to serve the app with the packaged libs. +5. Test it by running `npm run start:packaged` diff --git a/apps/.gitkeep b/apps/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/apps/.gitkeep @@ -0,0 +1 @@ + diff --git a/apps/angular5-example/e2e/app.e2e-spec.ts b/apps/angular5-example/e2e/app.e2e-spec.ts new file mode 100644 index 0000000..c6b7e3e --- /dev/null +++ b/apps/angular5-example/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('angular5-example App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.text()).toContain('Welcome'); + }); +}); diff --git a/apps/angular5-example/e2e/app.po.ts b/apps/angular5-example/e2e/app.po.ts new file mode 100644 index 0000000..531c349 --- /dev/null +++ b/apps/angular5-example/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + text() { + return browser.findElement(by.css('body')).getText(); + } +} diff --git a/apps/angular5-example/e2e/tsconfig.e2e.json b/apps/angular5-example/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..ac048c8 --- /dev/null +++ b/apps/angular5-example/e2e/tsconfig.e2e.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc/e2e/angular5-example", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + }, + "include": [ + "../**/*.ts" + /* add all lazy-loaded libraries here: "../../../libs/my-lib/index.ts" */ + ], + "exclude": [ + "**/*.spec.ts" + ] +} diff --git a/apps/angular5-example/src/app/app.component.css b/apps/angular5-example/src/app/app.component.css new file mode 100644 index 0000000..e69de29 diff --git a/apps/angular5-example/src/app/app.component.html b/apps/angular5-example/src/app/app.component.html new file mode 100644 index 0000000..fa1769c --- /dev/null +++ b/apps/angular5-example/src/app/app.component.html @@ -0,0 +1,17 @@ + +
+

+ Welcome to an Angular CLI app built with Nrwl Nx! +

+ +
+ +

Nx

+ +An open source toolkit for enterprise Angular applications. + +Nx is designed to help you create and build enterprise grade Angular applications. It provides an opinionated approach to application project structure and patterns. + +

Quick Start & Documentation

+ +Watch a 5-minute video on how to get started with Nx. diff --git a/apps/angular5-example/src/app/app.component.spec.ts b/apps/angular5-example/src/app/app.component.spec.ts new file mode 100644 index 0000000..1b1c624 --- /dev/null +++ b/apps/angular5-example/src/app/app.component.spec.ts @@ -0,0 +1,26 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + let component: AppComponent; + let fixture: ComponentFixture; + + beforeEach( + async(() => { + TestBed.configureTestingModule({ + declarations: [AppComponent] + }).compileComponents(); + }) + ); + + beforeEach(() => { + fixture = TestBed.createComponent(AppComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/apps/angular5-example/src/app/app.component.ts b/apps/angular5-example/src/app/app.component.ts new file mode 100644 index 0000000..136e68f --- /dev/null +++ b/apps/angular5-example/src/app/app.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent implements OnInit { + constructor() {} + + ngOnInit() {} +} diff --git a/apps/angular5-example/src/app/app.module.ts b/apps/angular5-example/src/app/app.module.ts new file mode 100644 index 0000000..64f007a --- /dev/null +++ b/apps/angular5-example/src/app/app.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { AppComponent } from './app.component'; +import { BrowserModule } from '@angular/platform-browser'; +import { NxModule } from '@nrwl/nx'; +import {StarRatingModule} from '@angular-star-rating-workspace/angular-star-rating' + +@NgModule({ + imports: [BrowserModule, NxModule.forRoot(), StarRatingModule.forRoot()], + declarations: [AppComponent], + bootstrap: [AppComponent] +}) +export class AppModule {} diff --git a/apps/angular5-example/src/assets/.gitkeep b/apps/angular5-example/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/angular5-example/src/assets/images/star-rating.icons.svg b/apps/angular5-example/src/assets/images/star-rating.icons.svg new file mode 100644 index 0000000..a64e7c2 --- /dev/null +++ b/apps/angular5-example/src/assets/images/star-rating.icons.svg @@ -0,0 +1,24 @@ + + + + + star-empty + + + + + star-half + + + + + star-filled + + + + + diff --git a/apps/angular5-example/src/assets/nx-logo.png b/apps/angular5-example/src/assets/nx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bed0370902464e2248dc34203e093bfad0d069a5 GIT binary patch literal 71592 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

XZ3+KiD!H#QC!q z_tg9-XxcyAuJ0Odf8dU!<+87y$MFx7Wxw?H-LNCr zo;f4LzlK+eN3?UZPD;E1z!KfwI{!;B(;y^oW(0lIOv;UjRNwunmb3meCHZeq%m zKltxMz1?2Giat`e{_&t-ez}FfCk02YyYso&-i(X-J;jHH#X`r&!r3;mD{lBQ^hCp2 zcwIU1-E;v;gzc#ciWD0YzOqvTa33wP%cRmx-YD?y^-;j0%1Y_yO1(XO`3fp><)GiW zwGq`B5yf`){qKARMQDQPv^kuU;AjU8U|Ddb=nJed6@2P_AMZa7RcnoGhk(k6JH!r8 zc{r+-auvp|{B}$&N8O-Fdb2XkYRD3*$QwT^)~oT0Nq_DnFOx zHD)Lr0<2m0$tX8o^Fl3uiIh9fPRM=S;${eC!9=D;3;uXveWoqvoDGj)Eq@3CyTrp4Chg~=Aos|42R>G~wNB)os8gQkUt4ZF{{1I((b7y?! zF?=s?F~0l`mmw-IODI_-i0fMwQDREdLVi^UL*fU3m{AEw_HvPwT%RCDWQ)lHMypGJ z#(uIps*jbqrNhd&RW_IMZJ!G@pM<4t4B`}Dw($1%+}hQPaRvYa`(164`@q;_L{`Xc zek#o;L2oFK##=r;tO3bKH5|y zjCd(d8H8Xd=}?RU5R^W);v~ylzeweuDQzlY!qx6yR|sE{@HdASuiN9ny_XE&o8>~=V>sZ~|-8vEXA&(n=rvH{)eN#LP+lP@5w zWB3;y)Ostf1dm{aGTLBmYAaMzsx|6ZN<`<_SMD8@BS`|VJUVkvnhT7KZcso11>ZwY ztYNugxtoQdwid`dM$WSM;jLcWFJQJ|mGr`@nJ>6+rEzk1E`Tg83+}o@vi6uNrDzZ0 zuAs1&HQ&5_PW<1uh;tLa<_7Fpyqp&vj`a0=;oF6h&$cRh5q5+ig6yWGR|hI?;O{TZ z8Jc30Cj#@Q6;5JGu(^~6!Gz&T4<0TuteJWusicC?VjTNV|6QIOe-mDj2Bx$>++bt< zn(J^|Mb}qfc(61uHVGi-R`mZA&oW~yc?LdAQ<4BgWE=-e6&#@C0WXb@ zpkHspY?aq%j^1X>U^t>P^Q03t4!S?CSEB!bp-Wj{!IN10eT3k<6cO4=wC7PAw_-jG z2k*g2>uBD8Ns+kMg0m`^ZTSb0D|a!QKS>;emrxWE(CM{R&X?RDIckkKl%s5T74DJ| z10!CpEdEnj;tvhSF(i($BnsL+EL3=+8Faf9{em<>8{IP)s#DxCYhUbtJb0p0(phB8hbt6T zYnS)x$sYdrsiy6g+gs8Ex&dmp5Qhj(>b)^yW>=Uh{|o5Lhx46WDr4k%;PdC)8(VLf zKR(por% z8&E-r5ZrCE%y}Q!RLVw>+~xSBWKh-3^}e(H@6%wCG?*zoVJqS*=N==O=!v&`WP^A@q9xR zyY6!K`-uF1spvRHUA#qrAM%Z{x!y8C+Q9uiG$QHbxj5e*L!_wQ>``_O{MRE!qu1n4aR@_e9q9YX(6Fz z6?DCfU~B!Yis@Upt02+V3VxiEnCJ0y^VQEmhLh`m=ht-^tzv4IM|Agi+GO30$)a}t z(w=HJ{mO(sTFti-)7638LUJ%sJe~@nT2i6 z5Fn8v^+$<;KhFAugfFjCR=wTwGqzL|7h(a1SM7L~79{nVtO%O-^?a7|>w}1L0q!W( zHYL$6=NbGxp@(@$jwLNI$XVheV1Svw2~vEk`+gp-c%Dfsg@|K|iAC-Imf|CwF4db# z!U1PIL5Ye2*4iO1z)^(?X*F=!OcBTug#`Jym?})k+Zc+W5^1vEh$4}g;c+xPq7)Ln z8Ofm+M!$Jx<8Tx8xS_nVjmFn!wN$nU<;E5AlD4E4TSbAl>JJ`l&f^x=w}2W%j7Egj zwcmPp(?$bmB3NT%ejM#K0dX~eY}&u)D5j*QA&x#&o4r}rdJu7!F zE?=e&lz#Ec?th9qN_qB=9(xK3j&U;g?qBK4V=uBAPq>Y=TDseHI&|M2(eu#&mTt;= zNW~}*=4E=9LALUd~kt; z>(7ad{qXpfCKmPQ2eXQ3&&djNH}>< zDDCvORF)apDF0!OT~V zYJU~l+b*if7*tp={dnW+BtfPdS z9NhOcJfV|Rt~Ejol++r4Kwe^0paT)2mp%vG!|=qZ!AvR*PSzU3_T%?kdwP(N7isDg{@{24rgqPCtvG&WK9?8V0z411@n2SN zq1s!VZ$j!2y}DP)0k)QD7nB+RWpt=}VBzI0j(5Bq);UA?5s2IZ57bj`4grz~H`SK1 zS6j#WA_3CCU5lz#O4@`tJ{rZ?Vhqz8Whz3{U#r?Ap!%B^%czzp#C?r1mmr#&U=Yb^`m1~!iu<0`Zvq4yogYRGKz>gMv^g=aKHDmz-$xJMyf zk77&~?0Vc=Pvc$j5*jMQ3>BX^U@>C$Pog6tGBtn+4ot*xY3Y#xp-Xi3iQ-)msz1;IZgkIBQVFP;-M8X`=5ywr6k|vqiqyY!_bVvRzhjAK>;LgD z7pjAxK5X;fwr~7$V-b8D0A#dw1MO7 ztbVdooVEtQIBJbBl(3VUc?AuVK;$J+m|Rz6!;aW~Bwj`9-)*$KNDq(GWg*dPKfUwb z^{>RtE#njZFS}2FrlsJ z)@sEUhgLhBZ4EoG+i{2l3}VD}0RdH<1}r<7cr$s@?5ZO>t}r5@l>Q z@Bdq^{Rg)U-BupbD9W1Mr8iS{iK5N;VH&AtdXK`ay7Frhz|T#jJMiFlIK=`5C@jc< zI@p*nLosoUhiga)CS@+N{DC09G=Wg&4UbxsuJM6d=x^H;uxrv^aVBgc!J!tzDdCOa z4UY1RNOfq{2PqE<^2%=e5}8t6$mVp5R~?s%E)gHruU2C#>eYw$Xu5h!P~!S3EKR=B zdt@nmp9-~jCFi+OKk7%2P6`e#IbTQV4ExwcP&s1?JrSoY`O0DlVWbW;Kfv-GiP?}n zq}T{COEum!`Y~7!eBlDZDDJ5s`u~`WvEgpb+{GwGFa%vTJ%cV6z+6w>Q>&FZZFV#1 z!&A$k?w_Fg?qj*mc=c@#`pE#%AlZz6``7h7FlH`WbLHd8@Ij37VM(PT;Y|22S}PEz zksoiHJaur+AEwXz6q7=QN(rcBAI8U00&*F;@@T=EzK8LpJNEc2{G><;p{O zEEz-W5rNdpre-2}nfc43hXOds5}8R-ia*)1ja%Nl<%F8LkV2X(-eKZdUGUJ0)caE| zK*e6QgTRA}O8WWn*hPaY2vOt}ncS+jz9%{k$JQ4~u{}MByWkMS8dXR9E71F%yBQqd z-jq^+2==g6niYx+qR(IoTTPG5%Tbc-$`FN@Jw{u3h&=SNI)vMF`MFH~F8O(fft>|2 z_v1~ zxL1`!On7;#HT9TFIh!H&e+uto@~@uPuiyOh@}X5E??%0q4qkO8Oqe1bI(YWDU$7;r)euoAyBp)OL_0i-bcizaR<>}S(i>M|8 z5QuufUBM2vRIu)kaHezc%;BSR%}ezl-AhkpAoj9E2`|jhA`c84G%(|>=+lyjs<4vI-VgH!c;?F2 zA41{$RhR+D&P!{Zw=gotWj};O+NA1>`z|^RmuZa5p5n2G5RGK+A2U(Ql~^N7T>!i= z`HQi&UnJp(efY2}iY67Pu6kXfu7)`9F**{vJ<@^O0A^pbpRTo)1Prb zSJ6s3d;^`_@tLw24GenFU*Y1_EC21%Qf}w-DBeA9}zMbD~JzOPI_xs**w39L` z|H`?!OH_7_sMal{rUG;Xr<1h-rC1$A?`xJ;9&`Wk%LjRFE@R|F<$ra$`ix{1nRQ=4 zl2;WYlZ7;6@NXPvM^pwA7gPVA{`|C3aljMIA%R)3#uD*VvxEChoG(@-2`GEgl~|cak2HY?-P?lhrF@B1>UFJJN`f5*F`|e~ z%L(XLIU=qDKyh~G_II3t4MY$c_>&l;e* zYT}mVBUg(F_>zFMeJqh;;H#SuDC$3mHn!J7J^F$$^-85u#<9;vtqR=!sLbKx?zNK_ zKGt%3j-AQ6ik4f2qmBeg-@S#<|;H?xtZ&OaL@(Dw?Z(~ zfVR2>LGmDuLqJuBikR_;sd};J}pyKVb-#C?nG5-PeA5*X``m^_NXdZ=0waC$$$j~(eL zSSCw^{;{_uXNln;1i5NUO&A9NY6WjXoQ z-*#QeFPMU@Mjl>Fe0rLC6XImP2&UaFhx%7B(Inu|54SNsBs}Xfgexf2M8ewQG$!va zyK3HYr9^a6CbjUSsD|OO2*;s174o>PNJTUIN+cE|7qWCL4D@+k@|4>QB`lQW~U@A>Dc$Du|0?-lP9y z!V?;NkJjBHA&UUY3<8Fomb!=QRsx5|$T(0}xV;G3n43e@h> zz$fg=d_-aJN=EOg!7mEb%5e6@(5_^_X_F0Tb&b~7*S;W#!fHVmpTq3m5c5p&udKTe zr?m{AqyLz_ffJH9U+pQ(o|d>QE5X2McYj_C$|mOs9P^Mq0j>9qEzQpeE{OODj_h;1 zUx=`A{7r~5cJwb)v0!SN>QL?;ba4=t{5{>Ro7h&ys^`($*l>UalQsp_>{$DlpX{h+ z4M$SdOFW11nBb-K5@!$DW+wxi)W(C!K>OMJVd`rNSs%m{6SxsKz)}6|Qs4qNTUS*c zN!Mx@+hutj@@6~Y&kA=<(#ZHW2KwhbDh!GUHs&T|YT&tC4l7jbd}Jy5Y+ZA&k{e>X zj;;WBM66dl_El68fkq z45X0#+;u&;JWi3#!(j0nfIby_>TSZ@!zMe~+9jv++5aT`1G5o($H#L&YJZIJa-U*I zW`Kuz&+TY+yB{r%`(hcr8Rdv@)R9W7An8{6EBODWUbv(;e*wn&qPv{{P1`+kcpX#o zhv|;5&2yRgB9}#W$`V}+2ZeA;%M-4zB>qX_z%TN}sxsGxt;+k1vLTWQ)0Qbf9@Z_R z6s~F743N|6s-f3cn!dbimAFdCnu>dF+?YXo2w8U~n&qNR@Gx35xa}Ipg&KgTE57C@ z=u3wurn(L-+}liFfaTH77aUD1s#ovB#k01=&9PIm$MB#UO|R1HP}N zn=WdBod9Y|HX|izWsvFY-^lp&meA!%^+{^hu)o}g3386lBEpFrw2CWM$HY9McG3IT z8dL)5qo(xMU9ggL-sPz#04A}5fty>A)!jaU4?&b1o59OjG$mTk4jct?; z-b{Z1q16?rbL zFyu}H`>47YTZ+k}_vC(rPWQzQgPU5zSs8`g>GX~pHxvZf(vsTVF$+j_WWuf1$2A9| z)p57P;*1WspTww(KKeI=SXg#Tqx=B2lKc2l=Am=iWiv|--X)_4!B4P4j*!UM zFkHwQk{~ z#eX{BW`1?dwtYGvZ=M7O_?SE929SydnXX5dGDUn}y<%7_DpsAb0jyimXP&7n0FG~> zl}!TsIl8`aIbgCsEf1DiaiB@bAkvWLPZN)a??_kfd^gH{m_{+(jh`UrobnxkR5My! z!O42-3lC%v3_gIuDO^svK3x;65jVKB#*?f}Q49AIVGva3^l53WL`uaC=pI5d>zEzesuIV!I8Q0Ox%&eFf89}-33{a zpKtxdz4+clp9Rm;b_q+T)F{ zh1x_lXc2l@x{rWp4v|MYO3tf`j1Bn|iO}l$fTksq2!UR>?A^Y&9Ch`%1{Sps9y93TSB|KI1$$KJQYth3?A{~TaY!)`+*L#06qg0 z3r5cD){^Kcll~hNWr`-i-|lX(oudxqQOrdJN#sFmS{{7APYbHF5)s!P<)H`>FED0R zn!$oNpdJxBJ7sK6vE;kkemQf@i+Ko!k`E~K&5OFs>nS?Dm&|`We92fyVa(uj7@@Gl zT&4BHN>NwTIt!v)`qejJfox!vIOEs|PE_M4RD*6f`dJ!w_Mez@{3YwQRg_HQ`w z#3X1ro83d(Km*WRhRLoTr@SoU?8))j-XOdBYiM3@ojKH*Cis={d8jD(mhTz%F0a4} z|AX2evvSVKS{lNr;(vxI$n=v6KD$wgz}wwz(<)6tutJ2$90fKBzZ`TY3~%iHm|)?& z=kHkw#!9VkpGn< z0y8J#**x&%bIqRvYUV|Z)P&dQ#O~Z=W(Q)S*y4s0UpY`&Vl#1n0NnTe~8NFzlBS3YX9uw{d-w3yxXPz zmq>ymqtB1on?h}&-f?8{TfRM^?yHuQ7}~c*Ai_@?9dAAo96aWF;e1L^IgNU*TnfjNFjoR4kVO}KWSgGcUfkEV#E!d$A|CJb1A`zJ9)nBx2!wT)fXbJ>`a#u2Ab13^&FKF- zveK81+W~`8Fpe*YN`P|9pWm>_9JfypVHJQ+7t&}Jw5$Q7Ke?lJ+qIPo^_QLgb+qlW z%gM?oR{!5e4NefycIql-jfG+)IzIeyVb1t=V<`P`M{p)PS5+wgDK1Wx)jZym|8_({ zHTi>``!%l_L{!DnVpz7b;@Qf!H_)K}m*{gbmE-+JZr7=cz`PG1tq0+z1{{rZMKft@ zp}oH3(;cUwcO8pai#tCZ3=e;3VfkN*cH8gMTi~~4yPbxYwVri81$>9S zGLWo2Vn(h4pOI!XE098Y{rj%0FrmZ>hgl$Qh$*f5eyvbIgXKZ9D4Wh9{$;Bwkj-w z@_xo#h)J%vOr|!D$MlPJ;9$f>N31P3Vgkphv}!In}n@@@;wa z7A;isFGS5tD?{*i3N?h+#gR+ZJQ~XNvxKFO=B4EFd&& zNZ8j;;FNi1pBA=Stx@!Z54*n=^e7RY5D5N}PCi)2BnPm1z*uI+4~18~+?CoKdGF2D z!uE0+_tP6^c{mtq_#*~xMTqn?oxXlg7x&YJCeRng_B(z|Cv8^^)1~^3S2IXzg51qop1w0SE{~k zkM@=T8+iBar~Qh^6H$k`c3EOEfU8S!)|i9K;+S(4N@dw7T;QtHP2M5Vj%Xf+@ zA4^oavLn-816`e~L)KWs63iQWytvQz`MwD!1J83q8EkUT*W%gy{@!gUz79T8M29c- z&+gHW1)iJgHN&f1k1jbpFAP8CW*{QE3Uo|osayDNM`_-7>tk+8e|wy6a&av6EY{%z zNI$)S^DFcMaODq>T2{N)L;rZ zXY+EJ;E{7r_9IRlBW7SPN#F8sPkOGy+i)95R3aJD?Br_b{_7!8ETriv1uL^0W1GsH z8|YUS)q+XUo5Yi+Q^L!^1N`um6_}tctco7?B<Z+#2cyo+AYoU3VNeG6;`@=&Ys;1HUP}N|Pezb=;ramRC-*(&D?UdeHVh z&09)3ctT-|g%zx9a}hbt;v#pKb*~xpuWBL3v@<}B0ZP`Y)0S3uNdVXWpBvht0Yv`VIU&Xu z1IUGkLrw>7;2~*&I%1>Go3!`ond!B59uHKlCraIM>`VIT7PHg+%C|^$a_M~P{}gA3 zPXv0n@0_Jl>T`<{YLAEq+#6rG_uIjE^zdxgiPKoJbScDLsF2f_?P`G@>*=hx|9&E= z5f0Q5JzvBDZQ}NA(`&jari~gxjXqaT0`_!dpPOlDgLm?c)TH z(ZQUH>2$Z65Bl_Gw}OaoyE;5*C#|=U*&1d$>!H?>kKH51z>t34P0=-9v)h3&(rl0K zk(H8;v;1qFF>U>F<1g4 z+l`8~Z?zY|c4elR6^EA*^BBqLroTt;O}&V^1M0e0+lv2*ovPWSMN)iFkA7&a3iJ{h zd>m0nK4O+e0J4B1U5^XzYXFL8c6?(v>02-hpXsoKFRsZ>?+(5xv0mB|O-cN!Dx5yl#_*jl> z=;bJAb%#Yn#|dZ?NW5CSF5V>id^wiC1wos@aZIj7(|~zY(4$hQHLsf=_5W+>YW$g8 z-}tkc(a5Am@-pNgk&sLcJ4p#?9C2u|gG_M_lFaLdlp^I+$NRQuwMvs}k-TiSP%=V^ zq-j`Q;wLfh&NJut`~}bFy07c|{oddEy6QhI~rfZfza>cARd@89G?}y(U<8NFShTXWYN~APZ+ZjFCvaWY5E69)rHLS8)E2CP`B zPKAB&Y|AnhrUwG$!n&#I31&T~gb966s*eNZ@~Omwj^Vo+eyq?NiL$b4(J_tGVT9Z^ zB+GSpO(aO1SDq&NJ@ zA^#z&`ep)SM`UbkbHnPl$W#ewhDL^m@nVk%(U%3#bz zs+JkNFB4%B{&i=EDub86P&op`dd%4`7E$KEN_Xdj+;CxP^n|+dSS|wa&x-MI96d$4 z>lRl%&g2%@J{eh<)WkgG$RH4embCDI#6$ZaqEKSt5y0T3tq0HvJ?$ordT}-8@Z+CP zaGIuitx{p6yf6&$k6q-K<;n{C>E?TuGzggHIf!B&5x|XCj+bc6wiTcXzVc_WlY0X$ zZw(&k&uCXM=P#7oz!MVx>PstS4-=cmg#>#m$8-SW3%y$F|5l+mLe6C;eC*|C__p65 z%*pWdGK9(EZhjxJei{yAyNQ>u&JwA#i=acu%Q%^IZsp|*^`AbmSx3q@jg?)+Sl6z{bN9d?%bX3ho2F?<%t`AHno1C`e9RkjRI!S=g z{vvv_Hv8JCU5B@h%;jMXoox^XRJ+Gf(h#^Xa_52L{R~%3aIqA5)LfT;dOcw0%hd7m z)g!T_T}3_gr)nlys#K#-zz=n~HYPL(Wdk!Q(`6+n&4jgM6Ng5wrEE-><>z)>( zr?L1GwSRRjcKKFxhx*ZMAUl_1Lu@>VpFvN?d26x#%v@DnV+r8xsmSuw!reF3`v4Xd zWanNpRO^m8MIC6DkY0?0@vJ`gRWes_yawiC`y672C3o$ z6~Xd~AisMOSNkAeXo~+))p_(@3^ptQS0va;F=03nA9T3b; zg8bU)jk{^Ev;(x&%E8%mD9o2~;nrXUTGHakwSjBvYgpByDcIZTO%cFzOud~c zqjn>t(`c+1+yGQ1{R}_0Jl(#v9Yo#h&%>xhG;4d#IDO{J^FWq?n&x~=YY;)&_-^}( zQdH-et2TTmu<^4gJ`B3IHmrAlK(s3a$_*;j`@lk0L$z?&e&PE~<=QCx&!_5a1=C|s zRu4vPu0??DN7}?i=Q$U7pbJ{zD9!Hjxn}v^#7ui?i%Oz!t2ldxJz3@!c%kd~f6}94 z&jfkJuXSW&h#J-97d#!M59BzATC#n(aH6sDsdF%KL09+!=mGZ~2Aivqt3y3;DT6Q9 ziQ{@gT;mR4?6SS>@}pB{M+oSifp24ymo?GsGaFgd!falz^%Qw&r}YM0a0XQnF!#79 zKUT85m-;(E=fgXwh?Y8i+y)=f9q(6d=sNU&e5c->=WV#H| zi;JU!`n3pA^VLj@C#R_ek3IvjL2Cs(o6xDiGOsUv&OpyPEA{Tt_(@Z}73@dW zfq{#F{3EWr8x)qGF!}A))DmW0JtYr%8E)Y@;C~}^ zyR&CQNZ$7O+%h%hP`}HNS?7G*vf`0TH$QJG#7XR=R#WQ5ZVpY`2eX?W#i_F$5d%RU zwvWi~;o0B+36@o0-FU2YW!^VoCot|J){GZduNqlv`=mPrM;zXOJKIfvulIKN!HucL ztECPqri^Dtca+fa3Fi&QkAuggM)EWm1iUn{{<#}3Q?6(^&I@4q;MEZTIO6PakbQud F_AlkcQ_KJW literal 0 HcmV?d00001 diff --git a/apps/angular5-example/src/environments/environment.prod.ts b/apps/angular5-example/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/apps/angular5-example/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/apps/angular5-example/src/environments/environment.ts b/apps/angular5-example/src/environments/environment.ts new file mode 100644 index 0000000..b7f639a --- /dev/null +++ b/apps/angular5-example/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/apps/angular5-example/src/favicon.ico b/apps/angular5-example/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- + + + + Angular5Example + + + + + + + + + \ No newline at end of file diff --git a/apps/angular5-example/src/main.ts b/apps/angular5-example/src/main.ts new file mode 100644 index 0000000..5aa3bf0 --- /dev/null +++ b/apps/angular5-example/src/main.ts @@ -0,0 +1,13 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic() + .bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/apps/angular5-example/src/polyfills.ts b/apps/angular5-example/src/polyfills.ts new file mode 100644 index 0000000..781b979 --- /dev/null +++ b/apps/angular5-example/src/polyfills.ts @@ -0,0 +1,70 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. +/** + * Need to import at least one locale-data with intl. + */ +// import 'intl/locale-data/jsonp/en'; diff --git a/apps/angular5-example/src/styles.css b/apps/angular5-example/src/styles.css new file mode 100644 index 0000000..54ab642 --- /dev/null +++ b/apps/angular5-example/src/styles.css @@ -0,0 +1,2 @@ +/* You can add global styles to this file, and also import other style files */ +@import '~css-star-rating'; diff --git a/apps/angular5-example/src/tsconfig.app.json b/apps/angular5-example/src/tsconfig.app.json new file mode 100644 index 0000000..8fed5ae --- /dev/null +++ b/apps/angular5-example/src/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc/apps/angular5-example", + "module": "es2015" + }, + "include": [ + "**/*.ts" + /* add all lazy-loaded libraries here: "../../../libs/my-lib/index.ts" */ + ], + "exclude": [ + "**/*.spec.ts" + ] +} diff --git a/apps/angular5-example/src/tsconfig.packaged.json b/apps/angular5-example/src/tsconfig.packaged.json new file mode 100644 index 0000000..c3b2e96 --- /dev/null +++ b/apps/angular5-example/src/tsconfig.packaged.json @@ -0,0 +1,9 @@ +{ + "extends": "../../../tsconfig.packaged.json", + "compilerOptions": { + "outDir": "../../../dist/apps/angular5-example-packaged", + "module": "es2015" + }, + "include": ["**/*.ts"], + "exclude": ["**/*.spec.ts"] +} diff --git a/changelog/README.md b/changelog/README.md new file mode 100644 index 0000000..ae49d85 --- /dev/null +++ b/changelog/README.md @@ -0,0 +1,86 @@ +#### Examples + +Appears under "Features" header, pencil subheader: + +``` +feat(pencil): add 'graphiteWidth' option +``` + +Appears under "Bug Fixes" header, graphite subheader, with a link to issue #28: + +``` +fix(graphite): stop graphite breaking when width < 0.1 + +Closes #28 +``` + +Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: + +``` +perf(pencil): remove graphiteWidth option + +BREAKING CHANGE: The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reason. +``` + +The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. + +``` +revert: feat(pencil): add 'graphiteWidth' option + +This reverts commit 667ecc1654a317a13331b17617d973392f415f02. +``` + +### Commit Message Format + +A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: + +``` +(): + + + +