6.0 KiB
Introduction
SVG-edit has several options that can be overridden either by adding URL parameters or by setting the options in JavaScript (since v2.5).
Options may be divided into "config" (which is not meant to be customized via UI by the user) and "preferences" (which are meant to be customized by UI).
See the API definition of [Config]{@link module:SVGEditor.Config} for the allowable values, defaults, and uses of config.
See the API definition of [Preferences]{@link module:SVGEditor.Prefs} for their information.
A few among these options related to paths are disallowed via URL though
they can still be set by svgEditor.setConfig()
(since v2.7).
These are covered in the sections below.
One may preload a file. See "Preloading a file" below.
One may also configure stylesheets expected by the default HTML
(svgedit-custom.css
(v3.0+) or custom.css
(v2.8))).
One may also add stylesheets programmatically (since v3.0). See "Customizing stylesheets" below.
How to set the options
Setting options programmatically
Options of either type can be set using svgEditor.setConfig(options)
,
where options
is an object literal of keys and values. This must be
run before the actual page or DOM is loaded, otherwise it will have no
effect.
Note that one may create a svgedit-config-iife.js
file within the project
root directory as of v3.0 (or for v2.8, within editor/config.js
) and
add such configuration directives to it without needing to modify the
repository editor code
svgEditor.setConfig({
dimensions: [320, 240],
canvas_expansion: 5,
initFill: {
color: '0000FF'
}
});
This will set the default width/height of the image, the size of the outside canvas, and the default "fill" color.
Overwrite configuration
For programmatic config setting, one may optionally pass (another)
object to .setConfig()
as the second argument to further adjust
configuration behavior.
If an overwrite
boolean is set to false
on this additional object,
it will, as occurs with all URL type configurations, prevent the current
configuration from overwriting any explicitly set previous configurations.
The default is true
except for URLs which always are false
.
If an allowInitialUserOverride
boolean is set to true
, this will allow
subsequent configuration overwriting via URL (e.g., if you want the
user to have the option to override certain of your (svgedit-config-iife.js
)
.setConfig()
directives via URL while still providing them with
your own default value, you should add this property).
Setting options via URL
The same options from the "Setting options programmatically" section can be set in the URL as follows:
.../svg-editor.html?dimensions=300,240&canvas_expansion=5&initFill[color]=0000FF
Priority of programmatically-set config vs. URL config
If options are set both using .setConfig()
as well as in the URL, the
.setConfig()
value will be used (as of v2.7). (The reverse was true in
previous versions but was changed for security reasons.)
See section "Overwrite configuration" above on changing this behavior.
Note to developers of SVGEdit on preferences vs. configuration
Those items marked as preferences are intended to be configuration items which can also be set via the UI (and specifically via Editor Options except where mentioned). Config and preferences should therefore not share the same name.
There are, however, some items set in the UI which are currently stored as config, whereas a few "preferences" are not meant to be set by the user. A future version may adjust these types.
Preloading a file
It is possible to start the editor with preloaded SVG file, using either of the following approahces.
Preload a file (Programmatically)
One should bear in mind that if one wishes to immediately set a
particular string regardless of previous saves by the user, especially when
from the config file (svgedit-config-iife.js
in v3.0 or editor/config.js
in v2.8) which runs early, one should first set the config option
noStorageOnLoad
to true
or otherwise any
previous local storage that is found will overwrite your own string.
Bear in mind that if this option is set, the user will be prevented thereby
from saving their own text locally.
If you wish to store a one-time default and let the user subsequently save
locally, you do not need to set noStorageOnLoad
as storage will only be
set if storage is found.
// Serialized string:
svgEditor.loadFromString('<svg xmlns="...">...</svg>');
// Data URI:
svgEditor.loadFromDataURI('data:image/svg+xml;base64,...');
// Local URL:
svgEditor.loadFromURL('images/logo.svg');
Preload a file (by URL)
As a URL parameter, one can pre-load an SVG file in the following manner:
// Data URI
'?source=' + encodeURIComponent('data:image/svg+xml;utf8,' + /*...*/);
// Data URI (base 64):
'?source=' + encodeURIComponent('data:image/svg+xml;base64,' + /* ... */); // data%3Aimage%2Fsvg%2Bxml%3Bbase64%2C ...
// Local URL:
'?url=' + encodeURIComponent('images/logo.svg'); // images%2Flogo.svg
Note: There is currently a bug that prevents data URIs ending with equals (=) characters from being parsed. Removing these characters seem to allow the import to work as expected.
Customizing stylesheets
As of version 3.0, stylesheets can be indicated dynamically (and
asynchronously loaded though applied serially) via
svgEditor.setConfig({stylesheets: [...]})
.
To add your own stylesheets along with the default stylesheets, ensure
"@default"
is present in the array along with your own. For example:
svgEditor.setConfig({stylesheets: ['@default', 'myStylesheet.css']});
(In version 2.8, the CSS file editor/custom.css
was included by default,
whether the file existed or not. With version 3.0, the move was made to
be fully modular and let plugins add their default stylesheets to
$.loadingStylesheets
which SVGEdit would load dynamically, so that HTML
would not need to indicate such style-information in a non-modular fashion.)