ngx-repeat 1.0.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![npm version](https://badge.fury.io/js/ngx-repeat.svg)](https://badge.fury.io/js/ngx-repeat)
7
7
  [![Package License](https://img.shields.io/npm/l/ngx-repeat.svg)](https://www.npmjs.com/ngx-repeat)
8
8
  [![NPM Downloads](https://img.shields.io/npm/dm/ngx-repeat.svg)](https://www.npmjs.com/ngx-repeat)
9
- [![Build & Publish](https://github.com/celtian/ngx-repeat/workflows/Build%20&%20Publish/badge.svg)](https://github.com/celtian/ngx-repeat/actions)
9
+ [![Snyk](https://snyk.io/advisor/npm-package/ngx-repeat/badge.svg)](https://snyk.io/advisor/npm-package/ngx-repeat)
10
10
  [![codecov](https://codecov.io/gh/Celtian/ngx-repeat/branch/master/graph/badge.svg?token=1IRUKIKM0D)](https://codecov.io/gh/celtian/ngx-repeat/)
11
11
  [![stars](https://badgen.net/github/stars/celtian/ngx-repeat)](https://github.com/celtian/ngx-repeat/)
12
12
  [![forks](https://badgen.net/github/forks/celtian/ngx-repeat)](https://github.com/celtian/ngx-repeat/)
@@ -14,7 +14,7 @@
14
14
 
15
15
  > Angular directive for repeating HTML element by count
16
16
 
17
- > ✓ _Angular 15, Ivy and SSR compatible_
17
+ > ✓ _Angular 17 compatible_
18
18
 
19
19
  Here's the [demo](http://celtian.github.io/ngx-repeat/) or [stackblitz live preview](https://stackblitz.com/edit/ngx-repeat) or [codesandbox live preview](https://codesandbox.io/s/ngx-repeat-bew8f)
20
20
 
@@ -30,25 +30,38 @@ Here's the [demo](http://celtian.github.io/ngx-repeat/) or [stackblitz live prev
30
30
  yarn add ngx-repeat
31
31
  ```
32
32
 
33
- 2. Add NgxRepeatModule into your module `imports`
33
+ 2. Add NgxRepeatDirective into your component`
34
34
 
35
35
  ```typescript
36
- import { NgxRepeatModule } from 'ngx-repeat';
36
+ import { NgxRepeatDirective } from 'ngx-repeat';
37
37
 
38
- @NgModule({
38
+ @Component({
39
+ standalone: true,
40
+ imports: [NgxRepeatDirective /*, ...*/],
39
41
  // ...
40
- imports: [
41
- // ...
42
- NgxRepeatModule
43
- ]
44
- })
42
+ })
43
+ ```
44
+
45
+ or module
46
+
47
+ ```typescript
48
+ import { NgxRepeatDirective } from 'ngx-repeat';
49
+
50
+ @NgModule({
51
+ // ...
52
+ imports: [
53
+ // ...
54
+ NgxRepeatDirective
55
+ ]
56
+ })
45
57
  ```
46
58
 
47
59
  ## Compatibility
48
60
 
49
61
  | Angular | ngx-repeat | Install |
50
62
  | --------- | ---------- | ----------------------- |
51
- | >= 12 | 1.x | `yarn add ngx-repeat` |
63
+ | >= 14 | 2.x | `yarn add ngx-repeat ` |
64
+ | >= 12 | 1.x | `yarn add ngx-repeat@1` |
52
65
  | >= 5 < 13 | 0.x | `yarn add ngx-repeat@0` |
53
66
 
54
67
  ## Quick start
@@ -0,0 +1,54 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * @publicApi
5
+ */
6
+ export class RepeatDirectiveContext {
7
+ constructor($implicit, count) {
8
+ this.$implicit = $implicit;
9
+ this.count = count;
10
+ }
11
+ get index() {
12
+ return this.$implicit;
13
+ }
14
+ get first() {
15
+ return this.$implicit === 0;
16
+ }
17
+ get last() {
18
+ return this.index === this.count - 1;
19
+ }
20
+ get even() {
21
+ return this.$implicit % 2 === 0;
22
+ }
23
+ get odd() {
24
+ return this.$implicit % 2 === 1;
25
+ }
26
+ }
27
+ export class NgxRepeatDirective {
28
+ set ngxRepeat(count) {
29
+ for (let i = this.viewContainer.length; i > count; i--)
30
+ this.viewContainer.remove(i - 1);
31
+ for (let i = this.viewContainer.length; i < count; i++)
32
+ this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));
33
+ for (let i = 0; i < this.viewContainer.length; i++) {
34
+ const viewRef = this.viewContainer.get(i);
35
+ viewRef.context.count = count;
36
+ }
37
+ }
38
+ constructor(templateRef, viewContainer) {
39
+ this.templateRef = templateRef;
40
+ this.viewContainer = viewContainer;
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxRepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: NgxRepeatDirective, isStandalone: true, selector: "[ngxRepeat]", inputs: { ngxRepeat: "ngxRepeat" }, ngImport: i0 }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxRepeatDirective, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: '[ngxRepeat]',
49
+ standalone: true
50
+ }]
51
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { ngxRepeat: [{
52
+ type: Input
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlcGVhdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVwZWF0L3NyYy9saWIvbmd4LXJlcGVhdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7QUFFakc7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1MsU0FBaUIsRUFDakIsS0FBYTtRQURiLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUNuQixDQUFDO0lBRUosSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFNRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLElBQW9CLFNBQVMsQ0FBQyxLQUFhO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFekYsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsTUFBTSxPQUFPLEdBQTRDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxZQUNVLFdBQWdELEVBQ2hELGFBQStCO1FBRC9CLGdCQUFXLEdBQVgsV0FBVyxDQUFxQztRQUNoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7SUFDdEMsQ0FBQzs4R0FoQk8sa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrR0FFcUIsU0FBUztzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRW1iZWRkZWRWaWV3UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBlYXREaXJlY3RpdmVDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljICRpbXBsaWNpdDogbnVtYmVyLFxuICAgIHB1YmxpYyBjb3VudDogbnVtYmVyXG4gICkge31cblxuICBwdWJsaWMgZ2V0IGluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuJGltcGxpY2l0O1xuICB9XG5cbiAgcHVibGljIGdldCBmaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kaW1wbGljaXQgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xuICB9XG5cbiAgcHVibGljIGdldCBldmVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiRpbXBsaWNpdCAlIDIgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9kZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kaW1wbGljaXQgJSAyID09PSAxO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hSZXBlYXRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hSZXBlYXREaXJlY3RpdmUge1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IG5neFJlcGVhdChjb3VudDogbnVtYmVyKSB7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMudmlld0NvbnRhaW5lci5sZW5ndGg7IGkgPiBjb3VudDsgaS0tKSB0aGlzLnZpZXdDb250YWluZXIucmVtb3ZlKGkgLSAxKTtcblxuICAgIGZvciAobGV0IGkgPSB0aGlzLnZpZXdDb250YWluZXIubGVuZ3RoOyBpIDwgY291bnQ7IGkrKylcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgbmV3IFJlcGVhdERpcmVjdGl2ZUNvbnRleHQoaSwgY291bnQpKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52aWV3Q29udGFpbmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB2aWV3UmVmID0gPEVtYmVkZGVkVmlld1JlZjxSZXBlYXREaXJlY3RpdmVDb250ZXh0Pj50aGlzLnZpZXdDb250YWluZXIuZ2V0KGkpO1xuICAgICAgdmlld1JlZi5jb250ZXh0LmNvdW50ID0gY291bnQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8UmVwZWF0RGlyZWN0aXZlQ29udGV4dD4sXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cbn1cbiJdfQ==
@@ -2,5 +2,4 @@
2
2
  * Public API Surface of ngx-repeat
3
3
  */
4
4
  export * from './lib/ngx-repeat.directive';
5
- export * from './lib/ngx-repeat.module';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1yZXBlYXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1yZXBlYXRcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtcmVwZWF0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtcmVwZWF0Lm1vZHVsZSc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1yZXBlYXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtcmVwZWF0XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXJlcGVhdC5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,65 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Directive, Input } from '@angular/core';
3
+
4
+ /**
5
+ * @publicApi
6
+ */
7
+ class RepeatDirectiveContext {
8
+ constructor($implicit, count) {
9
+ this.$implicit = $implicit;
10
+ this.count = count;
11
+ }
12
+ get index() {
13
+ return this.$implicit;
14
+ }
15
+ get first() {
16
+ return this.$implicit === 0;
17
+ }
18
+ get last() {
19
+ return this.index === this.count - 1;
20
+ }
21
+ get even() {
22
+ return this.$implicit % 2 === 0;
23
+ }
24
+ get odd() {
25
+ return this.$implicit % 2 === 1;
26
+ }
27
+ }
28
+ class NgxRepeatDirective {
29
+ set ngxRepeat(count) {
30
+ for (let i = this.viewContainer.length; i > count; i--)
31
+ this.viewContainer.remove(i - 1);
32
+ for (let i = this.viewContainer.length; i < count; i++)
33
+ this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));
34
+ for (let i = 0; i < this.viewContainer.length; i++) {
35
+ const viewRef = this.viewContainer.get(i);
36
+ viewRef.context.count = count;
37
+ }
38
+ }
39
+ constructor(templateRef, viewContainer) {
40
+ this.templateRef = templateRef;
41
+ this.viewContainer = viewContainer;
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxRepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
44
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: NgxRepeatDirective, isStandalone: true, selector: "[ngxRepeat]", inputs: { ngxRepeat: "ngxRepeat" }, ngImport: i0 }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: NgxRepeatDirective, decorators: [{
47
+ type: Directive,
48
+ args: [{
49
+ selector: '[ngxRepeat]',
50
+ standalone: true
51
+ }]
52
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { ngxRepeat: [{
53
+ type: Input
54
+ }] } });
55
+
56
+ /*
57
+ * Public API Surface of ngx-repeat
58
+ */
59
+
60
+ /**
61
+ * Generated bundle index. Do not edit.
62
+ */
63
+
64
+ export { NgxRepeatDirective, RepeatDirectiveContext };
65
+ //# sourceMappingURL=ngx-repeat.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-repeat.mjs","sources":["../../../projects/ngx-repeat/src/lib/ngx-repeat.directive.ts","../../../projects/ngx-repeat/src/public-api.ts","../../../projects/ngx-repeat/src/ngx-repeat.ts"],"sourcesContent":["import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * @publicApi\n */\nexport class RepeatDirectiveContext {\n constructor(\n public $implicit: number,\n public count: number\n ) {}\n\n public get index(): number {\n return this.$implicit;\n }\n\n public get first(): boolean {\n return this.$implicit === 0;\n }\n\n public get last(): boolean {\n return this.index === this.count - 1;\n }\n\n public get even(): boolean {\n return this.$implicit % 2 === 0;\n }\n\n public get odd(): boolean {\n return this.$implicit % 2 === 1;\n }\n}\n\n@Directive({\n selector: '[ngxRepeat]',\n standalone: true\n})\nexport class NgxRepeatDirective {\n @Input() public set ngxRepeat(count: number) {\n for (let i = this.viewContainer.length; i > count; i--) this.viewContainer.remove(i - 1);\n\n for (let i = this.viewContainer.length; i < count; i++)\n this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));\n\n for (let i = 0; i < this.viewContainer.length; i++) {\n const viewRef = <EmbeddedViewRef<RepeatDirectiveContext>>this.viewContainer.get(i);\n viewRef.context.count = count;\n }\n }\n\n constructor(\n private templateRef: TemplateRef<RepeatDirectiveContext>,\n private viewContainer: ViewContainerRef\n ) {}\n}\n","/*\n * Public API Surface of ngx-repeat\n */\n\nexport * from './lib/ngx-repeat.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;;AAEG;MACU,sBAAsB,CAAA;IACjC,WACS,CAAA,SAAiB,EACjB,KAAa,EAAA;QADb,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;KAClB;AAEJ,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KACtC;AAED,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,IAAW,GAAG,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC;KACjC;AACF,CAAA;MAMY,kBAAkB,CAAA;IAC7B,IAAoB,SAAS,CAAC,KAAa,EAAA;AACzC,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzF,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,sBAAsB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAEhG,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,OAAO,GAA4C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnF,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AAC/B,SAAA;KACF;IAED,WACU,CAAA,WAAgD,EAChD,aAA+B,EAAA;QAD/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAqC;QAChD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;KACrC;8GAhBO,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;+GAEqB,SAAS,EAAA,CAAA;sBAA5B,KAAK;;;ACrCR;;AAEG;;ACFH;;AAEG;;;;"}
@@ -19,5 +19,5 @@ export declare class NgxRepeatDirective {
19
19
  set ngxRepeat(count: number);
20
20
  constructor(templateRef: TemplateRef<RepeatDirectiveContext>, viewContainer: ViewContainerRef);
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxRepeatDirective, never>;
22
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxRepeatDirective, "[ngxRepeat]", never, { "ngxRepeat": "ngxRepeat"; }, {}, never, never, false, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxRepeatDirective, "[ngxRepeat]", never, { "ngxRepeat": { "alias": "ngxRepeat"; "required": false; }; }, {}, never, never, true, never>;
23
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-repeat",
3
- "version": "1.0.5",
3
+ "version": "2.0.0",
4
4
  "author": {
5
5
  "name": "Dominik Hladík",
6
6
  "email": "dominik.hladik@seznam.cz",
@@ -33,11 +33,7 @@
33
33
  "engines": {
34
34
  "node": ">=12"
35
35
  },
36
- "module": "fesm2015/ngx-repeat.mjs",
37
- "es2020": "fesm2020/ngx-repeat.mjs",
38
- "esm2020": "esm2020/ngx-repeat.mjs",
39
- "fesm2020": "fesm2020/ngx-repeat.mjs",
40
- "fesm2015": "fesm2015/ngx-repeat.mjs",
36
+ "module": "fesm2022/ngx-repeat.mjs",
41
37
  "typings": "index.d.ts",
42
38
  "exports": {
43
39
  "./package.json": {
@@ -45,11 +41,9 @@
45
41
  },
46
42
  ".": {
47
43
  "types": "./index.d.ts",
48
- "esm2020": "./esm2020/ngx-repeat.mjs",
49
- "es2020": "./fesm2020/ngx-repeat.mjs",
50
- "es2015": "./fesm2015/ngx-repeat.mjs",
51
- "node": "./fesm2015/ngx-repeat.mjs",
52
- "default": "./fesm2020/ngx-repeat.mjs"
44
+ "esm2022": "./esm2022/ngx-repeat.mjs",
45
+ "esm": "./esm2022/ngx-repeat.mjs",
46
+ "default": "./fesm2022/ngx-repeat.mjs"
53
47
  }
54
48
  },
55
49
  "sideEffects": false,
package/public-api.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export * from './lib/ngx-repeat.directive';
2
- export * from './lib/ngx-repeat.module';
@@ -1,53 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * @publicApi
5
- */
6
- export class RepeatDirectiveContext {
7
- constructor($implicit, count) {
8
- this.$implicit = $implicit;
9
- this.count = count;
10
- }
11
- get index() {
12
- return this.$implicit;
13
- }
14
- get first() {
15
- return this.$implicit === 0;
16
- }
17
- get last() {
18
- return this.index === this.count - 1;
19
- }
20
- get even() {
21
- return this.$implicit % 2 === 0;
22
- }
23
- get odd() {
24
- return this.$implicit % 2 === 1;
25
- }
26
- }
27
- export class NgxRepeatDirective {
28
- set ngxRepeat(count) {
29
- for (let i = this.viewContainer.length; i > count; i--)
30
- this.viewContainer.remove(i - 1);
31
- for (let i = this.viewContainer.length; i < count; i++)
32
- this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));
33
- for (let i = 0; i < this.viewContainer.length; i++) {
34
- const viewRef = this.viewContainer.get(i);
35
- viewRef.context.count = count;
36
- }
37
- }
38
- constructor(templateRef, viewContainer) {
39
- this.templateRef = templateRef;
40
- this.viewContainer = viewContainer;
41
- }
42
- }
43
- NgxRepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
44
- NgxRepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: NgxRepeatDirective, selector: "[ngxRepeat]", inputs: { ngxRepeat: "ngxRepeat" }, ngImport: i0 });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatDirective, decorators: [{
46
- type: Directive,
47
- args: [{
48
- selector: '[ngxRepeat]'
49
- }]
50
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngxRepeat: [{
51
- type: Input
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlcGVhdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVwZWF0L3NyYy9saWIvbmd4LXJlcGVhdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7QUFFakc7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW1CLFNBQWlCLEVBQVMsS0FBYTtRQUF2QyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUTtJQUFHLENBQUM7SUFFOUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFLRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLElBQW9CLFNBQVMsQ0FBQyxLQUFhO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFekYsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVoRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsTUFBTSxPQUFPLEdBQTRDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxZQUFvQixXQUFnRCxFQUFVLGFBQStCO1FBQXpGLGdCQUFXLEdBQVgsV0FBVyxDQUFxQztRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtJQUFHLENBQUM7OytHQWJ0RyxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO2lCQUN4QjtpSUFFcUIsU0FBUztzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRW1iZWRkZWRWaWV3UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBlYXREaXJlY3RpdmVDb250ZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljICRpbXBsaWNpdDogbnVtYmVyLCBwdWJsaWMgY291bnQ6IG51bWJlcikge31cblxuICBwdWJsaWMgZ2V0IGluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuJGltcGxpY2l0O1xuICB9XG5cbiAgcHVibGljIGdldCBmaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kaW1wbGljaXQgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXggPT09IHRoaXMuY291bnQgLSAxO1xuICB9XG5cbiAgcHVibGljIGdldCBldmVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiRpbXBsaWNpdCAlIDIgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9kZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4kaW1wbGljaXQgJSAyID09PSAxO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hSZXBlYXRdJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hSZXBlYXREaXJlY3RpdmUge1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IG5neFJlcGVhdChjb3VudDogbnVtYmVyKSB7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMudmlld0NvbnRhaW5lci5sZW5ndGg7IGkgPiBjb3VudDsgaS0tKSB0aGlzLnZpZXdDb250YWluZXIucmVtb3ZlKGkgLSAxKTtcblxuICAgIGZvciAobGV0IGkgPSB0aGlzLnZpZXdDb250YWluZXIubGVuZ3RoOyBpIDwgY291bnQ7IGkrKylcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgbmV3IFJlcGVhdERpcmVjdGl2ZUNvbnRleHQoaSwgY291bnQpKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52aWV3Q29udGFpbmVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB2aWV3UmVmID0gPEVtYmVkZGVkVmlld1JlZjxSZXBlYXREaXJlY3RpdmVDb250ZXh0Pj50aGlzLnZpZXdDb250YWluZXIuZ2V0KGkpO1xuICAgICAgdmlld1JlZi5jb250ZXh0LmNvdW50ID0gY291bnQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8UmVwZWF0RGlyZWN0aXZlQ29udGV4dD4sIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge31cbn1cbiJdfQ==
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { NgxRepeatDirective } from './ngx-repeat.directive';
3
- import * as i0 from "@angular/core";
4
- export class NgxRepeatModule {
5
- }
6
- NgxRepeatModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- NgxRepeatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, declarations: [NgxRepeatDirective], exports: [NgxRepeatDirective] });
8
- NgxRepeatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- declarations: [NgxRepeatDirective],
13
- exports: [NgxRepeatDirective]
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJlcGVhdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVwZWF0L3NyYy9saWIvbmd4LXJlcGVhdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNNUQsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFIWCxrQkFBa0IsYUFDdkIsa0JBQWtCOzZHQUVqQixlQUFlOzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hSZXBlYXREaXJlY3RpdmUgfSBmcm9tICcuL25neC1yZXBlYXQuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTmd4UmVwZWF0RGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW05neFJlcGVhdERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgTmd4UmVwZWF0TW9kdWxlIHt9XG4iXX0=
@@ -1,77 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Directive, Input, NgModule } from '@angular/core';
3
-
4
- /**
5
- * @publicApi
6
- */
7
- class RepeatDirectiveContext {
8
- constructor($implicit, count) {
9
- this.$implicit = $implicit;
10
- this.count = count;
11
- }
12
- get index() {
13
- return this.$implicit;
14
- }
15
- get first() {
16
- return this.$implicit === 0;
17
- }
18
- get last() {
19
- return this.index === this.count - 1;
20
- }
21
- get even() {
22
- return this.$implicit % 2 === 0;
23
- }
24
- get odd() {
25
- return this.$implicit % 2 === 1;
26
- }
27
- }
28
- class NgxRepeatDirective {
29
- set ngxRepeat(count) {
30
- for (let i = this.viewContainer.length; i > count; i--)
31
- this.viewContainer.remove(i - 1);
32
- for (let i = this.viewContainer.length; i < count; i++)
33
- this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));
34
- for (let i = 0; i < this.viewContainer.length; i++) {
35
- const viewRef = this.viewContainer.get(i);
36
- viewRef.context.count = count;
37
- }
38
- }
39
- constructor(templateRef, viewContainer) {
40
- this.templateRef = templateRef;
41
- this.viewContainer = viewContainer;
42
- }
43
- }
44
- NgxRepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
45
- NgxRepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: NgxRepeatDirective, selector: "[ngxRepeat]", inputs: { ngxRepeat: "ngxRepeat" }, ngImport: i0 });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatDirective, decorators: [{
47
- type: Directive,
48
- args: [{
49
- selector: '[ngxRepeat]'
50
- }]
51
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngxRepeat: [{
52
- type: Input
53
- }] } });
54
-
55
- class NgxRepeatModule {
56
- }
57
- NgxRepeatModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
58
- NgxRepeatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, declarations: [NgxRepeatDirective], exports: [NgxRepeatDirective] });
59
- NgxRepeatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, decorators: [{
61
- type: NgModule,
62
- args: [{
63
- declarations: [NgxRepeatDirective],
64
- exports: [NgxRepeatDirective]
65
- }]
66
- }] });
67
-
68
- /*
69
- * Public API Surface of ngx-repeat
70
- */
71
-
72
- /**
73
- * Generated bundle index. Do not edit.
74
- */
75
-
76
- export { NgxRepeatDirective, NgxRepeatModule, RepeatDirectiveContext };
77
- //# sourceMappingURL=ngx-repeat.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-repeat.mjs","sources":["../../../projects/ngx-repeat/src/lib/ngx-repeat.directive.ts","../../../projects/ngx-repeat/src/lib/ngx-repeat.module.ts","../../../projects/ngx-repeat/src/public-api.ts","../../../projects/ngx-repeat/src/ngx-repeat.ts"],"sourcesContent":["import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * @publicApi\n */\nexport class RepeatDirectiveContext {\n constructor(public $implicit: number, public count: number) {}\n\n public get index(): number {\n return this.$implicit;\n }\n\n public get first(): boolean {\n return this.$implicit === 0;\n }\n\n public get last(): boolean {\n return this.index === this.count - 1;\n }\n\n public get even(): boolean {\n return this.$implicit % 2 === 0;\n }\n\n public get odd(): boolean {\n return this.$implicit % 2 === 1;\n }\n}\n\n@Directive({\n selector: '[ngxRepeat]'\n})\nexport class NgxRepeatDirective {\n @Input() public set ngxRepeat(count: number) {\n for (let i = this.viewContainer.length; i > count; i--) this.viewContainer.remove(i - 1);\n\n for (let i = this.viewContainer.length; i < count; i++)\n this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));\n\n for (let i = 0; i < this.viewContainer.length; i++) {\n const viewRef = <EmbeddedViewRef<RepeatDirectiveContext>>this.viewContainer.get(i);\n viewRef.context.count = count;\n }\n }\n\n constructor(private templateRef: TemplateRef<RepeatDirectiveContext>, private viewContainer: ViewContainerRef) {}\n}\n","import { NgModule } from '@angular/core';\nimport { NgxRepeatDirective } from './ngx-repeat.directive';\n\n@NgModule({\n declarations: [NgxRepeatDirective],\n exports: [NgxRepeatDirective]\n})\nexport class NgxRepeatModule {}\n","/*\n * Public API Surface of ngx-repeat\n */\n\nexport * from './lib/ngx-repeat.directive';\nexport * from './lib/ngx-repeat.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Directive, Input, NgModule } from '@angular/core';
3
-
4
- /**
5
- * @publicApi
6
- */
7
- class RepeatDirectiveContext {
8
- constructor($implicit, count) {
9
- this.$implicit = $implicit;
10
- this.count = count;
11
- }
12
- get index() {
13
- return this.$implicit;
14
- }
15
- get first() {
16
- return this.$implicit === 0;
17
- }
18
- get last() {
19
- return this.index === this.count - 1;
20
- }
21
- get even() {
22
- return this.$implicit % 2 === 0;
23
- }
24
- get odd() {
25
- return this.$implicit % 2 === 1;
26
- }
27
- }
28
- class NgxRepeatDirective {
29
- set ngxRepeat(count) {
30
- for (let i = this.viewContainer.length; i > count; i--)
31
- this.viewContainer.remove(i - 1);
32
- for (let i = this.viewContainer.length; i < count; i++)
33
- this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));
34
- for (let i = 0; i < this.viewContainer.length; i++) {
35
- const viewRef = this.viewContainer.get(i);
36
- viewRef.context.count = count;
37
- }
38
- }
39
- constructor(templateRef, viewContainer) {
40
- this.templateRef = templateRef;
41
- this.viewContainer = viewContainer;
42
- }
43
- }
44
- NgxRepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
45
- NgxRepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: NgxRepeatDirective, selector: "[ngxRepeat]", inputs: { ngxRepeat: "ngxRepeat" }, ngImport: i0 });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatDirective, decorators: [{
47
- type: Directive,
48
- args: [{
49
- selector: '[ngxRepeat]'
50
- }]
51
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { ngxRepeat: [{
52
- type: Input
53
- }] } });
54
-
55
- class NgxRepeatModule {
56
- }
57
- NgxRepeatModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
58
- NgxRepeatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, declarations: [NgxRepeatDirective], exports: [NgxRepeatDirective] });
59
- NgxRepeatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgxRepeatModule, decorators: [{
61
- type: NgModule,
62
- args: [{
63
- declarations: [NgxRepeatDirective],
64
- exports: [NgxRepeatDirective]
65
- }]
66
- }] });
67
-
68
- /*
69
- * Public API Surface of ngx-repeat
70
- */
71
-
72
- /**
73
- * Generated bundle index. Do not edit.
74
- */
75
-
76
- export { NgxRepeatDirective, NgxRepeatModule, RepeatDirectiveContext };
77
- //# sourceMappingURL=ngx-repeat.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-repeat.mjs","sources":["../../../projects/ngx-repeat/src/lib/ngx-repeat.directive.ts","../../../projects/ngx-repeat/src/lib/ngx-repeat.module.ts","../../../projects/ngx-repeat/src/public-api.ts","../../../projects/ngx-repeat/src/ngx-repeat.ts"],"sourcesContent":["import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * @publicApi\n */\nexport class RepeatDirectiveContext {\n constructor(public $implicit: number, public count: number) {}\n\n public get index(): number {\n return this.$implicit;\n }\n\n public get first(): boolean {\n return this.$implicit === 0;\n }\n\n public get last(): boolean {\n return this.index === this.count - 1;\n }\n\n public get even(): boolean {\n return this.$implicit % 2 === 0;\n }\n\n public get odd(): boolean {\n return this.$implicit % 2 === 1;\n }\n}\n\n@Directive({\n selector: '[ngxRepeat]'\n})\nexport class NgxRepeatDirective {\n @Input() public set ngxRepeat(count: number) {\n for (let i = this.viewContainer.length; i > count; i--) this.viewContainer.remove(i - 1);\n\n for (let i = this.viewContainer.length; i < count; i++)\n this.viewContainer.createEmbeddedView(this.templateRef, new RepeatDirectiveContext(i, count));\n\n for (let i = 0; i < this.viewContainer.length; i++) {\n const viewRef = <EmbeddedViewRef<RepeatDirectiveContext>>this.viewContainer.get(i);\n viewRef.context.count = count;\n }\n }\n\n constructor(private templateRef: TemplateRef<RepeatDirectiveContext>, private viewContainer: ViewContainerRef) {}\n}\n","import { NgModule } from '@angular/core';\nimport { NgxRepeatDirective } from './ngx-repeat.directive';\n\n@NgModule({\n declarations: [NgxRepeatDirective],\n exports: [NgxRepeatDirective]\n})\nexport class NgxRepeatModule {}\n","/*\n * Public API Surface of ngx-repeat\n */\n\nexport * from './lib/ngx-repeat.directive';\nexport * from './lib/ngx-repeat.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./ngx-repeat.directive";
3
- export declare class NgxRepeatModule {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxRepeatModule, never>;
5
- static ɵmod: i0.ɵɵNgModuleDeclaration<NgxRepeatModule, [typeof i1.NgxRepeatDirective], never, [typeof i1.NgxRepeatDirective]>;
6
- static ɵinj: i0.ɵɵInjectorDeclaration<NgxRepeatModule>;
7
- }
File without changes