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 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-CzYm0jUg.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-C51evXXz.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,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
- const builtClassName = this.__createBuiltClassName(className, style);
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 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));
4033
4045
  const props = {
4034
4046
  ..._props,
4035
4047
  ..._.fromPairs(_.map(removed, x => [x, undefined])),
4036
4048
  };
4037
- this._tracked_props.set(element, _.keys(_props));
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._tracked_listener.get(element) ?? {};
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-CzYm0jUg.js.map
4162
+ //# sourceMappingURL=common-BGe6DoFG.js.map