|
@@ -0,0 +1,357 @@
|
|
|
|
|
+function j(r) {
|
|
|
|
|
+ return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r;
|
|
|
|
|
+}
|
|
|
|
|
+var F = { exports: {} }, i = {};
|
|
|
|
|
+Object.defineProperty(i, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+});
|
|
|
|
|
+i.DATA_CLONE_ERROR = i.MESSAGE = i.REJECTED = i.FULFILLED = i.REPLY = i.CALL = i.HANDSHAKE_REPLY = i.HANDSHAKE = void 0;
|
|
|
|
|
+const J = "handshake";
|
|
|
|
|
+i.HANDSHAKE = J;
|
|
|
|
|
+const W = "handshake-reply";
|
|
|
|
|
+i.HANDSHAKE_REPLY = W;
|
|
|
|
|
+const B = "call";
|
|
|
|
|
+i.CALL = B;
|
|
|
|
|
+const q = "reply";
|
|
|
|
|
+i.REPLY = q;
|
|
|
|
|
+const k = "fulfilled";
|
|
|
|
|
+i.FULFILLED = k;
|
|
|
|
|
+const Q = "rejected";
|
|
|
|
|
+i.REJECTED = Q;
|
|
|
|
|
+const X = "message";
|
|
|
|
|
+i.MESSAGE = X;
|
|
|
|
|
+const Z = "DataCloneError";
|
|
|
|
|
+i.DATA_CLONE_ERROR = Z;
|
|
|
|
|
+var N = {};
|
|
|
|
|
+Object.defineProperty(N, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+});
|
|
|
|
|
+N.ERR_NO_IFRAME_SRC = N.ERR_NOT_IN_IFRAME = N.ERR_CONNECTION_TIMEOUT = N.ERR_CONNECTION_DESTROYED = void 0;
|
|
|
|
|
+const ee = "ConnectionDestroyed";
|
|
|
|
|
+N.ERR_CONNECTION_DESTROYED = ee;
|
|
|
|
|
+const re = "ConnectionTimeout";
|
|
|
|
|
+N.ERR_CONNECTION_TIMEOUT = re;
|
|
|
|
|
+const te = "NotInIframe";
|
|
|
|
|
+N.ERR_NOT_IN_IFRAME = te;
|
|
|
|
|
+const ne = "NoIframeSrc";
|
|
|
|
|
+N.ERR_NO_IFRAME_SRC = ne;
|
|
|
|
|
+var $ = { exports: {} };
|
|
|
|
|
+(function(r, e) {
|
|
|
|
|
+ Object.defineProperty(e, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+ }), e.default = void 0;
|
|
|
|
|
+ var t = () => {
|
|
|
|
|
+ const n = [];
|
|
|
|
|
+ let c = !1;
|
|
|
|
|
+ return {
|
|
|
|
|
+ destroy() {
|
|
|
|
|
+ c = !0, n.forEach((a) => {
|
|
|
|
|
+ a();
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ onDestroy(a) {
|
|
|
|
|
+ c ? a() : n.push(a);
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ e.default = t, r.exports = e.default;
|
|
|
|
|
+})($, $.exports);
|
|
|
|
|
+var oe = $.exports, H = { exports: {} }, A = {};
|
|
|
|
|
+Object.defineProperty(A, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+});
|
|
|
|
|
+A.deserializeError = A.serializeError = void 0;
|
|
|
|
|
+const ae = (r) => {
|
|
|
|
|
+ let e = r.name, t = r.message, n = r.stack;
|
|
|
|
|
+ return {
|
|
|
|
|
+ name: e,
|
|
|
|
|
+ message: t,
|
|
|
|
|
+ stack: n
|
|
|
|
|
+ };
|
|
|
|
|
+};
|
|
|
|
|
+A.serializeError = ae;
|
|
|
|
|
+const ie = (r) => {
|
|
|
|
|
+ const e = new Error();
|
|
|
|
|
+ return Object.keys(r).forEach((t) => e[t] = r[t]), e;
|
|
|
|
|
+};
|
|
|
|
|
+A.deserializeError = ie;
|
|
|
|
|
+(function(r, e) {
|
|
|
|
|
+ Object.defineProperty(e, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+ }), e.default = void 0;
|
|
|
|
|
+ var t = i, n = A, c = (a, u, v) => {
|
|
|
|
|
+ const s = a.localName, _ = a.local, E = a.remote, p = a.originForSending, l = a.originForReceiving;
|
|
|
|
|
+ let f = !1;
|
|
|
|
|
+ v(`${s}: Connecting call receiver`);
|
|
|
|
|
+ const O = (d) => {
|
|
|
|
|
+ if (d.source !== E || d.data.penpal !== t.CALL)
|
|
|
|
|
+ return;
|
|
|
|
|
+ if (d.origin !== l) {
|
|
|
|
|
+ v(`${s} received message from origin ${d.origin} which did not match expected origin ${l}`);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const h = d.data, D = h.methodName, S = h.args, T = h.id;
|
|
|
|
|
+ v(`${s}: Received ${D}() call`);
|
|
|
|
|
+ const g = (R) => (m) => {
|
|
|
|
|
+ if (v(`${s}: Sending ${D}() reply`), f) {
|
|
|
|
|
+ v(`${s}: Unable to send ${D}() reply due to destroyed connection`);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const C = {
|
|
|
|
|
+ penpal: t.REPLY,
|
|
|
|
|
+ id: T,
|
|
|
|
|
+ resolution: R,
|
|
|
|
|
+ returnValue: m
|
|
|
|
|
+ };
|
|
|
|
|
+ R === t.REJECTED && m instanceof Error && (C.returnValue = (0, n.serializeError)(m), C.returnValueIsError = !0);
|
|
|
|
|
+ try {
|
|
|
|
|
+ E.postMessage(C, p);
|
|
|
|
|
+ } catch (L) {
|
|
|
|
|
+ throw L.name === t.DATA_CLONE_ERROR && E.postMessage({
|
|
|
|
|
+ penpal: t.REPLY,
|
|
|
|
|
+ id: T,
|
|
|
|
|
+ resolution: t.REJECTED,
|
|
|
|
|
+ returnValue: (0, n.serializeError)(L),
|
|
|
|
|
+ returnValueIsError: !0
|
|
|
|
|
+ }, p), L;
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ new Promise((R) => R(u[D].apply(u, S))).then(g(t.FULFILLED), g(t.REJECTED));
|
|
|
|
|
+ };
|
|
|
|
|
+ return _.addEventListener(t.MESSAGE, O), () => {
|
|
|
|
|
+ f = !0, _.removeEventListener(t.MESSAGE, O);
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ e.default = c, r.exports = e.default;
|
|
|
|
|
+})(H, H.exports);
|
|
|
|
|
+var se = H.exports, x = { exports: {} }, Y = { exports: {} };
|
|
|
|
|
+(function(r, e) {
|
|
|
|
|
+ Object.defineProperty(e, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+ }), e.default = void 0;
|
|
|
|
|
+ let t = 0;
|
|
|
|
|
+ var n = () => ++t;
|
|
|
|
|
+ e.default = n, r.exports = e.default;
|
|
|
|
|
+})(Y, Y.exports);
|
|
|
|
|
+var ce = Y.exports;
|
|
|
|
|
+(function(r, e) {
|
|
|
|
|
+ Object.defineProperty(e, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+ }), e.default = void 0;
|
|
|
|
|
+ var t = i, n = N, c = u(ce), a = A;
|
|
|
|
|
+ function u(s) {
|
|
|
|
|
+ return s && s.__esModule ? s : { default: s };
|
|
|
|
|
+ }
|
|
|
|
|
+ var v = (s, _, E, p, l) => {
|
|
|
|
|
+ const f = _.localName, O = _.local, d = _.remote, h = _.originForSending, D = _.originForReceiving;
|
|
|
|
|
+ let S = !1;
|
|
|
|
|
+ l(`${f}: Connecting call sender`);
|
|
|
|
|
+ const T = (g) => function() {
|
|
|
|
|
+ for (var R = arguments.length, m = new Array(R), C = 0; C < R; C++)
|
|
|
|
|
+ m[C] = arguments[C];
|
|
|
|
|
+ l(`${f}: Sending ${g}() call`);
|
|
|
|
|
+ let L;
|
|
|
|
|
+ try {
|
|
|
|
|
+ d.closed && (L = !0);
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ L = !0;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (L && p(), S) {
|
|
|
|
|
+ const w = new Error(`Unable to send ${g}() call due to destroyed connection`);
|
|
|
|
|
+ throw w.code = n.ERR_CONNECTION_DESTROYED, w;
|
|
|
|
|
+ }
|
|
|
|
|
+ return new Promise((w, P) => {
|
|
|
|
|
+ const M = (0, c.default)(), I = (o) => {
|
|
|
|
|
+ if (o.source !== d || o.data.penpal !== t.REPLY || o.data.id !== M)
|
|
|
|
|
+ return;
|
|
|
|
|
+ if (o.origin !== D) {
|
|
|
|
|
+ l(`${f} received message from origin ${o.origin} which did not match expected origin ${D}`);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ l(`${f}: Received ${g}() reply`), O.removeEventListener(t.MESSAGE, I);
|
|
|
|
|
+ let y = o.data.returnValue;
|
|
|
|
|
+ o.data.returnValueIsError && (y = (0, a.deserializeError)(y)), (o.data.resolution === t.FULFILLED ? w : P)(y);
|
|
|
|
|
+ };
|
|
|
|
|
+ O.addEventListener(t.MESSAGE, I), d.postMessage({
|
|
|
|
|
+ penpal: t.CALL,
|
|
|
|
|
+ id: M,
|
|
|
|
|
+ methodName: g,
|
|
|
|
|
+ args: m
|
|
|
|
|
+ }, h);
|
|
|
|
|
+ });
|
|
|
|
|
+ };
|
|
|
|
|
+ return E.reduce((g, R) => (g[R] = T(R), g), s), () => {
|
|
|
|
|
+ S = !0;
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ e.default = v, r.exports = e.default;
|
|
|
|
|
+})(x, x.exports);
|
|
|
|
|
+var de = x.exports, G = { exports: {} };
|
|
|
|
|
+(function(r, e) {
|
|
|
|
|
+ Object.defineProperty(e, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+ }), e.default = void 0;
|
|
|
|
|
+ var t = (n) => function() {
|
|
|
|
|
+ if (n) {
|
|
|
|
|
+ for (var c = arguments.length, a = new Array(c), u = 0; u < c; u++)
|
|
|
|
|
+ a[u] = arguments[u];
|
|
|
|
|
+ console.log("[Penpal]", ...a);
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+ e.default = t, r.exports = e.default;
|
|
|
|
|
+})(G, G.exports);
|
|
|
|
|
+var le = G.exports;
|
|
|
|
|
+(function(r, e) {
|
|
|
|
|
+ Object.defineProperty(e, "__esModule", {
|
|
|
|
|
+ value: !0
|
|
|
|
|
+ }), e.default = void 0;
|
|
|
|
|
+ var t = i, n = N, c = s(oe), a = s(se), u = s(de), v = s(le);
|
|
|
|
|
+ function s(E) {
|
|
|
|
|
+ return E && E.__esModule ? E : { default: E };
|
|
|
|
|
+ }
|
|
|
|
|
+ var _ = function() {
|
|
|
|
|
+ let p = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, l = p.parentOrigin, f = l === void 0 ? "*" : l, O = p.methods, d = O === void 0 ? {} : O, h = p.timeout, D = p.debug;
|
|
|
|
|
+ const S = (0, v.default)(D);
|
|
|
|
|
+ if (window === window.top) {
|
|
|
|
|
+ const w = new Error("connectToParent() must be called within an iframe");
|
|
|
|
|
+ throw w.code = n.ERR_NOT_IN_IFRAME, w;
|
|
|
|
|
+ }
|
|
|
|
|
+ const T = (0, c.default)(), g = T.destroy, R = T.onDestroy, m = window, C = m.parent;
|
|
|
|
|
+ return {
|
|
|
|
|
+ promise: new Promise((w, P) => {
|
|
|
|
|
+ let M;
|
|
|
|
|
+ h !== void 0 && (M = setTimeout(() => {
|
|
|
|
|
+ const o = new Error(`Connection to parent timed out after ${h}ms`);
|
|
|
|
|
+ o.code = n.ERR_CONNECTION_TIMEOUT, P(o), g();
|
|
|
|
|
+ }, h));
|
|
|
|
|
+ const I = (o) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ clearTimeout();
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (o.source !== C || o.data.penpal !== t.HANDSHAKE_REPLY)
|
|
|
|
|
+ return;
|
|
|
|
|
+ if (f !== "*" && f !== o.origin) {
|
|
|
|
|
+ S(`Child received handshake reply from origin ${o.origin} which did not match expected origin ${f}`);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ S("Child: Received handshake reply"), m.removeEventListener(t.MESSAGE, I);
|
|
|
|
|
+ const y = {
|
|
|
|
|
+ localName: "Child",
|
|
|
|
|
+ local: m,
|
|
|
|
|
+ remote: C,
|
|
|
|
|
+ originForSending: o.origin === "null" ? "*" : o.origin,
|
|
|
|
|
+ originForReceiving: o.origin
|
|
|
|
|
+ }, z = {}, K = (0, a.default)(y, d, S);
|
|
|
|
|
+ R(K);
|
|
|
|
|
+ const b = (0, u.default)(z, y, o.data.methodNames, g, S);
|
|
|
|
|
+ R(b), clearTimeout(M), w(z);
|
|
|
|
|
+ };
|
|
|
|
|
+ m.addEventListener(t.MESSAGE, I), R(() => {
|
|
|
|
|
+ m.removeEventListener(t.MESSAGE, I);
|
|
|
|
|
+ const o = new Error("Connection destroyed");
|
|
|
|
|
+ o.code = n.ERR_CONNECTION_DESTROYED, P(o);
|
|
|
|
|
+ }), S("Child: Sending handshake"), C.postMessage({
|
|
|
|
|
+ penpal: t.HANDSHAKE,
|
|
|
|
|
+ methodNames: Object.keys(d)
|
|
|
|
|
+ }, f);
|
|
|
|
|
+ }),
|
|
|
|
|
+ destroy: g
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ e.default = _, r.exports = e.default;
|
|
|
|
|
+})(F, F.exports);
|
|
|
|
|
+var ue = F.exports;
|
|
|
|
|
+const Ee = /* @__PURE__ */ j(ue);
|
|
|
|
|
+function U(r, e, t, n) {
|
|
|
|
|
+ var c, a = !1, u = 0;
|
|
|
|
|
+ function v() {
|
|
|
|
|
+ c && clearTimeout(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ function s() {
|
|
|
|
|
+ v(), a = !0;
|
|
|
|
|
+ }
|
|
|
|
|
+ typeof e != "boolean" && (n = t, t = e, e = void 0);
|
|
|
|
|
+ function _() {
|
|
|
|
|
+ for (var E = arguments.length, p = new Array(E), l = 0; l < E; l++)
|
|
|
|
|
+ p[l] = arguments[l];
|
|
|
|
|
+ var f = this, O = Date.now() - u;
|
|
|
|
|
+ if (a)
|
|
|
|
|
+ return;
|
|
|
|
|
+ function d() {
|
|
|
|
|
+ u = Date.now(), t.apply(f, p);
|
|
|
|
|
+ }
|
|
|
|
|
+ function h() {
|
|
|
|
|
+ c = void 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ n && !c && d(), v(), n === void 0 && O > r ? d() : e !== !0 && (c = setTimeout(n ? h : d, n === void 0 ? r - O : r));
|
|
|
|
|
+ }
|
|
|
|
|
+ return _.cancel = s, _;
|
|
|
|
|
+}
|
|
|
|
|
+function fe(r, e, t) {
|
|
|
|
|
+ return t === void 0 ? U(r, e, !1) : U(r, t, e !== !1);
|
|
|
|
|
+}
|
|
|
|
|
+const ge = !1, Re = "<%= origin %>";
|
|
|
|
|
+function _e() {
|
|
|
|
|
+ return window.editor.doc.getValue();
|
|
|
|
|
+}
|
|
|
|
|
+function V(r) {
|
|
|
|
|
+ window.editor.doc.setValue(r);
|
|
|
|
|
+}
|
|
|
|
|
+function ve(r) {
|
|
|
|
|
+ if (window.cmClient != null) {
|
|
|
|
|
+ V(r);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const e = setInterval(() => {
|
|
|
|
|
+ window.cmClient != null && (clearInterval(e), V(r));
|
|
|
|
|
+ }, 250);
|
|
|
|
|
+}
|
|
|
|
|
+function pe(r) {
|
|
|
|
|
+ window.growi.notifyBodyChanges(r);
|
|
|
|
|
+}
|
|
|
|
|
+const me = fe(800, pe);
|
|
|
|
|
+function Ce(r) {
|
|
|
|
|
+ window.growi.saveWithShortcut(r);
|
|
|
|
|
+}
|
|
|
|
|
+function Oe() {
|
|
|
|
|
+ const r = window.CodeMirror, e = window.editor;
|
|
|
|
|
+ r == null || e == null || (e.on("change", (t, n) => {
|
|
|
|
|
+ n.origin !== "ignoreHistory" && me(t.doc.getValue());
|
|
|
|
|
+ }), r.commands.save = function(t) {
|
|
|
|
|
+ Ce(t.doc.getValue());
|
|
|
|
|
+ }, delete e.options.extraKeys["Cmd-S"], delete e.options.extraKeys["Ctrl-S"]);
|
|
|
|
|
+}
|
|
|
|
|
+function he() {
|
|
|
|
|
+ Ee({
|
|
|
|
|
+ parentOrigin: Re,
|
|
|
|
|
+ // Methods child is exposing to parent
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ getValue() {
|
|
|
|
|
+ return _e();
|
|
|
|
|
+ },
|
|
|
|
|
+ setValue(e) {
|
|
|
|
|
+ V(e);
|
|
|
|
|
+ },
|
|
|
|
|
+ setValueOnInit(e) {
|
|
|
|
|
+ ve(e);
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ debug: ge
|
|
|
|
|
+ }).promise.then((e) => {
|
|
|
|
|
+ window.growi = e;
|
|
|
|
|
+ }).catch((e) => {
|
|
|
|
|
+ console.log(e);
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+(function() {
|
|
|
|
|
+ if (window === window.parent) {
|
|
|
|
|
+ console.log("[GROWI] Loading agent for HackMD is not processed because currently not in iframe");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log("[HackMD] Loading GROWI agent for HackMD..."), window.addEventListener("load", () => {
|
|
|
|
|
+ Oe();
|
|
|
|
|
+ }), he(), console.log("[HackMD] GROWI agent for HackMD has successfully loaded.");
|
|
|
|
|
+})();
|
|
|
|
|
+//# sourceMappingURL=hackmd-agent.js.map
|