@tylertech/forge-core
Advanced tools
| declare const LIVE_ANNOUNCER_KEY: unique symbol; | ||
| export type LiveAnnouncerPoliteness = 'polite' | 'assertive'; | ||
| declare global { | ||
| interface Window { | ||
| [LIVE_ANNOUNCER_KEY]: LiveAnnouncer; | ||
| } | ||
| } | ||
| export declare class LiveAnnouncer { | ||
| private _politeElement; | ||
| private _assertiveElement; | ||
| private constructor(); | ||
| static get instance(): LiveAnnouncer; | ||
| announce(message: string, politeness?: LiveAnnouncerPoliteness): void; | ||
| private _getElement; | ||
| } | ||
| export {}; |
| import { createVisuallyHiddenElement } from '../utils/a11y.js'; | ||
| const LIVE_ANNOUNCER_KEY = Symbol('forgeLiveAnnouncer'); | ||
| export class LiveAnnouncer { | ||
| constructor() { | ||
| this._politeElement = null; | ||
| this._assertiveElement = null; | ||
| } | ||
| static get instance() { | ||
| if (!window[LIVE_ANNOUNCER_KEY]) { | ||
| window[LIVE_ANNOUNCER_KEY] = new LiveAnnouncer(); | ||
| } | ||
| return window[LIVE_ANNOUNCER_KEY]; | ||
| } | ||
| announce(message, politeness = 'polite') { | ||
| const element = this._getElement(politeness); | ||
| element.textContent = ''; | ||
| setTimeout(() => { | ||
| element.textContent = message; | ||
| }, 100); | ||
| } | ||
| _getElement(politeness) { | ||
| const isPolite = politeness === 'polite'; | ||
| const existing = isPolite ? this._politeElement : this._assertiveElement; | ||
| if (existing && document.body.contains(existing)) { | ||
| return existing; | ||
| } | ||
| const element = createVisuallyHiddenElement(`data-forge-live-announcer-${politeness}`); | ||
| element.setAttribute('aria-live', politeness); | ||
| element.setAttribute('aria-atomic', 'true'); | ||
| document.body.appendChild(element); | ||
| if (isPolite) { | ||
| this._politeElement = element; | ||
| } | ||
| else { | ||
| this._assertiveElement = element; | ||
| } | ||
| return element; | ||
| } | ||
| } |
@@ -1,1 +0,2 @@ | ||
| export * from './a11y'; | ||
| export * from './a11y.js'; | ||
| export * from './live-announcer.js'; |
@@ -1,1 +0,2 @@ | ||
| export * from './a11y'; | ||
| export * from './a11y.js'; | ||
| export * from './live-announcer.js'; |
@@ -1,47 +0,5 @@ | ||
| const days = [ | ||
| 'Su', | ||
| 'Mo', | ||
| 'Tu', | ||
| 'We', | ||
| 'Th', | ||
| 'Fr', | ||
| 'Sa' | ||
| ]; | ||
| const daysLong = [ | ||
| 'Sunday', | ||
| 'Monday', | ||
| 'Tuesday', | ||
| 'Wednesday', | ||
| 'Thursday', | ||
| 'Friday', | ||
| 'Saturday' | ||
| ]; | ||
| const months = [ | ||
| 'Jan', | ||
| 'Feb', | ||
| 'Mar', | ||
| 'Apr', | ||
| 'May', | ||
| 'Jun', | ||
| 'Jul', | ||
| 'Aug', | ||
| 'Sep', | ||
| 'Oct', | ||
| 'Nov', | ||
| 'Dec' | ||
| ]; | ||
| const monthsLong = [ | ||
| 'January', | ||
| 'February', | ||
| 'March', | ||
| 'April', | ||
| 'May', | ||
| 'June', | ||
| 'July', | ||
| 'August', | ||
| 'September', | ||
| 'October', | ||
| 'November', | ||
| 'December' | ||
| ]; | ||
| const days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']; | ||
| const daysLong = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; | ||
| const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; | ||
| const monthsLong = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; | ||
| export const DATE_CONSTANTS = { | ||
@@ -48,0 +6,0 @@ days, |
@@ -1,1 +0,1 @@ | ||
| export * from './date-constants'; | ||
| export * from './date-constants.js'; |
@@ -1,1 +0,1 @@ | ||
| export * from './date-constants'; | ||
| export * from './date-constants.js'; |
@@ -1,3 +0,3 @@ | ||
| import { replaceElement, isArray, removeAllChildren, walkUpUntil } from '../utils'; | ||
| import { CUSTOM_ELEMENT_CSS_PROPERTY, CUSTOM_ELEMENT_DEPENDENCIES_PROPERTY, CUSTOM_ELEMENT_NAME_PROPERTY, CUSTOM_ELEMENT_STYLESHEETS_PROPERTY, CUSTOM_ELEMENT_TEMPLATE_PROPERTY, supportsConstructableStyleSheets } from './constants'; | ||
| import { replaceElement, isArray, removeAllChildren, walkUpUntil } from '../utils/index.js'; | ||
| import { CUSTOM_ELEMENT_CSS_PROPERTY, CUSTOM_ELEMENT_DEPENDENCIES_PROPERTY, CUSTOM_ELEMENT_NAME_PROPERTY, CUSTOM_ELEMENT_STYLESHEETS_PROPERTY, CUSTOM_ELEMENT_TEMPLATE_PROPERTY, supportsConstructableStyleSheets } from './constants.js'; | ||
| /** | ||
@@ -47,3 +47,3 @@ * Recursively defines a component as a custom elements and all of its dependencies. | ||
| export function upgradeProperty(instance, property) { | ||
| if (instance.hasOwnProperty(property)) { | ||
| if (Object.prototype.hasOwnProperty.call(instance, property)) { | ||
| const value = instance[property]; | ||
@@ -50,0 +50,0 @@ delete instance[property]; |
@@ -11,3 +11,3 @@ class CorePropertyOptions { | ||
| const CORE_PROPERTY_NAME = '_core'; | ||
| const corePropertyNotFoundMessage = (className, propertyName) => `${className}\'s core does not contain the property \"${propertyName}\"`; | ||
| const corePropertyNotFoundMessage = (className, propertyName) => `${className}'s core does not contain the property "${propertyName}"`; | ||
| const coreNotFoundMessage = (className) => `${className} does not have a core`; | ||
@@ -72,4 +72,3 @@ function runIfVerified(target, propertyName, action) { | ||
| get() { | ||
| const that = this; | ||
| return wireDescriptorGet(that, corePropertyName, attrs => { | ||
| return wireDescriptorGet(this, corePropertyName, attrs => { | ||
| let setter; | ||
@@ -79,3 +78,3 @@ if (allOptions.set) { | ||
| } | ||
| Reflect.defineProperty(that, corePropertyName, { configurable: true, enumerable: true, ...attrs, ...setter }); | ||
| Reflect.defineProperty(this, corePropertyName, { configurable: true, enumerable: true, ...attrs, ...setter }); | ||
| return attrs.get(); | ||
@@ -87,4 +86,3 @@ }); | ||
| set(value) { | ||
| const that = this; | ||
| return wireDescriptorSet(that, corePropertyName, attrs => { | ||
| return wireDescriptorSet(this, corePropertyName, attrs => { | ||
| let getter; | ||
@@ -94,3 +92,3 @@ if (allOptions.get) { | ||
| } | ||
| Reflect.defineProperty(that, corePropertyName, { configurable: true, enumerable: true, ...attrs, ...getter }); | ||
| Reflect.defineProperty(this, corePropertyName, { configurable: true, enumerable: true, ...attrs, ...getter }); | ||
| attrs.set(value); | ||
@@ -97,0 +95,0 @@ }); |
@@ -1,3 +0,3 @@ | ||
| import { defineCustomElement } from '../component-utils'; | ||
| import { CUSTOM_ELEMENT_NAME_PROPERTY, CUSTOM_ELEMENT_DEPENDENCIES_PROPERTY } from '../constants'; | ||
| import { defineCustomElement } from '../component-utils.js'; | ||
| import { CUSTOM_ELEMENT_NAME_PROPERTY, CUSTOM_ELEMENT_DEPENDENCIES_PROPERTY } from '../constants.js'; | ||
| /** | ||
@@ -4,0 +4,0 @@ * This decorator is intended to be used on classes that extend `HTMLElement` to |
@@ -1,2 +0,2 @@ | ||
| export * from './custom-element'; | ||
| export * from './core-property'; | ||
| export * from './custom-element.js'; | ||
| export * from './core-property.js'; |
@@ -1,2 +0,2 @@ | ||
| export * from './custom-element'; | ||
| export * from './core-property'; | ||
| export * from './custom-element.js'; | ||
| export * from './core-property.js'; |
@@ -1,4 +0,4 @@ | ||
| export * from './decorators'; | ||
| export * from './component-utils'; | ||
| export * from './constants'; | ||
| export * from './decorators/index.js'; | ||
| export * from './component-utils.js'; | ||
| export * from './constants.js'; | ||
| export interface ICustomElement extends HTMLElement { | ||
@@ -5,0 +5,0 @@ initializedCallback?: () => void; |
@@ -1,3 +0,3 @@ | ||
| export * from './decorators'; | ||
| export * from './component-utils'; | ||
| export * from './constants'; | ||
| export * from './decorators/index.js'; | ||
| export * from './component-utils.js'; | ||
| export * from './constants.js'; |
@@ -1,1 +0,1 @@ | ||
| export * from './event-aware'; | ||
| export * from './event-aware.js'; |
@@ -1,1 +0,1 @@ | ||
| export * from './event-aware'; | ||
| export * from './event-aware.js'; |
+10
-10
@@ -6,11 +6,11 @@ /** | ||
| */ | ||
| export * from './a11y'; | ||
| export * from './constants'; | ||
| export * from './custom-elements'; | ||
| export * from './events'; | ||
| export * from './media-observer'; | ||
| export * from './message-list'; | ||
| export * from './resize'; | ||
| export * from './scroll'; | ||
| export * from './services'; | ||
| export * from './utils'; | ||
| export * from './a11y/index.js'; | ||
| export * from './constants/index.js'; | ||
| export * from './custom-elements/index.js'; | ||
| export * from './events/index.js'; | ||
| export * from './media-observer/index.js'; | ||
| export * from './message-list/index.js'; | ||
| export * from './resize/index.js'; | ||
| export * from './scroll/index.js'; | ||
| export * from './services/index.js'; | ||
| export * from './utils/index.js'; |
+10
-10
@@ -6,11 +6,11 @@ /** | ||
| */ | ||
| export * from './a11y'; | ||
| export * from './constants'; | ||
| export * from './custom-elements'; | ||
| export * from './events'; | ||
| export * from './media-observer'; | ||
| export * from './message-list'; | ||
| export * from './resize'; | ||
| export * from './scroll'; | ||
| export * from './services'; | ||
| export * from './utils'; | ||
| export * from './a11y/index.js'; | ||
| export * from './constants/index.js'; | ||
| export * from './custom-elements/index.js'; | ||
| export * from './events/index.js'; | ||
| export * from './media-observer/index.js'; | ||
| export * from './message-list/index.js'; | ||
| export * from './resize/index.js'; | ||
| export * from './scroll/index.js'; | ||
| export * from './services/index.js'; | ||
| export * from './utils/index.js'; |
@@ -1,3 +0,3 @@ | ||
| export * from './media-observer'; | ||
| export * from './media-observer-utils'; | ||
| export * from './types'; | ||
| export * from './media-observer.js'; | ||
| export * from './media-observer-utils.js'; | ||
| export * from './types.js'; |
@@ -1,3 +0,3 @@ | ||
| export * from './media-observer'; | ||
| export * from './media-observer-utils'; | ||
| export * from './types'; | ||
| export * from './media-observer.js'; | ||
| export * from './media-observer-utils.js'; | ||
| export * from './types.js'; |
@@ -1,2 +0,2 @@ | ||
| import { IMediaRange, MediaFeature, NamedMediaQuery, RangeMediaFeature } from './types'; | ||
| import { IMediaRange, MediaFeature, NamedMediaQuery, RangeMediaFeature } from './types.js'; | ||
| /** Returns the names of all queries that match. Used for range media features. */ | ||
@@ -3,0 +3,0 @@ export declare function getMatchingValues(namedQueries: NamedMediaQuery[]): string[]; |
@@ -1,2 +0,2 @@ | ||
| import { ALL_MEDIA_FEATURES } from './types'; | ||
| import { ALL_MEDIA_FEATURES } from './types.js'; | ||
| /** Returns the names of all queries that match. Used for range media features. */ | ||
@@ -3,0 +3,0 @@ export function getMatchingValues(namedQueries) { |
@@ -1,3 +0,3 @@ | ||
| import { Subject } from '../observable'; | ||
| import { BooleanMediaFeature, IMediaObserverOptions, IMediaRange, MediaFeature as DiscreteMediaFeature, NamedMediaQuery, RangeMediaFeature } from './types'; | ||
| import { Subject } from '../observable/index.js'; | ||
| import { BooleanMediaFeature, IMediaObserverOptions, IMediaRange, MediaFeature as DiscreteMediaFeature, NamedMediaQuery, RangeMediaFeature } from './types.js'; | ||
| /** | ||
@@ -4,0 +4,0 @@ * A Subject that tracks the value of a media feature and exposes it synchronously and |
@@ -1,4 +0,4 @@ | ||
| import { Subject } from '../observable'; | ||
| import { getBooleanValue, getMatchingValue, getMatchingValues, getRangeQuery, validateName } from './media-observer-utils'; | ||
| import { mediaFeatureValues } from './types'; | ||
| import { Subject } from '../observable/index.js'; | ||
| import { getBooleanValue, getMatchingValue, getMatchingValues, getRangeQuery, validateName } from './media-observer-utils.js'; | ||
| import { mediaFeatureValues } from './types.js'; | ||
| /** | ||
@@ -10,2 +10,7 @@ * A Subject that tracks the value of a media feature and exposes it synchronously and | ||
| /** | ||
| * STATIC MEMBERS | ||
| */ | ||
| /** A collection of all managed media observers. */ | ||
| static { this._observers = {}; } | ||
| /** | ||
| * Returns a new media observer tracking a discrete feature. | ||
@@ -91,3 +96,2 @@ * @param feature The name of a discrete media feature. | ||
| } | ||
| // eslint-disable-next-line @tylertech-eslint/require-private-modifier | ||
| constructor(name, namedQueries, value, track = true) { | ||
@@ -113,3 +117,3 @@ super(value); | ||
| const queryList = window.matchMedia(query); | ||
| const handler = (event) => this.setValue(event, name); | ||
| const handler = event => this.setValue(event, name); | ||
| handler(queryList); | ||
@@ -122,7 +126,2 @@ queryList.addEventListener('change', handler); | ||
| /** | ||
| * STATIC MEMBERS | ||
| */ | ||
| /** A collection of all managed media observers. */ | ||
| MediaObserver._observers = {}; | ||
| /** | ||
| * A media observer that tracks one feature with multiple discrete keyword values. | ||
@@ -132,3 +131,6 @@ */ | ||
| static create(feature, options) { | ||
| const namedQueries = mediaFeatureValues[feature].map(featureValue => ({ name: featureValue.toString(), query: `(${feature}: ${featureValue})` })); | ||
| const namedQueries = mediaFeatureValues[feature].map(featureValue => ({ | ||
| name: featureValue.toString(), | ||
| query: `(${feature}: ${featureValue})` | ||
| })); | ||
| const value = getMatchingValue(namedQueries); | ||
@@ -156,3 +158,2 @@ const name = validateName(options?.name) ?? feature; | ||
| } | ||
| // eslint-disable-next-line @tylertech-eslint/require-private-modifier | ||
| constructor(name, namedQueries, value, track = true) { | ||
@@ -159,0 +160,0 @@ super(name, namedQueries, value, track); |
| export declare const DISCRETE_MEDIA_FEATURES: readonly ["any-hover", "any-pointer", "color-gamut", "display-mode", "dynamic-range", "forced-colors", "grid", "hover", "inverted-colors", "orientation", "overflow-block", "overflow-inline", "pointer", "prefers-contrast", "prefers-color-scheme", "prefers-reduced-motion", "scripting", "update", "video-dynamic-range"]; | ||
| export declare const RANGE_MEDIA_FEATURES: readonly ["aspect-ratio", "color", "color-index", "height", "monochrome", "resolution", "width"]; | ||
| export declare const ALL_MEDIA_FEATURES: ("resolution" | "height" | "width" | "color" | "grid" | "update" | "orientation" | "any-hover" | "any-pointer" | "color-gamut" | "display-mode" | "dynamic-range" | "forced-colors" | "hover" | "inverted-colors" | "overflow-block" | "overflow-inline" | "pointer" | "prefers-contrast" | "prefers-color-scheme" | "prefers-reduced-motion" | "scripting" | "video-dynamic-range" | "aspect-ratio" | "color-index" | "monochrome")[]; | ||
| export declare const ALL_MEDIA_FEATURES: ("height" | "width" | "any-hover" | "any-pointer" | "color-gamut" | "display-mode" | "dynamic-range" | "forced-colors" | "grid" | "hover" | "inverted-colors" | "orientation" | "overflow-block" | "overflow-inline" | "pointer" | "prefers-contrast" | "prefers-color-scheme" | "prefers-reduced-motion" | "scripting" | "update" | "video-dynamic-range" | "aspect-ratio" | "color" | "color-index" | "monochrome" | "resolution")[]; | ||
| export declare const BOOLEAN_MEDIA_FEATURES: readonly ["any-hover", "any-pointer", "color", "color-index", "dynamic-range", "forced-colors", "grid", "height", "hover", "inverted-colors", "monochrome", "overflow-block", "overflow-inline", "pointer", "prefers-contrast", "prefers-reduced-motion", "scripting", "update", "video-dynamic-range", "width"]; | ||
| export type DiscreteMediaFeature = typeof DISCRETE_MEDIA_FEATURES[number]; | ||
| export type RangeMediaFeature = typeof RANGE_MEDIA_FEATURES[number]; | ||
| export type DiscreteMediaFeature = (typeof DISCRETE_MEDIA_FEATURES)[number]; | ||
| export type RangeMediaFeature = (typeof RANGE_MEDIA_FEATURES)[number]; | ||
| export type MediaFeature = DiscreteMediaFeature | RangeMediaFeature; | ||
| export type BooleanMediaFeature = typeof BOOLEAN_MEDIA_FEATURES[number]; | ||
| export type BooleanMediaFeature = (typeof BOOLEAN_MEDIA_FEATURES)[number]; | ||
| export declare const colorGamutValues: readonly ["srbg", "p3", "rec2020"]; | ||
@@ -26,27 +26,27 @@ export declare const displayModeValues: readonly ["fullscreen", "standalone", "minimal-ui", "browser", "window-controls-overlay"]; | ||
| export declare const videoDynamicRangeValues: readonly ["standard", "high"]; | ||
| export type ColorGamutValue = typeof colorGamutValues[number]; | ||
| export type DisplayModeValue = typeof displayModeValues[number]; | ||
| export type DynamicRangeValue = typeof dynamicRangeValues[number]; | ||
| export type ForcedColorsValue = typeof forcedColorsValues[number]; | ||
| export type GridValue = typeof gridValues[number]; | ||
| export type HoverValue = typeof hoverValues[number]; | ||
| export type InvertedColorsValue = typeof invertedColorsValues[number]; | ||
| export type OrientationValue = typeof orientationValues[number]; | ||
| export type OverflowBlockValue = typeof overflowBlockValues[number]; | ||
| export type OverflowInlineValue = typeof overflowInlineValues[number]; | ||
| export type PointerValue = typeof pointerValues[number]; | ||
| export type PrefersContrastValue = typeof prefersContrastValues[number]; | ||
| export type PrefersColorSchemeValue = typeof prefersColorSchemeValues[number]; | ||
| export type PrefersReducedMotionValue = typeof prefersReducedMotionValues[number]; | ||
| export type ScriptingValue = typeof scriptingValues[number]; | ||
| export type UpdateValue = typeof updateValues[number]; | ||
| export type VideoDynamicRangeValue = typeof videoDynamicRangeValues[number]; | ||
| export type NamedMediaQuery = { | ||
| export type ColorGamutValue = (typeof colorGamutValues)[number]; | ||
| export type DisplayModeValue = (typeof displayModeValues)[number]; | ||
| export type DynamicRangeValue = (typeof dynamicRangeValues)[number]; | ||
| export type ForcedColorsValue = (typeof forcedColorsValues)[number]; | ||
| export type GridValue = (typeof gridValues)[number]; | ||
| export type HoverValue = (typeof hoverValues)[number]; | ||
| export type InvertedColorsValue = (typeof invertedColorsValues)[number]; | ||
| export type OrientationValue = (typeof orientationValues)[number]; | ||
| export type OverflowBlockValue = (typeof overflowBlockValues)[number]; | ||
| export type OverflowInlineValue = (typeof overflowInlineValues)[number]; | ||
| export type PointerValue = (typeof pointerValues)[number]; | ||
| export type PrefersContrastValue = (typeof prefersContrastValues)[number]; | ||
| export type PrefersColorSchemeValue = (typeof prefersColorSchemeValues)[number]; | ||
| export type PrefersReducedMotionValue = (typeof prefersReducedMotionValues)[number]; | ||
| export type ScriptingValue = (typeof scriptingValues)[number]; | ||
| export type UpdateValue = (typeof updateValues)[number]; | ||
| export type VideoDynamicRangeValue = (typeof videoDynamicRangeValues)[number]; | ||
| export interface NamedMediaQuery { | ||
| name: string; | ||
| query: string; | ||
| }; | ||
| export type ManagedMediaQuery = { | ||
| } | ||
| export interface ManagedMediaQuery { | ||
| queryList: MediaQueryList; | ||
| handler: MediaQueryHandler; | ||
| }; | ||
| } | ||
| export type MediaQueryHandler = (event: MediaQueryList | MediaQueryListEvent) => void; | ||
@@ -56,5 +56,5 @@ export declare const mediaFeatureValues: { | ||
| 'any-pointer': ("none" | "coarse" | "fine")[]; | ||
| 'color-gamut': ("p3" | "rec2020" | "srbg")[]; | ||
| 'display-mode': ("browser" | "fullscreen" | "standalone" | "minimal-ui" | "window-controls-overlay")[]; | ||
| 'dynamic-range': ("high" | "standard")[]; | ||
| 'color-gamut': ("srbg" | "p3" | "rec2020")[]; | ||
| 'display-mode': ("fullscreen" | "standalone" | "minimal-ui" | "browser" | "window-controls-overlay")[]; | ||
| 'dynamic-range': ("standard" | "high")[]; | ||
| 'forced-colors': ("none" | "active")[]; | ||
@@ -68,3 +68,3 @@ grid: (0 | 1)[]; | ||
| pointer: ("none" | "coarse" | "fine")[]; | ||
| 'prefers-contrast': ("custom" | "no-preference" | "more" | "less")[]; | ||
| 'prefers-contrast': ("no-preference" | "more" | "less" | "custom")[]; | ||
| 'prefers-color-scheme': ("light" | "dark")[]; | ||
@@ -74,3 +74,3 @@ 'prefers-reduced-motion': ("reduce" | "no-preference")[]; | ||
| update: ("none" | "slow" | "fast")[]; | ||
| 'video-dynamic-range': ("high" | "standard")[]; | ||
| 'video-dynamic-range': ("standard" | "high")[]; | ||
| }; | ||
@@ -77,0 +77,0 @@ export interface IMediaObserverOptions { |
@@ -22,11 +22,3 @@ export const DISCRETE_MEDIA_FEATURES = [ | ||
| ]; | ||
| export const RANGE_MEDIA_FEATURES = [ | ||
| 'aspect-ratio', | ||
| 'color', | ||
| 'color-index', | ||
| 'height', | ||
| 'monochrome', | ||
| 'resolution', | ||
| 'width' | ||
| ]; | ||
| export const RANGE_MEDIA_FEATURES = ['aspect-ratio', 'color', 'color-index', 'height', 'monochrome', 'resolution', 'width']; | ||
| export const ALL_MEDIA_FEATURES = [...DISCRETE_MEDIA_FEATURES, ...RANGE_MEDIA_FEATURES]; | ||
@@ -79,15 +71,15 @@ export const BOOLEAN_MEDIA_FEATURES = [ | ||
| 'forced-colors': Array.from(forcedColorsValues.values()), | ||
| 'grid': Array.from(gridValues.values()), | ||
| 'hover': Array.from(hoverValues.values()), | ||
| grid: Array.from(gridValues.values()), | ||
| hover: Array.from(hoverValues.values()), | ||
| 'inverted-colors': Array.from(invertedColorsValues.values()), | ||
| 'orientation': Array.from(orientationValues.values()), | ||
| orientation: Array.from(orientationValues.values()), | ||
| 'overflow-block': Array.from(overflowBlockValues.values()), | ||
| 'overflow-inline': Array.from(overflowInlineValues.values()), | ||
| 'pointer': Array.from(pointerValues.values()), | ||
| pointer: Array.from(pointerValues.values()), | ||
| 'prefers-contrast': Array.from(prefersContrastValues.values()), | ||
| 'prefers-color-scheme': Array.from(prefersColorSchemeValues.values()), | ||
| 'prefers-reduced-motion': Array.from(prefersReducedMotionValues.values()), | ||
| 'scripting': Array.from(scriptingValues.values()), | ||
| 'update': Array.from(updateValues.values()), | ||
| scripting: Array.from(scriptingValues.values()), | ||
| update: Array.from(updateValues.values()), | ||
| 'video-dynamic-range': Array.from(videoDynamicRangeValues.values()) | ||
| }; |
@@ -1,2 +0,2 @@ | ||
| export * from './message-list-entry'; | ||
| export * from './message-list'; | ||
| export * from './message-list-entry.js'; | ||
| export * from './message-list.js'; |
@@ -1,2 +0,2 @@ | ||
| export * from './message-list-entry'; | ||
| export * from './message-list'; | ||
| export * from './message-list-entry.js'; | ||
| export * from './message-list.js'; |
@@ -9,44 +9,44 @@ /** | ||
| /** | ||
| * True if ellipsis management occurs automatically. Default is true. | ||
| */ | ||
| * True if ellipsis management occurs automatically. Default is true. | ||
| */ | ||
| get useAutoEllipsis(): boolean; | ||
| set useAutoEllipsis(value: boolean); | ||
| /** | ||
| * The message that is made up of all messages in the entries. | ||
| */ | ||
| * The message that is made up of all messages in the entries. | ||
| */ | ||
| message: string; | ||
| constructor(useAutoEllipsis?: boolean); | ||
| /** | ||
| * Adds a message to the entry map. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| * Adds a message to the entry map. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| add(message: string, identifier: T): MessageList<T>; | ||
| /** | ||
| * Removes a message using the provided identifier. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| * Removes a message using the provided identifier. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| remove(identifier: T): MessageList<T>; | ||
| /** | ||
| * Updates an existing message value. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The existing message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| * Updates an existing message value. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The existing message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| update(message: string, identifier: T): MessageList<T>; | ||
| /** | ||
| * Gets the number of messages in the list. | ||
| * @returns {number} | ||
| */ | ||
| * Gets the number of messages in the list. | ||
| * @returns {number} | ||
| */ | ||
| get messageCount(): number; | ||
| /** | ||
| * Resets the message list to it's original state and removes all messages. | ||
| */ | ||
| * Resets the message list to it's original state and removes all messages. | ||
| */ | ||
| reset(): void; | ||
| /** | ||
| * Determines if a message with the provided identifier exists. | ||
| * @param {T} identifier The message identifier. | ||
| */ | ||
| * Determines if a message with the provided identifier exists. | ||
| * @param {T} identifier The message identifier. | ||
| */ | ||
| hasMessage(identifier: T): boolean; | ||
@@ -53,0 +53,0 @@ private _updateMessage; |
@@ -1,2 +0,2 @@ | ||
| import { MessageListEntry } from './message-list-entry'; | ||
| import { MessageListEntry } from './message-list-entry.js'; | ||
| /** | ||
@@ -8,4 +8,4 @@ * Represents a message list of any type. This class can be used to attach a string message to | ||
| /** | ||
| * True if ellipsis management occurs automatically. Default is true. | ||
| */ | ||
| * True if ellipsis management occurs automatically. Default is true. | ||
| */ | ||
| get useAutoEllipsis() { | ||
@@ -24,7 +24,7 @@ return this._useAutoEllipsis; | ||
| /** | ||
| * Adds a message to the entry map. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| * Adds a message to the entry map. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| add(message, identifier) { | ||
@@ -36,6 +36,6 @@ this._messages.push(new MessageListEntry(message, identifier)); | ||
| /** | ||
| * Removes a message using the provided identifier. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| * Removes a message using the provided identifier. | ||
| * @param {T} identifier The message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| remove(identifier) { | ||
@@ -50,7 +50,7 @@ const index = this._getMessageIndex(identifier); | ||
| /** | ||
| * Updates an existing message value. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The existing message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| * Updates an existing message value. | ||
| * @param {string} message The message string. | ||
| * @param {T} identifier The existing message identifier. | ||
| * @returns {MessageList<T>} A reference to `this` for chaining. | ||
| */ | ||
| update(message, identifier) { | ||
@@ -65,5 +65,5 @@ const index = this._getMessageIndex(identifier); | ||
| /** | ||
| * Gets the number of messages in the list. | ||
| * @returns {number} | ||
| */ | ||
| * Gets the number of messages in the list. | ||
| * @returns {number} | ||
| */ | ||
| get messageCount() { | ||
@@ -73,4 +73,4 @@ return this._messages.length; | ||
| /** | ||
| * Resets the message list to it's original state and removes all messages. | ||
| */ | ||
| * Resets the message list to it's original state and removes all messages. | ||
| */ | ||
| reset() { | ||
@@ -81,5 +81,5 @@ this._messages = []; | ||
| /** | ||
| * Determines if a message with the provided identifier exists. | ||
| * @param {T} identifier The message identifier. | ||
| */ | ||
| * Determines if a message with the provided identifier exists. | ||
| * @param {T} identifier The message identifier. | ||
| */ | ||
| hasMessage(identifier) { | ||
@@ -86,0 +86,0 @@ return this._getMessageIndex(identifier) >= 0; |
@@ -1,2 +0,2 @@ | ||
| export * from './observable'; | ||
| export * from './types'; | ||
| export * from './observable.js'; | ||
| export * from './types.js'; |
@@ -1,2 +0,2 @@ | ||
| export * from './observable'; | ||
| export * from './types'; | ||
| export * from './observable.js'; | ||
| export * from './types.js'; |
@@ -1,2 +0,2 @@ | ||
| import { Observer } from './types'; | ||
| import { Observer } from './types.js'; | ||
| export declare class Subject<T> { | ||
@@ -3,0 +3,0 @@ protected source: T; |
@@ -20,3 +20,2 @@ export class Subject { | ||
| for (const subscriber of this.subscribers) { | ||
| // eslint-disable-next-line @typescript-eslint/dot-notation | ||
| subscriber.observer?.(value); | ||
@@ -34,3 +33,2 @@ } | ||
| } | ||
| ; | ||
| constructor(parent, observer) { | ||
@@ -37,0 +35,0 @@ this._closed = false; |
@@ -1,2 +0,2 @@ | ||
| export * from './resize-observer'; | ||
| export * from './resize-types'; | ||
| export * from './resize-observer.js'; | ||
| export * from './resize-types.js'; |
@@ -1,2 +0,2 @@ | ||
| export * from './resize-observer'; | ||
| export * from './resize-types'; | ||
| export * from './resize-observer.js'; | ||
| export * from './resize-types.js'; |
@@ -1,2 +0,2 @@ | ||
| import { ForgeResizeObserverCallback, IResizeObserverOptions } from './resize-types'; | ||
| import { ForgeResizeObserverCallback, IResizeObserverOptions } from './resize-types.js'; | ||
| /** | ||
@@ -3,0 +3,0 @@ * Provides a set of methods for observing and responding to resizing of elements. |
@@ -5,2 +5,3 @@ /** | ||
| export class ForgeResizeObserver { | ||
| static { this._targets = new Map(); } | ||
| /** | ||
@@ -50,13 +51,12 @@ * Initiates the observing of a specified `Element`. Calling with an already observed `Element` | ||
| } | ||
| /** | ||
| * Runs the callback function of targets when they are resized. | ||
| * | ||
| * @param entries An array of `ResizeObserverEntry`s. | ||
| */ | ||
| static { this._handleResize = entries => { | ||
| entries.forEach(entry => { | ||
| ForgeResizeObserver._targets.get(entry.target)?.(entry); | ||
| }); | ||
| }; } | ||
| } | ||
| ForgeResizeObserver._targets = new Map(); | ||
| /** | ||
| * Runs the callback function of targets when they are resized. | ||
| * | ||
| * @param entries An array of `ResizeObserverEntry`s. | ||
| */ | ||
| ForgeResizeObserver._handleResize = entries => { | ||
| entries.forEach(entry => { | ||
| ForgeResizeObserver._targets.get(entry.target)?.(entry); | ||
| }); | ||
| }; |
@@ -1,2 +0,2 @@ | ||
| export * from './scroll-axis-observer'; | ||
| export * from './scroll-types'; | ||
| export * from './scroll-axis-observer.js'; | ||
| export * from './scroll-types.js'; |
@@ -1,2 +0,2 @@ | ||
| export * from './scroll-axis-observer'; | ||
| export * from './scroll-types'; | ||
| export * from './scroll-axis-observer.js'; | ||
| export * from './scroll-types.js'; |
@@ -1,3 +0,3 @@ | ||
| import { EventAware, IEventAware } from '../events/event-aware'; | ||
| import { IScrollObserverConfiguration } from './scroll-types'; | ||
| import { EventAware, IEventAware } from '../events/event-aware.js'; | ||
| import { IScrollObserverConfiguration } from './scroll-types.js'; | ||
| export interface IScrollAxisObserver extends IEventAware { | ||
@@ -4,0 +4,0 @@ scrollPosition: number; |
@@ -1,4 +0,4 @@ | ||
| import { EventAware } from '../events/event-aware'; | ||
| import { ScrollEvents, ScrollDirection } from './scroll-types'; | ||
| import { isDefined, throttle, isNumber } from '../utils'; | ||
| import { EventAware } from '../events/event-aware.js'; | ||
| import { ScrollEvents, ScrollDirection } from './scroll-types.js'; | ||
| import { isDefined, throttle, isNumber } from '../utils/index.js'; | ||
| const DEFAULT_SCROLL_THROTTLE = 100; | ||
@@ -62,3 +62,9 @@ /** | ||
| const position = this.scrollPosition; | ||
| const direction = this._lastScrollPosition - position < 0 ? this._axis === 'vertical' ? ScrollDirection.Down : ScrollDirection.Right : this._axis === 'vertical' ? ScrollDirection.Up : ScrollDirection.Left; | ||
| const direction = this._lastScrollPosition - position < 0 | ||
| ? this._axis === 'vertical' | ||
| ? ScrollDirection.Down | ||
| : ScrollDirection.Right | ||
| : this._axis === 'vertical' | ||
| ? ScrollDirection.Up | ||
| : ScrollDirection.Left; | ||
| this._emit(ScrollEvents.Scroll, { direction, position }); | ||
@@ -76,3 +82,3 @@ if (this._lastScrollPosition <= this._scrollThreshold && position > this._scrollThreshold) { | ||
| } | ||
| else if (this._lastScrollPosition <= (this.scrollSize - this._scrollThreshold) && scrollEnd <= this._scrollThreshold) { | ||
| else if (this._lastScrollPosition <= this.scrollSize - this._scrollThreshold && scrollEnd <= this._scrollThreshold) { | ||
| this._emit(ScrollEvents.ScrolledEnd); | ||
@@ -79,0 +85,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| export * from './service-adapter'; | ||
| export * from './service-adapter.js'; |
@@ -1,1 +0,1 @@ | ||
| export * from './service-adapter'; | ||
| export * from './service-adapter.js'; |
@@ -1,6 +0,2 @@ | ||
| import { isArray } from './utils'; | ||
| /** | ||
| * Holds regular expressions | ||
| */ | ||
| /* tslint:disable-next-line:require-private-underscore */ | ||
| import { isArray } from './utils.js'; | ||
| const REGULAR_EXPRESSIONS = { | ||
@@ -15,6 +11,2 @@ placement: { | ||
| }; | ||
| /** | ||
| * Holds the browser scrollbar width. | ||
| */ | ||
| /* tslint:disable-next-line:require-private-underscore */ | ||
| let SCROLLBAR_WIDTH; | ||
@@ -397,8 +389,7 @@ /** | ||
| const el = document.createElement('fakeelement'); | ||
| // tslint:disable:object-literal-key-quotes | ||
| const animations = { | ||
| 'animation': 'animationend', | ||
| 'OAnimation': 'oAnimationEnd', | ||
| 'MozAnimation': 'animationend', | ||
| 'WebkitAnimation': 'webkitAnimationEnd' | ||
| animation: 'animationend', | ||
| OAnimation: 'oAnimationEnd', | ||
| MozAnimation: 'animationend', | ||
| WebkitAnimation: 'webkitAnimationEnd' | ||
| }; | ||
@@ -629,3 +620,3 @@ for (const t in animations) { | ||
| const slotNodes = rootElement.assignedNodes(); | ||
| slotNodes.forEach(slottedNode => nodes = nodes.concat(deepQuerySelectorAll(slottedNode, selectors, true))); | ||
| slotNodes.forEach(slottedNode => (nodes = nodes.concat(deepQuerySelectorAll(slottedNode, selectors, true)))); | ||
| } | ||
@@ -752,5 +743,5 @@ else { | ||
| if (isClippedStart) { | ||
| return (targetOffset - scrollOffset) - targetSize; | ||
| return targetOffset - scrollOffset - targetSize; | ||
| } | ||
| return (targetOffset - scrollSize) + targetSize * 2; | ||
| return targetOffset - scrollSize + targetSize * 2; | ||
| } | ||
@@ -757,0 +748,0 @@ return targetOffset - scrollOffset - scrollSize / 2 + targetSize / 2; |
@@ -11,3 +11,3 @@ /** | ||
| for (const property in obj) { | ||
| if (!obj.hasOwnProperty(property)) { | ||
| if (!Object.prototype.hasOwnProperty.call(obj, property)) { | ||
| continue; | ||
@@ -17,4 +17,6 @@ } | ||
| for (const index in obj[property]) { | ||
| if (obj[property].hasOwnProperty(index)) { | ||
| params.push(encodeURIComponent(property) + '=' + (obj[property][index] !== null && typeof obj[property][index] !== 'undefined' ? encodeURIComponent(obj[property][index]) : '')); | ||
| if (Object.prototype.hasOwnProperty.call(obj[property], index)) { | ||
| params.push(encodeURIComponent(property) + | ||
| '=' + | ||
| (obj[property][index] !== null && typeof obj[property][index] !== 'undefined' ? encodeURIComponent(obj[property][index]) : '')); | ||
| } | ||
@@ -21,0 +23,0 @@ } |
+10
-10
@@ -1,10 +0,10 @@ | ||
| export * from './a11y'; | ||
| export * from './clipboard'; | ||
| export * from './dom-utils'; | ||
| export * from './event-utils'; | ||
| export * from './http-utils'; | ||
| export * from './item-manager'; | ||
| export * from './object-utils'; | ||
| export * from './platform'; | ||
| export * from './string-utils'; | ||
| export * from './utils'; | ||
| export * from './a11y.js'; | ||
| export * from './clipboard.js'; | ||
| export * from './dom-utils.js'; | ||
| export * from './event-utils.js'; | ||
| export * from './http-utils.js'; | ||
| export * from './item-manager.js'; | ||
| export * from './object-utils.js'; | ||
| export * from './platform.js'; | ||
| export * from './string-utils.js'; | ||
| export * from './utils.js'; |
+10
-10
@@ -1,10 +0,10 @@ | ||
| export * from './a11y'; | ||
| export * from './clipboard'; | ||
| export * from './dom-utils'; | ||
| export * from './event-utils'; | ||
| export * from './http-utils'; | ||
| export * from './item-manager'; | ||
| export * from './object-utils'; | ||
| export * from './platform'; | ||
| export * from './string-utils'; | ||
| export * from './utils'; | ||
| export * from './a11y.js'; | ||
| export * from './clipboard.js'; | ||
| export * from './dom-utils.js'; | ||
| export * from './event-utils.js'; | ||
| export * from './http-utils.js'; | ||
| export * from './item-manager.js'; | ||
| export * from './object-utils.js'; | ||
| export * from './platform.js'; | ||
| export * from './string-utils.js'; | ||
| export * from './utils.js'; |
@@ -1,2 +0,2 @@ | ||
| import { findWhere, createPredicate } from './object-utils'; | ||
| import { findWhere, createPredicate } from './object-utils.js'; | ||
| export class ItemManager { | ||
@@ -3,0 +3,0 @@ constructor(_key) { |
@@ -81,3 +81,3 @@ /** | ||
| let propObj = obj; | ||
| if (!obj.hasOwnProperty(prop)) { | ||
| if (!Object.prototype.hasOwnProperty.call(obj, prop)) { | ||
| propObj = Object.getPrototypeOf(obj); | ||
@@ -92,9 +92,9 @@ } | ||
| get() { | ||
| return originalValueDescriptor.get ? originalValueDescriptor.get.apply(this, arguments) : undefined; | ||
| return originalValueDescriptor.get ? originalValueDescriptor.get.call(this) : undefined; | ||
| }, | ||
| set() { | ||
| set(value) { | ||
| if (originalValueDescriptor.set) { | ||
| originalValueDescriptor.set.apply(this, arguments); | ||
| originalValueDescriptor.set.call(this, value); | ||
| } | ||
| listener.apply(context, arguments); | ||
| listener.call(context, value); | ||
| } | ||
@@ -101,0 +101,0 @@ }); |
@@ -32,3 +32,3 @@ /** | ||
| static get BLINK() { | ||
| return Platform.isBrowser && (!!(window.chrome || hasV8BreakIterator) && !!CSS && !Platform.EDGE && !Platform.TRIDENT); | ||
| return Platform.isBrowser && !!(window.chrome || hasV8BreakIterator) && !!CSS && !Platform.EDGE && !Platform.TRIDENT; | ||
| } | ||
@@ -35,0 +35,0 @@ // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to |
@@ -1,2 +0,2 @@ | ||
| import { isDefined, isString } from './utils'; | ||
| import { isDefined, isString } from './utils.js'; | ||
| /** | ||
@@ -3,0 +3,0 @@ * Converts a string value to dash-case. |
+14
-15
| /** Generates random characters. Defaults to a length of 5. */ | ||
| export function randomChars(length = 5) { | ||
| const skip = 2; // Skip the first two chars which are always "0." | ||
| return Math.random().toString(36).substring(skip, skip + length); | ||
| return Math.random() | ||
| .toString(36) | ||
| .substring(skip, skip + length); | ||
| } | ||
@@ -110,3 +112,6 @@ /** | ||
| if (typeof strOrNumOrArray === 'string') { | ||
| return strOrNumOrArray.replace(/ |\[|]|\"/g, '').split(',').map(n => Number(n)); | ||
| return strOrNumOrArray | ||
| .replace(/ |\[|]|"/g, '') | ||
| .split(',') | ||
| .map(n => Number(n)); | ||
| } | ||
@@ -155,5 +160,6 @@ else if (typeof strOrNumOrArray === 'number') { | ||
| }; | ||
| return function () { | ||
| return function (...restArgs) { | ||
| // eslint-disable-next-line @typescript-eslint/no-this-alias | ||
| context = this; | ||
| args = arguments; | ||
| args = restArgs; | ||
| timestamp = Date.now(); | ||
@@ -196,3 +202,3 @@ const callNow = immediate && !timeout; | ||
| }; | ||
| return function () { | ||
| return function (...restArgs) { | ||
| const now = Date.now(); | ||
@@ -203,4 +209,5 @@ if (!timestamp && options.leading === false) { | ||
| const remaining = wait - (now - timestamp); | ||
| // eslint-disable-next-line @typescript-eslint/no-this-alias | ||
| context = this; | ||
| args = arguments; | ||
| args = restArgs; | ||
| if (remaining <= 0 || remaining > wait) { | ||
@@ -247,11 +254,3 @@ if (timeout) { | ||
| export function idleWatch(callback, timespan) { | ||
| const events = [ | ||
| 'mousedown', | ||
| 'mousemove', | ||
| 'touchstart', | ||
| 'touchmove', | ||
| 'keydown', | ||
| 'wheel', | ||
| 'resize' | ||
| ]; | ||
| const events = ['mousedown', 'mousemove', 'touchstart', 'touchmove', 'keydown', 'wheel', 'resize']; | ||
| events.forEach(e => { | ||
@@ -258,0 +257,0 @@ window.addEventListener(e, throttle((event) => { |
+16
-36
| { | ||
| "name": "@tylertech/forge-core", | ||
| "version": "3.2.1", | ||
| "version": "3.3.0-dev.0", | ||
| "description": "A library of core web utilities that support Tyler Forge™ based libraries.", | ||
@@ -9,3 +9,4 @@ "author": "Tyler Technologies, Inc.", | ||
| "type": "git", | ||
| "url": "git+https://github.com/tyler-technologies-oss/forge-core.git" | ||
| "url": "git+https://github.com/tyler-technologies-oss/forge.git", | ||
| "directory": "packages/forge-core" | ||
| }, | ||
@@ -15,41 +16,20 @@ "main": "./dist/index.js", | ||
| "typings": "./dist/index.d.ts", | ||
| "type": "module", | ||
| "exports": { | ||
| ".": { | ||
| "types": "./dist/index.d.ts", | ||
| "import": "./dist/index.js", | ||
| "default": "./dist/index.js" | ||
| }, | ||
| "./package.json": { | ||
| "default": "./package.json" | ||
| } | ||
| }, | ||
| "files": [ | ||
| "dist" | ||
| ], | ||
| "scripts": { | ||
| "prepare": "husky", | ||
| "build": "npm run lint && rimraf ./dist && tsc", | ||
| "lint": "eslint ./src", | ||
| "test": "wtr --coverage --watch", | ||
| "ci:test": "wtr", | ||
| "serve:coverage": "http-server -c 1 -o -p 9875 .coverage/lcov-report", | ||
| "release": "auto shipit" | ||
| }, | ||
| "dependencies": { | ||
| "tslib": "^2.8.1" | ||
| }, | ||
| "devDependencies": { | ||
| "@auto-it/conventional-commits": "^11.3.0", | ||
| "@auto-it/first-time-contributor": "^11.3.0", | ||
| "@auto-it/npm": "^11.3.0", | ||
| "@commitlint/cli": "^19.8.1", | ||
| "@commitlint/config-conventional": "^19.8.1", | ||
| "@esm-bundle/chai": "^4.3.4-fix.0", | ||
| "@tylertech-eslint/eslint-plugin": "^2.1.0", | ||
| "@types/mocha": "^10.0.10", | ||
| "@types/node": "^22.15.21", | ||
| "@types/sinon": "^17.0.4", | ||
| "@web/dev-server-esbuild": "^1.0.4", | ||
| "@web/test-runner": "^0.20.2", | ||
| "auto": "^11.3.0", | ||
| "commitlint": "^19.8.1", | ||
| "http-server": "^14.1.1", | ||
| "husky": "^9.1.7", | ||
| "rimraf": "^6.0.1", | ||
| "sinon": "^20.0.0", | ||
| "typescript": "~5.8.3" | ||
| }, | ||
| "overrides": { | ||
| "@typescript-eslint/typescript-estree": "^7.12.0" | ||
| } | ||
| } | ||
| "publishedAt": "2026-03-25T19:37:48.611Z" | ||
| } |
+1
-27
| # Tyler Forge™ Core | ||
| This library contains the core building blocks and utilities that are used when building Tyler Forge™ based Web Component libraries. | ||
| ## Usage | ||
| ```bash | ||
| npm i @tylertech/forge-core | ||
| ``` | ||
| ## Development | ||
| Install dependencies: | ||
| ```bash | ||
| npm i | ||
| ``` | ||
| Build library: | ||
| ```bash | ||
| npm run build | ||
| ``` | ||
| Run tests: | ||
| ```bash | ||
| npm test | ||
| ``` | ||
| This library contains core utilities that are used within Tyler Forge™. |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
173594
0.59%0
-100%89
2.3%4063
0.05%Yes
NaN2
100%4
-86.67%