@bootkit/ng0 0.0.0-alpha.40 → 0.0.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/components/select/index.d.ts +2 -2
- package/components/sidenav/index.d.ts +1 -1
- package/components/tooltip/index.d.ts +20 -11
- package/components/vertical-menu/index.d.ts +13 -17
- package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-accordion.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-card.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-confirmation.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-dropdown.mjs +6 -6
- package/fesm2022/bootkit-ng0-components-dropdown.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-form-field.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-list.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-modal.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-nav.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-pagination.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-popover.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-select.mjs +4 -3
- package/fesm2022/bootkit-ng0-components-select.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-sidenav.mjs +3 -3
- package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-stepper.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-table.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-toast.mjs +2 -2
- package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-tooltip.mjs +35 -16
- package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +23 -36
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-date.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-file.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-form.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs +2 -2
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-routing.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-script.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-utils.mjs.map +1 -1
- package/fesm2022/bootkit-ng0.mjs.map +1 -1
- package/package.json +24 -24
- package/platform/browser/index.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/locale-definition.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/formatter.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/format.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinition } from \"./locale-definition\";\r\nimport { TranslatedValidationError } from \"./types\";\r\nimport { ObjectFormatter } from \"./formatter\";\r\n\r\n/** Locale */\r\nexport class Locale {\r\n constructor(public readonly definition: LocaleDefinition) {\r\n }\r\n\r\n /** \r\n * Returns the name of the locale\r\n * @returns The name of the locale\r\n */\r\n get name(): string {\r\n return this.definition.name;\r\n }\r\n\r\n /** \r\n * Translates a key in the dictionary\r\n * @param key The key to look up\r\n * @param fallback Optional fallback value if the key is not found\r\n * @returns The translated string or the fallbackValue if not found\r\n */\r\n translate(key: string, fallback?: string): string | undefined {\r\n return this.definition.dictionary?.[key] ?? fallback;\r\n }\r\n\r\n /**\r\n * Translates an enum value \r\n * @param enumName The name of the enum \r\n * @param enumValue The value of the enum to translate \r\n * @param fallback\r\n * @returns The translated string or the enum value itself if not found \r\n */\r\n\r\n translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined {\r\n let e = this.definition.enums?.[enumName];\r\n\r\n if (!e) {\r\n return fallback || enumValue?.toString();\r\n }\r\n\r\n if (enumValue === null) {\r\n return e['[null]'] || e['[empty]'];\r\n } else if (enumValue === undefined) {\r\n return e['[undefined]'] || e['[empty]'];\r\n } else if (enumValue === '') {\r\n return e['empty'];\r\n } else {\r\n return e[enumValue] || e['[?]'] || fallback || enumValue?.toString();\r\n }\r\n }\r\n\r\n /** \r\n * Translates a form validation error\r\n * @param errorKey The key of the error to translate\r\n * @param error The error object\r\n */\r\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\r\n const errors = this.definition?.form?.validation?.errors;\r\n\r\n if (!errors) {\r\n return fallbackMessage;\r\n }\r\n\r\n const translatorFunc = errors[errorKey] ?? errors['*'];\r\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\r\n }\r\n\r\n /** \r\n * Translates validation errors \r\n * @param errors Validation errors object\r\n * @returns Array of translated validation errors\r\n */\r\n translateErrors(errors: any): TranslatedValidationError[] {\r\n const result: TranslatedValidationError[] = [];\r\n for (const key in errors) {\r\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\r\n result.push({\r\n key: key,\r\n value: errors[key],\r\n text: this.translateError(key, errors[key])\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Translates the first error in the validation errors object \r\n * @param errors Validation errors object\r\n * @returns TranslatedValidationError or undefined if no errors\r\n */\r\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\r\n const keys = Object.keys(errors);\r\n if (keys.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const key = keys[0];\r\n const value = errors[key];\r\n return {\r\n key,\r\n value,\r\n text: this.translateError(key, value, fallbackMessage)\r\n };\r\n }\r\n\r\n /**\r\n * Clones and extends this object and returns a new Locale (without modifying this object).\r\n */\r\n extend(definition?: Omit<LocaleDefinition, 'name' | 'rtl'>): Locale {\r\n return new Locale({ ...this.definition, ...definition });\r\n }\r\n\r\n /**\r\n * \r\n * @param date Date string or timestamp\r\n * @returns Formatted date string based on the locale \r\n */\r\n formatDate(date: Date | string | number, format?: string): string {\r\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\r\n }\r\n\r\n format(object: any, formatterName: string, ...params: any[]): string {\r\n let formatter = this.definition.formatters?.[formatterName];\r\n\r\n if (!formatter) {\r\n throw Error(`The formatter \"${formatterName}\" is not defined in locale ${this.definition.name}`);\r\n }\r\n\r\n let formatterType = typeof formatter;\r\n if (formatterType === 'function') {\r\n return (formatter as ObjectFormatter)(object, ...params);\r\n } else if (Array.isArray(formatter)) {\r\n return formatter[+object];\r\n } else if (formatterType == 'object' && formatter != null) {\r\n return (formatter as any)[object] || '';\r\n } else {\r\n throw Error(`Invalid locale formatter: ${formatterName}`);\r\n }\r\n }\r\n}\r\n","import { ObjectFormatter } from \"./formatter\";\r\n\r\n/** Locale dictionary */\r\nexport type LocaleDictionary = { [key: string]: string; };\r\nexport type LocaleEnums = { [enumName: string]: { [enumValue: string]: string } };\r\n\r\n/** Locale Error Translator */\r\nexport type LocaleValidationErrorTranslator = (error: any) => string;\r\n\r\n\r\n/** Locale validation error translator functions */\r\nexport type LocaleValidationErrorTranslators = {\r\n [key: string]: LocaleValidationErrorTranslator;\r\n};\r\n\r\n/**\r\n * A function to format the paging info of a table.\r\n * \r\n */\r\nexport type TableComponentPagingFormatter = (info: {\r\n /**\r\n * The first record in the current page.\r\n */\r\n firstRecord: number,\r\n\r\n /**\r\n * The last record in the current page.\r\n */\r\n lastRecord: number,\r\n\r\n /**\r\n * The total number of records.\r\n */\r\n totalRecords?: number,\r\n\r\n /**\r\n * The current page index.\r\n */\r\n currentPage: number\r\n}) => string;\r\n\r\n/** \r\n * Locale definition\r\n */\r\nexport interface LocaleDefinition {\r\n /** Locale name */\r\n readonly name: string;\r\n\r\n /** Does this locale belongs to a RTL language */\r\n readonly rtl?: boolean;\r\n\r\n /** Locale dictionary */\r\n dictionary?: LocaleDictionary;\r\n enums?: LocaleEnums,\r\n form?: {\r\n validation?: {\r\n /** Form validation error translators. */\r\n errors?: LocaleValidationErrorTranslators\r\n }\r\n },\r\n data?: {\r\n logicalOperators?: {\r\n [operator: string]: string\r\n }\r\n },\r\n components?: {\r\n table?: {\r\n /**\r\n * No records found message.\r\n */\r\n noRecords?: string;\r\n\r\n /** \r\n * Error message displayed when loading data fails. \r\n */\r\n loadError?: string;\r\n\r\n /**\r\n * A format function to format the paging info.\r\n */\r\n pagingInfo?: TableComponentPagingFormatter;\r\n },\r\n select?: {\r\n placeholder?: string;\r\n }\r\n },\r\n\r\n formatters?: {\r\n // boolean?: {\r\n // [booleanKind: string]: string[] // [false, true]\r\n // },\r\n // enum?: {\r\n // [enumName: string]: { [enumValue: string]: string }\r\n // }\r\n // custom?: {\r\n [formatterName: string]: ObjectFormatter | string[] | {\r\n [value: string]: string\r\n }\r\n // },\r\n // date?: {\r\n // calendars?: {\r\n // [calendar: string]: {\r\n // days: string[],\r\n // daysShort: string[],\r\n // months: string[],\r\n // monthsShort: string[],\r\n // }\r\n // }\r\n // };\r\n // }\r\n }\r\n};\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Locale } from './locale';\r\nimport { LocaleChangeEvent } from './types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizationService {\r\n private _locales: Locale[] = [];\r\n private _activeLocale?: Locale;\r\n private _changeSubject = new Subject<LocaleChangeEvent>();\r\n readonly change = this._changeSubject.asObservable();\r\n\r\n constructor() {\r\n }\r\n\r\n /** \r\n * Adds a Locale \r\n */\r\n add(locale: Locale): void;\r\n /** Adds an array of Locales to this LocaleProvider */\r\n add(locales: Locale[]): void;\r\n add(l: any): void {\r\n if (l instanceof Locale) {\r\n this._locales.push(l);\r\n } else if (Array.isArray(l)) {\r\n l.forEach(x => this.add(x));\r\n } else {\r\n throw Error('Invalid locale');\r\n }\r\n\r\n if (this._locales.length == 1) {\r\n this._activeLocale = this._locales[0];\r\n }\r\n }\r\n\r\n /** Changes the active locale */\r\n set(localeName: string): void {\r\n const locale = this._locales.find(x => x.name === localeName);\r\n if (locale) {\r\n this._changeSubject.next({ old: this._activeLocale, new: locale });\r\n this._activeLocale = locale;\r\n return;\r\n }\r\n\r\n throw Error('Locale not found.');\r\n }\r\n\r\n /** Gets the active locale */\r\n get(): Locale | undefined {\r\n return this._activeLocale;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n\r\n/**\r\n * Pipe to translate a dictionary key into a localized string.\r\n * It uses the LocalizationService to fetch the translation.\r\n * If the translation is not found, it returns the fallback string if provided.\r\n */\r\n@Pipe({\r\n name: 'ng0Translate',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(dictionaryKey: string, fallback?: string) {\r\n return this._ls.get()?.translate(dictionaryKey, fallback) || dictionaryKey;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0TranslateEnum',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslateEnumPipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n /**\r\n * \r\n * @param enumValue \r\n * @param enumName \r\n * @param nullValueKey \r\n * @param returnEnumAsFallback\r\n * @param fallbackKey \r\n * @returns \r\n */\r\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\r\n return this._ls.get()?.translateEnum(enumName, enumValue, fallback);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0TranslateBool',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslateBooleanPipe implements PipeTransform {\r\n\r\n constructor(private localeProvider: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\r\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { EnvironmentInjector, inject, runInInjectionContext } from \"@angular/core\";\r\nimport { Locale } from \"./locale\";\r\nimport { LocalizationService } from \"./localization.service\";\r\n\r\n/**\r\n * Object formatter function type.\r\n * @param obj The object to format.\r\n * @param params Additional parameters for formatting.\r\n * @returns The formatted value.\r\n */\r\nexport type ObjectFormatter = (obj: any, ...params: any[]) => any;\r\n\r\n/**\r\n * Object formatter-like types. \r\n */\r\nexport type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;\r\n\r\n/**\r\n * Default object formatter function.\r\n * @param value The item to format.\r\n * @returns The formatted string.\r\n */\r\nexport function defaultFormatter(obj: any): string {\r\n return obj?.toString() || '';\r\n}\r\n\r\n/**\r\n * Creates a field formatter that retrieves the value of a specified field from an object.\r\n * @param field The field name to retrieve.\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createFieldFormatter(field: string): ObjectFormatter {\r\n return (obj: any) => obj?.[field];\r\n}\r\n\r\n/**\r\n * Creates an index formatter that retrieves the value at a specified index from an array.\r\n * @param index The index to retrieve (number or boolean).\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createIndexFormatter(index: number | boolean): ObjectFormatter {\r\n return (obj: any) => {\r\n if (Array.isArray(obj)) {\r\n return obj[+index]; // use + to cast boolean values to numbers\r\n }\r\n\r\n throw Error('Object is not an array');\r\n }\r\n}\r\n\r\n/**\r\n * Creates a number formatter.\r\n * @param minimumIntegerDigits \r\n * @param minimumFractionDigits \r\n * @param maximumFractionDigits \r\n * @param useGrouping \r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createNumberFormatter(\r\n minimumIntegerDigits?: number,\r\n minimumFractionDigits?: number,\r\n maximumFractionDigits?: number,\r\n useGrouping = true): ObjectFormatter {\r\n let locale = inject(LocalizationService, { optional: true })?.get();\r\n const localeName = locale?.definition.name || 'en-US';\r\n\r\n const f = new Intl.NumberFormat(localeName, {\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n useGrouping,\r\n })\r\n\r\n return (n: number) => Number.isFinite(n) ? f.format(n) : '';\r\n}\r\n\r\n/**\r\n * Creates a currency formatter.\r\n * @param minFractions \r\n * @param maxFractions \r\n * @returns \r\n */\r\nexport function createCurrencyFormatter(minFractions = 1, maxFractions = 2): ObjectFormatter {\r\n return (n: number, minFractions, maxFractions) => Number.isFinite(n) ? n.toString() : '';\r\n}\r\n\r\n/**\r\n * Creates a date formatter.\r\n */\r\nexport function createDateFormatter(\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\r\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\r\n zone?: string[], // zone[0]: name, zone[1]: display ('long' | 'short' | 'shortOffset' | 'longOffset' | 'narrowOffset' | 'longGeneric' | 'shortGeneric')\r\n calendar?: string\r\n): ObjectFormatter;\r\nexport function createDateFormatter(options?: Intl.DateTimeFormatOptions): ObjectFormatter;\r\nexport function createDateFormatter(options?: any): ObjectFormatter {\r\n let intlOptions: Intl.DateTimeFormatOptions;\r\n\r\n if (options && (typeof options === 'object')) {\r\n intlOptions = options;\r\n } else {\r\n intlOptions = {\r\n dateStyle: arguments[0],\r\n timeStyle: arguments[1],\r\n timeZone: arguments[2]?.[0],\r\n timeZoneName: arguments[2]?.[1],\r\n calendar: arguments[3]\r\n }\r\n }\r\n\r\n const locale = inject(LocalizationService, { optional: true })?.get();\r\n let intlFormatter: Intl.DateTimeFormat;\r\n\r\n try {\r\n intlFormatter = new Intl.DateTimeFormat(locale?.name, intlOptions as Intl.DateTimeFormatOptions);\r\n return (d: string | number | Date) => intlFormatter.format(new Date(d));\r\n } catch (err) {\r\n console.warn('Invalid date format options:', intlOptions, err);\r\n // Return a fallback formatter\r\n return (d: string | number | Date) => new Date(d).toLocaleString()\r\n }\r\n}\r\n\r\n/**\r\n * Creates a locale-based formatter.\r\n * @param locale The Locale object.\r\n * @param formatterName The format string in the form of \"formatterName:param1:param2:...\"\r\n * @returns A ValueFormatterFunction\r\n * @private\r\n */\r\nexport function createLocaleFormatter(formatterName: string): ObjectFormatter {\r\n let locale = inject(LocalizationService, { optional: true })?.get();\r\n\r\n if (locale == null) {\r\n throw Error('For using locale formatters, provide a Locale object.')\r\n }\r\n\r\n let formatter = locale.definition.formatters?.[formatterName];\r\n let formatterType = typeof formatter;\r\n\r\n if (!formatter) {\r\n console.warn(`The formatter \"${formatterName}\" is not defined in locale ${locale.definition.name}`);\r\n return defaultFormatter;\r\n }\r\n\r\n if (formatterType === 'function') {\r\n return formatter as ObjectFormatter;\r\n } else if (Array.isArray(formatter)) {\r\n return (index: number | boolean) => formatter[+index];\r\n } else if (formatterType == 'object' && formatter != null) {\r\n return (value: string) => (formatter as any)[value] || '';\r\n } else {\r\n throw Error(`Invalid locale formatter: ${formatterName}`);\r\n }\r\n}\r\n\r\n/**\r\n * Creates a composite formatter that applies multiple formatters in sequence. \r\n * @param formatters The list of ObjectFormatterLike values to compose.\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createCompositeFormatter(...formatters: ObjectFormatterLike[]): ObjectFormatter {\r\n const formattersFuncs = formatters.map(item => createObjectFormatter(item as any));\r\n return (obj: any) => formattersFuncs.reduce(\r\n (previous, current, index) => index == 0 ? current(obj) : current(previous)\r\n );\r\n}\r\n\r\n/**\r\n * Creates an ObjectFormatter from various ObjectFormatterLike types.\r\n * @param formatter The ObjectFormatterLike value to convert. \r\n * @param locale Optional locale object for locale-based formatting.\r\n * @param params Additional parameters for the formatter.\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createObjectFormatter(formatter: ObjectFormatterLike, ...params: any[]): ObjectFormatter {\r\n switch (typeof formatter) {\r\n case 'function':\r\n return formatter.bind(null, ...params);\r\n case 'number':\r\n return createIndexFormatter(formatter);\r\n case 'string':\r\n switch (formatter[0]) {\r\n case '#':\r\n return createNumberFormatter(...params);\r\n case '$':\r\n return createCurrencyFormatter(...params);\r\n case '@':\r\n return createDateFormatter(...params);\r\n case '*':\r\n return createLocaleFormatter(formatter.substring(1));\r\n default:\r\n return createFieldFormatter(formatter);\r\n }\r\n case 'object':\r\n if (Array.isArray(formatter) && formatter.length > 0) {\r\n if (formatter[0] == 'C') {\r\n return createCompositeFormatter(formatter.slice(1))\r\n } else {\r\n return createObjectFormatter(formatter[0] as string, ...formatter.slice(1));\r\n }\r\n }\r\n break;\r\n }\r\n\r\n throw Error('invalid formatter', { cause: formatter });\r\n}\r\n\r\n/**\r\n * Creates a transform function that converts a ObjectFormatterLike value into a ObjectFormatter.\r\n * @param injector The EnvironmentInjector to use for dependency injection.\r\n * @returns A function that takes a ObjectFormatterLike and returns a ObjectFormatter.\r\n */\r\nexport function objectFormatterAttribute(injector: EnvironmentInjector): ((v: ObjectFormatterLike) => ObjectFormatter) {\r\n return (x: ObjectFormatterLike) => runInInjectionContext(injector, createObjectFormatter.bind(null, x));\r\n};\r\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\r\nimport { createDateFormatter } from './formatter';\r\n\r\n@Pipe({\r\n name: 'ng0Date',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class DatePipe implements PipeTransform {\r\n private _injector = inject(EnvironmentInjector);\r\n\r\n transform(value: Date | string | number,\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\r\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\r\n zone?: string[],\r\n calendar?: string): string;\r\n transform(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\r\n transform(value: Date | string | number, ...options: any[]): string {\r\n const formatter = runInInjectionContext(this._injector, createDateFormatter.bind(null, ...options));\r\n return formatter(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0Localize',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(dictionaryKey: string) {\r\n return this._ls.get()?.translate(dictionaryKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeEnum',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeEnumPipe implements PipeTransform {\r\n private _recompute = true;\r\n private _value?: string;\r\n\r\n constructor(private _ls: LocalizationService) {\r\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\r\n }\r\n\r\n /**\r\n * \r\n * @param enumValue \r\n * @param enumName \r\n * @param nullValueKey \r\n * @param returnEnumAsFallback\r\n * @param fallbackKey \r\n * @returns \r\n */\r\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\r\n if (this._recompute) {\r\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, fallback);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeBool',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeBooleanPipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey = 'true', trueKey: 'false') {\r\n return this._ls.get()?.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Locale } from './locale';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeDate',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeDatePipe implements PipeTransform {\r\n private _value?: string;\r\n private _recompute = true;\r\n\r\n constructor(private _ls: LocalizationService) {\r\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\r\n }\r\n\r\n transform(value: number | string, format?: string) {\r\n if (this._recompute) {\r\n this._value = this._ls.get()?.formatDate(value, format);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\r\nimport { createObjectFormatter, ObjectFormatterLike } from './formatter';\r\n\r\n/**\r\n * Format pipe to format objects using various formatter types.\r\n */\r\n@Pipe({\r\n name: 'ng0Format',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class FormatPipe implements PipeTransform {\r\n private _injector = inject(EnvironmentInjector);\r\n \r\n transform(obj: any, formatter: ObjectFormatterLike, ...params: any[]): any {\r\n const frmtFunc = runInInjectionContext(this._injector, createObjectFormatter.bind(null, formatter, ...params));\r\n return frmtFunc(obj);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslatePipe } from './translate.pipe';\r\nimport { TranslateEnumPipe } from './translate-enum.pipe';\r\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\r\nimport { DatePipe } from './date.pipe';\r\nimport { LocalizePipe } from './localize.pipe';\r\nimport { LocalizeEnumPipe } from './localize-enum.pipe';\r\nimport { LocalizeBooleanPipe } from './localize-boolean-pipe';\r\nimport { LocalizeDatePipe } from './localize-date.pipe';\r\nimport { FormatPipe } from './format.pipe';\r\n\r\nconst Declares = [\r\n // Pure pipes\r\n TranslatePipe,\r\n TranslateEnumPipe,\r\n TranslateBooleanPipe,\r\n DatePipe,\r\n FormatPipe,\r\n\r\n // Impure pipes\r\n LocalizePipe,\r\n LocalizeEnumPipe,\r\n LocalizeBooleanPipe,\r\n LocalizeDatePipe\r\n];\r\n\r\n@NgModule({\r\n imports: Declares,\r\n exports: Declares\r\n})\r\nexport class LocalizationModule {\r\n}\r\n\r\n","import { InjectionToken } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\n\r\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\r\n\r\nexport interface TranslatedValidationError {\r\n /** Error key */\r\n key: string;\r\n \r\n /** Error object */\r\n value: any;\r\n \r\n /** localized error text */\r\n text?: string;\r\n }\r\n \r\n export interface LocaleChangeEvent {\r\n old?: Locale;\r\n new: Locale;\r\n }\r\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/locale-definition.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/formatter.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/format.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinition } from \"./locale-definition\";\nimport { TranslatedValidationError } from \"./types\";\nimport { ObjectFormatter } from \"./formatter\";\n\n/** Locale */\nexport class Locale {\n constructor(public readonly definition: LocaleDefinition) {\n }\n\n /** \n * Returns the name of the locale\n * @returns The name of the locale\n */\n get name(): string {\n return this.definition.name;\n }\n\n /** \n * Translates a key in the dictionary\n * @param key The key to look up\n * @param fallback Optional fallback value if the key is not found\n * @returns The translated string or the fallbackValue if not found\n */\n translate(key: string, fallback?: string): string | undefined {\n return this.definition.dictionary?.[key] ?? fallback;\n }\n\n /**\n * Translates an enum value \n * @param enumName The name of the enum \n * @param enumValue The value of the enum to translate \n * @param fallback\n * @returns The translated string or the enum value itself if not found \n */\n\n translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined {\n let e = this.definition.enums?.[enumName];\n\n if (!e) {\n return fallback || enumValue?.toString();\n }\n\n if (enumValue === null) {\n return e['[null]'] || e['[empty]'];\n } else if (enumValue === undefined) {\n return e['[undefined]'] || e['[empty]'];\n } else if (enumValue === '') {\n return e['empty'];\n } else {\n return e[enumValue] || e['[?]'] || fallback || enumValue?.toString();\n }\n }\n\n /** \n * Translates a form validation error\n * @param errorKey The key of the error to translate\n * @param error The error object\n */\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\n const errors = this.definition?.form?.validation?.errors;\n\n if (!errors) {\n return fallbackMessage;\n }\n\n const translatorFunc = errors[errorKey] ?? errors['*'];\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\n }\n\n /** \n * Translates validation errors \n * @param errors Validation errors object\n * @returns Array of translated validation errors\n */\n translateErrors(errors: any): TranslatedValidationError[] {\n const result: TranslatedValidationError[] = [];\n for (const key in errors) {\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\n result.push({\n key: key,\n value: errors[key],\n text: this.translateError(key, errors[key])\n });\n }\n }\n\n return result;\n }\n\n /** \n * Translates the first error in the validation errors object \n * @param errors Validation errors object\n * @returns TranslatedValidationError or undefined if no errors\n */\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\n const keys = Object.keys(errors);\n if (keys.length === 0) {\n return undefined;\n }\n\n const key = keys[0];\n const value = errors[key];\n return {\n key,\n value,\n text: this.translateError(key, value, fallbackMessage)\n };\n }\n\n /**\n * Clones and extends this object and returns a new Locale (without modifying this object).\n */\n extend(definition?: Omit<LocaleDefinition, 'name' | 'rtl'>): Locale {\n return new Locale({ ...this.definition, ...definition });\n }\n\n /**\n * \n * @param date Date string or timestamp\n * @returns Formatted date string based on the locale \n */\n formatDate(date: Date | string | number, format?: string): string {\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\n }\n\n format(object: any, formatterName: string, ...params: any[]): string {\n let formatter = this.definition.formatters?.[formatterName];\n\n if (!formatter) {\n throw Error(`The formatter \"${formatterName}\" is not defined in locale ${this.definition.name}`);\n }\n\n let formatterType = typeof formatter;\n if (formatterType === 'function') {\n return (formatter as ObjectFormatter)(object, ...params);\n } else if (Array.isArray(formatter)) {\n return formatter[+object];\n } else if (formatterType == 'object' && formatter != null) {\n return (formatter as any)[object] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n }\n}\n","import { ObjectFormatter } from \"./formatter\";\n\n/** Locale dictionary */\nexport type LocaleDictionary = { [key: string]: string; };\nexport type LocaleEnums = { [enumName: string]: { [enumValue: string]: string } };\n\n/** Locale Error Translator */\nexport type LocaleValidationErrorTranslator = (error: any) => string;\n\n\n/** Locale validation error translator functions */\nexport type LocaleValidationErrorTranslators = {\n [key: string]: LocaleValidationErrorTranslator;\n};\n\n/**\n * A function to format the paging info of a table.\n * \n */\nexport type TableComponentPagingFormatter = (info: {\n /**\n * The first record in the current page.\n */\n firstRecord: number,\n\n /**\n * The last record in the current page.\n */\n lastRecord: number,\n\n /**\n * The total number of records.\n */\n totalRecords?: number,\n\n /**\n * The current page index.\n */\n currentPage: number\n}) => string;\n\n/** \n * Locale definition\n */\nexport interface LocaleDefinition {\n /** Locale name */\n readonly name: string;\n\n /** Does this locale belongs to a RTL language */\n readonly rtl?: boolean;\n\n /** Locale dictionary */\n dictionary?: LocaleDictionary;\n enums?: LocaleEnums,\n form?: {\n validation?: {\n /** Form validation error translators. */\n errors?: LocaleValidationErrorTranslators\n }\n },\n data?: {\n logicalOperators?: {\n [operator: string]: string\n }\n },\n components?: {\n table?: {\n /**\n * No records found message.\n */\n noRecords?: string;\n\n /** \n * Error message displayed when loading data fails. \n */\n loadError?: string;\n\n /**\n * A format function to format the paging info.\n */\n pagingInfo?: TableComponentPagingFormatter;\n },\n select?: {\n placeholder?: string;\n }\n },\n\n formatters?: {\n // boolean?: {\n // [booleanKind: string]: string[] // [false, true]\n // },\n // enum?: {\n // [enumName: string]: { [enumValue: string]: string }\n // }\n // custom?: {\n [formatterName: string]: ObjectFormatter | string[] | {\n [value: string]: string\n }\n // },\n // date?: {\n // calendars?: {\n // [calendar: string]: {\n // days: string[],\n // daysShort: string[],\n // months: string[],\n // monthsShort: string[],\n // }\n // }\n // };\n // }\n }\n};\n\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Locale } from './locale';\nimport { LocaleChangeEvent } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService {\n private _locales: Locale[] = [];\n private _activeLocale?: Locale;\n private _changeSubject = new Subject<LocaleChangeEvent>();\n readonly change = this._changeSubject.asObservable();\n\n constructor() {\n }\n\n /** \n * Adds a Locale \n */\n add(locale: Locale): void;\n /** Adds an array of Locales to this LocaleProvider */\n add(locales: Locale[]): void;\n add(l: any): void {\n if (l instanceof Locale) {\n this._locales.push(l);\n } else if (Array.isArray(l)) {\n l.forEach(x => this.add(x));\n } else {\n throw Error('Invalid locale');\n }\n\n if (this._locales.length == 1) {\n this._activeLocale = this._locales[0];\n }\n }\n\n /** Changes the active locale */\n set(localeName: string): void {\n const locale = this._locales.find(x => x.name === localeName);\n if (locale) {\n this._changeSubject.next({ old: this._activeLocale, new: locale });\n this._activeLocale = locale;\n return;\n }\n\n throw Error('Locale not found.');\n }\n\n /** Gets the active locale */\n get(): Locale | undefined {\n return this._activeLocale;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n\n/**\n * Pipe to translate a dictionary key into a localized string.\n * It uses the LocalizationService to fetch the translation.\n * If the translation is not found, it returns the fallback string if provided.\n */\n@Pipe({\n name: 'ng0Translate',\n standalone: true,\n pure: true\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string, fallback?: string) {\n return this._ls.get()?.translate(dictionaryKey, fallback) || dictionaryKey;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateEnum',\n standalone: true,\n pure: true\n})\nexport class TranslateEnumPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n return this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateBool',\n standalone: true,\n pure: true\n})\nexport class TranslateBooleanPipe implements PipeTransform {\n\n constructor(private localeProvider: LocalizationService) {\n }\n\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { EnvironmentInjector, inject, runInInjectionContext } from \"@angular/core\";\nimport { Locale } from \"./locale\";\nimport { LocalizationService } from \"./localization.service\";\n\n/**\n * Object formatter function type.\n * @param obj The object to format.\n * @param params Additional parameters for formatting.\n * @returns The formatted value.\n */\nexport type ObjectFormatter = (obj: any, ...params: any[]) => any;\n\n/**\n * Object formatter-like types. \n */\nexport type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;\n\n/**\n * Default object formatter function.\n * @param value The item to format.\n * @returns The formatted string.\n */\nexport function defaultFormatter(obj: any): string {\n return obj?.toString() || '';\n}\n\n/**\n * Creates a field formatter that retrieves the value of a specified field from an object.\n * @param field The field name to retrieve.\n * @returns An ObjectFormatter function.\n */\nexport function createFieldFormatter(field: string): ObjectFormatter {\n return (obj: any) => obj?.[field];\n}\n\n/**\n * Creates an index formatter that retrieves the value at a specified index from an array.\n * @param index The index to retrieve (number or boolean).\n * @returns An ObjectFormatter function.\n */\nexport function createIndexFormatter(index: number | boolean): ObjectFormatter {\n return (obj: any) => {\n if (Array.isArray(obj)) {\n return obj[+index]; // use + to cast boolean values to numbers\n }\n\n throw Error('Object is not an array');\n }\n}\n\n/**\n * Creates a number formatter.\n * @param minimumIntegerDigits \n * @param minimumFractionDigits \n * @param maximumFractionDigits \n * @param useGrouping \n * @returns An ObjectFormatter function.\n */\nexport function createNumberFormatter(\n minimumIntegerDigits?: number,\n minimumFractionDigits?: number,\n maximumFractionDigits?: number,\n useGrouping = true): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n const localeName = locale?.definition.name || 'en-US';\n\n const f = new Intl.NumberFormat(localeName, {\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n })\n\n return (n: number) => Number.isFinite(n) ? f.format(n) : '';\n}\n\n/**\n * Creates a currency formatter.\n * @param minFractions \n * @param maxFractions \n * @returns \n */\nexport function createCurrencyFormatter(minFractions = 1, maxFractions = 2): ObjectFormatter {\n return (n: number, minFractions, maxFractions) => Number.isFinite(n) ? n.toString() : '';\n}\n\n/**\n * Creates a date formatter.\n */\nexport function createDateFormatter(\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[], // zone[0]: name, zone[1]: display ('long' | 'short' | 'shortOffset' | 'longOffset' | 'narrowOffset' | 'longGeneric' | 'shortGeneric')\n calendar?: string\n): ObjectFormatter;\nexport function createDateFormatter(options?: Intl.DateTimeFormatOptions): ObjectFormatter;\nexport function createDateFormatter(options?: any): ObjectFormatter {\n let intlOptions: Intl.DateTimeFormatOptions;\n\n if (options && (typeof options === 'object')) {\n intlOptions = options;\n } else {\n intlOptions = {\n dateStyle: arguments[0],\n timeStyle: arguments[1],\n timeZone: arguments[2]?.[0],\n timeZoneName: arguments[2]?.[1],\n calendar: arguments[3]\n }\n }\n\n const locale = inject(LocalizationService, { optional: true })?.get();\n let intlFormatter: Intl.DateTimeFormat;\n\n try {\n intlFormatter = new Intl.DateTimeFormat(locale?.name, intlOptions as Intl.DateTimeFormatOptions);\n return (d: string | number | Date) => intlFormatter.format(new Date(d));\n } catch (err) {\n console.warn('Invalid date format options:', intlOptions, err);\n // Return a fallback formatter\n return (d: string | number | Date) => new Date(d).toLocaleString()\n }\n}\n\n/**\n * Creates a locale-based formatter.\n * @param locale The Locale object.\n * @param formatterName The format string in the form of \"formatterName:param1:param2:...\"\n * @returns A ValueFormatterFunction\n * @private\n */\nexport function createLocaleFormatter(formatterName: string): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n\n if (locale == null) {\n throw Error('For using locale formatters, provide a Locale object.')\n }\n\n let formatter = locale.definition.formatters?.[formatterName];\n let formatterType = typeof formatter;\n\n if (!formatter) {\n console.warn(`The formatter \"${formatterName}\" is not defined in locale ${locale.definition.name}`);\n return defaultFormatter;\n }\n\n if (formatterType === 'function') {\n return formatter as ObjectFormatter;\n } else if (Array.isArray(formatter)) {\n return (index: number | boolean) => formatter[+index];\n } else if (formatterType == 'object' && formatter != null) {\n return (value: string) => (formatter as any)[value] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n}\n\n/**\n * Creates a composite formatter that applies multiple formatters in sequence. \n * @param formatters The list of ObjectFormatterLike values to compose.\n * @returns An ObjectFormatter function.\n */\nexport function createCompositeFormatter(...formatters: ObjectFormatterLike[]): ObjectFormatter {\n const formattersFuncs = formatters.map(item => createObjectFormatter(item as any));\n return (obj: any) => formattersFuncs.reduce(\n (previous, current, index) => index == 0 ? current(obj) : current(previous)\n );\n}\n\n/**\n * Creates an ObjectFormatter from various ObjectFormatterLike types.\n * @param formatter The ObjectFormatterLike value to convert. \n * @param locale Optional locale object for locale-based formatting.\n * @param params Additional parameters for the formatter.\n * @returns An ObjectFormatter function.\n */\nexport function createObjectFormatter(formatter: ObjectFormatterLike, ...params: any[]): ObjectFormatter {\n switch (typeof formatter) {\n case 'function':\n return formatter.bind(null, ...params);\n case 'number':\n return createIndexFormatter(formatter);\n case 'string':\n switch (formatter[0]) {\n case '#':\n return createNumberFormatter(...params);\n case '$':\n return createCurrencyFormatter(...params);\n case '@':\n return createDateFormatter(...params);\n case '*':\n return createLocaleFormatter(formatter.substring(1));\n default:\n return createFieldFormatter(formatter);\n }\n case 'object':\n if (Array.isArray(formatter) && formatter.length > 0) {\n if (formatter[0] == 'C') {\n return createCompositeFormatter(formatter.slice(1))\n } else {\n return createObjectFormatter(formatter[0] as string, ...formatter.slice(1));\n }\n }\n break;\n }\n\n throw Error('invalid formatter', { cause: formatter });\n}\n\n/**\n * Creates a transform function that converts a ObjectFormatterLike value into a ObjectFormatter.\n * @param injector The EnvironmentInjector to use for dependency injection.\n * @returns A function that takes a ObjectFormatterLike and returns a ObjectFormatter.\n */\nexport function objectFormatterAttribute(injector: EnvironmentInjector): ((v: ObjectFormatterLike) => ObjectFormatter) {\n return (x: ObjectFormatterLike) => runInInjectionContext(injector, createObjectFormatter.bind(null, x));\n};\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createDateFormatter } from './formatter';\n\n@Pipe({\n name: 'ng0Date',\n standalone: true,\n pure: true\n})\nexport class DatePipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n\n transform(value: Date | string | number,\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[],\n calendar?: string): string;\n transform(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\n transform(value: Date | string | number, ...options: any[]): string {\n const formatter = runInInjectionContext(this._injector, createDateFormatter.bind(null, ...options));\n return formatter(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0Localize',\n standalone: true,\n pure: false\n})\nexport class LocalizePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string) {\n return this._ls.get()?.translate(dictionaryKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeEnum',\n standalone: true,\n pure: false\n})\nexport class LocalizeEnumPipe implements PipeTransform {\n private _recompute = true;\n private _value?: string;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n if (this._recompute) {\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0LocalizeBool',\n standalone: true,\n pure: false\n})\nexport class LocalizeBooleanPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(value: any, falseKey = 'true', trueKey: 'false') {\n return this._ls.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Locale } from './locale';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeDate',\n standalone: true,\n pure: false\n})\nexport class LocalizeDatePipe implements PipeTransform {\n private _value?: string;\n private _recompute = true;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n transform(value: number | string, format?: string) {\n if (this._recompute) {\n this._value = this._ls.get()?.formatDate(value, format);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createObjectFormatter, ObjectFormatterLike } from './formatter';\n\n/**\n * Format pipe to format objects using various formatter types.\n */\n@Pipe({\n name: 'ng0Format',\n standalone: true,\n pure: true\n})\nexport class FormatPipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n \n transform(obj: any, formatter: ObjectFormatterLike, ...params: any[]): any {\n const frmtFunc = runInInjectionContext(this._injector, createObjectFormatter.bind(null, formatter, ...params));\n return frmtFunc(obj);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslatePipe } from './translate.pipe';\nimport { TranslateEnumPipe } from './translate-enum.pipe';\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\nimport { DatePipe } from './date.pipe';\nimport { LocalizePipe } from './localize.pipe';\nimport { LocalizeEnumPipe } from './localize-enum.pipe';\nimport { LocalizeBooleanPipe } from './localize-boolean-pipe';\nimport { LocalizeDatePipe } from './localize-date.pipe';\nimport { FormatPipe } from './format.pipe';\n\nconst Declares = [\n // Pure pipes\n TranslatePipe,\n TranslateEnumPipe,\n TranslateBooleanPipe,\n DatePipe,\n FormatPipe,\n\n // Impure pipes\n LocalizePipe,\n LocalizeEnumPipe,\n LocalizeBooleanPipe,\n LocalizeDatePipe\n];\n\n@NgModule({\n imports: Declares,\n exports: Declares\n})\nexport class LocalizationModule {\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { Locale } from './locale';\n\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\n\nexport interface TranslatedValidationError {\n /** Error key */\n key: string;\n \n /** Error object */\n value: any;\n \n /** localized error text */\n text?: string;\n }\n \n export interface LocaleChangeEvent {\n old?: Locale;\n new: Locale;\n }\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-platform-browser.mjs","sources":["../../../projects/ng0/platform/browser/clipboard/clipboard.service.ts","../../../projects/ng0/platform/browser/clipboard/clipboard-copy.directive.ts","../../../projects/ng0/platform/browser/intersection-observer.directive.ts","../../../projects/ng0/platform/browser/bootkit-ng0-platform-browser.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ClipboardService {\r\n private _writeSubject = new Subject<any>;\r\n public readonly write = this._writeSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n public writeText(text: string) {\r\n window.navigator.clipboard.writeText(text);\r\n this._writeSubject.next(text);\r\n }\r\n}\r\n","import { Directive, HostListener, input } from '@angular/core';\r\nimport { ClipboardService } from './clipboard.service';\r\n\r\n@Directive({\r\n selector: '[ng0-clipboard-copy]',\r\n standalone: true\r\n})\r\nexport class ClipboardCopyDirective {\r\n public value = input<string>(undefined, {alias: 'ng0-clipboard-copy'})\r\n\r\n constructor(private clipboardService: ClipboardService) {\r\n }\r\n\r\n \r\n\r\n @HostListener('click') private _onHostClick() {\r\n this.clipboardService.writeText(this.value()!);\r\n }\r\n}\r\n","import { ElementRef, input, OnInit, PLATFORM_ID, Directive, OnDestroy, Output, EventEmitter, inject, Renderer2, booleanAttribute } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\n\r\n/**\r\n * Directive that observes the intersection of an element with the viewport and optionally applies CSS classes when the element enters or leaves the viewport.\r\n * It uses the Intersection Observer API to monitor visibility changes.\r\n * It can be used to trigger animate-on-scroll (AOS) animations, lazy loading, or other actions based on element visibility.\r\n */\r\n@Directive({\r\n selector: '[ng0IntersectionObserver]',\r\n exportAs: 'ng0IntersectionObserver',\r\n standalone: true\r\n})\r\nexport class IntersectionObserverDirective implements OnInit, OnDestroy {\r\n private readonly _platformId = inject(PLATFORM_ID);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _renderer = inject(Renderer2);\r\n private _entered?: boolean;\r\n private _observer?: IntersectionObserver;\r\n private _addClass(c: string) { this._renderer.addClass(this._elementRef.nativeElement, c) };\r\n private _removeClass(c: string) { this._renderer.removeClass(this._elementRef.nativeElement, c) };\r\n\r\n /**\r\n * Threshold(s) at which to trigger the intersection callback.\r\n * Can be a single number or an array of numbers between 0 and 1.\r\n * For example, 0.5 means the callback will be triggered when 50% of the element is visible in the viewport.\r\n */\r\n public readonly threshold = input<number | number[] | undefined>();\r\n\r\n /**\r\n * Root element to use for intersection observation. \r\n * If not provided, the viewport (browser window) is used as the root.\r\n */\r\n public readonly root = input<Element | Document | null | undefined>();\r\n\r\n /**\r\n * Root margin to apply to the intersection observer.\r\n * This can be a string similar to the CSS margin property, e.g., '10px 20px 30px 40px'.\r\n * It defines the margin around the root element (viewport) to consider for intersection.\r\n */\r\n public readonly rootMargin = input<string | undefined>();\r\n\r\n /**\r\n * Css class to apply when the element enters the viewport.\r\n */\r\n public readonly enterClass = input<string | undefined>();\r\n\r\n /**\r\n * Css class to apply when the element leaves the viewport.\r\n */\r\n public readonly leaveClass = input<string | undefined>();\r\n\r\n /**\r\n * Whether to observe only once (true) or continuously (false).\r\n * If true, the observer will disconnect after the first intersection event.\r\n * @default true\r\n */\r\n public readonly once = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * Event emitted when the element enters the viewport.\r\n */\r\n @Output() public readonly enter = new EventEmitter<IntersectionObserverEntry>();\r\n\r\n /**\r\n * Event emitted when the element leaves the viewport.\r\n * This event will only be emitted if the element has previously entered the viewport.\r\n */\r\n @Output() public readonly leave = new EventEmitter<IntersectionObserverEntry>();\r\n\r\n\r\n ngOnInit(): void {\r\n if (isPlatformServer(this._platformId)) {\r\n return;\r\n }\r\n\r\n this._setupObserver();\r\n }\r\n\r\n private _setupObserver() {\r\n this._observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n if (this.enterClass()) {\r\n this._addClass(this.enterClass()!);\r\n\r\n if (this._entered === false && this.leaveClass()) {\r\n this._removeClass(this.leaveClass()!);\r\n }\r\n }\r\n\r\n this._entered = true;\r\n this.enter.emit(entry);\r\n\r\n if (this.once()) {\r\n this.disconnect();\r\n }\r\n } else {\r\n if (this._entered) {\r\n if (this.leaveClass()) {\r\n this._addClass(this.leaveClass()!);\r\n\r\n if (this.enterClass()) {\r\n this._removeClass(this.enterClass()!);\r\n }\r\n }\r\n\r\n this._entered = false;\r\n this.leave.emit(entry);\r\n\r\n if (this.once()) {\r\n this.disconnect();\r\n }\r\n }\r\n }\r\n });\r\n },\r\n {\r\n root: this.root(),\r\n threshold: this.threshold(),\r\n rootMargin: this.rootMargin()\r\n }\r\n );\r\n\r\n this._observer.takeRecords(); // Clear initial records\r\n this._observer.observe(this._elementRef.nativeElement);\r\n }\r\n\r\n /**\r\n * Disconnects the intersection observer.\r\n * This stops all observation and releases resources.\r\n */\r\n public disconnect(): void {\r\n this._observer?.disconnect();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disconnect();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClipboardService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-platform-browser.mjs","sources":["../../../projects/ng0/platform/browser/clipboard/clipboard.service.ts","../../../projects/ng0/platform/browser/clipboard/clipboard-copy.directive.ts","../../../projects/ng0/platform/browser/intersection-observer.directive.ts","../../../projects/ng0/platform/browser/bootkit-ng0-platform-browser.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClipboardService {\n private _writeSubject = new Subject<any>;\n public readonly write = this._writeSubject.asObservable();\n\n constructor() { }\n\n public writeText(text: string) {\n window.navigator.clipboard.writeText(text);\n this._writeSubject.next(text);\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\nimport { ClipboardService } from './clipboard.service';\n\n@Directive({\n selector: '[ng0-clipboard-copy]',\n standalone: true\n})\nexport class ClipboardCopyDirective {\n public value = input<string>(undefined, {alias: 'ng0-clipboard-copy'})\n\n constructor(private clipboardService: ClipboardService) {\n }\n\n \n\n @HostListener('click') private _onHostClick() {\n this.clipboardService.writeText(this.value()!);\n }\n}\n","import { ElementRef, input, OnInit, PLATFORM_ID, Directive, OnDestroy, Output, EventEmitter, inject, Renderer2, booleanAttribute } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\n\n/**\n * Directive that observes the intersection of an element with the viewport and optionally applies CSS classes when the element enters or leaves the viewport.\n * It uses the Intersection Observer API to monitor visibility changes.\n * It can be used to trigger animate-on-scroll (AOS) animations, lazy loading, or other actions based on element visibility.\n */\n@Directive({\n selector: '[ng0IntersectionObserver]',\n exportAs: 'ng0IntersectionObserver',\n standalone: true\n})\nexport class IntersectionObserverDirective implements OnInit, OnDestroy {\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n private _entered?: boolean;\n private _observer?: IntersectionObserver;\n private _addClass(c: string) { this._renderer.addClass(this._elementRef.nativeElement, c) };\n private _removeClass(c: string) { this._renderer.removeClass(this._elementRef.nativeElement, c) };\n\n /**\n * Threshold(s) at which to trigger the intersection callback.\n * Can be a single number or an array of numbers between 0 and 1.\n * For example, 0.5 means the callback will be triggered when 50% of the element is visible in the viewport.\n */\n public readonly threshold = input<number | number[] | undefined>();\n\n /**\n * Root element to use for intersection observation. \n * If not provided, the viewport (browser window) is used as the root.\n */\n public readonly root = input<Element | Document | null | undefined>();\n\n /**\n * Root margin to apply to the intersection observer.\n * This can be a string similar to the CSS margin property, e.g., '10px 20px 30px 40px'.\n * It defines the margin around the root element (viewport) to consider for intersection.\n */\n public readonly rootMargin = input<string | undefined>();\n\n /**\n * Css class to apply when the element enters the viewport.\n */\n public readonly enterClass = input<string | undefined>();\n\n /**\n * Css class to apply when the element leaves the viewport.\n */\n public readonly leaveClass = input<string | undefined>();\n\n /**\n * Whether to observe only once (true) or continuously (false).\n * If true, the observer will disconnect after the first intersection event.\n * @default true\n */\n public readonly once = input(true, { transform: booleanAttribute });\n\n /**\n * Event emitted when the element enters the viewport.\n */\n @Output() public readonly enter = new EventEmitter<IntersectionObserverEntry>();\n\n /**\n * Event emitted when the element leaves the viewport.\n * This event will only be emitted if the element has previously entered the viewport.\n */\n @Output() public readonly leave = new EventEmitter<IntersectionObserverEntry>();\n\n\n ngOnInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this._setupObserver();\n }\n\n private _setupObserver() {\n this._observer = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n if (this.enterClass()) {\n this._addClass(this.enterClass()!);\n\n if (this._entered === false && this.leaveClass()) {\n this._removeClass(this.leaveClass()!);\n }\n }\n\n this._entered = true;\n this.enter.emit(entry);\n\n if (this.once()) {\n this.disconnect();\n }\n } else {\n if (this._entered) {\n if (this.leaveClass()) {\n this._addClass(this.leaveClass()!);\n\n if (this.enterClass()) {\n this._removeClass(this.enterClass()!);\n }\n }\n\n this._entered = false;\n this.leave.emit(entry);\n\n if (this.once()) {\n this.disconnect();\n }\n }\n }\n });\n },\n {\n root: this.root(),\n threshold: this.threshold(),\n rootMargin: this.rootMargin()\n }\n );\n\n this._observer.takeRecords(); // Clear initial records\n this._observer.observe(this._elementRef.nativeElement);\n }\n\n /**\n * Disconnects the intersection observer.\n * This stops all observation and releases resources.\n */\n public disconnect(): void {\n this._observer?.disconnect();\n }\n\n ngOnDestroy(): void {\n this.disconnect();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClipboardService"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-routing.mjs","sources":["../../../projects/ng0/routing/router.service.ts","../../../projects/ng0/routing/bootkit-ng0-routing.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-routing.mjs","sources":["../../../projects/ng0/routing/router.service.ts","../../../projects/ng0/routing/bootkit-ng0-routing.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { filter, map, Observable } from 'rxjs';\nimport { RouteData, RouterLinkValueResolver, RouterActivatedRouteSnapshot, RouteTitleResolver } from './types';\n\n/**\n * Service to interact with Angular Router.\n */\n@Injectable({ providedIn: 'root' })\nexport class RouterService {\n private readonly _router = inject(Router);\n\n /**\n * Get activated route tree.\n * @param outlets List of outlets to include, default is ['primary']\n * @returns Observable of the activated route tree\n */\n public getActivatedRouteTree(outlets: string[] = ['primary']): Observable<RouterActivatedRouteSnapshot> {\n return this._router.events.pipe(\n filter(x => x instanceof NavigationEnd),\n map(e => {\n let { root } = this._router.routerState.snapshot;\n return this._mapRoute(root, outlets);\n })\n );\n }\n\n /**\n * Get activated routes as a flat array from root to the deepest child for a specific outlet.\n * @param outlet The outlet to include, default is 'primary'\n * @returns Observable of the activated routes array\n */\n public getActivatedRoutes(outlet = 'primary'): Observable<RouterActivatedRouteSnapshot[]> {\n return this.getActivatedRouteTree([outlet]).pipe(\n map(root => {\n let result: RouterActivatedRouteSnapshot[] = [];\n \n do {\n result.push(root);\n root = root?.children[0];\n } while (root !== undefined);\n\n return result;\n })\n );\n }\n\n /**\n * Map a route to RouterRouteSnapshot\n * @param route The route to map\n * @param outlets The outlets to include\n * @returns The mapped RouterRouteSnapshot\n */\n private _mapRoute(route: ActivatedRouteSnapshot, outlets: string[]): RouterActivatedRouteSnapshot {\n let configData = route.routeConfig?.data as RouteData | undefined;\n let title: string | undefined;\n \n if(route.title && route.routeConfig?.title)\n // Route is resolved by Angular.\n title = route.title;\n else if (configData?.title) {\n title = typeof configData.title === 'function' ?\n (configData.title as RouteTitleResolver)(route, this._router.routerState.snapshot) :\n configData.title;\n }\n\n let link = configData?.link;\n if (typeof link === 'function') {\n link = (link as RouterLinkValueResolver)(route, this._router.routerState.snapshot);\n }\n\n return {\n activatedRoute: route,\n title,\n link: link,\n children: route.children\n .filter(x => outlets.includes(x.outlet))\n .map(x => this._mapRoute(x, outlets))\n } as RouterActivatedRouteSnapshot;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAKA;;AAEG;MAEU,aAAa,CAAA;AACP,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAEzC;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,OAAA,GAAoB,CAAC,SAAS,CAAC,EAAA;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,EACvC,GAAG,CAAC,CAAC,IAAG;YACN,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ;YAChD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;QACtC,CAAC,CAAC,CACH;IACH;AAEA;;;;AAIG;IACI,kBAAkB,CAAC,MAAM,GAAG,SAAS,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,IAAI,IAAG;YACT,IAAI,MAAM,GAAmC,EAAE;AAE/C,YAAA,GAAG;AACD,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,gBAAA,IAAI,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1B,YAAA,CAAC,QAAQ,IAAI,KAAK,SAAS;AAE3B,YAAA,OAAO,MAAM;QACf,CAAC,CAAC,CACH;IACH;AAEA;;;;;AAKG;IACK,SAAS,CAAC,KAA6B,EAAE,OAAiB,EAAA;AAChE,QAAA,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,IAA6B;AACjE,QAAA,IAAI,KAAyB;QAE7B,IAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK;;AAExC,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK;AAChB,aAAA,IAAI,UAAU,EAAE,KAAK,EAAE;YAC1B,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU;AAC5C,gBAAA,UAAU,CAAC,KAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAClF,UAAU,CAAC,KAAK;QACnB;AAEA,QAAA,IAAI,IAAI,GAAG,UAAU,EAAE,IAAI;AAC3B,QAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC9B,YAAA,IAAI,GAAI,IAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;QACpF;QAEA,OAAO;AACL,YAAA,cAAc,EAAE,KAAK;YACrB,KAAK;AACL,YAAA,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,KAAK,CAAC;AACb,iBAAA,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,iBAAA,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;SACP;IACnC;wGAtEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACRlC;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-script.mjs","sources":["../../../projects/ng0/script/script-locader.ts","../../../projects/ng0/script/bootkit-ng0-script.ts"],"sourcesContent":["import { Renderer2, Inject, Injectable, RendererFactory2 } from '@angular/core';\
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-script.mjs","sources":["../../../projects/ng0/script/script-locader.ts","../../../projects/ng0/script/bootkit-ng0-script.ts"],"sourcesContent":["import { Renderer2, Inject, Injectable, RendererFactory2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ScriptDefinition, ScriptDefinitionObject } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScriptLoader {\n private _renderer: Renderer2;\n private _loadedScripts = new Map<string, any>();\n\n constructor(\n _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n ) {\n this._renderer = _rendererFactory.createRenderer(null, null);\n }\n\n public async loadAll(...scripts: ScriptDefinition[]) {\n let r: { script: ScriptDefinition, element: any }[] = [];\n for (let s of scripts) {\n r.push({ script: s, element: await this.load(s) })\n }\n\n return r;\n }\n\n public load(script: ScriptDefinition): Promise<any> {\n return new Promise<string>((resolve, reject) => {\n\n let d: ScriptDefinitionObject = typeof script == 'string' ? { src: script } : script;\n\n if (this._loadedScripts.has(d.src)) {\n return resolve(this._loadedScripts.get(d.src));\n }\n\n const elm = this._renderer.createElement('script');\n elm.type = 'text/javascript';\n elm.src = d.src;\n\n // if (Array.isArray(d.attrs)) {\n // d.attrs.forEach(attr => {\n // this._renderer.setAttribute(elm, attr, d.attrs[attr]);\n // });\n // }\n\n elm.onload = (res: any) => {\n this._loadedScripts.set(d.src, elm);\n return resolve(elm);\n }\n\n this._renderer.appendChild(this._document.body, elm);\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAOa,YAAY,CAAA;AAMK,IAAA,SAAA;AALpB,IAAA,SAAS;AACT,IAAA,cAAc,GAAG,IAAI,GAAG,EAAe;IAE/C,WAAA,CACE,gBAAkC,EACR,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEnC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9D;AAEO,IAAA,MAAM,OAAO,CAAC,GAAG,OAA2B,EAAA;QACjD,IAAI,CAAC,GAAiD,EAAE;AACxD,QAAA,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE;AACrB,YAAA,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD;AAEA,QAAA,OAAO,CAAC;IACV;AAEO,IAAA,IAAI,CAAC,MAAwB,EAAA;QAClC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,KAAI;AAE7C,YAAA,IAAI,CAAC,GAA2B,OAAO,MAAM,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;YAEpF,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD;YAEA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,YAAA,GAAG,CAAC,IAAI,GAAG,iBAAiB;AAC5B,YAAA,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;;;;;;AAQf,YAAA,GAAG,CAAC,MAAM,GAAG,CAAC,GAAQ,KAAI;gBACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;AACnC,gBAAA,OAAO,OAAO,CAAC,GAAG,CAAC;AACrB,YAAA,CAAC;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;AACtD,QAAA,CAAC,CAAC;IACJ;AA9CW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kDAMb,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AANP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAOI,MAAM;2BAAC,QAAQ;;;ACbpB;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-security.mjs","sources":["../../../projects/ng0/security/user.ts","../../../projects/ng0/security/user-store.ts","../../../projects/ng0/security/claim.directive.ts","../../../projects/ng0/security/guest-user.directive.ts","../../../projects/ng0/security/security.module.ts","../../../projects/ng0/security/public-api.ts","../../../projects/ng0/security/bootkit-ng0-security.ts"],"sourcesContent":["import { ClaimLike, ClaimObject } from '@bootkit/ng0/common';\
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-security.mjs","sources":["../../../projects/ng0/security/user.ts","../../../projects/ng0/security/user-store.ts","../../../projects/ng0/security/claim.directive.ts","../../../projects/ng0/security/guest-user.directive.ts","../../../projects/ng0/security/security.module.ts","../../../projects/ng0/security/public-api.ts","../../../projects/ng0/security/bootkit-ng0-security.ts"],"sourcesContent":["import { ClaimLike, ClaimObject } from '@bootkit/ng0/common';\n\n/** User */\nexport class User {\n constructor(public readonly claims: string[]) {\n }\n\n public hasClaims(claims: string[]): boolean {\n return claims.every(x => this.claims.some(y => x === y));\n }\n\n public hasAnyClaim(claims: string[]): boolean {\n return claims.length == 0 || claims.some(x => this.claims.some(y => x === y));\n }\n\n public hasClaim(claim: ClaimLike): boolean {\n var type = typeof claim;\n if (type === 'string') {\n return this.claims.some(x => x === claim);\n }\n\n if (type === 'object') {\n const co = claim as ClaimObject;\n if (co?.any && co?.all) {\n throw Error('Setting \"any\" and \"all\" at the same time is not valid.');\n }\n\n if (Array.isArray(co?.any)) {\n return this.hasAnyClaim(co.any);\n }\n if (Array.isArray(co?.all)) {\n return this.hasClaims(co.all);\n }\n }\n\n throw Error('Invalid claim');\n }\n}\n","import { User } from './user';\nimport { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class UserStore<U extends User = User> {\n public readonly user = signal<U | null | undefined>(undefined);\n\n constructor() {\n }\n}","import { Directive, TemplateRef, ViewContainerRef, input, effect } from '@angular/core';\n\nimport { UserStore } from './user-store';\nimport { ClaimLike } from '@bootkit/ng0/common';\n\n@Directive({\n selector: '[ng0Claim]',\n exportAs: 'ng0Claim',\n standalone: true\n})\nexport class UserDirective {\n public claim = input<ClaimLike | null | undefined>(undefined, { alias: 'ng0Claim' });\n private _viewCreated = false;\n\n constructor(\n templateRef: TemplateRef<any>,\n viewContainer: ViewContainerRef,\n userStore: UserStore,\n ) {\n effect(() => {\n let claim = this.claim();\n let user = userStore.user();\n let show = !user ? false : (claim == undefined ? true : user.hasClaim(claim))\n\n if (show && !this._viewCreated) {\n viewContainer.createEmbeddedView(templateRef);\n this._viewCreated = true;\n } else if (!show && this._viewCreated) {\n viewContainer.clear();\n this._viewCreated = false;\n }\n })\n }\n}\n","import { Directive, TemplateRef, ViewContainerRef, effect } from '@angular/core';\nimport { UserStore } from './user-store';\n\n@Directive({\n selector: '[ng0GuestUser]',\n exportAs: 'ng0GuestUser',\n standalone: true\n})\nexport class GuestUserDirective {\n private _created = false;\n\n constructor(\n templateRef: TemplateRef<any>,\n viewContainer: ViewContainerRef,\n userStore: UserStore,\n ) {\n effect(() => {\n let show = userStore.user() == undefined\n\n if (show && !this._created) {\n viewContainer.createEmbeddedView(templateRef);\n this._created = true;\n } else if (!show && this._created) {\n viewContainer.clear();\n this._created = false;\n }\n })\n }\n}\n","import { NgModule } from '@angular/core';\nimport { UserDirective } from './claim.directive';\nimport { GuestUserDirective } from './guest-user.directive';\n\nconst items = [\n UserDirective,\n GuestUserDirective\n]\n\n@NgModule({\n imports: items,\n exports: items\n})\nexport class SecurityModule { }\n","// export * from './types';\nexport * from './user';\nexport * from './user-store';\nexport * from './claim.directive';\nexport * from './guest-user.directive';\nexport * from './security.module';\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserStore"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-utils.mjs","sources":["../../../projects/ng0/utils/counter.ts","../../../projects/ng0/utils/bootkit-ng0-utils.ts"],"sourcesContent":["\
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-utils.mjs","sources":["../../../projects/ng0/utils/counter.ts","../../../projects/ng0/utils/bootkit-ng0-utils.ts"],"sourcesContent":["\nimport { signal } from '@angular/core';\nimport { animationFrameScheduler, interval, map, Subscription, takeWhile } from 'rxjs';\n\n/**\n * Easing function type definition.\n */\nexport type EasingFn = (t: number) => number;\n\n/**\n * A counter that animates a numeric value from a start to an end value over a specified duration using an easing function.\n */\nexport class Counter {\n private _subscription?: Subscription;\n public readonly value = signal(0);\n public readonly running = signal(false);\n public readonly easing: EasingFn;\n\n constructor(\n public readonly from: number,\n public readonly to: number,\n public readonly duration = 1000,\n easing?: EasingFn,\n currentValue?: number) {\n\n if (to < from || duration <= 0) {\n throw new Error('Invalid params');\n }\n\n this.easing = easing ?? easingFunctions.linear;\n this.value.set(currentValue != null ? currentValue : this.from);\n }\n\n /**\n * Resets the counter and starts it.\n * This method should be called in a browser environment.\n * @returns void\n */\n public start() {\n if (this.running()) return;\n\n this.value.set(this.from);\n this.running.set(true);\n\n const startTime = performance.now();\n const from = this.from;\n const change = this.to - this.from;\n\n this._subscription = interval(0, animationFrameScheduler)\n .pipe(\n map(() => performance.now() - startTime),\n takeWhile(time => time <= this.duration, true),\n map(elapsed => {\n const t = Math.min(1, elapsed / this.duration);\n return from + change * this.easing(t);\n })\n )\n .subscribe({\n next: val => this.value.set(val),\n complete: () => {\n this.running.set(false)\n }\n });\n }\n\n /**\n * Stops the counter animation.\n */\n public stop() {\n this._subscription?.unsubscribe();\n this.running.set(false);\n }\n}\n\n/**\n * A collection of common easing functions for animations.\n */\nexport const easingFunctions = {\n linear: (t: number) => t,\n easeIn: (t: number) => t * t,\n easeOut: (t: number) => t * (2 - t),\n easeInOut: (t: number) => t < 0.5 ? (2 * t * t) : (-1 + (4 - 2 * t) * t),\n smooth: (t: number) => t * t * (3 - 2 * t),\n // smoother: (t: number) => t * t * t * (t * (6 - 15 * t) + 10)\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0.mjs","sources":["../../../projects/ng0/src/lib/index.ts","../../../projects/ng0/src/public-api.ts","../../../projects/ng0/src/bootkit-ng0.ts"],"sourcesContent":["export const libName = 'bootkit/ng0';","/*\
|
|
1
|
+
{"version":3,"file":"bootkit-ng0.mjs","sources":["../../../projects/ng0/src/lib/index.ts","../../../projects/ng0/src/public-api.ts","../../../projects/ng0/src/bootkit-ng0.ts"],"sourcesContent":["export const libName = 'bootkit/ng0';","/*\n * Public API Surface of bootkit\n */\n\nexport * from './lib';\n \n \n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,GAAG;;ACAvB;;AAEG;;ACFH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bootkit/ng0",
|
|
3
|
-
"version": "0.0.0-alpha.
|
|
3
|
+
"version": "0.0.0-alpha.41",
|
|
4
4
|
"description": "Angular+Bootstrap Component Library",
|
|
5
5
|
"homepage": "https://bootkitlib.github.io/",
|
|
6
6
|
"author": "BootKit",
|
|
@@ -35,22 +35,22 @@
|
|
|
35
35
|
"types": "./index.d.ts",
|
|
36
36
|
"default": "./fesm2022/bootkit-ng0.mjs"
|
|
37
37
|
},
|
|
38
|
-
"./common": {
|
|
39
|
-
"types": "./common/index.d.ts",
|
|
40
|
-
"default": "./fesm2022/bootkit-ng0-common.mjs"
|
|
41
|
-
},
|
|
42
38
|
"./data": {
|
|
43
39
|
"types": "./data/index.d.ts",
|
|
44
40
|
"default": "./fesm2022/bootkit-ng0-data.mjs"
|
|
45
41
|
},
|
|
46
|
-
"./
|
|
47
|
-
"types": "./
|
|
48
|
-
"default": "./fesm2022/bootkit-ng0-
|
|
42
|
+
"./common": {
|
|
43
|
+
"types": "./common/index.d.ts",
|
|
44
|
+
"default": "./fesm2022/bootkit-ng0-common.mjs"
|
|
49
45
|
},
|
|
50
46
|
"./date": {
|
|
51
47
|
"types": "./date/index.d.ts",
|
|
52
48
|
"default": "./fesm2022/bootkit-ng0-date.mjs"
|
|
53
49
|
},
|
|
50
|
+
"./file": {
|
|
51
|
+
"types": "./file/index.d.ts",
|
|
52
|
+
"default": "./fesm2022/bootkit-ng0-file.mjs"
|
|
53
|
+
},
|
|
54
54
|
"./form": {
|
|
55
55
|
"types": "./form/index.d.ts",
|
|
56
56
|
"default": "./fesm2022/bootkit-ng0-form.mjs"
|
|
@@ -67,14 +67,14 @@
|
|
|
67
67
|
"types": "./routing/index.d.ts",
|
|
68
68
|
"default": "./fesm2022/bootkit-ng0-routing.mjs"
|
|
69
69
|
},
|
|
70
|
-
"./security": {
|
|
71
|
-
"types": "./security/index.d.ts",
|
|
72
|
-
"default": "./fesm2022/bootkit-ng0-security.mjs"
|
|
73
|
-
},
|
|
74
70
|
"./script": {
|
|
75
71
|
"types": "./script/index.d.ts",
|
|
76
72
|
"default": "./fesm2022/bootkit-ng0-script.mjs"
|
|
77
73
|
},
|
|
74
|
+
"./security": {
|
|
75
|
+
"types": "./security/index.d.ts",
|
|
76
|
+
"default": "./fesm2022/bootkit-ng0-security.mjs"
|
|
77
|
+
},
|
|
78
78
|
"./utils": {
|
|
79
79
|
"types": "./utils/index.d.ts",
|
|
80
80
|
"default": "./fesm2022/bootkit-ng0-utils.mjs"
|
|
@@ -111,14 +111,14 @@
|
|
|
111
111
|
"types": "./components/dropdown/index.d.ts",
|
|
112
112
|
"default": "./fesm2022/bootkit-ng0-components-dropdown.mjs"
|
|
113
113
|
},
|
|
114
|
-
"./components/list": {
|
|
115
|
-
"types": "./components/list/index.d.ts",
|
|
116
|
-
"default": "./fesm2022/bootkit-ng0-components-list.mjs"
|
|
117
|
-
},
|
|
118
114
|
"./components/form-field": {
|
|
119
115
|
"types": "./components/form-field/index.d.ts",
|
|
120
116
|
"default": "./fesm2022/bootkit-ng0-components-form-field.mjs"
|
|
121
117
|
},
|
|
118
|
+
"./components/list": {
|
|
119
|
+
"types": "./components/list/index.d.ts",
|
|
120
|
+
"default": "./fesm2022/bootkit-ng0-components-list.mjs"
|
|
121
|
+
},
|
|
122
122
|
"./components/modal": {
|
|
123
123
|
"types": "./components/modal/index.d.ts",
|
|
124
124
|
"default": "./fesm2022/bootkit-ng0-components-modal.mjs"
|
|
@@ -127,14 +127,14 @@
|
|
|
127
127
|
"types": "./components/nav/index.d.ts",
|
|
128
128
|
"default": "./fesm2022/bootkit-ng0-components-nav.mjs"
|
|
129
129
|
},
|
|
130
|
-
"./components/overlay": {
|
|
131
|
-
"types": "./components/overlay/index.d.ts",
|
|
132
|
-
"default": "./fesm2022/bootkit-ng0-components-overlay.mjs"
|
|
133
|
-
},
|
|
134
130
|
"./components/offcanvas": {
|
|
135
131
|
"types": "./components/offcanvas/index.d.ts",
|
|
136
132
|
"default": "./fesm2022/bootkit-ng0-components-offcanvas.mjs"
|
|
137
133
|
},
|
|
134
|
+
"./components/overlay": {
|
|
135
|
+
"types": "./components/overlay/index.d.ts",
|
|
136
|
+
"default": "./fesm2022/bootkit-ng0-components-overlay.mjs"
|
|
137
|
+
},
|
|
138
138
|
"./components/pagination": {
|
|
139
139
|
"types": "./components/pagination/index.d.ts",
|
|
140
140
|
"default": "./fesm2022/bootkit-ng0-components-pagination.mjs"
|
|
@@ -159,14 +159,14 @@
|
|
|
159
159
|
"types": "./components/table/index.d.ts",
|
|
160
160
|
"default": "./fesm2022/bootkit-ng0-components-table.mjs"
|
|
161
161
|
},
|
|
162
|
-
"./components/tooltip": {
|
|
163
|
-
"types": "./components/tooltip/index.d.ts",
|
|
164
|
-
"default": "./fesm2022/bootkit-ng0-components-tooltip.mjs"
|
|
165
|
-
},
|
|
166
162
|
"./components/toast": {
|
|
167
163
|
"types": "./components/toast/index.d.ts",
|
|
168
164
|
"default": "./fesm2022/bootkit-ng0-components-toast.mjs"
|
|
169
165
|
},
|
|
166
|
+
"./components/tooltip": {
|
|
167
|
+
"types": "./components/tooltip/index.d.ts",
|
|
168
|
+
"default": "./fesm2022/bootkit-ng0-components-tooltip.mjs"
|
|
169
|
+
},
|
|
170
170
|
"./components/vertical-menu": {
|
|
171
171
|
"types": "./components/vertical-menu/index.d.ts",
|
|
172
172
|
"default": "./fesm2022/bootkit-ng0-components-vertical-menu.mjs"
|
|
@@ -43,7 +43,7 @@ declare class IntersectionObserverDirective implements OnInit, OnDestroy {
|
|
|
43
43
|
* Root element to use for intersection observation.
|
|
44
44
|
* If not provided, the viewport (browser window) is used as the root.
|
|
45
45
|
*/
|
|
46
|
-
readonly root: _angular_core.InputSignal<
|
|
46
|
+
readonly root: _angular_core.InputSignal<Document | Element | null | undefined>;
|
|
47
47
|
/**
|
|
48
48
|
* Root margin to apply to the intersection observer.
|
|
49
49
|
* This can be a string similar to the CSS margin property, e.g., '10px 20px 30px 40px'.
|