function configure()
	{
		deskDomain = 'https://' + config.deskDomain + '.freshdesk.com';
		deskApiKey = config.deskApiKey;
		
		deskTypes = config.deskTypes || deskTypes;
		deskStatus = config.deskStatus || deskStatus;
		deskStatusWidth = {};

		// Precomputes text widths for custom ticket status
		var div = document.createElement('div');
		div.style.fontFamily = 'Arial,Helvetica';
		div.style.visibility = 'hidden';
		div.style.position = 'absolute';
		div.style.fontSize = '11px';
		
		document.body.appendChild(div);
		
		for (var key in deskStatus)
		{
			div.innerHTML = '';
			mxUtils.write(div, deskStatus[key]);
			deskStatusWidth[key] = div.clientWidth + 4;
		}

		document.body.removeChild(div);
	}
Freshdesk ticket plugin. Drag tickets into the diagram. Tickets are
updated on file open, page select and via Extras, Update Tickets.

Drag freshdesk tickets into the diagram. Domain must match deskDomain.freshdesk.com.

Use #C to configure the client as follows:

https://www.draw.io/?p=tickets#C%7B"ticketsConfig"%3A %7B"deskApiKey"%3A"YOUR_API_KEY"%2C"deskDomain"%3A"YOUR_DOMAIN"%7D%7D

Use an additional "open" variable in the config JSON to open a file after parsing as follows:

...#_TICKETS%7B"ticketsConfig"%3A %7B"deskApiKey"%3A"YOUR_API_KEY"%2C"deskDomain"%3A"YOUR_DOMAIN"%7D%2C"open"%3A"ID_WITH_PREFIX"%7D

Required JSON parameters:
- deskApiKey=api_key (see user profile)
- deskDomain=subdomain (subdomain.freshdesk.com)

Optional JSON parameters:
- deskStatus: Lookup for status codes (code => string)
- deskTypes: Lookup for ticket types (string => story, task, subTask, feature,
bug, techTask, epic, improvement, fault, change, access, purchase or itHelp)

The current configuration is stored in localStorage under ".tickets-config". Use
https://jgraph.github.io/drawio-tools/tools/convert.html for URI encoding.