ngx-universal-zone 0.0.1
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/database/db-base.service.d.ts +37 -0
- package/database/db-setting-constant.d.ts +7 -0
- package/database/db-sql.service.d.ts +48 -0
- package/database/db-web.service.d.ts +50 -0
- package/database/db.module.d.ts +6 -0
- package/database/index.d.ts +6 -0
- package/database/schema.service.d.ts +25 -0
- package/fesm2022/ngx-universal-zone-database.mjs +608 -0
- package/fesm2022/ngx-universal-zone-database.mjs.map +1 -0
- package/fesm2022/ngx-universal-zone-pipes.mjs +87 -0
- package/fesm2022/ngx-universal-zone-pipes.mjs.map +1 -0
- package/fesm2022/ngx-universal-zone-pub-sub.mjs +147 -0
- package/fesm2022/ngx-universal-zone-pub-sub.mjs.map +1 -0
- package/fesm2022/ngx-universal-zone-ui.mjs +218 -0
- package/fesm2022/ngx-universal-zone-ui.mjs.map +1 -0
- package/fesm2022/ngx-universal-zone.mjs +966 -0
- package/fesm2022/ngx-universal-zone.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +40 -0
- package/pipes/formateDate.pipe.d.ts +8 -0
- package/pipes/index.d.ts +2 -0
- package/pipes/safe.pipe.d.ts +18 -0
- package/pub-sub/i-hash.d.ts +10 -0
- package/pub-sub/index.d.ts +2 -0
- package/pub-sub/ngx-pub-sub.module.d.ts +7 -0
- package/pub-sub/ngx-pub-sub.service.d.ts +27 -0
- package/pub-sub/subject-type.enum.d.ts +5 -0
- package/public-api.d.ts +6 -0
- package/shared/app-injector.d.ts +6 -0
- package/shared/app-setting.service.d.ts +18 -0
- package/shared/flag-based-preloading-strategy.d.ts +12 -0
- package/shared/helper.service.d.ts +15 -0
- package/shared/message-bus/index.d.ts +4 -0
- package/shared/message-bus/message-bus.d.ts +15 -0
- package/shared/message-bus/message-bus.testing.d.ts +9 -0
- package/shared/message-bus/messages.d.ts +2 -0
- package/shared/message-bus/models.d.ts +39 -0
- package/shared/universal-zone.module.d.ts +2 -0
- package/ui/directives/directives.module.d.ts +9 -0
- package/ui/directives/long-ress.directive.d.ts +21 -0
- package/ui/directives/only-number.directive.d.ts +7 -0
- package/ui/index.d.ts +5 -0
- package/ui/no-data/no-data.component.d.ts +13 -0
- package/ui/no-data/no-data.module.d.ts +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-universal-zone-database.mjs","sources":["../../../projects/ngx-universal-zone/database/db-base.service.ts","../../../projects/ngx-universal-zone/database/db-web.service.ts","../../../projects/ngx-universal-zone/database/schema.service.ts","../../../projects/ngx-universal-zone/database/db-setting-constant.ts","../../../projects/ngx-universal-zone/database/db-sql.service.ts","../../../projects/ngx-universal-zone/database/db.module.ts","../../../projects/ngx-universal-zone/database/ngx-universal-zone-database.ts"],"sourcesContent":["// @ts-ignore\n\nimport { Observable } from \"rxjs\";\n\nimport { ITableOptions } from \"./schema.service\";\nimport { DbFilter } from \"./db-web.service\";\n\nexport class DbServiceConfig {\n dbType!: DbServiceType;\n dbName!: string;\n schema!: ITableOptions[];\n}\n\nexport enum DbServiceType {\n IndexDd,\n Sqlite\n}\n\nexport abstract class DbService {\n dbInitialized$ = new Observable<any>();\n\n get Db(): any {\n return;\n }\n\n putLocal(store, data): Promise<{ rowsAffected; insertId }> {\n // @ts-ignore\n\n return;\n }\n\n putLocalRx(store, data): Observable<any> {\n // @ts-ignore\n return;\n }\n\n get<T>(store: string, key: any): Promise<T> {\n // @ts-ignore\n return;\n }\n getRx<T>(store: string, key: any): Observable<T> { \n // @ts-ignore\n return; \n }\n\n getAll<T>(store: string, opt?: DbFilter): Promise<T> {\n // @ts-ignore\n return;\n }\n\n getAllRx<T>(store: string, opt?: DbFilter): Observable<T> {\n // @ts-ignore\n return;\n }\n\n remove(store, id): Promise<any> {\n // @ts-ignore\n return;\n }\n\n removeRx(store, key): Observable<any> {\n // @ts-ignore\n return;\n }\n\n removeAll(store): Promise<any> {\n // @ts-ignore\n return;\n }\n\n removeAllRx(store: string): Observable<any> {\n // @ts-ignore\n return;\n }\n\n count(store, opts?: { key }): Promise<number> {\n // @ts-ignore\n return;\n }\n\n countRx(store, opts?: { key }): Observable<number> {\n // @ts-ignore\n return;\n }\n\n deleteDb(): Promise<any> {\n // @ts-ignore\n return;\n }\n\n deleteTable(store): Observable<void> {\n // @ts-ignore\n return;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport Dexie, { IndexableType } from 'dexie';\nimport { forkJoin, Observable, of, Subject, switchMap } from 'rxjs';\n\nimport { SchemaService } from './schema.service';\nimport { DbService, DbServiceConfig } from './db-base.service';\n\n// @Injectable()\nexport class DbWebService extends Dexie implements DbService {\n private _db!: Dexie;\n private dbInitialized = new Subject<any>();\n\n constructor(\n private config: DbServiceConfig,\n private schemaService: SchemaService\n ) {\n super(config.dbName);\n\n const schema: {\n [tableName: string]: string | null;\n } = {};\n schemaService.schema.stores.forEach((s) => {\n let cols = ``;\n for (let c of s.columns) {\n cols += `${c.isPrimaryKey ? `++${c.name}` : `,${c.name}`}`;\n }\n schema[s.name] = cols;\n });\n this.version(1).stores(schema);\n this.open()\n .then((d) => {\n this._db = d;\n\n this.dbInitialized.next(d);\n })\n .catch((e) => alert(e));\n }\n \n dbInitialized$ = this.dbInitialized.asObservable();\n\n get Db() {\n return this._db;\n }\n\n putLocal(store, data): Promise<{ rowsAffected; insertId }> {\n return new Promise(async (resolve, reject) => {\n const schema = this.schemaService.schema.stores.filter(\n (s) => s.name == store\n )[0];\n const key = schema.columns.filter((s) => s.isPrimaryKey)[0];\n\n const exist = data[key.name] ? await this.get(store, data[key.name]) : null;\n if (exist) {\n //update\n this.Db\n .table(store)\n .update(data[key.name], data)\n .then(\n (r) => resolve(null as any),\n (e) => reject(e)\n );\n } else {\n this.Db\n .table(store)\n .add(data)\n .then(\n (r) => resolve(null as any),\n (e) => reject(e)\n );\n }\n });\n }\n\n putLocalRx(store, data) {\n return new Observable((observer) => {\n this.putLocal(store, data).then((result) => {\n observer.next(result);\n observer.complete();\n }, (e) => observer.error(e));\n });\n }\n\n get<T>(store: string, key: any): Promise<T> {\n return new Promise((resolve, reject) => {\n if(!this.Db) {\n return reject('Database not initialized. Please wait for dbInitialized$ to emit.');\n }\n \n this.Db\n .table(store)\n .get(key)\n .then((r) => {\n resolve(<T>r);\n }, (e) => reject(e));\n });\n }\n\n getRx<T>(store: string, key: any) {\n return new Observable<T>((observer) => {\n this.get<T>(store, key).then((value) => {\n observer.next(value);\n observer.complete();\n });\n });\n }\n\n getByFieldName<T>(storeName, fieldName, key): Promise<Array<T>> {\n const filter = {};\n filter[fieldName] = key;\n return this.Db.table(storeName).where(filter).toArray();\n }\n\n getAll<T>(store: string, opt?: DbFilter): Promise<T> {\n return new Promise(async (resolve, reject) => {\n if(!this.Db) {\n return reject('Database not initialized. Please wait for dbInitialized$ to emit.');\n }\n\n let table = this.Db.table(store);\n let collection = table.toCollection();\n\n if(opt?.sortBy) {\n collection = table.orderBy(opt.sortBy);\n }\n\n if(opt?.sortType && opt?.sortType == 'desc') {\n collection = table.reverse();\n }\n\n // collection = this.Db.table(store).toCollection();\n if (opt && opt.key && opt.value) {\n if(!opt.keyRange) {\n opt.keyRange = KeyRangeType.equalTo;\n }\n\n switch (opt.keyRange) {\n case KeyRangeType.startsWithIgnoreCase:\n collection = this.Db\n .table(store)\n .where(opt.key)\n .startsWithIgnoreCase(opt.value);\n break;\n case KeyRangeType.equalTo:\n collection = this.Db\n .table(store)\n .where(opt.key)\n .equals(opt.value);\n break;\n case KeyRangeType.notEqualTo:\n collection = this.Db\n .table(store)\n .where(opt.key)\n .notEqual(opt.value);\n break;\n case KeyRangeType.equalToIgnoreCase:\n collection = this.Db\n .table(store)\n .where(opt.key)\n .equalsIgnoreCase(opt.value);\n break;\n }\n }\n\n if(opt?.pageIndex != null) {\n collection = collection.offset((opt.pageIndex - 1) * opt.pageSize);\n }\n\n if(opt?.pageSize != null) {\n collection = collection.limit(opt.pageSize)\n }\n\n // let data!: T;\n // if(opt?.sortBy) {\n // data = <T>await collection.sortBy(opt.sortBy);\n // } else {\n // data = <T>await collection.toArray();\n // }\n\n // if(opt.sortType == 'desc') {\n // data = <T>(<any[]>data).reverse();\n // }\n\n const data = <T>await collection.toArray();\n resolve(data);\n });\n }\n\n getAllRx<T>(store: string, opt?: DbFilter) {\n return new Observable<T>((observer) => {\n this.getAll<T>(store, opt).then((value) => {\n observer.next(value);\n observer.complete();\n }, (e) => observer.error(e));\n });\n }\n\n remove(store, key): Promise<any> {\n return this.Db.table(store).delete(key);\n }\n\n removeRx(store, key): Observable<any> {\n return new Observable((observer) => {\n this.remove(store, key).then((result) => {\n observer.next(result);\n observer.complete();\n }, (e) => observer.error(e));\n });\n }\n\n async removeAll(store) {\n const all = await this.getAll<any[]>(store);\n const schema = this.schemaService.schema.stores.filter(\n (s) => s.name == store\n )[0];\n const key = schema.columns.filter((s) => s.isPrimaryKey)[0];\n\n const promises: any = [];\n for (let r of all) {\n promises.push(this.Db.table(store).delete(key.name));\n }\n\n await Promise.all(promises);\n }\n\n removeAllRx(store: string) {\n return this.getAllRx<any[]>(store).pipe(\n switchMap((entries) => {\n const observables: Array<Observable<any>> = [];\n for(let entry of entries) {\n observables.push(this.removeRx(store, entry.id));\n }\n \n if(!observables.length) {\n return of(null);\n }\n\n return forkJoin(observables);\n })\n );\n }\n\n count(store, opts?: { key }): Promise<number> {\n if (opts && opts.key) {\n const pk = this.schemaService.schema.stores\n .filter((s) => s.name == store)[0]\n .columns.filter((s) => s.isPrimaryKey)[0];\n return this.Db.table(store).where(pk.name).equals(opts.key).count();\n }\n\n return this.Db.table(store).count();\n }\n\n countRx(store, opts?: { key }) {\n return new Observable<number>((observer) => {\n this.count(store, opts).then((value) => {\n observer.next(value);\n observer.complete();\n }, (e) => observer.error(e));\n });\n }\n\n deleteDb() {\n return new Promise(async (resolve, reject) => {\n await this.Db.delete();\n resolve(null);\n });\n }\n\n deleteTable(store) {\n return new Observable<void>((observer) => {\n this.Db.table(store).clear().then((result) => {\n observer.next(result);\n observer.complete();\n }, (e) => observer.error(e));\n });\n }\n}\n\nexport interface DbFilter {\n key?: any;\n value?: any;\n keyRange?: KeyRangeType;\n pageIndex?: number;\n pageSize?: number;\n sortBy?: any;\n sortType?: 'asc' | 'desc';\n}\n\nexport enum KeyRangeType {\n equalToIgnoreCase = 1,\n startsWithIgnoreCase = 2,\n equalTo = 3,\n notEqualTo = 4\n}\n","import { Injectable } from '@angular/core';\nimport { DbServiceConfig } from './db-base.service';\n\n\nexport interface ITableOptions {\n name: string;\n columns: Array<{ name; isPrimaryKey?; type? }>;\n}\n\n@Injectable()\nexport class SchemaService {\n schema = {\n stores: <ITableOptions[]>[]\n };\n tables: Record<string, string> = {};\n\n private _config = {} as DbServiceConfig;\n\n /**\n * Represents a SchemaService that manages the database schema.\n */\n constructor() {\n\n }\n\n get config() {\n return this._config;\n }\n\n init(config: DbServiceConfig) {\n this._config = config;\n\n if(config.schema && config.schema.length) {\n this.schema.stores = this.config.schema;\n this.schema.stores.forEach((s) => this.tables[s.name] = s.name);\n }\n }\n}","import { ITableOptions } from \"./schema.service\";\r\n\r\nexport class DbSettingConstant {\r\n public static readonly SETTING = 'setting';\r\n}\r\n\r\nexport const DbSettingConfig = {\r\n schema: <ITableOptions>{\r\n name: DbSettingConstant.SETTING,\r\n columns: [\r\n {\r\n name: 'key',\r\n isPrimaryKey: true,\r\n type: 'TEXT',\r\n },\r\n {\r\n name: 'value',\r\n type: 'TEXT',\r\n },\r\n ],\r\n }\r\n};","import { Injectable } from '@angular/core';\n\nimport { Observable, of, Subject } from 'rxjs';\n// import * as CapacitorSQLPlugin from 'capacitor-sqlite';\n\nimport { SchemaService, ITableOptions } from './schema.service';\nimport { DbService, DbServiceConfig } from './db-base.service';\nimport { DbFilter } from './db-web.service';\n\n@Injectable()\nexport class DbSqliteService implements DbService {\n private _dbName: string;\n private _db: any;\n private _isDbInitialized = false;\n private dbInitialized = new Subject<any>();\n\n constructor(\n private config: DbServiceConfig,\n private schemaSvc: SchemaService\n ) {\n this._dbName = config.dbName;\n // await this._deleteDatabase();\n // this._db = CapacitorSQLite;\n\n this._db.open({ database: this._dbName }).then(\n async (response: { result: boolean; message: string }) => {\n if (response.result) {\n await this._dbSuccess();\n\n this.initializeDb();\n }\n }, (e) => {\n this._dbError(e);\n });\n }\n getAllRx<T>(store: string, opt?: DbFilter): Observable<T> {\n throw new Error('Method not implemented.');\n }\n\n testDb() {\n this._db.transaction((tr) => {\n tr.executeSql(\n 'SELECT upper(?) AS upperString',\n ['Test string'],\n (tr, rs) => {\n console.log('Got upperString result: ' + rs.rows.item(0).upperString);\n }\n );\n });\n }\n\n initializeDb() {\n const delay = 50;\n //workaround: don't proceed unless db is initialized...wait everytime 50ms\n const _self = this;\n let timerId: any = setTimeout(async function request() {\n if (!_self._isDbInitialized) {\n //retry\n timerId = setTimeout(request, delay);\n } else {\n //clear timeout\n clearTimeout(timerId);\n timerId = null;\n\n await _self._prepareTables();\n\n // heavy database operations should start from this...\n _self.dbInitialized.next(_self._db);\n }\n }, delay);\n }\n\n dbInitialized$ = this.dbInitialized.asObservable();\n\n get Db() {\n return this._db;\n }\n\n putLocal(store, data: any): Promise<{ rowsAffected; insertId }> {\n return new Promise(async (resolve, reject) => {\n let sql = `BEGIN TRANSACTION;`;\n const values: any[] = [];\n\n const total = await this.count(store);\n if (total) {\n //update\n sql = `UPDATE ${store} SET `;\n //columns\n for (let prop in data) {\n if (data.hasOwnProperty(prop)) {\n sql += `${prop}='${data[prop]}',`;\n }\n }\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n } else {\n //insert\n sql = `INSERT INTO ${store} `;\n //columns\n sql += `(`;\n for (let prop in data) {\n if (data.hasOwnProperty(prop)) {\n sql += `${prop},`;\n }\n }\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n\n //values\n sql += ` VALUES (`;\n for (let prop in data) {\n sql += `?,`;\n values.push(data[prop]);\n }\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n }\n\n sql += `COMMIT TRANSACTION;`;\n const { changes } = await this._db.execute({\n statements: sql,\n values: values,\n });\n resolve(changes);\n // this._db.transaction(async (tx) => {\n // const res = await this._executeSql<{ rowsAffected, insertId }>(tx, sql, values);\n // resolve(res);\n // }, (error) => reject(error));\n });\n }\n\n putLocalRx(store, data) {\n return new Observable((observer) => {\n this.putLocal(store, data).then((result) => {\n observer.next(result);\n observer.complete();\n });\n });\n }\n\n get<T>(store: string, key: any): Promise<T> {\n return new Promise(async (resolve, reject) => {\n //get primary key field form schema\n const table: any = this.schemaSvc.schema.stores.filter(\n (s) => s.name === store\n )[0];\n const pk = table.columns.filter((c) => c.isPrimaryKey)[0];\n const pkName = pk.name;\n\n let sql = `SELECT * FROM ${store} WHERE ${pkName} = '${key}' LIMIT 1`;\n try {\n let data;\n const { values } = await this._db.query({ statement: sql, values: [] });\n if (values.length) {\n data = values[0];\n }\n resolve(data);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n getRx<T>(store: string, key: any): Observable<T> { \n // @ts-ignore\n return; \n }\n\n getAll<T>(store: string, opt?: DbFilter): Promise<T> {\n return new Promise(async (resolve, reject) => {\n let sql = `SELECT * FROM ${store}`;\n\n try {\n let data;\n const { values } = await this._db.query({ statement: sql, values: [] });\n resolve(values);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n remove(store, key): Promise<any> {\n return new Promise((resolve, reject) => {\n throw 'remove not impleted in db-sql yet';\n });\n }\n\n removeRx(store, key): Observable<any> {\n throw 'remove not impleted in db-sql yet';\n }\n\n removeAll(store) {\n return new Promise((resolve, reject) => {\n throw 'removeAll not impleted in db-sql yet';\n });\n }\n\n removeAllRx(store: string): Observable<any> {\n throw 'removeAllRx not impleted in db-sql yet';\n }\n\n count(store, opts?: { key }): Promise<number> {\n return new Promise(async (resolve, reject) => {\n let sql = `SELECT count(*) AS total FROM ${store} `;\n\n const { values } = await this._db.query({ statement: sql, values: [] });\n resolve(values);\n });\n }\n\n countRx(store, opts?: { key }) {\n return new Observable<number>((observer) => {\n this.count(store, opts).then((result) => {\n observer.next(result);\n observer.complete();\n }, (error) => observer.error(error));\n });\n }\n\n deleteDb() {\n return this._deleteDatabase();\n }\n\n \n deleteTable(store): Observable<void> {\n throw 'deleteTable not impleted in db-sql yet';\n }\n\n private _prepareTables() {\n return new Promise(async (resolve, reject) => {\n const schemas = this.schemaSvc.schema.stores;\n\n const promises: any[] = [];\n for (let schema of schemas) {\n let sql = `BEGIN TRANSACTION;`;\n\n sql += `CREATE TABLE IF NOT EXISTS ${schema.name} `;\n sql += `(`;\n\n for (let col of schema.columns) {\n //TODO: for user table, need to fix primary key\n // const ikPkTypeNumber = col['type'] == 'INTEGER';\n sql += `${col.name}${col.type ? ' ' + col.type : ''}${\n col['isPrimaryKey'] ? ' PRIMARY KEY' : ''\n },`;\n }\n\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n\n sql += `COMMIT TRANSACTION;`;\n\n const promise = this._db.execute({ statements: sql });\n promises.push(promise);\n }\n\n try {\n await Promise.all(promises);\n resolve(null);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n private _deleteDatabase(): Promise<{ result: boolean; message: string }> {\n return this._db.deleteDatabase({ database: this._dbName });\n }\n\n private _dbSuccess() {\n this._isDbInitialized = true;\n }\n\n private _dbError(err) {\n alert('Open database ERROR: ' + JSON.stringify(err));\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\r\n\r\nimport { SchemaService } from './schema.service';\r\nimport { DbWebService } from './db-web.service';\r\nimport { DbService, DbServiceType } from './db-base.service';\r\nimport { DbSqliteService } from './db-sql.service';\r\n\r\nexport function dbFactory(schemaSvc: SchemaService) {\r\n const dbConfig = schemaSvc.config;\r\n\r\n switch (dbConfig.dbType) {\r\n case DbServiceType.IndexDd:\r\n return new DbWebService(dbConfig, schemaSvc);\r\n case DbServiceType.Sqlite:\r\n return new DbSqliteService(dbConfig, schemaSvc);\r\n }\r\n}\r\n\r\nexport const provideDb = (): EnvironmentProviders => {\r\n const providers: Provider[] = [\r\n SchemaService,\r\n {\r\n provide: DbService,\r\n useFactory: dbFactory,\r\n deps: [SchemaService],\r\n }\r\n ];\r\n\r\n return makeEnvironmentProviders(providers);\r\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DbServiceConfig","i2.SchemaService"],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Pipe } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/platform-browser';
|
|
4
|
+
import { format, parseISO } from 'date-fns';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
|
|
7
|
+
class SafePipe {
|
|
8
|
+
constructor(sanitizer) {
|
|
9
|
+
this.sanitizer = sanitizer;
|
|
10
|
+
}
|
|
11
|
+
transform(data, type) {
|
|
12
|
+
if (!data) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
let result;
|
|
16
|
+
const context = type;
|
|
17
|
+
switch (context) {
|
|
18
|
+
case SecurityContext.URL:
|
|
19
|
+
result = this.sanitizer.bypassSecurityTrustResourceUrl(data);
|
|
20
|
+
break;
|
|
21
|
+
case SecurityContext.STYLE:
|
|
22
|
+
result = this.sanitizer.bypassSecurityTrustStyle(data);
|
|
23
|
+
break;
|
|
24
|
+
case SecurityContext.HTML:
|
|
25
|
+
result = this.sanitizer.bypassSecurityTrustHtml(data);
|
|
26
|
+
break;
|
|
27
|
+
default:
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
33
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: SafePipe, isStandalone: true, name: "safe" }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SafePipe, decorators: [{
|
|
36
|
+
type: Pipe,
|
|
37
|
+
args: [{
|
|
38
|
+
name: 'safe',
|
|
39
|
+
}]
|
|
40
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
41
|
+
var SecurityContext;
|
|
42
|
+
(function (SecurityContext) {
|
|
43
|
+
SecurityContext["NONE"] = "none";
|
|
44
|
+
SecurityContext["HTML"] = "html";
|
|
45
|
+
SecurityContext["STYLE"] = "style";
|
|
46
|
+
SecurityContext["SCRIPT"] = "script";
|
|
47
|
+
SecurityContext["URL"] = "url";
|
|
48
|
+
SecurityContext["RESOURCE_URL"] = "resource";
|
|
49
|
+
})(SecurityContext || (SecurityContext = {}));
|
|
50
|
+
|
|
51
|
+
class FormateDatePipe {
|
|
52
|
+
constructor() { }
|
|
53
|
+
transform(date, ft) {
|
|
54
|
+
return new Observable(observer => {
|
|
55
|
+
if (!date) {
|
|
56
|
+
observer.next(null);
|
|
57
|
+
observer.complete();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
let fd = null;
|
|
61
|
+
if (date instanceof Date) {
|
|
62
|
+
fd = format(date, ft);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
fd = format(parseISO(date), ft);
|
|
66
|
+
}
|
|
67
|
+
observer.next(fd);
|
|
68
|
+
observer.complete();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: FormateDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
73
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: FormateDatePipe, isStandalone: true, name: "formateDate" }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: FormateDatePipe, decorators: [{
|
|
76
|
+
type: Pipe,
|
|
77
|
+
args: [{
|
|
78
|
+
name: 'formateDate',
|
|
79
|
+
}]
|
|
80
|
+
}], ctorParameters: () => [] });
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Generated bundle index. Do not edit.
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
export { FormateDatePipe, SafePipe, SecurityContext };
|
|
87
|
+
//# sourceMappingURL=ngx-universal-zone-pipes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-universal-zone-pipes.mjs","sources":["../../../projects/ngx-universal-zone/pipes/safe.pipe.ts","../../../projects/ngx-universal-zone/pipes/formateDate.pipe.ts","../../../projects/ngx-universal-zone/pipes/ngx-universal-zone-pipes.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n})\nexport class SafePipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(data, type: any) {\n if (!data) {\n return;\n }\n\n let result;\n const context = type as SecurityContext;\n switch (context) {\n case SecurityContext.URL:\n result = this.sanitizer.bypassSecurityTrustResourceUrl(data);\n break;\n case SecurityContext.STYLE:\n result = this.sanitizer.bypassSecurityTrustStyle(data);\n break;\n case SecurityContext.HTML:\n result = this.sanitizer.bypassSecurityTrustHtml(data);\n break;\n default:\n break;\n }\n return result;\n }\n}\n\nexport enum SecurityContext {\n NONE = 'none',\n HTML = 'html',\n STYLE = 'style',\n SCRIPT = 'script',\n URL = 'url',\n RESOURCE_URL = 'resource',\n}\n","import { Pipe } from '@angular/core';\nimport { format, parseISO } from 'date-fns';\nimport { Observable } from 'rxjs';\n\n@Pipe({\n name: 'formateDate',\n})\nexport class FormateDatePipe {\n constructor() {}\n\n transform(date: any, ft: string) {\n return new Observable<string>(observer => {\n if (!date) {\n observer.next(null);\n observer.complete();\n } else {\n let fd = null;\n if (date instanceof Date) {\n fd = format(date, ft);\n } else {\n fd = format(parseISO(date), ft);\n }\n\n observer.next(fd);\n observer.complete();\n }\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,QAAQ,CAAA;AACnB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAE7B,SAAS,CAAC,IAAI,EAAE,IAAS,EAAA;QACvB,IAAI,CAAC,IAAI,EAAE;YACT;;AAGF,QAAA,IAAI,MAAM;QACV,MAAM,OAAO,GAAG,IAAuB;QACvC,QAAQ,OAAO;YACb,KAAK,eAAe,CAAC,GAAG;gBACtB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,IAAI,CAAC;gBAC5D;YACF,KAAK,eAAe,CAAC,KAAK;gBACxB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC;gBACtD;YACF,KAAK,eAAe,CAAC,IAAI;gBACvB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;gBACrD;AACF,YAAA;gBACE;;AAEJ,QAAA,OAAO,MAAM;;8GAvBJ,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA;;IA4BW;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,UAAyB;AAC3B,CAAC,EAPW,eAAe,KAAf,eAAe,GAO1B,EAAA,CAAA,CAAA;;MCjCY,eAAe,CAAA;AAC1B,IAAA,WAAA,GAAA;IAEA,SAAS,CAAC,IAAS,EAAE,EAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,UAAU,CAAS,QAAQ,IAAG;YACvC,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB,QAAQ,CAAC,QAAQ,EAAE;;iBACd;gBACL,IAAI,EAAE,GAAG,IAAI;AACb,gBAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACxB,oBAAA,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;;qBAChB;oBACL,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;;AAGjC,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,QAAQ,CAAC,QAAQ,EAAE;;AAEvB,SAAC,CAAC;;8GAnBO,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACpB,iBAAA;;;ACND;;AAEG;;;;"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
var SubjectType;
|
|
7
|
+
(function (SubjectType) {
|
|
8
|
+
SubjectType[SubjectType["Subject"] = 0] = "Subject";
|
|
9
|
+
SubjectType[SubjectType["BehaviorSubject"] = 1] = "BehaviorSubject";
|
|
10
|
+
SubjectType[SubjectType["ReplaySubject"] = 2] = "ReplaySubject";
|
|
11
|
+
})(SubjectType || (SubjectType = {}));
|
|
12
|
+
|
|
13
|
+
class NgxPubSubService {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.eventObservableMapping = {};
|
|
16
|
+
}
|
|
17
|
+
publishEvent(eventName, data) {
|
|
18
|
+
this.validateEventName(eventName);
|
|
19
|
+
this.createSubjectIfNotExist(eventName);
|
|
20
|
+
this.publishNext(eventName, SubjectType.Subject, data);
|
|
21
|
+
}
|
|
22
|
+
subscribe(eventName, next, error, complete) {
|
|
23
|
+
this.validateEventName(eventName);
|
|
24
|
+
// subject will be created if the provided eventName is not registered
|
|
25
|
+
this.createSubjectIfNotExist(eventName);
|
|
26
|
+
return this.eventObservableMapping[eventName].ref.subscribe(next, error, complete);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Use this method to get the Observable associated with the event.
|
|
30
|
+
* Useful when you would like to apply additional rxjs operators like debounceTime
|
|
31
|
+
*/
|
|
32
|
+
getEventObservable(eventName) {
|
|
33
|
+
this.validateEventName(eventName);
|
|
34
|
+
// subject will be created if the provided eventName is not registered
|
|
35
|
+
this.createSubjectIfNotExist(eventName);
|
|
36
|
+
return this.eventObservableMapping[eventName].ref.asObservable();
|
|
37
|
+
}
|
|
38
|
+
registerEventWithLastValue(name, defaultValue) {
|
|
39
|
+
this.validateEventName(name);
|
|
40
|
+
// type and name check
|
|
41
|
+
this.checkEventType(name, SubjectType.BehaviorSubject, true);
|
|
42
|
+
// create one
|
|
43
|
+
this.eventObservableMapping[name] = {
|
|
44
|
+
type: SubjectType.BehaviorSubject,
|
|
45
|
+
ref: new BehaviorSubject(defaultValue),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
registerEventWithHistory(name, bufferSize, windowTime, scheduler) {
|
|
49
|
+
this.validateEventName(name);
|
|
50
|
+
// type and name check
|
|
51
|
+
this.checkEventType(name, SubjectType.ReplaySubject, true);
|
|
52
|
+
// create one
|
|
53
|
+
this.eventObservableMapping[name] = {
|
|
54
|
+
type: SubjectType.ReplaySubject,
|
|
55
|
+
ref: new ReplaySubject(bufferSize, windowTime, scheduler),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
publishWithLast(eventName, data) {
|
|
59
|
+
this.validateEventName(eventName);
|
|
60
|
+
this.publishNext(eventName, SubjectType.BehaviorSubject, data);
|
|
61
|
+
}
|
|
62
|
+
publishWithHistory(eventName, data) {
|
|
63
|
+
this.validateEventName(eventName);
|
|
64
|
+
this.publishNext(eventName, SubjectType.ReplaySubject, data);
|
|
65
|
+
}
|
|
66
|
+
completeEvent(eventName) {
|
|
67
|
+
this.validateEventName(eventName);
|
|
68
|
+
if (!this.eventObservableMapping[eventName]) {
|
|
69
|
+
throw Error('Event not created yet');
|
|
70
|
+
}
|
|
71
|
+
this.completeObservableAndDestroyMapping(eventName);
|
|
72
|
+
}
|
|
73
|
+
ngOnDestroy() {
|
|
74
|
+
for (const eventName in this.eventObservableMapping) {
|
|
75
|
+
if (this.eventObservableMapping.hasOwnProperty(eventName)) {
|
|
76
|
+
this.completeObservableAndDestroyMapping(eventName);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
publishNext(eventName, type = SubjectType.Subject, data) {
|
|
81
|
+
this.checkEventType(eventName, type);
|
|
82
|
+
this.eventObservableMapping[eventName].ref.next(data);
|
|
83
|
+
}
|
|
84
|
+
checkEventType(eventName, type = SubjectType.Subject, shouldNotExist = false) {
|
|
85
|
+
const object = this.eventObservableMapping[eventName];
|
|
86
|
+
let errorMessage;
|
|
87
|
+
if (!object && shouldNotExist) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!object) {
|
|
91
|
+
errorMessage = `Event doesn't exist of type: ${SubjectType[type]} or it has been completed`;
|
|
92
|
+
}
|
|
93
|
+
else if (object.type !== type) {
|
|
94
|
+
errorMessage = `Event exists with other type: ${SubjectType[object.type]}. Expected type: ${SubjectType[type]}`;
|
|
95
|
+
}
|
|
96
|
+
if (shouldNotExist && object.type === type) {
|
|
97
|
+
errorMessage = `Event already registerd with the same type. Don't register a second time`;
|
|
98
|
+
}
|
|
99
|
+
if (errorMessage) {
|
|
100
|
+
throw Error(`Error (${eventName}): ${errorMessage}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
createSubjectIfNotExist(eventName) {
|
|
104
|
+
const object = this.eventObservableMapping[eventName];
|
|
105
|
+
if (object) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
this.eventObservableMapping[eventName] = {
|
|
109
|
+
type: SubjectType.Subject,
|
|
110
|
+
ref: new Subject(),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
validateEventName(eventName) {
|
|
114
|
+
if (!eventName) {
|
|
115
|
+
throw Error('Event name not provided');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
completeObservableAndDestroyMapping(eventName) {
|
|
119
|
+
this.eventObservableMapping[eventName].ref.complete();
|
|
120
|
+
delete this.eventObservableMapping[eventName];
|
|
121
|
+
}
|
|
122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
123
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubService }); }
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubService, decorators: [{
|
|
126
|
+
type: Injectable
|
|
127
|
+
}], ctorParameters: () => [] });
|
|
128
|
+
|
|
129
|
+
class NgxPubSubModule {
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
131
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubModule, imports: [CommonModule] }); }
|
|
132
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubModule, providers: [NgxPubSubService], imports: [CommonModule] }); }
|
|
133
|
+
}
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgxPubSubModule, decorators: [{
|
|
135
|
+
type: NgModule,
|
|
136
|
+
args: [{
|
|
137
|
+
imports: [CommonModule],
|
|
138
|
+
providers: [NgxPubSubService],
|
|
139
|
+
}]
|
|
140
|
+
}] });
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Generated bundle index. Do not edit.
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
export { NgxPubSubModule, NgxPubSubService };
|
|
147
|
+
//# sourceMappingURL=ngx-universal-zone-pub-sub.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-universal-zone-pub-sub.mjs","sources":["../../../projects/ngx-universal-zone/pub-sub/subject-type.enum.ts","../../../projects/ngx-universal-zone/pub-sub/ngx-pub-sub.service.ts","../../../projects/ngx-universal-zone/pub-sub/ngx-pub-sub.module.ts","../../../projects/ngx-universal-zone/pub-sub/ngx-universal-zone-pub-sub.ts"],"sourcesContent":["export enum SubjectType {\n Subject,\n BehaviorSubject,\n ReplaySubject,\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport {\n Subject,\n Subscription,\n ReplaySubject,\n Observable,\n BehaviorSubject,\n SchedulerLike,\n} from 'rxjs';\n\nimport { IHash } from './i-hash';\nimport { SubjectType } from './subject-type.enum';\n\n@Injectable()\nexport class NgxPubSubService implements OnDestroy {\n private eventObservableMapping: IHash;\n\n constructor() {\n this.eventObservableMapping = {};\n }\n\n publishEvent(eventName: string, data?: any) {\n this.validateEventName(eventName);\n this.createSubjectIfNotExist(eventName);\n\n this.publishNext(eventName, SubjectType.Subject, data);\n }\n\n subscribe(\n eventName: string,\n next?: (value: any) => void,\n error?: (error: any) => any,\n complete?: () => void\n ): Subscription {\n this.validateEventName(eventName);\n // subject will be created if the provided eventName is not registered\n this.createSubjectIfNotExist(eventName);\n\n return this.eventObservableMapping[eventName].ref.subscribe(\n next,\n error,\n complete\n );\n }\n\n /**\n * Use this method to get the Observable associated with the event.\n * Useful when you would like to apply additional rxjs operators like debounceTime\n */\n getEventObservable(eventName: string): Observable<any> {\n this.validateEventName(eventName);\n // subject will be created if the provided eventName is not registered\n this.createSubjectIfNotExist(eventName);\n\n return this.eventObservableMapping[eventName].ref.asObservable();\n }\n\n registerEventWithLastValue(name: string, defaultValue: any) {\n this.validateEventName(name);\n // type and name check\n this.checkEventType(name, SubjectType.BehaviorSubject, true);\n // create one\n this.eventObservableMapping[name] = {\n type: SubjectType.BehaviorSubject,\n ref: new BehaviorSubject(defaultValue),\n };\n }\n\n registerEventWithHistory(\n name: string,\n bufferSize?: number,\n windowTime?: number,\n scheduler?: SchedulerLike\n ) {\n this.validateEventName(name);\n // type and name check\n this.checkEventType(name, SubjectType.ReplaySubject, true);\n // create one\n this.eventObservableMapping[name] = {\n type: SubjectType.ReplaySubject,\n ref: new ReplaySubject(bufferSize, windowTime, scheduler),\n };\n }\n\n publishWithLast(eventName: string, data?: any) {\n this.validateEventName(eventName);\n this.publishNext(eventName, SubjectType.BehaviorSubject, data);\n }\n\n publishWithHistory(eventName: string, data?: any) {\n this.validateEventName(eventName);\n this.publishNext(eventName, SubjectType.ReplaySubject, data);\n }\n\n completeEvent(eventName: string) {\n this.validateEventName(eventName);\n if (!this.eventObservableMapping[eventName]) {\n throw Error('Event not created yet');\n }\n this.completeObservableAndDestroyMapping(eventName);\n }\n\n ngOnDestroy() {\n for (const eventName in this.eventObservableMapping) {\n if (this.eventObservableMapping.hasOwnProperty(eventName)) {\n this.completeObservableAndDestroyMapping(eventName);\n }\n }\n }\n\n private publishNext(\n eventName: string,\n type: SubjectType = SubjectType.Subject,\n data?: any\n ) {\n this.checkEventType(eventName, type);\n this.eventObservableMapping[eventName].ref.next(data);\n }\n\n private checkEventType(\n eventName: string,\n type: SubjectType = SubjectType.Subject,\n shouldNotExist = false\n ) {\n const object = this.eventObservableMapping[eventName];\n let errorMessage;\n if (!object && shouldNotExist) {\n return;\n }\n if (!object) {\n errorMessage = `Event doesn't exist of type: ${SubjectType[type]} or it has been completed`;\n } else if (object.type !== type) {\n errorMessage = `Event exists with other type: ${\n SubjectType[object.type]\n }. Expected type: ${SubjectType[type]}`;\n }\n if (shouldNotExist && object.type === type) {\n errorMessage = `Event already registerd with the same type. Don't register a second time`;\n }\n if (errorMessage) {\n throw Error(`Error (${eventName}): ${errorMessage}`);\n }\n }\n\n private createSubjectIfNotExist(eventName: string) {\n const object = this.eventObservableMapping[eventName];\n if (object) {\n return;\n }\n\n this.eventObservableMapping[eventName] = {\n type: SubjectType.Subject,\n ref: new Subject(),\n };\n }\n\n private validateEventName(eventName: string) {\n if (!eventName) {\n throw Error('Event name not provided');\n }\n }\n\n private completeObservableAndDestroyMapping(eventName: string) {\n this.eventObservableMapping[eventName].ref.complete();\n delete this.eventObservableMapping[eventName];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxPubSubService } from './ngx-pub-sub.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [NgxPubSubService],\n})\nexport class NgxPubSubModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, Component, ViewEncapsulation, NgModule, Directive, HostListener, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/platform-browser';
|
|
4
|
+
import * as i2 from '@angular/common';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { merge, timer, interval } from 'rxjs';
|
|
7
|
+
import { tap, map, switchMap, takeUntil } from 'rxjs/operators';
|
|
8
|
+
|
|
9
|
+
class NoDataComponent {
|
|
10
|
+
constructor(domSanitizer) {
|
|
11
|
+
this.domSanitizer = domSanitizer;
|
|
12
|
+
this.icon = input();
|
|
13
|
+
this.message = input();
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
let svg = this.icon();
|
|
17
|
+
if (!this.icon()) {
|
|
18
|
+
svg = `<?xml version="1.0" encoding="utf-8"?>
|
|
19
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
20
|
+
viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
|
|
21
|
+
<style type="text/css">
|
|
22
|
+
.st0{fill-rule:evenodd;clip-rule:evenodd;}
|
|
23
|
+
</style>
|
|
24
|
+
<g>
|
|
25
|
+
<path d="M9,21.8c0,0.4,0.3,0.7,0.6,0.8c0.5,0.1,0.9-0.3,0.9-0.8v-7h6.2V8.4h11.9c1.3,0,2.4,1.1,2.4,2.4v5.8c0,0.5,0.4,0.8,0.9,0.8
|
|
26
|
+
c0.4-0.1,0.6-0.4,0.6-0.8v-5.7c0-2.2-1.8-3.9-3.9-3.9H13.3L9,11.7V21.8z M14,8.4h1.2v4.9h-4.7v-1L14,8.4z"/>
|
|
27
|
+
<path d="M31.7,29.9c-0.4,0.1-0.6,0.4-0.6,0.8v2.2c0,1.3-1.1,2.4-2.4,2.4H12.9c-1.3,0-2.4-1.1-2.4-2.4v-1.5c0-0.5-0.4-0.8-0.9-0.8
|
|
28
|
+
C9.2,30.7,9,31,9,31.4v1.4c0,2.2,1.8,3.9,3.9,3.9h15.7c2.2,0,3.9-1.8,3.9-3.9v-2.2C32.5,30.2,32.1,29.8,31.7,29.9z"/>
|
|
29
|
+
<path d="M8.2,7.5c0.2,0.2,0.3,0.2,0.5,0.2c0.2,0,0.4-0.1,0.6-0.3c0.3-0.3,0.2-0.8-0.1-1.1L5.8,3c-0.3-0.3-0.8-0.3-1.1,0
|
|
30
|
+
C4.5,3.2,4.4,3.7,4.7,4L8.2,7.5z"/>
|
|
31
|
+
<path d="M10.5,4.7C10.6,5,11,5.2,11.3,5.2c0.2,0,0.4-0.1,0.5-0.2C12,4.8,12.1,4.5,12,4.2l-0.8-2.4c-0.1-0.4-0.6-0.7-1.1-0.4
|
|
32
|
+
c-0.3,0.2-0.5,0.6-0.4,1L10.5,4.7z"/>
|
|
33
|
+
<path d="M6.4,8.8L4,8C3.6,7.9,3.1,8.1,3,8.5C2.9,8.9,3.2,9.3,3.6,9.5l2.4,0.8c0.1,0,0.2,0,0.3,0c0.3,0,0.7-0.2,0.8-0.6
|
|
34
|
+
C7,9.3,6.8,9,6.4,8.8z"/>
|
|
35
|
+
<path d="M35.7,19.8c-0.5-0.3-1.1-0.2-1.5,0.2L32,22.3l-2.2-2.2c-0.5-0.5-1.2-0.4-1.7,0c-0.4,0.5-0.4,1.2,0.1,1.6l2.2,2.2l-2.2,2.2
|
|
36
|
+
c-0.4,0.4-0.5,1.1-0.1,1.6c0.2,0.3,0.6,0.4,0.9,0.4c0.3,0,0.6-0.1,0.8-0.3l2.2-2.2l2.3,2.3c0.2,0.2,0.5,0.3,0.8,0.3
|
|
37
|
+
c0.3,0,0.6-0.1,0.9-0.4c0.4-0.5,0.3-1.2-0.1-1.6l-2.3-2.3l2.3-2.3C36.4,21.1,36.3,20.3,35.7,19.8z"/>
|
|
38
|
+
<path d="M10.2,29.4c1.1-0.2,1.9-1.1,2.1-2.1c0.4-1.9-1.3-3.5-3.2-3.2c-1.1,0.2-1.9,1.1-2.1,2.1C6.6,28.2,8.3,29.8,10.2,29.4z
|
|
39
|
+
M8.5,27c-0.2-0.8,0.5-1.5,1.4-1.4c0.4,0.1,0.8,0.5,0.9,0.9c0.2,0.8-0.5,1.5-1.4,1.4C9,27.8,8.6,27.5,8.5,27z"/>
|
|
40
|
+
<path d="M36.8,7.2c-0.7-1.1-2.2-1.1-2.9,0c-0.3,0.5-0.3,1.1,0,1.6c0.3,0.6,0.9,0.8,1.5,0.8s1.1-0.3,1.5-0.8
|
|
41
|
+
C37.1,8.3,37.1,7.7,36.8,7.2z M35.7,8.4c-0.2,0.2-0.5,0.2-0.7,0c-0.2-0.2-0.2-0.5,0-0.7c0.1-0.1,0.2-0.1,0.4-0.1
|
|
42
|
+
c0.1,0,0.3,0,0.4,0.1C35.9,7.8,35.9,8.2,35.7,8.4z"/>
|
|
43
|
+
</g>
|
|
44
|
+
</svg>`;
|
|
45
|
+
}
|
|
46
|
+
this.iconHtml = this.domSanitizer.bypassSecurityTrustHtml(svg);
|
|
47
|
+
}
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NoDataComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: NoDataComponent, isStandalone: false, selector: "app-no-data", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
50
|
+
<div class="data-empty">
|
|
51
|
+
<div *ngIf="iconHtml" [outerHTML]="iconHtml"></div>
|
|
52
|
+
<p *ngIf="message()">{{ message() }}</p>
|
|
53
|
+
<ng-content></ng-content>
|
|
54
|
+
</div>
|
|
55
|
+
`, isInline: true, styles: [".data-empty{text-align:center;padding-top:20%}.data-empty svg{color:#efefef;width:120px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NoDataComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'app-no-data', template: `
|
|
60
|
+
<div class="data-empty">
|
|
61
|
+
<div *ngIf="iconHtml" [outerHTML]="iconHtml"></div>
|
|
62
|
+
<p *ngIf="message()">{{ message() }}</p>
|
|
63
|
+
<ng-content></ng-content>
|
|
64
|
+
</div>
|
|
65
|
+
`, encapsulation: ViewEncapsulation.None, standalone: false, styles: [".data-empty{text-align:center;padding-top:20%}.data-empty svg{color:#efefef;width:120px}\n"] }]
|
|
66
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
67
|
+
|
|
68
|
+
class NoDataModule {
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NoDataModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
70
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: NoDataModule, declarations: [NoDataComponent], imports: [CommonModule], exports: [NoDataComponent] }); }
|
|
71
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NoDataModule, imports: [CommonModule] }); }
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NoDataModule, decorators: [{
|
|
74
|
+
type: NgModule,
|
|
75
|
+
args: [{
|
|
76
|
+
imports: [CommonModule],
|
|
77
|
+
declarations: [NoDataComponent],
|
|
78
|
+
exports: [NoDataComponent],
|
|
79
|
+
}]
|
|
80
|
+
}] });
|
|
81
|
+
|
|
82
|
+
class OnlyNumberDirective {
|
|
83
|
+
constructor() { }
|
|
84
|
+
onKeyDown(event) {
|
|
85
|
+
if (event.key === '.') {
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: OnlyNumberDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
90
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: OnlyNumberDirective, isStandalone: false, selector: "[onlyNumber]", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
|
|
91
|
+
}
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: OnlyNumberDirective, decorators: [{
|
|
93
|
+
type: Directive,
|
|
94
|
+
args: [{
|
|
95
|
+
selector: '[onlyNumber]',
|
|
96
|
+
standalone: false,
|
|
97
|
+
}]
|
|
98
|
+
}], ctorParameters: () => [], propDecorators: { onKeyDown: [{
|
|
99
|
+
type: HostListener,
|
|
100
|
+
args: ['keydown', ['$event']]
|
|
101
|
+
}] } });
|
|
102
|
+
|
|
103
|
+
class LongPressDirective {
|
|
104
|
+
constructor(elRef) {
|
|
105
|
+
this.elRef = elRef;
|
|
106
|
+
this.disabled = false;
|
|
107
|
+
this._duration = 3000;
|
|
108
|
+
this.isContinuous = false;
|
|
109
|
+
this.continuousInterval = 0;
|
|
110
|
+
this.longPressStart = new EventEmitter();
|
|
111
|
+
this.longPressFinish = new EventEmitter();
|
|
112
|
+
this.longPressCancel = new EventEmitter();
|
|
113
|
+
this.pressing = false;
|
|
114
|
+
merge(this.longPressCancel, this.longPressFinish).pipe(tap(() => {
|
|
115
|
+
const ref = this.elRef.nativeElement;
|
|
116
|
+
ref.style.transform = 'scale(1)';
|
|
117
|
+
})).subscribe();
|
|
118
|
+
}
|
|
119
|
+
set duration(v) {
|
|
120
|
+
this._duration = v ? Number(v) : 3000;
|
|
121
|
+
}
|
|
122
|
+
set _continuousInterval(v) {
|
|
123
|
+
this.isContinuous = !!v;
|
|
124
|
+
this.continuousInterval = v;
|
|
125
|
+
}
|
|
126
|
+
onPress(event) {
|
|
127
|
+
if (this.disabled) {
|
|
128
|
+
event.stopPropagation();
|
|
129
|
+
event.preventDefault();
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const ref = this.elRef.nativeElement;
|
|
133
|
+
ref.style.transform = 'scale(0.95)';
|
|
134
|
+
this.pressing = true;
|
|
135
|
+
this.longPressStart.emit(event);
|
|
136
|
+
let obs = timer(this._duration).pipe(map(() => event));
|
|
137
|
+
if (this.isContinuous) {
|
|
138
|
+
obs = obs.pipe(tap((event) => this.longPressFinish.emit(event)), switchMap((event) => interval(this.continuousInterval)
|
|
139
|
+
.pipe(map(() => event))), takeUntil(this.longPressCancel));
|
|
140
|
+
}
|
|
141
|
+
this.longPressSubscription = obs.subscribe((event) => {
|
|
142
|
+
if (this.pressing) {
|
|
143
|
+
this.pressing = this.isContinuous;
|
|
144
|
+
this.longPressFinish.emit(event);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
onRelease(event) {
|
|
149
|
+
this.pressing = false;
|
|
150
|
+
if (this.longPressSubscription) {
|
|
151
|
+
this.longPressSubscription.unsubscribe();
|
|
152
|
+
}
|
|
153
|
+
this.longPressCancel.emit(event);
|
|
154
|
+
}
|
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: LongPressDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
156
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: LongPressDirective, isStandalone: false, selector: "[longPress]", inputs: { duration: ["longPress", "duration"], disabled: ["longPressDisabled", "disabled"], _continuousInterval: ["longPressInterval", "_continuousInterval"] }, outputs: { longPressStart: "longPressStart", longPressFinish: "longPressFinish", longPressCancel: "longPressCancel" }, host: { listeners: { "mousedown": "onPress($event)", "touchstart": "onPress($event)", "mouseup": "onRelease($event)", "mouseleave": "onRelease($event)", "touchend": "onRelease($event)", "touchcancel": "onRelease($event)" } }, ngImport: i0 }); }
|
|
157
|
+
}
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: LongPressDirective, decorators: [{
|
|
159
|
+
type: Directive,
|
|
160
|
+
args: [{
|
|
161
|
+
selector: '[longPress]',
|
|
162
|
+
standalone: false,
|
|
163
|
+
}]
|
|
164
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { duration: [{
|
|
165
|
+
type: Input,
|
|
166
|
+
args: ['longPress']
|
|
167
|
+
}], disabled: [{
|
|
168
|
+
type: Input,
|
|
169
|
+
args: ['longPressDisabled']
|
|
170
|
+
}], _continuousInterval: [{
|
|
171
|
+
type: Input,
|
|
172
|
+
args: ['longPressInterval']
|
|
173
|
+
}], longPressStart: [{
|
|
174
|
+
type: Output
|
|
175
|
+
}], longPressFinish: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}], longPressCancel: [{
|
|
178
|
+
type: Output
|
|
179
|
+
}], onPress: [{
|
|
180
|
+
type: HostListener,
|
|
181
|
+
args: ['mousedown', ['$event']]
|
|
182
|
+
}, {
|
|
183
|
+
type: HostListener,
|
|
184
|
+
args: ['touchstart', ['$event']]
|
|
185
|
+
}], onRelease: [{
|
|
186
|
+
type: HostListener,
|
|
187
|
+
args: ['mouseup', ['$event']]
|
|
188
|
+
}, {
|
|
189
|
+
type: HostListener,
|
|
190
|
+
args: ['mouseleave', ['$event']]
|
|
191
|
+
}, {
|
|
192
|
+
type: HostListener,
|
|
193
|
+
args: ['touchend', ['$event']]
|
|
194
|
+
}, {
|
|
195
|
+
type: HostListener,
|
|
196
|
+
args: ['touchcancel', ['$event']]
|
|
197
|
+
}] } });
|
|
198
|
+
|
|
199
|
+
class DirectivesModule {
|
|
200
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
201
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: DirectivesModule, declarations: [OnlyNumberDirective, LongPressDirective], imports: [CommonModule], exports: [OnlyNumberDirective, LongPressDirective] }); }
|
|
202
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DirectivesModule, imports: [CommonModule] }); }
|
|
203
|
+
}
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: DirectivesModule, decorators: [{
|
|
205
|
+
type: NgModule,
|
|
206
|
+
args: [{
|
|
207
|
+
imports: [CommonModule],
|
|
208
|
+
declarations: [OnlyNumberDirective, LongPressDirective],
|
|
209
|
+
exports: [OnlyNumberDirective, LongPressDirective],
|
|
210
|
+
}]
|
|
211
|
+
}] });
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Generated bundle index. Do not edit.
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
export { DirectivesModule, LongPressDirective, NoDataComponent, NoDataModule, OnlyNumberDirective };
|
|
218
|
+
//# sourceMappingURL=ngx-universal-zone-ui.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-universal-zone-ui.mjs","sources":["../../../projects/ngx-universal-zone/ui/no-data/no-data.component.ts","../../../projects/ngx-universal-zone/ui/no-data/no-data.module.ts","../../../projects/ngx-universal-zone/ui/directives/only-number.directive.ts","../../../projects/ngx-universal-zone/ui/directives/long-ress.directive.ts","../../../projects/ngx-universal-zone/ui/directives/directives.module.ts","../../../projects/ngx-universal-zone/ui/ngx-universal-zone-ui.ts"],"sourcesContent":["import { Component, input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-no-data',\n template: `\n <div class=\"data-empty\">\n <div *ngIf=\"iconHtml\" [outerHTML]=\"iconHtml\"></div>\n <p *ngIf=\"message()\">{{ message() }}</p>\n <ng-content></ng-content>\n </div>\n `,\n styles: [\n `\n .data-empty {\n text-align: center;\n padding-top: 20%;\n }\n\n .data-empty svg {\n color: #efefef;\n width: 120px;\n }\n `,\n ],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class NoDataComponent implements OnInit {\n icon = input<string>();\n message = input<string>();\n \n iconHtml: SafeHtml;\n constructor(private domSanitizer: DomSanitizer) {}\n\n ngOnInit() {\n let svg = this.icon();\n if(!this.icon()) {\n svg = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 40 40\" style=\"enable-background:new 0 0 40 40;\" xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0{fill-rule:evenodd;clip-rule:evenodd;}\n </style>\n <g>\n <path d=\"M9,21.8c0,0.4,0.3,0.7,0.6,0.8c0.5,0.1,0.9-0.3,0.9-0.8v-7h6.2V8.4h11.9c1.3,0,2.4,1.1,2.4,2.4v5.8c0,0.5,0.4,0.8,0.9,0.8\n c0.4-0.1,0.6-0.4,0.6-0.8v-5.7c0-2.2-1.8-3.9-3.9-3.9H13.3L9,11.7V21.8z M14,8.4h1.2v4.9h-4.7v-1L14,8.4z\"/>\n <path d=\"M31.7,29.9c-0.4,0.1-0.6,0.4-0.6,0.8v2.2c0,1.3-1.1,2.4-2.4,2.4H12.9c-1.3,0-2.4-1.1-2.4-2.4v-1.5c0-0.5-0.4-0.8-0.9-0.8\n C9.2,30.7,9,31,9,31.4v1.4c0,2.2,1.8,3.9,3.9,3.9h15.7c2.2,0,3.9-1.8,3.9-3.9v-2.2C32.5,30.2,32.1,29.8,31.7,29.9z\"/>\n <path d=\"M8.2,7.5c0.2,0.2,0.3,0.2,0.5,0.2c0.2,0,0.4-0.1,0.6-0.3c0.3-0.3,0.2-0.8-0.1-1.1L5.8,3c-0.3-0.3-0.8-0.3-1.1,0\n C4.5,3.2,4.4,3.7,4.7,4L8.2,7.5z\"/>\n <path d=\"M10.5,4.7C10.6,5,11,5.2,11.3,5.2c0.2,0,0.4-0.1,0.5-0.2C12,4.8,12.1,4.5,12,4.2l-0.8-2.4c-0.1-0.4-0.6-0.7-1.1-0.4\n c-0.3,0.2-0.5,0.6-0.4,1L10.5,4.7z\"/>\n <path d=\"M6.4,8.8L4,8C3.6,7.9,3.1,8.1,3,8.5C2.9,8.9,3.2,9.3,3.6,9.5l2.4,0.8c0.1,0,0.2,0,0.3,0c0.3,0,0.7-0.2,0.8-0.6\n C7,9.3,6.8,9,6.4,8.8z\"/>\n <path d=\"M35.7,19.8c-0.5-0.3-1.1-0.2-1.5,0.2L32,22.3l-2.2-2.2c-0.5-0.5-1.2-0.4-1.7,0c-0.4,0.5-0.4,1.2,0.1,1.6l2.2,2.2l-2.2,2.2\n c-0.4,0.4-0.5,1.1-0.1,1.6c0.2,0.3,0.6,0.4,0.9,0.4c0.3,0,0.6-0.1,0.8-0.3l2.2-2.2l2.3,2.3c0.2,0.2,0.5,0.3,0.8,0.3\n c0.3,0,0.6-0.1,0.9-0.4c0.4-0.5,0.3-1.2-0.1-1.6l-2.3-2.3l2.3-2.3C36.4,21.1,36.3,20.3,35.7,19.8z\"/>\n <path d=\"M10.2,29.4c1.1-0.2,1.9-1.1,2.1-2.1c0.4-1.9-1.3-3.5-3.2-3.2c-1.1,0.2-1.9,1.1-2.1,2.1C6.6,28.2,8.3,29.8,10.2,29.4z\n M8.5,27c-0.2-0.8,0.5-1.5,1.4-1.4c0.4,0.1,0.8,0.5,0.9,0.9c0.2,0.8-0.5,1.5-1.4,1.4C9,27.8,8.6,27.5,8.5,27z\"/>\n <path d=\"M36.8,7.2c-0.7-1.1-2.2-1.1-2.9,0c-0.3,0.5-0.3,1.1,0,1.6c0.3,0.6,0.9,0.8,1.5,0.8s1.1-0.3,1.5-0.8\n C37.1,8.3,37.1,7.7,36.8,7.2z M35.7,8.4c-0.2,0.2-0.5,0.2-0.7,0c-0.2-0.2-0.2-0.5,0-0.7c0.1-0.1,0.2-0.1,0.4-0.1\n c0.1,0,0.3,0,0.4,0.1C35.9,7.8,35.9,8.2,35.7,8.4z\"/>\n </g>\n </svg>`;\n }\n this.iconHtml = this.domSanitizer.bypassSecurityTrustHtml(svg);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NoDataComponent } from './no-data.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [NoDataComponent],\n\n exports: [NoDataComponent],\n})\nexport class NoDataModule {}\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[onlyNumber]',\r\n standalone: false,\r\n})\r\nexport class OnlyNumberDirective {\r\n constructor() { }\r\n\r\n @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\r\n if (event.key === '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n}","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { combineLatest, interval, merge, Subscription, timer } from 'rxjs';\r\nimport { map, mapTo, repeat, switchMap, takeUntil, tap } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[longPress]',\r\n standalone: false,\r\n})\r\nexport class LongPressDirective {\r\n constructor(private elRef: ElementRef) {\r\n merge(this.longPressCancel, this.longPressFinish).pipe(\r\n tap(() => {\r\n const ref = this.elRef.nativeElement as HTMLElement;\r\n ref.style.transform = 'scale(1)';\r\n })\r\n ).subscribe();\r\n }\r\n\r\n @Input('longPress')\r\n set duration(v: number | string) {\r\n this._duration = v ? Number(v) : 3000;\r\n }\r\n\r\n @Input('longPressDisabled')\r\n disabled = false;\r\n\r\n @Input('longPressInterval')\r\n set _continuousInterval(v: number) {\r\n this.isContinuous = !!v;\r\n this.continuousInterval = v;\r\n }\r\n\r\n private _duration = 3000;\r\n private isContinuous = false;\r\n private continuousInterval = 0;\r\n\r\n @Output() longPressStart = new EventEmitter<MouseEvent | TouchEvent>();\r\n @Output() longPressFinish = new EventEmitter<MouseEvent | TouchEvent>();\r\n @Output() longPressCancel = new EventEmitter<MouseEvent | TouchEvent>();\r\n\r\n private pressing = false;\r\n private longPressSubscription?: Subscription;\r\n\r\n @HostListener('mousedown', ['$event'])\r\n @HostListener('touchstart', ['$event'])\r\n onPress(event: MouseEvent | TouchEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const ref = this.elRef.nativeElement as HTMLElement;\r\n ref.style.transform = 'scale(0.95)';\r\n\r\n this.pressing = true;\r\n this.longPressStart.emit(event);\r\n\r\n let obs = timer(this._duration).pipe(map(() => event));\r\n if (this.isContinuous) {\r\n obs = obs.pipe(\r\n tap((event: MouseEvent | TouchEvent) => this.longPressFinish.emit(event)),\r\n switchMap((event) =>\r\n interval(this.continuousInterval)\r\n .pipe(\r\n map(() => event)\r\n )\r\n ),\r\n takeUntil(this.longPressCancel)\r\n );\r\n }\r\n\r\n this.longPressSubscription = obs.subscribe((event) => {\r\n if (this.pressing) {\r\n this.pressing = this.isContinuous;\r\n this.longPressFinish.emit(event);\r\n }\r\n });\r\n }\r\n\r\n @HostListener('mouseup', ['$event'])\r\n @HostListener('mouseleave', ['$event'])\r\n @HostListener('touchend', ['$event'])\r\n @HostListener('touchcancel', ['$event'])\r\n onRelease(event: MouseEvent | TouchEvent) {\r\n this.pressing = false;\r\n if (this.longPressSubscription) {\r\n this.longPressSubscription.unsubscribe();\r\n }\r\n this.longPressCancel.emit(event);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { OnlyNumberDirective } from './only-number.directive';\r\nimport { LongPressDirective } from './long-ress.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [OnlyNumberDirective, LongPressDirective],\r\n exports: [OnlyNumberDirective, LongPressDirective],\r\n})\r\nexport class DirectivesModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|