UNPKG

@mantic-ui/angular

Version:
1 lines 792 kB
{"version":3,"file":"mantic-ui-angular.mjs","sources":["../../../projects/mantic-ui/src/lib/helpers/to-boolean.ts","../../../projects/mantic-ui/src/lib/services/sorted-classes.service.ts","../../../projects/mantic-ui/src/lib/base/destroyable.ts","../../../projects/mantic-ui/src/lib/base/base.component.ts","../../../projects/mantic-ui/src/lib/base/destroyable.component.ts","../../../projects/mantic-ui/src/lib/base/destroyable.directive.ts","../../../projects/mantic-ui/src/lib/directives/active.directive.ts","../../../projects/mantic-ui/src/lib/directives/basic.directive.ts","../../../projects/mantic-ui/src/lib/directives/color.directive.ts","../../../projects/mantic-ui/src/lib/directives/disabled.directive.ts","../../../projects/mantic-ui/src/lib/directives/inverted.directive.ts","../../../projects/mantic-ui/src/lib/directives/loading.directive.ts","../../../projects/mantic-ui/src/lib/base/invertible.component.ts","../../../projects/mantic-ui/src/lib/base/button-base.component.ts","../../../projects/mantic-ui/src/lib/base/base.directive.ts","../../../projects/mantic-ui/src/lib/components/animation/animation.component.ts","../../../projects/mantic-ui/src/lib/components/animation/animation.component.html","../../../projects/mantic-ui/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/mantic-ui/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/mantic-ui/src/lib/models/key.ts","../../../projects/mantic-ui/src/lib/components/toggle-button/toggle-button.component.ts","../../../projects/mantic-ui/src/lib/components/toggle-button/toggle-button.component.html","../../../projects/mantic-ui/src/lib/components/button-group/button-group.component.ts","../../../projects/mantic-ui/src/lib/components/button-group/button-group.component.html","../../../projects/mantic-ui/src/lib/directives/fluid.directive.ts","../../../projects/mantic-ui/src/lib/directives/pointing.directive.ts","../../../projects/mantic-ui/src/lib/components/icon/icon.component.ts","../../../projects/mantic-ui/src/lib/components/icon/icon.component.html","../../../projects/mantic-ui/src/lib/components/label/label.component.ts","../../../projects/mantic-ui/src/lib/components/label/label.component.html","../../../projects/mantic-ui/src/lib/components/button/button.component.ts","../../../projects/mantic-ui/src/lib/components/button/button.component.html","../../../projects/mantic-ui/src/lib/components/button/button-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/card/card.component.ts","../../../projects/mantic-ui/src/lib/components/card/card.component.html","../../../projects/mantic-ui/src/lib/components/card-group/card-group.component.ts","../../../projects/mantic-ui/src/lib/components/card-group/card-group.component.html","../../../projects/mantic-ui/src/lib/helpers/math2.ts","../../../projects/mantic-ui/src/lib/models/field-size.ts","../../../projects/mantic-ui/src/lib/components/cell/cell.component.ts","../../../projects/mantic-ui/src/lib/components/cell/cell.component.html","../../../projects/mantic-ui/src/lib/directives/read-only.directive.ts","../../../projects/mantic-ui/src/lib/components/checkbox/checkbox.component.ts","../../../projects/mantic-ui/src/lib/components/checkbox/checkbox.component.html","../../../projects/mantic-ui/src/lib/components/checkbox/checkbox-defaults.component.ts","../../../projects/mantic-ui/src/lib/directives/button.directive.ts","../../../projects/mantic-ui/src/lib/components/chat-message/chat-message.component.ts","../../../projects/mantic-ui/src/lib/components/chat-message/chat-message.component.html","../../../projects/mantic-ui/src/lib/directives/fallback-for.directive.ts","../../../projects/mantic-ui/src/lib/components/icon-button/icon-button.component.ts","../../../projects/mantic-ui/src/lib/components/icon-button/icon-button.component.html","../../../projects/mantic-ui/src/lib/components/label-dropdown/label-dropdown.component.ts","../../../projects/mantic-ui/src/lib/components/label-dropdown/label-dropdown.component.html","../../../projects/mantic-ui/src/lib/base/labeled-base.component.ts","../../../projects/mantic-ui/src/lib/components/input/input-base.component.ts","../../../projects/mantic-ui/src/lib/components/input/text/input.component.ts","../../../projects/mantic-ui/src/lib/components/input/text/input.component.html","../../../projects/mantic-ui/src/lib/components/chat/chat.component.ts","../../../projects/mantic-ui/src/lib/components/chat/chat.component.html","../../../projects/mantic-ui/src/lib/components/chat/chat-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/circular-progress/circular-progress.component.ts","../../../projects/mantic-ui/src/lib/components/circular-progress/circular-progress.component.html","../../../projects/mantic-ui/src/lib/directives/to-body.directive.ts","../../../projects/mantic-ui/src/lib/components/menu/menu.component.ts","../../../projects/mantic-ui/src/lib/components/menu/menu.component.html","../../../projects/mantic-ui/src/lib/components/context-menu/context-menu.component.ts","../../../projects/mantic-ui/src/lib/components/context-menu/context-menu.component.html","../../../projects/mantic-ui/src/lib/components/menu-item/menu-item.component.ts","../../../projects/mantic-ui/src/lib/components/menu-item/menu-item.component.html","../../../projects/mantic-ui/src/lib/components/context-menu/item/context-menu-item.component.ts","../../../projects/mantic-ui/src/lib/components/context-menu/item/context-menu-item.component.html","../../../projects/mantic-ui/src/lib/components/dimmer/dimmer.component.ts","../../../projects/mantic-ui/src/lib/components/dimmer/dimmer.component.html","../../../projects/mantic-ui/src/lib/components/dimmer/dimmer-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/data-source/data-source-request.ts","../../../projects/mantic-ui/src/lib/components/data-source/data-source.component.ts","../../../projects/mantic-ui/src/lib/components/divider/divider.component.ts","../../../projects/mantic-ui/src/lib/components/divider/divider.component.html","../../../projects/mantic-ui/src/lib/helpers/object-helper.ts","../../../projects/mantic-ui/src/lib/components/dynamic-component/component-parser.ts","../../../projects/mantic-ui/src/lib/components/dynamic-component/dynamic-component.component.ts","../../../projects/mantic-ui/src/lib/components/dynamic-component/provider.ts","../../../projects/mantic-ui/src/lib/components/dropdown/dropdown-selection.service.ts","../../../projects/mantic-ui/src/lib/components/dropdown-item/dropdown-item.component.ts","../../../projects/mantic-ui/src/lib/components/dropdown-item/dropdown-item.component.html","../../../projects/mantic-ui/src/lib/components/dropdown/dropdown-value.ts","../../../projects/mantic-ui/src/lib/components/dropdown/dropdown.component.ts","../../../projects/mantic-ui/src/lib/components/dropdown/dropdown.component.html","../../../projects/mantic-ui/src/lib/components/dropdown/dropdown-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/header/header.component.ts","../../../projects/mantic-ui/src/lib/components/header/header.component.html","../../../projects/mantic-ui/src/lib/components/dropdown-group/dropdown-group.component.ts","../../../projects/mantic-ui/src/lib/components/dropdown-group/dropdown-group.component.html","../../../projects/mantic-ui/src/lib/components/document-title/document-title.component.ts","../../../projects/mantic-ui/src/lib/components/document-title/document-title.component.html","../../../projects/mantic-ui/src/lib/components/document-no-index/document-no-index.component.ts","../../../projects/mantic-ui/src/lib/directives/ignored.directive.ts","../../../projects/mantic-ui/src/lib/directives/inline.directive.ts","../../../projects/mantic-ui/src/lib/components/loader/loader.component.ts","../../../projects/mantic-ui/src/lib/components/loader/loader.component.html","../../../projects/mantic-ui/src/lib/components/message/message.component.ts","../../../projects/mantic-ui/src/lib/components/message/message.component.html","../../../projects/mantic-ui/src/lib/components/error/error.component.ts","../../../projects/mantic-ui/src/lib/components/error/error.component.html","../../../projects/mantic-ui/src/lib/components/flex/fill/fill.component.ts","../../../projects/mantic-ui/src/lib/components/flex/fill/fill.component.html","../../../projects/mantic-ui/src/lib/components/flex/flex.directive.ts","../../../projects/mantic-ui/src/lib/components/flex/flex.component.ts","../../../projects/mantic-ui/src/lib/components/expander/expander-header.component.ts","../../../projects/mantic-ui/src/lib/components/expander/expander.component.ts","../../../projects/mantic-ui/src/lib/components/expander/expander.component.html","../../../projects/mantic-ui/src/lib/components/expander/expander-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/expander-icon/expander-icon.component.ts","../../../projects/mantic-ui/src/lib/components/expander-icon/expander-icon.component.html","../../../projects/mantic-ui/src/lib/components/expander-part/expander-part.component.ts","../../../projects/mantic-ui/src/lib/components/expander-part/expander-part.component.html","../../../projects/mantic-ui/src/lib/components/flag/flag.component.ts","../../../projects/mantic-ui/src/lib/components/flag/flag.component.html","../../../projects/mantic-ui/src/lib/helpers/timespan.ts","../../../projects/mantic-ui/src/lib/helpers/date-helper.ts","../../../projects/mantic-ui/src/lib/components/input/date/date-input.component.ts","../../../projects/mantic-ui/src/lib/components/input/date/date-input.component.html","../../../projects/mantic-ui/src/lib/components/input/numeric/numeric-input.component.ts","../../../projects/mantic-ui/src/lib/components/input/numeric/numeric-input.component.html","../../../projects/mantic-ui/src/lib/services/radio.service.ts","../../../projects/mantic-ui/src/lib/components/radio/radio.component.ts","../../../projects/mantic-ui/src/lib/components/radio/radio.component.html","../../../projects/mantic-ui/src/lib/components/slider/slider.component.ts","../../../projects/mantic-ui/src/lib/components/slider/slider.component.html","../../../projects/mantic-ui/src/lib/components/textarea/textarea.component.ts","../../../projects/mantic-ui/src/lib/components/textarea/textarea.component.html","../../../projects/mantic-ui/src/lib/components/toggle/toggle.component.ts","../../../projects/mantic-ui/src/lib/components/toggle/toggle.component.html","../../../projects/mantic-ui/src/lib/components/field/field-format-errors.pipe.ts","../../../projects/mantic-ui/src/lib/components/field/field.component.ts","../../../projects/mantic-ui/src/lib/components/field/field.component.html","../../../projects/mantic-ui/src/lib/components/field-group/field-group.component.ts","../../../projects/mantic-ui/src/lib/components/field-group/field-group.component.html","../../../projects/mantic-ui/src/lib/components/field/field-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/flex/auto/auto.component.ts","../../../projects/mantic-ui/src/lib/components/flex/auto/auto.component.html","../../../projects/mantic-ui/src/lib/components/flex/auto/auto.directive.ts","../../../projects/mantic-ui/src/lib/components/flex/fill/fill.directive.ts","../../../projects/mantic-ui/src/lib/components/flex/shrink/shrink.component.ts","../../../projects/mantic-ui/src/lib/components/flex/shrink/shrink.component.html","../../../projects/mantic-ui/src/lib/components/flex/shrink/shrink.directive.ts","../../../projects/mantic-ui/src/lib/components/flex/grow/grow.component.ts","../../../projects/mantic-ui/src/lib/components/flex/grow/grow.component.html","../../../projects/mantic-ui/src/lib/components/flex/grow/grow.directive.ts","../../../projects/mantic-ui/src/lib/components/footer/footer.component.ts","../../../projects/mantic-ui/src/lib/components/footer/footer.component.html","../../../projects/mantic-ui/src/lib/models/template-target.ts","../../../projects/mantic-ui/src/lib/services/layout.service.ts","../../../projects/mantic-ui/src/lib/directives/footer-link-template.directive.ts","../../../projects/mantic-ui/src/lib/components/footer-link/footer-link.component.ts","../../../projects/mantic-ui/src/lib/components/footer-link/footer-link.component.html","../../../projects/mantic-ui/src/lib/components/form/form-validation-notifier.ts","../../../projects/mantic-ui/src/lib/components/form/form.component.ts","../../../projects/mantic-ui/src/lib/components/form/form.component.html","../../../projects/mantic-ui/src/lib/components/form/form-defaults.component.ts","../../../projects/mantic-ui/src/lib/directives/header.directive.ts","../../../projects/mantic-ui/src/lib/components/grid/grid.component.ts","../../../projects/mantic-ui/src/lib/components/grid/grid.component.html","../../../projects/mantic-ui/src/lib/components/info/info.component.ts","../../../projects/mantic-ui/src/lib/components/info/info.component.html","../../../projects/mantic-ui/src/lib/components/warning/warning.component.ts","../../../projects/mantic-ui/src/lib/components/warning/warning.component.html","../../../projects/mantic-ui/src/lib/components/form-renderer/form-renderer.service.ts","../../../projects/mantic-ui/src/lib/components/form-element-renderer/form-element-renderer2.component.ts","../../../projects/mantic-ui/src/lib/components/form-element-renderer/form-element-renderer2.component.html","../../../projects/mantic-ui/src/lib/components/form-element-renderer/form-element-renderer.component.ts","../../../projects/mantic-ui/src/lib/components/form-element-renderer/form-element-renderer.component.html","../../../projects/mantic-ui/src/lib/components/form-renderer/form-renderer.component.ts","../../../projects/mantic-ui/src/lib/components/form-renderer/form-renderer.component.html","../../../projects/mantic-ui/src/lib/components/form-element-renderer/form-element.decorator.ts","../../../projects/mantic-ui/src/lib/components/form-renderer/provide-form-element.ts","../../../projects/mantic-ui/src/lib/components/header/header-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/image-upload/image-upload.component.ts","../../../projects/mantic-ui/src/lib/components/image-upload/image-upload.component.html","../../../projects/mantic-ui/src/lib/components/input/file/file-input.component.ts","../../../projects/mantic-ui/src/lib/components/input/file/file-input.component.html","../../../projects/mantic-ui/src/lib/components/input/time/time-input.component.ts","../../../projects/mantic-ui/src/lib/components/input/time/time-input.component.html","../../../projects/mantic-ui/src/lib/components/input/input-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/label-dropdown/label-dropdown-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/layout/layout.component.ts","../../../projects/mantic-ui/src/lib/components/layout/layout.component.html","../../../projects/mantic-ui/src/lib/components/layout/layout-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/localize/localize.ts","../../../projects/mantic-ui/src/lib/components/localize/localize.component.ts","../../../projects/mantic-ui/src/lib/components/localize/localize.component.html","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-header.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-code-block.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-separator.ts","../../../projects/mantic-ui/src/lib/helpers/cast.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-code.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-image.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-link.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-italic.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-bold.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-strikethrough.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-text.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-custom-element.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-empty.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-list.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/markdown-parser.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/models/markdown-paragraph.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/markdown-renderer.component.ts","../../../projects/mantic-ui/src/lib/components/markdown-renderer/markdown-renderer.component.html","../../../projects/mantic-ui/src/lib/components/menu-header/menu-header.component.ts","../../../projects/mantic-ui/src/lib/components/menu-header/menu-header.component.html","../../../projects/mantic-ui/src/lib/directives/menu-link-template.directive.ts","../../../projects/mantic-ui/src/lib/components/menu-link/menu-link.component.ts","../../../projects/mantic-ui/src/lib/components/menu-link/menu-link.component.html","../../../projects/mantic-ui/src/lib/components/message/message-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/modal/modal-footer.component.ts","../../../projects/mantic-ui/src/lib/components/modal/modal-header.component.ts","../../../projects/mantic-ui/src/lib/components/modal/modal.component.ts","../../../projects/mantic-ui/src/lib/components/modal/modal.component.html","../../../projects/mantic-ui/src/lib/components/modal/modal-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/notification/async-action.ts","../../../projects/mantic-ui/src/lib/components/notification/notification-ref.ts","../../../projects/mantic-ui/src/lib/components/notification/notification.service.ts","../../../projects/mantic-ui/src/lib/components/notification/notification-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/notification/notification-token.ts","../../../projects/mantic-ui/src/lib/components/notification/notification-injector.pipe.ts","../../../projects/mantic-ui/src/lib/components/notification/notification.component.ts","../../../projects/mantic-ui/src/lib/components/notification/notification.component.html","../../../projects/mantic-ui/src/lib/components/or/or.component.ts","../../../projects/mantic-ui/src/lib/components/or/or.component.html","../../../projects/mantic-ui/src/lib/components/row/row.component.ts","../../../projects/mantic-ui/src/lib/components/row/row.component.html","../../../projects/mantic-ui/src/lib/components/segment/segment.component.ts","../../../projects/mantic-ui/src/lib/components/segment/segment.component.html","../../../projects/mantic-ui/src/lib/components/segment/segment-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/segment-group/segment-group.component.ts","../../../projects/mantic-ui/src/lib/components/segment-group/segment-group.component.html","../../../projects/mantic-ui/src/lib/components/sidebar/sidebar.component.ts","../../../projects/mantic-ui/src/lib/components/sidebar/sidebar.component.html","../../../projects/mantic-ui/src/lib/components/submit/submit.component.ts","../../../projects/mantic-ui/src/lib/components/submit/submit.component.html","../../../projects/mantic-ui/src/lib/components/table/table.component.ts","../../../projects/mantic-ui/src/lib/components/table/table.component.html","../../../projects/mantic-ui/src/lib/components/table/table-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/tab/tab.component.ts","../../../projects/mantic-ui/src/lib/components/tab/tab.component.html","../../../projects/mantic-ui/src/lib/components/tab-group/tab-group.component.ts","../../../projects/mantic-ui/src/lib/components/tab-group/tab-group.component.html","../../../projects/mantic-ui/src/lib/components/tab-group/tab-group-defaults.component.ts","../../../projects/mantic-ui/src/lib/services/template.service.ts","../../../projects/mantic-ui/src/lib/components/template/template.component.ts","../../../projects/mantic-ui/src/lib/components/template/template.component.html","../../../projects/mantic-ui/src/lib/components/template-outlet/template-outlet.component.ts","../../../projects/mantic-ui/src/lib/components/template-outlet/template-outlet.component.html","../../../projects/mantic-ui/src/lib/components/text-container/text-container.component.ts","../../../projects/mantic-ui/src/lib/components/text-container/text-container.component.html","../../../projects/mantic-ui/src/lib/components/textarea/textarea-defaults.component.ts","../../../projects/mantic-ui/src/lib/components/title-strategy/mantic-title-strategy.ts","../../../projects/mantic-ui/src/lib/components/title-strategy/mantic-title-strategy.module.ts","../../../projects/mantic-ui/src/lib/components/title-strategy/provider.ts","../../../projects/mantic-ui/src/lib/directives/hide-on-empty-template.directive.ts","../../../projects/mantic-ui/src/lib/directives/hide-on-existing-template.directive.ts","../../../projects/mantic-ui/src/lib/directives/menu-item.directive.ts","../../../projects/mantic-ui/src/lib/directives/readonly.directive.ts","../../../projects/mantic-ui/src/lib/directives/to-template.directive.ts","../../../projects/mantic-ui/src/lib/directives/position-absolute.directive.ts","../../../projects/mantic-ui/src/lib/helpers/external-route.component.ts","../../../projects/mantic-ui/src/lib/helpers/lower-case-url-serializer.ts","../../../projects/mantic-ui/src/lib/helpers/lower-case-url-serializer.module.ts","../../../projects/mantic-ui/src/lib/helpers/mantic.ts","../../../projects/mantic-ui/src/lib/helpers/map-void.ts","../../../projects/mantic-ui/src/lib/helpers/provide-locale.ts","../../../projects/mantic-ui/src/lib/models/form-validation.ts","../../../projects/mantic-ui/src/lib/pipes/allowed-chars.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/array.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/ceil.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/debug.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/debugger.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/floor.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/is-email.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/is-filled.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/log.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/pad-end.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/pad-start.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/round.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/safe.pipe.ts","../../../projects/mantic-ui/src/lib/pipes/title.pipe.ts","../../../projects/mantic-ui/src/lib/mantic-ui.module.ts","../../../projects/mantic-ui/src/lib/pipes/slice.pipe.ts","../../../projects/mantic-ui/src/lib/services/base-href.service.ts","../../../projects/mantic-ui/src/lib/services/environment.service.ts","../../../projects/mantic-ui/src/lib/services/favicon.service.ts","../../../projects/mantic-ui/src/lib/services/theme.service.ts","../../../projects/mantic-ui/src/mantic-ui-angular.ts"],"sourcesContent":["import { BooleanLike } from '../models/boolean-like';\r\n\r\nexport const toBoolean = (value: BooleanLike): boolean => {\r\n return value === '' || value === true || value?.toString().toLowerCase() === 'true';\r\n};\r\n","import { ElementRef, inject, Injectable } from '@angular/core';\r\n\r\ninterface Entry {\r\n key: string;\r\n order: number;\r\n value: string;\r\n fixed?: boolean;\r\n ignore?: boolean;\r\n previous?: string[];\r\n}\r\n\r\n@Injectable()\r\nexport class SortedClassesService {\r\n private readonly entries = new Map<string, Entry>();\r\n private readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n /**\r\n * Registers one or more keys. The keys will only registered if they are not already registered.\r\n */\r\n public registerFallback(...keys: string[]): SortedClassesService {\r\n for (const key of keys) {\r\n if (this.has(key)) {\r\n continue;\r\n }\r\n this.registerEntry(key);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Registers one or more keys. If they are already registered, the order will be updated.\r\n */\r\n public register(...keys: string[]): SortedClassesService {\r\n for (const key of keys) {\r\n const existingEntry = this.getEntry(key);\r\n if (existingEntry) {\r\n for (let [_, entry] of this.entries) {\r\n if (entry.order > existingEntry.order) {\r\n entry.order--;\r\n }\r\n }\r\n existingEntry.order = this.entries.size - 1;\r\n }\r\n else {\r\n this.registerEntry(key);\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n public registerFixed(...keys: string[]): SortedClassesService {\r\n for (const key of keys) {\r\n this.registerEntry(key, { fixed: true });\r\n }\r\n return this;\r\n }\r\n\r\n public unregister(...keys: string[]): SortedClassesService {\r\n for (const key of keys) {\r\n this.entries.delete(key.toLocaleLowerCase());\r\n }\r\n return this;\r\n }\r\n\r\n public ignore(...keys: string[]): SortedClassesService {\r\n for (const key of keys) {\r\n this.registerEntry(key, { ignore: true });\r\n }\r\n return this;\r\n }\r\n\r\n private registerEntry(key: string, options?: Partial<Entry>): void {\r\n if (!key) {\r\n return;\r\n }\r\n if (this.has(key)) {\r\n console.warn(`'${key}' is already registered on <${this.elementRef.nativeElement.tagName}>.`);\r\n }\r\n const entry: Entry = {\r\n ...options,\r\n key: key.toLocaleLowerCase(),\r\n value: options?.fixed ? key : options?.value ?? '',\r\n order: this.entries.size\r\n };\r\n this.entries.set(entry.key, entry);\r\n }\r\n\r\n private getEntry(key: string): Entry | undefined {\r\n key = key.toLocaleLowerCase();\r\n return this.entries.get(key);\r\n }\r\n\r\n public set(key: string, value: unknown, options?: { refresh: boolean }): SortedClassesService {\r\n let entry = this.getEntry(key);\r\n if (!entry) {\r\n console.warn(`Set an unregistered value '${key}' on <${this.elementRef.nativeElement.tagName}> is not recommended. Call register(key) method once, before using set(...) method.`);\r\n entry = this.register(key).getEntry(key);\r\n }\r\n if (!entry) {\r\n throw new Error('Entry not found #dki3kjk');\r\n }\r\n if (entry.fixed) {\r\n console.error(`Can not change an fixed value '${key} on <${this.elementRef.nativeElement.tagName}>. Use register(key) instead of registerFixed(key)`);\r\n return this;\r\n }\r\n if (value === true) {\r\n entry.value = key;\r\n }\r\n else if (value === false || value === undefined || value === null) {\r\n entry.value = '';\r\n }\r\n else {\r\n entry.value = value.toString();\r\n }\r\n if (options?.refresh !== false) {\r\n this.updateEntry(entry);\r\n }\r\n return this;\r\n }\r\n\r\n public get(key: string): unknown {\r\n return this.getEntry(key)?.value;\r\n }\r\n\r\n public has(key: string): boolean {\r\n return !!this.getEntry(key);\r\n }\r\n\r\n public toString(): string {\r\n return Array.from(this.entries.values())\r\n .sort(SortedClassesService.sortByOrder)\r\n .map(entry => entry.value)\r\n .filter(value => value)\r\n .join(' ');\r\n }\r\n\r\n public update(): void {\r\n Array.from(this.entries.values())\r\n .filter(entry => !entry.ignore)\r\n .sort(SortedClassesService.sortByOrder)\r\n .forEach(entry => this.updateEntry(entry));\r\n }\r\n\r\n private updateEntry(entry: Entry): void {\r\n const classList = this.elementRef.nativeElement.classList;\r\n if (entry.previous) {\r\n classList.remove(...entry.previous);\r\n }\r\n const values = entry.value.split(' ').filter(x => !!x);\r\n classList.add(...values);\r\n entry.previous = values;\r\n }\r\n\r\n private static sortByOrder(left: Entry, right: Entry): number {\r\n return left.order > right.order ? 1 : left.order < right.order ? -1 : 0;\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { MonoTypeOperatorFunction, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport abstract class Destroyable implements OnDestroy {\r\n private readonly destroySubject = new Subject<void>();\r\n\r\n /**\r\n * An observable that emits when the component is destroyed.\r\n */\r\n public readonly destroy = this.destroySubject.asObservable();\r\n\r\n /**\r\n * Pipe this method to a subject to take values until the component is destroyed.\r\n * Example: `observable.pipe(this.takeUntilDestroy()).subscribe(...);`\r\n * Equals to `observable.pipe(takeUntil(this.destroy)).subscribe(...);`.\r\n */\r\n public takeUntilDestroy<T>(): MonoTypeOperatorFunction<T> {\r\n return takeUntil(this.destroy);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.destroySubject.next();\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, Inject, OnInit, Optional } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\nimport { Destroyable } from './destroyable';\r\n\r\n@Directive({\r\n providers: BaseComponent.providers\r\n})\r\nexport abstract class BaseComponent extends Destroyable implements OnInit {\r\n protected static readonly providers = [SortedClassesService];\r\n\r\n protected readonly classes = inject(SortedClassesService, { self: true });\r\n private noClassesValue = false;\r\n private initialized = false;\r\n protected readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n protected tag: string;\r\n protected validateAttributes = true;\r\n\r\n protected get noClasses(): boolean {\r\n return this.noClassesValue;\r\n }\r\n\r\n protected set noClasses(value: boolean) {\r\n this.noClassesValue = value;\r\n this.refreshClasses();\r\n }\r\n\r\n protected constructor(\r\n @Optional() @Inject('none') useUiClass = true\r\n ) {\r\n super();\r\n this.tag = this.elementRef.nativeElement.tagName.toLowerCase();\r\n if (useUiClass) {\r\n this.classes.registerFixed('ui');\r\n }\r\n this.classes.register('style');\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initialized = true;\r\n if (this.classes) {\r\n this.readPropertiesFromAttributes();\r\n this.refreshClasses();\r\n }\r\n }\r\n\r\n private readPropertiesFromAttributes(): void {\r\n if (!this.validateAttributes) {\r\n return;\r\n }\r\n for (let index = 0; index < this.elementRef.nativeElement.attributes.length; index++) {\r\n const attribute = this.elementRef.nativeElement.attributes[index];\r\n if (attribute.name.indexOf('_ng') === 0 || attribute.name.indexOf('ng-') === 0 || attribute.name.indexOf('m-') === 0 || attribute.name === 'class' || attribute.name === 'title') {\r\n continue;\r\n }\r\n if (!this.classes.has(attribute.name)) {\r\n console.warn(`Unknown attribute '${attribute.name}' on <${this.tag}> found.`, this.elementRef.nativeElement);\r\n }\r\n }\r\n }\r\n\r\n // TODO: Check usage\r\n protected refreshClasses(): void {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.classes.update();\r\n }\r\n\r\n protected toBoolean(value: BooleanLike): boolean {\r\n return toBoolean(value);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Destroyable } from './destroyable';\r\n\r\n/**\r\n * @deprecated Use Destroyable instead\r\n */\r\n@Directive()\r\nexport abstract class DestroyableComponent extends Destroyable {\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { Destroyable } from './destroyable';\r\n\r\n/**\r\n * @deprecated Use Destroyable instead\r\n */\r\n@Directive()\r\nexport abstract class DestroyableDirective extends Destroyable {\r\n}\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\n\r\n@Directive({\r\n selector: '[-m-active]',\r\n })\r\nexport class ActiveDirective {\r\n public static readonly active = 'active';\r\n public static readonly default = { directive: ActiveDirective, inputs: [ActiveDirective.active] };\r\n private readonly classes = inject(SortedClassesService);\r\n private isActive = false;\r\n\r\n public constructor() {\r\n this.classes.registerFallback(ActiveDirective.active);\r\n }\r\n\r\n public get active(): boolean {\r\n return this.isActive;\r\n }\r\n\r\n @Input()\r\n public set active(value: BooleanLike) {\r\n this.isActive = toBoolean(value);\r\n this.classes.set(ActiveDirective.active, this.isActive);\r\n }\r\n}\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\n\r\n@Directive({\r\n selector: '[-m-basic]',\r\n })\r\nexport class BasicDirective {\r\n public static readonly basic = 'basic';\r\n public static readonly default = { directive: BasicDirective, inputs: [BasicDirective.basic] };\r\n private readonly classes = inject(SortedClassesService);\r\n private isBasic = false;\r\n\r\n public constructor() {\r\n this.classes.registerFallback(BasicDirective.basic);\r\n }\r\n\r\n public get basic(): boolean {\r\n return this.isBasic;\r\n }\r\n\r\n @Input()\r\n public set basic(value: BooleanLike) {\r\n this.isBasic = toBoolean(value);\r\n this.classes.set(BasicDirective.basic, this.isBasic);\r\n }\r\n}\r\n\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { ColorName } from '../models/color';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\n\r\n@Directive({\r\n selector: '[-m-color]'\r\n})\r\nexport class ColorDirective {\r\n public static readonly color = 'color';\r\n public static readonly default = { directive: ColorDirective, inputs: [ColorDirective.color] };\r\n private readonly classes = inject(SortedClassesService);\r\n private colorValue: ColorName | undefined;\r\n\r\n public constructor() {\r\n this.classes.registerFallback(ColorDirective.color);\r\n }\r\n\r\n public get color(): ColorName | undefined {\r\n return this.colorValue;\r\n }\r\n\r\n @Input()\r\n public set color(value: ColorName | undefined) {\r\n this.colorValue = value;\r\n this.classes.set(ColorDirective.color, value);\r\n }\r\n\r\n}\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\n\r\n@Directive({\r\n selector: '[-m-disabled]',\r\n })\r\nexport class DisabledDirective {\r\n public static readonly disabled = 'disabled';\r\n public static readonly default = { directive: DisabledDirective, inputs: [DisabledDirective.disabled] };\r\n private readonly classes = inject(SortedClassesService);\r\n private isDisabled = false;\r\n\r\n public constructor() {\r\n this.classes.registerFallback(DisabledDirective.disabled);\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this.isDisabled;\r\n }\r\n\r\n @Input()\r\n public set disabled(value: BooleanLike) {\r\n this.isDisabled = toBoolean(value);\r\n this.classes.set(DisabledDirective.disabled, this.isDisabled);\r\n }\r\n}\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\n\r\n@Directive({\r\n selector: '[-m-inverted]',\r\n })\r\nexport class InvertedDirective {\r\n public static readonly inverted = 'inverted';\r\n public static readonly default = { directive: InvertedDirective, inputs: [InvertedDirective.inverted] };\r\n private readonly classes = inject(SortedClassesService);\r\n private isInverted: boolean | undefined;\r\n private isInvertedDefault = false;\r\n\r\n @Input()\r\n public get inverted(): boolean {\r\n return this.isInverted ?? this.isInvertedDefault;\r\n }\r\n\r\n public set inverted(value: BooleanLike) {\r\n this.isInverted = toBoolean(value);\r\n this.classes.set(InvertedDirective.inverted, this.inverted);\r\n }\r\n\r\n public constructor() {\r\n this.classes.registerFallback(InvertedDirective.inverted);\r\n }\r\n\r\n public setInvertedDefault(value: boolean): void {\r\n this.isInvertedDefault = value;\r\n this.classes.set(InvertedDirective.inverted, this.inverted);\r\n }\r\n}\r\n","import { Directive, inject, Input } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\n\r\n@Directive({\r\n selector: '[-m-loading]',\r\n })\r\nexport class LoadingDirective {\r\n public static readonly loading = 'loading';\r\n public static readonly default = { directive: LoadingDirective, inputs: [LoadingDirective.loading] };\r\n private readonly classes = inject(SortedClassesService);\r\n private isLoading = false;\r\n\r\n public constructor() {\r\n this.classes.registerFallback(LoadingDirective.loading);\r\n }\r\n\r\n public get loading(): boolean {\r\n return this.isLoading;\r\n }\r\n\r\n @Input()\r\n public set loading(value: BooleanLike) {\r\n this.isLoading = toBoolean(value);\r\n this.classes.set(LoadingDirective.loading, this.isLoading);\r\n }\r\n}\r\n","import { Directive, Inject, Input, Optional } from '@angular/core';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { BaseComponent } from './base.component';\r\n\r\n@Directive()\r\nexport abstract class InvertibleComponent extends BaseComponent {\r\n protected static override readonly providers = [...BaseComponent.providers];\r\n\r\n private isInverted = false;\r\n private isInvertedChanged = false;\r\n\r\n @Input()\r\n public get inverted(): boolean {\r\n return this.isInverted;\r\n }\r\n\r\n public set inverted(value: BooleanLike) {\r\n this.isInvertedChanged = true;\r\n this.isInverted = this.toBoolean(value);\r\n this.classes.set('inverted', this.isInverted);\r\n }\r\n\r\n protected constructor(\r\n @Optional() @Inject('none') useUiClass = true\r\n ) {\r\n super(useUiClass);\r\n this.classes.register('inverted');\r\n }\r\n\r\n protected refreshInverted(value: boolean): void {\r\n if (this.isInvertedChanged) {\r\n return;\r\n }\r\n this.inverted = value;\r\n this.isInvertedChanged = false;\r\n }\r\n}\r\n","import { Directive, HostBinding, Input } from '@angular/core';\r\nimport { ActiveDirective } from '../directives/active.directive';\r\nimport { BasicDirective } from '../directives/basic.directive';\r\nimport { ColorDirective } from '../directives/color.directive';\r\nimport { DisabledDirective } from '../directives/disabled.directive';\r\nimport { InvertedDirective } from '../directives/inverted.directive';\r\nimport { LoadingDirective } from '../directives/loading.directive';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { InvertibleComponent } from './invertible.component';\r\n\r\n@Directive({\r\n hostDirectives: [ColorDirective.default, BasicDirective.default, InvertedDirective.default, DisabledDirective.default, LoadingDirective.default, ActiveDirective.default],\r\n providers: ButtonBaseComponent.providers\r\n})\r\nexport abstract class ButtonBaseComponent extends InvertibleComponent {\r\n protected static override readonly providers = [...InvertibleComponent.providers];\r\n private sizeValue = '';\r\n private isPrimary = false;\r\n private isSecondary = false;\r\n private isPositive = false;\r\n private isNegative = false;\r\n private isCircular = false;\r\n private isAttachedLeft = false;\r\n private isAttachedTop = false;\r\n private isAttachedRight = false;\r\n private isAttachedBottom = false;\r\n\r\n @Input()\r\n @HostBinding('class.primary')\r\n public get primary(): boolean {\r\n return this.isPrimary;\r\n }\r\n\r\n public set primary(value: BooleanLike) {\r\n this.isPrimary = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.secondary')\r\n public get secondary(): boolean {\r\n return this.isSecondary;\r\n }\r\n\r\n public set secondary(value: BooleanLike) {\r\n this.isSecondary = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.positive')\r\n public get positive(): boolean {\r\n return this.isPositive;\r\n }\r\n\r\n public set positive(value: BooleanLike) {\r\n this.isPositive = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.negative')\r\n public get negative(): boolean {\r\n return this.isNegative;\r\n }\r\n\r\n public set negative(value: BooleanLike) {\r\n this.isNegative = this.toBoolean(value);\r\n }\r\n\r\n public get size(): string {\r\n return this.sizeValue;\r\n }\r\n\r\n @Input()\r\n public set size(value: string) {\r\n this.sizeValue = value;\r\n this.classes.set('size', value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.circular')\r\n public get circular(): boolean {\r\n return this.isCircular;\r\n }\r\n\r\n public set circular(value: BooleanLike) {\r\n this.isCircular = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.left')\r\n public get attachedLeft(): boolean {\r\n return this.isAttachedLeft;\r\n }\r\n\r\n public set attachedLeft(value: BooleanLike) {\r\n this.isAttachedLeft = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.top')\r\n public get attachedTop(): boolean {\r\n return this.isAttachedTop;\r\n }\r\n\r\n public set attachedTop(value: BooleanLike) {\r\n this.isAttachedTop = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.right')\r\n public get attachedRight(): boolean {\r\n return this.isAttachedRight;\r\n }\r\n\r\n public set attachedRight(value: BooleanLike) {\r\n this.isAttachedRight = this.toBoolean(value);\r\n }\r\n\r\n @Input()\r\n @HostBinding('class.bottom')\r\n public get attachedBottom(): boolean {\r\n return this.isAttachedBottom;\r\n }\r\n\r\n public set attachedBottom(value: BooleanLike) {\r\n this.isAttachedBottom = this.toBoolean(value);\r\n }\r\n\r\n @HostBinding('class.attached')\r\n protected get attached(): boolean {\r\n return this.isAttachedTop || this.attachedBottom || this.attachedLeft || this.attachedRight;\r\n }\r\n\r\n @HostBinding('class.button')\r\n protected readonly button = true;\r\n\r\n protected constructor() {\r\n super();\r\n this.elementRef.nativeElement.setAttribute('tabindex', '0');\r\n this.classes.register('size', 'primary', 'secondary', 'positive', 'negative', 'circular', 'tabindex', 'attachedLeft', 'attachedRight', 'attachedTop', 'attachedBottom');\r\n }\r\n}\r\n","import { Directive, ElementRef, Inject, inject, OnInit, Optional, TypeProvider } from '@angular/core';\r\nimport { toBoolean } from '../helpers/to-boolean';\r\nimport { BooleanLike } from '../models/boolean-like';\r\nimport { SortedClassesService } from '../services/sorted-classes.service';\r\nimport { Destroyable } from './destroyable';\r\n\r\n@Directive()\r\nexport abstract class BaseDirective extends Destroyable implements OnInit {\r\n protected static readonly providers: TypeProvider[] = [SortedClassesService];\r\n\r\n protected readonly classes = inject(SortedClassesService, { self: true });\r\n private noClassesValue = false;\r\n private initialized = false;\r\n protected readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef, { self: true });\r\n\r\n protected tag: string;\r\n protected validateAttributes = true;\r\n\r\n protected get noClasses(): boolean {\r\n return this.noClassesValue;\r\n }\r\n\r\n protected set noClasses(value: boolean) {\r\n this.noClassesValue = value;\r\n this.refreshClasses();\r\n }\r\n\r\n protected constructor(\r\n @Optional() @Inject('none') useUiClass = true\r\n ) {\r\n super();\r\n this.tag = this.elementRef.nativeElement.tagName.toLowerCase();\r\n if (useUiClass) {\r\n this.classes.registerFixed('ui');\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.initialized = true;\r\n this.readPropertiesFromAttributes();\r\n this.refreshClasses();\r\n }\r\n\r\n private readPropertiesFromAttributes(): void {\r\n if (!this.validateAttributes) {\r\n return;\r\n }\r\n for (let index = 0; index < this.elementRef.nativeElement.attributes.length; index++) {\r\n const attribute = this.elementRef.nativeElement.attributes[index];\r\n if (attribute.name.indexOf('_ng') === 0 || attribute.name.indexOf('ng-') === 0 || attribute.name.indexOf('m-') === 0 || attribute.name === 'class' || attribute.name === 'title') {\r\n continue;\r\n }\r\n if (!this.classes.has(attribute.name)) {\r\n console.warn(`Unknown attribute '${attribute.name}' on <${this.tag}> found.`, this.elementRef.nativeElement);\r\n }\r\n }\r\n }\r\n\r\n protected refreshClasses(): void {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.classes.update();\r\n }\r\n\r\n protected toBoolean(value: BooleanLike): boolean {\r\n return toBoolean(value);\r\n }\r\n\r\n}\r\n\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { BaseComponent } from '../../base/base.component';\r\nimport { AnimationDirection } from './animation-direction';\r\n\r\n@Component({\r\n selector: 'm-animation',\r\n templateUrl: './animation.component.html',\r\n styleUrls: ['./animation.component.scss'],\r\n providers: [...BaseComponent.providers]\r\n})\r\nexport class AnimationComponent extends BaseComponent {\r\n\r\n @Input()\r\n @HostBinding('class.hidden')\r\n public hidden = true;\r\n\r\n @Input()\r\n public direction: AnimationDirection;\r\n\r\n public constructor() {\r\n super(false);\r\n this.classes.registerFixed('content');\r\n this.classes.register('hidden', 'direction');\r\n }\r\n}\r\n","<ng-content></ng-content>","import { Component } from '@angular/core';\r\nimport { BaseComponent } from '../../base/base.component';\r\n\r\n@Component({\r\n selector: 'm-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrls: ['./breadcrumb.component.scss'],\r\n providers: [...BaseComponent.providers]\r\n})\r\nexport class BreadcrumbComponent extends BaseComponent {\r\n\r\n public constructor() {\r\n super();\r\n this.classes.registerFixed('breadcrumb');\r\n }\r\n}\r\n","<!-- TODO: Not yet implemented -->\r\n<!-- <a class=\"section\">Home</a>-->\r\n<!-- <i class=\"right angle icon divider\"></i>-->\r\n<!-- <a class=\"section\">Store</a>-->\r\n<!-- <i class=\"right angle icon divider\"></i>-->\r\n<!-- <div class=\"active section\">T-Shirt</div>-->\r\n","export declare type KeyCode = 'Space' | 'Enter' | 'Escape';\r\n\r\nexport class Key {\r\n public static readonly space = new Key('Space');\r\n public static readonly enter = new Key('Enter');\r\n public static readonly escape = new Key('Escape');\r\n\r\n public constructor(\r\n public readonly code: string\r\n ) {\r\n }\r\n\r\n public is(event: KeyboardEvent): boolean {\r\n return Key.is(event, this);\r\n }\r\n\r\n public static is(event: KeyboardEvent, ...keys: (KeyCode | Key