# Global

##

### Methods

#### getInstance( [element])

  Gets an already existing instance of WebViewer. If only one instance of WebViewer exists on the page, then 'element' is not required, and the function will return the instance of WebViewer. If more than one instance of WebViewer exists, you must pass in the DOM element containing the instance of WebViewer you want to retrieve. This function can be imported directly as a module as well.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `element` | HTMLElement | <optional> | The DOM element containing the instance of WebViewer you want to retrieve

  ##### Returns:

  Returns an instance of WebViewer. Returns null if no instances are available.
  Type
    WebViewerInstance

  ##### Example

      import { getInstance } from '@pdftron/webviewer'

      // After WebViewer has already been constructed
      const instance = getInstance();

#### WebViewer(options, viewerElement)

  A function that creates an instance of WebViewer, and embeds it on the HTML page

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | WebViewerOptions |
  `viewerElement` | HTMLElement |

  ##### Returns:

  A promise resolved with WebViewer instance.
  Type
    Promise.<WebViewerInstance>

  ##### Example

      WebViewer({
            licenseKey: 'Insert commercial license key here after purchase'
          }, document.getElementById('viewer'))
            .then(function(instance) {
              const documentViewer = instance.Core.documentViewer;
              const annotationManager = instance.Core.annotationManager;
              // call methods from instance, documentViewer and annotationManager as needed

              // you can also access major namespaces from the instances as follows:
              // const Tools = instance.Core.Tools;
              // const Annotations = instance.Core.Annotations;
            });

### Type Definitions

#### LayerContext

  ##### Type:

  - object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `obj` | string | the unique identifier of the layer. This is not defined if the layer is a label
  `name` | string | the name of the layer. It does not have not be unique
  `locked` | boolean | boolean to denote if the layer is locked for viewing. This state cannot be toggled by the user through the user interface
  `visible` | boolean | boolean to denote if the layer is visible
  `children` | Array.<LayerContext> | the layer's children (if any). This is not defined if the layer is a label.

#### LeaderPoints

  the point in viewer coordinates

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `Start` | Core.Math.Point | the start point
  `End` | Core.Math.Point | the end point

#### onDateSelected(date)

  Callback function for when a date is selected

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `date` | string | selected Date

#### PageManipulationSection

  ##### Type:

  - object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Required type of 'customPageOperation'
  `header` | string | Header to be displayed in the UI for this section
  `dataElement` | string | Unique dataElement
  `operations` | Array.<PageOperation> | the operations that will be available under this section

#### PageOperation

  ##### Type:

  - object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `title` | string | Title to be displayed for the operation
  `img` | string | path to imge to be used as an icon for the operation
  `onClick` | function | onClick handler, which takes as a parameter an array of selected page numbers
  `dataElement` | string | Unique dataElement for this operation

#### WebViewerOptions

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `path` | string |  |  | Path to the WebViewer lib folder
  `annotationUser` | string | <optional> | Guest | Name of the user for annotations
  `config` | string | <optional> |  | URL path to a custom JavaScript for customizations
  `css` | string | <optional> |  | URL path to a custom CSS file for customizations
  `disabledElements` | Array.<string> | <optional> |  | List of data-elements to be disabled in UI
  `accessibleMode` | boolean | <optional> | false | Enable accessibility features. E.g tab page selection and page text in the DOM
  `enableAnnotations` | boolean | <optional> | true | Enable annotations feature
  `enableFilePicker` | boolean | <optional> | false | Enable file picker feature
  `enableMeasurement` | boolean | <optional> | false | Enable measurement tools
  `enableRedaction` | boolean | <optional> | false | Enable redaction tool
  `extension` | string | <optional> |  | Extension of the document to be loaded
  `filename` | string | <optional> |  | The name of the file that will be used when downloading the document. The extension in the filename will be used as the document type to be loaded (e.g. myfile.docx will treat the file as docx) if no extension option is passed.
  `initialDoc` | string | <optional> |  | URL path to a document to load on startup
  `isAdminUser` | boolean | <optional> | false | Set user permission to admin
  `isReadOnly` | boolean | <optional> | false | Set user permission to read-only
  `licenseKey` | string | <optional> |  | License key for viewing documents. If not set then WebViewer will be in demo mode.
  `ui` | string | <optional> | default | Type of UI to be used. Accepts `default`|`beta`.
  `disableLogs` | boolean | <optional> | false | Disables console logs coming from WebViewer, including the version and build numbers
  `disableFlattenedAnnotations` | boolean | <optional> | false | Disables the flattened rendering of existing annotations in documents.
  `uiPath` | string | <optional> |  | Path to UI folder to use a different UI or customized UI. Default is'./ui/index.html'.
  `selectAnnotationOnCreation` | boolean | <optional> | false | If true then newly added annotations will be selected automatically
  `highContrastMode` | boolean | <optional> | false | If true then the UI will use high constrast colours to help with accessibility.

#### Search results