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
248 lines
8.2 KiB
JavaScript
248 lines
8.2 KiB
JavaScript
(function () {
|
|
'use strict';
|
|
|
|
svgEditor.readLang({
|
|
lang: 'lang',
|
|
dir: 'dir',
|
|
common: {
|
|
ok: 'OK',
|
|
cancel: 'Cancel',
|
|
key_backspace: 'Backspace',
|
|
key_del: 'Del',
|
|
key_down: 'Down',
|
|
key_up: 'Up',
|
|
more_opts: 'more_opts',
|
|
url: 'url',
|
|
width: 'width',
|
|
height: 'height'
|
|
},
|
|
misc: {
|
|
powered_by: 'powered_by'
|
|
},
|
|
ui: {
|
|
toggle_stroke_tools: 'toggle_stroke_tools',
|
|
palette_info: 'palette_info',
|
|
zoom_level: 'zoom_level',
|
|
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'
|
|
},
|
|
properties: {
|
|
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: "Change circle's cx coordinate",
|
|
circle_cy: "Change circle's cy coordinate",
|
|
circle_r: "Change circle's radius",
|
|
ellipse_cx: "Change ellipse's cx coordinate",
|
|
ellipse_cy: "Change ellipse's cy coordinate",
|
|
ellipse_rx: "Change ellipse's x radius",
|
|
ellipse_ry: "Change ellipse's y radius",
|
|
line_x1: "Change line's starting x coordinate",
|
|
line_x2: "Change line's ending x coordinate",
|
|
line_y1: "Change line's starting y coordinate",
|
|
line_y2: "Change line's ending y coordinate",
|
|
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: "Change node's x coordinate",
|
|
node_y: "Change node's y coordinate",
|
|
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'
|
|
},
|
|
tools: {
|
|
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'
|
|
},
|
|
layers: {
|
|
layer: 'Layer',
|
|
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'
|
|
},
|
|
config: {
|
|
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'
|
|
},
|
|
shape_cats: {
|
|
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'
|
|
},
|
|
imagelib: {
|
|
select_lib: 'select_lib',
|
|
show_list: 'show_list',
|
|
import_single: 'import_single',
|
|
import_multi: 'import_multi',
|
|
open: 'open'
|
|
},
|
|
notification: {
|
|
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',
|
|
QmoveElemsToLayer: 'Move selected elements to layer \'%s\'?',
|
|
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...',
|
|
saveFromBrowser: 'Select \'Save As...\' in your browser to save this image as a %s file.',
|
|
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'
|
|
}
|
|
});
|
|
|
|
}());
|