Liking cljdoc? Tell your friends :D

chromex.app.developer-private

clj

developerPrivate API. This is a private API exposing developing and debugging functionalities for apps and extensions.

  • available since Chrome 36
developerPrivate API.
This is a private API exposing developing and debugging functionalities for
apps and extensions.

  * available since Chrome 36
raw docstring

add-host-permissionclj/smacro

(add-host-permission extension-id host)

Adds a new host permission to the extension. The extension will only have access to the host if it is within the requested permissions.

|extension-id| - The id of the extension to modify. |host| - The host to add.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Adds a new host permission to the extension. The extension will only have access to the host if it is within the requested
permissions.

  |extension-id| - The id of the extension to modify.
  |host| - The host to add.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

add-host-permission*cljs

(add-host-permission* config extension-id host)
source

allow-file-accessclj/smacro

(allow-file-access extension-id allow)

|extension-id| - ? |allow| - ?

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

  |extension-id| - ?
  |allow| - ?

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

allow-file-access*cljs

(allow-file-access* config extension-id allow)
source

allow-incognitoclj/smacro

(allow-incognito extension-id allow)

|extension-id| - ? |allow| - ?

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

  |extension-id| - ?
  |allow| - ?

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

allow-incognito*cljs

(allow-incognito* config extension-id allow)
source

api-tableclj

source

auto-updateclj/smacro

(auto-update)

Runs auto update for extensions and apps immediately.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Runs auto update for extensions and apps immediately.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

auto-update*cljs

(auto-update* config)
source

choose-pathclj/smacro

(choose-path select-type file-type)

Open Dialog to browse to an entry.

|select-type| - Select a file or a folder. |file-type| - Required file type. For example, pem type is for private key and load type is for an unpacked item.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [string] where:

|string| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Open Dialog to browse to an entry.

  |select-type| - Select a file or a folder.
  |file-type| - Required file type. For example, pem type is for private key and load type is for an unpacked item.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [string] where:

  |string| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

choose-path*cljs

(choose-path* config select-type file-type)
source

delete-extension-errorsclj/smacro

(delete-extension-errors properties)

Delete reported extension errors.

|properties| - The properties specifying the errors to remove.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Delete reported extension errors.

  |properties| - The properties specifying the errors to remove.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

delete-extension-errors*cljs

(delete-extension-errors* config properties)
source

enableclj/smacro

(enable id enabled)

|id| - ? |enabled| - ?

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

  |id| - ?
  |enabled| - ?

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

enable*cljs

(enable* config id enabled)
source

gen-callclj

source

gen-wrapclj/smacro

(gen-wrap kind item-id config & args)
source

get-extension-infoclj/smacro

(get-extension-info id)

Returns information of a particular extension.

|id| - The id of the extension.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [result] where:

|result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Returns information of a particular extension.

  |id| - The id of the extension.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [result] where:

  |result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

get-extension-info*cljs

(get-extension-info* config id)
source

get-extension-sizeclj/smacro

(get-extension-size id)

Returns the size of a particular extension on disk (already formatted).

|id| - The id of the extension.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [string] where:

|string| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Returns the size of a particular extension on disk (already formatted).

  |id| - The id of the extension.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [string] where:

  |string| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

get-extension-size*cljs

(get-extension-size* config id)
source

get-extensions-infoclj/smacro

(get-extensions-info)
(get-extensions-info options)

Returns information of all the extensions and apps installed.

|options| - Options to restrict the items returned.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [result] where:

|result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Returns information of all the extensions and apps installed.

  |options| - Options to restrict the items returned.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [result] where:

  |result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

get-extensions-info*cljs

(get-extensions-info* config options)
source

get-items-infoclj/smacro

(get-items-info include-disabled include-terminated)

Returns information of all the extensions and apps installed.

|include-disabled| - include disabled items. |include-terminated| - include terminated items.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [result] where:

|result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Returns information of all the extensions and apps installed.

  |include-disabled| - include disabled items.
  |include-terminated| - include terminated items.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [result] where:

  |result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

get-items-info*cljs

(get-items-info* config include-disabled include-terminated)
source

get-profile-configurationclj/smacro

(get-profile-configuration)

Returns the current profile's configuration.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [info] where:

|info| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Returns the current profile's configuration.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [info] where:

  |info| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

get-profile-configuration*cljs

(get-profile-configuration* config)
source

inspectclj/smacro

(inspect options)

|options| - ?

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

  |options| - ?

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

inspect*cljs

(inspect* config options)
source

install-dropped-fileclj/smacro

(install-dropped-file)

Installs the file that was dragged and dropped onto the associated page.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Installs the file that was dragged and dropped onto the associated page.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

install-dropped-file*cljs

(install-dropped-file* config)
source

is-profile-managedclj/smacro

(is-profile-managed)

Returns true if the profile is managed.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [result] where:

|result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Returns true if the profile is managed.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [result] where:

  |result| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

is-profile-managed*cljs

(is-profile-managed* config)
source

load-directoryclj/smacro

(load-directory directory)

Loads an extension / app.

|directory| - The directory to load the extension from.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [string] where:

|string| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Loads an extension / app.

  |directory| - The directory to load the extension from.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [string] where:

  |string| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

load-directory*cljs

(load-directory* config directory)
source

load-unpackedclj/smacro

(load-unpacked)
(load-unpacked options)

Loads a user-selected unpacked item.

|options| - Additional configuration parameters.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [error] where:

|error| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Loads a user-selected unpacked item.

  |options| - Additional configuration parameters.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [error] where:

  |error| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

load-unpacked*cljs

(load-unpacked* config options)
source

notify-drag-install-in-progressclj/smacro

(notify-drag-install-in-progress)

Notifies the browser that a user began a drag in order to install an extension.

Notifies the browser that a user began a drag in order to install an extension.
sourceraw docstring

notify-drag-install-in-progress*cljs

(notify-drag-install-in-progress* config)
source

on-item-state-changed*cljs

(on-item-state-changed* config channel & args)
source

on-profile-state-changed*cljs

(on-profile-state-changed* config channel & args)
source

open-dev-toolsclj/smacro

(open-dev-tools properties)

Open the developer tools to focus on a particular error.

|properties| - ?

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Open the developer tools to focus on a particular error.

  |properties| - ?

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

open-dev-tools*cljs

(open-dev-tools* config properties)
source

pack-directoryclj/smacro

(pack-directory path)
(pack-directory path private-key-path)
(pack-directory path private-key-path flags)

Pack an extension.

|path| - ? |private-key-path| - The path of the private key, if one is given. |flags| - Special flags to apply to the loading process, if any.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [response] where:

|response| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Pack an extension.

  |path| - ?
  |private-key-path| - The path of the private key, if one is given.
  |flags| - Special flags to apply to the loading process, if any.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [response] where:

  |response| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

pack-directory*cljs

(pack-directory* config path private-key-path flags)
source

reloadclj/smacro

(reload extension-id)
(reload extension-id options)

Reloads a given extension.

|extension-id| - The id of the extension to reload. |options| - Additional configuration parameters.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [error] where:

|error| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Reloads a given extension.

  |extension-id| - The id of the extension to reload.
  |options| - Additional configuration parameters.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [error] where:

  |error| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

reload*cljs

(reload* config extension-id options)
source

remove-host-permissionclj/smacro

(remove-host-permission extension-id host)

Removes a host permission from the extension. This should only be called with a host that the extension has access to.

|extension-id| - The id of the extension to modify. |host| - The host to remove.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Removes a host permission from the extension. This should only be called with a host that the extension has access to.

  |extension-id| - The id of the extension to modify.
  |host| - The host to remove.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

remove-host-permission*cljs

(remove-host-permission* config extension-id host)
source

repair-extensionclj/smacro

(repair-extension extension-id)

Repairs the extension specified.

|extension-id| - The id of the extension to repair.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Repairs the extension specified.

  |extension-id| - The id of the extension to repair.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

repair-extension*cljs

(repair-extension* config extension-id)
source

request-file-sourceclj/smacro

(request-file-source properties)

Reads and returns the contents of a file related to an extension which caused an error.

|properties| - ?

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [response] where:

|response| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Reads and returns the contents of a file related to an extension which caused an error.

  |properties| - ?

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [response] where:

  |response| - ?

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

request-file-source*cljs

(request-file-source* config properties)
source

set-shortcut-handling-suspendedclj/smacro

(set-shortcut-handling-suspended is-suspended)

(Un)suspends global shortcut handling.

|is-suspended| - Whether or not shortcut handling should be suspended.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

(Un)suspends global shortcut handling.

  |is-suspended| - Whether or not shortcut handling should be suspended.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

set-shortcut-handling-suspended*cljs

(set-shortcut-handling-suspended* config is-suspended)
source

show-optionsclj/smacro

(show-options extension-id)

Shows the options page for the extension specified.

|extension-id| - The id of the extension to show the options page for.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Shows the options page for the extension specified.

  |extension-id| - The id of the extension to show the options page for.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

show-options*cljs

(show-options* config extension-id)
source

show-pathclj/smacro

(show-path extension-id)

Shows the path of the extension specified.

|extension-id| - The id of the extension to show the path for.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Shows the path of the extension specified.

  |extension-id| - The id of the extension to show the path for.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

show-path*cljs

(show-path* config extension-id)
source

show-permissions-dialogclj/smacro

(show-permissions-dialog extension-id)

Opens a permissions dialog.

|extension-id| - The id of the extension to show permissions for.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Opens a permissions dialog.

  |extension-id| - The id of the extension to show permissions for.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

show-permissions-dialog*cljs

(show-permissions-dialog* config extension-id)
source

tap-all-eventsclj/smacro

(tap-all-events chan)

Taps all valid non-deprecated events in chromex.app.developer-private namespace.

Taps all valid non-deprecated events in chromex.app.developer-private namespace.
sourceraw docstring

tap-on-item-state-changed-eventsclj/smacro

(tap-on-item-state-changed-events channel & args)

Fired when a item state is changed.

Events will be put on the |channel| with signature [::on-item-state-changed [response]] where:

|response| - ?

Note: |args| will be passed as additional parameters into Chrome event's .addListener call.

Fired when a item state is changed.

Events will be put on the |channel| with signature [::on-item-state-changed [response]] where:

  |response| - ?

Note: |args| will be passed as additional parameters into Chrome event's .addListener call.
sourceraw docstring

tap-on-profile-state-changed-eventsclj/smacro

(tap-on-profile-state-changed-events channel & args)

Fired when the profile's state has changed.

Events will be put on the |channel| with signature [::on-profile-state-changed [info]] where:

|info| - ?

Note: |args| will be passed as additional parameters into Chrome event's .addListener call.

Fired when the profile's state has changed.

Events will be put on the |channel| with signature [::on-profile-state-changed [info]] where:

  |info| - ?

Note: |args| will be passed as additional parameters into Chrome event's .addListener call.
sourceraw docstring

update-extension-commandclj/smacro

(update-extension-command update)

Updates an extension command.

|update| - The parameters for updating the extension command.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Updates an extension command.

  |update| - The parameters for updating the extension command.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

update-extension-command*cljs

(update-extension-command* config update)
source

update-extension-configurationclj/smacro

(update-extension-configuration update)

Modifies an extension's current configuration.

|update| - The parameters for updating the extension's configuration. Any properties omitted from |update| will not be changed.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Modifies an extension's current configuration.

  |update| - The parameters for updating the extension's configuration.     Any properties omitted from |update| will not
             be changed.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

update-extension-configuration*cljs

(update-extension-configuration* config update)
source

update-profile-configurationclj/smacro

(update-profile-configuration update)

Updates the active profile.

|update| - The parameters for updating the profile's configuration. Any properties omitted from |update| will not be changed.

This function returns a core.async channel of type promise-chan which eventually receives a result value. Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via chromex.error/get-last-error.

Updates the active profile.

  |update| - The parameters for updating the profile's configuration.  Any     properties omitted from |update| will not
             be changed.

This function returns a core.async channel of type `promise-chan` which eventually receives a result value.
Signature of the result value put on the channel is [].

In case of an error the channel closes without receiving any value and relevant error object can be obtained via
chromex.error/get-last-error.
sourceraw docstring

update-profile-configuration*cljs

(update-profile-configuration* config update)
source

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close