mirror of
https://github.com/marko-js/marko.git
synced 2026-02-01 16:07:13 +00:00
fix: avoid package.json remap for preserve tag
This commit is contained in:
parent
6ab48ca259
commit
f0c697d7b5
7
.changeset/poor-experts-bow.md
Normal file
7
.changeset/poor-experts-bow.md
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
"@marko/translator-default": patch
|
||||
"marko": patch
|
||||
"@marko/compiler": patch
|
||||
---
|
||||
|
||||
Avoids using a package.json remap for the browser implementation of the \_preserve internal tag (used to implement `no-update` directives). This fixes an issue where in vite the module could not be loaded properly.
|
||||
81
packages/marko/src/core-tags/components/preserve-tag.js
Normal file
81
packages/marko/src/core-tags/components/preserve-tag.js
Normal file
@ -0,0 +1,81 @@
|
||||
var ComponentsContext = require("../../runtime/components/ComponentsContext");
|
||||
var getComponentsContext = ComponentsContext.___getComponentsContext;
|
||||
|
||||
module.exports = function render(input, out) {
|
||||
var isComponent = !input.n;
|
||||
var shouldPreserve = !("i" in input) || input.i;
|
||||
var componentsContext = out.___components;
|
||||
|
||||
if (typeof document === "object") {
|
||||
var isHydrate =
|
||||
componentsContext && componentsContext.___globalContext.___isHydrate;
|
||||
var ownerComponent = out.___assignedComponentDef.___component;
|
||||
var referenceComponent = ownerComponent;
|
||||
var key = out.___assignedKey;
|
||||
var checkKey = key;
|
||||
|
||||
if (key[0] !== "@") {
|
||||
var parentComponent = componentsContext.___componentDef.___component;
|
||||
if (ownerComponent !== parentComponent) {
|
||||
referenceComponent = parentComponent;
|
||||
checkKey += ":" + ownerComponent.id;
|
||||
}
|
||||
}
|
||||
|
||||
var isPreserved =
|
||||
shouldPreserve &&
|
||||
(isHydrate || referenceComponent.___keyedElements[checkKey]);
|
||||
|
||||
if (isComponent) {
|
||||
out.bf(key, ownerComponent, shouldPreserve);
|
||||
|
||||
if (!isPreserved && input.renderBody) {
|
||||
input.renderBody(out);
|
||||
}
|
||||
|
||||
out.ef();
|
||||
} else {
|
||||
if (isPreserved) {
|
||||
if (input.b) {
|
||||
out.___parent.___preserveBody = true;
|
||||
} else {
|
||||
out.beginElement("", null, key, ownerComponent);
|
||||
out.___parent.___preserve = true;
|
||||
out.endElement();
|
||||
}
|
||||
} else if (input.renderBody) {
|
||||
input.renderBody(out);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isComponent) {
|
||||
out.bf(
|
||||
out.___assignedKey,
|
||||
out.___assignedComponentDef.___component,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
if (input.renderBody) {
|
||||
if (shouldPreserve) {
|
||||
var parentPreserved = false;
|
||||
|
||||
if (componentsContext) {
|
||||
parentPreserved = componentsContext.___isPreserved;
|
||||
} else {
|
||||
componentsContext = getComponentsContext(out);
|
||||
}
|
||||
|
||||
componentsContext.___isPreserved = true;
|
||||
input.renderBody(out);
|
||||
componentsContext.___isPreserved = parentPreserved;
|
||||
} else {
|
||||
input.renderBody(out);
|
||||
}
|
||||
}
|
||||
|
||||
if (isComponent) {
|
||||
out.ef();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -1,45 +0,0 @@
|
||||
module.exports = function render(input, out) {
|
||||
var componentsContext = out.___components;
|
||||
var isHydrate =
|
||||
componentsContext && componentsContext.___globalContext.___isHydrate;
|
||||
var ownerComponent = out.___assignedComponentDef.___component;
|
||||
var shouldPreserve = !("i" in input) || input.i;
|
||||
var referenceComponent = ownerComponent;
|
||||
var key = out.___assignedKey;
|
||||
var checkKey = key;
|
||||
|
||||
if (key[0] !== "@") {
|
||||
var parentComponent = componentsContext.___componentDef.___component;
|
||||
if (ownerComponent !== parentComponent) {
|
||||
referenceComponent = parentComponent;
|
||||
checkKey += ":" + ownerComponent.id;
|
||||
}
|
||||
}
|
||||
|
||||
var isPreserved = Boolean(
|
||||
shouldPreserve &&
|
||||
(isHydrate || referenceComponent.___keyedElements[checkKey])
|
||||
);
|
||||
|
||||
if (input.n) {
|
||||
if (isPreserved) {
|
||||
if (input.b) {
|
||||
out.___parent.___preserveBody = true;
|
||||
} else {
|
||||
out.beginElement("", null, key, ownerComponent);
|
||||
out.___parent.___preserve = true;
|
||||
out.endElement();
|
||||
}
|
||||
} else if (input.renderBody) {
|
||||
input.renderBody(out);
|
||||
}
|
||||
} else {
|
||||
out.bf(key, ownerComponent, shouldPreserve);
|
||||
|
||||
if (!isPreserved && input.renderBody) {
|
||||
input.renderBody(out);
|
||||
}
|
||||
|
||||
out.ef();
|
||||
}
|
||||
};
|
||||
@ -1,27 +0,0 @@
|
||||
var ComponentsContext = require("../../../runtime/components/ComponentsContext");
|
||||
var getComponentsContext = ComponentsContext.___getComponentsContext;
|
||||
|
||||
module.exports = function render(input, out) {
|
||||
var shouldPreserve = Boolean(!("i" in input) || input.i);
|
||||
var isComponent = !input.n;
|
||||
|
||||
if (isComponent) {
|
||||
out.bf(out.___assignedKey, out.___assignedComponentDef.___component, true);
|
||||
}
|
||||
|
||||
if (input.renderBody) {
|
||||
if (shouldPreserve) {
|
||||
var componentsContext = getComponentsContext(out);
|
||||
var parentPreserved = componentsContext.___isPreserved;
|
||||
componentsContext.___isPreserved = true;
|
||||
input.renderBody(out);
|
||||
componentsContext.___isPreserved = parentPreserved;
|
||||
} else {
|
||||
input.renderBody(out);
|
||||
}
|
||||
}
|
||||
|
||||
if (isComponent) {
|
||||
out.ef();
|
||||
}
|
||||
};
|
||||
@ -1,11 +0,0 @@
|
||||
{
|
||||
"main": "./index.js",
|
||||
"browser": "./index-browser.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"worker": "./index.js",
|
||||
"browser": "./index-browser.js",
|
||||
"default": "./index.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -473,7 +473,7 @@ export function getRuntimeEntryFiles(output, optimize) {
|
||||
`${base}runtime/helpers/render-tag.js`,
|
||||
`${base}runtime/helpers/style-value.js`,
|
||||
`${base}runtime/helpers/to-string.js`,
|
||||
`${base}core-tags/components/preserve-tag`,
|
||||
`${base}core-tags/components/preserve-tag.js`,
|
||||
...(output === "html"
|
||||
? [
|
||||
`${base}runtime/html/index.js`,
|
||||
|
||||
@ -264,7 +264,7 @@ export default {
|
||||
]
|
||||
},
|
||||
"<_preserve>": {
|
||||
renderer: "marko/src/core-tags/components/preserve-tag",
|
||||
renderer: "marko/src/core-tags/components/preserve-tag.js",
|
||||
"@n": "boolean",
|
||||
"@i": "boolean",
|
||||
"@b": "boolean",
|
||||
|
||||
@ -5,7 +5,7 @@ exports.default = void 0;
|
||||
var _index = require("marko/src/runtime/html/index.js");
|
||||
var _index2 = _interopRequireDefault(require("./components/hello/index.marko"));
|
||||
var _renderTag = _interopRequireDefault(require("marko/src/runtime/helpers/render-tag.js"));
|
||||
var _preserveTag = _interopRequireDefault(require("marko/src/core-tags/components/preserve-tag"));
|
||||
var _preserveTag = _interopRequireDefault(require("marko/src/core-tags/components/preserve-tag.js"));
|
||||
var _renderer = _interopRequireDefault(require("marko/src/runtime/components/renderer.js"));
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
const _marko_componentType = "packages/translator-default/test/fixtures/no-update-directives/template.marko",
|
||||
|
||||
@ -4,7 +4,7 @@ const _marko_componentType = "packages/translator-default/test/fixtures/no-updat
|
||||
export default _marko_template;
|
||||
import _hello from "./components/hello/index.marko";
|
||||
import _marko_tag from "marko/src/runtime/helpers/render-tag.js";
|
||||
import _preserve from "marko/src/core-tags/components/preserve-tag";
|
||||
import _preserve from "marko/src/core-tags/components/preserve-tag.js";
|
||||
import _marko_renderer from "marko/src/runtime/components/renderer.js";
|
||||
const _marko_component = {};
|
||||
_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {
|
||||
|
||||
@ -4,7 +4,7 @@ const _marko_componentType = "qUg9ApxN",
|
||||
export default _marko_template;
|
||||
import _hello from "./components/hello/index.marko";
|
||||
import _marko_tag from "marko/dist/runtime/helpers/render-tag.js";
|
||||
import _preserve from "marko/dist/core-tags/components/preserve-tag";
|
||||
import _preserve from "marko/dist/core-tags/components/preserve-tag.js";
|
||||
import _marko_renderer from "marko/dist/runtime/components/renderer.js";
|
||||
const _marko_component = {};
|
||||
_marko_template._ = _marko_renderer(function (input, out, _componentDef, _component, state, $global) {
|
||||
|
||||
@ -4,7 +4,7 @@ const _marko_componentType = "packages/translator-default/test/fixtures/no-updat
|
||||
export default _marko_template;
|
||||
import _hello from "./components/hello/index.marko";
|
||||
import _marko_tag from "marko/src/runtime/helpers/render-tag.js";
|
||||
import _preserve from "marko/src/core-tags/components/preserve-tag";
|
||||
import _preserve from "marko/src/core-tags/components/preserve-tag.js";
|
||||
import _marko_renderer from "marko/src/runtime/components/renderer.js";
|
||||
import { r as _marko_registerComponent } from "marko/src/runtime/components/registry";
|
||||
_marko_registerComponent(_marko_componentType, () => _marko_template);
|
||||
|
||||
@ -6,7 +6,7 @@ import _hello from "./components/hello/index.marko";
|
||||
import _marko_tag from "marko/dist/runtime/helpers/render-tag.js";
|
||||
import _marko_createElement from "marko/dist/runtime/vdom/helpers/v-element.js";
|
||||
const _marko_node = _marko_createElement("div", null, "2", null, 0, 0);
|
||||
import _preserve from "marko/dist/core-tags/components/preserve-tag";
|
||||
import _preserve from "marko/dist/core-tags/components/preserve-tag.js";
|
||||
const _marko_node2 = _marko_createElement("div", null, "5", null, 0, 0);
|
||||
const _marko_node3 = _marko_createElement("div", null, "8", null, 0, 0);
|
||||
const _marko_node4 = _marko_createElement("div", null, "11", null, 0, 0);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user