second commit

This commit is contained in:
2024-12-27 22:31:23 +09:00
parent 2353324570
commit 10a0f110ca
8819 changed files with 1307198 additions and 28 deletions

View File

@ -0,0 +1,24 @@
import type { CopyClipboardOptions } from './types';
import type { InstanceOptions } from '../../dom/types';
import { CopyClipboardInterface } from './interface';
declare class CopyClipboard implements CopyClipboardInterface {
_instanceId: string;
_triggerEl: HTMLElement | null;
_targetEl: HTMLInputElement | null;
_options: CopyClipboardOptions;
_initialized: boolean;
_triggerElClickHandler: EventListenerOrEventListenerObject;
_inputHandler: EventListenerOrEventListenerObject;
constructor(triggerEl?: HTMLElement | null, targetEl?: HTMLInputElement | null, options?: CopyClipboardOptions, instanceOptions?: InstanceOptions);
init(): void;
destroy(): void;
removeInstance(): void;
destroyAndRemoveInstance(): void;
getTargetValue(): string;
copy(): string;
decodeHTML(html: string): string;
updateOnCopyCallback(callback: () => void): void;
}
export declare function initCopyClipboards(): void;
export default CopyClipboard;
//# sourceMappingURL=index.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/clipboard/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAcrD,cAAM,aAAc,YAAW,sBAAsB;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB,EAAE,kCAAkC,CAAC;IAC3D,aAAa,EAAE,kCAAkC,CAAC;gBAG9C,SAAS,GAAE,WAAW,GAAG,IAAW,EACpC,QAAQ,GAAE,gBAAgB,GAAG,IAAW,EACxC,OAAO,GAAE,oBAA8B,EACvC,eAAe,GAAE,eAAwC;IAoB7D,IAAI;IAkBJ,OAAO;IAYP,cAAc;IAId,wBAAwB;IAKxB,cAAc;IAcd,IAAI;IA4BJ,UAAU,CAAC,IAAI,EAAE,MAAM;IAMvB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI;CAG5C;AAED,wBAAgB,kBAAkB,SA2CjC;AAOD,eAAe,aAAa,CAAC"}

View File

@ -0,0 +1,139 @@
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import instances from '../../dom/instances';
var Default = {
htmlEntities: false,
contentType: 'input',
onCopy: function () { },
};
var DefaultInstanceOptions = {
id: null,
override: true,
};
var CopyClipboard = /** @class */ (function () {
function CopyClipboard(triggerEl, targetEl, options, instanceOptions) {
if (triggerEl === void 0) { triggerEl = null; }
if (targetEl === void 0) { targetEl = null; }
if (options === void 0) { options = Default; }
if (instanceOptions === void 0) { instanceOptions = DefaultInstanceOptions; }
this._instanceId = instanceOptions.id
? instanceOptions.id
: targetEl.id;
this._triggerEl = triggerEl;
this._targetEl = targetEl;
this._options = __assign(__assign({}, Default), options);
this._initialized = false;
this.init();
instances.addInstance('CopyClipboard', this, this._instanceId, instanceOptions.override);
}
CopyClipboard.prototype.init = function () {
var _this = this;
if (this._targetEl && this._triggerEl && !this._initialized) {
this._triggerElClickHandler = function () {
_this.copy();
};
// clicking on the trigger element should copy the value of the target element
if (this._triggerEl) {
this._triggerEl.addEventListener('click', this._triggerElClickHandler);
}
this._initialized = true;
}
};
CopyClipboard.prototype.destroy = function () {
if (this._triggerEl && this._targetEl && this._initialized) {
if (this._triggerEl) {
this._triggerEl.removeEventListener('click', this._triggerElClickHandler);
}
this._initialized = false;
}
};
CopyClipboard.prototype.removeInstance = function () {
instances.removeInstance('CopyClipboard', this._instanceId);
};
CopyClipboard.prototype.destroyAndRemoveInstance = function () {
this.destroy();
this.removeInstance();
};
CopyClipboard.prototype.getTargetValue = function () {
if (this._options.contentType === 'input') {
return this._targetEl.value;
}
if (this._options.contentType === 'innerHTML') {
return this._targetEl.innerHTML;
}
if (this._options.contentType === 'textContent') {
return this._targetEl.textContent.replace(/\s+/g, ' ').trim();
}
};
CopyClipboard.prototype.copy = function () {
var textToCopy = this.getTargetValue();
// Check if HTMLEntities option is enabled
if (this._options.htmlEntities) {
// Encode the text using HTML entities
textToCopy = this.decodeHTML(textToCopy);
}
// Create a temporary textarea element
var tempTextArea = document.createElement('textarea');
tempTextArea.value = textToCopy;
document.body.appendChild(tempTextArea);
// Select the text inside the textarea and copy it to the clipboard
tempTextArea.select();
document.execCommand('copy');
// Remove the temporary textarea
document.body.removeChild(tempTextArea);
// Callback function
this._options.onCopy(this);
return textToCopy;
};
// Function to encode text into HTML entities
CopyClipboard.prototype.decodeHTML = function (html) {
var textarea = document.createElement('textarea');
textarea.innerHTML = html;
return textarea.textContent;
};
CopyClipboard.prototype.updateOnCopyCallback = function (callback) {
this._options.onCopy = callback;
};
return CopyClipboard;
}());
export function initCopyClipboards() {
document
.querySelectorAll('[data-copy-to-clipboard-target]')
.forEach(function ($triggerEl) {
var targetId = $triggerEl.getAttribute('data-copy-to-clipboard-target');
var $targetEl = document.getElementById(targetId);
var contentType = $triggerEl.getAttribute('data-copy-to-clipboard-content-type');
var htmlEntities = $triggerEl.getAttribute('data-copy-to-clipboard-html-entities');
// check if the target element exists
if ($targetEl) {
if (!instances.instanceExists('CopyClipboard', $targetEl.getAttribute('id'))) {
new CopyClipboard($triggerEl, $targetEl, {
htmlEntities: htmlEntities && htmlEntities === 'true'
? true
: Default.htmlEntities,
contentType: contentType
? contentType
: Default.contentType,
});
}
}
else {
console.error("The target element with id \"".concat(targetId, "\" does not exist. Please check the data-copy-to-clipboard-target attribute."));
}
});
}
if (typeof window !== 'undefined') {
window.CopyClipboard = CopyClipboard;
window.initClipboards = initCopyClipboards;
}
export default CopyClipboard;
//# sourceMappingURL=index.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/clipboard/index.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,12 @@
import { CopyClipboardOptions } from './types';
export declare interface CopyClipboardInterface {
_triggerEl: HTMLElement | null;
_targetEl: HTMLElement | HTMLInputElement | null;
_options: CopyClipboardOptions;
init(): void;
copy(): string;
destroy(): void;
removeInstance(): void;
destroyAndRemoveInstance(): void;
}
//# sourceMappingURL=interface.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/components/clipboard/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,CAAC,OAAO,WAAW,sBAAsB;IAC3C,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjD,QAAQ,EAAE,oBAAoB,CAAC;IAE/B,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,MAAM,CAAC;IAEf,OAAO,IAAI,IAAI,CAAC;IAChB,cAAc,IAAI,IAAI,CAAC;IACvB,wBAAwB,IAAI,IAAI,CAAC;CACpC"}

View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=interface.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../src/components/clipboard/interface.ts"],"names":[],"mappings":""}

View File

@ -0,0 +1,7 @@
import { CopyClipboardInterface } from './interface';
export declare type CopyClipboardOptions = {
htmlEntities: boolean;
contentType?: string;
onCopy?: (clipboard: CopyClipboardInterface) => void;
};
//# sourceMappingURL=types.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/clipboard/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,CAAC,OAAO,MAAM,oBAAoB,GAAG;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACxD,CAAC"}

View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=types.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/clipboard/types.ts"],"names":[],"mappings":""}