piral-blazor 0.14.25-beta.4245 → 0.14.26-beta.4273

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/convert.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { BlazorOptions } from './esm/types';
1
2
  export interface HtmlComponent<TProps> {
2
3
  component: {
3
4
  mount(element: HTMLElement, props: TProps, ctx: any, locals: any): void;
@@ -9,5 +10,7 @@ export interface HtmlComponent<TProps> {
9
10
  export interface BlazorConverter {
10
11
  (moduleName: string, args?: Record<string, any>): HtmlComponent<any>;
11
12
  }
13
+ export declare function defineBlazorOptions(options: BlazorOptions): void;
12
14
  export declare const fromBlazor: BlazorConverter;
13
15
  export declare const defineBlazorReferences: (references: string[]) => void;
16
+ export declare const releaseBlazorReferences: () => Promise<void>;
package/convert.js CHANGED
@@ -2,8 +2,13 @@ import { createConverter } from './esm/converter';
2
2
  import { createDependencyLoader } from './esm/dependencies';
3
3
  var convert = createConverter(true);
4
4
  var loader = createDependencyLoader(convert);
5
+ var blazorOptions = undefined;
6
+ export function defineBlazorOptions(options) {
7
+ blazorOptions = options;
8
+ }
5
9
  export var fromBlazor = function (moduleName, args) { return ({
6
10
  type: 'html',
7
- component: convert(moduleName, loader.getDependency(), args)
11
+ component: convert(moduleName, loader.getDependency(), args, blazorOptions)
8
12
  }); };
9
13
  export var defineBlazorReferences = loader.defineBlazorReferences;
14
+ export var releaseBlazorReferences = loader.releaseBlazorReferences;
@@ -2,5 +2,5 @@ import type { BaseComponentProps, ForeignComponent } from 'piral-core';
2
2
  import { BlazorOptions } from './types';
3
3
  export declare function createConverter(lazy: boolean): {
4
4
  <TProps extends BaseComponentProps>(moduleName: string, dependency: () => Promise<void>, args: Record<string, any>, options?: BlazorOptions): ForeignComponent<TProps>;
5
- loader: Promise<unknown>;
5
+ loader: any;
6
6
  };
package/esm/converter.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { addGlobalEventListeners, attachEvents, removeGlobalEventListeners } from './events';
2
2
  import { activate, deactivate, createBootLoader, reactivate } from './interop';
3
3
  import bootConfig from '../infra.codegen';
4
+ const noop = () => { };
4
5
  const mediaRules = [
5
6
  { attribute: 'src', selector: 'img, embed, video > source, video > track, audio > source' },
6
7
  { attribute: 'srcset', selector: 'picture > source' },
@@ -23,12 +24,21 @@ export function createConverter(lazy) {
23
24
  let loader = !lazy && boot();
24
25
  root.style.display = 'none';
25
26
  root.id = 'blazor-root';
27
+ const enqueueChange = (locals, update) => {
28
+ if (locals.state === 'mounted') {
29
+ update();
30
+ }
31
+ else {
32
+ locals.update = update;
33
+ }
34
+ };
26
35
  const convert = (moduleName, dependency, args, options) => ({
27
36
  mount(el, data, ctx, locals) {
28
37
  const props = Object.assign(Object.assign({}, args), data);
29
38
  el.setAttribute('data-blazor-pilet-root', 'true');
30
39
  addGlobalEventListeners(el);
31
40
  locals.state = 'fresh';
41
+ locals.update = noop;
32
42
  locals.dispose = attachEvents(el, (ev) => data.piral.renderHtmlExtension(ev.detail.target, ev.detail.props), (ev) => ev.detail.replace
33
43
  ? ctx.router.history.replace(ev.detail.to, ev.detail.store)
34
44
  : ctx.router.history.push(ev.detail.to, ev.detail.state));
@@ -42,22 +52,26 @@ export function createConverter(lazy) {
42
52
  project(locals.node, el, options);
43
53
  locals.state = 'mounted';
44
54
  locals.referenceId = refId;
55
+ locals.update();
56
+ locals.update = noop;
45
57
  }
46
58
  })
47
59
  .catch((err) => console.error(err));
48
60
  },
49
61
  update(el, data, ctx, locals) {
50
- const props = Object.assign(Object.assign({}, args), data);
51
- reactivate(moduleName, locals.referenceId, props);
62
+ enqueueChange(locals, () => {
63
+ const props = Object.assign(Object.assign({}, args), data);
64
+ reactivate(moduleName, locals.referenceId, props);
65
+ });
52
66
  },
53
67
  unmount(el, locals) {
54
68
  removeGlobalEventListeners(el);
55
69
  el.removeAttribute('data-blazor-pilet-root');
56
70
  locals.dispose();
57
- if (locals.state === 'mounted') {
71
+ enqueueChange(locals, () => {
58
72
  root.querySelector(`#${locals.id}`).appendChild(locals.node);
59
73
  deactivate(moduleName, locals.referenceId);
60
- }
74
+ });
61
75
  el.innerHTML = '';
62
76
  locals.state = 'removed';
63
77
  },
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/E,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,MAAM,UAAU,GAAG;IACjB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAC3F,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE;CACtD,CAAC;AAEF,SAAS,kBAAkB,CAAC,SAAkB,EAAE,MAAc;IAC5D,MAAM,oBAAoB,GAAG,CAAC,EAAW,EAAE,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAElH,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE;QAChD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aAC7C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAC3F,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;KACzD;AACH,CAAC;AAED,SAAS,OAAO,CAAC,SAAkB,EAAE,WAAoB,EAAE,OAAsB;IAC/E,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,KAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrF,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAUD,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;IAExB,MAAM,OAAO,GAAG,CACd,UAAkB,EAClB,UAA+B,EAC/B,IAAyB,EACzB,OAAuB,EACG,EAAE,CAAC,CAAC;QAC9B,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAoB;YACvC,MAAM,KAAK,mCAAQ,IAAI,GAAK,IAAI,CAAE,CAAC;YACnC,EAAE,CAAC,YAAY,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAElD,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAE5B,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,YAAY,CAC3B,EAAE,EACF,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EACzE,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,MAAM,CAAC,OAAO;gBACf,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7D,CAAC;YAEF,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;iBAC1B,IAAI,CAAC,UAAU,CAAC;iBAChB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;iBACvC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;oBAC5B,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;oBAClB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACxD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBAClC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;oBACzB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;iBAC5B;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAoB;YACxC,MAAM,KAAK,mCAAQ,IAAI,GAAK,IAAI,CAAE,CAAC;YACnC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,MAAoB;YAC9B,0BAA0B,CAAC,EAAE,CAAC,CAAC;YAC/B,EAAE,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7D,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aAC5C;YAED,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/E,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAE1C,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEtB,MAAM,UAAU,GAAG;IACjB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAC3F,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE;CACtD,CAAC;AAEF,SAAS,kBAAkB,CAAC,SAAkB,EAAE,MAAc;IAC5D,MAAM,oBAAoB,GAAG,CAAC,EAAW,EAAE,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAElH,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,UAAU,EAAE;QAChD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aAC7C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aAC3F,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;KACzD;AACH,CAAC;AAED,SAAS,OAAO,CAAC,SAAkB,EAAE,WAAoB,EAAE,OAAsB;IAC/E,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,KAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrF,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAWD,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;IAExB,MAAM,aAAa,GAAG,CAAC,MAAoB,EAAE,MAAkB,EAAE,EAAE;QACjE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,MAAM,EAAE,CAAC;SACV;aAAM;YACL,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;SACxB;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CACd,UAAkB,EAClB,UAA+B,EAC/B,IAAyB,EACzB,OAAuB,EACG,EAAE,CAAC,CAAC;QAC9B,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAoB;YACvC,MAAM,KAAK,mCAAQ,IAAI,GAAK,IAAI,CAAE,CAAC;YACnC,EAAE,CAAC,YAAY,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAElD,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAE5B,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;YACvB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,OAAO,GAAG,YAAY,CAC3B,EAAE,EACF,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EACzE,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,MAAM,CAAC,OAAO;gBACf,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7D,CAAC;YAEF,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;iBAC1B,IAAI,CAAC,UAAU,CAAC;iBAChB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;iBACvC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;oBAC5B,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;oBAClB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACxD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;oBAClC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;oBACzB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;oBAC3B,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;iBACtB;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAoB;YACxC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE;gBACzB,MAAM,KAAK,mCAAQ,IAAI,GAAK,IAAI,CAAE,CAAC;gBACnC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,MAAoB;YAC9B,0BAA0B,CAAC,EAAE,CAAC,CAAC;YAC/B,EAAE,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE;gBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7D,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/esm/create.js CHANGED
@@ -16,6 +16,7 @@ export function createBlazorApi(config = {}) {
16
16
  defineBlazorOptions(blazorOptions) {
17
17
  options = blazorOptions;
18
18
  },
19
+ releaseBlazorReferences: loader.releaseBlazorReferences,
19
20
  fromBlazor(moduleName, args) {
20
21
  return {
21
22
  type: 'blazor',
package/esm/create.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAcxD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAuB,EAAE;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAExB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACxE,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,OAAsB,CAAC;YAE3B,OAAO;gBACL,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;gBACrD,mBAAmB,CAAC,aAA4B;oBAC9C,OAAO,GAAG,aAAa,CAAC;gBAC1B,CAAC;gBACD,UAAU,CAAC,UAAU,EAAE,IAAI;oBACzB,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;wBAClC,UAAU;wBACV,IAAI;wBACJ,OAAO;qBACR,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAcxD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAuB,EAAE;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAExB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACxE,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,OAAsB,CAAC;YAE3B,OAAO;gBACL,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;gBACrD,mBAAmB,CAAC,aAA4B;oBAC9C,OAAO,GAAG,aAAa,CAAC;gBAC1B,CAAC;gBACD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;gBACvD,UAAU,CAAC,UAAU,EAAE,IAAI;oBACzB,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;wBAClC,UAAU;wBACV,IAAI;wBACJ,OAAO;qBACR,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -2,4 +2,5 @@ import type { createConverter } from './converter';
2
2
  export declare function createDependencyLoader(convert: ReturnType<typeof createConverter>, lazy?: boolean): {
3
3
  getDependency(): () => Promise<any>;
4
4
  defineBlazorReferences(references: Array<string>): void;
5
+ releaseBlazorReferences(): Promise<void>;
5
6
  };
@@ -1,6 +1,7 @@
1
1
  import { __awaiter } from "tslib";
2
- import { loadResource, loadResourceWithSymbol } from './interop';
2
+ import { loadResource, loadResourceWithSymbol, unloadResource } from './interop';
3
3
  export function createDependencyLoader(convert, lazy = true) {
4
+ const definedBlazorReferences = [];
4
5
  let dependency;
5
6
  return {
6
7
  getDependency() {
@@ -19,12 +20,20 @@ export function createDependencyLoader(convert, lazy = true) {
19
20
  else {
20
21
  yield loadResource(dllUrl);
21
22
  }
23
+ definedBlazorReferences.push(dllUrl);
22
24
  }
23
25
  }
24
26
  });
25
27
  let result = !lazy && convert.loader.then(load);
26
28
  dependency = () => result || (result = load());
27
29
  },
30
+ releaseBlazorReferences() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ for (const reference of definedBlazorReferences) {
33
+ yield unloadResource(reference);
34
+ }
35
+ });
36
+ },
28
37
  };
29
38
  }
30
39
  //# sourceMappingURL=dependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGjE,MAAM,UAAU,sBAAsB,CAAC,OAA2C,EAAE,IAAI,GAAG,IAAI;IAC7F,IAAI,UAA8B,CAAC;IAEnC,OAAO;QACL,aAAa;YACX,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,sBAAsB,CAAC,UAAyB;YAC9C,MAAM,IAAI,GAAG,GAAS,EAAE;gBACtB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;oBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;wBAC3B,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,MAAM,OAAO,GAAG,GAAG,mBAAmB,MAAM,CAAC;wBAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;wBAErD,IAAI,MAAM,EAAE;4BACV,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC9C;6BAAM;4BACL,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;yBAC5B;qBACF;iBACF;YACH,CAAC,CAAA,CAAC;YACF,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjF,MAAM,UAAU,sBAAsB,CAAC,OAA2C,EAAE,IAAI,GAAG,IAAI;IAC7F,MAAM,uBAAuB,GAAkB,EAAE,CAAC;IAClD,IAAI,UAA8B,CAAC;IAEnC,OAAO;QACL,aAAa;YACX,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,sBAAsB,CAAC,UAAyB;YAC9C,MAAM,IAAI,GAAG,GAAS,EAAE;gBACtB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;oBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;wBAC3B,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,MAAM,OAAO,GAAG,GAAG,mBAAmB,MAAM,CAAC;wBAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;wBAErD,IAAI,MAAM,EAAE;4BACV,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC9C;6BAAM;4BACL,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;yBAC5B;wBAED,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACtC;iBACF;YACH,CAAC,CAAA,CAAC;YACF,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACK,uBAAuB;;gBAC3B,KAAK,MAAM,SAAS,IAAI,uBAAuB,EAAE;oBAC/C,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;iBACjC;YACH,CAAC;SAAA;KACF,CAAC;AACJ,CAAC"}
package/esm/interop.d.ts CHANGED
@@ -3,5 +3,6 @@ export declare function reactivate(moduleName: string, referenceId: string, prop
3
3
  export declare function deactivate(moduleName: string, referenceId: string): any;
4
4
  export declare function loadResource(url: string): Promise<any>;
5
5
  export declare function loadResourceWithSymbol(dllUrl: string, pdbUrl: string): Promise<any>;
6
+ export declare function unloadResource(url: string): Promise<any>;
6
7
  export declare function initialize(scriptUrl: string, publicPath: string): Promise<unknown>;
7
- export declare function createBootLoader(scriptUrl: string): () => Promise<unknown>;
8
+ export declare function createBootLoader(scriptUrl: string): () => any;
package/esm/interop.js CHANGED
@@ -49,6 +49,11 @@ export function loadResourceWithSymbol(dllUrl, pdbUrl) {
49
49
  return window.DotNet.invokeMethodAsync(coreLib, 'LoadComponentsWithSymbolsFromLibrary', dllUrl, pdbUrl);
50
50
  });
51
51
  }
52
+ export function unloadResource(url) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ return window.DotNet.invokeMethodAsync(coreLib, 'UnloadComponentsFromLibrary', url);
55
+ });
56
+ }
52
57
  export function initialize(scriptUrl, publicPath) {
53
58
  return new Promise((resolve, reject) => {
54
59
  const startBlazor = createBlazorStarter(publicPath);
@@ -68,6 +73,11 @@ export function initialize(scriptUrl, publicPath) {
68
73
  }
69
74
  export function createBootLoader(scriptUrl) {
70
75
  const publicPath = computePath();
71
- return () => initialize(scriptUrl, publicPath);
76
+ return () => {
77
+ if (typeof window.$blazorLoader === 'undefined') {
78
+ window.$blazorLoader = initialize(scriptUrl, publicPath);
79
+ }
80
+ return window.$blazorLoader;
81
+ };
72
82
  }
73
83
  //# sourceMappingURL=interop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interop.js","sourceRoot":"","sources":["../src/interop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interop.js","sourceRoot":"","sources":["../src/interop.ts"],"names":[],"mappings":"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"}
package/esm/types.d.ts CHANGED
@@ -3,6 +3,7 @@ declare global {
3
3
  interface Window {
4
4
  Blazor: any;
5
5
  DotNet: any;
6
+ $blazorLoader: any;
6
7
  }
7
8
  }
8
9
  declare module 'piral-core/lib/types/custom' {
@@ -69,4 +70,8 @@ export interface PiletBlazorApi {
69
70
  * @param options The options for the Blazor components.
70
71
  */
71
72
  defineBlazorOptions(options: BlazorOptions): void;
73
+ /**
74
+ * Releases all defined blazor references from the current pilet.
75
+ */
76
+ releaseBlazorReferences(): void;
72
77
  }
@@ -2,5 +2,5 @@ import type { BaseComponentProps, ForeignComponent } from 'piral-core';
2
2
  import { BlazorOptions } from './types';
3
3
  export declare function createConverter(lazy: boolean): {
4
4
  <TProps extends BaseComponentProps>(moduleName: string, dependency: () => Promise<void>, args: Record<string, any>, options?: BlazorOptions): ForeignComponent<TProps>;
5
- loader: Promise<unknown>;
5
+ loader: any;
6
6
  };
package/lib/converter.js CHANGED
@@ -4,6 +4,7 @@ exports.createConverter = void 0;
4
4
  const events_1 = require("./events");
5
5
  const interop_1 = require("./interop");
6
6
  const infra_codegen_1 = require("../infra.codegen");
7
+ const noop = () => { };
7
8
  const mediaRules = [
8
9
  { attribute: 'src', selector: 'img, embed, video > source, video > track, audio > source' },
9
10
  { attribute: 'srcset', selector: 'picture > source' },
@@ -26,12 +27,21 @@ function createConverter(lazy) {
26
27
  let loader = !lazy && boot();
27
28
  root.style.display = 'none';
28
29
  root.id = 'blazor-root';
30
+ const enqueueChange = (locals, update) => {
31
+ if (locals.state === 'mounted') {
32
+ update();
33
+ }
34
+ else {
35
+ locals.update = update;
36
+ }
37
+ };
29
38
  const convert = (moduleName, dependency, args, options) => ({
30
39
  mount(el, data, ctx, locals) {
31
40
  const props = Object.assign(Object.assign({}, args), data);
32
41
  el.setAttribute('data-blazor-pilet-root', 'true');
33
42
  (0, events_1.addGlobalEventListeners)(el);
34
43
  locals.state = 'fresh';
44
+ locals.update = noop;
35
45
  locals.dispose = (0, events_1.attachEvents)(el, (ev) => data.piral.renderHtmlExtension(ev.detail.target, ev.detail.props), (ev) => ev.detail.replace
36
46
  ? ctx.router.history.replace(ev.detail.to, ev.detail.store)
37
47
  : ctx.router.history.push(ev.detail.to, ev.detail.state));
@@ -45,22 +55,26 @@ function createConverter(lazy) {
45
55
  project(locals.node, el, options);
46
56
  locals.state = 'mounted';
47
57
  locals.referenceId = refId;
58
+ locals.update();
59
+ locals.update = noop;
48
60
  }
49
61
  })
50
62
  .catch((err) => console.error(err));
51
63
  },
52
64
  update(el, data, ctx, locals) {
53
- const props = Object.assign(Object.assign({}, args), data);
54
- (0, interop_1.reactivate)(moduleName, locals.referenceId, props);
65
+ enqueueChange(locals, () => {
66
+ const props = Object.assign(Object.assign({}, args), data);
67
+ (0, interop_1.reactivate)(moduleName, locals.referenceId, props);
68
+ });
55
69
  },
56
70
  unmount(el, locals) {
57
71
  (0, events_1.removeGlobalEventListeners)(el);
58
72
  el.removeAttribute('data-blazor-pilet-root');
59
73
  locals.dispose();
60
- if (locals.state === 'mounted') {
74
+ enqueueChange(locals, () => {
61
75
  root.querySelector(`#${locals.id}`).appendChild(locals.node);
62
76
  (0, interop_1.deactivate)(moduleName, locals.referenceId);
63
- }
77
+ });
64
78
  el.innerHTML = '';
65
79
  locals.state = 'removed';
66
80
  },
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
package/lib/create.js CHANGED
@@ -19,6 +19,7 @@ function createBlazorApi(config = {}) {
19
19
  defineBlazorOptions(blazorOptions) {
20
20
  options = blazorOptions;
21
21
  },
22
+ releaseBlazorReferences: loader.releaseBlazorReferences,
22
23
  fromBlazor(moduleName, args) {
23
24
  return {
24
25
  type: 'blazor',
package/lib/create.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAC9C,iDAAwD;AAcxD;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAuB,EAAE;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAExB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,IAAA,2BAAe,EAAC,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACxE,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAA,qCAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,OAAsB,CAAC;YAE3B,OAAO;gBACL,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;gBACrD,mBAAmB,CAAC,aAA4B;oBAC9C,OAAO,GAAG,aAAa,CAAC;gBAC1B,CAAC;gBACD,UAAU,CAAC,UAAU,EAAE,IAAI;oBACzB,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;wBAClC,UAAU;wBACV,IAAI;wBACJ,OAAO;qBACR,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA7BD,0CA6BC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":";;;AACA,2CAA8C;AAC9C,iDAAwD;AAcxD;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAuB,EAAE;IACvD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAExB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,IAAA,2BAAe,EAAC,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CACxE,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO,GAAG,EAAE;YACV,MAAM,MAAM,GAAG,IAAA,qCAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,OAAsB,CAAC;YAE3B,OAAO;gBACL,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;gBACrD,mBAAmB,CAAC,aAA4B;oBAC9C,OAAO,GAAG,aAAa,CAAC;gBAC1B,CAAC;gBACD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;gBACvD,UAAU,CAAC,UAAU,EAAE,IAAI;oBACzB,OAAO;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;wBAClC,UAAU;wBACV,IAAI;wBACJ,OAAO;qBACR,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA9BD,0CA8BC"}
@@ -2,4 +2,5 @@ import type { createConverter } from './converter';
2
2
  export declare function createDependencyLoader(convert: ReturnType<typeof createConverter>, lazy?: boolean): {
3
3
  getDependency(): () => Promise<any>;
4
4
  defineBlazorReferences(references: Array<string>): void;
5
+ releaseBlazorReferences(): Promise<void>;
5
6
  };
@@ -4,6 +4,7 @@ exports.createDependencyLoader = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const interop_1 = require("./interop");
6
6
  function createDependencyLoader(convert, lazy = true) {
7
+ const definedBlazorReferences = [];
7
8
  let dependency;
8
9
  return {
9
10
  getDependency() {
@@ -22,12 +23,20 @@ function createDependencyLoader(convert, lazy = true) {
22
23
  else {
23
24
  yield (0, interop_1.loadResource)(dllUrl);
24
25
  }
26
+ definedBlazorReferences.push(dllUrl);
25
27
  }
26
28
  }
27
29
  });
28
30
  let result = !lazy && convert.loader.then(load);
29
31
  dependency = () => result || (result = load());
30
32
  },
33
+ releaseBlazorReferences() {
34
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
35
+ for (const reference of definedBlazorReferences) {
36
+ yield (0, interop_1.unloadResource)(reference);
37
+ }
38
+ });
39
+ },
31
40
  };
32
41
  }
33
42
  exports.createDependencyLoader = createDependencyLoader;
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":";;;;AAAA,uCAAiE;AAGjE,SAAgB,sBAAsB,CAAC,OAA2C,EAAE,IAAI,GAAG,IAAI;IAC7F,IAAI,UAA8B,CAAC;IAEnC,OAAO;QACL,aAAa;YACX,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,sBAAsB,CAAC,UAAyB;YAC9C,MAAM,IAAI,GAAG,GAAS,EAAE;gBACtB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;oBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;wBAC3B,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,MAAM,OAAO,GAAG,GAAG,mBAAmB,MAAM,CAAC;wBAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;wBAErD,IAAI,MAAM,EAAE;4BACV,MAAM,IAAA,gCAAsB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC9C;6BAAM;4BACL,MAAM,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;yBAC5B;qBACF;iBACF;YACH,CAAC,CAAA,CAAC;YACF,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AA3BD,wDA2BC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":";;;;AAAA,uCAAiF;AAGjF,SAAgB,sBAAsB,CAAC,OAA2C,EAAE,IAAI,GAAG,IAAI;IAC7F,MAAM,uBAAuB,GAAkB,EAAE,CAAC;IAClD,IAAI,UAA8B,CAAC;IAEnC,OAAO;QACL,aAAa;YACX,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,sBAAsB,CAAC,UAAyB;YAC9C,MAAM,IAAI,GAAG,GAAS,EAAE;gBACtB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;oBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;wBAC3B,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAChE,MAAM,OAAO,GAAG,GAAG,mBAAmB,MAAM,CAAC;wBAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;wBAErD,IAAI,MAAM,EAAE;4BACV,MAAM,IAAA,gCAAsB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC9C;6BAAM;4BACL,MAAM,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC;yBAC5B;wBAED,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACtC;iBACF;YACH,CAAC,CAAA,CAAC;YACF,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACK,uBAAuB;;gBAC3B,KAAK,MAAM,SAAS,IAAI,uBAAuB,EAAE;oBAC/C,MAAM,IAAA,wBAAc,EAAC,SAAS,CAAC,CAAC;iBACjC;YACH,CAAC;SAAA;KACF,CAAC;AACJ,CAAC;AAnCD,wDAmCC"}
package/lib/interop.d.ts CHANGED
@@ -3,5 +3,6 @@ export declare function reactivate(moduleName: string, referenceId: string, prop
3
3
  export declare function deactivate(moduleName: string, referenceId: string): any;
4
4
  export declare function loadResource(url: string): Promise<any>;
5
5
  export declare function loadResourceWithSymbol(dllUrl: string, pdbUrl: string): Promise<any>;
6
+ export declare function unloadResource(url: string): Promise<any>;
6
7
  export declare function initialize(scriptUrl: string, publicPath: string): Promise<unknown>;
7
- export declare function createBootLoader(scriptUrl: string): () => Promise<unknown>;
8
+ export declare function createBootLoader(scriptUrl: string): () => any;
package/lib/interop.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createBootLoader = exports.initialize = exports.loadResourceWithSymbol = exports.loadResource = exports.deactivate = exports.reactivate = exports.activate = void 0;
3
+ exports.createBootLoader = exports.initialize = exports.unloadResource = exports.loadResourceWithSymbol = exports.loadResource = exports.deactivate = exports.reactivate = exports.activate = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const events_1 = require("./events");
6
6
  const coreLib = 'Piral.Blazor.Core';
@@ -57,6 +57,12 @@ function loadResourceWithSymbol(dllUrl, pdbUrl) {
57
57
  });
58
58
  }
59
59
  exports.loadResourceWithSymbol = loadResourceWithSymbol;
60
+ function unloadResource(url) {
61
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
62
+ return window.DotNet.invokeMethodAsync(coreLib, 'UnloadComponentsFromLibrary', url);
63
+ });
64
+ }
65
+ exports.unloadResource = unloadResource;
60
66
  function initialize(scriptUrl, publicPath) {
61
67
  return new Promise((resolve, reject) => {
62
68
  const startBlazor = createBlazorStarter(publicPath);
@@ -77,7 +83,12 @@ function initialize(scriptUrl, publicPath) {
77
83
  exports.initialize = initialize;
78
84
  function createBootLoader(scriptUrl) {
79
85
  const publicPath = computePath();
80
- return () => initialize(scriptUrl, publicPath);
86
+ return () => {
87
+ if (typeof window.$blazorLoader === 'undefined') {
88
+ window.$blazorLoader = initialize(scriptUrl, publicPath);
89
+ }
90
+ return window.$blazorLoader;
91
+ };
81
92
  }
82
93
  exports.createBootLoader = createBootLoader;
83
94
  //# sourceMappingURL=interop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interop.js","sourceRoot":"","sources":["../src/interop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interop.js","sourceRoot":"","sources":["../src/interop.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -3,6 +3,7 @@ declare global {
3
3
  interface Window {
4
4
  Blazor: any;
5
5
  DotNet: any;
6
+ $blazorLoader: any;
6
7
  }
7
8
  }
8
9
  declare module 'piral-core/lib/types/custom' {
@@ -69,4 +70,8 @@ export interface PiletBlazorApi {
69
70
  * @param options The options for the Blazor components.
70
71
  */
71
72
  defineBlazorOptions(options: BlazorOptions): void;
73
+ /**
74
+ * Releases all defined blazor references from the current pilet.
75
+ */
76
+ releaseBlazorReferences(): void;
72
77
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-blazor",
3
- "version": "0.14.25-beta.4245",
3
+ "version": "0.14.26-beta.4273",
4
4
  "description": "Plugin for integrating Blazor components in Piral.",
5
5
  "keywords": [
6
6
  "piral",
@@ -62,11 +62,11 @@
62
62
  "test": "echo \"Error: run tests from root\" && exit 1"
63
63
  },
64
64
  "devDependencies": {
65
- "piral-core": "0.14.25-beta.4245"
65
+ "piral-core": "0.14.26-beta.4273"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "blazor": "*",
69
69
  "piral-core": "0.14.x"
70
70
  },
71
- "gitHead": "1ab62c6f6d1eb4442c866882310953c2a67c5998"
71
+ "gitHead": "f8504701ef573abb3ddeb6cf4e9ff9013ef98501"
72
72
  }
package/src/converter.ts CHANGED
@@ -4,6 +4,8 @@ import { activate, deactivate, createBootLoader, reactivate } from './interop';
4
4
  import { BlazorOptions } from './types';
5
5
  import bootConfig from '../infra.codegen';
6
6
 
7
+ const noop = () => {};
8
+
7
9
  const mediaRules = [
8
10
  { attribute: 'src', selector: 'img, embed, video > source, video > track, audio > source' },
9
11
  { attribute: 'srcset', selector: 'picture > source' },
@@ -29,6 +31,7 @@ interface BlazorLocals {
29
31
  referenceId: string;
30
32
  node: HTMLElement;
31
33
  dispose(): void;
34
+ update(): void;
32
35
  state: 'fresh' | 'mounted' | 'removed';
33
36
  }
34
37
 
@@ -40,6 +43,14 @@ export function createConverter(lazy: boolean) {
40
43
  root.style.display = 'none';
41
44
  root.id = 'blazor-root';
42
45
 
46
+ const enqueueChange = (locals: BlazorLocals, update: () => void) => {
47
+ if (locals.state === 'mounted') {
48
+ update();
49
+ } else {
50
+ locals.update = update;
51
+ }
52
+ };
53
+
43
54
  const convert = <TProps extends BaseComponentProps>(
44
55
  moduleName: string,
45
56
  dependency: () => Promise<void>,
@@ -53,6 +64,7 @@ export function createConverter(lazy: boolean) {
53
64
  addGlobalEventListeners(el);
54
65
 
55
66
  locals.state = 'fresh';
67
+ locals.update = noop;
56
68
  locals.dispose = attachEvents(
57
69
  el,
58
70
  (ev) => data.piral.renderHtmlExtension(ev.detail.target, ev.detail.props),
@@ -72,23 +84,27 @@ export function createConverter(lazy: boolean) {
72
84
  project(locals.node, el, options);
73
85
  locals.state = 'mounted';
74
86
  locals.referenceId = refId;
87
+ locals.update();
88
+ locals.update = noop;
75
89
  }
76
90
  })
77
91
  .catch((err) => console.error(err));
78
92
  },
79
93
  update(el, data, ctx, locals: BlazorLocals) {
80
- const props = { ...args, ...data };
81
- reactivate(moduleName, locals.referenceId, props);
94
+ enqueueChange(locals, () => {
95
+ const props = { ...args, ...data };
96
+ reactivate(moduleName, locals.referenceId, props);
97
+ });
82
98
  },
83
99
  unmount(el, locals: BlazorLocals) {
84
100
  removeGlobalEventListeners(el);
85
101
  el.removeAttribute('data-blazor-pilet-root');
86
102
  locals.dispose();
87
103
 
88
- if (locals.state === 'mounted') {
104
+ enqueueChange(locals, () => {
89
105
  root.querySelector(`#${locals.id}`).appendChild(locals.node);
90
106
  deactivate(moduleName, locals.referenceId);
91
- }
107
+ });
92
108
 
93
109
  el.innerHTML = '';
94
110
  locals.state = 'removed';
package/src/create.ts CHANGED
@@ -34,6 +34,7 @@ export function createBlazorApi(config: BlazorConfig = {}): PiralPlugin<PiletBla
34
34
  defineBlazorOptions(blazorOptions: BlazorOptions) {
35
35
  options = blazorOptions;
36
36
  },
37
+ releaseBlazorReferences: loader.releaseBlazorReferences,
37
38
  fromBlazor(moduleName, args) {
38
39
  return {
39
40
  type: 'blazor',
@@ -1,7 +1,8 @@
1
- import { loadResource, loadResourceWithSymbol } from './interop';
1
+ import { loadResource, loadResourceWithSymbol, unloadResource } from './interop';
2
2
  import type { createConverter } from './converter';
3
3
 
4
4
  export function createDependencyLoader(convert: ReturnType<typeof createConverter>, lazy = true) {
5
+ const definedBlazorReferences: Array<string> = [];
5
6
  let dependency: () => Promise<any>;
6
7
 
7
8
  return {
@@ -21,11 +22,18 @@ export function createDependencyLoader(convert: ReturnType<typeof createConverte
21
22
  } else {
22
23
  await loadResource(dllUrl);
23
24
  }
25
+
26
+ definedBlazorReferences.push(dllUrl);
24
27
  }
25
28
  }
26
29
  };
27
30
  let result = !lazy && convert.loader.then(load);
28
31
  dependency = () => result || (result = load());
29
32
  },
33
+ async releaseBlazorReferences() {
34
+ for (const reference of definedBlazorReferences) {
35
+ await unloadResource(reference);
36
+ }
37
+ },
30
38
  };
31
39
  }
package/src/interop.ts CHANGED
@@ -55,6 +55,10 @@ export async function loadResourceWithSymbol(dllUrl: string, pdbUrl: string) {
55
55
  return window.DotNet.invokeMethodAsync(coreLib, 'LoadComponentsWithSymbolsFromLibrary', dllUrl, pdbUrl);
56
56
  }
57
57
 
58
+ export async function unloadResource(url: string) {
59
+ return window.DotNet.invokeMethodAsync(coreLib, 'UnloadComponentsFromLibrary', url);
60
+ }
61
+
58
62
  export function initialize(scriptUrl: string, publicPath: string) {
59
63
  return new Promise((resolve, reject) => {
60
64
  const startBlazor = createBlazorStarter(publicPath);
@@ -78,5 +82,11 @@ export function initialize(scriptUrl: string, publicPath: string) {
78
82
 
79
83
  export function createBootLoader(scriptUrl: string) {
80
84
  const publicPath = computePath();
81
- return () => initialize(scriptUrl, publicPath);
85
+ return () => {
86
+ if (typeof window.$blazorLoader === 'undefined') {
87
+ window.$blazorLoader = initialize(scriptUrl, publicPath);
88
+ }
89
+
90
+ return window.$blazorLoader;
91
+ };
82
92
  }
package/src/types.ts CHANGED
@@ -4,6 +4,7 @@ declare global {
4
4
  interface Window {
5
5
  Blazor: any;
6
6
  DotNet: any;
7
+ $blazorLoader: any;
7
8
  }
8
9
  }
9
10
 
@@ -74,4 +75,8 @@ export interface PiletBlazorApi {
74
75
  * @param options The options for the Blazor components.
75
76
  */
76
77
  defineBlazorOptions(options: BlazorOptions): void;
78
+ /**
79
+ * Releases all defined blazor references from the current pilet.
80
+ */
81
+ releaseBlazorReferences(): void;
77
82
  }