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 CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as _DOMRenderer } from './internals/common-ArUp7Iqs.js';
1
+ import { _ as _DOMRenderer } from './internals/common-B0V0zJgq.js';
2
2
  import './internals/common-CUIKizze.js';
3
3
  import '@o2ter/utils-js';
4
4
  import 'lodash';
package/dist/dom.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var common = require('./internals/common-Gtdx0S3S.js');
3
+ var common = require('./internals/common-BGe6DoFG.js');
4
4
  require('lodash');
5
5
  require('myers.js');
6
6
  require('./internals/component-BiP3XIPe.js');
package/dist/dom.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as _DOMRenderer } from './internals/common-DGuu8VPY.mjs';
1
+ import { _ as _DOMRenderer } from './internals/common-CqRgYrAF.mjs';
2
2
  import 'lodash';
3
3
  import 'myers.js';
4
4
  import './internals/component-BzurKp_J.mjs';
@@ -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 _tracked_style_names;
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-ArUp7Iqs.d.ts.map
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 _style = JSON.stringify(style);
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, _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
- _tracked_style_names = [];
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._tracked_style_names);
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._tracked_style_names.push(...built);
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._tracked_listener.get(element) ?? {};
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 removed = _.difference(this._tracked_props.get(element), _.keys(_props));
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
- this._tracked_props.set(element, _.keys(_props));
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._tracked_listener.get(element) ?? {};
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-Gtdx0S3S.js.map
4162
+ //# sourceMappingURL=common-BGe6DoFG.js.map