@vericus/slate-kit-highlight-text
Version:
plugin that provide a way to color/highlight a group of text on slate
2 lines (1 loc) • 7.04 kB
JavaScript
!function(e,t){if("function"==typeof define&&define.amd)define(["exports","@vericus/slate-kit-utils-register-helpers","immutable","is-plain-obj","slate","tinycolor2"],t);else if("undefined"!=typeof exports)t(exports,require("@vericus/slate-kit-utils-register-helpers"),require("immutable"),require("is-plain-obj"),require("slate"),require("tinycolor2"));else{var r={exports:{}};t(r.exports,e.slateKitUtilsRegisterHelpers,e.immutable,e.isPlainObj,e.slate,e.tinycolor2),e.unknown=r.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e,t,r,n,a,o){function i(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){c(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function v(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=p(e);if(t){var a=p(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return y(this,r)}}function b(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return h(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}e.__esModule=!0,e.default=void 0,t=i(t),n=i(n),o=i(o);var m={name:void 0,marks:void 0,type:void 0,styles:void 0,data:void 0,defaultColor:void 0,alpha:1,renderer:void 0,label:void 0},g=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}(s,e);var t,a,o,i=v(s);function s(){return u(this,s),i.apply(this,arguments)}return t=s,o=[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(s.isOptions(e))return e;if((0,n.default)(e))return s.fromJSON(e);throw new Error("`Options.create` only accepts objects, strings or options")}},{key:"fromJSON",value:function(e){if(s.isOptions(e))return e;var t=e.name,r=e.type,n=e.data,a=e.styles,o=e.defaultColor,i=e.alpha,u=void 0===i?1:i,l=e.renderer;if(!(r&&n&&a&&o&&Array.isArray(a)))throw new Error("Highlight text require type, data and style option");if(u<0||u>1)throw new Error("Alpha value can only go from 0 to 1");return new s({marks:c({},r,r),type:r,data:n,styles:a,alpha:u,defaultColor:o,name:t,renderer:l})}},{key:"isOptions",value:function(e){if(e instanceof r.Record){var t=e;return["marks","type","data","styles","defaultColor"].every((function(e){return t.has(e)}))}return!1}}],(a=null)&&l(t.prototype,a),o&&l(t,o),s}((0,r.Record)(m,"highlight text option"));function O(e,t,n){for(var o=(0,r.Set)(),i=function e(t){if(t.hasAttributes()){var r=t.parentNode;if("true"===t.getAttribute("data-slate-leaf"))return t;if(r)return e(r)}return null}(n)||n;i;){var u=i.firstChild;if(i.hasAttributes&&i.hasAttributes()){var l=i.getAttribute("data-slate-kit-".concat(e.toLowerCase()));l&&(o=o.add(new a.Mark({type:e,data:a.Data.create(c({},t,l))})))}i=u}return o&&o.size>0?{marks:o.toArray()}:{}}function k(e){var t=e.type,r=e.data;return{getData:function(e,n){return O(t,r,n)}}}var w={textDecoration:"inherit",textDecorationColor:"inherit"};function j(e){var t=e.type,r=e.data,n=e.styles,a=e.alpha;return function(e){if(!e.mark||e.mark.type!==t)return e;var i=e.attributes,u=e.mark.data,l=(i||{style:{}}).style,s=(0,o.default)(u.get(r));return l=f(f(f({},w),l),{},{textDecoration:"inherit",decorationStyle:"initial"},n.reduce((function(e,t){return f(f({},e),{},c({},t,s.setAlpha(a).toRgbString()))}),{})),f(f({},e),{},{attributes:f(f({},e.attributes),{},c({style:l},"data-slate-kit-".concat(t.toLowerCase()),s.setAlpha(a).toRgbString()))})}}function A(e){var t=e.defaultColor,r=e.data,n=e.type,i=e.name;return c({},"change".concat(i,"Color"),(function(e,i){var u=e.value.selection;if(e.hasMark(n))if((0,o.default)(i).toName()===t)u.isCollapsed?e.removeCollapsedMark(n):e.removeExpandedMark(n);else{var l=new a.Mark({type:n,data:a.Data.create(c({},r,i))});u.isCollapsed?e.removeCollapsedMark(n).addMark(l):e.removeExpandedMark(n).addMarkAtRange(u,l)}else if((0,o.default)(i).toName()!==t){var s=new a.Mark({type:n,data:a.Data.create(c({},r,i))});u.isCollapsed?e.removeCollapsedMark(n).addMark(s):e.removeExpandedMark(n).addMarkAtRange(u,s)}e.focus()}))}function C(e){var t=e.defaultColor,r=e.data,n=e.type,a=e.name;return c({},"current".concat(a,"Color"),(function(e){var a=e.value;if(a.selection&&a.selection.isFocused&&a.activeMarks){var o=a.activeMarks.filter((function(e){return!(!e||e.type!==n)})).reduce((function(e,t){return t&&t.data.get(r)?[].concat(b(e),[t.data.get(r)]):e}),[]),i=b(Array.from(new Set(o)));if(0!==i.length)return i[0]}return t}))}var M=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=g.create(e),n=r.marks,a=r.renderer,o=A(r),i=C(r),u=k(r),l=u.getData,c=j(r),s=[(0,t.default)({options:r,marks:n,props:c,getData:l}),{commands:o,queries:i}];if(a){var f=a(r);s=Array.isArray(f)?[].concat(b(s),b(f)):[].concat(b(s),[f])}return s};e.default=M}));