diff --git a/src/extensions/example-extension/README.md b/extensions/example-extension/README.md similarity index 100% rename from src/extensions/example-extension/README.md rename to extensions/example-extension/README.md diff --git a/extensions/example-extension/example-extension.js b/extensions/example-extension/example-extension.js new file mode 100644 index 0000000000..bc5cfd88cc --- /dev/null +++ b/extensions/example-extension/example-extension.js @@ -0,0 +1,52 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ExtensionPage = exports.ExtensionIcon = void 0; +const extensions_1 = require("@lens/extensions"); +const react_1 = __importDefault(require("react")); +const path_1 = __importDefault(require("path")); +class ExampleExtension extends extensions_1.LensExtension { + onActivate() { + console.log('EXAMPLE EXTENSION: ACTIVATED', this.getMeta()); + this.registerPage({ + type: extensions_1.DynamicPageType.CLUSTER, + path: "/extension-example", + menuTitle: "Example Extension", + components: { + Page: () => react_1.default.createElement(ExtensionPage, { extension: this }), + MenuIcon: ExtensionIcon, + } + }); + } + onDeactivate() { + console.log('EXAMPLE EXTENSION: DEACTIVATED', this.getMeta()); + } +} +exports.default = ExampleExtension; +function ExtensionIcon(props) { + return react_1.default.createElement(extensions_1.Icon, Object.assign({}, props, { material: "camera", tooltip: path_1.default.basename(__filename) })); +} +exports.ExtensionIcon = ExtensionIcon; +class ExtensionPage extends react_1.default.Component { + constructor() { + super(...arguments); + this.deactivate = () => { + const { extension } = this.props; + extension.runtime.navigate("/"); + extension.disable(); + }; + } + render() { + const { TabLayout } = this.props.extension.runtime.components; + return (react_1.default.createElement(TabLayout, { className: "ExampleExtension" }, + react_1.default.createElement("div", { className: "flex column gaps align-flex-start" }, + react_1.default.createElement("p", null, "Hello from extensions-api!"), + react_1.default.createElement("p", null, + "File: ", + react_1.default.createElement("i", null, __filename)), + react_1.default.createElement(extensions_1.Button, { accent: true, label: "Deactivate", onClick: this.deactivate })))); + } +} +exports.ExtensionPage = ExtensionPage; diff --git a/src/extensions/example-extension/example-extension.tsx b/extensions/example-extension/example-extension.tsx similarity index 100% rename from src/extensions/example-extension/example-extension.tsx rename to extensions/example-extension/example-extension.tsx diff --git a/src/extensions/example-extension/package.json b/extensions/example-extension/package.json similarity index 100% rename from src/extensions/example-extension/package.json rename to extensions/example-extension/package.json diff --git a/src/extensions/example-extension/tsconfig.json b/extensions/example-extension/tsconfig.json similarity index 100% rename from src/extensions/example-extension/tsconfig.json rename to extensions/example-extension/tsconfig.json diff --git a/package.json b/package.json index 7d52e4588d..f592454be3 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "compile:main": "webpack --config webpack.main.ts", "compile:renderer": "webpack --config webpack.renderer.ts", "compile:i18n": "lingui compile", + "compile:extensions": "rollup --config src/extensions/rollup.config.js", "build:linux": "yarn compile && electron-builder --linux --dir -c.productName=Lens", "build:mac": "yarn compile && electron-builder --mac --dir -c.productName=Lens", "build:win": "yarn compile && electron-builder --win --dir -c.productName=Lens", @@ -94,9 +95,12 @@ "filter": "!**/main.js" }, { - "from": "src/extensions/", + "from": "extensions/", "to": "./extensions/", - "filter": "**/*.js*" + "filter": [ + "**/*.js*", + "!**/node_modules" + ] }, "LICENSE" ], diff --git a/src/extensions/extension-store.ts b/src/extensions/extension-store.ts index 13be1eb927..932bec4f0a 100644 --- a/src/extensions/extension-store.ts +++ b/src/extensions/extension-store.ts @@ -44,9 +44,6 @@ export class ExtensionStore extends BaseStore { @observable installed = observable.map([], { deep: false }); get folderPath(): string { - if (isDevelopment) { - return path.resolve(__static, "../src/extensions"); - } return path.resolve(__static, "../extensions"); }