@remirror/extension-epic-mode
Advanced tools
Comparing version 3.0.0-beta.2 to 3.0.0-beta.3
@@ -1,5 +0,16 @@ | ||
var _initClass, _EpicModeExtension, _dec, _class; | ||
var _initClass, _EpicModeExtension, _dec, _class, _applyDecs$c, _extension, _shakeTime, _shakeTimeMax, _lastTime, _particles; | ||
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } | ||
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); } | ||
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } | ||
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } | ||
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } | ||
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; } | ||
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } } | ||
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); } | ||
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); } | ||
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; } | ||
function createAddInitializerMethod(e, t) { return function (r) { assertNotFinished(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r); }; } | ||
function assertInstanceIfPrivate(e, t) { if (!e(t)) throw new TypeError("Attempted to access private element on non-instance"); } | ||
function memberDec(e, t, r, a, n, i, s, o, c, l, u) { var f; switch (i) { case 1: f = "accessor"; break; case 2: f = "method"; break; case 3: f = "getter"; break; case 4: f = "setter"; break; default: f = "field"; } var d, p, h = { kind: f, name: o ? "#" + r : r, static: s, private: o, metadata: u }, v = { v: !1 }; if (0 !== i && (h.addInitializer = createAddInitializerMethod(n, v)), o || 0 !== i && 2 !== i) { if (2 === i) d = function (e) { return assertInstanceIfPrivate(l, e), a.value; };else { var y = 0 === i || 1 === i; (y || 3 === i) && (d = o ? function (e) { return assertInstanceIfPrivate(l, e), a.get.call(e); } : function (e) { return a.get.call(e); }), (y || 4 === i) && (p = o ? function (e, t) { assertInstanceIfPrivate(l, e), a.set.call(e, t); } : function (e, t) { a.set.call(e, t); }); } } else d = function (e) { return e[r]; }, 0 === i && (p = function (e, t) { e[r] = t; }); var m = o ? l.bind() : function (e) { return r in e; }; h.access = d && p ? { get: d, set: p, has: m } : d ? { get: d, has: m } : { set: p, has: m }; try { return e.call(t, c, h); } finally { v.v = !0; } } | ||
function memberDec(e, t, r, a, n, i, s, o, c, l, u) { var f; switch (i) { case 1: f = "accessor"; break; case 2: f = "method"; break; case 3: f = "getter"; break; case 4: f = "setter"; break; default: f = "field"; } var d, p, h = { kind: f, name: o ? "#" + r : r, static: s, private: o, metadata: u }, v = { v: !1 }; if (0 !== i && (h.addInitializer = createAddInitializerMethod(n, v)), o || 0 !== i && 2 !== i) { if (2 === i) d = function d(e) { return assertInstanceIfPrivate(l, e), a.value; };else { var y = 0 === i || 1 === i; (y || 3 === i) && (d = o ? function (e) { return assertInstanceIfPrivate(l, e), a.get.call(e); } : function (e) { return a.get.call(e); }), (y || 4 === i) && (p = o ? function (e, t) { assertInstanceIfPrivate(l, e), a.set.call(e, t); } : function (e, t) { a.set.call(e, t); }); } } else d = function d(e) { return e[r]; }, 0 === i && (p = function p(e, t) { e[r] = t; }); var m = o ? l.bind() : function (e) { return r in e; }; h.access = d && p ? { get: d, set: p, has: m } : d ? { get: d, has: m } : { set: p, has: m }; try { return e.call(t, c, h); } finally { v.v = !0; } } | ||
function assertNotFinished(e, t) { if (e.v) throw new Error("attempted to call " + t + " after decoration was finished"); } | ||
@@ -10,4 +21,4 @@ function assertCallable(e, t) { if ("function" != typeof e) throw new TypeError(t + " must be a function"); } | ||
function curryThis2(e) { return function (t) { e(this, t); }; } | ||
function applyMemberDec(e, t, r, a, n, i, s, o, c, l, u) { var f, d, p, h, v, y, m = r[0]; a || Array.isArray(m) || (m = [m]), o ? f = 0 === i || 1 === i ? { get: curryThis1(r[3]), set: curryThis2(r[4]) } : 3 === i ? { get: r[3] } : 4 === i ? { set: r[3] } : { value: r[3] } : 0 !== i && (f = Object.getOwnPropertyDescriptor(t, n)), 1 === i ? p = { get: f.get, set: f.set } : 2 === i ? p = f.value : 3 === i ? p = f.get : 4 === i && (p = f.set); for (var g = a ? 2 : 1, b = m.length - 1; b >= 0; b -= g) { var I; if (void 0 !== (h = memberDec(m[b], a ? m[b - 1] : void 0, n, f, c, i, s, o, p, l, u))) assertValidReturnValue(i, h), 0 === i ? I = h : 1 === i ? (I = h.init, v = h.get || p.get, y = h.set || p.set, p = { get: v, set: y }) : p = h, void 0 !== I && (void 0 === d ? d = I : "function" == typeof d ? d = [d, I] : d.push(I)); } if (0 === i || 1 === i) { if (void 0 === d) d = function (e, t) { return t; };else if ("function" != typeof d) { var w = d; d = function (e, t) { for (var r = t, a = w.length - 1; a >= 0; a--) r = w[a].call(e, r); return r; }; } else { var M = d; d = function (e, t) { return M.call(e, t); }; } e.push(d); } 0 !== i && (1 === i ? (f.get = p.get, f.set = p.set) : 2 === i ? f.value = p : 3 === i ? f.get = p : 4 === i && (f.set = p), o ? 1 === i ? (e.push(function (e, t) { return p.get.call(e, t); }), e.push(function (e, t) { return p.set.call(e, t); })) : 2 === i ? e.push(p) : e.push(function (e, t) { return p.call(e, t); }) : Object.defineProperty(t, n, f)); } | ||
function applyMemberDecs(e, t, r, a) { for (var n, i, s, o = [], c = new Map(), l = new Map(), u = 0; u < t.length; u++) { var f = t[u]; if (Array.isArray(f)) { var d, p, h = f[1], v = f[2], y = f.length > 3, m = 16 & h, g = !!(8 & h), b = r; if (h &= 7, g ? (d = e, 0 !== h && (p = i = i || []), y && !s && (s = function (t) { return _checkInRHS(t) === e; }), b = s) : (d = e.prototype, 0 !== h && (p = n = n || [])), 0 !== h && !y) { var I = g ? l : c, w = I.get(v) || 0; if (!0 === w || 3 === w && 4 !== h || 4 === w && 3 !== h) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + v); I.set(v, !(!w && h > 2) || h); } applyMemberDec(o, d, f, m, v, h, g, y, p, b, a); } } return pushInitializers(o, n), pushInitializers(o, i), o; } | ||
function applyMemberDec(e, t, r, a, n, i, s, o, c, l, u) { var f, d, p, h, v, y, m = r[0]; a || Array.isArray(m) || (m = [m]), o ? f = 0 === i || 1 === i ? { get: curryThis1(r[3]), set: curryThis2(r[4]) } : 3 === i ? { get: r[3] } : 4 === i ? { set: r[3] } : { value: r[3] } : 0 !== i && (f = Object.getOwnPropertyDescriptor(t, n)), 1 === i ? p = { get: f.get, set: f.set } : 2 === i ? p = f.value : 3 === i ? p = f.get : 4 === i && (p = f.set); for (var g = a ? 2 : 1, b = m.length - 1; b >= 0; b -= g) { var I; if (void 0 !== (h = memberDec(m[b], a ? m[b - 1] : void 0, n, f, c, i, s, o, p, l, u))) assertValidReturnValue(i, h), 0 === i ? I = h : 1 === i ? (I = h.init, v = h.get || p.get, y = h.set || p.set, p = { get: v, set: y }) : p = h, void 0 !== I && (void 0 === d ? d = I : "function" == typeof d ? d = [d, I] : d.push(I)); } if (0 === i || 1 === i) { if (void 0 === d) d = function d(e, t) { return t; };else if ("function" != typeof d) { var w = d; d = function d(e, t) { for (var r = t, a = w.length - 1; a >= 0; a--) r = w[a].call(e, r); return r; }; } else { var M = d; d = function d(e, t) { return M.call(e, t); }; } e.push(d); } 0 !== i && (1 === i ? (f.get = p.get, f.set = p.set) : 2 === i ? f.value = p : 3 === i ? f.get = p : 4 === i && (f.set = p), o ? 1 === i ? (e.push(function (e, t) { return p.get.call(e, t); }), e.push(function (e, t) { return p.set.call(e, t); })) : 2 === i ? e.push(p) : e.push(function (e, t) { return p.call(e, t); }) : Object.defineProperty(t, n, f)); } | ||
function applyMemberDecs(e, t, r, a) { for (var n, i, s, o = [], c = new Map(), l = new Map(), u = 0; u < t.length; u++) { var f = t[u]; if (Array.isArray(f)) { var d, p, h = f[1], v = f[2], y = f.length > 3, m = 16 & h, g = !!(8 & h), b = r; if (h &= 7, g ? (d = e, 0 !== h && (p = i = i || []), y && !s && (s = function s(t) { return _checkInRHS(t) === e; }), b = s) : (d = e.prototype, 0 !== h && (p = n = n || [])), 0 !== h && !y) { var I = g ? l : c, w = I.get(v) || 0; if (!0 === w || 3 === w && 4 !== h || 4 === w && 3 !== h) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + v); I.set(v, !(!w && h > 2) || h); } applyMemberDec(o, d, f, m, v, h, g, y, p, b, a); } } return pushInitializers(o, n), pushInitializers(o, i), o; } | ||
function pushInitializers(e, t) { t && e.push(function (e) { for (var r = 0; r < t.length; r++) t[r].call(e); return e; }); } | ||
@@ -18,2 +29,8 @@ function applyClassDecs(e, t, r, a) { if (t.length) { for (var n = [], i = e, s = e.name, o = r ? 2 : 1, c = t.length - 1; c >= 0; c -= o) { var l = { v: !1 }; try { var u = t[c].call(r ? t[c - 1] : void 0, i, { kind: "class", name: s, addInitializer: createAddInitializerMethod(n, l), metadata: a }); } finally { l.v = !0; } void 0 !== u && (assertValidReturnValue(5, u), i = u); } return [defineMetadata(i, a), function () { for (var e = 0; e < n.length; e++) n[e].call(i); }]; } } | ||
function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; } | ||
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } | ||
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } | ||
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } | ||
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
// src/epic-mode-effects.ts | ||
@@ -34,7 +51,6 @@ import { randomInt } from "@remirror/core"; | ||
var defaultEffect = { | ||
createParticle({ | ||
x, | ||
y, | ||
color | ||
}) { | ||
createParticle(_ref) { | ||
var x = _ref.x, | ||
y = _ref.y, | ||
color = _ref.color; | ||
return { | ||
@@ -50,6 +66,5 @@ x, | ||
}, | ||
updateParticle({ | ||
particle, | ||
ctx | ||
}) { | ||
updateParticle(_ref2) { | ||
var particle = _ref2.particle, | ||
ctx = _ref2.ctx; | ||
particle.vy += PARTICLE_GRAVITY; | ||
@@ -59,3 +74,3 @@ particle.x += particle.vx; | ||
particle.alpha *= PARTICLE_ALPHA_FADEOUT; | ||
ctx.fillStyle = `rgba(${particle.color[0]},${particle.color[1]},${particle.color[2]},${particle.alpha})`; | ||
ctx.fillStyle = "rgba(".concat(particle.color[0], ",").concat(particle.color[1], ",").concat(particle.color[2], ",").concat(particle.alpha, ")"); | ||
ctx.fillRect(Math.round(particle.x - 1), Math.round(particle.y - 1), particle.size, particle.size); | ||
@@ -67,7 +82,6 @@ } | ||
var spawningEffect = { | ||
createParticle({ | ||
x, | ||
y, | ||
color | ||
}) { | ||
createParticle(_ref3) { | ||
var x = _ref3.x, | ||
y = _ref3.y, | ||
color = _ref3.color; | ||
return { | ||
@@ -86,15 +100,15 @@ x, | ||
}, | ||
updateParticle({ | ||
particle, | ||
ctx | ||
}) { | ||
updateParticle(_ref4) { | ||
var _particle$drag, _particle$drag2, _particle$theta; | ||
var particle = _ref4.particle, | ||
ctx = _ref4.ctx; | ||
particle.x += particle.vx; | ||
particle.y += particle.vy; | ||
particle.vx *= particle.drag ?? DEFAULT_SPAWNING_DRAG; | ||
particle.vy *= particle.drag ?? DEFAULT_SPAWNING_DRAG; | ||
particle.theta = (particle.theta ?? createSpawningTheta()) + randomInt(-0.5, 0.5); | ||
particle.vx *= (_particle$drag = particle.drag) !== null && _particle$drag !== void 0 ? _particle$drag : DEFAULT_SPAWNING_DRAG; | ||
particle.vy *= (_particle$drag2 = particle.drag) !== null && _particle$drag2 !== void 0 ? _particle$drag2 : DEFAULT_SPAWNING_DRAG; | ||
particle.theta = ((_particle$theta = particle.theta) !== null && _particle$theta !== void 0 ? _particle$theta : createSpawningTheta()) + randomInt(-0.5, 0.5); | ||
particle.vx += Math.sin(particle.theta) * 0.1; | ||
particle.vy += Math.cos(particle.theta) * 0.1; | ||
particle.size *= 0.96; | ||
ctx.fillStyle = `rgba(${particle.color[0]},${particle.color[1]},${particle.color[2]},${particle.alpha})`; | ||
ctx.fillStyle = "rgba(".concat(particle.color[0], ",").concat(particle.color[1], ",").concat(particle.color[2], ",").concat(particle.alpha, ")"); | ||
ctx.beginPath(); | ||
@@ -106,7 +120,6 @@ ctx.arc(Math.round(particle.x - 1), Math.round(particle.y - 1), particle.size, 0, 2 * Math.PI); | ||
var heartEffect = { | ||
createParticle({ | ||
x, | ||
y, | ||
color | ||
}) { | ||
createParticle(_ref5) { | ||
var x = _ref5.x, | ||
y = _ref5.y, | ||
color = _ref5.color; | ||
return { | ||
@@ -125,10 +138,9 @@ x: x + 20, | ||
}, | ||
updateParticle({ | ||
particle, | ||
ctx | ||
}) { | ||
updateParticle(_ref6) { | ||
var particle = _ref6.particle, | ||
ctx = _ref6.ctx; | ||
particle.x += particle.vx / 2; | ||
particle.y += particle.vy / 2; | ||
particle.alpha *= 0.985; | ||
const baseLen = particle.size; | ||
var baseLen = particle.size; | ||
ctx.save(); | ||
@@ -145,4 +157,7 @@ ctx.translate(particle.x, particle.y); | ||
ctx.lineTo(-baseLen, 0); | ||
const [r, g, b] = particle.color; | ||
ctx.fillStyle = `rgba(${r},${g},${b},${particle.alpha})`; | ||
var _particle$color = _slicedToArray(particle.color, 3), | ||
r = _particle$color[0], | ||
g = _particle$color[1], | ||
b = _particle$color[2]; | ||
ctx.fillStyle = "rgba(".concat(r, ",").concat(g, ",").concat(b, ",").concat(particle.alpha, ")"); | ||
ctx.fill(); | ||
@@ -171,3 +186,3 @@ ctx.closePath(); | ||
createPlugin() { | ||
const pluginState = new EpicModePluginState(this); | ||
var pluginState = new EpicModePluginState(this); | ||
return { | ||
@@ -199,10 +214,10 @@ state: { | ||
} | ||
}, [_EpicModeExtension, _initClass] = _applyDecs(_class, [], [_dec]).c, _initClass())), _EpicModeExtension); | ||
}, (_applyDecs$c = _slicedToArray(_applyDecs(_class, [], [_dec]).c, 2), _EpicModeExtension = _applyDecs$c[0], _initClass = _applyDecs$c[1]), _initClass())), _EpicModeExtension); | ||
function getRGBComponents(node) { | ||
const color = getComputedStyle(node).color; | ||
let match; | ||
var color = getComputedStyle(node).color; | ||
var match; | ||
if (color && (match = color.match(/(\d+), (\d+), (\d+)/))) { | ||
try { | ||
return match.slice(1); | ||
} catch { | ||
} catch (_unused) { | ||
return [255, 255, 255]; | ||
@@ -214,17 +229,88 @@ } | ||
} | ||
var EpicModePluginState = class { | ||
canvas; | ||
ctx; | ||
var EpicModePluginState = (_extension = /*#__PURE__*/new WeakMap(), _shakeTime = /*#__PURE__*/new WeakMap(), _shakeTimeMax = /*#__PURE__*/new WeakMap(), _lastTime = /*#__PURE__*/new WeakMap(), _particles = /*#__PURE__*/new WeakMap(), class EpicModePluginState { | ||
get options() { | ||
return this.#extension.options; | ||
return _classPrivateFieldGet(this, _extension).options; | ||
} | ||
container; | ||
#extension; | ||
#shakeTime = 0; | ||
#shakeTimeMax = 0; | ||
#lastTime = 0; | ||
#particles = []; | ||
view; | ||
constructor(extension2) { | ||
this.#extension = extension2; | ||
_defineProperty(this, "canvas", void 0); | ||
_defineProperty(this, "ctx", void 0); | ||
_defineProperty(this, "container", void 0); | ||
_classPrivateFieldInitSpec(this, _extension, { | ||
writable: true, | ||
value: void 0 | ||
}); | ||
_classPrivateFieldInitSpec(this, _shakeTime, { | ||
writable: true, | ||
value: 0 | ||
}); | ||
_classPrivateFieldInitSpec(this, _shakeTimeMax, { | ||
writable: true, | ||
value: 0 | ||
}); | ||
_classPrivateFieldInitSpec(this, _lastTime, { | ||
writable: true, | ||
value: 0 | ||
}); | ||
_classPrivateFieldInitSpec(this, _particles, { | ||
writable: true, | ||
value: [] | ||
}); | ||
_defineProperty(this, "view", void 0); | ||
_defineProperty(this, "shake", () => { | ||
if (this.options.active) { | ||
_classPrivateFieldSet(this, _shakeTime, _classPrivateFieldSet(this, _shakeTimeMax, this.options.shakeTime)); | ||
} | ||
}); | ||
_defineProperty(this, "spawnParticles", () => { | ||
var selection = this.view.state.selection; | ||
var coords = this.view.coordsAtPos(selection.$anchor.pos); | ||
this.canvas.style.top = "".concat(window.scrollY, "px"); | ||
this.canvas.style.left = "".concat(window.scrollX, "px"); | ||
var node = document.elementFromPoint(coords.left - 5, coords.top + 5); | ||
if (!node) { | ||
return; | ||
} | ||
var numParticles = randomInt2(this.options.particleRange.min, this.options.particleRange.max); | ||
var textColor = getRGBComponents(node); | ||
for (var ii = 0; ii < numParticles; ii++) { | ||
var colorCode = assertGet(this.options.colors, ii % this.options.colors.length); | ||
var r = Number.parseInt(colorCode.slice(1, 3), 16); | ||
var g = Number.parseInt(colorCode.slice(3, 5), 16); | ||
var b = Number.parseInt(colorCode.slice(5, 7), 16); | ||
var color = [r, g, b]; | ||
_classPrivateFieldGet(this, _particles)[ii] = this.options.particleEffect.createParticle({ | ||
x: coords.left + 10, | ||
y: coords.top - 10, | ||
color, | ||
textColor, | ||
ctx: this.ctx, | ||
canvas: this.canvas | ||
}); | ||
} | ||
}); | ||
/** | ||
* Runs through the animation loop | ||
*/ | ||
_defineProperty(this, "loop", () => { | ||
if (!this.options.active) { | ||
return; | ||
} | ||
this.ctx.clearRect(0, 0, window.innerWidth, window.innerHeight); | ||
var currentTime = Date.now(); | ||
if (!_classPrivateFieldGet(this, _lastTime)) { | ||
_classPrivateFieldSet(this, _lastTime, currentTime); | ||
} | ||
var dt = (currentTime - _classPrivateFieldGet(this, _lastTime)) / 1e3; | ||
_classPrivateFieldSet(this, _lastTime, currentTime); | ||
if (_classPrivateFieldGet(this, _shakeTime) > 0) { | ||
_classPrivateFieldSet(this, _shakeTime, _classPrivateFieldGet(this, _shakeTime) - dt); | ||
var magnitude = _classPrivateFieldGet(this, _shakeTime) / _classPrivateFieldGet(this, _shakeTimeMax) * this.options.shakeIntensity; | ||
var shakeX = randomInt2(-magnitude, magnitude); | ||
var shakeY = randomInt2(-magnitude, magnitude); | ||
this.view.dom.style.transform = "translate(".concat(shakeX, "px,").concat(shakeY, "px)"); | ||
} | ||
this.drawParticles(); | ||
requestAnimationFrame(this.loop); | ||
}); | ||
_classPrivateFieldSet(this, _extension, extension2); | ||
this.shake = throttle(100, this.shake); | ||
@@ -241,3 +327,3 @@ this.spawnParticles = throttle(100, this.spawnParticles); | ||
this.container = this.options.getCanvasContainer(); | ||
const canvas = document.createElement("canvas"); | ||
var canvas = document.createElement("canvas"); | ||
this.canvas = canvas; | ||
@@ -252,3 +338,3 @@ canvas.id = "epic-mode-canvas"; | ||
canvas.height = window.innerHeight; | ||
const ctx = canvas.getContext("2d"); | ||
var ctx = canvas.getContext("2d"); | ||
if (!ctx) { | ||
@@ -268,75 +354,26 @@ throw new Error("An error occurred while creating the canvas context"); | ||
} | ||
} catch {} | ||
} catch (_unused2) {} | ||
} | ||
shake = () => { | ||
if (this.options.active) { | ||
this.#shakeTime = this.#shakeTimeMax = this.options.shakeTime; | ||
} | ||
}; | ||
spawnParticles = () => { | ||
const { | ||
selection | ||
} = this.view.state; | ||
const coords = this.view.coordsAtPos(selection.$anchor.pos); | ||
this.canvas.style.top = `${window.scrollY}px`; | ||
this.canvas.style.left = `${window.scrollX}px`; | ||
const node = document.elementFromPoint(coords.left - 5, coords.top + 5); | ||
if (!node) { | ||
return; | ||
} | ||
const numParticles = randomInt2(this.options.particleRange.min, this.options.particleRange.max); | ||
const textColor = getRGBComponents(node); | ||
for (let ii = 0; ii < numParticles; ii++) { | ||
const colorCode = assertGet(this.options.colors, ii % this.options.colors.length); | ||
const r = Number.parseInt(colorCode.slice(1, 3), 16); | ||
const g = Number.parseInt(colorCode.slice(3, 5), 16); | ||
const b = Number.parseInt(colorCode.slice(5, 7), 16); | ||
const color = [r, g, b]; | ||
this.#particles[ii] = this.options.particleEffect.createParticle({ | ||
x: coords.left + 10, | ||
y: coords.top - 10, | ||
color, | ||
textColor, | ||
ctx: this.ctx, | ||
canvas: this.canvas | ||
}); | ||
} | ||
}; | ||
/** | ||
* Runs through the animation loop | ||
*/ | ||
loop = () => { | ||
if (!this.options.active) { | ||
return; | ||
} | ||
this.ctx.clearRect(0, 0, window.innerWidth, window.innerHeight); | ||
const currentTime = Date.now(); | ||
if (!this.#lastTime) { | ||
this.#lastTime = currentTime; | ||
} | ||
const dt = (currentTime - this.#lastTime) / 1e3; | ||
this.#lastTime = currentTime; | ||
if (this.#shakeTime > 0) { | ||
this.#shakeTime -= dt; | ||
const magnitude = this.#shakeTime / this.#shakeTimeMax * this.options.shakeIntensity; | ||
const shakeX = randomInt2(-magnitude, magnitude); | ||
const shakeY = randomInt2(-magnitude, magnitude); | ||
this.view.dom.style.transform = `translate(${shakeX}px,${shakeY}px)`; | ||
} | ||
this.drawParticles(); | ||
requestAnimationFrame(this.loop); | ||
}; | ||
drawParticles() { | ||
for (const particle of this.#particles) { | ||
if (particle.alpha < 0.01 || particle.size <= 0.5) { | ||
continue; | ||
var _iterator = _createForOfIteratorHelper(_classPrivateFieldGet(this, _particles)), | ||
_step; | ||
try { | ||
for (_iterator.s(); !(_step = _iterator.n()).done;) { | ||
var particle = _step.value; | ||
if (particle.alpha < 0.01 || particle.size <= 0.5) { | ||
continue; | ||
} | ||
this.options.particleEffect.updateParticle({ | ||
particle, | ||
ctx: this.ctx, | ||
canvas: this.canvas | ||
}); | ||
} | ||
this.options.particleEffect.updateParticle({ | ||
particle, | ||
ctx: this.ctx, | ||
canvas: this.canvas | ||
}); | ||
} catch (err) { | ||
_iterator.e(err); | ||
} finally { | ||
_iterator.f(); | ||
} | ||
} | ||
}; | ||
}); | ||
export { COLORS, EpicModeExtension, defaultEffect, heartEffect, spawningEffect }; |
{ | ||
"name": "@remirror/extension-epic-mode", | ||
"version": "3.0.0-beta.2", | ||
"version": "3.0.0-beta.3", | ||
"description": "Epic (power) mode extension for the remirror wysiwyg editor.", | ||
@@ -43,3 +43,3 @@ "keywords": [ | ||
"@babel/runtime": "^7.22.3", | ||
"@remirror/core": "3.0.0-beta.2", | ||
"@remirror/core": "3.0.0-beta.3", | ||
"@remirror/messages": "3.0.0-beta.1" | ||
@@ -46,0 +46,0 @@ }, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
140044
1591
+ Added@remirror/core@3.0.0-beta.3(transitive)
- Removed@remirror/core@3.0.0-beta.2(transitive)
Updated@remirror/core@3.0.0-beta.3