roamjs-components 0.78.12 → 0.79.0
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/components/ExtensionApiContext.js +1 -0
- package/components/ExtensionApiContext.js.map +1 -1
- package/package.json +1 -1
- package/util/extensionApiContext.d.ts +29 -0
- package/util/extensionApiContext.js +14 -0
- package/util/extensionApiContext.js.map +1 -0
- package/util/runExtension.js +2 -0
- package/util/runExtension.js.map +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useVersion = exports.useExtensionAPI = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
// @deprecated - use utils/extensionApiContext instead
|
|
5
6
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
7
|
const ExtensionApiContext = react_1.default.createContext(undefined);
|
|
7
8
|
const useExtensionAPI = () => { var _a; return (_a = (0, react_1.useContext)(ExtensionApiContext)) === null || _a === void 0 ? void 0 : _a.extensionAPI; };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionApiContext.js","sourceRoot":"","sources":["../../src/components/ExtensionApiContext.tsx"],"names":[],"mappings":";;;;AAAA,uDAA0C;AAG1C,MAAM,mBAAmB,GAAG,eAAK,CAAC,aAAa,CAC7C,SAAS,CACV,CAAC;AAEK,MAAM,eAAe,GAAG,GAAG,EAAE,WAClC,OAAA,MAAA,IAAA,kBAAU,EAAC,mBAAmB,CAAC,0CAAE,YAAY,CAAA,EAAA,CAAC;AADnC,QAAA,eAAe,mBACoB;AACzC,MAAM,UAAU,GAAG,GAAG,EAAE,WAC7B,OAAA,MAAA,IAAA,kBAAU,EAAC,mBAAmB,CAAC,0CAAE,SAAS,CAAC,OAAO,CAAA,EAAA,CAAC;AADxC,QAAA,UAAU,cAC8B;AAErD,MAAM,2BAA2B,GAE7B,CAAC,EAAsB,EAAE,EAAE;QAA1B,EAAE,QAAQ,OAAY,EAAP,KAAK,sBAApB,YAAsB,CAAF;IACvB,OAAO,CACL,8BAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACvC,QAAQ,CACoB,CAChC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,2BAA2B,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"ExtensionApiContext.js","sourceRoot":"","sources":["../../src/components/ExtensionApiContext.tsx"],"names":[],"mappings":";;;;AAAA,sDAAsD;AACtD,uDAA0C;AAG1C,MAAM,mBAAmB,GAAG,eAAK,CAAC,aAAa,CAC7C,SAAS,CACV,CAAC;AAEK,MAAM,eAAe,GAAG,GAAG,EAAE,WAClC,OAAA,MAAA,IAAA,kBAAU,EAAC,mBAAmB,CAAC,0CAAE,YAAY,CAAA,EAAA,CAAC;AADnC,QAAA,eAAe,mBACoB;AACzC,MAAM,UAAU,GAAG,GAAG,EAAE,WAC7B,OAAA,MAAA,IAAA,kBAAU,EAAC,mBAAmB,CAAC,0CAAE,SAAS,CAAC,OAAO,CAAA,EAAA,CAAC;AADxC,QAAA,UAAU,cAC8B;AAErD,MAAM,2BAA2B,GAE7B,CAAC,EAAsB,EAAE,EAAE;QAA1B,EAAE,QAAQ,OAAY,EAAP,KAAK,sBAApB,YAAsB,CAAF;IACvB,OAAO,CACL,8BAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACvC,QAAQ,CACoB,CAChC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,2BAA2B,CAAC","sourcesContent":["// @deprecated - use utils/extensionApiContext instead\nimport React, { useContext } from \"react\";\nimport { OnloadArgs } from \"../types\";\n\nconst ExtensionApiContext = React.createContext<OnloadArgs | undefined>(\n undefined\n);\n\nexport const useExtensionAPI = () =>\n useContext(ExtensionApiContext)?.extensionAPI;\nexport const useVersion = () =>\n useContext(ExtensionApiContext)?.extension.version;\n\nconst ExtensionApiContextProvider: React.FC<\n React.PropsWithChildren<OnloadArgs>\n> = ({ children, ...props }) => {\n return (\n <ExtensionApiContext.Provider value={props}>\n {children}\n </ExtensionApiContext.Provider>\n );\n};\n\nexport default ExtensionApiContextProvider;\n"]}
|
package/package.json
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { OnloadArgs } from "../types";
|
|
2
|
+
export declare const provideExtensionApi: (api: OnloadArgs["extensionAPI"]) => void;
|
|
3
|
+
declare const getExtensionApi: () => {
|
|
4
|
+
settings: {
|
|
5
|
+
get: (k: string) => unknown;
|
|
6
|
+
getAll: () => Record<string, unknown>;
|
|
7
|
+
panel: {
|
|
8
|
+
create: (c: {
|
|
9
|
+
tabTitle: string;
|
|
10
|
+
settings: {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
action: import("../types").Action;
|
|
15
|
+
}[];
|
|
16
|
+
}) => void;
|
|
17
|
+
};
|
|
18
|
+
set: (k: string, v: unknown) => Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
ui: {
|
|
21
|
+
commandPalette: {
|
|
22
|
+
addCommand: (c: import("../types").AddCommandOptions) => Promise<void>;
|
|
23
|
+
removeCommand: (c: {
|
|
24
|
+
label: string;
|
|
25
|
+
}) => Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
} | null;
|
|
29
|
+
export default getExtensionApi;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.provideExtensionApi = void 0;
|
|
4
|
+
let extensionApi = null;
|
|
5
|
+
const provideExtensionApi = (api) => {
|
|
6
|
+
if (extensionApi) {
|
|
7
|
+
throw new Error("Extension API already provided");
|
|
8
|
+
}
|
|
9
|
+
extensionApi = api;
|
|
10
|
+
};
|
|
11
|
+
exports.provideExtensionApi = provideExtensionApi;
|
|
12
|
+
const getExtensionApi = () => extensionApi;
|
|
13
|
+
exports.default = getExtensionApi;
|
|
14
|
+
//# sourceMappingURL=extensionApiContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensionApiContext.js","sourceRoot":"","sources":["../../src/util/extensionApiContext.ts"],"names":[],"mappings":";;;AAEA,IAAI,YAAY,GAAsC,IAAI,CAAC;AAEpD,MAAM,mBAAmB,GAAG,CAAC,GAA+B,EAAE,EAAE;IACrE,IAAI,YAAY,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;KACnD;IACD,YAAY,GAAG,GAAG,CAAC;AACrB,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B;AAEF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;AAE3C,kBAAe,eAAe,CAAC","sourcesContent":["import { OnloadArgs } from \"../types\";\n\nlet extensionApi: OnloadArgs[\"extensionAPI\"] | null = null;\n\nexport const provideExtensionApi = (api: OnloadArgs[\"extensionAPI\"]) => {\n if (extensionApi) {\n throw new Error(\"Extension API already provided\");\n }\n extensionApi = api;\n};\n\nconst getExtensionApi = () => extensionApi;\n\nexport default getExtensionApi;\n"]}
|
package/util/runExtension.js
CHANGED
|
@@ -5,6 +5,7 @@ const addStyle_1 = tslib_1.__importDefault(require("../dom/addStyle"));
|
|
|
5
5
|
const react_dom_1 = tslib_1.__importDefault(require("react-dom"));
|
|
6
6
|
const env_1 = require("./env");
|
|
7
7
|
const shim_1 = require("use-sync-external-store/shim");
|
|
8
|
+
const extensionApiContext_1 = require("./extensionApiContext");
|
|
8
9
|
const runExtension = ({ extensionId = (0, env_1.getRoamJSExtensionIdEnv)(), run, }) => {
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
11
|
// @ts-ignore React17 shim
|
|
@@ -65,6 +66,7 @@ const runExtension = ({ extensionId = (0, env_1.getRoamJSExtensionIdEnv)(), run,
|
|
|
65
66
|
if ((_c = (_b = (_a = window.roamjs) === null || _a === void 0 ? void 0 : _a.loaded) === null || _b === void 0 ? void 0 : _b.has) === null || _c === void 0 ? void 0 : _c.call(_b, extensionId)) {
|
|
66
67
|
return;
|
|
67
68
|
}
|
|
69
|
+
(0, extensionApiContext_1.provideExtensionApi)(args.extensionAPI);
|
|
68
70
|
window.roamjs = {
|
|
69
71
|
loaded: ((_d = window.roamjs) === null || _d === void 0 ? void 0 : _d.loaded) || new Set(),
|
|
70
72
|
extension: ((_e = window.roamjs) === null || _e === void 0 ? void 0 : _e.extension) || {},
|
package/util/runExtension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runExtension.js","sourceRoot":"","sources":["../../src/util/runExtension.ts"],"names":[],"mappings":";;;AAAA,uEAAuC;AAEvC,kEAAiC;AACjC,+BAIe;AAEf,uDAAoE;
|
|
1
|
+
{"version":3,"file":"runExtension.js","sourceRoot":"","sources":["../../src/util/runExtension.ts"],"names":[],"mappings":";;;AAAA,uEAAuC;AAEvC,kEAAiC;AACjC,+BAIe;AAEf,uDAAoE;AACpE,+DAA4D;AAS5D,MAAM,YAAY,GAAG,CAAC,EACpB,WAAW,GAAG,IAAA,6BAAuB,GAAE,EACvC,GAAG,GAIJ,EAAuE,EAAE;IACxE,6DAA6D;IAC7D,0BAA0B;IAC1B,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,2BAAoB,CAAC;IACzD,IAAI,MAAgC,CAAC;IAErC,MAAM,QAAQ,GAAa;QACzB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;KACb,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,GAAsB,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,CAAmB,CAAC;YAChC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,6DAA6D;YAC7D,gEAAgE;YAChE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAc,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,MAA2B,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,CAAkB,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAC5B,UAAU,WAAW,WAAW,EAChC,gBAAgB,CACjB,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QACzB,QAAQ,EAAE,gBAAgB;QAC1B,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,IAAI,EAAE,UAAU,WAAW,WAAW;KACvC,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAc,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAC,MAA2B,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,CAAmB,CAAC;YAChC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBACjB,6DAA6D;oBAC7D,gEAAgE;oBAChE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;wBACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;qBAC9B;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAkB,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAC5B,UAAU,WAAW,aAAa,EAClC,kBAAkB,CACnB,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QACzB,QAAQ,EAAE,kBAAkB;QAC5B,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,IAAI,EAAE,UAAU,WAAW,aAAa;KACzC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAE,EAAE;;QAClC,IAAI,MAAA,MAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,0CAAE,GAAG,mDAAG,WAAW,CAAC,EAAE;YAC7C,OAAO;SACR;QACD,IAAA,yCAAmB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG;YACd,MAAM,EAAE,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,KAAI,IAAI,GAAG,EAAE;YAC1C,SAAS,EAAE,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,SAAS,KAAI,EAAE;YACzC,OAAO,EAAE,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,OAAO,KAAI,EAAE;YACrC,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAA,yBAAmB,GAAE,CAAC;QAE3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CACpB,IAAA,kBAAQ,EACN;;IAEJ,EACI,gBAAgB,CACjB,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;gBAC7B,MAAM,GAAG,GAAG,CAAC;aACd;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAClC,MAAM,EAAE,MAAM,EAAE,SAAS,KAAkB,GAAG,EAAhB,QAAQ,kBAAK,GAAG,EAAxC,UAAkC,CAAM,CAAC;gBAC/C,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnB,MAAM,GAAG,SAAS,CAAC;aACpB;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,IAAA,gBAAU,GAAE,KAAK,aAAa,EAAE;gBAClC,IAAI,SAAS;oBAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;;oBAExD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG;wBACrC,YAAY,EAAE,IAAI,CAAC,YAAY;qBAChC,CAAC;aACL;YACD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,UAAU,WAAW,SAAS,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;;QACpB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,mBAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAClD,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAC7C,CAAC;QACF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAC/D,CAAC;QACF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1D,MAAA,MAAM,CAAC,MAAM,+CAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAA,MAAM,CAAC,MAAM,+CAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,CAAC,IAAI,CAAA,EAAE;YAC/B,MAAA,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,0CAAE,MAAM,EAAE,CAAC;SACrD;QACD,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAC;IACb,CAAC,CAAC;IACF,OAAO;QACL,MAAM;QACN,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC","sourcesContent":["import addStyle from \"../dom/addStyle\";\nimport { OnloadArgs } from \"../types/native\";\nimport ReactDOM from \"react-dom\";\nimport {\n getNodeEnv,\n getRoamJSExtensionIdEnv,\n getRoamJSVersionEnv,\n} from \"./env\";\nimport type { Registry } from \"../types\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport { provideExtensionApi } from \"./extensionApiContext\";\n\ntype RunReturn =\n | void\n | (Partial<Registry> & { unload?: () => void })\n | (() => void);\n\ntype RunExtension = (args: OnloadArgs) => RunReturn | Promise<RunReturn>;\n\nconst runExtension = ({\n extensionId = getRoamJSExtensionIdEnv(),\n run,\n}: {\n extensionId?: string;\n run?: RunExtension;\n}): void | { onload: (args: OnloadArgs) => void; onunload: () => void } => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore React17 shim\n window.React.useSyncExternalStore = useSyncExternalStore;\n let unload: (() => void) | undefined;\n\n const registry: Registry = {\n elements: [],\n reactRoots: [],\n observers: [],\n domListeners: [],\n commands: [],\n timeouts: [],\n };\n const register = (res: Partial<Registry>) => {\n Object.keys(res).forEach((k) => {\n const key = k as keyof Registry;\n const val = res[key];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this is actually safe, but dont know how to coerce\n registry[key].push(...val);\n });\n };\n const registerListener = ((e: CustomEvent) => {\n const res = e.detail as Partial<Registry>;\n register(res);\n }) as EventListener;\n document.body.addEventListener(\n `roamjs:${extensionId}:register`,\n registerListener\n );\n registry.domListeners.push({\n listener: registerListener,\n el: document.body,\n type: `roamjs:${extensionId}:register`,\n });\n const unregisterListener = ((e: CustomEvent) => {\n const res = e.detail as Partial<Registry>;\n Object.keys(res).forEach((k) => {\n const key = k as keyof Registry;\n const val = res[key];\n if (val) {\n val.forEach((el) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore this is actually safe, but dont know how to coerce\n const idx = registry[key].indexOf(el);\n if (idx > -1) {\n registry[key].splice(idx, 1);\n }\n });\n }\n });\n }) as EventListener;\n document.body.addEventListener(\n `roamjs:${extensionId}:unregister`,\n unregisterListener\n );\n registry.domListeners.push({\n listener: unregisterListener,\n el: document.body,\n type: `roamjs:${extensionId}:unregister`,\n });\n\n const onload = (args: OnloadArgs) => {\n if (window.roamjs?.loaded?.has?.(extensionId)) {\n return;\n }\n provideExtensionApi(args.extensionAPI);\n window.roamjs = {\n loaded: window.roamjs?.loaded || new Set(),\n extension: window.roamjs?.extension || {},\n version: window.roamjs?.version || {},\n actions: {},\n };\n window.roamjs.loaded.add(extensionId);\n window.roamjs.version[extensionId] = getRoamJSVersionEnv();\n\n registry.elements.push(\n addStyle(\n `.bp3-button:focus {\n outline-width: 2px;\n }`,\n \"roamjs-default\"\n )\n );\n\n const result = run?.(args);\n Promise.resolve(result).then((res) => {\n if (typeof res === \"function\") {\n unload = res;\n } else if (typeof res === \"object\") {\n const { unload: resUnload, ...registry } = res;\n register(registry);\n unload = resUnload;\n }\n const globalApi = window.roamjs.extension[extensionId];\n if (getNodeEnv() === \"development\") {\n if (globalApi) globalApi.extensionAPI = args.extensionAPI;\n else\n window.roamjs.extension[extensionId] = {\n extensionAPI: args.extensionAPI,\n };\n }\n document.body.dispatchEvent(new Event(`roamjs:${extensionId}:loaded`));\n });\n };\n\n const onunload = () => {\n registry.elements.forEach((e) => e.remove());\n registry.reactRoots.forEach((e) => {\n ReactDOM.unmountComponentAtNode(e);\n e.remove();\n });\n registry.observers.forEach((e) => e.disconnect());\n registry.domListeners.forEach((e) =>\n e.el.removeEventListener(e.type, e.listener)\n );\n registry.commands.forEach((label) =>\n window.roamAlphaAPI.ui.commandPalette.removeCommand({ label })\n );\n registry.timeouts.forEach((e) => window.clearTimeout(e.timeout));\n\n delete window.roamjs?.extension[extensionId];\n delete window.roamjs?.version[extensionId];\n window.roamjs?.loaded.delete(extensionId);\n if (!window.roamjs?.loaded.size) {\n document.getElementById(\"roamjs-default\")?.remove();\n }\n unload?.();\n };\n return {\n onload,\n onunload,\n };\n};\n\nexport default runExtension;\n"]}
|