yjs-editorjs-binding
Version:
Editor.js binding for yjs
1 lines • 8.93 kB
JavaScript
var e={999:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var r=[];for(var i=0;i<256;++i){r[i]=(i+256).toString(16).substr(1)}function bytesToUuid(e,t){var i=t||0;var n=r;return[n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],"-",n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]],n[e[i++]]].join("")}var n=bytesToUuid;t["default"]=n},741:(e,t,r)=>{var i;i={value:true};Object.defineProperty(t,"v1",{enumerable:true,get:function(){return n.default}});Object.defineProperty(t,"v3",{enumerable:true,get:function(){return u.default}});Object.defineProperty(t,"v4",{enumerable:true,get:function(){return a.default}});Object.defineProperty(t,"v5",{enumerable:true,get:function(){return o.default}});var n=_interopRequireDefault(r(734));var u=_interopRequireDefault(r(84));var a=_interopRequireDefault(r(844));var o=_interopRequireDefault(r(97));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}},970:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function md5(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return i.default.createHash("md5").update(e).digest()}var n=md5;t["default"]=n},573:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=rng;var i=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function rng(){return i.default.randomBytes(16)}},801:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function sha1(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return i.default.createHash("sha1").update(e).digest()}var n=sha1;t["default"]=n},734:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(r(573));var n=_interopRequireDefault(r(999));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var u;var a;var o=0;var d=0;function v1(e,t,r){var l=t&&r||0;var f=t||[];e=e||{};var s=e.node||u;var c=e.clockseq!==undefined?e.clockseq:a;if(s==null||c==null){var v=e.random||(e.rng||i.default)();if(s==null){s=u=[v[0]|1,v[1],v[2],v[3],v[4],v[5]]}if(c==null){c=a=(v[6]<<8|v[7])&16383}}var _=e.msecs!==undefined?e.msecs:(new Date).getTime();var y=e.nsecs!==undefined?e.nsecs:d+1;var p=_-o+(y-d)/1e4;if(p<0&&e.clockseq===undefined){c=c+1&16383}if((p<0||_>o)&&e.nsecs===undefined){y=0}if(y>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}o=_;d=y;a=c;_+=122192928e5;var h=((_&268435455)*1e4+y)%4294967296;f[l++]=h>>>24&255;f[l++]=h>>>16&255;f[l++]=h>>>8&255;f[l++]=h&255;var b=_/4294967296*1e4&268435455;f[l++]=b>>>8&255;f[l++]=b&255;f[l++]=b>>>24&15|16;f[l++]=b>>>16&255;f[l++]=c>>>8|128;f[l++]=c&255;for(var q=0;q<6;++q){f[l+q]=s[q]}return t?t:(0,n.default)(f)}var l=v1;t["default"]=l},84:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(r(473));var n=_interopRequireDefault(r(970));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const u=(0,i.default)("v3",48,n.default);var a=u;t["default"]=a},473:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=_default;t.URL=t.DNS=void 0;var i=_interopRequireDefault(r(999));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function uuidToBytes(e){var t=[];e.replace(/[a-fA-F0-9]{2}/g,(function(e){t.push(parseInt(e,16))}));return t}function stringToBytes(e){e=unescape(encodeURIComponent(e));var t=new Array(e.length);for(var r=0;r<e.length;r++){t[r]=e.charCodeAt(r)}return t}const n="6ba7b810-9dad-11d1-80b4-00c04fd430c8";t.DNS=n;const u="6ba7b811-9dad-11d1-80b4-00c04fd430c8";t.URL=u;function _default(e,t,r){var generateUUID=function(e,n,u,a){var o=u&&a||0;if(typeof e=="string")e=stringToBytes(e);if(typeof n=="string")n=uuidToBytes(n);if(!Array.isArray(e))throw TypeError("value must be an array of bytes");if(!Array.isArray(n)||n.length!==16)throw TypeError("namespace must be uuid string or an Array of 16 byte values");var d=r(n.concat(e));d[6]=d[6]&15|t;d[8]=d[8]&63|128;if(u){for(var l=0;l<16;++l){u[o+l]=d[l]}}return u||(0,i.default)(d)};try{generateUUID.name=e}catch(e){}generateUUID.DNS=n;generateUUID.URL=u;return generateUUID}},844:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(r(573));var n=_interopRequireDefault(r(999));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function v4(e,t,r){var u=t&&r||0;if(typeof e=="string"){t=e==="binary"?new Array(16):null;e=null}e=e||{};var a=e.random||(e.rng||i.default)();a[6]=a[6]&15|64;a[8]=a[8]&63|128;if(t){for(var o=0;o<16;++o){t[u+o]=a[o]}}return t||(0,n.default)(a)}var u=v4;t["default"]=u},97:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=_interopRequireDefault(r(473));var n=_interopRequireDefault(r(801));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const u=(0,i.default)("v5",80,n.default);var a=u;t["default"]=a},113:e=>{e.exports=require("crypto")}};var t={};function __nccwpck_require__(r){var i=t[r];if(i!==undefined){return i.exports}var n=t[r]={exports:{}};var u=true;try{e[r](n,n.exports,__nccwpck_require__);u=false}finally{if(u)delete t[r]}return n.exports}(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=new URL(".",import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";var r={};(()=>{__nccwpck_require__.d(r,{Z:()=>YJSEditorJSBinding});const createMutex=()=>{let e=true;return(t,r)=>{if(e){e=false;try{t()}finally{e=true}}else if(r!==undefined){r()}}};var e=__nccwpck_require__(741);const t=e.v1;const i=e.v3;const n=e.v4;const u=e.v5;var a=undefined&&undefined.__awaiter||function(e,t,r,i){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,n){function fulfilled(e){try{step(i.next(e))}catch(e){n(e)}}function rejected(e){try{step(i["throw"](e))}catch(e){n(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())}))};class YJSEditorJSBinding{constructor(e){this.internalStore=new Map;this.yArray=e;this.mutex=createMutex();this.isReady=false}bindEditor(e){return a(this,void 0,void 0,(function*(){this.editor=e;yield this.editor.isReady;this.initialRenderYdocToEditorJS();this.deeplyObserveyArray();this.isReady=true}))}onBlockEventEditorJS(e,t){var r;return a(this,void 0,void 0,(function*(){if(this.isReady===false)return;const e=t.detail.index;const i=((r=this.internalStoreAsArray.find((t=>t.index===e)))===null||r===void 0?void 0:r.editorBlock.uuid)||n();const u=(yield t.detail.target.save())||{};u.uuid=i;t.detail.target.holder.setAttribute("data-y2-uuid",i);this.mutex((()=>{switch(t.type){case"block-added":if(this.internalStore.has(i))break;this.yArray.insert(e,[u]);this.internalStore.set(i,{index:e,editorBlock:u});break;case"block-removed":if(!this.internalStore.has(i))break;const t=this.yArray.toArray().findIndex((e=>e.uuid===i));this.yArray.delete(t);this.internalStore.delete(i);break;case"block-changed":if(this.internalStore.has(i)){this.yArray.delete(e)}this.yArray.insert(e,[u]);this.internalStore.set(i,{index:e,editorBlock:u});break}}))}))}get internalStoreAsArray(){return Array.from(this.internalStore.values())}initialRenderYdocToEditorJS(){if(this.yArray.length===0){return}this.yArray.toArray().forEach(((e,t)=>this.renderBlock(e,t)))}deeplyObserveyArray(){this.yArray.observeDeep(((e,t)=>{this.mutex((()=>{for(const t of e){let e=0;for(const r of t.changes.delta){for(const[t,i]of Object.entries(r)){switch(t){case"retain":e+=i;continue;case"insert":for(const t of i){this.internalStore.set(t.uuid,{index:e,editorBlock:t});this.renderBlock(t,e);e++}continue;case"delete":for(let t=e;t<e+i;t++){const e=this.editor.blocks.getBlockByIndex(t);const r=(e===null||e===void 0?void 0:e.holder.getAttribute("data-y2-uuid"))||null;if(r===null)continue;this.editor.blocks.delete(t);this.internalStore.delete(r)}e+=i;continue}}}}}))}))}renderBlock(e,t){this.editor.blocks.insert(e.type,e.data,null,t,false);const r=this.editor.blocks.getBlockByIndex(t);r.holder.setAttribute("data-y2-uuid",e.uuid);this.internalStore.set(e.uuid,{index:t,blockApi:r,editorBlock:e})}}})();var i=r.Z;export{i as YJSEditorJSBinding};