avances en plantillas
This commit is contained in:
parent
0f84beacf1
commit
da0530d79b
2062 changed files with 598814 additions and 22 deletions
47
storage/public/dist/libs/clipboard/src/actions/copy.js
vendored
Normal file
47
storage/public/dist/libs/clipboard/src/actions/copy.js
vendored
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import select from 'select';
|
||||
import command from '../common/command';
|
||||
import createFakeElement from '../common/create-fake-element';
|
||||
|
||||
/**
|
||||
* Create fake copy action wrapper using a fake element.
|
||||
* @param {String} target
|
||||
* @param {Object} options
|
||||
* @return {String}
|
||||
*/
|
||||
const fakeCopyAction = (value, options) => {
|
||||
const fakeElement = createFakeElement(value);
|
||||
options.container.appendChild(fakeElement);
|
||||
const selectedText = select(fakeElement);
|
||||
command('copy');
|
||||
fakeElement.remove();
|
||||
|
||||
return selectedText;
|
||||
};
|
||||
|
||||
/**
|
||||
* Copy action wrapper.
|
||||
* @param {String|HTMLElement} target
|
||||
* @param {Object} options
|
||||
* @return {String}
|
||||
*/
|
||||
const ClipboardActionCopy = (
|
||||
target,
|
||||
options = { container: document.body }
|
||||
) => {
|
||||
let selectedText = '';
|
||||
if (typeof target === 'string') {
|
||||
selectedText = fakeCopyAction(target, options);
|
||||
} else if (
|
||||
target instanceof HTMLInputElement &&
|
||||
!['text', 'search', 'url', 'tel', 'password'].includes(target?.type)
|
||||
) {
|
||||
// If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange
|
||||
selectedText = fakeCopyAction(target.value, options);
|
||||
} else {
|
||||
selectedText = select(target);
|
||||
command('copy');
|
||||
}
|
||||
return selectedText;
|
||||
};
|
||||
|
||||
export default ClipboardActionCopy;
|
||||
15
storage/public/dist/libs/clipboard/src/actions/cut.js
vendored
Normal file
15
storage/public/dist/libs/clipboard/src/actions/cut.js
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import select from 'select';
|
||||
import command from '../common/command';
|
||||
|
||||
/**
|
||||
* Cut action wrapper.
|
||||
* @param {String|HTMLElement} target
|
||||
* @return {String}
|
||||
*/
|
||||
const ClipboardActionCut = (target) => {
|
||||
const selectedText = select(target);
|
||||
command('cut');
|
||||
return selectedText;
|
||||
};
|
||||
|
||||
export default ClipboardActionCut;
|
||||
53
storage/public/dist/libs/clipboard/src/actions/default.js
vendored
Normal file
53
storage/public/dist/libs/clipboard/src/actions/default.js
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import ClipboardActionCut from './cut';
|
||||
import ClipboardActionCopy from './copy';
|
||||
|
||||
/**
|
||||
* Inner function which performs selection from either `text` or `target`
|
||||
* properties and then executes copy or cut operations.
|
||||
* @param {Object} options
|
||||
*/
|
||||
const ClipboardActionDefault = (options = {}) => {
|
||||
// Defines base properties passed from constructor.
|
||||
const { action = 'copy', container, target, text } = options;
|
||||
|
||||
// Sets the `action` to be performed which can be either 'copy' or 'cut'.
|
||||
if (action !== 'copy' && action !== 'cut') {
|
||||
throw new Error('Invalid "action" value, use either "copy" or "cut"');
|
||||
}
|
||||
|
||||
// Sets the `target` property using an element that will be have its content copied.
|
||||
if (target !== undefined) {
|
||||
if (target && typeof target === 'object' && target.nodeType === 1) {
|
||||
if (action === 'copy' && target.hasAttribute('disabled')) {
|
||||
throw new Error(
|
||||
'Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
action === 'cut' &&
|
||||
(target.hasAttribute('readonly') || target.hasAttribute('disabled'))
|
||||
) {
|
||||
throw new Error(
|
||||
'Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'
|
||||
);
|
||||
}
|
||||
} else {
|
||||
throw new Error('Invalid "target" value, use a valid Element');
|
||||
}
|
||||
}
|
||||
|
||||
// Define selection strategy based on `text` property.
|
||||
if (text) {
|
||||
return ClipboardActionCopy(text, { container });
|
||||
}
|
||||
|
||||
// Defines which selection strategy based on `target` property.
|
||||
if (target) {
|
||||
return action === 'cut'
|
||||
? ClipboardActionCut(target)
|
||||
: ClipboardActionCopy(target, { container });
|
||||
}
|
||||
};
|
||||
|
||||
export default ClipboardActionDefault;
|
||||
Loading…
Add table
Add a link
Reference in a new issue