copySelection.js 935 B

1234567891011121314151617181920212223242526272829
  1. 'use strict';
  2. var DataTransfer = require('../utils/dataTransfer/DataTransfer.js');
  3. require('../utils/dataTransfer/Clipboard.js');
  4. var getWindow = require('../utils/misc/getWindow.js');
  5. var selection = require('../utils/focus/selection.js');
  6. var UI = require('./UI.js');
  7. function copySelection(target) {
  8. const data = selection.hasOwnSelection(target) ? {
  9. 'text/plain': readSelectedValueFromInput(target)
  10. } : {
  11. 'text/plain': String(target.ownerDocument.getSelection())
  12. };
  13. const dt = DataTransfer.createDataTransfer(getWindow.getWindow(target));
  14. for(const type in data){
  15. if (data[type]) {
  16. dt.setData(type, data[type]);
  17. }
  18. }
  19. return dt;
  20. }
  21. function readSelectedValueFromInput(target) {
  22. const sel = UI.getUISelection(target);
  23. const val = UI.getUIValue(target);
  24. return val.substring(sel.startOffset, sel.endOffset);
  25. }
  26. exports.copySelection = copySelection;