frosty 0.0.45 → 0.0.47
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-CzYm0jUg.js → common-BGe6DoFG.js} +34 -21
- package/dist/internals/{common-CzYm0jUg.js.map → common-BGe6DoFG.js.map} +1 -1
- package/dist/internals/{common-C51evXXz.mjs → common-CqRgYrAF.mjs} +34 -21
- package/dist/internals/{common-C51evXXz.mjs.map → common-CqRgYrAF.mjs.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":""}
|
|
@@ -3827,12 +3827,11 @@ class StyleBuilder {
|
|
|
3827
3827
|
const className = [];
|
|
3828
3828
|
let searchIdx = 0;
|
|
3829
3829
|
for (const style of styles) {
|
|
3830
|
-
const
|
|
3831
|
-
const found = _.findIndex(this.registry, x => x._style === _style, searchIdx);
|
|
3830
|
+
const found = _.findIndex(this.registry, x => _.isEqual(x.style, style), searchIdx);
|
|
3832
3831
|
searchIdx = found === -1 ? this.registry.length : found;
|
|
3833
3832
|
if (found === -1) {
|
|
3834
3833
|
const name = `__v_${state.uniqueId()}`;
|
|
3835
|
-
this.registry.push({ name, style
|
|
3834
|
+
this.registry.push({ name, style });
|
|
3836
3835
|
this.clearCache();
|
|
3837
3836
|
className.push(name);
|
|
3838
3837
|
}
|
|
@@ -3896,12 +3895,9 @@ class DOMNativeNode extends component.NativeElementType {
|
|
|
3896
3895
|
class _DOMRenderer extends renderer._Renderer {
|
|
3897
3896
|
_window;
|
|
3898
3897
|
_namespace_map = new WeakMap();
|
|
3899
|
-
_tracked_elements = new WeakSet();
|
|
3900
|
-
_tracked_props = new WeakMap();
|
|
3901
|
-
_tracked_listener = new WeakMap();
|
|
3902
3898
|
_tracked_head_children = [];
|
|
3903
3899
|
_tracked_style = new StyleBuilder();
|
|
3904
|
-
|
|
3900
|
+
_tracked_elements = new Map();
|
|
3905
3901
|
constructor(window) {
|
|
3906
3902
|
super();
|
|
3907
3903
|
this._window = window;
|
|
@@ -3917,11 +3913,10 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
3917
3913
|
if (this._server) {
|
|
3918
3914
|
this._tracked_head_children = [];
|
|
3919
3915
|
}
|
|
3920
|
-
this._tracked_style_names = [];
|
|
3921
3916
|
}
|
|
3922
3917
|
/** @internal */
|
|
3923
3918
|
_afterUpdate() {
|
|
3924
|
-
this._tracked_style.select(this.
|
|
3919
|
+
this._tracked_style.select([...this._tracked_elements.values().flatMap(({ className }) => className)]);
|
|
3925
3920
|
const head = this.document.head ?? this.document.createElementNS(HTML_NS, 'head');
|
|
3926
3921
|
if (this._tracked_style.isEmpty) {
|
|
3927
3922
|
if (this._server) {
|
|
@@ -3949,6 +3944,11 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
3949
3944
|
if (!_.isString(type) && type.prototype instanceof DOMNativeNode) {
|
|
3950
3945
|
const ElementType = type;
|
|
3951
3946
|
const elem = ElementType.createElement(this.document, this);
|
|
3947
|
+
this._tracked_elements.set(elem, {
|
|
3948
|
+
props: [],
|
|
3949
|
+
className: [],
|
|
3950
|
+
listener: {},
|
|
3951
|
+
});
|
|
3952
3952
|
this._updateElement(node, elem, stack);
|
|
3953
3953
|
return elem;
|
|
3954
3954
|
}
|
|
@@ -3968,19 +3968,27 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
3968
3968
|
const ns = _ns_list.length > 1 ? parent && _.first(_.intersection([this._namespace_map.get(parent)], _ns_list)) : _.first(_ns_list);
|
|
3969
3969
|
const elem = ns ? this.document.createElementNS(ns, type) : this.document.createElement(type);
|
|
3970
3970
|
this._namespace_map.set(node, ns);
|
|
3971
|
+
this._tracked_elements.set(elem, {
|
|
3972
|
+
props: [],
|
|
3973
|
+
className: [],
|
|
3974
|
+
listener: {},
|
|
3975
|
+
});
|
|
3971
3976
|
this._updateElement(node, elem, stack);
|
|
3972
|
-
this._tracked_elements.add(elem);
|
|
3973
3977
|
return elem;
|
|
3974
3978
|
}
|
|
3975
|
-
__createBuiltClassName(className, style) {
|
|
3979
|
+
__createBuiltClassName(element, className, style) {
|
|
3976
3980
|
const _className = _.compact(_.flattenDeep([className]));
|
|
3977
3981
|
const built = this._tracked_style.buildStyle(_.compact(_.flattenDeep([style])));
|
|
3978
|
-
this.
|
|
3982
|
+
const tracked = this._tracked_elements.get(element);
|
|
3983
|
+
if (tracked)
|
|
3984
|
+
tracked.className = built;
|
|
3979
3985
|
return [..._className, ...built].join(' ');
|
|
3980
3986
|
}
|
|
3981
3987
|
__updateEventListener(element, key, listener, options) {
|
|
3982
3988
|
const event = key.endsWith('Capture') ? key.slice(2, -7).toLowerCase() : key.slice(2).toLowerCase();
|
|
3983
|
-
const tracked_listener = this.
|
|
3989
|
+
const tracked_listener = this._tracked_elements.get(element)?.listener;
|
|
3990
|
+
if (!tracked_listener)
|
|
3991
|
+
return;
|
|
3984
3992
|
if (tracked_listener[key] !== listener) {
|
|
3985
3993
|
if (_.isFunction(tracked_listener[key]))
|
|
3986
3994
|
element.removeEventListener(event, tracked_listener[key], options);
|
|
@@ -3988,13 +3996,14 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
3988
3996
|
element.addEventListener(event, listener, options);
|
|
3989
3997
|
}
|
|
3990
3998
|
tracked_listener[key] = listener;
|
|
3991
|
-
this._tracked_listener.set(element, tracked_listener);
|
|
3992
3999
|
}
|
|
3993
4000
|
/** @internal */
|
|
3994
4001
|
_updateElement(node, element, stack) {
|
|
3995
4002
|
if (element instanceof DOMNativeNode) {
|
|
3996
|
-
const { props: { className, style, inlineStyle, ..._props } } = node;
|
|
3997
|
-
|
|
4003
|
+
const { props: { ref, className, style, inlineStyle, ..._props } } = node;
|
|
4004
|
+
if (ref)
|
|
4005
|
+
state.mergeRefs(ref)(element.target);
|
|
4006
|
+
const builtClassName = this.__createBuiltClassName(element, className, style);
|
|
3998
4007
|
const { css } = processCss(inlineStyle);
|
|
3999
4008
|
element.update({
|
|
4000
4009
|
className: builtClassName ? builtClassName : undefined,
|
|
@@ -4013,7 +4022,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4013
4022
|
}
|
|
4014
4023
|
if (ref)
|
|
4015
4024
|
state.mergeRefs(ref)(element);
|
|
4016
|
-
const builtClassName = this.__createBuiltClassName(className, style);
|
|
4025
|
+
const builtClassName = this.__createBuiltClassName(element, className, style);
|
|
4017
4026
|
if (_.isEmpty(builtClassName)) {
|
|
4018
4027
|
element.removeAttribute('class');
|
|
4019
4028
|
}
|
|
@@ -4029,12 +4038,15 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4029
4038
|
else {
|
|
4030
4039
|
element.removeAttribute('style');
|
|
4031
4040
|
}
|
|
4032
|
-
const
|
|
4041
|
+
const tracked = this._tracked_elements.get(element);
|
|
4042
|
+
if (!tracked)
|
|
4043
|
+
return;
|
|
4044
|
+
const removed = _.difference(tracked.props, _.keys(_props));
|
|
4033
4045
|
const props = {
|
|
4034
4046
|
..._props,
|
|
4035
4047
|
..._.fromPairs(_.map(removed, x => [x, undefined])),
|
|
4036
4048
|
};
|
|
4037
|
-
|
|
4049
|
+
tracked.props = _.keys(_props);
|
|
4038
4050
|
for (const [key, value] of _.entries(props)) {
|
|
4039
4051
|
if (_.includes(globalEvents, key)) {
|
|
4040
4052
|
this.__updateEventListener(element, key, value, { capture: false });
|
|
@@ -4097,7 +4109,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4097
4109
|
element.destroy();
|
|
4098
4110
|
}
|
|
4099
4111
|
else {
|
|
4100
|
-
const tracked_listener = this.
|
|
4112
|
+
const tracked_listener = this._tracked_elements.get(element)?.listener;
|
|
4101
4113
|
for (const [key, listener] of _.entries(tracked_listener)) {
|
|
4102
4114
|
const event = key.endsWith('Capture') ? key.slice(2, -7).toLowerCase() : key.slice(2).toLowerCase();
|
|
4103
4115
|
if (_.isFunction(listener)) {
|
|
@@ -4105,6 +4117,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4105
4117
|
}
|
|
4106
4118
|
}
|
|
4107
4119
|
}
|
|
4120
|
+
this._tracked_elements.delete(element);
|
|
4108
4121
|
}
|
|
4109
4122
|
__replaceChildren(element, children, force) {
|
|
4110
4123
|
const diff = myers_js.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 });
|
|
@@ -4146,4 +4159,4 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4146
4159
|
|
|
4147
4160
|
exports.DOMNativeNode = DOMNativeNode;
|
|
4148
4161
|
exports._DOMRenderer = _DOMRenderer;
|
|
4149
|
-
//# sourceMappingURL=common-
|
|
4162
|
+
//# sourceMappingURL=common-BGe6DoFG.js.map
|