@pacem/pacem-fx 1.0.0-abel
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/LICENSE +191 -0
- package/NOTICE +4 -0
- package/dist/browser/pacem-fx.js +865 -0
- package/dist/browser/pacem-fx.js.map +1 -0
- package/dist/browser/pacem-fx.min.js +2 -0
- package/dist/browser/pacem-fx.min.js.map +1 -0
- package/dist/bundle/pacem-fx.min.mjs +17 -0
- package/dist/bundle/pacem-fx.mjs +850 -0
- package/dist/bundle/pacem-fx.mjs.map +7 -0
- package/dist/esm/fancy.js +131 -0
- package/dist/esm/gradient.js +259 -0
- package/dist/esm/hero.js +158 -0
- package/dist/esm/index-components-fx.js +7 -0
- package/dist/esm/index-components.js +1 -0
- package/dist/esm/index-iife.js +3 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/list.js +69 -0
- package/dist/esm/pulse.js +115 -0
- package/dist/esm/ripple.js +105 -0
- package/dist/esm/types.js +12 -0
- package/package.json +38 -0
- package/typings/index.d.ts +177 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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';\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\";\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)} {\n 0%{\n opacity: .25; stroke-thickness: 0; rx: ${rx}; ry: ${ry}; x: ${x}px; y: ${y}px; width: ${args.width}px; height: ${args.height}px;\n }\n 50%{\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;\n }\n 80%{\n stroke-width: 10px;\n }\n 100%{\n opacity: 0; rx: 50%; ry: 50%; transform: scale(2); stroke-width: 0; width: ${dim}px; height: ${dim}px; x: 0; y: 0\n }\n}`, 0);\n for (let j = css.sheet.rules.length - 1; j > 0; j--) {\n css.sheet.deleteRule(j);\n }\n return css;\n}\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>\n<svg class=\"${PULSE_CSS}\" xmlns=\"${SVG_NS}\">\n <rect rect1 /><rect rect2 />\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};\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 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 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';\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}\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 };\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 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}\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 };\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 };\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;\nlet PacemFxFancyElement = class PacemFxFancyElement extends PacemFxElement {\n constructor() {\n super(...arguments);\n this._progress = .0;\n this._started = false;\n }\n get progress() {\n return this._progress;\n }\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 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
|
+
"mappings": "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",
|
|
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
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { CustomElement, Watch, PropertyConverters, P, PCSS, Utils, PropertyChangeEvent } from '@pacem/pacem-core';
|
|
8
|
+
import { PacemFxElement } from './types';
|
|
9
|
+
//namespace Pacem.Components.Fx {
|
|
10
|
+
const FANCY_CSS = PCSS + "-fancy";
|
|
11
|
+
const FANCIFY_CSS = PCSS + "-fancify";
|
|
12
|
+
const DEFAULT_GAP = 20;
|
|
13
|
+
let PacemFxFancyElement = class PacemFxFancyElement extends PacemFxElement {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this._progress = .0;
|
|
17
|
+
this._started = false;
|
|
18
|
+
}
|
|
19
|
+
get progress() {
|
|
20
|
+
return this._progress;
|
|
21
|
+
}
|
|
22
|
+
get started() {
|
|
23
|
+
return this._started;
|
|
24
|
+
}
|
|
25
|
+
propertyChangedCallback(name, old, val, first) {
|
|
26
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
27
|
+
if (name === 'fancify' || name === 'target') {
|
|
28
|
+
if (!Utils.isNull(this.target)) {
|
|
29
|
+
if (this.fancify) {
|
|
30
|
+
this.start();
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this._reset();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
viewActivatedCallback() {
|
|
39
|
+
super.viewActivatedCallback();
|
|
40
|
+
if (this.fancify && !Utils.isNull(this.target))
|
|
41
|
+
this.start();
|
|
42
|
+
}
|
|
43
|
+
disconnectedCallback() {
|
|
44
|
+
cancelAnimationFrame(this._handle);
|
|
45
|
+
clearTimeout(this._handle1);
|
|
46
|
+
if (!Utils.isNull(this.target))
|
|
47
|
+
this._reset();
|
|
48
|
+
super.disconnectedCallback();
|
|
49
|
+
}
|
|
50
|
+
_reset() {
|
|
51
|
+
Utils.removeClass(this.target, FANCY_CSS);
|
|
52
|
+
if (this._started) {
|
|
53
|
+
this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'started', oldValue: this._started, currentValue: this._started = false }));
|
|
54
|
+
}
|
|
55
|
+
this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'progress', oldValue: this._progress, currentValue: this._progress = 0 }));
|
|
56
|
+
if (Utils.isNull(this._originalContent))
|
|
57
|
+
this._originalContent = this.target.innerHTML;
|
|
58
|
+
else
|
|
59
|
+
this.target.innerHTML = this._originalContent;
|
|
60
|
+
}
|
|
61
|
+
_parse() {
|
|
62
|
+
let n, a = [], walker = document.createTreeWalker(this.target, NodeFilter.SHOW_TEXT);
|
|
63
|
+
while (n = walker.nextNode()) {
|
|
64
|
+
if (n.textContent) {
|
|
65
|
+
a.push(n);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this._textNodes = a;
|
|
69
|
+
}
|
|
70
|
+
start() {
|
|
71
|
+
if (!this.disabled) {
|
|
72
|
+
this._reset();
|
|
73
|
+
this._parse();
|
|
74
|
+
this._startShow();
|
|
75
|
+
this._handle1 = setTimeout(() => {
|
|
76
|
+
this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'started', oldValue: this._started, currentValue: this._started = true }));
|
|
77
|
+
}, this.delay || 0);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
_startShow(ndx = 0) {
|
|
81
|
+
Utils.addClass(this.target, FANCY_CSS);
|
|
82
|
+
const trunks = this._textNodes, length = trunks.length;
|
|
83
|
+
this._fancify(trunks[ndx]);
|
|
84
|
+
const old = this._progress;
|
|
85
|
+
ndx++;
|
|
86
|
+
const curr = this._progress = ndx / length;
|
|
87
|
+
this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'progress', oldValue: old, currentValue: curr }));
|
|
88
|
+
if (ndx < length) {
|
|
89
|
+
this._handle = requestAnimationFrame(() => {
|
|
90
|
+
this._startShow(ndx);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_fancify(node) {
|
|
95
|
+
const content = node.textContent;
|
|
96
|
+
if (Utils.isNullOrEmpty(content) || !/[^\s]/.test(content)) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const leftPad = /^\s/.test(content), rightPad = /\s$/.test(content);
|
|
100
|
+
node.textContent = '';
|
|
101
|
+
//
|
|
102
|
+
const words = content.trim().split(' '), gap = this.gap || DEFAULT_GAP, delay = this.delay || 0;
|
|
103
|
+
let j = 0;
|
|
104
|
+
for (let word of words) {
|
|
105
|
+
var span = document.createElement('span');
|
|
106
|
+
span.className = FANCIFY_CSS;
|
|
107
|
+
span.style.animationDelay = `${(delay + j * gap)}ms`;
|
|
108
|
+
if (leftPad || j > 0)
|
|
109
|
+
node.parentElement.insertBefore(document.createTextNode(' '), node);
|
|
110
|
+
span.textContent = word;
|
|
111
|
+
node.parentElement.insertBefore(span, node);
|
|
112
|
+
j++;
|
|
113
|
+
}
|
|
114
|
+
//
|
|
115
|
+
if (rightPad)
|
|
116
|
+
node.parentElement.insertBefore(document.createTextNode(' '), node);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
__decorate([
|
|
120
|
+
Watch({ converter: PropertyConverters.Boolean })
|
|
121
|
+
], PacemFxFancyElement.prototype, "fancify", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
Watch({ converter: PropertyConverters.Number })
|
|
124
|
+
], PacemFxFancyElement.prototype, "delay", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
Watch({ converter: PropertyConverters.Number })
|
|
127
|
+
], PacemFxFancyElement.prototype, "gap", void 0);
|
|
128
|
+
PacemFxFancyElement = __decorate([
|
|
129
|
+
CustomElement({ tagName: P + '-fx-fancy' })
|
|
130
|
+
], PacemFxFancyElement);
|
|
131
|
+
export { PacemFxFancyElement };
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { CustomElement, Watch, PropertyConverters, P, PCSS, Components, CustomElementUtils, Utils, Debounce } from '@pacem/pacem-core';
|
|
8
|
+
import { Size, Colors } from '@pacem/pacem-foundation';
|
|
9
|
+
//namespace Pacem.Components.Fx {
|
|
10
|
+
const GradientChangeEventName = 'gradientchange';
|
|
11
|
+
class GradientChangeEvent extends Event {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(GradientChangeEventName, { cancelable: false, bubbles: false });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const SizeOrNumberConverter = {
|
|
17
|
+
convert: (attr, el) => {
|
|
18
|
+
try {
|
|
19
|
+
return Size.parse(attr);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return PropertyConverters.Number.convert(attr, el);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
function pctFormatter(v) {
|
|
27
|
+
return Math.round(v * 1000) / 10 + '%';
|
|
28
|
+
}
|
|
29
|
+
let PacemFxGradientStopElement = class PacemFxGradientStopElement extends Components.PacemItemElement {
|
|
30
|
+
findContainer() {
|
|
31
|
+
return CustomElementUtils.findAncestor(this, i => i instanceof PacemFxGradientItemElement);
|
|
32
|
+
}
|
|
33
|
+
propertyChangedCallback(name, old, val, first) {
|
|
34
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
35
|
+
if (!first && (name === 'offset' || name === 'color' || name === 'opacity' || name === 'disabled' || name === 'hide')) {
|
|
36
|
+
this.dispatchEvent(new GradientChangeEvent());
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
__decorate([
|
|
41
|
+
Watch({ emit: false, converter: PropertyConverters.Number })
|
|
42
|
+
], PacemFxGradientStopElement.prototype, "offset", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
Watch({ emit: false, converter: PropertyConverters.String })
|
|
45
|
+
], PacemFxGradientStopElement.prototype, "color", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
Watch({ emit: false, converter: PropertyConverters.Number })
|
|
48
|
+
], PacemFxGradientStopElement.prototype, "opacity", void 0);
|
|
49
|
+
PacemFxGradientStopElement = __decorate([
|
|
50
|
+
CustomElement({ tagName: P + '-fx-gradient-stop' })
|
|
51
|
+
], PacemFxGradientStopElement);
|
|
52
|
+
export { PacemFxGradientStopElement };
|
|
53
|
+
export class PacemFxGradientItemElement extends Components.PacemCrossItemsContainerElement {
|
|
54
|
+
constructor() {
|
|
55
|
+
super(...arguments);
|
|
56
|
+
this._dispatchGradientChangeHandler = (e) => {
|
|
57
|
+
this._dispatchGradientChange();
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
validate(item) {
|
|
61
|
+
return item instanceof PacemFxGradientStopElement;
|
|
62
|
+
}
|
|
63
|
+
register(item) {
|
|
64
|
+
const registered = super.register(item);
|
|
65
|
+
if (registered) {
|
|
66
|
+
item.addEventListener(GradientChangeEventName, this._dispatchGradientChangeHandler, false);
|
|
67
|
+
}
|
|
68
|
+
return registered;
|
|
69
|
+
}
|
|
70
|
+
unregister(item) {
|
|
71
|
+
const unregistered = super.unregister(item);
|
|
72
|
+
if (unregistered) {
|
|
73
|
+
item.removeEventListener(GradientChangeEventName, this._dispatchGradientChangeHandler, false);
|
|
74
|
+
}
|
|
75
|
+
return unregistered;
|
|
76
|
+
}
|
|
77
|
+
propertyChangedCallback(name, old, val, first) {
|
|
78
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
79
|
+
if (!first && this.doesPropertyTriggerGradientChange(name)) {
|
|
80
|
+
this._dispatchGradientChange();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_dispatchGradientChange() {
|
|
84
|
+
this.dispatchEvent(new GradientChangeEvent());
|
|
85
|
+
}
|
|
86
|
+
buildColor(color, opacity) {
|
|
87
|
+
if (opacity >= 0 && opacity <= 1) {
|
|
88
|
+
const clr = Colors.parse(color);
|
|
89
|
+
return Colors.stringify(Utils.extend(clr, { a: opacity }));
|
|
90
|
+
}
|
|
91
|
+
return color;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
let PacemFxRadialGradientElement = class PacemFxRadialGradientElement extends PacemFxGradientItemElement {
|
|
95
|
+
doesPropertyTriggerGradientChange(prop) {
|
|
96
|
+
return ['shape', 'size', 'center', 'items', 'hide', 'disabled'].indexOf(prop) >= 0;
|
|
97
|
+
}
|
|
98
|
+
buildGradient() {
|
|
99
|
+
const items = this.items;
|
|
100
|
+
if (Utils.isNullOrEmpty(items)) {
|
|
101
|
+
return '';
|
|
102
|
+
}
|
|
103
|
+
const shape = this.shape === 'circle' ? 'circle' : 'ellipse';
|
|
104
|
+
const center = this.center ?? { x: .5, y: .5 };
|
|
105
|
+
const size = this.size;
|
|
106
|
+
let dim = '';
|
|
107
|
+
if (!Utils.isNullOrEmpty(size)) {
|
|
108
|
+
if (typeof size === 'number') {
|
|
109
|
+
dim = `${size}px`;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
dim = `${pctFormatter(size.width / 2)} ${pctFormatter(size.height / 2)}`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
let stops = [];
|
|
116
|
+
for (let { offset, color, hide, disabled, opacity } of items) {
|
|
117
|
+
if (hide || disabled) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const clr = this.buildColor(color, opacity);
|
|
121
|
+
stops.push(`${clr} ${pctFormatter(offset)}`);
|
|
122
|
+
}
|
|
123
|
+
return `radial-gradient(${shape} ${dim} at ${pctFormatter(center.x)} ${pctFormatter(center.y)} in oklab, ${stops.join(', ')})`;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
__decorate([
|
|
127
|
+
Watch({ emit: false, converter: PropertyConverters.String })
|
|
128
|
+
], PacemFxRadialGradientElement.prototype, "shape", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
Watch({ emit: false, converter: PropertyConverters.Point })
|
|
131
|
+
], PacemFxRadialGradientElement.prototype, "center", void 0);
|
|
132
|
+
__decorate([
|
|
133
|
+
Watch({ emit: false, converter: SizeOrNumberConverter })
|
|
134
|
+
], PacemFxRadialGradientElement.prototype, "size", void 0);
|
|
135
|
+
PacemFxRadialGradientElement = __decorate([
|
|
136
|
+
CustomElement({ tagName: P + '-fx-gradient-radial' })
|
|
137
|
+
], PacemFxRadialGradientElement);
|
|
138
|
+
export { PacemFxRadialGradientElement };
|
|
139
|
+
let PacemFxLinearGradientElement = class PacemFxLinearGradientElement extends PacemFxGradientItemElement {
|
|
140
|
+
doesPropertyTriggerGradientChange(prop) {
|
|
141
|
+
return ['angle', 'items', 'hide', 'disabled'].indexOf(prop) >= 0;
|
|
142
|
+
}
|
|
143
|
+
buildGradient() {
|
|
144
|
+
const items = this.items;
|
|
145
|
+
if (Utils.isNullOrEmpty(items)) {
|
|
146
|
+
return '';
|
|
147
|
+
}
|
|
148
|
+
const angle = this.angle ?? 0;
|
|
149
|
+
let stops = [];
|
|
150
|
+
for (let { offset, color, hide, disabled, opacity } of items) {
|
|
151
|
+
if (hide || disabled) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const clr = this.buildColor(color, opacity);
|
|
155
|
+
stops.push(`${clr} ${pctFormatter(offset)}`);
|
|
156
|
+
}
|
|
157
|
+
return `linear-gradient(${angle}deg in oklab, ${stops.join(', ')})`;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
__decorate([
|
|
161
|
+
Watch({ emit: false, converter: PropertyConverters.Number })
|
|
162
|
+
], PacemFxLinearGradientElement.prototype, "angle", void 0);
|
|
163
|
+
PacemFxLinearGradientElement = __decorate([
|
|
164
|
+
CustomElement({ tagName: P + '-fx-gradient-linear' })
|
|
165
|
+
], PacemFxLinearGradientElement);
|
|
166
|
+
export { PacemFxLinearGradientElement };
|
|
167
|
+
let PacemFxGradientElement = class PacemFxGradientElement extends Components.PacemItemsContainerElement {
|
|
168
|
+
constructor() {
|
|
169
|
+
super(...arguments);
|
|
170
|
+
this._gradientChangeHandler = (e) => {
|
|
171
|
+
this._buildGradient();
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
validate(item) {
|
|
175
|
+
return item instanceof PacemFxGradientItemElement;
|
|
176
|
+
}
|
|
177
|
+
register(item) {
|
|
178
|
+
const registered = super.register(item);
|
|
179
|
+
if (registered) {
|
|
180
|
+
item.addEventListener(GradientChangeEventName, this._gradientChangeHandler, false);
|
|
181
|
+
}
|
|
182
|
+
return registered;
|
|
183
|
+
}
|
|
184
|
+
unregister(item) {
|
|
185
|
+
const unregistered = super.unregister(item);
|
|
186
|
+
if (unregistered) {
|
|
187
|
+
item.removeEventListener(GradientChangeEventName, this._gradientChangeHandler, false);
|
|
188
|
+
}
|
|
189
|
+
return unregistered;
|
|
190
|
+
}
|
|
191
|
+
viewActivatedCallback() {
|
|
192
|
+
super.viewActivatedCallback();
|
|
193
|
+
this._buildGradient();
|
|
194
|
+
}
|
|
195
|
+
propertyChangedCallback(name, old, val, first) {
|
|
196
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
197
|
+
if (!first) {
|
|
198
|
+
switch (name) {
|
|
199
|
+
case 'target':
|
|
200
|
+
if (old) {
|
|
201
|
+
this._removeGradient(old);
|
|
202
|
+
}
|
|
203
|
+
case 'mode':
|
|
204
|
+
case 'disabled':
|
|
205
|
+
this._buildGradient();
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
_removeGradient(tget) {
|
|
211
|
+
Utils.removeClass(tget, PCSS + '-fx-gradient-text');
|
|
212
|
+
Utils.removeClass(tget, PCSS + '-fx-gradient-fill');
|
|
213
|
+
tget.style.backgroundImage = '';
|
|
214
|
+
}
|
|
215
|
+
_buildGradient() {
|
|
216
|
+
const tget = this.target;
|
|
217
|
+
if (Utils.isNull(tget)) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
let gradients = '';
|
|
221
|
+
const items = this.disabled ? [] : this.items ?? [];
|
|
222
|
+
for (let item of items) {
|
|
223
|
+
if (item.hide || item.disabled) {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
const gradient = item.buildGradient();
|
|
227
|
+
if (Utils.isNullOrEmpty(gradient)) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
gradients += gradient;
|
|
231
|
+
if (!gradients.trim().endsWith(',')) {
|
|
232
|
+
gradients += ',';
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (!Utils.isNullOrEmpty(gradients)) {
|
|
236
|
+
const t = PCSS + '-fx-gradient-text', f = PCSS + '-fx-gradient-fill';
|
|
237
|
+
const ist = this.mode === 'text';
|
|
238
|
+
Utils.removeClass(tget, ist ? f : t);
|
|
239
|
+
Utils.addClass(tget, ist ? t : f);
|
|
240
|
+
tget.style.backgroundImage = gradients.substring(0, gradients.length - 1);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
this._removeGradient(tget);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
__decorate([
|
|
248
|
+
Watch({ converter: PropertyConverters.Element })
|
|
249
|
+
], PacemFxGradientElement.prototype, "target", void 0);
|
|
250
|
+
__decorate([
|
|
251
|
+
Watch({ converter: PropertyConverters.String })
|
|
252
|
+
], PacemFxGradientElement.prototype, "mode", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
Debounce(true)
|
|
255
|
+
], PacemFxGradientElement.prototype, "_buildGradient", null);
|
|
256
|
+
PacemFxGradientElement = __decorate([
|
|
257
|
+
CustomElement({ tagName: P + '-fx-gradient' })
|
|
258
|
+
], PacemFxGradientElement);
|
|
259
|
+
export { PacemFxGradientElement };
|