Namespace: bitbucket/feature/files/file-handlers


Provides a way to register file-handlers to handle rendering the source of a file.
For example, a FileHandler can be registered to handle .stl files and render them as 3D files.
JS files registering file-handlers should use the resource context 'bitbucket.internal.feature.files.fileHandlers'.

This module is available synchronously.

Web Resource: com.atlassian.bitbucket.server.bitbucket-web-api:file-handlers



function MyView(options) {
    var $element = $('<div/>');

    return {
        destroy: function() {
        extraClasses: 'my-class something-else'

var myFileHandler = {
    weight: 400,
    handle: function(options) {
        if (options.fileChange.path.extension === 'stl') {
            return new MyView(options);
        } else if (options.fileChange.path.extension === 'stl2') {
            // Returning a rejected promise with a message will display errors appropriately
            return $.Deferred().reject('File extension not supported');
        // Return null/undefined or an empty promise to pass silently

// Register your handler immediately to ensure it is in place when needed.
// Note that we use the synchronous syntax to require the module, which ensures there is no delay before
// register() is called.


<static, readonly> fileHandlers.builtInHandlers :string

An enum of built-in handlers that may be used to handle the display of file content. It is not an exhaustive list.
Any plugin can handle any file it wishes and may or may not provide an ID.

  • string
Name Type Default Description
ERROR string error

Generic error handler

DIRECTORY string directory

Directory handler

SOURCE_TEXT string source-text

Textual source handler

SOURCE_EMPTY string source-empty

Empty source handler

SOURCE_IMAGE string source-image

Image source handler

SOURCE_BINARY string source-binary

Non-image binary source handler

DIFF_TEXT_SIDE_BY_SIDE string diff-text-side-by-side

Textual diff handler with side-by-side display

DIFF_TEXT_UNIFIED string diff-text-unified

Textual diff handler with unified display

DIFF_EMPTY string diff-empty

Empty diff handler

DIFF_TOO_LARGE string diff-too-large

Too-large diff handler

DIFF_IMAGE string diff-image

Image diff handler

DIFF_BINARY string diff-binary

Non-image binary diff handler



<static> register(fileHandler)

Register a file handler. Call this method as soon as possible to ensure your handler is considered when a file content is loaded.

Name Type Description
fileHandler FileHandler

your file handler to register


Type Definitions

FileHandleCallback(context) → {Promise}

Callback to handle file.

Name Type Description
context bitbucket/feature/files/file-handlers.FileHandlingContext

A map of properties describing the content
to be rendered and the context in which it is to be rendered.


A promise object that resolves with FileHandlerResult if this handler will handle the request, or rejects otherwise.



An object that can either render file sources, file diffs, or both for a particular subset of files.

  • Object
Name Type Argument Default Description
weight number <optional>

The weight of handler determining the order it is tried.
The default weight of the source/diff view is 1000.

handle bitbucket/feature/files/file-handlers.FileHandleCallback

A function called to handle file content rendering.



  • Object
Name Type Argument Description
destroy function <optional>

A function that will be called before the current view is destroyed, which may happen on state change.
This is a chance to destroy/cleanup any event listeners and remove DOM elements.

extraClasses string <optional>

Additional style class applied to parent file-content. Can be used to apply background color.

handlerID string <optional>

A unique string identifying your handler (or a "sub-" handler if your handler has a few different ways
to display data). This is passed to toolbar web-fragments so they can enable or disable themselves based
on which handler is being displayed.

                                   The built-in handler IDs are listed in bitbucket/feature-files/file-handlers#builtInHandlers. Your handler
                                   should NOT use these IDs, but should instead specify a unique ID string of its own.
editing EditingContext <optional>

An object which indicates whether the current handler is editable, and if so, supplies the methods required for editing



  • Object
Name Type Argument Description
contentMode string

The mode of content. This is either 'source' or 'diff'.

$toolbar jQuery

A jQuery object pointing to the toolbar contents - any toolbar web panels can be found as descendants. (Since 3.5)

$container jQuery

A jQuery object in which you should append your rendered file content.

fileChange JSON.FileChangeJSON

Describes the changed file.

commentMode string

The comment rendering mode. "none", "read", "reply-only", or "create-new"

isExcerpt boolean

Indicates whether this is only an excerpt and not a full file/diff.

anchor *

An anchor of any type which can be used by the appropriate handler to deep link into the content

scrollStyle string <optional>

The style of scrolling to be used, "fixed" or "inline".

diffUrlBuilder function <optional>

An optional function that accepts a {JSON.FileChangeJSON} and will return
a {bitbucket/util/navbuilder.Builder} to the built-in Stash REST
endpoint to obtain the diff information.

lineComments Array.<JSON.CommentJSON> <optional>

An array of comments anchored to the lines of the file. The structure
matches the structure for comments retrieved via the REST API. This is only provided
for handling diffs as activity items for a pull request. For other usages, line comments
will be retrieved from the server when retrieving diffs.

commentUrlBuilder function <optional>

– An optional function that returns a {bitbucket/util/navbuilder.Builder} to the built-in Stash REST
endpoint to send the comment information.

diffViewType DiffViewType

the type of diff being displayed - an effective merge diff, or a common ancestor diff