Wren a web browser where WebAssembly runs everything, JavaScript included

Module dnd

HTML drag and drop for JavaScript (src/page/dnd.odin; native/js/runtime/web_dnd.c): the drag data store behind a DataTransfer (its items, its mode, dropEffect and effectAllowed, the drag image), the files a page was given (by a drop, an <input type=file>) as browser objects read on demand, and HTMLInputElement.files. The store's mode follows the event being dispatched (HTML "drag data store mode"): read/write in dragstart, read-only in drop, protected otherwise (types and kinds are visible, data and files are not).

Exposed to: Window. Source: api/js_dnd.widl.

Odin: import "wren:dnd".

Types

handle DataTransfer : Object

Checked by the browser on every call (lookup_DataTransfer).

handle LocalFile : Object

Checked by the browser on every call (lookup_LocalFile).

enum DragItemKind : i32

DataTransferItem.kind

membervalue
String0
File1

struct LocalFileInfo

The size and time of a file.

fieldtype
sizei64bytes
last_modifiedf64File.lastModified (ms since the epoch)

Functions

DataTransfer_create

DataTransfer DataTransfer_create()

new DataTransfer(): an empty store in read/write mode.

Host: DataTransfer_create :: proc(c: ^Call) -> u64

DataTransfer_get_dropEffect

string DataTransfer_get_dropEffect(DataTransfer dt)

dataTransfer.dropEffect ("none", "copy", "link", "move")

Host: DataTransfer_get_dropEffect :: proc(c: ^Call, dt: Api_DataTransfer) -> string

DataTransfer_set_dropEffect

void DataTransfer_set_dropEffect(DataTransfer dt, string value)

Values other than the four are ignored.

Host: DataTransfer_set_dropEffect :: proc(c: ^Call, dt: Api_DataTransfer, value: string)

DataTransfer_get_effectAllowed

string DataTransfer_get_effectAllowed(DataTransfer dt)

dataTransfer.effectAllowed

Host: DataTransfer_get_effectAllowed :: proc(c: ^Call, dt: Api_DataTransfer) -> string

DataTransfer_set_effectAllowed

void DataTransfer_set_effectAllowed(DataTransfer dt, string value)

Ignored outside read/write mode and for a value that is not one of the nine.

Host: DataTransfer_set_effectAllowed :: proc(c: ^Call, dt: Api_DataTransfer, value: string)

DataTransfer_getData

string DataTransfer_getData(DataTransfer dt, string format)

getData(format): "" in protected mode or when absent ("text" is text/plain, "url" the first URL of text/uri-list).

Host: DataTransfer_getData :: proc(c: ^Call, dt: Api_DataTransfer, format: string) -> string

DataTransfer_setData

void DataTransfer_setData(DataTransfer dt, string format, string data)

setData(format, data): ignored outside read/write mode.

Host: DataTransfer_setData :: proc(c: ^Call, dt: Api_DataTransfer, format: string, data: string)

DataTransfer_clearData

void DataTransfer_clearData(DataTransfer dt, optional string format)

clearData(format): every string item, or those of the format; ignored outside read/write mode.

Host: DataTransfer_clearData :: proc(c: ^Call, dt: Api_DataTransfer, format: Maybe(string))

DataTransfer_setDragImage

void DataTransfer_setDragImage(DataTransfer dt, Element image, i32 x, i32 y)

setDragImage(image, x, y): ignored outside read/write mode.

Host: DataTransfer_setDragImage :: proc(c: ^Call, dt: Api_DataTransfer, image: Api_Element, x: i32, y: i32)

DataTransfer_typeList

string DataTransfer_typeList(DataTransfer dt)

The types, in order, separated by "\n" ("Files" last when there are files).

Host: DataTransfer_typeList :: proc(c: ^Call, dt: Api_DataTransfer) -> string

DataTransfer_itemCount

i32 DataTransfer_itemCount(DataTransfer dt)

The number of items (DataTransferItemList.length; 0 in disabled mode).

Host: DataTransfer_itemCount :: proc(c: ^Call, dt: Api_DataTransfer) -> i32

DataTransfer_itemKind

DragItemKind DataTransfer_itemKind(DataTransfer dt, i32 index) raises

An item's kind (Invalid_Argument past the end).

Raises: returns an Error (see web).

Host: DataTransfer_itemKind :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> (Api_DragItemKind, Api_Error)

DataTransfer_itemType

string DataTransfer_itemType(DataTransfer dt, i32 index) raises

An item's type.

Raises: returns an Error (see web).

Host: DataTransfer_itemType :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> (string, Api_Error)

DataTransfer_itemString

string DataTransfer_itemString(DataTransfer dt, i32 index) raises

A string item's data (Invalid_State in protected mode).

Raises: returns an Error (see web).

Host: DataTransfer_itemString :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> (string, Api_Error)

DataTransfer_itemFile

LocalFile DataTransfer_itemFile(DataTransfer dt, i32 index) raises

A file item's file (0: not a file, or protected mode).

Raises: returns an Error (see web).

Host: DataTransfer_itemFile :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> (u64, Api_Error)

DataTransfer_addString

void DataTransfer_addString(DataTransfer dt, string data, string type) raises

items.add(data, type): Invalid_State outside read/write mode, Not_Supported when a string item of the type exists.

Raises: returns an Error (see web).

Host: DataTransfer_addString :: proc(c: ^Call, dt: Api_DataTransfer, data: string, type: string) -> Api_Error

DataTransfer_addFile

void DataTransfer_addFile(DataTransfer dt, LocalFile file) raises

items.add(file) for a file of the browser (a dropped or chosen one).

Raises: returns an Error (see web).

Host: DataTransfer_addFile :: proc(c: ^Call, dt: Api_DataTransfer, file: Api_LocalFile) -> Api_Error

DataTransfer_addBytes

void DataTransfer_addBytes(DataTransfer dt, string name, string type, bytes data, f64 last_modified) raises

items.add(file) for a File made by the page: its bytes are copied (Quota past the page's memory limit).

Raises: returns an Error (see web).

Host: DataTransfer_addBytes :: proc(c: ^Call, dt: Api_DataTransfer, name: string, type: string, data: []u8, last_modified: f64) -> Api_Error

DataTransfer_removeItem

void DataTransfer_removeItem(DataTransfer dt, i32 index) raises

items.remove(index): Invalid_State outside read/write mode.

Raises: returns an Error (see web).

Host: DataTransfer_removeItem :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> Api_Error

DataTransfer_clearItems

void DataTransfer_clearItems(DataTransfer dt) raises

items.clear(): Invalid_State outside read/write mode.

Raises: returns an Error (see web).

Host: DataTransfer_clearItems :: proc(c: ^Call, dt: Api_DataTransfer) -> Api_Error

DataTransfer_fileCount

i32 DataTransfer_fileCount(DataTransfer dt)

The files (dataTransfer.files: none outside read/write and read-only mode).

Host: DataTransfer_fileCount :: proc(c: ^Call, dt: Api_DataTransfer) -> i32

DataTransfer_file

LocalFile DataTransfer_file(DataTransfer dt, i32 index) raises

One of them.

Raises: returns an Error (see web).

Host: DataTransfer_file :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> (u64, Api_Error)

DataTransfer_mode

i32 DataTransfer_mode(DataTransfer dt)

The mode: 0 protected, 1 read/write, 2 read-only.

Host: DataTransfer_mode :: proc(c: ^Call, dt: Api_DataTransfer) -> i32

LocalFile_name

string LocalFile_name(LocalFile file)

A file's name (no directory).

Exposed to: Window, Worker.

Host: LocalFile_name :: proc(c: ^Call, file: Api_LocalFile) -> string

LocalFile_type

string LocalFile_type(LocalFile file)

Its MIME type ("" when unknown).

Exposed to: Window, Worker.

Host: LocalFile_type :: proc(c: ^Call, file: Api_LocalFile) -> string

LocalFile_info

LocalFileInfo LocalFile_info(LocalFile file)

Its size and time.

Exposed to: Window, Worker.

Host: LocalFile_info :: proc(c: ^Call, file: Api_LocalFile) -> Api_LocalFileInfo

LocalFile_read

i64 LocalFile_read(LocalFile file, i64 offset, out bytes into) raises

Reads up to into's capacity from offset: the number of bytes read (Not_Found when the file is gone or changed since it was given: File API "NotReadableError").

Exposed to: Window, Worker.

Raises: returns an Error (see web).

Host: LocalFile_read :: proc(c: ^Call, file: Api_LocalFile, offset: i64, into: []u8) -> (i64, Api_Error)

DataTransfer_itemFsHandle

string DataTransfer_itemFsHandle(DataTransfer dt, i32 index) raises

DataTransferItem.getAsFileSystemHandle(): the dropped file's or folder's handle (as Fs_showPicker describes one: root TAB path TAB kind TAB name), "" for a string item or outside read-only and read/write mode.

Raises: returns an Error (see web).

Host: DataTransfer_itemFsHandle :: proc(c: ^Call, dt: Api_DataTransfer, index: i32) -> (string, Api_Error)

DragEvent_dataTransfer

DataTransfer DragEvent_dataTransfer(Event event)

DragEvent.dataTransfer of an event the browser dispatches (0 for another event).

Host: DragEvent_dataTransfer :: proc(c: ^Call, event: Api_Event) -> u64

InputFiles_count

i32 InputFiles_count(Element input)

input.files.length (0 for an element that is not a file input).

Host: InputFiles_count :: proc(c: ^Call, input: Api_Element) -> i32

InputFiles_item

LocalFile InputFiles_item(Element input, i32 index) raises

input.files[index]

Raises: returns an Error (see web).

Host: InputFiles_item :: proc(c: ^Call, input: Api_Element, index: i32) -> (u64, Api_Error)

InputFiles_assign

void InputFiles_assign(Element input, DataTransfer from) raises

input.files = dataTransfer.files: the store's files become the input's selection (Invalid_State for an element that is not a file input).

Raises: returns an Error (see web).

Host: InputFiles_assign :: proc(c: ^Call, input: Api_Element, from: Api_DataTransfer) -> Api_Error

Edit this page on GitHub