@ng-solid/design-system 22.1.0 → 22.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-solid-design-system.mjs","sources":["../../../../packages/design-system/src/lib/avatar/avatar.component.ts","../../../../packages/design-system/src/lib/button/button.component.ts","../../../../packages/design-system/src/lib/form/models/value-accessor.ts","../../../../packages/design-system/src/lib/form/components/checkbox/checkbox.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-utils.ts","../../../../packages/design-system/src/lib/form/components/date-picker/calendar.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker.service.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-parser-formatter.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-month.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-navigation.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-menu.component.ts","../../../../packages/design-system/src/lib/dropdown/directives/dropdown-item.directive.ts","../../../../packages/design-system/src/lib/dropdown/dropdown.component.ts","../../../../packages/design-system/src/lib/dropdown/dropdown.component.html","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker.component.ts","../../../../packages/design-system/src/lib/form/directives/date-range.directive.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-range-picker.component.ts","../../../../packages/design-system/src/lib/form/components/input/input.component.ts","../../../../packages/design-system/src/lib/form/components/input/input.component.html","../../../../packages/design-system/src/lib/form/components/input-group/input-group-addon.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group.component.html","../../../../packages/design-system/src/lib/form/components/input-number/utils.ts","../../../../packages/design-system/src/lib/form/components/input-number/input-number.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.html","../../../../packages/design-system/src/lib/form/components/switch/switch.component.ts","../../../../packages/design-system/src/lib/form/components/text-area/text-area.component.ts","../../../../packages/design-system/src/lib/form/directives/content-editable.directive.ts","../../../../packages/design-system/src/lib/form/index.ts","../../../../packages/design-system/src/lib/button-group/button-group.component.ts","../../../../packages/design-system/src/lib/comment/comment.component.ts","../../../../packages/design-system/src/lib/comment/comment.component.html","../../../../packages/design-system/src/lib/editor/enums/commands.enum.ts","../../../../packages/design-system/src/lib/editor/models/labels.ts","../../../../packages/design-system/src/lib/editor/services/editor.service.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.html","../../../../packages/design-system/src/lib/editor/pipes/editor-label.pipe.ts","../../../../packages/design-system/src/lib/editor/components/link/link.component.ts","../../../../packages/design-system/src/lib/editor/components/link/link.component.html","../../../../packages/design-system/src/lib/editor/components/list/list.component.ts","../../../../packages/design-system/src/lib/editor/components/list/list.component.html","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.ts","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.html","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.ts","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.html","../../../../packages/design-system/src/lib/editor/editor.component.ts","../../../../packages/design-system/src/lib/editor/editor.component.html","../../../../packages/design-system/src/lib/image-upload/pipes/image-url.pipe.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.html","../../../../packages/design-system/src/lib/modal/models/modal-ref.ts","../../../../packages/design-system/src/lib/modal/modal.component.ts","../../../../packages/design-system/src/lib/modal/modal.component.html","../../../../packages/design-system/src/lib/modal/services/modal.service.ts","../../../../packages/design-system/src/lib/schedule/models/schedule.ts","../../../../packages/design-system/src/lib/schedule/services/schedule.service.ts","../../../../packages/design-system/src/lib/schedule/components/cell/cell.component.ts","../../../../packages/design-system/src/lib/schedule/pipes/week-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/pipes/filter-by-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.html","../../../../packages/design-system/src/lib/schedule/components/day/day.component.ts","../../../../packages/design-system/src/lib/schedule/components/day/day.component.html","../../../../packages/design-system/src/lib/schedule/components/week/week.component.ts","../../../../packages/design-system/src/lib/schedule/components/week/week.component.html","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.ts","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.html","../../../../packages/design-system/src/lib/schedule/schedule.component.ts","../../../../packages/design-system/src/lib/schedule/schedule.component.html","../../../../packages/design-system/src/lib/schema/schema.component.ts","../../../../packages/design-system/src/lib/template/template.directive.ts","../../../../packages/design-system/src/lib/toast/enums/toast-type.ts","../../../../packages/design-system/src/lib/toast/interfaces/toast-ref.ts","../../../../packages/design-system/src/lib/toast/interfaces/toast-setup.ts","../../../../packages/design-system/src/lib/toast/toast.component.ts","../../../../packages/design-system/src/lib/toast/services/toast.service.ts","../../../../packages/design-system/src/index.ts","../../../../packages/design-system/src/ng-solid-design-system.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n NgZone,\n numberAttribute,\n OnChanges,\n PLATFORM_ID,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { isValidURL } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-avatar',\n template: `\n @if (hasCover) {\n <img\n class=\"ns-avatar__cover\"\n [attr.src]=\"src()\"\n [attr.alt]=\"atl()\"\n (error)=\"imgError($event)\"\n />\n } @else {\n <span class=\"ns-avatar__text\" #textRef>{{ src() }}</span>\n }\n `,\n styleUrls: ['./avatar.component.scss'],\n host: {\n class: 'ns-avatar',\n '[class.ns-avatar--circle]': `shape() === 'circle'`,\n '[class.ns-avatar--square]': `shape() === 'square'`,\n '[class.ns-avatar--large]': `size() === 'large'`,\n '[class.ns-avatar--medium]': `size() === 'medium'`,\n '[class.ns-avatar--small]': `size() === 'small'`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None\n})\nexport class NsAvatarComponent implements OnChanges {\n readonly src = input<string>(undefined);\n readonly atl = input<string>(undefined);\n readonly icon = input<string>(undefined);\n readonly shape = input<'circle' | 'square'>('circle');\n readonly size = input<'large' | 'medium' | 'small'>('small');\n readonly gap = input<number, unknown>(4, { transform: numberAttribute });\n @ViewChild('textRef', { static: false })\n textRef?: ElementRef<HTMLSpanElement>;\n public hasCover: boolean;\n public hasIcon: boolean;\n private elementRef = inject(ElementRef);\n private cdr = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n ngOnChanges() {\n this.hasCover = isValidURL(this.src());\n this.hasIcon = !this.src() && !!this.icon();\n this.notifyCalc();\n }\n\n imgError($event: ErrorEvent) {\n if (!$event.defaultPrevented) {\n this.hasIcon = false;\n this.hasCover = false;\n if (this.icon()) {\n this.hasIcon = true;\n } else if (isValidURL(this.src())) {\n this.hasCover = true;\n }\n this.cdr.detectChanges();\n this.notifyCalc();\n }\n }\n\n private calcStringSize() {\n const textEl = this.textRef?.nativeElement;\n if (this.hasCover || !textEl) {\n return;\n }\n\n const childrenWidth = textEl.offsetWidth;\n const avatarWidth =\n this.elementRef.nativeElement.getBoundingClientRect().width;\n const offset = this.gap() * 2 < avatarWidth ? this.gap() * 2 : 8;\n const scale =\n avatarWidth - offset < childrenWidth\n ? (avatarWidth - offset) / childrenWidth\n : 1;\n this.renderer.setStyle(\n textEl,\n 'transform',\n `scale(${scale}) translateX(-50%)`\n );\n }\n\n private notifyCalc(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.ngZone.runOutsideAngular(() =>\n setTimeout(() => this.calcStringSize())\n );\n }\n }\n}\n","import { booleanAttribute, Component, input } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-button',\n imports: [NgClass, NsIconsComponent],\n template: `\n <button\n [attr.type]=\"type()\"\n class=\"btn\"\n [ngClass]=\"{\n btn__primary: theme() == 'primary',\n btn__secondary: theme() == 'secondary',\n btn__success: theme() == 'success',\n btn__block: block(),\n 'btn--icon': icon()\n }\"\n [disabled]=\"disabled() || loading()\"\n >\n @if (!loading()) {\n @if (icon()) {\n <ns-icon [name]=\"icon()\" size=\"16\" />\n }\n {{ label() }}\n } @else {\n <ns-icon name=\"preload\" size=\"16\" />\n }\n </button>\n `,\n styleUrls: ['./button.component.scss'],\n host: {\n '[class.ns-button]': 'true',\n '[class.ns-button__grid]': 'block()',\n '[class.ns-button--loading]': 'loading()',\n '[class.ns-button--disabled]': 'disabled()'\n }\n})\nexport class NsButtonComponent {\n readonly label = input<string>(undefined);\n readonly type = input<'submit' | 'button'>('button');\n readonly theme = input<'primary' | 'secondary' | 'success'>('secondary');\n readonly block = input<boolean, unknown>(undefined, {\n transform: booleanAttribute\n });\n readonly disabled = input<boolean, unknown>(undefined, {\n transform: booleanAttribute\n });\n readonly loading = input<boolean, unknown>(undefined, {\n transform: booleanAttribute\n });\n readonly icon = input<string>(undefined);\n readonly value = input<string | number>(undefined);\n}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Directive, input, model } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\n\n@Directive()\nexport abstract class NsValueAccessor<\n T = string\n> implements ControlValueAccessor {\n public readonly type = input('text');\n public readonly placeholder = input('');\n public readonly label = input<string>(undefined);\n public readonly disabled = model<boolean>(undefined);\n public readonly readonly = input<boolean>(undefined);\n\n public id = Guid.create();\n\n public readonly value = model<T>(undefined);\n\n public setValue(value: T): void {\n if (`${this.value()}` !== `${value}`) {\n this.onChange(value);\n }\n this.value.set(value);\n }\n\n public onTouched = () => {};\n\n public onChange: (value: T) => void = () => {};\n\n writeValue(value: T): void {\n if (typeof value !== 'undefined') {\n this.value.set(value);\n }\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ns-checkbox',\n imports: [FormsModule],\n template: `\n <label class=\"form-check-label\">\n <input\n class=\"form-check-input\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n />\n {{ label() }}\n </label>\n `,\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class NsCheckboxComponent extends NsValueAccessor<boolean> {}\n","import { NsDatepickerView } from './date-picker-view';\nimport { DateValue, isSameMonth } from '@internationalized/date';\n\nexport function isDateSelectable(date: DateValue, state: NsDatepickerView) {\n const { minDate, maxDate, disabled } = state;\n return !(\n date === null ||\n date === undefined ||\n disabled ||\n (minDate && isSameMonth(date, minDate)) ||\n (maxDate && isSameMonth(date, maxDate))\n );\n}\n","import { Injectable } from '@angular/core';\nimport {\n DateFormatter,\n DateTimeDuration,\n DateValue,\n DayOfWeek,\n getDayOfWeek,\n getLocalTimeZone,\n getWeeksInMonth,\n isToday,\n startOfWeek,\n today\n} from '@internationalized/date';\nimport { NsDayView, NsWeekView, WeekdayStyle } from './date-picker-view';\n\n@Injectable({ providedIn: 'root', useFactory: () => new NsCalendarGregorian() })\nexport abstract class NsCalendar {\n abstract today(): string;\n\n abstract add(duration: DateTimeDuration): string;\n\n abstract subtract(duration: DateTimeDuration): string;\n\n abstract getWeekDays(\n date: DateValue,\n weekdayStyle: WeekdayStyle,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): string[];\n\n abstract getWeeksInMonth(\n date: DateValue,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): NsWeekView[];\n\n abstract getDatesInWeek(\n weekIndex: number,\n from: DateValue,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): NsDayView[];\n\n abstract getFormattedMonth(startDate: DateValue, locale: string): string;\n\n abstract getHoursInDay(): number[];\n}\n\n@Injectable()\nexport class NsCalendarGregorian extends NsCalendar {\n private readonly timeZone = getLocalTimeZone();\n private readonly _today = today(this.timeZone);\n\n today(): string {\n return this._today.toString();\n }\n\n add(duration: DateTimeDuration): string {\n return this._today.add(duration).toString();\n }\n\n subtract(duration: DateTimeDuration): string {\n return this._today.subtract(duration).toString();\n }\n\n getFormattedMonth(date: DateValue, locale: string): string {\n const formatter = new DateFormatter(locale, {\n month: 'long',\n year: 'numeric'\n });\n const segments = formatter.formatToParts(date.toDate(this.timeZone));\n return `${segments[0].value} ${segments[2].value}`;\n }\n\n getWeekDays(\n date: DateValue,\n weekdayStyle: WeekdayStyle,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ) {\n const weekStart = startOfWeek(date, locale, firstDayOfWeek);\n const formatter = new DateFormatter(locale, {\n calendar: weekStart.calendar.identifier,\n weekday: weekdayStyle,\n timeZone: this.timeZone\n });\n return [...new Array(7).keys()].map((index) => {\n const date = weekStart.add({ days: index });\n return formatter.format(date.toDate(this.timeZone));\n });\n }\n\n getWeeksInMonth(date: DateValue, locale: string, firstDayOfWeek: DayOfWeek) {\n const weeks = [];\n const weeksInMonth = getWeeksInMonth(date, locale, firstDayOfWeek);\n for (let weekIndex = 0; weekIndex < weeksInMonth; weekIndex++) {\n weeks.push({\n number: weekIndex,\n days: this.getDatesInWeek(weekIndex, date, locale, firstDayOfWeek)\n });\n }\n return weeks;\n }\n\n getDatesInWeek(\n weekIndex: number,\n from: DateValue,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): NsDayView[] {\n let date = startOfWeek(\n from.add({ weeks: weekIndex }),\n locale,\n firstDayOfWeek\n );\n const daysPerWeek = getDayOfWeek(date, locale, firstDayOfWeek);\n\n const formatter = new DateFormatter(locale, {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric',\n timeZone: this.timeZone\n });\n const dates: NsDayView[] = Array(daysPerWeek).fill(null);\n\n // week has days\n while (dates.length < 7) {\n dates.push({\n number: date.day,\n date: date,\n context: {\n $implicit: date,\n date: date,\n month: date.month,\n year: date.year,\n disabled: false,\n selected: false,\n isToday: isToday(date, this.timeZone)\n },\n tabindex: -1,\n ariaLabel: formatter.format(date.toDate(this.timeZone))\n });\n\n date = date.add({ days: 1 });\n }\n return dates;\n }\n\n getHoursInDay(): number[] {\n return Array.from({ length: 24 }, (_, i) => i);\n }\n}\n","import { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport {\n NsDatepickerView,\n NsMonthView,\n WeekdayStyle\n} from './date-picker-view';\nimport { filter, Observable, Subject } from 'rxjs';\nimport { isDateSelectable } from './date-utils';\nimport { NsCalendar } from './calendar';\nimport {\n DateValue,\n DayOfWeek,\n endOfMonth,\n isEqualDay,\n isSameMonth,\n parseDate,\n startOfMonth\n} from '@internationalized/date';\n\nexport type DatepickerInputs = Partial<{\n visibleMonths: number;\n firstDayOfWeek: DayOfWeek;\n maxDate?: DateValue;\n minDate?: DateValue;\n navigation: 'select' | 'arrows' | 'none';\n weekdayStyle: WeekdayStyle;\n}>;\n\n@Injectable({ providedIn: 'root' })\nexport class NsDatepickerService {\n private readonly calendar = inject(NsCalendar);\n private readonly locale = inject(LOCALE_ID);\n\n private _state: NsDatepickerView = {\n maxDate: null,\n minDate: null,\n visibleMonths: 1,\n startDate: null,\n firstDayOfWeek: 'sun',\n endDate: null,\n months: [],\n navigation: 'select',\n weekdayStyle: 'narrow',\n locale: this.locale,\n weekdaysVisible: true,\n disabled: false\n };\n\n private _selected$ = new Subject<DateValue>();\n\n get selected$(): Observable<DateValue> {\n return this._selected$.pipe(filter((date) => date !== null));\n }\n\n private _model$ = new Subject<NsDatepickerView>();\n\n get model$(): Observable<NsDatepickerView> {\n return this._model$.pipe(filter((model) => !!model.months.length));\n }\n\n today(): DateValue {\n return parseDate(this.calendar.today());\n }\n\n set(patch: DatepickerInputs) {\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n\n getMonth(startDate: DateValue) {\n for (let month of this._state.months) {\n if (isSameMonth(startDate, month.startDate)) {\n return month;\n }\n }\n throw new Error(\n `month ${startDate.month} of year ${startDate.year} not found`\n );\n }\n\n navigate(startDate: DateValue) {\n if (startDate != null && !this._state.disabled) {\n this._nextState({ startDate });\n }\n }\n\n select(selectedDate: DateValue, options: { emitEvent?: boolean } = {}) {\n if (selectedDate != null && !this._state.disabled) {\n if (\n !this._state.selectedDate ||\n !isEqualDay(this._state.selectedDate, selectedDate)\n ) {\n this._nextState({ selectedDate });\n }\n\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._selected$.next(selectedDate);\n }\n }\n }\n\n buildMonths(date: DateValue, state: NsDatepickerView): NsMonthView[] {\n const { visibleMonths, months: existingMonths } = state;\n\n // ensure start date for the first month\n const currentMonth = startOfMonth(date);\n\n // move old months to a temporary array\n const monthsToReuse = existingMonths.slice();\n\n // generate new first dates, nullify or reuse months\n return Array.from({ length: visibleMonths }, (_, i) => {\n const startDate = currentMonth.add({ months: i });\n\n const reusedIndex = monthsToReuse.findIndex((month) =>\n isEqualDay(month.startDate, startDate)\n );\n if (reusedIndex !== -1) {\n return monthsToReuse.splice(reusedIndex, 1)[0];\n }\n\n return this.buildMonth(\n startDate,\n state,\n monthsToReuse.shift() || ({} as NsMonthView)\n );\n });\n }\n\n buildMonth(\n startDate: DateValue,\n state: NsDatepickerView,\n month: NsMonthView = {} as NsMonthView\n ): NsMonthView {\n const { firstDayOfWeek, weekdayStyle, locale, weekdaysVisible } = state;\n\n month.label = this.calendar.getFormattedMonth(startDate, locale);\n month.startDate = startDate;\n month.endDate = endOfMonth(startDate);\n month.number = startDate.month;\n month.year = startDate.year;\n month.weeks = month.weeks || [];\n month.weekdays = [];\n\n // month has weekdays\n if (weekdaysVisible) {\n month.weekdays = this.calendar.getWeekDays(\n month.startDate,\n weekdayStyle,\n locale,\n firstDayOfWeek\n );\n }\n\n // month has weeks\n month.weeks = this.calendar.getWeeksInMonth(\n month.startDate,\n locale,\n firstDayOfWeek\n );\n\n return month;\n }\n\n private _nextState(patch: Partial<NsDatepickerView>) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n\n private _updateState(patch: Partial<NsDatepickerView>) {\n const state = Object.assign({}, this._state, patch);\n\n let startDate = state.startDate || this.today();\n\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = startOfMonth(state.selectedDate);\n }\n // initial rebuild via 'navigate()'\n if (startDate) {\n state.months = this.buildMonths(startDate, state);\n state.startDate = state.months[0].startDate;\n state.endDate = state.months[state.months.length - 1].endDate;\n }\n\n return state;\n }\n\n private _patchContexts(state: NsDatepickerView) {\n const { selectedDate, minDate, maxDate, disabled } = state;\n state.months.forEach((month) => {\n month.weeks.forEach((week) => {\n week.days.forEach((day) => {\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected =\n selectedDate !== null && isEqualDay(selectedDate, day.date);\n }\n\n // disability\n const isUnavailable = !isSameMonth(month.startDate, day.date);\n const isNotValid =\n (typeof minDate !== 'undefined' && day.date.compare(minDate) < 0) ||\n (typeof maxDate !== 'undefined' && day.date.compare(maxDate) > 0);\n day.context.disabled = disabled || isUnavailable || isNotValid;\n });\n });\n });\n }\n\n ensureDateValue(date: Date | DateValue | string | null): DateValue | null {\n if (!date) {\n return null;\n }\n if (typeof date === 'string') {\n return parseDate(date);\n }\n if (date instanceof Date) {\n return parseDate(date.toISOString());\n }\n return date as DateValue;\n }\n}\n","import { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\nimport {\n DateFormatter,\n DateValue,\n getLocalTimeZone,\n parseDate\n} from '@internationalized/date';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new NsDateISOParserFormatter()\n})\nexport abstract class NsDateParserFormatter {\n abstract parse(value: string): DateValue | null;\n\n abstract format(date: DateValue): string;\n}\n\n@Injectable()\nexport class NsDateISOParserFormatter extends NsDateParserFormatter {\n private readonly locale = inject(LOCALE_ID);\n private readonly config = inject(DATE_PIPE_DEFAULT_OPTIONS, {\n optional: true\n });\n private readonly formatter = new DateFormatter(this.locale, {\n day: '2-digit',\n month: 'short',\n year: 'numeric'\n });\n private readonly timeZone = getLocalTimeZone();\n private readonly defaultFormat = 'dd MMM, yyyy';\n\n parse(value: string): DateValue | null {\n return value ? parseDate(value) : null;\n }\n\n format(date: DateValue): string {\n const dateTimeFormat = this.config?.dateFormat || this.defaultFormat;\n\n if (!date) {\n return dateTimeFormat;\n }\n\n const parts = this.formatter.formatToParts(date.toDate(this.timeZone));\n const day = parts.find((p) => p.type === 'day')?.value || '';\n const month = parts.find((p) => p.type === 'month')?.value || '';\n const year = parts.find((p) => p.type === 'year')?.value || '';\n\n return dateTimeFormat\n .replace('dd', day)\n .replace('MMM', month)\n .replace('yyyy', year);\n }\n}\n","import { Component, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NsDatepickerService } from './date-picker.service';\nimport { NsDayView, NsMonthView } from './date-picker-view';\n\n@Component({\n selector: 'ns-date-picker-month',\n imports: [CommonModule],\n template: `\n <table class=\"ns-date-picker__month\">\n <thead>\n <tr>\n @for (weekday of month().weekdays; track weekday) {\n <th class=\"ns-date-picker__weekday\">{{ weekday | titlecase }}</th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (week of month().weeks; track week.number) {\n <tr>\n @for (day of week.days; track day.number) {\n <td\n [ngClass]=\"{\n 'ns-date-picker--selected': day.context.selected,\n 'ns-date-picker--disabled': day.context.disabled,\n 'ns-date-picker--current': day.context.isToday\n }\"\n >\n <button\n class=\"ns-date-picker__day\"\n (click)=\"doSelect(day)\"\n [disabled]=\"day.context.disabled\"\n >\n {{ day.date.day }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n `,\n styleUrl: './date-picker-month.component.scss'\n})\nexport class NsDatePickerMonthComponent {\n readonly month = input<NsMonthView>(undefined);\n\n private readonly service = inject(NsDatepickerService);\n\n doSelect(day: NsDayView) {\n if (!day.context.disabled) {\n this.service.select(day.date, { emitEvent: true });\n }\n }\n}\n","import { Component, inject, input } from '@angular/core';\nimport { NsButtonComponent } from '../../../button';\nimport { NsMonthView } from './date-picker-view';\nimport { NsDatepickerService } from './date-picker.service';\nimport { TitleCasePipe } from '@angular/common';\n\n@Component({\n selector: 'ns-date-picker-navigation',\n imports: [NsButtonComponent, TitleCasePipe],\n standalone: true,\n template: `\n <div class=\"ns-date-picker__wrap\">\n <ns-button icon=\"angle-left\" (click)=\"prev()\" />\n <span class=\"ns-date-picker__month-title\">{{\n month().label | titlecase\n }}</span>\n <ns-button icon=\"angle-right\" (click)=\"next()\" />\n </div>\n `,\n host: {\n '[class.ns-date-picker__navigation]': 'true'\n },\n styles: `\n .ns-date-picker__wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #eee;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n\n &::ng-deep .btn {\n min-width: unset;\n padding: unset;\n }\n }\n `\n})\nexport class NsDatePickerNavigationComponent {\n readonly month = input<NsMonthView>(undefined);\n\n private readonly service = inject(NsDatepickerService);\n\n prev() {\n this.service.navigate(this.month().startDate.subtract({ months: 1 }));\n }\n\n next() {\n this.service.navigate(this.month().startDate.add({ months: 1 }));\n }\n}\n","import { Component, effect, inject, input } from '@angular/core';\n\nimport { NsDatePickerMonthComponent } from './date-picker-month.component';\nimport { NsDatePickerNavigationComponent } from './date-picker-navigation.component';\nimport { NsMonthView } from './date-picker-view';\nimport { NsDatepickerService } from './date-picker.service';\nimport { NsPlacement } from '../../../../types';\nimport { DateValue } from '@internationalized/date';\n\n@Component({\n selector: 'ns-date-picker-menu',\n standalone: true,\n imports: [NsDatePickerMonthComponent, NsDatePickerNavigationComponent],\n template: `\n <ns-date-picker-navigation [month]=\"model\" />\n <ns-date-picker-month [month]=\"model\" />\n `,\n host: {\n '[class.ns-date-picker__menu]': 'true',\n '[class.ns-date-picker__menu--start]': 'placement() == \"bottom-start\"',\n '[class.ns-date-picker__menu--end]': 'placement() == \"bottom-end\"'\n },\n styleUrls: ['./date-picker-menu.component.scss']\n})\nexport class NsDatePickerMenuComponent {\n public model: NsMonthView;\n\n readonly placement = input<NsPlacement>(undefined);\n readonly startDate = input<DateValue>(undefined);\n\n private readonly service = inject(NsDatepickerService);\n\n private readonly syncStartDate = effect(() => {\n const firstDate = this.startDate();\n if (firstDate) {\n this.model = this.service.getMonth(firstDate);\n }\n });\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: 'ns-dropdown-item'\n})\nexport class NsDropdownItemDirective {\n readonly label = input<string>(undefined);\n readonly value = input<string | number>(undefined);\n readonly disabled = input<boolean>(false);\n\n constructor() {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n effect,\n forwardRef,\n HostListener,\n OnInit,\n QueryList,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../form/models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsDropdownItemDirective } from './directives/dropdown-item.directive';\nimport { NgClass } from '@angular/common';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n host: {\n '[class.dropdown]': 'true',\n '[class.ns-dropdown__filterable]': 'filterable()',\n '[class.show]': 'show'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDropdownComponent),\n multi: true\n }\n ],\n imports: [NgClass, FormsModule, NsIconsComponent]\n})\nexport class NsDropdownComponent\n extends NsValueAccessor<string | number>\n implements OnInit, AfterContentInit\n{\n readonly labelField = input('label');\n readonly valueField = input('value');\n readonly iconName = input<string>(undefined);\n readonly defaultFirst = input<boolean>(undefined);\n readonly placement = input<'start' | 'end'>('start');\n readonly filterable = input<boolean>(undefined);\n readonly collectionInput = input<Record<string, unknown>[]>([], {\n alias: 'collection'\n });\n\n @ViewChild('input', { read: ElementRef })\n searchRef: ElementRef<HTMLInputElement>;\n @ContentChildren(NsDropdownItemDirective)\n items: QueryList<NsDropdownItemDirective>;\n\n public show: boolean = false;\n\n private _filtered: Record<string, unknown>[];\n private _collection: Record<string, unknown>[] = [];\n private _search: string;\n\n constructor() {\n super();\n effect(() => this.setCollection(this.collectionInput()));\n }\n\n ngOnInit(): void {}\n\n ngAfterContentInit() {\n if (!this.collection.length && !!this.items) {\n this.setCollection(\n this.items.toArray().map((item) => ({\n label: item.label(),\n value: item.value(),\n disabled: item.disabled()\n }))\n );\n }\n }\n\n private setCollection(source: Record<string, unknown>[]): void {\n this._collection = this._filtered = source;\n }\n\n get collection() {\n return this.filterable() ? this._filtered : this._collection;\n }\n\n get selected() {\n return this.collection.find(\n (item) => item[this.valueField()] == this.value()\n );\n }\n\n set search(value: string) {\n this._search = value;\n this._filtered = this._collection.filter((item) =>\n String(item[this.labelField()])\n .toLowerCase()\n .includes(value.toLowerCase())\n );\n this.show = !!value;\n }\n\n get search() {\n return this._search;\n }\n\n select(item: Record<string, unknown>): void {\n const value = item[this.valueField()];\n if (typeof value === 'string' || typeof value === 'number') {\n this.setValue(value);\n }\n }\n\n @HostListener('click', ['$event'])\n toggle(event: MouseEvent) {\n event.preventDefault();\n if (!this.disabled()) {\n this.show = !this.show;\n if (this.filterable()) {\n if (this.show) {\n this.searchRef.nativeElement.focus();\n } else {\n this._search = '';\n this._filtered = this._collection;\n }\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n keyDown(event: KeyboardEvent) {\n if (this.show) {\n let index: number = this.selected\n ? this.collection.findIndex(\n (item) =>\n this.selected[this.valueField()] === item[this.valueField()]\n )\n : -1;\n switch (event.key) {\n case 'ArrowUp':\n if (index >= 1) {\n this.setValue(String(this.collection[--index][this.valueField()]));\n }\n break;\n case 'ArrowDown':\n if (index < this.collection.length - 1) {\n this.setValue(String(this.collection[++index][this.valueField()]));\n }\n break;\n case 'Enter':\n event.preventDefault();\n this._search = '';\n this.show = false;\n }\n } else if (event.key == 'Enter') {\n event.preventDefault();\n this._search = '';\n this._filtered = this._collection;\n this.show = true;\n }\n }\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n@if (filterable()) {\n <div class=\"ns-dropdown__search\" [class.disabled]=\"disabled()\">\n <div\n class=\"ns-dropdown__value\"\n [ngClass]=\"{ 'ns-dropdown__placeholder': !selected || show }\"\n [hidden]=\"!!search\"\n >\n <span class=\"ns-dropdown__value-label\">\n {{ !!selected ? selected[labelField()] : placeholder() }}\n </span>\n </div>\n\n <div class=\"ns-dropdown__input\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"search\"\n #input\n [disabled]=\"disabled()\"\n [id]=\"id\"\n />\n </div>\n\n <svg\n class=\"dropdown-toggle\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n height=\"12px\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n </div>\n} @else {\n <button\n class=\"btn btn__secondary\"\n [id]=\"id\"\n type=\"button\"\n [disabled]=\"disabled()\"\n >\n @if (iconName()) {\n <ns-icon [name]=\"iconName()\" [size]=\"16\" />\n }\n @if (placeholder() && selected) {\n <label class=\"form-label\">\n {{ placeholder() }}: <span [innerHtml]=\"selected[labelField()]\"></span>\n </label>\n } @else {\n <label\n class=\"form-label\"\n [innerHtml]=\"!!selected ? selected[labelField()] : placeholder()\"\n ></label>\n }\n\n <svg\n class=\"dropdown-toggle\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n height=\"12px\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n </button>\n}\n\n<ul\n class=\"dropdown-menu\"\n [attr.aria-labelledby]=\"id\"\n [ngClass]=\"{\n show: show,\n 'dropdown-start': placement() !== 'end',\n 'dropdown-end': placement() == 'end'\n }\"\n (mouseleave)=\"show = false\"\n>\n @for (item of collection; track item) {\n <li>\n <button\n class=\"dropdown-item\"\n [ngClass]=\"{ active: selected === item }\"\n (click)=\"select(item)\"\n >\n <svg\n class=\"icon-check-mark\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n height=\"16px\"\n width=\"16px\"\n >\n <path\n d=\"M6.19,14.51a.77.77,0,0,1-.57-.25l-4.2-4.8a.75.75,0,0,1,1.13-1l3.56,4.06L13.36,1.82a.75.75,0,0,1,1-.21.76.76,0,0,1,.21,1.05L6.81,14.18a.73.73,0,0,1-.58.33Z\"\n ></path>\n </svg>\n <span>{{ item[labelField()] }}</span>\n </button>\n </li>\n }\n @if (!collection?.length) {\n <button class=\"dropdown-item\">\n <span>No items found</span>\n </button>\n }\n</ul>\n","import {\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n createComponent,\n DestroyRef,\n ElementRef,\n EnvironmentInjector,\n forwardRef,\n inject,\n Injector,\n NgZone,\n OnInit,\n Type,\n DOCUMENT,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDatepickerView, WeekdayStyle } from './date-picker-view';\nimport { DatepickerInputs, NsDatepickerService } from './date-picker.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NsDateParserFormatter } from './date-parser-formatter';\n\nimport { NsDatePickerMenuComponent } from './date-picker-menu.component';\nimport { nsAutoClose } from '@ng-solid/core';\nimport { Subject } from 'rxjs';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { DateValue, DayOfWeek } from '@internationalized/date';\nimport { NsDateView, NsPlacement } from '../../../../types';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../../../dropdown';\n\n@Component({\n selector: 'ns-date-picker',\n imports: [\n FormsModule,\n NsIconsComponent,\n NsDropdownComponent,\n NsDropdownItemDirective\n ],\n standalone: true,\n template: `\n @if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n }\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"form-control\" (click)=\"toggleCalendar()\">\n <ns-icon name=\"calendar\" size=\"18\" />\n\n <input\n type=\"text\"\n class=\"ns-date-picker__input\"\n readonly\n [ngModel]=\"value()\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"onTouched()\"\n #input\n />\n </div>\n </div>\n\n <div class=\"col-md-4\">\n <ns-dropdown iconName=\"clock\">\n <ns-dropdown-item label=\"12:00 AM\" value=\"0\" />\n </ns-dropdown>\n </div>\n </div>\n `,\n styleUrls: ['./date-picker.component.scss'],\n host: {\n '[class.ns-date-picker]': 'true',\n '[class.ns-date-picker--show]': 'isOpen()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDatePickerComponent),\n multi: true\n },\n NsDatepickerService\n ]\n})\nexport class NsDatePickerComponent\n extends NsValueAccessor<string>\n implements OnInit\n{\n model: NsDatepickerView;\n\n private readonly service = inject(NsDatepickerService);\n private readonly parserFormatter = inject(NsDateParserFormatter);\n private readonly elRef = inject(ElementRef<HTMLInputElement>);\n private readonly appRef = inject(ApplicationRef);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(EnvironmentInjector);\n private readonly ngZone = inject(NgZone);\n private readonly document = inject(DOCUMENT);\n\n readonly autoClose = input<boolean | 'inside' | 'outside'>(true);\n readonly placement = input<NsPlacement>('bottom-start');\n readonly view = input<NsDateView>(undefined);\n readonly visibleMonths = input(1);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n readonly maxDate = input<DateValue | Date | string>(undefined);\n readonly minDate = input<DateValue | Date | string>(undefined);\n readonly navigation = input<'select' | 'arrows' | 'none'>('select');\n readonly weekdayStyle = input<WeekdayStyle>('short');\n\n private controlValue: DateValue;\n private popupRef: ComponentRef<NsDatePickerMenuComponent> | null = null;\n private destroyCloseHandlers$ = new Subject<void>();\n\n ngOnInit(): void {\n if (this.model === undefined) {\n const inputs: DatepickerInputs = {\n visibleMonths: this.visibleMonths(),\n firstDayOfWeek: this.firstDayOfWeek(),\n navigation: this.navigation(),\n minDate: this.service.ensureDateValue(this.minDate()) || undefined,\n maxDate: this.service.ensureDateValue(this.maxDate()) || undefined,\n weekdayStyle: this.weekdayStyle()\n };\n this.service.set(inputs);\n }\n\n this.service.selected$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date) => {\n this.value.set(this.parserFormatter.format(date));\n this.onChange(date.toString());\n const autoClose = this.autoClose();\n if (autoClose === true || autoClose === 'inside') {\n this.close();\n }\n this.cdRef.markForCheck();\n });\n\n this.service.model$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((model) => {\n this.model = model;\n this.cdRef.markForCheck();\n });\n }\n\n override writeValue(value: string) {\n this.controlValue = this.service.ensureDateValue(value);\n this.value.set(this.parserFormatter.format(this.controlValue));\n }\n\n isOpen() {\n return !!this.popupRef;\n }\n\n toggleCalendar(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private open() {\n if (!this.isOpen()) {\n this.popupRef = this._createComponent(NsDatePickerMenuComponent);\n this.appRef.attachView(this.popupRef.hostView);\n this.elRef.nativeElement.appendChild(\n this.popupRef.location.nativeElement\n );\n this._applyDatepickerInputs(this.popupRef);\n this._setCloseHandlers();\n this.popupRef.changeDetectorRef.detectChanges();\n }\n }\n\n private _createComponent<T>(component: Type<T>) {\n return createComponent(component, {\n environmentInjector: this.injector,\n elementInjector: Injector.create({\n providers: [\n {\n provide: NsDatepickerService,\n useFactory: () => this.service\n }\n ]\n })\n });\n }\n\n private _applyDatepickerInputs(\n menuRef: ComponentRef<NsDatePickerMenuComponent>\n ): void {\n menuRef.setInput(\n 'startDate',\n this.model?.startDate || this.service.today()\n );\n menuRef.setInput('placement', this.placement());\n }\n\n private close() {\n if (this.isOpen()) {\n this.elRef.nativeElement.removeChild(\n this.popupRef.location.nativeElement\n );\n this.popupRef?.destroy();\n this.popupRef = null;\n this.destroyCloseHandlers$.next();\n this.cdRef.markForCheck();\n }\n }\n\n private _setCloseHandlers() {\n const popupRef = this.popupRef;\n if (!popupRef) {\n return;\n }\n\n nsAutoClose(\n this.ngZone,\n this.document,\n this.autoClose(),\n () => this.close(),\n this.destroyCloseHandlers$,\n [],\n [this.elRef.nativeElement, popupRef.location.nativeElement]\n );\n }\n}\n","import { Directive, forwardRef, inject } from '@angular/core';\nimport { NsValueAccessor } from '../models/value-accessor';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsDateParserFormatter } from '../components/date-picker/date-parser-formatter';\n\n@Directive({\n selector: 'ns-date-range-start',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDateRangeStartDirective),\n multi: true\n }\n ]\n})\nexport class NsDateRangeStartDirective extends NsValueAccessor<string> {\n private parserFormatter = inject(NsDateParserFormatter);\n\n override writeValue(value: string) {\n const nsDate = this.parserFormatter.parse(value);\n this.value.set(this.parserFormatter.format(nsDate));\n }\n}\n\n@Directive({\n selector: 'ns-date-range-end',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDateRangeEndDirective),\n multi: true\n }\n ]\n})\nexport class NsDateRangeEndDirective extends NsValueAccessor<string> {\n private parserFormatter = inject(NsDateParserFormatter);\n\n override writeValue(value: string) {\n const nsDate = this.parserFormatter.parse(value);\n this.value.set(this.parserFormatter.format(nsDate));\n }\n}\n","import { Component, ContentChild, input } from '@angular/core';\n\nimport {\n NsDateRangeEndDirective,\n NsDateRangeStartDirective\n} from '../../directives/date-range.directive';\n\nimport { NsDatePickerComponent } from './date-picker.component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'ns-date-range',\n standalone: true,\n imports: [NsDatePickerComponent, FormsModule],\n template: `\n <div class=\"ns-date-range__wrap\">\n @if (start) {\n <ns-date-picker\n [label]=\"start.label()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"start.value()\"\n (ngModelChange)=\"start.setValue($event)\"\n />\n }\n @if (end) {\n <ns-date-picker\n [label]=\"end.label()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"end.value()\"\n (ngModelChange)=\"end.setValue($event)\"\n />\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n position: relative;\n max-width: 30rem;\n }\n\n .ns-date-range__wrap {\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: 1rem;\n }\n `,\n host: {\n '[class.ns-date-range]': 'true'\n }\n})\nexport class NsDateRangePickerComponent {\n readonly placeholder = input<string>(undefined);\n\n @ContentChild(NsDateRangeStartDirective) start: NsDateRangeStartDirective;\n @ContentChild(NsDateRangeEndDirective) end: NsDateRangeEndDirective;\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ns-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputComponent),\n multi: true\n }\n ],\n imports: [FormsModule]\n})\nexport class NsInputComponent extends NsValueAccessor<string> {\n readonly ariaLabel = input<string>(undefined);\n readonly ariaDescribedBy = input<string>(undefined);\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n\n<input\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n class=\"form-control\"\n [attr.id]=\"id\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n (blur)=\"onTouched()\"\n/>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ns-input-group-addon',\n template: '<ng-content></ng-content>',\n styleUrls: ['./input-group-addon.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.ns-input-group-addon]': 'true'\n }\n})\nexport class NsInputGroupAddonComponent {}\n","import {\n booleanAttribute,\n Component,\n ContentChild,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { NsInputComponent } from '../input';\nimport { NsInputGroupAddonComponent } from './input-group-addon.component';\n\nexport type NsInputGroupSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'ns-input-group',\n templateUrl: './input-group.component.html',\n styleUrls: ['./input-group.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n imports: [NsInputGroupAddonComponent],\n host: {\n '[class.ns-input-group]': 'true'\n }\n})\nexport class NsInputGroupComponent {\n readonly label = input<string>(undefined);\n readonly prepend = input<string>(undefined);\n readonly append = input<string>(undefined);\n\n readonly size = input<NsInputGroupSize>('md');\n\n readonly wrap = input(true, { transform: booleanAttribute });\n\n @ContentChild(NsInputComponent)\n primaryInput?: NsInputComponent;\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"primaryInput?.id\">{{ label() }}</label>\n}\n\n<div\n class=\"input-group\"\n [class.input-group--sm]=\"size() === 'sm'\"\n [class.input-group--lg]=\"size() === 'lg'\"\n [class.input-group--nowrap]=\"!wrap()\"\n>\n @if (prepend()) {\n <ns-input-group-addon>{{ prepend() }}</ns-input-group-addon>\n }\n <ng-content></ng-content>\n @if (append()) {\n <ns-input-group-addon>{{ append() }}</ns-input-group-addon>\n }\n</div>\n","export function clamp(\n value: number,\n min: number = -Infinity,\n max: number = Infinity\n): number {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function roundToStepPrecision(value: number, step: number): number {\n let roundedValue = value;\n let stepString = step.toString();\n let pointIndex = stepString.indexOf('.');\n let precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n\nexport function snapValueToStep(\n value: number,\n min: number | undefined,\n max: number | undefined,\n step: number\n): number {\n min = Number(min);\n max = Number(max);\n let remainder = (value - (isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(\n Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder,\n step\n );\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue =\n min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n\n return snappedValue;\n}\n\nexport const handleDecimalOperation = (\n operator: '-' | '+',\n value1: number,\n value2: number\n): number => {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength =\n (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength =\n (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = Math.pow(\n 10,\n Math.max(value1DecimalLength, value2DecimalLength)\n );\n\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n\n return result;\n};\n","import {\n Component,\n DEFAULT_CURRENCY_CODE,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n LOCALE_ID,\n numberAttribute,\n OnInit,\n Provider,\n Renderer2,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\nimport { clamp, handleDecimalOperation, snapValueToStep } from './utils';\nimport { NS_FORMAT_OPTIONS } from '@ng-solid/core';\n\nconst NS_INPUT_NUMBER_PROVIDER: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputNumberComponent),\n multi: true\n};\n\n@Component({\n selector: 'ns-input-number',\n imports: [FormsModule],\n template: ` @if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n }\n\n <div class=\"input-group\">\n <input\n #input\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.id]=\"id\"\n [attr.min]=\"minValue()\"\n [attr.max]=\"maxValue()\"\n [attr.readonly]=\"readonly()\"\n [attr.step]=\"step()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"value()\"\n (input)=\"onInput($event)\"\n />\n </div>`,\n styleUrls: ['./input-number.component.scss'],\n providers: [NS_INPUT_NUMBER_PROVIDER]\n})\nexport class NsInputNumberComponent\n extends NsValueAccessor<string | number>\n implements OnInit\n{\n readonly step = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly precision = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly minValue = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly maxValue = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly formatStyle = input<Intl.NumberFormatOptions['style']>('decimal');\n\n @ViewChild('input', { static: true }) input: ElementRef<HTMLInputElement>;\n\n public numberInput: number = 0;\n\n private readonly defaultOptions = inject(NS_FORMAT_OPTIONS);\n private readonly currency = inject(DEFAULT_CURRENCY_CODE);\n private readonly renderer = inject(Renderer2);\n private readonly locale = inject(LOCALE_ID);\n\n private formatter: NumberFormatter;\n private parser: NumberParser;\n\n ngOnInit() {\n this.formatter = new NumberFormatter(this.locale, this.formatOptions);\n this.parser = new NumberParser(this.locale, this.formatOptions);\n }\n\n get formatOptions(): Intl.NumberFormatOptions {\n return {\n ...this.defaultOptions.number,\n style: this.formatStyle(),\n currency: this.currency,\n minimumFractionDigits: this.precision(),\n maximumFractionDigits: this.precision()\n };\n }\n\n writeValue(value: string | number) {\n if (value === null) {\n value = NaN;\n } else if (typeof value === 'string') {\n value = Number(value);\n }\n\n if (value === undefined && !isNaN(value)) {\n const step = this.step();\n if (step !== undefined && !isNaN(step)) {\n value = snapValueToStep(value, this.minValue(), this.maxValue(), step);\n } else {\n value = clamp(value, this.minValue(), this.maxValue());\n }\n }\n\n const formattedValue = this.formatter.format(!isNaN(value) ? value : 0);\n this.value.set(formattedValue);\n this.numberInput = this.parser.parse(formattedValue);\n }\n\n override setValue(value: string): void {\n if (this.value() !== value) {\n let parsedValue = this.parser.parse(value);\n\n const step = this.step();\n if (step !== undefined && !isNaN(step)) {\n parsedValue = snapValueToStep(\n parsedValue,\n this.minValue(),\n this.maxValue(),\n step\n );\n } else {\n parsedValue = clamp(parsedValue, this.minValue(), this.maxValue());\n }\n\n if (isNaN(parsedValue)) {\n parsedValue = 0; // Reset to 0 if parsing fails\n }\n\n if (this.numberInput !== parsedValue) {\n this.value.set(value);\n this.numberInput = parsedValue;\n this.onChange(parsedValue);\n }\n }\n }\n\n onInput(event: Event) {\n const { value } = event.target as HTMLInputElement;\n if (!this.parser.isValidPartialNumber(value)) {\n if (this.type() === 'currency') {\n this.renderer.setProperty(\n this.input.nativeElement,\n 'value',\n this.formatOptions.currency\n );\n }\n this.setValue('');\n } else {\n this.setValue(value);\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (!this.disabled()) {\n let newValue: number | null = NaN;\n\n if (event.key === 'ArrowUp') {\n newValue = this.safeNextStep('+', this.minValue());\n } else if (event.key === 'ArrowDown') {\n newValue = this.safeNextStep('-', this.maxValue());\n }\n\n if (!isNaN(newValue)) {\n event?.preventDefault();\n this.setValue(this.formatter.format(newValue));\n }\n }\n }\n\n @HostListener('focusout', ['$event'])\n onFocusOut(event: FocusEvent) {\n if (!this.disabled()) {\n event?.preventDefault();\n this.value.set(this.formatter.format(this.numberInput));\n }\n }\n\n private safeNextStep = (operation: '+' | '-', minMax: number = 0) => {\n let prev = this.numberInput;\n\n const step = this.step();\n let clampStep = step !== undefined && !isNaN(step) ? step : 1;\n const stepValue = this.step();\n if (\n this.formatOptions.style === 'percent' &&\n (stepValue === undefined || isNaN(stepValue))\n ) {\n clampStep = 0.01;\n }\n\n if (isNaN(prev)) {\n // if the input is empty, start from the min/max value when incrementing/decrementing,\n // or zero if there is no min/max value defined.\n let newValue = isNaN(minMax) ? 0 : minMax;\n return snapValueToStep(\n newValue,\n this.minValue(),\n this.maxValue(),\n clampStep\n );\n } else {\n // otherwise, first snap the current value to the nearest step. if it moves in the direction\n // we're going, use that value, otherwise add the step and snap that value.\n let newValue = snapValueToStep(\n prev,\n this.minValue(),\n this.maxValue(),\n clampStep\n );\n if (\n (operation === '+' && newValue > prev) ||\n (operation === '-' && newValue < prev)\n ) {\n return newValue;\n }\n\n return snapValueToStep(\n handleDecimalOperation(operation, prev, clampStep),\n this.minValue(),\n this.maxValue(),\n clampStep\n );\n }\n };\n}\n","import { Component, forwardRef, OnInit, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-password',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsPasswordComponent),\n multi: true\n }\n ],\n imports: [RouterLink, FormsModule, NsIconsComponent]\n})\nexport class NsPasswordComponent extends NsValueAccessor implements OnInit {\n readonly forgotLink = input<string>(undefined);\n readonly showAndHide = input<boolean>(undefined);\n\n public show: boolean;\n\n constructor() {\n super();\n }\n\n ngOnInit() {}\n\n toggle() {\n this.show = !this.show;\n }\n}\n","@if (label()) {\n <label class=\"form-label\">\n {{ label() }}\n @if (forgotLink()) {\n <a [routerLink]=\"forgotLink()\">Olvido su contraseña?</a>\n }\n </label>\n}\n\n<div class=\"input-group\">\n <input\n class=\"form-control\"\n [type]=\"show ? 'input' : 'password'\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [placeholder]=\"placeholder()\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n />\n\n @if (showAndHide()) {\n <div class=\"input-group-append\" (click)=\"toggle()\">\n <span class=\"input-group-text\">\n <ns-icon [name]=\"show ? 'eye-hide' : 'eye-show'\" />\n </span>\n </div>\n }\n</div>\n","import {\n booleanAttribute,\n Component,\n computed,\n forwardRef,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { YesNo } from '@ng-solid/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ns-switch',\n imports: [FormsModule, NgClass],\n template: `\n <input\n type=\"checkbox\"\n class=\"ns-switch__input\"\n role=\"switch\"\n [ngModel]=\"checked()\"\n (ngModelChange)=\"setValue($event)\"\n [ngClass]=\"{ 'ns-switch__input--success': theme() == 'success' }\"\n [attr.id]=\"id\"\n [disabled]=\"disabled()\"\n />\n <label class=\"ns-switch__label\" [attr.for]=\"id\">{{ label() }}</label>\n `,\n styleUrls: ['./switch.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsSwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class.ns-switch]': 'true',\n '[class.ns-switch--small]': 'size() === \"small\"',\n '[class.ns-switch--large]': 'size() === \"large\"'\n }\n})\nexport class NsSwitchComponent extends NsValueAccessor<boolean | string> {\n readonly boolean = input<boolean, unknown>(true, {\n transform: booleanAttribute\n });\n readonly size = input<'large' | 'small'>('small');\n readonly theme = input<'primary' | 'success'>('primary');\n\n readonly checked = computed(() => {\n const value = this.value();\n return typeof value === 'boolean' ? value : YesNo.isYes(value);\n });\n\n override setValue(checked: boolean): void {\n super.setValue(this.boolean() ? checked : YesNo.yesOrNo(checked));\n }\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ns-textarea',\n template: `\n @if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n }\n\n <textarea\n class=\"form-control\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [id]=\"id\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n ></textarea>\n `,\n styleUrls: ['./text-area.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsTextAreaComponent),\n multi: true\n }\n ],\n imports: [FormsModule]\n})\nexport class NsTextAreaComponent extends NsValueAccessor<string> {\n readonly rows = input<number>(3);\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Renderer2,\n input\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../models/value-accessor';\n\n@Component({\n selector: 'ns-content-editable',\n template: '',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsContentEditableComponent),\n multi: true\n }\n ],\n styles: [\n ':host{display:block; position:relative; background-color:var(--ns-content-bg, #fff); width:100%; height:fit-content; min-height:7rem; outline:none;}',\n ':host.ns-content--disabled{background-color: var(--ns-content-disabled-bg,#e9ecef); opacity: 0.65;}'\n ],\n host: {\n '[class.ns-content--disabled]': 'disabled()'\n }\n})\nexport class NsContentEditableComponent extends NsValueAccessor<string> {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly maxLength = input<number>(undefined, { alias: 'maxlength' });\n\n @HostBinding('attr.contenteditable')\n enabled: boolean = true;\n\n override writeValue(value: string): void {\n if (typeof value !== 'undefined') {\n this.renderer.setProperty(\n this.elementRef.nativeElement,\n 'innerHTML',\n value || ''\n );\n }\n }\n\n @HostListener('input')\n onInput(): void {\n this.onChange(this.elementRef.nativeElement.innerHTML);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched();\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n const maxLength = this.maxLength();\n if (\n maxLength &&\n this.elementRef.nativeElement.innerText.length >= maxLength &&\n event.key !== 'Backspace'\n ) {\n event.preventDefault();\n }\n }\n\n override setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n this.enabled = !isDisabled;\n }\n}\n","// COMPONENTS\nexport * from './components/checkbox';\nexport * from './components/date-picker';\nexport * from './components/input';\nexport * from './components/input-group';\nexport * from './components/input-number';\nexport * from './components/password';\nexport * from './components/switch';\nexport * from './components/text-area';\n\n// DIRECTIVES\nexport * from './directives';\n\n// MODELS\nexport * from './models';\n","import {\n Component,\n ContentChildren,\n forwardRef,\n QueryList\n} from '@angular/core';\n\nimport { NsValueAccessor } from '../form';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsButtonComponent } from '../button';\n\n@Component({\n selector: 'ns-button-group',\n standalone: true,\n imports: [],\n template: `\n @if (label()) {\n <label class=\"form-label\">{{ label() }}</label>\n }\n\n <div\n class=\"btn__group\"\n role=\"group\"\n aria-label=\"Basic radio toggle button group\"\n >\n @for (item of items; track item; let i = $index; let isFirst = $first) {\n <input\n type=\"radio\"\n class=\"btn__check\"\n autocomplete=\"off\"\n [attr.id]=\"'btn-group__' + i\"\n [checked]=\"value() == item.value()\"\n (click)=\"setValue(item.value())\"\n />\n <label class=\"btn btn__outline-primary\" [attr.for]=\"'btn-group__' + i\">\n {{ item.label() }}\n </label>\n }\n </div>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsButtonGroupComponent),\n multi: true\n }\n ],\n styleUrls: ['./button-group.component.scss'],\n host: {\n '[class.ns-button-group]': 'true'\n }\n})\nexport class NsButtonGroupComponent extends NsValueAccessor<string | number> {\n @ContentChildren(NsButtonComponent) items: QueryList<NsButtonComponent>;\n}\n","import { Component, OnInit, input, output } from '@angular/core';\nimport { NsComment } from './interfaces/comment';\nimport { NgClass } from '@angular/common';\nimport { NsAvatarComponent } from '../avatar';\nimport { NsContentEditableComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\nimport { NsHumanizePipe, NsSafeHtmlPipe } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-comment',\n templateUrl: './comment.component.html',\n styleUrls: ['./comment.component.scss'],\n imports: [\n NgClass,\n NsAvatarComponent,\n NsContentEditableComponent,\n FormsModule,\n NsSafeHtmlPipe,\n NsHumanizePipe\n ]\n})\nexport class NsCommentComponent implements OnInit {\n readonly title = input<string>(undefined);\n readonly description = input<string>(undefined);\n readonly placeholder = input<string>(undefined);\n readonly messages = input<NsComment[]>([]);\n readonly cover = input<{\n url: string;\n alt?: string;\n }>(undefined);\n readonly submitText = input<string>(undefined);\n readonly logged = input<boolean>(undefined);\n readonly maxLength = input<number>(128);\n readonly disabled = input<boolean>(undefined);\n\n readonly commit = output<string>();\n\n public invalid: boolean = false;\n public content: string = '';\n\n private clearEmptyValues: RegExp = new RegExp(/(<div><br><\\/div>)*/g);\n\n constructor() {}\n\n ngOnInit(): void {}\n\n publish() {\n if (this.content) {\n this.commit.emit(this.content.replace(this.clearEmptyValues, ''));\n this.content = '';\n } else {\n this.invalid = true;\n }\n }\n\n get counter() {\n const characters = this.maxLength() - this.content.length;\n return characters > 0 ? characters : 0;\n }\n}\n","@if (logged()) {\n <div class=\"ns-comment-box\" [ngClass]=\"{ 'ns-comment-invalid': invalid }\">\n <ns-avatar class=\"ns-comment-avatar\" [src]=\"cover()?.url\" />\n\n <div class=\"ns-comment-input-wrap\">\n <div class=\"ns-comment-input\">\n <ns-content-editable\n class=\"ns-comment-input-content\"\n [maxlength]=\"maxLength()\"\n [(ngModel)]=\"content\"\n [disabled]=\"disabled()\"\n />\n\n @if (!content) {\n <span class=\"ns-comment-input-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n <div class=\"ns-comment-footer\">\n <span class=\"ns-comment-counter\">Quedan {{ counter }} caracteres</span>\n\n @if (submitText()) {\n <button\n class=\"ns-comment-submit\"\n (click)=\"publish()\"\n [disabled]=\"disabled()\"\n >\n {{ submitText() }}\n </button>\n }\n </div>\n </div>\n </div>\n} @else {\n <h4 class=\"ns-comment-title\">\n {{ title() }} <br />\n <small\n class=\"ns-comment-description\"\n [innerHTML]=\"description() | nsSafeHtml\"\n ></small>\n </h4>\n\n <div class=\"ns-comment-logout\">\n <ng-content />\n </div>\n}\n@if (messages().length) {\n <ul class=\"ns-comment-list\">\n @for (comment of messages(); track comment) {\n <li class=\"ns-comment\">\n <ns-avatar\n class=\"ns-comment-cover\"\n [src]=\"comment.cover?.url\"\n size=\"medium\"\n />\n\n <div class=\"ns-comment-wrap\">\n <div class=\"ns-comment-user-wrap\">\n @if (comment?.author; as author) {\n <a [attr.href]=\"author.link\" class=\"ns-comment-author\">\n {{ author.name }}\n </a>\n }\n @if (comment?.created; as date) {\n <span class=\"ns-comment-date\">{{ date | nsHumanize }}</span>\n }\n\n <div\n class=\"ns-comment-message\"\n [innerHTML]=\"comment?.message | nsSafeHtml\"\n ></div>\n </div>\n </div>\n </li>\n }\n </ul>\n}\n","export enum Commands {\n BOLD = 'bold',\n CREATE_LINK = 'createLink',\n FONT_NAME = 'fontName',\n FONT_SIZE = 'fontSize',\n FORMAT_BLOCK = 'formatBlock',\n INSERT_HTML = 'insertHTML',\n INSERT_IMAGE = 'insertImage',\n INSERT_ORDERED_LIST = 'insertOrderedList',\n INSERT_UNORDERED_LIST = 'insertUnorderedList',\n INSERT_TEXT = 'insertText',\n ITALIC = 'italic',\n JUSTIFY_CENTER = 'justifyCenter',\n JUSTIFY_FULL = 'justifyFull',\n JUSTIFY_LEFT = 'justifyLeft',\n JUSTIFY_RIGHT = 'justifyRight',\n UNDERLINE = 'underline',\n UNLINK = 'unlink',\n TEXT_COLOR = 'foreColor',\n BACKGROUND_COLOR = 'backColor'\n}\n","export const LABELS_DEFAULT: Record<string, string> = {\n bold: 'Bold',\n italic: 'Italic',\n code: 'Code',\n underline: 'Underline',\n strike: 'Strike',\n blockquote: 'Blockquote',\n bullet_list: 'Bullet List',\n ordered_list: 'Ordered List',\n paragraph: 'Paragraph',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n align_left: 'Left Align',\n align_center: 'Center Align',\n align_right: 'Right Align',\n align_justify: 'Justify',\n text_color: 'Text Color',\n background_color: 'Background Color',\n insert_link: 'Insert Link',\n link: 'Paste your link',\n text: 'Text to display',\n tooltip_link: 'Tooltip',\n open_new_window: 'Open link in new window',\n submit_link: 'Insert',\n remove_color: 'Remove'\n};\n\nexport type LabelsKeys = keyof typeof LABELS_DEFAULT;\n\nexport class Labels {\n private readonly storage = LABELS_DEFAULT;\n\n constructor(newLabels: Partial<Record<LabelsKeys, string>> = {}) {\n this.storage = { ...LABELS_DEFAULT, ...newLabels };\n }\n\n get = (key: string): string => {\n return this.storage[key] ?? '';\n };\n}\n","import { Labels } from '../models/labels';\nimport { NsEditorSetup } from '../interfaces/editor-config';\nimport { Commands } from '../enums/commands.enum';\nimport { inject, Injectable, InjectionToken, DOCUMENT } from '@angular/core';\n\nexport const NS_EDITOR_SETUP = new InjectionToken<NsEditorSetup>(\n 'NsEditorSetup'\n);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsEditorService {\n private config = inject<NsEditorSetup>(NS_EDITOR_SETUP, { optional: true });\n private doc = inject(DOCUMENT);\n\n private savedSelection: Range | null;\n private selectedText: string;\n private readonly labels: Labels;\n\n constructor() {\n const config = this.config;\n\n this.labels = new Labels(config ? config.labels : {});\n }\n\n translate(key: string): string {\n return this.labels.get(key);\n }\n\n saveSelection() {\n switch (true) {\n case !!this.doc.getSelection:\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n break;\n case !!this.doc.getSelection && !!this.doc.createRange:\n this.savedSelection = document.createRange();\n break;\n default:\n this.savedSelection = null;\n }\n }\n\n command(name: Commands, value?: string) {\n this.doc.execCommand(name, false, value);\n }\n\n formatBlock(heading: string) {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (headings.includes(heading)) {\n this.doc.execCommand(Commands.FORMAT_BLOCK, false, heading);\n }\n }\n\n createLink(link: {\n text: string;\n url: string;\n tooltip: string;\n openNewWindow: boolean;\n }) {\n const newUrl = `<a href=\"${link.url}\" title=\"${link.tooltip}\" target=\"${\n link.openNewWindow ? '_blank' : '_self'\n }\">${link.text}</a>`;\n this.insertHtml(newUrl);\n }\n\n insertHtml(html: string): void {\n const isHTMLInserted = this.doc.execCommand(\n Commands.INSERT_HTML,\n false,\n html\n );\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n}\n","import { Component, OnInit, inject, input } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'ns-editor-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n imports: [NgStyle]\n})\nexport class NsEditorColorPickerComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n readonly presets = input<string[][]>(undefined);\n readonly type = input<'text_color' | 'background_color'>('text_color');\n\n showPopup: boolean;\n activeColor?: string;\n isActive: boolean;\n\n trackByIndex = (index: number): number => index;\n\n ngOnInit(): void {}\n\n private get command(): Commands {\n return this.type() === 'text_color'\n ? Commands.TEXT_COLOR\n : Commands.BACKGROUND_COLOR;\n }\n\n toggle() {\n this.showPopup = !this.showPopup;\n }\n\n getContrastYIQ(hexadecimal: string): string {\n const color = hexadecimal.replace('#', '');\n const r = parseInt(color.substring(0, 2), 16);\n const g = parseInt(color.substring(2, 4), 16);\n const b = parseInt(color.substring(4, 6), 16);\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? 'black' : 'white';\n }\n\n onColorSelect(color: string): void {\n this.editor.command(this.command, (this.activeColor = color));\n this.toggle();\n }\n\n remove() {}\n}\n","<button type=\"button\" class=\"btn\" (click)=\"toggle()\">\n <span class=\"ns-editor__color-text\">\n <svg role=\"presentation\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14 12.5h-4l-.874 2.186A.5.5 0 0 1 8.66 15H7.273a.5.5 0 0 1-.456-.705l4.05-9A.5.5 0 0 1 11.323 5h1.354a.5.5 0 0 1 .456.295l4.05 9a.5.5 0 0 1-.456.705h-1.388a.5.5 0 0 1-.465-.314L14 12.5zm-.6-1.5L12 7.5 10.6 11h2.8z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n <span></span>\n </span>\n\n <svg\n role=\"presentation\"\n class=\"ns-editor__toggle\"\n fill=\"currentColor\"\n height=\"12px\"\n viewBox=\"0 0 16 16\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n</button>\n\n@if (showPopup) {\n <div class=\"ns-editor__popup\">\n @for (colorGroup of presets(); track $index) {\n <div class=\"ns-editor__color--container\">\n @for (color of colorGroup; track $index) {\n <button\n class=\"ns-editor__color\"\n type=\"button\"\n [ngStyle]=\"{ backgroundColor: color, color: getContrastYIQ(color) }\"\n [title]=\"color\"\n (click)=\"onColorSelect(color)\"\n ></button>\n }\n </div>\n }\n </div>\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { NsEditorService } from '../services/editor.service';\n\n@Pipe({\n name: 'nsEditorLabel'\n})\nexport class NsEditorLabelPipe implements PipeTransform {\n private editor = inject(NsEditorService);\n\n transform(key: string): string {\n return this.editor.translate(key);\n }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgClass } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\nimport { NsCheckboxComponent, NsInputComponent } from '../../../form';\nimport { NsButtonComponent } from '../../../button';\n\n@Component({\n selector: 'ns-editor-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n imports: [\n ReactiveFormsModule,\n NgClass,\n NsEditorLabelPipe,\n NsInputComponent,\n NsCheckboxComponent,\n NsButtonComponent\n ]\n})\nexport class NsEditorLinkComponent implements OnInit {\n public formLink: FormGroup;\n public show: boolean;\n private fb = inject(FormBuilder);\n private editor = inject(NsEditorService);\n\n ngOnInit(): void {\n this.formLink = this.fb.group({\n text: ['', Validators.required],\n url: ['', Validators.required],\n tooltip: [''],\n openNewWindow: [true]\n });\n }\n\n insert() {\n if (this.formLink.valid) {\n this.editor.createLink(this.formLink.getRawValue());\n this.formLink.reset();\n this.show = false;\n }\n }\n}\n","<button type=\"button\" class=\"btn\" id=\"ns-editor-link\" (click)=\"show = true\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M12.654 8.764a.858.858 0 01-1.213-1.213l1.214-1.214a3.717 3.717 0 015.257 0 3.714 3.714 0 01.001 5.258l-1.214 1.214-.804.804a3.72 3.72 0 01-5.263.005.858.858 0 011.214-1.214c.781.782 2.05.78 2.836-.005l.804-.803 1.214-1.214a1.998 1.998 0 00-.001-2.831 2 2 0 00-2.83 0l-1.215 1.213zm-.808 6.472a.858.858 0 011.213 1.213l-1.214 1.214a3.717 3.717 0 01-5.257 0 3.714 3.714 0 01-.001-5.258l1.214-1.214.804-.804a3.72 3.72 0 015.263-.005.858.858 0 01-1.214 1.214 2.005 2.005 0 00-2.836.005l-.804.803L7.8 13.618a1.998 1.998 0 00.001 2.831 2 2 0 002.83 0l1.215-1.213z\"\n ></path>\n </svg>\n</button>\n\n<form\n [formGroup]=\"formLink\"\n class=\"ns-editor__form-link\"\n aria-labelledby=\"ns-editor-link\"\n [ngClass]=\"{ show: show }\"\n (ngSubmit)=\"insert()\"\n>\n <header>\n <label>{{ 'insert_link' | nsEditorLabel }}</label>\n <button type=\"button\" class=\"btn-close\" (click)=\"show = false\"></button>\n </header>\n\n <ns-input [formControlName]=\"'url'\" [placeholder]=\"'link' | nsEditorLabel\" />\n <ns-input [formControlName]=\"'text'\" [placeholder]=\"'text' | nsEditorLabel\" />\n <ns-input\n [formControlName]=\"'tooltip'\"\n [placeholder]=\"'tooltip_link' | nsEditorLabel\"\n />\n <ns-checkbox\n [formControlName]=\"'openNewWindow'\"\n [label]=\"'open_new_window' | nsEditorLabel\"\n />\n\n <footer>\n <ns-button type=\"submit\" [label]=\"'submit_link' | nsEditorLabel\" />\n </footer>\n</form>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\n\n@Component({\n selector: 'ns-editor-list',\n templateUrl: './list.component.html'\n})\nexport class NsEditorListComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n public commands = Commands;\n\n ngOnInit(): void {}\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button\n type=\"button\"\n class=\"btn\"\n (click)=\"command(commands.INSERT_UNORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M6 8c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"btn\"\n (click)=\"command(commands.INSERT_ORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M11 7h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 0h3v1H6v-1zm0 2h3v1H6v-1zm1-9H6V7h2v3H7V8zm-1 3h3v1.333h-.6V13H7.2v-.667H6V11zm0 2h3v1H6v-1zm2 3h2v1H8v-1z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n","import { Component, inject } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\nimport { NsEditorService } from '../../services/editor.service';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../../../dropdown';\nimport { FormsModule } from '@angular/forms';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-paragraph',\n templateUrl: './paragraph.component.html',\n styleUrls: ['./paragraph.component.scss'],\n imports: [\n NsDropdownComponent,\n NsDropdownItemDirective,\n FormsModule,\n NsEditorLabelPipe\n ]\n})\nexport class NsEditorParagraphComponent {\n private editor = inject(NsEditorService);\n\n public id: string = Guid.create();\n\n private _value: string = 'p';\n\n get value() {\n return this._value;\n }\n\n set value(heading) {\n this.editor.formatBlock(heading);\n }\n}\n","<ns-dropdown [(ngModel)]=\"value\">\n <ns-dropdown-item [label]=\"'paragraph' | nsEditorLabel\" [value]=\"'p'\" />\n <ns-dropdown-item [label]=\"'h1' | nsEditorLabel\" [value]=\"'h1'\" />\n <ns-dropdown-item [label]=\"'h2' | nsEditorLabel\" [value]=\"'h2'\" />\n <ns-dropdown-item [label]=\"'h3' | nsEditorLabel\" [value]=\"'h3'\" />\n <ns-dropdown-item [label]=\"'h4' | nsEditorLabel\" [value]=\"'h4'\" />\n <ns-dropdown-item [label]=\"'h5' | nsEditorLabel\" [value]=\"'h5'\" />\n <ns-dropdown-item [label]=\"'h6' | nsEditorLabel\" [value]=\"'h6'\" />\n</ns-dropdown>\n","import { Component, inject } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\n\n@Component({\n selector: 'ns-editor-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss']\n})\nexport class NsEditorToggleCommandComponent {\n private editor = inject(NsEditorService);\n\n public commands = Commands;\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button type=\"button\" class=\"btn\" (click)=\"command(commands.BOLD)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h4.5c2.481 0 4.5-1.165 4.5-4 0-1.698-.724-2.796-1.837-3.405C15.69 10.967 16 10.112 16 9c0-2.835-2.019-4-4.5-4H8Zm1 2v4h3c1.379 0 2-.857 2-2s-.621-2-2-2H9Zm0 6v4h4c1.379 0 2-.857 2-2s-.621-2-2-2H9Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button type=\"button\" class=\"btn\" (click)=\"command(commands.ITALIC)\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 6a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2h-2.167l-1.666 10H14a1 1 0 1 1 0 2H8a1 1 0 1 1 0-2h2.167l1.666-10H10a1 1 0 0 1-1-1Z\"\n ></path>\n </svg>\n</button>\n\n<button type=\"button\" class=\"btn\" (click)=\"command(commands.UNDERLINE)\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 5a1 1 0 0 1 1 1v5.5c0 1.343.556 2.5 2 2.5s2-1.157 2-2.5V6a1 1 0 1 1 2 0v5.657C16 13.804 14.469 16 12 16c-2.462 0-4-2.196-4-4.343V6a1 1 0 0 1 1-1ZM6 17a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Z\"\n ></path>\n </svg>\n</button>\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n inject,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsEditorService } from './services/editor.service';\nimport { NsContentEditableComponent, NsValueAccessor } from '../form';\nimport { NsEditorParagraphComponent } from './components/paragraph/paragraph.component';\nimport { NsEditorToggleCommandComponent } from './components/toogle/toggle.component';\nimport { NsEditorColorPickerComponent } from './components/color-picker/color-picker.component';\nimport { NsEditorListComponent } from './components/list/list.component';\nimport { NsEditorLinkComponent } from './components/link/link.component';\n\nconst DEFAULT_COLOR_PRESETS = [\n '#b60205',\n '#d93f0b',\n '#fbca04',\n '#0e8a16',\n '#006b75',\n '#1d76db',\n '#0052cc',\n '#5319e7',\n '#e99695',\n '#f9d0c4',\n '#fef2c0',\n '#c2e0c6',\n '#bfdadc',\n '#c5def5',\n '#bfd4f2',\n '#d4c5f9'\n];\n\n@Component({\n selector: 'ns-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsEditorComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-editor]': 'true',\n '[class.ns-editor--disabled]': 'disabled()'\n },\n imports: [\n NsEditorParagraphComponent,\n NsEditorToggleCommandComponent,\n NsEditorColorPickerComponent,\n NsEditorListComponent,\n NsEditorLinkComponent,\n NsContentEditableComponent,\n FormsModule\n ]\n})\nexport class NsEditorComponent\n extends NsValueAccessor<string>\n implements OnInit, OnDestroy\n{\n private editor = inject(NsEditorService);\n\n readonly rows = input<number>(3);\n readonly maxLength = input<number>(undefined);\n readonly colorPresets = input<string[]>(DEFAULT_COLOR_PRESETS);\n\n @ViewChild(NsContentEditableComponent, { read: ElementRef, static: true })\n textArea: ElementRef<HTMLElement>;\n\n @HostListener('click')\n focused = () => this.textArea.nativeElement.focus();\n\n ngOnInit(): void {}\n\n get presets(): string[][] {\n const col = 8;\n const colors: string[][] = [];\n\n this.colorPresets().forEach((color, index) => {\n const row = Math.floor(index / col);\n if (!colors[row]) {\n colors.push([]);\n }\n colors[row].push(color);\n });\n\n return colors;\n }\n\n blur(): void {\n this.editor.saveSelection();\n this.onTouched();\n }\n\n ngOnDestroy() {}\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n\n<ul class=\"ns-editor__toolbar\">\n <li class=\"ns-editor__item\">\n <ns-editor-paragraph />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-toggle />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-color-picker [presets]=\"presets\" />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-list />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-link />\n </li>\n</ul>\n\n<ns-content-editable\n class=\"ns-editor__content\"\n [id]=\"id\"\n (blur)=\"blur()\"\n [maxlength]=\"maxLength()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n/>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NsFile } from '@ng-solid/core';\n\n@Pipe({\n name: 'nsImageUrl',\n standalone: true\n})\nexport class NsImageUrlPipe implements PipeTransform {\n transform(image: NsFile): string {\n let url = '';\n if (image && image.data && typeof image.data === 'string') {\n switch (true) {\n case URL.canParse(image.data) || /data:/.test(image.data):\n url = image.data;\n break;\n default:\n url = `data:${image.type};base64,${image.data}`;\n }\n }\n return url;\n }\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n forwardRef,\n inject,\n numberAttribute,\n Renderer2,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../form';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NsImageUrlPipe } from './pipes/image-url.pipe';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NS_UPLOAD_CLIENT, NsFile } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-image-upload',\n templateUrl: './image-upload.component.html',\n imports: [CommonModule, NsImageUrlPipe, NsIconsComponent],\n standalone: true,\n host: {\n '[class.ns-image--loaded]': '!multi() && !!value()',\n '[class.ns-image--disabled]': 'disabled()'\n },\n styleUrls: ['./image-upload.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsImageUploadComponent),\n multi: true\n }\n ]\n})\nexport class NsImageUploadComponent extends NsValueAccessor<\n NsFile | NsFile[] | null\n> {\n private client = inject(NS_UPLOAD_CLIENT, { optional: true });\n private renderer = inject(Renderer2);\n\n readonly accept = input('.jpg,.jpeg,.png,.webp,.avif,.gif');\n readonly multi = input(false, { transform: booleanAttribute });\n readonly limit = input(5, { transform: numberAttribute });\n\n @ViewChild('input', { static: false, read: ElementRef })\n imgRef: ElementRef<HTMLInputElement>;\n\n public loading: Set<string> = new Set<string>();\n private _fromIndex: number;\n private _toIndex: number;\n\n get images(): NsFile[] {\n const value = this.value();\n return Array.isArray(value) ? value : [];\n }\n\n get image(): NsFile | null {\n const value = this.value();\n return Array.isArray(value) ? null : value;\n }\n\n override writeValue(value: NsFile | NsFile[] | null) {\n if (Array.isArray(value)) {\n this.value.set(value);\n } else {\n this.value.set(this.multi() && !value ? [] : value);\n }\n }\n\n onClick() {\n this.imgRef.nativeElement.click();\n }\n\n load() {\n const { files } = this.imgRef.nativeElement;\n if (files.length) {\n this.add(NsFile.parse(files.item(0)));\n this.imgRef.nativeElement.value = null;\n }\n }\n\n add(image: NsFile) {\n this.loading.add(image.name);\n const reader = new FileReader();\n reader.readAsDataURL(image.data as File);\n reader.onload = () => {\n if (this.client) {\n this.client.upload(image).subscribe({\n next: (data) => {\n if (this.multi()) {\n this.value.set(\n this.images.filter(\n (img: NsFile) => !this.compareWith(img, image)\n )\n );\n }\n this.loading.delete(image.name);\n this.assignValue(data);\n },\n error: () => {\n this.loading.delete(image.name);\n }\n });\n image.data = reader.result as string;\n this.assignValue(image);\n } else {\n image.data = reader.result as string;\n this.loading.delete(image.name);\n this.assignValue(image);\n }\n };\n }\n\n private assignValue(image: NsFile) {\n if (this.multi()) {\n this.value.set([...this.images, image]);\n } else {\n this.value.set(image);\n }\n this.onChange(this.value());\n }\n\n private compareWith(from: NsFile, to: NsFile): boolean {\n return from.id === to.id || from.name === to.name;\n }\n\n remove(image: NsFile) {\n this.loading.add(image.name);\n if (this.client && !!image.id) {\n this.client.remove(image.id).subscribe({\n next: () => {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.loading.delete(image.name);\n this.onChange(this.value());\n },\n error: () => {\n this.loading.delete(image.name);\n }\n });\n } else {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.loading.delete(image.name);\n }\n }\n\n dragstart(event: DragEvent, index: number) {\n this.renderer.setStyle(event.target, 'opacity', 0.4);\n event.dataTransfer.dropEffect = 'move';\n this._fromIndex = index;\n }\n\n dragover(event: DragEvent, index: number) {\n event.preventDefault();\n this._toIndex = index;\n }\n\n dragend(event: DragEvent) {\n this.renderer.setStyle(event.target, 'opacity', 1);\n }\n\n drop(event: DragEvent) {\n event.stopPropagation();\n if (this._fromIndex !== this._toIndex) {\n const images = this.images;\n const element = images[this._fromIndex];\n images.splice(this._fromIndex, 1);\n images.splice(this._toIndex, 0, element);\n this.value.set(images);\n this.onChange(this.value());\n }\n }\n}\n","<div\n class=\"ns-image__wrap\"\n [ngClass]=\"{ 'ns-image__multi': multi() && images.length }\"\n>\n @if (multi()) {\n @for (image of images; let i = $index; track i) {\n <div\n class=\"ns-image__thumbnail\"\n [draggable]=\"!disabled() && images.length > 1\"\n (dragstart)=\"dragstart($event, i)\"\n (dragend)=\"dragend($event)\"\n (dragover)=\"dragover($event, i)\"\n (drop)=\"drop($event)\"\n >\n <button\n type=\"button\"\n class=\"ns-image__button\"\n [ngClass]=\"{ 'ns-image__loading': loading.has(image.name) }\"\n [disabled]=\"disabled()\"\n >\n <img\n class=\"ns-image\"\n [attr.src]=\"image | nsImageUrl\"\n [attr.alt]=\"image.name\"\n />\n <ns-icon class=\"ns-image__preload\" name=\"preload\" />\n\n <div class=\"ns-image__overlay\">\n <ns-icon class=\"ns-image__drag\" name=\"drag-handle\" />\n <button\n type=\"button\"\n class=\"ns-image__remove\"\n (click)=\"remove(image)\"\n >\n <ns-icon name=\"trash\" />\n </button>\n </div>\n </button>\n </div>\n }\n }\n\n <button\n type=\"button\"\n class=\"ns-image__drag-container\"\n (click)=\"onClick()\"\n [ngClass]=\"{\n 'ns-image--loading': image && !multi() && loading.has(image.name)\n }\"\n [hidden]=\"multi() && images.length >= limit()\"\n [disabled]=\"disabled()\"\n >\n @if (image && !multi()) {\n <img\n class=\"ns-image__fluid\"\n [attr.src]=\"image | nsImageUrl\"\n [ngClass]=\"{ disabled: disabled() }\"\n alt\n />\n }\n\n <div class=\"ns-image__overlay\">\n <div class=\"ns-image__empty\">\n <ns-icon name=\"picture\" />\n <span>{{ label() }}</span>\n </div>\n </div>\n\n <input\n [hidden]=\"true\"\n type=\"file\"\n (change)=\"load()\"\n [multiple]=\"false\"\n [accept]=\"accept()\"\n #input\n [disabled]=\"disabled()\"\n />\n </button>\n</div>\n","import { ComponentRef } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { NsModalComponent } from '../modal.component';\nimport { TemplateDirective } from '../../template';\n\nexport class NsModalRef {\n ref: ComponentRef<NsModalComponent> | null = null;\n\n get instance(): NsModalComponent {\n if (!this.ref) {\n throw new Error('Modal reference has already been destroyed');\n }\n\n return this.ref.instance;\n }\n\n addTemplate(template: TemplateDirective) {\n switch (template.name()) {\n case 'header':\n this.instance.headerRef = template.ref;\n break;\n case 'footer':\n this.instance.footerRef = template.ref;\n break;\n default:\n throw new Error('Cannot add template in modal');\n }\n }\n\n close(timeout: number = 300) {\n if (!this.ref) {\n return;\n }\n\n const ref = this.ref;\n ref.instance.show = false;\n ref.changeDetectorRef.detectChanges();\n\n timer(timeout)\n .pipe(take(1))\n .subscribe(() => {\n const { nativeElement } = ref.location;\n nativeElement.parentNode.removeChild(nativeElement);\n\n ref.destroy();\n ref.changeDetectorRef.detectChanges();\n this.ref = null;\n });\n }\n\n onDestroy(callback: () => void) {\n this.ref?.onDestroy(callback);\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemplateDirective } from '../template';\n\n@Component({\n selector: 'ns-modal',\n imports: [CommonModule],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n standalone: true,\n host: {\n '[class.ns-modal]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsModalComponent implements AfterViewInit, AfterViewChecked {\n title: string;\n size: 'lg' | 'sm' | 'xl';\n component: Type<unknown>;\n context: Record<string, unknown>;\n close: () => void;\n\n show: boolean;\n headerRef: TemplateRef<TemplateDirective>;\n footerRef: TemplateRef<TemplateDirective>;\n\n @ViewChild('container', { read: ViewContainerRef })\n containerRef: ViewContainerRef;\n\n private readonly cd = inject(ChangeDetectorRef);\n\n @HostListener('window:keydown', ['$event'])\n keydown(event: KeyboardEvent) {\n if (event.key == 'Escape') {\n this.close();\n }\n }\n\n ngAfterViewInit() {\n if (this.containerRef) {\n const componentRef = this.containerRef.createComponent(this.component);\n Object.assign(componentRef.instance, this.context);\n this.cd.detectChanges();\n }\n }\n\n ngAfterViewChecked() {\n this.cd.detectChanges();\n }\n}\n","<div\n role=\"document\"\n class=\"ns-modal__dialog\"\n [ngClass]=\"{ 'ns-modal__lg': size == 'lg', 'ns-modal__xl': size == 'xl' }\"\n>\n <div class=\"ns-modal__content\">\n <div class=\"ns-modal__header\">\n @if (headerRef) {\n <ng-template [ngTemplateOutlet]=\"headerRef\"></ng-template>\n } @else {\n <h4 class=\"ns-modal__title\">{{ title }}</h4>\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"btn-close\"\n (click)=\"close()\"\n ></button>\n }\n\n <ng-template #defaultHeaderRef>\n <h4 class=\"ns-modal__title\">{{ title }}</h4>\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"btn-close\"\n (click)=\"close()\"\n ></button>\n </ng-template>\n </div>\n\n <div class=\"ns-modal__body\">\n <ng-template #container />\n </div>\n\n @if (footerRef) {\n <div class=\"ns-modal__footer\">\n <ng-template [ngTemplateOutlet]=\"footerRef\"></ng-template>\n </div>\n }\n </div>\n</div>\n\n<div class=\"ns-modal__backdrop\" (click)=\"close()\"></div>\n","import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n RendererFactory2,\n Type,\n DOCUMENT\n} from '@angular/core';\n\nimport { NsModalRef } from '../models/modal-ref';\nimport { NsModalComponent } from '../modal.component';\nimport { NsModalSetup } from '../interfaces/modal-setup';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsModalService {\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(EnvironmentInjector);\n private readonly document: Document = inject(DOCUMENT);\n private readonly factory = inject(RendererFactory2);\n private readonly renderer = this.factory.createRenderer(null, null);\n private readonly stack: Set<NsModalRef> = new Set<NsModalRef>();\n\n open<T = unknown>(component: Type<T>, setup: NsModalSetup<T>): NsModalRef {\n const nsModalRef = this.attachComponent(this.document.body);\n this.renderer.addClass(this.document.body, 'ns-modal__open');\n\n this.registerModalRef(nsModalRef);\n Object.assign(nsModalRef.instance, {\n component: component,\n title: setup.title,\n context: setup.context ?? {},\n size: setup.size ?? 'lg',\n close: nsModalRef.close.bind(nsModalRef)\n });\n\n return nsModalRef;\n }\n\n close() {\n this.stack.forEach((modal) => modal.close());\n }\n\n private attachComponent(container: Element) {\n const nsModalRef = new NsModalRef();\n const providers = [\n {\n provide: NsModalRef,\n useFactory: () => nsModalRef\n }\n ];\n\n nsModalRef.ref = createComponent(NsModalComponent, {\n environmentInjector: this.injector,\n elementInjector: Injector.create({\n providers\n })\n });\n\n const componentRef = nsModalRef.ref;\n if (!componentRef) {\n throw new Error('Failed to create modal component');\n }\n\n this.appRef.attachView(componentRef.hostView);\n container.appendChild(componentRef.location.nativeElement);\n\n return nsModalRef;\n }\n\n private registerModalRef(ref: NsModalRef) {\n this.stack.add(ref);\n\n ref.onDestroy(() => {\n if (this.stack.has(ref)) {\n this.stack.delete(ref);\n }\n });\n }\n}\n","export class NsSchedule {\n public id: number;\n public subject: string;\n public body: string;\n public startTime: string;\n public endTime: string;\n public created: string;\n public updated: string;\n\n constructor(props: Partial<NsSchedule> = {}) {\n Object.assign(this, props);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NsSchedule } from '../models/schedule';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsScheduleService {\n public readonly onClick$: Subject<NsSchedule> = new Subject<NsSchedule>();\n private _date: Date;\n\n constructor() {}\n\n setCurrentDate(date) {\n this._date = date;\n }\n\n get currentDate() {\n return this._date;\n }\n\n send(schedule: Partial<NsSchedule>) {\n this.onClick$.next(new NsSchedule(schedule));\n }\n\n formatDate(date: Date) {\n const pad = (num) => ('00' + num).slice(-2);\n return (\n date.getFullYear() +\n '-' +\n pad(date.getMonth() + 1) +\n '-' +\n pad(date.getDate()) +\n ' ' +\n pad(date.getHours()) +\n ':' +\n pad(date.getMinutes()) +\n ':' +\n pad(date.getSeconds())\n );\n }\n}\n","import { Component, HostListener, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n@Component({\n selector: 'ns-schedule-cell',\n template: '',\n standalone: true,\n host: {\n '[class.ns-schedule__timeline-cell]': 'true'\n }\n})\nexport class NsScheduleCellComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly day = input<number>(undefined);\n readonly timeline = input<number>(undefined);\n readonly startIn = input<number>(undefined);\n readonly endIn = input<number>(undefined);\n\n ngOnInit(): void {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const startTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.startIn()\n );\n const endTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.endIn()\n );\n\n this.service.send({\n startTime: this.service.formatDate(startTime),\n endTime: this.service.formatDate(endTime)\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nsWeekday',\n standalone: true\n})\nexport class WeekDayPipe implements PipeTransform {\n private weekdays: string[] = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ];\n\n transform(day: number): string {\n return this.weekdays[day];\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { NsSchedule } from '../models/schedule';\nimport { notEmpty } from '@ng-solid/core';\nimport { NsScheduleService } from '../services/schedule.service';\n\n@Pipe({\n name: 'filterByDay',\n standalone: true\n})\nexport class FilterByDayPipe implements PipeTransform {\n private service = inject(NsScheduleService);\n\n transform(schedules: NsSchedule[], day: number): NsSchedule[] {\n const current = this.service.currentDate;\n const selector = ({ startTime }: NsSchedule) => {\n const date = new Date(startTime);\n return (\n day === date.getDate() &&\n current.getMonth() === date.getMonth() &&\n current.getFullYear() === date.getFullYear()\n );\n };\n return notEmpty(schedules) ? schedules.filter(selector) : [];\n }\n}\n","import {\n AfterContentInit,\n Component,\n HostListener,\n inject,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n@Component({\n selector: 'ns-schedule-event',\n templateUrl: './event.component.html',\n styleUrls: ['./event.component.scss'],\n host: {\n '[class.ns-schedule__event]': 'true',\n '[class.ns-schedule__event--show]': 'schedule() && matchHour',\n '[style.height.px]': 'height'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class NsScheduleEventComponent implements AfterContentInit {\n readonly schedule = input<NsSchedule>(undefined);\n readonly timeline = input<number>(undefined);\n\n public height: number;\n private service = inject(NsScheduleService);\n\n get matchHour() {\n const schedule = this.schedule();\n return (\n !!schedule && new Date(schedule.startTime).getHours() === this.timeline()\n );\n }\n\n ngAfterContentInit() {\n const schedule = this.schedule();\n if (schedule) {\n const startTime = new Date(schedule.startTime);\n const endTime = new Date(schedule.endTime);\n const hours = Math.abs(startTime.getTime() - endTime.getTime()) / 36e5;\n this.height = hours > 0.5 ? 49.5 * (hours / 0.5) : 45;\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const schedule = this.schedule();\n if (schedule) {\n this.service.send(schedule);\n }\n }\n}\n","@if (schedule(); as currentSchedule) {\n <span class=\"ns-schedule__event--subject\">{{ currentSchedule.subject }}</span>\n <div\n class=\"ns-schedule__event--body\"\n [innerHtml]=\"currentSchedule.body\"\n ></div>\n}\n","import { Component, effect, inject, OnInit, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-day',\n templateUrl: './day.component.html',\n imports: [\n NsScheduleCellComponent,\n WeekDayPipe,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n styles: [\n '.ns-schedule__header-wrap,.ns-schedule__timeline {grid-template-columns: [index] 3rem [timeline] 1fr;}'\n ]\n})\nexport class DayComponent implements OnInit {\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n public current: number;\n public first: number;\n public days: number[];\n public hours: number[];\n private service = inject(NsScheduleService);\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.current = date.getDate();\n this.first = date.getDate() - date.getDay();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((x, y) => x + y);\n this.service.setCurrentDate(date);\n }\n });\n\n ngOnInit(): void {\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n <div class=\"ns-schedule__header ns-schedule__selected\">\n <div class=\"ns-schedule__header-date\">{{ current }}</div>\n <div class=\"ns-schedule__header-day\">\n {{ days.indexOf(current) | nsWeekday }}\n </div>\n </div>\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n <div class=\"ns-schedule__timeline-day ns-schedule__selected\">\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: current; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-week',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n templateUrl: './week.component.html',\n styles: [\n '.ns-schedule__header-wrap,.ns-schedule__timeline {grid-template-columns: [index] 3rem repeat(7, 1fr);}'\n ],\n standalone: true\n})\nexport class WeekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public currentDay: number;\n public first: number;\n public last: number;\n public days: number[];\n public hours: number[];\n\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay();\n this.last = this.first + 6;\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n 0\n ).getDate();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((day, index) => (day > 0 ? day + index : lastDayOfPrevMonth--));\n }\n });\n\n get current() {\n return this.service.currentDate;\n }\n\n ngOnInit(): void {\n this.currentDay = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: day; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { NsScheduleEventComponent } from '../event/event.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\n\n@Component({\n selector: 'ns-schedule-workweek',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n NsScheduleEventComponent,\n FilterByDayPipe\n ],\n templateUrl: './workweek.component.html',\n styles: [\n '.ns-schedule__header-wrap,.ns-schedule__timeline {grid-template-columns: [index] 3rem repeat(5, 1fr);}'\n ],\n standalone: true\n})\nexport class NsWorkweekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public current: number;\n public first: number;\n public last: number;\n public days: number[] = [];\n public hours: number[];\n private DAYS_OF_WORKWEEK: number = 5;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay() + 1;\n this.last = this.first + 4;\n this.days = [];\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n -1\n ).getDate();\n\n let current = 0;\n while (current < this.DAYS_OF_WORKWEEK) {\n this.days.push(this.first < 1 ? lastDayOfPrevMonth : this.first);\n this.first++;\n lastDayOfPrevMonth--;\n current++;\n }\n }\n });\n\n identityDay = (index, item: NsSchedule) => item.id;\n\n ngOnInit(): void {\n this.current = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i + 1 | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (\n schedule of schedules() | filterByDay: day;\n track identityDay($index, schedule)\n ) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import {\n Component,\n inject,\n ViewEncapsulation,\n input,\n model\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { NsScheduleService } from './services/schedule.service';\nimport { NsSchedule } from './models/schedule';\nimport { NsDateView } from '../../types';\nimport { NsButtonComponent } from '../button';\nimport { NsDatePickerComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\n\nimport { DayComponent } from './components/day/day.component';\nimport { WeekComponent } from './components/week/week.component';\nimport { NsWorkweekComponent } from './components/workweek/workweek.component';\nimport { NsDropdownComponent, NsDropdownItemDirective } from '../dropdown';\n\n@Component({\n selector: 'ns-schedule',\n imports: [\n NsButtonComponent,\n FormsModule,\n DayComponent,\n WeekComponent,\n NsWorkweekComponent,\n NsDatePickerComponent,\n NsDropdownComponent,\n NsDropdownItemDirective\n ],\n templateUrl: './schedule.component.html',\n styleUrls: ['./schedule.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-schedule]': 'true'\n }\n})\nexport class NsScheduleComponent {\n readonly view = model<NsDateView>('workweek');\n readonly selected = model<Date>(new Date());\n readonly height = input<number>(520);\n readonly data = input<NsSchedule[]>(undefined);\n private readonly service = inject(NsScheduleService);\n readonly onClick = outputFromObservable(this.service.onClick$);\n\n goToday() {\n this.selected.set(new Date());\n }\n}\n","<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-scheduler__today\" label=\"Today\" (click)=\"goToday()\" />\n\n <ns-date-picker\n [ngModel]=\"selected()\"\n (ngModelChange)=\"selected.set($event)\"\n [view]=\"view()\"\n />\n\n <ns-dropdown\n class=\"ns-schedule__view\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-dropdown-item label=\"Day\" value=\"day\" />\n <ns-dropdown-item label=\"Work week\" value=\"workweek\" />\n <ns-dropdown-item label=\"Week\" value=\"week\" />\n </ns-dropdown>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n","import {\n Component,\n HostBinding,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n input\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NsSchemaMarkup } from './models/schema';\n\n@Component({\n selector: 'ns-schema',\n template: ''\n})\nexport class NsSchemaMarkupComponent implements OnInit, OnChanges {\n private sanitizer = inject<DomSanitizer>(DomSanitizer);\n\n readonly data = input<Partial<NsSchemaMarkup>>(undefined);\n\n @HostBinding('innerHTML') innerHTML: SafeHtml;\n\n ngOnInit() {}\n\n ngOnChanges({ data }: SimpleChanges) {\n const json = { '@context': 'https://schema.org', ...data.currentValue };\n const template = `<script type=\"application/ld+json\">${JSON.stringify(\n json,\n null,\n 2\n )}</script>`;\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(template);\n }\n}\n","import { Directive, inject, OnInit, TemplateRef, input } from '@angular/core';\nimport { NsModalRef } from '../modal/models/modal-ref';\n\n@Directive({\n selector: '[nsTemplate]',\n standalone: true\n})\nexport class TemplateDirective implements OnInit {\n readonly name = input<string>(undefined, { alias: 'nsTemplate' });\n readonly styleClass = input<string>(undefined);\n\n public readonly ref: TemplateRef<TemplateDirective> = inject(TemplateRef);\n private readonly modalRef = inject(NsModalRef, { optional: true });\n\n ngOnInit() {\n if (this.modalRef) {\n this.modalRef.addTemplate(this);\n }\n }\n}\n","export enum ToastType {\n SUCCESS = 'success',\n WARNING = 'warning',\n INFO = 'info',\n ERROR = 'error'\n}\n","import { ComponentRef } from '@angular/core';\nimport { Observable, take, tap, timer } from 'rxjs';\nimport { NsToastComponent } from '../toast.component';\n\nexport class ToastRef {\n ref: ComponentRef<NsToastComponent> | null = null;\n readonly timeout: Observable<0>;\n\n constructor(props: Partial<ToastRef> = {}) {\n Object.assign(this, props);\n this.timeout = timer(5000).pipe(take(1));\n }\n\n get instance() {\n return this.ref?.instance;\n }\n\n destroy(timeout: number) {\n if (!this.ref) {\n return timer(timeout).pipe(take(1));\n }\n\n const ref = this.ref;\n ref.instance.state = 'destroy';\n ref.changeDetectorRef.detectChanges();\n\n return timer(timeout).pipe(\n take(1),\n tap(() => {\n const { nativeElement } = ref.location;\n nativeElement.parentNode.removeChild(nativeElement);\n\n ref.destroy();\n this.ref = null;\n })\n );\n }\n}\n","import { ToastType } from '../enums/toast-type';\n\nexport class ToastSetup {\n public parent?: string;\n public type?: ToastType;\n public message!: string;\n public callback?: () => void;\n}\n","import { Component, ElementRef, inject, input } from '@angular/core';\nimport { ToastType } from './enums/toast-type';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-toast',\n imports: [NsIconsComponent],\n template: `\n <span class=\"ns-toast__message\" [innerHTML]=\"message()\"></span>\n <ns-icon [name]=\"iconName\" [size]=\"24\" />\n `,\n styleUrls: ['./toast.component.scss'],\n host: {\n '[class.ns-toast]': 'true',\n '[class.ns-toast--success]': \"type() ==='success'\",\n '[class.ns-toast--warning]': \"type() ==='warning'\",\n '[class.ns-toast--info]': \"type() ==='info'\",\n '[class.ns-toast--error]': \"type() ==='error'\",\n '[class.ns-toast--leaving]': \"state === 'destroy'\",\n '[style.margin-left.px]': 'marginLeft'\n }\n})\nexport class NsToastComponent {\n readonly type = input<ToastType>(ToastType.SUCCESS);\n readonly message = input<string>(undefined);\n state: 'display' | 'destroy' = 'display';\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n get marginLeft() {\n return -(this.element.nativeElement.offsetWidth / 2);\n }\n\n get iconName() {\n switch (this.type()) {\n case ToastType.WARNING:\n return 'exclamation-triangle';\n case ToastType.ERROR:\n return 'exclamation-circle';\n case ToastType.INFO:\n return 'info-circle';\n default:\n return 'check-circle';\n }\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n Injectable,\n Type,\n inject,\n DOCUMENT\n} from '@angular/core';\nimport { NsToastComponent } from '../toast.component';\nimport { ToastSetup } from '../interfaces/toast-setup';\nimport { ToastRef } from '../interfaces/toast-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class NsToastService {\n private readonly appRef = inject(ApplicationRef);\n private readonly document = inject<Document>(DOCUMENT);\n\n private readonly stack: Set<ComponentRef<NsToastComponent>> = new Set<\n ComponentRef<NsToastComponent>\n >();\n\n public add(setup: ToastSetup): ToastRef {\n const parent = setup.parent\n ? this.document.querySelector<HTMLElement>(setup.parent)\n : this.document.body;\n if (!parent) {\n throw new Error(`Toast parent \"${setup.parent}\" was not found`);\n }\n const componentRef = this.attachComponent(parent, NsToastComponent);\n this.registerToast(componentRef);\n\n const toastRef = new ToastRef({\n ref: componentRef\n });\n\n toastRef.timeout.subscribe(() => {\n toastRef.destroy(500).subscribe(() => {\n if (typeof setup.callback === 'function') {\n setup.callback();\n }\n });\n });\n\n Object.assign(componentRef.instance, setup);\n return toastRef;\n }\n\n private attachComponent<T>(container: Element, type: Type<T>) {\n const componentRef = createComponent(type, {\n environmentInjector: this.appRef.injector\n });\n this.appRef.attachView(componentRef.hostView);\n container.appendChild(componentRef.location.nativeElement);\n return componentRef;\n }\n\n private registerToast(toast: ComponentRef<NsToastComponent>) {\n this.stack.add(toast);\n toast.onDestroy(() => {\n if (this.stack.has(toast)) {\n this.stack.delete(toast);\n }\n });\n }\n}\n","/*\n * Public API Surface of @ng-solid/design-system\n */\n\nexport * from './lib/avatar';\nexport * from './lib/button';\nexport * from './lib/button-group';\nexport * from './lib/comment';\nexport * from './lib/dropdown';\nexport * from './lib/editor';\nexport * from './lib/form';\nexport * from './lib/image-upload';\nexport * from './lib/modal';\nexport * from './lib/schedule';\nexport * from './lib/schema';\nexport * from './lib/template';\nexport * from './lib/toast';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","take"],"mappings":"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"}
1
+ {"version":3,"file":"ng-solid-design-system.mjs","sources":["../../../../packages/design-system/src/lib/avatar/avatar.component.ts","../../../../packages/design-system/src/lib/button/button.component.ts","../../../../packages/design-system/src/lib/form/models/value-accessor.ts","../../../../packages/design-system/src/lib/form/components/checkbox/checkbox.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-utils.ts","../../../../packages/design-system/src/lib/form/components/date-picker/calendar.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker.service.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-parser-formatter.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-month.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-navigation.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-menu.component.ts","../../../../packages/design-system/src/lib/dropdown/directives/dropdown-item.directive.ts","../../../../packages/design-system/src/lib/dropdown/dropdown.component.ts","../../../../packages/design-system/src/lib/dropdown/dropdown.component.html","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker.component.ts","../../../../packages/design-system/src/lib/form/directives/date-range.directive.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-range-picker.component.ts","../../../../packages/design-system/src/lib/form/components/input/input.component.ts","../../../../packages/design-system/src/lib/form/components/input/input.component.html","../../../../packages/design-system/src/lib/form/components/input-group/input-group-addon.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group.component.html","../../../../packages/design-system/src/lib/form/components/input-number/utils.ts","../../../../packages/design-system/src/lib/form/components/input-number/input-number.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.html","../../../../packages/design-system/src/lib/form/components/switch/switch.component.ts","../../../../packages/design-system/src/lib/form/components/text-area/text-area.component.ts","../../../../packages/design-system/src/lib/form/directives/content-editable.directive.ts","../../../../packages/design-system/src/lib/form/index.ts","../../../../packages/design-system/src/lib/button-group/button-group.component.ts","../../../../packages/design-system/src/lib/comment/comment.component.ts","../../../../packages/design-system/src/lib/comment/comment.component.html","../../../../packages/design-system/src/lib/editor/enums/commands.enum.ts","../../../../packages/design-system/src/lib/editor/models/labels.ts","../../../../packages/design-system/src/lib/editor/services/editor.service.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.html","../../../../packages/design-system/src/lib/editor/pipes/editor-label.pipe.ts","../../../../packages/design-system/src/lib/editor/components/link/link.component.ts","../../../../packages/design-system/src/lib/editor/components/link/link.component.html","../../../../packages/design-system/src/lib/editor/components/list/list.component.ts","../../../../packages/design-system/src/lib/editor/components/list/list.component.html","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.ts","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.html","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.ts","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.html","../../../../packages/design-system/src/lib/editor/editor.component.ts","../../../../packages/design-system/src/lib/editor/editor.component.html","../../../../packages/design-system/src/lib/image-upload/pipes/image-url.pipe.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.html","../../../../packages/design-system/src/lib/modal/models/modal-ref.ts","../../../../packages/design-system/src/lib/modal/modal.component.ts","../../../../packages/design-system/src/lib/modal/modal.component.html","../../../../packages/design-system/src/lib/modal/services/modal.service.ts","../../../../packages/design-system/src/lib/schedule/models/schedule.ts","../../../../packages/design-system/src/lib/schedule/services/schedule.service.ts","../../../../packages/design-system/src/lib/schedule/components/cell/cell.component.ts","../../../../packages/design-system/src/lib/schedule/pipes/week-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/pipes/filter-by-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.html","../../../../packages/design-system/src/lib/schedule/components/day/day.component.ts","../../../../packages/design-system/src/lib/schedule/components/day/day.component.html","../../../../packages/design-system/src/lib/schedule/components/week/week.component.ts","../../../../packages/design-system/src/lib/schedule/components/week/week.component.html","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.ts","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.html","../../../../packages/design-system/src/lib/schedule/schedule.component.ts","../../../../packages/design-system/src/lib/schedule/schedule.component.html","../../../../packages/design-system/src/lib/schema/schema.component.ts","../../../../packages/design-system/src/lib/template/template.directive.ts","../../../../packages/design-system/src/lib/toast/enums/toast-type.ts","../../../../packages/design-system/src/lib/toast/interfaces/toast-ref.ts","../../../../packages/design-system/src/lib/toast/interfaces/toast-setup.ts","../../../../packages/design-system/src/lib/toast/toast.component.ts","../../../../packages/design-system/src/lib/toast/services/toast.service.ts","../../../../packages/design-system/src/index.ts","../../../../packages/design-system/src/ng-solid-design-system.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n NgZone,\n numberAttribute,\n OnChanges,\n PLATFORM_ID,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { isValidURL } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-avatar',\n template: `\n @if (hasCover) {\n <img\n class=\"ns-avatar__cover\"\n [attr.src]=\"src()\"\n [attr.alt]=\"atl()\"\n (error)=\"imgError($event)\"\n />\n } @else {\n <span class=\"ns-avatar__text\" #textRef>{{ src() }}</span>\n }\n `,\n styleUrls: ['./avatar.component.scss'],\n host: {\n class: 'ns-avatar',\n '[class.ns-avatar--circle]': `shape() === 'circle'`,\n '[class.ns-avatar--square]': `shape() === 'square'`,\n '[class.ns-avatar--large]': `size() === 'large'`,\n '[class.ns-avatar--medium]': `size() === 'medium'`,\n '[class.ns-avatar--small]': `size() === 'small'`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n encapsulation: ViewEncapsulation.None\n})\nexport class NsAvatarComponent implements OnChanges {\n readonly src = input<string>(undefined);\n readonly atl = input<string>(undefined);\n readonly icon = input<string>(undefined);\n readonly shape = input<'circle' | 'square'>('circle');\n readonly size = input<'large' | 'medium' | 'small'>('small');\n readonly gap = input<number, unknown>(4, { transform: numberAttribute });\n @ViewChild('textRef', { static: false })\n textRef?: ElementRef<HTMLSpanElement>;\n public hasCover: boolean;\n public hasIcon: boolean;\n private elementRef = inject(ElementRef);\n private cdr = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n ngOnChanges() {\n this.hasCover = isValidURL(this.src());\n this.hasIcon = !this.src() && !!this.icon();\n this.notifyCalc();\n }\n\n imgError($event: ErrorEvent) {\n if (!$event.defaultPrevented) {\n this.hasIcon = false;\n this.hasCover = false;\n if (this.icon()) {\n this.hasIcon = true;\n } else if (isValidURL(this.src())) {\n this.hasCover = true;\n }\n this.cdr.detectChanges();\n this.notifyCalc();\n }\n }\n\n private calcStringSize() {\n const textEl = this.textRef?.nativeElement;\n if (this.hasCover || !textEl) {\n return;\n }\n\n const childrenWidth = textEl.offsetWidth;\n const avatarWidth =\n this.elementRef.nativeElement.getBoundingClientRect().width;\n const offset = this.gap() * 2 < avatarWidth ? this.gap() * 2 : 8;\n const scale =\n avatarWidth - offset < childrenWidth\n ? (avatarWidth - offset) / childrenWidth\n : 1;\n this.renderer.setStyle(\n textEl,\n 'transform',\n `scale(${scale}) translateX(-50%)`\n );\n }\n\n private notifyCalc(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.ngZone.runOutsideAngular(() =>\n setTimeout(() => this.calcStringSize())\n );\n }\n }\n}\n","import { booleanAttribute, Component, input } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-button',\n imports: [NgClass, NsIconsComponent],\n template: `\n <button\n [attr.type]=\"type()\"\n class=\"btn\"\n [ngClass]=\"{\n btn__primary: theme() == 'primary',\n btn__secondary: theme() == 'secondary',\n btn__success: theme() == 'success',\n btn__block: block(),\n 'btn--icon': icon()\n }\"\n [disabled]=\"disabled() || loading()\"\n >\n @if (!loading()) {\n @if (icon()) {\n <ns-icon [name]=\"icon()\" size=\"16\" />\n }\n {{ label() }}\n } @else {\n <ns-icon name=\"preload\" size=\"16\" />\n }\n </button>\n `,\n styleUrls: ['./button.component.scss'],\n host: {\n '[class.ns-button]': 'true',\n '[class.ns-button__grid]': 'block()',\n '[class.ns-button--loading]': 'loading()',\n '[class.ns-button--disabled]': 'disabled()'\n }\n})\nexport class NsButtonComponent {\n readonly label = input<string>(undefined);\n readonly type = input<'submit' | 'button'>('button');\n readonly theme = input<'primary' | 'secondary' | 'success'>('secondary');\n readonly block = input<boolean, unknown>(undefined, {\n transform: booleanAttribute\n });\n readonly disabled = input<boolean, unknown>(undefined, {\n transform: booleanAttribute\n });\n readonly loading = input<boolean, unknown>(undefined, {\n transform: booleanAttribute\n });\n readonly icon = input<string>(undefined);\n readonly value = input<string | number>(undefined);\n}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Directive, input, model } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\n\n@Directive()\nexport abstract class NsValueAccessor<\n T = string\n> implements ControlValueAccessor {\n public readonly type = input('text');\n public readonly placeholder = input('');\n public readonly label = input<string>(undefined);\n public readonly disabled = model<boolean>(undefined);\n public readonly readonly = input<boolean>(undefined);\n\n public id = Guid.create();\n\n public readonly value = model<T>(undefined);\n\n public setValue(value: T): void {\n if (`${this.value()}` !== `${value}`) {\n this.onChange(value);\n }\n this.value.set(value);\n }\n\n public onTouched = () => {};\n\n public onChange: (value: T) => void = () => {};\n\n writeValue(value: T): void {\n if (typeof value !== 'undefined') {\n this.value.set(value);\n }\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ns-checkbox',\n imports: [FormsModule],\n template: `\n <label class=\"form-check-label\">\n <input\n class=\"form-check-input\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n />\n {{ label() }}\n </label>\n `,\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class NsCheckboxComponent extends NsValueAccessor<boolean> {}\n","import { NsDatepickerView } from './date-picker-view';\nimport { DateValue, isSameMonth } from '@internationalized/date';\n\nexport function isDateSelectable(date: DateValue, state: NsDatepickerView) {\n const { minDate, maxDate, disabled } = state;\n return !(\n date === null ||\n date === undefined ||\n disabled ||\n (minDate && isSameMonth(date, minDate)) ||\n (maxDate && isSameMonth(date, maxDate))\n );\n}\n","import { Injectable } from '@angular/core';\nimport {\n DateFormatter,\n DateTimeDuration,\n DateValue,\n DayOfWeek,\n getDayOfWeek,\n getLocalTimeZone,\n getWeeksInMonth,\n isToday,\n startOfWeek,\n today\n} from '@internationalized/date';\nimport { NsDayView, NsWeekView, WeekdayStyle } from './date-picker-view';\n\n@Injectable({ providedIn: 'root', useFactory: () => new NsCalendarGregorian() })\nexport abstract class NsCalendar {\n abstract today(): string;\n\n abstract add(duration: DateTimeDuration): string;\n\n abstract subtract(duration: DateTimeDuration): string;\n\n abstract getWeekDays(\n date: DateValue,\n weekdayStyle: WeekdayStyle,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): string[];\n\n abstract getWeeksInMonth(\n date: DateValue,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): NsWeekView[];\n\n abstract getDatesInWeek(\n weekIndex: number,\n from: DateValue,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): NsDayView[];\n\n abstract getFormattedMonth(startDate: DateValue, locale: string): string;\n\n abstract getHoursInDay(): number[];\n}\n\n@Injectable()\nexport class NsCalendarGregorian extends NsCalendar {\n private readonly timeZone = getLocalTimeZone();\n private readonly _today = today(this.timeZone);\n\n today(): string {\n return this._today.toString();\n }\n\n add(duration: DateTimeDuration): string {\n return this._today.add(duration).toString();\n }\n\n subtract(duration: DateTimeDuration): string {\n return this._today.subtract(duration).toString();\n }\n\n getFormattedMonth(date: DateValue, locale: string): string {\n const formatter = new DateFormatter(locale, {\n month: 'long',\n year: 'numeric'\n });\n const segments = formatter.formatToParts(date.toDate(this.timeZone));\n return `${segments[0].value} ${segments[2].value}`;\n }\n\n getWeekDays(\n date: DateValue,\n weekdayStyle: WeekdayStyle,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ) {\n const weekStart = startOfWeek(date, locale, firstDayOfWeek);\n const formatter = new DateFormatter(locale, {\n calendar: weekStart.calendar.identifier,\n weekday: weekdayStyle,\n timeZone: this.timeZone\n });\n return [...new Array(7).keys()].map((index) => {\n const date = weekStart.add({ days: index });\n return formatter.format(date.toDate(this.timeZone));\n });\n }\n\n getWeeksInMonth(date: DateValue, locale: string, firstDayOfWeek: DayOfWeek) {\n const weeks = [];\n const weeksInMonth = getWeeksInMonth(date, locale, firstDayOfWeek);\n for (let weekIndex = 0; weekIndex < weeksInMonth; weekIndex++) {\n weeks.push({\n number: weekIndex,\n days: this.getDatesInWeek(weekIndex, date, locale, firstDayOfWeek)\n });\n }\n return weeks;\n }\n\n getDatesInWeek(\n weekIndex: number,\n from: DateValue,\n locale: string,\n firstDayOfWeek: DayOfWeek\n ): NsDayView[] {\n let date = startOfWeek(\n from.add({ weeks: weekIndex }),\n locale,\n firstDayOfWeek\n );\n const daysPerWeek = getDayOfWeek(date, locale, firstDayOfWeek);\n\n const formatter = new DateFormatter(locale, {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric',\n timeZone: this.timeZone\n });\n const dates: NsDayView[] = Array(daysPerWeek).fill(null);\n\n // week has days\n while (dates.length < 7) {\n dates.push({\n number: date.day,\n date: date,\n context: {\n $implicit: date,\n date: date,\n month: date.month,\n year: date.year,\n disabled: false,\n selected: false,\n isToday: isToday(date, this.timeZone)\n },\n tabindex: -1,\n ariaLabel: formatter.format(date.toDate(this.timeZone))\n });\n\n date = date.add({ days: 1 });\n }\n return dates;\n }\n\n getHoursInDay(): number[] {\n return Array.from({ length: 24 }, (_, i) => i);\n }\n}\n","import { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport {\n NsDatepickerView,\n NsMonthView,\n WeekdayStyle\n} from './date-picker-view';\nimport { filter, Observable, Subject } from 'rxjs';\nimport { isDateSelectable } from './date-utils';\nimport { NsCalendar } from './calendar';\nimport {\n DateValue,\n DayOfWeek,\n endOfMonth,\n isEqualDay,\n isSameMonth,\n parseDate,\n startOfMonth\n} from '@internationalized/date';\n\nexport type DatepickerInputs = Partial<{\n visibleMonths: number;\n firstDayOfWeek: DayOfWeek;\n maxDate?: DateValue;\n minDate?: DateValue;\n navigation: 'select' | 'arrows' | 'none';\n weekdayStyle: WeekdayStyle;\n}>;\n\n@Injectable({ providedIn: 'root' })\nexport class NsDatepickerService {\n private readonly calendar = inject(NsCalendar);\n private readonly locale = inject(LOCALE_ID);\n\n private _state: NsDatepickerView = {\n maxDate: null,\n minDate: null,\n visibleMonths: 1,\n startDate: null,\n firstDayOfWeek: 'sun',\n endDate: null,\n months: [],\n navigation: 'select',\n weekdayStyle: 'narrow',\n locale: this.locale,\n weekdaysVisible: true,\n disabled: false\n };\n\n private _selected$ = new Subject<DateValue>();\n\n get selected$(): Observable<DateValue> {\n return this._selected$.pipe(filter((date) => date !== null));\n }\n\n private _model$ = new Subject<NsDatepickerView>();\n\n get model$(): Observable<NsDatepickerView> {\n return this._model$.pipe(filter((model) => !!model.months.length));\n }\n\n today(): DateValue {\n return parseDate(this.calendar.today());\n }\n\n set(patch: DatepickerInputs) {\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n\n getMonth(startDate: DateValue) {\n for (let month of this._state.months) {\n if (isSameMonth(startDate, month.startDate)) {\n return month;\n }\n }\n throw new Error(\n `month ${startDate.month} of year ${startDate.year} not found`\n );\n }\n\n navigate(startDate: DateValue) {\n if (startDate != null && !this._state.disabled) {\n this._nextState({ startDate });\n }\n }\n\n select(selectedDate: DateValue, options: { emitEvent?: boolean } = {}) {\n if (selectedDate != null && !this._state.disabled) {\n if (\n !this._state.selectedDate ||\n !isEqualDay(this._state.selectedDate, selectedDate)\n ) {\n this._nextState({ selectedDate });\n }\n\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._selected$.next(selectedDate);\n }\n }\n }\n\n buildMonths(date: DateValue, state: NsDatepickerView): NsMonthView[] {\n const { visibleMonths, months: existingMonths } = state;\n\n // ensure start date for the first month\n const currentMonth = startOfMonth(date);\n\n // move old months to a temporary array\n const monthsToReuse = existingMonths.slice();\n\n // generate new first dates, nullify or reuse months\n return Array.from({ length: visibleMonths }, (_, i) => {\n const startDate = currentMonth.add({ months: i });\n\n const reusedIndex = monthsToReuse.findIndex((month) =>\n isEqualDay(month.startDate, startDate)\n );\n if (reusedIndex !== -1) {\n return monthsToReuse.splice(reusedIndex, 1)[0];\n }\n\n return this.buildMonth(\n startDate,\n state,\n monthsToReuse.shift() || ({} as NsMonthView)\n );\n });\n }\n\n buildMonth(\n startDate: DateValue,\n state: NsDatepickerView,\n month: NsMonthView = {} as NsMonthView\n ): NsMonthView {\n const { firstDayOfWeek, weekdayStyle, locale, weekdaysVisible } = state;\n\n month.label = this.calendar.getFormattedMonth(startDate, locale);\n month.startDate = startDate;\n month.endDate = endOfMonth(startDate);\n month.number = startDate.month;\n month.year = startDate.year;\n month.weeks = month.weeks || [];\n month.weekdays = [];\n\n // month has weekdays\n if (weekdaysVisible) {\n month.weekdays = this.calendar.getWeekDays(\n month.startDate,\n weekdayStyle,\n locale,\n firstDayOfWeek\n );\n }\n\n // month has weeks\n month.weeks = this.calendar.getWeeksInMonth(\n month.startDate,\n locale,\n firstDayOfWeek\n );\n\n return month;\n }\n\n private _nextState(patch: Partial<NsDatepickerView>) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n\n private _updateState(patch: Partial<NsDatepickerView>) {\n const state = Object.assign({}, this._state, patch);\n\n let startDate = state.startDate || this.today();\n\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = startOfMonth(state.selectedDate);\n }\n // initial rebuild via 'navigate()'\n if (startDate) {\n state.months = this.buildMonths(startDate, state);\n state.startDate = state.months[0].startDate;\n state.endDate = state.months[state.months.length - 1].endDate;\n }\n\n return state;\n }\n\n private _patchContexts(state: NsDatepickerView) {\n const { selectedDate, minDate, maxDate, disabled } = state;\n state.months.forEach((month) => {\n month.weeks.forEach((week) => {\n week.days.forEach((day) => {\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected =\n selectedDate !== null && isEqualDay(selectedDate, day.date);\n }\n\n // disability\n const isUnavailable = !isSameMonth(month.startDate, day.date);\n const isNotValid =\n (typeof minDate !== 'undefined' && day.date.compare(minDate) < 0) ||\n (typeof maxDate !== 'undefined' && day.date.compare(maxDate) > 0);\n day.context.disabled = disabled || isUnavailable || isNotValid;\n });\n });\n });\n }\n\n ensureDateValue(date: Date | DateValue | string | null): DateValue | null {\n if (!date) {\n return null;\n }\n if (typeof date === 'string') {\n return parseDate(date);\n }\n if (date instanceof Date) {\n return parseDate(date.toISOString());\n }\n return date as DateValue;\n }\n}\n","import { inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\nimport {\n DateFormatter,\n DateValue,\n getLocalTimeZone,\n parseDate\n} from '@internationalized/date';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new NsDateISOParserFormatter()\n})\nexport abstract class NsDateParserFormatter {\n abstract parse(value: string): DateValue | null;\n\n abstract format(date: DateValue): string;\n}\n\n@Injectable()\nexport class NsDateISOParserFormatter extends NsDateParserFormatter {\n private readonly locale = inject(LOCALE_ID);\n private readonly config = inject(DATE_PIPE_DEFAULT_OPTIONS, {\n optional: true\n });\n private readonly formatter = new DateFormatter(this.locale, {\n day: '2-digit',\n month: 'short',\n year: 'numeric'\n });\n private readonly timeZone = getLocalTimeZone();\n private readonly defaultFormat = 'dd MMM, yyyy';\n\n parse(value: string): DateValue | null {\n return value ? parseDate(value) : null;\n }\n\n format(date: DateValue): string {\n const dateTimeFormat = this.config?.dateFormat || this.defaultFormat;\n\n if (!date) {\n return dateTimeFormat;\n }\n\n const parts = this.formatter.formatToParts(date.toDate(this.timeZone));\n const day = parts.find((p) => p.type === 'day')?.value || '';\n const month = parts.find((p) => p.type === 'month')?.value || '';\n const year = parts.find((p) => p.type === 'year')?.value || '';\n\n return dateTimeFormat\n .replace('dd', day)\n .replace('MMM', month)\n .replace('yyyy', year);\n }\n}\n","import { Component, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NsDatepickerService } from './date-picker.service';\nimport { NsDayView, NsMonthView } from './date-picker-view';\n\n@Component({\n selector: 'ns-date-picker-month',\n imports: [CommonModule],\n template: `\n <table class=\"ns-date-picker__month\">\n <thead>\n <tr>\n @for (weekday of month().weekdays; track weekday) {\n <th class=\"ns-date-picker__weekday\">{{ weekday | titlecase }}</th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (week of month().weeks; track week.number) {\n <tr>\n @for (day of week.days; track day.number) {\n <td\n [ngClass]=\"{\n 'ns-date-picker--selected': day.context.selected,\n 'ns-date-picker--disabled': day.context.disabled,\n 'ns-date-picker--current': day.context.isToday\n }\"\n >\n <button\n class=\"ns-date-picker__day\"\n (click)=\"doSelect(day)\"\n [disabled]=\"day.context.disabled\"\n >\n {{ day.date.day }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n `,\n styleUrl: './date-picker-month.component.scss'\n})\nexport class NsDatePickerMonthComponent {\n readonly month = input<NsMonthView>(undefined);\n\n private readonly service = inject(NsDatepickerService);\n\n doSelect(day: NsDayView) {\n if (!day.context.disabled) {\n this.service.select(day.date, { emitEvent: true });\n }\n }\n}\n","import { Component, inject, input } from '@angular/core';\nimport { NsButtonComponent } from '../../../button';\nimport { NsMonthView } from './date-picker-view';\nimport { NsDatepickerService } from './date-picker.service';\nimport { TitleCasePipe } from '@angular/common';\n\n@Component({\n selector: 'ns-date-picker-navigation',\n imports: [NsButtonComponent, TitleCasePipe],\n standalone: true,\n template: `\n <div class=\"ns-date-picker__wrap\">\n <ns-button icon=\"angle-left\" (click)=\"prev()\" />\n <span class=\"ns-date-picker__month-title\">{{\n month().label | titlecase\n }}</span>\n <ns-button icon=\"angle-right\" (click)=\"next()\" />\n </div>\n `,\n host: {\n '[class.ns-date-picker__navigation]': 'true'\n },\n styles: `\n .ns-date-picker__wrap {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #eee;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n\n &::ng-deep .btn {\n min-width: unset;\n padding: unset;\n }\n }\n `\n})\nexport class NsDatePickerNavigationComponent {\n readonly month = input<NsMonthView>(undefined);\n\n private readonly service = inject(NsDatepickerService);\n\n prev() {\n this.service.navigate(this.month().startDate.subtract({ months: 1 }));\n }\n\n next() {\n this.service.navigate(this.month().startDate.add({ months: 1 }));\n }\n}\n","import { Component, effect, inject, input } from '@angular/core';\n\nimport { NsDatePickerMonthComponent } from './date-picker-month.component';\nimport { NsDatePickerNavigationComponent } from './date-picker-navigation.component';\nimport { NsMonthView } from './date-picker-view';\nimport { NsDatepickerService } from './date-picker.service';\nimport { NsPlacement } from '../../../../types';\nimport { DateValue } from '@internationalized/date';\n\n@Component({\n selector: 'ns-date-picker-menu',\n standalone: true,\n imports: [NsDatePickerMonthComponent, NsDatePickerNavigationComponent],\n template: `\n <ns-date-picker-navigation [month]=\"model\" />\n <ns-date-picker-month [month]=\"model\" />\n `,\n host: {\n '[class.ns-date-picker__menu]': 'true',\n '[class.ns-date-picker__menu--start]': 'placement() == \"bottom-start\"',\n '[class.ns-date-picker__menu--end]': 'placement() == \"bottom-end\"'\n },\n styleUrls: ['./date-picker-menu.component.scss']\n})\nexport class NsDatePickerMenuComponent {\n public model: NsMonthView;\n\n readonly placement = input<NsPlacement>(undefined);\n readonly startDate = input<DateValue>(undefined);\n\n private readonly service = inject(NsDatepickerService);\n\n private readonly syncStartDate = effect(() => {\n const firstDate = this.startDate();\n if (firstDate) {\n this.model = this.service.getMonth(firstDate);\n }\n });\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: 'ns-dropdown-item'\n})\nexport class NsDropdownItemDirective {\n readonly label = input<string>(undefined);\n readonly value = input<string | number>(undefined);\n readonly disabled = input<boolean>(false);\n\n constructor() {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n effect,\n forwardRef,\n HostListener,\n OnInit,\n QueryList,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../form/models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsDropdownItemDirective } from './directives/dropdown-item.directive';\nimport { NgClass } from '@angular/common';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n host: {\n '[class.dropdown]': 'true',\n '[class.ns-dropdown__filterable]': 'filterable()',\n '[class.show]': 'show'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDropdownComponent),\n multi: true\n }\n ],\n imports: [NgClass, FormsModule, NsIconsComponent]\n})\nexport class NsDropdownComponent\n extends NsValueAccessor<string | number>\n implements OnInit, AfterContentInit\n{\n readonly labelField = input('label');\n readonly valueField = input('value');\n readonly iconName = input<string>(undefined);\n readonly defaultFirst = input<boolean>(undefined);\n readonly placement = input<'start' | 'end'>('start');\n readonly filterable = input<boolean>(undefined);\n readonly collectionInput = input<Record<string, unknown>[]>([], {\n alias: 'collection'\n });\n\n @ViewChild('input', { read: ElementRef })\n searchRef: ElementRef<HTMLInputElement>;\n @ContentChildren(NsDropdownItemDirective)\n items: QueryList<NsDropdownItemDirective>;\n\n public show: boolean = false;\n\n private _filtered: Record<string, unknown>[];\n private _collection: Record<string, unknown>[] = [];\n private _search: string;\n\n constructor() {\n super();\n effect(() => this.setCollection(this.collectionInput()));\n }\n\n ngOnInit(): void {}\n\n ngAfterContentInit() {\n if (!this.collection.length && !!this.items) {\n this.setCollection(\n this.items.toArray().map((item) => ({\n label: item.label(),\n value: item.value(),\n disabled: item.disabled()\n }))\n );\n }\n }\n\n private setCollection(source: Record<string, unknown>[]): void {\n this._collection = this._filtered = source;\n }\n\n get collection() {\n return this.filterable() ? this._filtered : this._collection;\n }\n\n get selected() {\n return this.collection.find(\n (item) => item[this.valueField()] == this.value()\n );\n }\n\n set search(value: string) {\n this._search = value;\n this._filtered = this._collection.filter((item) =>\n String(item[this.labelField()])\n .toLowerCase()\n .includes(value.toLowerCase())\n );\n this.show = !!value;\n }\n\n get search() {\n return this._search;\n }\n\n select(item: Record<string, unknown>): void {\n const value = item[this.valueField()];\n if (typeof value === 'string' || typeof value === 'number') {\n this.setValue(value);\n }\n }\n\n @HostListener('click', ['$event'])\n toggle(event: MouseEvent) {\n event.preventDefault();\n if (!this.disabled()) {\n this.show = !this.show;\n if (this.filterable()) {\n if (this.show) {\n this.searchRef.nativeElement.focus();\n } else {\n this._search = '';\n this._filtered = this._collection;\n }\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n keyDown(event: KeyboardEvent) {\n if (this.show) {\n let index: number = this.selected\n ? this.collection.findIndex(\n (item) =>\n this.selected[this.valueField()] === item[this.valueField()]\n )\n : -1;\n switch (event.key) {\n case 'ArrowUp':\n if (index >= 1) {\n this.setValue(String(this.collection[--index][this.valueField()]));\n }\n break;\n case 'ArrowDown':\n if (index < this.collection.length - 1) {\n this.setValue(String(this.collection[++index][this.valueField()]));\n }\n break;\n case 'Enter':\n event.preventDefault();\n this._search = '';\n this.show = false;\n }\n } else if (event.key == 'Enter') {\n event.preventDefault();\n this._search = '';\n this._filtered = this._collection;\n this.show = true;\n }\n }\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n@if (filterable()) {\n <div class=\"ns-dropdown__search\" [class.disabled]=\"disabled()\">\n <div\n class=\"ns-dropdown__value\"\n [ngClass]=\"{ 'ns-dropdown__placeholder': !selected || show }\"\n [hidden]=\"!!search\"\n >\n <span class=\"ns-dropdown__value-label\">\n {{ !!selected ? selected[labelField()] : placeholder() }}\n </span>\n </div>\n\n <div class=\"ns-dropdown__input\">\n <input\n class=\"form-control\"\n [(ngModel)]=\"search\"\n #input\n [disabled]=\"disabled()\"\n [id]=\"id\"\n />\n </div>\n\n <svg\n class=\"dropdown-toggle\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n height=\"12px\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n </div>\n} @else {\n <button\n class=\"btn btn__secondary\"\n [id]=\"id\"\n type=\"button\"\n [disabled]=\"disabled()\"\n >\n @if (iconName()) {\n <ns-icon [name]=\"iconName()\" [size]=\"16\" />\n }\n @if (placeholder() && selected) {\n <label class=\"form-label\">\n {{ placeholder() }}: <span [innerHtml]=\"selected[labelField()]\"></span>\n </label>\n } @else {\n <label\n class=\"form-label\"\n [innerHtml]=\"!!selected ? selected[labelField()] : placeholder()\"\n ></label>\n }\n\n <svg\n class=\"dropdown-toggle\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n height=\"12px\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n </button>\n}\n\n<ul\n class=\"dropdown-menu\"\n [attr.aria-labelledby]=\"id\"\n [ngClass]=\"{\n show: show,\n 'dropdown-start': placement() !== 'end',\n 'dropdown-end': placement() == 'end'\n }\"\n (mouseleave)=\"show = false\"\n>\n @for (item of collection; track item) {\n <li>\n <button\n class=\"dropdown-item\"\n [ngClass]=\"{ active: selected === item }\"\n (click)=\"select(item)\"\n >\n <svg\n class=\"icon-check-mark\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n height=\"16px\"\n width=\"16px\"\n >\n <path\n d=\"M6.19,14.51a.77.77,0,0,1-.57-.25l-4.2-4.8a.75.75,0,0,1,1.13-1l3.56,4.06L13.36,1.82a.75.75,0,0,1,1-.21.76.76,0,0,1,.21,1.05L6.81,14.18a.73.73,0,0,1-.58.33Z\"\n ></path>\n </svg>\n <span>{{ item[labelField()] }}</span>\n </button>\n </li>\n }\n @if (!collection?.length) {\n <button class=\"dropdown-item\">\n <span>No items found</span>\n </button>\n }\n</ul>\n","import {\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n createComponent,\n DestroyRef,\n ElementRef,\n EnvironmentInjector,\n forwardRef,\n inject,\n Injector,\n NgZone,\n OnInit,\n Type,\n DOCUMENT,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDatepickerView, WeekdayStyle } from './date-picker-view';\nimport { DatepickerInputs, NsDatepickerService } from './date-picker.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NsDateParserFormatter } from './date-parser-formatter';\n\nimport { NsDatePickerMenuComponent } from './date-picker-menu.component';\nimport { nsAutoClose } from '@ng-solid/core';\nimport { Subject } from 'rxjs';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { DateValue, DayOfWeek } from '@internationalized/date';\nimport { NsDateView, NsPlacement } from '../../../../types';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../../../dropdown';\n\n@Component({\n selector: 'ns-date-picker',\n imports: [\n FormsModule,\n NsIconsComponent,\n NsDropdownComponent,\n NsDropdownItemDirective\n ],\n standalone: true,\n template: `\n @if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n }\n\n <div class=\"row\">\n <div class=\"col-md-8\">\n <div class=\"form-control\" (click)=\"toggleCalendar()\">\n <ns-icon name=\"calendar\" size=\"18\" />\n\n <input\n type=\"text\"\n class=\"ns-date-picker__input\"\n readonly\n [ngModel]=\"value()\"\n [attr.id]=\"id\"\n [attr.placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n (blur)=\"onTouched()\"\n #input\n />\n </div>\n </div>\n\n <div class=\"col-md-4\">\n <ns-dropdown iconName=\"clock\">\n <ns-dropdown-item label=\"12:00 AM\" value=\"0\" />\n </ns-dropdown>\n </div>\n </div>\n `,\n styleUrls: ['./date-picker.component.scss'],\n host: {\n '[class.ns-date-picker]': 'true',\n '[class.ns-date-picker--show]': 'isOpen()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDatePickerComponent),\n multi: true\n },\n NsDatepickerService\n ]\n})\nexport class NsDatePickerComponent\n extends NsValueAccessor<string>\n implements OnInit\n{\n model: NsDatepickerView;\n\n private readonly service = inject(NsDatepickerService);\n private readonly parserFormatter = inject(NsDateParserFormatter);\n private readonly elRef = inject(ElementRef<HTMLInputElement>);\n private readonly appRef = inject(ApplicationRef);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(EnvironmentInjector);\n private readonly ngZone = inject(NgZone);\n private readonly document = inject(DOCUMENT);\n\n readonly autoClose = input<boolean | 'inside' | 'outside'>(true);\n readonly placement = input<NsPlacement>('bottom-start');\n readonly view = input<NsDateView>(undefined);\n readonly visibleMonths = input(1);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n readonly maxDate = input<DateValue | Date | string>(undefined);\n readonly minDate = input<DateValue | Date | string>(undefined);\n readonly navigation = input<'select' | 'arrows' | 'none'>('select');\n readonly weekdayStyle = input<WeekdayStyle>('short');\n\n private controlValue: DateValue;\n private popupRef: ComponentRef<NsDatePickerMenuComponent> | null = null;\n private destroyCloseHandlers$ = new Subject<void>();\n\n ngOnInit(): void {\n if (this.model === undefined) {\n const inputs: DatepickerInputs = {\n visibleMonths: this.visibleMonths(),\n firstDayOfWeek: this.firstDayOfWeek(),\n navigation: this.navigation(),\n minDate: this.service.ensureDateValue(this.minDate()) || undefined,\n maxDate: this.service.ensureDateValue(this.maxDate()) || undefined,\n weekdayStyle: this.weekdayStyle()\n };\n this.service.set(inputs);\n }\n\n this.service.selected$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date) => {\n this.value.set(this.parserFormatter.format(date));\n this.onChange(date.toString());\n const autoClose = this.autoClose();\n if (autoClose === true || autoClose === 'inside') {\n this.close();\n }\n this.cdRef.markForCheck();\n });\n\n this.service.model$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((model) => {\n this.model = model;\n this.cdRef.markForCheck();\n });\n }\n\n override writeValue(value: string) {\n this.controlValue = this.service.ensureDateValue(value);\n this.value.set(this.parserFormatter.format(this.controlValue));\n }\n\n isOpen() {\n return !!this.popupRef;\n }\n\n toggleCalendar(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private open() {\n if (!this.isOpen()) {\n this.popupRef = this._createComponent(NsDatePickerMenuComponent);\n this.appRef.attachView(this.popupRef.hostView);\n this.elRef.nativeElement.appendChild(\n this.popupRef.location.nativeElement\n );\n this._applyDatepickerInputs(this.popupRef);\n this._setCloseHandlers();\n this.popupRef.changeDetectorRef.detectChanges();\n }\n }\n\n private _createComponent<T>(component: Type<T>) {\n return createComponent(component, {\n environmentInjector: this.injector,\n elementInjector: Injector.create({\n providers: [\n {\n provide: NsDatepickerService,\n useFactory: () => this.service\n }\n ]\n })\n });\n }\n\n private _applyDatepickerInputs(\n menuRef: ComponentRef<NsDatePickerMenuComponent>\n ): void {\n menuRef.setInput(\n 'startDate',\n this.model?.startDate || this.service.today()\n );\n menuRef.setInput('placement', this.placement());\n }\n\n private close() {\n if (this.isOpen()) {\n this.elRef.nativeElement.removeChild(\n this.popupRef.location.nativeElement\n );\n this.popupRef?.destroy();\n this.popupRef = null;\n this.destroyCloseHandlers$.next();\n this.cdRef.markForCheck();\n }\n }\n\n private _setCloseHandlers() {\n const popupRef = this.popupRef;\n if (!popupRef) {\n return;\n }\n\n nsAutoClose(\n this.ngZone,\n this.document,\n this.autoClose(),\n () => this.close(),\n this.destroyCloseHandlers$,\n [],\n [this.elRef.nativeElement, popupRef.location.nativeElement]\n );\n }\n}\n","import { Directive, forwardRef, inject } from '@angular/core';\nimport { NsValueAccessor } from '../models/value-accessor';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsDateParserFormatter } from '../components/date-picker/date-parser-formatter';\n\n@Directive({\n selector: 'ns-date-range-start',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDateRangeStartDirective),\n multi: true\n }\n ]\n})\nexport class NsDateRangeStartDirective extends NsValueAccessor<string> {\n private parserFormatter = inject(NsDateParserFormatter);\n\n override writeValue(value: string) {\n const nsDate = this.parserFormatter.parse(value);\n this.value.set(this.parserFormatter.format(nsDate));\n }\n}\n\n@Directive({\n selector: 'ns-date-range-end',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsDateRangeEndDirective),\n multi: true\n }\n ]\n})\nexport class NsDateRangeEndDirective extends NsValueAccessor<string> {\n private parserFormatter = inject(NsDateParserFormatter);\n\n override writeValue(value: string) {\n const nsDate = this.parserFormatter.parse(value);\n this.value.set(this.parserFormatter.format(nsDate));\n }\n}\n","import { Component, ContentChild, input } from '@angular/core';\n\nimport {\n NsDateRangeEndDirective,\n NsDateRangeStartDirective\n} from '../../directives/date-range.directive';\n\nimport { NsDatePickerComponent } from './date-picker.component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'ns-date-range',\n standalone: true,\n imports: [NsDatePickerComponent, FormsModule],\n template: `\n <div class=\"ns-date-range__wrap\">\n @if (start) {\n <ns-date-picker\n [label]=\"start.label()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"start.value()\"\n (ngModelChange)=\"start.setValue($event)\"\n />\n }\n @if (end) {\n <ns-date-picker\n [label]=\"end.label()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"end.value()\"\n (ngModelChange)=\"end.setValue($event)\"\n />\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n position: relative;\n max-width: 30rem;\n }\n\n .ns-date-range__wrap {\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: 1rem;\n }\n `,\n host: {\n '[class.ns-date-range]': 'true'\n }\n})\nexport class NsDateRangePickerComponent {\n readonly placeholder = input<string>(undefined);\n\n @ContentChild(NsDateRangeStartDirective) start: NsDateRangeStartDirective;\n @ContentChild(NsDateRangeEndDirective) end: NsDateRangeEndDirective;\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ns-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputComponent),\n multi: true\n }\n ],\n imports: [FormsModule]\n})\nexport class NsInputComponent extends NsValueAccessor<string> {\n readonly ariaLabel = input<string>(undefined);\n readonly ariaDescribedBy = input<string>(undefined);\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n\n<input\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n class=\"form-control\"\n [attr.id]=\"id\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.readonly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n (blur)=\"onTouched()\"\n/>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ns-input-group-addon',\n template: '<ng-content></ng-content>',\n styleUrls: ['./input-group-addon.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.ns-input-group-addon]': 'true'\n }\n})\nexport class NsInputGroupAddonComponent {}\n","import {\n booleanAttribute,\n Component,\n ContentChild,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { NsInputComponent } from '../input';\nimport { NsInputGroupAddonComponent } from './input-group-addon.component';\n\nexport type NsInputGroupSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'ns-input-group',\n templateUrl: './input-group.component.html',\n styleUrls: ['./input-group.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n imports: [NsInputGroupAddonComponent],\n host: {\n '[class.ns-input-group]': 'true'\n }\n})\nexport class NsInputGroupComponent {\n readonly label = input<string>(undefined);\n readonly prepend = input<string>(undefined);\n readonly append = input<string>(undefined);\n\n readonly size = input<NsInputGroupSize>('md');\n\n readonly wrap = input(true, { transform: booleanAttribute });\n\n @ContentChild(NsInputComponent)\n primaryInput?: NsInputComponent;\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"primaryInput?.id\">{{ label() }}</label>\n}\n\n<div\n class=\"input-group\"\n [class.input-group--sm]=\"size() === 'sm'\"\n [class.input-group--lg]=\"size() === 'lg'\"\n [class.input-group--nowrap]=\"!wrap()\"\n>\n @if (prepend()) {\n <ns-input-group-addon>{{ prepend() }}</ns-input-group-addon>\n }\n <ng-content></ng-content>\n @if (append()) {\n <ns-input-group-addon>{{ append() }}</ns-input-group-addon>\n }\n</div>\n","export function clamp(\n value: number,\n min: number = -Infinity,\n max: number = Infinity\n): number {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function roundToStepPrecision(value: number, step: number): number {\n let roundedValue = value;\n let stepString = step.toString();\n let pointIndex = stepString.indexOf('.');\n let precision = pointIndex >= 0 ? stepString.length - pointIndex : 0;\n if (precision > 0) {\n let pow = Math.pow(10, precision);\n roundedValue = Math.round(roundedValue * pow) / pow;\n }\n return roundedValue;\n}\n\nexport function snapValueToStep(\n value: number,\n min: number | undefined,\n max: number | undefined,\n step: number\n): number {\n min = Number(min);\n max = Number(max);\n let remainder = (value - (isNaN(min) ? 0 : min)) % step;\n let snappedValue = roundToStepPrecision(\n Math.abs(remainder) * 2 >= step\n ? value + Math.sign(remainder) * (step - Math.abs(remainder))\n : value - remainder,\n step\n );\n\n if (!isNaN(min)) {\n if (snappedValue < min) {\n snappedValue = min;\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue =\n min + Math.floor(roundToStepPrecision((max - min) / step, step)) * step;\n }\n } else if (!isNaN(max) && snappedValue > max) {\n snappedValue = Math.floor(roundToStepPrecision(max / step, step)) * step;\n }\n\n // correct floating point behavior by rounding to step precision\n snappedValue = roundToStepPrecision(snappedValue, step);\n\n return snappedValue;\n}\n\nexport const handleDecimalOperation = (\n operator: '-' | '+',\n value1: number,\n value2: number\n): number => {\n let result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Check if we have decimals\n if (value1 % 1 !== 0 || value2 % 1 !== 0) {\n const value1Decimal = value1.toString().split('.');\n const value2Decimal = value2.toString().split('.');\n const value1DecimalLength =\n (value1Decimal[1] && value1Decimal[1].length) || 0;\n const value2DecimalLength =\n (value2Decimal[1] && value2Decimal[1].length) || 0;\n const multiplier = Math.pow(\n 10,\n Math.max(value1DecimalLength, value2DecimalLength)\n );\n\n // Transform the decimals to integers based on the precision\n value1 = Math.round(value1 * multiplier);\n value2 = Math.round(value2 * multiplier);\n\n // Perform the operation on integers values to make sure we don't get a fancy decimal value\n result = operator === '+' ? value1 + value2 : value1 - value2;\n\n // Transform the integer result back to decimal\n result /= multiplier;\n }\n\n return result;\n};\n","import {\n Component,\n DEFAULT_CURRENCY_CODE,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n LOCALE_ID,\n numberAttribute,\n OnInit,\n Provider,\n Renderer2,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormatter, NumberParser } from '@internationalized/number';\nimport { clamp, handleDecimalOperation, snapValueToStep } from './utils';\nimport { NS_FORMAT_OPTIONS } from '@ng-solid/core';\n\nconst NS_INPUT_NUMBER_PROVIDER: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputNumberComponent),\n multi: true\n};\n\n@Component({\n selector: 'ns-input-number',\n imports: [FormsModule],\n template: ` @if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n }\n\n <div class=\"input-group\">\n <input\n #input\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.id]=\"id\"\n [attr.min]=\"minValue()\"\n [attr.max]=\"maxValue()\"\n [attr.readonly]=\"readonly()\"\n [attr.step]=\"step()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"value()\"\n (input)=\"onInput($event)\"\n />\n </div>`,\n styleUrls: ['./input-number.component.scss'],\n providers: [NS_INPUT_NUMBER_PROVIDER]\n})\nexport class NsInputNumberComponent\n extends NsValueAccessor<string | number>\n implements OnInit\n{\n readonly step = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly precision = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly minValue = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly maxValue = input<number, unknown>(undefined, {\n transform: numberAttribute\n });\n readonly formatStyle = input<Intl.NumberFormatOptions['style']>('decimal');\n\n @ViewChild('input', { static: true }) input: ElementRef<HTMLInputElement>;\n\n public numberInput: number = 0;\n\n private readonly defaultOptions = inject(NS_FORMAT_OPTIONS);\n private readonly currency = inject(DEFAULT_CURRENCY_CODE);\n private readonly renderer = inject(Renderer2);\n private readonly locale = inject(LOCALE_ID);\n\n private formatter: NumberFormatter;\n private parser: NumberParser;\n\n ngOnInit() {\n this.formatter = new NumberFormatter(this.locale, this.formatOptions);\n this.parser = new NumberParser(this.locale, this.formatOptions);\n }\n\n get formatOptions(): Intl.NumberFormatOptions {\n return {\n ...this.defaultOptions.number,\n style: this.formatStyle(),\n currency: this.currency,\n minimumFractionDigits: this.precision(),\n maximumFractionDigits: this.precision()\n };\n }\n\n writeValue(value: string | number) {\n if (value === null) {\n value = NaN;\n } else if (typeof value === 'string') {\n value = Number(value);\n }\n\n if (value === undefined && !isNaN(value)) {\n const step = this.step();\n if (step !== undefined && !isNaN(step)) {\n value = snapValueToStep(value, this.minValue(), this.maxValue(), step);\n } else {\n value = clamp(value, this.minValue(), this.maxValue());\n }\n }\n\n const formattedValue = this.formatter.format(!isNaN(value) ? value : 0);\n this.value.set(formattedValue);\n this.numberInput = this.parser.parse(formattedValue);\n }\n\n override setValue(value: string): void {\n if (this.value() !== value) {\n let parsedValue = this.parser.parse(value);\n\n const step = this.step();\n if (step !== undefined && !isNaN(step)) {\n parsedValue = snapValueToStep(\n parsedValue,\n this.minValue(),\n this.maxValue(),\n step\n );\n } else {\n parsedValue = clamp(parsedValue, this.minValue(), this.maxValue());\n }\n\n if (isNaN(parsedValue)) {\n parsedValue = 0; // Reset to 0 if parsing fails\n }\n\n if (this.numberInput !== parsedValue) {\n this.value.set(value);\n this.numberInput = parsedValue;\n this.onChange(parsedValue);\n }\n }\n }\n\n onInput(event: Event) {\n const { value } = event.target as HTMLInputElement;\n if (!this.parser.isValidPartialNumber(value)) {\n if (this.type() === 'currency') {\n this.renderer.setProperty(\n this.input.nativeElement,\n 'value',\n this.formatOptions.currency\n );\n }\n this.setValue('');\n } else {\n this.setValue(value);\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n if (!this.disabled()) {\n let newValue: number | null = NaN;\n\n if (event.key === 'ArrowUp') {\n newValue = this.safeNextStep('+', this.minValue());\n } else if (event.key === 'ArrowDown') {\n newValue = this.safeNextStep('-', this.maxValue());\n }\n\n if (!isNaN(newValue)) {\n event?.preventDefault();\n this.setValue(this.formatter.format(newValue));\n }\n }\n }\n\n @HostListener('focusout', ['$event'])\n onFocusOut(event: FocusEvent) {\n if (!this.disabled()) {\n event?.preventDefault();\n this.value.set(this.formatter.format(this.numberInput));\n }\n }\n\n private safeNextStep = (operation: '+' | '-', minMax: number = 0) => {\n let prev = this.numberInput;\n\n const step = this.step();\n let clampStep = step !== undefined && !isNaN(step) ? step : 1;\n const stepValue = this.step();\n if (\n this.formatOptions.style === 'percent' &&\n (stepValue === undefined || isNaN(stepValue))\n ) {\n clampStep = 0.01;\n }\n\n if (isNaN(prev)) {\n // if the input is empty, start from the min/max value when incrementing/decrementing,\n // or zero if there is no min/max value defined.\n let newValue = isNaN(minMax) ? 0 : minMax;\n return snapValueToStep(\n newValue,\n this.minValue(),\n this.maxValue(),\n clampStep\n );\n } else {\n // otherwise, first snap the current value to the nearest step. if it moves in the direction\n // we're going, use that value, otherwise add the step and snap that value.\n let newValue = snapValueToStep(\n prev,\n this.minValue(),\n this.maxValue(),\n clampStep\n );\n if (\n (operation === '+' && newValue > prev) ||\n (operation === '-' && newValue < prev)\n ) {\n return newValue;\n }\n\n return snapValueToStep(\n handleDecimalOperation(operation, prev, clampStep),\n this.minValue(),\n this.maxValue(),\n clampStep\n );\n }\n };\n}\n","import { Component, forwardRef, OnInit, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-password',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsPasswordComponent),\n multi: true\n }\n ],\n imports: [RouterLink, FormsModule, NsIconsComponent]\n})\nexport class NsPasswordComponent extends NsValueAccessor implements OnInit {\n readonly forgotLink = input<string>(undefined);\n readonly showAndHide = input<boolean>(undefined);\n\n public show: boolean;\n\n constructor() {\n super();\n }\n\n ngOnInit() {}\n\n toggle() {\n this.show = !this.show;\n }\n}\n","@if (label()) {\n <label class=\"form-label\">\n {{ label() }}\n @if (forgotLink()) {\n <a [routerLink]=\"forgotLink()\">Olvido su contraseña?</a>\n }\n </label>\n}\n\n<div class=\"input-group\">\n <input\n class=\"form-control\"\n [type]=\"show ? 'input' : 'password'\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [placeholder]=\"placeholder()\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n />\n\n @if (showAndHide()) {\n <div class=\"input-group-append\" (click)=\"toggle()\">\n <span class=\"input-group-text\">\n <ns-icon [name]=\"show ? 'eye-hide' : 'eye-show'\" />\n </span>\n </div>\n }\n</div>\n","import {\n booleanAttribute,\n Component,\n computed,\n forwardRef,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { YesNo } from '@ng-solid/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'ns-switch',\n imports: [FormsModule, NgClass],\n template: `\n <input\n type=\"checkbox\"\n class=\"ns-switch__input\"\n role=\"switch\"\n [ngModel]=\"checked()\"\n (ngModelChange)=\"setValue($event)\"\n [ngClass]=\"{ 'ns-switch__input--success': theme() == 'success' }\"\n [attr.id]=\"id\"\n [disabled]=\"disabled()\"\n />\n <label class=\"ns-switch__label\" [attr.for]=\"id\">{{ label() }}</label>\n `,\n styleUrls: ['./switch.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsSwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class.ns-switch]': 'true',\n '[class.ns-switch--small]': 'size() === \"small\"',\n '[class.ns-switch--large]': 'size() === \"large\"'\n }\n})\nexport class NsSwitchComponent extends NsValueAccessor<boolean | string> {\n readonly boolean = input<boolean, unknown>(true, {\n transform: booleanAttribute\n });\n readonly size = input<'large' | 'small'>('small');\n readonly theme = input<'primary' | 'success'>('primary');\n\n readonly checked = computed(() => {\n const value = this.value();\n return typeof value === 'boolean' ? value : YesNo.isYes(value);\n });\n\n override setValue(checked: boolean): void {\n super.setValue(this.boolean() ? checked : YesNo.yesOrNo(checked));\n }\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ns-textarea',\n template: `\n @if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n }\n\n <textarea\n class=\"form-control\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [id]=\"id\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n ></textarea>\n `,\n styleUrls: ['./text-area.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsTextAreaComponent),\n multi: true\n }\n ],\n imports: [FormsModule]\n})\nexport class NsTextAreaComponent extends NsValueAccessor<string> {\n readonly rows = input<number>(3);\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Renderer2,\n input\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../models/value-accessor';\n\n@Component({\n selector: 'ns-content-editable',\n template: '',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsContentEditableComponent),\n multi: true\n }\n ],\n styles: [\n ':host{display:block; position:relative; background-color:var(--ns-content-bg, #fff); width:100%; height:fit-content; min-height:7rem; outline:none;}',\n ':host.ns-content--disabled{background-color: var(--ns-content-disabled-bg,#e9ecef); opacity: 0.65;}'\n ],\n host: {\n '[class.ns-content--disabled]': 'disabled()'\n }\n})\nexport class NsContentEditableComponent extends NsValueAccessor<string> {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly maxLength = input<number>(undefined, { alias: 'maxlength' });\n\n @HostBinding('attr.contenteditable')\n enabled: boolean = true;\n\n override writeValue(value: string): void {\n if (typeof value !== 'undefined') {\n this.renderer.setProperty(\n this.elementRef.nativeElement,\n 'innerHTML',\n value || ''\n );\n }\n }\n\n @HostListener('input')\n onInput(): void {\n this.onChange(this.elementRef.nativeElement.innerHTML);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched();\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n const maxLength = this.maxLength();\n if (\n maxLength &&\n this.elementRef.nativeElement.innerText.length >= maxLength &&\n event.key !== 'Backspace'\n ) {\n event.preventDefault();\n }\n }\n\n override setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n this.enabled = !isDisabled;\n }\n}\n","// COMPONENTS\nexport * from './components/checkbox';\nexport * from './components/date-picker';\nexport * from './components/input';\nexport * from './components/input-group';\nexport * from './components/input-number';\nexport * from './components/password';\nexport * from './components/switch';\nexport * from './components/text-area';\n\n// DIRECTIVES\nexport * from './directives';\n\n// MODELS\nexport * from './models';\n","import {\n Component,\n ContentChildren,\n forwardRef,\n QueryList\n} from '@angular/core';\n\nimport { NsValueAccessor } from '../form';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsButtonComponent } from '../button';\n\n@Component({\n selector: 'ns-button-group',\n standalone: true,\n imports: [],\n template: `\n @if (label()) {\n <label class=\"form-label\">{{ label() }}</label>\n }\n\n <div\n class=\"btn__group\"\n role=\"group\"\n aria-label=\"Basic radio toggle button group\"\n >\n @for (item of items; track item; let i = $index; let isFirst = $first) {\n <input\n type=\"radio\"\n class=\"btn__check\"\n autocomplete=\"off\"\n [attr.id]=\"'btn-group__' + i\"\n [checked]=\"value() == item.value()\"\n (click)=\"setValue(item.value())\"\n />\n <label class=\"btn btn__outline-primary\" [attr.for]=\"'btn-group__' + i\">\n {{ item.label() }}\n </label>\n }\n </div>\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsButtonGroupComponent),\n multi: true\n }\n ],\n styleUrls: ['./button-group.component.scss'],\n host: {\n '[class.ns-button-group]': 'true'\n }\n})\nexport class NsButtonGroupComponent extends NsValueAccessor<string | number> {\n @ContentChildren(NsButtonComponent) items: QueryList<NsButtonComponent>;\n}\n","import { Component, OnInit, input, output } from '@angular/core';\nimport { NsComment } from './interfaces/comment';\nimport { NgClass } from '@angular/common';\nimport { NsAvatarComponent } from '../avatar';\nimport { NsContentEditableComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\nimport { NsHumanizePipe, NsSafeHtmlPipe } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-comment',\n templateUrl: './comment.component.html',\n styleUrls: ['./comment.component.scss'],\n imports: [\n NgClass,\n NsAvatarComponent,\n NsContentEditableComponent,\n FormsModule,\n NsSafeHtmlPipe,\n NsHumanizePipe\n ]\n})\nexport class NsCommentComponent implements OnInit {\n readonly title = input<string>(undefined);\n readonly description = input<string>(undefined);\n readonly placeholder = input<string>(undefined);\n readonly messages = input<NsComment[]>([]);\n readonly cover = input<{\n url: string;\n alt?: string;\n }>(undefined);\n readonly submitText = input<string>(undefined);\n readonly logged = input<boolean>(undefined);\n readonly maxLength = input<number>(128);\n readonly disabled = input<boolean>(undefined);\n\n readonly commit = output<string>();\n\n public invalid: boolean = false;\n public content: string = '';\n\n private clearEmptyValues: RegExp = new RegExp(/(<div><br><\\/div>)*/g);\n\n constructor() {}\n\n ngOnInit(): void {}\n\n publish() {\n if (this.content) {\n this.commit.emit(this.content.replace(this.clearEmptyValues, ''));\n this.content = '';\n } else {\n this.invalid = true;\n }\n }\n\n get counter() {\n const characters = this.maxLength() - this.content.length;\n return characters > 0 ? characters : 0;\n }\n}\n","@if (logged()) {\n <div class=\"ns-comment-box\" [ngClass]=\"{ 'ns-comment-invalid': invalid }\">\n <ns-avatar class=\"ns-comment-avatar\" [src]=\"cover()?.url\" />\n\n <div class=\"ns-comment-input-wrap\">\n <div class=\"ns-comment-input\">\n <ns-content-editable\n class=\"ns-comment-input-content\"\n [maxlength]=\"maxLength()\"\n [(ngModel)]=\"content\"\n [disabled]=\"disabled()\"\n />\n\n @if (!content) {\n <span class=\"ns-comment-input-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n <div class=\"ns-comment-footer\">\n <span class=\"ns-comment-counter\">Quedan {{ counter }} caracteres</span>\n\n @if (submitText()) {\n <button\n class=\"ns-comment-submit\"\n (click)=\"publish()\"\n [disabled]=\"disabled()\"\n >\n {{ submitText() }}\n </button>\n }\n </div>\n </div>\n </div>\n} @else {\n <h4 class=\"ns-comment-title\">\n {{ title() }} <br />\n <small\n class=\"ns-comment-description\"\n [innerHTML]=\"description() | nsSafeHtml\"\n ></small>\n </h4>\n\n <div class=\"ns-comment-logout\">\n <ng-content />\n </div>\n}\n@if (messages().length) {\n <ul class=\"ns-comment-list\">\n @for (comment of messages(); track comment) {\n <li class=\"ns-comment\">\n <ns-avatar\n class=\"ns-comment-cover\"\n [src]=\"comment.cover?.url\"\n size=\"medium\"\n />\n\n <div class=\"ns-comment-wrap\">\n <div class=\"ns-comment-user-wrap\">\n @if (comment?.author; as author) {\n <a [attr.href]=\"author.link\" class=\"ns-comment-author\">\n {{ author.name }}\n </a>\n }\n @if (comment?.created; as date) {\n <span class=\"ns-comment-date\">{{ date | nsHumanize }}</span>\n }\n\n <div\n class=\"ns-comment-message\"\n [innerHTML]=\"comment?.message | nsSafeHtml\"\n ></div>\n </div>\n </div>\n </li>\n }\n </ul>\n}\n","export enum Commands {\n BOLD = 'bold',\n CREATE_LINK = 'createLink',\n FONT_NAME = 'fontName',\n FONT_SIZE = 'fontSize',\n FORMAT_BLOCK = 'formatBlock',\n INSERT_HTML = 'insertHTML',\n INSERT_IMAGE = 'insertImage',\n INSERT_ORDERED_LIST = 'insertOrderedList',\n INSERT_UNORDERED_LIST = 'insertUnorderedList',\n INSERT_TEXT = 'insertText',\n ITALIC = 'italic',\n JUSTIFY_CENTER = 'justifyCenter',\n JUSTIFY_FULL = 'justifyFull',\n JUSTIFY_LEFT = 'justifyLeft',\n JUSTIFY_RIGHT = 'justifyRight',\n UNDERLINE = 'underline',\n UNLINK = 'unlink',\n TEXT_COLOR = 'foreColor',\n BACKGROUND_COLOR = 'backColor'\n}\n","export const LABELS_DEFAULT: Record<string, string> = {\n bold: 'Bold',\n italic: 'Italic',\n code: 'Code',\n underline: 'Underline',\n strike: 'Strike',\n blockquote: 'Blockquote',\n bullet_list: 'Bullet List',\n ordered_list: 'Ordered List',\n paragraph: 'Paragraph',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n align_left: 'Left Align',\n align_center: 'Center Align',\n align_right: 'Right Align',\n align_justify: 'Justify',\n text_color: 'Text Color',\n background_color: 'Background Color',\n insert_link: 'Insert Link',\n link: 'Paste your link',\n text: 'Text to display',\n tooltip_link: 'Tooltip',\n open_new_window: 'Open link in new window',\n submit_link: 'Insert',\n remove_color: 'Remove'\n};\n\nexport type LabelsKeys = keyof typeof LABELS_DEFAULT;\n\nexport class Labels {\n private readonly storage = LABELS_DEFAULT;\n\n constructor(newLabels: Partial<Record<LabelsKeys, string>> = {}) {\n this.storage = { ...LABELS_DEFAULT, ...newLabels };\n }\n\n get = (key: string): string => {\n return this.storage[key] ?? '';\n };\n}\n","import { Labels } from '../models/labels';\nimport { NsEditorSetup } from '../interfaces/editor-config';\nimport { Commands } from '../enums/commands.enum';\nimport { inject, Injectable, InjectionToken, DOCUMENT } from '@angular/core';\n\nexport const NS_EDITOR_SETUP = new InjectionToken<NsEditorSetup>(\n 'NsEditorSetup'\n);\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsEditorService {\n private config = inject<NsEditorSetup>(NS_EDITOR_SETUP, { optional: true });\n private doc = inject(DOCUMENT);\n\n private savedSelection: Range | null;\n private selectedText: string;\n private readonly labels: Labels;\n\n constructor() {\n const config = this.config;\n\n this.labels = new Labels(config ? config.labels : {});\n }\n\n translate(key: string): string {\n return this.labels.get(key);\n }\n\n saveSelection() {\n switch (true) {\n case !!this.doc.getSelection:\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n break;\n case !!this.doc.getSelection && !!this.doc.createRange:\n this.savedSelection = document.createRange();\n break;\n default:\n this.savedSelection = null;\n }\n }\n\n command(name: Commands, value?: string) {\n this.doc.execCommand(name, false, value);\n }\n\n formatBlock(heading: string) {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (headings.includes(heading)) {\n this.doc.execCommand(Commands.FORMAT_BLOCK, false, heading);\n }\n }\n\n createLink(link: {\n text: string;\n url: string;\n tooltip: string;\n openNewWindow: boolean;\n }) {\n const newUrl = `<a href=\"${link.url}\" title=\"${link.tooltip}\" target=\"${\n link.openNewWindow ? '_blank' : '_self'\n }\">${link.text}</a>`;\n this.insertHtml(newUrl);\n }\n\n insertHtml(html: string): void {\n const isHTMLInserted = this.doc.execCommand(\n Commands.INSERT_HTML,\n false,\n html\n );\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n}\n","import { Component, OnInit, inject, input } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n selector: 'ns-editor-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n imports: [NgStyle]\n})\nexport class NsEditorColorPickerComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n readonly presets = input<string[][]>(undefined);\n readonly type = input<'text_color' | 'background_color'>('text_color');\n\n showPopup: boolean;\n activeColor?: string;\n isActive: boolean;\n\n trackByIndex = (index: number): number => index;\n\n ngOnInit(): void {}\n\n private get command(): Commands {\n return this.type() === 'text_color'\n ? Commands.TEXT_COLOR\n : Commands.BACKGROUND_COLOR;\n }\n\n toggle() {\n this.showPopup = !this.showPopup;\n }\n\n getContrastYIQ(hexadecimal: string): string {\n const color = hexadecimal.replace('#', '');\n const r = parseInt(color.substring(0, 2), 16);\n const g = parseInt(color.substring(2, 4), 16);\n const b = parseInt(color.substring(4, 6), 16);\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? 'black' : 'white';\n }\n\n onColorSelect(color: string): void {\n this.editor.command(this.command, (this.activeColor = color));\n this.toggle();\n }\n\n remove() {}\n}\n","<button type=\"button\" class=\"btn\" (click)=\"toggle()\">\n <span class=\"ns-editor__color-text\">\n <svg role=\"presentation\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14 12.5h-4l-.874 2.186A.5.5 0 0 1 8.66 15H7.273a.5.5 0 0 1-.456-.705l4.05-9A.5.5 0 0 1 11.323 5h1.354a.5.5 0 0 1 .456.295l4.05 9a.5.5 0 0 1-.456.705h-1.388a.5.5 0 0 1-.465-.314L14 12.5zm-.6-1.5L12 7.5 10.6 11h2.8z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n <span></span>\n </span>\n\n <svg\n role=\"presentation\"\n class=\"ns-editor__toggle\"\n fill=\"currentColor\"\n height=\"12px\"\n viewBox=\"0 0 16 16\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n</button>\n\n@if (showPopup) {\n <div class=\"ns-editor__popup\">\n @for (colorGroup of presets(); track $index) {\n <div class=\"ns-editor__color--container\">\n @for (color of colorGroup; track $index) {\n <button\n class=\"ns-editor__color\"\n type=\"button\"\n [ngStyle]=\"{ backgroundColor: color, color: getContrastYIQ(color) }\"\n [title]=\"color\"\n (click)=\"onColorSelect(color)\"\n ></button>\n }\n </div>\n }\n </div>\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { NsEditorService } from '../services/editor.service';\n\n@Pipe({\n name: 'nsEditorLabel'\n})\nexport class NsEditorLabelPipe implements PipeTransform {\n private editor = inject(NsEditorService);\n\n transform(key: string): string {\n return this.editor.translate(key);\n }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgClass } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\nimport { NsCheckboxComponent, NsInputComponent } from '../../../form';\nimport { NsButtonComponent } from '../../../button';\n\n@Component({\n selector: 'ns-editor-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n imports: [\n ReactiveFormsModule,\n NgClass,\n NsEditorLabelPipe,\n NsInputComponent,\n NsCheckboxComponent,\n NsButtonComponent\n ]\n})\nexport class NsEditorLinkComponent implements OnInit {\n public formLink: FormGroup;\n public show: boolean;\n private fb = inject(FormBuilder);\n private editor = inject(NsEditorService);\n\n ngOnInit(): void {\n this.formLink = this.fb.group({\n text: ['', Validators.required],\n url: ['', Validators.required],\n tooltip: [''],\n openNewWindow: [true]\n });\n }\n\n insert() {\n if (this.formLink.valid) {\n this.editor.createLink(this.formLink.getRawValue());\n this.formLink.reset();\n this.show = false;\n }\n }\n}\n","<button type=\"button\" class=\"btn\" id=\"ns-editor-link\" (click)=\"show = true\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M12.654 8.764a.858.858 0 01-1.213-1.213l1.214-1.214a3.717 3.717 0 015.257 0 3.714 3.714 0 01.001 5.258l-1.214 1.214-.804.804a3.72 3.72 0 01-5.263.005.858.858 0 011.214-1.214c.781.782 2.05.78 2.836-.005l.804-.803 1.214-1.214a1.998 1.998 0 00-.001-2.831 2 2 0 00-2.83 0l-1.215 1.213zm-.808 6.472a.858.858 0 011.213 1.213l-1.214 1.214a3.717 3.717 0 01-5.257 0 3.714 3.714 0 01-.001-5.258l1.214-1.214.804-.804a3.72 3.72 0 015.263-.005.858.858 0 01-1.214 1.214 2.005 2.005 0 00-2.836.005l-.804.803L7.8 13.618a1.998 1.998 0 00.001 2.831 2 2 0 002.83 0l1.215-1.213z\"\n ></path>\n </svg>\n</button>\n\n<form\n [formGroup]=\"formLink\"\n class=\"ns-editor__form-link\"\n aria-labelledby=\"ns-editor-link\"\n [ngClass]=\"{ show: show }\"\n (ngSubmit)=\"insert()\"\n>\n <header>\n <label>{{ 'insert_link' | nsEditorLabel }}</label>\n <button type=\"button\" class=\"btn-close\" (click)=\"show = false\"></button>\n </header>\n\n <ns-input [formControlName]=\"'url'\" [placeholder]=\"'link' | nsEditorLabel\" />\n <ns-input [formControlName]=\"'text'\" [placeholder]=\"'text' | nsEditorLabel\" />\n <ns-input\n [formControlName]=\"'tooltip'\"\n [placeholder]=\"'tooltip_link' | nsEditorLabel\"\n />\n <ns-checkbox\n [formControlName]=\"'openNewWindow'\"\n [label]=\"'open_new_window' | nsEditorLabel\"\n />\n\n <footer>\n <ns-button type=\"submit\" [label]=\"'submit_link' | nsEditorLabel\" />\n </footer>\n</form>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\n\n@Component({\n selector: 'ns-editor-list',\n templateUrl: './list.component.html'\n})\nexport class NsEditorListComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n public commands = Commands;\n\n ngOnInit(): void {}\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button\n type=\"button\"\n class=\"btn\"\n (click)=\"command(commands.INSERT_UNORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M6 8c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"btn\"\n (click)=\"command(commands.INSERT_ORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M11 7h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 0h3v1H6v-1zm0 2h3v1H6v-1zm1-9H6V7h2v3H7V8zm-1 3h3v1.333h-.6V13H7.2v-.667H6V11zm0 2h3v1H6v-1zm2 3h2v1H8v-1z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n","import { Component, inject } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\nimport { NsEditorService } from '../../services/editor.service';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../../../dropdown';\nimport { FormsModule } from '@angular/forms';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-paragraph',\n templateUrl: './paragraph.component.html',\n styleUrls: ['./paragraph.component.scss'],\n imports: [\n NsDropdownComponent,\n NsDropdownItemDirective,\n FormsModule,\n NsEditorLabelPipe\n ]\n})\nexport class NsEditorParagraphComponent {\n private editor = inject(NsEditorService);\n\n public id: string = Guid.create();\n\n private _value: string = 'p';\n\n get value() {\n return this._value;\n }\n\n set value(heading) {\n this.editor.formatBlock(heading);\n }\n}\n","<ns-dropdown [(ngModel)]=\"value\">\n <ns-dropdown-item [label]=\"'paragraph' | nsEditorLabel\" [value]=\"'p'\" />\n <ns-dropdown-item [label]=\"'h1' | nsEditorLabel\" [value]=\"'h1'\" />\n <ns-dropdown-item [label]=\"'h2' | nsEditorLabel\" [value]=\"'h2'\" />\n <ns-dropdown-item [label]=\"'h3' | nsEditorLabel\" [value]=\"'h3'\" />\n <ns-dropdown-item [label]=\"'h4' | nsEditorLabel\" [value]=\"'h4'\" />\n <ns-dropdown-item [label]=\"'h5' | nsEditorLabel\" [value]=\"'h5'\" />\n <ns-dropdown-item [label]=\"'h6' | nsEditorLabel\" [value]=\"'h6'\" />\n</ns-dropdown>\n","import { Component, inject } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\n\n@Component({\n selector: 'ns-editor-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss']\n})\nexport class NsEditorToggleCommandComponent {\n private editor = inject(NsEditorService);\n\n public commands = Commands;\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button type=\"button\" class=\"btn\" (click)=\"command(commands.BOLD)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h4.5c2.481 0 4.5-1.165 4.5-4 0-1.698-.724-2.796-1.837-3.405C15.69 10.967 16 10.112 16 9c0-2.835-2.019-4-4.5-4H8Zm1 2v4h3c1.379 0 2-.857 2-2s-.621-2-2-2H9Zm0 6v4h4c1.379 0 2-.857 2-2s-.621-2-2-2H9Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button type=\"button\" class=\"btn\" (click)=\"command(commands.ITALIC)\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 6a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2h-2.167l-1.666 10H14a1 1 0 1 1 0 2H8a1 1 0 1 1 0-2h2.167l1.666-10H10a1 1 0 0 1-1-1Z\"\n ></path>\n </svg>\n</button>\n\n<button type=\"button\" class=\"btn\" (click)=\"command(commands.UNDERLINE)\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 5a1 1 0 0 1 1 1v5.5c0 1.343.556 2.5 2 2.5s2-1.157 2-2.5V6a1 1 0 1 1 2 0v5.657C16 13.804 14.469 16 12 16c-2.462 0-4-2.196-4-4.343V6a1 1 0 0 1 1-1ZM6 17a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Z\"\n ></path>\n </svg>\n</button>\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n inject,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsEditorService } from './services/editor.service';\nimport { NsContentEditableComponent, NsValueAccessor } from '../form';\nimport { NsEditorParagraphComponent } from './components/paragraph/paragraph.component';\nimport { NsEditorToggleCommandComponent } from './components/toogle/toggle.component';\nimport { NsEditorColorPickerComponent } from './components/color-picker/color-picker.component';\nimport { NsEditorListComponent } from './components/list/list.component';\nimport { NsEditorLinkComponent } from './components/link/link.component';\n\nconst DEFAULT_COLOR_PRESETS = [\n '#b60205',\n '#d93f0b',\n '#fbca04',\n '#0e8a16',\n '#006b75',\n '#1d76db',\n '#0052cc',\n '#5319e7',\n '#e99695',\n '#f9d0c4',\n '#fef2c0',\n '#c2e0c6',\n '#bfdadc',\n '#c5def5',\n '#bfd4f2',\n '#d4c5f9'\n];\n\n@Component({\n selector: 'ns-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsEditorComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-editor]': 'true',\n '[class.ns-editor--disabled]': 'disabled()'\n },\n imports: [\n NsEditorParagraphComponent,\n NsEditorToggleCommandComponent,\n NsEditorColorPickerComponent,\n NsEditorListComponent,\n NsEditorLinkComponent,\n NsContentEditableComponent,\n FormsModule\n ]\n})\nexport class NsEditorComponent\n extends NsValueAccessor<string>\n implements OnInit, OnDestroy\n{\n private editor = inject(NsEditorService);\n\n readonly rows = input<number>(3);\n readonly maxLength = input<number>(undefined);\n readonly colorPresets = input<string[]>(DEFAULT_COLOR_PRESETS);\n\n @ViewChild(NsContentEditableComponent, { read: ElementRef, static: true })\n textArea: ElementRef<HTMLElement>;\n\n @HostListener('click')\n focused = () => this.textArea.nativeElement.focus();\n\n ngOnInit(): void {}\n\n get presets(): string[][] {\n const col = 8;\n const colors: string[][] = [];\n\n this.colorPresets().forEach((color, index) => {\n const row = Math.floor(index / col);\n if (!colors[row]) {\n colors.push([]);\n }\n colors[row].push(color);\n });\n\n return colors;\n }\n\n blur(): void {\n this.editor.saveSelection();\n this.onTouched();\n }\n\n ngOnDestroy() {}\n}\n","@if (label()) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n\n<ul class=\"ns-editor__toolbar\">\n <li class=\"ns-editor__item\">\n <ns-editor-paragraph />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-toggle />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-color-picker [presets]=\"presets\" />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-list />\n </li>\n\n <li class=\"ns-editor__item\">\n <ns-editor-link />\n </li>\n</ul>\n\n<ns-content-editable\n class=\"ns-editor__content\"\n [id]=\"id\"\n (blur)=\"blur()\"\n [maxlength]=\"maxLength()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n/>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NsFile } from '@ng-solid/core';\n\n@Pipe({\n name: 'nsImageUrl',\n standalone: true\n})\nexport class NsImageUrlPipe implements PipeTransform {\n transform(image: NsFile): string {\n let url = '';\n if (image && image.data && typeof image.data === 'string') {\n switch (true) {\n case URL.canParse(image.data) || /data:/.test(image.data):\n url = image.data;\n break;\n default:\n url = `data:${image.type};base64,${image.data}`;\n }\n }\n return url;\n }\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n forwardRef,\n inject,\n numberAttribute,\n Renderer2,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../form';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NsImageUrlPipe } from './pipes/image-url.pipe';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NS_UPLOAD_CLIENT, NsFile } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-image-upload',\n templateUrl: './image-upload.component.html',\n imports: [CommonModule, NsImageUrlPipe, NsIconsComponent],\n standalone: true,\n host: {\n '[class.ns-image--loaded]': '!multi() && !!value()',\n '[class.ns-image--disabled]': 'disabled()'\n },\n styleUrls: ['./image-upload.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsImageUploadComponent),\n multi: true\n }\n ]\n})\nexport class NsImageUploadComponent extends NsValueAccessor<\n NsFile | NsFile[] | null\n> {\n private client = inject(NS_UPLOAD_CLIENT, { optional: true });\n private renderer = inject(Renderer2);\n\n readonly accept = input('.jpg,.jpeg,.png,.webp,.avif,.gif');\n readonly multi = input(false, { transform: booleanAttribute });\n readonly limit = input(5, { transform: numberAttribute });\n\n @ViewChild('input', { static: false, read: ElementRef })\n imgRef: ElementRef<HTMLInputElement>;\n\n public loading: Set<string> = new Set<string>();\n private _fromIndex: number;\n private _toIndex: number;\n\n get images(): NsFile[] {\n const value = this.value();\n return Array.isArray(value) ? value : [];\n }\n\n get image(): NsFile | null {\n const value = this.value();\n return Array.isArray(value) ? null : value;\n }\n\n override writeValue(value: NsFile | NsFile[] | null) {\n if (Array.isArray(value)) {\n this.value.set(value);\n } else {\n this.value.set(this.multi() && !value ? [] : value);\n }\n }\n\n onClick() {\n this.imgRef.nativeElement.click();\n }\n\n load() {\n const { files } = this.imgRef.nativeElement;\n if (files.length) {\n this.add(NsFile.parse(files.item(0)));\n this.imgRef.nativeElement.value = null;\n }\n }\n\n add(image: NsFile) {\n this.loading.add(image.name);\n const reader = new FileReader();\n reader.readAsDataURL(image.data as File);\n reader.onload = () => {\n if (this.client) {\n this.client.upload(image).subscribe({\n next: (data) => {\n if (this.multi()) {\n this.value.set(\n this.images.filter(\n (img: NsFile) => !this.compareWith(img, image)\n )\n );\n }\n this.loading.delete(image.name);\n this.assignValue(data);\n },\n error: () => {\n this.loading.delete(image.name);\n }\n });\n image.data = reader.result as string;\n this.assignValue(image);\n } else {\n image.data = reader.result as string;\n this.loading.delete(image.name);\n this.assignValue(image);\n }\n };\n }\n\n private assignValue(image: NsFile) {\n if (this.multi()) {\n this.value.set([...this.images, image]);\n } else {\n this.value.set(image);\n }\n this.onChange(this.value());\n }\n\n private compareWith(from: NsFile, to: NsFile): boolean {\n return from.id === to.id || from.name === to.name;\n }\n\n remove(image: NsFile) {\n this.loading.add(image.name);\n if (this.client && !!image.id) {\n this.client.remove(image.id).subscribe({\n next: () => {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.loading.delete(image.name);\n this.onChange(this.value());\n },\n error: () => {\n this.loading.delete(image.name);\n }\n });\n } else {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.loading.delete(image.name);\n }\n }\n\n dragstart(event: DragEvent, index: number) {\n this.renderer.setStyle(event.target, 'opacity', 0.4);\n event.dataTransfer.dropEffect = 'move';\n this._fromIndex = index;\n }\n\n dragover(event: DragEvent, index: number) {\n event.preventDefault();\n this._toIndex = index;\n }\n\n dragend(event: DragEvent) {\n this.renderer.setStyle(event.target, 'opacity', 1);\n }\n\n drop(event: DragEvent) {\n event.stopPropagation();\n if (this._fromIndex !== this._toIndex) {\n const images = this.images;\n const element = images[this._fromIndex];\n images.splice(this._fromIndex, 1);\n images.splice(this._toIndex, 0, element);\n this.value.set(images);\n this.onChange(this.value());\n }\n }\n}\n","<div\n class=\"ns-image__wrap\"\n [ngClass]=\"{ 'ns-image__multi': multi() && images.length }\"\n>\n @if (multi()) {\n @for (image of images; let i = $index; track i) {\n <div\n class=\"ns-image__thumbnail\"\n [draggable]=\"!disabled() && images.length > 1\"\n (dragstart)=\"dragstart($event, i)\"\n (dragend)=\"dragend($event)\"\n (dragover)=\"dragover($event, i)\"\n (drop)=\"drop($event)\"\n >\n <button\n type=\"button\"\n class=\"ns-image__button\"\n [ngClass]=\"{ 'ns-image__loading': loading.has(image.name) }\"\n [disabled]=\"disabled()\"\n >\n <img\n class=\"ns-image\"\n [attr.src]=\"image | nsImageUrl\"\n [attr.alt]=\"image.name\"\n />\n <ns-icon class=\"ns-image__preload\" name=\"preload\" />\n\n <div class=\"ns-image__overlay\">\n <ns-icon class=\"ns-image__drag\" name=\"drag-handle\" />\n <button\n type=\"button\"\n class=\"ns-image__remove\"\n (click)=\"remove(image)\"\n >\n <ns-icon name=\"trash\" />\n </button>\n </div>\n </button>\n </div>\n }\n }\n\n <button\n type=\"button\"\n class=\"ns-image__drag-container\"\n (click)=\"onClick()\"\n [ngClass]=\"{\n 'ns-image--loading': image && !multi() && loading.has(image.name)\n }\"\n [hidden]=\"multi() && images.length >= limit()\"\n [disabled]=\"disabled()\"\n >\n @if (image && !multi()) {\n <img\n class=\"ns-image__fluid\"\n [attr.src]=\"image | nsImageUrl\"\n [ngClass]=\"{ disabled: disabled() }\"\n alt\n />\n }\n\n <div class=\"ns-image__overlay\">\n <div class=\"ns-image__empty\">\n <ns-icon name=\"picture\" />\n <span>{{ label() }}</span>\n </div>\n </div>\n\n <input\n [hidden]=\"true\"\n type=\"file\"\n (change)=\"load()\"\n [multiple]=\"false\"\n [accept]=\"accept()\"\n #input\n [disabled]=\"disabled()\"\n />\n </button>\n</div>\n","import { ComponentRef } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { NsModalComponent } from '../modal.component';\nimport { TemplateDirective } from '../../template';\n\nexport class NsModalRef {\n ref: ComponentRef<NsModalComponent> | null = null;\n\n get instance(): NsModalComponent {\n if (!this.ref) {\n throw new Error('Modal reference has already been destroyed');\n }\n\n return this.ref.instance;\n }\n\n addTemplate(template: TemplateDirective) {\n switch (template.name()) {\n case 'header':\n this.instance.headerRef = template.ref;\n break;\n case 'footer':\n this.instance.footerRef = template.ref;\n break;\n default:\n throw new Error('Cannot add template in modal');\n }\n }\n\n close(timeout: number = 300) {\n if (!this.ref) {\n return;\n }\n\n const ref = this.ref;\n ref.instance.show = false;\n ref.changeDetectorRef.detectChanges();\n\n timer(timeout)\n .pipe(take(1))\n .subscribe(() => {\n const { nativeElement } = ref.location;\n nativeElement.parentNode.removeChild(nativeElement);\n\n ref.destroy();\n ref.changeDetectorRef.detectChanges();\n this.ref = null;\n });\n }\n\n onDestroy(callback: () => void) {\n this.ref?.onDestroy(callback);\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n inject,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemplateDirective } from '../template';\n\n@Component({\n selector: 'ns-modal',\n imports: [CommonModule],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n standalone: true,\n host: {\n '[class.ns-modal]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsModalComponent implements AfterViewInit, AfterViewChecked {\n title: string;\n size: 'lg' | 'sm' | 'xl';\n component: Type<unknown>;\n context: Record<string, unknown>;\n close: () => void;\n\n show: boolean;\n headerRef: TemplateRef<TemplateDirective>;\n footerRef: TemplateRef<TemplateDirective>;\n\n @ViewChild('container', { read: ViewContainerRef })\n containerRef: ViewContainerRef;\n\n private readonly cd = inject(ChangeDetectorRef);\n\n @HostListener('window:keydown', ['$event'])\n keydown(event: KeyboardEvent) {\n if (event.key == 'Escape') {\n this.close();\n }\n }\n\n ngAfterViewInit() {\n if (this.containerRef) {\n const componentRef = this.containerRef.createComponent(this.component);\n Object.assign(componentRef.instance, this.context);\n this.cd.detectChanges();\n }\n }\n\n ngAfterViewChecked() {\n this.cd.detectChanges();\n }\n}\n","<div\n role=\"document\"\n class=\"ns-modal__dialog\"\n [ngClass]=\"{ 'ns-modal__lg': size == 'lg', 'ns-modal__xl': size == 'xl' }\"\n>\n <div class=\"ns-modal__content\">\n <div class=\"ns-modal__header\">\n @if (headerRef) {\n <ng-template [ngTemplateOutlet]=\"headerRef\"></ng-template>\n } @else {\n <h4 class=\"ns-modal__title\">{{ title }}</h4>\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"btn-close\"\n (click)=\"close()\"\n ></button>\n }\n\n <ng-template #defaultHeaderRef>\n <h4 class=\"ns-modal__title\">{{ title }}</h4>\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"btn-close\"\n (click)=\"close()\"\n ></button>\n </ng-template>\n </div>\n\n <div class=\"ns-modal__body\">\n <ng-template #container />\n </div>\n\n @if (footerRef) {\n <div class=\"ns-modal__footer\">\n <ng-template [ngTemplateOutlet]=\"footerRef\"></ng-template>\n </div>\n }\n </div>\n</div>\n\n<div class=\"ns-modal__backdrop\" (click)=\"close()\"></div>\n","import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n RendererFactory2,\n Type,\n DOCUMENT\n} from '@angular/core';\n\nimport { NsModalRef } from '../models/modal-ref';\nimport { NsModalComponent } from '../modal.component';\nimport { NsModalSetup } from '../interfaces/modal-setup';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsModalService {\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(EnvironmentInjector);\n private readonly document: Document = inject(DOCUMENT);\n private readonly factory = inject(RendererFactory2);\n private readonly renderer = this.factory.createRenderer(null, null);\n private readonly stack: Set<NsModalRef> = new Set<NsModalRef>();\n\n open<T = unknown>(component: Type<T>, setup: NsModalSetup<T>): NsModalRef {\n const nsModalRef = this.attachComponent(this.document.body);\n this.renderer.addClass(this.document.body, 'ns-modal__open');\n\n this.registerModalRef(nsModalRef);\n Object.assign(nsModalRef.instance, {\n component: component,\n title: setup.title,\n context: setup.context ?? {},\n size: setup.size ?? 'lg',\n close: nsModalRef.close.bind(nsModalRef)\n });\n\n return nsModalRef;\n }\n\n close() {\n this.stack.forEach((modal) => modal.close());\n }\n\n private attachComponent(container: Element) {\n const nsModalRef = new NsModalRef();\n const providers = [\n {\n provide: NsModalRef,\n useFactory: () => nsModalRef\n }\n ];\n\n nsModalRef.ref = createComponent(NsModalComponent, {\n environmentInjector: this.injector,\n elementInjector: Injector.create({\n providers\n })\n });\n\n const componentRef = nsModalRef.ref;\n if (!componentRef) {\n throw new Error('Failed to create modal component');\n }\n\n this.appRef.attachView(componentRef.hostView);\n container.appendChild(componentRef.location.nativeElement);\n\n return nsModalRef;\n }\n\n private registerModalRef(ref: NsModalRef) {\n this.stack.add(ref);\n\n ref.onDestroy(() => {\n if (this.stack.has(ref)) {\n this.stack.delete(ref);\n }\n });\n }\n}\n","export class NsSchedule {\n public id: number;\n public subject: string;\n public body: string;\n public startTime: string;\n public endTime: string;\n public created: string;\n public updated: string;\n\n constructor(props: Partial<NsSchedule> = {}) {\n Object.assign(this, props);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NsSchedule } from '../models/schedule';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsScheduleService {\n public readonly onClick$: Subject<NsSchedule> = new Subject<NsSchedule>();\n private _date: Date;\n\n constructor() {}\n\n setCurrentDate(date) {\n this._date = date;\n }\n\n get currentDate() {\n return this._date;\n }\n\n send(schedule: Partial<NsSchedule>) {\n this.onClick$.next(new NsSchedule(schedule));\n }\n\n formatDate(date: Date) {\n const pad = (num) => ('00' + num).slice(-2);\n return (\n date.getFullYear() +\n '-' +\n pad(date.getMonth() + 1) +\n '-' +\n pad(date.getDate()) +\n ' ' +\n pad(date.getHours()) +\n ':' +\n pad(date.getMinutes()) +\n ':' +\n pad(date.getSeconds())\n );\n }\n}\n","import { Component, HostListener, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n@Component({\n selector: 'ns-schedule-cell',\n template: '',\n standalone: true,\n host: {\n '[class.ns-schedule__timeline-cell]': 'true'\n }\n})\nexport class NsScheduleCellComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly day = input<number>(undefined);\n readonly timeline = input<number>(undefined);\n readonly startIn = input<number>(undefined);\n readonly endIn = input<number>(undefined);\n\n ngOnInit(): void {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const startTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.startIn()\n );\n const endTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.endIn()\n );\n\n this.service.send({\n startTime: this.service.formatDate(startTime),\n endTime: this.service.formatDate(endTime)\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nsWeekday',\n standalone: true\n})\nexport class WeekDayPipe implements PipeTransform {\n private weekdays: string[] = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ];\n\n transform(day: number): string {\n return this.weekdays[day];\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { NsSchedule } from '../models/schedule';\nimport { notEmpty } from '@ng-solid/core';\nimport { NsScheduleService } from '../services/schedule.service';\n\n@Pipe({\n name: 'filterByDay',\n standalone: true\n})\nexport class FilterByDayPipe implements PipeTransform {\n private service = inject(NsScheduleService);\n\n transform(schedules: NsSchedule[], day: number): NsSchedule[] {\n const current = this.service.currentDate;\n const selector = ({ startTime }: NsSchedule) => {\n const date = new Date(startTime);\n return (\n day === date.getDate() &&\n current.getMonth() === date.getMonth() &&\n current.getFullYear() === date.getFullYear()\n );\n };\n return notEmpty(schedules) ? schedules.filter(selector) : [];\n }\n}\n","import {\n AfterContentInit,\n Component,\n HostListener,\n inject,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n@Component({\n selector: 'ns-schedule-event',\n templateUrl: './event.component.html',\n styleUrls: ['./event.component.scss'],\n host: {\n '[class.ns-schedule__event]': 'true',\n '[class.ns-schedule__event--show]': 'schedule() && matchHour',\n '[style.height.px]': 'height'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class NsScheduleEventComponent implements AfterContentInit {\n readonly schedule = input<NsSchedule>(undefined);\n readonly timeline = input<number>(undefined);\n\n public height: number;\n private service = inject(NsScheduleService);\n\n get matchHour() {\n const schedule = this.schedule();\n return (\n !!schedule && new Date(schedule.startTime).getHours() === this.timeline()\n );\n }\n\n ngAfterContentInit() {\n const schedule = this.schedule();\n if (schedule) {\n const startTime = new Date(schedule.startTime);\n const endTime = new Date(schedule.endTime);\n const hours = Math.abs(startTime.getTime() - endTime.getTime()) / 36e5;\n this.height = hours > 0.5 ? 49.5 * (hours / 0.5) : 45;\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const schedule = this.schedule();\n if (schedule) {\n this.service.send(schedule);\n }\n }\n}\n","@if (schedule(); as currentSchedule) {\n <span class=\"ns-schedule__event--subject\">{{ currentSchedule.subject }}</span>\n <div\n class=\"ns-schedule__event--body\"\n [innerHtml]=\"currentSchedule.body\"\n ></div>\n}\n","import { Component, effect, inject, OnInit, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-day',\n templateUrl: './day.component.html',\n imports: [\n NsScheduleCellComponent,\n WeekDayPipe,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n styles: [\n '.ns-schedule__header-wrap,.ns-schedule__timeline {grid-template-columns: [index] 3rem [timeline] 1fr;}'\n ]\n})\nexport class DayComponent implements OnInit {\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n public current: number;\n public first: number;\n public days: number[];\n public hours: number[];\n private service = inject(NsScheduleService);\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.current = date.getDate();\n this.first = date.getDate() - date.getDay();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((x, y) => x + y);\n this.service.setCurrentDate(date);\n }\n });\n\n ngOnInit(): void {\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n <div class=\"ns-schedule__header ns-schedule__selected\">\n <div class=\"ns-schedule__header-date\">{{ current }}</div>\n <div class=\"ns-schedule__header-day\">\n {{ days.indexOf(current) | nsWeekday }}\n </div>\n </div>\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n <div class=\"ns-schedule__timeline-day ns-schedule__selected\">\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: current; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-week',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n templateUrl: './week.component.html',\n styles: [\n '.ns-schedule__header-wrap,.ns-schedule__timeline {grid-template-columns: [index] 3rem repeat(7, 1fr);}'\n ],\n standalone: true\n})\nexport class WeekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public currentDay: number;\n public first: number;\n public last: number;\n public days: number[];\n public hours: number[];\n\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay();\n this.last = this.first + 6;\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n 0\n ).getDate();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((day, index) => (day > 0 ? day + index : lastDayOfPrevMonth--));\n }\n });\n\n get current() {\n return this.service.currentDate;\n }\n\n ngOnInit(): void {\n this.currentDay = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: day; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { NsScheduleEventComponent } from '../event/event.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\n\n@Component({\n selector: 'ns-schedule-workweek',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n NsScheduleEventComponent,\n FilterByDayPipe\n ],\n templateUrl: './workweek.component.html',\n styles: [\n '.ns-schedule__header-wrap,.ns-schedule__timeline {grid-template-columns: [index] 3rem repeat(5, 1fr);}'\n ],\n standalone: true\n})\nexport class NsWorkweekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public current: number;\n public first: number;\n public last: number;\n public days: number[] = [];\n public hours: number[];\n private DAYS_OF_WORKWEEK: number = 5;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay() + 1;\n this.last = this.first + 4;\n this.days = [];\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n -1\n ).getDate();\n\n let current = 0;\n while (current < this.DAYS_OF_WORKWEEK) {\n this.days.push(this.first < 1 ? lastDayOfPrevMonth : this.first);\n this.first++;\n lastDayOfPrevMonth--;\n current++;\n }\n }\n });\n\n identityDay = (index, item: NsSchedule) => item.id;\n\n ngOnInit(): void {\n this.current = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i + 1 | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (\n schedule of schedules() | filterByDay: day;\n track identityDay($index, schedule)\n ) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import {\n Component,\n inject,\n ViewEncapsulation,\n input,\n model\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { NsScheduleService } from './services/schedule.service';\nimport { NsSchedule } from './models/schedule';\nimport { NsDateView } from '../../types';\nimport { NsButtonComponent } from '../button';\nimport { NsDatePickerComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\n\nimport { DayComponent } from './components/day/day.component';\nimport { WeekComponent } from './components/week/week.component';\nimport { NsWorkweekComponent } from './components/workweek/workweek.component';\nimport { NsDropdownComponent, NsDropdownItemDirective } from '../dropdown';\n\n@Component({\n selector: 'ns-schedule',\n imports: [\n NsButtonComponent,\n FormsModule,\n DayComponent,\n WeekComponent,\n NsWorkweekComponent,\n NsDatePickerComponent,\n NsDropdownComponent,\n NsDropdownItemDirective\n ],\n templateUrl: './schedule.component.html',\n styleUrls: ['./schedule.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-schedule]': 'true'\n }\n})\nexport class NsScheduleComponent {\n readonly view = model<NsDateView>('workweek');\n readonly selected = model<Date>(new Date());\n readonly height = input<number>(520);\n readonly data = input<NsSchedule[]>(undefined);\n private readonly service = inject(NsScheduleService);\n readonly onClick = outputFromObservable(this.service.onClick$);\n\n goToday() {\n this.selected.set(new Date());\n }\n}\n","<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-scheduler__today\" label=\"Today\" (click)=\"goToday()\" />\n\n <ns-date-picker\n [ngModel]=\"selected()\"\n (ngModelChange)=\"selected.set($event)\"\n [view]=\"view()\"\n />\n\n <ns-dropdown\n class=\"ns-schedule__view\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-dropdown-item label=\"Day\" value=\"day\" />\n <ns-dropdown-item label=\"Work week\" value=\"workweek\" />\n <ns-dropdown-item label=\"Week\" value=\"week\" />\n </ns-dropdown>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n","import {\n Component,\n HostBinding,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n input\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NsSchemaMarkup } from './models/schema';\n\n@Component({\n selector: 'ns-schema',\n template: ''\n})\nexport class NsSchemaMarkupComponent implements OnInit, OnChanges {\n private sanitizer = inject<DomSanitizer>(DomSanitizer);\n\n readonly data = input<Partial<NsSchemaMarkup>>(undefined);\n\n @HostBinding('innerHTML') innerHTML: SafeHtml;\n\n ngOnInit() {}\n\n ngOnChanges({ data }: SimpleChanges) {\n const json = { '@context': 'https://schema.org', ...data.currentValue };\n const template = `<script type=\"application/ld+json\">${JSON.stringify(\n json,\n null,\n 2\n )}</script>`;\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(template);\n }\n}\n","import { Directive, inject, OnInit, TemplateRef, input } from '@angular/core';\nimport { NsModalRef } from '../modal/models/modal-ref';\n\n@Directive({\n selector: '[nsTemplate]',\n standalone: true\n})\nexport class TemplateDirective implements OnInit {\n readonly name = input<string>(undefined, { alias: 'nsTemplate' });\n readonly styleClass = input<string>(undefined);\n\n public readonly ref: TemplateRef<TemplateDirective> = inject(TemplateRef);\n private readonly modalRef = inject(NsModalRef, { optional: true });\n\n ngOnInit() {\n if (this.modalRef) {\n this.modalRef.addTemplate(this);\n }\n }\n}\n","export enum ToastType {\n SUCCESS = 'success',\n WARNING = 'warning',\n INFO = 'info',\n ERROR = 'error'\n}\n","import { ComponentRef } from '@angular/core';\nimport { Observable, take, tap, timer } from 'rxjs';\nimport { NsToastComponent } from '../toast.component';\n\nexport class ToastRef {\n ref: ComponentRef<NsToastComponent> | null = null;\n readonly timeout: Observable<0>;\n\n constructor(props: Partial<ToastRef> = {}) {\n Object.assign(this, props);\n this.timeout = timer(5000).pipe(take(1));\n }\n\n get instance() {\n return this.ref?.instance;\n }\n\n destroy(timeout: number) {\n if (!this.ref) {\n return timer(timeout).pipe(take(1));\n }\n\n const ref = this.ref;\n ref.instance.state = 'destroy';\n ref.changeDetectorRef.detectChanges();\n\n return timer(timeout).pipe(\n take(1),\n tap(() => {\n const { nativeElement } = ref.location;\n nativeElement.parentNode.removeChild(nativeElement);\n\n ref.destroy();\n this.ref = null;\n })\n );\n }\n}\n","import { ToastType } from '../enums/toast-type';\n\nexport class ToastSetup {\n public parent?: string;\n public type?: ToastType;\n public message!: string;\n public callback?: () => void;\n}\n","import { Component, ElementRef, inject, input } from '@angular/core';\nimport { ToastType } from './enums/toast-type';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-toast',\n imports: [NsIconsComponent],\n template: `\n <span class=\"ns-toast__message\" [innerHTML]=\"message()\"></span>\n <ns-icon [name]=\"iconName\" [size]=\"24\" />\n `,\n styleUrls: ['./toast.component.scss'],\n host: {\n '[class.ns-toast]': 'true',\n '[class.ns-toast--success]': \"type() ==='success'\",\n '[class.ns-toast--warning]': \"type() ==='warning'\",\n '[class.ns-toast--info]': \"type() ==='info'\",\n '[class.ns-toast--error]': \"type() ==='error'\",\n '[class.ns-toast--leaving]': \"state === 'destroy'\",\n '[style.margin-left.px]': 'marginLeft'\n }\n})\nexport class NsToastComponent {\n readonly type = input<ToastType>(ToastType.SUCCESS);\n readonly message = input<string>(undefined);\n state: 'display' | 'destroy' = 'display';\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n get marginLeft() {\n return -(this.element.nativeElement.offsetWidth / 2);\n }\n\n get iconName() {\n switch (this.type()) {\n case ToastType.WARNING:\n return 'exclamation-triangle';\n case ToastType.ERROR:\n return 'exclamation-circle';\n case ToastType.INFO:\n return 'info-circle';\n default:\n return 'check-circle';\n }\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n Injectable,\n Type,\n inject,\n DOCUMENT\n} from '@angular/core';\nimport { NsToastComponent } from '../toast.component';\nimport { ToastSetup } from '../interfaces/toast-setup';\nimport { ToastRef } from '../interfaces/toast-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class NsToastService {\n private readonly appRef = inject(ApplicationRef);\n private readonly document = inject<Document>(DOCUMENT);\n\n private readonly stack: Set<ComponentRef<NsToastComponent>> = new Set<\n ComponentRef<NsToastComponent>\n >();\n\n public add(setup: ToastSetup): ToastRef {\n const parent = setup.parent\n ? this.document.querySelector<HTMLElement>(setup.parent)\n : this.document.body;\n if (!parent) {\n throw new Error(`Toast parent \"${setup.parent}\" was not found`);\n }\n const componentRef = this.attachComponent(parent, NsToastComponent);\n this.registerToast(componentRef);\n\n const toastRef = new ToastRef({\n ref: componentRef\n });\n\n toastRef.timeout.subscribe(() => {\n toastRef.destroy(500).subscribe(() => {\n if (typeof setup.callback === 'function') {\n setup.callback();\n }\n });\n });\n\n Object.assign(componentRef.instance, setup);\n return toastRef;\n }\n\n private attachComponent<T>(container: Element, type: Type<T>) {\n const componentRef = createComponent(type, {\n environmentInjector: this.appRef.injector\n });\n this.appRef.attachView(componentRef.hostView);\n container.appendChild(componentRef.location.nativeElement);\n return componentRef;\n }\n\n private registerToast(toast: ComponentRef<NsToastComponent>) {\n this.stack.add(toast);\n toast.onDestroy(() => {\n if (this.stack.has(toast)) {\n this.stack.delete(toast);\n }\n });\n }\n}\n","/*\n * Public API Surface of @ng-solid/design-system\n */\n\nexport * from './lib/avatar';\nexport * from './lib/button';\nexport * from './lib/button-group';\nexport * from './lib/comment';\nexport * from './lib/dropdown';\nexport * from './lib/editor';\nexport * from './lib/form';\nexport * from './lib/image-upload';\nexport * from './lib/modal';\nexport * from './lib/schedule';\nexport * from './lib/schema';\nexport * from './lib/template';\nexport * from './lib/toast';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","take"],"mappings":"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"}