frosty 0.0.46 → 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-Gtdx0S3S.js → common-BGe6DoFG.js} +31 -20
- package/dist/internals/{common-Gtdx0S3S.js.map → common-BGe6DoFG.js.map} +1 -1
- package/dist/internals/{common-DGuu8VPY.mjs → common-CqRgYrAF.mjs} +31 -20
- package/dist/internals/{common-DGuu8VPY.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,7 +3996,6 @@ 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) {
|
|
@@ -3996,7 +4003,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
3996
4003
|
const { props: { ref, className, style, inlineStyle, ..._props } } = node;
|
|
3997
4004
|
if (ref)
|
|
3998
4005
|
state.mergeRefs(ref)(element.target);
|
|
3999
|
-
const builtClassName = this.__createBuiltClassName(className, style);
|
|
4006
|
+
const builtClassName = this.__createBuiltClassName(element, className, style);
|
|
4000
4007
|
const { css } = processCss(inlineStyle);
|
|
4001
4008
|
element.update({
|
|
4002
4009
|
className: builtClassName ? builtClassName : undefined,
|
|
@@ -4015,7 +4022,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4015
4022
|
}
|
|
4016
4023
|
if (ref)
|
|
4017
4024
|
state.mergeRefs(ref)(element);
|
|
4018
|
-
const builtClassName = this.__createBuiltClassName(className, style);
|
|
4025
|
+
const builtClassName = this.__createBuiltClassName(element, className, style);
|
|
4019
4026
|
if (_.isEmpty(builtClassName)) {
|
|
4020
4027
|
element.removeAttribute('class');
|
|
4021
4028
|
}
|
|
@@ -4031,12 +4038,15 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4031
4038
|
else {
|
|
4032
4039
|
element.removeAttribute('style');
|
|
4033
4040
|
}
|
|
4034
|
-
const
|
|
4041
|
+
const tracked = this._tracked_elements.get(element);
|
|
4042
|
+
if (!tracked)
|
|
4043
|
+
return;
|
|
4044
|
+
const removed = _.difference(tracked.props, _.keys(_props));
|
|
4035
4045
|
const props = {
|
|
4036
4046
|
..._props,
|
|
4037
4047
|
..._.fromPairs(_.map(removed, x => [x, undefined])),
|
|
4038
4048
|
};
|
|
4039
|
-
|
|
4049
|
+
tracked.props = _.keys(_props);
|
|
4040
4050
|
for (const [key, value] of _.entries(props)) {
|
|
4041
4051
|
if (_.includes(globalEvents, key)) {
|
|
4042
4052
|
this.__updateEventListener(element, key, value, { capture: false });
|
|
@@ -4099,7 +4109,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4099
4109
|
element.destroy();
|
|
4100
4110
|
}
|
|
4101
4111
|
else {
|
|
4102
|
-
const tracked_listener = this.
|
|
4112
|
+
const tracked_listener = this._tracked_elements.get(element)?.listener;
|
|
4103
4113
|
for (const [key, listener] of _.entries(tracked_listener)) {
|
|
4104
4114
|
const event = key.endsWith('Capture') ? key.slice(2, -7).toLowerCase() : key.slice(2).toLowerCase();
|
|
4105
4115
|
if (_.isFunction(listener)) {
|
|
@@ -4107,6 +4117,7 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4107
4117
|
}
|
|
4108
4118
|
}
|
|
4109
4119
|
}
|
|
4120
|
+
this._tracked_elements.delete(element);
|
|
4110
4121
|
}
|
|
4111
4122
|
__replaceChildren(element, children, force) {
|
|
4112
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 });
|
|
@@ -4148,4 +4159,4 @@ class _DOMRenderer extends renderer._Renderer {
|
|
|
4148
4159
|
|
|
4149
4160
|
exports.DOMNativeNode = DOMNativeNode;
|
|
4150
4161
|
exports._DOMRenderer = _DOMRenderer;
|
|
4151
|
-
//# sourceMappingURL=common-
|
|
4162
|
+
//# sourceMappingURL=common-BGe6DoFG.js.map
|