();
+
+ constructor(private ngZone: NgZone) {
+ this.ngZone.runOutsideAngular(() => {
+ document.addEventListener('mousemove', (ev) => this.onMouseMove(ev));
+ this.keyEvents.event('z').subscribe(([res, ev]) => {
+ this.z$.next(res);
+ });
+ });
+ }
+
+ onMouseMove = (ev: MouseEvent) => {
+ this.currentMousePosition = ev;
+ this.currentMouse$.next(ev);
+ };
+}
diff --git a/projects/ngu/magnify/src/public-api.ts b/projects/ngu/magnify/src/public-api.ts
new file mode 100644
index 0000000..f1caaf1
--- /dev/null
+++ b/projects/ngu/magnify/src/public-api.ts
@@ -0,0 +1,5 @@
+/*
+ * Public API Surface of magnify
+ */
+
+export * from './lib/magnify.directive';
diff --git a/projects/ngu/magnify/tsconfig.lib.json b/projects/ngu/magnify/tsconfig.lib.json
new file mode 100644
index 0000000..879250d
--- /dev/null
+++ b/projects/ngu/magnify/tsconfig.lib.json
@@ -0,0 +1,14 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "extends": "../../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../out-tsc/lib",
+ "declaration": true,
+ "declarationMap": true,
+ "inlineSources": true,
+ "types": []
+ },
+ "exclude": [
+ "**/*.spec.ts"
+ ]
+}
diff --git a/projects/ngu/magnify/tsconfig.lib.prod.json b/projects/ngu/magnify/tsconfig.lib.prod.json
new file mode 100644
index 0000000..06de549
--- /dev/null
+++ b/projects/ngu/magnify/tsconfig.lib.prod.json
@@ -0,0 +1,10 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "extends": "./tsconfig.lib.json",
+ "compilerOptions": {
+ "declarationMap": false
+ },
+ "angularCompilerOptions": {
+ "compilationMode": "partial"
+ }
+}
diff --git a/projects/ngu/magnify/tsconfig.spec.json b/projects/ngu/magnify/tsconfig.spec.json
new file mode 100644
index 0000000..80f875e
--- /dev/null
+++ b/projects/ngu/magnify/tsconfig.spec.json
@@ -0,0 +1,14 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "extends": "../../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../../out-tsc/spec",
+ "types": [
+ "jasmine"
+ ]
+ },
+ "include": [
+ "**/*.spec.ts",
+ "**/*.d.ts"
+ ]
+}
diff --git a/src/app/app.component.html b/src/app/app.component.html
new file mode 100644
index 0000000..fd7ec0b
--- /dev/null
+++ b/src/app/app.component.html
@@ -0,0 +1,22 @@
+
+ {{ isOpen ? "-" : "+" }}
+
+
+
+
+
+

+
+
+
+In Page Magnify
+
+
+

+
diff --git a/src/app/app.component.scss b/src/app/app.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
new file mode 100644
index 0000000..0c7e28a
--- /dev/null
+++ b/src/app/app.component.spec.ts
@@ -0,0 +1,21 @@
+import { TestBed } from '@angular/core/testing';
+import { AppComponent } from './app.component';
+import { Magnify } from 'projects/ngu/magnify/src/public-api';
+
+describe('AppComponent', () => {
+ beforeEach(() => TestBed.configureTestingModule({
+ imports: [AppComponent, Magnify]
+ }));
+
+ it('should create the app', () => {
+ const fixture = TestBed.createComponent(AppComponent);
+ const app = fixture.componentInstance;
+ expect(app).toBeTruthy();
+ });
+
+ it(`should have as title 'magnify'`, () => {
+ const fixture = TestBed.createComponent(AppComponent);
+ const app = fixture.componentInstance;
+ expect(app.title).toEqual('magnify');
+ });
+});
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
new file mode 100644
index 0000000..fe8144d
--- /dev/null
+++ b/src/app/app.component.ts
@@ -0,0 +1,17 @@
+import { NgFor, NgIf } from '@angular/common';
+import { Component } from '@angular/core';
+import { Magnify } from 'projects/ngu/magnify/src/public-api';
+
+@Component({
+ standalone: true,
+ imports: [Magnify, NgFor, NgIf],
+ selector: 'app-root',
+ templateUrl: './app.component.html',
+ styleUrls: ['./app.component.scss']
+})
+export class AppComponent {
+ title = 'magnify';
+ isOpen = true;
+
+ arr = Array.from({ length: 10 }, (_, i) => i);
+}
diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/src/assets/page.webp b/src/assets/page.webp
new file mode 100644
index 0000000..8098cc8
Binary files /dev/null and b/src/assets/page.webp differ
diff --git a/src/favicon.ico b/src/favicon.ico
new file mode 100644
index 0000000..997406a
Binary files /dev/null and b/src/favicon.ico differ
diff --git a/src/index.html b/src/index.html
new file mode 100644
index 0000000..94294b8
--- /dev/null
+++ b/src/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+ Magnify
+
+
+
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..d473c3d
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,7 @@
+import { bootstrapApplication } from '@angular/platform-browser';
+import { AppComponent } from './app/app.component';
+
+
+
+bootstrapApplication(AppComponent)
+ .catch(err => console.error(err));
diff --git a/src/styles.scss b/src/styles.scss
new file mode 100644
index 0000000..8aa50f7
--- /dev/null
+++ b/src/styles.scss
@@ -0,0 +1,9 @@
+/* You can add global styles to this file, and also import other style files */
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+body {
+ margin: 0;
+ @apply bg-gray-300;
+}
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..8974f83
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,10 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ "./src/**/*.{html,ts}",
+ ],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+}
diff --git a/tsconfig.app.json b/tsconfig.app.json
new file mode 100644
index 0000000..374cc9d
--- /dev/null
+++ b/tsconfig.app.json
@@ -0,0 +1,14 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/app",
+ "types": []
+ },
+ "files": [
+ "src/main.ts"
+ ],
+ "include": [
+ "src/**/*.d.ts"
+ ]
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..64ab087
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,39 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "compileOnSave": false,
+ "compilerOptions": {
+ "paths": {
+ "@ngu/magnify": [
+ "dist/ngu/magnify"
+ ]
+ },
+ "baseUrl": "./",
+ "outDir": "./dist/out-tsc",
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "noImplicitOverride": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "strictPropertyInitialization": false,
+ "sourceMap": true,
+ "declaration": false,
+ "downlevelIteration": true,
+ "experimentalDecorators": true,
+ "moduleResolution": "node",
+ "importHelpers": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "useDefineForClassFields": false,
+ "lib": [
+ "ES2022",
+ "dom"
+ ]
+ },
+ "angularCompilerOptions": {
+ "enableI18nLegacyMessageIdFormat": false,
+ "strictInjectionParameters": true,
+ "strictInputAccessModifiers": true,
+ "strictTemplates": true
+ }
+}
diff --git a/tsconfig.spec.json b/tsconfig.spec.json
new file mode 100644
index 0000000..be7e9da
--- /dev/null
+++ b/tsconfig.spec.json
@@ -0,0 +1,14 @@
+/* To learn more about this file see: https://angular.io/config/tsconfig. */
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/spec",
+ "types": [
+ "jasmine"
+ ]
+ },
+ "include": [
+ "src/**/*.spec.ts",
+ "src/**/*.d.ts"
+ ]
+}