diff --git a/lib/index.js b/lib/index.js index 4c0ec6e..187bad2 100644 --- a/lib/index.js +++ b/lib/index.js @@ -9,13 +9,24 @@ var _wiki_link_plugin = _interopRequireDefault(require("./wiki_link_plugin")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } module.exports = { - originalAnchorComponent: null, + originalSpanComponent: null, + + setWikiLinkComponent() { + const OriginalSpan = _inkdrop.markdownRenderer.remarkReactComponents.span; + const WikiLink = (0, _wiki_link.default)(OriginalSpan); + _inkdrop.markdownRenderer.remarkReactComponents.span = WikiLink; + this.originalSpanComponent = OriginalSpan; + }, + + unsetWikiLinkComponent() { + _inkdrop.markdownRenderer.remarkReactComponents.span = this.originalSpanComponent; + }, activate() { if (_inkdrop.markdownRenderer) { _inkdrop.markdownRenderer.remarkPlugins.push(_wiki_link_plugin.default); - if (!inkdrop || !inkdrop.isMobile) { + if (!inkdrop.isMobile) { this.setWikiLinkComponent(); } } @@ -23,23 +34,12 @@ module.exports = { deactivate() { if (_inkdrop.markdownRenderer) { - _inkdrop.markdownRenderer.remarkPlugins = _inkdrop.markdownRenderer.remarkPlugins.filter(plugin => plugin !== WikiLink); + _inkdrop.markdownRenderer.remarkPlugins = _inkdrop.markdownRenderer.remarkPlugins.filter(plugin => plugin !== _wiki_link_plugin.default); - if (!inkdrop || !inkdrop.isMobile) { + if (!inkdrop.isMobile) { this.unsetWikiLinkComponent(); } } - }, - - setWikiLinkComponent() { - const OriginalAnchor = _inkdrop.markdownRenderer.remarkReactComponents.a; - const WikiLink = (0, _wiki_link.default)(OriginalAnchor); - _inkdrop.markdownRenderer.remarkReactComponents.a = WikiLink; - this.originalAnchorComponent = OriginalAnchor; - }, - - unsetWikiLinkComponent() { - _inkdrop.markdownRenderer.remarkReactComponents.a = this.originalAnchorComponent; } }; \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index 263a0d9..4dadc0f 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.js"],"names":["module","exports","originalAnchorComponent","activate","markdownRenderer","remarkPlugins","push","wikiLinkPlugin","inkdrop","isMobile","setWikiLinkComponent","deactivate","filter","plugin","WikiLink","unsetWikiLinkComponent","OriginalAnchor","remarkReactComponents","a"],"mappings":";;AAAA;;AACA;;AACA;;;;AAEAA,MAAM,CAACC,OAAP,GAAiB;AACbC,EAAAA,uBAAuB,EAAE,IADZ;;AAEbC,EAAAA,QAAQ,GAAG;AACP,QAAIC,yBAAJ,EAAsB;AAClBA,gCAAiBC,aAAjB,CAA+BC,IAA/B,CAAoCC,yBAApC;;AACA,UAAI,CAACC,OAAO,CAACC,QAAb,EAAuB;AACnB,aAAKC,oBAAL;AACH;AACJ;AACJ,GATY;;AAWbC,EAAAA,UAAU,GAAG;AACT,QAAIP,yBAAJ,EAAsB;AAClBA,gCAAiBC,aAAjB,GAAiCD,0BAAiBC,aAAjB,CAA+BO,MAA/B,CAC5BC,MAAD,IAAYA,MAAM,KAAKC,QADM,CAAjC;;AAGA,UAAI,CAACN,OAAO,CAACC,QAAb,EAAuB;AACnB,aAAKM,sBAAL;AACH;AACJ;AACJ,GApBY;;AAqBbL,EAAAA,oBAAoB,GAAG;AACnB,UAAMM,cAAc,GAAGZ,0BAAiBa,qBAAjB,CAAuCC,CAA9D;AACA,UAAMJ,QAAQ,GAAG,wBAAqBE,cAArB,CAAjB;AACAZ,8BAAiBa,qBAAjB,CAAuCC,CAAvC,GAA2CJ,QAA3C;AACA,SAAKZ,uBAAL,GAA+Bc,cAA/B;AACH,GA1BY;;AA4BbD,EAAAA,sBAAsB,GAAG;AACrBX,8BAAiBa,qBAAjB,CAAuCC,CAAvC,GAA2C,KAAKhB,uBAAhD;AACH;;AA9BY,CAAjB","sourcesContent":["import { markdownRenderer } from \"inkdrop\";\nimport createRemarkWikiLink from \"./wiki_link\";\nimport wikiLinkPlugin from \"./wiki_link_plugin\";\n\nmodule.exports = {\n originalAnchorComponent: null,\n activate() {\n if (markdownRenderer) {\n markdownRenderer.remarkPlugins.push(wikiLinkPlugin);\n if (!inkdrop.isMobile) {\n this.setWikiLinkComponent();\n }\n }\n },\n\n deactivate() {\n if (markdownRenderer) {\n markdownRenderer.remarkPlugins = markdownRenderer.remarkPlugins.filter(\n (plugin) => plugin !== WikiLink\n );\n if (!inkdrop.isMobile) {\n this.unsetWikiLinkComponent();\n }\n }\n },\n setWikiLinkComponent() {\n const OriginalAnchor = markdownRenderer.remarkReactComponents.a;\n const WikiLink = createRemarkWikiLink(OriginalAnchor);\n markdownRenderer.remarkReactComponents.a = WikiLink;\n this.originalAnchorComponent = OriginalAnchor;\n },\n\n unsetWikiLinkComponent() {\n markdownRenderer.remarkReactComponents.a = this.originalAnchorComponent;\n },\n};\n"],"file":"index.js"} \ No newline at end of file +{"version":3,"sources":["../src/index.js"],"names":["module","exports","originalSpanComponent","setWikiLinkComponent","OriginalSpan","markdownRenderer","remarkReactComponents","span","WikiLink","unsetWikiLinkComponent","activate","remarkPlugins","push","wikiLinkPlugin","inkdrop","isMobile","deactivate","filter","plugin"],"mappings":";;AAAA;;AACA;;AACA;;;;AAEAA,MAAM,CAACC,OAAP,GAAiB;AACbC,EAAAA,qBAAqB,EAAE,IADV;;AAEbC,EAAAA,oBAAoB,GAAG;AACnB,UAAMC,YAAY,GAAGC,0BAAiBC,qBAAjB,CAAuCC,IAA5D;AACA,UAAMC,QAAQ,GAAG,wBAAqBJ,YAArB,CAAjB;AACAC,8BAAiBC,qBAAjB,CAAuCC,IAAvC,GAA8CC,QAA9C;AACA,SAAKN,qBAAL,GAA6BE,YAA7B;AACH,GAPY;;AASbK,EAAAA,sBAAsB,GAAG;AACrBJ,8BAAiBC,qBAAjB,CAAuCC,IAAvC,GAA8C,KAAKL,qBAAnD;AACH,GAXY;;AAYbQ,EAAAA,QAAQ,GAAG;AACP,QAAIL,yBAAJ,EAAsB;AAClBA,gCAAiBM,aAAjB,CAA+BC,IAA/B,CAAoCC,yBAApC,EADkB,CAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA;;AACA,UAAI,CAACC,OAAO,CAACC,QAAb,EAAuB;AACnB,aAAKZ,oBAAL;AACH;AACJ;AACJ,GA7BY;;AA+Bba,EAAAA,UAAU,GAAG;AACT,QAAIX,yBAAJ,EAAsB;AAClBA,gCAAiBM,aAAjB,GAAiCN,0BAAiBM,aAAjB,CAA+BM,MAA/B,CAC5BC,MAAD,IAAYA,MAAM,KAAKL,yBADM,CAAjC,CADkB,CAIlB;AACA;AACA;;AACA,UAAI,CAACC,OAAO,CAACC,QAAb,EAAuB;AACnB,aAAKN,sBAAL;AACH;AACJ;AACJ;;AA3CY,CAAjB","sourcesContent":["import { markdownRenderer } from \"inkdrop\";\nimport createRemarkWikiLink from \"./wiki_link\";\nimport wikiLinkPlugin from \"./wiki_link_plugin\";\n\nmodule.exports = {\n originalSpanComponent: null,\n setWikiLinkComponent() {\n const OriginalSpan = markdownRenderer.remarkReactComponents.span;\n const WikiLink = createRemarkWikiLink(OriginalSpan);\n markdownRenderer.remarkReactComponents.span = WikiLink;\n this.originalSpanComponent = OriginalSpan;\n },\n\n unsetWikiLinkComponent() {\n markdownRenderer.remarkReactComponents.span = this.originalSpanComponent;\n },\n activate() {\n if (markdownRenderer) {\n markdownRenderer.remarkPlugins.push(wikiLinkPlugin);\n // markdownRenderer.remarkReactComponents.wikiLink = WikiLink;\n // Array.from(document.querySelectorAll(\".wiki_link\")).forEach(\n // (wiki_link_node) => {\n // wiki_link_node.addEventListener(\"click\", (event) => {\n // console.log(event);\n // console.log(event.target.textContent);\n // });\n // }\n // );\n debugger;\n if (!inkdrop.isMobile) {\n this.setWikiLinkComponent();\n }\n }\n },\n\n deactivate() {\n if (markdownRenderer) {\n markdownRenderer.remarkPlugins = markdownRenderer.remarkPlugins.filter(\n (plugin) => plugin !== wikiLinkPlugin\n );\n // if (remarkReactComponents.wikiLink === WikiLink) {\n // delete remarkReactComponents.wikiLink;\n // }\n if (!inkdrop.isMobile) {\n this.unsetWikiLinkComponent();\n }\n }\n },\n};\n"],"file":"index.js"} \ No newline at end of file diff --git a/lib/wiki_link.js b/lib/wiki_link.js index 1902047..aa485d3 100644 --- a/lib/wiki_link.js +++ b/lib/wiki_link.js @@ -20,9 +20,9 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -const db = (_inkdrop = inkdrop) === null || _inkdrop === void 0 ? void 0 : (_inkdrop$main = _inkdrop.main) === null || _inkdrop$main === void 0 ? void 0 : (_inkdrop$main$dataSto = _inkdrop$main.dataStore) === null || _inkdrop$main$dataSto === void 0 ? void 0 : _inkdrop$main$dataSto.getLocalDB(); +const db = inkdrop && ((_inkdrop = inkdrop) === null || _inkdrop === void 0 ? void 0 : (_inkdrop$main = _inkdrop.main) === null || _inkdrop$main === void 0 ? void 0 : (_inkdrop$main$dataSto = _inkdrop$main.dataStore) === null || _inkdrop$main$dataSto === void 0 ? void 0 : _inkdrop$main$dataSto.getLocalDB()); -const createRemarkWikiLink = OriginalAnchor => { +const createRemarkWikiLink = OriginalSpan => { var _class, _temp; return _temp = _class = class WikiLink extends React.Component { @@ -32,12 +32,11 @@ const createRemarkWikiLink = OriginalAnchor => { if (link) { try { const attributes = { - className: "wiki_link", + // href: `inkdrop://note/${link}`, onClick: event => { - event.preventDefault(); - event.stopPropagation(); - if (db) { + event.preventDefault(); + event.stopPropagation(); db.utils.search(`title:${link}`).then(note => { let noteToOpenId; @@ -62,21 +61,21 @@ const createRemarkWikiLink = OriginalAnchor => { noteId: noteToOpenId }); }); + return false; } - - return false; }, renderError: error => { return /*#__PURE__*/React.createElement("span", { className: "ui error message mde-error-message" }, error.message); - } + }, + ...this.props }; - if (OriginalAnchor) { - return /*#__PURE__*/React.createElement(OriginalAnchor, attributes, link); + if (OriginalSpan) { + return /*#__PURE__*/React.createElement(OriginalSpan, this.props, this.props.children); } else { - return /*#__PURE__*/React.createElement("a", attributes, link); + return /*#__PURE__*/React.createElement("span", attributes, link); } } catch (e) { return /*#__PURE__*/React.createElement("span", null, e.message); diff --git a/lib/wiki_link.js.map b/lib/wiki_link.js.map index cd3f948..224811f 100644 --- a/lib/wiki_link.js.map +++ b/lib/wiki_link.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/wiki_link.js"],"names":["db","inkdrop","main","dataStore","getLocalDB","createRemarkWikiLink","OriginalAnchor","WikiLink","React","Component","render","link","props","children","attributes","className","onClick","event","preventDefault","stopPropagation","utils","search","then","note","noteToOpenId","docs","length","_id","editingNote","store","getState","notes","createId","put","_rev","undefined","body","title","createdAt","Date","now","updatedAt","commands","dispatch","document","noteId","renderError","error","message","e","PropTypes","arrayOf","string"],"mappings":";AAAA;;;;;;;AACA;;AACA;;;;;;;;;;;;AAEA,MAAMA,EAAE,eAAGC,OAAH,8DAAG,SAASC,IAAZ,2EAAG,cAAeC,SAAlB,0DAAG,sBAA0BC,UAA1B,EAAX;;AAEA,MAAMC,oBAAoB,GAAIC,cAAD,IAAoB;AAAA;;AAC7C,0BAAO,MAAMC,QAAN,SAAuBC,KAAK,CAACC,SAA7B,CAAuC;AAK1CC,IAAAA,MAAM,GAAG;AACL,YAAMC,IAAI,GAAG,KAAKC,KAAL,CAAWC,QAAX,CAAoB,CAApB,CAAb;;AACA,UAAIF,IAAJ,EAAU;AACN,YAAI;AACA,gBAAMG,UAAU,GAAG;AACfC,YAAAA,SAAS,EAAE,WADI;AAEfC,YAAAA,OAAO,EAAGC,KAAD,IAAW;AAChBA,cAAAA,KAAK,CAACC,cAAN;AACAD,cAAAA,KAAK,CAACE,eAAN;;AACA,kBAAInB,EAAJ,EAAQ;AACJA,gBAAAA,EAAE,CAACoB,KAAH,CACKC,MADL,CACa,SAAQV,IAAK,EAD1B,EAEKW,IAFL,CAEWC,IAAD,IAAU;AACZ,sBAAIC,YAAJ;;AACA,sBACID,IAAI,SAAJ,IAAAA,IAAI,WAAJ,IAAAA,IAAI,CAAEE,IAAN,IACAF,IAAI,CAACE,IAAL,CAAUC,MAAV,GAAmB,CAFvB,EAGE;AACEF,oBAAAA,YAAY,GAAGD,IAAI,CAACE,IAAL,CAAU,CAAV,EAAaE,GAA5B;AACH,mBALD,MAKO;AACH,0BAAM;AACFC,sBAAAA;AADE,wBAEF3B,OAAO,CAAC4B,KAAR,CAAcC,QAAd,EAFJ;AAGAN,oBAAAA,YAAY,GAAGxB,EAAE,CAAC+B,KAAH,CAASC,QAAT,EAAf;AACAhC,oBAAAA,EAAE,CAAC+B,KAAH,CAASE,GAAT,CAAa,EACT,GAAGL,WADM;AAETD,sBAAAA,GAAG,EAAEH,YAFI;AAGTU,sBAAAA,IAAI,EAAEC,SAHG;AAITC,sBAAAA,IAAI,EAAE,EAJG;AAKTC,sBAAAA,KAAK,EAAE1B,IALE;AAMT2B,sBAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EANF;AAOTC,sBAAAA,SAAS,EAAEF,IAAI,CAACC,GAAL;AAPF,qBAAb;AASH;;AACDvC,kBAAAA,OAAO,CAACyC,QAAR,CAAiBC,QAAjB,CACIC,QAAQ,CAACR,IADb,EAEI,gBAFJ,EAGI;AAAES,oBAAAA,MAAM,EAAErB;AAAV,mBAHJ;AAKH,iBA7BL;AA8BH;;AACD,qBAAO,KAAP;AACH,aAtCc;AAuCfsB,YAAAA,WAAW,EAAGC,KAAD,IAAW;AACpB,kCACI;AAAM,gBAAA,SAAS,EAAC;AAAhB,iBACKA,KAAK,CAACC,OADX,CADJ;AAKH;AA7Cc,WAAnB;;AA+CA,cAAI1C,cAAJ,EAAoB;AAChB,gCACI,oBAAC,cAAD,EAAoBQ,UAApB,EACKH,IADL,CADJ;AAKH,WAND,MAMO;AACH,gCAAO,yBAAOG,UAAP,EAAoBH,IAApB,CAAP;AACH;AACJ,SAzDD,CAyDE,OAAOsC,CAAP,EAAU;AACR,8BAAO,kCAAOA,CAAC,CAACD,OAAT,CAAP;AACH;AACJ,OA7DD,MA6DO;AACH,4BAAO,sDAAP;AACH;AACJ;;AAvEyC,GAA9C,uCACuB;AACfnC,IAAAA,QAAQ,EAAEqC,mBAAUC,OAAV,CAAkBD,mBAAUE,MAA5B;AADK,GADvB;AAyEH,CA1ED;;eA4Ee/C,oB","sourcesContent":["\"use babel\";\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst db = inkdrop?.main?.dataStore?.getLocalDB();\n\nconst createRemarkWikiLink = (OriginalAnchor) => {\n return class WikiLink extends React.Component {\n static propTypes = {\n children: PropTypes.arrayOf(PropTypes.string),\n };\n\n render() {\n const link = this.props.children[0];\n if (link) {\n try {\n const attributes = {\n className: \"wiki_link\",\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n if (db) {\n db.utils\n .search(`title:${link}`)\n .then((note) => {\n let noteToOpenId;\n if (\n note?.docs &&\n note.docs.length > 0\n ) {\n noteToOpenId = note.docs[0]._id;\n } else {\n const {\n editingNote,\n } = inkdrop.store.getState();\n noteToOpenId = db.notes.createId();\n db.notes.put({\n ...editingNote,\n _id: noteToOpenId,\n _rev: undefined,\n body: \"\",\n title: link,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n });\n }\n inkdrop.commands.dispatch(\n document.body,\n \"core:open-note\",\n { noteId: noteToOpenId }\n );\n });\n }\n return false;\n },\n renderError: (error) => {\n return (\n \n {error.message}\n \n );\n },\n };\n if (OriginalAnchor) {\n return (\n \n {link}\n \n );\n } else {\n return {link};\n }\n } catch (e) {\n return {e.message};\n }\n } else {\n return Invalid Wiki Link;\n }\n }\n };\n};\n\nexport default createRemarkWikiLink;\n"],"file":"wiki_link.js"} \ No newline at end of file +{"version":3,"sources":["../src/wiki_link.js"],"names":["db","inkdrop","main","dataStore","getLocalDB","createRemarkWikiLink","OriginalSpan","WikiLink","React","Component","render","link","props","children","attributes","className","onClick","event","preventDefault","stopPropagation","utils","search","then","note","noteToOpenId","docs","length","_id","editingNote","store","getState","notes","createId","put","_rev","undefined","body","title","createdAt","Date","now","updatedAt","commands","dispatch","document","noteId","renderError","error","message","e","PropTypes","arrayOf","string"],"mappings":";AAAA;;;;;;;AACA;;AACA;;;;;;;;;;;;AAEA,MAAMA,EAAE,GAAGC,OAAO,iBAAIA,OAAJ,8DAAI,SAASC,IAAb,2EAAI,cAAeC,SAAnB,0DAAI,sBAA0BC,UAA1B,EAAJ,CAAlB;;AAEA,MAAMC,oBAAoB,GAAIC,YAAD,IAAkB;AAAA;;AAC3C,0BAAO,MAAMC,QAAN,SAAuBC,KAAK,CAACC,SAA7B,CAAuC;AAK1CC,IAAAA,MAAM,GAAG;AACL;AACA,YAAMC,IAAI,GAAG,KAAKC,KAAL,CAAWC,QAAX,CAAoB,CAApB,CAAb;;AACA,UAAIF,IAAJ,EAAU;AACN,YAAI;AACA,gBAAMG,UAAU,GAAG;AACfC,YAAAA,SAAS,EAAE,WADI;AAEf;AACAC,YAAAA,OAAO,EAAGC,KAAD,IAAW;AAChB;;AACA,kBAAIjB,EAAJ,EAAQ;AACJiB,gBAAAA,KAAK,CAACC,cAAN;AACAD,gBAAAA,KAAK,CAACE,eAAN;AACAnB,gBAAAA,EAAE,CAACoB,KAAH,CACKC,MADL,CACa,SAAQV,IAAK,EAD1B,EAEKW,IAFL,CAEWC,IAAD,IAAU;AACZ;AACA,sBAAIC,YAAJ;;AACA,sBACID,IAAI,SAAJ,IAAAA,IAAI,WAAJ,IAAAA,IAAI,CAAEE,IAAN,IACAF,IAAI,CAACE,IAAL,CAAUC,MAAV,GAAmB,CAFvB,EAGE;AACEF,oBAAAA,YAAY,GAAGD,IAAI,CAACE,IAAL,CAAU,CAAV,EAAaE,GAA5B;AACH,mBALD,MAKO;AACH,0BAAM;AACFC,sBAAAA;AADE,wBAEF3B,OAAO,CAAC4B,KAAR,CAAcC,QAAd,EAFJ;AAGAN,oBAAAA,YAAY,GAAGxB,EAAE,CAAC+B,KAAH,CAASC,QAAT,EAAf;AACAhC,oBAAAA,EAAE,CAAC+B,KAAH,CAASE,GAAT,CAAa,EACT,GAAGL,WADM;AAETD,sBAAAA,GAAG,EAAEH,YAFI;AAGTU,sBAAAA,IAAI,EAAEC,SAHG;AAITC,sBAAAA,IAAI,EAAE,EAJG;AAKTC,sBAAAA,KAAK,EAAE1B,IALE;AAMT2B,sBAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EANF;AAOTC,sBAAAA,SAAS,EAAEF,IAAI,CAACC,GAAL;AAPF,qBAAb;AASH;;AACDvC,kBAAAA,OAAO,CAACyC,QAAR,CAAiBC,QAAjB,CACIC,QAAQ,CAACR,IADb,EAEI,gBAFJ,EAGI;AAAES,oBAAAA,MAAM,EAAErB;AAAV,mBAHJ;AAKH,iBA9BL;AAgCA,uBAAO,KAAP;AACH;AACJ,aA1Cc;AA2CfsB,YAAAA,WAAW,EAAGC,KAAD,IAAW;AACpB,kCACI;AAAM,gBAAA,SAAS,EAAC;AAAhB,iBACKA,KAAK,CAACC,OADX,CADJ;AAKH;AAjDc,WAAnB;;AAmDA,cAAI1C,YAAJ,EAAkB;AACd,gCAAO,oBAAC,YAAD,OAAP;AACH,WAFD,MAEO;AACH;AACA,gCAAO,4BAAUQ,UAAV,EAAuBH,IAAvB,CAAP;AACH;AACJ,SA1DD,CA0DE,OAAOsC,CAAP,EAAU;AACR,8BAAO,kCAAOA,CAAC,CAACD,OAAT,CAAP;AACH;AACJ,OA9DD,MA8DO;AACH,4BAAO,sDAAP;AACH;AACJ;;AAzEyC,GAA9C,uCACuB;AACfnC,IAAAA,QAAQ,EAAEqC,mBAAUC,OAAV,CAAkBD,mBAAUE,MAA5B;AADK,GADvB;AA2EH,CA5ED;;eA8Ee/C,oB","sourcesContent":["\"use babel\";\nimport * as React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst db = inkdrop && inkdrop?.main?.dataStore?.getLocalDB();\n\nconst createRemarkWikiLink = (OriginalSpan) => {\n return class WikiLink extends React.Component {\n static propTypes = {\n children: PropTypes.arrayOf(PropTypes.string),\n };\n\n render() {\n debugger;\n const link = this.props.children[0];\n if (link) {\n try {\n const attributes = {\n className: \"wiki_link\",\n // href: `inkdrop://note/${link}`,\n onClick: (event) => {\n debugger;\n if (db) {\n event.preventDefault();\n event.stopPropagation();\n db.utils\n .search(`title:${link}`)\n .then((note) => {\n debugger;\n let noteToOpenId;\n if (\n note?.docs &&\n note.docs.length > 0\n ) {\n noteToOpenId = note.docs[0]._id;\n } else {\n const {\n editingNote,\n } = inkdrop.store.getState();\n noteToOpenId = db.notes.createId();\n db.notes.put({\n ...editingNote,\n _id: noteToOpenId,\n _rev: undefined,\n body: \"\",\n title: link,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n });\n }\n inkdrop.commands.dispatch(\n document.body,\n \"core:open-note\",\n { noteId: noteToOpenId }\n );\n });\n\n return false;\n }\n },\n renderError: (error) => {\n return (\n \n {error.message}\n \n );\n },\n };\n if (OriginalSpan) {\n return ;\n } else {\n // debugger;\n return {link};\n }\n } catch (e) {\n return {e.message};\n }\n } else {\n return Invalid Wiki Link;\n }\n }\n };\n};\n\nexport default createRemarkWikiLink;\n"],"file":"wiki_link.js"} \ No newline at end of file diff --git a/lib/wiki_link_plugin.js b/lib/wiki_link_plugin.js index 8183798..5e994cd 100644 --- a/lib/wiki_link_plugin.js +++ b/lib/wiki_link_plugin.js @@ -31,7 +31,7 @@ function wikiLinkPlugin(opts = {}) { type: "wikiLink", data: { alias: displayName, - hName: "a", + hName: "span", hProperties: { className: classNames }, @@ -49,7 +49,7 @@ function wikiLinkPlugin(opts = {}) { const inlineTokenizers = Parser.prototype.inlineTokenizers; const inlineMethods = Parser.prototype.inlineMethods; inlineTokenizers.wikiLink = inlineTokenizer; - inlineMethods.splice(inlineMethods.indexOf("link"), 0, "wikiLink"); // Stringify for wiki link + inlineMethods.splice(inlineMethods.indexOf("link"), 0, "wikiLink"); // Stringify for wiki link: const Compiler = this.Compiler; diff --git a/lib/wiki_link_plugin.js.map b/lib/wiki_link_plugin.js.map index 537e2f9..c4b5e0f 100644 --- a/lib/wiki_link_plugin.js.map +++ b/lib/wiki_link_plugin.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/wiki_link_plugin.js"],"names":["LINK_REGEX","locator","value","fromIndex","indexOf","wikiLinkPlugin","opts","wikiLinkClassName","aliasDivider","inlineTokenizer","eat","match","exec","displayName","trim","classNames","type","data","alias","hName","hProperties","className","hChildren","Parser","inlineTokenizers","prototype","inlineMethods","wikiLink","splice","Compiler","visitors","node","module","exports"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,UAAU,GAAG,gBAAnB;;AAEA,SAASC,OAAT,CAAiBC,KAAjB,EAAwBC,SAAxB,EAAmC;AAC/B,SAAOD,KAAK,CAACE,OAAN,CAAc,GAAd,EAAmBD,SAAnB,CAAP;AACH;;AAED,SAASE,cAAT,CAAwBC,IAAI,GAAG,EAA/B,EAAmC;AAC/B,MAAIC,iBAAiB,GAAGD,IAAI,CAACC,iBAAL,IAA0B,WAAlD;AACA,MAAIC,YAAY,GAAGF,IAAI,CAACE,YAAL,IAAqB,GAAxC;;AAEA,WAASC,eAAT,CAAyBC,GAAzB,EAA8BR,KAA9B,EAAqC;AACjC,QAAIS,KAAK,GAAGX,UAAU,CAACY,IAAX,CAAgBV,KAAhB,CAAZ;;AAEA,QAAIS,KAAJ,EAAW;AACP,YAAME,WAAW,GAAGF,KAAK,CAAC,CAAD,CAAL,CAASG,IAAT,EAApB;AACA,UAAIC,UAAU,GAAGR,iBAAjB;AAEA,aAAOG,GAAG,CAACC,KAAK,CAAC,CAAD,CAAN,CAAH,CAAc;AACjBK,QAAAA,IAAI,EAAE,UADW;AAEjBC,QAAAA,IAAI,EAAE;AACFC,UAAAA,KAAK,EAAEL,WADL;AAEFM,UAAAA,KAAK,EAAE,GAFL;AAGFC,UAAAA,WAAW,EAAE;AACTC,YAAAA,SAAS,EAAEN;AADF,WAHX;AAMFO,UAAAA,SAAS,EAAE,CACP;AACIN,YAAAA,IAAI,EAAE,MADV;AAEId,YAAAA,KAAK,EAAEW;AAFX,WADO;AANT;AAFW,OAAd,CAAP;AAgBH;AACJ;;AAEDJ,EAAAA,eAAe,CAACR,OAAhB,GAA0BA,OAA1B;AAEA,QAAMsB,MAAM,GAAG,KAAKA,MAApB;AAEA,QAAMC,gBAAgB,GAAGD,MAAM,CAACE,SAAP,CAAiBD,gBAA1C;AACA,QAAME,aAAa,GAAGH,MAAM,CAACE,SAAP,CAAiBC,aAAvC;AACAF,EAAAA,gBAAgB,CAACG,QAAjB,GAA4BlB,eAA5B;AACAiB,EAAAA,aAAa,CAACE,MAAd,CAAqBF,aAAa,CAACtB,OAAd,CAAsB,MAAtB,CAArB,EAAoD,CAApD,EAAuD,UAAvD,EArC+B,CAuC/B;;AACA,QAAMyB,QAAQ,GAAG,KAAKA,QAAtB;;AAEA,MAAIA,QAAQ,IAAI,IAAhB,EAAsB;AAClB,UAAMC,QAAQ,GAAGD,QAAQ,CAACJ,SAAT,CAAmBK,QAApC;;AACA,QAAIA,QAAJ,EAAc;AACVA,MAAAA,QAAQ,CAACH,QAAT,GAAoB,UAAUI,IAAV,EAAgB;AAChC,YAAIA,IAAI,CAACd,IAAL,CAAUC,KAAV,IAAmBa,IAAI,CAAC7B,KAA5B,EAAmC;AAC/B,iBAAQ,KAAI6B,IAAI,CAAC7B,KAAM,GAAEM,YAAa,GAAEuB,IAAI,CAACd,IAAL,CAAUC,KAAM,IAAxD;AACH;;AACD,eAAQ,KAAIa,IAAI,CAAC7B,KAAM,IAAvB;AACH,OALD;AAMH;AACJ;AACJ;;AAED8B,MAAM,CAACC,OAAP,GAAiB5B,cAAjB","sourcesContent":["/**\n * @author landakram\n * @copyright 2017 Mark Hudnall\n * @license MIT\n * @see https://github.com/landakram/remark-wiki-link\n */\n// Modified version of:\n// https://github.com/landakram/remark-wiki-link/blob/v0.0.4/src/index.js\n//\n// Replaces:\n// \"remark-wiki-link\": \"0.x.x\",\n\nconst LINK_REGEX = /^\\[\\[(.+?)\\]\\]/;\n\nfunction locator(value, fromIndex) {\n return value.indexOf(\"[\", fromIndex);\n}\n\nfunction wikiLinkPlugin(opts = {}) {\n let wikiLinkClassName = opts.wikiLinkClassName || \"wiki_link\";\n let aliasDivider = opts.aliasDivider || \":\";\n\n function inlineTokenizer(eat, value) {\n let match = LINK_REGEX.exec(value);\n\n if (match) {\n const displayName = match[1].trim();\n let classNames = wikiLinkClassName;\n\n return eat(match[0])({\n type: \"wikiLink\",\n data: {\n alias: displayName,\n hName: \"a\",\n hProperties: {\n className: classNames,\n },\n hChildren: [\n {\n type: \"text\",\n value: displayName,\n },\n ],\n },\n });\n }\n }\n\n inlineTokenizer.locator = locator;\n\n const Parser = this.Parser;\n\n const inlineTokenizers = Parser.prototype.inlineTokenizers;\n const inlineMethods = Parser.prototype.inlineMethods;\n inlineTokenizers.wikiLink = inlineTokenizer;\n inlineMethods.splice(inlineMethods.indexOf(\"link\"), 0, \"wikiLink\");\n\n // Stringify for wiki link\n const Compiler = this.Compiler;\n\n if (Compiler != null) {\n const visitors = Compiler.prototype.visitors;\n if (visitors) {\n visitors.wikiLink = function (node) {\n if (node.data.alias != node.value) {\n return `[[${node.value}${aliasDivider}${node.data.alias}]]`;\n }\n return `[[${node.value}]]`;\n };\n }\n }\n}\n\nmodule.exports = wikiLinkPlugin;\n"],"file":"wiki_link_plugin.js"} \ No newline at end of file +{"version":3,"sources":["../src/wiki_link_plugin.js"],"names":["LINK_REGEX","locator","value","fromIndex","indexOf","wikiLinkPlugin","opts","wikiLinkClassName","aliasDivider","inlineTokenizer","eat","match","exec","displayName","trim","classNames","type","data","alias","hName","hProperties","className","hChildren","Parser","inlineTokenizers","prototype","inlineMethods","wikiLink","splice","Compiler","visitors","node","module","exports"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,UAAU,GAAG,gBAAnB;;AAEA,SAASC,OAAT,CAAiBC,KAAjB,EAAwBC,SAAxB,EAAmC;AAC/B,SAAOD,KAAK,CAACE,OAAN,CAAc,GAAd,EAAmBD,SAAnB,CAAP;AACH;;AAED,SAASE,cAAT,CAAwBC,IAAI,GAAG,EAA/B,EAAmC;AAC/B,MAAIC,iBAAiB,GAAGD,IAAI,CAACC,iBAAL,IAA0B,WAAlD;AACA,MAAIC,YAAY,GAAGF,IAAI,CAACE,YAAL,IAAqB,GAAxC;;AAEA,WAASC,eAAT,CAAyBC,GAAzB,EAA8BR,KAA9B,EAAqC;AACjC,QAAIS,KAAK,GAAGX,UAAU,CAACY,IAAX,CAAgBV,KAAhB,CAAZ;;AAEA,QAAIS,KAAJ,EAAW;AACP,YAAME,WAAW,GAAGF,KAAK,CAAC,CAAD,CAAL,CAASG,IAAT,EAApB;AACA,UAAIC,UAAU,GAAGR,iBAAjB;AAEA,aAAOG,GAAG,CAACC,KAAK,CAAC,CAAD,CAAN,CAAH,CAAc;AACjBK,QAAAA,IAAI,EAAE,UADW;AAEjBC,QAAAA,IAAI,EAAE;AACFC,UAAAA,KAAK,EAAEL,WADL;AAEFM,UAAAA,KAAK,EAAE,MAFL;AAGFC,UAAAA,WAAW,EAAE;AACTC,YAAAA,SAAS,EAAEN;AADF,WAHX;AAMFO,UAAAA,SAAS,EAAE,CACP;AACIN,YAAAA,IAAI,EAAE,MADV;AAEId,YAAAA,KAAK,EAAEW;AAFX,WADO;AANT;AAFW,OAAd,CAAP;AAgBH;AACJ;;AAEDJ,EAAAA,eAAe,CAACR,OAAhB,GAA0BA,OAA1B;AAEA,QAAMsB,MAAM,GAAG,KAAKA,MAApB;AAEA,QAAMC,gBAAgB,GAAGD,MAAM,CAACE,SAAP,CAAiBD,gBAA1C;AACA,QAAME,aAAa,GAAGH,MAAM,CAACE,SAAP,CAAiBC,aAAvC;AACAF,EAAAA,gBAAgB,CAACG,QAAjB,GAA4BlB,eAA5B;AACAiB,EAAAA,aAAa,CAACE,MAAd,CAAqBF,aAAa,CAACtB,OAAd,CAAsB,MAAtB,CAArB,EAAoD,CAApD,EAAuD,UAAvD,EArC+B,CAuC/B;;AACA,QAAMyB,QAAQ,GAAG,KAAKA,QAAtB;;AAEA,MAAIA,QAAQ,IAAI,IAAhB,EAAsB;AAClB,UAAMC,QAAQ,GAAGD,QAAQ,CAACJ,SAAT,CAAmBK,QAApC;;AACA,QAAIA,QAAJ,EAAc;AACVA,MAAAA,QAAQ,CAACH,QAAT,GAAoB,UAAUI,IAAV,EAAgB;AAChC,YAAIA,IAAI,CAACd,IAAL,CAAUC,KAAV,IAAmBa,IAAI,CAAC7B,KAA5B,EAAmC;AAC/B,iBAAQ,KAAI6B,IAAI,CAAC7B,KAAM,GAAEM,YAAa,GAAEuB,IAAI,CAACd,IAAL,CAAUC,KAAM,IAAxD;AACH;;AACD,eAAQ,KAAIa,IAAI,CAAC7B,KAAM,IAAvB;AACH,OALD;AAMH;AACJ;AACJ;;AAED8B,MAAM,CAACC,OAAP,GAAiB5B,cAAjB","sourcesContent":["/**\n * @author landakram\n * @copyright 2017 Mark Hudnall\n * @license MIT\n * @see https://github.com/landakram/remark-wiki-link\n */\n// Modified version of:\n// https://github.com/landakram/remark-wiki-link/blob/v0.0.4/src/index.js\n//\n// Replaces:\n// \"remark-wiki-link\": \"0.x.x\",\n\nconst LINK_REGEX = /^\\[\\[(.+?)\\]\\]/;\n\nfunction locator(value, fromIndex) {\n return value.indexOf(\"[\", fromIndex);\n}\n\nfunction wikiLinkPlugin(opts = {}) {\n let wikiLinkClassName = opts.wikiLinkClassName || \"wiki_link\";\n let aliasDivider = opts.aliasDivider || \":\";\n\n function inlineTokenizer(eat, value) {\n let match = LINK_REGEX.exec(value);\n\n if (match) {\n const displayName = match[1].trim();\n let classNames = wikiLinkClassName;\n\n return eat(match[0])({\n type: \"wikiLink\",\n data: {\n alias: displayName,\n hName: \"span\",\n hProperties: {\n className: classNames,\n },\n hChildren: [\n {\n type: \"text\",\n value: displayName,\n },\n ],\n },\n });\n }\n }\n\n inlineTokenizer.locator = locator;\n\n const Parser = this.Parser;\n\n const inlineTokenizers = Parser.prototype.inlineTokenizers;\n const inlineMethods = Parser.prototype.inlineMethods;\n inlineTokenizers.wikiLink = inlineTokenizer;\n inlineMethods.splice(inlineMethods.indexOf(\"link\"), 0, \"wikiLink\");\n\n // Stringify for wiki link:\n const Compiler = this.Compiler;\n\n if (Compiler != null) {\n const visitors = Compiler.prototype.visitors;\n if (visitors) {\n visitors.wikiLink = function (node) {\n if (node.data.alias != node.value) {\n return `[[${node.value}${aliasDivider}${node.data.alias}]]`;\n }\n return `[[${node.value}]]`;\n };\n }\n }\n}\n\nmodule.exports = wikiLinkPlugin;\n"],"file":"wiki_link_plugin.js"} \ No newline at end of file diff --git a/package.json b/package.json index 2cc6a42..f79e625 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "wiki_links", "main": "./lib/index", - "version": "0.1.8", + "version": "0.1.9-dev", "description": "Bring wiki style links to Inkdrop.", "keywords": [], "repository": "git@github.com:ryanpcmcquen/inkdrop_wiki_links.git", diff --git a/src/index.js b/src/index.js index 57ace54..c3406ee 100644 --- a/src/index.js +++ b/src/index.js @@ -3,11 +3,21 @@ import createRemarkWikiLink from "./wiki_link"; import wikiLinkPlugin from "./wiki_link_plugin"; module.exports = { - originalAnchorComponent: null, + originalSpanComponent: null, + setWikiLinkComponent() { + const OriginalSpan = markdownRenderer.remarkReactComponents.span; + const WikiLink = createRemarkWikiLink(OriginalSpan); + markdownRenderer.remarkReactComponents.span = WikiLink; + this.originalSpanComponent = OriginalSpan; + }, + + unsetWikiLinkComponent() { + markdownRenderer.remarkReactComponents.span = this.originalSpanComponent; + }, activate() { if (markdownRenderer) { markdownRenderer.remarkPlugins.push(wikiLinkPlugin); - if (!inkdrop || !inkdrop.isMobile) { + if (!inkdrop.isMobile) { this.setWikiLinkComponent(); } } @@ -16,21 +26,11 @@ module.exports = { deactivate() { if (markdownRenderer) { markdownRenderer.remarkPlugins = markdownRenderer.remarkPlugins.filter( - (plugin) => plugin !== WikiLink + (plugin) => plugin !== wikiLinkPlugin ); - if (!inkdrop || !inkdrop.isMobile) { + if (!inkdrop.isMobile) { this.unsetWikiLinkComponent(); } } }, - setWikiLinkComponent() { - const OriginalAnchor = markdownRenderer.remarkReactComponents.a; - const WikiLink = createRemarkWikiLink(OriginalAnchor); - markdownRenderer.remarkReactComponents.a = WikiLink; - this.originalAnchorComponent = OriginalAnchor; - }, - - unsetWikiLinkComponent() { - markdownRenderer.remarkReactComponents.a = this.originalAnchorComponent; - }, }; diff --git a/src/wiki_link.js b/src/wiki_link.js index 0933573..6cbca0e 100644 --- a/src/wiki_link.js +++ b/src/wiki_link.js @@ -2,9 +2,9 @@ import * as React from "react"; import PropTypes from "prop-types"; -const db = inkdrop?.main?.dataStore?.getLocalDB(); +const db = inkdrop && inkdrop?.main?.dataStore?.getLocalDB(); -const createRemarkWikiLink = (OriginalAnchor) => { +const createRemarkWikiLink = (OriginalSpan) => { return class WikiLink extends React.Component { static propTypes = { children: PropTypes.arrayOf(PropTypes.string), @@ -12,14 +12,15 @@ const createRemarkWikiLink = (OriginalAnchor) => { render() { const link = this.props.children[0]; + if (link) { try { const attributes = { - className: "wiki_link", + // href: `inkdrop://note/${link}`, onClick: (event) => { - event.preventDefault(); - event.stopPropagation(); if (db) { + event.preventDefault(); + event.stopPropagation(); db.utils .search(`title:${link}`) .then((note) => { @@ -50,8 +51,9 @@ const createRemarkWikiLink = (OriginalAnchor) => { { noteId: noteToOpenId } ); }); + + return false; } - return false; }, renderError: (error) => { return ( @@ -60,15 +62,16 @@ const createRemarkWikiLink = (OriginalAnchor) => { ); }, + ...this.props, }; - if (OriginalAnchor) { + if (OriginalSpan) { return ( - - {link} - + + {this.props.children} + ); } else { - return {link}; + return {link}; } } catch (e) { return {e.message}; diff --git a/src/wiki_link_plugin.js b/src/wiki_link_plugin.js index a4db3c1..823d369 100644 --- a/src/wiki_link_plugin.js +++ b/src/wiki_link_plugin.js @@ -31,7 +31,7 @@ function wikiLinkPlugin(opts = {}) { type: "wikiLink", data: { alias: displayName, - hName: "a", + hName: "span", hProperties: { className: classNames, }, @@ -55,7 +55,7 @@ function wikiLinkPlugin(opts = {}) { inlineTokenizers.wikiLink = inlineTokenizer; inlineMethods.splice(inlineMethods.indexOf("link"), 0, "wikiLink"); - // Stringify for wiki link + // Stringify for wiki link: const Compiler = this.Compiler; if (Compiler != null) { diff --git a/styles/wiki_link.less b/styles/wiki_link.less index c5e796d..06768bf 100644 --- a/styles/wiki_link.less +++ b/styles/wiki_link.less @@ -1,4 +1,4 @@ .wiki_link { cursor: pointer; - text-decoration: underline !important; + text-decoration: underline; }