frosty 0.0.41 → 0.0.43

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.
@@ -3,7 +3,7 @@
3
3
  var _ = require('lodash');
4
4
  var myers_js = require('myers.js');
5
5
  var component = require('./component-BiP3XIPe.js');
6
- var renderer = require('./renderer-a9zN1_RB.js');
6
+ var renderer = require('./renderer-CD_mSOiL.js');
7
7
  var postcss = require('postcss');
8
8
  var postcssJs = require('postcss-js');
9
9
  var nested = require('postcss-nested');
@@ -3896,6 +3896,7 @@ class DOMNativeNode extends component.NativeElementType {
3896
3896
  class _DOMRenderer extends renderer._Renderer {
3897
3897
  _window;
3898
3898
  _namespace_map = new WeakMap();
3899
+ _tracked_elements = new WeakSet();
3899
3900
  _tracked_props = new WeakMap();
3900
3901
  _tracked_listener = new WeakMap();
3901
3902
  _tracked_head_children = [];
@@ -3921,9 +3922,10 @@ class _DOMRenderer extends renderer._Renderer {
3921
3922
  /** @internal */
3922
3923
  _afterUpdate() {
3923
3924
  this._tracked_style.select(this._tracked_style_names);
3925
+ const head = this.document.head ?? this.document.createElementNS(HTML_NS, 'head');
3924
3926
  if (this._tracked_style.isEmpty) {
3925
3927
  if (this._server) {
3926
- this.__replaceChildren(this.document.head, this._tracked_head_children);
3928
+ this.__replaceChildren(head, this._tracked_head_children);
3927
3929
  }
3928
3930
  }
3929
3931
  else {
@@ -3931,12 +3933,15 @@ class _DOMRenderer extends renderer._Renderer {
3931
3933
  styleElem.setAttribute('data-frosty-style', '');
3932
3934
  styleElem.textContent = this._tracked_style.css;
3933
3935
  if (this._server) {
3934
- this.__replaceChildren(this.document.head, [...this._tracked_head_children, styleElem]);
3936
+ this.__replaceChildren(head, [...this._tracked_head_children, styleElem]);
3935
3937
  }
3936
- else if (styleElem.parentNode !== this.document.head) {
3937
- this.document.head.appendChild(styleElem);
3938
+ else if (styleElem.parentNode !== head) {
3939
+ head.appendChild(styleElem);
3938
3940
  }
3939
3941
  }
3942
+ if (!this.document.head) {
3943
+ this.document.documentElement.insertBefore(head, this.document.body);
3944
+ }
3940
3945
  }
3941
3946
  /** @internal */
3942
3947
  _createElement(node, stack) {
@@ -3964,6 +3969,7 @@ class _DOMRenderer extends renderer._Renderer {
3964
3969
  const elem = ns ? this.document.createElementNS(ns, type) : this.document.createElement(type);
3965
3970
  this._namespace_map.set(node, ns);
3966
3971
  this._updateElement(node, elem, stack);
3972
+ this._tracked_elements.add(elem);
3967
3973
  return elem;
3968
3974
  }
3969
3975
  __createBuiltClassName(className, style) {
@@ -4071,7 +4077,7 @@ class _DOMRenderer extends renderer._Renderer {
4071
4077
  }
4072
4078
  }
4073
4079
  /** @internal */
4074
- _replaceChildren(node, element, children) {
4080
+ _replaceChildren(node, element, children, force) {
4075
4081
  if (element instanceof DOMNativeNode) {
4076
4082
  element.replaceChildren(children);
4077
4083
  }
@@ -4081,7 +4087,7 @@ class _DOMRenderer extends renderer._Renderer {
4081
4087
  this._tracked_head_children.push(...children);
4082
4088
  }
4083
4089
  else if (_.isEmpty(innerHTML)) {
4084
- this.__replaceChildren(element, children);
4090
+ this.__replaceChildren(element, children, force);
4085
4091
  }
4086
4092
  }
4087
4093
  }
@@ -4100,7 +4106,7 @@ class _DOMRenderer extends renderer._Renderer {
4100
4106
  }
4101
4107
  }
4102
4108
  }
4103
- __replaceChildren(element, children) {
4109
+ __replaceChildren(element, children, force) {
4104
4110
  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 });
4105
4111
  let i = 0;
4106
4112
  for (const { remove, insert, equivalent } of diff) {
@@ -4109,7 +4115,12 @@ class _DOMRenderer extends renderer._Renderer {
4109
4115
  }
4110
4116
  else if (remove) {
4111
4117
  for (const child of remove) {
4112
- element.removeChild(element.childNodes[i]);
4118
+ if (force || _.isString(child) || this._tracked_elements.has(child)) {
4119
+ element.removeChild(element.childNodes[i]);
4120
+ }
4121
+ else {
4122
+ i++;
4123
+ }
4113
4124
  }
4114
4125
  }
4115
4126
  if (insert) {
@@ -4135,4 +4146,4 @@ class _DOMRenderer extends renderer._Renderer {
4135
4146
 
4136
4147
  exports.DOMNativeNode = DOMNativeNode;
4137
4148
  exports._DOMRenderer = _DOMRenderer;
4138
- //# sourceMappingURL=common-DB-05wD7.js.map
4149
+ //# sourceMappingURL=common-P5AZ4-Yt.js.map