-{"version":3,"sources":["linkeditor.less"],"names":[],"mappings":"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","file":"linkeditor.css"}
\ No newline at end of file
+{"version":3,"sources":["linkeditor.less"],"names":[],"mappings":"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","file":"linkeditor.css"}
\ No newline at end of file
--- /dev/null
+window.$ = window.jQuery = require('jquery');
+import tippy from 'tippy.js';
+import 'tippy.js/dist/tippy.css';
+import key from 'keymaster';
+require('jquery.scrollto');
+require('jquery-contextmenu');
+
+var single = ['mobilefirst', 'portrait'].indexOf(FLUIDBOOK_DATA.settings.mobileNavigationType) >= 0;
+var pw = FLUIDBOOK_DATA.settings.width;
+var ph = FLUIDBOOK_DATA.settings.height;
+var fw = pw * (single ? 1 : 2);
+var fh = ph;
+var fs = 1;
+var mx = 0, my = 0;
+var zoom = 1;
+var zoomdragging = false;
+var dividers = [1, 2, 5, 10, 20, 50, 100, 200];
+var fluidbookRect, canvasRect, editorRect;
+var currentPage;
+var movingRuler = null;
+var rasterizePages = splitPages(FLUIDBOOK_DATA.settings.rasterizePages);
+var vectorPages = splitPages(FLUIDBOOK_DATA.settings.vectorPages);
+var unsavedChanges = false;
+var automaticSaveTimeout;
+var runningAutomaticSaveTimeout = false;
+var dimensionProperties = ['left', 'top', 'width', 'height'];
+var rulersMagnetValuesX = [];
+var rulersMagnetValuesY = [];
+var currentSelection = [];
+
+$(function () {
+ init();
+});
+
+
+function init() {
+ $(window).on('hashchange', function () {
+ changePage();
+ });
+ $(window).on('resize', function () {
+ resize();
+ });
+ $(window).on('beforeunload', function () {
+ if (unsavedChanges) {
+ return TRANSLATIONS.warning_unsaved_changes;
+ }
+ })
+ // Disable scroll by spacebar
+ $(window).on('keydown', function (e) {
+ if (e.keyCode == 32) {
+ $("#linkeditor-main").addClass('grab');
+ return false;
+ }
+ moveRuler();
+ });
+ $(window).on('keyup', function (e) {
+ if (e.keyCode == 32) {
+ resetZoomDrag();
+ }
+ moveRuler();
+ });
+
+ $("#linkeditor-canvas").on('scroll', function () {
+ updateRulers();
+ });
+ $("#linkeditor-main").on('mousedown', function (e) {
+ if ($(this).hasClass('grab') && zoom > 1) {
+ zoomdragging = {
+ x: e.pageX,
+ y: e.pageY,
+ scrollX: $("#linkeditor-canvas").scrollLeft(),
+ scrollY: $("#linkeditor-canvas").scrollTop()
+ };
+ $(this).addClass('grabbing');
+ } else {
+ resetZoomDrag();
+ }
+ deselectAllLinks();
+ });
+
+ $(document).on('mousedown', '.link', function (e) {
+ if (!e.ctrlKey) {
+ deselectAllLinks();
+ }
+ selectLink($(this));
+ });
+
+ $("#linkeditor-ruler-x").on('mousedown', function (e) {
+ addRuler('y');
+ });
+
+ $("#linkeditor-ruler-y").on('mousedown', function (e) {
+ addRuler('x');
+ });
+
+ $(document).on('mousedown', ".ruler", function (e) {
+ movingRuler = $(this);
+
+ });
+
+ $(window).on('mousemove', function (e) {
+ if (!$("#linkeditor-main").hasClass('grab') || zoom === 1) {
+ resetZoomDrag();
+ }
+ if (zoomdragging !== false) {
+ moveZoomDrag(e);
+ }
+ updateMousePosition(e);
+ });
+ $(window).on('mouseup', function (e) {
+ if (zoomdragging !== false) {
+ moveZoomDrag(e);
+ }
+ stopMoveRuler();
+ resetZoomDrag();
+ });
+ $("#linkeditor-main").on('wheel', function (e) {
+ var delta = e.originalEvent.deltaY;
+ if (delta == 0) {
+ return true;
+ }
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ if (delta < 0) {
+ if (setZoom(zoom + 0.25)) {
+ moveZoom(e);
+ }
+ } else {
+ setZoom(zoom - 0.25);
+ }
+ return false;
+ });
+
+ if (single) {
+ $("#linkeditor").addClass('single');
+ } else {
+ $("#linkeditor").addClass('double');
+ }
+ $('.linkeditor-page').css({
+ width: pw, height: ph
+ });
+ $("#linkeditor-page-right").css({left: pw})
+ $('#linkeditor-fluidbook').css({
+ width: fw, height: ph
+ });
+ initToolbar();
+ resize();
+ changePage();
+}
+
+function selectLink(l) {
+ if ($(l).find('.corners').length === 0) {
+ $(l).append('<div class="corners"><div class="nw"></div><div class="n"></div><div class="ne"></div><div class="e"></div><div class="se"></div><div class="s"></div><div class="sw"></div><div class="w"></div></div>')
+ }
+ $(l).addClass('selected');
+ currentSelection.push(l);
+}
+
+function deselectAllLinks() {
+ currentSelection = [];
+ $(".link.selected").removeClass('selected');
+}
+
+function initToolbar() {
+ $("#linkeditor-page-field input").on('change', function () {
+ changePage($(this).val());
+ $(this).blur();
+ return false;
+ });
+
+ $("#linkeditor-toolbar [data-icon]").each(function () {
+ $(this).append(getSpriteIcon('linkeditor-' + $(this).data('icon')));
+ });
+
+ $("[data-key]").each(function () {
+ var e = $(this);
+ key($(this).data('key'), function () {
+ $(e).addClass('hover');
+ runAction($(e).data('action'));
+ setTimeout(function () {
+ $(e).removeClass('hover')
+ }, 150);
+ return false;
+ });
+ });
+
+ $('[data-action]').click(function () {
+ runAction($(this).data('action'));
+ return false;
+ });
+
+ $('[data-tooltip]').each(function () {
+ tippy($(this).get(0), {content: $(this).data('tooltip')});
+ });
+}
+
+function runAction(act) {
+ eval(act+'()');
+}
+
+function saveLinks(message) {
+ if (message === undefined) {
+ message = TRANSLATIONS.manual_save_message;
+ }
+ $.ajax({
+ url: '/fluidbook-publication/' + FLUIDBOOK_DATA.id + '/save/links', method: 'post', data: {
+ _method: 'put', 'message': message, rulers: window.RULERS, links: window.LINKS,
+ }, success: function (data) {
+ new Noty({
+ type: "success", text: TRANSLATIONS.success_save,
+ }).show();
+ clearTimeout(automaticSaveTimeout);
+ unsavedChanges = false;
+ runningAutomaticSaveTimeout = false;
+ }, error: function (jqXHR, status, error) {
+ hasChanged();
+ new Noty({
+ type: "error", text: TRANSLATIONS.error_save + ' : ' + error,
+ }).show();
+ },
+ });
+}
+
+function automaticSaveLinks() {
+ saveLinks(TRANSLATIONS.automatic_save_message);
+}
+
+function firstPage() {
+ changePage(1);
+}
+
+function nextPage() {
+ changePage(currentPage + (single ? 1 : 2));
+}
+
+function previousPage() {
+ changePage(currentPage - (single ? 1 : 2));
+}
+
+function lastPage() {
+ changePage(FLUIDBOOK_DATA.settings.pages);
+}
+
+function focusPageField() {
+ var i = $("#linkeditor-page-field input").get(0);
+ i.focus();
+ i.select();
+}
+
+function zoomReset() {
+ setZoom(1);
+ resetZoomDrag();
+}
+
+function generateUID() {
+ var length = 12;
+ var result = '';
+ var characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
+ var charactersLength = characters.length;
+ for (var i = 0; i < length; i++) {
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
+ }
+ return result;
+}
+
+function addRuler(axis, pos, uid) {
+ if (undefined === uid) {
+ uid = generateUID();
+ RULERS[uid] = {page: currentPage, type: axis, uid: uid};
+ hasChanged();
+ }
+ var ruler = $('<div class="ruler" data-uid="' + uid + '" fb-ref="editor" data-axis="' + axis + '"></div>');
+ if (pos === undefined) {
+ movingRuler = ruler;
+ } else {
+ var dim = axis == 'x' ? 'left' : 'top';
+ $(ruler).attr('fb-' + dim, pos);
+ }
+ $("#linkeditor-editor").append(ruler);
+ moveRuler();
+}
+
+function deleteRuler(ruler) {
+ if (ruler === undefined) {
+ ruler = movingRuler;
+ }
+ var uid = $(ruler).data('uid');
+ delete RULERS[uid];
+ $(ruler).remove();
+ movingRuler = null;
+ hasChanged();
+}
+
+function hasChanged() {
+ unsavedChanges = true;
+ if (runningAutomaticSaveTimeout === false) {
+ runningAutomaticSaveTimeout = true;
+ automaticSaveTimeout = setTimeout(function () {
+ automaticSaveLinks();
+ }, 1000 * 5 * 60);
+ }
+}
+
+function moveRuler() {
+ if (movingRuler === null || movingRuler === undefined) {
+ return;
+ }
+ var magnet = !key.ctrl;
+ var editorMouse = globalToEditor(mx, my);
+ var fbMouse = globalToFluidbook(mx, my, false);
+ var css = {};
+ var attrs = {};
+ var v, fbv;
+ if ($(movingRuler).data('axis') === 'x') {
+ v = editorMouse.x;
+ fbv = attrs['fb-left'] = magnet ? magnetize(fbMouse.x, rulersMagnetValuesX) : fbMouse.x;
+ } else {
+ v = editorMouse.y;
+ fbv = attrs['fb-top'] = magnet ? magnetize(fbMouse.y, rulersMagnetValuesY) : fbMouse.y;
+ }
+ if (v < 16) {
+ $(movingRuler).addClass('pending-delete');
+ } else {
+ $(movingRuler).removeClass('pending-delete');
+ }
+ $(movingRuler).css(css).attr(attrs);
+ RULERS[$(movingRuler).data('uid')].pos = fbv;
+ updateFBElements();
+}
+
+function magnetize(value, values) {
+ var sensibility = 8 / (zoom * fs);
+ var min = 100000;
+ var magnetValue;
+ if (values.length === 0) {
+ return value;
+ }
+
+ for (var i in values) {
+ var v = values[i];
+ var diff = Math.abs(v - value);
+ if (diff < min) {
+ min = diff;
+ magnetValue = v;
+ }
+ }
+
+ if (min > sensibility) {
+ return value;
+ }
+ return magnetValue;
+}
+
+function getLinksOfPage(p) {
+ let pages = [];
+ if (!single) {
+ if (p % 2 === 1) {
+ p--;
+ }
+ pages.push(p);
+ pages.push(p + 1);
+ } else {
+ pages.push(p);
+ }
+ let res = {};
+ $.each(LINKS, function (uid, link) {
+ if (pages.indexOf(parseInt(link.page)) >= 0) {
+ res[uid] = link;
+ }
+ });
+ return res;
+}
+
+function updateFBElements() {
+ $('[fb-ref]').each(function () {
+ var e = $(this);
+ var rect = $(this).attr('fb-ref');
+ var css = {};
+ $.each(dimensionProperties, function (k, dim) {
+ if ($(e).is('[fb-' + dim + ']')) {
+ var v = parseFloat($(e).attr('fb-' + dim));
+ if (dim === 'width' || dim === 'height') {
+ css[dim] = v * (fs * zoom);
+ } else {
+ css[dim] = fluidbookTo(v, dim, rect);
+ }
+ }
+ });
+ $(e).css(css);
+ });
+}
+
+function fluidbookTo(dim, name, rect) {
+ switch (rect) {
+ case 'editor':
+ rect = editorRect;
+ break;
+ case 'canvas':
+ rect = canvasRect;
+ break;
+ }
+ return fluidbookToGlobal(dim, name) - rect[name];
+}
+
+function stopMoveRuler() {
+ moveRuler();
+ if ($(movingRuler).hasClass('pending-delete')) {
+ deleteRuler($(movingRuler));
+ }
+ movingRuler = null;
+}
+
+function updateMousePosition(e) {
+ mx = e.pageX;
+ my = e.pageY;
+ updateMousePositionRulers();
+ moveRuler();
+}
+
+function updateMousePositionRulers() {
+ var rulersRect = $("#linkeditor-rulers").get(0).getBoundingClientRect();
+ var rx = mx - rulersRect.x;
+ var ry = my - rulersRect.y;
+ $("#linkeditor-ruler-x .info").css('left', rx);
+ $("#linkeditor-ruler-y .info").css('top', ry);
+
+ var rrect = $("#linkeditor-rulers").get(0).getBoundingClientRect();
+
+ if (mx - rrect.x < 0 || my - rrect.y < 0 || mx - rrect.x > rrect.width || my - rrect.y > rrect.height) {
+ $("#linkeditor-rulers .info").hide();
+ return;
+ }
+
+ var fb = globalToFluidbook(mx, my, true);
+ $("#linkeditor-ruler-y .info span").text(fb.y.toFixed(2));
+ $("#linkeditor-ruler-x .info span").text(fb.x.toFixed(2));
+ $("#linkeditor-rulers .info").css('display', 'inline-block');
+}
+
+function resetZoomDrag() {
+ $("#linkeditor-main").removeClass('grab').removeClass('grabbing');
+ if (zoom === 1) {
+ $("#linkeditor-canvas").scrollTo({left: 0, top: 0});
+ }
+ zoomdragging = false;
+}
+
+function moveZoomDrag(e) {
+ var deltaX = e.pageX - zoomdragging.x;
+ var deltaY = e.pageY - zoomdragging.y;
+ $("#linkeditor-canvas").scrollTo({
+ top: zoomdragging.scrollY - deltaY, left: zoomdragging.scrollX - deltaX
+ });
+ updateRulers();
+}
+
+function moveZoom(e) {
+ var rect = $("#linkeditor-zoom").get(0).getBoundingClientRect();
+ var lx = (e.originalEvent.pageX - rect.x) / rect.width;
+ var ly = (e.originalEvent.pageY - rect.y) / rect.height;
+ $("#linkeditor-canvas").scrollTo({left: pct(lx), top: pct(ly)});
+ updateRulers();
+}
+
+function pct(v) {
+ return (v * 100) + '%';
+}
+
+function setZoom(z) {
+ z = Math.max(1, Math.min(6, z));
+ if (z === zoom) {
+ return false;
+ }
+ zoom = z;
+ $("#linkeditor-canvas").attr('data-z', zoom);
+ $("#linkeditor-zoom").css({transform: 'scale(' + zoom + ')', overflow: 'visible'});
+
+ setTimeout(function () {
+ $("#linkeditor-zoom").css({overflow: 'hidden'});
+ if (zoom === 1) {
+ resetZoomDrag();
+ }
+ updateRulers();
+
+ }, 10);
+
+ return true;
+}
+
+function changePage(page) {
+ if (page === undefined) {
+ var h = window.location.hash;
+ if (h.length === 0) {
+ page = 0;
+ } else {
+ page = window.location.hash.substring(1);
+ }
+ }
+ page = parseInt(page);
+ if (page % 2 === 1 && !single) {
+ page--;
+ }
+ var normPage = Math.max(0, Math.min(page, FLUIDBOOK_DATA.settings.pages));
+ if (normPage === currentPage) {
+ return;
+ }
+ currentPage = normPage;
+
+ window.location.hash = '#' + currentPage;
+ clearLinksAndRulers();
+ loadPage(currentPage, 'left');
+ if (!single) {
+ loadPage(currentPage + 1, 'right');
+ }
+ $("#linkeditor-page-field input").val(currentPage);
+ updateRulersMagnetValues();
+ resize();
+ preloadPages();
+}
+
+function updateRulersMagnetValues() {
+ rulersMagnetValuesX = [0, pw, pw * 2];
+ rulersMagnetValuesY = [0, ph];
+ $.each(getLinksOfPage(currentPage), function (uid, link) {
+ const left = parseFloat(link.left);
+ const top = parseFloat(link.top);
+ const width = parseFloat(link.width);
+ const height = parseFloat(link.height);
+ rulersMagnetValuesX.push(left, left + width);
+ rulersMagnetValuesY.push(top, top + height);
+ });
+}
+
+// Convert global coordinates to fluidbook ones
+function globalToFluidbook(x, y, onePage) {
+ var res = _globalTo(x, y, fluidbookRect, 1 / (fs * zoom));
+ if (onePage) {
+ res.xside = 'left';
+ if (!single && res.x >= pw) {
+ res.xside = 'right';
+ res.x -= pw;
+ }
+ }
+ return res;
+}
+
+function fluidbookToGlobal(dim, name) {
+ return fluidbookRect[name] + (dim * fs * zoom);
+}
+
+function globalToCanvas(x, y) {
+ return _globalTo(x, y, canvasRect, 1);
+}
+
+function globalToEditor(x, y) {
+ return _globalTo(x, y, editorRect, 1);
+}
+
+function _globalTo(x, y, rect, multi) {
+ return {x: multi * (x - rect.x), y: multi * (y - rect.y)};
+}
+
+function loadPage(p, side) {
+ var container = $("#linkeditor-page-" + side);
+ $(container).attr('data-page', p);
+
+ if (p === 0 || p > FLUIDBOOK_DATA.settings.pages) {
+ $(container).html('');
+ } else {
+ _loadPage(p, container);
+ }
+
+ loadLinks(p, side);
+ loadRulers(p, side);
+}
+
+function preloadPages() {
+ let j = 1;
+ for (let i = Math.max(1, currentPage - 4); i <= Math.min(currentPage + 16, FLUIDBOOK_DATA.settings.pages); i++) {
+ if ($('.preload[data-page="' + i + '"]').length >= 1) {
+ continue;
+ }
+ setTimeout(function () {
+ var c = $('<div class="preload" data-page="i"></div>');
+ $("#linkeditor-preload").append(c);
+ _loadPage(i, c);
+ }, j * 500);
+ j++;
+ }
+}
+
+function _loadPage(p, container) {
+ var imageFormat = FLUIDBOOK_DATA.settings.imageFormat;
+ var c = '<div class="contents">';
+ if (rasterizePages.indexOf(p) >= 0) {
+ c += '<img draggable="false" src="raster_' + p + '.' + imageFormat + '" />';
+ } else if (vectorPages.indexOf(p) >= 0) {
+ c += '<img draggable="false" src="vector_' + p + '.svg" />';
+ } else {
+ c += '<img draggable="false" class="images" src="images_' + p + '.' + imageFormat + '" />';
+ c += '<img draggable="false" class="texts" src="texts_' + p + '.svg" />';
+ }
+ c += '</div>';
+ $(container).html(c);
+}
+
+function loadLinks(page, side) {
+ $.each(LINKS, function (uid, link) {
+ if (link.page != page) {
+ return;
+ }
+ if (side === 'right') {
+ link.left = parseInt(link.left) + pw;
+ }
+ addLink(link, side);
+ });
+}
+
+function addLink(link) {
+ if (link.uid === undefined) {
+ link.uid = generateUID();
+ LINKS[link.uid] = link;
+ updateRulersMagnetValues();
+ hasChanged();
+ }
+
+ var attrs = {};
+ $.each(link, function (k, v) {
+ if (dimensionProperties.indexOf(k) >= 0) {
+ attrs['fb-' + k] = v;
+ } else {
+ attrs['data-' + k] = v;
+ }
+ });
+
+ var e = $('<div class="link" fb-ref="editor"></div>');
+ $(e).attr(attrs);
+ $("#linkeditor-links").append(e);
+}
+
+function clearLinksAndRulers() {
+ $('#linkeditor-editor .ruler').remove();
+}
+
+function loadRulers(page, side) {
+ $.each(RULERS, function (uid, ruler) {
+ if (ruler.page != page) {
+ return;
+ }
+ addRuler(ruler.type, ruler.pos, ruler.uid);
+ });
+}
+
+
+function resize() {
+ resizeCanvas();
+ updateRulers();
+}
+
+function updateRulers() {
+ // Update rects
+ fluidbookRect = $("#linkeditor-fluidbook").get(0).getBoundingClientRect();
+
+ $("#linkeditor-ruler-y,#linkeditor-ruler-x").html('');
+ // Measure of visible fluidbook px at current zoom
+
+ var factor = fs / zoom;
+ var visible_w = (canvasRect.width / fs) / zoom;
+ var visible_h = (canvasRect.height / fs) / zoom;
+
+ // Find the best divider to have around 10 main divisions
+ var divider = 0;
+ for (var i in dividers) {
+ divider = dividers[i];
+ var v = visible_h / divider;
+ if (v <= 10) {
+ break;
+ }
+ }
+
+ var divisionSize = divider * fs * zoom;
+ // Draw vertical ruler
+ var margin = 100;
+ var nbDivisions = Math.floor(visible_h / divider);
+ var y0 = 16 + fluidbookRect.y - canvasRect.y;
+
+ var yruler = '<div class="info"><span>1234.12</span></div>';
+ for (var y = -margin; y <= nbDivisions + (margin * 2) + 1; y++) {
+ // Draw subdivision
+ var v = divider * y;
+ var ystart = y0 + (y * divisionSize);
+ if (ystart + divisionSize < 0 || ystart > canvasRect.height) {
+ continue;
+ }
+ yruler += '<div class="division" style="top:' + ystart + 'px;height:' + divisionSize + 'px;"><div class="value">' + Math.abs(v) + '</div>';
+ for (var i = 1; i <= 9; i++) {
+ yruler += '<div class="subdivision ' + (i === 5 ? ' middle' : '') + '" style="top:' + ((i * divisionSize) / 10) + 'px;"></div>';
+ }
+ yruler += '</div>';
+ }
+ $("#linkeditor-ruler-y").html(yruler);
+
+ // Draw horizontal ruler
+ nbDivisions = Math.floor(visible_w / divider);
+ var x0 = 16 + fluidbookRect.x - canvasRect.x;
+ var xruler = '<div class="info"><span></span></div>';
+
+ for (var x = -margin; x <= nbDivisions + (margin * 2) + 1; x++) {
+ // Draw subdivision
+ var v = divider * x;
+ var xstart = x0 + (x * divisionSize);
+ if (xstart + divisionSize < 0 || xstart > canvasRect.width) {
+ continue;
+ }
+ xruler += '<div class="division" style="left:' + xstart + 'px;width:' + divisionSize + 'px;"><div class="value">' + Math.abs(v) + '</div>';
+ for (var i = 1; i <= 9; i++) {
+ var cls = '';
+ if (i === 5) {
+ cls += ' middle';
+ }
+ xruler += '<div class="subdivision ' + cls + '" style="left:' + ((i * divisionSize) / 10) + 'px;"></div>';
+ }
+ xruler += '</div>';
+ }
+ // Draw right page horizontal ruler
+ if (!single) {
+ x0 = x0 + pw * fs * zoom;
+ for (var x = 0; x <= nbDivisions + margin + 1; x++) {
+ // Draw subdivision
+ var v = divider * x;
+ var xstart = x0 + (x * divisionSize);
+ if (xstart + divisionSize < 0 || xstart > canvasRect.width) {
+ continue;
+ }
+ xruler += '<div class="division" style="left:' + xstart + 'px;width:' + divisionSize + 'px;"><div class="value">' + Math.abs(v) + '</div>';
+ for (var i = 1; i <= 9; i++) {
+ var cls = '';
+ if (i === 5) {
+ cls += ' middle';
+ }
+ xruler += '<div class="subdivision ' + cls + '" style="left:' + ((i * divisionSize) / 10) + 'px;"></div>';
+ }
+ xruler += '</div>';
+ }
+ }
+ $("#linkeditor-ruler-x").html(xruler);
+ updateFBElements()
+ updateMousePositionRulers();
+}
+
+function resizeCanvas() {
+ canvasRect = $("#linkeditor-canvas").get(0).getBoundingClientRect();
+ editorRect = $("#linkeditor-editor").get(0).getBoundingClientRect();
+ var aw = canvasRect.width - 30;
+ var ah = canvasRect.height - 30;
+ fs = Math.min(aw / fw, ah / fh);
+ var left = (canvasRect.width - fw * fs) / 2;
+ var top = (canvasRect.height - fh * fs) / 2;
+ $("#linkeditor-fluidbook").css({left: left, top: top, transform: 'scale(' + fs + ')'});
+}
+
+
+function splitPages(str) {
+ str = str.toString();
+ var res = [];
+ if (str == '') {
+ return res;
+ }
+ var pages = str.split(',');
+ for (var p in pages) {
+ res.push(parseInt(pages[p]));
+ }
+ return res;
+}