@larva.io/webcomponents
Version:
Fentrica SmartUnits WebComponents package
150 lines (143 loc) • 17.9 kB
JavaScript
/*!
* (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