slate-angular 1.7.5 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/slate-angular.umd.js +109 -40
- package/bundles/slate-angular.umd.js.map +1 -1
- package/components/editable/editable.component.d.ts +1 -1
- package/esm2015/components/editable/editable.component.js +10 -14
- package/esm2015/plugins/angular-editor.js +24 -21
- package/esm2015/plugins/with-angular.js +23 -8
- package/esm2015/utils/dom.js +28 -1
- package/esm2015/utils/environment.js +20 -1
- package/fesm2015/slate-angular.js +100 -40
- package/fesm2015/slate-angular.js.map +1 -1
- package/package.json +1 -1
- package/plugins/angular-editor.d.ts +14 -4
- package/utils/dom.d.ts +6 -0
- package/utils/environment.d.ts +6 -0
package/esm2015/utils/dom.js
CHANGED
|
@@ -157,4 +157,31 @@ export const getPlainText = (domNode) => {
|
|
|
157
157
|
}
|
|
158
158
|
return text;
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFPLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQzNDLElBQU8sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDakIsQ0FBQztBQVlGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sQ0FDSCxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUM1RSxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQXVCLEVBQUU7SUFDNUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZ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VUFBVSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQztRQUVELE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3ZFLElBQUksSUFBSSxJQUFJLENBQUM7U0FDaEI7S0FDSjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZXMuXG4gKi9cblxuLy8gQ09NUEFUOiBUaGlzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBhbGlhc2VzIGZyb20gZG9pbmcgc29tZSB2ZXJ5XG4vLyB3ZWlyZCB0aGluZ3MgZm9yIFNsYXRlJ3MgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGdsb2JhbHMuICgyMDE5LzExLzI3KVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTAwMlxuaW1wb3J0IERPTU5vZGUgPSBnbG9iYWxUaGlzLk5vZGU7XG5pbXBvcnQgRE9NQ29tbWVudCA9IGdsb2JhbFRoaXMuQ29tbWVudDtcbmltcG9ydCBET01FbGVtZW50ID0gZ2xvYmFsVGhpcy5FbGVtZW50O1xuaW1wb3J0IERPTVRleHQgPSBnbG9iYWxUaGlzLlRleHQ7XG5pbXBvcnQgRE9NUmFuZ2UgPSBnbG9iYWxUaGlzLlJhbmdlO1xuaW1wb3J0IERPTVNlbGVjdGlvbiA9IGdsb2JhbFRoaXMuU2VsZWN0aW9uO1xuaW1wb3J0IERPTVN0YXRpY1JhbmdlID0gZ2xvYmFsVGhpcy5TdGF0aWNSYW5nZTtcbmV4cG9ydCB7XG4gICAgRE9NTm9kZSxcbiAgICBET01Db21tZW50LFxuICAgIERPTUVsZW1lbnQsXG4gICAgRE9NVGV4dCxcbiAgICBET01SYW5nZSxcbiAgICBET01TZWxlY3Rpb24sXG4gICAgRE9NU3RhdGljUmFuZ2Vcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgU2VsZWN0aW9uOiB0eXBlb2YgU2VsZWN0aW9uWydjb25zdHJ1Y3RvciddO1xuICAgICAgICBEYXRhVHJhbnNmZXI6IHR5cGVvZiBEYXRhVHJhbnNmZXJbJ2NvbnN0cnVjdG9yJ107XG4gICAgICAgIE5vZGU6IHR5cGVvZiBOb2RlWydjb25zdHJ1Y3RvciddO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRE9NUG9pbnQgPSBbTm9kZSwgbnVtYmVyXTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBob3N0IHdpbmRvdyBvZiBhIERPTSBub2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmlldyA9ICh2YWx1ZTogYW55KTogV2luZG93IHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKHZhbHVlICYmIHZhbHVlLm93bmVyRG9jdW1lbnQgJiYgdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgbnVsbFxuICAgICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhIGNvbW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NQ29tbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NQ29tbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDg7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01FbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01Ob2RlID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSBnZXREZWZhdWx0Vmlldyh2YWx1ZSlcbiAgICByZXR1cm4gISF3aW5kb3cgJiYgdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBzZWxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTVNlbGVjdGlvbiA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NU2VsZWN0aW9uID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSB2YWx1ZSAmJiB2YWx1ZS5hbmNob3JOb2RlICYmIGdldERlZmF1bHRWaWV3KHZhbHVlLmFuY2hvck5vZGUpXG4gICAgcmV0dXJuICEhd2luZG93ICYmIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93LlNlbGVjdGlvblxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01UZXh0ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01UZXh0ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMztcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXN0ZSBldmVudCBpcyBhIHBsYWludGV4dC1vbmx5IGV2ZW50LlxuICovXG5leHBvcnQgY29uc3QgaXNQbGFpblRleHRPbmx5UGFzdGUgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YSAmJlxuICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPT0gJycgJiZcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5sZW5ndGggPT09IDFcbiAgICApO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBET00gcG9pbnQgc28gdGhhdCBpdCBhbHdheXMgcmVmZXJzIHRvIGEgdGV4dCBub2RlLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRE9NUG9pbnQgPSAoZG9tUG9pbnQ6IERPTVBvaW50KTogRE9NUG9pbnQgPT4ge1xuICAgIGxldCBbbm9kZSwgb2Zmc2V0XSA9IGRvbVBvaW50O1xuXG4gICAgLy8gSWYgaXQncyBhbiBlbGVtZW50IG5vZGUsIGl0cyBvZmZzZXQgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiBpdHMgY2hpbGRyZW5cbiAgICAvLyBpbmNsdWRpbmcgY29tbWVudCBub2Rlcywgc28gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IHRleHQgY2hpbGQgbm9kZS5cbiAgICBpZiAoaXNET01FbGVtZW50KG5vZGUpICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGlzTGFzdCA9IG9mZnNldCA9PT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gaXNMYXN0ID8gb2Zmc2V0IC0gMSA6IG9mZnNldDtcbiAgICAgICAgO1tub2RlLCBpbmRleF0gPSBnZXRFZGl0YWJsZUNoaWxkQW5kSW5kZXgobm9kZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgaXNMYXN0ID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJyk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGVkaXRhYmxlIGNoaWxkIGZvdW5kIGlzIGluIGZyb250IG9mIGlucHV0IG9mZnNldCwgd2UgaW5zdGVhZCBzZWVrIHRvIGl0cyBlbmRcbiAgICAgICAgaXNMYXN0ID0gaW5kZXggPCBvZmZzZXQ7XG5cbiAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGNoaWxkcmVuLCB0cmF2ZXJzZSB1bnRpbCB3ZSBoYXZlIGEgbGVhZiBub2RlLiBMZWFmIG5vZGVzXG4gICAgICAgIC8vIGNhbiBiZSBlaXRoZXIgdGV4dCBub2Rlcywgb3Igb3RoZXIgdm9pZCBET00gbm9kZXMuXG4gICAgICAgIHdoaWxlIChpc0RPTUVsZW1lbnQobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaSA9IGlzTGFzdCA/IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxIDogMDtcbiAgICAgICAgICAgIG5vZGUgPSBnZXRFZGl0YWJsZUNoaWxkKG5vZGUsIGksIGlzTGFzdCA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBuZXcgb2Zmc2V0IGluc2lkZSB0aGUgdGV4dCBub2RlLlxuICAgICAgICBvZmZzZXQgPVxuICAgICAgICAgICAgaXNMYXN0ICYmIG5vZGUudGV4dENvbnRlbnQgIT0gbnVsbCA/IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIG5vZGUgYW5kIG9mZnNldC5cbiAgICByZXR1cm4gW25vZGUsIG9mZnNldF07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2V0aGVyIHRoZSBhY3RpdmUgZWxlbWVudCBpcyBuZXN0ZWQgd2l0aGluIGEgc2hhZG93Um9vdFxuICovXG5cbmV4cG9ydCBjb25zdCBoYXNTaGFkb3dSb290ID0gKCkgPT4ge1xuICAgIHJldHVybiAhIShcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdFxuICAgIClcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5lYXJlc3QgZWRpdGFibGUgY2hpbGQgYW5kIGluZGV4IGF0IGBpbmRleGAgaW4gYSBgcGFyZW50YCwgcHJlZmVycmluZ1xuICogYGRpcmVjdGlvbmAuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleCA9IChcbiAgICBwYXJlbnQ6IERPTUVsZW1lbnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBkaXJlY3Rpb246ICdmb3J3YXJkJyB8ICdiYWNrd2FyZCdcbik6IFtET01Ob2RlLCBudW1iZXJdID0+IHtcbiAgICBjb25zdCB7IGNoaWxkTm9kZXMgfSA9IHBhcmVudDtcbiAgICBsZXQgY2hpbGQgPSBjaGlsZE5vZGVzW2luZGV4XTtcbiAgICBsZXQgaSA9IGluZGV4O1xuICAgIGxldCB0cmllZEZvcndhcmQgPSBmYWxzZTtcbiAgICBsZXQgdHJpZWRCYWNrd2FyZCA9IGZhbHNlO1xuXG4gICAgLy8gV2hpbGUgdGhlIGNoaWxkIGlzIGEgY29tbWVudCBub2RlLCBvciBhbiBlbGVtZW50IG5vZGUgd2l0aCBubyBjaGlsZHJlbixcbiAgICAvLyBrZWVwIGl0ZXJhdGluZyB0byBmaW5kIGEgc2libGluZyBub24tdm9pZCwgbm9uLWNvbW1lbnQgbm9kZS5cbiAgICB3aGlsZSAoXG4gICAgICAgIGlzRE9NQ29tbWVudChjaGlsZCkgfHxcbiAgICAgICAgKGlzRE9NRWxlbWVudChjaGlsZCkgJiYgY2hpbGQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgIChpc0RPTUVsZW1lbnQoY2hpbGQpICYmIGNoaWxkLmdldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykgPT09ICdmYWxzZScpXG4gICAgKSB7XG4gICAgICAgIGlmICh0cmllZEZvcndhcmQgJiYgdHJpZWRCYWNrd2FyZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA+PSBjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdHJpZWRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgICAgICAgIGkgPSBpbmRleCAtIDE7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAnYmFja3dhcmQnO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIHRyaWVkQmFja3dhcmQgPSB0cnVlO1xuICAgICAgICAgICAgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2ldO1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIGkgKz0gZGlyZWN0aW9uID09PSAnZm9yd2FyZCcgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjaGlsZCwgaW5kZXhdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhdCBgaW5kZXhgIGluIGEgYHBhcmVudGAsIHByZWZlcnJpbmdcbiAqIGBkaXJlY3Rpb25gLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUNoaWxkID0gKFxuICAgIHBhcmVudDogRE9NRWxlbWVudCxcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJ1xuKTogRE9NTm9kZSA9PiB7XG4gICAgY29uc3QgW2NoaWxkXSA9IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleChwYXJlbnQsIGluZGV4LCBkaXJlY3Rpb24pO1xuICAgIHJldHVybiBjaGlsZDtcbn1cblxuLyoqXG4gKiBHZXQgYSBwbGFpbnRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQgb2YgYSBub2RlLCBhY2NvdW50aW5nIGZvciBibG9ja1xuICogZWxlbWVudHMgd2hpY2ggZ2V0IGEgbmV3bGluZSBhcHBlbmRlZC5cbiAqXG4gKiBUaGUgZG9tTm9kZSBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQbGFpblRleHQgPSAoZG9tTm9kZTogRE9NTm9kZSkgPT4ge1xuICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICBpZiAoaXNET01UZXh0KGRvbU5vZGUpICYmIGRvbU5vZGUubm9kZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkb21Ob2RlLm5vZGVWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNET01FbGVtZW50KGRvbU5vZGUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIEFycmF5LmZyb20oZG9tTm9kZS5jaGlsZE5vZGVzKSkge1xuICAgICAgICAgICAgdGV4dCArPSBnZXRQbGFpblRleHQoY2hpbGROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpc3BsYXkgPSBnZXRDb21wdXRlZFN0eWxlKGRvbU5vZGUpLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKTtcblxuICAgICAgICBpZiAoZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBkaXNwbGF5ID09PSAnbGlzdCcgfHwgZG9tTm9kZS50YWdOYW1lID09PSAnQlInKSB7XG4gICAgICAgICAgICB0ZXh0ICs9ICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG59O1xuXG4iXX0=
|
|
160
|
+
/**
|
|
161
|
+
* Get x-slate-fragment attribute from data-slate-fragment
|
|
162
|
+
*/
|
|
163
|
+
const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
|
|
164
|
+
export const getSlateFragmentAttribute = (dataTransfer) => {
|
|
165
|
+
const htmlData = dataTransfer.getData('text/html');
|
|
166
|
+
const [, fragment] = htmlData.match(catchSlateFragment) || [];
|
|
167
|
+
return fragment;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Get the x-slate-fragment attribute that exist in text/html data
|
|
171
|
+
* and append it to the DataTransfer object
|
|
172
|
+
*/
|
|
173
|
+
export const getClipboardData = (dataTransfer, clipboardFormatKey = 'x-slate-fragment') => {
|
|
174
|
+
if (!dataTransfer.getData(`application/${clipboardFormatKey}`)) {
|
|
175
|
+
const fragment = getSlateFragmentAttribute(dataTransfer);
|
|
176
|
+
if (fragment) {
|
|
177
|
+
const clipboardData = new DataTransfer();
|
|
178
|
+
dataTransfer.types.forEach(type => {
|
|
179
|
+
clipboardData.setData(type, dataTransfer.getData(type));
|
|
180
|
+
});
|
|
181
|
+
clipboardData.setData(`application/${clipboardFormatKey}`, fragment);
|
|
182
|
+
return clipboardData;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return dataTransfer;
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFPLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQzNDLElBQU8sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDakIsQ0FBQztBQVlGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sQ0FDSCxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUM1RSxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQXVCLEVBQUU7SUFDNUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQXVCLEVBQUU7SUFDNUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFVLEVBQW9CLEVBQUU7SUFDdEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQVUsRUFBeUIsRUFBRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzVFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLFlBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQTtBQUN4RCxDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQVUsRUFBb0IsRUFBRTtJQUN0RCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQzFELE9BQU8sQ0FDSCxLQUFLLENBQUMsYUFBYTtRQUNuQixLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1FBQ2hELEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQ3pDLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBa0IsRUFBWSxFQUFFO0lBQzlELElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBRTlCLDBFQUEwRTtJQUMxRSxxRUFBcUU7SUFDckUsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7UUFDOUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQy9DLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3pDLENBQUM7UUFBQSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLEVBQzFDLEtBQUssRUFDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckMsc0ZBQXNGO1FBQ3RGLE1BQU0sR0FBRyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBRXhCLDJFQUEyRTtRQUMzRSxxREFBcUQ7UUFDckQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRCxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDckU7UUFFRCxpREFBaUQ7UUFDakQsTUFBTTtZQUNGLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4RTtJQUVELDhCQUE4QjtJQUM5QixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBRUgsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixPQUFPLENBQUMsQ0FBQyxDQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDNUUsQ0FBQTtBQUNMLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3BDLE1BQWtCLEVBQ2xCLEtBQWEsRUFDYixTQUFpQyxFQUNoQixFQUFFO0lBQ25CLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDOUIsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNkLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztJQUN6QixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFMUIsMEVBQTBFO0lBQzFFLCtEQUErRDtJQUMvRCxPQUNJLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDbkIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSyxPQUFPLENBQUMsRUFDNUU7UUFDRSxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDL0IsTUFBTTtTQUNUO1FBRUQsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUN4QixZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUN2QixTQUFTO1NBQ1o7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUCxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUN0QixTQUFTO1NBQ1o7UUFFRCxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6QztJQUVELE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBRUgsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDNUIsTUFBa0IsRUFDbEIsS0FBYSxFQUNiLFNBQWlDLEVBQzFCLEVBQUU7SUFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuRSxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUE7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtJQUM3QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFFZCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQztLQUM1QjtJQUVELElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3ZCLEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQztRQUVELE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3ZFLElBQUksSUFBSSxJQUFJLENBQUM7U0FDaEI7S0FDSjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyw4QkFBOEIsQ0FBQTtBQUN6RCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUNyQyxZQUEwQixFQUNiLEVBQUU7SUFDZixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0QsT0FBTyxRQUFRLENBQUE7QUFDbkIsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxZQUEwQixFQUFFLGtCQUFrQixHQUFHLGtCQUFrQixFQUFnQixFQUFFO0lBQ2xILElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFO1FBQzVELE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3hELElBQUksUUFBUSxFQUFFO1lBQ1YsTUFBTSxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtZQUN4QyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDOUIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQzNELENBQUMsQ0FBQyxDQUFBO1lBQ0YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDcEUsT0FBTyxhQUFhLENBQUE7U0FDdkI7S0FDSjtJQUNELE9BQU8sWUFBWSxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZXMuXG4gKi9cblxuLy8gQ09NUEFUOiBUaGlzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBhbGlhc2VzIGZyb20gZG9pbmcgc29tZSB2ZXJ5XG4vLyB3ZWlyZCB0aGluZ3MgZm9yIFNsYXRlJ3MgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGdsb2JhbHMuICgyMDE5LzExLzI3KVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTAwMlxuaW1wb3J0IERPTU5vZGUgPSBnbG9iYWxUaGlzLk5vZGU7XG5pbXBvcnQgRE9NQ29tbWVudCA9IGdsb2JhbFRoaXMuQ29tbWVudDtcbmltcG9ydCBET01FbGVtZW50ID0gZ2xvYmFsVGhpcy5FbGVtZW50O1xuaW1wb3J0IERPTVRleHQgPSBnbG9iYWxUaGlzLlRleHQ7XG5pbXBvcnQgRE9NUmFuZ2UgPSBnbG9iYWxUaGlzLlJhbmdlO1xuaW1wb3J0IERPTVNlbGVjdGlvbiA9IGdsb2JhbFRoaXMuU2VsZWN0aW9uO1xuaW1wb3J0IERPTVN0YXRpY1JhbmdlID0gZ2xvYmFsVGhpcy5TdGF0aWNSYW5nZTtcbmV4cG9ydCB7XG4gICAgRE9NTm9kZSxcbiAgICBET01Db21tZW50LFxuICAgIERPTUVsZW1lbnQsXG4gICAgRE9NVGV4dCxcbiAgICBET01SYW5nZSxcbiAgICBET01TZWxlY3Rpb24sXG4gICAgRE9NU3RhdGljUmFuZ2Vcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgU2VsZWN0aW9uOiB0eXBlb2YgU2VsZWN0aW9uWydjb25zdHJ1Y3RvciddO1xuICAgICAgICBEYXRhVHJhbnNmZXI6IHR5cGVvZiBEYXRhVHJhbnNmZXJbJ2NvbnN0cnVjdG9yJ107XG4gICAgICAgIE5vZGU6IHR5cGVvZiBOb2RlWydjb25zdHJ1Y3RvciddO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRE9NUG9pbnQgPSBbTm9kZSwgbnVtYmVyXTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBob3N0IHdpbmRvdyBvZiBhIERPTSBub2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmlldyA9ICh2YWx1ZTogYW55KTogV2luZG93IHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKHZhbHVlICYmIHZhbHVlLm93bmVyRG9jdW1lbnQgJiYgdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgbnVsbFxuICAgICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhIGNvbW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NQ29tbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NQ29tbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDg7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01FbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01Ob2RlID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSBnZXREZWZhdWx0Vmlldyh2YWx1ZSlcbiAgICByZXR1cm4gISF3aW5kb3cgJiYgdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBzZWxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTVNlbGVjdGlvbiA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NU2VsZWN0aW9uID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSB2YWx1ZSAmJiB2YWx1ZS5hbmNob3JOb2RlICYmIGdldERlZmF1bHRWaWV3KHZhbHVlLmFuY2hvck5vZGUpXG4gICAgcmV0dXJuICEhd2luZG93ICYmIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93LlNlbGVjdGlvblxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01UZXh0ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01UZXh0ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMztcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXN0ZSBldmVudCBpcyBhIHBsYWludGV4dC1vbmx5IGV2ZW50LlxuICovXG5leHBvcnQgY29uc3QgaXNQbGFpblRleHRPbmx5UGFzdGUgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YSAmJlxuICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPT0gJycgJiZcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5sZW5ndGggPT09IDFcbiAgICApO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBET00gcG9pbnQgc28gdGhhdCBpdCBhbHdheXMgcmVmZXJzIHRvIGEgdGV4dCBub2RlLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRE9NUG9pbnQgPSAoZG9tUG9pbnQ6IERPTVBvaW50KTogRE9NUG9pbnQgPT4ge1xuICAgIGxldCBbbm9kZSwgb2Zmc2V0XSA9IGRvbVBvaW50O1xuXG4gICAgLy8gSWYgaXQncyBhbiBlbGVtZW50IG5vZGUsIGl0cyBvZmZzZXQgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiBpdHMgY2hpbGRyZW5cbiAgICAvLyBpbmNsdWRpbmcgY29tbWVudCBub2Rlcywgc28gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IHRleHQgY2hpbGQgbm9kZS5cbiAgICBpZiAoaXNET01FbGVtZW50KG5vZGUpICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGlzTGFzdCA9IG9mZnNldCA9PT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gaXNMYXN0ID8gb2Zmc2V0IC0gMSA6IG9mZnNldDtcbiAgICAgICAgO1tub2RlLCBpbmRleF0gPSBnZXRFZGl0YWJsZUNoaWxkQW5kSW5kZXgobm9kZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgaXNMYXN0ID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJyk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGVkaXRhYmxlIGNoaWxkIGZvdW5kIGlzIGluIGZyb250IG9mIGlucHV0IG9mZnNldCwgd2UgaW5zdGVhZCBzZWVrIHRvIGl0cyBlbmRcbiAgICAgICAgaXNMYXN0ID0gaW5kZXggPCBvZmZzZXQ7XG5cbiAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGNoaWxkcmVuLCB0cmF2ZXJzZSB1bnRpbCB3ZSBoYXZlIGEgbGVhZiBub2RlLiBMZWFmIG5vZGVzXG4gICAgICAgIC8vIGNhbiBiZSBlaXRoZXIgdGV4dCBub2Rlcywgb3Igb3RoZXIgdm9pZCBET00gbm9kZXMuXG4gICAgICAgIHdoaWxlIChpc0RPTUVsZW1lbnQobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaSA9IGlzTGFzdCA/IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxIDogMDtcbiAgICAgICAgICAgIG5vZGUgPSBnZXRFZGl0YWJsZUNoaWxkKG5vZGUsIGksIGlzTGFzdCA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBuZXcgb2Zmc2V0IGluc2lkZSB0aGUgdGV4dCBub2RlLlxuICAgICAgICBvZmZzZXQgPVxuICAgICAgICAgICAgaXNMYXN0ICYmIG5vZGUudGV4dENvbnRlbnQgIT0gbnVsbCA/IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIG5vZGUgYW5kIG9mZnNldC5cbiAgICByZXR1cm4gW25vZGUsIG9mZnNldF07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2V0aGVyIHRoZSBhY3RpdmUgZWxlbWVudCBpcyBuZXN0ZWQgd2l0aGluIGEgc2hhZG93Um9vdFxuICovXG5cbmV4cG9ydCBjb25zdCBoYXNTaGFkb3dSb290ID0gKCkgPT4ge1xuICAgIHJldHVybiAhIShcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdFxuICAgIClcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5lYXJlc3QgZWRpdGFibGUgY2hpbGQgYW5kIGluZGV4IGF0IGBpbmRleGAgaW4gYSBgcGFyZW50YCwgcHJlZmVycmluZ1xuICogYGRpcmVjdGlvbmAuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleCA9IChcbiAgICBwYXJlbnQ6IERPTUVsZW1lbnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBkaXJlY3Rpb246ICdmb3J3YXJkJyB8ICdiYWNrd2FyZCdcbik6IFtET01Ob2RlLCBudW1iZXJdID0+IHtcbiAgICBjb25zdCB7IGNoaWxkTm9kZXMgfSA9IHBhcmVudDtcbiAgICBsZXQgY2hpbGQgPSBjaGlsZE5vZGVzW2luZGV4XTtcbiAgICBsZXQgaSA9IGluZGV4O1xuICAgIGxldCB0cmllZEZvcndhcmQgPSBmYWxzZTtcbiAgICBsZXQgdHJpZWRCYWNrd2FyZCA9IGZhbHNlO1xuXG4gICAgLy8gV2hpbGUgdGhlIGNoaWxkIGlzIGEgY29tbWVudCBub2RlLCBvciBhbiBlbGVtZW50IG5vZGUgd2l0aCBubyBjaGlsZHJlbixcbiAgICAvLyBrZWVwIGl0ZXJhdGluZyB0byBmaW5kIGEgc2libGluZyBub24tdm9pZCwgbm9uLWNvbW1lbnQgbm9kZS5cbiAgICB3aGlsZSAoXG4gICAgICAgIGlzRE9NQ29tbWVudChjaGlsZCkgfHxcbiAgICAgICAgKGlzRE9NRWxlbWVudChjaGlsZCkgJiYgY2hpbGQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgIChpc0RPTUVsZW1lbnQoY2hpbGQpICYmIGNoaWxkLmdldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykgPT09ICdmYWxzZScpXG4gICAgKSB7XG4gICAgICAgIGlmICh0cmllZEZvcndhcmQgJiYgdHJpZWRCYWNrd2FyZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA+PSBjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdHJpZWRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgICAgICAgIGkgPSBpbmRleCAtIDE7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAnYmFja3dhcmQnO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIHRyaWVkQmFja3dhcmQgPSB0cnVlO1xuICAgICAgICAgICAgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2ldO1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIGkgKz0gZGlyZWN0aW9uID09PSAnZm9yd2FyZCcgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjaGlsZCwgaW5kZXhdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhdCBgaW5kZXhgIGluIGEgYHBhcmVudGAsIHByZWZlcnJpbmdcbiAqIGBkaXJlY3Rpb25gLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUNoaWxkID0gKFxuICAgIHBhcmVudDogRE9NRWxlbWVudCxcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJ1xuKTogRE9NTm9kZSA9PiB7XG4gICAgY29uc3QgW2NoaWxkXSA9IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleChwYXJlbnQsIGluZGV4LCBkaXJlY3Rpb24pO1xuICAgIHJldHVybiBjaGlsZDtcbn1cblxuLyoqXG4gKiBHZXQgYSBwbGFpbnRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQgb2YgYSBub2RlLCBhY2NvdW50aW5nIGZvciBibG9ja1xuICogZWxlbWVudHMgd2hpY2ggZ2V0IGEgbmV3bGluZSBhcHBlbmRlZC5cbiAqXG4gKiBUaGUgZG9tTm9kZSBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQbGFpblRleHQgPSAoZG9tTm9kZTogRE9NTm9kZSkgPT4ge1xuICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICBpZiAoaXNET01UZXh0KGRvbU5vZGUpICYmIGRvbU5vZGUubm9kZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkb21Ob2RlLm5vZGVWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNET01FbGVtZW50KGRvbU5vZGUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIEFycmF5LmZyb20oZG9tTm9kZS5jaGlsZE5vZGVzKSkge1xuICAgICAgICAgICAgdGV4dCArPSBnZXRQbGFpblRleHQoY2hpbGROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpc3BsYXkgPSBnZXRDb21wdXRlZFN0eWxlKGRvbU5vZGUpLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKTtcblxuICAgICAgICBpZiAoZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBkaXNwbGF5ID09PSAnbGlzdCcgfHwgZG9tTm9kZS50YWdOYW1lID09PSAnQlInKSB7XG4gICAgICAgICAgICB0ZXh0ICs9ICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG59O1xuXG4vKipcbiAqIEdldCB4LXNsYXRlLWZyYWdtZW50IGF0dHJpYnV0ZSBmcm9tIGRhdGEtc2xhdGUtZnJhZ21lbnRcbiAqL1xuY29uc3QgY2F0Y2hTbGF0ZUZyYWdtZW50ID0gL2RhdGEtc2xhdGUtZnJhZ21lbnQ9XCIoLis/KVwiL21cbmV4cG9ydCBjb25zdCBnZXRTbGF0ZUZyYWdtZW50QXR0cmlidXRlID0gKFxuICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyXG4pOiBzdHJpbmcgfCB2b2lkID0+IHtcbiAgICBjb25zdCBodG1sRGF0YSA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L2h0bWwnKVxuICAgIGNvbnN0IFssIGZyYWdtZW50XSA9IGh0bWxEYXRhLm1hdGNoKGNhdGNoU2xhdGVGcmFnbWVudCkgfHwgW11cbiAgICByZXR1cm4gZnJhZ21lbnRcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHgtc2xhdGUtZnJhZ21lbnQgYXR0cmlidXRlIHRoYXQgZXhpc3QgaW4gdGV4dC9odG1sIGRhdGFcbiAqIGFuZCBhcHBlbmQgaXQgdG8gdGhlIERhdGFUcmFuc2ZlciBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENsaXBib2FyZERhdGEgPSAoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIsIGNsaXBib2FyZEZvcm1hdEtleSA9ICd4LXNsYXRlLWZyYWdtZW50Jyk6IERhdGFUcmFuc2ZlciA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXIuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtjbGlwYm9hcmRGb3JtYXRLZXl9YCkpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBnZXRTbGF0ZUZyYWdtZW50QXR0cmlidXRlKGRhdGFUcmFuc2ZlcilcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjbGlwYm9hcmREYXRhID0gbmV3IERhdGFUcmFuc2ZlcigpXG4gICAgICAgICAgICBkYXRhVHJhbnNmZXIudHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgICAgICBjbGlwYm9hcmREYXRhLnNldERhdGEodHlwZSwgZGF0YVRyYW5zZmVyLmdldERhdGEodHlwZSkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY2xpcGJvYXJkRGF0YS5zZXREYXRhKGBhcHBsaWNhdGlvbi8ke2NsaXBib2FyZEZvcm1hdEtleX1gLCBmcmFnbWVudClcbiAgICAgICAgICAgIHJldHVybiBjbGlwYm9hcmREYXRhXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFUcmFuc2ZlclxufVxuIl19
|
|
@@ -3,6 +3,7 @@ export const IS_IOS = typeof navigator !== 'undefined' &&
|
|
|
3
3
|
/iPad|iPhone|iPod/.test(navigator.userAgent) &&
|
|
4
4
|
!window.MSStream;
|
|
5
5
|
export const IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);
|
|
6
|
+
export const IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);
|
|
6
7
|
export const IS_FIREFOX = typeof navigator !== 'undefined' &&
|
|
7
8
|
/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
|
|
8
9
|
export const IS_SAFARI = typeof navigator !== 'undefined' &&
|
|
@@ -14,4 +15,22 @@ export const IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navi
|
|
|
14
15
|
// Native beforeInput events don't work well with react on Chrome 75 and older, Chrome 76+ can use beforeInput
|
|
15
16
|
export const IS_CHROME_LEGACY = typeof navigator !== 'undefined' &&
|
|
16
17
|
/Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);
|
|
17
|
-
|
|
18
|
+
// Firefox did not support `beforeInput` until `v87`.
|
|
19
|
+
export const IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' &&
|
|
20
|
+
/^(?!.*Seamonkey)(?=.*Firefox\/(?:[0-7][0-9]|[0-8][0-6])).*/i.test(navigator.userAgent);
|
|
21
|
+
// qq browser
|
|
22
|
+
export const IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent);
|
|
23
|
+
// UC mobile browser
|
|
24
|
+
export const IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent);
|
|
25
|
+
// Wechat browser
|
|
26
|
+
export const IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent);
|
|
27
|
+
// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
|
|
28
|
+
// Chrome Legacy doesn't support `beforeinput` correctly
|
|
29
|
+
export const HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY &&
|
|
30
|
+
!IS_EDGE_LEGACY &&
|
|
31
|
+
// globalThis is undefined in older browsers
|
|
32
|
+
typeof globalThis !== 'undefined' &&
|
|
33
|
+
globalThis.InputEvent &&
|
|
34
|
+
// @ts-ignore The `getTargetRanges` property isn't recognized.
|
|
35
|
+
typeof globalThis.InputEvent.prototype.getTargetRanges === 'function';
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUNmLE9BQU8sU0FBUyxLQUFLLFdBQVc7SUFDaEMsT0FBTyxNQUFNLEtBQUssV0FBVztJQUM3QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFFLE1BQWMsQ0FBQyxRQUFRLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUNqQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUNuQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFM0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUNuQixPQUFPLFNBQVMsS0FBSyxXQUFXO0lBQ2hDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUNsQixPQUFPLFNBQVMsS0FBSyxXQUFXO0lBQ2hDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFekQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDdkIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FDbEIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTVFLDhHQUE4RztBQUM5RyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDekIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBR3BFLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FDMUIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyw2REFBNkQsQ0FBQyxJQUFJLENBQzlELFNBQVMsQ0FBQyxTQUFTLENBQ3RCLENBQUM7QUFFTixhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUNyQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFaEYsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FDckIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLGlCQUFpQjtBQUNqQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDekIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTdFLG9FQUFvRTtBQUNwRSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQ2pDLENBQUMsZ0JBQWdCO0lBQ2pCLENBQUMsY0FBYztJQUNmLDRDQUE0QztJQUM1QyxPQUFPLFVBQVUsS0FBSyxXQUFXO0lBQ2pDLFVBQVUsQ0FBQyxVQUFVO0lBQ3JCLDhEQUE4RDtJQUM5RCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGVBQWUsS0FBSyxVQUFVLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSVNfSU9TID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiZcbiAgICAhKHdpbmRvdyBhcyBhbnkpLk1TU3RyZWFtO1xuXG5leHBvcnQgY29uc3QgSVNfQVBQTEUgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9NYWMgT1MgWC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX0FORFJPSUQgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9BbmRyb2lkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG5cbmV4cG9ydCBjb25zdCBJU19GSVJFRk9YID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC9eKD8hLipTZWFtb25rZXkpKD89LipGaXJlZm94KS4qL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX1NBRkFSSSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvVmVyc2lvblxcL1tcXGRcXC5dKy4qU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4vLyBcIm1vZGVyblwiIEVkZ2Ugd2FzIHJlbGVhc2VkIGF0IDc5LnhcbmV4cG9ydCBjb25zdCBJU19FREdFX0xFR0FDWSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvRWRnZT9cXC8oPzpbMC02XVswLTldfFswLTddWzAtOF0pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX0NIUk9NRSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL0Nocm9tZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIE5hdGl2ZSBiZWZvcmVJbnB1dCBldmVudHMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggcmVhY3Qgb24gQ2hyb21lIDc1IGFuZCBvbGRlciwgQ2hyb21lIDc2KyBjYW4gdXNlIGJlZm9yZUlucHV0XG5leHBvcnQgY29uc3QgSVNfQ0hST01FX0xFR0FDWSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvQ2hyb21lP1xcLyg/OlswLTddWzAtNV18WzAtNl1bMC05XSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5cbi8vIEZpcmVmb3ggZGlkIG5vdCBzdXBwb3J0IGBiZWZvcmVJbnB1dGAgdW50aWwgYHY4N2AuXG5leHBvcnQgY29uc3QgSVNfRklSRUZPWF9MRUdBQ1kgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmXG4gICAgL14oPyEuKlNlYW1vbmtleSkoPz0uKkZpcmVmb3hcXC8oPzpbMC03XVswLTldfFswLThdWzAtNl0pKS4qL2kudGVzdChcbiAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudFxuICAgICk7XG5cbi8vIHFxIGJyb3dzZXJcbmV4cG9ydCBjb25zdCBJU19RUUJST1dTRVIgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC8uKlFRQnJvd3Nlci8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gVUMgbW9iaWxlIGJyb3dzZXJcbmV4cG9ydCBjb25zdCBJU19VQ19NT0JJTEUgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC8uKlVDQnJvd3Nlci8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gV2VjaGF0IGJyb3dzZXJcbmV4cG9ydCBjb25zdCBJU19XRUNIQVRCUk9XU0VSID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvLipXZWNoYXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIENPTVBBVDogRmlyZWZveC9FZGdlIExlZ2FjeSBkb24ndCBzdXBwb3J0IHRoZSBgYmVmb3JlaW5wdXRgIGV2ZW50XG4vLyBDaHJvbWUgTGVnYWN5IGRvZXNuJ3Qgc3VwcG9ydCBgYmVmb3JlaW5wdXRgIGNvcnJlY3RseVxuZXhwb3J0IGNvbnN0IEhBU19CRUZPUkVfSU5QVVRfU1VQUE9SVCA9XG4gICAgIUlTX0NIUk9NRV9MRUdBQ1kgJiZcbiAgICAhSVNfRURHRV9MRUdBQ1kgJiZcbiAgICAvLyBnbG9iYWxUaGlzIGlzIHVuZGVmaW5lZCBpbiBvbGRlciBicm93c2Vyc1xuICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIGdsb2JhbFRoaXMuSW5wdXRFdmVudCAmJlxuICAgIC8vIEB0cy1pZ25vcmUgVGhlIGBnZXRUYXJnZXRSYW5nZXNgIHByb3BlcnR5IGlzbid0IHJlY29nbml6ZWQuXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMuSW5wdXRFdmVudC5wcm90b3R5cGUuZ2V0VGFyZ2V0UmFuZ2VzID09PSAnZnVuY3Rpb24nIl19
|
|
@@ -208,6 +208,33 @@ const getPlainText = (domNode) => {
|
|
|
208
208
|
}
|
|
209
209
|
return text;
|
|
210
210
|
};
|
|
211
|
+
/**
|
|
212
|
+
* Get x-slate-fragment attribute from data-slate-fragment
|
|
213
|
+
*/
|
|
214
|
+
const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
|
|
215
|
+
const getSlateFragmentAttribute = (dataTransfer) => {
|
|
216
|
+
const htmlData = dataTransfer.getData('text/html');
|
|
217
|
+
const [, fragment] = htmlData.match(catchSlateFragment) || [];
|
|
218
|
+
return fragment;
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* Get the x-slate-fragment attribute that exist in text/html data
|
|
222
|
+
* and append it to the DataTransfer object
|
|
223
|
+
*/
|
|
224
|
+
const getClipboardData = (dataTransfer, clipboardFormatKey = 'x-slate-fragment') => {
|
|
225
|
+
if (!dataTransfer.getData(`application/${clipboardFormatKey}`)) {
|
|
226
|
+
const fragment = getSlateFragmentAttribute(dataTransfer);
|
|
227
|
+
if (fragment) {
|
|
228
|
+
const clipboardData = new DataTransfer();
|
|
229
|
+
dataTransfer.types.forEach(type => {
|
|
230
|
+
clipboardData.setData(type, dataTransfer.getData(type));
|
|
231
|
+
});
|
|
232
|
+
clipboardData.setData(`application/${clipboardFormatKey}`, fragment);
|
|
233
|
+
return clipboardData;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return dataTransfer;
|
|
237
|
+
};
|
|
211
238
|
|
|
212
239
|
/**
|
|
213
240
|
* An auto-incrementing identifier for keys.
|
|
@@ -228,6 +255,7 @@ const IS_IOS = typeof navigator !== 'undefined' &&
|
|
|
228
255
|
/iPad|iPhone|iPod/.test(navigator.userAgent) &&
|
|
229
256
|
!window.MSStream;
|
|
230
257
|
const IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);
|
|
258
|
+
const IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);
|
|
231
259
|
const IS_FIREFOX = typeof navigator !== 'undefined' &&
|
|
232
260
|
/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
|
|
233
261
|
const IS_SAFARI = typeof navigator !== 'undefined' &&
|
|
@@ -239,6 +267,24 @@ const IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navigator.u
|
|
|
239
267
|
// Native beforeInput events don't work well with react on Chrome 75 and older, Chrome 76+ can use beforeInput
|
|
240
268
|
const IS_CHROME_LEGACY = typeof navigator !== 'undefined' &&
|
|
241
269
|
/Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);
|
|
270
|
+
// Firefox did not support `beforeInput` until `v87`.
|
|
271
|
+
const IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' &&
|
|
272
|
+
/^(?!.*Seamonkey)(?=.*Firefox\/(?:[0-7][0-9]|[0-8][0-6])).*/i.test(navigator.userAgent);
|
|
273
|
+
// qq browser
|
|
274
|
+
const IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent);
|
|
275
|
+
// UC mobile browser
|
|
276
|
+
const IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent);
|
|
277
|
+
// Wechat browser
|
|
278
|
+
const IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent);
|
|
279
|
+
// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
|
|
280
|
+
// Chrome Legacy doesn't support `beforeinput` correctly
|
|
281
|
+
const HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY &&
|
|
282
|
+
!IS_EDGE_LEGACY &&
|
|
283
|
+
// globalThis is undefined in older browsers
|
|
284
|
+
typeof globalThis !== 'undefined' &&
|
|
285
|
+
globalThis.InputEvent &&
|
|
286
|
+
// @ts-ignore The `getTargetRanges` property isn't recognized.
|
|
287
|
+
typeof globalThis.InputEvent.prototype.getTargetRanges === 'function';
|
|
242
288
|
|
|
243
289
|
const FAKE_LEFT_BLOCK_CARD_OFFSET = -1;
|
|
244
290
|
const FAKE_RIGHT_BLOCK_CARD_OFFSET = -2;
|
|
@@ -321,27 +367,16 @@ const AngularEditor = {
|
|
|
321
367
|
throw new Error(`Unable to find the path for Slate node: ${JSON.stringify(node)}`);
|
|
322
368
|
},
|
|
323
369
|
/**
|
|
324
|
-
|
|
325
|
-
|
|
370
|
+
* Find the DOM node that implements DocumentOrShadowRoot for the editor.
|
|
371
|
+
*/
|
|
326
372
|
findDocumentOrShadowRoot(editor) {
|
|
327
373
|
const el = AngularEditor.toDOMNode(editor, editor);
|
|
328
374
|
const root = el.getRootNode();
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
if (!(root instanceof Document || root instanceof ShadowRoot)) {
|
|
335
|
-
throw new Error(`Unable to find DocumentOrShadowRoot for editor element: ${el}`);
|
|
336
|
-
}
|
|
337
|
-
// COMPAT: Only Chrome implements the DocumentOrShadowRoot mixin for
|
|
338
|
-
// ShadowRoot; other browsers still implement it on the Document
|
|
339
|
-
// interface. (2020/08/08)
|
|
340
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot#Properties
|
|
341
|
-
if (root.getSelection === undefined && el.ownerDocument !== null) {
|
|
342
|
-
return el.ownerDocument;
|
|
343
|
-
}
|
|
344
|
-
return root;
|
|
375
|
+
if ((root instanceof Document || root instanceof ShadowRoot) &&
|
|
376
|
+
root.getSelection != null) {
|
|
377
|
+
return root;
|
|
378
|
+
}
|
|
379
|
+
return el.ownerDocument;
|
|
345
380
|
},
|
|
346
381
|
/**
|
|
347
382
|
* Check if the editor is focused.
|
|
@@ -438,6 +473,18 @@ const AngularEditor = {
|
|
|
438
473
|
insertData(editor, data) {
|
|
439
474
|
editor.insertData(data);
|
|
440
475
|
},
|
|
476
|
+
/**
|
|
477
|
+
* Insert fragment data from a `DataTransfer` into the editor.
|
|
478
|
+
*/
|
|
479
|
+
insertFragmentData(editor, data) {
|
|
480
|
+
return editor.insertFragmentData(data);
|
|
481
|
+
},
|
|
482
|
+
/**
|
|
483
|
+
* Insert text data from a `DataTransfer` into the editor.
|
|
484
|
+
*/
|
|
485
|
+
insertTextData(editor, data) {
|
|
486
|
+
return editor.insertTextData(data);
|
|
487
|
+
},
|
|
441
488
|
/**
|
|
442
489
|
* onKeydown hook.
|
|
443
490
|
*/
|
|
@@ -453,8 +500,8 @@ const AngularEditor = {
|
|
|
453
500
|
/**
|
|
454
501
|
* Sets data from the currently selected fragment on a `DataTransfer`.
|
|
455
502
|
*/
|
|
456
|
-
setFragmentData(editor, data) {
|
|
457
|
-
editor.setFragmentData(data);
|
|
503
|
+
setFragmentData(editor, data, originEvent) {
|
|
504
|
+
editor.setFragmentData(data, originEvent);
|
|
458
505
|
},
|
|
459
506
|
deleteCutData(editor) {
|
|
460
507
|
editor.deleteCutData();
|
|
@@ -711,7 +758,9 @@ const AngularEditor = {
|
|
|
711
758
|
// composition the ASCII characters will be prepended to the zero-width
|
|
712
759
|
// space, so subtract 1 from the offset to account for the zero-width
|
|
713
760
|
// space character.
|
|
714
|
-
if (domNode &&
|
|
761
|
+
if (domNode &&
|
|
762
|
+
offset === domNode.textContent.length &&
|
|
763
|
+
(parentNode && parentNode.hasAttribute('data-slate-zero-width'))) {
|
|
715
764
|
offset--;
|
|
716
765
|
}
|
|
717
766
|
}
|
|
@@ -1125,7 +1174,7 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
|
|
|
1125
1174
|
// in the HTML, and can be used for intra-Slate pasting. If it's a text
|
|
1126
1175
|
// node, wrap it in a `<span>` so we have something to set an attribute on.
|
|
1127
1176
|
if (isDOMText(attach)) {
|
|
1128
|
-
const span =
|
|
1177
|
+
const span = attach.ownerDocument.createElement('span');
|
|
1129
1178
|
// COMPAT: In Chrome and Safari, if we don't add the `white-space` style
|
|
1130
1179
|
// then leading and trailing spaces will be ignored. (2017/09/21)
|
|
1131
1180
|
span.style.whiteSpace = 'pre';
|
|
@@ -1139,13 +1188,14 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
|
|
|
1139
1188
|
attach.setAttribute('data-slate-fragment', encoded);
|
|
1140
1189
|
data.setData(`application/${clipboardFormatKey}`, encoded);
|
|
1141
1190
|
// Add the content to a <div> so that we can get its inner HTML.
|
|
1142
|
-
const div =
|
|
1191
|
+
const div = contents.ownerDocument.createElement('div');
|
|
1143
1192
|
div.appendChild(contents);
|
|
1144
1193
|
div.setAttribute('hidden', 'true');
|
|
1145
|
-
|
|
1194
|
+
contents.ownerDocument.body.appendChild(div);
|
|
1146
1195
|
data.setData('text/html', div.innerHTML);
|
|
1147
1196
|
data.setData('text/plain', getPlainText(div));
|
|
1148
|
-
|
|
1197
|
+
contents.ownerDocument.body.removeChild(div);
|
|
1198
|
+
return data;
|
|
1149
1199
|
};
|
|
1150
1200
|
e.deleteCutData = () => {
|
|
1151
1201
|
const { selection } = editor;
|
|
@@ -1162,13 +1212,25 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
|
|
|
1162
1212
|
}
|
|
1163
1213
|
};
|
|
1164
1214
|
e.insertData = (data) => {
|
|
1165
|
-
|
|
1215
|
+
if (!e.insertFragmentData(data)) {
|
|
1216
|
+
e.insertTextData(data);
|
|
1217
|
+
}
|
|
1218
|
+
};
|
|
1219
|
+
e.insertFragmentData = (data) => {
|
|
1220
|
+
/**
|
|
1221
|
+
* Checking copied fragment from application/x-slate-fragment or data-slate-fragment
|
|
1222
|
+
*/
|
|
1223
|
+
const fragment = data.getData(`application/${clipboardFormatKey}`) ||
|
|
1224
|
+
getSlateFragmentAttribute(data);
|
|
1166
1225
|
if (fragment) {
|
|
1167
1226
|
const decoded = decodeURIComponent(window.atob(fragment));
|
|
1168
1227
|
const parsed = JSON.parse(decoded);
|
|
1169
1228
|
e.insertFragment(parsed);
|
|
1170
|
-
return;
|
|
1229
|
+
return true;
|
|
1171
1230
|
}
|
|
1231
|
+
return false;
|
|
1232
|
+
};
|
|
1233
|
+
e.insertTextData = (data) => {
|
|
1172
1234
|
const text = data.getData('text/plain');
|
|
1173
1235
|
if (text) {
|
|
1174
1236
|
const lines = text.split(/\r\n|\r|\n/);
|
|
@@ -1180,7 +1242,9 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
|
|
|
1180
1242
|
e.insertText(line);
|
|
1181
1243
|
split = true;
|
|
1182
1244
|
}
|
|
1245
|
+
return true;
|
|
1183
1246
|
}
|
|
1247
|
+
return false;
|
|
1184
1248
|
};
|
|
1185
1249
|
e.onKeydown = () => { };
|
|
1186
1250
|
e.onClick = () => { };
|
|
@@ -2443,13 +2507,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
2443
2507
|
}] } });
|
|
2444
2508
|
|
|
2445
2509
|
const timeDebug = Debug('slate-angular-time');
|
|
2446
|
-
// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
|
|
2447
|
-
// Chrome Legacy doesn't support `beforeinput` correctly
|
|
2448
|
-
const HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY &&
|
|
2449
|
-
!IS_EDGE_LEGACY &&
|
|
2450
|
-
globalThis.InputEvent &&
|
|
2451
|
-
// @ts-ignore The `getTargetRanges` property isn't recognized.
|
|
2452
|
-
typeof globalThis.InputEvent.prototype.getTargetRanges === 'function';
|
|
2453
2510
|
// not correctly clipboardData on beforeinput
|
|
2454
2511
|
const forceOnDOMPaste = IS_SAFARI;
|
|
2455
2512
|
class SlateEditableComponent {
|
|
@@ -2880,7 +2937,10 @@ class SlateEditableComponent {
|
|
|
2880
2937
|
case 'insertFromYank':
|
|
2881
2938
|
case 'insertReplacementText':
|
|
2882
2939
|
case 'insertText': {
|
|
2883
|
-
|
|
2940
|
+
// use a weak comparison instead of 'instanceof' to allow
|
|
2941
|
+
// programmatic access of paste events coming from external windows
|
|
2942
|
+
// like cypress where cy.window does not work realibly
|
|
2943
|
+
if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {
|
|
2884
2944
|
AngularEditor.insertData(editor, data);
|
|
2885
2945
|
}
|
|
2886
2946
|
else if (typeof data === 'string') {
|
|
@@ -2992,13 +3052,13 @@ class SlateEditableComponent {
|
|
|
2992
3052
|
const isOutsideSlate = !hasStringTarget(window.getSelection()) && isTargetInsideVoid(this.editor, event.target);
|
|
2993
3053
|
if (!isOutsideSlate && hasTarget(this.editor, event.target) && !this.readonly && !this.isDOMEventHandled(event, this.copy)) {
|
|
2994
3054
|
event.preventDefault();
|
|
2995
|
-
AngularEditor.setFragmentData(this.editor, event.clipboardData);
|
|
3055
|
+
AngularEditor.setFragmentData(this.editor, event.clipboardData, 'copy');
|
|
2996
3056
|
}
|
|
2997
3057
|
}
|
|
2998
3058
|
onDOMCut(event) {
|
|
2999
3059
|
if (!this.readonly && hasEditableTarget(this.editor, event.target) && !this.isDOMEventHandled(event, this.cut)) {
|
|
3000
3060
|
event.preventDefault();
|
|
3001
|
-
AngularEditor.setFragmentData(this.editor, event.clipboardData);
|
|
3061
|
+
AngularEditor.setFragmentData(this.editor, event.clipboardData, 'cut');
|
|
3002
3062
|
const { selection } = this.editor;
|
|
3003
3063
|
if (selection) {
|
|
3004
3064
|
AngularEditor.deleteCutData(this.editor);
|
|
@@ -3017,7 +3077,7 @@ class SlateEditableComponent {
|
|
|
3017
3077
|
}
|
|
3018
3078
|
}
|
|
3019
3079
|
onDOMDragStart(event) {
|
|
3020
|
-
if (hasTarget(this.editor, event.target) && !this.isDOMEventHandled(event, this.dragStart)) {
|
|
3080
|
+
if (!this.readonly && hasTarget(this.editor, event.target) && !this.isDOMEventHandled(event, this.dragStart)) {
|
|
3021
3081
|
const node = AngularEditor.toSlateNode(this.editor, event.target);
|
|
3022
3082
|
const path = AngularEditor.findPath(this.editor, node);
|
|
3023
3083
|
const voidMatch = Editor.isVoid(this.editor, node) ||
|
|
@@ -3029,7 +3089,7 @@ class SlateEditableComponent {
|
|
|
3029
3089
|
Transforms.select(this.editor, range);
|
|
3030
3090
|
}
|
|
3031
3091
|
this.isDraggingInternally = true;
|
|
3032
|
-
AngularEditor.setFragmentData(this.editor, event.dataTransfer);
|
|
3092
|
+
AngularEditor.setFragmentData(this.editor, event.dataTransfer, 'drag');
|
|
3033
3093
|
}
|
|
3034
3094
|
}
|
|
3035
3095
|
onDOMDrop(event) {
|
|
@@ -3572,5 +3632,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
3572
3632
|
* Generated bundle index. Do not edit.
|
|
3573
3633
|
*/
|
|
3574
3634
|
|
|
3575
|
-
export { AngularEditor, BaseComponent, BaseElementComponent, BaseLeafComponent, BaseTextComponent, DOMComment, DOMElement, DOMNode, DOMRange, DOMSelection, DOMStaticRange, DOMText, EDITOR_TO_ELEMENT, EDITOR_TO_ON_CHANGE, EDITOR_TO_PLACEHOLDER, EDITOR_TO_WINDOW, ELEMENT_TO_COMPONENT, ELEMENT_TO_NODE, FAKE_LEFT_BLOCK_CARD_OFFSET, FAKE_RIGHT_BLOCK_CARD_OFFSET, IS_APPLE, IS_CHROME, IS_CHROME_LEGACY, IS_CLICKING, IS_DRAGGING, IS_EDGE_LEGACY, IS_FIREFOX, IS_FOCUSED, IS_IOS, IS_READONLY, IS_SAFARI, KEY_TO_ELEMENT, Key, NODE_TO_ELEMENT, NODE_TO_INDEX, NODE_TO_KEY, NODE_TO_PARENT, PLACEHOLDER_SYMBOL, SlateChildrenComponent, SlateEditableComponent, SlateElementComponent, SlateErrorCode, SlateLeavesComponent, SlateModule, SlateStringComponent, check, getCardTargetAttribute, getDefaultView, getEditableChild, getEditableChildAndIndex, getPlainText, hasBeforeContextChange, hasBlockCard, hasBlockCardWithNode, hasShadowRoot, hotkeys, isCardCenterByTargetAttr, isCardLeft, isCardLeftByTargetAttr, isCardRightByTargetAttr, isComponentType, isDOMComment, isDOMElement, isDOMNode, isDOMSelection, isDOMText, isDecoratorRangeListEqual, isPlainTextOnlyPaste, isTemplateRef, isValid, normalize, normalizeDOMPoint, shallowCompare, withAngular };
|
|
3635
|
+
export { AngularEditor, BaseComponent, BaseElementComponent, BaseLeafComponent, BaseTextComponent, DOMComment, DOMElement, DOMNode, DOMRange, DOMSelection, DOMStaticRange, DOMText, EDITOR_TO_ELEMENT, EDITOR_TO_ON_CHANGE, EDITOR_TO_PLACEHOLDER, EDITOR_TO_WINDOW, ELEMENT_TO_COMPONENT, ELEMENT_TO_NODE, FAKE_LEFT_BLOCK_CARD_OFFSET, FAKE_RIGHT_BLOCK_CARD_OFFSET, HAS_BEFORE_INPUT_SUPPORT, IS_ANDROID, IS_APPLE, IS_CHROME, IS_CHROME_LEGACY, IS_CLICKING, IS_DRAGGING, IS_EDGE_LEGACY, IS_FIREFOX, IS_FIREFOX_LEGACY, IS_FOCUSED, IS_IOS, IS_QQBROWSER, IS_READONLY, IS_SAFARI, IS_UC_MOBILE, IS_WECHATBROWSER, KEY_TO_ELEMENT, Key, NODE_TO_ELEMENT, NODE_TO_INDEX, NODE_TO_KEY, NODE_TO_PARENT, PLACEHOLDER_SYMBOL, SlateChildrenComponent, SlateEditableComponent, SlateElementComponent, SlateErrorCode, SlateLeavesComponent, SlateModule, SlateStringComponent, check, getCardTargetAttribute, getClipboardData, getDefaultView, getEditableChild, getEditableChildAndIndex, getPlainText, getSlateFragmentAttribute, hasBeforeContextChange, hasBlockCard, hasBlockCardWithNode, hasShadowRoot, hotkeys, isCardCenterByTargetAttr, isCardLeft, isCardLeftByTargetAttr, isCardRightByTargetAttr, isComponentType, isDOMComment, isDOMElement, isDOMNode, isDOMSelection, isDOMText, isDecoratorRangeListEqual, isPlainTextOnlyPaste, isTemplateRef, isValid, normalize, normalizeDOMPoint, shallowCompare, withAngular };
|
|
3576
3636
|
//# sourceMappingURL=slate-angular.js.map
|