piral-solid 0.15.0-alpha.4041 → 0.15.0-alpha.4231

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
@@ -12,7 +12,7 @@ export interface SolidConverter {
12
12
  }
13
13
  export declare function createSolidConverter(...params: Parameters<typeof createConverter>): {
14
14
  from: SolidConverter;
15
- Extension: import("solid-js").Component<import("piral-core").ExtensionSlotProps<string>>;
15
+ Extension: Component<any>;
16
16
  };
17
- declare const fromSolid: SolidConverter, SolidExtension: import("solid-js").Component<import("piral-core").ExtensionSlotProps<string>>;
17
+ declare const fromSolid: SolidConverter, SolidExtension: Component<any>;
18
18
  export { fromSolid, SolidExtension };
package/convert.js CHANGED
@@ -1,13 +1,10 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.SolidExtension = exports.fromSolid = exports.createSolidConverter = void 0;
4
- var converter_1 = require("./esm/converter");
5
- function createSolidConverter() {
1
+ import { createConverter } from './esm/converter';
2
+ export function createSolidConverter() {
6
3
  var params = [];
7
4
  for (var _i = 0; _i < arguments.length; _i++) {
8
5
  params[_i] = arguments[_i];
9
6
  }
10
- var convert = converter_1.createConverter.apply(void 0, params);
7
+ var convert = createConverter.apply(void 0, params);
11
8
  var Extension = convert.Extension;
12
9
  var from = function (root) { return ({
13
10
  type: 'html',
@@ -15,7 +12,5 @@ function createSolidConverter() {
15
12
  }); };
16
13
  return { from: from, Extension: Extension };
17
14
  }
18
- exports.createSolidConverter = createSolidConverter;
19
15
  var _a = createSolidConverter(), fromSolid = _a.from, SolidExtension = _a.Extension;
20
- exports.fromSolid = fromSolid;
21
- exports.SolidExtension = SolidExtension;
16
+ export { fromSolid, SolidExtension };
package/esm/converter.js CHANGED
@@ -1,15 +1,27 @@
1
+ import { onCleanup } from 'solid-js';
1
2
  import { render, createComponent } from 'solid-js/dom';
2
3
  import { createExtension } from './extension';
3
4
  export function createConverter(config = {}) {
4
5
  const { rootName = 'slot' } = config;
5
6
  const Extension = createExtension(rootName);
6
7
  const convert = (root) => ({
7
- mount(el, props, context) {
8
- render(() => createComponent(root, Object.assign({ context }, props)), el);
8
+ mount(el, props, context, locals) {
9
+ locals.update = (props, context) => {
10
+ locals.destroy = render(() => {
11
+ onCleanup(() => {
12
+ el.innerHTML = '';
13
+ });
14
+ return createComponent(root, Object.assign({ context }, props));
15
+ }, el);
16
+ };
17
+ locals.update(props, context);
9
18
  },
10
- unmount(el) {
11
- render(() => undefined, el);
12
- el.innerHTML = '';
19
+ update(el, props, context, locals) {
20
+ locals.destroy();
21
+ locals.update(props, context);
22
+ },
23
+ unmount(el, locals) {
24
+ locals.destroy();
13
25
  },
14
26
  });
15
27
  convert.Extension = Extension;
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9C,MAAM,UAAU,eAAe,CAAC,SAAgC,EAAE;IAChE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAoC,IAAuB,EAA4B,EAAE,CAAC,CAAC;QACzG,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YACtB,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,kBAAI,OAAO,IAAK,KAAK,EAAG,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9C,MAAM,UAAU,eAAe,CAAC,SAAgC,EAAE;IAChE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAoC,IAAuB,EAA4B,EAAE,CAAC,CAAC;QACzG,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;YAC9B,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACjC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE;oBAC3B,SAAS,CAAC,GAAG,EAAE;wBACb,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;oBACH,OAAO,eAAe,CAAC,IAAI,kBAAI,OAAO,IAAK,KAAK,EAAG,CAAC;gBACtD,CAAC,EAAE,EAAE,CAAC,CAAC;YACT,CAAC,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;YAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,MAAM;YAChB,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/esm/extension.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createEffect } from 'solid-js';
1
2
  export function createExtension(rootName) {
2
3
  return (props) => {
3
4
  const element = document.createElement(rootName);
@@ -10,6 +11,16 @@ export function createExtension(rootName) {
10
11
  },
11
12
  }));
12
13
  }, 0);
14
+ createEffect(() => {
15
+ element.dispatchEvent(new CustomEvent('extension-props-changed', {
16
+ detail: {
17
+ name: props.name,
18
+ empty: props.empty,
19
+ params: props.params,
20
+ render: props.render,
21
+ },
22
+ }));
23
+ });
13
24
  return element;
14
25
  };
15
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,aAAa,EAAE;gBAC7B,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,MAAM,EAAE,OAAO;oBACf,KAAK;iBACN;aACF,CAAC,CACH,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,OAAO,OAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,aAAa,EAAE;gBAC7B,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,MAAM,EAAE,OAAO;oBACf,KAAK;iBACN;aACF,CAAC,CACH,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,YAAY,CAAC,GAAG,EAAE;YAChB,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,yBAAyB,EAAE;gBACzC,MAAM,EAAE;oBACN,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB;aACF,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,OAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
package/lib/converter.js CHANGED
@@ -1,18 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createConverter = void 0;
4
+ const solid_js_1 = require("solid-js");
4
5
  const dom_1 = require("solid-js/dom");
5
6
  const extension_1 = require("./extension");
6
7
  function createConverter(config = {}) {
7
8
  const { rootName = 'slot' } = config;
8
9
  const Extension = (0, extension_1.createExtension)(rootName);
9
10
  const convert = (root) => ({
10
- mount(el, props, context) {
11
- (0, dom_1.render)(() => (0, dom_1.createComponent)(root, Object.assign({ context }, props)), el);
11
+ mount(el, props, context, locals) {
12
+ locals.update = (props, context) => {
13
+ locals.destroy = (0, dom_1.render)(() => {
14
+ (0, solid_js_1.onCleanup)(() => {
15
+ el.innerHTML = '';
16
+ });
17
+ return (0, dom_1.createComponent)(root, Object.assign({ context }, props));
18
+ }, el);
19
+ };
20
+ locals.update(props, context);
12
21
  },
13
- unmount(el) {
14
- (0, dom_1.render)(() => undefined, el);
15
- el.innerHTML = '';
22
+ update(el, props, context, locals) {
23
+ locals.destroy();
24
+ locals.update(props, context);
25
+ },
26
+ unmount(el, locals) {
27
+ locals.destroy();
16
28
  },
17
29
  });
18
30
  convert.Extension = Extension;
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;AAEA,sCAAuD;AACvD,2CAA8C;AAU9C,SAAgB,eAAe,CAAC,SAAgC,EAAE;IAChE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAoC,IAAuB,EAA4B,EAAE,CAAC,CAAC;QACzG,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO;YACtB,IAAA,YAAM,EAAC,GAAG,EAAE,CAAC,IAAA,qBAAe,EAAC,IAAI,kBAAI,OAAO,IAAK,KAAK,EAAG,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,EAAE;YACR,IAAA,YAAM,EAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAdD,0CAcC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;AACA,uCAAgD;AAChD,sCAAuD;AACvD,2CAA8C;AAU9C,SAAgB,eAAe,CAAC,SAAgC,EAAE;IAChE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,IAAA,2BAAe,EAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAoC,IAAuB,EAA4B,EAAE,CAAC,CAAC;QACzG,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;YAC9B,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACjC,MAAM,CAAC,OAAO,GAAG,IAAA,YAAM,EAAC,GAAG,EAAE;oBAC3B,IAAA,oBAAS,EAAC,GAAG,EAAE;wBACb,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;oBACH,OAAO,IAAA,qBAAe,EAAC,IAAI,kBAAI,OAAO,IAAK,KAAK,EAAG,CAAC;gBACtD,CAAC,EAAE,EAAE,CAAC,CAAC;YACT,CAAC,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;YAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,MAAM;YAChB,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AA1BD,0CA0BC"}
package/lib/extension.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createExtension = void 0;
4
+ const solid_js_1 = require("solid-js");
4
5
  function createExtension(rootName) {
5
6
  return (props) => {
6
7
  const element = document.createElement(rootName);
@@ -13,6 +14,16 @@ function createExtension(rootName) {
13
14
  },
14
15
  }));
15
16
  }, 0);
17
+ (0, solid_js_1.createEffect)(() => {
18
+ element.dispatchEvent(new CustomEvent('extension-props-changed', {
19
+ detail: {
20
+ name: props.name,
21
+ empty: props.empty,
22
+ params: props.params,
23
+ render: props.render,
24
+ },
25
+ }));
26
+ });
16
27
  return element;
17
28
  };
18
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;AAGA,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,aAAa,EAAE;gBAC7B,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,MAAM,EAAE,OAAO;oBACf,KAAK;iBACN;aACF,CAAC,CACH,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,OAAO,OAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AAhBD,0CAgBC"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;AAEA,uCAAwC;AAExC,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,aAAa,EAAE;gBAC7B,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,MAAM,EAAE,OAAO;oBACf,KAAK;iBACN;aACF,CAAC,CACH,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN,IAAA,uBAAY,EAAC,GAAG,EAAE;YAChB,OAAO,CAAC,aAAa,CACnB,IAAI,WAAW,CAAC,yBAAyB,EAAE;gBACzC,MAAM,EAAE;oBACN,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB;aACF,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,OAAc,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AA9BD,0CA8BC"}
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./create"), exports);
5
- (0, tslib_1.__exportStar)(require("./types"), exports);
4
+ tslib_1.__exportStar(require("./create"), exports);
5
+ tslib_1.__exportStar(require("./types"), exports);
6
6
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,uDAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,kDAAwB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "piral-solid",
3
- "version": "0.15.0-alpha.4041",
3
+ "version": "0.15.0-alpha.4231",
4
4
  "description": "Plugin for integrating Solid components in Piral.",
5
5
  "keywords": [
6
6
  "piral",
@@ -19,6 +19,22 @@
19
19
  "module": "esm/index.js",
20
20
  "main": "lib/index.js",
21
21
  "typings": "lib/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "import": "./esm/index.js",
25
+ "require": "./lib/index.js"
26
+ },
27
+ "./convert": {
28
+ "import": "./convert.js"
29
+ },
30
+ "./esm/*": {
31
+ "import": "./esm/*"
32
+ },
33
+ "./lib/*": {
34
+ "require": "./lib/*"
35
+ },
36
+ "./package.json": "./package.json"
37
+ },
22
38
  "sideEffects": false,
23
39
  "files": [
24
40
  "esm",
@@ -37,18 +53,18 @@
37
53
  "scripts": {
38
54
  "cleanup": "rimraf esm lib convert.d.ts convert.js",
39
55
  "build": "yarn build:commonjs && yarn build:esnext && yarn build:convert",
40
- "build:convert": "tsc convert.ts --skipLibCheck --declaration",
56
+ "build:convert": "tsc convert.ts --skipLibCheck --declaration --module esnext",
41
57
  "build:commonjs": "tsc --project tsconfig.json --outDir lib --module commonjs",
42
58
  "build:esnext": "tsc --project tsconfig.json --outDir esm --module esnext",
43
59
  "typedoc": "typedoc --json ../../../docs/types/piral-solid.json src --exclude \"src/**/*.test.*\"",
44
60
  "test": "echo \"Error: run tests from root\" && exit 1"
45
61
  },
46
62
  "devDependencies": {
47
- "piral-core": "0.15.0-alpha.4041",
63
+ "piral-core": "0.15.0-alpha.4231",
48
64
  "solid-js": "^0.18.7"
49
65
  },
50
66
  "peerDependencies": {
51
67
  "solid-js": "^0.18.0"
52
68
  },
53
- "gitHead": "3d305d88c72e3e05a44acbf240a38f6ad7b03959"
69
+ "gitHead": "4e7f158bd276d82c5bf2c19d47ccfb3604f38e38"
54
70
  }
package/src/converter.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ForeignComponent, BaseComponentProps } from 'piral-core';
2
- import { Component } from 'solid-js';
2
+ import { Component, onCleanup } from 'solid-js';
3
3
  import { render, createComponent } from 'solid-js/dom';
4
4
  import { createExtension } from './extension';
5
5
 
@@ -15,12 +15,24 @@ export function createConverter(config: SolidConverterOptions = {}) {
15
15
  const { rootName = 'slot' } = config;
16
16
  const Extension = createExtension(rootName);
17
17
  const convert = <TProps extends BaseComponentProps>(root: Component<TProps>): ForeignComponent<TProps> => ({
18
- mount(el, props, context) {
19
- render(() => createComponent(root, { context, ...props }), el);
18
+ mount(el, props, context, locals) {
19
+ locals.update = (props, context) => {
20
+ locals.destroy = render(() => {
21
+ onCleanup(() => {
22
+ el.innerHTML = '';
23
+ });
24
+ return createComponent(root, { context, ...props });
25
+ }, el);
26
+ };
27
+
28
+ locals.update(props, context);
29
+ },
30
+ update(el, props, context, locals) {
31
+ locals.destroy();
32
+ locals.update(props, context);
20
33
  },
21
- unmount(el) {
22
- render(() => undefined, el);
23
- el.innerHTML = '';
34
+ unmount(el, locals) {
35
+ locals.destroy();
24
36
  },
25
37
  });
26
38
  convert.Extension = Extension;
package/src/extension.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ExtensionSlotProps } from 'piral-core';
2
2
  import type { Component } from 'solid-js';
3
+ import { createEffect } from 'solid-js';
3
4
 
4
5
  export function createExtension(rootName: string): Component<ExtensionSlotProps> {
5
6
  return (props) => {
@@ -15,6 +16,20 @@ export function createExtension(rootName: string): Component<ExtensionSlotProps>
15
16
  }),
16
17
  );
17
18
  }, 0);
19
+
20
+ createEffect(() => {
21
+ element.dispatchEvent(
22
+ new CustomEvent('extension-props-changed', {
23
+ detail: {
24
+ name: props.name,
25
+ empty: props.empty,
26
+ params: props.params,
27
+ render: props.render,
28
+ },
29
+ }),
30
+ );
31
+ });
32
+
18
33
  return element as any;
19
34
  };
20
35
  }