OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
_backup
/
tinymce
/
tinymce
/
src
/
themes
/
mobile
/
main
/
ts
/
ui
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/20/2020 06:45:48 AM
rwxr-xr-x
📄
AndroidRealm.ts
2.43 KB
02/20/2020 06:32:39 AM
rw-r--r--
📄
Buttons.ts
2.4 KB
02/20/2020 06:32:40 AM
rw-r--r--
📄
ColorSlider.ts
3.21 KB
02/20/2020 06:32:40 AM
rw-r--r--
📄
CommonRealm.ts
1.49 KB
02/20/2020 06:32:41 AM
rw-r--r--
📄
Dropup.ts
2.38 KB
02/20/2020 06:32:41 AM
rw-r--r--
📄
FontSizeSlider.ts
1.34 KB
02/20/2020 06:32:42 AM
rw-r--r--
📄
HeadingSlider.ts
1.63 KB
02/20/2020 06:32:42 AM
rw-r--r--
📄
ImagePicker.ts
2.13 KB
02/20/2020 06:32:43 AM
rw-r--r--
📄
Inputs.ts
2.86 KB
02/20/2020 06:32:43 AM
rw-r--r--
📄
IosRealm.ts
2.65 KB
02/20/2020 06:32:44 AM
rw-r--r--
📄
LinkButton.ts
2.33 KB
02/20/2020 06:32:45 AM
rw-r--r--
📄
OuterContainer.ts
953 bytes
02/20/2020 06:32:45 AM
rw-r--r--
📄
SerialisedDialog.ts
8.2 KB
02/20/2020 06:32:46 AM
rw-r--r--
📄
SizeSlider.ts
2.32 KB
02/20/2020 06:32:46 AM
rw-r--r--
📄
StylesMenu.ts
6.51 KB
02/20/2020 06:32:47 AM
rw-r--r--
📄
ToolbarWidgets.ts
645 bytes
02/20/2020 06:32:47 AM
rw-r--r--
Editing: ImagePicker.ts
Close
/** * Copyright (c) Tiny Technologies, Inc. All rights reserved. * Licensed under the LGPL or a commercial license. * For LGPL see License.txt in the project root for license information. * For commercial licenses see https://www.tiny.cloud/ */ import { AlloyEvents, Button, Memento, NativeEvents, SketchSpec } from '@ephox/alloy'; import { BlobConversions } from '@ephox/imagetools'; import { Id, Option } from '@ephox/katamari'; import Buttons from '../ui/Buttons'; const addImage = function (editor, blob) { BlobConversions.blobToBase64(blob).then(function (base64) { editor.undoManager.transact(function () { const cache = editor.editorUpload.blobCache; const info = cache.create( Id.generate('mceu'), blob, base64 ); cache.add(info); const img = editor.dom.createHTML('img', { src: info.blobUri() }); editor.insertContent(img); }); }); }; const extractBlob = function (simulatedEvent) { const event = simulatedEvent.event(); const files = event.raw().target.files || event.raw().dataTransfer.files; return Option.from(files[0]); }; const sketch = function (editor): SketchSpec { const pickerDom = { tag: 'input', attributes: { accept: 'image/*', type: 'file', title: '' }, // Visibility hidden so that it cannot be seen, and position absolute so that it doesn't // disrupt the layout styles: { visibility: 'hidden', position: 'absolute' } }; const memPicker = Memento.record({ dom: pickerDom, events: AlloyEvents.derive([ // Stop the event firing again at the button level AlloyEvents.cutter(NativeEvents.click()), AlloyEvents.run(NativeEvents.change(), function (picker, simulatedEvent) { extractBlob(simulatedEvent).each(function (blob) { addImage(editor, blob); }); }) ]) }); return Button.sketch({ dom: Buttons.getToolbarIconButton('image', editor), components: [ memPicker.asSpec() ], action (button) { const picker = memPicker.get(button); // Trigger a dom click for the file input picker.element().dom().click(); } }); }; export { sketch };