UNPKG

@angular/animations

Version:

Angular - animations integration with web-animations

1 lines 54.8 kB
{"version":3,"file":"_util-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/animations/browser/src/error_helpers.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/animations/browser/src/render/web_animations/animatable_props_set.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/animations/browser/src/render/shared.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/animations/browser/src/util.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {RuntimeErrorCode} from '../../src/errors';\nimport {ɵRuntimeError as RuntimeError} from '@angular/core';\n\nconst LINE_START = '\\n - ';\n\nexport function invalidTimingValue(exp: string | number): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_TIMING_VALUE,\n ngDevMode && `The provided timing value \"${exp}\" is invalid.`,\n );\n}\n\nexport function negativeStepValue(): Error {\n return new RuntimeError(\n RuntimeErrorCode.NEGATIVE_STEP_VALUE,\n ngDevMode && 'Duration values below 0 are not allowed for this animation step.',\n );\n}\n\nexport function negativeDelayValue(): Error {\n return new RuntimeError(\n RuntimeErrorCode.NEGATIVE_DELAY_VALUE,\n ngDevMode && 'Delay values below 0 are not allowed for this animation step.',\n );\n}\n\nexport function invalidStyleParams(varName: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STYLE_PARAMS,\n ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`,\n );\n}\n\nexport function invalidParamValue(varName: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_PARAM_VALUE,\n ngDevMode && `Please provide a value for the animation param ${varName}`,\n );\n}\n\nexport function invalidNodeType(nodeType: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_NODE_TYPE,\n ngDevMode && `Unable to resolve animation metadata node #${nodeType}`,\n );\n}\n\nexport function invalidCssUnitValue(userProvidedProperty: string, value: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_CSS_UNIT_VALUE,\n ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`,\n );\n}\n\nexport function invalidTrigger(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_TRIGGER,\n ngDevMode &&\n \"animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))\",\n );\n}\n\nexport function invalidDefinition(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_DEFINITION,\n ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()',\n );\n}\n\nexport function invalidState(metadataName: string, missingSubs: string[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STATE,\n ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(\n ', ',\n )}`,\n );\n}\n\nexport function invalidStyleValue(value: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STYLE_VALUE,\n ngDevMode && `The provided style string value ${value} is not allowed.`,\n );\n}\n\nexport function invalidProperty(prop: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_PROPERTY,\n ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`,\n );\n}\n\nexport function invalidParallelAnimation(\n prop: string,\n firstStart: number,\n firstEnd: number,\n secondStart: number,\n secondEnd: number,\n): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_PARALLEL_ANIMATION,\n ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`,\n );\n}\n\nexport function invalidKeyframes(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_KEYFRAMES,\n ngDevMode && `keyframes() must be placed inside of a call to animate()`,\n );\n}\n\nexport function invalidOffset(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_OFFSET,\n ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`,\n );\n}\n\nexport function keyframeOffsetsOutOfOrder(): Error {\n return new RuntimeError(\n RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER,\n ngDevMode && `Please ensure that all keyframe offsets are in order`,\n );\n}\n\nexport function keyframesMissingOffsets(): Error {\n return new RuntimeError(\n RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS,\n ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`,\n );\n}\n\nexport function invalidStagger(): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_STAGGER,\n ngDevMode && `stagger() can only be used inside of query()`,\n );\n}\n\nexport function invalidQuery(selector: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_QUERY,\n ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`,\n );\n}\n\nexport function invalidExpression(expr: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_EXPRESSION,\n ngDevMode && `The provided transition expression \"${expr}\" is not supported`,\n );\n}\n\nexport function invalidTransitionAlias(alias: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.INVALID_TRANSITION_ALIAS,\n ngDevMode && `The transition alias value \"${alias}\" is not supported`,\n );\n}\n\nexport function validationFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.VALIDATION_FAILED,\n ngDevMode && `animation validation failed:\\n${errors.map((err) => err.message).join('\\n')}`,\n );\n}\n\nexport function buildingFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.BUILDING_FAILED,\n ngDevMode && `animation building failed:\\n${errors.map((err) => err.message).join('\\n')}`,\n );\n}\n\nexport function triggerBuildFailed(name: string, errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRIGGER_BUILD_FAILED,\n ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors\n .map((err) => err.message)\n .join('\\n - ')}`,\n );\n}\n\nexport function animationFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.ANIMATION_FAILED,\n ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors\n .map((err) => err.message)\n .join(LINE_START)}`,\n );\n}\n\nexport function registerFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.REGISTRATION_FAILED,\n ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors\n .map((err) => err.message)\n .join('\\n')}`,\n );\n}\n\nexport function missingOrDestroyedAnimation(): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION,\n ngDevMode && \"The requested animation doesn't exist or has already been destroyed\",\n );\n}\n\nexport function createAnimationFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.CREATE_ANIMATION_FAILED,\n ngDevMode &&\n `Unable to create the animation due to the following errors:${errors\n .map((err) => err.message)\n .join('\\n')}`,\n );\n}\n\nexport function missingPlayer(id: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_PLAYER,\n ngDevMode && `Unable to find the timeline player referenced by ${id}`,\n );\n}\n\nexport function missingTrigger(phase: string, name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_TRIGGER,\n ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`,\n );\n}\n\nexport function missingEvent(name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.MISSING_EVENT,\n ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`,\n );\n}\n\nexport function unsupportedTriggerEvent(phase: string, name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT,\n ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`,\n );\n}\n\nexport function unregisteredTrigger(name: string): Error {\n return new RuntimeError(\n RuntimeErrorCode.UNREGISTERED_TRIGGER,\n ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`,\n );\n}\n\nexport function triggerTransitionsFailed(errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED,\n ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors\n .map((err) => err.message)\n .join('\\n')}`,\n );\n}\n\nexport function triggerParsingFailed(name: string, errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRIGGER_PARSING_FAILED,\n ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors\n .map((err) => err.message)\n .join(LINE_START)}`,\n );\n}\n\nexport function transitionFailed(name: string, errors: Error[]): Error {\n return new RuntimeError(\n RuntimeErrorCode.TRANSITION_FAILED,\n ngDevMode && `@${name} has failed due to:\\n ${errors.map((err) => err.message).join('\\n- ')}`,\n );\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nexport const ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport {\n AnimationEvent,\n AnimationPlayer,\n AUTO_STYLE,\n NoopAnimationPlayer,\n ɵAnimationGroupPlayer,\n ɵPRE_STYLE as PRE_STYLE,\n ɵStyleDataMap,\n} from '../../../src/animations';\n\nimport {AnimationStyleNormalizer} from '../../src/dsl/style_normalization/animation_style_normalizer';\nimport {animationFailed} from '../error_helpers';\n\nimport {ANIMATABLE_PROP_SET} from './web_animations/animatable_props_set';\n\nexport function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\n\nexport function normalizeKeyframes(\n normalizer: AnimationStyleNormalizer,\n keyframes: Array<ɵStyleDataMap>,\n preStyles: ɵStyleDataMap = new Map(),\n postStyles: ɵStyleDataMap = new Map(),\n): Array<ɵStyleDataMap> {\n const errors: Error[] = [];\n const normalizedKeyframes: Array<ɵStyleDataMap> = [];\n let previousOffset = -1;\n let previousKeyframe: ɵStyleDataMap | null = null;\n keyframes.forEach((kf) => {\n const offset = kf.get('offset') as number;\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe: ɵStyleDataMap = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case PRE_STYLE:\n normalizedValue = preStyles.get(prop)!;\n break;\n\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop)!;\n break;\n\n default:\n normalizedValue = normalizer.normalizeStyleValue(\n prop,\n normalizedProp,\n normalizedValue,\n errors,\n );\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n\n return normalizedKeyframes;\n}\n\nexport function listenOnPlayer(\n player: AnimationPlayer,\n eventName: string,\n event: AnimationEvent | undefined,\n callback: (event: any) => any,\n) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\n\nexport function copyAnimationEvent(\n e: AnimationEvent,\n phaseName: string,\n player: AnimationPlayer,\n): AnimationEvent {\n const totalTime = player.totalTime;\n const disabled = (player as any).disabled ? true : false;\n const event = makeAnimationEvent(\n e.element,\n e.triggerName,\n e.fromState,\n e.toState,\n phaseName || e.phaseName,\n totalTime == undefined ? e.totalTime : totalTime,\n disabled,\n );\n const data = (e as any)['_data'];\n if (data != null) {\n (event as any)['_data'] = data;\n }\n return event;\n}\n\nexport function makeAnimationEvent(\n element: any,\n triggerName: string,\n fromState: string,\n toState: string,\n phaseName: string = '',\n totalTime: number = 0,\n disabled?: boolean,\n): AnimationEvent {\n return {element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled};\n}\n\nexport function getOrSetDefaultValue<T, V>(map: Map<T, V>, key: T, defaultValue: V) {\n let value = map.get(key);\n if (!value) {\n map.set(key, (value = defaultValue));\n }\n return value;\n}\n\nexport function parseTimelineCommand(command: string): [string, string] {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\n\nconst documentElement: HTMLElement | null = /* @__PURE__ */ (() =>\n typeof document === 'undefined' ? null : document.documentElement)();\n\nexport function getParentElement(element: any): unknown | null {\n const parent = element.parentNode || element.host || null; // consider host to support shadow DOM\n if (parent === documentElement) {\n return null;\n }\n return parent;\n}\n\nfunction containsVendorPrefix(prop: string): boolean {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\n\nlet _CACHED_BODY: {style: any} | null = null;\nlet _IS_WEBKIT = false;\nexport function validateStyleProperty(prop: string): boolean {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY!.style ? 'WebkitAppearance' in _CACHED_BODY!.style : false;\n }\n\n let result = true;\n if (_CACHED_BODY!.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY!.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY!.style;\n }\n }\n\n return result;\n}\n\nexport function validateWebAnimatableStyleProperty(prop: string): boolean {\n return ANIMATABLE_PROP_SET.has(prop);\n}\n\nexport function getBodyNode(): any | null {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\n\nexport function containsElement(elm1: any, elm2: any): boolean {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n}\n\nexport function invokeQuery(element: any, selector: string, multi: boolean): any[] {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n}\n\nexport function hypenatePropsKeys(original: ɵStyleDataMap): ɵStyleDataMap {\n const newMap: ɵStyleDataMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport {\n AnimateTimings,\n AnimationMetadata,\n AnimationMetadataType,\n AnimationOptions,\n sequence,\n ɵStyleData,\n ɵStyleDataMap,\n} from '../../src/animations';\n\nimport {Ast as AnimationAst, AstVisitor as AnimationAstVisitor} from './dsl/animation_ast';\nimport {AnimationDslVisitor} from './dsl/animation_dsl_visitor';\nimport {\n invalidNodeType,\n invalidParamValue,\n invalidStyleParams,\n invalidTimingValue,\n negativeDelayValue,\n negativeStepValue,\n} from './error_helpers';\n\nconst ONE_SECOND = 1000;\n\nexport const SUBSTITUTION_EXPR_START = '{{';\nexport const SUBSTITUTION_EXPR_END = '}}';\nexport const ENTER_CLASSNAME = 'ng-enter';\nexport const LEAVE_CLASSNAME = 'ng-leave';\nexport const NG_TRIGGER_CLASSNAME = 'ng-trigger';\nexport const NG_TRIGGER_SELECTOR = '.ng-trigger';\nexport const NG_ANIMATING_CLASSNAME = 'ng-animating';\nexport const NG_ANIMATING_SELECTOR = '.ng-animating';\n\nexport function resolveTimingValue(value: string | number) {\n if (typeof value == 'number') return value;\n\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2) return 0;\n\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\n\nfunction _convertTimeValueToMS(value: number, unit: string): number {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\n\nexport function resolveTiming(\n timings: string | number | AnimateTimings,\n errors: Error[],\n allowNegativeValues?: boolean,\n) {\n return timings.hasOwnProperty('duration')\n ? <AnimateTimings>timings\n : parseTimeExpression(<string | number>timings, errors, allowNegativeValues);\n}\n\nconst PARSE_TIME_EXPRESSION_REGEX =\n /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\nfunction parseTimeExpression(\n exp: string | number,\n errors: Error[],\n allowNegativeValues?: boolean,\n): AnimateTimings {\n let duration: number;\n let delay: number = 0;\n let easing: string = '';\n if (typeof exp === 'string') {\n const matches = exp.match(PARSE_TIME_EXPRESSION_REGEX);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return {duration: 0, delay: 0, easing: ''};\n }\n\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n } else {\n duration = exp;\n }\n\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n\n return {duration, delay, easing};\n}\n\nexport function normalizeKeyframes(\n keyframes: Array<ɵStyleData> | Array<ɵStyleDataMap>,\n): Array<ɵStyleDataMap> {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes as Array<ɵStyleDataMap>;\n }\n return keyframes.map((kf) => new Map(Object.entries(kf)));\n}\n\nexport function normalizeStyles(styles: ɵStyleDataMap | Array<ɵStyleDataMap>): ɵStyleDataMap {\n return Array.isArray(styles) ? new Map(...styles) : new Map(styles);\n}\n\nexport function setStyles(element: any, styles: ɵStyleDataMap, formerStyles?: ɵStyleDataMap) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n}\n\nexport function eraseStyles(element: any, styles: ɵStyleDataMap) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n}\n\nexport function normalizeAnimationEntry(\n steps: AnimationMetadata | AnimationMetadata[],\n): AnimationMetadata {\n if (Array.isArray(steps)) {\n if (steps.length == 1) return steps[0];\n return sequence(steps);\n }\n return steps as AnimationMetadata;\n}\n\nexport function validateStyleParams(\n value: string | number | null | undefined,\n options: AnimationOptions,\n errors: Error[],\n) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach((varName) => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\n\nconst PARAM_REGEX = /* @__PURE__ */ new RegExp(\n `${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`,\n 'g',\n);\nexport function extractStyleParams(value: string | number | null | undefined): string[] {\n let params: string[] = [];\n if (typeof value === 'string') {\n let match: any;\n while ((match = PARAM_REGEX.exec(value))) {\n params.push(match[1] as string);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\n\nexport function interpolateParams(\n value: string | number,\n params: {[name: string]: any},\n errors: Error[],\n): string | number {\n const original = `${value}`;\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\n\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nexport function dashCaseToCamelCase(input: string): string {\n return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase());\n}\n\nexport function camelCaseToDashCase(input: string): string {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport function allowPreviousPlayerStylesMerge(duration: number, delay: number) {\n return duration === 0 || delay === 0;\n}\n\nexport function balancePreviousStylesIntoKeyframes(\n element: any,\n keyframes: Array<ɵStyleDataMap>,\n previousStyles: ɵStyleDataMap,\n) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps: string[] = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach((prop) => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\n\nexport function visitDslNode(\n visitor: AnimationDslVisitor,\n node: AnimationMetadata,\n context: any,\n): any;\nexport function visitDslNode(\n visitor: AnimationAstVisitor,\n node: AnimationAst<AnimationMetadataType>,\n context: any,\n): any;\nexport function visitDslNode(visitor: any, node: any, context: any): any {\n switch (node.type) {\n case AnimationMetadataType.Trigger:\n return visitor.visitTrigger(node, context);\n case AnimationMetadataType.State:\n return visitor.visitState(node, context);\n case AnimationMetadataType.Transition:\n return visitor.visitTransition(node, context);\n case AnimationMetadataType.Sequence:\n return visitor.visitSequence(node, context);\n case AnimationMetadataType.Group:\n return visitor.visitGroup(node, context);\n case AnimationMetadataType.Animate:\n return visitor.visitAnimate(node, context);\n case AnimationMetadataType.Keyframes:\n return visitor.visitKeyframes(node, context);\n case AnimationMetadataType.Style:\n return visitor.visitStyle(node, context);\n case AnimationMetadataType.Reference:\n return visitor.visitReference(node, context);\n case AnimationMetadataType.AnimateChild:\n return visitor.visitAnimateChild(node, context);\n case AnimationMetadataType.AnimateRef:\n return visitor.visitAnimateRef(node, context);\n case AnimationMetadataType.Query:\n return visitor.visitQuery(node, context);\n case AnimationMetadataType.Stagger:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\n\nexport function computeStyle(element: any, prop: string): string {\n return (<any>window.getComputedStyle(element))[prop];\n}\n"],"names":["LINE_START","invalidTimingValue","exp","RuntimeError","ngDevMode","negativeStepValue","negativeDelayValue","invalidStyleParams","varName","invalidParamValue","invalidNodeType","nodeType","invalidCssUnitValue","userProvidedProperty","value","invalidTrigger","invalidDefinition","invalidState","metadataName","missingSubs","join","invalidStyleValue","invalidParallelAnimation","prop","firstStart","firstEnd","secondStart","secondEnd","invalidKeyframes","invalidOffset","keyframeOffsetsOutOfOrder","keyframesMissingOffsets","invalidStagger","invalidQuery","selector","invalidExpression","expr","invalidTransitionAlias","alias","validationFailed","errors","map","err","message","buildingFailed","triggerBuildFailed","name","animationFailed","registerFailed","missingOrDestroyedAnimation","createAnimationFailed","missingPlayer","id","missingTrigger","phase","missingEvent","unsupportedTriggerEvent","unregisteredTrigger","triggerTransitionsFailed","transitionFailed","ANIMATABLE_PROP_SET","Set","optimizeGroupPlayer","players","length","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes","normalizer","keyframes","preStyles","Map","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","forEach","kf","offset","get","isSameOffset","normalizedKeyframe","val","normalizedProp","normalizedValue","normalizePropertyName","PRE_STYLE","AUTO_STYLE","normalizeStyleValue","set","push","listenOnPlayer","player","eventName","event","callback","onStart","copyAnimationEvent","onDone","onDestroy","e","phaseName","totalTime","disabled","makeAnimationEvent","element","triggerName","fromState","toState","undefined","data","getOrSetDefaultValue","key","defaultValue","parseTimelineCommand","command","separatorPos","indexOf","substring","action","slice","documentElement","document","getParentElement","parent","parentNode","host","containsVendorPrefix","_CACHED_BODY","_IS_WEBKIT","validateStyleProperty","getBodyNode","style","result","camelProp","charAt","toUpperCase","validateWebAnimatableStyleProperty","has","body","containsElement","elm1","elm2","invokeQuery","multi","Array","from","querySelectorAll","elem","querySelector","ONE_SECOND","SUBSTITUTION_EXPR_START","SUBSTITUTION_EXPR_END","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","matches","match","_convertTimeValueToMS","parseFloat","unit","resolveTiming","timings","allowNegativeValues","hasOwnProperty","parseTimeExpression","PARSE_TIME_EXPRESSION_REGEX","duration","delay","easing","delayMatch","easingVal","containsErrors","startIndex","splice","Object","entries","normalizeStyles","styles","isArray","setStyles","formerStyles","dashCaseToCamelCase","eraseStyles","_","normalizeAnimationEntry","steps","sequence","validateStyleParams","options","params","extractStyleParams","PARAM_REGEX","RegExp","exec","lastIndex","interpolateParams","original","str","replace","localVal","toString","DASH_CASE_REGEXP","input","m","camelCaseToDashCase","toLowerCase","allowPreviousPlayerStylesMerge","balancePreviousStylesIntoKeyframes","previousStyles","size","startingKeyframe","missingStyleProps","i","computeStyle","visitDslNode","visitor","node","context","type","AnimationMetadataType","Trigger","visitTrigger","State","visitState","Transition","visitTransition","Sequence","visitSequence","Group","visitGroup","Animate","visitAnimate","Keyframes","visitKeyframes","Style","visitStyle","Reference","visitReference","AnimateChild","visitAnimateChild","AnimateRef","visitAnimateRef","Query","visitQuery","Stagger","visitStagger","window","getComputedStyle"],"mappings":"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