remote-components 0.4.12 → 0.4.13
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/{chunk-3PR3SWYZ.js → chunk-3DR4Z24C.js} +24 -2
- package/dist/chunk-3DR4Z24C.js.map +1 -0
- package/dist/{chunk-BEGVH64U.js → chunk-5BBEO4SE.js} +2 -2
- package/dist/{chunk-24LEEDHP.js → chunk-CBEDRGC7.js} +3 -3
- package/dist/{chunk-CLO56ON2.js → chunk-CLB2ATH2.js} +82 -4
- package/dist/chunk-CLB2ATH2.js.map +1 -0
- package/dist/{chunk-M6ACTSVB.js → chunk-IE7FXNFJ.js} +2 -2
- package/dist/{chunk-XWRB6CEA.cjs → chunk-KMG54QXV.cjs} +3 -3
- package/dist/{chunk-SULMNRMJ.cjs → chunk-KP544TQH.cjs} +23 -23
- package/dist/{chunk-HXCW3WDT.cjs → chunk-OI37BBBU.cjs} +25 -25
- package/dist/{chunk-TGE3K3TR.cjs → chunk-OVD7BRLD.cjs} +18 -18
- package/dist/{chunk-6PZEDIAK.cjs → chunk-OZCVXVKU.cjs} +24 -2
- package/dist/chunk-OZCVXVKU.cjs.map +1 -0
- package/dist/{chunk-YSJ4FKGI.cjs → chunk-W7RJUCZQ.cjs} +97 -19
- package/dist/chunk-W7RJUCZQ.cjs.map +1 -0
- package/dist/{chunk-RZGFQTX6.js → chunk-XEO3XD67.js} +8 -8
- package/dist/config/nextjs.cjs +10 -10
- package/dist/config/nextjs.js +7 -7
- package/dist/config/tailwind.cjs +53 -0
- package/dist/config/tailwind.cjs.map +1 -0
- package/dist/config/tailwind.d.ts +21 -0
- package/dist/config/tailwind.js +53 -0
- package/dist/config/tailwind.js.map +1 -0
- package/dist/host/html.cjs +20 -20
- package/dist/host/html.js +8 -8
- package/dist/host/nextjs/app/client-only.cjs +12 -12
- package/dist/host/nextjs/app/client-only.js +7 -7
- package/dist/host/react.cjs +8 -8
- package/dist/host/react.js +7 -7
- package/dist/internal/host/nextjs/app-client.cjs +7 -3
- package/dist/internal/host/nextjs/app-client.cjs.map +1 -1
- package/dist/internal/host/nextjs/app-client.js +7 -3
- package/dist/internal/host/nextjs/app-client.js.map +1 -1
- package/dist/internal/host/shared/remote-image-loader.cjs +23 -1
- package/dist/internal/host/shared/remote-image-loader.cjs.map +1 -1
- package/dist/internal/host/shared/remote-image-loader.js +23 -1
- package/dist/internal/host/shared/remote-image-loader.js.map +1 -1
- package/dist/remote/react/utils/portal.cjs +58 -0
- package/dist/remote/react/utils/portal.cjs.map +1 -0
- package/dist/remote/react/utils/portal.d.ts +12 -0
- package/dist/remote/react/utils/portal.js +58 -0
- package/dist/remote/react/utils/portal.js.map +1 -0
- package/dist/{turbopack-5VGMYUL4.cjs → turbopack-5WAY6QIC.cjs} +11 -11
- package/dist/{turbopack-43N2UJNN.js → turbopack-Z744H3T4.js} +4 -4
- package/dist/{webpack-FSN5UBA2.cjs → webpack-3GSL5AZJ.cjs} +11 -11
- package/dist/{webpack-LXE2UWTA.js → webpack-IQKPPBGH.js} +4 -4
- package/package.json +18 -1
- package/dist/chunk-3PR3SWYZ.js.map +0 -1
- package/dist/chunk-6PZEDIAK.cjs.map +0 -1
- package/dist/chunk-CLO56ON2.js.map +0 -1
- package/dist/chunk-YSJ4FKGI.cjs.map +0 -1
- /package/dist/{chunk-BEGVH64U.js.map → chunk-5BBEO4SE.js.map} +0 -0
- /package/dist/{chunk-24LEEDHP.js.map → chunk-CBEDRGC7.js.map} +0 -0
- /package/dist/{chunk-M6ACTSVB.js.map → chunk-IE7FXNFJ.js.map} +0 -0
- /package/dist/{chunk-XWRB6CEA.cjs.map → chunk-KMG54QXV.cjs.map} +0 -0
- /package/dist/{chunk-SULMNRMJ.cjs.map → chunk-KP544TQH.cjs.map} +0 -0
- /package/dist/{chunk-HXCW3WDT.cjs.map → chunk-OI37BBBU.cjs.map} +0 -0
- /package/dist/{chunk-TGE3K3TR.cjs.map → chunk-OVD7BRLD.cjs.map} +0 -0
- /package/dist/{chunk-RZGFQTX6.js.map → chunk-XEO3XD67.js.map} +0 -0
- /package/dist/{turbopack-5VGMYUL4.cjs.map → turbopack-5WAY6QIC.cjs.map} +0 -0
- /package/dist/{turbopack-43N2UJNN.js.map → turbopack-Z744H3T4.js.map} +0 -0
- /package/dist/{webpack-FSN5UBA2.cjs.map → webpack-3GSL5AZJ.cjs.map} +0 -0
- /package/dist/{webpack-LXE2UWTA.js.map → webpack-IQKPPBGH.js.map} +0 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkOI37BBBUcjs = require('./chunk-OI37BBBU.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
var _chunk3AX5WLZDcjs = require('./chunk-3AX5WLZD.cjs');
|
|
@@ -21,7 +21,7 @@ var _chunkN3SQTOSEcjs = require('./chunk-N3SQTOSE.cjs');
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _chunkOZCVXVKUcjs = require('./chunk-OZCVXVKU.cjs');
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
var _chunkZ2SLBFQLcjs = require('./chunk-Z2SLBFQL.cjs');
|
|
@@ -92,7 +92,7 @@ function setAttributesFromProps(el, props) {
|
|
|
92
92
|
function useResolveClientUrl(prop, urlHref) {
|
|
93
93
|
const { resolveClientUrl: contextValue } = _context.useRemoteComponentsContext.call(void 0, );
|
|
94
94
|
const raw = _nullishCoalesce(prop, () => ( contextValue));
|
|
95
|
-
return _react.useMemo.call(void 0, () =>
|
|
95
|
+
return _react.useMemo.call(void 0, () => _chunkOI37BBBUcjs.bindResolveClientUrl.call(void 0, raw, urlHref), [raw, urlHref]);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
// src/host/react/hooks/use-shadow-root.ts
|
|
@@ -154,7 +154,7 @@ function getRemoteComponentHtml(html) {
|
|
|
154
154
|
return ssrRemoteComponentContainer.innerHTML;
|
|
155
155
|
}
|
|
156
156
|
const remoteComponentContainer = temp.querySelectorAll(
|
|
157
|
-
`div[data-bundle][data-route][data-runtime][id^="${
|
|
157
|
+
`div[data-bundle][data-route][data-runtime][id^="${_chunkOZCVXVKUcjs.DEFAULT_COMPONENT_NAME}"],div[data-bundle][data-route],div#__next,remote-component:not([src])`
|
|
158
158
|
);
|
|
159
159
|
if (remoteComponentContainer.length > 0) {
|
|
160
160
|
return `${Array.from(temp.querySelectorAll("link,script")).map((link) => link.outerHTML).join("")}${Array.from(remoteComponentContainer).map((container) => container.outerHTML).join("")}`;
|
|
@@ -179,7 +179,7 @@ function ConsumeRemoteComponent({
|
|
|
179
179
|
mode = "open",
|
|
180
180
|
reset,
|
|
181
181
|
credentials: credentialsProp,
|
|
182
|
-
name: nameProp =
|
|
182
|
+
name: nameProp = _chunkOZCVXVKUcjs.DEFAULT_COMPONENT_NAME,
|
|
183
183
|
shared: sharedProp,
|
|
184
184
|
children,
|
|
185
185
|
onBeforeLoad,
|
|
@@ -195,22 +195,22 @@ function ConsumeRemoteComponent({
|
|
|
195
195
|
const credentials = _nullishCoalesce(_nullishCoalesce(credentialsProp, () => ( contextCredentials)), () => ( "same-origin"));
|
|
196
196
|
const shared = _nullishCoalesce(_nullishCoalesce(sharedProp, () => ( contextShared)), () => ( {}));
|
|
197
197
|
const emitter = _react.useMemo.call(void 0,
|
|
198
|
-
() =>
|
|
198
|
+
() => _chunkOI37BBBUcjs.makeReactEmitter.call(void 0, { onBeforeLoad, onLoad, onError, onChange }),
|
|
199
199
|
[onBeforeLoad, onLoad, onError, onChange]
|
|
200
200
|
);
|
|
201
201
|
const name = _react.useMemo.call(void 0,
|
|
202
|
-
() =>
|
|
202
|
+
() => _chunkOI37BBBUcjs.resolveNameFromSrc.call(void 0, src, nameProp),
|
|
203
203
|
[src, nameProp]
|
|
204
204
|
);
|
|
205
205
|
const [data, setData] = _react.useState.call(void 0,
|
|
206
206
|
null
|
|
207
207
|
);
|
|
208
|
-
const url = _react.useMemo.call(void 0, () =>
|
|
208
|
+
const url = _react.useMemo.call(void 0, () => _chunkOI37BBBUcjs.getClientOrServerUrl.call(void 0, src, DUMMY_FALLBACK), [src]);
|
|
209
209
|
const resolveClientUrl = useResolveClientUrl(resolveClientUrlProp, url.href);
|
|
210
210
|
const id = url.origin === (typeof location !== "undefined" ? location.origin : DUMMY_FALLBACK) ? url.pathname : url.href;
|
|
211
|
-
const keySuffix = `${
|
|
211
|
+
const keySuffix = `${_chunkOZCVXVKUcjs.escapeString.call(void 0, id)}_${_chunkOZCVXVKUcjs.escapeString.call(void 0,
|
|
212
212
|
_nullishCoalesce(_optionalChain([data, 'optionalAccess', _5 => _5.name]), () => ( name))
|
|
213
|
-
)}_${
|
|
213
|
+
)}_${_chunkOZCVXVKUcjs.escapeString.call(void 0, instanceId)}`;
|
|
214
214
|
const [remoteComponent, setRemoteComponent] = _react.useState.call(void 0, null);
|
|
215
215
|
const { shadowRoot, shadowRootContainerRef } = useShadowRoot({
|
|
216
216
|
isolate,
|
|
@@ -222,6 +222,10 @@ function ConsumeRemoteComponent({
|
|
|
222
222
|
`[data-remote-component-id="shadowroot_${keySuffix}"]`
|
|
223
223
|
), 'optionalAccess', _8 => _8.shadowRoot, 'optionalAccess', _9 => _9.innerHTML]), () => ( _optionalChain([document, 'access', _10 => _10.getElementById, 'call', _11 => _11(`__REMOTE_COMPONENT${name}`), 'optionalAccess', _12 => _12.innerHTML]))), () => ( _optionalChain([document, 'access', _13 => _13.querySelector, 'call', _14 => _14(`div[data-bundle][data-route][id^="${name}"]`), 'optionalAccess', _15 => _15.innerHTML]))), () => ( _optionalChain([document, 'access', _16 => _16.querySelector, 'call', _17 => _17("div[data-bundle][data-route]"), 'optionalAccess', _18 => _18.innerHTML]))) : null
|
|
224
224
|
);
|
|
225
|
+
const initialSsrContentRef = _react.useRef.call(void 0, htmlRef.current != null);
|
|
226
|
+
const [stylesReady, setStylesReady] = _react.useState.call(void 0,
|
|
227
|
+
() => !(typeof document !== "undefined" && isolate !== false && Boolean(src) && !initialSsrContentRef.current)
|
|
228
|
+
);
|
|
225
229
|
const endTemplateRef = _react.useRef.call(void 0, null);
|
|
226
230
|
const childrenRef = _react.useRef.call(void 0,
|
|
227
231
|
typeof document !== "undefined" ? (() => {
|
|
@@ -236,7 +240,7 @@ function ConsumeRemoteComponent({
|
|
|
236
240
|
return elements;
|
|
237
241
|
})() : []
|
|
238
242
|
);
|
|
239
|
-
const hostStateRef = _react.useRef.call(void 0,
|
|
243
|
+
const hostStateRef = _react.useRef.call(void 0, _chunkOI37BBBUcjs.createHostState.call(void 0, ));
|
|
240
244
|
const componentHydrationHtml = _react.useRef.call(void 0, null);
|
|
241
245
|
const prevRemoteComponentContainerRef = _react.useRef.call(void 0, null);
|
|
242
246
|
const unmountRef = _react.useRef.call(void 0, null);
|
|
@@ -276,6 +280,59 @@ function ConsumeRemoteComponent({
|
|
|
276
280
|
}
|
|
277
281
|
}
|
|
278
282
|
}, [shadowRoot, remoteComponent, name]);
|
|
283
|
+
_react.useLayoutEffect.call(void 0, () => {
|
|
284
|
+
const currentSrc = src ? typeof src === "string" ? src : src.href : null;
|
|
285
|
+
if (stylesReady || initialSsrContentRef.current || !shadowRoot || !data || data.src !== currentSrc) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const expectedStylesheets = (_nullishCoalesce(data.links, () => ( []))).filter(
|
|
289
|
+
(link) => link.rel === "stylesheet"
|
|
290
|
+
);
|
|
291
|
+
if (expectedStylesheets.length === 0) {
|
|
292
|
+
setStylesReady(true);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const expectedHrefs = new Set(
|
|
296
|
+
expectedStylesheets.map((link) => new URL(link.href, url).href)
|
|
297
|
+
);
|
|
298
|
+
const links = Array.from(
|
|
299
|
+
shadowRoot.querySelectorAll('link[rel="stylesheet"]')
|
|
300
|
+
).filter((link) => expectedHrefs.has(link.href));
|
|
301
|
+
if (links.length < expectedHrefs.size) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
if (links.length === 0) {
|
|
305
|
+
setStylesReady(true);
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
let pending = links.length;
|
|
309
|
+
let settled = false;
|
|
310
|
+
const onSettled = () => {
|
|
311
|
+
pending -= 1;
|
|
312
|
+
if (!settled && pending <= 0) {
|
|
313
|
+
settled = true;
|
|
314
|
+
setStylesReady(true);
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
const cleanups = links.map((link) => {
|
|
318
|
+
if (link.sheet) {
|
|
319
|
+
onSettled();
|
|
320
|
+
return () => {
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
link.addEventListener("load", onSettled, { once: true });
|
|
324
|
+
link.addEventListener("error", onSettled, { once: true });
|
|
325
|
+
return () => {
|
|
326
|
+
link.removeEventListener("load", onSettled);
|
|
327
|
+
link.removeEventListener("error", onSettled);
|
|
328
|
+
};
|
|
329
|
+
});
|
|
330
|
+
return () => {
|
|
331
|
+
for (const cleanup of cleanups) {
|
|
332
|
+
cleanup();
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
}, [shadowRoot, data, stylesReady, src, url]);
|
|
279
336
|
_react.useEffect.call(void 0, () => {
|
|
280
337
|
if (src && src !== hostStateRef.current.prevSrc) {
|
|
281
338
|
const previousSrc = hostStateRef.current.prevSrc;
|
|
@@ -289,6 +346,9 @@ function ConsumeRemoteComponent({
|
|
|
289
346
|
const { signal } = hostStateRef.current.abortController;
|
|
290
347
|
emitter.beforeLoad(src);
|
|
291
348
|
hostStateRef.current.stage = "loading";
|
|
349
|
+
if (isolate !== false && !initialSsrContentRef.current) {
|
|
350
|
+
setStylesReady(false);
|
|
351
|
+
}
|
|
292
352
|
_react.startTransition.call(void 0, async () => {
|
|
293
353
|
try {
|
|
294
354
|
let html = getRemoteComponentHtml(
|
|
@@ -302,7 +362,7 @@ function ConsumeRemoteComponent({
|
|
|
302
362
|
_nullishCoalesce(_optionalChain([resolveClientUrl, 'optionalCall', _29 => _29(url.href)]), () => ( url.href)),
|
|
303
363
|
location.href
|
|
304
364
|
);
|
|
305
|
-
const res = await
|
|
365
|
+
const res = await _chunkOI37BBBUcjs.fetchWithHooks.call(void 0, resolvedUrl, fetchInit, {
|
|
306
366
|
onRequest,
|
|
307
367
|
onResponse,
|
|
308
368
|
abortController: hostStateRef.current.abortController
|
|
@@ -321,7 +381,7 @@ function ConsumeRemoteComponent({
|
|
|
321
381
|
const userShared = await shared;
|
|
322
382
|
if (signal.aborted)
|
|
323
383
|
return;
|
|
324
|
-
const prepared =
|
|
384
|
+
const prepared = _chunkOI37BBBUcjs.preparePipeline.call(void 0, {
|
|
325
385
|
html,
|
|
326
386
|
name,
|
|
327
387
|
url,
|
|
@@ -362,11 +422,25 @@ function ConsumeRemoteComponent({
|
|
|
362
422
|
href: new URL(_nullishCoalesce(link.getAttribute("href"), () => ( link.href)), url).href,
|
|
363
423
|
...link.getAttributeNames().reduce((acc, key) => {
|
|
364
424
|
if (key !== "href") {
|
|
365
|
-
acc[_nullishCoalesce(
|
|
425
|
+
acc[_nullishCoalesce(_chunkOZCVXVKUcjs.attrToProp[key], () => ( key))] = _nullishCoalesce(link.getAttribute(key), () => ( ""));
|
|
366
426
|
}
|
|
367
427
|
return acc;
|
|
368
428
|
}, {})
|
|
369
429
|
}));
|
|
430
|
+
const stylesheetLinks = Array.from(linkElements).filter(
|
|
431
|
+
(link) => link.getAttribute("rel") === "stylesheet"
|
|
432
|
+
);
|
|
433
|
+
if (typeof _reactdom.preload === "function") {
|
|
434
|
+
for (const link of stylesheetLinks) {
|
|
435
|
+
_reactdom.preload.call(void 0,
|
|
436
|
+
new URL(_nullishCoalesce(link.getAttribute("href"), () => ( link.href)), url).href,
|
|
437
|
+
{
|
|
438
|
+
as: "style",
|
|
439
|
+
fetchPriority: "high"
|
|
440
|
+
}
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
370
444
|
const inlineScripts = (isRemoteComponent ? component : doc).querySelectorAll(
|
|
371
445
|
"script:not([src]):not([data-src]):not([id*='_rsc']):not([id='__NEXT_DATA__']):not([id='__REMOTE_NEXT_DATA__'])"
|
|
372
446
|
);
|
|
@@ -424,7 +498,7 @@ function ConsumeRemoteComponent({
|
|
|
424
498
|
});
|
|
425
499
|
self.__next_s = prevNextScripts;
|
|
426
500
|
}
|
|
427
|
-
const rscName = rsc ? `__remote_component_rsc_${
|
|
501
|
+
const rscName = rsc ? `__remote_component_rsc_${_chunkOZCVXVKUcjs.escapeString.call(void 0, id)}_${_chunkOZCVXVKUcjs.escapeString.call(void 0,
|
|
428
502
|
remoteName
|
|
429
503
|
)}` : void 0;
|
|
430
504
|
if (rsc) {
|
|
@@ -495,9 +569,10 @@ function ConsumeRemoteComponent({
|
|
|
495
569
|
);
|
|
496
570
|
emitter.load(src);
|
|
497
571
|
}
|
|
572
|
+
setStylesReady(true);
|
|
498
573
|
hostStateRef.current.stage = "loaded";
|
|
499
574
|
} else {
|
|
500
|
-
const result = await
|
|
575
|
+
const result = await _chunkOI37BBBUcjs.loadPrepared.call(void 0, {
|
|
501
576
|
prepared,
|
|
502
577
|
url,
|
|
503
578
|
signal,
|
|
@@ -566,8 +641,8 @@ function ConsumeRemoteComponent({
|
|
|
566
641
|
const metadataJson = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "script", { "data-remote-component": true, type: "application/json", children: JSON.stringify({
|
|
567
642
|
name: _optionalChain([data, 'optionalAccess', _33 => _33.name]) || name,
|
|
568
643
|
bundle: _optionalChain([data, 'optionalAccess', _34 => _34.bundle]) || "default",
|
|
569
|
-
route: _optionalChain([data, 'optionalAccess', _35 => _35.route]) ||
|
|
570
|
-
runtime: hostStateRef.current.prevIsRemoteComponent ?
|
|
644
|
+
route: _optionalChain([data, 'optionalAccess', _35 => _35.route]) || _chunkOZCVXVKUcjs.DEFAULT_ROUTE,
|
|
645
|
+
runtime: hostStateRef.current.prevIsRemoteComponent ? _chunkOZCVXVKUcjs.RUNTIME_SCRIPT : _optionalChain([data, 'optionalAccess', _36 => _36.runtime]) || _chunkOZCVXVKUcjs.RUNTIME_WEBPACK
|
|
571
646
|
}) });
|
|
572
647
|
const resetStyle = reset ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "style", { "data-remote-components-reset": "react", children: `:host { all: initial; }` }) : null;
|
|
573
648
|
const linksToRender = _optionalChain([data, 'optionalAccess', _37 => _37.links, 'optionalAccess', _38 => _38.map, 'call', _39 => _39((link) => /* @__PURE__ */ _react.createElement.call(void 0,
|
|
@@ -616,14 +691,17 @@ function ConsumeRemoteComponent({
|
|
|
616
691
|
if (shadowRemoteComponentHtml) {
|
|
617
692
|
shadowRemoteComponentHtml.remove();
|
|
618
693
|
}
|
|
694
|
+
const hideForStyles = !initialSsrContentRef.current && !stylesReady;
|
|
619
695
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
620
696
|
metadataJson,
|
|
697
|
+
hideForStyles ? children : null,
|
|
621
698
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
622
699
|
"div",
|
|
623
700
|
{
|
|
624
701
|
"data-remote-component-id": `shadowroot_${keySuffix}`,
|
|
625
702
|
id: `shadowroot_${_nullishCoalesce(_optionalChain([data, 'optionalAccess', _44 => _44.name]), () => ( name))}`,
|
|
626
703
|
ref: shadowRootContainerRef,
|
|
704
|
+
style: hideForStyles ? { display: "none" } : void 0,
|
|
627
705
|
children: [
|
|
628
706
|
typeof document === "undefined" ? (
|
|
629
707
|
// eslint-disable-next-line react/no-unknown-property
|
|
@@ -679,4 +757,4 @@ function ConsumeRemoteComponent({
|
|
|
679
757
|
|
|
680
758
|
|
|
681
759
|
exports.useRemoteNavigate = useRemoteNavigate; exports.ConsumeRemoteComponent = ConsumeRemoteComponent;
|
|
682
|
-
//# sourceMappingURL=chunk-
|
|
760
|
+
//# sourceMappingURL=chunk-W7RJUCZQ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/host/react/index.tsx","../src/runtime/html/set-attributes-from-props.ts","../src/host/react/hooks/use-resolve-client-url.ts","../src/host/react/hooks/use-shadow-root.ts","../src/host/react/utils/extract-remote-html.ts","../src/host/react/hooks/use-remote-navigate.ts"],"names":["useEffect","useLayoutEffect","useMemo","useRef","useState","useRemoteComponentsContext"],"mappings":"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","sourcesContent":["import {\n startTransition,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { createPortal, preload } from 'react-dom';\nimport { useRemoteComponentsContext } from '#internal/host/react/context';\nimport { fetchWithHooks } from '#internal/host/server/fetch-with-hooks';\nimport { getClientOrServerUrl } from '#internal/host/server/get-client-or-server-url';\nimport type { ConsumeRemoteComponentConfig } from '#internal/host/shared/config';\nimport { makeReactEmitter } from '#internal/host/shared/lifecycle';\nimport { loadPrepared, preparePipeline } from '#internal/host/shared/pipeline';\nimport type { ConsumeServerData } from '#internal/host/shared/server-handoff';\nimport { createHostState } from '#internal/host/shared/state';\nimport { resolveNameFromSrc } from '#internal/host/utils/resolve-name-from-src';\nimport {\n DEFAULT_COMPONENT_NAME,\n DEFAULT_ROUTE,\n RUNTIME_SCRIPT,\n RUNTIME_WEBPACK,\n} from '#internal/runtime/constants';\nimport { setAttributesFromProps } from '#internal/runtime/html/set-attributes-from-props';\nimport { loadStaticRemoteComponent } from '#internal/runtime/loaders/static-loader';\nimport { getNamespace } from '#internal/runtime/namespace';\nimport { attrToProp, escapeString } from '#internal/utils';\nimport { isAbortError } from '#internal/utils/abort';\nimport {\n errorFromFailedFetch,\n RemoteComponentsError,\n} from '#internal/utils/error';\nimport type { MountOrUnmountFunction } from '#remote-components/runtime/types';\nimport { useResolveClientUrl } from './hooks/use-resolve-client-url';\nimport { useShadowRoot } from './hooks/use-shadow-root';\nimport {\n DUMMY_FALLBACK,\n getRemoteComponentHtml,\n} from './utils/extract-remote-html';\n\n/**\n * Props for the React remote component host.\n *\n * Extends {@link ConsumeRemoteComponentConfig} with `children` for loading\n * fallback content.\n *\n * To react to navigations originating from embedded remote components, set up\n * a single top-level subscription with `onRemoteNavigate` from\n * `remote-components/host/navigation` and route the event to your host's\n * router.\n */\nexport interface ConsumeRemoteComponentProps\n extends ConsumeRemoteComponentConfig {\n /** Loading fallback content displayed while the remote component is being fetched. */\n children?: React.ReactNode;\n}\n\n/**\n * ConsumeRemoteComponent is a React component that fetches and renders a remote component.\n * It supports SSR and can isolate the remote component in a shadow DOM.\n *\n * @param props - The properties for the remote component.\n * @returns A React component that renders the remote component.\n *\n * @example\n *\n * Use the `<ConsumeRemoteComponent>` in your React application to consume a remote component from a remote application:\n *\n * ```tsx\n * import { ConsumeRemoteComponent } from 'remote-components/host/react';\n *\n * export default function App() {\n * return (\n * <>\n * <h1>Welcome to My App</h1>\n * <p>This page consumes a remote component from another application.</p>\n * <ConsumeRemoteComponent src=\"/nextjs-app-remote/components/header\" />\n * </>\n * );\n * }\n * ```\n *\n * To share modules, you can provide a shared module map with references to the shared modules:\n *\n * ```tsx\n * <ConsumeRemoteComponent\n * src=\"/nextjs-app-remote/components/header\"\n * shared={{\n * '@/components/provider': () => import('@/components/host-provider')\n * }}\n * />\n * ```\n */\nexport function ConsumeRemoteComponent({\n src,\n isolate,\n mode = 'open',\n reset,\n credentials: credentialsProp,\n name: nameProp = DEFAULT_COMPONENT_NAME,\n shared: sharedProp,\n children,\n onBeforeLoad,\n onLoad,\n onError,\n onChange,\n onRequest,\n onResponse,\n resolveClientUrl: resolveClientUrlProp,\n}: ConsumeRemoteComponentProps) {\n const instanceId = useId();\n\n const { credentials: contextCredentials, shared: contextShared } =\n useRemoteComponentsContext();\n const credentials = credentialsProp ?? contextCredentials ?? 'same-origin';\n const shared = sharedProp ?? contextShared ?? {};\n const emitter = useMemo(\n () => makeReactEmitter({ onBeforeLoad, onLoad, onError, onChange }),\n [onBeforeLoad, onLoad, onError, onChange],\n );\n\n const name = useMemo(\n () => resolveNameFromSrc(src, nameProp),\n [src, nameProp],\n );\n\n const [data, setData] = useState<Omit<ConsumeServerData, 'children'> | null>(\n null,\n );\n\n const url = useMemo(() => getClientOrServerUrl(src, DUMMY_FALLBACK), [src]);\n\n const resolveClientUrl = useResolveClientUrl(resolveClientUrlProp, url.href);\n\n // for relative src paths, use just the pathname as the unique id.\n // for static urls, use the full url as the unique id as the path may not be unique.\n // this id needs to be the same for server and client side rendering.\n // note that if this needs to be more unique, can pass through the bundle as an id prop and ammend it to this id.\n const id =\n url.origin ===\n (typeof location !== 'undefined' ? location.origin : DUMMY_FALLBACK)\n ? url.pathname\n : url.href;\n\n //instanceId prevents multiple components with the same src from sharing a shadow root\n const keySuffix = `${escapeString(id)}_${escapeString(\n data?.name ?? name,\n )}_${escapeString(instanceId)}`;\n\n const [remoteComponent, setRemoteComponent] = useState<\n React.ReactNode | Error\n >(null);\n\n const { shadowRoot, shadowRootContainerRef } = useShadowRoot({\n isolate,\n mode,\n keySuffix,\n });\n\n const htmlRef = useRef<string | null>(\n typeof document !== 'undefined'\n ? (document.querySelector(\n `[data-remote-component-id=\"shadowroot_${keySuffix}\"]`,\n )?.shadowRoot?.innerHTML ??\n document.getElementById(`__REMOTE_COMPONENT${name}`)?.innerHTML ??\n document.querySelector(`div[data-bundle][data-route][id^=\"${name}\"]`)\n ?.innerHTML ??\n document.querySelector('div[data-bundle][data-route]')?.innerHTML)\n : null,\n );\n // True when the shadow root already had SSR/declarative-shadow-DOM content at\n // mount — its styles are already present, so the FOUC-hiding below stays off.\n const initialSsrContentRef = useRef(htmlRef.current != null);\n\n // False until the remote's forwarded stylesheets load. A client-only shadow\n // root has no SSR style baseline, so the component would paint unstyled (FOUC)\n // before its `<link>`s load; we hide the host and show the `children`\n // placeholder until then. Starts \"not ready\" for client isolated loads so the\n // placeholder covers the whole fetch + style load, from first paint.\n const [stylesReady, setStylesReady] = useState(\n () =>\n !(\n typeof document !== 'undefined' &&\n isolate !== false &&\n Boolean(src) &&\n !initialSsrContentRef.current\n ),\n );\n\n const endTemplateRef = useRef<HTMLTemplateElement | null>(null);\n // collect initial content that needs to be removed after remote component renders\n const childrenRef = useRef(\n typeof document !== 'undefined'\n ? (() => {\n let el = document.querySelector(`template[id=\"${name}_start\"]`);\n const elements = [];\n while (el && el.id !== `${name}_end`) {\n if (\n el.id !== `${name}_start` &&\n !el.getAttribute('data-remote-component')\n ) {\n elements.push(el);\n }\n el = el.nextElementSibling as HTMLTemplateElement | null;\n }\n return elements;\n })()\n : [],\n );\n const hostStateRef = useRef(createHostState());\n const componentHydrationHtml = useRef<string | null>(null);\n const prevRemoteComponentContainerRef = useRef<HTMLDivElement | null>(null);\n const unmountRef = useRef<Set<MountOrUnmountFunction> | null>(null);\n\n // Clean up the shadow root cache on unmount to prevent memory leaks\n useLayoutEffect(() => {\n return () => {\n delete getNamespace().shadowRoots[keySuffix];\n };\n }, [keySuffix]);\n\n useLayoutEffect(() => {\n // Clear initial content after remote component renders\n if (childrenRef.current.length > 0 && remoteComponent) {\n childrenRef.current.forEach((el) => {\n el.remove();\n });\n childrenRef.current = [];\n }\n }, [remoteComponent]);\n\n useLayoutEffect(() => {\n if (shadowRoot && remoteComponent) {\n const resetStyles = shadowRoot.querySelectorAll(\n 'style[data-remote-components-reset]',\n );\n // ensure we only have one reset style in the shadow root\n if (resetStyles.length > 1) {\n resetStyles.forEach((style, index) => {\n if (\n index > 0 &&\n style.getAttribute('data-remote-components-reset') !== 'react'\n ) {\n style.remove();\n }\n });\n }\n\n // clear the html ref after hydration\n htmlRef.current = null;\n\n // clear all nodes except links and styles until the start marker\n // the marker gets only rendered on hydration\n let el: ChildNode | null = shadowRoot.childNodes[0] ?? null;\n while (el && (!('id' in el) || el.id !== `${name}_start`)) {\n const nextEl = el.nextSibling;\n if (el.nodeName !== 'LINK' && el.nodeName !== 'STYLE') {\n el.parentNode?.removeChild(el);\n }\n el = nextEl;\n }\n }\n }, [shadowRoot, remoteComponent, name]);\n\n // Reveal the hidden host once the remote's stylesheets are loaded. This reads\n // each `<link>`'s actual state rather than relying solely on `onLoad`, because\n // a `load` event does NOT fire for a stylesheet the browser already has cached\n // (e.g. on back-navigation, which reuses the same `<link>`) — so an onLoad-only\n // gate would stay hidden forever. An already-loaded link has a non-null\n // `.sheet`; for the rest we wait for `load`/`error` (error too, so a failed\n // sheet can't pin the host hidden). Runs whenever a load produces new `data`.\n useLayoutEffect(() => {\n const currentSrc = src ? (typeof src === 'string' ? src : src.href) : null;\n if (\n stylesReady ||\n initialSsrContentRef.current ||\n !shadowRoot ||\n !data ||\n data.src !== currentSrc\n ) {\n return;\n }\n const expectedStylesheets = (data.links ?? []).filter(\n (link) => link.rel === 'stylesheet',\n );\n if (expectedStylesheets.length === 0) {\n setStylesReady(true);\n return;\n }\n const expectedHrefs = new Set(\n expectedStylesheets.map((link) => new URL(link.href as string, url).href),\n );\n const links = Array.from(\n shadowRoot.querySelectorAll<HTMLLinkElement>('link[rel=\"stylesheet\"]'),\n ).filter((link) => expectedHrefs.has(link.href));\n // The expected links may not have been portaled into the shadow root yet.\n if (links.length < expectedHrefs.size) {\n return;\n }\n // Defensive: if the expected set collapsed to nothing, reveal rather than\n // risk pinning the host hidden.\n if (links.length === 0) {\n setStylesReady(true);\n return;\n }\n let pending = links.length;\n let settled = false;\n const onSettled = () => {\n pending -= 1;\n if (!settled && pending <= 0) {\n settled = true;\n setStylesReady(true);\n }\n };\n const cleanups = links.map((link) => {\n if (link.sheet) {\n onSettled();\n return () => {};\n }\n link.addEventListener('load', onSettled, { once: true });\n link.addEventListener('error', onSettled, { once: true });\n return () => {\n link.removeEventListener('load', onSettled);\n link.removeEventListener('error', onSettled);\n };\n });\n return () => {\n for (const cleanup of cleanups) {\n cleanup();\n }\n };\n }, [shadowRoot, data, stylesReady, src, url]);\n\n useEffect(() => {\n if (src && src !== hostStateRef.current.prevSrc) {\n const previousSrc = hostStateRef.current.prevSrc;\n const previousName = hostStateRef.current.prevName;\n hostStateRef.current.prevSrc = src;\n\n if (previousSrc !== null) {\n htmlRef.current = null;\n }\n\n // Abort any in-progress load so the latest src always wins.\n hostStateRef.current.abortController?.abort();\n hostStateRef.current.abortController = new AbortController();\n const { signal } = hostStateRef.current.abortController;\n\n emitter.beforeLoad(src);\n hostStateRef.current.stage = 'loading';\n\n // Re-show the placeholder for the whole of this load on client isolated renders.\n if (isolate !== false && !initialSsrContentRef.current) {\n setStylesReady(false);\n }\n\n startTransition(async () => {\n try {\n let html = getRemoteComponentHtml(\n htmlRef.current ??\n (endTemplateRef.current?.previousElementSibling?.tagName === 'div'\n ? endTemplateRef.current.previousElementSibling.innerHTML\n : ''),\n );\n\n if (!html && src) {\n // fetch the remote component\n const fetchInit = {\n credentials,\n } as RequestInit;\n\n const resolvedUrl = new URL(\n resolveClientUrl?.(url.href) ?? url.href,\n location.href,\n );\n const res = await fetchWithHooks(resolvedUrl, fetchInit, {\n onRequest,\n onResponse,\n abortController: hostStateRef.current.abortController,\n });\n\n if (!res || !res.ok) {\n throw await errorFromFailedFetch(url.href, resolvedUrl, res);\n }\n\n // get the full HTML content as a string\n const remoteHtml = await res.text();\n if (signal.aborted) return;\n htmlRef.current = remoteHtml;\n html = getRemoteComponentHtml(remoteHtml);\n }\n\n if (signal.aborted) return;\n\n const userShared = await shared;\n if (signal.aborted) return;\n\n const prepared = preparePipeline({\n html,\n name,\n url,\n shared: userShared,\n resolveClientUrl,\n });\n const { doc, parsed } = prepared;\n const {\n component,\n name: remoteName,\n isRemoteComponent,\n metadata,\n rsc,\n remoteShared,\n links: linkElements,\n } = parsed;\n\n if (hostStateRef.current.prevIsRemoteComponent) {\n if (shadowRoot) {\n shadowRoot.innerHTML = '';\n }\n const prevUrl = hostStateRef.current.prevUrl;\n if (prevUrl && getNamespace().unmountFns[prevUrl.href]) {\n const unmountPromises = Promise.all(\n Array.from(unmountRef.current ?? []).map(async (unmount) =>\n unmount(\n shadowRoot ?? prevRemoteComponentContainerRef.current,\n ),\n ),\n );\n unmountRef.current = null;\n await unmountPromises;\n }\n }\n hostStateRef.current.prevIsRemoteComponent = isRemoteComponent;\n hostStateRef.current.prevUrl = url;\n hostStateRef.current.prevName = remoteName;\n\n const links = linkElements.map((link) => ({\n href: new URL(link.getAttribute('href') ?? link.href, url).href,\n ...link\n .getAttributeNames()\n .reduce<Record<string, string>>((acc, key) => {\n if (key !== 'href') {\n acc[attrToProp[key] ?? key] = link.getAttribute(key) ?? '';\n }\n return acc;\n }, {}),\n }));\n\n const stylesheetLinks = Array.from(linkElements).filter(\n (link) => link.getAttribute('rel') === 'stylesheet',\n );\n\n // Preload the stylesheets now, before the remote's scripts are fetched\n // and evaluated below. The CSS download then overlaps that (much\n // larger) work instead of starting only when the shadow `<link>`s\n // render — so the reveal isn't waiting on CSS queued behind the JS.\n // The browser matches each preload to the later shadow `<link>` by\n // URL, so there's no double fetch. Matches the Next App Router host.\n if (typeof preload === 'function') {\n for (const link of stylesheetLinks) {\n preload(\n new URL(link.getAttribute('href') ?? link.href, url).href,\n {\n as: 'style',\n fetchPriority: 'high',\n },\n );\n }\n }\n\n // handle inline scripts in the remote component\n const inlineScripts = (\n isRemoteComponent ? component : doc\n ).querySelectorAll(\n \"script:not([src]):not([data-src]):not([id*='_rsc']):not([id='__NEXT_DATA__']):not([id='__REMOTE_NEXT_DATA__'])\",\n );\n\n if (!isRemoteComponent) {\n // Next.js Script support\n const self = globalThis as typeof globalThis & {\n __next_s: [string, Record<string, string>][];\n };\n const prevNextScripts = self.__next_s;\n const nextScripts = [] as [string, Record<string, string>][];\n // eslint-disable-next-line camelcase\n self.__next_s = nextScripts;\n\n // TODO: needs to be cancellable with a singular listener for the abort signal https://linear.app/vercel/issue/MFES-1253/handle-abortcontroller-clean-up-scenarios\n await Promise.all(\n Array.from(inlineScripts)\n .filter(\n (script) =>\n !(\n script.id.endsWith('_shared') &&\n script.getAttribute('type') === 'application/json' &&\n typeof script.getAttribute(\n 'data-remote-components-shared',\n ) === 'string'\n ),\n )\n .map((script) => {\n return new Promise((resolve) => {\n // only handle inline scripts with content, but not Next.js RSC scripts\n if (\n script.textContent &&\n !script.textContent.includes('self.__next_f=') &&\n !script.textContent.includes('self.__next_f.push')\n ) {\n // if script is inline javascript, then execute using blob\n if (\n !script.getAttribute('type') ||\n script.getAttribute('type') === 'text/javascript' ||\n script.getAttribute('type') === 'application/javascript'\n ) {\n const newScript = document.createElement('script');\n\n // scripts loaded from external sources needs this workaround\n const blob = new Blob([script.textContent], {\n type: 'application/javascript',\n });\n const blobUrl = URL.createObjectURL(blob);\n\n newScript.onload = () => {\n resolve(undefined);\n // script executed and safe to remove\n URL.revokeObjectURL(blobUrl);\n newScript.remove();\n };\n // on error we still want to resolve to not block the remote component loading\n newScript.onerror = () => {\n URL.revokeObjectURL(blobUrl);\n newScript.remove();\n resolve(undefined);\n };\n\n newScript.src = blobUrl;\n // TODO: needs to be cancellable https://linear.app/vercel/issue/MFES-1253/handle-abortcontroller-clean-up-scenarios\n document.body.appendChild(newScript);\n } else {\n resolve(undefined);\n document.body.appendChild(script);\n }\n } else {\n resolve(undefined);\n }\n });\n }),\n );\n // process the remote component Next.js Script container\n nextScripts.forEach(([scriptSrc, props]) => {\n const script = document.createElement('script');\n // when we have a script src, apply it (inline scripts have `0` as src)\n if (scriptSrc) {\n script.src = scriptSrc;\n }\n // apply Script props\n if (typeof props.children === 'string') {\n script.textContent = props.children;\n }\n setAttributesFromProps(script, props);\n document.head.appendChild(script);\n });\n // restore previous Next.js Script container\n // eslint-disable-next-line camelcase\n self.__next_s = prevNextScripts;\n }\n\n const rscName = rsc\n ? `__remote_component_rsc_${escapeString(id)}_${escapeString(\n remoteName,\n )}`\n : undefined;\n if (rsc) {\n rsc.textContent =\n rsc.textContent?.replace(\n new RegExp(`self\\\\[\"${remoteName}\"\\\\]`, 'g'),\n `self[\"${rscName}\"]`,\n ) ?? '';\n document.body.appendChild(rsc);\n }\n\n const newData = {\n ...metadata,\n links,\n remoteShared,\n src: typeof src === 'string' ? src : src.href,\n serverUrl: url.href,\n data: rsc\n ? (rsc.textContent || '').split('\\n').filter(Boolean)\n : [],\n };\n\n componentHydrationHtml.current = `${Array.from(\n doc.querySelectorAll('link,style'),\n )\n .map((link) => link.outerHTML)\n .join('')}${\n reset\n ? `<style data-remote-components-reset=\"\">:host { all: initial; }</style>`\n : ''\n }${component.innerHTML}`;\n\n if (isRemoteComponent) {\n // Only call onChange when not on first load (matching HTML implementation)\n if (previousSrc !== undefined) {\n emitter.change({\n previousSrc: previousSrc ?? null,\n nextSrc: src,\n previousName,\n nextName: remoteName,\n });\n }\n setData(newData);\n if (shadowRoot) {\n const shadowRootHtml = reset\n ? `<style data-remote-components-reset=\"\">:host { all: initial; }</style>${component.innerHTML}`\n : component.innerHTML;\n shadowRoot.innerHTML = shadowRootHtml;\n htmlRef.current = null;\n setRemoteComponent(null);\n const { mount, unmount } = await loadStaticRemoteComponent(\n Array.from(shadowRoot.querySelectorAll('script')),\n url,\n resolveClientUrl,\n );\n unmountRef.current = unmount;\n await Promise.all(\n Array.from(mount).map((mountFn) => mountFn(shadowRoot)),\n );\n emitter.load(src);\n } else if (isolate === false) {\n setRemoteComponent(\n // TODO: remove wrapper div by converting HTML to RSC or React tree\n <div\n dangerouslySetInnerHTML={{ __html: component.innerHTML }}\n ref={prevRemoteComponentContainerRef}\n />,\n );\n htmlRef.current = null;\n const { mount, unmount } = await loadStaticRemoteComponent(\n Array.from(component.querySelectorAll('script')),\n url,\n resolveClientUrl,\n );\n unmountRef.current = unmount;\n await Promise.all(\n Array.from(mount).map((mountFn) =>\n mountFn(prevRemoteComponentContainerRef.current),\n ),\n );\n emitter.load(src);\n }\n // Static remotes inject styles directly (no portal links → `onLoad`\n // never fires), so reveal now; the gate only covers the dynamic path.\n setStylesReady(true);\n hostStateRef.current.stage = 'loaded';\n } else {\n const result = await loadPrepared({\n prepared,\n url,\n signal,\n shared: userShared,\n resolveClientUrl,\n container: shadowRoot,\n rscName,\n });\n if (rsc) {\n rsc.remove();\n }\n\n setData(newData);\n // Only call onChange when not on first load (matching HTML implementation)\n if (previousSrc !== undefined) {\n emitter.change({\n previousSrc: previousSrc ?? null,\n nextSrc: src,\n previousName,\n nextName: remoteName,\n });\n }\n if (result.status === 'aborted') {\n return;\n }\n if (result.status === 'error') {\n hostStateRef.current.stage = 'error';\n setRemoteComponent(result.error);\n emitter.error(result.error);\n } else if (result.status === 'loaded') {\n hostStateRef.current.stage = 'loaded';\n setRemoteComponent(result.component);\n emitter.load(src);\n }\n }\n } catch (error) {\n // AbortError is expected when loading is cancelled - exit cleanly\n if (isAbortError(error)) {\n hostStateRef.current.stage = 'idle';\n return;\n }\n hostStateRef.current.stage = 'error';\n setRemoteComponent(error as Error);\n emitter.error(error);\n }\n });\n }\n }, [\n url,\n src,\n isolate,\n credentials,\n name,\n shared,\n shadowRoot,\n reset,\n id,\n emitter.beforeLoad,\n emitter.load,\n emitter.error,\n emitter.change,\n onRequest,\n onResponse,\n resolveClientUrl,\n ]);\n\n if (remoteComponent instanceof Error) {\n throw remoteComponent;\n }\n\n const metadataJson = (\n <script data-remote-component type=\"application/json\">\n {JSON.stringify({\n name: data?.name || name,\n bundle: data?.bundle || 'default',\n route: data?.route || DEFAULT_ROUTE,\n runtime: hostStateRef.current.prevIsRemoteComponent\n ? RUNTIME_SCRIPT\n : data?.runtime || RUNTIME_WEBPACK,\n })}\n </script>\n );\n const resetStyle = reset ? (\n <style data-remote-components-reset=\"react\">{`:host { all: initial; }`}</style>\n ) : null;\n const linksToRender: React.ReactNode[] | null =\n data?.links?.map((link) => (\n <link\n {...link}\n href={new URL(link.href as string, url).href}\n key={JSON.stringify(link)}\n />\n )) || null;\n const componentToRender = (\n <>\n {resetStyle}\n {linksToRender}\n {remoteComponent ?? children}\n </>\n );\n\n if (componentHydrationHtml.current && shadowRoot && !shadowRoot.innerHTML) {\n shadowRoot.innerHTML = componentHydrationHtml.current;\n componentHydrationHtml.current = null;\n\n if (hostStateRef.current.prevIsRemoteComponent) {\n // ensure we load static resources when hydrating a remote component in shadow DOM\n loadStaticRemoteComponent(\n Array.from(shadowRoot.querySelectorAll('script')),\n url,\n resolveClientUrl,\n )\n .then(({ mount }) => {\n return Promise.all(\n Array.from(mount).map((mountFn) => mountFn(shadowRoot)),\n );\n })\n .then(() => {\n if (src) {\n emitter.load(src);\n }\n })\n .catch((e) => {\n const error = new RemoteComponentsError(\n `Error mounting remote component from \"${url.href}\"`,\n {\n cause: e,\n },\n );\n setRemoteComponent(error);\n emitter.error(error);\n });\n }\n }\n\n if (isolate !== false) {\n const shadowRemoteComponentHtml =\n shadowRoot?.querySelector(`#__REMOTE_COMPONENT${name}`) ??\n shadowRoot?.querySelector('div[data-bundle][data-route]');\n if (shadowRemoteComponentHtml) {\n shadowRemoteComponentHtml.remove();\n }\n\n // While stylesheets are pending, `display: none` the shadow host (its\n // `<link>`s still load, so `onLoad` fires) and render the `children`\n // placeholder in the light DOM, where the host page styles it.\n const hideForStyles = !initialSsrContentRef.current && !stylesReady;\n\n return (\n <>\n {metadataJson}\n {hideForStyles ? children : null}\n <div\n data-remote-component-id={`shadowroot_${keySuffix}`}\n id={`shadowroot_${data?.name ?? name}`}\n ref={shadowRootContainerRef}\n style={hideForStyles ? { display: 'none' } : undefined}\n >\n {typeof document === 'undefined' ? (\n // eslint-disable-next-line react/no-unknown-property\n <template shadowrootmode={mode}>\n {typeof document === 'undefined' ? (\n <div\n dangerouslySetInnerHTML={{\n __html: `<img\n alt=\"\" decoding=\"async\" style=\"display:none\"\n src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==\"\n onload=\"(function(el){\n // Capture the shadow root during SSR hydration so the client-side\n // useShadowRoot hook can find it.\n const root = el.getRootNode();\n globalThis.__remote_components_shadowroot_${keySuffix}=root;\n el.parentElement.remove();\n })(this)\"\n />`,\n }}\n />\n ) : null}\n {resetStyle}\n {linksToRender}\n {children}\n </template>\n ) : null}\n {shadowRoot && remoteComponent\n ? createPortal(\n <>\n <template id={`${name}_start`} />\n {resetStyle}\n {linksToRender}\n {remoteComponent}\n <template id={`${name}_end`} ref={endTemplateRef} />\n </>,\n shadowRoot,\n )\n : null}\n </div>\n </>\n );\n }\n htmlRef.current = null;\n\n // render start/end markers for the remote component\n return (\n <>\n <template id={`${name}_start`} />\n {metadataJson}\n {componentToRender}\n <template id={`${name}_end`} ref={endTemplateRef} />\n </>\n );\n}\n\nexport type {\n HookOptions,\n OnRequestHook,\n OnResponseHook,\n} from '#internal/host/shared/fetch-interceptors';\nexport type { RemoteNavigateEvent } from '#internal/host/shared/navigate-event';\nexport { useRemoteNavigate } from './hooks/use-remote-navigate';\n","// extracted from Next.js source at https://github.com/vercel/next.js/blob/canary/packages/next/src/client/set-attributes-from-props.ts\n\nconst DOMAttributeNames: Record<string, string> = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n noModule: 'noModule',\n};\n\nconst ignoreProps = [\n 'onLoad',\n 'onReady',\n 'dangerouslySetInnerHTML',\n 'children',\n 'onError',\n 'strategy',\n 'stylesheets',\n];\n\nfunction isBooleanScriptAttribute(\n attr: string,\n): attr is 'async' | 'defer' | 'noModule' {\n return ['async', 'defer', 'noModule'].includes(attr);\n}\n\nexport function setAttributesFromProps(el: HTMLElement, props: object) {\n for (const [p, value] of Object.entries(props)) {\n if (!Object.hasOwn(props, p)) continue;\n if (ignoreProps.includes(p)) continue;\n\n // we don't render undefined props to the DOM\n if (value === undefined) {\n continue;\n }\n\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n\n if (el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr)) {\n // Correctly assign boolean script attributes\n // https://github.com/vercel/next.js/pull/20748\n (el as HTMLScriptElement)[attr] = Boolean(value);\n } else {\n el.setAttribute(attr, String(value));\n }\n\n // Remove falsy non-zero boolean attributes so they are correctly interpreted\n // (e.g. if we set them to false, this coerces to the string \"false\", which the browser interprets as true)\n if (\n value === false ||\n (el.tagName === 'SCRIPT' &&\n isBooleanScriptAttribute(attr) &&\n (!value || value === 'false'))\n ) {\n // Call setAttribute before, as we need to set and unset the attribute to override force async:\n // https://html.spec.whatwg.org/multipage/scripting.html#script-force-async\n el.setAttribute(attr, '');\n el.removeAttribute(attr);\n }\n }\n}\n","import { useMemo } from 'react';\nimport { useRemoteComponentsContext } from '#internal/host/react/context';\nimport { bindResolveClientUrl } from '#internal/runtime/url/default-resolve-client-url';\nimport type { ResolveClientUrl } from '#internal/runtime/url/resolve-client-url';\n\nexport function useResolveClientUrl(\n prop: ResolveClientUrl | undefined,\n urlHref: string,\n) {\n const { resolveClientUrl: contextValue } = useRemoteComponentsContext();\n const raw = prop ?? contextValue;\n return useMemo(() => bindResolveClientUrl(raw, urlHref), [raw, urlHref]);\n}\n","import { useLayoutEffect, useRef, useState } from 'react';\nimport { getNamespace } from '#internal/runtime/namespace';\n\ninterface UseShadowRootOptions {\n /** Whether CSS isolation is enabled */\n isolate: boolean | undefined;\n /** Shadow DOM mode */\n mode: 'open' | 'closed';\n /** Unique key suffix for identifying this shadow root */\n keySuffix: string;\n}\n\ninterface UseShadowRootResult {\n /** The shadow root element, or null if not isolated */\n shadowRoot: ShadowRoot | null;\n /** Ref to attach to the shadow host container element */\n shadowRootContainerRef: React.RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages shadow root lifecycle for CSS isolation.\n *\n * Handles:\n * - Initial shadow root discovery from SSR or declarative shadow DOM\n * - Creating shadow root as fallback for browsers without declarative shadow DOM support\n * - Cleanup when isolation is disabled\n * - Re-attachment when isolation is re-enabled\n */\nexport function useShadowRoot({\n isolate,\n mode,\n keySuffix,\n}: UseShadowRootOptions): UseShadowRootResult {\n const shadowRootContainerRef = useRef<HTMLDivElement | null>(null);\n\n const [shadowRoot, setShadowRoot] = useState<ShadowRoot | null>(() => {\n const shadowRoots = getNamespace().shadowRoots;\n const ssrShadowRoot =\n typeof document !== 'undefined'\n ? (document.querySelector(\n `[data-remote-component-id=\"shadowroot_${keySuffix}\"]`,\n )?.shadowRoot ??\n shadowRoots[keySuffix] ??\n null)\n : null;\n // Clear the reference after reading it\n shadowRoots[keySuffix] = null;\n return ssrShadowRoot;\n });\n\n useLayoutEffect(() => {\n const shadowRoots = getNamespace().shadowRoots;\n if (\n isolate !== false &&\n typeof document !== 'undefined' &&\n (!shadowRoot || !shadowRoot.isConnected)\n ) {\n let shadowRootElement: ShadowRoot | null = null;\n const element = document.querySelector(\n `[data-remote-component-id=\"shadowroot_${keySuffix}\"]`,\n );\n shadowRootElement = shadowRoots[keySuffix] ?? element?.shadowRoot ?? null;\n\n if (!shadowRootElement && element) {\n // Create a shadow root if it doesn't exist.\n // This is a fallback for browsers that don't support declarative shadow DOM.\n try {\n shadowRootElement = element.attachShadow({ mode });\n shadowRoots[keySuffix] = shadowRootElement;\n } catch {\n // Do nothing if attachShadow fails because of existing shadow root\n }\n }\n\n if (shadowRootElement) {\n // Remove all nodes from the shadow root except links (preserves stylesheets)\n shadowRootElement.querySelectorAll('*:not(link)').forEach((node) => {\n node.remove();\n });\n setShadowRoot(shadowRootElement);\n }\n } else if (isolate === false && shadowRoot) {\n shadowRoots[keySuffix] = null;\n setShadowRoot(null);\n }\n }, [isolate, shadowRoot, mode, keySuffix]);\n\n return { shadowRoot, shadowRootContainerRef };\n}\n","import { DEFAULT_COMPONENT_NAME } from '#internal/runtime/constants';\n\n/**\n * Dummy URL used as a fallback base for URL parsing when no real base URL is available.\n * This is used during SSR or when location is not defined.\n */\nexport const DUMMY_FALLBACK = 'http://remote-components-dummy-fallback';\n\n/**\n * Extracts the relevant HTML content from a remote component response.\n *\n * Handles multiple remote component formats:\n * - Next.js Pages Router SSR wrapper (`div[id^=\"__REMOTE_COMPONENT\"]`)\n * - App Router remote components (`div[data-bundle][data-route]`)\n * - Next.js pages (`div#__next`)\n * - Web component format (`remote-component:not([src])`)\n *\n * @param html - Raw HTML string from the remote component response\n * @returns Extracted HTML content with links and scripts, or empty string if not found\n */\nexport function getRemoteComponentHtml(html: string): string {\n if (typeof document === 'undefined') return html;\n\n const parser = new DOMParser();\n const temp = parser.parseFromString(html, 'text/html');\n\n // Used by the Next.js Pages Router remote as a wrapper\n const ssrRemoteComponentContainer = temp.querySelector(\n 'div[id^=\"__REMOTE_COMPONENT\"]',\n );\n if (ssrRemoteComponentContainer) {\n return ssrRemoteComponentContainer.innerHTML;\n }\n\n // Remote component content from various sources\n const remoteComponentContainer = temp.querySelectorAll(\n `div[data-bundle][data-route][data-runtime][id^=\"${DEFAULT_COMPONENT_NAME}\"],div[data-bundle][data-route],div#__next,remote-component:not([src])`,\n );\n if (remoteComponentContainer.length > 0) {\n return `${Array.from(temp.querySelectorAll('link,script'))\n .map((link) => link.outerHTML)\n .join('')}${Array.from(remoteComponentContainer)\n .map((container) => container.outerHTML)\n .join('')}`;\n }\n\n return '';\n}\n","import { useEffect, useRef } from 'react';\nimport { onRemoteNavigate } from '#internal/host/navigation';\nimport type { RemoteNavigateEvent } from '#internal/host/shared/navigate-event';\n\n/**\n * Subscribe to remote component navigations. The callback is captured in a ref\n * so the listener is registered once — no `useCallback` or dep array needed.\n *\n * @example React Router\n * ```tsx\n * const navigate = useNavigate();\n * // Always replace — the polyfill already pushed/replaced the browser history entry.\n * useRemoteNavigate((e) => navigate(e.pathname + e.search, { replace: true }));\n * ```\n */\nexport function useRemoteNavigate(\n callback: (event: RemoteNavigateEvent) => void,\n): void {\n const callbackRef = useRef(callback);\n // Written during render (not in an effect) — the standard useCallbackRef\n // pattern. Safe under concurrent rendering: navigation events are user-driven\n // and can't fire mid-render.\n callbackRef.current = callback;\n useEffect(() => onRemoteNavigate((event) => callbackRef.current(event)), []);\n}\n"]}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
remoteFetchHeaders
|
|
3
|
+
} from "./chunk-GAXJTFBV.js";
|
|
1
4
|
import {
|
|
2
5
|
loadScripts
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IE7FXNFJ.js";
|
|
4
7
|
import {
|
|
5
8
|
setupRemoteScope
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CBEDRGC7.js";
|
|
7
10
|
import {
|
|
8
11
|
applySharedModules,
|
|
9
12
|
buildWebpackResolve,
|
|
10
13
|
initializeSharedModules,
|
|
11
14
|
nextClientPagesLoader
|
|
12
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-5BBEO4SE.js";
|
|
13
16
|
import {
|
|
14
17
|
loadStaticRemoteComponent
|
|
15
18
|
} from "./chunk-LEKG4YWI.js";
|
|
@@ -24,7 +27,7 @@ import {
|
|
|
24
27
|
collapseDoubleSlashes,
|
|
25
28
|
escapeString,
|
|
26
29
|
getMissingSharedModulesMessage
|
|
27
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-3DR4Z24C.js";
|
|
28
31
|
import {
|
|
29
32
|
RemoteComponentsError,
|
|
30
33
|
logDebug,
|
|
@@ -32,9 +35,6 @@ import {
|
|
|
32
35
|
multipleRemoteComponentsError,
|
|
33
36
|
warnCrossOriginFetchError
|
|
34
37
|
} from "./chunk-ULXU6XWH.js";
|
|
35
|
-
import {
|
|
36
|
-
remoteFetchHeaders
|
|
37
|
-
} from "./chunk-GAXJTFBV.js";
|
|
38
38
|
|
|
39
39
|
// src/host/server/fetch-with-hooks.ts
|
|
40
40
|
async function fetchWithWarning(url, init) {
|
|
@@ -709,4 +709,4 @@ export {
|
|
|
709
709
|
resolveNameFromSrc,
|
|
710
710
|
bindResolveClientUrl
|
|
711
711
|
};
|
|
712
|
-
//# sourceMappingURL=chunk-
|
|
712
|
+
//# sourceMappingURL=chunk-XEO3XD67.js.map
|
package/dist/config/nextjs.cjs
CHANGED
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var _chunk6PZEDIAKcjs = require('../chunk-6PZEDIAK.cjs');
|
|
6
|
-
require('../chunk-Z2SLBFQL.cjs');
|
|
7
|
-
require('../chunk-5KTAEO52.cjs');
|
|
8
5
|
|
|
6
|
+
var _chunkN5VQR2PWcjs = require('../chunk-N5VQR2PW.cjs');
|
|
9
7
|
|
|
10
8
|
|
|
11
9
|
|
|
12
|
-
var _chunkBBXVML3Dcjs = require('../chunk-BBXVML3D.cjs');
|
|
13
|
-
require('../chunk-KE7QPAQ4.cjs');
|
|
14
10
|
|
|
11
|
+
var _chunkOZCVXVKUcjs = require('../chunk-OZCVXVKU.cjs');
|
|
12
|
+
require('../chunk-Z2SLBFQL.cjs');
|
|
13
|
+
require('../chunk-5KTAEO52.cjs');
|
|
15
14
|
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
|
|
19
|
-
var
|
|
18
|
+
var _chunkBBXVML3Dcjs = require('../chunk-BBXVML3D.cjs');
|
|
19
|
+
require('../chunk-KE7QPAQ4.cjs');
|
|
20
20
|
require('../chunk-SHFJ5OQA.cjs');
|
|
21
21
|
|
|
22
22
|
// src/config/nextjs/index.ts
|
|
@@ -155,7 +155,7 @@ function withRemoteComponentsConfig(nextConfig, options) {
|
|
|
155
155
|
".remote-components/shared/pages-host.tsx"
|
|
156
156
|
);
|
|
157
157
|
const appShared = /* @__PURE__ */ new Set([
|
|
158
|
-
...
|
|
158
|
+
..._chunkOZCVXVKUcjs.CORE_REACT_SHARED_KEYS,
|
|
159
159
|
"next/navigation",
|
|
160
160
|
"next/dist/client/components/navigation",
|
|
161
161
|
"next/link",
|
|
@@ -169,7 +169,7 @@ function withRemoteComponentsConfig(nextConfig, options) {
|
|
|
169
169
|
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _ => _.shared]), () => ( []))
|
|
170
170
|
]);
|
|
171
171
|
const pagesShared = /* @__PURE__ */ new Set([
|
|
172
|
-
...
|
|
172
|
+
..._chunkOZCVXVKUcjs.CORE_REACT_SHARED_KEYS,
|
|
173
173
|
"next/router",
|
|
174
174
|
"next/link",
|
|
175
175
|
"next/dist/shared/lib/image-loader",
|
|
@@ -177,7 +177,7 @@ function withRemoteComponentsConfig(nextConfig, options) {
|
|
|
177
177
|
"next/form",
|
|
178
178
|
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _2 => _2.shared]), () => ( []))
|
|
179
179
|
]);
|
|
180
|
-
const vendorShared = { ...
|
|
180
|
+
const vendorShared = { ..._chunkOZCVXVKUcjs.VENDOR_SHARED };
|
|
181
181
|
const resolve = _enhancedresolve2.default.create.sync({
|
|
182
182
|
conditionNames: ["browser", "import", "module", "require"],
|
|
183
183
|
..._fs.existsSync.call(void 0, _path.join.call(void 0, process.cwd(), "tsconfig.json")) ? {
|
|
@@ -248,7 +248,7 @@ ${sharedManifest ? `export const sharedManifest = ${sharedManifest};
|
|
|
248
248
|
).join(",\n");
|
|
249
249
|
return generateSharedModule({
|
|
250
250
|
sharedEntries,
|
|
251
|
-
sharedManifest: `{ protocol: '${
|
|
251
|
+
sharedManifest: `{ protocol: '${_chunkOZCVXVKUcjs.SHARED_MODULE_MANIFEST_PROTOCOL}', requirements: [
|
|
252
252
|
${requirements}
|
|
253
253
|
] }`
|
|
254
254
|
});
|
package/dist/config/nextjs.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ConditionalExecPlugin,
|
|
3
|
+
ModuleIdEmbedPlugin,
|
|
4
|
+
PatchRequirePlugin,
|
|
5
|
+
RemoteWebpackRequirePlugin
|
|
6
|
+
} from "../chunk-CTUJSWCM.js";
|
|
1
7
|
import {
|
|
2
8
|
CORE_REACT_SHARED_KEYS,
|
|
3
9
|
SHARED_MODULE_MANIFEST_PROTOCOL,
|
|
4
10
|
VENDOR_SHARED
|
|
5
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-3DR4Z24C.js";
|
|
6
12
|
import "../chunk-D5GNZB6O.js";
|
|
7
13
|
import "../chunk-STIJO4AG.js";
|
|
8
14
|
import {
|
|
@@ -11,12 +17,6 @@ import {
|
|
|
11
17
|
logWarn
|
|
12
18
|
} from "../chunk-ULXU6XWH.js";
|
|
13
19
|
import "../chunk-X6YKUJKH.js";
|
|
14
|
-
import {
|
|
15
|
-
ConditionalExecPlugin,
|
|
16
|
-
ModuleIdEmbedPlugin,
|
|
17
|
-
PatchRequirePlugin,
|
|
18
|
-
RemoteWebpackRequirePlugin
|
|
19
|
-
} from "../chunk-CTUJSWCM.js";
|
|
20
20
|
import "../chunk-ENYGL5CO.js";
|
|
21
21
|
|
|
22
22
|
// src/config/nextjs/index.ts
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/config/tailwind/index.ts
|
|
2
|
+
var DEFAULT_SELECTORS = [
|
|
3
|
+
":host",
|
|
4
|
+
":host *",
|
|
5
|
+
":host *::before",
|
|
6
|
+
":host *::after",
|
|
7
|
+
":host *::backdrop",
|
|
8
|
+
":host *::file-selector-button"
|
|
9
|
+
];
|
|
10
|
+
function remoteComponentsTailwindShadowDom(options = {}) {
|
|
11
|
+
return {
|
|
12
|
+
postcssPlugin: "remote-components-tailwind-shadow-dom",
|
|
13
|
+
Once(root) {
|
|
14
|
+
const declarations = /* @__PURE__ */ new Map();
|
|
15
|
+
root.walkAtRules("property", (atRule) => {
|
|
16
|
+
const propertyName = atRule.params.trim();
|
|
17
|
+
if (!propertyName.startsWith("--tw-")) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
atRule.walkDecls("initial-value", (declaration) => {
|
|
21
|
+
declarations.set(propertyName, declaration.value);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
if (declarations.size === 0) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
root.append({
|
|
28
|
+
type: "atrule",
|
|
29
|
+
name: "layer",
|
|
30
|
+
params: "properties",
|
|
31
|
+
raws: {},
|
|
32
|
+
nodes: [
|
|
33
|
+
{
|
|
34
|
+
type: "rule",
|
|
35
|
+
raws: {},
|
|
36
|
+
selector: (_nullishCoalesce(options.selectors, () => ( DEFAULT_SELECTORS))).join(",\n"),
|
|
37
|
+
nodes: Array.from(declarations, ([prop, value]) => ({
|
|
38
|
+
type: "decl",
|
|
39
|
+
raws: {},
|
|
40
|
+
prop,
|
|
41
|
+
value
|
|
42
|
+
}))
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
remoteComponentsTailwindShadowDom.postcss = true;
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
exports.remoteComponentsTailwindShadowDom = remoteComponentsTailwindShadowDom;
|
|
53
|
+
//# sourceMappingURL=tailwind.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/config/tailwind/index.ts"],"names":[],"mappings":";AAsBA,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,kCACd,UAAoD,CAAC,GACrD;AACA,SAAO;AAAA,IACL,eAAe;AAAA,IACf,KAAK,MAAmB;AACtB,YAAM,eAAe,oBAAI,IAAoB;AAE7C,WAAK,YAAY,YAAY,CAAC,WAAW;AACvC,cAAM,eAAe,OAAO,OAAO,KAAK;AAExC,YAAI,CAAC,aAAa,WAAW,OAAO,GAAG;AACrC;AAAA,QACF;AAEA,eAAO,UAAU,iBAAiB,CAAC,gBAAgB;AACjD,uBAAa,IAAI,cAAc,YAAY,KAAK;AAAA,QAClD,CAAC;AAAA,MACH,CAAC;AAED,UAAI,aAAa,SAAS,GAAG;AAC3B;AAAA,MACF;AAEA,WAAK,OAAO;AAAA,QACV,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM,CAAC;AAAA,QACP,OAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,MAAM,CAAC;AAAA,YACP,WAAW,QAAQ,aAAa,mBAAmB,KAAK,KAAK;AAAA,YAC7D,OAAO,MAAM,KAAK,cAAc,CAAC,CAAC,MAAM,KAAK,OAAO;AAAA,cAClD,MAAM;AAAA,cACN,MAAM,CAAC;AAAA,cACP;AAAA,cACA;AAAA,YACF,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAGE,kCAGA,UAAU","sourcesContent":["export interface RemoteComponentsTailwindShadowDomOptions {\n selectors?: string[];\n}\n\ninterface PostCssDeclaration {\n prop: string;\n value: string;\n}\n\ninterface PostCssAtRule {\n params: string;\n walkDecls(\n name: string,\n callback: (declaration: PostCssDeclaration) => void,\n ): void;\n}\n\ninterface PostCssRoot {\n walkAtRules(name: string, callback: (atRule: PostCssAtRule) => void): void;\n append(node: unknown): void;\n}\n\nconst DEFAULT_SELECTORS = [\n ':host',\n ':host *',\n ':host *::before',\n ':host *::after',\n ':host *::backdrop',\n ':host *::file-selector-button',\n];\n\nexport function remoteComponentsTailwindShadowDom(\n options: RemoteComponentsTailwindShadowDomOptions = {},\n) {\n return {\n postcssPlugin: 'remote-components-tailwind-shadow-dom',\n Once(root: PostCssRoot) {\n const declarations = new Map<string, string>();\n\n root.walkAtRules('property', (atRule) => {\n const propertyName = atRule.params.trim();\n\n if (!propertyName.startsWith('--tw-')) {\n return;\n }\n\n atRule.walkDecls('initial-value', (declaration) => {\n declarations.set(propertyName, declaration.value);\n });\n });\n\n if (declarations.size === 0) {\n return;\n }\n\n root.append({\n type: 'atrule',\n name: 'layer',\n params: 'properties',\n raws: {},\n nodes: [\n {\n type: 'rule',\n raws: {},\n selector: (options.selectors ?? DEFAULT_SELECTORS).join(',\\n'),\n nodes: Array.from(declarations, ([prop, value]) => ({\n type: 'decl',\n raws: {},\n prop,\n value,\n })),\n },\n ],\n });\n },\n };\n}\n\n(\n remoteComponentsTailwindShadowDom as typeof remoteComponentsTailwindShadowDom & {\n postcss?: boolean;\n }\n).postcss = true;\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface RemoteComponentsTailwindShadowDomOptions {
|
|
2
|
+
selectors?: string[];
|
|
3
|
+
}
|
|
4
|
+
interface PostCssDeclaration {
|
|
5
|
+
prop: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}
|
|
8
|
+
interface PostCssAtRule {
|
|
9
|
+
params: string;
|
|
10
|
+
walkDecls(name: string, callback: (declaration: PostCssDeclaration) => void): void;
|
|
11
|
+
}
|
|
12
|
+
interface PostCssRoot {
|
|
13
|
+
walkAtRules(name: string, callback: (atRule: PostCssAtRule) => void): void;
|
|
14
|
+
append(node: unknown): void;
|
|
15
|
+
}
|
|
16
|
+
declare function remoteComponentsTailwindShadowDom(options?: RemoteComponentsTailwindShadowDomOptions): {
|
|
17
|
+
postcssPlugin: string;
|
|
18
|
+
Once(root: PostCssRoot): void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { RemoteComponentsTailwindShadowDomOptions, remoteComponentsTailwindShadowDom };
|