diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +node_modules diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 3856c8c..0000000 --- a/.eslintrc +++ /dev/null @@ -1,41 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module", - "project": "./tsconfig.base.json" - }, - "ignorePatterns": ["**/*"], - "plugins": ["@typescript-eslint", "@nrwl/nx"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "prettier", - "prettier/@typescript-eslint" - ], - "rules": { - "@typescript-eslint/explicit-member-accessibility": "off", - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/no-parameter-properties": "off", - "@nrwl/nx/enforce-module-boundaries": [ - "error", - { - "enforceBuildableLibDependency": true, - "allow": [], - "depConstraints": [ - { "sourceTag": "*", "onlyDependOnLibsWithTags": ["*"] } - ] - } - ] - }, - "overrides": [ - { - "files": ["*.tsx"], - "rules": { - "@typescript-eslint/no-unused-vars": "off" - } - } - ] -} diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..f6532b7 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "root": true, + "ignorePatterns": ["**/*"], + "plugins": ["@nx"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@nx/enforce-module-boundaries": [ + "error", + { + "enforceBuildableLibDependency": true, + "allow": [], + "depConstraints": [ + { + "sourceTag": "*", + "onlyDependOnLibsWithTags": ["*"] + } + ] + } + ] + } + }, + { + "files": ["*.ts", "*.tsx"], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier", "plugin:@nx/typescript"], + "rules": { + "@typescript-eslint/no-extra-semi": "error", + "no-extra-semi": "off" + } + }, + { + "files": ["*.js", "*.jsx"], + "extends": ["plugin:@nx/javascript"], + "rules": { + "@typescript-eslint/no-extra-semi": "error", + "no-extra-semi": "off" + } + }, + { + "files": ["references.d.ts"], + "rules": { + "@typescript-eslint/triple-slash-reference": "off" + } + } + ] +} diff --git a/.gitignore b/.gitignore index ea0c923..8b7e40c 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,6 @@ Thumbs.db *.tgz packages/**/angular/dist + +.nx/cache +.nx/workspace-data diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/.nxignore b/.nxignore new file mode 100644 index 0000000..80a8f0e --- /dev/null +++ b/.nxignore @@ -0,0 +1 @@ +apps/**/*_off \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 413ca14..342760a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,3 +3,6 @@ /dist /coverage native-src + +/.nx/cache +/.nx/workspace-data \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cc58686 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + "NativescriptExtend.fileAssociations": [ + { + "systemId": "c:\\Users\\sweet\\Documents\\PacktCourses_books\\NATIVESCRIPT\\contributions\\mlkit\\schema\\tns.xsd", + "pattern": "**/**/*.xml" + }, + { + "systemId": "http://www.w3.org/2001/XMLSchema.xsd", + "pattern": "c:\\Users\\sweet\\Documents\\PacktCourses_books\\NATIVESCRIPT\\contributions\\mlkit\\schema\\tns.xsd" + } + ], + "files.exclude": { + "schema": true + }, + "NativescriptExtend.format.enabled": true, + "NativescriptExtend.validation.enabled": true +} diff --git a/README.md b/README.md index 8e77002..002102a 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,21 @@ - [@nativescript/mlkit-barcode-scanning](packages/mlkit-barcode-scanning/README.md) - [@nativescript/mlkit-core](packages/mlkit-core/README.md) +- [@nativescript/mlkit-custom-object-detection](packages/mlkit-custom-object-detection/README.md) - [@nativescript/mlkit-digital-ink-recognition](packages/mlkit-digital-ink-recognition/README.md) - [@nativescript/mlkit-face-detection](packages/mlkit-face-detection/README.md) - [@nativescript/mlkit-image-labeling](packages/mlkit-image-labeling/README.md) - [@nativescript/mlkit-object-detection](packages/mlkit-object-detection/README.md) - [@nativescript/mlkit-pose-detection](packages/mlkit-pose-detection/README.md) +- [@nativescript/mlkit-selfie-segmentation](packages/mlkit-selfie-segmentation/README.md) - [@nativescript/mlkit-text-recognition](packages/mlkit-text-recognition/README.md) +# How to run it with IOS simulator? + +Since Xcode 26 also older IOS emulators (till 17.5) crash when MLKit libs are included in the binary. You can now +therefore control inclusion of the libs via a command line switch. + +NSSkipMLKitFromIOSSimulator=1 ns prepare ios + # How to use? This workspace manages the suite of plugins listed above. diff --git a/apps/demo-angular/.eslintrc.json b/apps/demo-angular/.eslintrc.json new file mode 100644 index 0000000..53c06c8 --- /dev/null +++ b/apps/demo-angular/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*", "node_modules/**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/demo-angular/package.json b/apps/demo-angular/package.json index c47c5da..e75453a 100644 --- a/apps/demo-angular/package.json +++ b/apps/demo-angular/package.json @@ -9,10 +9,12 @@ "@nativescript/mlkit-image-labeling": "file:../../dist/packages/mlkit-image-labeling", "@nativescript/mlkit-object-detection": "file:../../dist/packages/mlkit-object-detection", "@nativescript/mlkit-digital-ink-recognition": "file:../../dist/packages/mlkit-digital-ink-recognition", - "@nativescript/mlkit-pose-detection": "file:../../dist/packages/mlkit-pose-detection" + "@nativescript/mlkit-pose-detection": "file:../../dist/packages/mlkit-pose-detection", + "@nativescript/mlkit-selfie-segmentation": "file:../../dist/packages/mlkit-selfie-segmentation", + "@nativescript/mlkit-custom-object-detection": "file:../../dist/packages/mlkit-custom-object-detection" }, "devDependencies": { - "@nativescript/android": "~8.1.1", - "@nativescript/ios": "~8.1.0" + "@nativescript/android": "~8.9.0", + "@nativescript/ios": "~8.9.0" } } diff --git a/apps/demo-angular/project.json b/apps/demo-angular/project.json new file mode 100644 index 0000000..27b0323 --- /dev/null +++ b/apps/demo-angular/project.json @@ -0,0 +1,43 @@ +{ + "name": "demo-angular", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/demo-angular/src", + "projectType": "application", + "prefix": "demo", + "targets": { + "build": { + "executor": "@nativescript/nx:build", + "options": { + "noHmr": true, + "production": true, + "uglify": true, + "release": true, + "forDevice": true, + "tsConfig": "apps/demo-angular/tsconfig.json" + }, + "dependsOn": [ + { + "target": "build.all", + "dependencies": true + } + ] + }, + "clean": { + "executor": "@nativescript/nx:clean", + "options": {} + }, + "lint": { + "executor": "@nx/eslint:lint" + }, + "debug": { + "executor": "@nativescript/nx:debug", + "options": { + "noHmr": true, + "uglify": false, + "release": false, + "forDevice": false, + "prepare": false + } + } + } +} diff --git a/apps/demo-angular/src/app-routing.module.ts b/apps/demo-angular/src/app-routing.module.ts index 012c8b4..805d6ed 100644 --- a/apps/demo-angular/src/app-routing.module.ts +++ b/apps/demo-angular/src/app-routing.module.ts @@ -5,20 +5,22 @@ import { NativeScriptRouterModule } from '@nativescript/angular'; import { HomeComponent } from './home.component'; const routes: Routes = [ - { path: '', redirectTo: '/home', pathMatch: 'full' }, - { path: 'home', component: HomeComponent }, - { path: 'mlkit-barcode-scanning', loadChildren: () => import('./plugin-demos/mlkit-barcode-scanning.module').then(m => m.MlkitBarcodeScanningModule) }, - { path: 'mlkit-core', loadChildren: () => import('./plugin-demos/mlkit-core.module').then(m => m.MlkitCoreModule) }, - { path: 'mlkit-digital-ink-recognition', loadChildren: () => import('./plugin-demos/mlkit-digital-ink-recognition.module').then(m => m.MlkitDigitalInkRecognitionModule) }, - { path: 'mlkit-face-detection', loadChildren: () => import('./plugin-demos/mlkit-face-detection.module').then(m => m.MlkitFaceDetectionModule) }, - { path: 'mlkit-image-labeling', loadChildren: () => import('./plugin-demos/mlkit-image-labeling.module').then(m => m.MlkitImageLabelingModule) }, - { path: 'mlkit-object-detection', loadChildren: () => import('./plugin-demos/mlkit-object-detection.module').then(m => m.MlkitObjectDetectionModule) }, - { path: 'mlkit-pose-detection', loadChildren: () => import('./plugin-demos/mlkit-pose-detection.module').then(m => m.MlkitPoseDetectionModule) }, - { path: 'mlkit-text-recognition', loadChildren: () => import('./plugin-demos/mlkit-text-recognition.module').then(m => m.MlkitTextRecognitionModule) } + { path: '', redirectTo: '/home', pathMatch: 'full' }, + { path: 'home', component: HomeComponent }, + { path: 'mlkit-barcode-scanning', loadChildren: () => import('./plugin-demos/mlkit-barcode-scanning.module').then((m) => m.MlkitBarcodeScanningModule) }, + { path: 'mlkit-core', loadChildren: () => import('./plugin-demos/mlkit-core.module').then((m) => m.MlkitCoreModule) }, + { path: 'mlkit-custom-object-detection', loadChildren: () => import('./plugin-demos/mlkit-custom-object-detection.module').then((m) => m.MlkitCustomObjectDetectionModule) }, + { path: 'mlkit-digital-ink-recognition', loadChildren: () => import('./plugin-demos/mlkit-digital-ink-recognition.module').then((m) => m.MlkitDigitalInkRecognitionModule) }, + { path: 'mlkit-face-detection', loadChildren: () => import('./plugin-demos/mlkit-face-detection.module').then((m) => m.MlkitFaceDetectionModule) }, + { path: 'mlkit-image-labeling', loadChildren: () => import('./plugin-demos/mlkit-image-labeling.module').then((m) => m.MlkitImageLabelingModule) }, + { path: 'mlkit-object-detection', loadChildren: () => import('./plugin-demos/mlkit-object-detection.module').then((m) => m.MlkitObjectDetectionModule) }, + { path: 'mlkit-pose-detection', loadChildren: () => import('./plugin-demos/mlkit-pose-detection.module').then((m) => m.MlkitPoseDetectionModule) }, + { path: 'mlkit-selfie-segmentation', loadChildren: () => import('./plugin-demos/mlkit-selfie-segmentation.module').then((m) => m.MlkitSelfieSegmentationModule) }, + { path: 'mlkit-text-recognition', loadChildren: () => import('./plugin-demos/mlkit-text-recognition.module').then((m) => m.MlkitTextRecognitionModule) }, ]; @NgModule({ - imports: [NativeScriptRouterModule.forRoot(routes)], - exports: [NativeScriptRouterModule], + imports: [NativeScriptRouterModule.forRoot(routes)], + exports: [NativeScriptRouterModule], }) export class AppRoutingModule {} diff --git a/apps/demo-angular/src/app.module.ts b/apps/demo-angular/src/app.module.ts index c869e4d..0c96880 100644 --- a/apps/demo-angular/src/app.module.ts +++ b/apps/demo-angular/src/app.module.ts @@ -4,11 +4,12 @@ import { NativeScriptModule } from '@nativescript/angular'; import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { HomeComponent } from './home.component'; +import { MLKitModule } from '@nativescript/mlkit-core/angular'; @NgModule({ schemas: [NO_ERRORS_SCHEMA], declarations: [AppComponent, HomeComponent], bootstrap: [AppComponent], - imports: [NativeScriptModule, AppRoutingModule], + imports: [NativeScriptModule, AppRoutingModule, MLKitModule], }) export class AppModule {} diff --git a/apps/demo-angular/src/app.scss b/apps/demo-angular/src/app.scss index effb718..567ca58 100644 --- a/apps/demo-angular/src/app.scss +++ b/apps/demo-angular/src/app.scss @@ -1,22 +1,28 @@ @import 'nativescript-theme-core/scss/light'; @import 'nativescript-theme-core/scss/index'; -button, label, stack-layout { - horizontal-align: center; +button, +label, +stack-layout { + horizontal-align: center; } button { - font-size: 36; + font-size: 16; } .title { - font-size: 30; - margin: 20; + font-size: 30; + margin: 20; } .message { - font-size: 20; - color: #284848; - text-align: center; - margin: 0 20; -} + font-size: 20; + color: #284848; + text-align: center; + margin: 0 20; +} + +.rounded { + border-radius: 20; +} diff --git a/apps/demo-angular/src/home.component.html b/apps/demo-angular/src/home.component.html index b6ad279..4984906 100644 --- a/apps/demo-angular/src/home.component.html +++ b/apps/demo-angular/src/home.component.html @@ -2,10 +2,10 @@ - + - + diff --git a/apps/demo-angular/src/home.component.ts b/apps/demo-angular/src/home.component.ts index 3107a08..fa930da 100644 --- a/apps/demo-angular/src/home.component.ts +++ b/apps/demo-angular/src/home.component.ts @@ -1,34 +1,41 @@ import { Component } from '@angular/core'; +import { RouterExtensions } from '@nativescript/angular'; @Component({ - selector: 'demo-home', - templateUrl: 'home.component.html', + selector: 'demo-home', + templateUrl: 'home.component.html', }) export class HomeComponent { - demos = [ - { - name: 'mlkit-barcode-scanning' - }, - { - name: 'mlkit-core' - }, - { - name: 'mlkit-digital-ink-recognition' - }, - { - name: 'mlkit-face-detection' - }, - { - name: 'mlkit-image-labeling' - }, - { - name: 'mlkit-object-detection' - }, - { - name: 'mlkit-pose-detection' - }, - { - name: 'mlkit-text-recognition' - } -]; -} \ No newline at end of file + demos = [ + { + name: 'mlkit-barcode-scanning', + }, + { + name: 'mlkit-core', + }, + { + name: 'mlkit-custom-object-detection', + }, + { + name: 'mlkit-digital-ink-recognition', + }, + { + name: 'mlkit-face-detection', + }, + { + name: 'mlkit-image-labeling', + }, + { + name: 'mlkit-object-detection', + }, + { + name: 'mlkit-pose-detection', + }, + { + name: 'mlkit-selfie-segmentation', + }, + { + name: 'mlkit-text-recognition', + }, + ]; +} diff --git a/apps/demo-angular/src/plugin-demos/mlkit-barcode-scanning.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-barcode-scanning.component.ts index 3d7e352..a52a1aa 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-barcode-scanning.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-barcode-scanning.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitBarcodeScanning } from '@demo/shared'; -import { } from '@nativescript/mlkit-barcode-scanning'; @Component({ selector: 'demo-mlkit-barcode-scanning', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-core.component.html b/apps/demo-angular/src/plugin-demos/mlkit-core.component.html index a0143fc..fb8867a 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-core.component.html +++ b/apps/demo-angular/src/plugin-demos/mlkit-core.component.html @@ -1,8 +1,15 @@ - - - - - + + + + + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts index 9dd6f9a..552752f 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-core.component.ts @@ -1,19 +1,83 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitCore } from '@demo/shared'; -import { } from '@nativescript/mlkit-core'; +import { Dialogs, ImageSource } from '@nativescript/core'; +import { DetectionEvent, DetectionType, detectWithStillImage, MLKitView } from '@nativescript/mlkit-core'; @Component({ - selector: 'demo-mlkit-core', - templateUrl: 'mlkit-core.component.html', + selector: 'demo-mlkit-core', + templateUrl: 'mlkit-core.component.html', }) export class MlkitCoreComponent { - + + camera: MLKitView; + detectorType = DetectionType.All; + isPaused = true; + torchOn = true; demoShared: DemoSharedMlkitCore; - - constructor(private _ngZone: NgZone) {} + + constructor(private _ngZone: NgZone) { } ngOnInit() { this.demoShared = new DemoSharedMlkitCore(); } + onLoaded(args) { + this.camera = args.object; + } + + onDetection(event: DetectionEvent) { + console.log('onDetection', event.data, event.type); + } + + toggleCamera(args) { + this.camera.toggleCamera(); + } + + requestPermission(args) { + this.camera.requestCameraPermission(); + } + + changeType(args) { + Dialogs.action('Change Detector Type', 'Cancel', [ + 'all', + 'barcode', + 'digitalInk (unsupport atm)', + 'face', + 'image', + 'object', + 'pose', + 'text', + 'none' + ]).then(value => { + if (value === 'Cancel') { return } + if (value.indexOf('digitalInk') > -1) { + Dialogs.alert('digitalInk is currently unsupported'); + this.detectorType = DetectionType.None; + } else { + this.detectorType = value as any; + } + }) + } + + togglePause(args) { + this.camera.pause = !this.camera.pause; + this.isPaused = this.camera.pause; + } + + toggleTorch(args) { + this.camera.torchOn = !this.camera.torchOn; + this.torchOn = this.camera.torchOn; + } + + async processStill(args) { + try { + const src = await ImageSource.fromUrl('https://www.jqueryscript.net/images/jQuery-Plugin-To-Generate-International-Article-Number-Barcode-EAN13.jpg'); + const result = await detectWithStillImage(src, { + detectorType: DetectionType.Barcode + }); + console.log('processStill', result.barcode[0]); + } catch (e) { + console.log(e); + } + } } \ No newline at end of file diff --git a/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.html b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.html new file mode 100644 index 0000000..28a1691 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.ts new file mode 100644 index 0000000..b1c21b1 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.component.ts @@ -0,0 +1,17 @@ +import { Component, NgZone } from '@angular/core'; +import { DemoSharedMlkitCustomObjectDetection } from '@demo/shared'; +import {} from '@nativescript/mlkit-custom-object-detection'; + +@Component({ + selector: 'demo-mlkit-custom-object-detection', + templateUrl: 'mlkit-custom-object-detection.component.html', +}) +export class MlkitCustomObjectDetectionComponent { + demoShared: DemoSharedMlkitCustomObjectDetection; + + constructor(private _ngZone: NgZone) {} + + ngOnInit() { + this.demoShared = new DemoSharedMlkitCustomObjectDetection(); + } +} diff --git a/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.module.ts b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.module.ts new file mode 100644 index 0000000..955dddf --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-custom-object-detection.module.ts @@ -0,0 +1,10 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { MlkitCustomObjectDetectionComponent } from './mlkit-custom-object-detection.component'; + +@NgModule({ + imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: MlkitCustomObjectDetectionComponent }])], + declarations: [MlkitCustomObjectDetectionComponent], + schemas: [NO_ERRORS_SCHEMA], +}) +export class MlkitCustomObjectDetectionModule {} diff --git a/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts index c065655..b909a9f 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-digital-ink-recognition.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitDigitalInkRecognition } from '@demo/shared'; -import { } from '@nativescript/mlkit-digital-ink-recognition'; @Component({ selector: 'demo-mlkit-digital-ink-recognition', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts index 4ff6154..142b48a 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-face-detection.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitFaceDetection } from '@demo/shared'; -import { } from '@nativescript/mlkit-face-detection'; @Component({ selector: 'demo-mlkit-face-detection', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts index a6bc368..c7104da 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-image-labeling.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitImageLabeling } from '@demo/shared'; -import { } from '@nativescript/mlkit-image-labeling'; @Component({ selector: 'demo-mlkit-image-labeling', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts index 49199df..155af82 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-object-detection.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitObjectDetection } from '@demo/shared'; -import { } from '@nativescript/mlkit-object-detection'; @Component({ selector: 'demo-mlkit-object-detection', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts index aaeef32..f81c0b3 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-pose-detection.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitPoseDetection } from '@demo/shared'; -import { } from '@nativescript/mlkit-pose-detection'; @Component({ selector: 'demo-mlkit-pose-detection', diff --git a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.html b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.html new file mode 100644 index 0000000..41a41ae --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts new file mode 100644 index 0000000..9587a51 --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.component.ts @@ -0,0 +1,18 @@ +import { Component, NgZone } from '@angular/core'; +import { DemoSharedMlkitSelfieSegmentation } from '@demo/shared'; + +@Component({ + selector: 'demo-mlkit-selfie-segmentation', + templateUrl: 'mlkit-selfie-segmentation.component.html', +}) +export class MlkitSelfieSegmentationComponent { + + demoShared: DemoSharedMlkitSelfieSegmentation; + + constructor(private _ngZone: NgZone) {} + + ngOnInit() { + this.demoShared = new DemoSharedMlkitSelfieSegmentation(); + } + +} \ No newline at end of file diff --git a/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.module.ts b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.module.ts new file mode 100644 index 0000000..dbcc65e --- /dev/null +++ b/apps/demo-angular/src/plugin-demos/mlkit-selfie-segmentation.module.ts @@ -0,0 +1,10 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { NativeScriptCommonModule, NativeScriptRouterModule } from '@nativescript/angular'; +import { MlkitSelfieSegmentationComponent } from './mlkit-selfie-segmentation.component'; + +@NgModule({ + imports: [NativeScriptCommonModule, NativeScriptRouterModule.forChild([{ path: '', component: MlkitSelfieSegmentationComponent }])], + declarations: [MlkitSelfieSegmentationComponent], + schemas: [ NO_ERRORS_SCHEMA] +}) +export class MlkitSelfieSegmentationModule {} diff --git a/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts b/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts index e432847..d8b7453 100644 --- a/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts +++ b/apps/demo-angular/src/plugin-demos/mlkit-text-recognition.component.ts @@ -1,6 +1,5 @@ import { Component, NgZone } from '@angular/core'; import { DemoSharedMlkitTextRecognition } from '@demo/shared'; -import { } from '@nativescript/mlkit-text-recognition'; @Component({ selector: 'demo-mlkit-text-recognition', diff --git a/apps/demo-angular/tsconfig.json b/apps/demo-angular/tsconfig.json index e3e8d80..b6e2648 100644 --- a/apps/demo-angular/tsconfig.json +++ b/apps/demo-angular/tsconfig.json @@ -1,26 +1,23 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "rootDirs": [ - ".", - "../.." - ], - "baseUrl": ".", "paths": { - "~/*": [ - "src/*" - ], - "@nativescript/*": [ - "../../dist/packages/*" - ], - "@demo/shared": [ - "../../tools/demo/index.ts" - ] + "~/*": ["src/*"], + "@demo/shared": ["tools/demo/index.ts"], + "@nativescript/mlkit-text-recognition": ["packages/mlkit-text-recognition/index.ts"], + "@nativescript/mlkit-core": ["packages/mlkit-core/index.d.ts"], + "@nativescript/mlkit-core/angular": ["packages/mlkit-core/angular/index.ts"], + "@nativescript/mlkit-custom-object-detection": ["../../packages/mlkit-custom-object-detection/index.d.ts"], + "@nativescript/mlkit-barcode-scanning": ["packages/mlkit-barcode-scanning/index.ts"], + "@nativescript/mlkit-face-detection": ["packages/mlkit-face-detection/index.ts"], + "@nativescript/mlkit-image-labeling": ["packages/mlkit-image-labeling/index.ts"], + "@nativescript/mlkit-object-detection": ["packages/mlkit-object-detection/index.ts"], + "@nativescript/mlkit-digital-ink-recognition": ["packages/mlkit-digital-ink-recognition/index.ts"], + "@nativescript/mlkit-pose-detection": ["packages/mlkit-pose-detection/index.ts"], + "@nativescript/mlkit-selfie-segmentation": ["packages/mlkit-selfie-segmentation/index.ts"], + "@nativescript/*": ["../../dist/packages/*"] } }, - "files": [ - "./references.d.ts", - "./src/main.ts", - "./src/polyfills.ts" - ] -} \ No newline at end of file + "files": ["./references.d.ts", "./src/main.ts", "./src/polyfills.ts"], + "include": ["../../packages/**/references.d.ts"] +} diff --git a/apps/demo/.eslintrc.json b/apps/demo/.eslintrc.json new file mode 100644 index 0000000..53c06c8 --- /dev/null +++ b/apps/demo/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*", "node_modules/**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/demo/package.json b/apps/demo/package.json index fb7666d..1f5b1f1 100644 --- a/apps/demo/package.json +++ b/apps/demo/package.json @@ -12,10 +12,12 @@ "@nativescript/mlkit-image-labeling": "file:../../packages/mlkit-image-labeling", "@nativescript/mlkit-object-detection": "file:../../packages/mlkit-object-detection", "@nativescript/mlkit-pose-detection": "file:../../packages/mlkit-pose-detection", - "@nativescript/mlkit-text-recognition": "file:../../packages/mlkit-text-recognition" + "@nativescript/mlkit-selfie-segmentation": "file:../../packages/mlkit-selfie-segmentation", + "@nativescript/mlkit-text-recognition": "file:../../packages/mlkit-text-recognition", + "@nativescript/mlkit-custom-object-detection": "file:../../packages/mlkit-custom-object-detection" }, "devDependencies": { - "@nativescript/android": "~8.1.1", - "@nativescript/ios": "~8.1.0" + "@nativescript/android": "~8.9.0", + "@nativescript/ios": "~8.9.0" } } diff --git a/apps/demo/project.json b/apps/demo/project.json new file mode 100644 index 0000000..e7043ac --- /dev/null +++ b/apps/demo/project.json @@ -0,0 +1,43 @@ +{ + "name": "demo", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/demo/src", + "projectType": "application", + "prefix": "demo", + "targets": { + "build": { + "executor": "@nativescript/nx:build", + "options": { + "noHmr": true, + "production": true, + "uglify": true, + "release": true, + "forDevice": true, + "tsConfig": "apps/demo/tsconfig.json" + }, + "dependsOn": [ + { + "target": "build.all", + "dependencies": true + } + ] + }, + "clean": { + "executor": "@nativescript/nx:clean", + "options": {} + }, + "lint": { + "executor": "@nx/eslint:lint" + }, + "debug": { + "executor": "@nativescript/nx:debug", + "options": { + "noHmr": true, + "uglify": false, + "release": false, + "forDevice": false, + "prepare": false + } + } + } +} diff --git a/apps/demo/references.d.ts b/apps/demo/references.d.ts index 22bac92..5ed0bb2 100644 --- a/apps/demo/references.d.ts +++ b/apps/demo/references.d.ts @@ -1 +1,2 @@ /// +/// diff --git a/apps/demo/src/app.scss b/apps/demo/src/app.scss index d0ac013..9951432 100644 --- a/apps/demo/src/app.scss +++ b/apps/demo/src/app.scss @@ -1,2 +1,5 @@ @import 'nativescript-theme-core/scss/light'; -@import 'nativescript-theme-core/scss/index'; \ No newline at end of file +@import 'nativescript-theme-core/scss/index'; +.rounded { + border-radius: 20; +} diff --git a/apps/demo/src/main-page.xml b/apps/demo/src/main-page.xml index 38021d5..797d99d 100644 --- a/apps/demo/src/main-page.xml +++ b/apps/demo/src/main-page.xml @@ -14,6 +14,8 @@