- Breaking change: Rename config file to `svgedit-config-iife.js` (or for the module version, `svgedit-config-es.js`);
also expect one directory higher; incorporates #207 (@iuyiuy)
- Breaking change: Separate `extIconsPath` from `extPath` (not copying over icons)
- Breaking change: Don't reference `custom.css` in HTML; can instead be referenced in JavaScript through
the config file (provided in `svgedit-config-sample-iife.js`/`svgedit-config-sample-es.js` as `svgedit-custom.css` for
better namespacing); incorporates #207 (@iuyiuy)
- Breaking change: Remove minified jgraduate/spinbtn files (minified within Rollup routine)
- Fix: Zoom when scrolled; incorporates #169 (@AndrolGenhald), adapting for conventions; also allow avoidance when shift key pressed
- Fix: Update Atom feed reference in HTML
- Fixes related to recent commits: Some path and method name fixes needed, function order, missing methods, variable scope declaration, no need for DOMContentLoaded listeners in modules, switch back to non-default export, avoid trimming nullish, deal with mock tests, fix `math.matrixMultiply`, use jquery-svg where needed for array/SVG attributes; add babel-polyfill and defer script to imagelib; other misc. fixes
- Enhancement: Move config-sample.js out of `editor` directory
- Enhancement: For `callback`-style extensions, also provide config object; add following
to that object: buildCanvgCallback, canvg, decode64, encode64, executeAfterLoads, getTypeMap, isChrome, ieIE, NS, text2xml
- Enhancement: Complete ES6 modules work (extensions, locales, tests), along with Babel;
make Node build routine for converting modular source to non-modular,
use `loadStylesheets` for modular stylehsheet defining (but parallel loading);
- Enhancement: Add `stylesheets` config for modular but parallel stylesheet loading with `@default` option for simple inclusion/exclusion of defaults (if not going with default).
- Refactoring: Clean up `svg-editor.html`: consistent indents; avoid extra lbs, avoid long lines
- Refactoring: Avoid embedded API adding inline JavaScript listener
- Refactoring: Move layers and context code to `draw.js`
- Refactoring: Move `pathActions` from `svgcanvas.js` (though preserve aliases to these methods on `canvas`) and `convertPath` from `svgutils.js` to `path.js`
- Refactoring: Move `getStrokedBBox` from `svgcanvas.js` (while keeping an alias) to `svgutils.js` (as `getStrokedBBoxDefaultVisible` to avoid conflict with existing)
- Docs: Remove "dependencies" comments in code except where summarizing role of jQuery or a non-obvious dependency
- Refactoring/Linting: Enfore `no-extra-semi` and `quote-props` rules
- Refactoring: Further avoidance of quotes on properties (as possible)
- Refactoring: Use `class` in place of functions where intended as classes
- Refactoring: Consistency and granularity in extensions imports
- Testing: Update QUnit to 2.6.1 (node_modules) and Sinon to 5.0.8 (and add sinon-test at 2.1.3) and enforce eslint-plugin-qunit linting rules; update custom extensions
- Testing: Add node-static for automating (and accessing out-of-directory contents)
- Testing: Avoid HTML attributes for styling
- Testing: Add npm `test` script
- Testing: Comment out unused jQuery SVG test
- Testing: Add test1 and svgutils_performance_test to all tests page
- Testing: Due apparently to Path having not been a formal class, the test was calling it without `new`; refactored now with sufficient mock data to take into account it is a class
- npm: Update devDeps
- npm: Add html modules and config build to test script
2018-05-22 10:03:16 +00:00
import svgEditor from '../svg-editor.js' ;
2011-01-11 21:15:08 +00:00
svgEditor . readLang ( {
2018-05-20 07:04:11 +00:00
lang : 'lang' ,
dir : 'dir' ,
2018-05-18 06:23:36 +00:00
common : {
2018-05-18 03:25:45 +00:00
ok : 'OK' ,
cancel : 'Cancel' ,
key _backspace : 'Backspace' ,
key _del : 'Del' ,
key _down : 'Down' ,
key _up : 'Up' ,
2018-05-20 07:04:11 +00:00
more _opts : 'more_opts' ,
url : 'url' ,
width : 'width' ,
height : 'height'
2018-05-18 06:23:36 +00:00
} ,
misc : {
2018-05-20 07:04:11 +00:00
powered _by : 'powered_by'
2018-05-18 06:23:36 +00:00
} ,
ui : {
2018-05-20 07:04:11 +00:00
toggle _stroke _tools : 'toggle_stroke_tools' ,
palette _info : 'palette_info' ,
zoom _level : 'zoom_level' ,
2018-05-18 03:25:45 +00:00
panel _drag : 'panel_drag' ,
quality : 'Quality:' ,
pathNodeTooltip : 'Drag node to move it. Double-click node to change segment type' ,
pathCtrlPtTooltip : 'Drag control point to adjust curve properties'
2018-05-18 06:23:36 +00:00
} ,
properties : {
2018-05-20 07:04:11 +00:00
id : 'id' ,
fill _color : 'fill_color' ,
stroke _color : 'stroke_color' ,
stroke _style : 'stroke_style' ,
stroke _width : 'stroke_width' ,
pos _x : 'pos_x' ,
pos _y : 'pos_y' ,
linecap _butt : 'linecap_butt' ,
linecap _round : 'linecap_round' ,
linecap _square : 'linecap_square' ,
linejoin _bevel : 'linejoin_bevel' ,
linejoin _miter : 'linejoin_miter' ,
linejoin _round : 'linejoin_round' ,
angle : 'angle' ,
blur : 'blur' ,
opacity : 'opacity' ,
circle _cx : 'circle_cx' ,
circle _cy : 'circle_cy' ,
circle _r : 'circle_r' ,
ellipse _cx : 'ellipse_cx' ,
ellipse _cy : 'ellipse_cy' ,
ellipse _rx : 'ellipse_rx' ,
ellipse _ry : 'ellipse_ry' ,
line _x1 : 'line_x1' ,
line _x2 : 'line_x2' ,
line _y1 : 'line_y1' ,
line _y2 : 'line_y2' ,
rect _height : 'rect_height' ,
rect _width : 'rect_width' ,
corner _radius : 'corner_radius' ,
image _width : 'image_width' ,
image _height : 'image_height' ,
image _url : 'image_url' ,
node _x : 'node_x' ,
node _y : 'node_y' ,
seg _type : 'seg_type' ,
straight _segments : 'straight_segments' ,
curve _segments : 'curve_segments' ,
text _contents : 'text_contents' ,
font _family : 'font_family' ,
font _size : 'font_size' ,
bold : 'bold' ,
italic : 'italic'
2018-05-18 06:23:36 +00:00
} ,
tools : {
2018-05-20 07:04:11 +00:00
main _menu : 'main_menu' ,
bkgnd _color _opac : 'bkgnd_color_opac' ,
connector _no _arrow : 'connector_no_arrow' ,
fitToContent : 'fitToContent' ,
fit _to _all : 'fit_to_all' ,
fit _to _canvas : 'fit_to_canvas' ,
fit _to _layer _content : 'fit_to_layer_content' ,
fit _to _sel : 'fit_to_sel' ,
align _relative _to : 'align_relative_to' ,
relativeTo : 'relativeTo' ,
page : 'page' ,
largest _object : 'largest_object' ,
selected _objects : 'selected_objects' ,
smallest _object : 'smallest_object' ,
new _doc : 'new_doc' ,
open _doc : 'open_doc' ,
export _img : 'export_img' ,
save _doc : 'save_doc' ,
import _doc : 'import_doc' ,
align _to _page : 'align_to_page' ,
align _bottom : 'align_bottom' ,
align _center : 'align_center' ,
align _left : 'align_left' ,
align _middle : 'align_middle' ,
align _right : 'align_right' ,
align _top : 'align_top' ,
mode _select : 'mode_select' ,
mode _fhpath : 'mode_fhpath' ,
mode _line : 'mode_line' ,
mode _connect : 'mode_connect' ,
mode _rect : 'mode_rect' ,
mode _square : 'mode_square' ,
mode _fhrect : 'mode_fhrect' ,
mode _ellipse : 'mode_ellipse' ,
mode _circle : 'mode_circle' ,
mode _fhellipse : 'mode_fhellipse' ,
mode _path : 'mode_path' ,
mode _shapelib : 'mode_shapelib' ,
mode _text : 'mode_text' ,
mode _image : 'mode_image' ,
mode _zoom : 'mode_zoom' ,
mode _eyedropper : 'mode_eyedropper' ,
no _embed : 'no_embed' ,
undo : 'undo' ,
redo : 'redo' ,
tool _source : 'tool_source' ,
wireframe _mode : 'wireframe_mode' ,
toggle _grid : 'toggle_grid' ,
clone : 'clone' ,
del : 'del' ,
group _elements : 'group_elements' ,
make _link : 'make_link' ,
set _link _url : 'set_link_url' ,
to _path : 'to_path' ,
reorient _path : 'reorient_path' ,
ungroup : 'ungroup' ,
docprops : 'docprops' ,
imagelib : 'imagelib' ,
move _bottom : 'move_bottom' ,
move _top : 'move_top' ,
node _clone : 'node_clone' ,
node _delete : 'node_delete' ,
node _link : 'node_link' ,
add _subpath : 'add_subpath' ,
openclose _path : 'openclose_path' ,
source _save : 'source_save' ,
cut : 'cut' ,
copy : 'copy' ,
paste : 'paste' ,
paste _in _place : 'paste_in_place' ,
delete : 'delete' ,
group : 'group' ,
move _front : 'move_front' ,
move _up : 'move_up' ,
move _down : 'move_down' ,
move _back : 'move_back'
2018-05-18 06:23:36 +00:00
} ,
layers : {
2018-05-18 03:25:45 +00:00
layer : 'Layer' ,
2018-05-20 07:04:11 +00:00
layers : 'layers' ,
del : 'del' ,
move _down : 'move_down' ,
new : 'new' ,
rename : 'rename' ,
move _up : 'move_up' ,
dupe : 'dupe' ,
merge _down : 'merge_down' ,
merge _all : 'merge_all' ,
move _elems _to : 'move_elems_to' ,
move _selected : 'move_selected'
2018-05-18 06:23:36 +00:00
} ,
config : {
2018-05-20 07:04:11 +00:00
image _props : 'image_props' ,
doc _title : 'doc_title' ,
doc _dims : 'doc_dims' ,
included _images : 'included_images' ,
image _opt _embed : 'image_opt_embed' ,
image _opt _ref : 'image_opt_ref' ,
editor _prefs : 'editor_prefs' ,
icon _size : 'icon_size' ,
language : 'language' ,
background : 'background' ,
editor _img _url : 'editor_img_url' ,
editor _bg _note : 'editor_bg_note' ,
icon _large : 'icon_large' ,
icon _medium : 'icon_medium' ,
icon _small : 'icon_small' ,
icon _xlarge : 'icon_xlarge' ,
select _predefined : 'select_predefined' ,
units _and _rulers : 'units_and_rulers' ,
show _rulers : 'show_rulers' ,
base _unit : 'base_unit' ,
grid : 'grid' ,
snapping _onoff : 'snapping_onoff' ,
snapping _stepsize : 'snapping_stepsize' ,
grid _color : 'grid_color'
2018-05-18 06:23:36 +00:00
} ,
shape _cats : {
2018-05-20 07:04:11 +00:00
basic : 'basic' ,
object : 'object' ,
symbol : 'symbol' ,
arrow : 'arrow' ,
flowchart : 'flowchart' ,
animal : 'animal' ,
game : 'game' ,
dialog _balloon : 'dialog_balloon' ,
electronics : 'electronics' ,
math : 'math' ,
music : 'music' ,
misc : 'misc' ,
raphael _1 : 'raphael_1' ,
raphael _2 : 'raphael_2'
2018-05-18 06:23:36 +00:00
} ,
imagelib : {
2018-05-20 07:04:11 +00:00
select _lib : 'select_lib' ,
show _list : 'show_list' ,
import _single : 'import_single' ,
import _multi : 'import_multi' ,
open : 'open'
2018-05-18 06:23:36 +00:00
} ,
notification : {
2018-05-18 03:25:45 +00:00
invalidAttrValGiven : 'Invalid value given' ,
noContentToFitTo : 'No content to fit to' ,
dupeLayerName : 'There is already a layer named that!' ,
enterUniqueLayerName : 'Please enter a unique layer name' ,
enterNewLayerName : 'Please enter the new layer name' ,
layerHasThatName : 'Layer already has that name' ,
2018-05-20 07:04:11 +00:00
QmoveElemsToLayer : "Verplaats geselecteerde elementen naar laag '%s'?" ,
2018-05-18 03:25:45 +00:00
QwantToClear : 'Do you want to clear the drawing?\nThis will also erase your undo history!' ,
QwantToOpen : 'Do you want to open a new file?\nThis will also erase your undo history!' ,
QerrorsRevertToSource : 'There were parsing errors in your SVG source.\nRevert back to original SVG source?' ,
QignoreSourceChanges : 'Ignore changes made to SVG source?' ,
featNotSupported : 'Feature not supported' ,
enterNewImgURL : 'Enter the new image URL' ,
defsFailOnSave : 'NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.' ,
loadingImage : 'Loading image, please wait...' ,
2018-05-30 07:59:45 +00:00
saveFromBrowser : 'Select \'Save As...\' in your browser (possibly via file menu or right-click context-menu) to save this image as a %s file.' ,
2018-05-18 03:25:45 +00:00
noteTheseIssues : 'Also note the following issues: ' ,
unsavedChanges : 'There are unsaved changes.' ,
enterNewLinkURL : 'Enter the new hyperlink URL' ,
errorLoadingSVG : 'Error: Unable to load SVG data' ,
URLloadFail : 'Unable to load from URL' ,
retrieving : 'Retrieving \'%s\' ...' ,
exportNoBlur : 'Blurred elements will appear as un-blurred' ,
exportNoforeignObject : 'foreignObject elements will not appear' ,
exportNoDashArray : 'Strokes will appear filled' ,
exportNoText : 'Text may not appear as expected'
2018-05-18 06:23:36 +00:00
}
2015-12-01 11:08:16 +00:00
} ) ;