frosty 0.0.46 → 0.0.48
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/dom.d.ts +1 -1
- package/dist/dom.js +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/internals/{common-ArUp7Iqs.d.ts → common-B0V0zJgq.d.ts} +2 -5
- package/dist/internals/common-B0V0zJgq.d.ts.map +1 -0
- package/dist/internals/{common-DGuu8VPY.mjs → common-FSgbZ-Ci.mjs} +56 -38
- package/dist/internals/{common-DGuu8VPY.mjs.map → common-FSgbZ-Ci.mjs.map} +1 -1
- package/dist/internals/{common-Gtdx0S3S.js → common-MihgZvIs.js} +56 -38
- package/dist/internals/{common-Gtdx0S3S.js.map → common-MihgZvIs.js.map} +1 -1
- package/dist/server-dom.d.ts +1 -1
- package/dist/server-dom.js +1 -1
- package/dist/server-dom.mjs +1 -1
- package/dist/web.d.ts +1 -1
- package/dist/web.js +1 -1
- package/dist/web.mjs +2 -2
- package/package.json +1 -1
- package/dist/internals/common-ArUp7Iqs.d.ts.map +0 -1
package/dist/dom.d.ts
CHANGED
package/dist/dom.js
CHANGED
package/dist/dom.mjs
CHANGED
|
@@ -15,12 +15,9 @@ declare abstract class DOMNativeNode extends NativeElementType {
|
|
|
15
15
|
declare abstract class _DOMRenderer extends _Renderer<Element | DOMNativeNode> {
|
|
16
16
|
private _window;
|
|
17
17
|
private _namespace_map;
|
|
18
|
-
private _tracked_elements;
|
|
19
|
-
private _tracked_props;
|
|
20
|
-
private _tracked_listener;
|
|
21
18
|
private _tracked_head_children;
|
|
22
19
|
private _tracked_style;
|
|
23
|
-
private
|
|
20
|
+
private _tracked_elements;
|
|
24
21
|
constructor(window: Window | DOMWindow);
|
|
25
22
|
get document(): Document;
|
|
26
23
|
get window(): Window | DOMWindow;
|
|
@@ -31,4 +28,4 @@ declare abstract class _DOMRenderer extends _Renderer<Element | DOMNativeNode> {
|
|
|
31
28
|
}
|
|
32
29
|
|
|
33
30
|
export { DOMNativeNode as D, _DOMRenderer as _ };
|
|
34
|
-
//# sourceMappingURL=common-
|
|
31
|
+
//# sourceMappingURL=common-B0V0zJgq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-B0V0zJgq.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -3825,12 +3825,11 @@ class StyleBuilder {
|
|
|
3825
3825
|
const className = [];
|
|
3826
3826
|
let searchIdx = 0;
|
|
3827
3827
|
for (const style of styles) {
|
|
3828
|
-
const
|
|
3829
|
-
const found = _.findIndex(this.registry, x => x._style === _style, searchIdx);
|
|
3828
|
+
const found = _.findIndex(this.registry, x => _.isEqual(x.style, style), searchIdx);
|
|
3830
3829
|
searchIdx = found === -1 ? this.registry.length : found;
|
|
3831
3830
|
if (found === -1) {
|
|
3832
3831
|
const name = `__v_${uniqueId()}`;
|
|
3833
|
-
this.registry.push({ name, style
|
|
3832
|
+
this.registry.push({ name, style });
|
|
3834
3833
|
this.clearCache();
|
|
3835
3834
|
className.push(name);
|
|
3836
3835
|
}
|
|
@@ -3894,12 +3893,9 @@ class DOMNativeNode extends NativeElementType {
|
|
|
3894
3893
|
class _DOMRenderer extends _Renderer {
|
|
3895
3894
|
_window;
|
|
3896
3895
|
_namespace_map = new WeakMap();
|
|
3897
|
-
_tracked_elements = new WeakSet();
|
|
3898
|
-
_tracked_props = new WeakMap();
|
|
3899
|
-
_tracked_listener = new WeakMap();
|
|
3900
3896
|
_tracked_head_children = [];
|
|
3901
3897
|
_tracked_style = new StyleBuilder();
|
|
3902
|
-
|
|
3898
|
+
_tracked_elements = new Map();
|
|
3903
3899
|
constructor(window) {
|
|
3904
3900
|
super();
|
|
3905
3901
|
this._window = window;
|
|
@@ -3915,11 +3911,10 @@ class _DOMRenderer extends _Renderer {
|
|
|
3915
3911
|
if (this._server) {
|
|
3916
3912
|
this._tracked_head_children = [];
|
|
3917
3913
|
}
|
|
3918
|
-
this._tracked_style_names = [];
|
|
3919
3914
|
}
|
|
3920
3915
|
/** @internal */
|
|
3921
3916
|
_afterUpdate() {
|
|
3922
|
-
this._tracked_style.select(this.
|
|
3917
|
+
this._tracked_style.select([...this._tracked_elements.values().flatMap(({ className }) => className)]);
|
|
3923
3918
|
const head = this.document.head ?? this.document.createElementNS(HTML_NS, 'head');
|
|
3924
3919
|
if (this._tracked_style.isEmpty) {
|
|
3925
3920
|
if (this._server) {
|
|
@@ -3947,6 +3942,11 @@ class _DOMRenderer extends _Renderer {
|
|
|
3947
3942
|
if (!_.isString(type) && type.prototype instanceof DOMNativeNode) {
|
|
3948
3943
|
const ElementType = type;
|
|
3949
3944
|
const elem = ElementType.createElement(this.document, this);
|
|
3945
|
+
this._tracked_elements.set(elem, {
|
|
3946
|
+
props: [],
|
|
3947
|
+
className: [],
|
|
3948
|
+
listener: {},
|
|
3949
|
+
});
|
|
3950
3950
|
this._updateElement(node, elem, stack);
|
|
3951
3951
|
return elem;
|
|
3952
3952
|
}
|
|
@@ -3966,19 +3966,27 @@ class _DOMRenderer extends _Renderer {
|
|
|
3966
3966
|
const ns = _ns_list.length > 1 ? parent && _.first(_.intersection([this._namespace_map.get(parent)], _ns_list)) : _.first(_ns_list);
|
|
3967
3967
|
const elem = ns ? this.document.createElementNS(ns, type) : this.document.createElement(type);
|
|
3968
3968
|
this._namespace_map.set(node, ns);
|
|
3969
|
+
this._tracked_elements.set(elem, {
|
|
3970
|
+
props: [],
|
|
3971
|
+
className: [],
|
|
3972
|
+
listener: {},
|
|
3973
|
+
});
|
|
3969
3974
|
this._updateElement(node, elem, stack);
|
|
3970
|
-
this._tracked_elements.add(elem);
|
|
3971
3975
|
return elem;
|
|
3972
3976
|
}
|
|
3973
|
-
__createBuiltClassName(className, style) {
|
|
3977
|
+
__createBuiltClassName(element, className, style) {
|
|
3974
3978
|
const _className = _.compact(_.flattenDeep([className]));
|
|
3975
3979
|
const built = this._tracked_style.buildStyle(_.compact(_.flattenDeep([style])));
|
|
3976
|
-
this.
|
|
3980
|
+
const tracked = this._tracked_elements.get(element);
|
|
3981
|
+
if (tracked)
|
|
3982
|
+
tracked.className = built;
|
|
3977
3983
|
return [..._className, ...built].join(' ');
|
|
3978
3984
|
}
|
|
3979
3985
|
__updateEventListener(element, key, listener, options) {
|
|
3980
3986
|
const event = key.endsWith('Capture') ? key.slice(2, -7).toLowerCase() : key.slice(2).toLowerCase();
|
|
3981
|
-
const tracked_listener = this.
|
|
3987
|
+
const tracked_listener = this._tracked_elements.get(element)?.listener;
|
|
3988
|
+
if (!tracked_listener)
|
|
3989
|
+
return;
|
|
3982
3990
|
if (tracked_listener[key] !== listener) {
|
|
3983
3991
|
if (_.isFunction(tracked_listener[key]))
|
|
3984
3992
|
element.removeEventListener(event, tracked_listener[key], options);
|
|
@@ -3986,7 +3994,6 @@ class _DOMRenderer extends _Renderer {
|
|
|
3986
3994
|
element.addEventListener(event, listener, options);
|
|
3987
3995
|
}
|
|
3988
3996
|
tracked_listener[key] = listener;
|
|
3989
|
-
this._tracked_listener.set(element, tracked_listener);
|
|
3990
3997
|
}
|
|
3991
3998
|
/** @internal */
|
|
3992
3999
|
_updateElement(node, element, stack) {
|
|
@@ -3994,7 +4001,7 @@ class _DOMRenderer extends _Renderer {
|
|
|
3994
4001
|
const { props: { ref, className, style, inlineStyle, ..._props } } = node;
|
|
3995
4002
|
if (ref)
|
|
3996
4003
|
mergeRefs(ref)(element.target);
|
|
3997
|
-
const builtClassName = this.__createBuiltClassName(className, style);
|
|
4004
|
+
const builtClassName = this.__createBuiltClassName(element, className, style);
|
|
3998
4005
|
const { css } = processCss(inlineStyle);
|
|
3999
4006
|
element.update({
|
|
4000
4007
|
className: builtClassName ? builtClassName : undefined,
|
|
@@ -4013,28 +4020,35 @@ class _DOMRenderer extends _Renderer {
|
|
|
4013
4020
|
}
|
|
4014
4021
|
if (ref)
|
|
4015
4022
|
mergeRefs(ref)(element);
|
|
4016
|
-
const builtClassName = this.__createBuiltClassName(className, style);
|
|
4023
|
+
const builtClassName = this.__createBuiltClassName(element, className, style);
|
|
4017
4024
|
if (_.isEmpty(builtClassName)) {
|
|
4018
|
-
element.
|
|
4025
|
+
if (!_.isNil(element.getAttribute('class')))
|
|
4026
|
+
element.removeAttribute('class');
|
|
4019
4027
|
}
|
|
4020
|
-
else {
|
|
4028
|
+
else if (element.className !== builtClassName) {
|
|
4021
4029
|
element.className = builtClassName;
|
|
4022
4030
|
}
|
|
4023
|
-
if (!_.isEmpty(innerHTML))
|
|
4031
|
+
if (!_.isEmpty(innerHTML) && element.innerHTML !== innerHTML)
|
|
4024
4032
|
element.innerHTML = innerHTML;
|
|
4025
4033
|
if (inlineStyle) {
|
|
4026
4034
|
const { css } = processCss(inlineStyle);
|
|
4027
|
-
element.
|
|
4035
|
+
const oldValue = element.getAttribute('style');
|
|
4036
|
+
const newValue = css.split('\n').join('');
|
|
4037
|
+
if (oldValue !== newValue)
|
|
4038
|
+
element.setAttribute('style', newValue);
|
|
4028
4039
|
}
|
|
4029
|
-
else {
|
|
4040
|
+
else if (!_.isNil(element.getAttribute('style'))) {
|
|
4030
4041
|
element.removeAttribute('style');
|
|
4031
4042
|
}
|
|
4032
|
-
const
|
|
4043
|
+
const tracked = this._tracked_elements.get(element);
|
|
4044
|
+
if (!tracked)
|
|
4045
|
+
return;
|
|
4046
|
+
const removed = _.difference(tracked.props, _.keys(_props));
|
|
4033
4047
|
const props = {
|
|
4034
4048
|
..._props,
|
|
4035
4049
|
..._.fromPairs(_.map(removed, x => [x, undefined])),
|
|
4036
4050
|
};
|
|
4037
|
-
|
|
4051
|
+
tracked.props = _.keys(_props);
|
|
4038
4052
|
for (const [key, value] of _.entries(props)) {
|
|
4039
4053
|
if (_.includes(globalEvents, key)) {
|
|
4040
4054
|
this.__updateEventListener(element, key, value, { capture: false });
|
|
@@ -4043,17 +4057,19 @@ class _DOMRenderer extends _Renderer {
|
|
|
4043
4057
|
this.__updateEventListener(element, key, value, { capture: true });
|
|
4044
4058
|
}
|
|
4045
4059
|
else if (isWriteable(element, key)) {
|
|
4046
|
-
element[key]
|
|
4060
|
+
if (element[key] !== value)
|
|
4061
|
+
element[key] = value;
|
|
4047
4062
|
}
|
|
4048
4063
|
else if (key.startsWith('data-')) {
|
|
4064
|
+
const oldValue = element.getAttribute(key);
|
|
4049
4065
|
if (value === false || _.isNil(value)) {
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
else if (value === true) {
|
|
4053
|
-
element.setAttribute(key, '');
|
|
4066
|
+
if (!_.isNil(oldValue))
|
|
4067
|
+
element.removeAttribute(key);
|
|
4054
4068
|
}
|
|
4055
|
-
else
|
|
4056
|
-
|
|
4069
|
+
else {
|
|
4070
|
+
const newValue = value === true ? '' : `${value}`;
|
|
4071
|
+
if (oldValue !== newValue)
|
|
4072
|
+
element.setAttribute(key, newValue);
|
|
4057
4073
|
}
|
|
4058
4074
|
}
|
|
4059
4075
|
else {
|
|
@@ -4063,14 +4079,15 @@ class _DOMRenderer extends _Renderer {
|
|
|
4063
4079
|
?? svgProps[type]?.[key]
|
|
4064
4080
|
?? {};
|
|
4065
4081
|
if (_type && attr && _propValue[_type]) {
|
|
4082
|
+
const oldValue = element.getAttribute(key);
|
|
4066
4083
|
if (value === false || _.isNil(value)) {
|
|
4067
|
-
|
|
4084
|
+
if (!_.isNil(oldValue))
|
|
4085
|
+
element.removeAttribute(key);
|
|
4068
4086
|
}
|
|
4069
|
-
else
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
element.setAttribute(attr, `${value}`);
|
|
4087
|
+
else {
|
|
4088
|
+
const newValue = value === true ? '' : `${value}`;
|
|
4089
|
+
if (oldValue !== newValue)
|
|
4090
|
+
element.setAttribute(key, newValue);
|
|
4074
4091
|
}
|
|
4075
4092
|
}
|
|
4076
4093
|
}
|
|
@@ -4097,7 +4114,7 @@ class _DOMRenderer extends _Renderer {
|
|
|
4097
4114
|
element.destroy();
|
|
4098
4115
|
}
|
|
4099
4116
|
else {
|
|
4100
|
-
const tracked_listener = this.
|
|
4117
|
+
const tracked_listener = this._tracked_elements.get(element)?.listener;
|
|
4101
4118
|
for (const [key, listener] of _.entries(tracked_listener)) {
|
|
4102
4119
|
const event = key.endsWith('Capture') ? key.slice(2, -7).toLowerCase() : key.slice(2).toLowerCase();
|
|
4103
4120
|
if (_.isFunction(listener)) {
|
|
@@ -4105,6 +4122,7 @@ class _DOMRenderer extends _Renderer {
|
|
|
4105
4122
|
}
|
|
4106
4123
|
}
|
|
4107
4124
|
}
|
|
4125
|
+
this._tracked_elements.delete(element);
|
|
4108
4126
|
}
|
|
4109
4127
|
__replaceChildren(element, children, force) {
|
|
4110
4128
|
const diff = myersSync(_.map(element.childNodes, x => x.nodeType === this.document.TEXT_NODE ? x.textContent ?? '' : x), _.map(children, x => x instanceof DOMNativeNode ? x.target : x), { compare: (a, b) => a === b });
|
|
@@ -4145,4 +4163,4 @@ class _DOMRenderer extends _Renderer {
|
|
|
4145
4163
|
}
|
|
4146
4164
|
|
|
4147
4165
|
export { DOMNativeNode as D, _DOMRenderer as _ };
|
|
4148
|
-
//# sourceMappingURL=common-
|
|
4166
|
+
//# sourceMappingURL=common-FSgbZ-Ci.mjs.map
|