@ng-solid/design-system 22.0.6

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.
@@ -0,0 +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.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 Input,\n NgZone,\n numberAttribute,\n OnChanges,\n PLATFORM_ID,\n Renderer2,\n ViewChild,\n ViewEncapsulation\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 @Input({ required: true }) src: string;\n @Input() atl?: string;\n @Input() icon?: string;\n @Input() shape: 'circle' | 'square' = 'circle';\n @Input() size: 'large' | 'medium' | 'small' = 'small';\n @Input({ transform: numberAttribute }) gap: number = 4;\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 @Input()\n label: string;\n @Input()\n type: 'submit' | 'button' = 'button';\n @Input()\n theme: 'primary' | 'secondary' | 'success' = 'secondary';\n @Input({ transform: booleanAttribute })\n block: boolean;\n @Input({ transform: booleanAttribute })\n disabled: boolean;\n @Input({ transform: booleanAttribute })\n loading: boolean;\n @Input()\n icon: string;\n @Input()\n value: string | number;\n}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Directive, Input } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\n\n@Directive()\nexport abstract class NsValueAccessor<\n T = string\n> implements ControlValueAccessor {\n @Input()\n public type = 'text';\n @Input()\n public placeholder = '';\n @Input()\n public label: string;\n @Input()\n public disabled: boolean;\n @Input()\n public readonly: boolean;\n\n public id = Guid.create();\n\n protected _value: T;\n\n get value(): T {\n return this._value;\n }\n\n @Input()\n set value(value: T) {\n if (`${this._value}` !== `${value}`) {\n this.onChange(value);\n }\n this._value = 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 = 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 = 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 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 @Input() month: NsMonthView;\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 @Input() month: NsMonthView;\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, 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 @Input() placement: NsPlacement;\n\n private readonly service = inject(NsDatepickerService);\n\n @Input()\n set startDate(firstDate: DateValue) {\n this.model = this.service.getMonth(firstDate);\n }\n}\n","import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: 'ns-dropdown-item'\n})\nexport class NsDropdownItemDirective {\n @Input()\n label: string;\n @Input()\n value: string | number;\n @Input()\n disabled: boolean = false;\n\n constructor() {}\n}\n","import {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnInit,\n QueryList,\n ViewChild\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 @Input()\n labelField = 'label';\n @Input()\n valueField = 'value';\n @Input()\n iconName: string;\n @Input()\n defaultFirst: boolean;\n @Input()\n placement: 'start' | 'end' = 'start';\n @Input()\n filterable: boolean;\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 }\n\n ngOnInit(): void {}\n\n ngAfterContentInit() {\n if (!this.collection.length && !!this.items) {\n this.collection = this.items.toArray().map((item) => ({\n label: item.label,\n value: item.value,\n disabled: item.disabled\n }));\n }\n }\n\n @Input()\n set collection(source: Record<string, unknown>[]) {\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((item) => item[this.valueField] == this.value);\n }\n\n set search(value: string) {\n this._search = value;\n this._filtered = this._collection.filter((item) =>\n String(item[this.labelField]).toLowerCase().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.value = 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) => this.selected[this.valueField] === item[this.valueField]\n )\n : -1;\n switch (event.key) {\n case 'ArrowUp':\n if (index >= 1) {\n this.value = String(this.collection[--index][this.valueField]);\n }\n break;\n case 'ArrowDown':\n if (index < this.collection.length - 1) {\n this.value = 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 Input,\n NgZone,\n OnInit,\n Type,\n DOCUMENT\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 @Input() autoClose: boolean | 'inside' | 'outside' = true;\n @Input() placement: NsPlacement = 'bottom-start';\n @Input() view: NsDateView;\n @Input() visibleMonths = 1;\n @Input() firstDayOfWeek: DayOfWeek = 'sun';\n @Input() maxDate: DateValue | Date | string;\n @Input() minDate: DateValue | Date | string;\n @Input() navigation: 'select' | 'arrows' | 'none' = 'select';\n @Input() weekdayStyle: 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 [\n 'visibleMonths',\n 'firstDayOfWeek',\n 'navigation',\n 'minDate',\n 'maxDate',\n 'weekdayStyle'\n ].forEach((name) => (inputs[name] = this[name]));\n this.service.set(inputs);\n }\n\n this.service.selected$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((date) => {\n this._value = this.parserFormatter.format(date);\n this.onChange(date.toString());\n if (this.autoClose === true || this.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 = 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 = 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 = 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 />\n }\n @if (end) {\n <ns-date-picker\n [label]=\"end.label\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"end.value\"\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 @Input() placeholder: string;\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 @Input()\n prepend: string;\n @Input()\n append: string;\n}\n","@if (label) {\n <label class=\"form-label\" [attr.for]=\"id\">{{ label }}</label>\n}\n\n<input\n [(ngModel)]=\"value\"\n class=\"form-control\"\n [attr.id]=\"id\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.readonly]=\"readonly\"\n (blur)=\"onTouched()\"\n/>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\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 host: {\n '[class.ns-input-group]': 'true'\n }\n})\nexport class NsInputGroupComponent {\n @Input()\n label: string;\n}\n","@if (label) {\n <label class=\"form-label\">{{ label }}</label>\n}\n\n<div class=\"input-group\">\n <ng-content></ng-content>\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 Input,\n LOCALE_ID,\n numberAttribute,\n OnInit,\n Provider,\n Renderer2,\n ViewChild\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 @Input({ transform: numberAttribute }) step: number;\n @Input({ transform: numberAttribute }) precision: number;\n @Input({ transform: numberAttribute }) minValue: number;\n @Input({ transform: numberAttribute }) maxValue: number;\n @Input() formatStyle: 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 if (this.step !== undefined && !isNaN(this.step)) {\n value = snapValueToStep(value, this.minValue, this.maxValue, this.step);\n } else {\n value = clamp(value, this.minValue, this.maxValue);\n }\n }\n\n this._value = this.formatter.format(!isNaN(value) ? value : 0);\n this.numberInput = this.parser.parse(this._value);\n }\n\n set value(value: string) {\n if (this._value !== value) {\n let parsedValue = this.parser.parse(value);\n\n if (this.step !== undefined && !isNaN(this.step)) {\n parsedValue = snapValueToStep(\n parsedValue,\n this.minValue,\n this.maxValue,\n this.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 = value;\n this.numberInput = parsedValue;\n this.onChange(parsedValue);\n }\n }\n }\n\n get value(): string {\n return String(this._value);\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.value = '';\n } else {\n this.value = 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.value = 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 = this.formatter.format(this.numberInput);\n }\n }\n\n private safeNextStep = (operation: '+' | '-', minMax: number = 0) => {\n let prev = this.numberInput;\n\n let clampStep =\n this.step !== undefined && !isNaN(this.step) ? this.step : 1;\n if (\n this.formatOptions.style === 'percent' &&\n (this.step === undefined || isNaN(this.step))\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(newValue, this.minValue, this.maxValue, clampStep);\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, Input, OnInit } 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 @Input()\n forgotLink: string;\n @Input()\n showAndHide: boolean;\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 [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 { booleanAttribute, Component, forwardRef, Input } 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)]=\"value\"\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 @Input({ transform: booleanAttribute }) boolean: boolean = true;\n @Input() size: 'large' | 'small' = 'small';\n @Input() theme: 'primary' | 'success' = 'primary';\n\n override get value() {\n return typeof this._value === 'boolean'\n ? this._value\n : YesNo.isYes(this._value);\n }\n\n @Input()\n override set value(checked: boolean) {\n this._value = checked;\n this.onChange(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 [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 @Input()\n rows: number = 3;\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n Renderer2\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 @Input('maxlength')\n maxLength: number;\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 if (\n this.maxLength &&\n this.elementRef.nativeElement.innerText.length >= this.maxLength &&\n event.key !== 'Backspace'\n ) {\n event.preventDefault();\n }\n }\n\n override setDisabledState(isDisabled: boolean) {\n this.disabled = 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)=\"value = 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, Input, OnInit, Output } from '@angular/core';\nimport { NsComment } from './interfaces/comment';\nimport { Subject } from 'rxjs';\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 @Input()\n title: string;\n @Input()\n description: string;\n @Input()\n placeholder: string;\n @Input()\n messages: NsComment[] = [];\n @Input()\n cover: { url: string; alt?: string };\n @Input()\n submitText: string;\n @Input()\n logged: boolean;\n @Input()\n maxLength: number = 128;\n @Input()\n disabled: boolean;\n\n @Output()\n commit: Subject<string> = new Subject<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.next(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, Input, OnInit, inject } 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 @Input() presets: string[][];\n @Input() type: '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 Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n inject\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 @Input()\n rows: number = 3;\n @Input()\n maxLength: number;\n @Input()\n colorPresets: 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/>\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 Input,\n numberAttribute,\n Renderer2,\n ViewChild\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 @Input() accept = '.jpg,.jpeg,.png,.webp,.avif,.gif';\n @Input({ transform: booleanAttribute }) multi = false;\n @Input({ transform: numberAttribute }) limit = 5;\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 return Array.isArray(this.value) ? this.value : [];\n }\n\n get image(): NsFile | null {\n return Array.isArray(this.value) ? null : this.value;\n }\n\n override writeValue(value: NsFile | NsFile[] | null) {\n if (Array.isArray(value)) {\n this._value = value;\n } else {\n this._value = 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 = this.images.filter(\n (img: NsFile) => !this.compareWith(img, image)\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 = [...this.images, image];\n } else {\n this._value = 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 = this.multi\n ? this.images.filter((img) => img !== image)\n : null;\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 = this.multi\n ? this.images.filter((img) => img !== image)\n : null;\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 = 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, Input, OnInit, inject } 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 @Input()\n day: number;\n @Input()\n timeline: number;\n @Input()\n startIn: number;\n @Input()\n endIn: number;\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 Input,\n ViewEncapsulation\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 @Input()\n schedule: NsSchedule;\n @Input() timeline: number;\n\n public height: number;\n private service = inject(NsScheduleService);\n\n get matchHour() {\n return new Date(this.schedule.startTime).getHours() === this.timeline;\n }\n\n ngAfterContentInit() {\n if (this.schedule) {\n const startTime = new Date(this.schedule.startTime);\n const endTime = new Date(this.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 this.service.send(this.schedule);\n }\n}\n","@if (schedule) {\n <span class=\"ns-schedule__event--subject\">{{ schedule?.subject }}</span>\n <div class=\"ns-schedule__event--body\" [innerHtml]=\"schedule?.body\"></div>\n}\n","import { Component, inject, Input, OnInit } 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 @Input() schedules: NsSchedule[];\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 @Input()\n set currentDate(date: Date) {\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, Input, OnInit, inject } 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 @Input() schedules: NsSchedule[];\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 @Input()\n set currentDate(date: Date) {\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, Input, OnInit, inject } 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 @Input() schedules: NsSchedule[];\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 @Input()\n set currentDate(date: Date) {\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 Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\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 @Input() view: NsDateView = 'workweek';\n @Input() selected: Date = new Date();\n @Input() height: number = 520;\n @Input() data: NsSchedule[];\n @Output()\n onClick: Subject<NsSchedule>;\n\n private service = inject(NsScheduleService);\n\n constructor() {\n this.onClick = this.service.onClick$;\n }\n\n goToday() {\n this.selected = 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 [(ngModel)]=\"selected\" [view]=\"view\" />\n\n <ns-dropdown class=\"ns-schedule__view\" [(ngModel)]=\"view\">\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 Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject\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 @Input()\n data: Partial<NsSchemaMarkup>;\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, Input, OnInit, TemplateRef } 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 @Input('nsTemplate')\n name: string;\n @Input()\n styleClass: string;\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 @Input()\n type: ToastType = ToastType.SUCCESS;\n @Input()\n message: string;\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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"}