@vectoriox/iox-ui 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +149 -0
- package/fesm2022/vectoriox-iox-ui.mjs +616 -0
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -0
- package/index.d.ts +205 -0
- package/package.json +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# iox-ui — UI component library
|
|
2
|
+
|
|
3
|
+
This package contains shared UI components, directives and services used across IOX apps. It is built as an Angular library and exported from the `projects/iox-ui` package.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
- Modular components: `IoxUiModule` aggregates smaller modules (AOS, Masonry, Page, ViewPosition).
|
|
7
|
+
- Individual modules are available and can be imported on demand.
|
|
8
|
+
- Includes a `PageScrollProvider` service (module-scoped) that wraps the Lenis smooth-scrolling library.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
Install the library in your application or workspace (published package name: `@iox-dev/iox-ui`):
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @iox-dev/iox-ui
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Note: this library depends on `lenis` for the `PageScrollProvider`. The workspace version uses `lenis` as a dependency; consumers installing the published package will get it automatically.
|
|
18
|
+
|
|
19
|
+
## Public API / Exports
|
|
20
|
+
The library exports (important list):
|
|
21
|
+
|
|
22
|
+
- `IoxUiModule` — umbrella module that re-exports submodules
|
|
23
|
+
- `IoxPageModule` / `IoxPageComponent` — page wrapper with scroll events
|
|
24
|
+
- `IoxAosModule` / `iox-aos` directive and container component — animation-on-scroll helpers
|
|
25
|
+
- `IoxMasonryModule` — masonry layout helpers
|
|
26
|
+
- `ViewPositionModule` / `ViewPositionDirective` — viewport position utilities
|
|
27
|
+
- `PageScrollProvider` service — Lenis wrapper (module-scoped)
|
|
28
|
+
|
|
29
|
+
Refer to `projects/iox-ui/src/public-api.ts` for the full list of exported symbols.
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
Import the umbrella module or individual modules in your application module:
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { IoxUiModule } from '@iox-dev/iox-ui';
|
|
37
|
+
|
|
38
|
+
@NgModule({
|
|
39
|
+
imports: [IoxUiModule]
|
|
40
|
+
})
|
|
41
|
+
export class AppModule {}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or import only the page module if you only need the page component and scroll provider:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { IoxPageModule } from '@iox-dev/iox-ui';
|
|
48
|
+
|
|
49
|
+
@NgModule({
|
|
50
|
+
imports: [IoxPageModule]
|
|
51
|
+
})
|
|
52
|
+
export class SomeModule {}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### IoxPageComponent
|
|
56
|
+
- **Selector:** `iox-page-component`
|
|
57
|
+
- **Inputs:**
|
|
58
|
+
- `class: string` — CSS classes applied to the outer wrapper.
|
|
59
|
+
- **Outputs:**
|
|
60
|
+
- `scrollEvent` — emits an object with `scrollTop`, `scrollLeft`, `scrollHeight`, `scrollWidth`, `clientHeight`, `clientWidth`, `scrollPercentage`.
|
|
61
|
+
|
|
62
|
+
Example:
|
|
63
|
+
|
|
64
|
+
```html
|
|
65
|
+
<iox-page-component class="my-page">
|
|
66
|
+
<div>Page content here</div>
|
|
67
|
+
</iox-page-component>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If you need to access the scrolling API programmatically, inject `PageScrollProvider` in a component that belongs to a module that imports `IoxPageModule` (the provider is module-scoped and provided by `IoxPageModule`):
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
constructor(private pageScroll: PageScrollProvider) {}
|
|
74
|
+
|
|
75
|
+
ngAfterViewInit() {
|
|
76
|
+
this.pageScroll.init({ wrapper: someEl });
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Services
|
|
81
|
+
|
|
82
|
+
- `PageScrollProvider` — wraps Lenis. Note: it is provided in `IoxPageModule` providers, so it's available only when the module is imported. This prevents the service from being visible globally unless explicitly included.
|
|
83
|
+
|
|
84
|
+
## Development
|
|
85
|
+
|
|
86
|
+
Build the workspace and library:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
cd /path/to/repo/iox-ui
|
|
90
|
+
npm install
|
|
91
|
+
npm run build
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Run the unit tests (if configured):
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm test
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Publishing
|
|
101
|
+
The repo includes GitHub Actions workflows to build and publish the library. The publishing workflow will:
|
|
102
|
+
|
|
103
|
+
- Build the library
|
|
104
|
+
- Bump the patch version automatically
|
|
105
|
+
- Commit the bumped version to `projects/iox-ui/package.json` and push to `main`
|
|
106
|
+
- Publish the package to npm (requires `NPM_TOKEN` secret)
|
|
107
|
+
|
|
108
|
+
If you prefer manual control of the version, use the manual publish workflow or publish locally (see `CONTRIBUTING` below).
|
|
109
|
+
|
|
110
|
+
## Contributing
|
|
111
|
+
|
|
112
|
+
1. Create a feature branch from `main`.
|
|
113
|
+
2. Add tests and ensure `npm run build` and `npm test` pass.
|
|
114
|
+
3. Open a Pull Request — CI will build the library.
|
|
115
|
+
|
|
116
|
+
If you add services that should be module-scoped, register them in the module `providers` array to keep DI scoping predictable.
|
|
117
|
+
|
|
118
|
+
## Troubleshooting
|
|
119
|
+
|
|
120
|
+
- If you see `Cannot find module 'lenis'` at runtime, ensure `lenis` is installed in the consuming project (it should be in the published package dependencies). Locally run `npm install lenis`.
|
|
121
|
+
- Sass `@import` deprecation warnings are present in the workspace styles; consider migrating to `@use`/`@forward`.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
For more details, inspect `projects/iox-ui/src/public-api.ts` and the module files under `projects/iox-ui/src/lib/`.
|
|
126
|
+
# IoxUi
|
|
127
|
+
|
|
128
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.1.0.
|
|
129
|
+
|
|
130
|
+
## Code scaffolding
|
|
131
|
+
|
|
132
|
+
Run `ng generate component component-name --project iox-ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project iox-ui`.
|
|
133
|
+
> Note: Don't forget to add `--project iox-ui` or else it will be added to the default project in your `angular.json` file.
|
|
134
|
+
|
|
135
|
+
## Build
|
|
136
|
+
|
|
137
|
+
Run `ng build iox-ui` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
138
|
+
|
|
139
|
+
## Publishing
|
|
140
|
+
|
|
141
|
+
After building your library with `ng build iox-ui`, go to the dist folder `cd dist/iox-ui` and run `npm publish`.
|
|
142
|
+
|
|
143
|
+
## Running unit tests
|
|
144
|
+
|
|
145
|
+
Run `ng test iox-ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
146
|
+
|
|
147
|
+
## Further help
|
|
148
|
+
|
|
149
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, HostListener, Output, Input, Directive, NgModule, Injectable, ViewChild, Component, Host, Optional, forwardRef, Inject } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/animations';
|
|
4
|
+
import { style, animate } from '@angular/animations';
|
|
5
|
+
import { Subject, fromEvent } from 'rxjs';
|
|
6
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
7
|
+
import { Masonry } from '@fristys/masonry';
|
|
8
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
9
|
+
import { CommonModule } from '@angular/common';
|
|
10
|
+
import Lenis from 'lenis';
|
|
11
|
+
|
|
12
|
+
class ViewPositionDirective {
|
|
13
|
+
constructor(_elr) {
|
|
14
|
+
this._elr = _elr;
|
|
15
|
+
this._scrollDirection = "Down";
|
|
16
|
+
this._scrollPos = 0;
|
|
17
|
+
this.isOnScreen = false;
|
|
18
|
+
this.isHalfScreen = false;
|
|
19
|
+
this.onEnter = new EventEmitter();
|
|
20
|
+
this.onLeave = new EventEmitter();
|
|
21
|
+
this.onHalf = new EventEmitter();
|
|
22
|
+
this._initScreenDeminitions();
|
|
23
|
+
console.log(`screent highet: ${this._viewPortHighet}`);
|
|
24
|
+
}
|
|
25
|
+
ngAfterViewInit() {
|
|
26
|
+
this._elementOffseTop = this._elr.nativeElement.offsetTop;
|
|
27
|
+
this._elementHeight = this._elr.nativeElement.offsetHeight;
|
|
28
|
+
console.log(`element offset Y = ${this._elementOffseTop}`);
|
|
29
|
+
}
|
|
30
|
+
onScroll(e) {
|
|
31
|
+
if ((document.body.getBoundingClientRect()).top > this._scrollPos) {
|
|
32
|
+
if (this._scrollDirection != "Up") {
|
|
33
|
+
this.isHalfScreen = false;
|
|
34
|
+
this._scrollDirection = "Up";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
if (this._scrollDirection != "Down") {
|
|
39
|
+
this.isHalfScreen = false;
|
|
40
|
+
this._scrollDirection = "Down";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
this._scrollPos = (document.body.getBoundingClientRect()).top;
|
|
44
|
+
let currentClientHight = this._elr.nativeElement.getBoundingClientRect().top;
|
|
45
|
+
if (currentClientHight >= this._viewPortHighet || currentClientHight < -this._elementHeight) {
|
|
46
|
+
if (this.isOnScreen) {
|
|
47
|
+
this.isOnScreen = false;
|
|
48
|
+
this.onLeave.emit("OUT");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (!this.isOnScreen) {
|
|
53
|
+
this.isOnScreen = true;
|
|
54
|
+
this.onEnter.emit("IN");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (currentClientHight < this._halfSscreen && currentClientHight > 0 && this._scrollDirection == "Down") {
|
|
58
|
+
if (!this.isHalfScreen) {
|
|
59
|
+
this.isHalfScreen = true;
|
|
60
|
+
console.log("half");
|
|
61
|
+
this.onHalf.emit(this.data);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (currentClientHight + this._elementHeight > this._halfSscreen && currentClientHight + this._elementHeight < this._viewPortHighet && this._scrollDirection == "Up") {
|
|
65
|
+
if (!this.isHalfScreen) {
|
|
66
|
+
this.isHalfScreen = true;
|
|
67
|
+
console.log("I am half");
|
|
68
|
+
this.onHalf.emit(this.data);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
onResize(e) {
|
|
73
|
+
this._viewPortHighet = window.innerHeight;
|
|
74
|
+
this._initScreenDeminitions();
|
|
75
|
+
}
|
|
76
|
+
_initScreenDeminitions() {
|
|
77
|
+
this._viewPortHighet = window.innerHeight;
|
|
78
|
+
this._curterScreen = Math.trunc(this._viewPortHighet * 0.25);
|
|
79
|
+
this._halfSscreen = Math.trunc(this._viewPortHighet * 0.5);
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ViewPositionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
82
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: ViewPositionDirective, isStandalone: false, selector: "[view-position]", inputs: { data: "data" }, outputs: { onEnter: "onEnter", onLeave: "onLeave", onHalf: "onHalf" }, host: { listeners: { "window:scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, ngImport: i0 }); }
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ViewPositionDirective, decorators: [{
|
|
85
|
+
type: Directive,
|
|
86
|
+
args: [{
|
|
87
|
+
selector: '[view-position]',
|
|
88
|
+
standalone: false
|
|
89
|
+
}]
|
|
90
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], onEnter: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}], onLeave: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}], onHalf: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}], onScroll: [{
|
|
99
|
+
type: HostListener,
|
|
100
|
+
args: ['window:scroll', ['$event']]
|
|
101
|
+
}], onResize: [{
|
|
102
|
+
type: HostListener,
|
|
103
|
+
args: ['window:resize', ['$event']]
|
|
104
|
+
}] } });
|
|
105
|
+
|
|
106
|
+
class ViewPositionModule {
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ViewPositionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
108
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: ViewPositionModule, declarations: [ViewPositionDirective], exports: [ViewPositionDirective] }); }
|
|
109
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ViewPositionModule }); }
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ViewPositionModule, decorators: [{
|
|
112
|
+
type: NgModule,
|
|
113
|
+
args: [{
|
|
114
|
+
declarations: [
|
|
115
|
+
ViewPositionDirective
|
|
116
|
+
],
|
|
117
|
+
imports: [],
|
|
118
|
+
exports: [
|
|
119
|
+
ViewPositionDirective
|
|
120
|
+
]
|
|
121
|
+
}]
|
|
122
|
+
}] });
|
|
123
|
+
|
|
124
|
+
/********** Entries Animations ********************/
|
|
125
|
+
const IoxAnimationStyles = {};
|
|
126
|
+
IoxAnimationStyles["fade-up"] = (delay, duration) => {
|
|
127
|
+
return [style({ opacity: 0, transform: "translate3d(0,100px,0)" }),
|
|
128
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0)" }))];
|
|
129
|
+
};
|
|
130
|
+
IoxAnimationStyles["fade-right"] = (delay, duration) => {
|
|
131
|
+
return [style({ opacity: 0, transform: "translateX(150px)" }),
|
|
132
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0)" }))];
|
|
133
|
+
};
|
|
134
|
+
IoxAnimationStyles["fade-out-right"] = (delay, duration) => {
|
|
135
|
+
return [style({ opacity: 1, transform: "translateX(0px)" }),
|
|
136
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: "translateX(150px)" }))];
|
|
137
|
+
};
|
|
138
|
+
IoxAnimationStyles["fade-left"] = (delay, duration) => {
|
|
139
|
+
return [style({ opacity: 0, transform: "translateX(-150px)" }),
|
|
140
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0)" }))];
|
|
141
|
+
};
|
|
142
|
+
IoxAnimationStyles["fade-out-up"] = (delay, duration) => {
|
|
143
|
+
return [style({ opacity: 1, transform: "translateZ(0)" }),
|
|
144
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: "translate3d(0,-100px,0)" }))];
|
|
145
|
+
};
|
|
146
|
+
IoxAnimationStyles["flip-left"] = (delay, duration) => {
|
|
147
|
+
return [style({ opacity: 0, transform: "perspective(2500px) rotateY(-100deg)" }),
|
|
148
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "perspective(2500px) rotateY(0)" }))];
|
|
149
|
+
};
|
|
150
|
+
IoxAnimationStyles["flip-up"] = (delay, duration) => {
|
|
151
|
+
return [style({ opacity: 0, transform: "perspective(2500px) rotateX(-100deg)" }),
|
|
152
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "perspective(2500px) rotateY(0)" }))];
|
|
153
|
+
};
|
|
154
|
+
IoxAnimationStyles["zoom-in-up"] = (delay, duration) => {
|
|
155
|
+
return [style({ opacity: 0, transform: "translate3d(0,100px,0) scale(.6)" }),
|
|
156
|
+
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0) scale(1)" }))];
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
class AOSService {
|
|
160
|
+
constructor() {
|
|
161
|
+
this._scrollOffset = new Subject();
|
|
162
|
+
this.scrollOffset = this._scrollOffset.asObservable();
|
|
163
|
+
}
|
|
164
|
+
updateScrollOffset(offset) {
|
|
165
|
+
this._scrollOffset.next(offset);
|
|
166
|
+
}
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AOSService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
168
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AOSService, providedIn: 'root' }); }
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AOSService, decorators: [{
|
|
171
|
+
type: Injectable,
|
|
172
|
+
args: [{ providedIn: 'root' }]
|
|
173
|
+
}], ctorParameters: () => [] });
|
|
174
|
+
|
|
175
|
+
class IoxAnimateContainer {
|
|
176
|
+
constructor(_element, _aOSService) {
|
|
177
|
+
this._element = _element;
|
|
178
|
+
this._aOSService = _aOSService;
|
|
179
|
+
this.kickIn = true;
|
|
180
|
+
this._scrollOffset = new Subject();
|
|
181
|
+
this.scrollOffset = this._scrollOffset.asObservable();
|
|
182
|
+
}
|
|
183
|
+
ngAfterViewInit() {
|
|
184
|
+
this.updateOffset();
|
|
185
|
+
}
|
|
186
|
+
onScroll($event) {
|
|
187
|
+
this.updateOffset();
|
|
188
|
+
}
|
|
189
|
+
ngOnChanges(changes) {
|
|
190
|
+
console.log(changes);
|
|
191
|
+
if (changes['kickIn'] && changes['kickIn'].currentValue) {
|
|
192
|
+
this.updateOffset();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
updateOffset() {
|
|
196
|
+
let elClientRect = this.animateRooteElement.nativeElement.getBoundingClientRect();
|
|
197
|
+
this._scrollOffset.next(elClientRect);
|
|
198
|
+
this._aOSService.updateScrollOffset(elClientRect);
|
|
199
|
+
}
|
|
200
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAnimateContainer, deps: [{ token: i0.ElementRef }, { token: AOSService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
201
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: IoxAnimateContainer, isStandalone: false, selector: "[ioxAnimateContainer], ioxAnimateContainer", inputs: { kickIn: "kickIn" }, host: { listeners: { "scroll": "onScroll($event)" } }, viewQueries: [{ propertyName: "animateRooteElement", first: true, predicate: ["animateRooteElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `<div class='animate_root_element' #animateRooteElement>
|
|
202
|
+
<ng-content></ng-content>
|
|
203
|
+
</div>`, isInline: true }); }
|
|
204
|
+
}
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAnimateContainer, decorators: [{
|
|
206
|
+
type: Component,
|
|
207
|
+
args: [{
|
|
208
|
+
selector: "[ioxAnimateContainer], ioxAnimateContainer",
|
|
209
|
+
template: `<div class='animate_root_element' #animateRooteElement>
|
|
210
|
+
<ng-content></ng-content>
|
|
211
|
+
</div>`,
|
|
212
|
+
standalone: false
|
|
213
|
+
}]
|
|
214
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: AOSService }], propDecorators: { kickIn: [{
|
|
215
|
+
type: Input,
|
|
216
|
+
args: ['kickIn']
|
|
217
|
+
}], animateRooteElement: [{
|
|
218
|
+
type: ViewChild,
|
|
219
|
+
args: ['animateRooteElement']
|
|
220
|
+
}], onScroll: [{
|
|
221
|
+
type: HostListener,
|
|
222
|
+
args: ['scroll', ['$event']]
|
|
223
|
+
}] } });
|
|
224
|
+
|
|
225
|
+
class IoxAosDirective {
|
|
226
|
+
constructor(_animateContainer, _element, _animationBuilder, _renderer) {
|
|
227
|
+
this._animateContainer = _animateContainer;
|
|
228
|
+
this._element = _element;
|
|
229
|
+
this._animationBuilder = _animationBuilder;
|
|
230
|
+
this._renderer = _renderer;
|
|
231
|
+
this.animationDelay = "";
|
|
232
|
+
this.animationIn = "";
|
|
233
|
+
this.animationOut = "";
|
|
234
|
+
this.animationDuration = "0.5s";
|
|
235
|
+
this.isAnimationPlayed = false;
|
|
236
|
+
this._elTop = 0;
|
|
237
|
+
this._renderer.setStyle(_element.nativeElement, 'opacity', '0');
|
|
238
|
+
}
|
|
239
|
+
ngOnInit() {
|
|
240
|
+
}
|
|
241
|
+
ngAfterViewInit() {
|
|
242
|
+
setTimeout(() => {
|
|
243
|
+
this._elTop = this._cumulativeOffset(this._element.nativeElement).top;
|
|
244
|
+
if (this._animateContainer) {
|
|
245
|
+
if (this._animateContainer.kickIn) {
|
|
246
|
+
this.runIfVisiable();
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
this.runIfVisiable();
|
|
254
|
+
}
|
|
255
|
+
}, 150);
|
|
256
|
+
const resizeObserver = new ResizeObserver((entries) => this._elTop = this._cumulativeOffset(this._element.nativeElement).top);
|
|
257
|
+
resizeObserver.observe(document.body);
|
|
258
|
+
if (this._animateContainer) {
|
|
259
|
+
this._animateContainer?.scrollOffset.subscribe((offset) => {
|
|
260
|
+
if (this._animateContainer.kickIn) {
|
|
261
|
+
this.scrollEventHandler(-1 * offset.top);
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
makeAnimationIn(animationStyle) {
|
|
267
|
+
let animation = IoxAnimationStyles[animationStyle](this.animationDelay, this.animationDuration);
|
|
268
|
+
const myAnimation = this._animationBuilder.build(animation);
|
|
269
|
+
return myAnimation.create(this._element.nativeElement);
|
|
270
|
+
}
|
|
271
|
+
_cumulativeOffset(element) {
|
|
272
|
+
var top = 0, left = 0;
|
|
273
|
+
do {
|
|
274
|
+
top += element.offsetTop || 0;
|
|
275
|
+
left += element.offsetLeft || 0;
|
|
276
|
+
element = element.offsetParent;
|
|
277
|
+
} while (element);
|
|
278
|
+
return {
|
|
279
|
+
top: top,
|
|
280
|
+
left: left
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
;
|
|
284
|
+
onScrollEvent($event) {
|
|
285
|
+
this.scrollEventHandler(window.pageYOffset);
|
|
286
|
+
}
|
|
287
|
+
isVisable(offset) {
|
|
288
|
+
//console.log(this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight);
|
|
289
|
+
//return this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight;
|
|
290
|
+
return this._elTop >= offset && this._elTop <= offset + window.innerHeight;
|
|
291
|
+
}
|
|
292
|
+
scrollEventHandler(offset) {
|
|
293
|
+
if (this._animateContainer && this._animateContainer.kickIn == false) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (this.isVisable(offset) && !this.isAnimationPlayed) {
|
|
297
|
+
let animationStyle = this.animationIn || "fade-up";
|
|
298
|
+
this.makeAnimationIn(animationStyle).play();
|
|
299
|
+
this.isAnimationPlayed = true;
|
|
300
|
+
}
|
|
301
|
+
else if (!this.isVisable(offset) && this.isAnimationPlayed && this.animationOut) {
|
|
302
|
+
this.makeAnimationIn(this.animationOut).play();
|
|
303
|
+
this.isAnimationPlayed = false;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
runIfVisiable() {
|
|
307
|
+
if (this.isVisable(window.pageYOffset)) {
|
|
308
|
+
let animationStyle = this.animationIn || "fade-up";
|
|
309
|
+
this.makeAnimationIn(animationStyle).play();
|
|
310
|
+
this.isAnimationPlayed = true;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
ngOnDestroy() {
|
|
314
|
+
}
|
|
315
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAosDirective, deps: [{ token: IoxAnimateContainer, host: true, optional: true }, { token: i0.ElementRef }, { token: i2.AnimationBuilder }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
316
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: IoxAosDirective, isStandalone: false, selector: "[ioxAnimate], ioxAnimate", inputs: { animationDelay: "animationDelay", animationIn: "animationIn", animationOut: "animationOut", animationDuration: "animationDuration" }, host: { listeners: { "document:scroll": "onScrollEvent($event)" } }, ngImport: i0 }); }
|
|
317
|
+
}
|
|
318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAosDirective, decorators: [{
|
|
319
|
+
type: Directive,
|
|
320
|
+
args: [{
|
|
321
|
+
selector: "[ioxAnimate], ioxAnimate",
|
|
322
|
+
standalone: false
|
|
323
|
+
}]
|
|
324
|
+
}], ctorParameters: () => [{ type: IoxAnimateContainer, decorators: [{
|
|
325
|
+
type: Host
|
|
326
|
+
}, {
|
|
327
|
+
type: Optional
|
|
328
|
+
}] }, { type: i0.ElementRef }, { type: i2.AnimationBuilder }, { type: i0.Renderer2 }], propDecorators: { animationDelay: [{
|
|
329
|
+
type: Input,
|
|
330
|
+
args: ["animationDelay"]
|
|
331
|
+
}], animationIn: [{
|
|
332
|
+
type: Input,
|
|
333
|
+
args: ["animationIn"]
|
|
334
|
+
}], animationOut: [{
|
|
335
|
+
type: Input,
|
|
336
|
+
args: ["animationOut"]
|
|
337
|
+
}], animationDuration: [{
|
|
338
|
+
type: Input,
|
|
339
|
+
args: ["animationDuration"]
|
|
340
|
+
}], onScrollEvent: [{
|
|
341
|
+
type: HostListener,
|
|
342
|
+
args: ['document:scroll', ['$event']]
|
|
343
|
+
}] } });
|
|
344
|
+
function ViewParent() {
|
|
345
|
+
throw new Error("Function not implemented.");
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
class IoxAosModule {
|
|
349
|
+
static forRoot() {
|
|
350
|
+
return {
|
|
351
|
+
ngModule: IoxAosModule,
|
|
352
|
+
providers: [AOSService]
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAosModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
356
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: IoxAosModule, declarations: [IoxAosDirective,
|
|
357
|
+
IoxAnimateContainer], imports: [BrowserAnimationsModule], exports: [IoxAosDirective,
|
|
358
|
+
IoxAnimateContainer] }); }
|
|
359
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAosModule, providers: [
|
|
360
|
+
AOSService
|
|
361
|
+
], imports: [BrowserAnimationsModule] }); }
|
|
362
|
+
}
|
|
363
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxAosModule, decorators: [{
|
|
364
|
+
type: NgModule,
|
|
365
|
+
args: [{
|
|
366
|
+
declarations: [
|
|
367
|
+
IoxAosDirective,
|
|
368
|
+
IoxAnimateContainer
|
|
369
|
+
],
|
|
370
|
+
imports: [
|
|
371
|
+
BrowserAnimationsModule
|
|
372
|
+
],
|
|
373
|
+
providers: [
|
|
374
|
+
AOSService
|
|
375
|
+
],
|
|
376
|
+
exports: [
|
|
377
|
+
IoxAosDirective,
|
|
378
|
+
IoxAnimateContainer
|
|
379
|
+
]
|
|
380
|
+
}]
|
|
381
|
+
}] });
|
|
382
|
+
|
|
383
|
+
class IoxMasonryService {
|
|
384
|
+
constructor() { }
|
|
385
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
386
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryService, providedIn: 'root' }); }
|
|
387
|
+
}
|
|
388
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryService, decorators: [{
|
|
389
|
+
type: Injectable,
|
|
390
|
+
args: [{
|
|
391
|
+
providedIn: 'root'
|
|
392
|
+
}]
|
|
393
|
+
}], ctorParameters: () => [] });
|
|
394
|
+
|
|
395
|
+
class IoxMasonryComponent {
|
|
396
|
+
constructor(_element) {
|
|
397
|
+
this._element = _element;
|
|
398
|
+
// Inputs
|
|
399
|
+
this.options = {};
|
|
400
|
+
this.useImagesLoaded = false;
|
|
401
|
+
this.updateLayout = false;
|
|
402
|
+
this.layoutComplete = new EventEmitter();
|
|
403
|
+
this.isAppendAllowed = true;
|
|
404
|
+
this.add = (element) => {
|
|
405
|
+
setTimeout(() => {
|
|
406
|
+
this._msnry.init();
|
|
407
|
+
}, 200);
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
ngAfterViewInit() {
|
|
411
|
+
console.log("test");
|
|
412
|
+
}
|
|
413
|
+
ngOnInit() {
|
|
414
|
+
this._msnry = new Masonry(document.getElementById('masonry'), this.options);
|
|
415
|
+
this.layout();
|
|
416
|
+
}
|
|
417
|
+
ngOnChanges(changes) {
|
|
418
|
+
console.log(changes);
|
|
419
|
+
}
|
|
420
|
+
remove(element) {
|
|
421
|
+
this._msnry.remove(element);
|
|
422
|
+
}
|
|
423
|
+
layout() {
|
|
424
|
+
setTimeout(() => {
|
|
425
|
+
this._msnry.init();
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
429
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: IoxMasonryComponent, isStandalone: false, selector: "[iox-masonry], iox-masonry", inputs: { options: "options", useImagesLoaded: "useImagesLoaded", updateLayout: "updateLayout" }, outputs: { layoutComplete: "layoutComplete" }, usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
430
|
+
}
|
|
431
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryComponent, decorators: [{
|
|
432
|
+
type: Component,
|
|
433
|
+
args: [{ selector: "[iox-masonry], iox-masonry", template: `<ng-content></ng-content>`, standalone: false }]
|
|
434
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { options: [{
|
|
435
|
+
type: Input
|
|
436
|
+
}], useImagesLoaded: [{
|
|
437
|
+
type: Input
|
|
438
|
+
}], updateLayout: [{
|
|
439
|
+
type: Input
|
|
440
|
+
}], layoutComplete: [{
|
|
441
|
+
type: Output
|
|
442
|
+
}] } });
|
|
443
|
+
|
|
444
|
+
class IoxMasonryItemDirective {
|
|
445
|
+
constructor(_element, _parent, _renderer) {
|
|
446
|
+
this._element = _element;
|
|
447
|
+
this._parent = _parent;
|
|
448
|
+
this._renderer = _renderer;
|
|
449
|
+
//this._renderer.setStyle(_element.nativeElement,'opacity', '0');
|
|
450
|
+
}
|
|
451
|
+
ngAfterViewInit() {
|
|
452
|
+
console.log(this._element.nativeElement);
|
|
453
|
+
this._parent.add(this._element.nativeElement);
|
|
454
|
+
}
|
|
455
|
+
ngOnDestroy() {
|
|
456
|
+
this._parent.remove(this._element.nativeElement);
|
|
457
|
+
}
|
|
458
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryItemDirective, deps: [{ token: i0.ElementRef }, { token: forwardRef(() => IoxMasonryComponent) }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
459
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: IoxMasonryItemDirective, isStandalone: false, selector: "[ioxMasonryItem], ioxMasonryItem", ngImport: i0 }); }
|
|
460
|
+
}
|
|
461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryItemDirective, decorators: [{
|
|
462
|
+
type: Directive,
|
|
463
|
+
args: [{
|
|
464
|
+
selector: "[ioxMasonryItem], ioxMasonryItem",
|
|
465
|
+
standalone: false
|
|
466
|
+
}]
|
|
467
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: IoxMasonryComponent, decorators: [{
|
|
468
|
+
type: Inject,
|
|
469
|
+
args: [forwardRef(() => IoxMasonryComponent)]
|
|
470
|
+
}] }, { type: i0.Renderer2 }] });
|
|
471
|
+
|
|
472
|
+
class IoxMasonryModule {
|
|
473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
474
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryModule, declarations: [IoxMasonryComponent, IoxMasonryItemDirective], imports: [BrowserModule], exports: [IoxMasonryComponent, IoxMasonryItemDirective] }); }
|
|
475
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryModule, imports: [BrowserModule] }); }
|
|
476
|
+
}
|
|
477
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxMasonryModule, decorators: [{
|
|
478
|
+
type: NgModule,
|
|
479
|
+
args: [{
|
|
480
|
+
declarations: [IoxMasonryComponent, IoxMasonryItemDirective],
|
|
481
|
+
imports: [
|
|
482
|
+
BrowserModule
|
|
483
|
+
],
|
|
484
|
+
exports: [IoxMasonryComponent, IoxMasonryItemDirective]
|
|
485
|
+
}]
|
|
486
|
+
}] });
|
|
487
|
+
|
|
488
|
+
class PageScrollProvider {
|
|
489
|
+
init(options) {
|
|
490
|
+
if (this.lenis) {
|
|
491
|
+
this.lenis.destroy();
|
|
492
|
+
}
|
|
493
|
+
if (this.rafId != null) {
|
|
494
|
+
cancelAnimationFrame(this.rafId);
|
|
495
|
+
}
|
|
496
|
+
this.lenis = new Lenis(options || {});
|
|
497
|
+
this.startLoop();
|
|
498
|
+
}
|
|
499
|
+
scrollTo(y, options) {
|
|
500
|
+
this.instance.scrollTo(y, options);
|
|
501
|
+
}
|
|
502
|
+
scrollToTop(options) {
|
|
503
|
+
this.scrollTo(0, options);
|
|
504
|
+
}
|
|
505
|
+
get instance() {
|
|
506
|
+
if (!this.lenis) {
|
|
507
|
+
throw new Error('PageScrollProvider: call init() before accessing the instance.');
|
|
508
|
+
}
|
|
509
|
+
return this.lenis;
|
|
510
|
+
}
|
|
511
|
+
startLoop() {
|
|
512
|
+
if (!this.lenis) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
const loop = (time) => {
|
|
516
|
+
this.lenis.raf(time);
|
|
517
|
+
this.rafId = requestAnimationFrame(loop);
|
|
518
|
+
};
|
|
519
|
+
this.rafId = requestAnimationFrame(loop);
|
|
520
|
+
}
|
|
521
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PageScrollProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
522
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PageScrollProvider }); }
|
|
523
|
+
}
|
|
524
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: PageScrollProvider, decorators: [{
|
|
525
|
+
type: Injectable
|
|
526
|
+
}] });
|
|
527
|
+
|
|
528
|
+
class IoxPageComponent {
|
|
529
|
+
constructor(pageScrollProvider) {
|
|
530
|
+
this.pageScrollProvider = pageScrollProvider;
|
|
531
|
+
this.class = '';
|
|
532
|
+
this.scrollEvent = new EventEmitter();
|
|
533
|
+
}
|
|
534
|
+
ngAfterViewInit() {
|
|
535
|
+
if (this.page) {
|
|
536
|
+
this.scrollSubscription = fromEvent(this.page.nativeElement, 'scroll').subscribe((event) => {
|
|
537
|
+
this.onScroll(event);
|
|
538
|
+
});
|
|
539
|
+
this.pageScrollProvider.init({
|
|
540
|
+
wrapper: this.page.nativeElement,
|
|
541
|
+
content: this.page.nativeElement.querySelector('.page-mask'),
|
|
542
|
+
duration: 1.2,
|
|
543
|
+
easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
onScroll(event) {
|
|
548
|
+
const target = event.target;
|
|
549
|
+
const scrollTop = target.scrollTop;
|
|
550
|
+
const scrollLeft = target.scrollLeft;
|
|
551
|
+
const scrollHeight = target.scrollHeight;
|
|
552
|
+
const scrollWidth = target.scrollWidth;
|
|
553
|
+
const clientHeight = target.clientHeight;
|
|
554
|
+
const clientWidth = target.clientWidth;
|
|
555
|
+
const scrollPercentage = (scrollTop / (scrollHeight - clientHeight)) * 100;
|
|
556
|
+
this.scrollEvent.emit({ scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth, scrollPercentage });
|
|
557
|
+
}
|
|
558
|
+
ngOnDestroy() {
|
|
559
|
+
if (this.scrollSubscription) {
|
|
560
|
+
this.scrollSubscription.unsubscribe();
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxPageComponent, deps: [{ token: PageScrollProvider }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: IoxPageComponent, isStandalone: false, selector: "iox-page-component", inputs: { class: "class" }, outputs: { scrollEvent: "scrollEvent" }, viewQueries: [{ propertyName: "page", first: true, predicate: ["page"], descendants: true }], ngImport: i0, template: "<div #page [class]=\"class\" class=\"iox-page-wrapper\">\n <div class=\"page-mask\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{position:absolute;inset:0}.iox-page-wrapper{position:relative;width:100%;height:100%;overflow:auto}.page-mask{min-height:100%}\n"] }); }
|
|
565
|
+
}
|
|
566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxPageComponent, decorators: [{
|
|
567
|
+
type: Component,
|
|
568
|
+
args: [{ selector: 'iox-page-component', standalone: false, template: "<div #page [class]=\"class\" class=\"iox-page-wrapper\">\n <div class=\"page-mask\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{position:absolute;inset:0}.iox-page-wrapper{position:relative;width:100%;height:100%;overflow:auto}.page-mask{min-height:100%}\n"] }]
|
|
569
|
+
}], ctorParameters: () => [{ type: PageScrollProvider }], propDecorators: { class: [{
|
|
570
|
+
type: Input
|
|
571
|
+
}], page: [{
|
|
572
|
+
type: ViewChild,
|
|
573
|
+
args: ['page']
|
|
574
|
+
}], scrollEvent: [{
|
|
575
|
+
type: Output
|
|
576
|
+
}] } });
|
|
577
|
+
|
|
578
|
+
class IoxPageModule {
|
|
579
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
580
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: IoxPageModule, declarations: [IoxPageComponent], imports: [CommonModule], exports: [IoxPageComponent] }); }
|
|
581
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxPageModule, providers: [PageScrollProvider], imports: [CommonModule] }); }
|
|
582
|
+
}
|
|
583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxPageModule, decorators: [{
|
|
584
|
+
type: NgModule,
|
|
585
|
+
args: [{
|
|
586
|
+
imports: [CommonModule],
|
|
587
|
+
declarations: [IoxPageComponent],
|
|
588
|
+
exports: [IoxPageComponent],
|
|
589
|
+
providers: [PageScrollProvider]
|
|
590
|
+
}]
|
|
591
|
+
}] });
|
|
592
|
+
|
|
593
|
+
class IoxUiModule {
|
|
594
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
595
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: IoxUiModule, imports: [IoxAosModule, IoxPageModule], exports: [IoxAosModule, IoxPageModule] }); }
|
|
596
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxUiModule, imports: [IoxAosModule, IoxPageModule, IoxAosModule, IoxPageModule] }); }
|
|
597
|
+
}
|
|
598
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: IoxUiModule, decorators: [{
|
|
599
|
+
type: NgModule,
|
|
600
|
+
args: [{
|
|
601
|
+
declarations: [],
|
|
602
|
+
imports: [IoxAosModule, IoxPageModule],
|
|
603
|
+
exports: [IoxAosModule, IoxPageModule]
|
|
604
|
+
}]
|
|
605
|
+
}] });
|
|
606
|
+
|
|
607
|
+
/*
|
|
608
|
+
* Public API Surface of iox-ui
|
|
609
|
+
*/
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* Generated bundle index. Do not edit.
|
|
613
|
+
*/
|
|
614
|
+
|
|
615
|
+
export { AOSService, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxMasonryComponent, IoxMasonryItemDirective, IoxMasonryModule, IoxMasonryService, IoxPageComponent, IoxPageModule, IoxUiModule, PageScrollProvider, ViewPositionDirective, ViewPositionModule };
|
|
616
|
+
//# sourceMappingURL=vectoriox-iox-ui.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectoriox-iox-ui.mjs","sources":["../../../projects/iox-ui/src/lib/view-position/view-position.directive.ts","../../../projects/iox-ui/src/lib/view-position/view-position.module.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos-animations.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.service.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos-container.component.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.directive.ts","../../../projects/iox-ui/src/lib/iox-aos/iox-aos.module.ts","../../../projects/iox-ui/src/lib/iox-masonry/iox-masonry.service.ts","../../../projects/iox-ui/src/lib/iox-masonry/iox-masonry.component.ts","../../../projects/iox-ui/src/lib/iox-masonry/iox-masonry-item.directive.ts","../../../projects/iox-ui/src/lib/iox-masonry/iox-masonry.module.ts","../../../projects/iox-ui/src/lib/services/page-scroll.provider.ts","../../../projects/iox-ui/src/lib/iox-page/page-component/page-component.component.ts","../../../projects/iox-ui/src/lib/iox-page/page-component/page-component.component.html","../../../projects/iox-ui/src/lib/iox-page/iox-page.module.ts","../../../projects/iox-ui/src/lib/iox-ui.module.ts","../../../projects/iox-ui/src/public-api.ts","../../../projects/iox-ui/src/vectoriox-iox-ui.ts"],"sourcesContent":["import {AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Input, Output} from '@angular/core';\n\n@Directive({\n selector:'[view-position]',\n standalone: false\n})\n\nexport class ViewPositionDirective implements AfterViewInit{\n\n private _viewPortHighet!:number;\n private _elementHeight!: number;\n private _elementOffseTop!: number;\n private _curterScreen!:number;\n private _halfSscreen!:number;\n \n private _scrollDirection:string= \"Down\";\n private _scrollPos:number = 0;\n public isOnScreen: boolean = false;\n public isHalfScreen: boolean = false;\n \n @Input() data:any\n @Output() onEnter:EventEmitter<any> = new EventEmitter();\n @Output() onLeave:EventEmitter<any> = new EventEmitter();\n @Output() onHalf:EventEmitter<any> = new EventEmitter();\n\n constructor(private _elr:ElementRef){\n this._initScreenDeminitions();\n console.log(`screent highet: ${this._viewPortHighet}`);\n }\n\n\n ngAfterViewInit(): void {\n this._elementOffseTop = this._elr.nativeElement.offsetTop;\n this._elementHeight = this._elr.nativeElement.offsetHeight;\n console.log(`element offset Y = ${this._elementOffseTop}`); \n }\n\n\n @HostListener('window:scroll', ['$event']) onScroll(e: Event): void {\n\n if ((document.body.getBoundingClientRect()).top > this._scrollPos){\n if(this._scrollDirection != \"Up\"){\n this.isHalfScreen =false;\n this._scrollDirection = \"Up\"\n }\n } \n\t else{\n if(this._scrollDirection !=\"Down\"){\n this.isHalfScreen =false;\n this._scrollDirection = \"Down\"\n }\n } \n\t this._scrollPos = (document.body.getBoundingClientRect()).top;\n\n\n let currentClientHight = this._elr.nativeElement.getBoundingClientRect().top;\n if(currentClientHight >= this._viewPortHighet || currentClientHight < -this._elementHeight){\n if(this.isOnScreen){\n this.isOnScreen = false;\n this.onLeave.emit(\"OUT\");\n }\n }else{\n if(!this.isOnScreen){\n this.isOnScreen = true;\n this.onEnter.emit(\"IN\");\n }\n }\n\n if(currentClientHight < this._halfSscreen && currentClientHight > 0 && this._scrollDirection == \"Down\") {\n if(!this.isHalfScreen){\n this.isHalfScreen = true;\n console.log(\"half\")\n this.onHalf.emit(this.data);\n }\n }\n\n if(currentClientHight + this._elementHeight > this._halfSscreen && currentClientHight +this._elementHeight < this._viewPortHighet && this._scrollDirection == \"Up\") {\n if(!this.isHalfScreen){\n this.isHalfScreen = true;\n console.log(\"I am half\")\n this.onHalf.emit(this.data);\n }\n }\n }\n\n @HostListener('window:resize', ['$event']) onResize(e: Event) {\n this._viewPortHighet = window.innerHeight;\n this._initScreenDeminitions();\n }\n \n \n\n private _initScreenDeminitions(){\n this._viewPortHighet = window.innerHeight;\n this._curterScreen = Math.trunc(this._viewPortHighet *0.25);\n this._halfSscreen = Math.trunc(this._viewPortHighet *0.5);\n }\n }","import { NgModule } from '@angular/core';\nimport { ViewPositionDirective } from './view-position.directive';\n\n\n\n@NgModule({\n declarations: [\n ViewPositionDirective\n ],\n imports: [\n ],\n exports: [\n ViewPositionDirective\n ]\n})\nexport class ViewPositionModule { }\n","import { AnimationBuilder, style, animate, keyframes } from '@angular/animations';\n\n/********** Entries Animations ********************/\n\nexport const IoxAnimationStyles: any = {}\n\nIoxAnimationStyles[\"fade-up\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translate3d(0,100px,0)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-right\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translateX(150px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-out-right\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 1, transform: \"translateX(0px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: \"translateX(150px)\" }))]\n}\n\nIoxAnimationStyles[\"fade-left\"] = (delay:string, duration:string)=>{\n return [style({ opacity: 0, transform: \"translateX(-150px)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0)\" }))]\n}\n\nIoxAnimationStyles[\"fade-out-up\"] = (delay:string, duration:string)=>{\n return [ style({ opacity: 1, transform: \"translateZ(0)\" }),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: \"translate3d(0,-100px,0)\"}))]\n}\n\nIoxAnimationStyles[\"flip-left\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"perspective(2500px) rotateY(-100deg)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"perspective(2500px) rotateY(0)\" }))]\n}\n\nIoxAnimationStyles[\"flip-up\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"perspective(2500px) rotateX(-100deg)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"perspective(2500px) rotateY(0)\" }))]\n}\n\nIoxAnimationStyles[\"zoom-in-up\"] = (delay:string, duration:string)=>{\n return [style({opacity: 0,transform: \"translate3d(0,100px,0) scale(.6)\"}),\n animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: \"translateZ(0) scale(1)\" }))]\n}","import { Injectable } from \"@angular/core\";\nimport { Observable, Subject } from \"rxjs\";\n\n\n\n@Injectable({providedIn: 'root'})\nexport class AOSService {\n\n\n\n private _scrollOffset:Subject<any> = new Subject();\n public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();\n \n constructor() { }\n\n\n updateScrollOffset(offset:any){\n this._scrollOffset.next(offset);\n }\n\n}","import { Component, ElementRef, HostListener, Input, SimpleChanges, ViewChild } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { AOSService } from './iox-aos.service';\n\n@Component({\n selector: \"[ioxAnimateContainer], ioxAnimateContainer\",\n template:`<div class='animate_root_element' #animateRooteElement>\n <ng-content></ng-content>\n </div>`,\n standalone: false\n})\nexport class IoxAnimateContainer {\n\n @Input('kickIn') kickIn = true;\n\n private _scrollOffset:Subject<any> = new Subject();\n public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();\n @ViewChild('animateRooteElement') public animateRooteElement:any;\n \n\n constructor(private _element: ElementRef, private _aOSService: AOSService) {\n }\n\n ngAfterViewInit(){\n this.updateOffset();\n }\n\n @HostListener('scroll', ['$event'])\n public onScroll($event:any){\n this.updateOffset();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n console.log(changes);\n if(changes['kickIn'] && changes['kickIn'].currentValue){\n this.updateOffset();\n }\n }\n\n\n private updateOffset(){\n let elClientRect = this.animateRooteElement.nativeElement.getBoundingClientRect();\n this._scrollOffset.next(elClientRect);\n this._aOSService.updateScrollOffset(elClientRect);\n }\n}","import { Directive, OnDestroy, AfterViewInit, ElementRef, Input, OnInit, Renderer2, HostListener, Host, Optional } from \"@angular/core\";\nimport { AnimationBuilder, style, animate, AnimationPlayer } from '@angular/animations';\nimport { IoxAnimationStyles } from \"./iox-aos-animations\"\n;\nimport { IoxAnimateContainer } from \"./iox-aos-container.component\";\n@Directive({\n selector: \"[ioxAnimate], ioxAnimate\",\n standalone: false\n })\n export class IoxAosDirective implements OnDestroy, OnInit, AfterViewInit {\n \n @Input(\"animationDelay\") animationDelay: string =\"\";\n @Input(\"animationIn\") animationIn: string =\"\";\n @Input(\"animationOut\") animationOut: string = \"\";\n @Input(\"animationDuration\") animationDuration: string = \"0.5s\";\n \n // @Input(\"in\")\n // @Input(\"out\")\n\n public animation:AnimationPlayer | any;\n public isAnimationPlayed= false;\n private _elTop:number =0;\n\n\n constructor(@Host() @Optional() private _animateContainer: IoxAnimateContainer, private _element: ElementRef, private _animationBuilder:AnimationBuilder, private _renderer: Renderer2){\n \n this._renderer.setStyle(_element.nativeElement,'opacity', '0');\n }\n\n public ngOnInit(){\n }\n\n public ngAfterViewInit(){\n\n setTimeout(()=>{\n\n this._elTop = this._cumulativeOffset(this._element.nativeElement).top;\n\n if(this._animateContainer){\n if(this._animateContainer.kickIn){\n this.runIfVisiable();\n }else{\n return\n }\n }else{\n this.runIfVisiable();\n }\n\n \n \n },150)\n\n const resizeObserver = new ResizeObserver((entries) =>\n this._elTop = this._cumulativeOffset(this._element.nativeElement).top\n );\n\n resizeObserver.observe(document.body);\n \n if(this._animateContainer){\n this._animateContainer?.scrollOffset.subscribe((offset:any)=>{\n if(this._animateContainer.kickIn){\n this.scrollEventHandler(-1 *offset.top);\n }\n })\n }\n\n \n }\n\n public makeAnimationIn(animationStyle:any):AnimationPlayer{\n let animation = IoxAnimationStyles[animationStyle](this.animationDelay, this.animationDuration);\n const myAnimation = this._animationBuilder.build(animation)\n return myAnimation.create(this._element.nativeElement); \n\n }\n\n private _cumulativeOffset(element:any) {\n var top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while(element);\n \n return {\n top: top,\n left: left\n };\n };\n\n @HostListener('document:scroll', ['$event']) onScrollEvent($event:any){\n this.scrollEventHandler(window.pageYOffset)\n }\n \n public isVisable(offset:number){\n //console.log(this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight);\n //return this._elTop >= window.pageYOffset && this._elTop <= window.pageYOffset + window.innerHeight;\n return this._elTop >= offset && this._elTop <= offset + window.innerHeight;\n }\n\n\n public scrollEventHandler(offset:number){\n\n if(this._animateContainer && this._animateContainer.kickIn == false){\n return\n }\n\n if(this.isVisable(offset) && !this.isAnimationPlayed){\n let animationStyle = this.animationIn || \"fade-up\";\n this.makeAnimationIn(animationStyle).play();\n this.isAnimationPlayed = true;\n }else if(!this.isVisable(offset) && this.isAnimationPlayed && this.animationOut){\n this.makeAnimationIn(this.animationOut).play();\n this.isAnimationPlayed =false;\n }\n }\n\n public runIfVisiable(){\n if(this.isVisable(window.pageYOffset)){\n let animationStyle = this.animationIn || \"fade-up\";\n this.makeAnimationIn(animationStyle).play();\n this.isAnimationPlayed = true;\n }\n }\n public ngOnDestroy(){\n\n }\n\n }\n\nfunction ViewParent() {\n throw new Error(\"Function not implemented.\");\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { IoxAosDirective } from './iox-aos.directive';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { IoxAnimateContainer } from './iox-aos-container.component';\nimport { AOSService } from './iox-aos.service';\n\n\n@NgModule({\n declarations: [\n IoxAosDirective,\n IoxAnimateContainer\n ],\n imports: [\n BrowserAnimationsModule\n ],\n providers:[\n AOSService\n ],\n exports: [\n IoxAosDirective,\n IoxAnimateContainer\n ]\n})\nexport class IoxAosModule { \n\n static forRoot(): ModuleWithProviders<any> {\n return {\n ngModule: IoxAosModule,\n providers: [AOSService]\n };\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IoxMasonryService {\n\n constructor() { }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, HostListener, ElementRef, AfterViewInit} from '@angular/core';\nimport { Masonry } from '@fristys/masonry';\n\n\n@Component({ \n selector: \"[iox-masonry], iox-masonry\",\n template: `<ng-content></ng-content>`,\n styles: [],\n standalone: false\n})\nexport class IoxMasonryComponent implements OnInit, AfterViewInit {\n\n \n\n // Inputs\n @Input() public options: any = {};\n @Input() public useImagesLoaded: Boolean = false;\n @Input() updateLayout: Boolean = false;\n\n @Output() layoutComplete: EventEmitter<any[]> = new EventEmitter<any[]>();\n \n public _msnry: any;\n private isAppendAllowed:boolean = true;\n\n constructor(private _element: ElementRef) { }\n\n ngAfterViewInit(): void {\n console.log(\"test\");\n }\n\n ngOnInit() {\n this._msnry = new Masonry(document.getElementById('masonry'), this.options);\n this.layout(); \n }\n \n ngOnChanges(changes: any) {\n console.log(changes);\n }\n\n\n add = (element: HTMLElement)=>{\n setTimeout(()=>{\n this._msnry.init();\n },200)\n\n }\n\n public remove(element: HTMLElement) {\n this._msnry.remove(element);\n }\n\n public layout() {\n setTimeout(() => {\n this._msnry.init();\n });\n }\n\n}\n\nexport interface IoxMasonryOptions {\n columns?: number;\n columnBreakpoints?: number;\n gutter?: number | string;\n initOnImageLoad?: boolean;\n loadingClass?: string;\n loadedClass?: string;\n onInit?:any;\n bindOnScroll?: boolean;\n useContainerWidth?: boolean;\n trackItemSizeChanges?: boolean;\n}\n","import { Directive, Inject, ElementRef, forwardRef, OnDestroy, AfterViewInit, Renderer2 } from '@angular/core';\nimport { IoxMasonryComponent } from './iox-masonry.component';\n@Directive({\n selector: \"[ioxMasonryItem], ioxMasonryItem\",\n standalone: false\n})\nexport class IoxMasonryItemDirective implements OnDestroy, AfterViewInit {\n constructor(\n private _element: ElementRef,\n @Inject(forwardRef(() => IoxMasonryComponent))\n private _parent: IoxMasonryComponent,\n private _renderer:Renderer2) {\n //this._renderer.setStyle(_element.nativeElement,'opacity', '0');\n }\n\n ngAfterViewInit() {\n console.log(this._element.nativeElement);\n this._parent.add(this._element.nativeElement);\n }\n\n ngOnDestroy() {\n this._parent.remove(this._element.nativeElement);\n }\n}","import { NgModule } from '@angular/core';\nimport { IoxMasonryComponent } from './iox-masonry.component';\nimport { IoxMasonryItemDirective } from './iox-masonry-item.directive';\nimport { BrowserModule } from '@angular/platform-browser';\n\n\n\n@NgModule({\n declarations: [IoxMasonryComponent, IoxMasonryItemDirective],\n imports: [\n BrowserModule\n ],\n exports: [IoxMasonryComponent, IoxMasonryItemDirective]\n})\nexport class IoxMasonryModule { }\n","import { Injectable } from '@angular/core';\nimport Lenis from 'lenis';\n\n@Injectable()\nexport class PageScrollProvider {\n private lenis?: Lenis;\n private rafId?: number;\n\n init(options?: ConstructorParameters<typeof Lenis>[0]): void {\n if (this.lenis) {\n this.lenis.destroy();\n }\n if (this.rafId != null) {\n cancelAnimationFrame(this.rafId);\n }\n this.lenis = new Lenis(options || {});\n this.startLoop();\n }\n\n scrollTo(y: number, options?: { duration?: number; immediate?: boolean }): void {\n this.instance.scrollTo(y, options);\n }\n\n scrollToTop(options?: { duration?: number; immediate?: boolean }): void {\n this.scrollTo(0, options);\n }\n\n get instance(): Lenis {\n if (!this.lenis) {\n throw new Error('PageScrollProvider: call init() before accessing the instance.');\n }\n return this.lenis;\n }\n\n private startLoop(): void {\n if (!this.lenis) {\n return;\n }\n const loop = (time: number) => {\n this.lenis!.raf(time);\n this.rafId = requestAnimationFrame(loop);\n };\n this.rafId = requestAnimationFrame(loop);\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { PageScrollProvider } from '../../services/page-scroll.provider';\n\n@Component({\n selector: 'iox-page-component',\n templateUrl: './page-component.component.html',\n styleUrls: ['./page-component.component.scss'],\n standalone: false\n})\nexport class IoxPageComponent implements AfterViewInit, OnDestroy {\n @Input() class = '';\n @ViewChild('page') public page!: ElementRef<HTMLDivElement>;\n private scrollSubscription!: Subscription;\n @Output() scrollEvent = new EventEmitter<{\n scrollTop: number;\n scrollLeft: number;\n scrollHeight: number;\n scrollWidth: number;\n clientHeight: number;\n clientWidth: number;\n scrollPercentage: number;\n }>();\n\n constructor(private pageScrollProvider: PageScrollProvider) {}\n\n ngAfterViewInit(): void {\n if (this.page) {\n this.scrollSubscription = fromEvent(this.page.nativeElement, 'scroll').subscribe((event) => {\n this.onScroll(event as Event);\n });\n\n this.pageScrollProvider.init({\n wrapper: this.page.nativeElement,\n content: this.page.nativeElement.querySelector('.page-mask')!,\n duration: 1.2,\n easing: (t: number) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\n });\n }\n }\n\n onScroll(event: Event): void {\n const target = event.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const scrollLeft = target.scrollLeft;\n const scrollHeight = target.scrollHeight;\n const scrollWidth = target.scrollWidth;\n const clientHeight = target.clientHeight;\n const clientWidth = target.clientWidth;\n const scrollPercentage = (scrollTop / (scrollHeight - clientHeight)) * 100;\n\n this.scrollEvent.emit({ scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth, scrollPercentage });\n }\n\n ngOnDestroy(): void {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n}\n","<div #page [class]=\"class\" class=\"iox-page-wrapper\">\n <div class=\"page-mask\">\n <ng-content></ng-content>\n </div>\n</div>\n","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IoxPageComponent } from './page-component/page-component.component';\nimport { PageScrollProvider } from '../services/page-scroll.provider';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [IoxPageComponent],\n exports: [IoxPageComponent],\n providers: [PageScrollProvider]\n})\nexport class IoxPageModule {}\n","import { NgModule } from '@angular/core';\nimport { IoxAosModule } from './iox-aos/iox-aos.module';\nimport { IoxPageModule } from './iox-page/iox-page.module';\n\n\n@NgModule({\n declarations: [],\n imports: [IoxAosModule, IoxPageModule],\n exports: [IoxAosModule, IoxPageModule]\n})\nexport class IoxUiModule { }\n","/*\n * Public API Surface of iox-ui\n */\n\nexport * from './lib/view-position/view-position.directive';\nexport * from './lib/view-position/view-position.module';\n\n\n\nexport * from './lib/iox-aos/iox-aos.directive';\nexport * from './lib/iox-aos/iox-aos-container.component';\nexport * from './lib/iox-aos/iox-aos.service';\nexport * from './lib/iox-aos/iox-aos.module';\n\n\n\nexport * from './lib/iox-masonry/iox-masonry.service';\nexport * from './lib/iox-masonry/iox-masonry.component';\nexport * from './lib/iox-masonry/iox-masonry-item.directive';\nexport * from './lib/iox-masonry/iox-masonry.module';\n\nexport * from './lib/iox-ui.module';\nexport * from './lib/iox-page/page-component/page-component.component';\nexport * from './lib/iox-page/iox-page.module';\nexport * from './lib/services/page-scroll.provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AOSService","i1.IoxAnimateContainer","i1.PageScrollProvider"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { AfterViewInit, EventEmitter, ElementRef, SimpleChanges, OnDestroy, OnInit, Renderer2, ModuleWithProviders } from '@angular/core';
|
|
3
|
+
import { AnimationPlayer, AnimationBuilder } from '@angular/animations';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
import * as i3 from '@angular/platform-browser/animations';
|
|
6
|
+
import * as i3$1 from '@angular/platform-browser';
|
|
7
|
+
import Lenis from 'lenis';
|
|
8
|
+
import * as i2 from '@angular/common';
|
|
9
|
+
|
|
10
|
+
declare class ViewPositionDirective implements AfterViewInit {
|
|
11
|
+
private _elr;
|
|
12
|
+
private _viewPortHighet;
|
|
13
|
+
private _elementHeight;
|
|
14
|
+
private _elementOffseTop;
|
|
15
|
+
private _curterScreen;
|
|
16
|
+
private _halfSscreen;
|
|
17
|
+
private _scrollDirection;
|
|
18
|
+
private _scrollPos;
|
|
19
|
+
isOnScreen: boolean;
|
|
20
|
+
isHalfScreen: boolean;
|
|
21
|
+
data: any;
|
|
22
|
+
onEnter: EventEmitter<any>;
|
|
23
|
+
onLeave: EventEmitter<any>;
|
|
24
|
+
onHalf: EventEmitter<any>;
|
|
25
|
+
constructor(_elr: ElementRef);
|
|
26
|
+
ngAfterViewInit(): void;
|
|
27
|
+
onScroll(e: Event): void;
|
|
28
|
+
onResize(e: Event): void;
|
|
29
|
+
private _initScreenDeminitions;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ViewPositionDirective, never>;
|
|
31
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ViewPositionDirective, "[view-position]", never, { "data": { "alias": "data"; "required": false; }; }, { "onEnter": "onEnter"; "onLeave": "onLeave"; "onHalf": "onHalf"; }, never, never, false, never>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
declare class ViewPositionModule {
|
|
35
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ViewPositionModule, never>;
|
|
36
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ViewPositionModule, [typeof ViewPositionDirective], never, [typeof ViewPositionDirective]>;
|
|
37
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<ViewPositionModule>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class AOSService {
|
|
41
|
+
private _scrollOffset;
|
|
42
|
+
readonly scrollOffset: Observable<any>;
|
|
43
|
+
constructor();
|
|
44
|
+
updateScrollOffset(offset: any): void;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AOSService, never>;
|
|
46
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AOSService>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
declare class IoxAnimateContainer {
|
|
50
|
+
private _element;
|
|
51
|
+
private _aOSService;
|
|
52
|
+
kickIn: boolean;
|
|
53
|
+
private _scrollOffset;
|
|
54
|
+
readonly scrollOffset: Observable<any>;
|
|
55
|
+
animateRooteElement: any;
|
|
56
|
+
constructor(_element: ElementRef, _aOSService: AOSService);
|
|
57
|
+
ngAfterViewInit(): void;
|
|
58
|
+
onScroll($event: any): void;
|
|
59
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
60
|
+
private updateOffset;
|
|
61
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxAnimateContainer, never>;
|
|
62
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IoxAnimateContainer, "[ioxAnimateContainer], ioxAnimateContainer", never, { "kickIn": { "alias": "kickIn"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
declare class IoxAosDirective implements OnDestroy, OnInit, AfterViewInit {
|
|
66
|
+
private _animateContainer;
|
|
67
|
+
private _element;
|
|
68
|
+
private _animationBuilder;
|
|
69
|
+
private _renderer;
|
|
70
|
+
animationDelay: string;
|
|
71
|
+
animationIn: string;
|
|
72
|
+
animationOut: string;
|
|
73
|
+
animationDuration: string;
|
|
74
|
+
animation: AnimationPlayer | any;
|
|
75
|
+
isAnimationPlayed: boolean;
|
|
76
|
+
private _elTop;
|
|
77
|
+
constructor(_animateContainer: IoxAnimateContainer, _element: ElementRef, _animationBuilder: AnimationBuilder, _renderer: Renderer2);
|
|
78
|
+
ngOnInit(): void;
|
|
79
|
+
ngAfterViewInit(): void;
|
|
80
|
+
makeAnimationIn(animationStyle: any): AnimationPlayer;
|
|
81
|
+
private _cumulativeOffset;
|
|
82
|
+
onScrollEvent($event: any): void;
|
|
83
|
+
isVisable(offset: number): boolean;
|
|
84
|
+
scrollEventHandler(offset: number): void;
|
|
85
|
+
runIfVisiable(): void;
|
|
86
|
+
ngOnDestroy(): void;
|
|
87
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxAosDirective, [{ optional: true; host: true; }, null, null, null]>;
|
|
88
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<IoxAosDirective, "[ioxAnimate], ioxAnimate", never, { "animationDelay": { "alias": "animationDelay"; "required": false; }; "animationIn": { "alias": "animationIn"; "required": false; }; "animationOut": { "alias": "animationOut"; "required": false; }; "animationDuration": { "alias": "animationDuration"; "required": false; }; }, {}, never, never, false, never>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare class IoxAosModule {
|
|
92
|
+
static forRoot(): ModuleWithProviders<any>;
|
|
93
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxAosModule, never>;
|
|
94
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<IoxAosModule, [typeof IoxAosDirective, typeof IoxAnimateContainer], [typeof i3.BrowserAnimationsModule], [typeof IoxAosDirective, typeof IoxAnimateContainer]>;
|
|
95
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<IoxAosModule>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
declare class IoxMasonryService {
|
|
99
|
+
constructor();
|
|
100
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxMasonryService, never>;
|
|
101
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<IoxMasonryService>;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
declare class IoxMasonryComponent implements OnInit, AfterViewInit {
|
|
105
|
+
private _element;
|
|
106
|
+
options: any;
|
|
107
|
+
useImagesLoaded: Boolean;
|
|
108
|
+
updateLayout: Boolean;
|
|
109
|
+
layoutComplete: EventEmitter<any[]>;
|
|
110
|
+
_msnry: any;
|
|
111
|
+
private isAppendAllowed;
|
|
112
|
+
constructor(_element: ElementRef);
|
|
113
|
+
ngAfterViewInit(): void;
|
|
114
|
+
ngOnInit(): void;
|
|
115
|
+
ngOnChanges(changes: any): void;
|
|
116
|
+
add: (element: HTMLElement) => void;
|
|
117
|
+
remove(element: HTMLElement): void;
|
|
118
|
+
layout(): void;
|
|
119
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxMasonryComponent, never>;
|
|
120
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IoxMasonryComponent, "[iox-masonry], iox-masonry", never, { "options": { "alias": "options"; "required": false; }; "useImagesLoaded": { "alias": "useImagesLoaded"; "required": false; }; "updateLayout": { "alias": "updateLayout"; "required": false; }; }, { "layoutComplete": "layoutComplete"; }, never, ["*"], false, never>;
|
|
121
|
+
}
|
|
122
|
+
interface IoxMasonryOptions {
|
|
123
|
+
columns?: number;
|
|
124
|
+
columnBreakpoints?: number;
|
|
125
|
+
gutter?: number | string;
|
|
126
|
+
initOnImageLoad?: boolean;
|
|
127
|
+
loadingClass?: string;
|
|
128
|
+
loadedClass?: string;
|
|
129
|
+
onInit?: any;
|
|
130
|
+
bindOnScroll?: boolean;
|
|
131
|
+
useContainerWidth?: boolean;
|
|
132
|
+
trackItemSizeChanges?: boolean;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
declare class IoxMasonryItemDirective implements OnDestroy, AfterViewInit {
|
|
136
|
+
private _element;
|
|
137
|
+
private _parent;
|
|
138
|
+
private _renderer;
|
|
139
|
+
constructor(_element: ElementRef, _parent: IoxMasonryComponent, _renderer: Renderer2);
|
|
140
|
+
ngAfterViewInit(): void;
|
|
141
|
+
ngOnDestroy(): void;
|
|
142
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxMasonryItemDirective, never>;
|
|
143
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<IoxMasonryItemDirective, "[ioxMasonryItem], ioxMasonryItem", never, {}, {}, never, never, false, never>;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
declare class IoxMasonryModule {
|
|
147
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxMasonryModule, never>;
|
|
148
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<IoxMasonryModule, [typeof IoxMasonryComponent, typeof IoxMasonryItemDirective], [typeof i3$1.BrowserModule], [typeof IoxMasonryComponent, typeof IoxMasonryItemDirective]>;
|
|
149
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<IoxMasonryModule>;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
declare class PageScrollProvider {
|
|
153
|
+
private lenis?;
|
|
154
|
+
private rafId?;
|
|
155
|
+
init(options?: ConstructorParameters<typeof Lenis>[0]): void;
|
|
156
|
+
scrollTo(y: number, options?: {
|
|
157
|
+
duration?: number;
|
|
158
|
+
immediate?: boolean;
|
|
159
|
+
}): void;
|
|
160
|
+
scrollToTop(options?: {
|
|
161
|
+
duration?: number;
|
|
162
|
+
immediate?: boolean;
|
|
163
|
+
}): void;
|
|
164
|
+
get instance(): Lenis;
|
|
165
|
+
private startLoop;
|
|
166
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PageScrollProvider, never>;
|
|
167
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PageScrollProvider>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
declare class IoxPageComponent implements AfterViewInit, OnDestroy {
|
|
171
|
+
private pageScrollProvider;
|
|
172
|
+
class: string;
|
|
173
|
+
page: ElementRef<HTMLDivElement>;
|
|
174
|
+
private scrollSubscription;
|
|
175
|
+
scrollEvent: EventEmitter<{
|
|
176
|
+
scrollTop: number;
|
|
177
|
+
scrollLeft: number;
|
|
178
|
+
scrollHeight: number;
|
|
179
|
+
scrollWidth: number;
|
|
180
|
+
clientHeight: number;
|
|
181
|
+
clientWidth: number;
|
|
182
|
+
scrollPercentage: number;
|
|
183
|
+
}>;
|
|
184
|
+
constructor(pageScrollProvider: PageScrollProvider);
|
|
185
|
+
ngAfterViewInit(): void;
|
|
186
|
+
onScroll(event: Event): void;
|
|
187
|
+
ngOnDestroy(): void;
|
|
188
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxPageComponent, never>;
|
|
189
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IoxPageComponent, "iox-page-component", never, { "class": { "alias": "class"; "required": false; }; }, { "scrollEvent": "scrollEvent"; }, never, ["*"], false, never>;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
declare class IoxPageModule {
|
|
193
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxPageModule, never>;
|
|
194
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<IoxPageModule, [typeof IoxPageComponent], [typeof i2.CommonModule], [typeof IoxPageComponent]>;
|
|
195
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<IoxPageModule>;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
declare class IoxUiModule {
|
|
199
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IoxUiModule, never>;
|
|
200
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<IoxUiModule, never, [typeof IoxAosModule, typeof IoxPageModule], [typeof IoxAosModule, typeof IoxPageModule]>;
|
|
201
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<IoxUiModule>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export { AOSService, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxMasonryComponent, IoxMasonryItemDirective, IoxMasonryModule, IoxMasonryService, IoxPageComponent, IoxPageModule, IoxUiModule, PageScrollProvider, ViewPositionDirective, ViewPositionModule };
|
|
205
|
+
export type { IoxMasonryOptions };
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vectoriox/iox-ui",
|
|
3
|
+
"version": "4.0.2",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^20.0.0",
|
|
6
|
+
"@angular/core": "^20.0.0",
|
|
7
|
+
"@angular/animations": "^20.0.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0",
|
|
11
|
+
"@fristys/masonry": "^1.1.7"
|
|
12
|
+
},
|
|
13
|
+
"module": "fesm2022/vectoriox-iox-ui.mjs",
|
|
14
|
+
"typings": "index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": {
|
|
17
|
+
"default": "./package.json"
|
|
18
|
+
},
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./index.d.ts",
|
|
21
|
+
"default": "./fesm2022/vectoriox-iox-ui.mjs"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"sideEffects": false
|
|
25
|
+
}
|