@pacem/pacem-fx 1.0.4 → 1.0.5-bartels
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +1 -1
- package/dist/bundle/pacem-fx.min.mjs +1 -1
- package/dist/bundle/pacem-fx.mjs +1 -1
- package/dist/bundle/pacem-fx.mjs.map +1 -1
- package/dist/esm/fancy.js +1 -1
- package/dist/esm/gradient.js +1 -1
- package/dist/esm/hero.js +1 -1
- package/dist/esm/index-components-fx.js +1 -1
- package/dist/esm/index-components.js +3 -2
- package/dist/esm/index-iife.js +1 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/list.js +1 -1
- package/dist/esm/pulse.js +1 -1
- package/dist/esm/ripple.js +1 -1
- package/dist/esm/types.js +1 -1
- package/package.json +1 -1
- package/typings/index.d.ts +4 -4
package/dist/browser/pacem-fx.js
CHANGED
package/dist/bundle/pacem-fx.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../esm/index-components.js", "../esm/index-components-fx.js", "../esm/types.js", "../esm/ripple.js", "../esm/pulse.js", "../esm/hero.js", "../esm/list.js", "../esm/gradient.js", "../esm/fancy.js"],
|
|
4
|
-
"sourcesContent": ["export * as Fx from './index-components-fx';\n", "export * from './types';\nexport * from './ripple';\nexport * from './pulse';\nexport * from './hero';\nexport * from './list';\nexport * from './gradient';\nexport * from './fancy';\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, PropertyConverters, PacemEventTarget } from '@pacem/pacem-core';\n/** Base class for `fx` (visual-effect) custom elements: provides the `target` element the effect operates on. */\nexport class PacemFxElement extends PacemEventTarget {\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFxElement.prototype, \"target\", void 0);\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, ViewChild, Utils, PacemEventTarget } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst RIPPLE_CSS = \"ripple\";\n/** Produces a Material-style ripple wave, centered on the pointer, on the `target` element's `mousedown`/`touchstart`. */\nlet PacemFxRippleElement = class PacemFxRippleElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._lock = false;\n this._remove = false;\n this._rippleHandler = (e) => {\n if (this.disabled || (this.target instanceof PacemEventTarget && this.target.disabled)) {\n return;\n }\n if (e instanceof MouseEvent && e.button !== 0) {\n // only the 'main' (left) button click goes.\n return;\n }\n const rect = Utils.offset(this.target);\n const style = getComputedStyle(this.target);\n const css = this.style;\n css.top = rect.top + 'px';\n css.left = rect.left + 'px';\n css.width = rect.width + 'px';\n css.height = rect.height + 'px';\n css.borderRadius = style.borderRadius;\n const pointSrc = e.type === 'touchstart' ? e.touches[0] : e;\n const point = { x: pointSrc.pageX, y: pointSrc.pageY };\n const topLeft = { x: rect.left, y: rect.top }, topRight = { x: rect.left + rect.width, y: rect.top }, bottomLeft = { x: rect.left, y: rect.top + rect.height }, bottomRight = { x: topRight.x, y: bottomLeft.y };\n const radius = Math.max(Point.distance(point, topLeft), Point.distance(point, topRight), Point.distance(point, bottomRight), Point.distance(point, bottomLeft));\n const wave = this._wave;\n wave.style.left = (point.x - rect.left - radius) + 'px';\n wave.style.top = (point.y - rect.top - radius) + 'px';\n wave.style.width = wave.style.height = (2 * radius) + 'px';\n Utils.addAnimationEndCallback(wave, () => {\n this._lock = false;\n this._tryRemove();\n });\n this._lock = true;\n Utils.addClass(wave, 'ripple-go');\n };\n this._unrippleHandler = (e) => {\n this._remove = true;\n this._tryRemove();\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // target switch?\n if (name === 'target') {\n if (!Utils.isNull(old)) {\n this._reset(old);\n }\n if (!Utils.isNull(val)) {\n this._set(val);\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (!Utils.isNull(this.target))\n this._set();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.target))\n this._reset();\n super.disconnectedCallback();\n }\n _tryRemove() {\n if (!this._lock && this._remove) {\n this._remove = false;\n Utils.removeClass(this._wave, 'ripple-go');\n }\n }\n _set(val = this.target) {\n val.addEventListener('mousedown', this._rippleHandler, false);\n val.addEventListener('touchstart', this._rippleHandler, false);\n val.addEventListener('touchend', this._unrippleHandler, false);\n val.addEventListener('mouseup', this._unrippleHandler, false);\n val.addEventListener('mousemove', this._unrippleHandler, false);\n }\n _reset(old = this.target) {\n old.removeEventListener('mousedown', this._rippleHandler, false);\n old.removeEventListener('touchstart', this._rippleHandler, false);\n old.removeEventListener('touchend', this._unrippleHandler, false);\n old.removeEventListener('mouseup', this._unrippleHandler, false);\n old.removeEventListener('mousemove', this._unrippleHandler, false);\n }\n};\n__decorate([\n ViewChild('.' + RIPPLE_CSS)\n], PacemFxRippleElement.prototype, \"_wave\", void 0);\nPacemFxRippleElement = __decorate([\n CustomElement({\n tagName: P + '-fx-ripple', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${RIPPLE_CSS}\"></div>`\n })\n], PacemFxRippleElement);\nexport { PacemFxRippleElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, ViewChild, Utils, Components } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst PULSE_CSS = \"pulse\";\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction buildAnimationName(id) {\n return `${PCSS}-fx-pulse-${id}`;\n}\nfunction ensureCssAnimation(id, args, rx = '0', ry = rx) {\n const selector = 'style#' + id;\n const existing = document.querySelector(selector);\n if (Utils.isNull(existing)) {\n const newStyle = document.createElement('style');\n newStyle.id = id;\n document.head.appendChild(newStyle);\n }\n const css = document.querySelector(selector);\n const w = args.width, h = args.height, dim = Math.max(w, h), x = .5 * (dim - w), y = .5 * (dim - h);\n css.sheet.insertRule(`@keyframes ${buildAnimationName(id)} {\r\n 0%{\r\n opacity: .25; stroke-thickness: 0; rx: ${rx}; ry: ${ry}; x: ${x}px; y: ${y}px; width: ${args.width}px; height: ${args.height}px;\r\n }\r\n 50%{\r\n width: ${args.width}px; height: ${args.height}px; transform: scale(1); stroke-width: 10px; rx: ${rx}; ry: ${ry}; opacity: .333; x: ${x}px; y: ${y}px; width: ${w}px; height: ${h}px;\r\n }\r\n 80%{\r\n stroke-width: 10px;\r\n }\r\n 100%{\r\n opacity: 0; rx: 50%; ry: 50%; transform: scale(2); stroke-width: 0; width: ${dim}px; height: ${dim}px; x: 0; y: 0\r\n }\r\n}`, 0);\n for (let j = css.sheet.rules.length - 1; j > 0; j--) {\n css.sheet.deleteRule(j);\n }\n return css;\n}\n/** Overlays the `target` element with a pulsing (expanding, fading) outline, tracking its position and size. */\nlet PacemFxPulseElement = class PacemFxPulseElement extends PacemFxElement {\n constructor() {\n super();\n this._resizeHandler = (e) => {\n this._pulse(e.detail);\n };\n this.#key = Utils.uniqueCode();\n }\n #key;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._pulse();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._sheet)) {\n this._sheet.remove();\n this._sheet = null;\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled' && !first) {\n this._pulse();\n }\n }\n _pulse(size = this._resize.currentSize) {\n const inert = Utils.isNull(this.target) || Utils.isNull(size) || !(size.height > 0) || !(size.width > 0);\n this._resize.disabled = this.disabled;\n if (this.disabled || inert) {\n Utils.addClass(this, 'pulse-off');\n return;\n }\n Utils.removeClass(this, 'pulse-off');\n const rect = size;\n const style = getComputedStyle(this.target);\n const css = this.style;\n const dim = Math.max(rect.width, rect.height);\n css.width = dim + 'px';\n css.height = dim + 'px';\n css.top = (rect.top + .5 * (rect.height - dim)) + 'px';\n css.left = (rect.left + .5 * (rect.width - dim)) + 'px';\n const rect1 = this._rect1, rect2 = this._rect2;\n const css1 = rect1.style, css2 = rect2.style;\n this._sheet = ensureCssAnimation(this.#key, size, style.borderTopLeftRadius);\n const animationName = buildAnimationName(this.#key);\n css1.animation = css2.animation = `${animationName} both cubic-bezier(0.37, 0, 0.63, 1) 1.25s infinite`;\n css2.animationDelay = '.175s';\n }\n};\n__decorate([\n ViewChild(P + '-resize')\n], PacemFxPulseElement.prototype, \"_resize\", void 0);\n__decorate([\n ViewChild('svg')\n], PacemFxPulseElement.prototype, \"_svg\", void 0);\n__decorate([\n ViewChild('svg > rect[rect1]')\n], PacemFxPulseElement.prototype, \"_rect1\", void 0);\n__decorate([\n ViewChild('svg > rect[rect2]')\n], PacemFxPulseElement.prototype, \"_rect2\", void 0);\nPacemFxPulseElement = __decorate([\n CustomElement({\n tagName: P + '-fx-pulse', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-resize target=\"{{ :host.target }}\" watch-position=\"true\" on-${Components.ResizeEventName}=\":host._resizeHandler($event)\"></${P}-resize>\r\n<svg class=\"${PULSE_CSS}\" xmlns=\"${SVG_NS}\">\r\n <rect rect1 /><rect rect2 />\r\n</svg>`\n })\n], PacemFxPulseElement);\nexport { PacemFxPulseElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Utils } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst HERO_CSS = PCSS + \"-hero\";\nconst TRANSITION = 200;\nconst HEROING_IN = \"entering\";\nconst HEROING_OUT = \"exiting\";\nconst HERO_IN = \"entered\";\nconst HERO_OUT = \"exited\";\nconst rectOrElementConverter = {\n convert: attr => {\n if (attr.trim().startsWith('#'))\n return PropertyConverters.Element.convert(attr);\n return PropertyConverters.Json.convert(attr);\n }\n};\n/** Animates the `target` element (position and size) between a `from` and a `to` state, \"hero\"-transition style. */\nlet PacemFxHeroElement = class PacemFxHeroElement extends PacemFxElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // target switch?\n if (name === 'target' && !Utils.isNull(old)) {\n this._resetTarget(old);\n }\n // recompute back path (originalState)?\n if (name === 'from' && this.hero && !Utils.isNull(val)) {\n this._originalState = this._computeFromState();\n }\n // trigger\n if (name === 'hero' || name === 'target' || name === 'goal') {\n if (!Utils.isNull(this.target)) {\n if (this.hero) {\n this.start();\n }\n else {\n this.reset();\n }\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.hero && !Utils.isNull(this.target))\n this.start();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.target))\n this.reset();\n super.disconnectedCallback();\n }\n _computeFromState() {\n const tget = this.target, offset = Utils.offset(tget);\n if (this.from instanceof Element) {\n let from = Utils.offset(this.from);\n return { x: from.left, y: from.top, width: from.width, height: from.height };\n }\n else {\n return { x: offset.left, y: offset.top, width: offset.width, height: offset.height };\n }\n }\n _resetTarget(tget = this.target) {\n // reset inline style options\n const style = tget.style;\n // reset position/size\n style.top = style.left = style.height = style.width = '';\n for (let j = 0; j < style.length; j++) {\n let prop = style.item(j);\n style[prop] = '';\n }\n for (let prop in this._originalStyle) {\n style[prop] = this._originalStyle[prop];\n }\n Utils.removeClass(tget, HERO_CSS);\n }\n /** Reverts the `target` element back to its original (`from`) state and returns a promise resolved once the transition completes. */\n reset() {\n //\n if (Utils.isNull(this._originalState) || Utils.isNull(this._targetState)) {\n return;\n }\n this.dispatchEvent(new Event(HEROING_OUT));\n return this._animate(this._targetState, this._originalState).then(() => {\n this._resetTarget();\n this.dispatchEvent(new Event(HERO_OUT));\n });\n }\n /** Starts the hero transition to the `to` state and returns a promise resolved once it completes. */\n start() {\n if (!this.disabled && !Utils.isNull(this.target)) {\n let goal;\n if (this.to instanceof Element) {\n let to = Utils.offset(this.to);\n goal = { x: to.left, y: to.top, width: to.width, height: to.height };\n }\n else {\n goal = this.to;\n }\n const tget = this.target, wSize = Utils.windowSize, state = goal || { x: 0, y: 0, width: wSize.width, height: wSize.height }, style = tget.style;\n this._targetState = state;\n let start = this._originalState = this._computeFromState();\n // save inline style options\n this._originalStyle = {};\n for (let j = 0; j < style.length; j++) {\n let prop = style.item(j);\n this._originalStyle[prop] = style[prop];\n }\n //\n Utils.addClass(tget, HERO_CSS);\n this.dispatchEvent(new Event(HEROING_IN));\n return this._animate(start, state).then(() => {\n this.dispatchEvent(new Event(HERO_IN));\n });\n }\n // nothing to do\n return Promise.resolve();\n }\n _animate(from, to) {\n const tget = this.target, style = tget.style;\n // transformations to make target state look like original state\n // i.e. `target state` gets constrained to fit `original state`.\n const scaleX = from.width / to.width, scaleY = from.height / to.height, translateX = (from.x - to.x) + 'px', translateY = (from.y - to.y) + 'px';\n style.transformOrigin = '0 0';\n style.transition = 'none';\n // set final state\n style.transform = `translate(${translateX}, ${translateY}) scale(${scaleX}, ${scaleY})`;\n style.width = to.width + 'px';\n style.height = to.height + 'px';\n style.top = to.y + 'px';\n style.left = to.x + 'px';\n // hero-animate\n requestAnimationFrame(() => {\n let duration = this.duration || TRANSITION;\n style.transition = `transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${duration}ms, opacity ${duration}ms`;\n style.transform = `translate(0, 0) scale(1)`;\n });\n return Utils.waitForAnimationEnd(tget, TRANSITION + 10);\n // Utils.addAnimationEndCallback(tget, callback, TRANSITION + 10);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFxHeroElement.prototype, \"hero\", void 0);\n__decorate([\n Watch({ converter: rectOrElementConverter, emit: false })\n], PacemFxHeroElement.prototype, \"to\", void 0);\n__decorate([\n Watch({ converter: rectOrElementConverter, emit: false })\n], PacemFxHeroElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemFxHeroElement.prototype, \"duration\", void 0);\nPacemFxHeroElement = __decorate([\n CustomElement({ tagName: P + '-fx-hero' })\n], PacemFxHeroElement);\nexport { PacemFxHeroElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Utils } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst CSS_CLASS = PCSS + '-fx-list';\n/** Watches the `target` element's children and dispatches `itemadded`/`itemremoved` events as they are mutated, styling the target as an fx list. */\nlet PacemFxListElement = class PacemFxListElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._observed = (items) => {\n const children = Array.from(this.target.children);\n for (let item of items) {\n item.removedNodes.forEach(n => {\n if (n instanceof Element) {\n this.dispatchEvent(new CustomEvent('itemremoved', { detail: n }));\n }\n });\n item.addedNodes.forEach((n, j) => {\n if (n instanceof Element) {\n this.dispatchEvent(new CustomEvent('itemadded', { detail: { item: n, index: children.indexOf(n) } }));\n }\n });\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (!Utils.isNull(this.target)) {\n this._setup();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._observer)) {\n this._observer.disconnect();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n if (old) {\n this._reset(old);\n }\n else {\n this._setup();\n }\n }\n }\n _reset(el) {\n Utils.removeClass(el, CSS_CLASS);\n this._observer.disconnect();\n }\n _setup() {\n const target = this.target;\n Utils.addClass(target, CSS_CLASS);\n const obs = this._observer = new MutationObserver(this._observed);\n obs.observe(target, { childList: true });\n }\n};\nPacemFxListElement = __decorate([\n CustomElement({\n tagName: P + '-fx-list'\n })\n], PacemFxListElement);\nexport { PacemFxListElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Components, CustomElementUtils, Utils, Debounce } from '@pacem/pacem-core';\nimport { Size, Colors } from '@pacem/pacem-foundation';\n//namespace Pacem.Components.Fx {\nconst GradientChangeEventName = 'gradientchange';\nclass GradientChangeEvent extends Event {\n constructor() {\n super(GradientChangeEventName, { cancelable: false, bubbles: false });\n }\n}\nconst SizeOrNumberConverter = {\n convert: (attr, el) => {\n try {\n return Size.parse(attr);\n }\n catch {\n return PropertyConverters.Number.convert(attr, el);\n }\n }\n};\nfunction pctFormatter(v) {\n return Math.round(v * 1000) / 10 + '%';\n}\n/** A single color stop within a `PacemFxGradientItemElement` (radial or linear gradient). */\nlet PacemFxGradientStopElement = class PacemFxGradientStopElement extends Components.PacemItemElement {\n findContainer() {\n return CustomElementUtils.findAncestor(this, i => i instanceof PacemFxGradientItemElement);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && (name === 'offset' || name === 'color' || name === 'opacity' || name === 'disabled' || name === 'hide')) {\n this.dispatchEvent(new GradientChangeEvent());\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemFxGradientStopElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFxGradientStopElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemFxGradientStopElement.prototype, \"opacity\", void 0);\nPacemFxGradientStopElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient-stop' })\n], PacemFxGradientStopElement);\nexport { PacemFxGradientStopElement };\n/** Base class for gradient-shape elements (radial, linear, ...) hosting `PacemFxGradientStopElement` color stops and producing a CSS gradient string. */\nexport class PacemFxGradientItemElement extends Components.PacemCrossItemsContainerElement {\n constructor() {\n super(...arguments);\n this._dispatchGradientChangeHandler = (e) => {\n this._dispatchGradientChange();\n };\n }\n validate(item) {\n return item instanceof PacemFxGradientStopElement;\n }\n register(item) {\n const registered = super.register(item);\n if (registered) {\n item.addEventListener(GradientChangeEventName, this._dispatchGradientChangeHandler, false);\n }\n return registered;\n }\n unregister(item) {\n const unregistered = super.unregister(item);\n if (unregistered) {\n item.removeEventListener(GradientChangeEventName, this._dispatchGradientChangeHandler, false);\n }\n return unregistered;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && this.doesPropertyTriggerGradientChange(name)) {\n this._dispatchGradientChange();\n }\n }\n _dispatchGradientChange() {\n this.dispatchEvent(new GradientChangeEvent());\n }\n /** Builds the CSS color for a stop, applying the given opacity (if in the `0`-`1` range) on top of the base `color`. */\n buildColor(color, opacity) {\n if (opacity >= 0 && opacity <= 1) {\n const clr = Colors.parse(color);\n return Colors.stringify(Utils.extend(clr, { a: opacity }));\n }\n return color;\n }\n}\n/** Radial `<gradient>` shape, hosting one or more `PacemFxGradientStopElement` color stops. */\nlet PacemFxRadialGradientElement = class PacemFxRadialGradientElement extends PacemFxGradientItemElement {\n doesPropertyTriggerGradientChange(prop) {\n return ['shape', 'size', 'center', 'items', 'hide', 'disabled'].indexOf(prop) >= 0;\n }\n buildGradient() {\n const items = this.items;\n if (Utils.isNullOrEmpty(items)) {\n return '';\n }\n const shape = this.shape === 'circle' ? 'circle' : 'ellipse';\n const center = this.center ?? { x: .5, y: .5 };\n const size = this.size;\n let dim = '';\n if (!Utils.isNullOrEmpty(size)) {\n if (typeof size === 'number') {\n dim = `${size}px`;\n }\n else {\n dim = `${pctFormatter(size.width / 2)} ${pctFormatter(size.height / 2)}`;\n }\n }\n let stops = [];\n for (let { offset, color, hide, disabled, opacity } of items) {\n if (hide || disabled) {\n continue;\n }\n const clr = this.buildColor(color, opacity);\n stops.push(`${clr} ${pctFormatter(offset)}`);\n }\n return `radial-gradient(${shape} ${dim} at ${pctFormatter(center.x)} ${pctFormatter(center.y)} in oklab, ${stops.join(', ')})`;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFxRadialGradientElement.prototype, \"shape\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemFxRadialGradientElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: SizeOrNumberConverter })\n], PacemFxRadialGradientElement.prototype, \"size\", void 0);\nPacemFxRadialGradientElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient-radial' })\n], PacemFxRadialGradientElement);\nexport { PacemFxRadialGradientElement };\n/** Linear `<gradient>` shape, hosting one or more `PacemFxGradientStopElement` color stops. */\nlet PacemFxLinearGradientElement = class PacemFxLinearGradientElement extends PacemFxGradientItemElement {\n doesPropertyTriggerGradientChange(prop) {\n return ['angle', 'items', 'hide', 'disabled'].indexOf(prop) >= 0;\n }\n buildGradient() {\n const items = this.items;\n if (Utils.isNullOrEmpty(items)) {\n return '';\n }\n const angle = this.angle ?? 0;\n let stops = [];\n for (let { offset, color, hide, disabled, opacity } of items) {\n if (hide || disabled) {\n continue;\n }\n const clr = this.buildColor(color, opacity);\n stops.push(`${clr} ${pctFormatter(offset)}`);\n }\n return `linear-gradient(${angle}deg in oklab, ${stops.join(', ')})`;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemFxLinearGradientElement.prototype, \"angle\", void 0);\nPacemFxLinearGradientElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient-linear' })\n], PacemFxLinearGradientElement);\nexport { PacemFxLinearGradientElement };\n/** Applies a combined CSS gradient (built from its `PacemFxGradientItemElement` children) as the `target` element's background fill or text color. */\nlet PacemFxGradientElement = class PacemFxGradientElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._gradientChangeHandler = (e) => {\n this._buildGradient();\n };\n }\n validate(item) {\n return item instanceof PacemFxGradientItemElement;\n }\n register(item) {\n const registered = super.register(item);\n if (registered) {\n item.addEventListener(GradientChangeEventName, this._gradientChangeHandler, false);\n }\n return registered;\n }\n unregister(item) {\n const unregistered = super.unregister(item);\n if (unregistered) {\n item.removeEventListener(GradientChangeEventName, this._gradientChangeHandler, false);\n }\n return unregistered;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._buildGradient();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'target':\n if (old) {\n this._removeGradient(old);\n }\n case 'mode':\n case 'disabled':\n this._buildGradient();\n break;\n }\n }\n }\n _removeGradient(tget) {\n Utils.removeClass(tget, PCSS + '-fx-gradient-text');\n Utils.removeClass(tget, PCSS + '-fx-gradient-fill');\n tget.style.backgroundImage = '';\n }\n _buildGradient() {\n const tget = this.target;\n if (Utils.isNull(tget)) {\n return;\n }\n let gradients = '';\n const items = this.disabled ? [] : this.items ?? [];\n for (let item of items) {\n if (item.hide || item.disabled) {\n continue;\n }\n const gradient = item.buildGradient();\n if (Utils.isNullOrEmpty(gradient)) {\n continue;\n }\n gradients += gradient;\n if (!gradients.trim().endsWith(',')) {\n gradients += ',';\n }\n }\n if (!Utils.isNullOrEmpty(gradients)) {\n const t = PCSS + '-fx-gradient-text', f = PCSS + '-fx-gradient-fill';\n const ist = this.mode === 'text';\n Utils.removeClass(tget, ist ? f : t);\n Utils.addClass(tget, ist ? t : f);\n tget.style.backgroundImage = gradients.substring(0, gradients.length - 1);\n }\n else {\n this._removeGradient(tget);\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFxGradientElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFxGradientElement.prototype, \"mode\", void 0);\n__decorate([\n Debounce(true)\n], PacemFxGradientElement.prototype, \"_buildGradient\", null);\nPacemFxGradientElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient' })\n], PacemFxGradientElement);\nexport { PacemFxGradientElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Utils, PropertyChangeEvent } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst FANCY_CSS = PCSS + \"-fancy\";\nconst FANCIFY_CSS = PCSS + \"-fancify\";\nconst DEFAULT_GAP = 20;\n/** Reveals the `target` element's text content word by word, wrapping each word in an animated `<span>`. */\nlet PacemFxFancyElement = class PacemFxFancyElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._progress = .0;\n this._started = false;\n }\n /** @readonly Gets the current show progress, as a number between `0` and `1`. */\n get progress() {\n return this._progress;\n }\n /** @readonly Gets whether the fancify animation has (fully) started. */\n get started() {\n return this._started;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'fancify' || name === 'target') {\n if (!Utils.isNull(this.target)) {\n if (this.fancify) {\n this.start();\n }\n else {\n this._reset();\n }\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.fancify && !Utils.isNull(this.target))\n this.start();\n }\n disconnectedCallback() {\n cancelAnimationFrame(this._handle);\n clearTimeout(this._handle1);\n if (!Utils.isNull(this.target))\n this._reset();\n super.disconnectedCallback();\n }\n _reset() {\n Utils.removeClass(this.target, FANCY_CSS);\n if (this._started) {\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'started', oldValue: this._started, currentValue: this._started = false }));\n }\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'progress', oldValue: this._progress, currentValue: this._progress = 0 }));\n if (Utils.isNull(this._originalContent))\n this._originalContent = this.target.innerHTML;\n else\n this.target.innerHTML = this._originalContent;\n }\n _parse() {\n let n, a = [], walker = document.createTreeWalker(this.target, NodeFilter.SHOW_TEXT);\n while (n = walker.nextNode()) {\n if (n.textContent) {\n a.push(n);\n }\n }\n this._textNodes = a;\n }\n /** Starts (or restarts) the fancify effect on the `target` element. */\n start() {\n if (!this.disabled) {\n this._reset();\n this._parse();\n this._startShow();\n this._handle1 = setTimeout(() => {\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'started', oldValue: this._started, currentValue: this._started = true }));\n }, this.delay || 0);\n }\n }\n _startShow(ndx = 0) {\n Utils.addClass(this.target, FANCY_CSS);\n const trunks = this._textNodes, length = trunks.length;\n this._fancify(trunks[ndx]);\n const old = this._progress;\n ndx++;\n const curr = this._progress = ndx / length;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'progress', oldValue: old, currentValue: curr }));\n if (ndx < length) {\n this._handle = requestAnimationFrame(() => {\n this._startShow(ndx);\n });\n }\n }\n _fancify(node) {\n const content = node.textContent;\n if (Utils.isNullOrEmpty(content) || !/[^\\s]/.test(content)) {\n return;\n }\n const leftPad = /^\\s/.test(content), rightPad = /\\s$/.test(content);\n node.textContent = '';\n //\n const words = content.trim().split(' '), gap = this.gap || DEFAULT_GAP, delay = this.delay || 0;\n let j = 0;\n for (let word of words) {\n var span = document.createElement('span');\n span.className = FANCIFY_CSS;\n span.style.animationDelay = `${(delay + j * gap)}ms`;\n if (leftPad || j > 0)\n node.parentElement.insertBefore(document.createTextNode(' '), node);\n span.textContent = word;\n node.parentElement.insertBefore(span, node);\n j++;\n }\n //\n if (rightPad)\n node.parentElement.insertBefore(document.createTextNode(' '), node);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFxFancyElement.prototype, \"fancify\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemFxFancyElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemFxFancyElement.prototype, \"gap\", void 0);\nPacemFxFancyElement = __decorate([\n CustomElement({ tagName: P + '-fx-fancy' })\n], PacemFxFancyElement);\nexport { PacemFxFancyElement };\n"],
|
|
4
|
+
"sourcesContent": ["import * as Fx from './index-components-fx';\nexport { Fx };\n", "export * from './types';\nexport * from './ripple';\nexport * from './pulse';\nexport * from './hero';\nexport * from './list';\nexport * from './gradient';\nexport * from './fancy';\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, PropertyConverters, PacemEventTarget } from '@pacem/pacem-core';\n/** Base class for `fx` (visual-effect) custom elements: provides the `target` element the effect operates on. */\nexport class PacemFxElement extends PacemEventTarget {\n}\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFxElement.prototype, \"target\", void 0);\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, ViewChild, Utils, PacemEventTarget } from '@pacem/pacem-core';\nimport { Point } from '@pacem/pacem-foundation';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst RIPPLE_CSS = \"ripple\";\n/** Produces a Material-style ripple wave, centered on the pointer, on the `target` element's `mousedown`/`touchstart`. */\nlet PacemFxRippleElement = class PacemFxRippleElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._lock = false;\n this._remove = false;\n this._rippleHandler = (e) => {\n if (this.disabled || (this.target instanceof PacemEventTarget && this.target.disabled)) {\n return;\n }\n if (e instanceof MouseEvent && e.button !== 0) {\n // only the 'main' (left) button click goes.\n return;\n }\n const rect = Utils.offset(this.target);\n const style = getComputedStyle(this.target);\n const css = this.style;\n css.top = rect.top + 'px';\n css.left = rect.left + 'px';\n css.width = rect.width + 'px';\n css.height = rect.height + 'px';\n css.borderRadius = style.borderRadius;\n const pointSrc = e.type === 'touchstart' ? e.touches[0] : e;\n const point = { x: pointSrc.pageX, y: pointSrc.pageY };\n const topLeft = { x: rect.left, y: rect.top }, topRight = { x: rect.left + rect.width, y: rect.top }, bottomLeft = { x: rect.left, y: rect.top + rect.height }, bottomRight = { x: topRight.x, y: bottomLeft.y };\n const radius = Math.max(Point.distance(point, topLeft), Point.distance(point, topRight), Point.distance(point, bottomRight), Point.distance(point, bottomLeft));\n const wave = this._wave;\n wave.style.left = (point.x - rect.left - radius) + 'px';\n wave.style.top = (point.y - rect.top - radius) + 'px';\n wave.style.width = wave.style.height = (2 * radius) + 'px';\n Utils.addAnimationEndCallback(wave, () => {\n this._lock = false;\n this._tryRemove();\n });\n this._lock = true;\n Utils.addClass(wave, 'ripple-go');\n };\n this._unrippleHandler = (e) => {\n this._remove = true;\n this._tryRemove();\n };\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // target switch?\n if (name === 'target') {\n if (!Utils.isNull(old)) {\n this._reset(old);\n }\n if (!Utils.isNull(val)) {\n this._set(val);\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (!Utils.isNull(this.target))\n this._set();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.target))\n this._reset();\n super.disconnectedCallback();\n }\n _tryRemove() {\n if (!this._lock && this._remove) {\n this._remove = false;\n Utils.removeClass(this._wave, 'ripple-go');\n }\n }\n _set(val = this.target) {\n val.addEventListener('mousedown', this._rippleHandler, false);\n val.addEventListener('touchstart', this._rippleHandler, false);\n val.addEventListener('touchend', this._unrippleHandler, false);\n val.addEventListener('mouseup', this._unrippleHandler, false);\n val.addEventListener('mousemove', this._unrippleHandler, false);\n }\n _reset(old = this.target) {\n old.removeEventListener('mousedown', this._rippleHandler, false);\n old.removeEventListener('touchstart', this._rippleHandler, false);\n old.removeEventListener('touchend', this._unrippleHandler, false);\n old.removeEventListener('mouseup', this._unrippleHandler, false);\n old.removeEventListener('mousemove', this._unrippleHandler, false);\n }\n};\n__decorate([\n ViewChild('.' + RIPPLE_CSS)\n], PacemFxRippleElement.prototype, \"_wave\", void 0);\nPacemFxRippleElement = __decorate([\n CustomElement({\n tagName: P + '-fx-ripple', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<div class=\"${RIPPLE_CSS}\"></div>`\n })\n], PacemFxRippleElement);\nexport { PacemFxRippleElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, ViewChild, Utils, Components } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst PULSE_CSS = \"pulse\";\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction buildAnimationName(id) {\n return `${PCSS}-fx-pulse-${id}`;\n}\nfunction ensureCssAnimation(id, args, rx = '0', ry = rx) {\n const selector = 'style#' + id;\n const existing = document.querySelector(selector);\n if (Utils.isNull(existing)) {\n const newStyle = document.createElement('style');\n newStyle.id = id;\n document.head.appendChild(newStyle);\n }\n const css = document.querySelector(selector);\n const w = args.width, h = args.height, dim = Math.max(w, h), x = .5 * (dim - w), y = .5 * (dim - h);\n css.sheet.insertRule(`@keyframes ${buildAnimationName(id)} {\r\n 0%{\r\n opacity: .25; stroke-thickness: 0; rx: ${rx}; ry: ${ry}; x: ${x}px; y: ${y}px; width: ${args.width}px; height: ${args.height}px;\r\n }\r\n 50%{\r\n width: ${args.width}px; height: ${args.height}px; transform: scale(1); stroke-width: 10px; rx: ${rx}; ry: ${ry}; opacity: .333; x: ${x}px; y: ${y}px; width: ${w}px; height: ${h}px;\r\n }\r\n 80%{\r\n stroke-width: 10px;\r\n }\r\n 100%{\r\n opacity: 0; rx: 50%; ry: 50%; transform: scale(2); stroke-width: 0; width: ${dim}px; height: ${dim}px; x: 0; y: 0\r\n }\r\n}`, 0);\n for (let j = css.sheet.rules.length - 1; j > 0; j--) {\n css.sheet.deleteRule(j);\n }\n return css;\n}\n/** Overlays the `target` element with a pulsing (expanding, fading) outline, tracking its position and size. */\nlet PacemFxPulseElement = class PacemFxPulseElement extends PacemFxElement {\n constructor() {\n super();\n this._resizeHandler = (e) => {\n this._pulse(e.detail);\n };\n this.#key = Utils.uniqueCode();\n }\n #key;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._pulse();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._sheet)) {\n this._sheet.remove();\n this._sheet = null;\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'disabled' && !first) {\n this._pulse();\n }\n }\n _pulse(size = this._resize.currentSize) {\n const inert = Utils.isNull(this.target) || Utils.isNull(size) || !(size.height > 0) || !(size.width > 0);\n this._resize.disabled = this.disabled;\n if (this.disabled || inert) {\n Utils.addClass(this, 'pulse-off');\n return;\n }\n Utils.removeClass(this, 'pulse-off');\n const rect = size;\n const style = getComputedStyle(this.target);\n const css = this.style;\n const dim = Math.max(rect.width, rect.height);\n css.width = dim + 'px';\n css.height = dim + 'px';\n css.top = (rect.top + .5 * (rect.height - dim)) + 'px';\n css.left = (rect.left + .5 * (rect.width - dim)) + 'px';\n const rect1 = this._rect1, rect2 = this._rect2;\n const css1 = rect1.style, css2 = rect2.style;\n this._sheet = ensureCssAnimation(this.#key, size, style.borderTopLeftRadius);\n const animationName = buildAnimationName(this.#key);\n css1.animation = css2.animation = `${animationName} both cubic-bezier(0.37, 0, 0.63, 1) 1.25s infinite`;\n css2.animationDelay = '.175s';\n }\n};\n__decorate([\n ViewChild(P + '-resize')\n], PacemFxPulseElement.prototype, \"_resize\", void 0);\n__decorate([\n ViewChild('svg')\n], PacemFxPulseElement.prototype, \"_svg\", void 0);\n__decorate([\n ViewChild('svg > rect[rect1]')\n], PacemFxPulseElement.prototype, \"_rect1\", void 0);\n__decorate([\n ViewChild('svg > rect[rect2]')\n], PacemFxPulseElement.prototype, \"_rect2\", void 0);\nPacemFxPulseElement = __decorate([\n CustomElement({\n tagName: P + '-fx-pulse', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-resize target=\"{{ :host.target }}\" watch-position=\"true\" on-${Components.ResizeEventName}=\":host._resizeHandler($event)\"></${P}-resize>\r\n<svg class=\"${PULSE_CSS}\" xmlns=\"${SVG_NS}\">\r\n <rect rect1 /><rect rect2 />\r\n</svg>`\n })\n], PacemFxPulseElement);\nexport { PacemFxPulseElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Utils } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst HERO_CSS = PCSS + \"-hero\";\nconst TRANSITION = 200;\nconst HEROING_IN = \"entering\";\nconst HEROING_OUT = \"exiting\";\nconst HERO_IN = \"entered\";\nconst HERO_OUT = \"exited\";\nconst rectOrElementConverter = {\n convert: attr => {\n if (attr.trim().startsWith('#'))\n return PropertyConverters.Element.convert(attr);\n return PropertyConverters.Json.convert(attr);\n }\n};\n/** Animates the `target` element (position and size) between a `from` and a `to` state, \"hero\"-transition style. */\nlet PacemFxHeroElement = class PacemFxHeroElement extends PacemFxElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n // target switch?\n if (name === 'target' && !Utils.isNull(old)) {\n this._resetTarget(old);\n }\n // recompute back path (originalState)?\n if (name === 'from' && this.hero && !Utils.isNull(val)) {\n this._originalState = this._computeFromState();\n }\n // trigger\n if (name === 'hero' || name === 'target' || name === 'goal') {\n if (!Utils.isNull(this.target)) {\n if (this.hero) {\n this.start();\n }\n else {\n this.reset();\n }\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.hero && !Utils.isNull(this.target))\n this.start();\n }\n disconnectedCallback() {\n if (!Utils.isNull(this.target))\n this.reset();\n super.disconnectedCallback();\n }\n _computeFromState() {\n const tget = this.target, offset = Utils.offset(tget);\n if (this.from instanceof Element) {\n let from = Utils.offset(this.from);\n return { x: from.left, y: from.top, width: from.width, height: from.height };\n }\n else {\n return { x: offset.left, y: offset.top, width: offset.width, height: offset.height };\n }\n }\n _resetTarget(tget = this.target) {\n // reset inline style options\n const style = tget.style;\n // reset position/size\n style.top = style.left = style.height = style.width = '';\n for (let j = 0; j < style.length; j++) {\n let prop = style.item(j);\n style[prop] = '';\n }\n for (let prop in this._originalStyle) {\n style[prop] = this._originalStyle[prop];\n }\n Utils.removeClass(tget, HERO_CSS);\n }\n /** Reverts the `target` element back to its original (`from`) state and returns a promise resolved once the transition completes. */\n reset() {\n //\n if (Utils.isNull(this._originalState) || Utils.isNull(this._targetState)) {\n return;\n }\n this.dispatchEvent(new Event(HEROING_OUT));\n return this._animate(this._targetState, this._originalState).then(() => {\n this._resetTarget();\n this.dispatchEvent(new Event(HERO_OUT));\n });\n }\n /** Starts the hero transition to the `to` state and returns a promise resolved once it completes. */\n start() {\n if (!this.disabled && !Utils.isNull(this.target)) {\n let goal;\n if (this.to instanceof Element) {\n let to = Utils.offset(this.to);\n goal = { x: to.left, y: to.top, width: to.width, height: to.height };\n }\n else {\n goal = this.to;\n }\n const tget = this.target, wSize = Utils.windowSize, state = goal || { x: 0, y: 0, width: wSize.width, height: wSize.height }, style = tget.style;\n this._targetState = state;\n let start = this._originalState = this._computeFromState();\n // save inline style options\n this._originalStyle = {};\n for (let j = 0; j < style.length; j++) {\n let prop = style.item(j);\n this._originalStyle[prop] = style[prop];\n }\n //\n Utils.addClass(tget, HERO_CSS);\n this.dispatchEvent(new Event(HEROING_IN));\n return this._animate(start, state).then(() => {\n this.dispatchEvent(new Event(HERO_IN));\n });\n }\n // nothing to do\n return Promise.resolve();\n }\n _animate(from, to) {\n const tget = this.target, style = tget.style;\n // transformations to make target state look like original state\n // i.e. `target state` gets constrained to fit `original state`.\n const scaleX = from.width / to.width, scaleY = from.height / to.height, translateX = (from.x - to.x) + 'px', translateY = (from.y - to.y) + 'px';\n style.transformOrigin = '0 0';\n style.transition = 'none';\n // set final state\n style.transform = `translate(${translateX}, ${translateY}) scale(${scaleX}, ${scaleY})`;\n style.width = to.width + 'px';\n style.height = to.height + 'px';\n style.top = to.y + 'px';\n style.left = to.x + 'px';\n // hero-animate\n requestAnimationFrame(() => {\n let duration = this.duration || TRANSITION;\n style.transition = `transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${duration}ms, opacity ${duration}ms`;\n style.transform = `translate(0, 0) scale(1)`;\n });\n return Utils.waitForAnimationEnd(tget, TRANSITION + 10);\n // Utils.addAnimationEndCallback(tget, callback, TRANSITION + 10);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFxHeroElement.prototype, \"hero\", void 0);\n__decorate([\n Watch({ converter: rectOrElementConverter, emit: false })\n], PacemFxHeroElement.prototype, \"to\", void 0);\n__decorate([\n Watch({ converter: rectOrElementConverter, emit: false })\n], PacemFxHeroElement.prototype, \"from\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number, emit: false })\n], PacemFxHeroElement.prototype, \"duration\", void 0);\nPacemFxHeroElement = __decorate([\n CustomElement({ tagName: P + '-fx-hero' })\n], PacemFxHeroElement);\nexport { PacemFxHeroElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Utils } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst CSS_CLASS = PCSS + '-fx-list';\n/** Watches the `target` element's children and dispatches `itemadded`/`itemremoved` events as they are mutated, styling the target as an fx list. */\nlet PacemFxListElement = class PacemFxListElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._observed = (items) => {\n const children = Array.from(this.target.children);\n for (let item of items) {\n item.removedNodes.forEach(n => {\n if (n instanceof Element) {\n this.dispatchEvent(new CustomEvent('itemremoved', { detail: n }));\n }\n });\n item.addedNodes.forEach((n, j) => {\n if (n instanceof Element) {\n this.dispatchEvent(new CustomEvent('itemadded', { detail: { item: n, index: children.indexOf(n) } }));\n }\n });\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (!Utils.isNull(this.target)) {\n this._setup();\n }\n }\n disconnectedCallback() {\n if (!Utils.isNull(this._observer)) {\n this._observer.disconnect();\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'target') {\n if (old) {\n this._reset(old);\n }\n else {\n this._setup();\n }\n }\n }\n _reset(el) {\n Utils.removeClass(el, CSS_CLASS);\n this._observer.disconnect();\n }\n _setup() {\n const target = this.target;\n Utils.addClass(target, CSS_CLASS);\n const obs = this._observer = new MutationObserver(this._observed);\n obs.observe(target, { childList: true });\n }\n};\nPacemFxListElement = __decorate([\n CustomElement({\n tagName: P + '-fx-list'\n })\n], PacemFxListElement);\nexport { PacemFxListElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Components, CustomElementUtils, Utils, Debounce } from '@pacem/pacem-core';\nimport { Size, Colors } from '@pacem/pacem-foundation';\n//namespace Pacem.Components.Fx {\nconst GradientChangeEventName = 'gradientchange';\nclass GradientChangeEvent extends Event {\n constructor() {\n super(GradientChangeEventName, { cancelable: false, bubbles: false });\n }\n}\nconst SizeOrNumberConverter = {\n convert: (attr, el) => {\n try {\n return Size.parse(attr);\n }\n catch {\n return PropertyConverters.Number.convert(attr, el);\n }\n }\n};\nfunction pctFormatter(v) {\n return Math.round(v * 1000) / 10 + '%';\n}\n/** A single color stop within a `PacemFxGradientItemElement` (radial or linear gradient). */\nlet PacemFxGradientStopElement = class PacemFxGradientStopElement extends Components.PacemItemElement {\n findContainer() {\n return CustomElementUtils.findAncestor(this, i => i instanceof PacemFxGradientItemElement);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && (name === 'offset' || name === 'color' || name === 'opacity' || name === 'disabled' || name === 'hide')) {\n this.dispatchEvent(new GradientChangeEvent());\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemFxGradientStopElement.prototype, \"offset\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFxGradientStopElement.prototype, \"color\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemFxGradientStopElement.prototype, \"opacity\", void 0);\nPacemFxGradientStopElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient-stop' })\n], PacemFxGradientStopElement);\nexport { PacemFxGradientStopElement };\n/** Base class for gradient-shape elements (radial, linear, ...) hosting `PacemFxGradientStopElement` color stops and producing a CSS gradient string. */\nexport class PacemFxGradientItemElement extends Components.PacemCrossItemsContainerElement {\n constructor() {\n super(...arguments);\n this._dispatchGradientChangeHandler = (e) => {\n this._dispatchGradientChange();\n };\n }\n validate(item) {\n return item instanceof PacemFxGradientStopElement;\n }\n register(item) {\n const registered = super.register(item);\n if (registered) {\n item.addEventListener(GradientChangeEventName, this._dispatchGradientChangeHandler, false);\n }\n return registered;\n }\n unregister(item) {\n const unregistered = super.unregister(item);\n if (unregistered) {\n item.removeEventListener(GradientChangeEventName, this._dispatchGradientChangeHandler, false);\n }\n return unregistered;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && this.doesPropertyTriggerGradientChange(name)) {\n this._dispatchGradientChange();\n }\n }\n _dispatchGradientChange() {\n this.dispatchEvent(new GradientChangeEvent());\n }\n /** Builds the CSS color for a stop, applying the given opacity (if in the `0`-`1` range) on top of the base `color`. */\n buildColor(color, opacity) {\n if (opacity >= 0 && opacity <= 1) {\n const clr = Colors.parse(color);\n return Colors.stringify(Utils.extend(clr, { a: opacity }));\n }\n return color;\n }\n}\n/** Radial `<gradient>` shape, hosting one or more `PacemFxGradientStopElement` color stops. */\nlet PacemFxRadialGradientElement = class PacemFxRadialGradientElement extends PacemFxGradientItemElement {\n doesPropertyTriggerGradientChange(prop) {\n return ['shape', 'size', 'center', 'items', 'hide', 'disabled'].indexOf(prop) >= 0;\n }\n buildGradient() {\n const items = this.items;\n if (Utils.isNullOrEmpty(items)) {\n return '';\n }\n const shape = this.shape === 'circle' ? 'circle' : 'ellipse';\n const center = this.center ?? { x: .5, y: .5 };\n const size = this.size;\n let dim = '';\n if (!Utils.isNullOrEmpty(size)) {\n if (typeof size === 'number') {\n dim = `${size}px`;\n }\n else {\n dim = `${pctFormatter(size.width / 2)} ${pctFormatter(size.height / 2)}`;\n }\n }\n let stops = [];\n for (let { offset, color, hide, disabled, opacity } of items) {\n if (hide || disabled) {\n continue;\n }\n const clr = this.buildColor(color, opacity);\n stops.push(`${clr} ${pctFormatter(offset)}`);\n }\n return `radial-gradient(${shape} ${dim} at ${pctFormatter(center.x)} ${pctFormatter(center.y)} in oklab, ${stops.join(', ')})`;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemFxRadialGradientElement.prototype, \"shape\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Point })\n], PacemFxRadialGradientElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: SizeOrNumberConverter })\n], PacemFxRadialGradientElement.prototype, \"size\", void 0);\nPacemFxRadialGradientElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient-radial' })\n], PacemFxRadialGradientElement);\nexport { PacemFxRadialGradientElement };\n/** Linear `<gradient>` shape, hosting one or more `PacemFxGradientStopElement` color stops. */\nlet PacemFxLinearGradientElement = class PacemFxLinearGradientElement extends PacemFxGradientItemElement {\n doesPropertyTriggerGradientChange(prop) {\n return ['angle', 'items', 'hide', 'disabled'].indexOf(prop) >= 0;\n }\n buildGradient() {\n const items = this.items;\n if (Utils.isNullOrEmpty(items)) {\n return '';\n }\n const angle = this.angle ?? 0;\n let stops = [];\n for (let { offset, color, hide, disabled, opacity } of items) {\n if (hide || disabled) {\n continue;\n }\n const clr = this.buildColor(color, opacity);\n stops.push(`${clr} ${pctFormatter(offset)}`);\n }\n return `linear-gradient(${angle}deg in oklab, ${stops.join(', ')})`;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemFxLinearGradientElement.prototype, \"angle\", void 0);\nPacemFxLinearGradientElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient-linear' })\n], PacemFxLinearGradientElement);\nexport { PacemFxLinearGradientElement };\n/** Applies a combined CSS gradient (built from its `PacemFxGradientItemElement` children) as the `target` element's background fill or text color. */\nlet PacemFxGradientElement = class PacemFxGradientElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._gradientChangeHandler = (e) => {\n this._buildGradient();\n };\n }\n validate(item) {\n return item instanceof PacemFxGradientItemElement;\n }\n register(item) {\n const registered = super.register(item);\n if (registered) {\n item.addEventListener(GradientChangeEventName, this._gradientChangeHandler, false);\n }\n return registered;\n }\n unregister(item) {\n const unregistered = super.unregister(item);\n if (unregistered) {\n item.removeEventListener(GradientChangeEventName, this._gradientChangeHandler, false);\n }\n return unregistered;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._buildGradient();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'target':\n if (old) {\n this._removeGradient(old);\n }\n case 'mode':\n case 'disabled':\n this._buildGradient();\n break;\n }\n }\n }\n _removeGradient(tget) {\n Utils.removeClass(tget, PCSS + '-fx-gradient-text');\n Utils.removeClass(tget, PCSS + '-fx-gradient-fill');\n tget.style.backgroundImage = '';\n }\n _buildGradient() {\n const tget = this.target;\n if (Utils.isNull(tget)) {\n return;\n }\n let gradients = '';\n const items = this.disabled ? [] : this.items ?? [];\n for (let item of items) {\n if (item.hide || item.disabled) {\n continue;\n }\n const gradient = item.buildGradient();\n if (Utils.isNullOrEmpty(gradient)) {\n continue;\n }\n gradients += gradient;\n if (!gradients.trim().endsWith(',')) {\n gradients += ',';\n }\n }\n if (!Utils.isNullOrEmpty(gradients)) {\n const t = PCSS + '-fx-gradient-text', f = PCSS + '-fx-gradient-fill';\n const ist = this.mode === 'text';\n Utils.removeClass(tget, ist ? f : t);\n Utils.addClass(tget, ist ? t : f);\n tget.style.backgroundImage = gradients.substring(0, gradients.length - 1);\n }\n else {\n this._removeGradient(tget);\n }\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemFxGradientElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemFxGradientElement.prototype, \"mode\", void 0);\n__decorate([\n Debounce(true)\n], PacemFxGradientElement.prototype, \"_buildGradient\", null);\nPacemFxGradientElement = __decorate([\n CustomElement({ tagName: P + '-fx-gradient' })\n], PacemFxGradientElement);\nexport { PacemFxGradientElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Watch, PropertyConverters, P, PCSS, Utils, PropertyChangeEvent } from '@pacem/pacem-core';\nimport { PacemFxElement } from './types';\n//namespace Pacem.Components.Fx {\nconst FANCY_CSS = PCSS + \"-fancy\";\nconst FANCIFY_CSS = PCSS + \"-fancify\";\nconst DEFAULT_GAP = 20;\n/** Reveals the `target` element's text content word by word, wrapping each word in an animated `<span>`. */\nlet PacemFxFancyElement = class PacemFxFancyElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._progress = .0;\n this._started = false;\n }\n /** @readonly Gets the current show progress, as a number between `0` and `1`. */\n get progress() {\n return this._progress;\n }\n /** @readonly Gets whether the fancify animation has (fully) started. */\n get started() {\n return this._started;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'fancify' || name === 'target') {\n if (!Utils.isNull(this.target)) {\n if (this.fancify) {\n this.start();\n }\n else {\n this._reset();\n }\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n if (this.fancify && !Utils.isNull(this.target))\n this.start();\n }\n disconnectedCallback() {\n cancelAnimationFrame(this._handle);\n clearTimeout(this._handle1);\n if (!Utils.isNull(this.target))\n this._reset();\n super.disconnectedCallback();\n }\n _reset() {\n Utils.removeClass(this.target, FANCY_CSS);\n if (this._started) {\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'started', oldValue: this._started, currentValue: this._started = false }));\n }\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'progress', oldValue: this._progress, currentValue: this._progress = 0 }));\n if (Utils.isNull(this._originalContent))\n this._originalContent = this.target.innerHTML;\n else\n this.target.innerHTML = this._originalContent;\n }\n _parse() {\n let n, a = [], walker = document.createTreeWalker(this.target, NodeFilter.SHOW_TEXT);\n while (n = walker.nextNode()) {\n if (n.textContent) {\n a.push(n);\n }\n }\n this._textNodes = a;\n }\n /** Starts (or restarts) the fancify effect on the `target` element. */\n start() {\n if (!this.disabled) {\n this._reset();\n this._parse();\n this._startShow();\n this._handle1 = setTimeout(() => {\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'started', oldValue: this._started, currentValue: this._started = true }));\n }, this.delay || 0);\n }\n }\n _startShow(ndx = 0) {\n Utils.addClass(this.target, FANCY_CSS);\n const trunks = this._textNodes, length = trunks.length;\n this._fancify(trunks[ndx]);\n const old = this._progress;\n ndx++;\n const curr = this._progress = ndx / length;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'progress', oldValue: old, currentValue: curr }));\n if (ndx < length) {\n this._handle = requestAnimationFrame(() => {\n this._startShow(ndx);\n });\n }\n }\n _fancify(node) {\n const content = node.textContent;\n if (Utils.isNullOrEmpty(content) || !/[^\\s]/.test(content)) {\n return;\n }\n const leftPad = /^\\s/.test(content), rightPad = /\\s$/.test(content);\n node.textContent = '';\n //\n const words = content.trim().split(' '), gap = this.gap || DEFAULT_GAP, delay = this.delay || 0;\n let j = 0;\n for (let word of words) {\n var span = document.createElement('span');\n span.className = FANCIFY_CSS;\n span.style.animationDelay = `${(delay + j * gap)}ms`;\n if (leftPad || j > 0)\n node.parentElement.insertBefore(document.createTextNode(' '), node);\n span.textContent = word;\n node.parentElement.insertBefore(span, node);\n j++;\n }\n //\n if (rightPad)\n node.parentElement.insertBefore(document.createTextNode(' '), node);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemFxFancyElement.prototype, \"fancify\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemFxFancyElement.prototype, \"delay\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemFxFancyElement.prototype, \"gap\", void 0);\nPacemFxFancyElement = __decorate([\n CustomElement({ tagName: P + '-fx-fancy' })\n], PacemFxFancyElement);\nexport { PacemFxFancyElement };\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["PacemEventTarget", "__decorate", "PacemFxRippleElement", "PacemEventTarget", "CustomElement", "Defaults", "P", "ViewChild", "Utils", "__decorate", "Utils", "PacemFxPulseElement", "ViewChild", "P", "CustomElement", "Defaults", "CustomElement", "Watch", "PropertyConverters", "P", "PCSS", "Utils", "__decorate", "PCSS", "PropertyConverters", "PacemFxHeroElement", "Utils", "Watch", "CustomElement", "P", "CustomElement", "P", "PCSS", "Utils", "__decorate", "PCSS", "PacemFxListElement", "Utils", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "PCSS", "Components", "Utils", "__decorate", "PacemFxGradientStopElement", "Components", "Utils", "PacemFxRadialGradientElement", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P", "PacemFxLinearGradientElement", "Utils", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P", "PacemFxGradientElement", "Components", "Utils", "PCSS", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P", "CustomElement", "Watch", "PropertyConverters", "P", "PCSS", "Utils", "__decorate", "PCSS", "PacemFxFancyElement", "Utils", "Watch", "PropertyConverters", "CustomElement", "P"]
|
|
7
7
|
}
|
package/dist/esm/fancy.js
CHANGED
package/dist/esm/gradient.js
CHANGED
package/dist/esm/hero.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pacem/pacem-fx v1.0.
|
|
2
|
+
* @pacem/pacem-fx v1.0.5-bartels (https://js.pacem.it)
|
|
3
3
|
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
import * as Fx from './index-components-fx';
|
|
7
|
+
export { Fx };
|
package/dist/esm/index-iife.js
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pacem/pacem-fx v1.0.
|
|
2
|
+
* @pacem/pacem-fx v1.0.5-bartels (https://js.pacem.it)
|
|
3
3
|
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
import * as Components from './index-components';
|
|
7
|
+
export { Components };
|
package/dist/esm/list.js
CHANGED
package/dist/esm/pulse.js
CHANGED
package/dist/esm/ripple.js
CHANGED
package/dist/esm/types.js
CHANGED
package/package.json
CHANGED
package/typings/index.d.ts
CHANGED
|
@@ -4,13 +4,14 @@ import { Point } from '@pacem/pacem-foundation';
|
|
|
4
4
|
import { Rect } from '@pacem/pacem-foundation';
|
|
5
5
|
import { Size } from '@pacem/pacem-foundation';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
declare namespace Components {
|
|
8
8
|
export {
|
|
9
9
|
Fx
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
export { Components }
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
declare namespace Fx {
|
|
14
15
|
export {
|
|
15
16
|
PacemFx,
|
|
16
17
|
PacemFxElement,
|
|
@@ -203,8 +204,7 @@ declare class PacemFxRippleElement extends PacemFxElement {
|
|
|
203
204
|
declare global {
|
|
204
205
|
namespace Pacem {
|
|
205
206
|
export {
|
|
206
|
-
Components
|
|
207
|
-
Fx
|
|
207
|
+
Components
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
210
|
}
|