UNPKG

@larva.io/webcomponents

Version:

Fentrica SmartUnits WebComponents package

150 lines (143 loc) 17.9 kB
/*! * (C) Fentrica http://fentrica.com - Seee LICENSE.md */ 'use strict'; var index = require('./index-B0SElCD3.js'); var isObjectLike = require('./isObjectLike-DYIul5Fz.js'); var isObject = require('./isObject-BbrqXeY4.js'); require('./global-C03WvntH.js'); /** `Object#toString` result references. */ var boolTag = '[object Boolean]'; /** * Checks if `value` is classified as a boolean primitive or object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. * @example * * _.isBoolean(false); * // => true * * _.isBoolean(null); * // => false */ function isBoolean(value) { return value === true || value === false || (isObjectLike.isObjectLike(value) && isObjectLike.baseGetTag(value) == boolTag); } const twoPosControllerCss = "slot-fb[hidden],slot[hidden]{display:initial !important}.thermostat-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;padding:2rem 1rem 1rem;gap:1.5rem}.temp-display{position:relative;width:100%;max-width:340px;height:200px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;margin:0 auto;gap:1rem}.temp-ring{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:200px;height:200px;border-radius:50%;background:linear-gradient(135deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 8px 32px -8px rgba(0, 0, 0, 0.15);-webkit-transition:all 0.4s cubic-bezier(0.4, 0, 0.2, 1);transition:all 0.4s cubic-bezier(0.4, 0, 0.2, 1)}.temp-ring::before{content:\"\";position:absolute;inset:12px;border-radius:50%;background:var(--lar-background-color, #000);-webkit-box-shadow:0 4px 16px -4px rgba(0, 0, 0, 0.2), inset 0 2px 4px rgba(255, 255, 255, 0.1);box-shadow:0 4px 16px -4px rgba(0, 0, 0, 0.2), inset 0 2px 4px rgba(255, 255, 255, 0.1)}.temp-content{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:2;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;gap:0.3rem}.temp-value{font-size:4rem;font-weight:700;line-height:1;letter-spacing:-0.03em;text-shadow:0 2px 4px rgba(0, 0, 0, 0.1), 0 0 1px rgba(255, 255, 255, 0.1);-webkit-transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1)}.temp-label{font-size:0.85rem;font-weight:500;text-transform:uppercase;letter-spacing:0.1em;opacity:0.6}.temp-controls{position:relative;z-index:3;display:-ms-flexbox;display:flex;width:100%;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.temp-controls lar-button{width:3.5rem;height:3.5rem;border-radius:50%;font-size:1.8rem;font-weight:400;-webkit-box-shadow:0 4px 12px -4px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.1);box-shadow:0 4px 12px -4px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1)}.temp-controls lar-button:active{-webkit-transform:scale(0.92);transform:scale(0.92)}lar-button-group{display:-ms-flexbox;display:flex;gap:0.5rem;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;max-width:400px;padding:0.4rem;background:rgba(0, 0, 0, 0.03);border-radius:0.8rem;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 0 rgba(255, 255, 255, 0.5)}lar-button-group lar-button{-ms-flex:1;flex:1;min-height:3rem;font-weight:600;font-size:0.95rem;text-transform:uppercase;letter-spacing:0.05em;border-radius:0.5rem;-webkit-transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);-webkit-box-shadow:0 2px 8px -2px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:0 2px 8px -2px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.1)}lar-button-group lar-button:active{-webkit-transform:scale(0.97);transform:scale(0.97)}lar-button-group.setpoint{background:transparent;-webkit-box-shadow:none;box-shadow:none;padding:0;max-width:none}.value{padding:var(--lar-button-padding-top, 1rem) var(--lar-button-padding-right, 1rem) var(--lar-button-padding-bottom, 1rem) var(--lar-button-padding-left, 1rem);background-color:var(--lar-background-color-step-150, rgb(38.25, 38.25, 38.25));font-size:var(--lar-button-font-size, 1.2rem);width:25%;display:inline-block;color:var(--lar-text-color, #fff);text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden !important}.lar-color-primary .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.08) 0%, rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-primary .temp-value{color:var(--lar-color-primary, #780bb7);text-shadow:0 2px 4px rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.2), 0 0 2px rgba(var(--lar-color-primary-rgb, 120, 11, 183), 0.1)}.lar-color-secondary .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.08) 0%, rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-secondary .temp-value{color:var(--lar-color-secondary, #7fb800);text-shadow:0 2px 4px rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.2), 0 0 2px rgba(var(--lar-color-secondary-rgb, 127, 184, 0), 0.1)}.lar-color-tertiary .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.08) 0%, rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-tertiary .temp-value{color:var(--lar-color-tertiary, #00a6ed);text-shadow:0 2px 4px rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.2), 0 0 2px rgba(var(--lar-color-tertiary-rgb, 0, 166, 237), 0.1)}.lar-color-success .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.08) 0%, rgba(var(--lar-color-success-rgb, 127, 184, 0), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-success .temp-value{color:var(--lar-color-success, #7fb800);text-shadow:0 2px 4px rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.2), 0 0 2px rgba(var(--lar-color-success-rgb, 127, 184, 0), 0.1)}.lar-color-warning .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.08) 0%, rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-warning .temp-value{color:var(--lar-color-warning, #ffb400);text-shadow:0 2px 4px rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.2), 0 0 2px rgba(var(--lar-color-warning-rgb, 255, 180, 0), 0.1)}.lar-color-danger .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.08) 0%, rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-danger .temp-value{color:var(--lar-color-danger, #f6511d);text-shadow:0 2px 4px rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.2), 0 0 2px rgba(var(--lar-color-danger-rgb, 246, 81, 29), 0.1)}.lar-color-light .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.08) 0%, rgba(var(--lar-color-light-rgb, 244, 245, 248), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-light .temp-value{color:var(--lar-color-light, #f4f5f8);text-shadow:0 2px 4px rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.2), 0 0 2px rgba(var(--lar-color-light-rgb, 244, 245, 248), 0.1)}.lar-color-medium .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.08) 0%, rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-medium .temp-value{color:var(--lar-color-medium, #d6d6d6);text-shadow:0 2px 4px rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.2), 0 0 2px rgba(var(--lar-color-medium-rgb, 214, 214, 214), 0.1)}.lar-color-dark .temp-ring{background:linear-gradient(135deg, rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.08) 0%, rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0) 50%, rgba(0, 0, 0, 0.03) 100%);-webkit-box-shadow:inset 0 0 0 3px rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15);box-shadow:inset 0 0 0 3px rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.15), inset 0 2px 8px rgba(0, 0, 0, 0.1), inset 0 -2px 4px rgba(255, 255, 255, 0.05), 0 0 24px -8px rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.2), 0 8px 32px -8px rgba(0, 0, 0, 0.15)}.lar-color-dark .temp-value{color:var(--lar-color-dark, #222428);text-shadow:0 2px 4px rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.2), 0 0 2px rgba(var(--lar-color-dark-rgb, 34, 36, 40), 0.1)}"; const TIMEOUT = 600; const TwoPosControllerNode = class { constructor(hostRef) { index.registerInstance(this, hostRef); this.output = index.createEvent(this, "output"); this.request = index.createEvent(this, "request"); /////// LarvaNode base properties /** * Component main icon */ this.icon = 'off'; /** * The color to use from your application's color palette. * Detrouble options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. */ this.color = 'primary'; /** * Is logging for this component enabled (lar-log subcomponent loaded) */ this.log = false; /** * Node size */ this.nodeSize = 'default'; /////// LarvaNode base properties and events - end this.fullState = {}; this.setPointEdit = 0; this.loading = true; } componentDidLoad() { const el = this.el.shadowRoot || this.el; this.node = el.querySelector('lar-node'); this.output.emit({ command: 'get' }); } /** * Larva error input */ async error(data) { if (this.node) { this.node.error(data); } this.loading = false; } /** * Input Larva event message (see above) */ async input(data) { if (isBoolean(data)) { this.fullState.outputValue = data; } else if (isObject.isObject(data)) { this.fullState = data; this.setPointEdit = this.fullState.setPoint; this.manualcontrols = !!this.fullState.manualControls; this.step = Number(this.fullState.step); this.min = Number(this.fullState.min); this.max = Number(this.fullState.max); } this.loading = false; } changeSetpoint(increase) { if (this.loading) { return; } const step = (this.step || 1) * (increase ? 1 : -1); this.setPointEdit = this.setPointEdit + step; if (this.max !== undefined && this.setPointEdit > this.max) { this.setPointEdit = this.max; } if (this.min !== undefined && this.setPointEdit < this.min) { this.setPointEdit = this.min; } // tslint:disable-next-line: strict-boolean-conditions if (this.timeout) { window.clearTimeout(this.timeout); this.timeout = null; } this.timeout = window.setTimeout(() => { this.loading = true; this.output.emit({ command: 'set', setPoint: this.setPointEdit }); this.timeout = null; }, TIMEOUT); } changeMode(mode) { if (this.loading) { return; } this.loading = true; this.output.emit({ command: 'mode', mode }); } render() { const value = String(this.fullState.inputValue || ''); const componentProps = { color: this.colorInputs || this.color, min: this.min, max: this.max, step: this.step, mode: this.fullState.mode, manualcontrols: !!this.fullState.manualControls, setpoint: this.setPointEdit, disabled: this.loading, onChangemode: (ev) => this.changeMode(ev.detail), onChangesetpoint: (ev) => this.changeSetpoint(ev.detail), }; return (index.h("lar-node", { key: '0234d5f376f60a99c298d49691581eee9a04af69', value: value, hideTitles: this.hideTitles, icon: this.icon, color: this.color, supTitle: this.supTitle, mainTitle: this.mainTitle, subTitle: this.subTitle, colorModal: this.colorModal, colorInputs: this.colorInputs, colorIconSmall: this.colorIconSmall, loading: this.loading, log: this.log, nodeSize: this.nodeSize, component: "two-pos-controller-content", componentProps: componentProps }, index.h("slot", { key: '59b99abfc4b8fa172e851c1911db8215e2e72393' }))); } get el() { return index.getElement(this); } }; TwoPosControllerNode.style = twoPosControllerCss; exports.lar_two_pos_controller = TwoPosControllerNode; //# sourceMappingURL=lar-two-pos-controller.entry.cjs.js.map