31343 lines
1.4 MiB
31343 lines
1.4 MiB
/*!
|
||
* jQuery JavaScript Library v2.0.3
|
||
* http://jquery.com/
|
||
*
|
||
* Includes Sizzle.js
|
||
* http://sizzlejs.com/
|
||
*
|
||
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
|
||
* Released under the MIT license
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: 2013-07-03T13:30Z
|
||
*/
|
||
|
||
/*!
|
||
* Sizzle CSS Selector Engine v1.9.4-pre
|
||
* http://sizzlejs.com/
|
||
*
|
||
* Copyright 2013 jQuery Foundation, Inc. and other contributors
|
||
* Released under the MIT license
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: 2013-06-03
|
||
*/
|
||
|
||
// Underscore.js 1.5.1
|
||
// http://underscorejs.org
|
||
// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
// Underscore may be freely distributed under the MIT license.
|
||
|
||
//Copyright (C) 2012 Kory Nunn
|
||
|
||
//Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||
|
||
//The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||
|
||
/*
|
||
* Based on code from:
|
||
*
|
||
* XRegExp 1.5.0
|
||
* (c) 2007-2010 Steven Levithan
|
||
* MIT License
|
||
* <http://xregexp.com>
|
||
* Provides an augmented, extensible, cross-browser implementation of regular expressions,
|
||
* including support for additional syntax, flags, and methods
|
||
*/
|
||
|
||
// https://github.com/kriskowal/es5-shim
|
||
// Copyright 2009-2012 by contributors, MIT License
|
||
|
||
// vim:set ts=4 sts=4 sw=4 st:
|
||
// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
|
||
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
|
||
// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
|
||
// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
|
||
// -- Irakli Gozalishvili Copyright (C) 2010 MIT License
|
||
|
||
/*!
|
||
Copyright (c) 2009, 280 North Inc. http://280north.com/
|
||
MIT License. http://github.com/280north/narwhal/blob/master/README.md
|
||
*/
|
||
|
||
/* ***** BEGIN LICENSE BLOCK *****
|
||
* Distributed under the BSD license:
|
||
*
|
||
* Copyright (c) 2010, Ajax.org B.V.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
* * Redistributions of source code must retain the above copyright
|
||
* notice, this list of conditions and the following disclaimer.
|
||
* * Redistributions in binary form must reproduce the above copyright
|
||
* notice, this list of conditions and the following disclaimer in the
|
||
* documentation and/or other materials provided with the distribution.
|
||
* * Neither the name of Ajax.org B.V. nor the
|
||
* names of its contributors may be used to endorse or promote products
|
||
* derived from this software without specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
*
|
||
* ***** END LICENSE BLOCK ***** */
|
||
|
||
/*! @license
|
||
==========================================================================
|
||
SproutCore -- JavaScript Application Framework
|
||
copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a
|
||
copy of this software and associated documentation files (the "Software"),
|
||
to deal in the Software without restriction, including without limitation
|
||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||
and/or sell copies of the Software, and to permit persons to whom the
|
||
Software is furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in
|
||
all copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||
DEALINGS IN THE SOFTWARE.
|
||
|
||
SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.
|
||
|
||
For more information about SproutCore, visit http://www.sproutcore.com
|
||
|
||
|
||
==========================================================================
|
||
@license */
|
||
|
||
/* ***** BEGIN LICENSE BLOCK *****
|
||
* Distributed under the BSD license:
|
||
*
|
||
* Copyright (c) 2010, Ajax.org B.V.
|
||
* All rights reserved.
|
||
*
|
||
* Redistribution and use in source and binary forms, with or without
|
||
* modification, are permitted provided that the following conditions are met:
|
||
* * Redistributions of source code must retain the above copyright
|
||
* notice, this list of conditions and the following disclaimer.
|
||
* * Redistributions in binary form must reproduce the above copyright
|
||
* notice, this list of conditions and the following disclaimer in the
|
||
* documentation and/or other materials provided with the distribution.
|
||
* * Neither the name of Ajax.org B.V. nor the
|
||
* names of its contributors may be used to endorse or promote products
|
||
* derived from this software without specific prior written permission.
|
||
*
|
||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
*
|
||
* ***** END LICENSE BLOCK ***** */
|
||
|
||
/*
|
||
* based on code from:
|
||
*
|
||
* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
||
* Available via the MIT or new BSD license.
|
||
* see: http://github.com/jrburke/requirejs for details
|
||
*/
|
||
|
||
/*
|
||
XRegExp Unicode plugin pack: Categories 1.0
|
||
(c) 2010 Steven Levithan
|
||
MIT License
|
||
<http://xregexp.com>
|
||
Uses the Unicode 5.2 character database
|
||
|
||
This package for the XRegExp Unicode plugin enables the following Unicode categories (aka properties):
|
||
|
||
L - Letter (the top-level Letter category is included in the Unicode plugin base script)
|
||
Ll - Lowercase letter
|
||
Lu - Uppercase letter
|
||
Lt - Titlecase letter
|
||
Lm - Modifier letter
|
||
Lo - Letter without case
|
||
M - Mark
|
||
Mn - Non-spacing mark
|
||
Mc - Spacing combining mark
|
||
Me - Enclosing mark
|
||
N - Number
|
||
Nd - Decimal digit
|
||
Nl - Letter number
|
||
No - Other number
|
||
P - Punctuation
|
||
Pd - Dash punctuation
|
||
Ps - Open punctuation
|
||
Pe - Close punctuation
|
||
Pi - Initial punctuation
|
||
Pf - Final punctuation
|
||
Pc - Connector punctuation
|
||
Po - Other punctuation
|
||
S - Symbol
|
||
Sm - Math symbol
|
||
Sc - Currency symbol
|
||
Sk - Modifier symbol
|
||
So - Other symbol
|
||
Z - Separator
|
||
Zs - Space separator
|
||
Zl - Line separator
|
||
Zp - Paragraph separator
|
||
C - Other
|
||
Cc - Control
|
||
Cf - Format
|
||
Co - Private use
|
||
Cs - Surrogate
|
||
Cn - Unassigned
|
||
|
||
Example usage:
|
||
|
||
\p{N}
|
||
\p{Cn}
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp-All 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2012 MIT License
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2007-2012 MIT License
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp.build 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2012 MIT License
|
||
* Inspired by Lea Verou's RegExp.create <http://lea.verou.me/>
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp.matchRecursive 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2009-2012 MIT License
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp Unicode Base 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2008-2012 MIT License
|
||
* Uses Unicode 6.2.0 <http://unicode.org/>
|
||
* Unicode data generated by Mathias Bynens <http://mathiasbynens.be/>
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp Unicode Blocks 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2010-2012 MIT License
|
||
* Uses Unicode 6.2.0 <http://unicode.org/>
|
||
* Unicode data generated by Mathias Bynens <http://mathiasbynens.be/>
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp Unicode Categories 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2010-2012 MIT License
|
||
* Uses Unicode 6.2.0 <http://unicode.org/>
|
||
* Unicode data generated by Mathias Bynens <http://mathiasbynens.be/>
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp Unicode Properties 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2012 MIT License
|
||
* Uses Unicode 6.2.0 <http://unicode.org/>
|
||
* Unicode data generated by Mathias Bynens <http://mathiasbynens.be/>
|
||
*/
|
||
|
||
/*!
|
||
* XRegExp Unicode Scripts 3.0.0-pre
|
||
* <http://xregexp.com/>
|
||
* Steven Levithan <20> 2010-2012 MIT License
|
||
* Uses Unicode 6.2.0 <http://unicode.org/>
|
||
* Unicode data generated by Mathias Bynens <http://mathiasbynens.be/>
|
||
*/
|
||
|
||
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
|
||
|
||
/**
|
||
* @license RequireJS text 2.0.10 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved.
|
||
* Available via the MIT or new BSD license.
|
||
* see: http://github.com/requirejs/text for details
|
||
*/
|
||
|
||
/*
|
||
Copyright (c) 2010 Jeremy Faivre
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
of this software and associated documentation files (the "Software"), to deal
|
||
in the Software without restriction, including without limitation the rights
|
||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
copies of the Software, and to permit persons to whom the Software is furnished
|
||
to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in all
|
||
copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
THE SOFTWARE.
|
||
*/
|
||
|
||
// Copyright (C) 2006 Google Inc.
|
||
//
|
||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
// you may not use this file except in compliance with the License.
|
||
// You may obtain a copy of the License at
|
||
//
|
||
// http://www.apache.org/licenses/LICENSE-2.0
|
||
//
|
||
// Unless required by applicable law or agreed to in writing, software
|
||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
// See the License for the specific language governing permissions and
|
||
// limitations under the License.
|
||
|
||
/*
|
||
* to-markdown - an HTML to Markdown converter
|
||
*
|
||
* Copyright 2011-2012, Dom Christie
|
||
* Licenced under the MIT licence
|
||
*
|
||
*/
|
||
|
||
/**
|
||
* Copyright 2013 Craig Campbell
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*
|
||
* Mousetrap is a simple keyboard shortcut library for Javascript with
|
||
* no external dependencies
|
||
*
|
||
* @version 1.4.6
|
||
* @url craig.is/killing/mice
|
||
*/
|
||
|
||
/**
|
||
* jGrowl 1.2.10
|
||
*
|
||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
||
*
|
||
* Written by Stan Lemon <stosh1985@gmail.com>
|
||
* Last updated: 2013.02.14
|
||
*
|
||
* jGrowl is a jQuery plugin implementing unobtrusive userland notifications. These
|
||
* notifications function similarly to the Growl Framework available for
|
||
* Mac OS X (http://growl.info).
|
||
*
|
||
* To Do:
|
||
* - Move library settings to containers and allow them to be changed per container
|
||
*
|
||
* Changes in 1.2.10
|
||
* - Fix beforeClose to be called in click event
|
||
*
|
||
* Changes in 1.2.9
|
||
* - Fixed BC break in jQuery 2.0 beta
|
||
*
|
||
* Changes in 1.2.8
|
||
* - Fixes for jQuery 1.9 and the MSIE6 check, note that with jQuery 2.0 support
|
||
* jGrowl intends to drop support for IE6 altogether
|
||
*
|
||
* Changes in 1.2.6
|
||
* - Fixed js error when a notification is opening and closing at the same time
|
||
*
|
||
* Changes in 1.2.5
|
||
* - Changed wrapper jGrowl's options usage to "o" instead of $.jGrowl.defaults
|
||
* - Added themeState option to control 'highlight' or 'error' for jQuery UI
|
||
* - Ammended some CSS to provide default positioning for nested usage.
|
||
* - Changed some CSS to be prefixed with jGrowl- to prevent namespacing issues
|
||
* - Added two new options - openDuration and closeDuration to allow
|
||
* better control of notification open and close speeds, respectively
|
||
* Patch contributed by Jesse Vincet.
|
||
* - Added afterOpen callback. Patch contributed by Russel Branca.
|
||
*
|
||
* Changes in 1.2.4
|
||
* - Fixed IE bug with the close-all button
|
||
* - Fixed IE bug with the filter CSS attribute (special thanks to gotwic)
|
||
* - Update IE opacity CSS
|
||
* - Changed font sizes to use "em", and only set the base style
|
||
*
|
||
* Changes in 1.2.3
|
||
* - The callbacks no longer use the container as context, instead they use the actual notification
|
||
* - The callbacks now receive the container as a parameter after the options parameter
|
||
* - beforeOpen and beforeClose now check the return value, if it's false - the notification does
|
||
* not continue. The open callback will also halt execution if it returns false.
|
||
* - Fixed bug where containers would get confused
|
||
* - Expanded the pause functionality to pause an entire container.
|
||
*
|
||
* Changes in 1.2.2
|
||
* - Notification can now be theme rolled for jQuery UI, special thanks to Jeff Chan!
|
||
*
|
||
* Changes in 1.2.1
|
||
* - Fixed instance where the interval would fire the close method multiple times.
|
||
* - Added CSS to hide from print media
|
||
* - Fixed issue with closer button when div { position: relative } is set
|
||
* - Fixed leaking issue with multiple containers. Special thanks to Matthew Hanlon!
|
||
*
|
||
* Changes in 1.2.0
|
||
* - Added message pooling to limit the number of messages appearing at a given time.
|
||
* - Closing a notification is now bound to the notification object and triggered by the close button.
|
||
*
|
||
* Changes in 1.1.2
|
||
* - Added iPhone styled example
|
||
* - Fixed possible IE7 bug when determining if the ie6 class shoudl be applied.
|
||
* - Added template for the close button, so that it's content could be customized.
|
||
*
|
||
* Changes in 1.1.1
|
||
* - Fixed CSS styling bug for ie6 caused by a mispelling
|
||
* - Changes height restriction on default notifications to min-height
|
||
* - Added skinned examples using a variety of images
|
||
* - Added the ability to customize the content of the [close all] box
|
||
* - Added jTweet, an example of using jGrowl + Twitter
|
||
*
|
||
* Changes in 1.1.0
|
||
* - Multiple container and instances.
|
||
* - Standard $.jGrowl() now wraps $.fn.jGrowl() by first establishing a generic jGrowl container.
|
||
* - Instance methods of a jGrowl container can be called by $.fn.jGrowl(methodName)
|
||
* - Added glue preferenced, which allows notifications to be inserted before or after nodes in the container
|
||
* - Added new log callback which is called before anything is done for the notification
|
||
* - Corner's attribute are now applied on an individual notification basis.
|
||
*
|
||
* Changes in 1.0.4
|
||
* - Various CSS fixes so that jGrowl renders correctly in IE6.
|
||
*
|
||
* Changes in 1.0.3
|
||
* - Fixed bug with options persisting across notifications
|
||
* - Fixed theme application bug
|
||
* - Simplified some selectors and manipulations.
|
||
* - Added beforeOpen and beforeClose callbacks
|
||
* - Reorganized some lines of code to be more readable
|
||
* - Removed unnecessary this.defaults context
|
||
* - If corners plugin is present, it's now customizable.
|
||
* - Customizable open animation.
|
||
* - Customizable close animation.
|
||
* - Customizable animation easing.
|
||
* - Added customizable positioning (top-left, top-right, bottom-left, bottom-right, center)
|
||
*
|
||
* Changes in 1.0.2
|
||
* - All CSS styling is now external.
|
||
* - Added a theme parameter which specifies a secondary class for styling, such
|
||
* that notifications can be customized in appearance on a per message basis.
|
||
* - Notification life span is now customizable on a per message basis.
|
||
* - Added the ability to disable the global closer, enabled by default.
|
||
* - Added callbacks for when a notification is opened or closed.
|
||
* - Added callback for the global closer.
|
||
* - Customizable animation speed.
|
||
* - jGrowl now set itself up and tears itself down.
|
||
*
|
||
* Changes in 1.0.1:
|
||
* - Removed dependency on metadata plugin in favor of .data()
|
||
* - Namespaced all events
|
||
*/
|
||
|
||
/**
|
||
* bootstrap.js v3.0.0 by @fat and @mdo
|
||
* Copyright 2013 Twitter Inc.
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*/
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: transition.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#transitions
|
||
* ========================================================================
|
||
* Copyright 2013 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: alert.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#alerts
|
||
* ========================================================================
|
||
* Copyright 2013 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: button.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#buttons
|
||
* ========================================================================
|
||
* Copyright 2013 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: carousel.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#carousel
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: collapse.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#collapse
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: dropdown.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#dropdowns
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: modal.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#modals
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: tooltip.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#tooltip
|
||
* Inspired by the original jQuery.tipsy by Jason Frame
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: popover.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#popovers
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: scrollspy.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#scrollspy
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: tab.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#tabs
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ========================================================================
|
||
* Bootstrap: affix.js v3.0.0
|
||
* http://twbs.github.com/bootstrap/javascript.html#affix
|
||
* ========================================================================
|
||
* Copyright 2012 Twitter, Inc.
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
* ======================================================================== */
|
||
|
||
/* ===========================================================
|
||
# bootstrap-tour - v0.7.1
|
||
# http://bootstraptour.com
|
||
# ==============================================================
|
||
# Copyright 2012-2013 Ulrich Sossou
|
||
#
|
||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
# You may obtain a copy of the License at
|
||
#
|
||
# http://www.apache.org/licenses/LICENSE-2.0
|
||
#
|
||
# Unless required by applicable law or agreed to in writing, software
|
||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
*/
|
||
|
||
/*
|
||
* waitForImages 1.4.2
|
||
* -------------------
|
||
* Provides a callback when all images have loaded in your given selector.
|
||
* https://github.com/alexanderdickson/waitForImages
|
||
*
|
||
* Copyright (c) 2013 Alex Dickson
|
||
* Licensed under the MIT license.
|
||
*/
|
||
|
||
/*!
|
||
* jQuery UI Core 1.10.3
|
||
* http://jqueryui.com
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* http://api.jqueryui.com/category/ui-core/
|
||
*/
|
||
|
||
/*!
|
||
* jQuery UI Widget 1.10.3
|
||
* http://jqueryui.com
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* http://api.jqueryui.com/jQuery.widget/
|
||
*/
|
||
|
||
/*!
|
||
* jQuery UI Mouse 1.10.3
|
||
* http://jqueryui.com
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* http://api.jqueryui.com/mouse/
|
||
*
|
||
* Depends:
|
||
* jquery.ui.widget.js
|
||
*/
|
||
|
||
/*!
|
||
* jQuery UI Draggable 1.10.3
|
||
* http://jqueryui.com
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* http://api.jqueryui.com/draggable/
|
||
*
|
||
* Depends:
|
||
* jquery.ui.core.js
|
||
* jquery.ui.mouse.js
|
||
* jquery.ui.widget.js
|
||
*/
|
||
|
||
/*!
|
||
* jQuery UI Effects 1.10.3
|
||
* http://jqueryui.com
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* http://api.jqueryui.com/category/effects-core/
|
||
*/
|
||
|
||
/*!
|
||
* jQuery Color Animations v2.1.2
|
||
* https://github.com/jquery/jquery-color
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: Wed Jan 16 08:47:09 2013 -0600
|
||
*/
|
||
|
||
/*!
|
||
* jQuery UI Effects Slide 1.10.3
|
||
* http://jqueryui.com
|
||
*
|
||
* Copyright 2013 jQuery Foundation and other contributors
|
||
* Released under the MIT license.
|
||
* http://jquery.org/license
|
||
*
|
||
* http://api.jqueryui.com/slide-effect/
|
||
*
|
||
* Depends:
|
||
* jquery.ui.effect.js
|
||
*/
|
||
|
||
/**
|
||
* @preserve
|
||
* jquery.layout 1.3.0 - Release Candidate 30.79
|
||
* $Date: 2013-01-12 08:00:00 (Sat, 12 Jan 2013) $
|
||
* $Rev: 303007 $
|
||
*
|
||
* Copyright (c) 2013 Kevin Dalman (http://allpro.net)
|
||
* Based on work by Fabrizio Balliano (http://www.fabrizioballiano.net)
|
||
*
|
||
* Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
|
||
* and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
|
||
*
|
||
* SEE: http://layout.jquery-dev.net/LICENSE.txt
|
||
*
|
||
* Changelog: http://layout.jquery-dev.net/changelog.cfm#1.3.0.rc30.79
|
||
*
|
||
* Docs: http://layout.jquery-dev.net/documentation.html
|
||
* Tips: http://layout.jquery-dev.net/tips.html
|
||
* Help: http://groups.google.com/group/jquery-ui-layout
|
||
*/
|
||
|
||
/**
|
||
* jquery.layout.state 1.0
|
||
* $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
|
||
*
|
||
* Copyright (c) 2012
|
||
* Kevin Dalman (http://allpro.net)
|
||
*
|
||
* Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
|
||
* and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
|
||
*
|
||
* @requires: UI Layout 1.3.0.rc30.1 or higher
|
||
* @requires: $.ui.cookie (above)
|
||
*
|
||
* @see: http://groups.google.com/group/jquery-ui-layout
|
||
*/
|
||
|
||
/**
|
||
* jquery.layout.buttons 1.0
|
||
* $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $
|
||
*
|
||
* Copyright (c) 2012
|
||
* Kevin Dalman (http://allpro.net)
|
||
*
|
||
* Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
|
||
* and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
|
||
*
|
||
* @requires: UI Layout 1.3.0.rc30.1 or higher
|
||
*
|
||
* @see: http://groups.google.com/group/jquery-ui-layout
|
||
*
|
||
* Docs: [ to come ]
|
||
* Tips: [ to come ]
|
||
*/
|
||
|
||
/**
|
||
* jquery.layout.browserZoom 1.0
|
||
* $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $
|
||
*
|
||
* Copyright (c) 2012
|
||
* Kevin Dalman (http://allpro.net)
|
||
*
|
||
* Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html)
|
||
* and MIT (http://www.opensource.org/licenses/mit-license.php) licenses.
|
||
*
|
||
* @requires: UI Layout 1.3.0.rc30.1 or higher
|
||
*
|
||
* @see: http://groups.google.com/group/jquery-ui-layout
|
||
*
|
||
* TODO: Extend logic to handle other problematic zooming in browsers
|
||
* TODO: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event
|
||
*/
|
||
|
||
function printStackTrace(e) {
|
||
e = e || {
|
||
guess: !0
|
||
};
|
||
var t = e.e || null, n = !!e.guess, i = new printStackTrace.implementation(), o = i.run(t);
|
||
return n ? i.guessAnonymousFunctions(o) : o;
|
||
}
|
||
|
||
!function(e, t) {
|
||
function n(e) {
|
||
var t = e.length, n = rt.type(e);
|
||
return rt.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === n || "function" !== n && (0 === t || "number" == typeof t && t > 0 && t - 1 in e);
|
||
}
|
||
function i(e) {
|
||
var t = ft[e] = {};
|
||
return rt.each(e.match(at) || [], function(e, n) {
|
||
t[n] = !0;
|
||
}), t;
|
||
}
|
||
function o() {
|
||
Object.defineProperty(this.cache = {}, 0, {
|
||
get: function() {
|
||
return {};
|
||
}
|
||
}), this.expando = rt.expando + Math.random();
|
||
}
|
||
function r(e, n, i) {
|
||
var o;
|
||
if (i === t && 1 === e.nodeType) if (o = "data-" + n.replace(bt, "-$1").toLowerCase(),
|
||
i = e.getAttribute(o), "string" == typeof i) {
|
||
try {
|
||
i = "true" === i ? !0 : "false" === i ? !1 : "null" === i ? null : +i + "" === i ? +i : vt.test(i) ? JSON.parse(i) : i;
|
||
} catch (r) {}
|
||
gt.set(e, n, i);
|
||
} else i = t;
|
||
return i;
|
||
}
|
||
function s() {
|
||
return !0;
|
||
}
|
||
function a() {
|
||
return !1;
|
||
}
|
||
function l() {
|
||
try {
|
||
return q.activeElement;
|
||
} catch (e) {}
|
||
}
|
||
function c(e, t) {
|
||
for (;(e = e[t]) && 1 !== e.nodeType; ) ;
|
||
return e;
|
||
}
|
||
function u(e, t, n) {
|
||
if (rt.isFunction(t)) return rt.grep(e, function(e, i) {
|
||
return !!t.call(e, i, e) !== n;
|
||
});
|
||
if (t.nodeType) return rt.grep(e, function(e) {
|
||
return e === t !== n;
|
||
});
|
||
if ("string" == typeof t) {
|
||
if (Ft.test(t)) return rt.filter(t, e, n);
|
||
t = rt.filter(t, e);
|
||
}
|
||
return rt.grep(e, function(e) {
|
||
return tt.call(t, e) >= 0 !== n;
|
||
});
|
||
}
|
||
function d(e, t) {
|
||
return rt.nodeName(e, "table") && rt.nodeName(1 === t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e;
|
||
}
|
||
function h(e) {
|
||
return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e;
|
||
}
|
||
function p(e) {
|
||
var t = Ot.exec(e.type);
|
||
return t ? e.type = t[1] : e.removeAttribute("type"), e;
|
||
}
|
||
function f(e, t) {
|
||
for (var n = e.length, i = 0; n > i; i++) mt.set(e[i], "globalEval", !t || mt.get(t[i], "globalEval"));
|
||
}
|
||
function g(e, t) {
|
||
var n, i, o, r, s, a, l, c;
|
||
if (1 === t.nodeType) {
|
||
if (mt.hasData(e) && (r = mt.access(e), s = mt.set(t, r), c = r.events)) {
|
||
delete s.handle, s.events = {};
|
||
for (o in c) for (n = 0, i = c[o].length; i > n; n++) rt.event.add(t, o, c[o][n]);
|
||
}
|
||
gt.hasData(e) && (a = gt.access(e), l = rt.extend({}, a), gt.set(t, l));
|
||
}
|
||
}
|
||
function m(e, n) {
|
||
var i = e.getElementsByTagName ? e.getElementsByTagName(n || "*") : e.querySelectorAll ? e.querySelectorAll(n || "*") : [];
|
||
return n === t || n && rt.nodeName(e, n) ? rt.merge([ e ], i) : i;
|
||
}
|
||
function v(e, t) {
|
||
var n = t.nodeName.toLowerCase();
|
||
"input" === n && Nt.test(e.type) ? t.checked = e.checked : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue);
|
||
}
|
||
function b(e, t) {
|
||
if (t in e) return t;
|
||
for (var n = t.charAt(0).toUpperCase() + t.slice(1), i = t, o = Qt.length; o--; ) if (t = Qt[o] + n,
|
||
t in e) return t;
|
||
return i;
|
||
}
|
||
function y(e, t) {
|
||
return e = t || e, "none" === rt.css(e, "display") || !rt.contains(e.ownerDocument, e);
|
||
}
|
||
function w(t) {
|
||
return e.getComputedStyle(t, null);
|
||
}
|
||
function x(e, t) {
|
||
for (var n, i, o, r = [], s = 0, a = e.length; a > s; s++) i = e[s], i.style && (r[s] = mt.get(i, "olddisplay"),
|
||
n = i.style.display, t ? (r[s] || "none" !== n || (i.style.display = ""), "" === i.style.display && y(i) && (r[s] = mt.access(i, "olddisplay", A(i.nodeName)))) : r[s] || (o = y(i),
|
||
(n && "none" !== n || !o) && mt.set(i, "olddisplay", o ? n : rt.css(i, "display"))));
|
||
for (s = 0; a > s; s++) i = e[s], i.style && (t && "none" !== i.style.display && "" !== i.style.display || (i.style.display = t ? r[s] || "" : "none"));
|
||
return e;
|
||
}
|
||
function C(e, t, n) {
|
||
var i = Gt.exec(t);
|
||
return i ? Math.max(0, i[1] - (n || 0)) + (i[2] || "px") : t;
|
||
}
|
||
function E(e, t, n, i, o) {
|
||
for (var r = n === (i ? "border" : "content") ? 4 : "width" === t ? 1 : 0, s = 0; 4 > r; r += 2) "margin" === n && (s += rt.css(e, n + Jt[r], !0, o)),
|
||
i ? ("content" === n && (s -= rt.css(e, "padding" + Jt[r], !0, o)), "margin" !== n && (s -= rt.css(e, "border" + Jt[r] + "Width", !0, o))) : (s += rt.css(e, "padding" + Jt[r], !0, o),
|
||
"padding" !== n && (s += rt.css(e, "border" + Jt[r] + "Width", !0, o)));
|
||
return s;
|
||
}
|
||
function k(e, t, n) {
|
||
var i = !0, o = "width" === t ? e.offsetWidth : e.offsetHeight, r = w(e), s = rt.support.boxSizing && "border-box" === rt.css(e, "boxSizing", !1, r);
|
||
if (0 >= o || null == o) {
|
||
if (o = Ht(e, t, r), (0 > o || null == o) && (o = e.style[t]), Vt.test(o)) return o;
|
||
i = s && (rt.support.boxSizingReliable || o === e.style[t]), o = parseFloat(o) || 0;
|
||
}
|
||
return o + E(e, t, n || (s ? "border" : "content"), i, r) + "px";
|
||
}
|
||
function A(e) {
|
||
var t = q, n = Xt[e];
|
||
return n || (n = S(e, t), "none" !== n && n || (Ut = (Ut || rt("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(t.documentElement),
|
||
t = (Ut[0].contentWindow || Ut[0].contentDocument).document, t.write("<!doctype html><html><body>"),
|
||
t.close(), n = S(e, t), Ut.detach()), Xt[e] = n), n;
|
||
}
|
||
function S(e, t) {
|
||
var n = rt(t.createElement(e)).appendTo(t.body), i = rt.css(n[0], "display");
|
||
return n.remove(), i;
|
||
}
|
||
function _(e, t, n, i) {
|
||
var o;
|
||
if (rt.isArray(t)) rt.each(t, function(t, o) {
|
||
n || tn.test(e) ? i(e, o) : _(e + "[" + ("object" == typeof o ? t : "") + "]", o, n, i);
|
||
}); else if (n || "object" !== rt.type(t)) i(e, t); else for (o in t) _(e + "[" + o + "]", t[o], n, i);
|
||
}
|
||
function F(e) {
|
||
return function(t, n) {
|
||
"string" != typeof t && (n = t, t = "*");
|
||
var i, o = 0, r = t.toLowerCase().match(at) || [];
|
||
if (rt.isFunction(n)) for (;i = r[o++]; ) "+" === i[0] ? (i = i.slice(1) || "*",
|
||
(e[i] = e[i] || []).unshift(n)) : (e[i] = e[i] || []).push(n);
|
||
};
|
||
}
|
||
function T(e, t, n, i) {
|
||
function o(a) {
|
||
var l;
|
||
return r[a] = !0, rt.each(e[a] || [], function(e, a) {
|
||
var c = a(t, n, i);
|
||
return "string" != typeof c || s || r[c] ? s ? !(l = c) : void 0 : (t.dataTypes.unshift(c),
|
||
o(c), !1);
|
||
}), l;
|
||
}
|
||
var r = {}, s = e === yn;
|
||
return o(t.dataTypes[0]) || !r["*"] && o("*");
|
||
}
|
||
function D(e, n) {
|
||
var i, o, r = rt.ajaxSettings.flatOptions || {};
|
||
for (i in n) n[i] !== t && ((r[i] ? e : o || (o = {}))[i] = n[i]);
|
||
return o && rt.extend(!0, e, o), e;
|
||
}
|
||
function L(e, n, i) {
|
||
for (var o, r, s, a, l = e.contents, c = e.dataTypes; "*" === c[0]; ) c.shift(),
|
||
o === t && (o = e.mimeType || n.getResponseHeader("Content-Type"));
|
||
if (o) for (r in l) if (l[r] && l[r].test(o)) {
|
||
c.unshift(r);
|
||
break;
|
||
}
|
||
if (c[0] in i) s = c[0]; else {
|
||
for (r in i) {
|
||
if (!c[0] || e.converters[r + " " + c[0]]) {
|
||
s = r;
|
||
break;
|
||
}
|
||
a || (a = r);
|
||
}
|
||
s = s || a;
|
||
}
|
||
return s ? (s !== c[0] && c.unshift(s), i[s]) : void 0;
|
||
}
|
||
function $(e, t, n, i) {
|
||
var o, r, s, a, l, c = {}, u = e.dataTypes.slice();
|
||
if (u[1]) for (s in e.converters) c[s.toLowerCase()] = e.converters[s];
|
||
for (r = u.shift(); r; ) if (e.responseFields[r] && (n[e.responseFields[r]] = t),
|
||
!l && i && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = r, r = u.shift()) if ("*" === r) r = l; else if ("*" !== l && l !== r) {
|
||
if (s = c[l + " " + r] || c["* " + r], !s) for (o in c) if (a = o.split(" "), a[1] === r && (s = c[l + " " + a[0]] || c["* " + a[0]])) {
|
||
s === !0 ? s = c[o] : c[o] !== !0 && (r = a[0], u.unshift(a[1]));
|
||
break;
|
||
}
|
||
if (s !== !0) if (s && e["throws"]) t = s(t); else try {
|
||
t = s(t);
|
||
} catch (d) {
|
||
return {
|
||
state: "parsererror",
|
||
error: s ? d : "No conversion from " + l + " to " + r
|
||
};
|
||
}
|
||
}
|
||
return {
|
||
state: "success",
|
||
data: t
|
||
};
|
||
}
|
||
function I() {
|
||
return setTimeout(function() {
|
||
Fn = t;
|
||
}), Fn = rt.now();
|
||
}
|
||
function R(e, t, n) {
|
||
for (var i, o = (Rn[t] || []).concat(Rn["*"]), r = 0, s = o.length; s > r; r++) if (i = o[r].call(n, t, e)) return i;
|
||
}
|
||
function M(e, t, n) {
|
||
var i, o, r = 0, s = In.length, a = rt.Deferred().always(function() {
|
||
delete l.elem;
|
||
}), l = function() {
|
||
if (o) return !1;
|
||
for (var t = Fn || I(), n = Math.max(0, c.startTime + c.duration - t), i = n / c.duration || 0, r = 1 - i, s = 0, l = c.tweens.length; l > s; s++) c.tweens[s].run(r);
|
||
return a.notifyWith(e, [ c, r, n ]), 1 > r && l ? n : (a.resolveWith(e, [ c ]),
|
||
!1);
|
||
}, c = a.promise({
|
||
elem: e,
|
||
props: rt.extend({}, t),
|
||
opts: rt.extend(!0, {
|
||
specialEasing: {}
|
||
}, n),
|
||
originalProperties: t,
|
||
originalOptions: n,
|
||
startTime: Fn || I(),
|
||
duration: n.duration,
|
||
tweens: [],
|
||
createTween: function(t, n) {
|
||
var i = rt.Tween(e, c.opts, t, n, c.opts.specialEasing[t] || c.opts.easing);
|
||
return c.tweens.push(i), i;
|
||
},
|
||
stop: function(t) {
|
||
var n = 0, i = t ? c.tweens.length : 0;
|
||
if (o) return this;
|
||
for (o = !0; i > n; n++) c.tweens[n].run(1);
|
||
return t ? a.resolveWith(e, [ c, t ]) : a.rejectWith(e, [ c, t ]), this;
|
||
}
|
||
}), u = c.props;
|
||
for (N(u, c.opts.specialEasing); s > r; r++) if (i = In[r].call(c, e, u, c.opts)) return i;
|
||
return rt.map(u, R, c), rt.isFunction(c.opts.start) && c.opts.start.call(e, c),
|
||
rt.fx.timer(rt.extend(l, {
|
||
elem: e,
|
||
anim: c,
|
||
queue: c.opts.queue
|
||
})), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always);
|
||
}
|
||
function N(e, t) {
|
||
var n, i, o, r, s;
|
||
for (n in e) if (i = rt.camelCase(n), o = t[i], r = e[n], rt.isArray(r) && (o = r[1],
|
||
r = e[n] = r[0]), n !== i && (e[i] = r, delete e[n]), s = rt.cssHooks[i], s && "expand" in s) {
|
||
r = s.expand(r), delete e[i];
|
||
for (n in r) n in e || (e[n] = r[n], t[n] = o);
|
||
} else t[i] = o;
|
||
}
|
||
function B(e, n, i) {
|
||
var o, r, s, a, l, c, u = this, d = {}, h = e.style, p = e.nodeType && y(e), f = mt.get(e, "fxshow");
|
||
i.queue || (l = rt._queueHooks(e, "fx"), null == l.unqueued && (l.unqueued = 0,
|
||
c = l.empty.fire, l.empty.fire = function() {
|
||
l.unqueued || c();
|
||
}), l.unqueued++, u.always(function() {
|
||
u.always(function() {
|
||
l.unqueued--, rt.queue(e, "fx").length || l.empty.fire();
|
||
});
|
||
})), 1 === e.nodeType && ("height" in n || "width" in n) && (i.overflow = [ h.overflow, h.overflowX, h.overflowY ],
|
||
"inline" === rt.css(e, "display") && "none" === rt.css(e, "float") && (h.display = "inline-block")),
|
||
i.overflow && (h.overflow = "hidden", u.always(function() {
|
||
h.overflow = i.overflow[0], h.overflowX = i.overflow[1], h.overflowY = i.overflow[2];
|
||
}));
|
||
for (o in n) if (r = n[o], Dn.exec(r)) {
|
||
if (delete n[o], s = s || "toggle" === r, r === (p ? "hide" : "show")) {
|
||
if ("show" !== r || !f || f[o] === t) continue;
|
||
p = !0;
|
||
}
|
||
d[o] = f && f[o] || rt.style(e, o);
|
||
}
|
||
if (!rt.isEmptyObject(d)) {
|
||
f ? "hidden" in f && (p = f.hidden) : f = mt.access(e, "fxshow", {}), s && (f.hidden = !p),
|
||
p ? rt(e).show() : u.done(function() {
|
||
rt(e).hide();
|
||
}), u.done(function() {
|
||
var t;
|
||
mt.remove(e, "fxshow");
|
||
for (t in d) rt.style(e, t, d[t]);
|
||
});
|
||
for (o in d) a = R(p ? f[o] : 0, o, u), o in f || (f[o] = a.start, p && (a.end = a.start,
|
||
a.start = "width" === o || "height" === o ? 1 : 0));
|
||
}
|
||
}
|
||
function P(e, t, n, i, o) {
|
||
return new P.prototype.init(e, t, n, i, o);
|
||
}
|
||
function O(e, t) {
|
||
var n, i = {
|
||
height: e
|
||
}, o = 0;
|
||
for (t = t ? 1 : 0; 4 > o; o += 2 - t) n = Jt[o], i["margin" + n] = i["padding" + n] = e;
|
||
return t && (i.opacity = i.width = e), i;
|
||
}
|
||
function z(e) {
|
||
return rt.isWindow(e) ? e : 9 === e.nodeType && e.defaultView;
|
||
}
|
||
var j, H, U = typeof t, W = e.location, q = e.document, G = q.documentElement, V = e.jQuery, K = e.$, X = {}, Y = [], Z = "2.0.3", J = Y.concat, Q = Y.push, et = Y.slice, tt = Y.indexOf, nt = X.toString, it = X.hasOwnProperty, ot = Z.trim, rt = function(e, t) {
|
||
return new rt.fn.init(e, t, j);
|
||
}, st = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, at = /\S+/g, lt = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, ct = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, ut = /^-ms-/, dt = /-([\da-z])/gi, ht = function(e, t) {
|
||
return t.toUpperCase();
|
||
}, pt = function() {
|
||
q.removeEventListener("DOMContentLoaded", pt, !1), e.removeEventListener("load", pt, !1),
|
||
rt.ready();
|
||
};
|
||
rt.fn = rt.prototype = {
|
||
jquery: Z,
|
||
constructor: rt,
|
||
init: function(e, n, i) {
|
||
var o, r;
|
||
if (!e) return this;
|
||
if ("string" == typeof e) {
|
||
if (o = "<" === e.charAt(0) && ">" === e.charAt(e.length - 1) && e.length >= 3 ? [ null, e, null ] : lt.exec(e),
|
||
!o || !o[1] && n) return !n || n.jquery ? (n || i).find(e) : this.constructor(n).find(e);
|
||
if (o[1]) {
|
||
if (n = n instanceof rt ? n[0] : n, rt.merge(this, rt.parseHTML(o[1], n && n.nodeType ? n.ownerDocument || n : q, !0)),
|
||
ct.test(o[1]) && rt.isPlainObject(n)) for (o in n) rt.isFunction(this[o]) ? this[o](n[o]) : this.attr(o, n[o]);
|
||
return this;
|
||
}
|
||
return r = q.getElementById(o[2]), r && r.parentNode && (this.length = 1, this[0] = r),
|
||
this.context = q, this.selector = e, this;
|
||
}
|
||
return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : rt.isFunction(e) ? i.ready(e) : (e.selector !== t && (this.selector = e.selector,
|
||
this.context = e.context), rt.makeArray(e, this));
|
||
},
|
||
selector: "",
|
||
length: 0,
|
||
toArray: function() {
|
||
return et.call(this);
|
||
},
|
||
get: function(e) {
|
||
return null == e ? this.toArray() : 0 > e ? this[this.length + e] : this[e];
|
||
},
|
||
pushStack: function(e) {
|
||
var t = rt.merge(this.constructor(), e);
|
||
return t.prevObject = this, t.context = this.context, t;
|
||
},
|
||
each: function(e, t) {
|
||
return rt.each(this, e, t);
|
||
},
|
||
ready: function(e) {
|
||
return rt.ready.promise().done(e), this;
|
||
},
|
||
slice: function() {
|
||
return this.pushStack(et.apply(this, arguments));
|
||
},
|
||
first: function() {
|
||
return this.eq(0);
|
||
},
|
||
last: function() {
|
||
return this.eq(-1);
|
||
},
|
||
eq: function(e) {
|
||
var t = this.length, n = +e + (0 > e ? t : 0);
|
||
return this.pushStack(n >= 0 && t > n ? [ this[n] ] : []);
|
||
},
|
||
map: function(e) {
|
||
return this.pushStack(rt.map(this, function(t, n) {
|
||
return e.call(t, n, t);
|
||
}));
|
||
},
|
||
end: function() {
|
||
return this.prevObject || this.constructor(null);
|
||
},
|
||
push: Q,
|
||
sort: [].sort,
|
||
splice: [].splice
|
||
}, rt.fn.init.prototype = rt.fn, rt.extend = rt.fn.extend = function() {
|
||
var e, n, i, o, r, s, a = arguments[0] || {}, l = 1, c = arguments.length, u = !1;
|
||
for ("boolean" == typeof a && (u = a, a = arguments[1] || {}, l = 2), "object" == typeof a || rt.isFunction(a) || (a = {}),
|
||
c === l && (a = this, --l); c > l; l++) if (null != (e = arguments[l])) for (n in e) i = a[n],
|
||
o = e[n], a !== o && (u && o && (rt.isPlainObject(o) || (r = rt.isArray(o))) ? (r ? (r = !1,
|
||
s = i && rt.isArray(i) ? i : []) : s = i && rt.isPlainObject(i) ? i : {}, a[n] = rt.extend(u, s, o)) : o !== t && (a[n] = o));
|
||
return a;
|
||
}, rt.extend({
|
||
expando: "jQuery" + (Z + Math.random()).replace(/\D/g, ""),
|
||
noConflict: function(t) {
|
||
return e.$ === rt && (e.$ = K), t && e.jQuery === rt && (e.jQuery = V), rt;
|
||
},
|
||
isReady: !1,
|
||
readyWait: 1,
|
||
holdReady: function(e) {
|
||
e ? rt.readyWait++ : rt.ready(!0);
|
||
},
|
||
ready: function(e) {
|
||
(e === !0 ? --rt.readyWait : rt.isReady) || (rt.isReady = !0, e !== !0 && --rt.readyWait > 0 || (H.resolveWith(q, [ rt ]),
|
||
rt.fn.trigger && rt(q).trigger("ready").off("ready")));
|
||
},
|
||
isFunction: function(e) {
|
||
return "function" === rt.type(e);
|
||
},
|
||
isArray: Array.isArray,
|
||
isWindow: function(e) {
|
||
return null != e && e === e.window;
|
||
},
|
||
isNumeric: function(e) {
|
||
return !isNaN(parseFloat(e)) && isFinite(e);
|
||
},
|
||
type: function(e) {
|
||
return null == e ? String(e) : "object" == typeof e || "function" == typeof e ? X[nt.call(e)] || "object" : typeof e;
|
||
},
|
||
isPlainObject: function(e) {
|
||
if ("object" !== rt.type(e) || e.nodeType || rt.isWindow(e)) return !1;
|
||
try {
|
||
if (e.constructor && !it.call(e.constructor.prototype, "isPrototypeOf")) return !1;
|
||
} catch (t) {
|
||
return !1;
|
||
}
|
||
return !0;
|
||
},
|
||
isEmptyObject: function(e) {
|
||
var t;
|
||
for (t in e) return !1;
|
||
return !0;
|
||
},
|
||
error: function(e) {
|
||
throw new Error(e);
|
||
},
|
||
parseHTML: function(e, t, n) {
|
||
if (!e || "string" != typeof e) return null;
|
||
"boolean" == typeof t && (n = t, t = !1), t = t || q;
|
||
var i = ct.exec(e), o = !n && [];
|
||
return i ? [ t.createElement(i[1]) ] : (i = rt.buildFragment([ e ], t, o), o && rt(o).remove(),
|
||
rt.merge([], i.childNodes));
|
||
},
|
||
parseJSON: JSON.parse,
|
||
parseXML: function(e) {
|
||
var n, i;
|
||
if (!e || "string" != typeof e) return null;
|
||
try {
|
||
i = new DOMParser(), n = i.parseFromString(e, "text/xml");
|
||
} catch (o) {
|
||
n = t;
|
||
}
|
||
return (!n || n.getElementsByTagName("parsererror").length) && rt.error("Invalid XML: " + e),
|
||
n;
|
||
},
|
||
noop: function() {},
|
||
globalEval: function(e) {
|
||
var t, n = eval;
|
||
e = rt.trim(e), e && (1 === e.indexOf("use strict") ? (t = q.createElement("script"),
|
||
t.text = e, q.head.appendChild(t).parentNode.removeChild(t)) : n(e));
|
||
},
|
||
camelCase: function(e) {
|
||
return e.replace(ut, "ms-").replace(dt, ht);
|
||
},
|
||
nodeName: function(e, t) {
|
||
return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase();
|
||
},
|
||
each: function(e, t, i) {
|
||
var o, r = 0, s = e.length, a = n(e);
|
||
if (i) {
|
||
if (a) for (;s > r && (o = t.apply(e[r], i), o !== !1); r++) ; else for (r in e) if (o = t.apply(e[r], i),
|
||
o === !1) break;
|
||
} else if (a) for (;s > r && (o = t.call(e[r], r, e[r]), o !== !1); r++) ; else for (r in e) if (o = t.call(e[r], r, e[r]),
|
||
o === !1) break;
|
||
return e;
|
||
},
|
||
trim: function(e) {
|
||
return null == e ? "" : ot.call(e);
|
||
},
|
||
makeArray: function(e, t) {
|
||
var i = t || [];
|
||
return null != e && (n(Object(e)) ? rt.merge(i, "string" == typeof e ? [ e ] : e) : Q.call(i, e)),
|
||
i;
|
||
},
|
||
inArray: function(e, t, n) {
|
||
return null == t ? -1 : tt.call(t, e, n);
|
||
},
|
||
merge: function(e, n) {
|
||
var i = n.length, o = e.length, r = 0;
|
||
if ("number" == typeof i) for (;i > r; r++) e[o++] = n[r]; else for (;n[r] !== t; ) e[o++] = n[r++];
|
||
return e.length = o, e;
|
||
},
|
||
grep: function(e, t, n) {
|
||
var i, o = [], r = 0, s = e.length;
|
||
for (n = !!n; s > r; r++) i = !!t(e[r], r), n !== i && o.push(e[r]);
|
||
return o;
|
||
},
|
||
map: function(e, t, i) {
|
||
var o, r = 0, s = e.length, a = n(e), l = [];
|
||
if (a) for (;s > r; r++) o = t(e[r], r, i), null != o && (l[l.length] = o); else for (r in e) o = t(e[r], r, i),
|
||
null != o && (l[l.length] = o);
|
||
return J.apply([], l);
|
||
},
|
||
guid: 1,
|
||
proxy: function(e, n) {
|
||
var i, o, r;
|
||
return "string" == typeof n && (i = e[n], n = e, e = i), rt.isFunction(e) ? (o = et.call(arguments, 2),
|
||
r = function() {
|
||
return e.apply(n || this, o.concat(et.call(arguments)));
|
||
}, r.guid = e.guid = e.guid || rt.guid++, r) : t;
|
||
},
|
||
access: function(e, n, i, o, r, s, a) {
|
||
var l = 0, c = e.length, u = null == i;
|
||
if ("object" === rt.type(i)) {
|
||
r = !0;
|
||
for (l in i) rt.access(e, n, l, i[l], !0, s, a);
|
||
} else if (o !== t && (r = !0, rt.isFunction(o) || (a = !0), u && (a ? (n.call(e, o),
|
||
n = null) : (u = n, n = function(e, t, n) {
|
||
return u.call(rt(e), n);
|
||
})), n)) for (;c > l; l++) n(e[l], i, a ? o : o.call(e[l], l, n(e[l], i)));
|
||
return r ? e : u ? n.call(e) : c ? n(e[0], i) : s;
|
||
},
|
||
now: Date.now,
|
||
swap: function(e, t, n, i) {
|
||
var o, r, s = {};
|
||
for (r in t) s[r] = e.style[r], e.style[r] = t[r];
|
||
o = n.apply(e, i || []);
|
||
for (r in t) e.style[r] = s[r];
|
||
return o;
|
||
}
|
||
}), rt.ready.promise = function(t) {
|
||
return H || (H = rt.Deferred(), "complete" === q.readyState ? setTimeout(rt.ready) : (q.addEventListener("DOMContentLoaded", pt, !1),
|
||
e.addEventListener("load", pt, !1))), H.promise(t);
|
||
}, rt.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) {
|
||
X["[object " + t + "]"] = t.toLowerCase();
|
||
}), j = rt(q), function(e, t) {
|
||
function n(e, t, n, i) {
|
||
var o, r, s, a, l, c, u, d, f, g;
|
||
if ((t ? t.ownerDocument || t : z) !== $ && L(t), t = t || $, n = n || [], !e || "string" != typeof e) return n;
|
||
if (1 !== (a = t.nodeType) && 9 !== a) return [];
|
||
if (R && !i) {
|
||
if (o = yt.exec(e)) if (s = o[1]) {
|
||
if (9 === a) {
|
||
if (r = t.getElementById(s), !r || !r.parentNode) return n;
|
||
if (r.id === s) return n.push(r), n;
|
||
} else if (t.ownerDocument && (r = t.ownerDocument.getElementById(s)) && P(t, r) && r.id === s) return n.push(r),
|
||
n;
|
||
} else {
|
||
if (o[2]) return et.apply(n, t.getElementsByTagName(e)), n;
|
||
if ((s = o[3]) && E.getElementsByClassName && t.getElementsByClassName) return et.apply(n, t.getElementsByClassName(s)),
|
||
n;
|
||
}
|
||
if (E.qsa && (!M || !M.test(e))) {
|
||
if (d = u = O, f = t, g = 9 === a && e, 1 === a && "object" !== t.nodeName.toLowerCase()) {
|
||
for (c = h(e), (u = t.getAttribute("id")) ? d = u.replace(Ct, "\\$&") : t.setAttribute("id", d),
|
||
d = "[id='" + d + "'] ", l = c.length; l--; ) c[l] = d + p(c[l]);
|
||
f = pt.test(e) && t.parentNode || t, g = c.join(",");
|
||
}
|
||
if (g) try {
|
||
return et.apply(n, f.querySelectorAll(g)), n;
|
||
} catch (m) {} finally {
|
||
u || t.removeAttribute("id");
|
||
}
|
||
}
|
||
}
|
||
return x(e.replace(ut, "$1"), t, n, i);
|
||
}
|
||
function i() {
|
||
function e(n, i) {
|
||
return t.push(n += " ") > A.cacheLength && delete e[t.shift()], e[n] = i;
|
||
}
|
||
var t = [];
|
||
return e;
|
||
}
|
||
function o(e) {
|
||
return e[O] = !0, e;
|
||
}
|
||
function r(e) {
|
||
var t = $.createElement("div");
|
||
try {
|
||
return !!e(t);
|
||
} catch (n) {
|
||
return !1;
|
||
} finally {
|
||
t.parentNode && t.parentNode.removeChild(t), t = null;
|
||
}
|
||
}
|
||
function s(e, t) {
|
||
for (var n = e.split("|"), i = e.length; i--; ) A.attrHandle[n[i]] = t;
|
||
}
|
||
function a(e, t) {
|
||
var n = t && e, i = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || X) - (~e.sourceIndex || X);
|
||
if (i) return i;
|
||
if (n) for (;n = n.nextSibling; ) if (n === t) return -1;
|
||
return e ? 1 : -1;
|
||
}
|
||
function l(e) {
|
||
return function(t) {
|
||
var n = t.nodeName.toLowerCase();
|
||
return "input" === n && t.type === e;
|
||
};
|
||
}
|
||
function c(e) {
|
||
return function(t) {
|
||
var n = t.nodeName.toLowerCase();
|
||
return ("input" === n || "button" === n) && t.type === e;
|
||
};
|
||
}
|
||
function u(e) {
|
||
return o(function(t) {
|
||
return t = +t, o(function(n, i) {
|
||
for (var o, r = e([], n.length, t), s = r.length; s--; ) n[o = r[s]] && (n[o] = !(i[o] = n[o]));
|
||
});
|
||
});
|
||
}
|
||
function d() {}
|
||
function h(e, t) {
|
||
var i, o, r, s, a, l, c, u = W[e + " "];
|
||
if (u) return t ? 0 : u.slice(0);
|
||
for (a = e, l = [], c = A.preFilter; a; ) {
|
||
(!i || (o = dt.exec(a))) && (o && (a = a.slice(o[0].length) || a), l.push(r = [])),
|
||
i = !1, (o = ht.exec(a)) && (i = o.shift(), r.push({
|
||
value: i,
|
||
type: o[0].replace(ut, " ")
|
||
}), a = a.slice(i.length));
|
||
for (s in A.filter) !(o = vt[s].exec(a)) || c[s] && !(o = c[s](o)) || (i = o.shift(),
|
||
r.push({
|
||
value: i,
|
||
type: s,
|
||
matches: o
|
||
}), a = a.slice(i.length));
|
||
if (!i) break;
|
||
}
|
||
return t ? a.length : a ? n.error(e) : W(e, l).slice(0);
|
||
}
|
||
function p(e) {
|
||
for (var t = 0, n = e.length, i = ""; n > t; t++) i += e[t].value;
|
||
return i;
|
||
}
|
||
function f(e, t, n) {
|
||
var i = t.dir, o = n && "parentNode" === i, r = H++;
|
||
return t.first ? function(t, n, r) {
|
||
for (;t = t[i]; ) if (1 === t.nodeType || o) return e(t, n, r);
|
||
} : function(t, n, s) {
|
||
var a, l, c, u = j + " " + r;
|
||
if (s) {
|
||
for (;t = t[i]; ) if ((1 === t.nodeType || o) && e(t, n, s)) return !0;
|
||
} else for (;t = t[i]; ) if (1 === t.nodeType || o) if (c = t[O] || (t[O] = {}),
|
||
(l = c[i]) && l[0] === u) {
|
||
if ((a = l[1]) === !0 || a === k) return a === !0;
|
||
} else if (l = c[i] = [ u ], l[1] = e(t, n, s) || k, l[1] === !0) return !0;
|
||
};
|
||
}
|
||
function g(e) {
|
||
return e.length > 1 ? function(t, n, i) {
|
||
for (var o = e.length; o--; ) if (!e[o](t, n, i)) return !1;
|
||
return !0;
|
||
} : e[0];
|
||
}
|
||
function m(e, t, n, i, o) {
|
||
for (var r, s = [], a = 0, l = e.length, c = null != t; l > a; a++) (r = e[a]) && (!n || n(r, i, o)) && (s.push(r),
|
||
c && t.push(a));
|
||
return s;
|
||
}
|
||
function v(e, t, n, i, r, s) {
|
||
return i && !i[O] && (i = v(i)), r && !r[O] && (r = v(r, s)), o(function(o, s, a, l) {
|
||
var c, u, d, h = [], p = [], f = s.length, g = o || w(t || "*", a.nodeType ? [ a ] : a, []), v = !e || !o && t ? g : m(g, h, e, a, l), b = n ? r || (o ? e : f || i) ? [] : s : v;
|
||
if (n && n(v, b, a, l), i) for (c = m(b, p), i(c, [], a, l), u = c.length; u--; ) (d = c[u]) && (b[p[u]] = !(v[p[u]] = d));
|
||
if (o) {
|
||
if (r || e) {
|
||
if (r) {
|
||
for (c = [], u = b.length; u--; ) (d = b[u]) && c.push(v[u] = d);
|
||
r(null, b = [], c, l);
|
||
}
|
||
for (u = b.length; u--; ) (d = b[u]) && (c = r ? nt.call(o, d) : h[u]) > -1 && (o[c] = !(s[c] = d));
|
||
}
|
||
} else b = m(b === s ? b.splice(f, b.length) : b), r ? r(null, s, b, l) : et.apply(s, b);
|
||
});
|
||
}
|
||
function b(e) {
|
||
for (var t, n, i, o = e.length, r = A.relative[e[0].type], s = r || A.relative[" "], a = r ? 1 : 0, l = f(function(e) {
|
||
return e === t;
|
||
}, s, !0), c = f(function(e) {
|
||
return nt.call(t, e) > -1;
|
||
}, s, !0), u = [ function(e, n, i) {
|
||
return !r && (i || n !== T) || ((t = n).nodeType ? l(e, n, i) : c(e, n, i));
|
||
} ]; o > a; a++) if (n = A.relative[e[a].type]) u = [ f(g(u), n) ]; else {
|
||
if (n = A.filter[e[a].type].apply(null, e[a].matches), n[O]) {
|
||
for (i = ++a; o > i && !A.relative[e[i].type]; i++) ;
|
||
return v(a > 1 && g(u), a > 1 && p(e.slice(0, a - 1).concat({
|
||
value: " " === e[a - 2].type ? "*" : ""
|
||
})).replace(ut, "$1"), n, i > a && b(e.slice(a, i)), o > i && b(e = e.slice(i)), o > i && p(e));
|
||
}
|
||
u.push(n);
|
||
}
|
||
return g(u);
|
||
}
|
||
function y(e, t) {
|
||
var i = 0, r = t.length > 0, s = e.length > 0, a = function(o, a, l, c, u) {
|
||
var d, h, p, f = [], g = 0, v = "0", b = o && [], y = null != u, w = T, x = o || s && A.find.TAG("*", u && a.parentNode || a), C = j += null == w ? 1 : Math.random() || .1;
|
||
for (y && (T = a !== $ && a, k = i); null != (d = x[v]); v++) {
|
||
if (s && d) {
|
||
for (h = 0; p = e[h++]; ) if (p(d, a, l)) {
|
||
c.push(d);
|
||
break;
|
||
}
|
||
y && (j = C, k = ++i);
|
||
}
|
||
r && ((d = !p && d) && g--, o && b.push(d));
|
||
}
|
||
if (g += v, r && v !== g) {
|
||
for (h = 0; p = t[h++]; ) p(b, f, a, l);
|
||
if (o) {
|
||
if (g > 0) for (;v--; ) b[v] || f[v] || (f[v] = J.call(c));
|
||
f = m(f);
|
||
}
|
||
et.apply(c, f), y && !o && f.length > 0 && g + t.length > 1 && n.uniqueSort(c);
|
||
}
|
||
return y && (j = C, T = w), b;
|
||
};
|
||
return r ? o(a) : a;
|
||
}
|
||
function w(e, t, i) {
|
||
for (var o = 0, r = t.length; r > o; o++) n(e, t[o], i);
|
||
return i;
|
||
}
|
||
function x(e, t, n, i) {
|
||
var o, r, s, a, l, c = h(e);
|
||
if (!i && 1 === c.length) {
|
||
if (r = c[0] = c[0].slice(0), r.length > 2 && "ID" === (s = r[0]).type && E.getById && 9 === t.nodeType && R && A.relative[r[1].type]) {
|
||
if (t = (A.find.ID(s.matches[0].replace(Et, kt), t) || [])[0], !t) return n;
|
||
e = e.slice(r.shift().value.length);
|
||
}
|
||
for (o = vt.needsContext.test(e) ? 0 : r.length; o-- && (s = r[o], !A.relative[a = s.type]); ) if ((l = A.find[a]) && (i = l(s.matches[0].replace(Et, kt), pt.test(r[0].type) && t.parentNode || t))) {
|
||
if (r.splice(o, 1), e = i.length && p(r), !e) return et.apply(n, i), n;
|
||
break;
|
||
}
|
||
}
|
||
return F(e, c)(i, t, !R, n, pt.test(e)), n;
|
||
}
|
||
var C, E, k, A, S, _, F, T, D, L, $, I, R, M, N, B, P, O = "sizzle" + -new Date(), z = e.document, j = 0, H = 0, U = i(), W = i(), q = i(), G = !1, V = function(e, t) {
|
||
return e === t ? (G = !0, 0) : 0;
|
||
}, K = typeof t, X = 1 << 31, Y = {}.hasOwnProperty, Z = [], J = Z.pop, Q = Z.push, et = Z.push, tt = Z.slice, nt = Z.indexOf || function(e) {
|
||
for (var t = 0, n = this.length; n > t; t++) if (this[t] === e) return t;
|
||
return -1;
|
||
}, it = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", ot = "[\\x20\\t\\r\\n\\f]", st = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", at = st.replace("w", "w#"), lt = "\\[" + ot + "*(" + st + ")" + ot + "*(?:([*^$|!~]?=)" + ot + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + at + ")|)|)" + ot + "*\\]", ct = ":(" + st + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + lt.replace(3, 8) + ")*)|.*)\\)|)", ut = new RegExp("^" + ot + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ot + "+$", "g"), dt = new RegExp("^" + ot + "*," + ot + "*"), ht = new RegExp("^" + ot + "*([>+~]|" + ot + ")" + ot + "*"), pt = new RegExp(ot + "*[+~]"), ft = new RegExp("=" + ot + "*([^\\]'\"]*)" + ot + "*\\]", "g"), gt = new RegExp(ct), mt = new RegExp("^" + at + "$"), vt = {
|
||
ID: new RegExp("^#(" + st + ")"),
|
||
CLASS: new RegExp("^\\.(" + st + ")"),
|
||
TAG: new RegExp("^(" + st.replace("w", "w*") + ")"),
|
||
ATTR: new RegExp("^" + lt),
|
||
PSEUDO: new RegExp("^" + ct),
|
||
CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ot + "*(even|odd|(([+-]|)(\\d*)n|)" + ot + "*(?:([+-]|)" + ot + "*(\\d+)|))" + ot + "*\\)|)", "i"),
|
||
bool: new RegExp("^(?:" + it + ")$", "i"),
|
||
needsContext: new RegExp("^" + ot + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ot + "*((?:-\\d)?\\d*)" + ot + "*\\)|)(?=[^-]|$)", "i")
|
||
}, bt = /^[^{]+\{\s*\[native \w/, yt = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, wt = /^(?:input|select|textarea|button)$/i, xt = /^h\d$/i, Ct = /'|\\/g, Et = new RegExp("\\\\([\\da-f]{1,6}" + ot + "?|(" + ot + ")|.)", "ig"), kt = function(e, t, n) {
|
||
var i = "0x" + t - 65536;
|
||
return i !== i || n ? t : 0 > i ? String.fromCharCode(i + 65536) : String.fromCharCode(55296 | i >> 10, 56320 | 1023 & i);
|
||
};
|
||
try {
|
||
et.apply(Z = tt.call(z.childNodes), z.childNodes), Z[z.childNodes.length].nodeType;
|
||
} catch (At) {
|
||
et = {
|
||
apply: Z.length ? function(e, t) {
|
||
Q.apply(e, tt.call(t));
|
||
} : function(e, t) {
|
||
for (var n = e.length, i = 0; e[n++] = t[i++]; ) ;
|
||
e.length = n - 1;
|
||
}
|
||
};
|
||
}
|
||
_ = n.isXML = function(e) {
|
||
var t = e && (e.ownerDocument || e).documentElement;
|
||
return t ? "HTML" !== t.nodeName : !1;
|
||
}, E = n.support = {}, L = n.setDocument = function(e) {
|
||
var t = e ? e.ownerDocument || e : z, n = t.defaultView;
|
||
return t !== $ && 9 === t.nodeType && t.documentElement ? ($ = t, I = t.documentElement,
|
||
R = !_(t), n && n.attachEvent && n !== n.top && n.attachEvent("onbeforeunload", function() {
|
||
L();
|
||
}), E.attributes = r(function(e) {
|
||
return e.className = "i", !e.getAttribute("className");
|
||
}), E.getElementsByTagName = r(function(e) {
|
||
return e.appendChild(t.createComment("")), !e.getElementsByTagName("*").length;
|
||
}), E.getElementsByClassName = r(function(e) {
|
||
return e.innerHTML = "<div class='a'></div><div class='a i'></div>", e.firstChild.className = "i",
|
||
2 === e.getElementsByClassName("i").length;
|
||
}), E.getById = r(function(e) {
|
||
return I.appendChild(e).id = O, !t.getElementsByName || !t.getElementsByName(O).length;
|
||
}), E.getById ? (A.find.ID = function(e, t) {
|
||
if (typeof t.getElementById !== K && R) {
|
||
var n = t.getElementById(e);
|
||
return n && n.parentNode ? [ n ] : [];
|
||
}
|
||
}, A.filter.ID = function(e) {
|
||
var t = e.replace(Et, kt);
|
||
return function(e) {
|
||
return e.getAttribute("id") === t;
|
||
};
|
||
}) : (delete A.find.ID, A.filter.ID = function(e) {
|
||
var t = e.replace(Et, kt);
|
||
return function(e) {
|
||
var n = typeof e.getAttributeNode !== K && e.getAttributeNode("id");
|
||
return n && n.value === t;
|
||
};
|
||
}), A.find.TAG = E.getElementsByTagName ? function(e, t) {
|
||
return typeof t.getElementsByTagName !== K ? t.getElementsByTagName(e) : void 0;
|
||
} : function(e, t) {
|
||
var n, i = [], o = 0, r = t.getElementsByTagName(e);
|
||
if ("*" === e) {
|
||
for (;n = r[o++]; ) 1 === n.nodeType && i.push(n);
|
||
return i;
|
||
}
|
||
return r;
|
||
}, A.find.CLASS = E.getElementsByClassName && function(e, t) {
|
||
return typeof t.getElementsByClassName !== K && R ? t.getElementsByClassName(e) : void 0;
|
||
}, N = [], M = [], (E.qsa = bt.test(t.querySelectorAll)) && (r(function(e) {
|
||
e.innerHTML = "<select><option selected=''></option></select>", e.querySelectorAll("[selected]").length || M.push("\\[" + ot + "*(?:value|" + it + ")"),
|
||
e.querySelectorAll(":checked").length || M.push(":checked");
|
||
}), r(function(e) {
|
||
var n = t.createElement("input");
|
||
n.setAttribute("type", "hidden"), e.appendChild(n).setAttribute("t", ""), e.querySelectorAll("[t^='']").length && M.push("[*^$]=" + ot + "*(?:''|\"\")"),
|
||
e.querySelectorAll(":enabled").length || M.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"),
|
||
M.push(",.*:");
|
||
})), (E.matchesSelector = bt.test(B = I.webkitMatchesSelector || I.mozMatchesSelector || I.oMatchesSelector || I.msMatchesSelector)) && r(function(e) {
|
||
E.disconnectedMatch = B.call(e, "div"), B.call(e, "[s!='']:x"), N.push("!=", ct);
|
||
}), M = M.length && new RegExp(M.join("|")), N = N.length && new RegExp(N.join("|")),
|
||
P = bt.test(I.contains) || I.compareDocumentPosition ? function(e, t) {
|
||
var n = 9 === e.nodeType ? e.documentElement : e, i = t && t.parentNode;
|
||
return e === i || !(!i || 1 !== i.nodeType || !(n.contains ? n.contains(i) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(i)));
|
||
} : function(e, t) {
|
||
if (t) for (;t = t.parentNode; ) if (t === e) return !0;
|
||
return !1;
|
||
}, V = I.compareDocumentPosition ? function(e, n) {
|
||
if (e === n) return G = !0, 0;
|
||
var i = n.compareDocumentPosition && e.compareDocumentPosition && e.compareDocumentPosition(n);
|
||
return i ? 1 & i || !E.sortDetached && n.compareDocumentPosition(e) === i ? e === t || P(z, e) ? -1 : n === t || P(z, n) ? 1 : D ? nt.call(D, e) - nt.call(D, n) : 0 : 4 & i ? -1 : 1 : e.compareDocumentPosition ? -1 : 1;
|
||
} : function(e, n) {
|
||
var i, o = 0, r = e.parentNode, s = n.parentNode, l = [ e ], c = [ n ];
|
||
if (e === n) return G = !0, 0;
|
||
if (!r || !s) return e === t ? -1 : n === t ? 1 : r ? -1 : s ? 1 : D ? nt.call(D, e) - nt.call(D, n) : 0;
|
||
if (r === s) return a(e, n);
|
||
for (i = e; i = i.parentNode; ) l.unshift(i);
|
||
for (i = n; i = i.parentNode; ) c.unshift(i);
|
||
for (;l[o] === c[o]; ) o++;
|
||
return o ? a(l[o], c[o]) : l[o] === z ? -1 : c[o] === z ? 1 : 0;
|
||
}, t) : $;
|
||
}, n.matches = function(e, t) {
|
||
return n(e, null, null, t);
|
||
}, n.matchesSelector = function(e, t) {
|
||
if ((e.ownerDocument || e) !== $ && L(e), t = t.replace(ft, "='$1']"), !(!E.matchesSelector || !R || N && N.test(t) || M && M.test(t))) try {
|
||
var i = B.call(e, t);
|
||
if (i || E.disconnectedMatch || e.document && 11 !== e.document.nodeType) return i;
|
||
} catch (o) {}
|
||
return n(t, $, null, [ e ]).length > 0;
|
||
}, n.contains = function(e, t) {
|
||
return (e.ownerDocument || e) !== $ && L(e), P(e, t);
|
||
}, n.attr = function(e, n) {
|
||
(e.ownerDocument || e) !== $ && L(e);
|
||
var i = A.attrHandle[n.toLowerCase()], o = i && Y.call(A.attrHandle, n.toLowerCase()) ? i(e, n, !R) : t;
|
||
return o === t ? E.attributes || !R ? e.getAttribute(n) : (o = e.getAttributeNode(n)) && o.specified ? o.value : null : o;
|
||
}, n.error = function(e) {
|
||
throw new Error("Syntax error, unrecognized expression: " + e);
|
||
}, n.uniqueSort = function(e) {
|
||
var t, n = [], i = 0, o = 0;
|
||
if (G = !E.detectDuplicates, D = !E.sortStable && e.slice(0), e.sort(V), G) {
|
||
for (;t = e[o++]; ) t === e[o] && (i = n.push(o));
|
||
for (;i--; ) e.splice(n[i], 1);
|
||
}
|
||
return e;
|
||
}, S = n.getText = function(e) {
|
||
var t, n = "", i = 0, o = e.nodeType;
|
||
if (o) {
|
||
if (1 === o || 9 === o || 11 === o) {
|
||
if ("string" == typeof e.textContent) return e.textContent;
|
||
for (e = e.firstChild; e; e = e.nextSibling) n += S(e);
|
||
} else if (3 === o || 4 === o) return e.nodeValue;
|
||
} else for (;t = e[i]; i++) n += S(t);
|
||
return n;
|
||
}, A = n.selectors = {
|
||
cacheLength: 50,
|
||
createPseudo: o,
|
||
match: vt,
|
||
attrHandle: {},
|
||
find: {},
|
||
relative: {
|
||
">": {
|
||
dir: "parentNode",
|
||
first: !0
|
||
},
|
||
" ": {
|
||
dir: "parentNode"
|
||
},
|
||
"+": {
|
||
dir: "previousSibling",
|
||
first: !0
|
||
},
|
||
"~": {
|
||
dir: "previousSibling"
|
||
}
|
||
},
|
||
preFilter: {
|
||
ATTR: function(e) {
|
||
return e[1] = e[1].replace(Et, kt), e[3] = (e[4] || e[5] || "").replace(Et, kt),
|
||
"~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4);
|
||
},
|
||
CHILD: function(e) {
|
||
return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || n.error(e[0]),
|
||
e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && n.error(e[0]),
|
||
e;
|
||
},
|
||
PSEUDO: function(e) {
|
||
var n, i = !e[5] && e[2];
|
||
return vt.CHILD.test(e[0]) ? null : (e[3] && e[4] !== t ? e[2] = e[4] : i && gt.test(i) && (n = h(i, !0)) && (n = i.indexOf(")", i.length - n) - i.length) && (e[0] = e[0].slice(0, n),
|
||
e[2] = i.slice(0, n)), e.slice(0, 3));
|
||
}
|
||
},
|
||
filter: {
|
||
TAG: function(e) {
|
||
var t = e.replace(Et, kt).toLowerCase();
|
||
return "*" === e ? function() {
|
||
return !0;
|
||
} : function(e) {
|
||
return e.nodeName && e.nodeName.toLowerCase() === t;
|
||
};
|
||
},
|
||
CLASS: function(e) {
|
||
var t = U[e + " "];
|
||
return t || (t = new RegExp("(^|" + ot + ")" + e + "(" + ot + "|$)")) && U(e, function(e) {
|
||
return t.test("string" == typeof e.className && e.className || typeof e.getAttribute !== K && e.getAttribute("class") || "");
|
||
});
|
||
},
|
||
ATTR: function(e, t, i) {
|
||
return function(o) {
|
||
var r = n.attr(o, e);
|
||
return null == r ? "!=" === t : t ? (r += "", "=" === t ? r === i : "!=" === t ? r !== i : "^=" === t ? i && 0 === r.indexOf(i) : "*=" === t ? i && r.indexOf(i) > -1 : "$=" === t ? i && r.slice(-i.length) === i : "~=" === t ? (" " + r + " ").indexOf(i) > -1 : "|=" === t ? r === i || r.slice(0, i.length + 1) === i + "-" : !1) : !0;
|
||
};
|
||
},
|
||
CHILD: function(e, t, n, i, o) {
|
||
var r = "nth" !== e.slice(0, 3), s = "last" !== e.slice(-4), a = "of-type" === t;
|
||
return 1 === i && 0 === o ? function(e) {
|
||
return !!e.parentNode;
|
||
} : function(t, n, l) {
|
||
var c, u, d, h, p, f, g = r !== s ? "nextSibling" : "previousSibling", m = t.parentNode, v = a && t.nodeName.toLowerCase(), b = !l && !a;
|
||
if (m) {
|
||
if (r) {
|
||
for (;g; ) {
|
||
for (d = t; d = d[g]; ) if (a ? d.nodeName.toLowerCase() === v : 1 === d.nodeType) return !1;
|
||
f = g = "only" === e && !f && "nextSibling";
|
||
}
|
||
return !0;
|
||
}
|
||
if (f = [ s ? m.firstChild : m.lastChild ], s && b) {
|
||
for (u = m[O] || (m[O] = {}), c = u[e] || [], p = c[0] === j && c[1], h = c[0] === j && c[2],
|
||
d = p && m.childNodes[p]; d = ++p && d && d[g] || (h = p = 0) || f.pop(); ) if (1 === d.nodeType && ++h && d === t) {
|
||
u[e] = [ j, p, h ];
|
||
break;
|
||
}
|
||
} else if (b && (c = (t[O] || (t[O] = {}))[e]) && c[0] === j) h = c[1]; else for (;(d = ++p && d && d[g] || (h = p = 0) || f.pop()) && ((a ? d.nodeName.toLowerCase() !== v : 1 !== d.nodeType) || !++h || (b && ((d[O] || (d[O] = {}))[e] = [ j, h ]),
|
||
d !== t)); ) ;
|
||
return h -= o, h === i || 0 === h % i && h / i >= 0;
|
||
}
|
||
};
|
||
},
|
||
PSEUDO: function(e, t) {
|
||
var i, r = A.pseudos[e] || A.setFilters[e.toLowerCase()] || n.error("unsupported pseudo: " + e);
|
||
return r[O] ? r(t) : r.length > 1 ? (i = [ e, e, "", t ], A.setFilters.hasOwnProperty(e.toLowerCase()) ? o(function(e, n) {
|
||
for (var i, o = r(e, t), s = o.length; s--; ) i = nt.call(e, o[s]), e[i] = !(n[i] = o[s]);
|
||
}) : function(e) {
|
||
return r(e, 0, i);
|
||
}) : r;
|
||
}
|
||
},
|
||
pseudos: {
|
||
not: o(function(e) {
|
||
var t = [], n = [], i = F(e.replace(ut, "$1"));
|
||
return i[O] ? o(function(e, t, n, o) {
|
||
for (var r, s = i(e, null, o, []), a = e.length; a--; ) (r = s[a]) && (e[a] = !(t[a] = r));
|
||
}) : function(e, o, r) {
|
||
return t[0] = e, i(t, null, r, n), !n.pop();
|
||
};
|
||
}),
|
||
has: o(function(e) {
|
||
return function(t) {
|
||
return n(e, t).length > 0;
|
||
};
|
||
}),
|
||
contains: o(function(e) {
|
||
return function(t) {
|
||
return (t.textContent || t.innerText || S(t)).indexOf(e) > -1;
|
||
};
|
||
}),
|
||
lang: o(function(e) {
|
||
return mt.test(e || "") || n.error("unsupported lang: " + e), e = e.replace(Et, kt).toLowerCase(),
|
||
function(t) {
|
||
var n;
|
||
do if (n = R ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return n = n.toLowerCase(),
|
||
n === e || 0 === n.indexOf(e + "-"); while ((t = t.parentNode) && 1 === t.nodeType);
|
||
return !1;
|
||
};
|
||
}),
|
||
target: function(t) {
|
||
var n = e.location && e.location.hash;
|
||
return n && n.slice(1) === t.id;
|
||
},
|
||
root: function(e) {
|
||
return e === I;
|
||
},
|
||
focus: function(e) {
|
||
return e === $.activeElement && (!$.hasFocus || $.hasFocus()) && !!(e.type || e.href || ~e.tabIndex);
|
||
},
|
||
enabled: function(e) {
|
||
return e.disabled === !1;
|
||
},
|
||
disabled: function(e) {
|
||
return e.disabled === !0;
|
||
},
|
||
checked: function(e) {
|
||
var t = e.nodeName.toLowerCase();
|
||
return "input" === t && !!e.checked || "option" === t && !!e.selected;
|
||
},
|
||
selected: function(e) {
|
||
return e.parentNode && e.parentNode.selectedIndex, e.selected === !0;
|
||
},
|
||
empty: function(e) {
|
||
for (e = e.firstChild; e; e = e.nextSibling) if (e.nodeName > "@" || 3 === e.nodeType || 4 === e.nodeType) return !1;
|
||
return !0;
|
||
},
|
||
parent: function(e) {
|
||
return !A.pseudos.empty(e);
|
||
},
|
||
header: function(e) {
|
||
return xt.test(e.nodeName);
|
||
},
|
||
input: function(e) {
|
||
return wt.test(e.nodeName);
|
||
},
|
||
button: function(e) {
|
||
var t = e.nodeName.toLowerCase();
|
||
return "input" === t && "button" === e.type || "button" === t;
|
||
},
|
||
text: function(e) {
|
||
var t;
|
||
return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || t.toLowerCase() === e.type);
|
||
},
|
||
first: u(function() {
|
||
return [ 0 ];
|
||
}),
|
||
last: u(function(e, t) {
|
||
return [ t - 1 ];
|
||
}),
|
||
eq: u(function(e, t, n) {
|
||
return [ 0 > n ? n + t : n ];
|
||
}),
|
||
even: u(function(e, t) {
|
||
for (var n = 0; t > n; n += 2) e.push(n);
|
||
return e;
|
||
}),
|
||
odd: u(function(e, t) {
|
||
for (var n = 1; t > n; n += 2) e.push(n);
|
||
return e;
|
||
}),
|
||
lt: u(function(e, t, n) {
|
||
for (var i = 0 > n ? n + t : n; --i >= 0; ) e.push(i);
|
||
return e;
|
||
}),
|
||
gt: u(function(e, t, n) {
|
||
for (var i = 0 > n ? n + t : n; ++i < t; ) e.push(i);
|
||
return e;
|
||
})
|
||
}
|
||
}, A.pseudos.nth = A.pseudos.eq;
|
||
for (C in {
|
||
radio: !0,
|
||
checkbox: !0,
|
||
file: !0,
|
||
password: !0,
|
||
image: !0
|
||
}) A.pseudos[C] = l(C);
|
||
for (C in {
|
||
submit: !0,
|
||
reset: !0
|
||
}) A.pseudos[C] = c(C);
|
||
d.prototype = A.filters = A.pseudos, A.setFilters = new d(), F = n.compile = function(e, t) {
|
||
var n, i = [], o = [], r = q[e + " "];
|
||
if (!r) {
|
||
for (t || (t = h(e)), n = t.length; n--; ) r = b(t[n]), r[O] ? i.push(r) : o.push(r);
|
||
r = q(e, y(o, i));
|
||
}
|
||
return r;
|
||
}, E.sortStable = O.split("").sort(V).join("") === O, E.detectDuplicates = G, L(),
|
||
E.sortDetached = r(function(e) {
|
||
return 1 & e.compareDocumentPosition($.createElement("div"));
|
||
}), r(function(e) {
|
||
return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href");
|
||
}) || s("type|href|height|width", function(e, t, n) {
|
||
return n ? void 0 : e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2);
|
||
}), E.attributes && r(function(e) {
|
||
return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value");
|
||
}) || s("value", function(e, t, n) {
|
||
return n || "input" !== e.nodeName.toLowerCase() ? void 0 : e.defaultValue;
|
||
}), r(function(e) {
|
||
return null == e.getAttribute("disabled");
|
||
}) || s(it, function(e, t, n) {
|
||
var i;
|
||
return n ? void 0 : (i = e.getAttributeNode(t)) && i.specified ? i.value : e[t] === !0 ? t.toLowerCase() : null;
|
||
}), rt.find = n, rt.expr = n.selectors, rt.expr[":"] = rt.expr.pseudos, rt.unique = n.uniqueSort,
|
||
rt.text = n.getText, rt.isXMLDoc = n.isXML, rt.contains = n.contains;
|
||
}(e);
|
||
var ft = {};
|
||
rt.Callbacks = function(e) {
|
||
e = "string" == typeof e ? ft[e] || i(e) : rt.extend({}, e);
|
||
var n, o, r, s, a, l, c = [], u = !e.once && [], d = function(t) {
|
||
for (n = e.memory && t, o = !0, l = s || 0, s = 0, a = c.length, r = !0; c && a > l; l++) if (c[l].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
|
||
n = !1;
|
||
break;
|
||
}
|
||
r = !1, c && (u ? u.length && d(u.shift()) : n ? c = [] : h.disable());
|
||
}, h = {
|
||
add: function() {
|
||
if (c) {
|
||
var t = c.length;
|
||
!function i(t) {
|
||
rt.each(t, function(t, n) {
|
||
var o = rt.type(n);
|
||
"function" === o ? e.unique && h.has(n) || c.push(n) : n && n.length && "string" !== o && i(n);
|
||
});
|
||
}(arguments), r ? a = c.length : n && (s = t, d(n));
|
||
}
|
||
return this;
|
||
},
|
||
remove: function() {
|
||
return c && rt.each(arguments, function(e, t) {
|
||
for (var n; (n = rt.inArray(t, c, n)) > -1; ) c.splice(n, 1), r && (a >= n && a--,
|
||
l >= n && l--);
|
||
}), this;
|
||
},
|
||
has: function(e) {
|
||
return e ? rt.inArray(e, c) > -1 : !(!c || !c.length);
|
||
},
|
||
empty: function() {
|
||
return c = [], a = 0, this;
|
||
},
|
||
disable: function() {
|
||
return c = u = n = t, this;
|
||
},
|
||
disabled: function() {
|
||
return !c;
|
||
},
|
||
lock: function() {
|
||
return u = t, n || h.disable(), this;
|
||
},
|
||
locked: function() {
|
||
return !u;
|
||
},
|
||
fireWith: function(e, t) {
|
||
return !c || o && !u || (t = t || [], t = [ e, t.slice ? t.slice() : t ], r ? u.push(t) : d(t)),
|
||
this;
|
||
},
|
||
fire: function() {
|
||
return h.fireWith(this, arguments), this;
|
||
},
|
||
fired: function() {
|
||
return !!o;
|
||
}
|
||
};
|
||
return h;
|
||
}, rt.extend({
|
||
Deferred: function(e) {
|
||
var t = [ [ "resolve", "done", rt.Callbacks("once memory"), "resolved" ], [ "reject", "fail", rt.Callbacks("once memory"), "rejected" ], [ "notify", "progress", rt.Callbacks("memory") ] ], n = "pending", i = {
|
||
state: function() {
|
||
return n;
|
||
},
|
||
always: function() {
|
||
return o.done(arguments).fail(arguments), this;
|
||
},
|
||
then: function() {
|
||
var e = arguments;
|
||
return rt.Deferred(function(n) {
|
||
rt.each(t, function(t, r) {
|
||
var s = r[0], a = rt.isFunction(e[t]) && e[t];
|
||
o[r[1]](function() {
|
||
var e = a && a.apply(this, arguments);
|
||
e && rt.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[s + "With"](this === i ? n.promise() : this, a ? [ e ] : arguments);
|
||
});
|
||
}), e = null;
|
||
}).promise();
|
||
},
|
||
promise: function(e) {
|
||
return null != e ? rt.extend(e, i) : i;
|
||
}
|
||
}, o = {};
|
||
return i.pipe = i.then, rt.each(t, function(e, r) {
|
||
var s = r[2], a = r[3];
|
||
i[r[1]] = s.add, a && s.add(function() {
|
||
n = a;
|
||
}, t[1 ^ e][2].disable, t[2][2].lock), o[r[0]] = function() {
|
||
return o[r[0] + "With"](this === o ? i : this, arguments), this;
|
||
}, o[r[0] + "With"] = s.fireWith;
|
||
}), i.promise(o), e && e.call(o, o), o;
|
||
},
|
||
when: function(e) {
|
||
var t, n, i, o = 0, r = et.call(arguments), s = r.length, a = 1 !== s || e && rt.isFunction(e.promise) ? s : 0, l = 1 === a ? e : rt.Deferred(), c = function(e, n, i) {
|
||
return function(o) {
|
||
n[e] = this, i[e] = arguments.length > 1 ? et.call(arguments) : o, i === t ? l.notifyWith(n, i) : --a || l.resolveWith(n, i);
|
||
};
|
||
};
|
||
if (s > 1) for (t = new Array(s), n = new Array(s), i = new Array(s); s > o; o++) r[o] && rt.isFunction(r[o].promise) ? r[o].promise().done(c(o, i, r)).fail(l.reject).progress(c(o, n, t)) : --a;
|
||
return a || l.resolveWith(i, r), l.promise();
|
||
}
|
||
}), rt.support = function(t) {
|
||
var n = q.createElement("input"), i = q.createDocumentFragment(), o = q.createElement("div"), r = q.createElement("select"), s = r.appendChild(q.createElement("option"));
|
||
return n.type ? (n.type = "checkbox", t.checkOn = "" !== n.value, t.optSelected = s.selected,
|
||
t.reliableMarginRight = !0, t.boxSizingReliable = !0, t.pixelPosition = !1, n.checked = !0,
|
||
t.noCloneChecked = n.cloneNode(!0).checked, r.disabled = !0, t.optDisabled = !s.disabled,
|
||
n = q.createElement("input"), n.value = "t", n.type = "radio", t.radioValue = "t" === n.value,
|
||
n.setAttribute("checked", "t"), n.setAttribute("name", "t"), i.appendChild(n), t.checkClone = i.cloneNode(!0).cloneNode(!0).lastChild.checked,
|
||
t.focusinBubbles = "onfocusin" in e, o.style.backgroundClip = "content-box", o.cloneNode(!0).style.backgroundClip = "",
|
||
t.clearCloneStyle = "content-box" === o.style.backgroundClip, rt(function() {
|
||
var n, i, r = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box", s = q.getElementsByTagName("body")[0];
|
||
s && (n = q.createElement("div"), n.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",
|
||
s.appendChild(n).appendChild(o), o.innerHTML = "", o.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",
|
||
rt.swap(s, null != s.style.zoom ? {
|
||
zoom: 1
|
||
} : {}, function() {
|
||
t.boxSizing = 4 === o.offsetWidth;
|
||
}), e.getComputedStyle && (t.pixelPosition = "1%" !== (e.getComputedStyle(o, null) || {}).top,
|
||
t.boxSizingReliable = "4px" === (e.getComputedStyle(o, null) || {
|
||
width: "4px"
|
||
}).width, i = o.appendChild(q.createElement("div")), i.style.cssText = o.style.cssText = r,
|
||
i.style.marginRight = i.style.width = "0", o.style.width = "1px", t.reliableMarginRight = !parseFloat((e.getComputedStyle(i, null) || {}).marginRight)),
|
||
s.removeChild(n));
|
||
}), t) : t;
|
||
}({});
|
||
var gt, mt, vt = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, bt = /([A-Z])/g;
|
||
o.uid = 1, o.accepts = function(e) {
|
||
return e.nodeType ? 1 === e.nodeType || 9 === e.nodeType : !0;
|
||
}, o.prototype = {
|
||
key: function(e) {
|
||
if (!o.accepts(e)) return 0;
|
||
var t = {}, n = e[this.expando];
|
||
if (!n) {
|
||
n = o.uid++;
|
||
try {
|
||
t[this.expando] = {
|
||
value: n
|
||
}, Object.defineProperties(e, t);
|
||
} catch (i) {
|
||
t[this.expando] = n, rt.extend(e, t);
|
||
}
|
||
}
|
||
return this.cache[n] || (this.cache[n] = {}), n;
|
||
},
|
||
set: function(e, t, n) {
|
||
var i, o = this.key(e), r = this.cache[o];
|
||
if ("string" == typeof t) r[t] = n; else if (rt.isEmptyObject(r)) rt.extend(this.cache[o], t); else for (i in t) r[i] = t[i];
|
||
return r;
|
||
},
|
||
get: function(e, n) {
|
||
var i = this.cache[this.key(e)];
|
||
return n === t ? i : i[n];
|
||
},
|
||
access: function(e, n, i) {
|
||
var o;
|
||
return n === t || n && "string" == typeof n && i === t ? (o = this.get(e, n), o !== t ? o : this.get(e, rt.camelCase(n))) : (this.set(e, n, i),
|
||
i !== t ? i : n);
|
||
},
|
||
remove: function(e, n) {
|
||
var i, o, r, s = this.key(e), a = this.cache[s];
|
||
if (n === t) this.cache[s] = {}; else {
|
||
rt.isArray(n) ? o = n.concat(n.map(rt.camelCase)) : (r = rt.camelCase(n), n in a ? o = [ n, r ] : (o = r,
|
||
o = o in a ? [ o ] : o.match(at) || [])), i = o.length;
|
||
for (;i--; ) delete a[o[i]];
|
||
}
|
||
},
|
||
hasData: function(e) {
|
||
return !rt.isEmptyObject(this.cache[e[this.expando]] || {});
|
||
},
|
||
discard: function(e) {
|
||
e[this.expando] && delete this.cache[e[this.expando]];
|
||
}
|
||
}, gt = new o(), mt = new o(), rt.extend({
|
||
acceptData: o.accepts,
|
||
hasData: function(e) {
|
||
return gt.hasData(e) || mt.hasData(e);
|
||
},
|
||
data: function(e, t, n) {
|
||
return gt.access(e, t, n);
|
||
},
|
||
removeData: function(e, t) {
|
||
gt.remove(e, t);
|
||
},
|
||
_data: function(e, t, n) {
|
||
return mt.access(e, t, n);
|
||
},
|
||
_removeData: function(e, t) {
|
||
mt.remove(e, t);
|
||
}
|
||
}), rt.fn.extend({
|
||
data: function(e, n) {
|
||
var i, o, s = this[0], a = 0, l = null;
|
||
if (e === t) {
|
||
if (this.length && (l = gt.get(s), 1 === s.nodeType && !mt.get(s, "hasDataAttrs"))) {
|
||
for (i = s.attributes; a < i.length; a++) o = i[a].name, 0 === o.indexOf("data-") && (o = rt.camelCase(o.slice(5)),
|
||
r(s, o, l[o]));
|
||
mt.set(s, "hasDataAttrs", !0);
|
||
}
|
||
return l;
|
||
}
|
||
return "object" == typeof e ? this.each(function() {
|
||
gt.set(this, e);
|
||
}) : rt.access(this, function(n) {
|
||
var i, o = rt.camelCase(e);
|
||
if (s && n === t) {
|
||
if (i = gt.get(s, e), i !== t) return i;
|
||
if (i = gt.get(s, o), i !== t) return i;
|
||
if (i = r(s, o, t), i !== t) return i;
|
||
} else this.each(function() {
|
||
var i = gt.get(this, o);
|
||
gt.set(this, o, n), -1 !== e.indexOf("-") && i !== t && gt.set(this, e, n);
|
||
});
|
||
}, null, n, arguments.length > 1, null, !0);
|
||
},
|
||
removeData: function(e) {
|
||
return this.each(function() {
|
||
gt.remove(this, e);
|
||
});
|
||
}
|
||
}), rt.extend({
|
||
queue: function(e, t, n) {
|
||
var i;
|
||
return e ? (t = (t || "fx") + "queue", i = mt.get(e, t), n && (!i || rt.isArray(n) ? i = mt.access(e, t, rt.makeArray(n)) : i.push(n)),
|
||
i || []) : void 0;
|
||
},
|
||
dequeue: function(e, t) {
|
||
t = t || "fx";
|
||
var n = rt.queue(e, t), i = n.length, o = n.shift(), r = rt._queueHooks(e, t), s = function() {
|
||
rt.dequeue(e, t);
|
||
};
|
||
"inprogress" === o && (o = n.shift(), i--), o && ("fx" === t && n.unshift("inprogress"),
|
||
delete r.stop, o.call(e, s, r)), !i && r && r.empty.fire();
|
||
},
|
||
_queueHooks: function(e, t) {
|
||
var n = t + "queueHooks";
|
||
return mt.get(e, n) || mt.access(e, n, {
|
||
empty: rt.Callbacks("once memory").add(function() {
|
||
mt.remove(e, [ t + "queue", n ]);
|
||
})
|
||
});
|
||
}
|
||
}), rt.fn.extend({
|
||
queue: function(e, n) {
|
||
var i = 2;
|
||
return "string" != typeof e && (n = e, e = "fx", i--), arguments.length < i ? rt.queue(this[0], e) : n === t ? this : this.each(function() {
|
||
var t = rt.queue(this, e, n);
|
||
rt._queueHooks(this, e), "fx" === e && "inprogress" !== t[0] && rt.dequeue(this, e);
|
||
});
|
||
},
|
||
dequeue: function(e) {
|
||
return this.each(function() {
|
||
rt.dequeue(this, e);
|
||
});
|
||
},
|
||
delay: function(e, t) {
|
||
return e = rt.fx ? rt.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
|
||
var i = setTimeout(t, e);
|
||
n.stop = function() {
|
||
clearTimeout(i);
|
||
};
|
||
});
|
||
},
|
||
clearQueue: function(e) {
|
||
return this.queue(e || "fx", []);
|
||
},
|
||
promise: function(e, n) {
|
||
var i, o = 1, r = rt.Deferred(), s = this, a = this.length, l = function() {
|
||
--o || r.resolveWith(s, [ s ]);
|
||
};
|
||
for ("string" != typeof e && (n = e, e = t), e = e || "fx"; a--; ) i = mt.get(s[a], e + "queueHooks"),
|
||
i && i.empty && (o++, i.empty.add(l));
|
||
return l(), r.promise(n);
|
||
}
|
||
});
|
||
var yt, wt, xt = /[\t\r\n\f]/g, Ct = /\r/g, Et = /^(?:input|select|textarea|button)$/i;
|
||
rt.fn.extend({
|
||
attr: function(e, t) {
|
||
return rt.access(this, rt.attr, e, t, arguments.length > 1);
|
||
},
|
||
removeAttr: function(e) {
|
||
return this.each(function() {
|
||
rt.removeAttr(this, e);
|
||
});
|
||
},
|
||
prop: function(e, t) {
|
||
return rt.access(this, rt.prop, e, t, arguments.length > 1);
|
||
},
|
||
removeProp: function(e) {
|
||
return this.each(function() {
|
||
delete this[rt.propFix[e] || e];
|
||
});
|
||
},
|
||
addClass: function(e) {
|
||
var t, n, i, o, r, s = 0, a = this.length, l = "string" == typeof e && e;
|
||
if (rt.isFunction(e)) return this.each(function(t) {
|
||
rt(this).addClass(e.call(this, t, this.className));
|
||
});
|
||
if (l) for (t = (e || "").match(at) || []; a > s; s++) if (n = this[s], i = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(xt, " ") : " ")) {
|
||
for (r = 0; o = t[r++]; ) i.indexOf(" " + o + " ") < 0 && (i += o + " ");
|
||
n.className = rt.trim(i);
|
||
}
|
||
return this;
|
||
},
|
||
removeClass: function(e) {
|
||
var t, n, i, o, r, s = 0, a = this.length, l = 0 === arguments.length || "string" == typeof e && e;
|
||
if (rt.isFunction(e)) return this.each(function(t) {
|
||
rt(this).removeClass(e.call(this, t, this.className));
|
||
});
|
||
if (l) for (t = (e || "").match(at) || []; a > s; s++) if (n = this[s], i = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(xt, " ") : "")) {
|
||
for (r = 0; o = t[r++]; ) for (;i.indexOf(" " + o + " ") >= 0; ) i = i.replace(" " + o + " ", " ");
|
||
n.className = e ? rt.trim(i) : "";
|
||
}
|
||
return this;
|
||
},
|
||
toggleClass: function(e, t) {
|
||
var n = typeof e;
|
||
return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : rt.isFunction(e) ? this.each(function(n) {
|
||
rt(this).toggleClass(e.call(this, n, this.className, t), t);
|
||
}) : this.each(function() {
|
||
if ("string" === n) for (var t, i = 0, o = rt(this), r = e.match(at) || []; t = r[i++]; ) o.hasClass(t) ? o.removeClass(t) : o.addClass(t); else (n === U || "boolean" === n) && (this.className && mt.set(this, "__className__", this.className),
|
||
this.className = this.className || e === !1 ? "" : mt.get(this, "__className__") || "");
|
||
});
|
||
},
|
||
hasClass: function(e) {
|
||
for (var t = " " + e + " ", n = 0, i = this.length; i > n; n++) if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(xt, " ").indexOf(t) >= 0) return !0;
|
||
return !1;
|
||
},
|
||
val: function(e) {
|
||
var n, i, o, r = this[0];
|
||
{
|
||
if (arguments.length) return o = rt.isFunction(e), this.each(function(i) {
|
||
var r;
|
||
1 === this.nodeType && (r = o ? e.call(this, i, rt(this).val()) : e, null == r ? r = "" : "number" == typeof r ? r += "" : rt.isArray(r) && (r = rt.map(r, function(e) {
|
||
return null == e ? "" : e + "";
|
||
})), n = rt.valHooks[this.type] || rt.valHooks[this.nodeName.toLowerCase()], n && "set" in n && n.set(this, r, "value") !== t || (this.value = r));
|
||
});
|
||
if (r) return n = rt.valHooks[r.type] || rt.valHooks[r.nodeName.toLowerCase()],
|
||
n && "get" in n && (i = n.get(r, "value")) !== t ? i : (i = r.value, "string" == typeof i ? i.replace(Ct, "") : null == i ? "" : i);
|
||
}
|
||
}
|
||
}), rt.extend({
|
||
valHooks: {
|
||
option: {
|
||
get: function(e) {
|
||
var t = e.attributes.value;
|
||
return !t || t.specified ? e.value : e.text;
|
||
}
|
||
},
|
||
select: {
|
||
get: function(e) {
|
||
for (var t, n, i = e.options, o = e.selectedIndex, r = "select-one" === e.type || 0 > o, s = r ? null : [], a = r ? o + 1 : i.length, l = 0 > o ? a : r ? o : 0; a > l; l++) if (n = i[l],
|
||
!(!n.selected && l !== o || (rt.support.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && rt.nodeName(n.parentNode, "optgroup"))) {
|
||
if (t = rt(n).val(), r) return t;
|
||
s.push(t);
|
||
}
|
||
return s;
|
||
},
|
||
set: function(e, t) {
|
||
for (var n, i, o = e.options, r = rt.makeArray(t), s = o.length; s--; ) i = o[s],
|
||
(i.selected = rt.inArray(rt(i).val(), r) >= 0) && (n = !0);
|
||
return n || (e.selectedIndex = -1), r;
|
||
}
|
||
}
|
||
},
|
||
attr: function(e, n, i) {
|
||
var o, r, s = e.nodeType;
|
||
if (e && 3 !== s && 8 !== s && 2 !== s) return typeof e.getAttribute === U ? rt.prop(e, n, i) : (1 === s && rt.isXMLDoc(e) || (n = n.toLowerCase(),
|
||
o = rt.attrHooks[n] || (rt.expr.match.bool.test(n) ? wt : yt)), i === t ? o && "get" in o && null !== (r = o.get(e, n)) ? r : (r = rt.find.attr(e, n),
|
||
null == r ? t : r) : null !== i ? o && "set" in o && (r = o.set(e, i, n)) !== t ? r : (e.setAttribute(n, i + ""),
|
||
i) : (rt.removeAttr(e, n), void 0));
|
||
},
|
||
removeAttr: function(e, t) {
|
||
var n, i, o = 0, r = t && t.match(at);
|
||
if (r && 1 === e.nodeType) for (;n = r[o++]; ) i = rt.propFix[n] || n, rt.expr.match.bool.test(n) && (e[i] = !1),
|
||
e.removeAttribute(n);
|
||
},
|
||
attrHooks: {
|
||
type: {
|
||
set: function(e, t) {
|
||
if (!rt.support.radioValue && "radio" === t && rt.nodeName(e, "input")) {
|
||
var n = e.value;
|
||
return e.setAttribute("type", t), n && (e.value = n), t;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
propFix: {
|
||
"for": "htmlFor",
|
||
"class": "className"
|
||
},
|
||
prop: function(e, n, i) {
|
||
var o, r, s, a = e.nodeType;
|
||
if (e && 3 !== a && 8 !== a && 2 !== a) return s = 1 !== a || !rt.isXMLDoc(e), s && (n = rt.propFix[n] || n,
|
||
r = rt.propHooks[n]), i !== t ? r && "set" in r && (o = r.set(e, i, n)) !== t ? o : e[n] = i : r && "get" in r && null !== (o = r.get(e, n)) ? o : e[n];
|
||
},
|
||
propHooks: {
|
||
tabIndex: {
|
||
get: function(e) {
|
||
return e.hasAttribute("tabindex") || Et.test(e.nodeName) || e.href ? e.tabIndex : -1;
|
||
}
|
||
}
|
||
}
|
||
}), wt = {
|
||
set: function(e, t, n) {
|
||
return t === !1 ? rt.removeAttr(e, n) : e.setAttribute(n, n), n;
|
||
}
|
||
}, rt.each(rt.expr.match.bool.source.match(/\w+/g), function(e, n) {
|
||
var i = rt.expr.attrHandle[n] || rt.find.attr;
|
||
rt.expr.attrHandle[n] = function(e, n, o) {
|
||
var r = rt.expr.attrHandle[n], s = o ? t : (rt.expr.attrHandle[n] = t) != i(e, n, o) ? n.toLowerCase() : null;
|
||
return rt.expr.attrHandle[n] = r, s;
|
||
};
|
||
}), rt.support.optSelected || (rt.propHooks.selected = {
|
||
get: function(e) {
|
||
var t = e.parentNode;
|
||
return t && t.parentNode && t.parentNode.selectedIndex, null;
|
||
}
|
||
}), rt.each([ "tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable" ], function() {
|
||
rt.propFix[this.toLowerCase()] = this;
|
||
}), rt.each([ "radio", "checkbox" ], function() {
|
||
rt.valHooks[this] = {
|
||
set: function(e, t) {
|
||
return rt.isArray(t) ? e.checked = rt.inArray(rt(e).val(), t) >= 0 : void 0;
|
||
}
|
||
}, rt.support.checkOn || (rt.valHooks[this].get = function(e) {
|
||
return null === e.getAttribute("value") ? "on" : e.value;
|
||
});
|
||
});
|
||
var kt = /^key/, At = /^(?:mouse|contextmenu)|click/, St = /^(?:focusinfocus|focusoutblur)$/, _t = /^([^.]*)(?:\.(.+)|)$/;
|
||
rt.event = {
|
||
global: {},
|
||
add: function(e, n, i, o, r) {
|
||
var s, a, l, c, u, d, h, p, f, g, m, v = mt.get(e);
|
||
if (v) {
|
||
for (i.handler && (s = i, i = s.handler, r = s.selector), i.guid || (i.guid = rt.guid++),
|
||
(c = v.events) || (c = v.events = {}), (a = v.handle) || (a = v.handle = function(e) {
|
||
return typeof rt === U || e && rt.event.triggered === e.type ? t : rt.event.dispatch.apply(a.elem, arguments);
|
||
}, a.elem = e), n = (n || "").match(at) || [ "" ], u = n.length; u--; ) l = _t.exec(n[u]) || [],
|
||
f = m = l[1], g = (l[2] || "").split(".").sort(), f && (h = rt.event.special[f] || {},
|
||
f = (r ? h.delegateType : h.bindType) || f, h = rt.event.special[f] || {}, d = rt.extend({
|
||
type: f,
|
||
origType: m,
|
||
data: o,
|
||
handler: i,
|
||
guid: i.guid,
|
||
selector: r,
|
||
needsContext: r && rt.expr.match.needsContext.test(r),
|
||
namespace: g.join(".")
|
||
}, s), (p = c[f]) || (p = c[f] = [], p.delegateCount = 0, h.setup && h.setup.call(e, o, g, a) !== !1 || e.addEventListener && e.addEventListener(f, a, !1)),
|
||
h.add && (h.add.call(e, d), d.handler.guid || (d.handler.guid = i.guid)), r ? p.splice(p.delegateCount++, 0, d) : p.push(d),
|
||
rt.event.global[f] = !0);
|
||
e = null;
|
||
}
|
||
},
|
||
remove: function(e, t, n, i, o) {
|
||
var r, s, a, l, c, u, d, h, p, f, g, m = mt.hasData(e) && mt.get(e);
|
||
if (m && (l = m.events)) {
|
||
for (t = (t || "").match(at) || [ "" ], c = t.length; c--; ) if (a = _t.exec(t[c]) || [],
|
||
p = g = a[1], f = (a[2] || "").split(".").sort(), p) {
|
||
for (d = rt.event.special[p] || {}, p = (i ? d.delegateType : d.bindType) || p,
|
||
h = l[p] || [], a = a[2] && new RegExp("(^|\\.)" + f.join("\\.(?:.*\\.|)") + "(\\.|$)"),
|
||
s = r = h.length; r--; ) u = h[r], !o && g !== u.origType || n && n.guid !== u.guid || a && !a.test(u.namespace) || i && i !== u.selector && ("**" !== i || !u.selector) || (h.splice(r, 1),
|
||
u.selector && h.delegateCount--, d.remove && d.remove.call(e, u));
|
||
s && !h.length && (d.teardown && d.teardown.call(e, f, m.handle) !== !1 || rt.removeEvent(e, p, m.handle),
|
||
delete l[p]);
|
||
} else for (p in l) rt.event.remove(e, p + t[c], n, i, !0);
|
||
rt.isEmptyObject(l) && (delete m.handle, mt.remove(e, "events"));
|
||
}
|
||
},
|
||
trigger: function(n, i, o, r) {
|
||
var s, a, l, c, u, d, h, p = [ o || q ], f = it.call(n, "type") ? n.type : n, g = it.call(n, "namespace") ? n.namespace.split(".") : [];
|
||
if (a = l = o = o || q, 3 !== o.nodeType && 8 !== o.nodeType && !St.test(f + rt.event.triggered) && (f.indexOf(".") >= 0 && (g = f.split("."),
|
||
f = g.shift(), g.sort()), u = f.indexOf(":") < 0 && "on" + f, n = n[rt.expando] ? n : new rt.Event(f, "object" == typeof n && n),
|
||
n.isTrigger = r ? 2 : 3, n.namespace = g.join("."), n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + g.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
|
||
n.result = t, n.target || (n.target = o), i = null == i ? [ n ] : rt.makeArray(i, [ n ]),
|
||
h = rt.event.special[f] || {}, r || !h.trigger || h.trigger.apply(o, i) !== !1)) {
|
||
if (!r && !h.noBubble && !rt.isWindow(o)) {
|
||
for (c = h.delegateType || f, St.test(c + f) || (a = a.parentNode); a; a = a.parentNode) p.push(a),
|
||
l = a;
|
||
l === (o.ownerDocument || q) && p.push(l.defaultView || l.parentWindow || e);
|
||
}
|
||
for (s = 0; (a = p[s++]) && !n.isPropagationStopped(); ) n.type = s > 1 ? c : h.bindType || f,
|
||
d = (mt.get(a, "events") || {})[n.type] && mt.get(a, "handle"), d && d.apply(a, i),
|
||
d = u && a[u], d && rt.acceptData(a) && d.apply && d.apply(a, i) === !1 && n.preventDefault();
|
||
return n.type = f, r || n.isDefaultPrevented() || h._default && h._default.apply(p.pop(), i) !== !1 || !rt.acceptData(o) || u && rt.isFunction(o[f]) && !rt.isWindow(o) && (l = o[u],
|
||
l && (o[u] = null), rt.event.triggered = f, o[f](), rt.event.triggered = t, l && (o[u] = l)),
|
||
n.result;
|
||
}
|
||
},
|
||
dispatch: function(e) {
|
||
e = rt.event.fix(e);
|
||
var n, i, o, r, s, a = [], l = et.call(arguments), c = (mt.get(this, "events") || {})[e.type] || [], u = rt.event.special[e.type] || {};
|
||
if (l[0] = e, e.delegateTarget = this, !u.preDispatch || u.preDispatch.call(this, e) !== !1) {
|
||
for (a = rt.event.handlers.call(this, e, c), n = 0; (r = a[n++]) && !e.isPropagationStopped(); ) for (e.currentTarget = r.elem,
|
||
i = 0; (s = r.handlers[i++]) && !e.isImmediatePropagationStopped(); ) (!e.namespace_re || e.namespace_re.test(s.namespace)) && (e.handleObj = s,
|
||
e.data = s.data, o = ((rt.event.special[s.origType] || {}).handle || s.handler).apply(r.elem, l),
|
||
o !== t && (e.result = o) === !1 && (e.preventDefault(), e.stopPropagation()));
|
||
return u.postDispatch && u.postDispatch.call(this, e), e.result;
|
||
}
|
||
},
|
||
handlers: function(e, n) {
|
||
var i, o, r, s, a = [], l = n.delegateCount, c = e.target;
|
||
if (l && c.nodeType && (!e.button || "click" !== e.type)) for (;c !== this; c = c.parentNode || this) if (c.disabled !== !0 || "click" !== e.type) {
|
||
for (o = [], i = 0; l > i; i++) s = n[i], r = s.selector + " ", o[r] === t && (o[r] = s.needsContext ? rt(r, this).index(c) >= 0 : rt.find(r, this, null, [ c ]).length),
|
||
o[r] && o.push(s);
|
||
o.length && a.push({
|
||
elem: c,
|
||
handlers: o
|
||
});
|
||
}
|
||
return l < n.length && a.push({
|
||
elem: this,
|
||
handlers: n.slice(l)
|
||
}), a;
|
||
},
|
||
props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
|
||
fixHooks: {},
|
||
keyHooks: {
|
||
props: "char charCode key keyCode".split(" "),
|
||
filter: function(e, t) {
|
||
return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode),
|
||
e;
|
||
}
|
||
},
|
||
mouseHooks: {
|
||
props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
|
||
filter: function(e, n) {
|
||
var i, o, r, s = n.button;
|
||
return null == e.pageX && null != n.clientX && (i = e.target.ownerDocument || q,
|
||
o = i.documentElement, r = i.body, e.pageX = n.clientX + (o && o.scrollLeft || r && r.scrollLeft || 0) - (o && o.clientLeft || r && r.clientLeft || 0),
|
||
e.pageY = n.clientY + (o && o.scrollTop || r && r.scrollTop || 0) - (o && o.clientTop || r && r.clientTop || 0)),
|
||
e.which || s === t || (e.which = 1 & s ? 1 : 2 & s ? 3 : 4 & s ? 2 : 0), e;
|
||
}
|
||
},
|
||
fix: function(e) {
|
||
if (e[rt.expando]) return e;
|
||
var t, n, i, o = e.type, r = e, s = this.fixHooks[o];
|
||
for (s || (this.fixHooks[o] = s = At.test(o) ? this.mouseHooks : kt.test(o) ? this.keyHooks : {}),
|
||
i = s.props ? this.props.concat(s.props) : this.props, e = new rt.Event(r), t = i.length; t--; ) n = i[t],
|
||
e[n] = r[n];
|
||
return e.target || (e.target = q), 3 === e.target.nodeType && (e.target = e.target.parentNode),
|
||
s.filter ? s.filter(e, r) : e;
|
||
},
|
||
special: {
|
||
load: {
|
||
noBubble: !0
|
||
},
|
||
focus: {
|
||
trigger: function() {
|
||
return this !== l() && this.focus ? (this.focus(), !1) : void 0;
|
||
},
|
||
delegateType: "focusin"
|
||
},
|
||
blur: {
|
||
trigger: function() {
|
||
return this === l() && this.blur ? (this.blur(), !1) : void 0;
|
||
},
|
||
delegateType: "focusout"
|
||
},
|
||
click: {
|
||
trigger: function() {
|
||
return "checkbox" === this.type && this.click && rt.nodeName(this, "input") ? (this.click(),
|
||
!1) : void 0;
|
||
},
|
||
_default: function(e) {
|
||
return rt.nodeName(e.target, "a");
|
||
}
|
||
},
|
||
beforeunload: {
|
||
postDispatch: function(e) {
|
||
e.result !== t && (e.originalEvent.returnValue = e.result);
|
||
}
|
||
}
|
||
},
|
||
simulate: function(e, t, n, i) {
|
||
var o = rt.extend(new rt.Event(), n, {
|
||
type: e,
|
||
isSimulated: !0,
|
||
originalEvent: {}
|
||
});
|
||
i ? rt.event.trigger(o, null, t) : rt.event.dispatch.call(t, o), o.isDefaultPrevented() && n.preventDefault();
|
||
}
|
||
}, rt.removeEvent = function(e, t, n) {
|
||
e.removeEventListener && e.removeEventListener(t, n, !1);
|
||
}, rt.Event = function(e, t) {
|
||
return this instanceof rt.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type,
|
||
this.isDefaultPrevented = e.defaultPrevented || e.getPreventDefault && e.getPreventDefault() ? s : a) : this.type = e,
|
||
t && rt.extend(this, t), this.timeStamp = e && e.timeStamp || rt.now(), this[rt.expando] = !0,
|
||
void 0) : new rt.Event(e, t);
|
||
}, rt.Event.prototype = {
|
||
isDefaultPrevented: a,
|
||
isPropagationStopped: a,
|
||
isImmediatePropagationStopped: a,
|
||
preventDefault: function() {
|
||
var e = this.originalEvent;
|
||
this.isDefaultPrevented = s, e && e.preventDefault && e.preventDefault();
|
||
},
|
||
stopPropagation: function() {
|
||
var e = this.originalEvent;
|
||
this.isPropagationStopped = s, e && e.stopPropagation && e.stopPropagation();
|
||
},
|
||
stopImmediatePropagation: function() {
|
||
this.isImmediatePropagationStopped = s, this.stopPropagation();
|
||
}
|
||
}, rt.each({
|
||
mouseenter: "mouseover",
|
||
mouseleave: "mouseout"
|
||
}, function(e, t) {
|
||
rt.event.special[e] = {
|
||
delegateType: t,
|
||
bindType: t,
|
||
handle: function(e) {
|
||
var n, i = this, o = e.relatedTarget, r = e.handleObj;
|
||
return (!o || o !== i && !rt.contains(i, o)) && (e.type = r.origType, n = r.handler.apply(this, arguments),
|
||
e.type = t), n;
|
||
}
|
||
};
|
||
}), rt.support.focusinBubbles || rt.each({
|
||
focus: "focusin",
|
||
blur: "focusout"
|
||
}, function(e, t) {
|
||
var n = 0, i = function(e) {
|
||
rt.event.simulate(t, e.target, rt.event.fix(e), !0);
|
||
};
|
||
rt.event.special[t] = {
|
||
setup: function() {
|
||
0 === n++ && q.addEventListener(e, i, !0);
|
||
},
|
||
teardown: function() {
|
||
0 === --n && q.removeEventListener(e, i, !0);
|
||
}
|
||
};
|
||
}), rt.fn.extend({
|
||
on: function(e, n, i, o, r) {
|
||
var s, l;
|
||
if ("object" == typeof e) {
|
||
"string" != typeof n && (i = i || n, n = t);
|
||
for (l in e) this.on(l, n, i, e[l], r);
|
||
return this;
|
||
}
|
||
if (null == i && null == o ? (o = n, i = n = t) : null == o && ("string" == typeof n ? (o = i,
|
||
i = t) : (o = i, i = n, n = t)), o === !1) o = a; else if (!o) return this;
|
||
return 1 === r && (s = o, o = function(e) {
|
||
return rt().off(e), s.apply(this, arguments);
|
||
}, o.guid = s.guid || (s.guid = rt.guid++)), this.each(function() {
|
||
rt.event.add(this, e, o, i, n);
|
||
});
|
||
},
|
||
one: function(e, t, n, i) {
|
||
return this.on(e, t, n, i, 1);
|
||
},
|
||
off: function(e, n, i) {
|
||
var o, r;
|
||
if (e && e.preventDefault && e.handleObj) return o = e.handleObj, rt(e.delegateTarget).off(o.namespace ? o.origType + "." + o.namespace : o.origType, o.selector, o.handler),
|
||
this;
|
||
if ("object" == typeof e) {
|
||
for (r in e) this.off(r, n, e[r]);
|
||
return this;
|
||
}
|
||
return (n === !1 || "function" == typeof n) && (i = n, n = t), i === !1 && (i = a),
|
||
this.each(function() {
|
||
rt.event.remove(this, e, i, n);
|
||
});
|
||
},
|
||
trigger: function(e, t) {
|
||
return this.each(function() {
|
||
rt.event.trigger(e, t, this);
|
||
});
|
||
},
|
||
triggerHandler: function(e, t) {
|
||
var n = this[0];
|
||
return n ? rt.event.trigger(e, t, n, !0) : void 0;
|
||
}
|
||
});
|
||
var Ft = /^.[^:#\[\.,]*$/, Tt = /^(?:parents|prev(?:Until|All))/, Dt = rt.expr.match.needsContext, Lt = {
|
||
children: !0,
|
||
contents: !0,
|
||
next: !0,
|
||
prev: !0
|
||
};
|
||
rt.fn.extend({
|
||
find: function(e) {
|
||
var t, n = [], i = this, o = i.length;
|
||
if ("string" != typeof e) return this.pushStack(rt(e).filter(function() {
|
||
for (t = 0; o > t; t++) if (rt.contains(i[t], this)) return !0;
|
||
}));
|
||
for (t = 0; o > t; t++) rt.find(e, i[t], n);
|
||
return n = this.pushStack(o > 1 ? rt.unique(n) : n), n.selector = this.selector ? this.selector + " " + e : e,
|
||
n;
|
||
},
|
||
has: function(e) {
|
||
var t = rt(e, this), n = t.length;
|
||
return this.filter(function() {
|
||
for (var e = 0; n > e; e++) if (rt.contains(this, t[e])) return !0;
|
||
});
|
||
},
|
||
not: function(e) {
|
||
return this.pushStack(u(this, e || [], !0));
|
||
},
|
||
filter: function(e) {
|
||
return this.pushStack(u(this, e || [], !1));
|
||
},
|
||
is: function(e) {
|
||
return !!u(this, "string" == typeof e && Dt.test(e) ? rt(e) : e || [], !1).length;
|
||
},
|
||
closest: function(e, t) {
|
||
for (var n, i = 0, o = this.length, r = [], s = Dt.test(e) || "string" != typeof e ? rt(e, t || this.context) : 0; o > i; i++) for (n = this[i]; n && n !== t; n = n.parentNode) if (n.nodeType < 11 && (s ? s.index(n) > -1 : 1 === n.nodeType && rt.find.matchesSelector(n, e))) {
|
||
n = r.push(n);
|
||
break;
|
||
}
|
||
return this.pushStack(r.length > 1 ? rt.unique(r) : r);
|
||
},
|
||
index: function(e) {
|
||
return e ? "string" == typeof e ? tt.call(rt(e), this[0]) : tt.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
|
||
},
|
||
add: function(e, t) {
|
||
var n = "string" == typeof e ? rt(e, t) : rt.makeArray(e && e.nodeType ? [ e ] : e), i = rt.merge(this.get(), n);
|
||
return this.pushStack(rt.unique(i));
|
||
},
|
||
addBack: function(e) {
|
||
return this.add(null == e ? this.prevObject : this.prevObject.filter(e));
|
||
}
|
||
}), rt.each({
|
||
parent: function(e) {
|
||
var t = e.parentNode;
|
||
return t && 11 !== t.nodeType ? t : null;
|
||
},
|
||
parents: function(e) {
|
||
return rt.dir(e, "parentNode");
|
||
},
|
||
parentsUntil: function(e, t, n) {
|
||
return rt.dir(e, "parentNode", n);
|
||
},
|
||
next: function(e) {
|
||
return c(e, "nextSibling");
|
||
},
|
||
prev: function(e) {
|
||
return c(e, "previousSibling");
|
||
},
|
||
nextAll: function(e) {
|
||
return rt.dir(e, "nextSibling");
|
||
},
|
||
prevAll: function(e) {
|
||
return rt.dir(e, "previousSibling");
|
||
},
|
||
nextUntil: function(e, t, n) {
|
||
return rt.dir(e, "nextSibling", n);
|
||
},
|
||
prevUntil: function(e, t, n) {
|
||
return rt.dir(e, "previousSibling", n);
|
||
},
|
||
siblings: function(e) {
|
||
return rt.sibling((e.parentNode || {}).firstChild, e);
|
||
},
|
||
children: function(e) {
|
||
return rt.sibling(e.firstChild);
|
||
},
|
||
contents: function(e) {
|
||
return e.contentDocument || rt.merge([], e.childNodes);
|
||
}
|
||
}, function(e, t) {
|
||
rt.fn[e] = function(n, i) {
|
||
var o = rt.map(this, t, n);
|
||
return "Until" !== e.slice(-5) && (i = n), i && "string" == typeof i && (o = rt.filter(i, o)),
|
||
this.length > 1 && (Lt[e] || rt.unique(o), Tt.test(e) && o.reverse()), this.pushStack(o);
|
||
};
|
||
}), rt.extend({
|
||
filter: function(e, t, n) {
|
||
var i = t[0];
|
||
return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === i.nodeType ? rt.find.matchesSelector(i, e) ? [ i ] : [] : rt.find.matches(e, rt.grep(t, function(e) {
|
||
return 1 === e.nodeType;
|
||
}));
|
||
},
|
||
dir: function(e, n, i) {
|
||
for (var o = [], r = i !== t; (e = e[n]) && 9 !== e.nodeType; ) if (1 === e.nodeType) {
|
||
if (r && rt(e).is(i)) break;
|
||
o.push(e);
|
||
}
|
||
return o;
|
||
},
|
||
sibling: function(e, t) {
|
||
for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
|
||
return n;
|
||
}
|
||
});
|
||
var $t = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, It = /<([\w:]+)/, Rt = /<|&#?\w+;/, Mt = /<(?:script|style|link)/i, Nt = /^(?:checkbox|radio)$/i, Bt = /checked\s*(?:[^=]|=\s*.checked.)/i, Pt = /^$|\/(?:java|ecma)script/i, Ot = /^true\/(.*)/, zt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, jt = {
|
||
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
||
thead: [ 1, "<table>", "</table>" ],
|
||
col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
|
||
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
|
||
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
|
||
_default: [ 0, "", "" ]
|
||
};
|
||
jt.optgroup = jt.option, jt.tbody = jt.tfoot = jt.colgroup = jt.caption = jt.thead,
|
||
jt.th = jt.td, rt.fn.extend({
|
||
text: function(e) {
|
||
return rt.access(this, function(e) {
|
||
return e === t ? rt.text(this) : this.empty().append((this[0] && this[0].ownerDocument || q).createTextNode(e));
|
||
}, null, e, arguments.length);
|
||
},
|
||
append: function() {
|
||
return this.domManip(arguments, function(e) {
|
||
if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
|
||
var t = d(this, e);
|
||
t.appendChild(e);
|
||
}
|
||
});
|
||
},
|
||
prepend: function() {
|
||
return this.domManip(arguments, function(e) {
|
||
if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
|
||
var t = d(this, e);
|
||
t.insertBefore(e, t.firstChild);
|
||
}
|
||
});
|
||
},
|
||
before: function() {
|
||
return this.domManip(arguments, function(e) {
|
||
this.parentNode && this.parentNode.insertBefore(e, this);
|
||
});
|
||
},
|
||
after: function() {
|
||
return this.domManip(arguments, function(e) {
|
||
this.parentNode && this.parentNode.insertBefore(e, this.nextSibling);
|
||
});
|
||
},
|
||
remove: function(e, t) {
|
||
for (var n, i = e ? rt.filter(e, this) : this, o = 0; null != (n = i[o]); o++) t || 1 !== n.nodeType || rt.cleanData(m(n)),
|
||
n.parentNode && (t && rt.contains(n.ownerDocument, n) && f(m(n, "script")), n.parentNode.removeChild(n));
|
||
return this;
|
||
},
|
||
empty: function() {
|
||
for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (rt.cleanData(m(e, !1)),
|
||
e.textContent = "");
|
||
return this;
|
||
},
|
||
clone: function(e, t) {
|
||
return e = null == e ? !1 : e, t = null == t ? e : t, this.map(function() {
|
||
return rt.clone(this, e, t);
|
||
});
|
||
},
|
||
html: function(e) {
|
||
return rt.access(this, function(e) {
|
||
var n = this[0] || {}, i = 0, o = this.length;
|
||
if (e === t && 1 === n.nodeType) return n.innerHTML;
|
||
if ("string" == typeof e && !Mt.test(e) && !jt[(It.exec(e) || [ "", "" ])[1].toLowerCase()]) {
|
||
e = e.replace($t, "<$1></$2>");
|
||
try {
|
||
for (;o > i; i++) n = this[i] || {}, 1 === n.nodeType && (rt.cleanData(m(n, !1)),
|
||
n.innerHTML = e);
|
||
n = 0;
|
||
} catch (r) {}
|
||
}
|
||
n && this.empty().append(e);
|
||
}, null, e, arguments.length);
|
||
},
|
||
replaceWith: function() {
|
||
var e = rt.map(this, function(e) {
|
||
return [ e.nextSibling, e.parentNode ];
|
||
}), t = 0;
|
||
return this.domManip(arguments, function(n) {
|
||
var i = e[t++], o = e[t++];
|
||
o && (i && i.parentNode !== o && (i = this.nextSibling), rt(this).remove(), o.insertBefore(n, i));
|
||
}, !0), t ? this : this.remove();
|
||
},
|
||
detach: function(e) {
|
||
return this.remove(e, !0);
|
||
},
|
||
domManip: function(e, t, n) {
|
||
e = J.apply([], e);
|
||
var i, o, r, s, a, l, c = 0, u = this.length, d = this, f = u - 1, g = e[0], v = rt.isFunction(g);
|
||
if (v || !(1 >= u || "string" != typeof g || rt.support.checkClone) && Bt.test(g)) return this.each(function(i) {
|
||
var o = d.eq(i);
|
||
v && (e[0] = g.call(this, i, o.html())), o.domManip(e, t, n);
|
||
});
|
||
if (u && (i = rt.buildFragment(e, this[0].ownerDocument, !1, !n && this), o = i.firstChild,
|
||
1 === i.childNodes.length && (i = o), o)) {
|
||
for (r = rt.map(m(i, "script"), h), s = r.length; u > c; c++) a = i, c !== f && (a = rt.clone(a, !0, !0),
|
||
s && rt.merge(r, m(a, "script"))), t.call(this[c], a, c);
|
||
if (s) for (l = r[r.length - 1].ownerDocument, rt.map(r, p), c = 0; s > c; c++) a = r[c],
|
||
Pt.test(a.type || "") && !mt.access(a, "globalEval") && rt.contains(l, a) && (a.src ? rt._evalUrl(a.src) : rt.globalEval(a.textContent.replace(zt, "")));
|
||
}
|
||
return this;
|
||
}
|
||
}), rt.each({
|
||
appendTo: "append",
|
||
prependTo: "prepend",
|
||
insertBefore: "before",
|
||
insertAfter: "after",
|
||
replaceAll: "replaceWith"
|
||
}, function(e, t) {
|
||
rt.fn[e] = function(e) {
|
||
for (var n, i = [], o = rt(e), r = o.length - 1, s = 0; r >= s; s++) n = s === r ? this : this.clone(!0),
|
||
rt(o[s])[t](n), Q.apply(i, n.get());
|
||
return this.pushStack(i);
|
||
};
|
||
}), rt.extend({
|
||
clone: function(e, t, n) {
|
||
var i, o, r, s, a = e.cloneNode(!0), l = rt.contains(e.ownerDocument, e);
|
||
if (!(rt.support.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || rt.isXMLDoc(e))) for (s = m(a),
|
||
r = m(e), i = 0, o = r.length; o > i; i++) v(r[i], s[i]);
|
||
if (t) if (n) for (r = r || m(e), s = s || m(a), i = 0, o = r.length; o > i; i++) g(r[i], s[i]); else g(e, a);
|
||
return s = m(a, "script"), s.length > 0 && f(s, !l && m(e, "script")), a;
|
||
},
|
||
buildFragment: function(e, t, n, i) {
|
||
for (var o, r, s, a, l, c, u = 0, d = e.length, h = t.createDocumentFragment(), p = []; d > u; u++) if (o = e[u],
|
||
o || 0 === o) if ("object" === rt.type(o)) rt.merge(p, o.nodeType ? [ o ] : o); else if (Rt.test(o)) {
|
||
for (r = r || h.appendChild(t.createElement("div")), s = (It.exec(o) || [ "", "" ])[1].toLowerCase(),
|
||
a = jt[s] || jt._default, r.innerHTML = a[1] + o.replace($t, "<$1></$2>") + a[2],
|
||
c = a[0]; c--; ) r = r.lastChild;
|
||
rt.merge(p, r.childNodes), r = h.firstChild, r.textContent = "";
|
||
} else p.push(t.createTextNode(o));
|
||
for (h.textContent = "", u = 0; o = p[u++]; ) if ((!i || -1 === rt.inArray(o, i)) && (l = rt.contains(o.ownerDocument, o),
|
||
r = m(h.appendChild(o), "script"), l && f(r), n)) for (c = 0; o = r[c++]; ) Pt.test(o.type || "") && n.push(o);
|
||
return h;
|
||
},
|
||
cleanData: function(e) {
|
||
for (var n, i, r, s, a, l, c = rt.event.special, u = 0; (i = e[u]) !== t; u++) {
|
||
if (o.accepts(i) && (a = i[mt.expando], a && (n = mt.cache[a]))) {
|
||
if (r = Object.keys(n.events || {}), r.length) for (l = 0; (s = r[l]) !== t; l++) c[s] ? rt.event.remove(i, s) : rt.removeEvent(i, s, n.handle);
|
||
mt.cache[a] && delete mt.cache[a];
|
||
}
|
||
delete gt.cache[i[gt.expando]];
|
||
}
|
||
},
|
||
_evalUrl: function(e) {
|
||
return rt.ajax({
|
||
url: e,
|
||
type: "GET",
|
||
dataType: "script",
|
||
async: !1,
|
||
global: !1,
|
||
"throws": !0
|
||
});
|
||
}
|
||
}), rt.fn.extend({
|
||
wrapAll: function(e) {
|
||
var t;
|
||
return rt.isFunction(e) ? this.each(function(t) {
|
||
rt(this).wrapAll(e.call(this, t));
|
||
}) : (this[0] && (t = rt(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]),
|
||
t.map(function() {
|
||
for (var e = this; e.firstElementChild; ) e = e.firstElementChild;
|
||
return e;
|
||
}).append(this)), this);
|
||
},
|
||
wrapInner: function(e) {
|
||
return rt.isFunction(e) ? this.each(function(t) {
|
||
rt(this).wrapInner(e.call(this, t));
|
||
}) : this.each(function() {
|
||
var t = rt(this), n = t.contents();
|
||
n.length ? n.wrapAll(e) : t.append(e);
|
||
});
|
||
},
|
||
wrap: function(e) {
|
||
var t = rt.isFunction(e);
|
||
return this.each(function(n) {
|
||
rt(this).wrapAll(t ? e.call(this, n) : e);
|
||
});
|
||
},
|
||
unwrap: function() {
|
||
return this.parent().each(function() {
|
||
rt.nodeName(this, "body") || rt(this).replaceWith(this.childNodes);
|
||
}).end();
|
||
}
|
||
});
|
||
var Ht, Ut, Wt = /^(none|table(?!-c[ea]).+)/, qt = /^margin/, Gt = new RegExp("^(" + st + ")(.*)$", "i"), Vt = new RegExp("^(" + st + ")(?!px)[a-z%]+$", "i"), Kt = new RegExp("^([+-])=(" + st + ")", "i"), Xt = {
|
||
BODY: "block"
|
||
}, Yt = {
|
||
position: "absolute",
|
||
visibility: "hidden",
|
||
display: "block"
|
||
}, Zt = {
|
||
letterSpacing: 0,
|
||
fontWeight: 400
|
||
}, Jt = [ "Top", "Right", "Bottom", "Left" ], Qt = [ "Webkit", "O", "Moz", "ms" ];
|
||
rt.fn.extend({
|
||
css: function(e, n) {
|
||
return rt.access(this, function(e, n, i) {
|
||
var o, r, s = {}, a = 0;
|
||
if (rt.isArray(n)) {
|
||
for (o = w(e), r = n.length; r > a; a++) s[n[a]] = rt.css(e, n[a], !1, o);
|
||
return s;
|
||
}
|
||
return i !== t ? rt.style(e, n, i) : rt.css(e, n);
|
||
}, e, n, arguments.length > 1);
|
||
},
|
||
show: function() {
|
||
return x(this, !0);
|
||
},
|
||
hide: function() {
|
||
return x(this);
|
||
},
|
||
toggle: function(e) {
|
||
return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
|
||
y(this) ? rt(this).show() : rt(this).hide();
|
||
});
|
||
}
|
||
}), rt.extend({
|
||
cssHooks: {
|
||
opacity: {
|
||
get: function(e, t) {
|
||
if (t) {
|
||
var n = Ht(e, "opacity");
|
||
return "" === n ? "1" : n;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
cssNumber: {
|
||
columnCount: !0,
|
||
fillOpacity: !0,
|
||
fontWeight: !0,
|
||
lineHeight: !0,
|
||
opacity: !0,
|
||
order: !0,
|
||
orphans: !0,
|
||
widows: !0,
|
||
zIndex: !0,
|
||
zoom: !0
|
||
},
|
||
cssProps: {
|
||
"float": "cssFloat"
|
||
},
|
||
style: function(e, n, i, o) {
|
||
if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
|
||
var r, s, a, l = rt.camelCase(n), c = e.style;
|
||
return n = rt.cssProps[l] || (rt.cssProps[l] = b(c, l)), a = rt.cssHooks[n] || rt.cssHooks[l],
|
||
i === t ? a && "get" in a && (r = a.get(e, !1, o)) !== t ? r : c[n] : (s = typeof i,
|
||
"string" === s && (r = Kt.exec(i)) && (i = (r[1] + 1) * r[2] + parseFloat(rt.css(e, n)),
|
||
s = "number"), null == i || "number" === s && isNaN(i) || ("number" !== s || rt.cssNumber[l] || (i += "px"),
|
||
rt.support.clearCloneStyle || "" !== i || 0 !== n.indexOf("background") || (c[n] = "inherit"),
|
||
a && "set" in a && (i = a.set(e, i, o)) === t || (c[n] = i)), void 0);
|
||
}
|
||
},
|
||
css: function(e, n, i, o) {
|
||
var r, s, a, l = rt.camelCase(n);
|
||
return n = rt.cssProps[l] || (rt.cssProps[l] = b(e.style, l)), a = rt.cssHooks[n] || rt.cssHooks[l],
|
||
a && "get" in a && (r = a.get(e, !0, i)), r === t && (r = Ht(e, n, o)), "normal" === r && n in Zt && (r = Zt[n]),
|
||
"" === i || i ? (s = parseFloat(r), i === !0 || rt.isNumeric(s) ? s || 0 : r) : r;
|
||
}
|
||
}), Ht = function(e, n, i) {
|
||
var o, r, s, a = i || w(e), l = a ? a.getPropertyValue(n) || a[n] : t, c = e.style;
|
||
return a && ("" !== l || rt.contains(e.ownerDocument, e) || (l = rt.style(e, n)),
|
||
Vt.test(l) && qt.test(n) && (o = c.width, r = c.minWidth, s = c.maxWidth, c.minWidth = c.maxWidth = c.width = l,
|
||
l = a.width, c.width = o, c.minWidth = r, c.maxWidth = s)), l;
|
||
}, rt.each([ "height", "width" ], function(e, t) {
|
||
rt.cssHooks[t] = {
|
||
get: function(e, n, i) {
|
||
return n ? 0 === e.offsetWidth && Wt.test(rt.css(e, "display")) ? rt.swap(e, Yt, function() {
|
||
return k(e, t, i);
|
||
}) : k(e, t, i) : void 0;
|
||
},
|
||
set: function(e, n, i) {
|
||
var o = i && w(e);
|
||
return C(e, n, i ? E(e, t, i, rt.support.boxSizing && "border-box" === rt.css(e, "boxSizing", !1, o), o) : 0);
|
||
}
|
||
};
|
||
}), rt(function() {
|
||
rt.support.reliableMarginRight || (rt.cssHooks.marginRight = {
|
||
get: function(e, t) {
|
||
return t ? rt.swap(e, {
|
||
display: "inline-block"
|
||
}, Ht, [ e, "marginRight" ]) : void 0;
|
||
}
|
||
}), !rt.support.pixelPosition && rt.fn.position && rt.each([ "top", "left" ], function(e, t) {
|
||
rt.cssHooks[t] = {
|
||
get: function(e, n) {
|
||
return n ? (n = Ht(e, t), Vt.test(n) ? rt(e).position()[t] + "px" : n) : void 0;
|
||
}
|
||
};
|
||
});
|
||
}), rt.expr && rt.expr.filters && (rt.expr.filters.hidden = function(e) {
|
||
return e.offsetWidth <= 0 && e.offsetHeight <= 0;
|
||
}, rt.expr.filters.visible = function(e) {
|
||
return !rt.expr.filters.hidden(e);
|
||
}), rt.each({
|
||
margin: "",
|
||
padding: "",
|
||
border: "Width"
|
||
}, function(e, t) {
|
||
rt.cssHooks[e + t] = {
|
||
expand: function(n) {
|
||
for (var i = 0, o = {}, r = "string" == typeof n ? n.split(" ") : [ n ]; 4 > i; i++) o[e + Jt[i] + t] = r[i] || r[i - 2] || r[0];
|
||
return o;
|
||
}
|
||
}, qt.test(e) || (rt.cssHooks[e + t].set = C);
|
||
});
|
||
var en = /%20/g, tn = /\[\]$/, nn = /\r?\n/g, on = /^(?:submit|button|image|reset|file)$/i, rn = /^(?:input|select|textarea|keygen)/i;
|
||
rt.fn.extend({
|
||
serialize: function() {
|
||
return rt.param(this.serializeArray());
|
||
},
|
||
serializeArray: function() {
|
||
return this.map(function() {
|
||
var e = rt.prop(this, "elements");
|
||
return e ? rt.makeArray(e) : this;
|
||
}).filter(function() {
|
||
var e = this.type;
|
||
return this.name && !rt(this).is(":disabled") && rn.test(this.nodeName) && !on.test(e) && (this.checked || !Nt.test(e));
|
||
}).map(function(e, t) {
|
||
var n = rt(this).val();
|
||
return null == n ? null : rt.isArray(n) ? rt.map(n, function(e) {
|
||
return {
|
||
name: t.name,
|
||
value: e.replace(nn, "\r\n")
|
||
};
|
||
}) : {
|
||
name: t.name,
|
||
value: n.replace(nn, "\r\n")
|
||
};
|
||
}).get();
|
||
}
|
||
}), rt.param = function(e, n) {
|
||
var i, o = [], r = function(e, t) {
|
||
t = rt.isFunction(t) ? t() : null == t ? "" : t, o[o.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t);
|
||
};
|
||
if (n === t && (n = rt.ajaxSettings && rt.ajaxSettings.traditional), rt.isArray(e) || e.jquery && !rt.isPlainObject(e)) rt.each(e, function() {
|
||
r(this.name, this.value);
|
||
}); else for (i in e) _(i, e[i], n, r);
|
||
return o.join("&").replace(en, "+");
|
||
}, rt.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, t) {
|
||
rt.fn[t] = function(e, n) {
|
||
return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t);
|
||
};
|
||
}), rt.fn.extend({
|
||
hover: function(e, t) {
|
||
return this.mouseenter(e).mouseleave(t || e);
|
||
},
|
||
bind: function(e, t, n) {
|
||
return this.on(e, null, t, n);
|
||
},
|
||
unbind: function(e, t) {
|
||
return this.off(e, null, t);
|
||
},
|
||
delegate: function(e, t, n, i) {
|
||
return this.on(t, e, n, i);
|
||
},
|
||
undelegate: function(e, t, n) {
|
||
return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n);
|
||
}
|
||
});
|
||
var sn, an, ln = rt.now(), cn = /\?/, un = /#.*$/, dn = /([?&])_=[^&]*/, hn = /^(.*?):[ \t]*([^\r\n]*)$/gm, pn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, fn = /^(?:GET|HEAD)$/, gn = /^\/\//, mn = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, vn = rt.fn.load, bn = {}, yn = {}, wn = "*/".concat("*");
|
||
try {
|
||
an = W.href;
|
||
} catch (xn) {
|
||
an = q.createElement("a"), an.href = "", an = an.href;
|
||
}
|
||
sn = mn.exec(an.toLowerCase()) || [], rt.fn.load = function(e, n, i) {
|
||
if ("string" != typeof e && vn) return vn.apply(this, arguments);
|
||
var o, r, s, a = this, l = e.indexOf(" ");
|
||
return l >= 0 && (o = e.slice(l), e = e.slice(0, l)), rt.isFunction(n) ? (i = n,
|
||
n = t) : n && "object" == typeof n && (r = "POST"), a.length > 0 && rt.ajax({
|
||
url: e,
|
||
type: r,
|
||
dataType: "html",
|
||
data: n
|
||
}).done(function(e) {
|
||
s = arguments, a.html(o ? rt("<div>").append(rt.parseHTML(e)).find(o) : e);
|
||
}).complete(i && function(e, t) {
|
||
a.each(i, s || [ e.responseText, t, e ]);
|
||
}), this;
|
||
}, rt.each([ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function(e, t) {
|
||
rt.fn[t] = function(e) {
|
||
return this.on(t, e);
|
||
};
|
||
}), rt.extend({
|
||
active: 0,
|
||
lastModified: {},
|
||
etag: {},
|
||
ajaxSettings: {
|
||
url: an,
|
||
type: "GET",
|
||
isLocal: pn.test(sn[1]),
|
||
global: !0,
|
||
processData: !0,
|
||
async: !0,
|
||
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
|
||
accepts: {
|
||
"*": wn,
|
||
text: "text/plain",
|
||
html: "text/html",
|
||
xml: "application/xml, text/xml",
|
||
json: "application/json, text/javascript"
|
||
},
|
||
contents: {
|
||
xml: /xml/,
|
||
html: /html/,
|
||
json: /json/
|
||
},
|
||
responseFields: {
|
||
xml: "responseXML",
|
||
text: "responseText",
|
||
json: "responseJSON"
|
||
},
|
||
converters: {
|
||
"* text": String,
|
||
"text html": !0,
|
||
"text json": rt.parseJSON,
|
||
"text xml": rt.parseXML
|
||
},
|
||
flatOptions: {
|
||
url: !0,
|
||
context: !0
|
||
}
|
||
},
|
||
ajaxSetup: function(e, t) {
|
||
return t ? D(D(e, rt.ajaxSettings), t) : D(rt.ajaxSettings, e);
|
||
},
|
||
ajaxPrefilter: F(bn),
|
||
ajaxTransport: F(yn),
|
||
ajax: function(e, n) {
|
||
function i(e, n, i, a) {
|
||
var c, d, b, y, x, E = n;
|
||
2 !== w && (w = 2, l && clearTimeout(l), o = t, s = a || "", C.readyState = e > 0 ? 4 : 0,
|
||
c = e >= 200 && 300 > e || 304 === e, i && (y = L(h, C, i)), y = $(h, y, C, c),
|
||
c ? (h.ifModified && (x = C.getResponseHeader("Last-Modified"), x && (rt.lastModified[r] = x),
|
||
x = C.getResponseHeader("etag"), x && (rt.etag[r] = x)), 204 === e || "HEAD" === h.type ? E = "nocontent" : 304 === e ? E = "notmodified" : (E = y.state,
|
||
d = y.data, b = y.error, c = !b)) : (b = E, (e || !E) && (E = "error", 0 > e && (e = 0))),
|
||
C.status = e, C.statusText = (n || E) + "", c ? g.resolveWith(p, [ d, E, C ]) : g.rejectWith(p, [ C, E, b ]),
|
||
C.statusCode(v), v = t, u && f.trigger(c ? "ajaxSuccess" : "ajaxError", [ C, h, c ? d : b ]),
|
||
m.fireWith(p, [ C, E ]), u && (f.trigger("ajaxComplete", [ C, h ]), --rt.active || rt.event.trigger("ajaxStop")));
|
||
}
|
||
"object" == typeof e && (n = e, e = t), n = n || {};
|
||
var o, r, s, a, l, c, u, d, h = rt.ajaxSetup({}, n), p = h.context || h, f = h.context && (p.nodeType || p.jquery) ? rt(p) : rt.event, g = rt.Deferred(), m = rt.Callbacks("once memory"), v = h.statusCode || {}, b = {}, y = {}, w = 0, x = "canceled", C = {
|
||
readyState: 0,
|
||
getResponseHeader: function(e) {
|
||
var t;
|
||
if (2 === w) {
|
||
if (!a) for (a = {}; t = hn.exec(s); ) a[t[1].toLowerCase()] = t[2];
|
||
t = a[e.toLowerCase()];
|
||
}
|
||
return null == t ? null : t;
|
||
},
|
||
getAllResponseHeaders: function() {
|
||
return 2 === w ? s : null;
|
||
},
|
||
setRequestHeader: function(e, t) {
|
||
var n = e.toLowerCase();
|
||
return w || (e = y[n] = y[n] || e, b[e] = t), this;
|
||
},
|
||
overrideMimeType: function(e) {
|
||
return w || (h.mimeType = e), this;
|
||
},
|
||
statusCode: function(e) {
|
||
var t;
|
||
if (e) if (2 > w) for (t in e) v[t] = [ v[t], e[t] ]; else C.always(e[C.status]);
|
||
return this;
|
||
},
|
||
abort: function(e) {
|
||
var t = e || x;
|
||
return o && o.abort(t), i(0, t), this;
|
||
}
|
||
};
|
||
if (g.promise(C).complete = m.add, C.success = C.done, C.error = C.fail, h.url = ((e || h.url || an) + "").replace(un, "").replace(gn, sn[1] + "//"),
|
||
h.type = n.method || n.type || h.method || h.type, h.dataTypes = rt.trim(h.dataType || "*").toLowerCase().match(at) || [ "" ],
|
||
null == h.crossDomain && (c = mn.exec(h.url.toLowerCase()), h.crossDomain = !(!c || c[1] === sn[1] && c[2] === sn[2] && (c[3] || ("http:" === c[1] ? "80" : "443")) === (sn[3] || ("http:" === sn[1] ? "80" : "443")))),
|
||
h.data && h.processData && "string" != typeof h.data && (h.data = rt.param(h.data, h.traditional)),
|
||
T(bn, h, n, C), 2 === w) return C;
|
||
u = h.global, u && 0 === rt.active++ && rt.event.trigger("ajaxStart"), h.type = h.type.toUpperCase(),
|
||
h.hasContent = !fn.test(h.type), r = h.url, h.hasContent || (h.data && (r = h.url += (cn.test(r) ? "&" : "?") + h.data,
|
||
delete h.data), h.cache === !1 && (h.url = dn.test(r) ? r.replace(dn, "$1_=" + ln++) : r + (cn.test(r) ? "&" : "?") + "_=" + ln++)),
|
||
h.ifModified && (rt.lastModified[r] && C.setRequestHeader("If-Modified-Since", rt.lastModified[r]),
|
||
rt.etag[r] && C.setRequestHeader("If-None-Match", rt.etag[r])), (h.data && h.hasContent && h.contentType !== !1 || n.contentType) && C.setRequestHeader("Content-Type", h.contentType),
|
||
C.setRequestHeader("Accept", h.dataTypes[0] && h.accepts[h.dataTypes[0]] ? h.accepts[h.dataTypes[0]] + ("*" !== h.dataTypes[0] ? ", " + wn + "; q=0.01" : "") : h.accepts["*"]);
|
||
for (d in h.headers) C.setRequestHeader(d, h.headers[d]);
|
||
if (h.beforeSend && (h.beforeSend.call(p, C, h) === !1 || 2 === w)) return C.abort();
|
||
x = "abort";
|
||
for (d in {
|
||
success: 1,
|
||
error: 1,
|
||
complete: 1
|
||
}) C[d](h[d]);
|
||
if (o = T(yn, h, n, C)) {
|
||
C.readyState = 1, u && f.trigger("ajaxSend", [ C, h ]), h.async && h.timeout > 0 && (l = setTimeout(function() {
|
||
C.abort("timeout");
|
||
}, h.timeout));
|
||
try {
|
||
w = 1, o.send(b, i);
|
||
} catch (E) {
|
||
if (!(2 > w)) throw E;
|
||
i(-1, E);
|
||
}
|
||
} else i(-1, "No Transport");
|
||
return C;
|
||
},
|
||
getJSON: function(e, t, n) {
|
||
return rt.get(e, t, n, "json");
|
||
},
|
||
getScript: function(e, n) {
|
||
return rt.get(e, t, n, "script");
|
||
}
|
||
}), rt.each([ "get", "post" ], function(e, n) {
|
||
rt[n] = function(e, i, o, r) {
|
||
return rt.isFunction(i) && (r = r || o, o = i, i = t), rt.ajax({
|
||
url: e,
|
||
type: n,
|
||
dataType: r,
|
||
data: i,
|
||
success: o
|
||
});
|
||
};
|
||
}), rt.ajaxSetup({
|
||
accepts: {
|
||
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
|
||
},
|
||
contents: {
|
||
script: /(?:java|ecma)script/
|
||
},
|
||
converters: {
|
||
"text script": function(e) {
|
||
return rt.globalEval(e), e;
|
||
}
|
||
}
|
||
}), rt.ajaxPrefilter("script", function(e) {
|
||
e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET");
|
||
}), rt.ajaxTransport("script", function(e) {
|
||
if (e.crossDomain) {
|
||
var t, n;
|
||
return {
|
||
send: function(i, o) {
|
||
t = rt("<script>").prop({
|
||
async: !0,
|
||
charset: e.scriptCharset,
|
||
src: e.url
|
||
}).on("load error", n = function(e) {
|
||
t.remove(), n = null, e && o("error" === e.type ? 404 : 200, e.type);
|
||
}), q.head.appendChild(t[0]);
|
||
},
|
||
abort: function() {
|
||
n && n();
|
||
}
|
||
};
|
||
}
|
||
});
|
||
var Cn = [], En = /(=)\?(?=&|$)|\?\?/;
|
||
rt.ajaxSetup({
|
||
jsonp: "callback",
|
||
jsonpCallback: function() {
|
||
var e = Cn.pop() || rt.expando + "_" + ln++;
|
||
return this[e] = !0, e;
|
||
}
|
||
}), rt.ajaxPrefilter("json jsonp", function(n, i, o) {
|
||
var r, s, a, l = n.jsonp !== !1 && (En.test(n.url) ? "url" : "string" == typeof n.data && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && En.test(n.data) && "data");
|
||
return l || "jsonp" === n.dataTypes[0] ? (r = n.jsonpCallback = rt.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback,
|
||
l ? n[l] = n[l].replace(En, "$1" + r) : n.jsonp !== !1 && (n.url += (cn.test(n.url) ? "&" : "?") + n.jsonp + "=" + r),
|
||
n.converters["script json"] = function() {
|
||
return a || rt.error(r + " was not called"), a[0];
|
||
}, n.dataTypes[0] = "json", s = e[r], e[r] = function() {
|
||
a = arguments;
|
||
}, o.always(function() {
|
||
e[r] = s, n[r] && (n.jsonpCallback = i.jsonpCallback, Cn.push(r)), a && rt.isFunction(s) && s(a[0]),
|
||
a = s = t;
|
||
}), "script") : void 0;
|
||
}), rt.ajaxSettings.xhr = function() {
|
||
try {
|
||
return new XMLHttpRequest();
|
||
} catch (e) {}
|
||
};
|
||
var kn = rt.ajaxSettings.xhr(), An = {
|
||
0: 200,
|
||
1223: 204
|
||
}, Sn = 0, _n = {};
|
||
e.ActiveXObject && rt(e).on("unload", function() {
|
||
for (var e in _n) _n[e]();
|
||
_n = t;
|
||
}), rt.support.cors = !!kn && "withCredentials" in kn, rt.support.ajax = kn = !!kn,
|
||
rt.ajaxTransport(function(e) {
|
||
var n;
|
||
return rt.support.cors || kn && !e.crossDomain ? {
|
||
send: function(i, o) {
|
||
var r, s, a = e.xhr();
|
||
if (a.open(e.type, e.url, e.async, e.username, e.password), e.xhrFields) for (r in e.xhrFields) a[r] = e.xhrFields[r];
|
||
e.mimeType && a.overrideMimeType && a.overrideMimeType(e.mimeType), e.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
|
||
for (r in i) a.setRequestHeader(r, i[r]);
|
||
n = function(e) {
|
||
return function() {
|
||
n && (delete _n[s], n = a.onload = a.onerror = null, "abort" === e ? a.abort() : "error" === e ? o(a.status || 404, a.statusText) : o(An[a.status] || a.status, a.statusText, "string" == typeof a.responseText ? {
|
||
text: a.responseText
|
||
} : t, a.getAllResponseHeaders()));
|
||
};
|
||
}, a.onload = n(), a.onerror = n("error"), n = _n[s = Sn++] = n("abort"), a.send(e.hasContent && e.data || null);
|
||
},
|
||
abort: function() {
|
||
n && n();
|
||
}
|
||
} : void 0;
|
||
});
|
||
var Fn, Tn, Dn = /^(?:toggle|show|hide)$/, Ln = new RegExp("^(?:([+-])=|)(" + st + ")([a-z%]*)$", "i"), $n = /queueHooks$/, In = [ B ], Rn = {
|
||
"*": [ function(e, t) {
|
||
var n = this.createTween(e, t), i = n.cur(), o = Ln.exec(t), r = o && o[3] || (rt.cssNumber[e] ? "" : "px"), s = (rt.cssNumber[e] || "px" !== r && +i) && Ln.exec(rt.css(n.elem, e)), a = 1, l = 20;
|
||
if (s && s[3] !== r) {
|
||
r = r || s[3], o = o || [], s = +i || 1;
|
||
do a = a || ".5", s /= a, rt.style(n.elem, e, s + r); while (a !== (a = n.cur() / i) && 1 !== a && --l);
|
||
}
|
||
return o && (s = n.start = +s || +i || 0, n.unit = r, n.end = o[1] ? s + (o[1] + 1) * o[2] : +o[2]),
|
||
n;
|
||
} ]
|
||
};
|
||
rt.Animation = rt.extend(M, {
|
||
tweener: function(e, t) {
|
||
rt.isFunction(e) ? (t = e, e = [ "*" ]) : e = e.split(" ");
|
||
for (var n, i = 0, o = e.length; o > i; i++) n = e[i], Rn[n] = Rn[n] || [], Rn[n].unshift(t);
|
||
},
|
||
prefilter: function(e, t) {
|
||
t ? In.unshift(e) : In.push(e);
|
||
}
|
||
}), rt.Tween = P, P.prototype = {
|
||
constructor: P,
|
||
init: function(e, t, n, i, o, r) {
|
||
this.elem = e, this.prop = n, this.easing = o || "swing", this.options = t, this.start = this.now = this.cur(),
|
||
this.end = i, this.unit = r || (rt.cssNumber[n] ? "" : "px");
|
||
},
|
||
cur: function() {
|
||
var e = P.propHooks[this.prop];
|
||
return e && e.get ? e.get(this) : P.propHooks._default.get(this);
|
||
},
|
||
run: function(e) {
|
||
var t, n = P.propHooks[this.prop];
|
||
return this.pos = t = this.options.duration ? rt.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e,
|
||
this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this),
|
||
n && n.set ? n.set(this) : P.propHooks._default.set(this), this;
|
||
}
|
||
}, P.prototype.init.prototype = P.prototype, P.propHooks = {
|
||
_default: {
|
||
get: function(e) {
|
||
var t;
|
||
return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = rt.css(e.elem, e.prop, ""),
|
||
t && "auto" !== t ? t : 0) : e.elem[e.prop];
|
||
},
|
||
set: function(e) {
|
||
rt.fx.step[e.prop] ? rt.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[rt.cssProps[e.prop]] || rt.cssHooks[e.prop]) ? rt.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now;
|
||
}
|
||
}
|
||
}, P.propHooks.scrollTop = P.propHooks.scrollLeft = {
|
||
set: function(e) {
|
||
e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now);
|
||
}
|
||
}, rt.each([ "toggle", "show", "hide" ], function(e, t) {
|
||
var n = rt.fn[t];
|
||
rt.fn[t] = function(e, i, o) {
|
||
return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(O(t, !0), e, i, o);
|
||
};
|
||
}), rt.fn.extend({
|
||
fadeTo: function(e, t, n, i) {
|
||
return this.filter(y).css("opacity", 0).show().end().animate({
|
||
opacity: t
|
||
}, e, n, i);
|
||
},
|
||
animate: function(e, t, n, i) {
|
||
var o = rt.isEmptyObject(e), r = rt.speed(t, n, i), s = function() {
|
||
var t = M(this, rt.extend({}, e), r);
|
||
(o || mt.get(this, "finish")) && t.stop(!0);
|
||
};
|
||
return s.finish = s, o || r.queue === !1 ? this.each(s) : this.queue(r.queue, s);
|
||
},
|
||
stop: function(e, n, i) {
|
||
var o = function(e) {
|
||
var t = e.stop;
|
||
delete e.stop, t(i);
|
||
};
|
||
return "string" != typeof e && (i = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []),
|
||
this.each(function() {
|
||
var t = !0, n = null != e && e + "queueHooks", r = rt.timers, s = mt.get(this);
|
||
if (n) s[n] && s[n].stop && o(s[n]); else for (n in s) s[n] && s[n].stop && $n.test(n) && o(s[n]);
|
||
for (n = r.length; n--; ) r[n].elem !== this || null != e && r[n].queue !== e || (r[n].anim.stop(i),
|
||
t = !1, r.splice(n, 1));
|
||
(t || !i) && rt.dequeue(this, e);
|
||
});
|
||
},
|
||
finish: function(e) {
|
||
return e !== !1 && (e = e || "fx"), this.each(function() {
|
||
var t, n = mt.get(this), i = n[e + "queue"], o = n[e + "queueHooks"], r = rt.timers, s = i ? i.length : 0;
|
||
for (n.finish = !0, rt.queue(this, e, []), o && o.stop && o.stop.call(this, !0),
|
||
t = r.length; t--; ) r[t].elem === this && r[t].queue === e && (r[t].anim.stop(!0),
|
||
r.splice(t, 1));
|
||
for (t = 0; s > t; t++) i[t] && i[t].finish && i[t].finish.call(this);
|
||
delete n.finish;
|
||
});
|
||
}
|
||
}), rt.each({
|
||
slideDown: O("show"),
|
||
slideUp: O("hide"),
|
||
slideToggle: O("toggle"),
|
||
fadeIn: {
|
||
opacity: "show"
|
||
},
|
||
fadeOut: {
|
||
opacity: "hide"
|
||
},
|
||
fadeToggle: {
|
||
opacity: "toggle"
|
||
}
|
||
}, function(e, t) {
|
||
rt.fn[e] = function(e, n, i) {
|
||
return this.animate(t, e, n, i);
|
||
};
|
||
}), rt.speed = function(e, t, n) {
|
||
var i = e && "object" == typeof e ? rt.extend({}, e) : {
|
||
complete: n || !n && t || rt.isFunction(e) && e,
|
||
duration: e,
|
||
easing: n && t || t && !rt.isFunction(t) && t
|
||
};
|
||
return i.duration = rt.fx.off ? 0 : "number" == typeof i.duration ? i.duration : i.duration in rt.fx.speeds ? rt.fx.speeds[i.duration] : rt.fx.speeds._default,
|
||
(null == i.queue || i.queue === !0) && (i.queue = "fx"), i.old = i.complete, i.complete = function() {
|
||
rt.isFunction(i.old) && i.old.call(this), i.queue && rt.dequeue(this, i.queue);
|
||
}, i;
|
||
}, rt.easing = {
|
||
linear: function(e) {
|
||
return e;
|
||
},
|
||
swing: function(e) {
|
||
return .5 - Math.cos(e * Math.PI) / 2;
|
||
}
|
||
}, rt.timers = [], rt.fx = P.prototype.init, rt.fx.tick = function() {
|
||
var e, n = rt.timers, i = 0;
|
||
for (Fn = rt.now(); i < n.length; i++) e = n[i], e() || n[i] !== e || n.splice(i--, 1);
|
||
n.length || rt.fx.stop(), Fn = t;
|
||
}, rt.fx.timer = function(e) {
|
||
e() && rt.timers.push(e) && rt.fx.start();
|
||
}, rt.fx.interval = 13, rt.fx.start = function() {
|
||
Tn || (Tn = setInterval(rt.fx.tick, rt.fx.interval));
|
||
}, rt.fx.stop = function() {
|
||
clearInterval(Tn), Tn = null;
|
||
}, rt.fx.speeds = {
|
||
slow: 600,
|
||
fast: 200,
|
||
_default: 400
|
||
}, rt.fx.step = {}, rt.expr && rt.expr.filters && (rt.expr.filters.animated = function(e) {
|
||
return rt.grep(rt.timers, function(t) {
|
||
return e === t.elem;
|
||
}).length;
|
||
}), rt.fn.offset = function(e) {
|
||
if (arguments.length) return e === t ? this : this.each(function(t) {
|
||
rt.offset.setOffset(this, e, t);
|
||
});
|
||
var n, i, o = this[0], r = {
|
||
top: 0,
|
||
left: 0
|
||
}, s = o && o.ownerDocument;
|
||
if (s) return n = s.documentElement, rt.contains(n, o) ? (typeof o.getBoundingClientRect !== U && (r = o.getBoundingClientRect()),
|
||
i = z(s), {
|
||
top: r.top + i.pageYOffset - n.clientTop,
|
||
left: r.left + i.pageXOffset - n.clientLeft
|
||
}) : r;
|
||
}, rt.offset = {
|
||
setOffset: function(e, t, n) {
|
||
var i, o, r, s, a, l, c, u = rt.css(e, "position"), d = rt(e), h = {};
|
||
"static" === u && (e.style.position = "relative"), a = d.offset(), r = rt.css(e, "top"),
|
||
l = rt.css(e, "left"), c = ("absolute" === u || "fixed" === u) && (r + l).indexOf("auto") > -1,
|
||
c ? (i = d.position(), s = i.top, o = i.left) : (s = parseFloat(r) || 0, o = parseFloat(l) || 0),
|
||
rt.isFunction(t) && (t = t.call(e, n, a)), null != t.top && (h.top = t.top - a.top + s),
|
||
null != t.left && (h.left = t.left - a.left + o), "using" in t ? t.using.call(e, h) : d.css(h);
|
||
}
|
||
}, rt.fn.extend({
|
||
position: function() {
|
||
if (this[0]) {
|
||
var e, t, n = this[0], i = {
|
||
top: 0,
|
||
left: 0
|
||
};
|
||
return "fixed" === rt.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(),
|
||
t = this.offset(), rt.nodeName(e[0], "html") || (i = e.offset()), i.top += rt.css(e[0], "borderTopWidth", !0),
|
||
i.left += rt.css(e[0], "borderLeftWidth", !0)), {
|
||
top: t.top - i.top - rt.css(n, "marginTop", !0),
|
||
left: t.left - i.left - rt.css(n, "marginLeft", !0)
|
||
};
|
||
}
|
||
},
|
||
offsetParent: function() {
|
||
return this.map(function() {
|
||
for (var e = this.offsetParent || G; e && !rt.nodeName(e, "html") && "static" === rt.css(e, "position"); ) e = e.offsetParent;
|
||
return e || G;
|
||
});
|
||
}
|
||
}), rt.each({
|
||
scrollLeft: "pageXOffset",
|
||
scrollTop: "pageYOffset"
|
||
}, function(n, i) {
|
||
var o = "pageYOffset" === i;
|
||
rt.fn[n] = function(r) {
|
||
return rt.access(this, function(n, r, s) {
|
||
var a = z(n);
|
||
return s === t ? a ? a[i] : n[r] : (a ? a.scrollTo(o ? e.pageXOffset : s, o ? s : e.pageYOffset) : n[r] = s,
|
||
void 0);
|
||
}, n, r, arguments.length, null);
|
||
};
|
||
}), rt.each({
|
||
Height: "height",
|
||
Width: "width"
|
||
}, function(e, n) {
|
||
rt.each({
|
||
padding: "inner" + e,
|
||
content: n,
|
||
"": "outer" + e
|
||
}, function(i, o) {
|
||
rt.fn[o] = function(o, r) {
|
||
var s = arguments.length && (i || "boolean" != typeof o), a = i || (o === !0 || r === !0 ? "margin" : "border");
|
||
return rt.access(this, function(n, i, o) {
|
||
var r;
|
||
return rt.isWindow(n) ? n.document.documentElement["client" + e] : 9 === n.nodeType ? (r = n.documentElement,
|
||
Math.max(n.body["scroll" + e], r["scroll" + e], n.body["offset" + e], r["offset" + e], r["client" + e])) : o === t ? rt.css(n, i, a) : rt.style(n, i, o, a);
|
||
}, n, s ? o : t, s, null);
|
||
};
|
||
});
|
||
}), rt.fn.size = function() {
|
||
return this.length;
|
||
}, rt.fn.andSelf = rt.fn.addBack, "object" == typeof module && module && "object" == typeof module.exports ? module.exports = rt : "function" == typeof define && define.amd && define("jquery", [], function() {
|
||
return rt;
|
||
}), "object" == typeof e && "object" == typeof e.document && (e.jQuery = e.$ = rt);
|
||
}(window), function() {
|
||
var e = this, t = e._, n = {}, i = Array.prototype, o = Object.prototype, r = Function.prototype, s = i.push, a = i.slice, l = i.concat, c = o.toString, u = o.hasOwnProperty, d = i.forEach, h = i.map, p = i.reduce, f = i.reduceRight, g = i.filter, m = i.every, v = i.some, b = i.indexOf, y = i.lastIndexOf, w = Array.isArray, x = Object.keys, C = r.bind, E = function(e) {
|
||
return e instanceof E ? e : this instanceof E ? (this._wrapped = e, void 0) : new E(e);
|
||
};
|
||
"undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = E),
|
||
exports._ = E) : e._ = E, E.VERSION = "1.5.1";
|
||
var k = E.each = E.forEach = function(e, t, i) {
|
||
if (null != e) if (d && e.forEach === d) e.forEach(t, i); else if (e.length === +e.length) {
|
||
for (var o = 0, r = e.length; r > o; o++) if (t.call(i, e[o], o, e) === n) return;
|
||
} else for (var s in e) if (E.has(e, s) && t.call(i, e[s], s, e) === n) return;
|
||
};
|
||
E.map = E.collect = function(e, t, n) {
|
||
var i = [];
|
||
return null == e ? i : h && e.map === h ? e.map(t, n) : (k(e, function(e, o, r) {
|
||
i.push(t.call(n, e, o, r));
|
||
}), i);
|
||
};
|
||
var A = "Reduce of empty array with no initial value";
|
||
E.reduce = E.foldl = E.inject = function(e, t, n, i) {
|
||
var o = arguments.length > 2;
|
||
if (null == e && (e = []), p && e.reduce === p) return i && (t = E.bind(t, i)),
|
||
o ? e.reduce(t, n) : e.reduce(t);
|
||
if (k(e, function(e, r, s) {
|
||
o ? n = t.call(i, n, e, r, s) : (n = e, o = !0);
|
||
}), !o) throw new TypeError(A);
|
||
return n;
|
||
}, E.reduceRight = E.foldr = function(e, t, n, i) {
|
||
var o = arguments.length > 2;
|
||
if (null == e && (e = []), f && e.reduceRight === f) return i && (t = E.bind(t, i)),
|
||
o ? e.reduceRight(t, n) : e.reduceRight(t);
|
||
var r = e.length;
|
||
if (r !== +r) {
|
||
var s = E.keys(e);
|
||
r = s.length;
|
||
}
|
||
if (k(e, function(a, l, c) {
|
||
l = s ? s[--r] : --r, o ? n = t.call(i, n, e[l], l, c) : (n = e[l], o = !0);
|
||
}), !o) throw new TypeError(A);
|
||
return n;
|
||
}, E.find = E.detect = function(e, t, n) {
|
||
var i;
|
||
return S(e, function(e, o, r) {
|
||
return t.call(n, e, o, r) ? (i = e, !0) : void 0;
|
||
}), i;
|
||
}, E.filter = E.select = function(e, t, n) {
|
||
var i = [];
|
||
return null == e ? i : g && e.filter === g ? e.filter(t, n) : (k(e, function(e, o, r) {
|
||
t.call(n, e, o, r) && i.push(e);
|
||
}), i);
|
||
}, E.reject = function(e, t, n) {
|
||
return E.filter(e, function(e, i, o) {
|
||
return !t.call(n, e, i, o);
|
||
}, n);
|
||
}, E.every = E.all = function(e, t, i) {
|
||
t || (t = E.identity);
|
||
var o = !0;
|
||
return null == e ? o : m && e.every === m ? e.every(t, i) : (k(e, function(e, r, s) {
|
||
return (o = o && t.call(i, e, r, s)) ? void 0 : n;
|
||
}), !!o);
|
||
};
|
||
var S = E.some = E.any = function(e, t, i) {
|
||
t || (t = E.identity);
|
||
var o = !1;
|
||
return null == e ? o : v && e.some === v ? e.some(t, i) : (k(e, function(e, r, s) {
|
||
return o || (o = t.call(i, e, r, s)) ? n : void 0;
|
||
}), !!o);
|
||
};
|
||
E.contains = E.include = function(e, t) {
|
||
return null == e ? !1 : b && e.indexOf === b ? -1 != e.indexOf(t) : S(e, function(e) {
|
||
return e === t;
|
||
});
|
||
}, E.invoke = function(e, t) {
|
||
var n = a.call(arguments, 2), i = E.isFunction(t);
|
||
return E.map(e, function(e) {
|
||
return (i ? t : e[t]).apply(e, n);
|
||
});
|
||
}, E.pluck = function(e, t) {
|
||
return E.map(e, function(e) {
|
||
return e[t];
|
||
});
|
||
}, E.where = function(e, t, n) {
|
||
return E.isEmpty(t) ? n ? void 0 : [] : E[n ? "find" : "filter"](e, function(e) {
|
||
for (var n in t) if (t[n] !== e[n]) return !1;
|
||
return !0;
|
||
});
|
||
}, E.findWhere = function(e, t) {
|
||
return E.where(e, t, !0);
|
||
}, E.max = function(e, t, n) {
|
||
if (!t && E.isArray(e) && e[0] === +e[0] && e.length < 65535) return Math.max.apply(Math, e);
|
||
if (!t && E.isEmpty(e)) return -1/0;
|
||
var i = {
|
||
computed: -1/0,
|
||
value: -1/0
|
||
};
|
||
return k(e, function(e, o, r) {
|
||
var s = t ? t.call(n, e, o, r) : e;
|
||
s > i.computed && (i = {
|
||
value: e,
|
||
computed: s
|
||
});
|
||
}), i.value;
|
||
}, E.min = function(e, t, n) {
|
||
if (!t && E.isArray(e) && e[0] === +e[0] && e.length < 65535) return Math.min.apply(Math, e);
|
||
if (!t && E.isEmpty(e)) return 1/0;
|
||
var i = {
|
||
computed: 1/0,
|
||
value: 1/0
|
||
};
|
||
return k(e, function(e, o, r) {
|
||
var s = t ? t.call(n, e, o, r) : e;
|
||
s < i.computed && (i = {
|
||
value: e,
|
||
computed: s
|
||
});
|
||
}), i.value;
|
||
}, E.shuffle = function(e) {
|
||
var t, n = 0, i = [];
|
||
return k(e, function(e) {
|
||
t = E.random(n++), i[n - 1] = i[t], i[t] = e;
|
||
}), i;
|
||
};
|
||
var _ = function(e) {
|
||
return E.isFunction(e) ? e : function(t) {
|
||
return t[e];
|
||
};
|
||
};
|
||
E.sortBy = function(e, t, n) {
|
||
var i = _(t);
|
||
return E.pluck(E.map(e, function(e, t, o) {
|
||
return {
|
||
value: e,
|
||
index: t,
|
||
criteria: i.call(n, e, t, o)
|
||
};
|
||
}).sort(function(e, t) {
|
||
var n = e.criteria, i = t.criteria;
|
||
if (n !== i) {
|
||
if (n > i || void 0 === n) return 1;
|
||
if (i > n || void 0 === i) return -1;
|
||
}
|
||
return e.index < t.index ? -1 : 1;
|
||
}), "value");
|
||
};
|
||
var F = function(e, t, n, i) {
|
||
var o = {}, r = _(null == t ? E.identity : t);
|
||
return k(e, function(t, s) {
|
||
var a = r.call(n, t, s, e);
|
||
i(o, a, t);
|
||
}), o;
|
||
};
|
||
E.groupBy = function(e, t, n) {
|
||
return F(e, t, n, function(e, t, n) {
|
||
(E.has(e, t) ? e[t] : e[t] = []).push(n);
|
||
});
|
||
}, E.countBy = function(e, t, n) {
|
||
return F(e, t, n, function(e, t) {
|
||
E.has(e, t) || (e[t] = 0), e[t]++;
|
||
});
|
||
}, E.sortedIndex = function(e, t, n, i) {
|
||
n = null == n ? E.identity : _(n);
|
||
for (var o = n.call(i, t), r = 0, s = e.length; s > r; ) {
|
||
var a = r + s >>> 1;
|
||
n.call(i, e[a]) < o ? r = a + 1 : s = a;
|
||
}
|
||
return r;
|
||
}, E.toArray = function(e) {
|
||
return e ? E.isArray(e) ? a.call(e) : e.length === +e.length ? E.map(e, E.identity) : E.values(e) : [];
|
||
}, E.size = function(e) {
|
||
return null == e ? 0 : e.length === +e.length ? e.length : E.keys(e).length;
|
||
}, E.first = E.head = E.take = function(e, t, n) {
|
||
return null == e ? void 0 : null == t || n ? e[0] : a.call(e, 0, t);
|
||
}, E.initial = function(e, t, n) {
|
||
return a.call(e, 0, e.length - (null == t || n ? 1 : t));
|
||
}, E.last = function(e, t, n) {
|
||
return null == e ? void 0 : null == t || n ? e[e.length - 1] : a.call(e, Math.max(e.length - t, 0));
|
||
}, E.rest = E.tail = E.drop = function(e, t, n) {
|
||
return a.call(e, null == t || n ? 1 : t);
|
||
}, E.compact = function(e) {
|
||
return E.filter(e, E.identity);
|
||
};
|
||
var T = function(e, t, n) {
|
||
return t && E.every(e, E.isArray) ? l.apply(n, e) : (k(e, function(e) {
|
||
E.isArray(e) || E.isArguments(e) ? t ? s.apply(n, e) : T(e, t, n) : n.push(e);
|
||
}), n);
|
||
};
|
||
E.flatten = function(e, t) {
|
||
return T(e, t, []);
|
||
}, E.without = function(e) {
|
||
return E.difference(e, a.call(arguments, 1));
|
||
}, E.uniq = E.unique = function(e, t, n, i) {
|
||
E.isFunction(t) && (i = n, n = t, t = !1);
|
||
var o = n ? E.map(e, n, i) : e, r = [], s = [];
|
||
return k(o, function(n, i) {
|
||
(t ? i && s[s.length - 1] === n : E.contains(s, n)) || (s.push(n), r.push(e[i]));
|
||
}), r;
|
||
}, E.union = function() {
|
||
return E.uniq(E.flatten(arguments, !0));
|
||
}, E.intersection = function(e) {
|
||
var t = a.call(arguments, 1);
|
||
return E.filter(E.uniq(e), function(e) {
|
||
return E.every(t, function(t) {
|
||
return E.indexOf(t, e) >= 0;
|
||
});
|
||
});
|
||
}, E.difference = function(e) {
|
||
var t = l.apply(i, a.call(arguments, 1));
|
||
return E.filter(e, function(e) {
|
||
return !E.contains(t, e);
|
||
});
|
||
}, E.zip = function() {
|
||
for (var e = E.max(E.pluck(arguments, "length").concat(0)), t = new Array(e), n = 0; e > n; n++) t[n] = E.pluck(arguments, "" + n);
|
||
return t;
|
||
}, E.object = function(e, t) {
|
||
if (null == e) return {};
|
||
for (var n = {}, i = 0, o = e.length; o > i; i++) t ? n[e[i]] = t[i] : n[e[i][0]] = e[i][1];
|
||
return n;
|
||
}, E.indexOf = function(e, t, n) {
|
||
if (null == e) return -1;
|
||
var i = 0, o = e.length;
|
||
if (n) {
|
||
if ("number" != typeof n) return i = E.sortedIndex(e, t), e[i] === t ? i : -1;
|
||
i = 0 > n ? Math.max(0, o + n) : n;
|
||
}
|
||
if (b && e.indexOf === b) return e.indexOf(t, n);
|
||
for (;o > i; i++) if (e[i] === t) return i;
|
||
return -1;
|
||
}, E.lastIndexOf = function(e, t, n) {
|
||
if (null == e) return -1;
|
||
var i = null != n;
|
||
if (y && e.lastIndexOf === y) return i ? e.lastIndexOf(t, n) : e.lastIndexOf(t);
|
||
for (var o = i ? n : e.length; o--; ) if (e[o] === t) return o;
|
||
return -1;
|
||
}, E.range = function(e, t, n) {
|
||
arguments.length <= 1 && (t = e || 0, e = 0), n = arguments[2] || 1;
|
||
for (var i = Math.max(Math.ceil((t - e) / n), 0), o = 0, r = new Array(i); i > o; ) r[o++] = e,
|
||
e += n;
|
||
return r;
|
||
};
|
||
var D = function() {};
|
||
E.bind = function(e, t) {
|
||
var n, i;
|
||
if (C && e.bind === C) return C.apply(e, a.call(arguments, 1));
|
||
if (!E.isFunction(e)) throw new TypeError();
|
||
return n = a.call(arguments, 2), i = function() {
|
||
if (!(this instanceof i)) return e.apply(t, n.concat(a.call(arguments)));
|
||
D.prototype = e.prototype;
|
||
var o = new D();
|
||
D.prototype = null;
|
||
var r = e.apply(o, n.concat(a.call(arguments)));
|
||
return Object(r) === r ? r : o;
|
||
};
|
||
}, E.partial = function(e) {
|
||
var t = a.call(arguments, 1);
|
||
return function() {
|
||
return e.apply(this, t.concat(a.call(arguments)));
|
||
};
|
||
}, E.bindAll = function(e) {
|
||
var t = a.call(arguments, 1);
|
||
if (0 === t.length) throw new Error("bindAll must be passed function names");
|
||
return k(t, function(t) {
|
||
e[t] = E.bind(e[t], e);
|
||
}), e;
|
||
}, E.memoize = function(e, t) {
|
||
var n = {};
|
||
return t || (t = E.identity), function() {
|
||
var i = t.apply(this, arguments);
|
||
return E.has(n, i) ? n[i] : n[i] = e.apply(this, arguments);
|
||
};
|
||
}, E.delay = function(e, t) {
|
||
var n = a.call(arguments, 2);
|
||
return setTimeout(function() {
|
||
return e.apply(null, n);
|
||
}, t);
|
||
}, E.defer = function(e) {
|
||
return E.delay.apply(E, [ e, 1 ].concat(a.call(arguments, 1)));
|
||
}, E.throttle = function(e, t, n) {
|
||
var i, o, r, s = null, a = 0;
|
||
n || (n = {});
|
||
var l = function() {
|
||
a = n.leading === !1 ? 0 : new Date(), s = null, r = e.apply(i, o);
|
||
};
|
||
return function() {
|
||
var c = new Date();
|
||
a || n.leading !== !1 || (a = c);
|
||
var u = t - (c - a);
|
||
return i = this, o = arguments, 0 >= u ? (clearTimeout(s), s = null, a = c, r = e.apply(i, o)) : s || n.trailing === !1 || (s = setTimeout(l, u)),
|
||
r;
|
||
};
|
||
}, E.debounce = function(e, t, n) {
|
||
var i, o = null;
|
||
return function() {
|
||
var r = this, s = arguments, a = function() {
|
||
o = null, n || (i = e.apply(r, s));
|
||
}, l = n && !o;
|
||
return clearTimeout(o), o = setTimeout(a, t), l && (i = e.apply(r, s)), i;
|
||
};
|
||
}, E.once = function(e) {
|
||
var t, n = !1;
|
||
return function() {
|
||
return n ? t : (n = !0, t = e.apply(this, arguments), e = null, t);
|
||
};
|
||
}, E.wrap = function(e, t) {
|
||
return function() {
|
||
var n = [ e ];
|
||
return s.apply(n, arguments), t.apply(this, n);
|
||
};
|
||
}, E.compose = function() {
|
||
var e = arguments;
|
||
return function() {
|
||
for (var t = arguments, n = e.length - 1; n >= 0; n--) t = [ e[n].apply(this, t) ];
|
||
return t[0];
|
||
};
|
||
}, E.after = function(e, t) {
|
||
return function() {
|
||
return --e < 1 ? t.apply(this, arguments) : void 0;
|
||
};
|
||
}, E.keys = x || function(e) {
|
||
if (e !== Object(e)) throw new TypeError("Invalid object");
|
||
var t = [];
|
||
for (var n in e) E.has(e, n) && t.push(n);
|
||
return t;
|
||
}, E.values = function(e) {
|
||
var t = [];
|
||
for (var n in e) E.has(e, n) && t.push(e[n]);
|
||
return t;
|
||
}, E.pairs = function(e) {
|
||
var t = [];
|
||
for (var n in e) E.has(e, n) && t.push([ n, e[n] ]);
|
||
return t;
|
||
}, E.invert = function(e) {
|
||
var t = {};
|
||
for (var n in e) E.has(e, n) && (t[e[n]] = n);
|
||
return t;
|
||
}, E.functions = E.methods = function(e) {
|
||
var t = [];
|
||
for (var n in e) E.isFunction(e[n]) && t.push(n);
|
||
return t.sort();
|
||
}, E.extend = function(e) {
|
||
return k(a.call(arguments, 1), function(t) {
|
||
if (t) for (var n in t) e[n] = t[n];
|
||
}), e;
|
||
}, E.pick = function(e) {
|
||
var t = {}, n = l.apply(i, a.call(arguments, 1));
|
||
return k(n, function(n) {
|
||
n in e && (t[n] = e[n]);
|
||
}), t;
|
||
}, E.omit = function(e) {
|
||
var t = {}, n = l.apply(i, a.call(arguments, 1));
|
||
for (var o in e) E.contains(n, o) || (t[o] = e[o]);
|
||
return t;
|
||
}, E.defaults = function(e) {
|
||
return k(a.call(arguments, 1), function(t) {
|
||
if (t) for (var n in t) void 0 === e[n] && (e[n] = t[n]);
|
||
}), e;
|
||
}, E.clone = function(e) {
|
||
return E.isObject(e) ? E.isArray(e) ? e.slice() : E.extend({}, e) : e;
|
||
}, E.tap = function(e, t) {
|
||
return t(e), e;
|
||
};
|
||
var L = function(e, t, n, i) {
|
||
if (e === t) return 0 !== e || 1 / e == 1 / t;
|
||
if (null == e || null == t) return e === t;
|
||
e instanceof E && (e = e._wrapped), t instanceof E && (t = t._wrapped);
|
||
var o = c.call(e);
|
||
if (o != c.call(t)) return !1;
|
||
switch (o) {
|
||
case "[object String]":
|
||
return e == String(t);
|
||
|
||
case "[object Number]":
|
||
return e != +e ? t != +t : 0 == e ? 1 / e == 1 / t : e == +t;
|
||
|
||
case "[object Date]":
|
||
case "[object Boolean]":
|
||
return +e == +t;
|
||
|
||
case "[object RegExp]":
|
||
return e.source == t.source && e.global == t.global && e.multiline == t.multiline && e.ignoreCase == t.ignoreCase;
|
||
}
|
||
if ("object" != typeof e || "object" != typeof t) return !1;
|
||
for (var r = n.length; r--; ) if (n[r] == e) return i[r] == t;
|
||
var s = e.constructor, a = t.constructor;
|
||
if (s !== a && !(E.isFunction(s) && s instanceof s && E.isFunction(a) && a instanceof a)) return !1;
|
||
n.push(e), i.push(t);
|
||
var l = 0, u = !0;
|
||
if ("[object Array]" == o) {
|
||
if (l = e.length, u = l == t.length) for (;l-- && (u = L(e[l], t[l], n, i)); ) ;
|
||
} else {
|
||
for (var d in e) if (E.has(e, d) && (l++, !(u = E.has(t, d) && L(e[d], t[d], n, i)))) break;
|
||
if (u) {
|
||
for (d in t) if (E.has(t, d) && !l--) break;
|
||
u = !l;
|
||
}
|
||
}
|
||
return n.pop(), i.pop(), u;
|
||
};
|
||
E.isEqual = function(e, t) {
|
||
return L(e, t, [], []);
|
||
}, E.isEmpty = function(e) {
|
||
if (null == e) return !0;
|
||
if (E.isArray(e) || E.isString(e)) return 0 === e.length;
|
||
for (var t in e) if (E.has(e, t)) return !1;
|
||
return !0;
|
||
}, E.isElement = function(e) {
|
||
return !(!e || 1 !== e.nodeType);
|
||
}, E.isArray = w || function(e) {
|
||
return "[object Array]" == c.call(e);
|
||
}, E.isObject = function(e) {
|
||
return e === Object(e);
|
||
}, k([ "Arguments", "Function", "String", "Number", "Date", "RegExp" ], function(e) {
|
||
E["is" + e] = function(t) {
|
||
return c.call(t) == "[object " + e + "]";
|
||
};
|
||
}), E.isArguments(arguments) || (E.isArguments = function(e) {
|
||
return !(!e || !E.has(e, "callee"));
|
||
}), "function" != typeof /./ && (E.isFunction = function(e) {
|
||
return "function" == typeof e;
|
||
}), E.isFinite = function(e) {
|
||
return isFinite(e) && !isNaN(parseFloat(e));
|
||
}, E.isNaN = function(e) {
|
||
return E.isNumber(e) && e != +e;
|
||
}, E.isBoolean = function(e) {
|
||
return e === !0 || e === !1 || "[object Boolean]" == c.call(e);
|
||
}, E.isNull = function(e) {
|
||
return null === e;
|
||
}, E.isUndefined = function(e) {
|
||
return void 0 === e;
|
||
}, E.has = function(e, t) {
|
||
return u.call(e, t);
|
||
}, E.noConflict = function() {
|
||
return e._ = t, this;
|
||
}, E.identity = function(e) {
|
||
return e;
|
||
}, E.times = function(e, t, n) {
|
||
for (var i = Array(Math.max(0, e)), o = 0; e > o; o++) i[o] = t.call(n, o);
|
||
return i;
|
||
}, E.random = function(e, t) {
|
||
return null == t && (t = e, e = 0), e + Math.floor(Math.random() * (t - e + 1));
|
||
};
|
||
var $ = {
|
||
escape: {
|
||
"&": "&",
|
||
"<": "<",
|
||
">": ">",
|
||
'"': """,
|
||
"'": "'",
|
||
"/": "/"
|
||
}
|
||
};
|
||
$.unescape = E.invert($.escape);
|
||
var I = {
|
||
escape: new RegExp("[" + E.keys($.escape).join("") + "]", "g"),
|
||
unescape: new RegExp("(" + E.keys($.unescape).join("|") + ")", "g")
|
||
};
|
||
E.each([ "escape", "unescape" ], function(e) {
|
||
E[e] = function(t) {
|
||
return null == t ? "" : ("" + t).replace(I[e], function(t) {
|
||
return $[e][t];
|
||
});
|
||
};
|
||
}), E.result = function(e, t) {
|
||
if (null == e) return void 0;
|
||
var n = e[t];
|
||
return E.isFunction(n) ? n.call(e) : n;
|
||
}, E.mixin = function(e) {
|
||
k(E.functions(e), function(t) {
|
||
var n = E[t] = e[t];
|
||
E.prototype[t] = function() {
|
||
var e = [ this._wrapped ];
|
||
return s.apply(e, arguments), P.call(this, n.apply(E, e));
|
||
};
|
||
});
|
||
};
|
||
var R = 0;
|
||
E.uniqueId = function(e) {
|
||
var t = ++R + "";
|
||
return e ? e + t : t;
|
||
}, E.templateSettings = {
|
||
evaluate: /<%([\s\S]+?)%>/g,
|
||
interpolate: /<%=([\s\S]+?)%>/g,
|
||
escape: /<%-([\s\S]+?)%>/g
|
||
};
|
||
var M = /(.)^/, N = {
|
||
"'": "'",
|
||
"\\": "\\",
|
||
"\r": "r",
|
||
"\n": "n",
|
||
" ": "t",
|
||
"\u2028": "u2028",
|
||
"\u2029": "u2029"
|
||
}, B = /\\|'|\r|\n|\t|\u2028|\u2029/g;
|
||
E.template = function(e, t, n) {
|
||
var i;
|
||
n = E.defaults({}, n, E.templateSettings);
|
||
var o = new RegExp([ (n.escape || M).source, (n.interpolate || M).source, (n.evaluate || M).source ].join("|") + "|$", "g"), r = 0, s = "__p+='";
|
||
e.replace(o, function(t, n, i, o, a) {
|
||
return s += e.slice(r, a).replace(B, function(e) {
|
||
return "\\" + N[e];
|
||
}), n && (s += "'+\n((__t=(" + n + "))==null?'':_.escape(__t))+\n'"), i && (s += "'+\n((__t=(" + i + "))==null?'':__t)+\n'"),
|
||
o && (s += "';\n" + o + "\n__p+='"), r = a + t.length, t;
|
||
}), s += "';\n", n.variable || (s = "with(obj||{}){\n" + s + "}\n"), s = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + s + "return __p;\n";
|
||
try {
|
||
i = new Function(n.variable || "obj", "_", s);
|
||
} catch (a) {
|
||
throw a.source = s, a;
|
||
}
|
||
if (t) return i(t, E);
|
||
var l = function(e) {
|
||
return i.call(this, e, E);
|
||
};
|
||
return l.source = "function(" + (n.variable || "obj") + "){\n" + s + "}", l;
|
||
}, E.chain = function(e) {
|
||
return E(e).chain();
|
||
};
|
||
var P = function(e) {
|
||
return this._chain ? E(e).chain() : e;
|
||
};
|
||
E.mixin(E), k([ "pop", "push", "reverse", "shift", "sort", "splice", "unshift" ], function(e) {
|
||
var t = i[e];
|
||
E.prototype[e] = function() {
|
||
var n = this._wrapped;
|
||
return t.apply(n, arguments), "shift" != e && "splice" != e || 0 !== n.length || delete n[0],
|
||
P.call(this, n);
|
||
};
|
||
}), k([ "concat", "join", "slice" ], function(e) {
|
||
var t = i[e];
|
||
E.prototype[e] = function() {
|
||
return P.call(this, t.apply(this._wrapped, arguments));
|
||
};
|
||
}), E.extend(E.prototype, {
|
||
chain: function() {
|
||
return this._chain = !0, this;
|
||
},
|
||
value: function() {
|
||
return this._wrapped;
|
||
}
|
||
});
|
||
}.call(this), define("underscore", function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e._;
|
||
};
|
||
}(this)), function(e, t) {
|
||
"object" == typeof exports ? module.exports = t() : "function" == typeof define && define.amd ? define("crel", t) : e.crel = t();
|
||
}(this, function() {
|
||
function e() {
|
||
var n, i = window.document, o = arguments, r = i.createElement(o[0]), s = o[1], a = 2, l = o.length, c = e.attrMap;
|
||
if (1 === l) return r;
|
||
if (("object" != typeof s || t(s)) && (--a, s = null), 1 === l - a && "string" == typeof o[a] && void 0 !== r.textContent) r.textContent = o[a]; else for (;l > a; ++a) n = o[a],
|
||
null != n && (t(n) || (n = i.createTextNode(n)), r.appendChild(n));
|
||
for (var u in s) if (c[u]) {
|
||
var d = e.attrMap[u];
|
||
"function" == typeof d ? d(r, s[u]) : r.setAttribute(d, s[u]);
|
||
} else r.setAttribute(u, s[u]);
|
||
return r;
|
||
}
|
||
var t = "object" == typeof Node ? function(e) {
|
||
return e instanceof Node;
|
||
} : function(e) {
|
||
return e && "object" == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName;
|
||
};
|
||
return e.attrMap = {}, e.isNode = t, e;
|
||
}), define("ace/lib/regexp", [ "require", "exports", "module" ], function() {
|
||
function e(e) {
|
||
return (e.global ? "g" : "") + (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.extended ? "x" : "") + (e.sticky ? "y" : "");
|
||
}
|
||
function t(e, t, n) {
|
||
if (Array.prototype.indexOf) return e.indexOf(t, n);
|
||
for (var i = n || 0; i < e.length; i++) if (e[i] === t) return i;
|
||
return -1;
|
||
}
|
||
var n = {
|
||
exec: RegExp.prototype.exec,
|
||
test: RegExp.prototype.test,
|
||
match: String.prototype.match,
|
||
replace: String.prototype.replace,
|
||
split: String.prototype.split
|
||
}, i = void 0 === n.exec.call(/()??/, "")[1], o = function() {
|
||
var e = /^/g;
|
||
return n.test.call(e, ""), !e.lastIndex;
|
||
}();
|
||
o && i || (RegExp.prototype.exec = function(r) {
|
||
var s, a, l = n.exec.apply(this, arguments);
|
||
if ("string" == typeof r && l) {
|
||
if (!i && l.length > 1 && t(l, "") > -1 && (a = RegExp(this.source, n.replace.call(e(this), "g", "")),
|
||
n.replace.call(r.slice(l.index), a, function() {
|
||
for (var e = 1; e < arguments.length - 2; e++) void 0 === arguments[e] && (l[e] = void 0);
|
||
})), this._xregexp && this._xregexp.captureNames) for (var c = 1; c < l.length; c++) s = this._xregexp.captureNames[c - 1],
|
||
s && (l[s] = l[c]);
|
||
!o && this.global && !l[0].length && this.lastIndex > l.index && this.lastIndex--;
|
||
}
|
||
return l;
|
||
}, o || (RegExp.prototype.test = function(e) {
|
||
var t = n.exec.call(this, e);
|
||
return t && this.global && !t[0].length && this.lastIndex > t.index && this.lastIndex--,
|
||
!!t;
|
||
}));
|
||
}), define("ace/lib/es5-shim", [ "require", "exports", "module" ], function() {
|
||
function e() {}
|
||
function t(e) {
|
||
try {
|
||
return Object.defineProperty(e, "sentinel", {}), "sentinel" in e;
|
||
} catch (t) {}
|
||
}
|
||
function n(e) {
|
||
return e = +e, e !== e ? e = 0 : 0 !== e && e !== 1 / 0 && e !== -(1 / 0) && (e = (e > 0 || -1) * Math.floor(Math.abs(e))),
|
||
e;
|
||
}
|
||
Function.prototype.bind || (Function.prototype.bind = function(t) {
|
||
var n = this;
|
||
if ("function" != typeof n) throw new TypeError("Function.prototype.bind called on incompatible " + n);
|
||
var i = d.call(arguments, 1), o = function() {
|
||
if (this instanceof o) {
|
||
var e = n.apply(this, i.concat(d.call(arguments)));
|
||
return Object(e) === e ? e : this;
|
||
}
|
||
return n.apply(t, i.concat(d.call(arguments)));
|
||
};
|
||
return n.prototype && (e.prototype = n.prototype, o.prototype = new e(), e.prototype = null),
|
||
o;
|
||
});
|
||
var i, o, r, s, a, l = Function.prototype.call, c = Array.prototype, u = Object.prototype, d = c.slice, h = l.bind(u.toString), p = l.bind(u.hasOwnProperty);
|
||
if ((a = p(u, "__defineGetter__")) && (i = l.bind(u.__defineGetter__), o = l.bind(u.__defineSetter__),
|
||
r = l.bind(u.__lookupGetter__), s = l.bind(u.__lookupSetter__)), 2 != [ 1, 2 ].splice(0).length) if (function() {
|
||
function e(e) {
|
||
var t = new Array(e + 2);
|
||
return t[0] = t[1] = 0, t;
|
||
}
|
||
var t, n = [];
|
||
return n.splice.apply(n, e(20)), n.splice.apply(n, e(26)), t = n.length, n.splice(5, 0, "XXX"),
|
||
t + 1 == n.length, t + 1 == n.length ? !0 : void 0;
|
||
}()) {
|
||
var f = Array.prototype.splice;
|
||
Array.prototype.splice = function(e, t) {
|
||
return arguments.length ? f.apply(this, [ void 0 === e ? 0 : e, void 0 === t ? this.length - e : t ].concat(d.call(arguments, 2))) : [];
|
||
};
|
||
} else Array.prototype.splice = function(e, t) {
|
||
var n = this.length;
|
||
e > 0 ? e > n && (e = n) : void 0 == e ? e = 0 : 0 > e && (e = Math.max(n + e, 0)),
|
||
n > e + t || (t = n - e);
|
||
var i = this.slice(e, e + t), o = d.call(arguments, 2), r = o.length;
|
||
if (e === n) r && this.push.apply(this, o); else {
|
||
var s = Math.min(t, n - e), a = e + s, l = a + r - s, c = n - a, u = n - s;
|
||
if (a > l) for (var h = 0; c > h; ++h) this[l + h] = this[a + h]; else if (l > a) for (h = c; h--; ) this[l + h] = this[a + h];
|
||
if (r && e === u) this.length = u, this.push.apply(this, o); else for (this.length = u + r,
|
||
h = 0; r > h; ++h) this[e + h] = o[h];
|
||
}
|
||
return i;
|
||
};
|
||
Array.isArray || (Array.isArray = function(e) {
|
||
return "[object Array]" == h(e);
|
||
});
|
||
var g = Object("a"), m = "a" != g[0] || !(0 in g);
|
||
if (Array.prototype.forEach || (Array.prototype.forEach = function(e) {
|
||
var t = I(this), n = m && "[object String]" == h(this) ? this.split("") : t, i = arguments[1], o = -1, r = n.length >>> 0;
|
||
if ("[object Function]" != h(e)) throw new TypeError();
|
||
for (;++o < r; ) o in n && e.call(i, n[o], o, t);
|
||
}), Array.prototype.map || (Array.prototype.map = function(e) {
|
||
var t = I(this), n = m && "[object String]" == h(this) ? this.split("") : t, i = n.length >>> 0, o = Array(i), r = arguments[1];
|
||
if ("[object Function]" != h(e)) throw new TypeError(e + " is not a function");
|
||
for (var s = 0; i > s; s++) s in n && (o[s] = e.call(r, n[s], s, t));
|
||
return o;
|
||
}), Array.prototype.filter || (Array.prototype.filter = function(e) {
|
||
var t, n = I(this), i = m && "[object String]" == h(this) ? this.split("") : n, o = i.length >>> 0, r = [], s = arguments[1];
|
||
if ("[object Function]" != h(e)) throw new TypeError(e + " is not a function");
|
||
for (var a = 0; o > a; a++) a in i && (t = i[a], e.call(s, t, a, n) && r.push(t));
|
||
return r;
|
||
}), Array.prototype.every || (Array.prototype.every = function(e) {
|
||
var t = I(this), n = m && "[object String]" == h(this) ? this.split("") : t, i = n.length >>> 0, o = arguments[1];
|
||
if ("[object Function]" != h(e)) throw new TypeError(e + " is not a function");
|
||
for (var r = 0; i > r; r++) if (r in n && !e.call(o, n[r], r, t)) return !1;
|
||
return !0;
|
||
}), Array.prototype.some || (Array.prototype.some = function(e) {
|
||
var t = I(this), n = m && "[object String]" == h(this) ? this.split("") : t, i = n.length >>> 0, o = arguments[1];
|
||
if ("[object Function]" != h(e)) throw new TypeError(e + " is not a function");
|
||
for (var r = 0; i > r; r++) if (r in n && e.call(o, n[r], r, t)) return !0;
|
||
return !1;
|
||
}), Array.prototype.reduce || (Array.prototype.reduce = function(e) {
|
||
var t = I(this), n = m && "[object String]" == h(this) ? this.split("") : t, i = n.length >>> 0;
|
||
if ("[object Function]" != h(e)) throw new TypeError(e + " is not a function");
|
||
if (!i && 1 == arguments.length) throw new TypeError("reduce of empty array with no initial value");
|
||
var o, r = 0;
|
||
if (arguments.length >= 2) o = arguments[1]; else for (;;) {
|
||
if (r in n) {
|
||
o = n[r++];
|
||
break;
|
||
}
|
||
if (++r >= i) throw new TypeError("reduce of empty array with no initial value");
|
||
}
|
||
for (;i > r; r++) r in n && (o = e.call(void 0, o, n[r], r, t));
|
||
return o;
|
||
}), Array.prototype.reduceRight || (Array.prototype.reduceRight = function(e) {
|
||
var t = I(this), n = m && "[object String]" == h(this) ? this.split("") : t, i = n.length >>> 0;
|
||
if ("[object Function]" != h(e)) throw new TypeError(e + " is not a function");
|
||
if (!i && 1 == arguments.length) throw new TypeError("reduceRight of empty array with no initial value");
|
||
var o, r = i - 1;
|
||
if (arguments.length >= 2) o = arguments[1]; else for (;;) {
|
||
if (r in n) {
|
||
o = n[r--];
|
||
break;
|
||
}
|
||
if (--r < 0) throw new TypeError("reduceRight of empty array with no initial value");
|
||
}
|
||
do r in this && (o = e.call(void 0, o, n[r], r, t)); while (r--);
|
||
return o;
|
||
}), Array.prototype.indexOf && -1 == [ 0, 1 ].indexOf(1, 2) || (Array.prototype.indexOf = function(e) {
|
||
var t = m && "[object String]" == h(this) ? this.split("") : I(this), i = t.length >>> 0;
|
||
if (!i) return -1;
|
||
var o = 0;
|
||
for (arguments.length > 1 && (o = n(arguments[1])), o = o >= 0 ? o : Math.max(0, i + o); i > o; o++) if (o in t && t[o] === e) return o;
|
||
return -1;
|
||
}), Array.prototype.lastIndexOf && -1 == [ 0, 1 ].lastIndexOf(0, -3) || (Array.prototype.lastIndexOf = function(e) {
|
||
var t = m && "[object String]" == h(this) ? this.split("") : I(this), i = t.length >>> 0;
|
||
if (!i) return -1;
|
||
var o = i - 1;
|
||
for (arguments.length > 1 && (o = Math.min(o, n(arguments[1]))), o = o >= 0 ? o : i - Math.abs(o); o >= 0; o--) if (o in t && e === t[o]) return o;
|
||
return -1;
|
||
}), Object.getPrototypeOf || (Object.getPrototypeOf = function(e) {
|
||
return e.__proto__ || (e.constructor ? e.constructor.prototype : u);
|
||
}), !Object.getOwnPropertyDescriptor) {
|
||
var v = "Object.getOwnPropertyDescriptor called on a non-object: ";
|
||
Object.getOwnPropertyDescriptor = function(e, t) {
|
||
if ("object" != typeof e && "function" != typeof e || null === e) throw new TypeError(v + e);
|
||
if (p(e, t)) {
|
||
var n, i, o;
|
||
if (n = {
|
||
enumerable: !0,
|
||
configurable: !0
|
||
}, a) {
|
||
var l = e.__proto__;
|
||
e.__proto__ = u;
|
||
var i = r(e, t), o = s(e, t);
|
||
if (e.__proto__ = l, i || o) return i && (n.get = i), o && (n.set = o), n;
|
||
}
|
||
return n.value = e[t], n;
|
||
}
|
||
};
|
||
}
|
||
if (Object.getOwnPropertyNames || (Object.getOwnPropertyNames = function(e) {
|
||
return Object.keys(e);
|
||
}), !Object.create) {
|
||
var b;
|
||
b = null === Object.prototype.__proto__ ? function() {
|
||
return {
|
||
__proto__: null
|
||
};
|
||
} : function() {
|
||
var e = {};
|
||
for (var t in e) e[t] = null;
|
||
return e.constructor = e.hasOwnProperty = e.propertyIsEnumerable = e.isPrototypeOf = e.toLocaleString = e.toString = e.valueOf = e.__proto__ = null,
|
||
e;
|
||
}, Object.create = function(e, t) {
|
||
var n;
|
||
if (null === e) n = b(); else {
|
||
if ("object" != typeof e) throw new TypeError("typeof prototype[" + typeof e + "] != 'object'");
|
||
var i = function() {};
|
||
i.prototype = e, n = new i(), n.__proto__ = e;
|
||
}
|
||
return void 0 !== t && Object.defineProperties(n, t), n;
|
||
};
|
||
}
|
||
if (Object.defineProperty) {
|
||
var y = t({}), w = "undefined" == typeof document || t(document.createElement("div"));
|
||
if (!y || !w) var x = Object.defineProperty;
|
||
}
|
||
if (!Object.defineProperty || x) {
|
||
var C = "Property description must be an object: ", E = "Object.defineProperty called on non-object: ", k = "getters & setters can not be defined on this javascript engine";
|
||
Object.defineProperty = function(e, t, n) {
|
||
if ("object" != typeof e && "function" != typeof e || null === e) throw new TypeError(E + e);
|
||
if ("object" != typeof n && "function" != typeof n || null === n) throw new TypeError(C + n);
|
||
if (x) try {
|
||
return x.call(Object, e, t, n);
|
||
} catch (l) {}
|
||
if (p(n, "value")) if (a && (r(e, t) || s(e, t))) {
|
||
var c = e.__proto__;
|
||
e.__proto__ = u, delete e[t], e[t] = n.value, e.__proto__ = c;
|
||
} else e[t] = n.value; else {
|
||
if (!a) throw new TypeError(k);
|
||
p(n, "get") && i(e, t, n.get), p(n, "set") && o(e, t, n.set);
|
||
}
|
||
return e;
|
||
};
|
||
}
|
||
Object.defineProperties || (Object.defineProperties = function(e, t) {
|
||
for (var n in t) p(t, n) && Object.defineProperty(e, n, t[n]);
|
||
return e;
|
||
}), Object.seal || (Object.seal = function(e) {
|
||
return e;
|
||
}), Object.freeze || (Object.freeze = function(e) {
|
||
return e;
|
||
});
|
||
try {
|
||
Object.freeze(function() {});
|
||
} catch (A) {
|
||
Object.freeze = function(e) {
|
||
return function(t) {
|
||
return "function" == typeof t ? t : e(t);
|
||
};
|
||
}(Object.freeze);
|
||
}
|
||
if (Object.preventExtensions || (Object.preventExtensions = function(e) {
|
||
return e;
|
||
}), Object.isSealed || (Object.isSealed = function() {
|
||
return !1;
|
||
}), Object.isFrozen || (Object.isFrozen = function() {
|
||
return !1;
|
||
}), Object.isExtensible || (Object.isExtensible = function(e) {
|
||
if (Object(e) === e) throw new TypeError();
|
||
for (var t = ""; p(e, t); ) t += "?";
|
||
e[t] = !0;
|
||
var n = p(e, t);
|
||
return delete e[t], n;
|
||
}), !Object.keys) {
|
||
var S = !0, _ = [ "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor" ], F = _.length;
|
||
for (var T in {
|
||
toString: null
|
||
}) S = !1;
|
||
Object.keys = function R(e) {
|
||
if ("object" != typeof e && "function" != typeof e || null === e) throw new TypeError("Object.keys called on a non-object");
|
||
var R = [];
|
||
for (var t in e) p(e, t) && R.push(t);
|
||
if (S) for (var n = 0, i = F; i > n; n++) {
|
||
var o = _[n];
|
||
p(e, o) && R.push(o);
|
||
}
|
||
return R;
|
||
};
|
||
}
|
||
Date.now || (Date.now = function() {
|
||
return new Date().getTime();
|
||
});
|
||
var D = " \n\f\r \u2028\u2029";
|
||
if (!String.prototype.trim || D.trim()) {
|
||
D = "[" + D + "]";
|
||
var L = new RegExp("^" + D + D + "*"), $ = new RegExp(D + D + "*$");
|
||
String.prototype.trim = function() {
|
||
return String(this).replace(L, "").replace($, "");
|
||
};
|
||
}
|
||
var I = function(e) {
|
||
if (null == e) throw new TypeError("can't convert " + e + " to object");
|
||
return Object(e);
|
||
};
|
||
}), define("ace/lib/fixoldbrowsers", [ "require", "exports", "module", "./regexp", "./es5-shim" ], function(e) {
|
||
e("./regexp"), e("./es5-shim");
|
||
}), define("ace/lib/dom", [ "require", "exports", "module" ], function(e, t) {
|
||
if ("undefined" != typeof document) {
|
||
var n = "http://www.w3.org/1999/xhtml";
|
||
t.getDocumentHead = function(e) {
|
||
return e || (e = document), e.head || e.getElementsByTagName("head")[0] || e.documentElement;
|
||
}, t.createElement = function(e, t) {
|
||
return document.createElementNS ? document.createElementNS(t || n, e) : document.createElement(e);
|
||
}, t.hasCssClass = function(e, t) {
|
||
var n = e.className.split(/\s+/g);
|
||
return -1 !== n.indexOf(t);
|
||
}, t.addCssClass = function(e, n) {
|
||
t.hasCssClass(e, n) || (e.className += " " + n);
|
||
}, t.removeCssClass = function(e, t) {
|
||
for (var n = e.className.split(/\s+/g); ;) {
|
||
var i = n.indexOf(t);
|
||
if (-1 == i) break;
|
||
n.splice(i, 1);
|
||
}
|
||
e.className = n.join(" ");
|
||
}, t.toggleCssClass = function(e, t) {
|
||
for (var n = e.className.split(/\s+/g), i = !0; ;) {
|
||
var o = n.indexOf(t);
|
||
if (-1 == o) break;
|
||
i = !1, n.splice(o, 1);
|
||
}
|
||
return i && n.push(t), e.className = n.join(" "), i;
|
||
}, t.setCssClass = function(e, n, i) {
|
||
i ? t.addCssClass(e, n) : t.removeCssClass(e, n);
|
||
}, t.hasCssString = function(e, t) {
|
||
var n, i = 0;
|
||
if (t = t || document, t.createStyleSheet && (n = t.styleSheets)) {
|
||
for (;i < n.length; ) if (n[i++].owningElement.id === e) return !0;
|
||
} else if (n = t.getElementsByTagName("style")) for (;i < n.length; ) if (n[i++].id === e) return !0;
|
||
return !1;
|
||
}, t.importCssString = function(e, i, o) {
|
||
if (o = o || document, i && t.hasCssString(i, o)) return null;
|
||
var r;
|
||
o.createStyleSheet ? (r = o.createStyleSheet(), r.cssText = e, i && (r.owningElement.id = i)) : (r = o.createElementNS ? o.createElementNS(n, "style") : o.createElement("style"),
|
||
r.appendChild(o.createTextNode(e)), i && (r.id = i), t.getDocumentHead(o).appendChild(r));
|
||
}, t.importCssStylsheet = function(e, n) {
|
||
if (n.createStyleSheet) n.createStyleSheet(e); else {
|
||
var i = t.createElement("link");
|
||
i.rel = "stylesheet", i.href = e, t.getDocumentHead(n).appendChild(i);
|
||
}
|
||
}, t.getInnerWidth = function(e) {
|
||
return parseInt(t.computedStyle(e, "paddingLeft"), 10) + parseInt(t.computedStyle(e, "paddingRight"), 10) + e.clientWidth;
|
||
}, t.getInnerHeight = function(e) {
|
||
return parseInt(t.computedStyle(e, "paddingTop"), 10) + parseInt(t.computedStyle(e, "paddingBottom"), 10) + e.clientHeight;
|
||
}, void 0 !== window.pageYOffset ? (t.getPageScrollTop = function() {
|
||
return window.pageYOffset;
|
||
}, t.getPageScrollLeft = function() {
|
||
return window.pageXOffset;
|
||
}) : (t.getPageScrollTop = function() {
|
||
return document.body.scrollTop;
|
||
}, t.getPageScrollLeft = function() {
|
||
return document.body.scrollLeft;
|
||
}), t.computedStyle = window.getComputedStyle ? function(e, t) {
|
||
return t ? (window.getComputedStyle(e, "") || {})[t] || "" : window.getComputedStyle(e, "") || {};
|
||
} : function(e, t) {
|
||
return t ? e.currentStyle[t] : e.currentStyle;
|
||
}, t.scrollbarWidth = function(e) {
|
||
var n = t.createElement("ace_inner");
|
||
n.style.width = "100%", n.style.minWidth = "0px", n.style.height = "200px", n.style.display = "block";
|
||
var i = t.createElement("ace_outer"), o = i.style;
|
||
o.position = "absolute", o.left = "-10000px", o.overflow = "hidden", o.width = "200px",
|
||
o.minWidth = "0px", o.height = "150px", o.display = "block", i.appendChild(n);
|
||
var r = e.documentElement;
|
||
r.appendChild(i);
|
||
var s = n.offsetWidth;
|
||
o.overflow = "scroll";
|
||
var a = n.offsetWidth;
|
||
return s == a && (a = i.clientWidth), r.removeChild(i), s - a;
|
||
}, t.setInnerHtml = function(e, t) {
|
||
var n = e.cloneNode(!1);
|
||
return n.innerHTML = t, e.parentNode.replaceChild(n, e), n;
|
||
}, "textContent" in document.documentElement ? (t.setInnerText = function(e, t) {
|
||
e.textContent = t;
|
||
}, t.getInnerText = function(e) {
|
||
return e.textContent;
|
||
}) : (t.setInnerText = function(e, t) {
|
||
e.innerText = t;
|
||
}, t.getInnerText = function(e) {
|
||
return e.innerText;
|
||
}), t.getParentWindow = function(e) {
|
||
return e.defaultView || e.parentWindow;
|
||
};
|
||
}
|
||
}), define("ace/lib/oop", [ "require", "exports", "module" ], function(e, t) {
|
||
t.inherits = function() {
|
||
var e = function() {};
|
||
return function(t, n) {
|
||
e.prototype = n.prototype, t.super_ = n.prototype, t.prototype = new e(), t.prototype.constructor = t;
|
||
};
|
||
}(), t.mixin = function(e, t) {
|
||
for (var n in t) e[n] = t[n];
|
||
return e;
|
||
}, t.implement = function(e, n) {
|
||
t.mixin(e, n);
|
||
};
|
||
}), define("ace/lib/keys", [ "require", "exports", "module", "./oop" ], function(e, t) {
|
||
var n = e("./oop"), i = function() {
|
||
var e = {
|
||
MODIFIER_KEYS: {
|
||
16: "Shift",
|
||
17: "Ctrl",
|
||
18: "Alt",
|
||
224: "Meta"
|
||
},
|
||
KEY_MODS: {
|
||
ctrl: 1,
|
||
alt: 2,
|
||
option: 2,
|
||
shift: 4,
|
||
meta: 8,
|
||
command: 8,
|
||
cmd: 8
|
||
},
|
||
FUNCTION_KEYS: {
|
||
8: "Backspace",
|
||
9: "Tab",
|
||
13: "Return",
|
||
19: "Pause",
|
||
27: "Esc",
|
||
32: "Space",
|
||
33: "PageUp",
|
||
34: "PageDown",
|
||
35: "End",
|
||
36: "Home",
|
||
37: "Left",
|
||
38: "Up",
|
||
39: "Right",
|
||
40: "Down",
|
||
44: "Print",
|
||
45: "Insert",
|
||
46: "Delete",
|
||
96: "Numpad0",
|
||
97: "Numpad1",
|
||
98: "Numpad2",
|
||
99: "Numpad3",
|
||
100: "Numpad4",
|
||
101: "Numpad5",
|
||
102: "Numpad6",
|
||
103: "Numpad7",
|
||
104: "Numpad8",
|
||
105: "Numpad9",
|
||
"-13": "NumpadEnter",
|
||
112: "F1",
|
||
113: "F2",
|
||
114: "F3",
|
||
115: "F4",
|
||
116: "F5",
|
||
117: "F6",
|
||
118: "F7",
|
||
119: "F8",
|
||
120: "F9",
|
||
121: "F10",
|
||
122: "F11",
|
||
123: "F12",
|
||
144: "Numlock",
|
||
145: "Scrolllock"
|
||
},
|
||
PRINTABLE_KEYS: {
|
||
32: " ",
|
||
48: "0",
|
||
49: "1",
|
||
50: "2",
|
||
51: "3",
|
||
52: "4",
|
||
53: "5",
|
||
54: "6",
|
||
55: "7",
|
||
56: "8",
|
||
57: "9",
|
||
59: ";",
|
||
61: "=",
|
||
65: "a",
|
||
66: "b",
|
||
67: "c",
|
||
68: "d",
|
||
69: "e",
|
||
70: "f",
|
||
71: "g",
|
||
72: "h",
|
||
73: "i",
|
||
74: "j",
|
||
75: "k",
|
||
76: "l",
|
||
77: "m",
|
||
78: "n",
|
||
79: "o",
|
||
80: "p",
|
||
81: "q",
|
||
82: "r",
|
||
83: "s",
|
||
84: "t",
|
||
85: "u",
|
||
86: "v",
|
||
87: "w",
|
||
88: "x",
|
||
89: "y",
|
||
90: "z",
|
||
107: "+",
|
||
109: "-",
|
||
110: ".",
|
||
188: ",",
|
||
190: ".",
|
||
191: "/",
|
||
192: "`",
|
||
219: "[",
|
||
220: "\\",
|
||
221: "]",
|
||
222: "'"
|
||
}
|
||
};
|
||
for (var t in e.FUNCTION_KEYS) {
|
||
var i = e.FUNCTION_KEYS[t].toLowerCase();
|
||
e[i] = parseInt(t, 10);
|
||
}
|
||
return n.mixin(e, e.MODIFIER_KEYS), n.mixin(e, e.PRINTABLE_KEYS), n.mixin(e, e.FUNCTION_KEYS),
|
||
e.enter = e["return"], e.escape = e.esc, e.del = e["delete"], e[173] = "-", e;
|
||
}();
|
||
n.mixin(t, i), t.keyCodeToString = function(e) {
|
||
return (i[e] || String.fromCharCode(e)).toLowerCase();
|
||
};
|
||
}), define("ace/lib/useragent", [ "require", "exports", "module" ], function(e, t) {
|
||
if (t.OS = {
|
||
LINUX: "LINUX",
|
||
MAC: "MAC",
|
||
WINDOWS: "WINDOWS"
|
||
}, t.getOS = function() {
|
||
return t.isMac ? t.OS.MAC : t.isLinux ? t.OS.LINUX : t.OS.WINDOWS;
|
||
}, "object" == typeof navigator) {
|
||
var n = (navigator.platform.match(/mac|win|linux/i) || [ "other" ])[0].toLowerCase(), i = navigator.userAgent;
|
||
t.isWin = "win" == n, t.isMac = "mac" == n, t.isLinux = "linux" == n, t.isIE = ("Microsoft Internet Explorer" == navigator.appName || navigator.appName.indexOf("MSAppHost") >= 0) && parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),
|
||
t.isOldIE = t.isIE && t.isIE < 9, t.isGecko = t.isMozilla = window.controllers && "Gecko" === window.navigator.product,
|
||
t.isOldGecko = t.isGecko && parseInt((navigator.userAgent.match(/rv\:(\d+)/) || [])[1], 10) < 4,
|
||
t.isOpera = window.opera && "[object Opera]" == Object.prototype.toString.call(window.opera),
|
||
t.isWebKit = parseFloat(i.split("WebKit/")[1]) || void 0, t.isChrome = parseFloat(i.split(" Chrome/")[1]) || void 0,
|
||
t.isAIR = i.indexOf("AdobeAIR") >= 0, t.isIPad = i.indexOf("iPad") >= 0, t.isTouchPad = i.indexOf("TouchPad") >= 0;
|
||
}
|
||
}), define("ace/lib/event", [ "require", "exports", "module", "./keys", "./useragent", "./dom" ], function(e, t) {
|
||
function n(e, t, n) {
|
||
var a = 0;
|
||
if (a = !o.isOpera || "KeyboardEvent" in window || !o.isMac ? 0 | (t.ctrlKey ? 1 : 0) | (t.altKey ? 2 : 0) | (t.shiftKey ? 4 : 0) | (t.metaKey ? 8 : 0) : 0 | (t.metaKey ? 1 : 0) | (t.altKey ? 2 : 0) | (t.shiftKey ? 4 : 0) | (t.ctrlKey ? 8 : 0),
|
||
!o.isMac && r) {
|
||
if ((r[91] || r[92]) && (a |= 8), r.altGr) {
|
||
if (3 == (3 & a)) return;
|
||
r.altGr = 0;
|
||
}
|
||
if (18 === n || 17 === n) {
|
||
var l = t.location || t.keyLocation;
|
||
if (17 === n && 1 === l) s = t.timeStamp; else if (18 === n && 3 === a && 2 === l) {
|
||
var c = -s;
|
||
s = t.timeStamp, c += s, 3 > c && (r.altGr = !0);
|
||
}
|
||
}
|
||
}
|
||
if (n in i.MODIFIER_KEYS) {
|
||
switch (i.MODIFIER_KEYS[n]) {
|
||
case "Alt":
|
||
a = 2;
|
||
break;
|
||
|
||
case "Shift":
|
||
a = 4;
|
||
break;
|
||
|
||
case "Ctrl":
|
||
a = 1;
|
||
break;
|
||
|
||
default:
|
||
a = 8;
|
||
}
|
||
n = 0;
|
||
}
|
||
return 8 & a && (91 === n || 93 === n) && (n = 0), a || 13 !== n || !t.location && 3 !== t.keyLocation || (e(t, a, -n),
|
||
!t.defaultPrevented) ? a || n in i.FUNCTION_KEYS || n in i.PRINTABLE_KEYS ? e(t, a, n) : !1 : void 0;
|
||
}
|
||
var i = e("./keys"), o = e("./useragent");
|
||
e("./dom"), t.addListener = function(e, t, n) {
|
||
if (e.addEventListener) return e.addEventListener(t, n, !1);
|
||
if (e.attachEvent) {
|
||
var i = function() {
|
||
n.call(e, window.event);
|
||
};
|
||
n._wrapper = i, e.attachEvent("on" + t, i);
|
||
}
|
||
}, t.removeListener = function(e, t, n) {
|
||
return e.removeEventListener ? e.removeEventListener(t, n, !1) : (e.detachEvent && e.detachEvent("on" + t, n._wrapper || n),
|
||
void 0);
|
||
}, t.stopEvent = function(e) {
|
||
return t.stopPropagation(e), t.preventDefault(e), !1;
|
||
}, t.stopPropagation = function(e) {
|
||
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0;
|
||
}, t.preventDefault = function(e) {
|
||
e.preventDefault ? e.preventDefault() : e.returnValue = !1;
|
||
}, t.getButton = function(e) {
|
||
return "dblclick" == e.type ? 0 : "contextmenu" == e.type || e.ctrlKey && o.isMac ? 2 : e.preventDefault ? e.button : {
|
||
1: 0,
|
||
2: 2,
|
||
4: 1
|
||
}[e.button];
|
||
}, t.capture = function(e, n, i) {
|
||
function o(e) {
|
||
n && n(e), i && i(e), t.removeListener(document, "mousemove", n, !0), t.removeListener(document, "mouseup", o, !0),
|
||
t.removeListener(document, "dragstart", o, !0);
|
||
}
|
||
t.addListener(document, "mousemove", n, !0), t.addListener(document, "mouseup", o, !0),
|
||
t.addListener(document, "dragstart", o, !0);
|
||
}, t.addMouseWheelListener = function(e, n) {
|
||
if ("onmousewheel" in e) {
|
||
var i = 8;
|
||
t.addListener(e, "mousewheel", function(e) {
|
||
void 0 !== e.wheelDeltaX ? (e.wheelX = -e.wheelDeltaX / i, e.wheelY = -e.wheelDeltaY / i) : (e.wheelX = 0,
|
||
e.wheelY = -e.wheelDelta / i), n(e);
|
||
});
|
||
} else "onwheel" in e ? t.addListener(e, "wheel", function(e) {
|
||
e.wheelX = 5 * (e.deltaX || 0), e.wheelY = 5 * (e.deltaY || 0), n(e);
|
||
}) : t.addListener(e, "DOMMouseScroll", function(e) {
|
||
e.axis && e.axis == e.HORIZONTAL_AXIS ? (e.wheelX = 5 * (e.detail || 0), e.wheelY = 0) : (e.wheelX = 0,
|
||
e.wheelY = 5 * (e.detail || 0)), n(e);
|
||
});
|
||
}, t.addMultiMouseDownListener = function(e, n, i, r) {
|
||
var s, a, l, c = 0, u = {
|
||
2: "dblclick",
|
||
3: "tripleclick",
|
||
4: "quadclick"
|
||
};
|
||
t.addListener(e, "mousedown", function(e) {
|
||
if (0 != t.getButton(e) ? c = 0 : e.detail > 1 ? (c++, c > 4 && (c = 1)) : c = 1,
|
||
o.isIE) {
|
||
var n = Math.abs(e.clientX - s) > 5 || Math.abs(e.clientY - a) > 5;
|
||
n && (c = 1), 1 == c && (s = e.clientX, a = e.clientY);
|
||
}
|
||
if (i[r]("mousedown", e), c > 4) c = 0; else if (c > 1) return i[r](u[c], e);
|
||
}), o.isOldIE && t.addListener(e, "dblclick", function(e) {
|
||
c = 2, l && clearTimeout(l), l = setTimeout(function() {
|
||
l = null;
|
||
}, n[c - 1] || 600), i[r]("mousedown", e), i[r](u[c], e);
|
||
});
|
||
};
|
||
var r = null, s = 0;
|
||
if (t.addCommandKeyListener = function(e, i) {
|
||
var s = t.addListener;
|
||
if (o.isOldGecko || o.isOpera && !("KeyboardEvent" in window)) {
|
||
var a = null;
|
||
s(e, "keydown", function(e) {
|
||
a = e.keyCode;
|
||
}), s(e, "keypress", function(e) {
|
||
return n(i, e, a);
|
||
});
|
||
} else {
|
||
var l = null;
|
||
s(e, "keydown", function(e) {
|
||
r[e.keyCode] = !0;
|
||
var t = n(i, e, e.keyCode);
|
||
return l = e.defaultPrevented, t;
|
||
}), s(e, "keypress", function(e) {
|
||
l && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && (t.stopEvent(e), l = null);
|
||
}), s(e, "keyup", function(e) {
|
||
r[e.keyCode] = null;
|
||
}), r || (r = Object.create(null), s(window, "focus", function() {
|
||
r = Object.create(null);
|
||
}));
|
||
}
|
||
}, window.postMessage && !o.isOldIE) {
|
||
var a = 1;
|
||
t.nextTick = function(e, n) {
|
||
n = n || window;
|
||
var i = "zero-timeout-message-" + a;
|
||
t.addListener(n, "message", function o(r) {
|
||
r.data == i && (t.stopPropagation(r), t.removeListener(n, "message", o), e());
|
||
}), n.postMessage(i, "*");
|
||
};
|
||
}
|
||
t.nextFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame,
|
||
t.nextFrame = t.nextFrame ? t.nextFrame.bind(window) : function(e) {
|
||
setTimeout(e, 17);
|
||
};
|
||
}), define("ace/lib/lang", [ "require", "exports", "module" ], function(e, t) {
|
||
t.stringReverse = function(e) {
|
||
return e.split("").reverse().join("");
|
||
}, t.stringRepeat = function(e, t) {
|
||
for (var n = ""; t > 0; ) 1 & t && (n += e), (t >>= 1) && (e += e);
|
||
return n;
|
||
};
|
||
var n = /^\s\s*/, i = /\s\s*$/;
|
||
t.stringTrimLeft = function(e) {
|
||
return e.replace(n, "");
|
||
}, t.stringTrimRight = function(e) {
|
||
return e.replace(i, "");
|
||
}, t.copyObject = function(e) {
|
||
var t = {};
|
||
for (var n in e) t[n] = e[n];
|
||
return t;
|
||
}, t.copyArray = function(e) {
|
||
for (var t = [], n = 0, i = e.length; i > n; n++) t[n] = e[n] && "object" == typeof e[n] ? this.copyObject(e[n]) : e[n];
|
||
return t;
|
||
}, t.deepCopy = function(e) {
|
||
if ("object" != typeof e) return e;
|
||
var t = e.constructor();
|
||
for (var n in e) t[n] = "object" == typeof e[n] ? this.deepCopy(e[n]) : e[n];
|
||
return t;
|
||
}, t.arrayToMap = function(e) {
|
||
for (var t = {}, n = 0; n < e.length; n++) t[e[n]] = 1;
|
||
return t;
|
||
}, t.createMap = function(e) {
|
||
var t = Object.create(null);
|
||
for (var n in e) t[n] = e[n];
|
||
return t;
|
||
}, t.arrayRemove = function(e, t) {
|
||
for (var n = 0; n <= e.length; n++) t === e[n] && e.splice(n, 1);
|
||
}, t.escapeRegExp = function(e) {
|
||
return e.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1");
|
||
}, t.escapeHTML = function(e) {
|
||
return e.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<");
|
||
}, t.getMatchOffsets = function(e, t) {
|
||
var n = [];
|
||
return e.replace(t, function(e) {
|
||
n.push({
|
||
offset: arguments[arguments.length - 2],
|
||
length: e.length
|
||
});
|
||
}), n;
|
||
}, t.deferredCall = function(e) {
|
||
var t = null, n = function() {
|
||
t = null, e();
|
||
}, i = function(e) {
|
||
return i.cancel(), t = setTimeout(n, e || 0), i;
|
||
};
|
||
return i.schedule = i, i.call = function() {
|
||
return this.cancel(), e(), i;
|
||
}, i.cancel = function() {
|
||
return clearTimeout(t), t = null, i;
|
||
}, i;
|
||
}, t.delayedCall = function(e, t) {
|
||
var n = null, i = function() {
|
||
n = null, e();
|
||
}, o = function(e) {
|
||
n && clearTimeout(n), n = setTimeout(i, e || t);
|
||
};
|
||
return o.delay = o, o.schedule = function(e) {
|
||
null == n && (n = setTimeout(i, e || 0));
|
||
}, o.call = function() {
|
||
this.cancel(), e();
|
||
}, o.cancel = function() {
|
||
n && clearTimeout(n), n = null;
|
||
}, o.isPending = function() {
|
||
return n;
|
||
}, o;
|
||
};
|
||
}), define("ace/keyboard/textinput", [ "require", "exports", "module", "../lib/event", "../lib/useragent", "../lib/dom", "../lib/lang" ], function(e, t) {
|
||
var n = e("../lib/event"), i = e("../lib/useragent"), o = e("../lib/dom"), r = e("../lib/lang"), s = i.isChrome < 18, a = function(e, t) {
|
||
function a(e) {
|
||
if (!g) {
|
||
if (F) t = 0, n = e ? 0 : u.value.length - 1; else var t = e ? 2 : 1, n = 2;
|
||
try {
|
||
u.setSelectionRange(t, n);
|
||
} catch (i) {}
|
||
}
|
||
}
|
||
function l() {
|
||
g || (u.value = d, i.isWebKit && x.schedule());
|
||
}
|
||
function c() {
|
||
setTimeout(function() {
|
||
m && (u.style.cssText = m, m = ""), null == t.renderer.$keepTextAreaAtCursor && (t.renderer.$keepTextAreaAtCursor = !0,
|
||
t.renderer.$moveTextAreaToCursor());
|
||
}, 0);
|
||
}
|
||
var u = o.createElement("textarea");
|
||
u.className = "ace_text-input", i.isTouchPad && u.setAttribute("x-palm-disable-auto-cap", !0),
|
||
u.wrap = "off", u.autocorrect = "off", u.autocapitalize = "off", u.spellcheck = !1,
|
||
u.style.opacity = "0", e.insertBefore(u, e.firstChild);
|
||
var d = "", h = !1, p = !1, f = !1, g = !1, m = "", v = !0;
|
||
try {
|
||
var b = document.activeElement === u;
|
||
} catch (y) {}
|
||
n.addListener(u, "blur", function() {
|
||
t.onBlur(), b = !1;
|
||
}), n.addListener(u, "focus", function() {
|
||
b = !0, t.onFocus(), a();
|
||
}), this.focus = function() {
|
||
u.focus();
|
||
}, this.blur = function() {
|
||
u.blur();
|
||
}, this.isFocused = function() {
|
||
return b;
|
||
};
|
||
var w = r.delayedCall(function() {
|
||
b && a(v);
|
||
}), x = r.delayedCall(function() {
|
||
g || (u.value = d, b && a());
|
||
});
|
||
i.isWebKit || t.addEventListener("changeSelection", function() {
|
||
t.selection.isEmpty() != v && (v = !v, w.schedule());
|
||
}), l(), b && t.onFocus();
|
||
var C = function(e) {
|
||
return 0 === e.selectionStart && e.selectionEnd === e.value.length;
|
||
};
|
||
if (!u.setSelectionRange && u.createTextRange && (u.setSelectionRange = function(e, t) {
|
||
var n = this.createTextRange();
|
||
n.collapse(!0), n.moveStart("character", e), n.moveEnd("character", t), n.select();
|
||
}, C = function(e) {
|
||
try {
|
||
var t = e.ownerDocument.selection.createRange();
|
||
} catch (n) {}
|
||
return t && t.parentElement() == e ? t.text == e.value : !1;
|
||
}), i.isOldIE) {
|
||
var E = !1, k = function(e) {
|
||
if (!E) {
|
||
var t = u.value;
|
||
if (!g && t && t != d) {
|
||
if (e && t == d[0]) return A.schedule();
|
||
D(t), E = !0, l(), E = !1;
|
||
}
|
||
}
|
||
}, A = r.delayedCall(k);
|
||
n.addListener(u, "propertychange", k);
|
||
var S = {
|
||
13: 1,
|
||
27: 1
|
||
};
|
||
n.addListener(u, "keyup", function(e) {
|
||
return !g || u.value && !S[e.keyCode] || setTimeout(B, 0), (u.value.charCodeAt(0) || 0) < 129 ? A.call() : (g ? N() : M(),
|
||
void 0);
|
||
}), n.addListener(u, "keydown", function() {
|
||
A.schedule(50);
|
||
});
|
||
}
|
||
var _ = function() {
|
||
h ? h = !1 : p ? p = !1 : C(u) ? (t.selectAll(), a()) : F && a(t.selection.isEmpty());
|
||
}, F = null;
|
||
this.setInputHandler = function(e) {
|
||
F = e;
|
||
}, this.getInputHandler = function() {
|
||
return F;
|
||
};
|
||
var T = !1, D = function(e) {
|
||
F && (e = F(e), F = null), f ? (a(), e && t.onPaste(e), f = !1) : e == d.charAt(0) ? T && t.execCommand("del", {
|
||
source: "ace"
|
||
}) : (e.substring(0, 2) == d ? e = e.substr(2) : e.charAt(0) == d.charAt(0) ? e = e.substr(1) : e.charAt(e.length - 1) == d.charAt(0) && (e = e.slice(0, -1)),
|
||
e.charAt(e.length - 1) == d.charAt(0) && (e = e.slice(0, -1)), e && t.onTextInput(e)),
|
||
T && (T = !1);
|
||
}, L = function() {
|
||
if (!g) {
|
||
var e = u.value;
|
||
D(e), l();
|
||
}
|
||
}, $ = function(e) {
|
||
var i = t.getCopyText();
|
||
if (!i) return n.preventDefault(e), void 0;
|
||
var o = e.clipboardData || window.clipboardData;
|
||
if (o && !s) {
|
||
var r = o.setData("Text", i);
|
||
r && (t.onCut(), n.preventDefault(e));
|
||
}
|
||
r || (h = !0, u.value = i, u.select(), setTimeout(function() {
|
||
h = !1, l(), a(), t.onCut();
|
||
}));
|
||
}, I = function(e) {
|
||
var i = t.getCopyText();
|
||
if (!i) return n.preventDefault(e), void 0;
|
||
var o = e.clipboardData || window.clipboardData;
|
||
if (o && !s) {
|
||
var r = o.setData("Text", i);
|
||
r && (t.onCopy(), n.preventDefault(e));
|
||
}
|
||
r || (p = !0, u.value = i, u.select(), setTimeout(function() {
|
||
p = !1, l(), a(), t.onCopy();
|
||
}));
|
||
}, R = function(e) {
|
||
var o = e.clipboardData || window.clipboardData;
|
||
if (o) {
|
||
var r = o.getData("Text");
|
||
r && t.onPaste(r), i.isIE && setTimeout(a), n.preventDefault(e);
|
||
} else u.value = "", f = !0;
|
||
};
|
||
n.addCommandKeyListener(u, t.onCommandKey.bind(t)), n.addListener(u, "select", _),
|
||
n.addListener(u, "input", L), n.addListener(u, "cut", $), n.addListener(u, "copy", I),
|
||
n.addListener(u, "paste", R), "oncut" in u && "oncopy" in u && "onpaste" in u || n.addListener(e, "keydown", function(e) {
|
||
if ((!i.isMac || e.metaKey) && e.ctrlKey) switch (e.keyCode) {
|
||
case 67:
|
||
I(e);
|
||
break;
|
||
|
||
case 86:
|
||
R(e);
|
||
break;
|
||
|
||
case 88:
|
||
$(e);
|
||
}
|
||
});
|
||
var M = function() {
|
||
g || (g = {}, t.onCompositionStart(), setTimeout(N, 0), t.on("mousedown", B), t.selection.isEmpty() || (t.insert(""),
|
||
t.session.markUndoGroup(), t.selection.clearSelection()), t.session.markUndoGroup());
|
||
}, N = function() {
|
||
if (g) {
|
||
var e = u.value.replace(/\x01/g, "");
|
||
if (g.lastValue !== e && (t.onCompositionUpdate(e), g.lastValue && t.undo(), g.lastValue = e,
|
||
g.lastValue)) {
|
||
var n = t.selection.getRange();
|
||
t.insert(g.lastValue), t.session.markUndoGroup(), g.range = t.selection.getRange(),
|
||
t.selection.setRange(n), t.selection.clearSelection();
|
||
}
|
||
}
|
||
}, B = function(e) {
|
||
var n = g;
|
||
g = !1;
|
||
var i = setTimeout(function() {
|
||
i = null;
|
||
var e = u.value.replace(/\x01/g, "");
|
||
g || (e == n.lastValue ? l() : !n.lastValue && e && (l(), D(e)));
|
||
});
|
||
F = function(e) {
|
||
return i && clearTimeout(i), e = e.replace(/\x01/g, ""), e == n.lastValue ? "" : (n.lastValue && i && t.undo(),
|
||
e);
|
||
}, t.onCompositionEnd(), t.removeListener("mousedown", B), "compositionend" == e.type && n.range && t.selection.setRange(n.range);
|
||
}, P = r.delayedCall(N, 50);
|
||
n.addListener(u, "compositionstart", M), i.isGecko ? n.addListener(u, "text", function() {
|
||
P.schedule();
|
||
}) : (n.addListener(u, "keyup", function() {
|
||
P.schedule();
|
||
}), n.addListener(u, "keydown", function() {
|
||
P.schedule();
|
||
})), n.addListener(u, "compositionend", B), this.getElement = function() {
|
||
return u;
|
||
}, this.setReadOnly = function(e) {
|
||
u.readOnly = e;
|
||
}, this.onContextMenu = function(e) {
|
||
T = !0, m || (m = u.style.cssText), u.style.cssText = "z-index:100000;" + (i.isIE ? "opacity:0.1;" : ""),
|
||
a(t.selection.isEmpty()), t._emit("nativecontextmenu", {
|
||
target: t,
|
||
domEvent: e
|
||
});
|
||
var r = t.container.getBoundingClientRect(), s = o.computedStyle(t.container), l = r.top + (parseInt(s.borderTopWidth) || 0), d = r.left + (parseInt(r.borderLeftWidth) || 0), h = r.bottom - l - u.clientHeight, p = function(e) {
|
||
u.style.left = e.clientX - d - 2 + "px", u.style.top = Math.min(e.clientY - l - 2, h) + "px";
|
||
};
|
||
p(e), "mousedown" == e.type && (t.renderer.$keepTextAreaAtCursor && (t.renderer.$keepTextAreaAtCursor = null),
|
||
i.isWin && n.capture(t.container, p, c));
|
||
}, this.onContextMenuClose = c, (!i.isGecko || i.isMac) && n.addListener(u, "contextmenu", function(e) {
|
||
t.textInput.onContextMenu(e), c();
|
||
});
|
||
};
|
||
t.TextInput = a;
|
||
}), define("ace/mouse/default_handlers", [ "require", "exports", "module", "../lib/dom", "../lib/event", "../lib/useragent" ], function(e, t) {
|
||
function n(e) {
|
||
e.$clickSelection = null;
|
||
var t = e.editor;
|
||
t.setDefaultHandler("mousedown", this.onMouseDown.bind(e)), t.setDefaultHandler("dblclick", this.onDoubleClick.bind(e)),
|
||
t.setDefaultHandler("tripleclick", this.onTripleClick.bind(e)), t.setDefaultHandler("quadclick", this.onQuadClick.bind(e)),
|
||
t.setDefaultHandler("mousewheel", this.onMouseWheel.bind(e));
|
||
var n = [ "select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait" ];
|
||
n.forEach(function(t) {
|
||
e[t] = this[t];
|
||
}, this), e.selectByLines = this.extendSelectionBy.bind(e, "getLineRange"), e.selectByWords = this.extendSelectionBy.bind(e, "getWordRange");
|
||
}
|
||
function i(e, t, n, i) {
|
||
return Math.sqrt(Math.pow(n - e, 2) + Math.pow(i - t, 2));
|
||
}
|
||
function o(e, t) {
|
||
if (e.start.row == e.end.row) var n = 2 * t.column - e.start.column - e.end.column; else if (e.start.row != e.end.row - 1 || e.start.column || e.end.column) var n = 2 * t.row - e.start.row - e.end.row; else var n = t.column - 4;
|
||
return 0 > n ? {
|
||
cursor: e.start,
|
||
anchor: e.end
|
||
} : {
|
||
cursor: e.end,
|
||
anchor: e.start
|
||
};
|
||
}
|
||
e("../lib/dom"), e("../lib/event"), e("../lib/useragent");
|
||
var r = 0;
|
||
(function() {
|
||
this.onMouseDown = function(e) {
|
||
var t = e.inSelection(), n = e.getDocumentPosition();
|
||
this.mousedownEvent = e;
|
||
var i = this.editor, o = e.getButton();
|
||
if (0 !== o) {
|
||
var r = i.getSelectionRange(), s = r.isEmpty();
|
||
return s && (i.moveCursorToPosition(n), i.selection.clearSelection()), i.textInput.onContextMenu(e.domEvent),
|
||
void 0;
|
||
}
|
||
return !t || i.isFocused() || (i.focus(), !this.$focusTimout || this.$clickSelection || i.inMultiSelectMode) ? (!t || this.$clickSelection || e.getShiftKey() || i.inMultiSelectMode ? this.startSelect(n) : t && (this.mousedownEvent.time = new Date().getTime(),
|
||
this.startSelect(n)), this.captureMouse(e), e.preventDefault()) : (this.mousedownEvent.time = new Date().getTime(),
|
||
this.setState("focusWait"), this.captureMouse(e), void 0);
|
||
}, this.startSelect = function(e) {
|
||
e = e || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
|
||
var t = this.editor;
|
||
setTimeout(function() {
|
||
this.mousedownEvent.getShiftKey() ? t.selection.selectToPosition(e) : this.$clickSelection || (t.moveCursorToPosition(e),
|
||
t.selection.clearSelection());
|
||
}.bind(this), 0), t.container.setCapture && t.container.setCapture(), t.setStyle("ace_selecting"),
|
||
this.setState("select");
|
||
}, this.select = function() {
|
||
var e, t = this.editor, n = t.renderer.screenToTextCoordinates(this.x, this.y);
|
||
if (this.$clickSelection) {
|
||
var i = this.$clickSelection.comparePoint(n);
|
||
if (-1 == i) e = this.$clickSelection.end; else if (1 == i) e = this.$clickSelection.start; else {
|
||
var r = o(this.$clickSelection, n);
|
||
n = r.cursor, e = r.anchor;
|
||
}
|
||
t.selection.setSelectionAnchor(e.row, e.column);
|
||
}
|
||
t.selection.selectToPosition(n), t.renderer.scrollCursorIntoView();
|
||
}, this.extendSelectionBy = function(e) {
|
||
var t, n = this.editor, i = n.renderer.screenToTextCoordinates(this.x, this.y), r = n.selection[e](i.row, i.column);
|
||
if (this.$clickSelection) {
|
||
var s = this.$clickSelection.comparePoint(r.start), a = this.$clickSelection.comparePoint(r.end);
|
||
if (-1 == s && 0 >= a) t = this.$clickSelection.end, (r.end.row != i.row || r.end.column != i.column) && (i = r.start); else if (1 == a && s >= 0) t = this.$clickSelection.start,
|
||
(r.start.row != i.row || r.start.column != i.column) && (i = r.end); else if (-1 == s && 1 == a) i = r.end,
|
||
t = r.start; else {
|
||
var l = o(this.$clickSelection, i);
|
||
i = l.cursor, t = l.anchor;
|
||
}
|
||
n.selection.setSelectionAnchor(t.row, t.column);
|
||
}
|
||
n.selection.selectToPosition(i), n.renderer.scrollCursorIntoView();
|
||
}, this.selectEnd = this.selectAllEnd = this.selectByWordsEnd = this.selectByLinesEnd = function() {
|
||
this.editor.unsetStyle("ace_selecting"), this.editor.container.releaseCapture && this.editor.container.releaseCapture();
|
||
}, this.focusWait = function() {
|
||
var e = i(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y), t = new Date().getTime();
|
||
(e > r || t - this.mousedownEvent.time > this.$focusTimout) && this.startSelect(this.mousedownEvent.getDocumentPosition());
|
||
}, this.onDoubleClick = function(e) {
|
||
var t = e.getDocumentPosition(), n = this.editor, i = n.session, o = i.getBracketRange(t);
|
||
return o ? (o.isEmpty() && (o.start.column--, o.end.column++), this.$clickSelection = o,
|
||
this.setState("select"), void 0) : (this.$clickSelection = n.selection.getWordRange(t.row, t.column),
|
||
this.setState("selectByWords"), void 0);
|
||
}, this.onTripleClick = function(e) {
|
||
var t = e.getDocumentPosition(), n = this.editor;
|
||
this.setState("selectByLines"), this.$clickSelection = n.selection.getLineRange(t.row);
|
||
}, this.onQuadClick = function() {
|
||
var e = this.editor;
|
||
e.selectAll(), this.$clickSelection = e.getSelectionRange(), this.setState("selectAll");
|
||
}, this.onMouseWheel = function(e) {
|
||
if (!e.getShiftKey() && !e.getAccelKey()) {
|
||
var t = e.domEvent.timeStamp, n = t - (this.$lastScrollTime || 0), i = this.editor, o = i.renderer.isScrollableBy(e.wheelX * e.speed, e.wheelY * e.speed);
|
||
return o || 200 > n ? (this.$lastScrollTime = t, i.renderer.scrollBy(e.wheelX * e.speed, e.wheelY * e.speed),
|
||
e.stop()) : void 0;
|
||
}
|
||
};
|
||
}).call(n.prototype), t.DefaultHandlers = n;
|
||
}), define("ace/mouse/default_gutter_handler", [ "require", "exports", "module", "../lib/dom", "../lib/event" ], function(e, t) {
|
||
function n(e) {
|
||
function t() {
|
||
d = i.createElement("div"), d.className = "ace_gutter-tooltip", d.style.display = "none",
|
||
a.container.appendChild(d);
|
||
}
|
||
function n() {
|
||
d || t();
|
||
var e = u.getDocumentPosition().row, n = l.$annotations[e];
|
||
if (!n) return r();
|
||
var i = a.session.getLength();
|
||
if (e == i) {
|
||
var o = a.renderer.pixelToScreenCoordinates(0, u.y).row, c = u.$pos;
|
||
if (o > a.session.documentToScreenRow(c.row, c.column)) return r();
|
||
}
|
||
h != n && (h = n.text.join("<br/>"), d.style.display = "block", d.innerHTML = h,
|
||
a.on("mousewheel", r), s(u));
|
||
}
|
||
function r() {
|
||
c && (c = clearTimeout(c)), h && (d.style.display = "none", h = null, a.removeEventListener("mousewheel", r));
|
||
}
|
||
function s(e) {
|
||
var t = a.renderer.$gutter.getBoundingClientRect();
|
||
if (d.style.left = e.x + 15 + "px", e.y + 3 * a.renderer.lineHeight + 15 < t.bottom) d.style.bottom = "",
|
||
d.style.top = e.y + 15 + "px"; else {
|
||
d.style.top = "";
|
||
var n = window.innerHeight || document.documentElement.clientHeight;
|
||
d.style.bottom = n - e.y + 5 + "px";
|
||
}
|
||
}
|
||
var a = e.editor, l = a.renderer.$gutterLayer;
|
||
e.editor.setDefaultHandler("guttermousedown", function(t) {
|
||
if (a.isFocused() && 0 == t.getButton()) {
|
||
var n = l.getRegion(t);
|
||
if ("foldWidgets" != n) {
|
||
var i = t.getDocumentPosition().row, o = a.session.selection;
|
||
if (t.getShiftKey()) o.selectTo(i, 0); else {
|
||
if (2 == t.domEvent.detail) return a.selectAll(), t.preventDefault();
|
||
e.$clickSelection = a.selection.getLineRange(i);
|
||
}
|
||
return e.setState("selectByLines"), e.captureMouse(t), t.preventDefault();
|
||
}
|
||
}
|
||
});
|
||
var c, u, d, h;
|
||
e.editor.setDefaultHandler("guttermousemove", function(t) {
|
||
var o = t.domEvent.target || t.domEvent.srcElement;
|
||
return i.hasCssClass(o, "ace_fold-widget") ? r() : (h && s(t), u = t, c || (c = setTimeout(function() {
|
||
c = null, u && !e.isMousePressed ? n() : r();
|
||
}, 50)), void 0);
|
||
}), o.addListener(a.renderer.$gutter, "mouseout", function() {
|
||
u = null, h && !c && (c = setTimeout(function() {
|
||
c = null, r();
|
||
}, 50));
|
||
}), a.on("changeSession", r);
|
||
}
|
||
var i = e("../lib/dom"), o = e("../lib/event");
|
||
t.GutterHandler = n;
|
||
}), define("ace/mouse/mouse_event", [ "require", "exports", "module", "../lib/event", "../lib/useragent" ], function(e, t) {
|
||
var n = e("../lib/event"), i = e("../lib/useragent"), o = t.MouseEvent = function(e, t) {
|
||
this.domEvent = e, this.editor = t, this.x = this.clientX = e.clientX, this.y = this.clientY = e.clientY,
|
||
this.$pos = null, this.$inSelection = null, this.propagationStopped = !1, this.defaultPrevented = !1;
|
||
};
|
||
(function() {
|
||
this.stopPropagation = function() {
|
||
n.stopPropagation(this.domEvent), this.propagationStopped = !0;
|
||
}, this.preventDefault = function() {
|
||
n.preventDefault(this.domEvent), this.defaultPrevented = !0;
|
||
}, this.stop = function() {
|
||
this.stopPropagation(), this.preventDefault();
|
||
}, this.getDocumentPosition = function() {
|
||
return this.$pos ? this.$pos : (this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY),
|
||
this.$pos);
|
||
}, this.inSelection = function() {
|
||
if (null !== this.$inSelection) return this.$inSelection;
|
||
var e = this.editor, t = e.getSelectionRange();
|
||
if (t.isEmpty()) this.$inSelection = !1; else {
|
||
var n = this.getDocumentPosition();
|
||
this.$inSelection = t.contains(n.row, n.column);
|
||
}
|
||
return this.$inSelection;
|
||
}, this.getButton = function() {
|
||
return n.getButton(this.domEvent);
|
||
}, this.getShiftKey = function() {
|
||
return this.domEvent.shiftKey;
|
||
}, this.getAccelKey = i.isMac ? function() {
|
||
return this.domEvent.metaKey;
|
||
} : function() {
|
||
return this.domEvent.ctrlKey;
|
||
};
|
||
}).call(o.prototype);
|
||
}), define("ace/mouse/dragdrop_handler", [ "require", "exports", "module", "../lib/dom", "../lib/event", "../lib/useragent" ], function(e, t) {
|
||
function n(e) {
|
||
function t(e, t) {
|
||
var n = new Date().getTime(), o = !t || e.row != t.row, r = !t || e.column != t.column;
|
||
if (!_ || o || r) m.$blockScrolling += 1, m.moveCursorToPosition(e), m.$blockScrolling -= 1,
|
||
_ = n, F = {
|
||
x: w,
|
||
y: x
|
||
}; else {
|
||
var s = i(F.x, F.y, w, x);
|
||
s > c ? _ = null : n - _ >= l && (m.renderer.scrollCursorIntoView(), _ = null);
|
||
}
|
||
}
|
||
function n(e, t) {
|
||
var n = new Date().getTime(), i = m.renderer.layerConfig.lineHeight, o = m.renderer.layerConfig.characterWidth, r = m.renderer.scroller.getBoundingClientRect(), s = {
|
||
x: {
|
||
left: w - r.left,
|
||
right: r.right - w
|
||
},
|
||
y: {
|
||
top: x - r.top,
|
||
bottom: r.bottom - x
|
||
}
|
||
}, l = Math.min(s.x.left, s.x.right), c = Math.min(s.y.top, s.y.bottom), u = {
|
||
row: e.row,
|
||
column: e.column
|
||
};
|
||
2 >= l / o && (u.column += s.x.left < s.x.right ? -3 : 2), 1 >= c / i && (u.row += s.y.top < s.y.bottom ? -1 : 1);
|
||
var d = e.row != u.row, h = e.column != u.column, p = !t || e.row != t.row;
|
||
d || h && !p ? S ? n - S >= a && m.renderer.scrollCursorIntoView(u) : S = n : S = null;
|
||
}
|
||
function u() {
|
||
var e = k;
|
||
k = m.renderer.screenToTextCoordinates(w, x), t(k, e), n(k, e);
|
||
}
|
||
function d() {
|
||
E = m.selection.toOrientedRange(), y = m.session.addMarker(E, "ace_selection", m.getSelectionStyle()),
|
||
m.clearSelection(), clearInterval(C), C = setInterval(u, 20), D = 0, r.addListener(document, "mousemove", p);
|
||
}
|
||
function h() {
|
||
clearInterval(C), m.session.removeMarker(y), y = null, m.$blockScrolling += 1, m.selection.fromOrientedRange(E),
|
||
m.$blockScrolling -= 1, E = null, D = 0, S = null, _ = null, r.removeListener(document, "mousemove", p);
|
||
}
|
||
function p() {
|
||
null == L && (L = setTimeout(function() {
|
||
null != L && y && h();
|
||
}, 20));
|
||
}
|
||
function f(e) {
|
||
var t = e.types;
|
||
return !t || Array.prototype.some.call(t, function(e) {
|
||
return "text/plain" == e || "Text" == e;
|
||
});
|
||
}
|
||
function g(e) {
|
||
var t = [ "copy", "copymove", "all", "uninitialized" ], n = [ "move", "copymove", "linkmove", "all", "uninitialized" ], i = s.isMac ? e.altKey : e.ctrlKey, o = "uninitialized";
|
||
try {
|
||
o = e.dataTransfer.effectAllowed.toLowerCase();
|
||
} catch (e) {}
|
||
var r = "none";
|
||
return i && t.indexOf(o) >= 0 ? r = "copy" : n.indexOf(o) >= 0 ? r = "move" : t.indexOf(o) >= 0 && (r = "copy"),
|
||
r;
|
||
}
|
||
var m = e.editor, v = o.createElement("img");
|
||
v.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",
|
||
s.isOpera && (v.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;visibility:hidden",
|
||
m.container.appendChild(v));
|
||
var b = [ "dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag" ];
|
||
b.forEach(function(t) {
|
||
e[t] = this[t];
|
||
}, this), m.addEventListener("mousedown", this.onMouseDown.bind(e));
|
||
var y, w, x, C, E, k, A, S, _, F, T = m.container, D = 0;
|
||
this.onDragStart = function(e) {
|
||
if (this.cancelDrag || !T.draggable) {
|
||
var t = this;
|
||
return setTimeout(function() {
|
||
t.startSelect(), t.captureMouse(e);
|
||
}, 0), e.preventDefault();
|
||
}
|
||
s.isOpera && (v.style.visibility = "visible", setTimeout(function() {
|
||
v.style.visibility = "hidden";
|
||
}, 0)), E = m.getSelectionRange();
|
||
var n = e.dataTransfer;
|
||
n.effectAllowed = m.getReadOnly() ? "copy" : "copyMove", n.setDragImage && n.setDragImage(v, 0, 0),
|
||
n.clearData(), n.setData("Text", m.session.getTextRange()), this.setState("drag");
|
||
}, this.onDragEnd = function(e) {
|
||
if (T.draggable = !1, this.setState(null), !m.getReadOnly()) {
|
||
var t = e.dataTransfer.dropEffect;
|
||
A || "move" != t || m.session.remove(m.getSelectionRange()), m.renderer.$cursorLayer.setBlinking(!0);
|
||
}
|
||
this.editor.unsetStyle("ace_dragging");
|
||
}, this.onDragEnter = function(e) {
|
||
return !m.getReadOnly() && f(e.dataTransfer) ? (y || d(), D++, e.dataTransfer.dropEffect = A = g(e),
|
||
r.preventDefault(e)) : void 0;
|
||
}, this.onDragOver = function(e) {
|
||
return !m.getReadOnly() && f(e.dataTransfer) ? (y || (d(), D++), null !== L && (L = null),
|
||
w = e.clientX, x = e.clientY, e.dataTransfer.dropEffect = A = g(e), r.preventDefault(e)) : void 0;
|
||
}, this.onDragLeave = function(e) {
|
||
return D--, 0 >= D && y ? (h(), A = null, r.preventDefault(e)) : void 0;
|
||
}, this.onDrop = function(e) {
|
||
if (y) {
|
||
var t = e.dataTransfer, n = "drag" == this.state;
|
||
if (n) switch (A) {
|
||
case "move":
|
||
E = E.contains(k.row, k.column) ? {
|
||
start: k,
|
||
end: k
|
||
} : m.moveText(E, k);
|
||
break;
|
||
|
||
case "copy":
|
||
E = m.moveText(E, k, !0);
|
||
} else {
|
||
var i = t.getData("Text");
|
||
E = {
|
||
start: k,
|
||
end: m.session.insert(k, i)
|
||
}, m.focus(), A = null;
|
||
}
|
||
return h(), r.preventDefault(e);
|
||
}
|
||
}, r.addListener(T, "dragstart", this.onDragStart.bind(e)), r.addListener(T, "dragend", this.onDragEnd.bind(e)),
|
||
r.addListener(T, "dragenter", this.onDragEnter.bind(e)), r.addListener(T, "dragover", this.onDragOver.bind(e)),
|
||
r.addListener(T, "dragleave", this.onDragLeave.bind(e)), r.addListener(T, "drop", this.onDrop.bind(e));
|
||
var L = null;
|
||
}
|
||
function i(e, t, n, i) {
|
||
return Math.sqrt(Math.pow(n - e, 2) + Math.pow(i - t, 2));
|
||
}
|
||
var o = e("../lib/dom"), r = e("../lib/event"), s = e("../lib/useragent"), a = 200, l = 200, c = 5;
|
||
(function() {
|
||
this.dragWait = function() {
|
||
var e = new Date().getTime() - this.mousedownEvent.time;
|
||
e > this.editor.getDragDelay() && this.startDrag();
|
||
}, this.dragWaitEnd = function() {
|
||
var e = this.editor.container;
|
||
e.draggable = !1, this.startSelect(this.mousedownEvent.getDocumentPosition()), this.selectEnd();
|
||
}, this.dragReadyEnd = function() {
|
||
this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()), this.editor.unsetStyle("ace_dragging"),
|
||
this.dragWaitEnd();
|
||
}, this.startDrag = function() {
|
||
this.cancelDrag = !1;
|
||
var e = this.editor.container;
|
||
e.draggable = !0, this.editor.renderer.$cursorLayer.setBlinking(!1), this.editor.setStyle("ace_dragging"),
|
||
this.setState("dragReady");
|
||
}, this.onMouseDrag = function() {
|
||
var e = this.editor.container;
|
||
if (s.isIE && "dragReady" == this.state) {
|
||
var t = i(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
|
||
t > 3 && e.dragDrop();
|
||
}
|
||
if ("dragWait" === this.state) {
|
||
var t = i(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);
|
||
t > 0 && (e.draggable = !1, this.startSelect(this.mousedownEvent.getDocumentPosition()));
|
||
}
|
||
}, this.onMouseDown = function(e) {
|
||
if (this.$dragEnabled) {
|
||
this.mousedownEvent = e;
|
||
var t = this.editor, n = e.inSelection(), i = e.getButton(), o = e.domEvent.detail || 1;
|
||
if (1 === o && 0 === i && n) {
|
||
this.mousedownEvent.time = new Date().getTime();
|
||
var r = e.domEvent.target || e.domEvent.srcElement;
|
||
if ("unselectable" in r && (r.unselectable = "on"), t.getDragDelay()) {
|
||
if (s.isWebKit) {
|
||
self.cancelDrag = !0;
|
||
var a = t.container;
|
||
a.draggable = !0;
|
||
}
|
||
this.setState("dragWait");
|
||
} else this.startDrag();
|
||
this.captureMouse(e, this.onMouseDrag.bind(this)), e.defaultPrevented = !0;
|
||
}
|
||
}
|
||
};
|
||
}).call(n.prototype), t.DragdropHandler = n;
|
||
}), define("ace/lib/net", [ "require", "exports", "module", "./dom" ], function(e, t) {
|
||
var n = e("./dom");
|
||
t.get = function(e, t) {
|
||
var n = new XMLHttpRequest();
|
||
n.open("GET", e, !0), n.onreadystatechange = function() {
|
||
4 === n.readyState && t(n.responseText);
|
||
}, n.send(null);
|
||
}, t.loadScript = function(e, t) {
|
||
var i = n.getDocumentHead(), o = document.createElement("script");
|
||
o.src = e, i.appendChild(o), o.onload = o.onreadystatechange = function(e, n) {
|
||
(n || !o.readyState || "loaded" == o.readyState || "complete" == o.readyState) && (o = o.onload = o.onreadystatechange = null,
|
||
n || t());
|
||
};
|
||
};
|
||
}), define("ace/lib/event_emitter", [ "require", "exports", "module" ], function(e, t) {
|
||
var n = {}, i = function() {
|
||
this.propagationStopped = !0;
|
||
}, o = function() {
|
||
this.defaultPrevented = !0;
|
||
};
|
||
n._emit = n._dispatchEvent = function(e, t) {
|
||
this._eventRegistry || (this._eventRegistry = {}), this._defaultHandlers || (this._defaultHandlers = {});
|
||
var n = this._eventRegistry[e] || [], r = this._defaultHandlers[e];
|
||
if (n.length || r) {
|
||
"object" == typeof t && t || (t = {}), t.type || (t.type = e), t.stopPropagation || (t.stopPropagation = i),
|
||
t.preventDefault || (t.preventDefault = o), n = n.slice();
|
||
for (var s = 0; s < n.length && (n[s](t, this), !t.propagationStopped); s++) ;
|
||
return r && !t.defaultPrevented ? r(t, this) : void 0;
|
||
}
|
||
}, n._signal = function(e, t) {
|
||
var n = (this._eventRegistry || {})[e];
|
||
if (n) {
|
||
n = n.slice();
|
||
for (var i = 0; i < n.length; i++) n[i](t, this);
|
||
}
|
||
}, n.once = function(e, t) {
|
||
var n = this;
|
||
t && this.addEventListener(e, function i() {
|
||
n.removeEventListener(e, i), t.apply(null, arguments);
|
||
});
|
||
}, n.setDefaultHandler = function(e, t) {
|
||
var n = this._defaultHandlers;
|
||
if (n || (n = this._defaultHandlers = {
|
||
_disabled_: {}
|
||
}), n[e]) {
|
||
var i = n[e], o = n._disabled_[e];
|
||
o || (n._disabled_[e] = o = []), o.push(i);
|
||
var r = o.indexOf(t);
|
||
-1 != r && o.splice(r, 1);
|
||
}
|
||
n[e] = t;
|
||
}, n.removeDefaultHandler = function(e, t) {
|
||
var n = this._defaultHandlers;
|
||
if (n) {
|
||
var i = n._disabled_[e];
|
||
if (n[e] == t) n[e], i && this.setDefaultHandler(e, i.pop()); else if (i) {
|
||
var o = i.indexOf(t);
|
||
-1 != o && i.splice(o, 1);
|
||
}
|
||
}
|
||
}, n.on = n.addEventListener = function(e, t, n) {
|
||
this._eventRegistry = this._eventRegistry || {};
|
||
var i = this._eventRegistry[e];
|
||
return i || (i = this._eventRegistry[e] = []), -1 == i.indexOf(t) && i[n ? "unshift" : "push"](t),
|
||
t;
|
||
}, n.off = n.removeListener = n.removeEventListener = function(e, t) {
|
||
this._eventRegistry = this._eventRegistry || {};
|
||
var n = this._eventRegistry[e];
|
||
if (n) {
|
||
var i = n.indexOf(t);
|
||
-1 !== i && n.splice(i, 1);
|
||
}
|
||
}, n.removeAllListeners = function(e) {
|
||
this._eventRegistry && (this._eventRegistry[e] = []);
|
||
}, t.EventEmitter = n;
|
||
}), define("ace/config", [ "require", "exports", "module", "./lib/lang", "./lib/oop", "./lib/net", "./lib/event_emitter" ], function(e, t, n) {
|
||
"no use strict";
|
||
function i(e) {
|
||
return e.replace(/-(.)/g, function(e, t) {
|
||
return t.toUpperCase();
|
||
});
|
||
}
|
||
var o = e("./lib/lang"), r = e("./lib/oop"), s = e("./lib/net"), a = e("./lib/event_emitter").EventEmitter, l = function() {
|
||
return this;
|
||
}(), c = {
|
||
packaged: !1,
|
||
workerPath: null,
|
||
modePath: null,
|
||
themePath: null,
|
||
basePath: "",
|
||
suffix: ".js",
|
||
$moduleUrls: {}
|
||
};
|
||
t.get = function(e) {
|
||
if (!c.hasOwnProperty(e)) throw new Error("Unknown config key: " + e);
|
||
return c[e];
|
||
}, t.set = function(e, t) {
|
||
if (!c.hasOwnProperty(e)) throw new Error("Unknown config key: " + e);
|
||
c[e] = t;
|
||
}, t.all = function() {
|
||
return o.copyObject(c);
|
||
}, r.implement(t, a), t.moduleUrl = function(e, t) {
|
||
if (c.$moduleUrls[e]) return c.$moduleUrls[e];
|
||
var n = e.split("/");
|
||
t = t || n[n.length - 2] || "";
|
||
var i = "snippets" == t ? "/" : "-", o = n[n.length - 1];
|
||
if ("-" == i) {
|
||
var r = new RegExp("^" + t + "[\\-_]|[\\-_]" + t + "$", "g");
|
||
o = o.replace(r, "");
|
||
}
|
||
(!o || o == t) && n.length > 1 && (o = n[n.length - 2]);
|
||
var s = c[t + "Path"];
|
||
return null == s ? s = c.basePath : "/" == i && (t = i = ""), s && "/" != s.slice(-1) && (s += "/"),
|
||
s + t + i + o + this.get("suffix");
|
||
}, t.setModuleUrl = function(e, t) {
|
||
return c.$moduleUrls[e] = t;
|
||
}, t.$loading = {}, t.loadModule = function(n, i) {
|
||
var o, r;
|
||
Array.isArray(n) && (r = n[0], n = n[1]);
|
||
try {
|
||
o = e(n);
|
||
} catch (a) {}
|
||
if (o && !t.$loading[n]) return i && i(o);
|
||
if (t.$loading[n] || (t.$loading[n] = []), t.$loading[n].push(i), !(t.$loading[n].length > 1)) {
|
||
var l = function() {
|
||
e([ n ], function(e) {
|
||
t._emit("load.module", {
|
||
name: n,
|
||
module: e
|
||
});
|
||
var i = t.$loading[n];
|
||
t.$loading[n] = null, i.forEach(function(t) {
|
||
t && t(e);
|
||
});
|
||
});
|
||
};
|
||
return t.get("packaged") ? (s.loadScript(t.moduleUrl(n, r), l), void 0) : l();
|
||
}
|
||
}, t.init = function() {
|
||
if (c.packaged = e.packaged || n.packaged || l.define && define.packaged, !l.document) return "";
|
||
for (var o = {}, r = "", s = document.getElementsByTagName("script"), a = 0; a < s.length; a++) {
|
||
var u = s[a], d = u.src || u.getAttribute("src");
|
||
if (d) {
|
||
for (var h = u.attributes, p = 0, f = h.length; f > p; p++) {
|
||
var g = h[p];
|
||
0 === g.name.indexOf("data-ace-") && (o[i(g.name.replace(/^data-ace-/, ""))] = g.value);
|
||
}
|
||
var m = d.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);
|
||
m && (r = m[1]);
|
||
}
|
||
}
|
||
r && (o.base = o.base || r, o.packaged = !0), o.basePath = o.base, o.workerPath = o.workerPath || o.base,
|
||
o.modePath = o.modePath || o.base, o.themePath = o.themePath || o.base, delete o.base;
|
||
for (var v in o) "undefined" != typeof o[v] && t.set(v, o[v]);
|
||
};
|
||
var u = {
|
||
setOptions: function(e) {
|
||
Object.keys(e).forEach(function(t) {
|
||
this.setOption(t, e[t]);
|
||
}, this);
|
||
},
|
||
getOptions: function(e) {
|
||
var t = {};
|
||
return e ? Array.isArray(e) || (t = e, e = Object.keys(t)) : e = Object.keys(this.$options),
|
||
e.forEach(function(e) {
|
||
t[e] = this.getOption(e);
|
||
}, this), t;
|
||
},
|
||
setOption: function(e, t) {
|
||
if (this["$" + e] !== t) {
|
||
var n = this.$options[e];
|
||
if (!n) return "undefined" != typeof console && console.warn && console.warn('misspelled option "' + e + '"'),
|
||
void 0;
|
||
if (n.forwardTo) return this[n.forwardTo] && this[n.forwardTo].setOption(e, t);
|
||
n.handlesSet || (this["$" + e] = t), n && n.set && n.set.call(this, t);
|
||
}
|
||
},
|
||
getOption: function(e) {
|
||
var t = this.$options[e];
|
||
return t ? t.forwardTo ? this[t.forwardTo] && this[t.forwardTo].getOption(e) : t && t.get ? t.get.call(this) : this["$" + e] : ("undefined" != typeof console && console.warn && console.warn('misspelled option "' + e + '"'),
|
||
void 0);
|
||
}
|
||
}, d = {};
|
||
t.defineOptions = function(e, t, n) {
|
||
return e.$options || (d[t] = e.$options = {}), Object.keys(n).forEach(function(t) {
|
||
var i = n[t];
|
||
"string" == typeof i && (i = {
|
||
forwardTo: i
|
||
}), i.name || (i.name = t), e.$options[i.name] = i, "initialValue" in i && (e["$" + i.name] = i.initialValue);
|
||
}), r.implement(e, u), this;
|
||
}, t.resetOptions = function(e) {
|
||
Object.keys(e.$options).forEach(function(t) {
|
||
var n = e.$options[t];
|
||
"value" in n && e.setOption(t, n.value);
|
||
});
|
||
}, t.setDefaultValue = function(e, n, i) {
|
||
var o = d[e] || (d[e] = {});
|
||
o[n] && (o.forwardTo ? t.setDefaultValue(o.forwardTo, n, i) : o[n].value = i);
|
||
}, t.setDefaultValues = function(e, n) {
|
||
Object.keys(n).forEach(function(i) {
|
||
t.setDefaultValue(e, i, n[i]);
|
||
});
|
||
};
|
||
}), define("ace/mouse/mouse_handler", [ "require", "exports", "module", "../lib/event", "../lib/useragent", "./default_handlers", "./default_gutter_handler", "./mouse_event", "./dragdrop_handler", "../config" ], function(e, t) {
|
||
var n = e("../lib/event"), i = e("../lib/useragent"), o = e("./default_handlers").DefaultHandlers, r = e("./default_gutter_handler").GutterHandler, s = e("./mouse_event").MouseEvent, a = e("./dragdrop_handler").DragdropHandler, l = e("../config"), c = function(e) {
|
||
this.editor = e, new o(this), new r(this), new a(this);
|
||
var t = e.renderer.getMouseEventTarget();
|
||
n.addListener(t, "click", this.onMouseEvent.bind(this, "click")), n.addListener(t, "mousemove", this.onMouseMove.bind(this, "mousemove")),
|
||
n.addMultiMouseDownListener(t, [ 300, 300, 250 ], this, "onMouseEvent"), e.renderer.scrollBarV && (n.addMultiMouseDownListener(e.renderer.scrollBarV.inner, [ 300, 300, 250 ], this, "onMouseEvent"),
|
||
n.addMultiMouseDownListener(e.renderer.scrollBarH.inner, [ 300, 300, 250 ], this, "onMouseEvent")),
|
||
n.addMouseWheelListener(e.container, this.onMouseWheel.bind(this, "mousewheel"));
|
||
var i = e.renderer.$gutter;
|
||
n.addListener(i, "mousedown", this.onMouseEvent.bind(this, "guttermousedown")),
|
||
n.addListener(i, "click", this.onMouseEvent.bind(this, "gutterclick")), n.addListener(i, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick")),
|
||
n.addListener(i, "mousemove", this.onMouseEvent.bind(this, "guttermousemove")),
|
||
n.addListener(t, "mousedown", function() {
|
||
e.focus();
|
||
}), n.addListener(i, "mousedown", function(t) {
|
||
return e.focus(), n.preventDefault(t);
|
||
});
|
||
};
|
||
(function() {
|
||
this.onMouseEvent = function(e, t) {
|
||
this.editor._emit(e, new s(t, this.editor));
|
||
}, this.onMouseMove = function(e, t) {
|
||
var n = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
|
||
n && n.length && this.editor._emit(e, new s(t, this.editor));
|
||
}, this.onMouseWheel = function(e, t) {
|
||
var n = new s(t, this.editor);
|
||
n.speed = 2 * this.$scrollSpeed, n.wheelX = t.wheelX, n.wheelY = t.wheelY, this.editor._emit(e, n);
|
||
}, this.setState = function(e) {
|
||
this.state = e;
|
||
}, this.captureMouse = function(e, t) {
|
||
this.x = e.x, this.y = e.y, this.isMousePressed = !0;
|
||
var o = this.editor.renderer;
|
||
o.$keepTextAreaAtCursor && (o.$keepTextAreaAtCursor = null);
|
||
var r = this, s = function(e) {
|
||
r.x = e.clientX, r.y = e.clientY, t && t(e);
|
||
}, a = function(e) {
|
||
clearInterval(c), l(), r[r.state + "End"] && r[r.state + "End"](e), r.$clickSelection = null,
|
||
null == o.$keepTextAreaAtCursor && (o.$keepTextAreaAtCursor = !0, o.$moveTextAreaToCursor()),
|
||
r.isMousePressed = !1, r.onMouseEvent("mouseup", e);
|
||
}, l = function() {
|
||
r[r.state] && r[r.state]();
|
||
};
|
||
if (i.isOldIE && "dblclick" == e.domEvent.type) return setTimeout(function() {
|
||
a(e);
|
||
});
|
||
n.capture(this.editor.container, s, a);
|
||
var c = setInterval(l, 20);
|
||
};
|
||
}).call(c.prototype), l.defineOptions(c.prototype, "mouseHandler", {
|
||
scrollSpeed: {
|
||
initialValue: 2
|
||
},
|
||
dragDelay: {
|
||
initialValue: 150
|
||
},
|
||
dragEnabled: {
|
||
initialValue: !0
|
||
},
|
||
focusTimout: {
|
||
initialValue: 0
|
||
}
|
||
}), t.MouseHandler = c;
|
||
}), define("ace/mouse/fold_handler", [ "require", "exports", "module" ], function(e, t) {
|
||
function n(e) {
|
||
e.on("click", function(t) {
|
||
var n = t.getDocumentPosition(), i = e.session, o = i.getFoldAt(n.row, n.column, 1);
|
||
o && (t.getAccelKey() ? i.removeFold(o) : i.expandFold(o), t.stop());
|
||
}), e.on("gutterclick", function(t) {
|
||
var n = e.renderer.$gutterLayer.getRegion(t);
|
||
if ("foldWidgets" == n) {
|
||
var i = t.getDocumentPosition().row, o = e.session;
|
||
o.foldWidgets && o.foldWidgets[i] && e.session.onFoldWidgetClick(i, t), e.isFocused() || e.focus(),
|
||
t.stop();
|
||
}
|
||
}), e.on("gutterdblclick", function(t) {
|
||
var n = e.renderer.$gutterLayer.getRegion(t);
|
||
if ("foldWidgets" == n) {
|
||
var i = t.getDocumentPosition().row, o = e.session, r = o.getParentFoldRangeData(i, !0), s = r.range || r.firstRange;
|
||
if (s) {
|
||
var i = s.start.row, a = o.getFoldAt(i, o.getLine(i).length, 1);
|
||
a ? o.removeFold(a) : (o.addFold("...", s), e.renderer.scrollCursorIntoView({
|
||
row: s.start.row,
|
||
column: 0
|
||
}));
|
||
}
|
||
t.stop();
|
||
}
|
||
});
|
||
}
|
||
t.FoldHandler = n;
|
||
}), define("ace/keyboard/keybinding", [ "require", "exports", "module", "../lib/keys", "../lib/event" ], function(e, t) {
|
||
var n = e("../lib/keys"), i = e("../lib/event"), o = function(e) {
|
||
this.$editor = e, this.$data = {}, this.$handlers = [], this.setDefaultHandler(e.commands);
|
||
};
|
||
(function() {
|
||
this.setDefaultHandler = function(e) {
|
||
this.removeKeyboardHandler(this.$defaultHandler), this.$defaultHandler = e, this.addKeyboardHandler(e, 0),
|
||
this.$data = {
|
||
editor: this.$editor
|
||
};
|
||
}, this.setKeyboardHandler = function(e) {
|
||
var t = this.$handlers;
|
||
if (t[t.length - 1] != e) {
|
||
for (;t[t.length - 1] && t[t.length - 1] != this.$defaultHandler; ) this.removeKeyboardHandler(t[t.length - 1]);
|
||
this.addKeyboardHandler(e, 1);
|
||
}
|
||
}, this.addKeyboardHandler = function(e, t) {
|
||
if (e) {
|
||
var n = this.$handlers.indexOf(e);
|
||
-1 != n && this.$handlers.splice(n, 1), void 0 == t ? this.$handlers.push(e) : this.$handlers.splice(t, 0, e),
|
||
-1 == n && e.attach && e.attach(this.$editor);
|
||
}
|
||
}, this.removeKeyboardHandler = function(e) {
|
||
var t = this.$handlers.indexOf(e);
|
||
return -1 == t ? !1 : (this.$handlers.splice(t, 1), e.detach && e.detach(this.$editor),
|
||
!0);
|
||
}, this.getKeyboardHandler = function() {
|
||
return this.$handlers[this.$handlers.length - 1];
|
||
}, this.$callKeyboardHandlers = function(e, t, n, o) {
|
||
for (var r, s = !1, a = this.$editor.commands, l = this.$handlers.length; l-- && (r = this.$handlers[l].handleKeyboard(this.$data, e, t, n, o),
|
||
!(r && r.command && (s = "null" == r.command ? !0 : a.exec(r.command, this.$editor, r.args, o),
|
||
s && o && -1 != e && 1 != r.passEvent && 1 != r.command.passEvent && i.stopEvent(o),
|
||
s))); ) ;
|
||
return s;
|
||
}, this.onCommandKey = function(e, t, i) {
|
||
var o = n.keyCodeToString(i);
|
||
this.$callKeyboardHandlers(t, o, i, e);
|
||
}, this.onTextInput = function(e) {
|
||
var t = this.$callKeyboardHandlers(-1, e);
|
||
t || this.$editor.commands.exec("insertstring", this.$editor, e);
|
||
};
|
||
}).call(o.prototype), t.KeyBinding = o;
|
||
}), define("ace/range", [ "require", "exports", "module" ], function(e, t) {
|
||
var n = function(e, t) {
|
||
return e.row - t.row || e.column - t.column;
|
||
}, i = function(e, t, n, i) {
|
||
this.start = {
|
||
row: e,
|
||
column: t
|
||
}, this.end = {
|
||
row: n,
|
||
column: i
|
||
};
|
||
};
|
||
(function() {
|
||
this.isEqual = function(e) {
|
||
return this.start.row === e.start.row && this.end.row === e.end.row && this.start.column === e.start.column && this.end.column === e.end.column;
|
||
}, this.toString = function() {
|
||
return "Range: [" + this.start.row + "/" + this.start.column + "] -> [" + this.end.row + "/" + this.end.column + "]";
|
||
}, this.contains = function(e, t) {
|
||
return 0 == this.compare(e, t);
|
||
}, this.compareRange = function(e) {
|
||
var t, n = e.end, i = e.start;
|
||
return t = this.compare(n.row, n.column), 1 == t ? (t = this.compare(i.row, i.column),
|
||
1 == t ? 2 : 0 == t ? 1 : 0) : -1 == t ? -2 : (t = this.compare(i.row, i.column),
|
||
-1 == t ? -1 : 1 == t ? 42 : 0);
|
||
}, this.comparePoint = function(e) {
|
||
return this.compare(e.row, e.column);
|
||
}, this.containsRange = function(e) {
|
||
return 0 == this.comparePoint(e.start) && 0 == this.comparePoint(e.end);
|
||
}, this.intersects = function(e) {
|
||
var t = this.compareRange(e);
|
||
return -1 == t || 0 == t || 1 == t;
|
||
}, this.isEnd = function(e, t) {
|
||
return this.end.row == e && this.end.column == t;
|
||
}, this.isStart = function(e, t) {
|
||
return this.start.row == e && this.start.column == t;
|
||
}, this.setStart = function(e, t) {
|
||
"object" == typeof e ? (this.start.column = e.column, this.start.row = e.row) : (this.start.row = e,
|
||
this.start.column = t);
|
||
}, this.setEnd = function(e, t) {
|
||
"object" == typeof e ? (this.end.column = e.column, this.end.row = e.row) : (this.end.row = e,
|
||
this.end.column = t);
|
||
}, this.inside = function(e, t) {
|
||
return 0 == this.compare(e, t) ? this.isEnd(e, t) || this.isStart(e, t) ? !1 : !0 : !1;
|
||
}, this.insideStart = function(e, t) {
|
||
return 0 == this.compare(e, t) ? this.isEnd(e, t) ? !1 : !0 : !1;
|
||
}, this.insideEnd = function(e, t) {
|
||
return 0 == this.compare(e, t) ? this.isStart(e, t) ? !1 : !0 : !1;
|
||
}, this.compare = function(e, t) {
|
||
return this.isMultiLine() || e !== this.start.row ? e < this.start.row ? -1 : e > this.end.row ? 1 : this.start.row === e ? t >= this.start.column ? 0 : -1 : this.end.row === e ? t <= this.end.column ? 0 : 1 : 0 : t < this.start.column ? -1 : t > this.end.column ? 1 : 0;
|
||
}, this.compareStart = function(e, t) {
|
||
return this.start.row == e && this.start.column == t ? -1 : this.compare(e, t);
|
||
}, this.compareEnd = function(e, t) {
|
||
return this.end.row == e && this.end.column == t ? 1 : this.compare(e, t);
|
||
}, this.compareInside = function(e, t) {
|
||
return this.end.row == e && this.end.column == t ? 1 : this.start.row == e && this.start.column == t ? -1 : this.compare(e, t);
|
||
}, this.clipRows = function(e, t) {
|
||
if (this.end.row > t) var n = {
|
||
row: t + 1,
|
||
column: 0
|
||
}; else if (this.end.row < e) var n = {
|
||
row: e,
|
||
column: 0
|
||
};
|
||
if (this.start.row > t) var o = {
|
||
row: t + 1,
|
||
column: 0
|
||
}; else if (this.start.row < e) var o = {
|
||
row: e,
|
||
column: 0
|
||
};
|
||
return i.fromPoints(o || this.start, n || this.end);
|
||
}, this.extend = function(e, t) {
|
||
var n = this.compare(e, t);
|
||
if (0 == n) return this;
|
||
if (-1 == n) var o = {
|
||
row: e,
|
||
column: t
|
||
}; else var r = {
|
||
row: e,
|
||
column: t
|
||
};
|
||
return i.fromPoints(o || this.start, r || this.end);
|
||
}, this.isEmpty = function() {
|
||
return this.start.row === this.end.row && this.start.column === this.end.column;
|
||
}, this.isMultiLine = function() {
|
||
return this.start.row !== this.end.row;
|
||
}, this.clone = function() {
|
||
return i.fromPoints(this.start, this.end);
|
||
}, this.collapseRows = function() {
|
||
return 0 == this.end.column ? new i(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0) : new i(this.start.row, 0, this.end.row, 0);
|
||
}, this.toScreenRange = function(e) {
|
||
var t = e.documentToScreenPosition(this.start), n = e.documentToScreenPosition(this.end);
|
||
return new i(t.row, t.column, n.row, n.column);
|
||
}, this.moveBy = function(e, t) {
|
||
this.start.row += e, this.start.column += t, this.end.row += e, this.end.column += t;
|
||
};
|
||
}).call(i.prototype), i.fromPoints = function(e, t) {
|
||
return new i(e.row, e.column, t.row, t.column);
|
||
}, i.comparePoints = n, i.comparePoints = function(e, t) {
|
||
return e.row - t.row || e.column - t.column;
|
||
}, t.Range = i;
|
||
}), define("ace/selection", [ "require", "exports", "module", "./lib/oop", "./lib/lang", "./lib/event_emitter", "./range" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/lang"), o = e("./lib/event_emitter").EventEmitter, r = e("./range").Range, s = function(e) {
|
||
this.session = e, this.doc = e.getDocument(), this.clearSelection(), this.lead = this.selectionLead = this.doc.createAnchor(0, 0),
|
||
this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);
|
||
var t = this;
|
||
this.lead.on("change", function(e) {
|
||
t._emit("changeCursor"), t.$isEmpty || t._emit("changeSelection"), t.$keepDesiredColumnOnChange || e.old.column == e.value.column || (t.$desiredColumn = null);
|
||
}), this.selectionAnchor.on("change", function() {
|
||
t.$isEmpty || t._emit("changeSelection");
|
||
});
|
||
};
|
||
(function() {
|
||
n.implement(this, o), this.isEmpty = function() {
|
||
return this.$isEmpty || this.anchor.row == this.lead.row && this.anchor.column == this.lead.column;
|
||
}, this.isMultiLine = function() {
|
||
return this.isEmpty() ? !1 : this.getRange().isMultiLine();
|
||
}, this.getCursor = function() {
|
||
return this.lead.getPosition();
|
||
}, this.setSelectionAnchor = function(e, t) {
|
||
this.anchor.setPosition(e, t), this.$isEmpty && (this.$isEmpty = !1, this._emit("changeSelection"));
|
||
}, this.getSelectionAnchor = function() {
|
||
return this.$isEmpty ? this.getSelectionLead() : this.anchor.getPosition();
|
||
}, this.getSelectionLead = function() {
|
||
return this.lead.getPosition();
|
||
}, this.shiftSelection = function(e) {
|
||
if (this.$isEmpty) return this.moveCursorTo(this.lead.row, this.lead.column + e),
|
||
void 0;
|
||
var t = this.getSelectionAnchor(), n = this.getSelectionLead(), i = this.isBackwards();
|
||
i && 0 === t.column || this.setSelectionAnchor(t.row, t.column + e), (i || 0 !== n.column) && this.$moveSelection(function() {
|
||
this.moveCursorTo(n.row, n.column + e);
|
||
});
|
||
}, this.isBackwards = function() {
|
||
var e = this.anchor, t = this.lead;
|
||
return e.row > t.row || e.row == t.row && e.column > t.column;
|
||
}, this.getRange = function() {
|
||
var e = this.anchor, t = this.lead;
|
||
return this.isEmpty() ? r.fromPoints(t, t) : this.isBackwards() ? r.fromPoints(t, e) : r.fromPoints(e, t);
|
||
}, this.clearSelection = function() {
|
||
this.$isEmpty || (this.$isEmpty = !0, this._emit("changeSelection"));
|
||
}, this.selectAll = function() {
|
||
var e = this.doc.getLength() - 1;
|
||
this.setSelectionAnchor(0, 0), this.moveCursorTo(e, this.doc.getLine(e).length);
|
||
}, this.setRange = this.setSelectionRange = function(e, t) {
|
||
t ? (this.setSelectionAnchor(e.end.row, e.end.column), this.selectTo(e.start.row, e.start.column)) : (this.setSelectionAnchor(e.start.row, e.start.column),
|
||
this.selectTo(e.end.row, e.end.column)), this.getRange().isEmpty() && (this.$isEmpty = !0),
|
||
this.$desiredColumn = null;
|
||
}, this.$moveSelection = function(e) {
|
||
var t = this.lead;
|
||
this.$isEmpty && this.setSelectionAnchor(t.row, t.column), e.call(this);
|
||
}, this.selectTo = function(e, t) {
|
||
this.$moveSelection(function() {
|
||
this.moveCursorTo(e, t);
|
||
});
|
||
}, this.selectToPosition = function(e) {
|
||
this.$moveSelection(function() {
|
||
this.moveCursorToPosition(e);
|
||
});
|
||
}, this.selectUp = function() {
|
||
this.$moveSelection(this.moveCursorUp);
|
||
}, this.selectDown = function() {
|
||
this.$moveSelection(this.moveCursorDown);
|
||
}, this.selectRight = function() {
|
||
this.$moveSelection(this.moveCursorRight);
|
||
}, this.selectLeft = function() {
|
||
this.$moveSelection(this.moveCursorLeft);
|
||
}, this.selectLineStart = function() {
|
||
this.$moveSelection(this.moveCursorLineStart);
|
||
}, this.selectLineEnd = function() {
|
||
this.$moveSelection(this.moveCursorLineEnd);
|
||
}, this.selectFileEnd = function() {
|
||
this.$moveSelection(this.moveCursorFileEnd);
|
||
}, this.selectFileStart = function() {
|
||
this.$moveSelection(this.moveCursorFileStart);
|
||
}, this.selectWordRight = function() {
|
||
this.$moveSelection(this.moveCursorWordRight);
|
||
}, this.selectWordLeft = function() {
|
||
this.$moveSelection(this.moveCursorWordLeft);
|
||
}, this.getWordRange = function(e, t) {
|
||
if ("undefined" == typeof t) {
|
||
var n = e || this.lead;
|
||
e = n.row, t = n.column;
|
||
}
|
||
return this.session.getWordRange(e, t);
|
||
}, this.selectWord = function() {
|
||
this.setSelectionRange(this.getWordRange());
|
||
}, this.selectAWord = function() {
|
||
var e = this.getCursor(), t = this.session.getAWordRange(e.row, e.column);
|
||
this.setSelectionRange(t);
|
||
}, this.getLineRange = function(e, t) {
|
||
var n, i = "number" == typeof e ? e : this.lead.row, o = this.session.getFoldLine(i);
|
||
return o ? (i = o.start.row, n = o.end.row) : n = i, t === !0 ? new r(i, 0, n, this.session.getLine(n).length) : new r(i, 0, n + 1, 0);
|
||
}, this.selectLine = function() {
|
||
this.setSelectionRange(this.getLineRange());
|
||
}, this.moveCursorUp = function() {
|
||
this.moveCursorBy(-1, 0);
|
||
}, this.moveCursorDown = function() {
|
||
this.moveCursorBy(1, 0);
|
||
}, this.moveCursorLeft = function() {
|
||
var e, t = this.lead.getPosition();
|
||
if (e = this.session.getFoldAt(t.row, t.column, -1)) this.moveCursorTo(e.start.row, e.start.column); else if (0 == t.column) t.row > 0 && this.moveCursorTo(t.row - 1, this.doc.getLine(t.row - 1).length); else {
|
||
var n = this.session.getTabSize();
|
||
this.session.isTabStop(t) && this.doc.getLine(t.row).slice(t.column - n, t.column).split(" ").length - 1 == n ? this.moveCursorBy(0, -n) : this.moveCursorBy(0, -1);
|
||
}
|
||
}, this.moveCursorRight = function() {
|
||
var e, t = this.lead.getPosition();
|
||
if (e = this.session.getFoldAt(t.row, t.column, 1)) this.moveCursorTo(e.end.row, e.end.column); else if (this.lead.column == this.doc.getLine(this.lead.row).length) this.lead.row < this.doc.getLength() - 1 && this.moveCursorTo(this.lead.row + 1, 0); else {
|
||
var n = this.session.getTabSize(), t = this.lead;
|
||
this.session.isTabStop(t) && this.doc.getLine(t.row).slice(t.column, t.column + n).split(" ").length - 1 == n ? this.moveCursorBy(0, n) : this.moveCursorBy(0, 1);
|
||
}
|
||
}, this.moveCursorLineStart = function() {
|
||
var e = this.lead.row, t = this.lead.column, n = this.session.documentToScreenRow(e, t), i = this.session.screenToDocumentPosition(n, 0), o = this.session.getDisplayLine(e, null, i.row, i.column), r = o.match(/^\s*/);
|
||
r[0].length == t || this.session.$useEmacsStyleLineStart || (i.column += r[0].length),
|
||
this.moveCursorToPosition(i);
|
||
}, this.moveCursorLineEnd = function() {
|
||
var e = this.lead, t = this.session.getDocumentLastRowColumnPosition(e.row, e.column);
|
||
if (this.lead.column == t.column) {
|
||
var n = this.session.getLine(t.row);
|
||
if (t.column == n.length) {
|
||
var i = n.search(/\s+$/);
|
||
i > 0 && (t.column = i);
|
||
}
|
||
}
|
||
this.moveCursorTo(t.row, t.column);
|
||
}, this.moveCursorFileEnd = function() {
|
||
var e = this.doc.getLength() - 1, t = this.doc.getLine(e).length;
|
||
this.moveCursorTo(e, t);
|
||
}, this.moveCursorFileStart = function() {
|
||
this.moveCursorTo(0, 0);
|
||
}, this.moveCursorLongWordRight = function() {
|
||
var e, t = this.lead.row, n = this.lead.column, i = this.doc.getLine(t), o = i.substring(n);
|
||
this.session.nonTokenRe.lastIndex = 0, this.session.tokenRe.lastIndex = 0;
|
||
var r = this.session.getFoldAt(t, n, 1);
|
||
return r ? (this.moveCursorTo(r.end.row, r.end.column), void 0) : ((e = this.session.nonTokenRe.exec(o)) && (n += this.session.nonTokenRe.lastIndex,
|
||
this.session.nonTokenRe.lastIndex = 0, o = i.substring(n)), n >= i.length ? (this.moveCursorTo(t, i.length),
|
||
this.moveCursorRight(), t < this.doc.getLength() - 1 && this.moveCursorWordRight(),
|
||
void 0) : ((e = this.session.tokenRe.exec(o)) && (n += this.session.tokenRe.lastIndex,
|
||
this.session.tokenRe.lastIndex = 0), this.moveCursorTo(t, n), void 0));
|
||
}, this.moveCursorLongWordLeft = function() {
|
||
var e, t = this.lead.row, n = this.lead.column;
|
||
if (e = this.session.getFoldAt(t, n, -1)) return this.moveCursorTo(e.start.row, e.start.column),
|
||
void 0;
|
||
var o = this.session.getFoldStringAt(t, n, -1);
|
||
null == o && (o = this.doc.getLine(t).substring(0, n));
|
||
var r, s = i.stringReverse(o);
|
||
return this.session.nonTokenRe.lastIndex = 0, this.session.tokenRe.lastIndex = 0,
|
||
(r = this.session.nonTokenRe.exec(s)) && (n -= this.session.nonTokenRe.lastIndex,
|
||
s = s.slice(this.session.nonTokenRe.lastIndex), this.session.nonTokenRe.lastIndex = 0),
|
||
0 >= n ? (this.moveCursorTo(t, 0), this.moveCursorLeft(), t > 0 && this.moveCursorWordLeft(),
|
||
void 0) : ((r = this.session.tokenRe.exec(s)) && (n -= this.session.tokenRe.lastIndex,
|
||
this.session.tokenRe.lastIndex = 0), this.moveCursorTo(t, n), void 0);
|
||
}, this.$shortWordEndIndex = function(e) {
|
||
var t, n, i = 0, o = /\s/, r = this.session.tokenRe;
|
||
if (r.lastIndex = 0, t = this.session.tokenRe.exec(e)) i = this.session.tokenRe.lastIndex; else {
|
||
for (;(n = e[i]) && o.test(n); ) i++;
|
||
if (1 > i) for (r.lastIndex = 0; (n = e[i]) && !r.test(n); ) if (r.lastIndex = 0,
|
||
i++, o.test(n)) {
|
||
if (i > 2) {
|
||
i--;
|
||
break;
|
||
}
|
||
for (;(n = e[i]) && o.test(n); ) i++;
|
||
if (i > 2) break;
|
||
}
|
||
}
|
||
return r.lastIndex = 0, i;
|
||
}, this.moveCursorShortWordRight = function() {
|
||
var e = this.lead.row, t = this.lead.column, n = this.doc.getLine(e), i = n.substring(t), o = this.session.getFoldAt(e, t, 1);
|
||
if (o) return this.moveCursorTo(o.end.row, o.end.column);
|
||
if (t == n.length) {
|
||
var r = this.doc.getLength();
|
||
do e++, i = this.doc.getLine(e); while (r > e && /^\s*$/.test(i));
|
||
/^\s+/.test(i) || (i = ""), t = 0;
|
||
}
|
||
var s = this.$shortWordEndIndex(i);
|
||
this.moveCursorTo(e, t + s);
|
||
}, this.moveCursorShortWordLeft = function() {
|
||
var e, t = this.lead.row, n = this.lead.column;
|
||
if (e = this.session.getFoldAt(t, n, -1)) return this.moveCursorTo(e.start.row, e.start.column);
|
||
var o = this.session.getLine(t).substring(0, n);
|
||
if (0 == n) {
|
||
do t--, o = this.doc.getLine(t); while (t > 0 && /^\s*$/.test(o));
|
||
n = o.length, /\s+$/.test(o) || (o = "");
|
||
}
|
||
var r = i.stringReverse(o), s = this.$shortWordEndIndex(r);
|
||
return this.moveCursorTo(t, n - s);
|
||
}, this.moveCursorWordRight = function() {
|
||
this.session.$selectLongWords ? this.moveCursorLongWordRight() : this.moveCursorShortWordRight();
|
||
}, this.moveCursorWordLeft = function() {
|
||
this.session.$selectLongWords ? this.moveCursorLongWordLeft() : this.moveCursorShortWordLeft();
|
||
}, this.moveCursorBy = function(e, t) {
|
||
var n = this.session.documentToScreenPosition(this.lead.row, this.lead.column);
|
||
0 === t && (this.$desiredColumn ? n.column = this.$desiredColumn : this.$desiredColumn = n.column);
|
||
var i = this.session.screenToDocumentPosition(n.row + e, n.column);
|
||
this.moveCursorTo(i.row, i.column + t, 0 === t);
|
||
}, this.moveCursorToPosition = function(e) {
|
||
this.moveCursorTo(e.row, e.column);
|
||
}, this.moveCursorTo = function(e, t, n) {
|
||
var i = this.session.getFoldAt(e, t, 1);
|
||
i && (e = i.start.row, t = i.start.column), this.$keepDesiredColumnOnChange = !0,
|
||
this.lead.setPosition(e, t), this.$keepDesiredColumnOnChange = !1, n || (this.$desiredColumn = null);
|
||
}, this.moveCursorToScreen = function(e, t, n) {
|
||
var i = this.session.screenToDocumentPosition(e, t);
|
||
this.moveCursorTo(i.row, i.column, n);
|
||
}, this.detach = function() {
|
||
this.lead.detach(), this.anchor.detach(), this.session = this.doc = null;
|
||
}, this.fromOrientedRange = function(e) {
|
||
this.setSelectionRange(e, e.cursor == e.start), this.$desiredColumn = e.desiredColumn || this.$desiredColumn;
|
||
}, this.toOrientedRange = function(e) {
|
||
var t = this.getRange();
|
||
return e ? (e.start.column = t.start.column, e.start.row = t.start.row, e.end.column = t.end.column,
|
||
e.end.row = t.end.row) : e = t, e.cursor = this.isBackwards() ? e.start : e.end,
|
||
e.desiredColumn = this.$desiredColumn, e;
|
||
}, this.toJSON = function() {
|
||
if (this.rangeCount) var e = this.ranges.map(function(e) {
|
||
var t = e.clone();
|
||
return t.isBackwards = e.cursor == e.start, t;
|
||
}); else {
|
||
var e = this.getRange();
|
||
e.isBackwards = this.isBackwards();
|
||
}
|
||
return e;
|
||
}, this.fromJSON = function(e) {
|
||
if (void 0 == e.start) {
|
||
if (this.rangeList) {
|
||
this.toSingleRange(e[0]);
|
||
for (var t = e.length; t--; ) {
|
||
var n = r.fromPoints(e[t].start, e[t].end);
|
||
e.isBackwards && (n.cursor = n.start), this.addRange(n, !0);
|
||
}
|
||
return;
|
||
}
|
||
e = e[0];
|
||
}
|
||
this.rangeList && this.toSingleRange(e), this.setSelectionRange(e, e.isBackwards);
|
||
}, this.isEqual = function(e) {
|
||
if ((e.length || this.rangeCount) && e.length != this.rangeCount) return !1;
|
||
if (!e.length || !this.ranges) return this.getRange().isEqual(e);
|
||
for (var t = this.ranges.length; t--; ) if (!this.ranges[t].isEqual(e[t])) return !1;
|
||
return !0;
|
||
};
|
||
}).call(s.prototype), t.Selection = s;
|
||
}), define("ace/tokenizer", [ "require", "exports", "module" ], function(e, t) {
|
||
var n = 1e3, i = function(e) {
|
||
this.states = e, this.regExps = {}, this.matchMappings = {};
|
||
for (var t in this.states) {
|
||
for (var n = this.states[t], i = [], o = 0, r = this.matchMappings[t] = {
|
||
defaultToken: "text"
|
||
}, s = "g", a = [], l = 0; l < n.length; l++) {
|
||
var c = n[l];
|
||
if (c.defaultToken && (r.defaultToken = c.defaultToken), c.caseInsensitive && (s = "gi"),
|
||
null != c.regex) {
|
||
c.regex instanceof RegExp && (c.regex = c.regex.toString().slice(1, -1));
|
||
var u = c.regex, d = new RegExp("(?:(" + u + ")|(.))").exec("a").length - 2;
|
||
if (Array.isArray(c.token)) if (1 == c.token.length || 1 == d) c.token = c.token[0]; else {
|
||
if (d - 1 != c.token.length) throw new Error("number of classes and regexp groups in '" + c.token + "'\n'" + c.regex + "' doesn't match\n" + (d - 1) + "!=" + c.token.length);
|
||
c.tokenArray = c.token, c.token = null, c.onMatch = this.$arrayTokens;
|
||
} else "function" != typeof c.token || c.onMatch || (c.onMatch = d > 1 ? this.$applyToken : c.token);
|
||
d > 1 && (/\\\d/.test(c.regex) ? u = c.regex.replace(/\\([0-9]+)/g, function(e, t) {
|
||
return "\\" + (parseInt(t, 10) + o + 1);
|
||
}) : (d = 1, u = this.removeCapturingGroups(c.regex)), c.splitRegex || "string" == typeof c.token || a.push(c)),
|
||
r[o] = l, o += d, i.push(u), c.onMatch || (c.onMatch = null), c.__proto__ = null;
|
||
}
|
||
}
|
||
a.forEach(function(e) {
|
||
e.splitRegex = this.createSplitterRegexp(e.regex, s);
|
||
}, this), this.regExps[t] = new RegExp("(" + i.join(")|(") + ")|($)", s);
|
||
}
|
||
};
|
||
(function() {
|
||
this.$setMaxTokenCount = function(e) {
|
||
n = 0 | e;
|
||
}, this.$applyToken = function(e) {
|
||
var t = this.splitRegex.exec(e).slice(1), n = this.token.apply(this, t);
|
||
if ("string" == typeof n) return [ {
|
||
type: n,
|
||
value: e
|
||
} ];
|
||
for (var i = [], o = 0, r = n.length; r > o; o++) t[o] && (i[i.length] = {
|
||
type: n[o],
|
||
value: t[o]
|
||
});
|
||
return i;
|
||
}, this.$arrayTokens = function(e) {
|
||
if (!e) return [];
|
||
var t = this.splitRegex.exec(e);
|
||
if (!t) return "text";
|
||
for (var n = [], i = this.tokenArray, o = 0, r = i.length; r > o; o++) t[o + 1] && (n[n.length] = {
|
||
type: i[o],
|
||
value: t[o + 1]
|
||
});
|
||
return n;
|
||
}, this.removeCapturingGroups = function(e) {
|
||
var t = e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g, function(e, t) {
|
||
return t ? "(?:" : e;
|
||
});
|
||
return t;
|
||
}, this.createSplitterRegexp = function(e, t) {
|
||
if (-1 != e.indexOf("(?=")) {
|
||
var n = 0, i = !1, o = {};
|
||
e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function(e, t, r, s, a, l) {
|
||
return i ? i = "]" != a : a ? i = !0 : s ? (n == o.stack && (o.end = l + 1, o.stack = -1),
|
||
n--) : r && (n++, 1 != r.length && (o.stack = n, o.start = l)), e;
|
||
}), null != o.end && /^\)*$/.test(e.substr(o.end)) && (e = e.substring(0, o.start) + e.substr(o.end));
|
||
}
|
||
return new RegExp(e, (t || "").replace("g", ""));
|
||
}, this.getLineTokens = function(e, t) {
|
||
if (t && "string" != typeof t) {
|
||
var i = t.slice(0);
|
||
t = i[0];
|
||
} else var i = [];
|
||
var o = t || "start", r = this.states[o], s = this.matchMappings[o], a = this.regExps[o];
|
||
a.lastIndex = 0;
|
||
for (var l, c = [], u = 0, d = {
|
||
type: null,
|
||
value: ""
|
||
}; l = a.exec(e); ) {
|
||
var h = s.defaultToken, p = null, f = l[0], g = a.lastIndex;
|
||
if (g - f.length > u) {
|
||
var m = e.substring(u, g - f.length);
|
||
d.type == h ? d.value += m : (d.type && c.push(d), d = {
|
||
type: h,
|
||
value: m
|
||
});
|
||
}
|
||
for (var v = 0; v < l.length - 2; v++) if (void 0 !== l[v + 1]) {
|
||
p = r[s[v]], h = p.onMatch ? p.onMatch(f, o, i) : p.token, p.next && (o = "string" == typeof p.next ? p.next : p.next(o, i),
|
||
r = this.states[o], r || (window.console && console.error && console.error(o, "doesn't exist"),
|
||
o = "start", r = this.states[o]), s = this.matchMappings[o], u = g, a = this.regExps[o],
|
||
a.lastIndex = g);
|
||
break;
|
||
}
|
||
if (f) if ("string" == typeof h) p && p.merge === !1 || d.type !== h ? (d.type && c.push(d),
|
||
d = {
|
||
type: h,
|
||
value: f
|
||
}) : d.value += f; else if (h) {
|
||
d.type && c.push(d), d = {
|
||
type: null,
|
||
value: ""
|
||
};
|
||
for (var v = 0; v < h.length; v++) c.push(h[v]);
|
||
}
|
||
if (u == e.length) break;
|
||
if (u = g, c.length > n) {
|
||
for (;u < e.length; ) d.type && c.push(d), d = {
|
||
value: e.substring(u, u += 2e3),
|
||
type: "overflow"
|
||
};
|
||
o = "start", i = [];
|
||
break;
|
||
}
|
||
}
|
||
return d.type && c.push(d), {
|
||
tokens: c,
|
||
state: i.length ? i : o
|
||
};
|
||
};
|
||
}).call(i.prototype), t.Tokenizer = i;
|
||
}), define("ace/mode/text_highlight_rules", [ "require", "exports", "module", "../lib/lang" ], function(e, t) {
|
||
var n = e("../lib/lang"), i = function() {
|
||
this.$rules = {
|
||
start: [ {
|
||
token: "empty_line",
|
||
regex: "^$"
|
||
}, {
|
||
defaultToken: "text"
|
||
} ]
|
||
};
|
||
};
|
||
(function() {
|
||
this.addRules = function(e, t) {
|
||
if (t) for (var n in e) {
|
||
for (var i = e[n], o = 0; o < i.length; o++) {
|
||
var r = i[o];
|
||
r.next && ("string" != typeof r.next ? r.nextState && 0 !== r.nextState.indexOf(t) && (r.nextState = t + r.nextState) : 0 !== r.next.indexOf(t) && (r.next = t + r.next));
|
||
}
|
||
this.$rules[t + n] = i;
|
||
} else for (var n in e) this.$rules[n] = e[n];
|
||
}, this.getRules = function() {
|
||
return this.$rules;
|
||
}, this.embedRules = function(e, t, i, o, r) {
|
||
var s = new e().getRules();
|
||
if (o) for (var a = 0; a < o.length; a++) o[a] = t + o[a]; else {
|
||
o = [];
|
||
for (var l in s) o.push(t + l);
|
||
}
|
||
if (this.addRules(s, t), i) for (var c = Array.prototype[r ? "push" : "unshift"], a = 0; a < o.length; a++) c.apply(this.$rules[o[a]], n.deepCopy(i));
|
||
this.$embeds || (this.$embeds = []), this.$embeds.push(t);
|
||
}, this.getEmbeds = function() {
|
||
return this.$embeds;
|
||
};
|
||
var e = function(e, t) {
|
||
return "start" != e && t.unshift(this.nextState, e), this.nextState;
|
||
}, t = function(e, t) {
|
||
return t[0] !== e ? "start" : (t.shift(), t.shift());
|
||
};
|
||
this.normalizeRules = function() {
|
||
function n(r) {
|
||
var s = o[r];
|
||
s.processed = !0;
|
||
for (var a = 0; a < s.length; a++) {
|
||
var l = s[a];
|
||
!l.regex && l.start && (l.regex = l.start, l.next || (l.next = []), l.next.push({
|
||
defaultToken: l.token
|
||
}, {
|
||
token: l.token + ".end",
|
||
regex: l.end || l.start,
|
||
next: "pop"
|
||
}), l.token = l.token + ".start", l.push = !0);
|
||
var c = l.next || l.push;
|
||
if (c && Array.isArray(c)) {
|
||
var u = l.stateName;
|
||
u || (u = l.token, "string" != typeof u && (u = u[0] || ""), o[u] && (u += i++)),
|
||
o[u] = c, l.next = u, n(u);
|
||
} else "pop" == c && (l.next = t);
|
||
if (l.push && (l.nextState = l.next || l.push, l.next = e, delete l.push), l.rules) for (var d in l.rules) o[d] ? o[d].push && o[d].push.apply(o[d], l.rules[d]) : o[d] = l.rules[d];
|
||
if (l.include || "string" == typeof l) var h = l.include || l, p = o[h]; else Array.isArray(l) && (p = l);
|
||
if (p) {
|
||
var f = [ a, 1 ].concat(p);
|
||
l.noEscape && (f = f.filter(function(e) {
|
||
return !e.next;
|
||
})), s.splice.apply(s, f), a--, p = null;
|
||
}
|
||
l.keywordMap && (l.token = this.createKeywordMapper(l.keywordMap, l.defaultToken || "text", l.caseInsensitive),
|
||
delete l.defaultToken);
|
||
}
|
||
}
|
||
var i = 0, o = this.$rules;
|
||
Object.keys(o).forEach(n, this);
|
||
}, this.createKeywordMapper = function(e, t, n, i) {
|
||
var o = Object.create(null);
|
||
return Object.keys(e).forEach(function(t) {
|
||
var r = e[t];
|
||
n && (r = r.toLowerCase());
|
||
for (var s = r.split(i || "|"), a = s.length; a--; ) o[s[a]] = t;
|
||
}), Object.getPrototypeOf(o) && (o.__proto__ = null), this.$keywordList = Object.keys(o),
|
||
e = null, n ? function(e) {
|
||
return o[e.toLowerCase()] || t;
|
||
} : function(e) {
|
||
return o[e] || t;
|
||
};
|
||
}, this.getKeywords = function() {
|
||
return this.$keywords;
|
||
};
|
||
}).call(i.prototype), t.TextHighlightRules = i;
|
||
}), define("ace/mode/behaviour", [ "require", "exports", "module" ], function(e, t) {
|
||
var n = function() {
|
||
this.$behaviours = {};
|
||
};
|
||
(function() {
|
||
this.add = function(e, t, n) {
|
||
switch (void 0) {
|
||
case this.$behaviours:
|
||
this.$behaviours = {};
|
||
|
||
case this.$behaviours[e]:
|
||
this.$behaviours[e] = {};
|
||
}
|
||
this.$behaviours[e][t] = n;
|
||
}, this.addBehaviours = function(e) {
|
||
for (var t in e) for (var n in e[t]) this.add(t, n, e[t][n]);
|
||
}, this.remove = function(e) {
|
||
this.$behaviours && this.$behaviours[e] && delete this.$behaviours[e];
|
||
}, this.inherit = function(e, t) {
|
||
if ("function" == typeof e) var n = new e().getBehaviours(t); else var n = e.getBehaviours(t);
|
||
this.addBehaviours(n);
|
||
}, this.getBehaviours = function(e) {
|
||
if (e) {
|
||
for (var t = {}, n = 0; n < e.length; n++) this.$behaviours[e[n]] && (t[e[n]] = this.$behaviours[e[n]]);
|
||
return t;
|
||
}
|
||
return this.$behaviours;
|
||
};
|
||
}).call(n.prototype), t.Behaviour = n;
|
||
}), define("ace/unicode", [ "require", "exports", "module" ], function(e, t) {
|
||
function n(e) {
|
||
var n = /\w{4}/g;
|
||
for (var i in e) t.packages[i] = e[i].replace(n, "\\u$&");
|
||
}
|
||
t.packages = {}, n({
|
||
L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",
|
||
Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",
|
||
Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",
|
||
Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",
|
||
Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",
|
||
Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",
|
||
M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",
|
||
Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",
|
||
Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",
|
||
Me: "0488048906DE20DD-20E020E2-20E4A670-A672",
|
||
N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",
|
||
Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",
|
||
Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",
|
||
No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",
|
||
P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",
|
||
Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",
|
||
Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",
|
||
Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",
|
||
Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",
|
||
Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",
|
||
Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",
|
||
Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",
|
||
S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",
|
||
Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",
|
||
Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",
|
||
Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",
|
||
So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",
|
||
Z: "002000A01680180E2000-200A20282029202F205F3000",
|
||
Zs: "002000A01680180E2000-200A202F205F3000",
|
||
Zl: "2028",
|
||
Zp: "2029",
|
||
C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",
|
||
Cc: "0000-001F007F-009F",
|
||
Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",
|
||
Co: "E000-F8FF",
|
||
Cs: "D800-DFFF",
|
||
Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"
|
||
});
|
||
}), define("ace/token_iterator", [ "require", "exports", "module" ], function(e, t) {
|
||
var n = function(e, t, n) {
|
||
this.$session = e, this.$row = t, this.$rowTokens = e.getTokens(t);
|
||
var i = e.getTokenAt(t, n);
|
||
this.$tokenIndex = i ? i.index : -1;
|
||
};
|
||
(function() {
|
||
this.stepBackward = function() {
|
||
for (this.$tokenIndex -= 1; this.$tokenIndex < 0; ) {
|
||
if (this.$row -= 1, this.$row < 0) return this.$row = 0, null;
|
||
this.$rowTokens = this.$session.getTokens(this.$row), this.$tokenIndex = this.$rowTokens.length - 1;
|
||
}
|
||
return this.$rowTokens[this.$tokenIndex];
|
||
}, this.stepForward = function() {
|
||
this.$tokenIndex += 1;
|
||
for (var e; this.$tokenIndex >= this.$rowTokens.length; ) {
|
||
if (this.$row += 1, e || (e = this.$session.getLength()), this.$row >= e) return this.$row = e - 1,
|
||
null;
|
||
this.$rowTokens = this.$session.getTokens(this.$row), this.$tokenIndex = 0;
|
||
}
|
||
return this.$rowTokens[this.$tokenIndex];
|
||
}, this.getCurrentToken = function() {
|
||
return this.$rowTokens[this.$tokenIndex];
|
||
}, this.getCurrentTokenRow = function() {
|
||
return this.$row;
|
||
}, this.getCurrentTokenColumn = function() {
|
||
var e = this.$rowTokens, t = this.$tokenIndex, n = e[t].start;
|
||
if (void 0 !== n) return n;
|
||
for (n = 0; t > 0; ) t -= 1, n += e[t].value.length;
|
||
return n;
|
||
};
|
||
}).call(n.prototype), t.TokenIterator = n;
|
||
}), define("ace/mode/text", [ "require", "exports", "module", "../tokenizer", "./text_highlight_rules", "./behaviour", "../unicode", "../lib/lang", "../token_iterator", "../range" ], function(e, t) {
|
||
var n = e("../tokenizer").Tokenizer, i = e("./text_highlight_rules").TextHighlightRules, o = e("./behaviour").Behaviour, r = e("../unicode"), s = e("../lib/lang"), a = e("../token_iterator").TokenIterator, l = e("../range").Range, c = function() {
|
||
this.HighlightRules = i, this.$behaviour = new o();
|
||
};
|
||
(function() {
|
||
this.tokenRe = new RegExp("^[" + r.packages.L + r.packages.Mn + r.packages.Mc + r.packages.Nd + r.packages.Pc + "\\$_]+", "g"),
|
||
this.nonTokenRe = new RegExp("^(?:[^" + r.packages.L + r.packages.Mn + r.packages.Mc + r.packages.Nd + r.packages.Pc + "\\$_]|s])+", "g"),
|
||
this.getTokenizer = function() {
|
||
return this.$tokenizer || (this.$highlightRules = new this.HighlightRules(), this.$tokenizer = new n(this.$highlightRules.getRules())),
|
||
this.$tokenizer;
|
||
}, this.lineCommentStart = "", this.blockComment = "", this.toggleCommentLines = function(e, t, n, i) {
|
||
function o(e) {
|
||
for (var t = n; i >= t; t++) e(r.getLine(t), t);
|
||
}
|
||
var r = t.doc, a = !0, l = !0, c = 1/0, u = t.getTabSize(), d = !1;
|
||
if (this.lineCommentStart) {
|
||
if (Array.isArray(this.lineCommentStart)) var h = this.lineCommentStart.map(s.escapeRegExp).join("|"), p = this.lineCommentStart[0]; else var h = s.escapeRegExp(this.lineCommentStart), p = this.lineCommentStart;
|
||
h = new RegExp("^(\\s*)(?:" + h + ") ?"), d = t.getUseSoftTabs();
|
||
var f = function(e, t) {
|
||
var n = e.match(h);
|
||
if (n) {
|
||
var i = n[1].length, o = n[0].length;
|
||
b(e, i, o) || " " != n[0][o - 1] || o--, r.removeInLine(t, i, o);
|
||
}
|
||
}, g = p + " ", m = function(e, t) {
|
||
(!a || /\S/.test(e)) && (b(e, c, c) ? r.insertInLine({
|
||
row: t,
|
||
column: c
|
||
}, g) : r.insertInLine({
|
||
row: t,
|
||
column: c
|
||
}, p));
|
||
}, v = function(e) {
|
||
return h.test(e);
|
||
}, b = function(e, t, n) {
|
||
for (var i = 0; t-- && " " == e.charAt(t); ) i++;
|
||
if (0 != i % u) return !1;
|
||
for (var i = 0; " " == e.charAt(n++); ) i++;
|
||
return u > 2 ? i % u != u - 1 : 0 == i % u;
|
||
};
|
||
} else {
|
||
if (!this.blockComment) return !1;
|
||
var p = this.blockComment.start, y = this.blockComment.end, h = new RegExp("^(\\s*)(?:" + s.escapeRegExp(p) + ")"), w = new RegExp("(?:" + s.escapeRegExp(y) + ")\\s*$"), m = function(e, t) {
|
||
v(e, t) || (!a || /\S/.test(e)) && (r.insertInLine({
|
||
row: t,
|
||
column: e.length
|
||
}, y), r.insertInLine({
|
||
row: t,
|
||
column: c
|
||
}, p));
|
||
}, f = function(e, t) {
|
||
var n;
|
||
(n = e.match(w)) && r.removeInLine(t, e.length - n[0].length, e.length), (n = e.match(h)) && r.removeInLine(t, n[1].length, n[0].length);
|
||
}, v = function(e, n) {
|
||
if (h.test(e)) return !0;
|
||
for (var i = t.getTokens(n), o = 0; o < i.length; o++) if ("comment" === i[o].type) return !0;
|
||
};
|
||
}
|
||
var x = 1/0;
|
||
o(function(e, t) {
|
||
var n = e.search(/\S/);
|
||
-1 !== n ? (c > n && (c = n), l && !v(e, t) && (l = !1)) : x > e.length && (x = e.length);
|
||
}), 1/0 == c && (c = x, a = !1, l = !1), d && 0 != c % u && (c = Math.floor(c / u) * u),
|
||
o(l ? f : m);
|
||
}, this.toggleBlockComment = function(e, t, n, i) {
|
||
var o = this.blockComment;
|
||
if (o) {
|
||
!o.start && o[0] && (o = o[0]);
|
||
var r = new a(t, i.row, i.column), s = r.getCurrentToken();
|
||
t.selection;
|
||
var c, u, d = t.selection.toOrientedRange();
|
||
if (s && /comment/.test(s.type)) {
|
||
for (var h, p; s && /comment/.test(s.type); ) {
|
||
var f = s.value.indexOf(o.start);
|
||
if (-1 != f) {
|
||
var g = r.getCurrentTokenRow(), m = r.getCurrentTokenColumn() + f;
|
||
h = new l(g, m, g, m + o.start.length);
|
||
break;
|
||
}
|
||
s = r.stepBackward();
|
||
}
|
||
for (var r = new a(t, i.row, i.column), s = r.getCurrentToken(); s && /comment/.test(s.type); ) {
|
||
var f = s.value.indexOf(o.end);
|
||
if (-1 != f) {
|
||
var g = r.getCurrentTokenRow(), m = r.getCurrentTokenColumn() + f;
|
||
p = new l(g, m, g, m + o.end.length);
|
||
break;
|
||
}
|
||
s = r.stepForward();
|
||
}
|
||
p && t.remove(p), h && (t.remove(h), c = h.start.row, u = -o.start.length);
|
||
} else u = o.start.length, c = n.start.row, t.insert(n.end, o.end), t.insert(n.start, o.start);
|
||
d.start.row == c && (d.start.column += u), d.end.row == c && (d.end.column += u),
|
||
t.selection.fromOrientedRange(d);
|
||
}
|
||
}, this.getNextLineIndent = function(e, t) {
|
||
return this.$getIndent(t);
|
||
}, this.checkOutdent = function() {
|
||
return !1;
|
||
}, this.autoOutdent = function() {}, this.$getIndent = function(e) {
|
||
return e.match(/^\s*/)[0];
|
||
}, this.createWorker = function() {
|
||
return null;
|
||
}, this.createModeDelegates = function(e) {
|
||
this.$embeds = [], this.$modes = {};
|
||
for (var t in e) e[t] && (this.$embeds.push(t), this.$modes[t] = new e[t]());
|
||
for (var n = [ "toggleCommentLines", "getNextLineIndent", "checkOutdent", "autoOutdent", "transformAction", "getCompletions" ], t = 0; t < n.length; t++) !function(e) {
|
||
var i = n[t], o = e[i];
|
||
e[n[t]] = function() {
|
||
return this.$delegator(i, arguments, o);
|
||
};
|
||
}(this);
|
||
}, this.$delegator = function(e, t, n) {
|
||
var i = t[0];
|
||
"string" != typeof i && (i = i[0]);
|
||
for (var o = 0; o < this.$embeds.length; o++) if (this.$modes[this.$embeds[o]]) {
|
||
var r = i.split(this.$embeds[o]);
|
||
if (!r[0] && r[1]) {
|
||
t[0] = r[1];
|
||
var s = this.$modes[this.$embeds[o]];
|
||
return s[e].apply(s, t);
|
||
}
|
||
}
|
||
var a = n.apply(this, t);
|
||
return n ? a : void 0;
|
||
}, this.transformAction = function(e, t) {
|
||
if (this.$behaviour) {
|
||
var n = this.$behaviour.getBehaviours();
|
||
for (var i in n) if (n[i][t]) {
|
||
var o = n[i][t].apply(this, arguments);
|
||
if (o) return o;
|
||
}
|
||
}
|
||
}, this.getKeywords = function(e) {
|
||
if (!this.completionKeywords) {
|
||
var t = this.$tokenizer.rules, n = [];
|
||
for (var i in t) for (var o = t[i], r = 0, s = o.length; s > r; r++) if ("string" == typeof o[r].token) /keyword|support|storage/.test(o[r].token) && n.push(o[r].regex); else if ("object" == typeof o[r].token) for (var a = 0, l = o[r].token.length; l > a; a++) if (/keyword|support|storage/.test(o[r].token[a])) {
|
||
var i = o[r].regex.match(/\(.+?\)/g)[a];
|
||
n.push(i.substr(1, i.length - 2));
|
||
}
|
||
this.completionKeywords = n;
|
||
}
|
||
return e ? n.concat(this.$keywordList || []) : this.$keywordList;
|
||
}, this.$createKeywordList = function() {
|
||
return this.$highlightRules || this.getTokenizer(), this.$keywordList = this.$highlightRules.$keywordList || [];
|
||
}, this.getCompletions = function() {
|
||
var e = this.$keywordList || this.$createKeywordList();
|
||
return e.map(function(e) {
|
||
return {
|
||
name: e,
|
||
value: e,
|
||
score: 0,
|
||
meta: "keyword"
|
||
};
|
||
});
|
||
};
|
||
}).call(c.prototype), t.Mode = c;
|
||
}), define("ace/anchor", [ "require", "exports", "module", "./lib/oop", "./lib/event_emitter" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/event_emitter").EventEmitter, o = t.Anchor = function(e, t, n) {
|
||
this.$onChange = this.onChange.bind(this), this.attach(e), "undefined" == typeof n ? this.setPosition(t.row, t.column) : this.setPosition(t, n);
|
||
};
|
||
(function() {
|
||
n.implement(this, i), this.getPosition = function() {
|
||
return this.$clipPositionToDocument(this.row, this.column);
|
||
}, this.getDocument = function() {
|
||
return this.document;
|
||
}, this.$insertRight = !1, this.onChange = function(e) {
|
||
var t = e.data, n = t.range;
|
||
if (!(n.start.row == n.end.row && n.start.row != this.row || n.start.row > this.row || n.start.row == this.row && n.start.column > this.column)) {
|
||
var i = this.row, o = this.column, r = n.start, s = n.end;
|
||
"insertText" === t.action ? r.row === i && r.column <= o ? r.column === o && this.$insertRight || (r.row === s.row ? o += s.column - r.column : (o -= r.column,
|
||
i += s.row - r.row)) : r.row !== s.row && r.row < i && (i += s.row - r.row) : "insertLines" === t.action ? r.row <= i && (i += s.row - r.row) : "removeText" === t.action ? r.row === i && r.column < o ? o = s.column >= o ? r.column : Math.max(0, o - (s.column - r.column)) : r.row !== s.row && r.row < i ? (s.row === i && (o = Math.max(0, o - s.column) + r.column),
|
||
i -= s.row - r.row) : s.row === i && (i -= s.row - r.row, o = Math.max(0, o - s.column) + r.column) : "removeLines" == t.action && r.row <= i && (s.row <= i ? i -= s.row - r.row : (i = r.row,
|
||
o = 0)), this.setPosition(i, o, !0);
|
||
}
|
||
}, this.setPosition = function(e, t, n) {
|
||
var i;
|
||
if (i = n ? {
|
||
row: e,
|
||
column: t
|
||
} : this.$clipPositionToDocument(e, t), this.row != i.row || this.column != i.column) {
|
||
var o = {
|
||
row: this.row,
|
||
column: this.column
|
||
};
|
||
this.row = i.row, this.column = i.column, this._emit("change", {
|
||
old: o,
|
||
value: i
|
||
});
|
||
}
|
||
}, this.detach = function() {
|
||
this.document.removeEventListener("change", this.$onChange);
|
||
}, this.attach = function(e) {
|
||
this.document = e || this.document, this.document.on("change", this.$onChange);
|
||
}, this.$clipPositionToDocument = function(e, t) {
|
||
var n = {};
|
||
return e >= this.document.getLength() ? (n.row = Math.max(0, this.document.getLength() - 1),
|
||
n.column = this.document.getLine(n.row).length) : 0 > e ? (n.row = 0, n.column = 0) : (n.row = e,
|
||
n.column = Math.min(this.document.getLine(n.row).length, Math.max(0, t))), 0 > t && (n.column = 0),
|
||
n;
|
||
};
|
||
}).call(o.prototype);
|
||
}), define("ace/document", [ "require", "exports", "module", "./lib/oop", "./lib/event_emitter", "./range", "./anchor" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/event_emitter").EventEmitter, o = e("./range").Range, r = e("./anchor").Anchor, s = function(e) {
|
||
this.$lines = [], 0 == e.length ? this.$lines = [ "" ] : Array.isArray(e) ? this._insertLines(0, e) : this.insert({
|
||
row: 0,
|
||
column: 0
|
||
}, e);
|
||
};
|
||
(function() {
|
||
n.implement(this, i), this.setValue = function(e) {
|
||
var t = this.getLength();
|
||
this.remove(new o(0, 0, t, this.getLine(t - 1).length)), this.insert({
|
||
row: 0,
|
||
column: 0
|
||
}, e);
|
||
}, this.getValue = function() {
|
||
return this.getAllLines().join(this.getNewLineCharacter());
|
||
}, this.createAnchor = function(e, t) {
|
||
return new r(this, e, t);
|
||
}, this.$split = 0 == "aaa".split(/a/).length ? function(e) {
|
||
return e.replace(/\r\n|\r/g, "\n").split("\n");
|
||
} : function(e) {
|
||
return e.split(/\r\n|\r|\n/);
|
||
}, this.$detectNewLine = function(e) {
|
||
var t = e.match(/^.*?(\r\n|\r|\n)/m);
|
||
this.$autoNewLine = t ? t[1] : "\n";
|
||
}, this.getNewLineCharacter = function() {
|
||
switch (this.$newLineMode) {
|
||
case "windows":
|
||
return "\r\n";
|
||
|
||
case "unix":
|
||
return "\n";
|
||
|
||
default:
|
||
return this.$autoNewLine;
|
||
}
|
||
}, this.$autoNewLine = "\n", this.$newLineMode = "auto", this.setNewLineMode = function(e) {
|
||
this.$newLineMode !== e && (this.$newLineMode = e);
|
||
}, this.getNewLineMode = function() {
|
||
return this.$newLineMode;
|
||
}, this.isNewLine = function(e) {
|
||
return "\r\n" == e || "\r" == e || "\n" == e;
|
||
}, this.getLine = function(e) {
|
||
return this.$lines[e] || "";
|
||
}, this.getLines = function(e, t) {
|
||
return this.$lines.slice(e, t + 1);
|
||
}, this.getAllLines = function() {
|
||
return this.getLines(0, this.getLength());
|
||
}, this.getLength = function() {
|
||
return this.$lines.length;
|
||
}, this.getTextRange = function(e) {
|
||
if (e.start.row == e.end.row) return this.getLine(e.start.row).substring(e.start.column, e.end.column);
|
||
var t = this.getLines(e.start.row, e.end.row);
|
||
t[0] = (t[0] || "").substring(e.start.column);
|
||
var n = t.length - 1;
|
||
return e.end.row - e.start.row == n && (t[n] = t[n].substring(0, e.end.column)),
|
||
t.join(this.getNewLineCharacter());
|
||
}, this.$clipPosition = function(e) {
|
||
var t = this.getLength();
|
||
return e.row >= t ? (e.row = Math.max(0, t - 1), e.column = this.getLine(t - 1).length) : e.row < 0 && (e.row = 0),
|
||
e;
|
||
}, this.insert = function(e, t) {
|
||
if (!t || 0 === t.length) return e;
|
||
e = this.$clipPosition(e), this.getLength() <= 1 && this.$detectNewLine(t);
|
||
var n = this.$split(t), i = n.splice(0, 1)[0], o = 0 == n.length ? null : n.splice(n.length - 1, 1)[0];
|
||
return e = this.insertInLine(e, i), null !== o && (e = this.insertNewLine(e), e = this._insertLines(e.row, n),
|
||
e = this.insertInLine(e, o || "")), e;
|
||
}, this.insertLines = function(e, t) {
|
||
return e >= this.getLength() ? this.insert({
|
||
row: e,
|
||
column: 0
|
||
}, "\n" + t.join("\n")) : this._insertLines(Math.max(e, 0), t);
|
||
}, this._insertLines = function(e, t) {
|
||
if (0 == t.length) return {
|
||
row: e,
|
||
column: 0
|
||
};
|
||
if (t.length > 65535) {
|
||
var n = this._insertLines(e, t.slice(65535));
|
||
t = t.slice(0, 65535);
|
||
}
|
||
var i = [ e, 0 ];
|
||
i.push.apply(i, t), this.$lines.splice.apply(this.$lines, i);
|
||
var r = new o(e, 0, e + t.length, 0), s = {
|
||
action: "insertLines",
|
||
range: r,
|
||
lines: t
|
||
};
|
||
return this._emit("change", {
|
||
data: s
|
||
}), n || r.end;
|
||
}, this.insertNewLine = function(e) {
|
||
e = this.$clipPosition(e);
|
||
var t = this.$lines[e.row] || "";
|
||
this.$lines[e.row] = t.substring(0, e.column), this.$lines.splice(e.row + 1, 0, t.substring(e.column, t.length));
|
||
var n = {
|
||
row: e.row + 1,
|
||
column: 0
|
||
}, i = {
|
||
action: "insertText",
|
||
range: o.fromPoints(e, n),
|
||
text: this.getNewLineCharacter()
|
||
};
|
||
return this._emit("change", {
|
||
data: i
|
||
}), n;
|
||
}, this.insertInLine = function(e, t) {
|
||
if (0 == t.length) return e;
|
||
var n = this.$lines[e.row] || "";
|
||
this.$lines[e.row] = n.substring(0, e.column) + t + n.substring(e.column);
|
||
var i = {
|
||
row: e.row,
|
||
column: e.column + t.length
|
||
}, r = {
|
||
action: "insertText",
|
||
range: o.fromPoints(e, i),
|
||
text: t
|
||
};
|
||
return this._emit("change", {
|
||
data: r
|
||
}), i;
|
||
}, this.remove = function(e) {
|
||
if (!e instanceof o && (e = o.fromPoints(e.start, e.end)), e.start = this.$clipPosition(e.start),
|
||
e.end = this.$clipPosition(e.end), e.isEmpty()) return e.start;
|
||
var t = e.start.row, n = e.end.row;
|
||
if (e.isMultiLine()) {
|
||
var i = 0 == e.start.column ? t : t + 1, r = n - 1;
|
||
e.end.column > 0 && this.removeInLine(n, 0, e.end.column), r >= i && this._removeLines(i, r),
|
||
i != t && (this.removeInLine(t, e.start.column, this.getLine(t).length), this.removeNewLine(e.start.row));
|
||
} else this.removeInLine(t, e.start.column, e.end.column);
|
||
return e.start;
|
||
}, this.removeInLine = function(e, t, n) {
|
||
if (t != n) {
|
||
var i = new o(e, t, e, n), r = this.getLine(e), s = r.substring(t, n), a = r.substring(0, t) + r.substring(n, r.length);
|
||
this.$lines.splice(e, 1, a);
|
||
var l = {
|
||
action: "removeText",
|
||
range: i,
|
||
text: s
|
||
};
|
||
return this._emit("change", {
|
||
data: l
|
||
}), i.start;
|
||
}
|
||
}, this.removeLines = function(e, t) {
|
||
return 0 > e || t >= this.getLength() ? this.remove(new o(e, 0, t + 1, 0)) : this._removeLines(e, t);
|
||
}, this._removeLines = function(e, t) {
|
||
var n = new o(e, 0, t + 1, 0), i = this.$lines.splice(e, t - e + 1), r = {
|
||
action: "removeLines",
|
||
range: n,
|
||
nl: this.getNewLineCharacter(),
|
||
lines: i
|
||
};
|
||
return this._emit("change", {
|
||
data: r
|
||
}), i;
|
||
}, this.removeNewLine = function(e) {
|
||
var t = this.getLine(e), n = this.getLine(e + 1), i = new o(e, t.length, e + 1, 0), r = t + n;
|
||
this.$lines.splice(e, 2, r);
|
||
var s = {
|
||
action: "removeText",
|
||
range: i,
|
||
text: this.getNewLineCharacter()
|
||
};
|
||
this._emit("change", {
|
||
data: s
|
||
});
|
||
}, this.replace = function(e, t) {
|
||
if (!e instanceof o && (e = o.fromPoints(e.start, e.end)), 0 == t.length && e.isEmpty()) return e.start;
|
||
if (t == this.getTextRange(e)) return e.end;
|
||
if (this.remove(e), t) var n = this.insert(e.start, t); else n = e.start;
|
||
return n;
|
||
}, this.applyDeltas = function(e) {
|
||
for (var t = 0; t < e.length; t++) {
|
||
var n = e[t], i = o.fromPoints(n.range.start, n.range.end);
|
||
"insertLines" == n.action ? this.insertLines(i.start.row, n.lines) : "insertText" == n.action ? this.insert(i.start, n.text) : "removeLines" == n.action ? this._removeLines(i.start.row, i.end.row - 1) : "removeText" == n.action && this.remove(i);
|
||
}
|
||
}, this.revertDeltas = function(e) {
|
||
for (var t = e.length - 1; t >= 0; t--) {
|
||
var n = e[t], i = o.fromPoints(n.range.start, n.range.end);
|
||
"insertLines" == n.action ? this._removeLines(i.start.row, i.end.row - 1) : "insertText" == n.action ? this.remove(i) : "removeLines" == n.action ? this._insertLines(i.start.row, n.lines) : "removeText" == n.action && this.insert(i.start, n.text);
|
||
}
|
||
}, this.indexToPosition = function(e, t) {
|
||
for (var n = this.$lines || this.getAllLines(), i = this.getNewLineCharacter().length, o = t || 0, r = n.length; r > o; o++) if (e -= n[o].length + i,
|
||
0 > e) return {
|
||
row: o,
|
||
column: e + n[o].length + i
|
||
};
|
||
return {
|
||
row: r - 1,
|
||
column: n[r - 1].length
|
||
};
|
||
}, this.positionToIndex = function(e, t) {
|
||
for (var n = this.$lines || this.getAllLines(), i = this.getNewLineCharacter().length, o = 0, r = Math.min(e.row, n.length), s = t || 0; r > s; ++s) o += n[s].length + i;
|
||
return o + e.column;
|
||
};
|
||
}).call(s.prototype), t.Document = s;
|
||
}), define("ace/background_tokenizer", [ "require", "exports", "module", "./lib/oop", "./lib/event_emitter" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/event_emitter").EventEmitter, o = function(e) {
|
||
this.running = !1, this.lines = [], this.states = [], this.currentLine = 0, this.tokenizer = e;
|
||
var t = this;
|
||
this.$worker = function() {
|
||
if (t.running) {
|
||
for (var e = new Date(), n = t.currentLine, i = -1, o = t.doc; t.lines[n]; ) n++;
|
||
var r = n, s = o.getLength(), a = 0;
|
||
for (t.running = !1; s > n; ) {
|
||
t.$tokenizeRow(n), i = n;
|
||
do n++; while (t.lines[n]);
|
||
if (a++, 0 == a % 5 && new Date() - e > 20) return t.running = setTimeout(t.$worker, 20),
|
||
t.currentLine = n, void 0;
|
||
}
|
||
t.currentLine = n, i >= r && t.fireUpdateEvent(r, i);
|
||
}
|
||
};
|
||
};
|
||
(function() {
|
||
n.implement(this, i), this.setTokenizer = function(e) {
|
||
this.tokenizer = e, this.lines = [], this.states = [], this.start(0);
|
||
}, this.setDocument = function(e) {
|
||
this.doc = e, this.lines = [], this.states = [], this.stop();
|
||
}, this.fireUpdateEvent = function(e, t) {
|
||
var n = {
|
||
first: e,
|
||
last: t
|
||
};
|
||
this._emit("update", {
|
||
data: n
|
||
});
|
||
}, this.start = function(e) {
|
||
this.currentLine = Math.min(e || 0, this.currentLine, this.doc.getLength()), this.lines.splice(this.currentLine, this.lines.length),
|
||
this.states.splice(this.currentLine, this.states.length), this.stop(), this.running = setTimeout(this.$worker, 700);
|
||
}, this.scheduleStart = function() {
|
||
this.running || (this.running = setTimeout(this.$worker, 700));
|
||
}, this.$updateOnChange = function(e) {
|
||
var t = e.range, n = t.start.row, i = t.end.row - n;
|
||
if (0 === i) this.lines[n] = null; else if ("removeText" == e.action || "removeLines" == e.action) this.lines.splice(n, i + 1, null),
|
||
this.states.splice(n, i + 1, null); else {
|
||
var o = Array(i + 1);
|
||
o.unshift(n, 1), this.lines.splice.apply(this.lines, o), this.states.splice.apply(this.states, o);
|
||
}
|
||
this.currentLine = Math.min(n, this.currentLine, this.doc.getLength()), this.stop();
|
||
}, this.stop = function() {
|
||
this.running && clearTimeout(this.running), this.running = !1;
|
||
}, this.getTokens = function(e) {
|
||
return this.lines[e] || this.$tokenizeRow(e);
|
||
}, this.getState = function(e) {
|
||
return this.currentLine == e && this.$tokenizeRow(e), this.states[e] || "start";
|
||
}, this.$tokenizeRow = function(e) {
|
||
var t = this.doc.getLine(e), n = this.states[e - 1], i = this.tokenizer.getLineTokens(t, n, e);
|
||
return this.states[e] + "" != i.state + "" ? (this.states[e] = i.state, this.lines[e + 1] = null,
|
||
this.currentLine > e + 1 && (this.currentLine = e + 1)) : this.currentLine == e && (this.currentLine = e + 1),
|
||
this.lines[e] = i.tokens;
|
||
};
|
||
}).call(o.prototype), t.BackgroundTokenizer = o;
|
||
}), define("ace/search_highlight", [ "require", "exports", "module", "./lib/lang", "./lib/oop", "./range" ], function(e, t) {
|
||
var n = e("./lib/lang");
|
||
e("./lib/oop");
|
||
var i = e("./range").Range, o = function(e, t, n) {
|
||
this.setRegexp(e), this.clazz = t, this.type = n || "text";
|
||
};
|
||
(function() {
|
||
this.MAX_RANGES = 500, this.setRegexp = function(e) {
|
||
this.regExp + "" != e + "" && (this.regExp = e, this.cache = []);
|
||
}, this.update = function(e, t, o, r) {
|
||
if (this.regExp) for (var s = r.firstRow, a = r.lastRow, l = s; a >= l; l++) {
|
||
var c = this.cache[l];
|
||
null == c && (c = n.getMatchOffsets(o.getLine(l), this.regExp), c.length > this.MAX_RANGES && (c = c.slice(0, this.MAX_RANGES)),
|
||
c = c.map(function(e) {
|
||
return new i(l, e.offset, l, e.offset + e.length);
|
||
}), this.cache[l] = c.length ? c : "");
|
||
for (var u = c.length; u--; ) t.drawSingleLineMarker(e, c[u].toScreenRange(o), this.clazz, r);
|
||
}
|
||
};
|
||
}).call(o.prototype), t.SearchHighlight = o;
|
||
}), define("ace/edit_session/fold_line", [ "require", "exports", "module", "../range" ], function(e, t) {
|
||
function n(e, t) {
|
||
this.foldData = e, Array.isArray(t) ? this.folds = t : t = this.folds = [ t ];
|
||
var n = t[t.length - 1];
|
||
this.range = new i(t[0].start.row, t[0].start.column, n.end.row, n.end.column),
|
||
this.start = this.range.start, this.end = this.range.end, this.folds.forEach(function(e) {
|
||
e.setFoldLine(this);
|
||
}, this);
|
||
}
|
||
var i = e("../range").Range;
|
||
(function() {
|
||
this.shiftRow = function(e) {
|
||
this.start.row += e, this.end.row += e, this.folds.forEach(function(t) {
|
||
t.start.row += e, t.end.row += e;
|
||
});
|
||
}, this.addFold = function(e) {
|
||
if (e.sameRow) {
|
||
if (e.start.row < this.startRow || e.endRow > this.endRow) throw new Error("Can't add a fold to this FoldLine as it has no connection");
|
||
this.folds.push(e), this.folds.sort(function(e, t) {
|
||
return -e.range.compareEnd(t.start.row, t.start.column);
|
||
}), this.range.compareEnd(e.start.row, e.start.column) > 0 ? (this.end.row = e.end.row,
|
||
this.end.column = e.end.column) : this.range.compareStart(e.end.row, e.end.column) < 0 && (this.start.row = e.start.row,
|
||
this.start.column = e.start.column);
|
||
} else if (e.start.row == this.end.row) this.folds.push(e), this.end.row = e.end.row,
|
||
this.end.column = e.end.column; else {
|
||
if (e.end.row != this.start.row) throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");
|
||
this.folds.unshift(e), this.start.row = e.start.row, this.start.column = e.start.column;
|
||
}
|
||
e.foldLine = this;
|
||
}, this.containsRow = function(e) {
|
||
return e >= this.start.row && e <= this.end.row;
|
||
}, this.walk = function(e, t, n) {
|
||
var i, o, r, s = 0, a = this.folds, l = !0;
|
||
null == t && (t = this.end.row, n = this.end.column);
|
||
for (var c = 0; c < a.length; c++) {
|
||
if (i = a[c], o = i.range.compareStart(t, n), -1 == o) return e(null, t, n, s, l),
|
||
void 0;
|
||
if (r = e(null, i.start.row, i.start.column, s, l), r = !r && e(i.placeholder, i.start.row, i.start.column, s),
|
||
r || 0 == o) return;
|
||
l = !i.sameRow, s = i.end.column;
|
||
}
|
||
e(null, t, n, s, l);
|
||
}, this.getNextFoldTo = function(e, t) {
|
||
for (var n, i, o = 0; o < this.folds.length; o++) {
|
||
if (n = this.folds[o], i = n.range.compareEnd(e, t), -1 == i) return {
|
||
fold: n,
|
||
kind: "after"
|
||
};
|
||
if (0 == i) return {
|
||
fold: n,
|
||
kind: "inside"
|
||
};
|
||
}
|
||
return null;
|
||
}, this.addRemoveChars = function(e, t, n) {
|
||
var i, o, r = this.getNextFoldTo(e, t);
|
||
if (r) if (i = r.fold, "inside" == r.kind && i.start.column != t && i.start.row != e) window.console && window.console.log(e, t, i); else if (i.start.row == e) {
|
||
o = this.folds;
|
||
var s = o.indexOf(i);
|
||
for (0 == s && (this.start.column += n), s; s < o.length; s++) {
|
||
if (i = o[s], i.start.column += n, !i.sameRow) return;
|
||
i.end.column += n;
|
||
}
|
||
this.end.column += n;
|
||
}
|
||
}, this.split = function(e, t) {
|
||
var i = this.getNextFoldTo(e, t).fold, o = this.folds, r = this.foldData;
|
||
if (!i) return null;
|
||
var s = o.indexOf(i), a = o[s - 1];
|
||
this.end.row = a.end.row, this.end.column = a.end.column, o = o.splice(s, o.length - s);
|
||
var l = new n(r, o);
|
||
return r.splice(r.indexOf(this) + 1, 0, l), l;
|
||
}, this.merge = function(e) {
|
||
for (var t = e.folds, n = 0; n < t.length; n++) this.addFold(t[n]);
|
||
var i = this.foldData;
|
||
i.splice(i.indexOf(e), 1);
|
||
}, this.toString = function() {
|
||
var e = [ this.range.toString() + ": [" ];
|
||
return this.folds.forEach(function(t) {
|
||
e.push(" " + t.toString());
|
||
}), e.push("]"), e.join("\n");
|
||
}, this.idxToPosition = function(e) {
|
||
for (var t, n = 0, i = 0; i < this.folds.length; i++) {
|
||
var t = this.folds[i];
|
||
if (e -= t.start.column - n, 0 > e) return {
|
||
row: t.start.row,
|
||
column: t.start.column + e
|
||
};
|
||
if (e -= t.placeholder.length, 0 > e) return t.start;
|
||
n = t.end.column;
|
||
}
|
||
return {
|
||
row: this.end.row,
|
||
column: this.end.column + e
|
||
};
|
||
};
|
||
}).call(n.prototype), t.FoldLine = n;
|
||
}), define("ace/range_list", [ "require", "exports", "module", "./range" ], function(e, t) {
|
||
var n = e("./range").Range, i = n.comparePoints, o = function() {
|
||
this.ranges = [];
|
||
};
|
||
(function() {
|
||
this.comparePoints = i, this.pointIndex = function(e, t, n) {
|
||
for (var o = this.ranges, r = n || 0; r < o.length; r++) {
|
||
var s = o[r], a = i(e, s.end);
|
||
if (!(a > 0)) {
|
||
var l = i(e, s.start);
|
||
return 0 === a ? t && 0 !== l ? -r - 2 : r : l > 0 || 0 === l && !t ? r : -r - 1;
|
||
}
|
||
}
|
||
return -r - 1;
|
||
}, this.add = function(e) {
|
||
var t = !e.isEmpty(), n = this.pointIndex(e.start, t);
|
||
0 > n && (n = -n - 1);
|
||
var i = this.pointIndex(e.end, t, n);
|
||
return 0 > i ? i = -i - 1 : i++, this.ranges.splice(n, i - n, e);
|
||
}, this.addList = function(e) {
|
||
for (var t = [], n = e.length; n--; ) t.push.call(t, this.add(e[n]));
|
||
return t;
|
||
}, this.substractPoint = function(e) {
|
||
var t = this.pointIndex(e);
|
||
return t >= 0 ? this.ranges.splice(t, 1) : void 0;
|
||
}, this.merge = function() {
|
||
var e = [], t = this.ranges;
|
||
t = t.sort(function(e, t) {
|
||
return i(e.start, t.start);
|
||
});
|
||
for (var n, o = t[0], r = 1; r < t.length; r++) {
|
||
n = o, o = t[r];
|
||
var s = i(n.end, o.start);
|
||
0 > s || (0 != s || n.isEmpty() || o.isEmpty()) && (i(n.end, o.end) < 0 && (n.end.row = o.end.row,
|
||
n.end.column = o.end.column), t.splice(r, 1), e.push(o), o = n, r--);
|
||
}
|
||
return this.ranges = t, e;
|
||
}, this.contains = function(e, t) {
|
||
return this.pointIndex({
|
||
row: e,
|
||
column: t
|
||
}) >= 0;
|
||
}, this.containsPoint = function(e) {
|
||
return this.pointIndex(e) >= 0;
|
||
}, this.rangeAtPoint = function(e) {
|
||
var t = this.pointIndex(e);
|
||
return t >= 0 ? this.ranges[t] : void 0;
|
||
}, this.clipRows = function(e, t) {
|
||
var n = this.ranges;
|
||
if (n[0].start.row > t || n[n.length - 1].start.row < e) return [];
|
||
var i = this.pointIndex({
|
||
row: e,
|
||
column: 0
|
||
});
|
||
0 > i && (i = -i - 1);
|
||
var o = this.pointIndex({
|
||
row: t,
|
||
column: 0
|
||
}, i);
|
||
0 > o && (o = -o - 1);
|
||
for (var r = [], s = i; o > s; s++) r.push(n[s]);
|
||
return r;
|
||
}, this.removeAll = function() {
|
||
return this.ranges.splice(0, this.ranges.length);
|
||
}, this.attach = function(e) {
|
||
this.session && this.detach(), this.session = e, this.onChange = this.$onChange.bind(this),
|
||
this.session.on("change", this.onChange);
|
||
}, this.detach = function() {
|
||
this.session && (this.session.removeListener("change", this.onChange), this.session = null);
|
||
}, this.$onChange = function(e) {
|
||
var t = e.data.range;
|
||
if ("i" == e.data.action[0]) var n = t.start, i = t.end; else var i = t.start, n = t.end;
|
||
for (var o = n.row, r = i.row, s = r - o, a = -n.column + i.column, l = this.ranges, c = 0, u = l.length; u > c; c++) {
|
||
var d = l[c];
|
||
if (!(d.end.row < o)) {
|
||
if (d.start.row > o) break;
|
||
if (d.start.row == o && d.start.column >= n.column && (d.start.column == n.column && this.$insertRight || (d.start.column += a,
|
||
d.start.row += s)), d.end.row == o && d.end.column >= n.column) {
|
||
if (d.end.column == n.column && this.$insertRight) continue;
|
||
d.end.column == n.column && a > 0 && u - 1 > c && d.end.column > d.start.column && d.end.column == l[c + 1].start.column && (d.end.column -= a),
|
||
d.end.column += a, d.end.row += s;
|
||
}
|
||
}
|
||
}
|
||
if (0 != s && u > c) for (;u > c; c++) {
|
||
var d = l[c];
|
||
d.start.row += s, d.end.row += s;
|
||
}
|
||
};
|
||
}).call(o.prototype), t.RangeList = o;
|
||
}), define("ace/edit_session/fold", [ "require", "exports", "module", "../range", "../range_list", "../lib/oop" ], function(e, t) {
|
||
function n(e, t) {
|
||
e.row -= t.row, 0 == e.row && (e.column -= t.column);
|
||
}
|
||
function i(e, t) {
|
||
n(e.start, t), n(e.end, t);
|
||
}
|
||
function o(e, t) {
|
||
0 == e.row && (e.column += t.column), e.row += t.row;
|
||
}
|
||
function r(e, t) {
|
||
o(e.start, t), o(e.end, t);
|
||
}
|
||
e("../range").Range;
|
||
var s = e("../range_list").RangeList, a = e("../lib/oop"), l = t.Fold = function(e, t) {
|
||
this.foldLine = null, this.placeholder = t, this.range = e, this.start = e.start,
|
||
this.end = e.end, this.sameRow = e.start.row == e.end.row, this.subFolds = this.ranges = [];
|
||
};
|
||
a.inherits(l, s), function() {
|
||
this.toString = function() {
|
||
return '"' + this.placeholder + '" ' + this.range.toString();
|
||
}, this.setFoldLine = function(e) {
|
||
this.foldLine = e, this.subFolds.forEach(function(t) {
|
||
t.setFoldLine(e);
|
||
});
|
||
}, this.clone = function() {
|
||
var e = this.range.clone(), t = new l(e, this.placeholder);
|
||
return this.subFolds.forEach(function(e) {
|
||
t.subFolds.push(e.clone());
|
||
}), t.collapseChildren = this.collapseChildren, t;
|
||
}, this.addSubFold = function(e) {
|
||
if (!this.range.isEqual(e)) {
|
||
if (!this.range.containsRange(e)) throw new Error("A fold can't intersect already existing fold" + e.range + this.range);
|
||
i(e, this.start);
|
||
for (var t = e.start.row, n = e.start.column, o = 0, r = -1; o < this.subFolds.length && (r = this.subFolds[o].range.compare(t, n),
|
||
1 == r); o++) ;
|
||
var s = this.subFolds[o];
|
||
if (0 == r) return s.addSubFold(e);
|
||
for (var t = e.range.end.row, n = e.range.end.column, a = o, r = -1; a < this.subFolds.length && (r = this.subFolds[a].range.compare(t, n),
|
||
1 == r); a++) ;
|
||
if (this.subFolds[a], 0 == r) throw new Error("A fold can't intersect already existing fold" + e.range + this.range);
|
||
return this.subFolds.splice(o, a - o, e), e.setFoldLine(this.foldLine), e;
|
||
}
|
||
}, this.restoreRange = function(e) {
|
||
return r(e, this.start);
|
||
};
|
||
}.call(l.prototype);
|
||
}), define("ace/edit_session/folding", [ "require", "exports", "module", "../range", "./fold_line", "./fold", "../token_iterator" ], function(e, t) {
|
||
function n() {
|
||
this.getFoldAt = function(e, t, n) {
|
||
var i = this.getFoldLine(e);
|
||
if (!i) return null;
|
||
for (var o = i.folds, r = 0; r < o.length; r++) {
|
||
var s = o[r];
|
||
if (s.range.contains(e, t)) {
|
||
if (1 == n && s.range.isEnd(e, t)) continue;
|
||
if (-1 == n && s.range.isStart(e, t)) continue;
|
||
return s;
|
||
}
|
||
}
|
||
}, this.getFoldsInRange = function(e) {
|
||
var t = e.start, n = e.end, i = this.$foldData, o = [];
|
||
t.column += 1, n.column -= 1;
|
||
for (var r = 0; r < i.length; r++) {
|
||
var s = i[r].range.compareRange(e);
|
||
if (2 != s) {
|
||
if (-2 == s) break;
|
||
for (var a = i[r].folds, l = 0; l < a.length; l++) {
|
||
var c = a[l];
|
||
if (s = c.range.compareRange(e), -2 == s) break;
|
||
if (2 != s) {
|
||
if (42 == s) break;
|
||
o.push(c);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return t.column -= 1, n.column += 1, o;
|
||
}, this.getAllFolds = function() {
|
||
function e(e) {
|
||
t.push(e);
|
||
}
|
||
for (var t = [], n = this.$foldData, i = 0; i < n.length; i++) for (var o = 0; o < n[i].folds.length; o++) e(n[i].folds[o]);
|
||
return t;
|
||
}, this.getFoldStringAt = function(e, t, n, i) {
|
||
if (i = i || this.getFoldLine(e), !i) return null;
|
||
for (var o, r, s = {
|
||
end: {
|
||
column: 0
|
||
}
|
||
}, a = 0; a < i.folds.length; a++) {
|
||
r = i.folds[a];
|
||
var l = r.range.compareEnd(e, t);
|
||
if (-1 == l) {
|
||
o = this.getLine(r.start.row).substring(s.end.column, r.start.column);
|
||
break;
|
||
}
|
||
if (0 === l) return null;
|
||
s = r;
|
||
}
|
||
return o || (o = this.getLine(r.start.row).substring(s.end.column)), -1 == n ? o.substring(0, t - s.end.column) : 1 == n ? o.substring(t - s.end.column) : o;
|
||
}, this.getFoldLine = function(e, t) {
|
||
var n = this.$foldData, i = 0;
|
||
for (t && (i = n.indexOf(t)), -1 == i && (i = 0), i; i < n.length; i++) {
|
||
var o = n[i];
|
||
if (o.start.row <= e && o.end.row >= e) return o;
|
||
if (o.end.row > e) return null;
|
||
}
|
||
return null;
|
||
}, this.getNextFoldLine = function(e, t) {
|
||
var n = this.$foldData, i = 0;
|
||
for (t && (i = n.indexOf(t)), -1 == i && (i = 0), i; i < n.length; i++) {
|
||
var o = n[i];
|
||
if (o.end.row >= e) return o;
|
||
}
|
||
return null;
|
||
}, this.getFoldedRowCount = function(e, t) {
|
||
for (var n = this.$foldData, i = t - e + 1, o = 0; o < n.length; o++) {
|
||
var r = n[o], s = r.end.row, a = r.start.row;
|
||
if (s >= t) {
|
||
t > a && (a >= e ? i -= t - a : i = 0);
|
||
break;
|
||
}
|
||
s >= e && (i -= a >= e ? s - a : s - e + 1);
|
||
}
|
||
return i;
|
||
}, this.$addFoldLine = function(e) {
|
||
return this.$foldData.push(e), this.$foldData.sort(function(e, t) {
|
||
return e.start.row - t.start.row;
|
||
}), e;
|
||
}, this.addFold = function(e, t) {
|
||
var n, i = this.$foldData, s = !1;
|
||
e instanceof r ? n = e : (n = new r(t, e), n.collapseChildren = t.collapseChildren),
|
||
this.$clipRangeToDocument(n.range);
|
||
var a = n.start.row, l = n.start.column, c = n.end.row, u = n.end.column;
|
||
if (!(c > a || a == c && u - 2 >= l)) throw new Error("The range has to be at least 2 characters width");
|
||
var d = this.getFoldAt(a, l, 1), h = this.getFoldAt(c, u, -1);
|
||
if (d && h == d) return d.addSubFold(n);
|
||
if (d && !d.range.isStart(a, l) || h && !h.range.isEnd(c, u)) throw new Error("A fold can't intersect already existing fold" + n.range + d.range);
|
||
var p = this.getFoldsInRange(n.range);
|
||
p.length > 0 && (this.removeFolds(p), p.forEach(function(e) {
|
||
n.addSubFold(e);
|
||
}));
|
||
for (var f = 0; f < i.length; f++) {
|
||
var g = i[f];
|
||
if (c == g.start.row) {
|
||
g.addFold(n), s = !0;
|
||
break;
|
||
}
|
||
if (a == g.end.row) {
|
||
if (g.addFold(n), s = !0, !n.sameRow) {
|
||
var m = i[f + 1];
|
||
if (m && m.start.row == c) {
|
||
g.merge(m);
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
if (c <= g.start.row) break;
|
||
}
|
||
return s || (g = this.$addFoldLine(new o(this.$foldData, n))), this.$useWrapMode ? this.$updateWrapData(g.start.row, g.start.row) : this.$updateRowLengthCache(g.start.row, g.start.row),
|
||
this.$modified = !0, this._emit("changeFold", {
|
||
data: n,
|
||
action: "add"
|
||
}), n;
|
||
}, this.addFolds = function(e) {
|
||
e.forEach(function(e) {
|
||
this.addFold(e);
|
||
}, this);
|
||
}, this.removeFold = function(e) {
|
||
var t = e.foldLine, n = t.start.row, i = t.end.row, o = this.$foldData, r = t.folds;
|
||
if (1 == r.length) o.splice(o.indexOf(t), 1); else if (t.range.isEnd(e.end.row, e.end.column)) r.pop(),
|
||
t.end.row = r[r.length - 1].end.row, t.end.column = r[r.length - 1].end.column; else if (t.range.isStart(e.start.row, e.start.column)) r.shift(),
|
||
t.start.row = r[0].start.row, t.start.column = r[0].start.column; else if (e.sameRow) r.splice(r.indexOf(e), 1); else {
|
||
var s = t.split(e.start.row, e.start.column);
|
||
r = s.folds, r.shift(), s.start.row = r[0].start.row, s.start.column = r[0].start.column;
|
||
}
|
||
this.$updating || (this.$useWrapMode ? this.$updateWrapData(n, i) : this.$updateRowLengthCache(n, i)),
|
||
this.$modified = !0, this._emit("changeFold", {
|
||
data: e,
|
||
action: "remove"
|
||
});
|
||
}, this.removeFolds = function(e) {
|
||
for (var t = [], n = 0; n < e.length; n++) t.push(e[n]);
|
||
t.forEach(function(e) {
|
||
this.removeFold(e);
|
||
}, this), this.$modified = !0;
|
||
}, this.expandFold = function(e) {
|
||
this.removeFold(e), e.subFolds.forEach(function(t) {
|
||
e.restoreRange(t), this.addFold(t);
|
||
}, this), e.collapseChildren > 0 && this.foldAll(e.start.row + 1, e.end.row, e.collapseChildren - 1),
|
||
e.subFolds = [];
|
||
}, this.expandFolds = function(e) {
|
||
e.forEach(function(e) {
|
||
this.expandFold(e);
|
||
}, this);
|
||
}, this.unfold = function(e, t) {
|
||
var n, o;
|
||
if (null == e ? (n = new i(0, 0, this.getLength(), 0), t = !0) : n = "number" == typeof e ? new i(e, 0, e, this.getLine(e).length) : "row" in e ? i.fromPoints(e, e) : e,
|
||
o = this.getFoldsInRange(n), t) this.removeFolds(o); else for (;o.length; ) this.expandFolds(o),
|
||
o = this.getFoldsInRange(n);
|
||
}, this.isRowFolded = function(e, t) {
|
||
return !!this.getFoldLine(e, t);
|
||
}, this.getRowFoldEnd = function(e, t) {
|
||
var n = this.getFoldLine(e, t);
|
||
return n ? n.end.row : e;
|
||
}, this.getRowFoldStart = function(e, t) {
|
||
var n = this.getFoldLine(e, t);
|
||
return n ? n.start.row : e;
|
||
}, this.getFoldDisplayLine = function(e, t, n, i, o) {
|
||
null == i && (i = e.start.row, o = 0), null == t && (t = e.end.row, n = this.getLine(t).length);
|
||
var r = this.doc, s = "";
|
||
return e.walk(function(e, t, n, a) {
|
||
if (!(i > t)) {
|
||
if (t == i) {
|
||
if (o > n) return;
|
||
a = Math.max(o, a);
|
||
}
|
||
s += null != e ? e : r.getLine(t).substring(a, n);
|
||
}
|
||
}, t, n), s;
|
||
}, this.getDisplayLine = function(e, t, n, i) {
|
||
var o = this.getFoldLine(e);
|
||
if (o) return this.getFoldDisplayLine(o, e, t, n, i);
|
||
var r;
|
||
return r = this.doc.getLine(e), r.substring(i || 0, t || r.length);
|
||
}, this.$cloneFoldData = function() {
|
||
var e = [];
|
||
return e = this.$foldData.map(function(t) {
|
||
var n = t.folds.map(function(e) {
|
||
return e.clone();
|
||
});
|
||
return new o(e, n);
|
||
});
|
||
}, this.toggleFold = function(e) {
|
||
var t, n, i = this.selection, o = i.getRange();
|
||
if (o.isEmpty()) {
|
||
var r = o.start;
|
||
if (t = this.getFoldAt(r.row, r.column)) return this.expandFold(t), void 0;
|
||
(n = this.findMatchingBracket(r)) ? 1 == o.comparePoint(n) ? o.end = n : (o.start = n,
|
||
o.start.column++, o.end.column--) : (n = this.findMatchingBracket({
|
||
row: r.row,
|
||
column: r.column + 1
|
||
})) ? (1 == o.comparePoint(n) ? o.end = n : o.start = n, o.start.column++) : o = this.getCommentFoldRange(r.row, r.column) || o;
|
||
} else {
|
||
var s = this.getFoldsInRange(o);
|
||
if (e && s.length) return this.expandFolds(s), void 0;
|
||
1 == s.length && (t = s[0]);
|
||
}
|
||
if (t || (t = this.getFoldAt(o.start.row, o.start.column)), t && t.range.toString() == o.toString()) return this.expandFold(t),
|
||
void 0;
|
||
var a = "...";
|
||
if (!o.isMultiLine()) {
|
||
if (a = this.getTextRange(o), a.length < 4) return;
|
||
a = a.trim().substring(0, 2) + "..";
|
||
}
|
||
this.addFold(a, o);
|
||
}, this.getCommentFoldRange = function(e, t, n) {
|
||
var o = new s(this, e, t), r = o.getCurrentToken();
|
||
if (r && /^comment|string/.test(r.type)) {
|
||
var a = new i(), l = new RegExp(r.type.replace(/\..*/, "\\."));
|
||
if (1 != n) {
|
||
do r = o.stepBackward(); while (r && l.test(r.type));
|
||
o.stepForward();
|
||
}
|
||
if (a.start.row = o.getCurrentTokenRow(), a.start.column = o.getCurrentTokenColumn() + 2,
|
||
o = new s(this, e, t), -1 != n) {
|
||
do r = o.stepForward(); while (r && l.test(r.type));
|
||
r = o.stepBackward();
|
||
} else r = o.getCurrentToken();
|
||
return a.end.row = o.getCurrentTokenRow(), a.end.column = o.getCurrentTokenColumn() + r.value.length - 2,
|
||
a;
|
||
}
|
||
}, this.foldAll = function(e, t, n) {
|
||
void 0 == n && (n = 1e5);
|
||
var i = this.foldWidgets;
|
||
t = t || this.getLength(), e = e || 0;
|
||
for (var o = e; t > o; o++) if (null == i[o] && (i[o] = this.getFoldWidget(o)),
|
||
"start" == i[o]) {
|
||
var r = this.getFoldWidgetRange(o), s = r.end.row;
|
||
if (r && r.isMultiLine() && t >= s && r.start.row >= e) try {
|
||
var a = this.addFold("...", r);
|
||
a.collapseChildren = n, o = s;
|
||
} catch (l) {}
|
||
}
|
||
}, this.$foldStyles = {
|
||
manual: 1,
|
||
markbegin: 1,
|
||
markbeginend: 1
|
||
}, this.$foldStyle = "markbegin", this.setFoldStyle = function(e) {
|
||
if (!this.$foldStyles[e]) throw new Error("invalid fold style: " + e + "[" + Object.keys(this.$foldStyles).join(", ") + "]");
|
||
if (this.$foldStyle != e) {
|
||
this.$foldStyle = e, "manual" == e && this.unfold();
|
||
var t = this.$foldMode;
|
||
this.$setFolding(null), this.$setFolding(t);
|
||
}
|
||
}, this.$setFolding = function(e) {
|
||
if (this.$foldMode != e) {
|
||
if (this.$foldMode = e, this.removeListener("change", this.$updateFoldWidgets),
|
||
this._emit("changeAnnotation"), !e || "manual" == this.$foldStyle) return this.foldWidgets = null,
|
||
void 0;
|
||
this.foldWidgets = [], this.getFoldWidget = e.getFoldWidget.bind(e, this, this.$foldStyle),
|
||
this.getFoldWidgetRange = e.getFoldWidgetRange.bind(e, this, this.$foldStyle), this.$updateFoldWidgets = this.updateFoldWidgets.bind(this),
|
||
this.on("change", this.$updateFoldWidgets);
|
||
}
|
||
}, this.getParentFoldRangeData = function(e, t) {
|
||
var n = this.foldWidgets;
|
||
if (!n || t && n[e]) return {};
|
||
for (var i, o = e - 1; o >= 0; ) {
|
||
var r = n[o];
|
||
if (null == r && (r = n[o] = this.getFoldWidget(o)), "start" == r) {
|
||
var s = this.getFoldWidgetRange(o);
|
||
if (i || (i = s), s && s.end.row >= e) break;
|
||
}
|
||
o--;
|
||
}
|
||
return {
|
||
range: -1 !== o && s,
|
||
firstRange: i
|
||
};
|
||
}, this.onFoldWidgetClick = function(e, t) {
|
||
var n = this.getFoldWidget(e), i = this.getLine(e);
|
||
t = t.domEvent;
|
||
var o = t.shiftKey, r = t.ctrlKey || t.metaKey, s = t.altKey, a = "end" === n ? -1 : 1, l = this.getFoldAt(e, -1 === a ? 0 : i.length, a);
|
||
if (l) return o || r ? this.removeFold(l) : this.expandFold(l), void 0;
|
||
var c = this.getFoldWidgetRange(e);
|
||
if (c && !c.isMultiLine() && (l = this.getFoldAt(c.start.row, c.start.column, 1),
|
||
l && c.isEqual(l.range))) return this.removeFold(l), void 0;
|
||
if (s) {
|
||
var u = this.getParentFoldRangeData(e);
|
||
if (u.range) var d = u.range.start.row + 1, h = u.range.end.row;
|
||
this.foldAll(d, h, r ? 1e4 : 0);
|
||
} else if (o) {
|
||
var h = c ? c.end.row : this.getLength();
|
||
this.foldAll(e + 1, c.end.row, r ? 1e4 : 0);
|
||
} else c && (r && (c.collapseChildren = 1e4), this.addFold("...", c));
|
||
c || ((t.target || t.srcElement).className += " ace_invalid");
|
||
}, this.updateFoldWidgets = function(e) {
|
||
var t = e.data, n = t.range, i = n.start.row, o = n.end.row - i;
|
||
if (0 === o) this.foldWidgets[i] = null; else if ("removeText" == t.action || "removeLines" == t.action) this.foldWidgets.splice(i, o + 1, null); else {
|
||
var r = Array(o + 1);
|
||
r.unshift(i, 1), this.foldWidgets.splice.apply(this.foldWidgets, r);
|
||
}
|
||
};
|
||
}
|
||
var i = e("../range").Range, o = e("./fold_line").FoldLine, r = e("./fold").Fold, s = e("../token_iterator").TokenIterator;
|
||
t.Folding = n;
|
||
}), define("ace/edit_session/bracket_match", [ "require", "exports", "module", "../token_iterator", "../range" ], function(e, t) {
|
||
function n() {
|
||
this.findMatchingBracket = function(e, t) {
|
||
if (0 == e.column) return null;
|
||
var n = t || this.getLine(e.row).charAt(e.column - 1);
|
||
if ("" == n) return null;
|
||
var i = n.match(/([\(\[\{])|([\)\]\}])/);
|
||
return i ? i[1] ? this.$findClosingBracket(i[1], e) : this.$findOpeningBracket(i[2], e) : null;
|
||
}, this.getBracketRange = function(e) {
|
||
var t, n = this.getLine(e.row), i = !0, r = n.charAt(e.column - 1), s = r && r.match(/([\(\[\{])|([\)\]\}])/);
|
||
if (s || (r = n.charAt(e.column), e = {
|
||
row: e.row,
|
||
column: e.column + 1
|
||
}, s = r && r.match(/([\(\[\{])|([\)\]\}])/), i = !1), !s) return null;
|
||
if (s[1]) {
|
||
var a = this.$findClosingBracket(s[1], e);
|
||
if (!a) return null;
|
||
t = o.fromPoints(e, a), i || (t.end.column++, t.start.column--), t.cursor = t.end;
|
||
} else {
|
||
var a = this.$findOpeningBracket(s[2], e);
|
||
if (!a) return null;
|
||
t = o.fromPoints(a, e), i || (t.start.column++, t.end.column--), t.cursor = t.start;
|
||
}
|
||
return t;
|
||
}, this.$brackets = {
|
||
")": "(",
|
||
"(": ")",
|
||
"]": "[",
|
||
"[": "]",
|
||
"{": "}",
|
||
"}": "{"
|
||
}, this.$findOpeningBracket = function(e, t, n) {
|
||
var o = this.$brackets[e], r = 1, s = new i(this, t.row, t.column), a = s.getCurrentToken();
|
||
if (a || (a = s.stepForward()), a) {
|
||
n || (n = new RegExp("(\\.?" + a.type.replace(".", "\\.").replace("rparen", ".paren") + ")+"));
|
||
for (var l = t.column - s.getCurrentTokenColumn() - 2, c = a.value; ;) {
|
||
for (;l >= 0; ) {
|
||
var u = c.charAt(l);
|
||
if (u == o) {
|
||
if (r -= 1, 0 == r) return {
|
||
row: s.getCurrentTokenRow(),
|
||
column: l + s.getCurrentTokenColumn()
|
||
};
|
||
} else u == e && (r += 1);
|
||
l -= 1;
|
||
}
|
||
do a = s.stepBackward(); while (a && !n.test(a.type));
|
||
if (null == a) break;
|
||
c = a.value, l = c.length - 1;
|
||
}
|
||
return null;
|
||
}
|
||
}, this.$findClosingBracket = function(e, t, n) {
|
||
var o = this.$brackets[e], r = 1, s = new i(this, t.row, t.column), a = s.getCurrentToken();
|
||
if (a || (a = s.stepForward()), a) {
|
||
n || (n = new RegExp("(\\.?" + a.type.replace(".", "\\.").replace("lparen", ".paren") + ")+"));
|
||
for (var l = t.column - s.getCurrentTokenColumn(); ;) {
|
||
for (var c = a.value, u = c.length; u > l; ) {
|
||
var d = c.charAt(l);
|
||
if (d == o) {
|
||
if (r -= 1, 0 == r) return {
|
||
row: s.getCurrentTokenRow(),
|
||
column: l + s.getCurrentTokenColumn()
|
||
};
|
||
} else d == e && (r += 1);
|
||
l += 1;
|
||
}
|
||
do a = s.stepForward(); while (a && !n.test(a.type));
|
||
if (null == a) break;
|
||
l = 0;
|
||
}
|
||
return null;
|
||
}
|
||
};
|
||
}
|
||
var i = e("../token_iterator").TokenIterator, o = e("../range").Range;
|
||
t.BracketMatch = n;
|
||
}), define("ace/edit_session", [ "require", "exports", "module", "./lib/oop", "./lib/lang", "./config", "./lib/event_emitter", "./selection", "./mode/text", "./range", "./document", "./background_tokenizer", "./search_highlight", "./edit_session/folding", "./edit_session/bracket_match" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/lang"), o = e("./config"), r = e("./lib/event_emitter").EventEmitter, s = e("./selection").Selection, a = e("./mode/text").Mode, l = e("./range").Range, c = e("./document").Document, u = e("./background_tokenizer").BackgroundTokenizer, d = e("./search_highlight").SearchHighlight, h = function(e, t) {
|
||
this.$breakpoints = [], this.$decorations = [], this.$frontMarkers = {}, this.$backMarkers = {},
|
||
this.$markerId = 1, this.$undoSelect = !0, this.$foldData = [], this.$foldData.toString = function() {
|
||
return this.join("\n");
|
||
}, this.on("changeFold", this.onChangeFold.bind(this)), this.$onChange = this.onChange.bind(this),
|
||
"object" == typeof e && e.getLine || (e = new c(e)), this.setDocument(e), this.selection = new s(this),
|
||
o.resetOptions(this), this.setMode(t), o._emit("session", this);
|
||
};
|
||
(function() {
|
||
function t(e) {
|
||
return 4352 > e ? !1 : e >= 4352 && 4447 >= e || e >= 4515 && 4519 >= e || e >= 4602 && 4607 >= e || e >= 9001 && 9002 >= e || e >= 11904 && 11929 >= e || e >= 11931 && 12019 >= e || e >= 12032 && 12245 >= e || e >= 12272 && 12283 >= e || e >= 12288 && 12350 >= e || e >= 12353 && 12438 >= e || e >= 12441 && 12543 >= e || e >= 12549 && 12589 >= e || e >= 12593 && 12686 >= e || e >= 12688 && 12730 >= e || e >= 12736 && 12771 >= e || e >= 12784 && 12830 >= e || e >= 12832 && 12871 >= e || e >= 12880 && 13054 >= e || e >= 13056 && 19903 >= e || e >= 19968 && 42124 >= e || e >= 42128 && 42182 >= e || e >= 43360 && 43388 >= e || e >= 44032 && 55203 >= e || e >= 55216 && 55238 >= e || e >= 55243 && 55291 >= e || e >= 63744 && 64255 >= e || e >= 65040 && 65049 >= e || e >= 65072 && 65106 >= e || e >= 65108 && 65126 >= e || e >= 65128 && 65131 >= e || e >= 65281 && 65376 >= e || e >= 65504 && 65510 >= e;
|
||
}
|
||
n.implement(this, r), this.setDocument = function(e) {
|
||
this.doc && this.doc.removeListener("change", this.$onChange), this.doc = e, e.on("change", this.$onChange),
|
||
this.bgTokenizer && this.bgTokenizer.setDocument(this.getDocument()), this.resetCaches();
|
||
}, this.getDocument = function() {
|
||
return this.doc;
|
||
}, this.$resetRowCache = function(e) {
|
||
if (!e) return this.$docRowCache = [], this.$screenRowCache = [], void 0;
|
||
var t = this.$docRowCache.length, n = this.$getRowCacheIndex(this.$docRowCache, e) + 1;
|
||
t > n && (this.$docRowCache.splice(n, t), this.$screenRowCache.splice(n, t));
|
||
}, this.$getRowCacheIndex = function(e, t) {
|
||
for (var n = 0, i = e.length - 1; i >= n; ) {
|
||
var o = n + i >> 1, r = e[o];
|
||
if (t > r) n = o + 1; else {
|
||
if (!(r > t)) return o;
|
||
i = o - 1;
|
||
}
|
||
}
|
||
return n - 1;
|
||
}, this.resetCaches = function() {
|
||
this.$modified = !0, this.$wrapData = [], this.$rowLengthCache = [], this.$resetRowCache(0),
|
||
this.bgTokenizer && this.bgTokenizer.start(0);
|
||
}, this.onChangeFold = function(e) {
|
||
var t = e.data;
|
||
this.$resetRowCache(t.start.row);
|
||
}, this.onChange = function(e) {
|
||
var t = e.data;
|
||
this.$modified = !0, this.$resetRowCache(t.range.start.row);
|
||
var n = this.$updateInternalDataOnChange(e);
|
||
this.$fromUndo || !this.$undoManager || t.ignore || (this.$deltasDoc.push(t), n && 0 != n.length && this.$deltasFold.push({
|
||
action: "removeFolds",
|
||
folds: n
|
||
}), this.$informUndoManager.schedule()), this.bgTokenizer.$updateOnChange(t), this._emit("change", e);
|
||
}, this.setValue = function(e) {
|
||
this.doc.setValue(e), this.selection.moveCursorTo(0, 0), this.selection.clearSelection(),
|
||
this.$resetRowCache(0), this.$deltas = [], this.$deltasDoc = [], this.$deltasFold = [],
|
||
this.getUndoManager().reset();
|
||
}, this.getValue = this.toString = function() {
|
||
return this.doc.getValue();
|
||
}, this.getSelection = function() {
|
||
return this.selection;
|
||
}, this.getState = function(e) {
|
||
return this.bgTokenizer.getState(e);
|
||
}, this.getTokens = function(e) {
|
||
return this.bgTokenizer.getTokens(e);
|
||
}, this.getTokenAt = function(e, t) {
|
||
var n, i = this.bgTokenizer.getTokens(e), o = 0;
|
||
if (null == t) r = i.length - 1, o = this.getLine(e).length; else for (var r = 0; r < i.length && (o += i[r].value.length,
|
||
!(o >= t)); r++) ;
|
||
return (n = i[r]) ? (n.index = r, n.start = o - n.value.length, n) : null;
|
||
}, this.setUndoManager = function(e) {
|
||
if (this.$undoManager = e, this.$deltas = [], this.$deltasDoc = [], this.$deltasFold = [],
|
||
this.$informUndoManager && this.$informUndoManager.cancel(), e) {
|
||
var t = this;
|
||
this.$syncInformUndoManager = function() {
|
||
t.$informUndoManager.cancel(), t.$deltasFold.length && (t.$deltas.push({
|
||
group: "fold",
|
||
deltas: t.$deltasFold
|
||
}), t.$deltasFold = []), t.$deltasDoc.length && (t.$deltas.push({
|
||
group: "doc",
|
||
deltas: t.$deltasDoc
|
||
}), t.$deltasDoc = []), t.$deltas.length > 0 && e.execute({
|
||
action: "aceupdate",
|
||
args: [ t.$deltas, t ],
|
||
merge: t.mergeUndoDeltas
|
||
}), t.mergeUndoDeltas = !1, t.$deltas = [];
|
||
}, this.$informUndoManager = i.delayedCall(this.$syncInformUndoManager);
|
||
}
|
||
}, this.markUndoGroup = function() {
|
||
this.$syncInformUndoManager && this.$syncInformUndoManager();
|
||
}, this.$defaultUndoManager = {
|
||
undo: function() {},
|
||
redo: function() {},
|
||
reset: function() {}
|
||
}, this.getUndoManager = function() {
|
||
return this.$undoManager || this.$defaultUndoManager;
|
||
}, this.getTabString = function() {
|
||
return this.getUseSoftTabs() ? i.stringRepeat(" ", this.getTabSize()) : " ";
|
||
}, this.setUseSoftTabs = function(e) {
|
||
this.setOption("useSoftTabs", e);
|
||
}, this.getUseSoftTabs = function() {
|
||
return this.$useSoftTabs && !this.$mode.$indentWithTabs;
|
||
}, this.setTabSize = function(e) {
|
||
this.setOption("tabSize", e);
|
||
}, this.getTabSize = function() {
|
||
return this.$tabSize;
|
||
}, this.isTabStop = function(e) {
|
||
return this.$useSoftTabs && 0 == e.column % this.$tabSize;
|
||
}, this.$overwrite = !1, this.setOverwrite = function(e) {
|
||
this.setOption("overwrite", e);
|
||
}, this.getOverwrite = function() {
|
||
return this.$overwrite;
|
||
}, this.toggleOverwrite = function() {
|
||
this.setOverwrite(!this.$overwrite);
|
||
}, this.addGutterDecoration = function(e, t) {
|
||
this.$decorations[e] || (this.$decorations[e] = ""), this.$decorations[e] += " " + t,
|
||
this._emit("changeBreakpoint", {});
|
||
}, this.removeGutterDecoration = function(e, t) {
|
||
this.$decorations[e] = (this.$decorations[e] || "").replace(" " + t, ""), this._emit("changeBreakpoint", {});
|
||
}, this.getBreakpoints = function() {
|
||
return this.$breakpoints;
|
||
}, this.setBreakpoints = function(e) {
|
||
this.$breakpoints = [];
|
||
for (var t = 0; t < e.length; t++) this.$breakpoints[e[t]] = "ace_breakpoint";
|
||
this._emit("changeBreakpoint", {});
|
||
}, this.clearBreakpoints = function() {
|
||
this.$breakpoints = [], this._emit("changeBreakpoint", {});
|
||
}, this.setBreakpoint = function(e, t) {
|
||
void 0 === t && (t = "ace_breakpoint"), t ? this.$breakpoints[e] = t : delete this.$breakpoints[e],
|
||
this._emit("changeBreakpoint", {});
|
||
}, this.clearBreakpoint = function(e) {
|
||
delete this.$breakpoints[e], this._emit("changeBreakpoint", {});
|
||
}, this.addMarker = function(e, t, n, i) {
|
||
var o = this.$markerId++, r = {
|
||
range: e,
|
||
type: n || "line",
|
||
renderer: "function" == typeof n ? n : null,
|
||
clazz: t,
|
||
inFront: !!i,
|
||
id: o
|
||
};
|
||
return i ? (this.$frontMarkers[o] = r, this._emit("changeFrontMarker")) : (this.$backMarkers[o] = r,
|
||
this._emit("changeBackMarker")), o;
|
||
}, this.addDynamicMarker = function(e, t) {
|
||
if (e.update) {
|
||
var n = this.$markerId++;
|
||
return e.id = n, e.inFront = !!t, t ? (this.$frontMarkers[n] = e, this._emit("changeFrontMarker")) : (this.$backMarkers[n] = e,
|
||
this._emit("changeBackMarker")), e;
|
||
}
|
||
}, this.removeMarker = function(e) {
|
||
var t = this.$frontMarkers[e] || this.$backMarkers[e];
|
||
if (t) {
|
||
var n = t.inFront ? this.$frontMarkers : this.$backMarkers;
|
||
t && (delete n[e], this._emit(t.inFront ? "changeFrontMarker" : "changeBackMarker"));
|
||
}
|
||
}, this.getMarkers = function(e) {
|
||
return e ? this.$frontMarkers : this.$backMarkers;
|
||
}, this.highlight = function(e) {
|
||
if (!this.$searchHighlight) {
|
||
var t = new d(null, "ace_selected-word", "text");
|
||
this.$searchHighlight = this.addDynamicMarker(t);
|
||
}
|
||
this.$searchHighlight.setRegexp(e);
|
||
}, this.highlightLines = function(e, t, n, i) {
|
||
"number" != typeof t && (n = t, t = e), n || (n = "ace_step");
|
||
var o = new l(e, 0, t, 1/0);
|
||
return o.id = this.addMarker(o, n, "fullLine", i), o;
|
||
}, this.setAnnotations = function(e) {
|
||
this.$annotations = e, this._emit("changeAnnotation", {});
|
||
}, this.getAnnotations = function() {
|
||
return this.$annotations || [];
|
||
}, this.clearAnnotations = function() {
|
||
this.setAnnotations([]);
|
||
}, this.$detectNewLine = function(e) {
|
||
var t = e.match(/^.*?(\r?\n)/m);
|
||
this.$autoNewLine = t ? t[1] : "\n";
|
||
}, this.getWordRange = function(e, t) {
|
||
var n = this.getLine(e), i = !1;
|
||
if (t > 0 && (i = !!n.charAt(t - 1).match(this.tokenRe)), i || (i = !!n.charAt(t).match(this.tokenRe)),
|
||
i) var o = this.tokenRe; else if (/^\s+$/.test(n.slice(t - 1, t + 1))) var o = /\s/; else var o = this.nonTokenRe;
|
||
var r = t;
|
||
if (r > 0) {
|
||
do r--; while (r >= 0 && n.charAt(r).match(o));
|
||
r++;
|
||
}
|
||
for (var s = t; s < n.length && n.charAt(s).match(o); ) s++;
|
||
return new l(e, r, e, s);
|
||
}, this.getAWordRange = function(e, t) {
|
||
for (var n = this.getWordRange(e, t), i = this.getLine(n.end.row); i.charAt(n.end.column).match(/[ \t]/); ) n.end.column += 1;
|
||
return n;
|
||
}, this.setNewLineMode = function(e) {
|
||
this.doc.setNewLineMode(e);
|
||
}, this.getNewLineMode = function() {
|
||
return this.doc.getNewLineMode();
|
||
}, this.setUseWorker = function(e) {
|
||
this.setOption("useWorker", e);
|
||
}, this.getUseWorker = function() {
|
||
return this.$useWorker;
|
||
}, this.onReloadTokenizer = function(e) {
|
||
var t = e.data;
|
||
this.bgTokenizer.start(t.first), this._emit("tokenizerUpdate", e);
|
||
}, this.$modes = {}, this.$mode = null, this.$modeId = null, this.setMode = function(e, t) {
|
||
if (e && "object" == typeof e) {
|
||
if (e.getTokenizer) return this.$onChangeMode(e);
|
||
var n = e, i = n.path;
|
||
} else i = e || "ace/mode/text";
|
||
return this.$modes["ace/mode/text"] || (this.$modes["ace/mode/text"] = new a()),
|
||
this.$modes[i] && !n ? (this.$onChangeMode(this.$modes[i]), t && t(), void 0) : (this.$modeId = i,
|
||
o.loadModule([ "mode", i ], function(e) {
|
||
return this.$modeId !== i ? t && t() : this.$modes[i] && !n ? this.$onChangeMode(this.$modes[i]) : (e && e.Mode && (e = new e.Mode(n),
|
||
n || (this.$modes[i] = e, e.$id = i), this.$onChangeMode(e), t && t()), void 0);
|
||
}.bind(this)), this.$mode || this.$onChangeMode(this.$modes["ace/mode/text"], !0),
|
||
void 0);
|
||
}, this.$onChangeMode = function(e, t) {
|
||
if (t || (this.$modeId = e.$id), this.$mode !== e) {
|
||
this.$mode = e, this.$stopWorker(), this.$useWorker && this.$startWorker();
|
||
var n = e.getTokenizer();
|
||
if (void 0 !== n.addEventListener) {
|
||
var i = this.onReloadTokenizer.bind(this);
|
||
n.addEventListener("update", i);
|
||
}
|
||
if (this.bgTokenizer) this.bgTokenizer.setTokenizer(n); else {
|
||
this.bgTokenizer = new u(n);
|
||
var o = this;
|
||
this.bgTokenizer.addEventListener("update", function(e) {
|
||
o._emit("tokenizerUpdate", e);
|
||
});
|
||
}
|
||
this.bgTokenizer.setDocument(this.getDocument()), this.tokenRe = e.tokenRe, this.nonTokenRe = e.nonTokenRe,
|
||
this.$options.wrapMethod.set.call(this, this.$wrapMethod), t || (this.$setFolding(e.foldingRules),
|
||
this._emit("changeMode"), this.bgTokenizer.start(0));
|
||
}
|
||
}, this.$stopWorker = function() {
|
||
this.$worker && this.$worker.terminate(), this.$worker = null;
|
||
}, this.$startWorker = function() {
|
||
if ("undefined" == typeof Worker || e.noWorker) this.$worker = null; else try {
|
||
this.$worker = this.$mode.createWorker(this);
|
||
} catch (t) {
|
||
console.log("Could not load worker"), console.log(t), this.$worker = null;
|
||
}
|
||
}, this.getMode = function() {
|
||
return this.$mode;
|
||
}, this.$scrollTop = 0, this.setScrollTop = function(e) {
|
||
this.$scrollTop === e || isNaN(e) || (this.$scrollTop = e, this._signal("changeScrollTop", e));
|
||
}, this.getScrollTop = function() {
|
||
return this.$scrollTop;
|
||
}, this.$scrollLeft = 0, this.setScrollLeft = function(e) {
|
||
this.$scrollLeft === e || isNaN(e) || (this.$scrollLeft = e, this._signal("changeScrollLeft", e));
|
||
}, this.getScrollLeft = function() {
|
||
return this.$scrollLeft;
|
||
}, this.getScreenWidth = function() {
|
||
return this.$computeWidth(), this.screenWidth;
|
||
}, this.$computeWidth = function(e) {
|
||
if (this.$modified || e) {
|
||
if (this.$modified = !1, this.$useWrapMode) return this.screenWidth = this.$wrapLimit;
|
||
for (var t = this.doc.getAllLines(), n = this.$rowLengthCache, i = 0, o = 0, r = this.$foldData[o], s = r ? r.start.row : 1/0, a = t.length, l = 0; a > l; l++) {
|
||
if (l > s) {
|
||
if (l = r.end.row + 1, l >= a) break;
|
||
r = this.$foldData[o++], s = r ? r.start.row : 1/0;
|
||
}
|
||
null == n[l] && (n[l] = this.$getStringScreenWidth(t[l])[0]), n[l] > i && (i = n[l]);
|
||
}
|
||
this.screenWidth = i;
|
||
}
|
||
}, this.getLine = function(e) {
|
||
return this.doc.getLine(e);
|
||
}, this.getLines = function(e, t) {
|
||
return this.doc.getLines(e, t);
|
||
}, this.getLength = function() {
|
||
return this.doc.getLength();
|
||
}, this.getTextRange = function(e) {
|
||
return this.doc.getTextRange(e || this.selection.getRange());
|
||
}, this.insert = function(e, t) {
|
||
return this.doc.insert(e, t);
|
||
}, this.remove = function(e) {
|
||
return this.doc.remove(e);
|
||
}, this.undoChanges = function(e, t) {
|
||
if (e.length) {
|
||
this.$fromUndo = !0;
|
||
for (var n = null, i = e.length - 1; -1 != i; i--) {
|
||
var o = e[i];
|
||
"doc" == o.group ? (this.doc.revertDeltas(o.deltas), n = this.$getUndoSelection(o.deltas, !0, n)) : o.deltas.forEach(function(e) {
|
||
this.addFolds(e.folds);
|
||
}, this);
|
||
}
|
||
return this.$fromUndo = !1, n && this.$undoSelect && !t && this.selection.setSelectionRange(n),
|
||
n;
|
||
}
|
||
}, this.redoChanges = function(e, t) {
|
||
if (e.length) {
|
||
this.$fromUndo = !0;
|
||
for (var n = null, i = 0; i < e.length; i++) {
|
||
var o = e[i];
|
||
"doc" == o.group && (this.doc.applyDeltas(o.deltas), n = this.$getUndoSelection(o.deltas, !1, n));
|
||
}
|
||
return this.$fromUndo = !1, n && this.$undoSelect && !t && this.selection.setSelectionRange(n),
|
||
n;
|
||
}
|
||
}, this.setUndoSelect = function(e) {
|
||
this.$undoSelect = e;
|
||
}, this.$getUndoSelection = function(e, t, n) {
|
||
function i(e) {
|
||
var n = "insertText" === e.action || "insertLines" === e.action;
|
||
return t ? !n : n;
|
||
}
|
||
var o, r, s = e[0], a = !1;
|
||
i(s) ? (o = l.fromPoints(s.range.start, s.range.end), a = !0) : (o = l.fromPoints(s.range.start, s.range.start),
|
||
a = !1);
|
||
for (var c = 1; c < e.length; c++) s = e[c], i(s) ? (r = s.range.start, -1 == o.compare(r.row, r.column) && o.setStart(s.range.start),
|
||
r = s.range.end, 1 == o.compare(r.row, r.column) && o.setEnd(s.range.end), a = !0) : (r = s.range.start,
|
||
-1 == o.compare(r.row, r.column) && (o = l.fromPoints(s.range.start, s.range.start)),
|
||
a = !1);
|
||
if (null != n) {
|
||
0 == l.comparePoints(n.start, o.start) && (n.start.column += o.end.column - o.start.column,
|
||
n.end.column += o.end.column - o.start.column);
|
||
var u = n.compareRange(o);
|
||
1 == u ? o.setStart(n.start) : -1 == u && o.setEnd(n.end);
|
||
}
|
||
return o;
|
||
}, this.replace = function(e, t) {
|
||
return this.doc.replace(e, t);
|
||
}, this.moveText = function(e, t, n) {
|
||
var i = this.getTextRange(e), o = this.getFoldsInRange(e), r = l.fromPoints(t, t);
|
||
if (!n) {
|
||
this.remove(e);
|
||
var s = e.start.row - e.end.row, a = s ? -e.end.column : e.start.column - e.end.column;
|
||
a && (r.start.row == e.end.row && r.start.column > e.end.column && (r.start.column += a),
|
||
r.end.row == e.end.row && r.end.column > e.end.column && (r.end.column += a)), s && r.start.row >= e.end.row && (r.start.row += s,
|
||
r.end.row += s);
|
||
}
|
||
if (r.end = this.insert(r.start, i), o.length) {
|
||
var c = e.start, u = r.start, s = u.row - c.row, a = u.column - c.column;
|
||
this.addFolds(o.map(function(e) {
|
||
return e = e.clone(), e.start.row == c.row && (e.start.column += a), e.end.row == c.row && (e.end.column += a),
|
||
e.start.row += s, e.end.row += s, e;
|
||
}));
|
||
}
|
||
return r;
|
||
}, this.indentRows = function(e, t, n) {
|
||
n = n.replace(/\t/g, this.getTabString());
|
||
for (var i = e; t >= i; i++) this.insert({
|
||
row: i,
|
||
column: 0
|
||
}, n);
|
||
}, this.outdentRows = function(e) {
|
||
for (var t = e.collapseRows(), n = new l(0, 0, 0, 0), i = this.getTabSize(), o = t.start.row; o <= t.end.row; ++o) {
|
||
var r = this.getLine(o);
|
||
n.start.row = o, n.end.row = o;
|
||
for (var s = 0; i > s && " " == r.charAt(s); ++s) ;
|
||
i > s && " " == r.charAt(s) ? (n.start.column = s, n.end.column = s + 1) : (n.start.column = 0,
|
||
n.end.column = s), this.remove(n);
|
||
}
|
||
}, this.$moveLines = function(e, t, n) {
|
||
if (e = this.getRowFoldStart(e), t = this.getRowFoldEnd(t), 0 > n) {
|
||
var i = this.getRowFoldStart(e + n);
|
||
if (0 > i) return 0;
|
||
var o = i - e;
|
||
} else if (n > 0) {
|
||
var i = this.getRowFoldEnd(t + n);
|
||
if (i > this.doc.getLength() - 1) return 0;
|
||
var o = i - t;
|
||
} else {
|
||
e = this.$clipRowToDocument(e), t = this.$clipRowToDocument(t);
|
||
var o = t - e + 1;
|
||
}
|
||
var r = new l(e, 0, t, Number.MAX_VALUE), s = this.getFoldsInRange(r).map(function(e) {
|
||
return e = e.clone(), e.start.row += o, e.end.row += o, e;
|
||
}), a = 0 == n ? this.doc.getLines(e, t) : this.doc.removeLines(e, t);
|
||
return this.doc.insertLines(e + o, a), s.length && this.addFolds(s), o;
|
||
}, this.moveLinesUp = function(e, t) {
|
||
return this.$moveLines(e, t, -1);
|
||
}, this.moveLinesDown = function(e, t) {
|
||
return this.$moveLines(e, t, 1);
|
||
}, this.duplicateLines = function(e, t) {
|
||
return this.$moveLines(e, t, 0);
|
||
}, this.$clipRowToDocument = function(e) {
|
||
return Math.max(0, Math.min(e, this.doc.getLength() - 1));
|
||
}, this.$clipColumnToRow = function(e, t) {
|
||
return 0 > t ? 0 : Math.min(this.doc.getLine(e).length, t);
|
||
}, this.$clipPositionToDocument = function(e, t) {
|
||
if (t = Math.max(0, t), 0 > e) e = 0, t = 0; else {
|
||
var n = this.doc.getLength();
|
||
e >= n ? (e = n - 1, t = this.doc.getLine(n - 1).length) : t = Math.min(this.doc.getLine(e).length, t);
|
||
}
|
||
return {
|
||
row: e,
|
||
column: t
|
||
};
|
||
}, this.$clipRangeToDocument = function(e) {
|
||
e.start.row < 0 ? (e.start.row = 0, e.start.column = 0) : e.start.column = this.$clipColumnToRow(e.start.row, e.start.column);
|
||
var t = this.doc.getLength() - 1;
|
||
return e.end.row > t ? (e.end.row = t, e.end.column = this.doc.getLine(t).length) : e.end.column = this.$clipColumnToRow(e.end.row, e.end.column),
|
||
e;
|
||
}, this.$wrapLimit = 80, this.$useWrapMode = !1, this.$wrapLimitRange = {
|
||
min: null,
|
||
max: null
|
||
}, this.setUseWrapMode = function(e) {
|
||
if (e != this.$useWrapMode) {
|
||
if (this.$useWrapMode = e, this.$modified = !0, this.$resetRowCache(0), e) {
|
||
var t = this.getLength();
|
||
this.$wrapData = [];
|
||
for (var n = 0; t > n; n++) this.$wrapData.push([]);
|
||
this.$updateWrapData(0, t - 1);
|
||
}
|
||
this._emit("changeWrapMode");
|
||
}
|
||
}, this.getUseWrapMode = function() {
|
||
return this.$useWrapMode;
|
||
}, this.setWrapLimitRange = function(e, t) {
|
||
(this.$wrapLimitRange.min !== e || this.$wrapLimitRange.max !== t) && (this.$wrapLimitRange = {
|
||
min: e,
|
||
max: t
|
||
}, this.$modified = !0, this._emit("changeWrapMode"));
|
||
}, this.adjustWrapLimit = function(e, t) {
|
||
var n = this.$wrapLimitRange;
|
||
n.max < 0 && (n = {
|
||
min: t,
|
||
max: t
|
||
});
|
||
var i = this.$constrainWrapLimit(e, n.min, n.max);
|
||
return i != this.$wrapLimit && i > 1 ? (this.$wrapLimit = i, this.$modified = !0,
|
||
this.$useWrapMode && (this.$updateWrapData(0, this.getLength() - 1), this.$resetRowCache(0),
|
||
this._emit("changeWrapLimit")), !0) : !1;
|
||
}, this.$constrainWrapLimit = function(e, t, n) {
|
||
return t && (e = Math.max(t, e)), n && (e = Math.min(n, e)), e;
|
||
}, this.getWrapLimit = function() {
|
||
return this.$wrapLimit;
|
||
}, this.setWrapLimit = function(e) {
|
||
this.setWrapLimitRange(e, e);
|
||
}, this.getWrapLimitRange = function() {
|
||
return {
|
||
min: this.$wrapLimitRange.min,
|
||
max: this.$wrapLimitRange.max
|
||
};
|
||
}, this.$updateInternalDataOnChange = function(e) {
|
||
var t, n = this.$useWrapMode, i = e.data.action, o = e.data.range.start.row, r = e.data.range.end.row, s = e.data.range.start, a = e.data.range.end, l = null;
|
||
if (-1 != i.indexOf("Lines") ? (r = "insertLines" == i ? o + e.data.lines.length : o,
|
||
t = e.data.lines ? e.data.lines.length : r - o) : t = r - o, this.$updating = !0,
|
||
0 != t) if (-1 != i.indexOf("remove")) {
|
||
this[n ? "$wrapData" : "$rowLengthCache"].splice(o, t);
|
||
var c = this.$foldData;
|
||
l = this.getFoldsInRange(e.data.range), this.removeFolds(l);
|
||
var u = this.getFoldLine(a.row), d = 0;
|
||
if (u) {
|
||
u.addRemoveChars(a.row, a.column, s.column - a.column), u.shiftRow(-t);
|
||
var h = this.getFoldLine(o);
|
||
h && h !== u && (h.merge(u), u = h), d = c.indexOf(u) + 1;
|
||
}
|
||
for (d; d < c.length; d++) {
|
||
var u = c[d];
|
||
u.start.row >= a.row && u.shiftRow(-t);
|
||
}
|
||
r = o;
|
||
} else {
|
||
var p;
|
||
if (n) {
|
||
p = [ o, 0 ];
|
||
for (var f = 0; t > f; f++) p.push([]);
|
||
this.$wrapData.splice.apply(this.$wrapData, p);
|
||
} else p = Array(t), p.unshift(o, 0), this.$rowLengthCache.splice.apply(this.$rowLengthCache, p);
|
||
var c = this.$foldData, u = this.getFoldLine(o), d = 0;
|
||
if (u) {
|
||
var g = u.range.compareInside(s.row, s.column);
|
||
0 == g ? (u = u.split(s.row, s.column), u.shiftRow(t), u.addRemoveChars(r, 0, a.column - s.column)) : -1 == g && (u.addRemoveChars(o, 0, a.column - s.column),
|
||
u.shiftRow(t)), d = c.indexOf(u) + 1;
|
||
}
|
||
for (d; d < c.length; d++) {
|
||
var u = c[d];
|
||
u.start.row >= o && u.shiftRow(t);
|
||
}
|
||
} else {
|
||
t = Math.abs(e.data.range.start.column - e.data.range.end.column), -1 != i.indexOf("remove") && (l = this.getFoldsInRange(e.data.range),
|
||
this.removeFolds(l), t = -t);
|
||
var u = this.getFoldLine(o);
|
||
u && u.addRemoveChars(o, s.column, t);
|
||
}
|
||
return n && this.$wrapData.length != this.doc.getLength() && console.error("doc.getLength() and $wrapData.length have to be the same!"),
|
||
this.$updating = !1, n ? this.$updateWrapData(o, r) : this.$updateRowLengthCache(o, r),
|
||
l;
|
||
}, this.$updateRowLengthCache = function(e, t) {
|
||
this.$rowLengthCache[e] = null, this.$rowLengthCache[t] = null;
|
||
}, this.$updateWrapData = function(e, t) {
|
||
var n, i, o = this.doc.getAllLines(), r = this.getTabSize(), s = this.$wrapData, a = this.$wrapLimit, l = e;
|
||
for (t = Math.min(t, o.length - 1); t >= l; ) i = this.getFoldLine(l, i), i ? (n = [],
|
||
i.walk(function(e, t, i, r) {
|
||
var s;
|
||
if (null != e) {
|
||
s = this.$getDisplayTokens(e, n.length), s[0] = h;
|
||
for (var a = 1; a < s.length; a++) s[a] = p;
|
||
} else s = this.$getDisplayTokens(o[t].substring(r, i), n.length);
|
||
n = n.concat(s);
|
||
}.bind(this), i.end.row, o[i.end.row].length + 1), s[i.start.row] = this.$computeWrapSplits(n, a, r),
|
||
l = i.end.row + 1) : (n = this.$getDisplayTokens(o[l]), s[l] = this.$computeWrapSplits(n, a, r),
|
||
l++);
|
||
};
|
||
var s = 1, c = 2, h = 3, p = 4, f = 9, g = 10, m = 11, v = 12;
|
||
this.$computeWrapSplits = function(e, t) {
|
||
function n(t) {
|
||
var n = e.slice(r, t), o = n.length;
|
||
n.join("").replace(/12/g, function() {
|
||
o -= 1;
|
||
}).replace(/2/g, function() {
|
||
o -= 1;
|
||
}), s += o, i.push(s), r = t;
|
||
}
|
||
if (0 == e.length) return [];
|
||
for (var i = [], o = e.length, r = 0, s = 0, a = this.$wrapAsCode; o - r > t; ) {
|
||
var l = r + t;
|
||
if (e[l - 1] >= g && e[l] >= g) n(l); else if (e[l] != h && e[l] != p) {
|
||
for (var c = Math.max(l - (a ? 10 : t - (t >> 2)), r - 1); l > c && e[l] < h; ) l--;
|
||
if (a) {
|
||
for (;l > c && e[l] < h; ) l--;
|
||
for (;l > c && e[l] == f; ) l--;
|
||
} else for (;l > c && e[l] < g; ) l--;
|
||
l > c ? n(++l) : (l = r + t, n(l));
|
||
} else {
|
||
for (l; l != r - 1 && e[l] != h; l--) ;
|
||
if (l > r) {
|
||
n(l);
|
||
continue;
|
||
}
|
||
for (l = r + t; l < e.length && e[l] == p; l++) ;
|
||
if (l == e.length) break;
|
||
n(l);
|
||
}
|
||
}
|
||
return i;
|
||
}, this.$getDisplayTokens = function(e, n) {
|
||
var i, o = [];
|
||
n = n || 0;
|
||
for (var r = 0; r < e.length; r++) {
|
||
var a = e.charCodeAt(r);
|
||
if (9 == a) {
|
||
i = this.getScreenTabSize(o.length + n), o.push(m);
|
||
for (var l = 1; i > l; l++) o.push(v);
|
||
} else 32 == a ? o.push(g) : a > 39 && 48 > a || a > 57 && 64 > a ? o.push(f) : a >= 4352 && t(a) ? o.push(s, c) : o.push(s);
|
||
}
|
||
return o;
|
||
}, this.$getStringScreenWidth = function(e, n, i) {
|
||
if (0 == n) return [ 0, 0 ];
|
||
null == n && (n = 1/0), i = i || 0;
|
||
var o, r;
|
||
for (r = 0; r < e.length && (o = e.charCodeAt(r), i += 9 == o ? this.getScreenTabSize(i) : o >= 4352 && t(o) ? 2 : 1,
|
||
!(i > n)); r++) ;
|
||
return [ i, r ];
|
||
}, this.getRowLength = function(e) {
|
||
return this.$useWrapMode && this.$wrapData[e] ? this.$wrapData[e].length + 1 : 1;
|
||
}, this.getScreenLastRowColumn = function(e) {
|
||
var t = this.screenToDocumentPosition(e, Number.MAX_VALUE);
|
||
return this.documentToScreenColumn(t.row, t.column);
|
||
}, this.getDocumentLastRowColumn = function(e, t) {
|
||
var n = this.documentToScreenRow(e, t);
|
||
return this.getScreenLastRowColumn(n);
|
||
}, this.getDocumentLastRowColumnPosition = function(e, t) {
|
||
var n = this.documentToScreenRow(e, t);
|
||
return this.screenToDocumentPosition(n, Number.MAX_VALUE / 10);
|
||
}, this.getRowSplitData = function(e) {
|
||
return this.$useWrapMode ? this.$wrapData[e] : void 0;
|
||
}, this.getScreenTabSize = function(e) {
|
||
return this.$tabSize - e % this.$tabSize;
|
||
}, this.screenToDocumentRow = function(e, t) {
|
||
return this.screenToDocumentPosition(e, t).row;
|
||
}, this.screenToDocumentColumn = function(e, t) {
|
||
return this.screenToDocumentPosition(e, t).column;
|
||
}, this.screenToDocumentPosition = function(e, t) {
|
||
if (0 > e) return {
|
||
row: 0,
|
||
column: 0
|
||
};
|
||
var n, i, o = 0, r = 0, s = 0, a = 0, l = this.$screenRowCache, c = this.$getRowCacheIndex(l, e), u = l.length;
|
||
if (u && c >= 0) var s = l[c], o = this.$docRowCache[c], d = e > l[u - 1]; else var d = !u;
|
||
for (var h = this.getLength() - 1, p = this.getNextFoldLine(o), f = p ? p.start.row : 1/0; e >= s && (a = this.getRowLength(o),
|
||
!(s + a - 1 >= e || o >= h)); ) s += a, o++, o > f && (o = p.end.row + 1, p = this.getNextFoldLine(o, p),
|
||
f = p ? p.start.row : 1/0), d && (this.$docRowCache.push(o), this.$screenRowCache.push(s));
|
||
if (p && p.start.row <= o) n = this.getFoldDisplayLine(p), o = p.start.row; else {
|
||
if (e >= s + a || o > h) return {
|
||
row: h,
|
||
column: this.getLine(h).length
|
||
};
|
||
n = this.getLine(o), p = null;
|
||
}
|
||
if (this.$useWrapMode) {
|
||
var g = this.$wrapData[o];
|
||
g && (i = g[e - s], e > s && g.length && (r = g[e - s - 1] || g[g.length - 1], n = n.substring(r)));
|
||
}
|
||
return r += this.$getStringScreenWidth(n, t)[1], this.$useWrapMode && r >= i && (r = i - 1),
|
||
p ? p.idxToPosition(r) : {
|
||
row: o,
|
||
column: r
|
||
};
|
||
}, this.documentToScreenPosition = function(e, t) {
|
||
if ("undefined" == typeof t) var n = this.$clipPositionToDocument(e.row, e.column); else n = this.$clipPositionToDocument(e, t);
|
||
e = n.row, t = n.column;
|
||
var i = 0, o = null, r = null;
|
||
r = this.getFoldAt(e, t, 1), r && (e = r.start.row, t = r.start.column);
|
||
var s, a = 0, l = this.$docRowCache, c = this.$getRowCacheIndex(l, e), u = l.length;
|
||
if (u && c >= 0) var a = l[c], i = this.$screenRowCache[c], d = e > l[u - 1]; else var d = !u;
|
||
for (var h = this.getNextFoldLine(a), p = h ? h.start.row : 1/0; e > a; ) {
|
||
if (a >= p) {
|
||
if (s = h.end.row + 1, s > e) break;
|
||
h = this.getNextFoldLine(s, h), p = h ? h.start.row : 1/0;
|
||
} else s = a + 1;
|
||
i += this.getRowLength(a), a = s, d && (this.$docRowCache.push(a), this.$screenRowCache.push(i));
|
||
}
|
||
var f = "";
|
||
if (h && a >= p ? (f = this.getFoldDisplayLine(h, e, t), o = h.start.row) : (f = this.getLine(e).substring(0, t),
|
||
o = e), this.$useWrapMode) {
|
||
for (var g = this.$wrapData[o], m = 0; f.length >= g[m]; ) i++, m++;
|
||
f = f.substring(g[m - 1] || 0, f.length);
|
||
}
|
||
return {
|
||
row: i,
|
||
column: this.$getStringScreenWidth(f)[0]
|
||
};
|
||
}, this.documentToScreenColumn = function(e, t) {
|
||
return this.documentToScreenPosition(e, t).column;
|
||
}, this.documentToScreenRow = function(e, t) {
|
||
return this.documentToScreenPosition(e, t).row;
|
||
}, this.getScreenLength = function() {
|
||
var e = 0, t = null;
|
||
if (this.$useWrapMode) for (var n = this.$wrapData.length, i = 0, o = 0, t = this.$foldData[o++], r = t ? t.start.row : 1/0; n > i; ) e += this.$wrapData[i].length + 1,
|
||
i++, i > r && (i = t.end.row + 1, t = this.$foldData[o++], r = t ? t.start.row : 1/0); else {
|
||
e = this.getLength();
|
||
for (var s = this.$foldData, o = 0; o < s.length; o++) t = s[o], e -= t.end.row - t.start.row;
|
||
}
|
||
return e;
|
||
};
|
||
}).call(h.prototype), e("./edit_session/folding").Folding.call(h.prototype), e("./edit_session/bracket_match").BracketMatch.call(h.prototype),
|
||
o.defineOptions(h.prototype, "session", {
|
||
wrap: {
|
||
set: function(e) {
|
||
if (e && "off" != e ? "free" == e ? e = !0 : "printMargin" == e ? e = -1 : "string" == typeof e && (e = parseInt(e, 10) || !1) : e = !1,
|
||
this.$wrap != e) {
|
||
if (e) {
|
||
var t = "number" == typeof e ? e : null;
|
||
this.setWrapLimitRange(t, t), this.setUseWrapMode(!0);
|
||
} else this.setUseWrapMode(!1);
|
||
this.$wrap = e;
|
||
}
|
||
},
|
||
get: function() {
|
||
return this.getUseWrapMode() ? this.getWrapLimitRange().min || "free" : "off";
|
||
},
|
||
handlesSet: !0
|
||
},
|
||
wrapMethod: {
|
||
set: function(e) {
|
||
this.$wrapAsCode = "auto" == e ? "text" != this.$mode.type : "text" != e;
|
||
},
|
||
initialValue: "auto"
|
||
},
|
||
firstLineNumber: {
|
||
set: function() {
|
||
this._emit("changeBreakpoint");
|
||
},
|
||
initialValue: 1
|
||
},
|
||
useWorker: {
|
||
set: function(e) {
|
||
this.$useWorker = e, this.$stopWorker(), e && this.$startWorker();
|
||
},
|
||
initialValue: !0
|
||
},
|
||
useSoftTabs: {
|
||
initialValue: !0
|
||
},
|
||
tabSize: {
|
||
set: function(e) {
|
||
isNaN(e) || this.$tabSize === e || (this.$modified = !0, this.$rowLengthCache = [],
|
||
this.$tabSize = e, this._emit("changeTabSize"));
|
||
},
|
||
initialValue: 4,
|
||
handlesSet: !0
|
||
},
|
||
overwrite: {
|
||
set: function() {
|
||
this._emit("changeOverwrite");
|
||
},
|
||
initialValue: !1
|
||
},
|
||
newLineMode: {
|
||
set: function(e) {
|
||
this.doc.setNewLineMode(e);
|
||
},
|
||
get: function() {
|
||
return this.doc.getNewLineMode();
|
||
},
|
||
handlesSet: !0
|
||
}
|
||
}), t.EditSession = h;
|
||
}), define("ace/search", [ "require", "exports", "module", "./lib/lang", "./lib/oop", "./range" ], function(e, t) {
|
||
var n = e("./lib/lang"), i = e("./lib/oop"), o = e("./range").Range, r = function() {
|
||
this.$options = {};
|
||
};
|
||
(function() {
|
||
this.set = function(e) {
|
||
return i.mixin(this.$options, e), this;
|
||
}, this.getOptions = function() {
|
||
return n.copyObject(this.$options);
|
||
}, this.setOptions = function(e) {
|
||
this.$options = e;
|
||
}, this.find = function(e) {
|
||
var t = this.$matchIterator(e, this.$options);
|
||
if (!t) return !1;
|
||
var n = null;
|
||
return t.forEach(function(e, t, i) {
|
||
if (e.start) n = e; else {
|
||
var r = e.offset + (i || 0);
|
||
n = new o(t, r, t, r + e.length);
|
||
}
|
||
return !0;
|
||
}), n;
|
||
}, this.findAll = function(e) {
|
||
var t = this.$options;
|
||
if (!t.needle) return [];
|
||
this.$assembleRegExp(t);
|
||
var i = t.range, r = i ? e.getLines(i.start.row, i.end.row) : e.doc.getAllLines(), s = [], a = t.re;
|
||
if (t.$isMultiLine) for (var l = a.length, c = r.length - l, u = a.offset || 0; c >= u; u++) {
|
||
for (var d = 0; l > d && -1 != r[u + d].search(a[d]); d++) ;
|
||
var h = r[u], p = r[u + l - 1], f = h.match(a[0])[0].length, g = p.match(a[l - 1])[0].length;
|
||
s.push(new o(u, h.length - f, u + l - 1, g));
|
||
} else for (var m = 0; m < r.length; m++) for (var v = n.getMatchOffsets(r[m], a), d = 0; d < v.length; d++) {
|
||
var b = v[d];
|
||
s.push(new o(m, b.offset, m, b.offset + b.length));
|
||
}
|
||
if (i) {
|
||
for (var y = i.start.column, w = i.start.column, m = 0, d = s.length - 1; d > m && s[m].start.column < y && s[m].start.row == i.start.row; ) m++;
|
||
for (;d > m && s[d].end.column > w && s[d].end.row == i.end.row; ) d--;
|
||
for (s = s.slice(m, d + 1), m = 0, d = s.length; d > m; m++) s[m].start.row += i.start.row,
|
||
s[m].end.row += i.start.row;
|
||
}
|
||
return s;
|
||
}, this.replace = function(e, t) {
|
||
var n = this.$options, i = this.$assembleRegExp(n);
|
||
if (n.$isMultiLine) return t;
|
||
if (i) {
|
||
var o = i.exec(e);
|
||
if (!o || o[0].length != e.length) return null;
|
||
if (t = e.replace(i, t), n.preserveCase) {
|
||
t = t.split("");
|
||
for (var r = Math.min(e.length, e.length); r--; ) {
|
||
var s = e[r];
|
||
t[r] = s && s.toLowerCase() != s ? t[r].toUpperCase() : t[r].toLowerCase();
|
||
}
|
||
t = t.join("");
|
||
}
|
||
return t;
|
||
}
|
||
}, this.$matchIterator = function(e, t) {
|
||
var i = this.$assembleRegExp(t);
|
||
if (!i) return !1;
|
||
var r, s = this, a = t.backwards;
|
||
if (t.$isMultiLine) var l = i.length, c = function(t, n, s) {
|
||
var a = t.search(i[0]);
|
||
if (-1 != a) {
|
||
for (var c = 1; l > c; c++) if (t = e.getLine(n + c), -1 == t.search(i[c])) return;
|
||
var u = t.match(i[l - 1])[0].length, d = new o(n, a, n + l - 1, u);
|
||
return 1 == i.offset ? (d.start.row--, d.start.column = Number.MAX_VALUE) : s && (d.start.column += s),
|
||
r(d) ? !0 : void 0;
|
||
}
|
||
}; else if (a) var c = function(e, t, o) {
|
||
for (var s = n.getMatchOffsets(e, i), a = s.length - 1; a >= 0; a--) if (r(s[a], t, o)) return !0;
|
||
}; else var c = function(e, t, o) {
|
||
for (var s = n.getMatchOffsets(e, i), a = 0; a < s.length; a++) if (r(s[a], t, o)) return !0;
|
||
};
|
||
return {
|
||
forEach: function(n) {
|
||
r = n, s.$lineIterator(e, t).forEach(c);
|
||
}
|
||
};
|
||
}, this.$assembleRegExp = function(e, t) {
|
||
if (e.needle instanceof RegExp) return e.re = e.needle;
|
||
var i = e.needle;
|
||
if (!e.needle) return e.re = !1;
|
||
e.regExp || (i = n.escapeRegExp(i)), e.wholeWord && (i = "\\b" + i + "\\b");
|
||
var o = e.caseSensitive ? "g" : "gi";
|
||
if (e.$isMultiLine = !t && /[\n\r]/.test(i), e.$isMultiLine) return e.re = this.$assembleMultilineRegExp(i, o);
|
||
try {
|
||
var r = new RegExp(i, o);
|
||
} catch (s) {
|
||
r = !1;
|
||
}
|
||
return e.re = r;
|
||
}, this.$assembleMultilineRegExp = function(e, t) {
|
||
for (var n = e.replace(/\r\n|\r|\n/g, "$\n^").split("\n"), i = [], o = 0; o < n.length; o++) try {
|
||
i.push(new RegExp(n[o], t));
|
||
} catch (r) {
|
||
return !1;
|
||
}
|
||
return "" == n[0] ? (i.shift(), i.offset = 1) : i.offset = 0, i;
|
||
}, this.$lineIterator = function(e, t) {
|
||
var n = 1 == t.backwards, i = 0 != t.skipCurrent, o = t.range, r = t.start;
|
||
r || (r = o ? o[n ? "end" : "start"] : e.selection.getRange()), r.start && (r = r[i != n ? "end" : "start"]);
|
||
var s = o ? o.start.row : 0, a = o ? o.end.row : e.getLength() - 1, l = n ? function(n) {
|
||
var i = r.row, o = e.getLine(i).substring(0, r.column);
|
||
if (!n(o, i)) {
|
||
for (i--; i >= s; i--) if (n(e.getLine(i), i)) return;
|
||
if (0 != t.wrap) for (i = a, s = r.row; i >= s; i--) if (n(e.getLine(i), i)) return;
|
||
}
|
||
} : function(n) {
|
||
var i = r.row, o = e.getLine(i).substr(r.column);
|
||
if (!n(o, i, r.column)) {
|
||
for (i += 1; a >= i; i++) if (n(e.getLine(i), i)) return;
|
||
if (0 != t.wrap) for (i = s, a = r.row; a >= i; i++) if (n(e.getLine(i), i)) return;
|
||
}
|
||
};
|
||
return {
|
||
forEach: l
|
||
};
|
||
};
|
||
}).call(r.prototype), t.Search = r;
|
||
}), define("ace/keyboard/hash_handler", [ "require", "exports", "module", "../lib/keys", "../lib/useragent" ], function(e, t) {
|
||
function n(e, t) {
|
||
if (this.platform = t || (o.isMac ? "mac" : "win"), this.commands = {}, this.commandKeyBinding = {},
|
||
this.__defineGetter__ && this.__defineSetter__ && "undefined" != typeof console && console.error) {
|
||
var n = !1, i = function() {
|
||
n || (n = !0, console.error("commmandKeyBinding has too many m's. use commandKeyBinding"));
|
||
};
|
||
this.__defineGetter__("commmandKeyBinding", function() {
|
||
return i(), this.commandKeyBinding;
|
||
}), this.__defineSetter__("commmandKeyBinding", function(e) {
|
||
return i(), this.commandKeyBinding = e;
|
||
});
|
||
} else this.commmandKeyBinding = this.commandKeyBinding;
|
||
this.addCommands(e);
|
||
}
|
||
var i = e("../lib/keys"), o = e("../lib/useragent");
|
||
(function() {
|
||
this.addCommand = function(e) {
|
||
this.commands[e.name] && this.removeCommand(e), this.commands[e.name] = e, e.bindKey && this._buildKeyHash(e);
|
||
}, this.removeCommand = function(e) {
|
||
var t = "string" == typeof e ? e : e.name;
|
||
e = this.commands[t], delete this.commands[t];
|
||
var n = this.commandKeyBinding;
|
||
for (var i in n) for (var o in n[i]) n[i][o] == e && delete n[i][o];
|
||
}, this.bindKey = function(e, t) {
|
||
if (e) {
|
||
if ("function" == typeof t) return this.addCommand({
|
||
exec: t,
|
||
bindKey: e,
|
||
name: t.name || e
|
||
}), void 0;
|
||
var n = this.commandKeyBinding;
|
||
e.split("|").forEach(function(e) {
|
||
var i = this.parseKeys(e, t), o = i.hashId;
|
||
(n[o] || (n[o] = {}))[i.key] = t;
|
||
}, this);
|
||
}
|
||
}, this.addCommands = function(e) {
|
||
e && Object.keys(e).forEach(function(t) {
|
||
var n = e[t];
|
||
if (n) {
|
||
if ("string" == typeof n) return this.bindKey(n, t);
|
||
"function" == typeof n && (n = {
|
||
exec: n
|
||
}), n.name || (n.name = t), this.addCommand(n);
|
||
}
|
||
}, this);
|
||
}, this.removeCommands = function(e) {
|
||
Object.keys(e).forEach(function(t) {
|
||
this.removeCommand(e[t]);
|
||
}, this);
|
||
}, this.bindKeys = function(e) {
|
||
Object.keys(e).forEach(function(t) {
|
||
this.bindKey(t, e[t]);
|
||
}, this);
|
||
}, this._buildKeyHash = function(e) {
|
||
var t = e.bindKey;
|
||
if (t) {
|
||
var n = "string" == typeof t ? t : t[this.platform];
|
||
this.bindKey(n, e);
|
||
}
|
||
}, this.parseKeys = function(e) {
|
||
-1 != e.indexOf(" ") && (e = e.split(/\s+/).pop());
|
||
var t = e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e) {
|
||
return e;
|
||
}), n = t.pop(), o = i[n];
|
||
if (i.FUNCTION_KEYS[o]) n = i.FUNCTION_KEYS[o].toLowerCase(); else {
|
||
if (!t.length) return {
|
||
key: n,
|
||
hashId: -1
|
||
};
|
||
if (1 == t.length && "shift" == t[0]) return {
|
||
key: n.toUpperCase(),
|
||
hashId: -1
|
||
};
|
||
}
|
||
for (var r = 0, s = t.length; s--; ) {
|
||
var a = i.KEY_MODS[t[s]];
|
||
if (null == a) return "undefined" != typeof console && console.error("invalid modifier " + t[s] + " in " + e),
|
||
!1;
|
||
r |= a;
|
||
}
|
||
return {
|
||
key: n,
|
||
hashId: r
|
||
};
|
||
}, this.findKeyCommand = function(e, t) {
|
||
var n = this.commandKeyBinding;
|
||
return n[e] && n[e][t];
|
||
}, this.handleKeyboard = function(e, t, n) {
|
||
return {
|
||
command: this.findKeyCommand(t, n)
|
||
};
|
||
};
|
||
}).call(n.prototype), t.HashHandler = n;
|
||
}), define("ace/commands/command_manager", [ "require", "exports", "module", "../lib/oop", "../keyboard/hash_handler", "../lib/event_emitter" ], function(e, t) {
|
||
var n = e("../lib/oop"), i = e("../keyboard/hash_handler").HashHandler, o = e("../lib/event_emitter").EventEmitter, r = function(e, t) {
|
||
i.call(this, t, e), this.byName = this.commands, this.setDefaultHandler("exec", function(e) {
|
||
return e.command.exec(e.editor, e.args || {});
|
||
});
|
||
};
|
||
n.inherits(r, i), function() {
|
||
n.implement(this, o), this.exec = function(e, t, n) {
|
||
if ("string" == typeof e && (e = this.commands[e]), !e) return !1;
|
||
if (t && t.$readOnly && !e.readOnly) return !1;
|
||
var i = {
|
||
editor: t,
|
||
command: e,
|
||
args: n
|
||
}, o = this._emit("exec", i);
|
||
return this._signal("afterExec", i), o === !1 ? !1 : !0;
|
||
}, this.toggleRecording = function(e) {
|
||
return this.$inReplay ? void 0 : (e && e._emit("changeStatus"), this.recording ? (this.macro.pop(),
|
||
this.removeEventListener("exec", this.$addCommandToMacro), this.macro.length || (this.macro = this.oldMacro),
|
||
this.recording = !1) : (this.$addCommandToMacro || (this.$addCommandToMacro = function(e) {
|
||
this.macro.push([ e.command, e.args ]);
|
||
}.bind(this)), this.oldMacro = this.macro, this.macro = [], this.on("exec", this.$addCommandToMacro),
|
||
this.recording = !0));
|
||
}, this.replay = function(e) {
|
||
if (!this.$inReplay && this.macro) {
|
||
if (this.recording) return this.toggleRecording(e);
|
||
try {
|
||
this.$inReplay = !0, this.macro.forEach(function(t) {
|
||
"string" == typeof t ? this.exec(t, e) : this.exec(t[0], e, t[1]);
|
||
}, this);
|
||
} finally {
|
||
this.$inReplay = !1;
|
||
}
|
||
}
|
||
}, this.trimMacro = function(e) {
|
||
return e.map(function(e) {
|
||
return "string" != typeof e[0] && (e[0] = e[0].name), e[1] || (e = e[0]), e;
|
||
});
|
||
};
|
||
}.call(r.prototype), t.CommandManager = r;
|
||
}), define("ace/commands/default_commands", [ "require", "exports", "module", "ace/lib/lang", "ace/config", "ace/range" ], function(e, t) {
|
||
function n(e, t) {
|
||
return {
|
||
win: e,
|
||
mac: t
|
||
};
|
||
}
|
||
var i = e("ace/lib/lang");
|
||
e("ace/config");
|
||
var o = e("ace/range").Range;
|
||
t.commands = [ {
|
||
name: "overwrite",
|
||
bindKey: "Insert",
|
||
exec: function(e) {
|
||
e.toggleOverwrite();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "selecttostart",
|
||
bindKey: n("Ctrl-Shift-Home", "Command-Shift-Up"),
|
||
exec: function(e) {
|
||
e.getSelection().selectFileStart();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotostart",
|
||
bindKey: n("Ctrl-Home", "Command-Home|Command-Up"),
|
||
exec: function(e) {
|
||
e.navigateFileStart();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectup",
|
||
bindKey: n("Shift-Up", "Shift-Up"),
|
||
exec: function(e) {
|
||
e.getSelection().selectUp();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "golineup",
|
||
bindKey: n("Up", "Up"),
|
||
exec: function(e, t) {
|
||
e.navigateUp(t.times);
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selecttoend",
|
||
bindKey: n("Ctrl-Shift-End", "Command-Shift-Down"),
|
||
exec: function(e) {
|
||
e.getSelection().selectFileEnd();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotoend",
|
||
bindKey: n("Ctrl-End", "Command-End|Command-Down"),
|
||
exec: function(e) {
|
||
e.navigateFileEnd();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectdown",
|
||
bindKey: n("Shift-Down", "Shift-Down"),
|
||
exec: function(e) {
|
||
e.getSelection().selectDown();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "golinedown",
|
||
bindKey: n("Down", "Down"),
|
||
exec: function(e, t) {
|
||
e.navigateDown(t.times);
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectwordleft",
|
||
bindKey: n("Ctrl-Shift-Left", "Option-Shift-Left"),
|
||
exec: function(e) {
|
||
e.getSelection().selectWordLeft();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotowordleft",
|
||
bindKey: n("Ctrl-Left", "Option-Left"),
|
||
exec: function(e) {
|
||
e.navigateWordLeft();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selecttolinestart",
|
||
bindKey: n("Alt-Shift-Left", "Command-Shift-Left"),
|
||
exec: function(e) {
|
||
e.getSelection().selectLineStart();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotolinestart",
|
||
bindKey: n("Alt-Left|Home", "Command-Left|Home"),
|
||
exec: function(e) {
|
||
e.navigateLineStart();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectleft",
|
||
bindKey: n("Shift-Left", "Shift-Left"),
|
||
exec: function(e) {
|
||
e.getSelection().selectLeft();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotoleft",
|
||
bindKey: n("Left", "Left"),
|
||
exec: function(e, t) {
|
||
e.navigateLeft(t.times);
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectwordright",
|
||
bindKey: n("Ctrl-Shift-Right", "Option-Shift-Right"),
|
||
exec: function(e) {
|
||
e.getSelection().selectWordRight();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotowordright",
|
||
bindKey: n("Ctrl-Right", "Option-Right"),
|
||
exec: function(e) {
|
||
e.navigateWordRight();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selecttolineend",
|
||
bindKey: n("Alt-Shift-Right", "Command-Shift-Right"),
|
||
exec: function(e) {
|
||
e.getSelection().selectLineEnd();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotolineend",
|
||
bindKey: n("Alt-Right|End", "Command-Right|End"),
|
||
exec: function(e) {
|
||
e.navigateLineEnd();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectright",
|
||
bindKey: n("Shift-Right", "Shift-Right"),
|
||
exec: function(e) {
|
||
e.getSelection().selectRight();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotoright",
|
||
bindKey: n("Right", "Right"),
|
||
exec: function(e, t) {
|
||
e.navigateRight(t.times);
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectpagedown",
|
||
bindKey: "Shift-PageDown",
|
||
exec: function(e) {
|
||
e.selectPageDown();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "pagedown",
|
||
bindKey: n(null, "Option-PageDown"),
|
||
exec: function(e) {
|
||
e.scrollPageDown();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotopagedown",
|
||
bindKey: n("PageDown", "PageDown"),
|
||
exec: function(e) {
|
||
e.gotoPageDown();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectpageup",
|
||
bindKey: "Shift-PageUp",
|
||
exec: function(e) {
|
||
e.selectPageUp();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "pageup",
|
||
bindKey: n(null, "Option-PageUp"),
|
||
exec: function(e) {
|
||
e.scrollPageUp();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "gotopageup",
|
||
bindKey: "PageUp",
|
||
exec: function(e) {
|
||
e.gotoPageUp();
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "scrollup",
|
||
bindKey: n("Ctrl-Up", null),
|
||
exec: function(e) {
|
||
e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight);
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "scrolldown",
|
||
bindKey: n("Ctrl-Down", null),
|
||
exec: function(e) {
|
||
e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight);
|
||
},
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectlinestart",
|
||
bindKey: "Shift-Home",
|
||
exec: function(e) {
|
||
e.getSelection().selectLineStart();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "selectlineend",
|
||
bindKey: "Shift-End",
|
||
exec: function(e) {
|
||
e.getSelection().selectLineEnd();
|
||
},
|
||
multiSelectAction: "forEach",
|
||
readOnly: !0
|
||
}, {
|
||
name: "cut",
|
||
exec: function(e) {
|
||
var t = e.getSelectionRange();
|
||
e._emit("cut", t), e.selection.isEmpty() || (e.session.remove(t), e.clearSelection());
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "undo",
|
||
bindKey: n("Ctrl-Z", "Command-Z"),
|
||
exec: function(e) {
|
||
e.undo();
|
||
}
|
||
}, {
|
||
name: "redo",
|
||
bindKey: n("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"),
|
||
exec: function(e) {
|
||
e.redo();
|
||
}
|
||
}, {
|
||
name: "del",
|
||
bindKey: n("Delete", "Delete|Ctrl-D"),
|
||
exec: function(e) {
|
||
e.remove("right");
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "backspace",
|
||
bindKey: n("Command-Backspace|Option-Backspace|Shift-Backspace|Backspace", "Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"),
|
||
exec: function(e) {
|
||
e.remove("left");
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "removetolinestart",
|
||
bindKey: n("Alt-Backspace", "Command-Backspace"),
|
||
exec: function(e) {
|
||
e.removeToLineStart();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "removetolineend",
|
||
bindKey: n("Alt-Delete", "Ctrl-K"),
|
||
exec: function(e) {
|
||
e.removeToLineEnd();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "removewordleft",
|
||
bindKey: n("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"),
|
||
exec: function(e) {
|
||
e.removeWordLeft();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "removewordright",
|
||
bindKey: n("Ctrl-Delete", "Alt-Delete"),
|
||
exec: function(e) {
|
||
e.removeWordRight();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "outdent",
|
||
bindKey: n("Shift-Tab", "Shift-Tab"),
|
||
exec: function(e) {
|
||
e.blockOutdent();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "indent",
|
||
bindKey: n("Tab", "Tab"),
|
||
exec: function(e) {
|
||
var t = e.getSelectionRange(), n = new o(t.end.row, 0, t.end.row, t.end.column), i = e.session.getTextRange(n), r = e.session.getTokenAt(t.end.row, t.end.column);
|
||
r && "markup.list" == r.type && /^\s*(?:[-+*]|\d+\.)\s+$/.test(i) ? e.blockIndent() : e.indent();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "insertstring",
|
||
exec: function(e, t) {
|
||
e.insert(t);
|
||
},
|
||
multiSelectAction: "forEach"
|
||
}, {
|
||
name: "inserttext",
|
||
exec: function(e, t) {
|
||
e.insert(i.stringRepeat(t.text || "", t.times || 1));
|
||
},
|
||
multiSelectAction: "forEach"
|
||
} ];
|
||
}), define("ace/editor", [ "require", "exports", "module", "./lib/fixoldbrowsers", "./lib/oop", "./lib/dom", "./lib/lang", "./lib/useragent", "./keyboard/textinput", "./mouse/mouse_handler", "./mouse/fold_handler", "./keyboard/keybinding", "./edit_session", "./search", "./range", "./lib/event_emitter", "./commands/command_manager", "./commands/default_commands", "./config" ], function(e, t) {
|
||
e("./lib/fixoldbrowsers");
|
||
var n = e("./lib/oop"), i = e("./lib/dom"), o = e("./lib/lang"), r = e("./lib/useragent"), s = e("./keyboard/textinput").TextInput, a = e("./mouse/mouse_handler").MouseHandler, l = e("./mouse/fold_handler").FoldHandler, c = e("./keyboard/keybinding").KeyBinding, u = e("./edit_session").EditSession, d = e("./search").Search, h = e("./range").Range, p = e("./lib/event_emitter").EventEmitter, f = e("./commands/command_manager").CommandManager, g = e("./commands/default_commands").commands, m = e("./config"), v = function(e, t) {
|
||
var n = e.getContainerElement();
|
||
this.container = n, this.renderer = e, this.commands = new f(r.isMac ? "mac" : "win", g),
|
||
this.textInput = new s(e.getTextAreaContainer(), this), this.renderer.textarea = this.textInput.getElement(),
|
||
this.keyBinding = new c(this), this.$mouseHandler = new a(this), new l(this), this.$blockScrolling = 0,
|
||
this.$search = new d().set({
|
||
wrap: !0
|
||
}), this.$historyTracker = this.$historyTracker.bind(this), this.commands.on("exec", this.$historyTracker),
|
||
this.$initOperationListeners(), this._$emitInputEvent = o.delayedCall(function() {
|
||
this._signal("input", {}), this.session.bgTokenizer && this.session.bgTokenizer.scheduleStart();
|
||
}.bind(this)), this.on("change", function(e, t) {
|
||
t._$emitInputEvent.schedule(31);
|
||
}), this.setSession(t || new u("")), m.resetOptions(this), m._emit("editor", this);
|
||
};
|
||
(function() {
|
||
n.implement(this, p), this.$initOperationListeners = function() {
|
||
function e(e) {
|
||
return e[e.length - 1];
|
||
}
|
||
this.selections = [], this.commands.on("exec", function(t) {
|
||
this.startOperation(t);
|
||
var n = t.command;
|
||
if ("fileJump" == n.group) {
|
||
var i = this.prevOp;
|
||
i && "fileJump" == i.command.group || (this.lastFileJumpPos = e(this.selections));
|
||
} else this.lastFileJumpPos = null;
|
||
}.bind(this), !0), this.commands.on("afterExec", function(e) {
|
||
var t = e.command;
|
||
return "fileJump" == t.group && this.lastFileJumpPos && !this.curOp.selectionChanged ? (this.selection.fromJSON(this.lastFileJumpPos),
|
||
void 0) : (this.endOperation(e), void 0);
|
||
}.bind(this), !0), this.$opResetTimer = o.delayedCall(this.endOperation.bind(this)),
|
||
this.on("change", function() {
|
||
this.curOp || this.startOperation(), this.curOp.docChanged = !0;
|
||
}.bind(this), !0), this.on("changeSelection", function() {
|
||
this.curOp || this.startOperation(), this.curOp.selectionChanged = !0;
|
||
}.bind(this), !0);
|
||
}, this.curOp = null, this.prevOp = {}, this.startOperation = function(e) {
|
||
if (this.curOp) {
|
||
if (!e || this.curOp.command) return;
|
||
this.prevOp = this.curOp;
|
||
}
|
||
e || (this.previousCommand = null, e = {}), this.$opResetTimer.schedule(), this.curOp = {
|
||
command: e.command || {},
|
||
args: e.args
|
||
}, this.selections.push(this.selection.toJSON());
|
||
}, this.endOperation = function() {
|
||
this.curOp && (this.prevOp = this.curOp, this.curOp = null);
|
||
}, this.$historyTracker = function(e) {
|
||
if (this.$mergeUndoDeltas) {
|
||
var t = this.prevOp, n = [ "backspace", "del", "insertstring" ], i = t.command && e.command.name == t.command.name;
|
||
if ("insertstring" == e.command.name) {
|
||
var o = e.args;
|
||
void 0 === this.mergeNextCommand && (this.mergeNextCommand = !0), i = i && this.mergeNextCommand && (!/\s/.test(o) || /\s/.test(t.args)),
|
||
this.mergeNextCommand = !0;
|
||
} else i = i && -1 !== n.indexOf(e.command.name);
|
||
"always" != this.$mergeUndoDeltas && Date.now() - this.sequenceStartTime > 2e3 && (i = !1),
|
||
i ? this.session.mergeUndoDeltas = !0 : -1 !== n.indexOf(e.command.name) && (this.sequenceStartTime = Date.now());
|
||
}
|
||
}, this.setKeyboardHandler = function(e) {
|
||
if (e) if ("string" == typeof e) {
|
||
this.$keybindingId = e;
|
||
var t = this;
|
||
m.loadModule([ "keybinding", e ], function(n) {
|
||
t.$keybindingId == e && t.keyBinding.setKeyboardHandler(n && n.handler);
|
||
});
|
||
} else this.$keybindingId = null, this.keyBinding.setKeyboardHandler(e); else this.keyBinding.setKeyboardHandler(null);
|
||
}, this.getKeyboardHandler = function() {
|
||
return this.keyBinding.getKeyboardHandler();
|
||
}, this.setSession = function(e) {
|
||
if (this.session != e) {
|
||
if (this.session) {
|
||
var t = this.session;
|
||
this.session.removeEventListener("change", this.$onDocumentChange), this.session.removeEventListener("changeMode", this.$onChangeMode),
|
||
this.session.removeEventListener("tokenizerUpdate", this.$onTokenizerUpdate), this.session.removeEventListener("changeTabSize", this.$onChangeTabSize),
|
||
this.session.removeEventListener("changeWrapLimit", this.$onChangeWrapLimit), this.session.removeEventListener("changeWrapMode", this.$onChangeWrapMode),
|
||
this.session.removeEventListener("onChangeFold", this.$onChangeFold), this.session.removeEventListener("changeFrontMarker", this.$onChangeFrontMarker),
|
||
this.session.removeEventListener("changeBackMarker", this.$onChangeBackMarker),
|
||
this.session.removeEventListener("changeBreakpoint", this.$onChangeBreakpoint),
|
||
this.session.removeEventListener("changeAnnotation", this.$onChangeAnnotation),
|
||
this.session.removeEventListener("changeOverwrite", this.$onCursorChange), this.session.removeEventListener("changeScrollTop", this.$onScrollTopChange),
|
||
this.session.removeEventListener("changeScrollLeft", this.$onScrollLeftChange);
|
||
var n = this.session.getSelection();
|
||
n.removeEventListener("changeCursor", this.$onCursorChange), n.removeEventListener("changeSelection", this.$onSelectionChange);
|
||
}
|
||
this.session = e, this.$onDocumentChange = this.onDocumentChange.bind(this), e.addEventListener("change", this.$onDocumentChange),
|
||
this.renderer.setSession(e), this.$onChangeMode = this.onChangeMode.bind(this),
|
||
e.addEventListener("changeMode", this.$onChangeMode), this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this),
|
||
e.addEventListener("tokenizerUpdate", this.$onTokenizerUpdate), this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer),
|
||
e.addEventListener("changeTabSize", this.$onChangeTabSize), this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this),
|
||
e.addEventListener("changeWrapLimit", this.$onChangeWrapLimit), this.$onChangeWrapMode = this.onChangeWrapMode.bind(this),
|
||
e.addEventListener("changeWrapMode", this.$onChangeWrapMode), this.$onChangeFold = this.onChangeFold.bind(this),
|
||
e.addEventListener("changeFold", this.$onChangeFold), this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this),
|
||
this.session.addEventListener("changeFrontMarker", this.$onChangeFrontMarker), this.$onChangeBackMarker = this.onChangeBackMarker.bind(this),
|
||
this.session.addEventListener("changeBackMarker", this.$onChangeBackMarker), this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this),
|
||
this.session.addEventListener("changeBreakpoint", this.$onChangeBreakpoint), this.$onChangeAnnotation = this.onChangeAnnotation.bind(this),
|
||
this.session.addEventListener("changeAnnotation", this.$onChangeAnnotation), this.$onCursorChange = this.onCursorChange.bind(this),
|
||
this.session.addEventListener("changeOverwrite", this.$onCursorChange), this.$onScrollTopChange = this.onScrollTopChange.bind(this),
|
||
this.session.addEventListener("changeScrollTop", this.$onScrollTopChange), this.$onScrollLeftChange = this.onScrollLeftChange.bind(this),
|
||
this.session.addEventListener("changeScrollLeft", this.$onScrollLeftChange), this.selection = e.getSelection(),
|
||
this.selection.addEventListener("changeCursor", this.$onCursorChange), this.$onSelectionChange = this.onSelectionChange.bind(this),
|
||
this.selection.addEventListener("changeSelection", this.$onSelectionChange), this.onChangeMode(),
|
||
this.$blockScrolling += 1, this.onCursorChange(), this.$blockScrolling -= 1, this.onScrollTopChange(),
|
||
this.onScrollLeftChange(), this.onSelectionChange(), this.onChangeFrontMarker(),
|
||
this.onChangeBackMarker(), this.onChangeBreakpoint(), this.onChangeAnnotation(),
|
||
this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(), this.renderer.updateFull(),
|
||
this._emit("changeSession", {
|
||
session: e,
|
||
oldSession: t
|
||
});
|
||
}
|
||
}, this.getSession = function() {
|
||
return this.session;
|
||
}, this.setValue = function(e, t) {
|
||
return this.session.doc.setValue(e), t ? 1 == t ? this.navigateFileEnd() : -1 == t && this.navigateFileStart() : this.selectAll(),
|
||
e;
|
||
}, this.getValue = function() {
|
||
return this.session.getValue();
|
||
}, this.getSelection = function() {
|
||
return this.selection;
|
||
}, this.resize = function(e) {
|
||
this.renderer.onResize(e);
|
||
}, this.setTheme = function(e) {
|
||
this.renderer.setTheme(e);
|
||
}, this.getTheme = function() {
|
||
return this.renderer.getTheme();
|
||
}, this.setStyle = function(e) {
|
||
this.renderer.setStyle(e);
|
||
}, this.unsetStyle = function(e) {
|
||
this.renderer.unsetStyle(e);
|
||
}, this.getFontSize = function() {
|
||
return this.getOption("fontSize") || i.computedStyle(this.container, "fontSize");
|
||
}, this.setFontSize = function(e) {
|
||
this.setOption("fontSize", e);
|
||
}, this.$highlightBrackets = function() {
|
||
if (this.session.$bracketHighlight && (this.session.removeMarker(this.session.$bracketHighlight),
|
||
this.session.$bracketHighlight = null), !this.$highlightPending) {
|
||
var e = this;
|
||
this.$highlightPending = !0, setTimeout(function() {
|
||
e.$highlightPending = !1;
|
||
var t = e.session.findMatchingBracket(e.getCursorPosition());
|
||
if (t) var n = new h(t.row, t.column, t.row, t.column + 1); else if (e.session.$mode.getMatching) var n = e.session.$mode.getMatching(e.session);
|
||
n && (e.session.$bracketHighlight = e.session.addMarker(n, "ace_bracket", "text"));
|
||
}, 50);
|
||
}
|
||
}, this.focus = function() {
|
||
var e = this;
|
||
setTimeout(function() {
|
||
e.textInput.focus();
|
||
}), this.textInput.focus();
|
||
}, this.isFocused = function() {
|
||
return this.textInput.isFocused();
|
||
}, this.blur = function() {
|
||
this.textInput.blur();
|
||
}, this.onFocus = function() {
|
||
this.$isFocused || (this.$isFocused = !0, this.renderer.showCursor(), this.renderer.visualizeFocus(),
|
||
this._emit("focus"));
|
||
}, this.onBlur = function() {
|
||
this.$isFocused && (this.$isFocused = !1, this.renderer.hideCursor(), this.renderer.visualizeBlur(),
|
||
this._emit("blur"));
|
||
}, this.$cursorChange = function() {
|
||
this.renderer.updateCursor();
|
||
}, this.onDocumentChange = function(e) {
|
||
var t, n = e.data, i = n.range;
|
||
t = i.start.row == i.end.row && "insertLines" != n.action && "removeLines" != n.action ? i.end.row : 1/0,
|
||
this.renderer.updateLines(i.start.row, t), this._emit("change", e), this.$cursorChange();
|
||
}, this.onTokenizerUpdate = function(e) {
|
||
var t = e.data;
|
||
this.renderer.updateLines(t.first, t.last);
|
||
}, this.onScrollTopChange = function() {
|
||
this.renderer.scrollToY(this.session.getScrollTop());
|
||
}, this.onScrollLeftChange = function() {
|
||
this.renderer.scrollToX(this.session.getScrollLeft());
|
||
}, this.onCursorChange = function() {
|
||
this.$cursorChange(), this.$blockScrolling || this.renderer.scrollCursorIntoView(),
|
||
this.$highlightBrackets(), this.$updateHighlightActiveLine(), this._emit("changeSelection");
|
||
}, this.$updateHighlightActiveLine = function() {
|
||
var e, t = this.getSession();
|
||
if (this.$highlightActiveLine && ("line" == this.$selectionStyle && this.selection.isMultiLine() || (e = this.getCursorPosition()),
|
||
this.renderer.$maxLines && 1 === this.session.getLength() && (e = !1)), t.$highlightLineMarker && !e) t.removeMarker(t.$highlightLineMarker.id),
|
||
t.$highlightLineMarker = null; else if (!t.$highlightLineMarker && e) {
|
||
var n = new h(e.row, e.column, e.row, 1/0);
|
||
n.id = t.addMarker(n, "ace_active-line", "screenLine"), t.$highlightLineMarker = n;
|
||
} else e && (t.$highlightLineMarker.start.row = e.row, t.$highlightLineMarker.end.row = e.row,
|
||
t.$highlightLineMarker.start.column = e.column, t._emit("changeBackMarker"));
|
||
}, this.onSelectionChange = function() {
|
||
var e = this.session;
|
||
if (e.$selectionMarker && e.removeMarker(e.$selectionMarker), e.$selectionMarker = null,
|
||
this.selection.isEmpty()) this.$updateHighlightActiveLine(); else {
|
||
var t = this.selection.getRange(), n = this.getSelectionStyle();
|
||
e.$selectionMarker = e.addMarker(t, "ace_selection", n);
|
||
}
|
||
var i = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();
|
||
this.session.highlight(i), this._emit("changeSelection");
|
||
}, this.$getSelectionHighLightRegexp = function() {
|
||
var e = this.session, t = this.getSelectionRange();
|
||
if (!t.isEmpty() && !t.isMultiLine()) {
|
||
var n = t.start.column - 1, i = t.end.column + 1, o = e.getLine(t.start.row), r = o.length, s = o.substring(Math.max(n, 0), Math.min(i, r));
|
||
if (!(n >= 0 && /^[\w\d]/.test(s) || r >= i && /[\w\d]$/.test(s)) && (s = o.substring(t.start.column, t.end.column),
|
||
/^[\w\d]+$/.test(s))) {
|
||
var a = this.$search.$assembleRegExp({
|
||
wholeWord: !0,
|
||
caseSensitive: !0,
|
||
needle: s
|
||
});
|
||
return a;
|
||
}
|
||
}
|
||
}, this.onChangeFrontMarker = function() {
|
||
this.renderer.updateFrontMarkers();
|
||
}, this.onChangeBackMarker = function() {
|
||
this.renderer.updateBackMarkers();
|
||
}, this.onChangeBreakpoint = function() {
|
||
this.renderer.updateBreakpoints();
|
||
}, this.onChangeAnnotation = function() {
|
||
this.renderer.setAnnotations(this.session.getAnnotations());
|
||
}, this.onChangeMode = function(e) {
|
||
this.renderer.updateText(), this._emit("changeMode", e);
|
||
}, this.onChangeWrapLimit = function() {
|
||
this.renderer.updateFull();
|
||
}, this.onChangeWrapMode = function() {
|
||
this.renderer.onResize(!0);
|
||
}, this.onChangeFold = function() {
|
||
this.$updateHighlightActiveLine(), this.renderer.updateFull();
|
||
}, this.getSelectedText = function() {
|
||
return this.session.getTextRange(this.getSelectionRange());
|
||
}, this.getCopyText = function() {
|
||
var e = this.getSelectedText();
|
||
return this._signal("copy", e), e;
|
||
}, this.onCopy = function() {
|
||
this.commands.exec("copy", this);
|
||
}, this.onCut = function() {
|
||
this.commands.exec("cut", this);
|
||
}, this.onPaste = function(e) {
|
||
this.$readOnly || (this._emit("paste", e), this.insert(e));
|
||
}, this.execCommand = function(e, t) {
|
||
this.commands.exec(e, this, t);
|
||
}, this.insert = function(e) {
|
||
var t = this.session, n = t.getMode(), i = this.getCursorPosition();
|
||
if (this.getBehavioursEnabled()) {
|
||
var o = n.transformAction(t.getState(i.row), "insertion", this, t, e);
|
||
o && (e !== o.text && (this.session.mergeUndoDeltas = !1, this.$mergeNextCommand = !1),
|
||
e = o.text);
|
||
}
|
||
if (" " == e && (e = this.session.getTabString()), this.selection.isEmpty()) {
|
||
if (this.session.getOverwrite()) {
|
||
var r = new h.fromPoints(i, i);
|
||
r.end.column += e.length, this.session.remove(r);
|
||
}
|
||
} else {
|
||
var r = this.getSelectionRange();
|
||
i = this.session.remove(r), this.clearSelection();
|
||
}
|
||
if ("\n" == e || "\r\n" == e) {
|
||
var s = t.getLine(i.row);
|
||
if (i.column > s.search(/\S|$/)) {
|
||
var a = s.substr(i.column).search(/\S|$/);
|
||
t.doc.removeInLine(i.row, i.column, i.column + a);
|
||
}
|
||
}
|
||
this.clearSelection();
|
||
var l = i.column, c = t.getState(i.row), s = t.getLine(i.row), u = n.checkOutdent(c, s, e);
|
||
if (t.insert(i, e), o && o.selection && (2 == o.selection.length ? this.selection.setSelectionRange(new h(i.row, l + o.selection[0], i.row, l + o.selection[1])) : this.selection.setSelectionRange(new h(i.row + o.selection[0], o.selection[1], i.row + o.selection[2], o.selection[3]))),
|
||
t.getDocument().isNewLine(e)) {
|
||
var d = n.getNextLineIndent(c, s.slice(0, i.column), t.getTabString());
|
||
t.insert({
|
||
row: i.row + 1,
|
||
column: 0
|
||
}, d);
|
||
}
|
||
u && n.autoOutdent(c, t, i.row);
|
||
}, this.onTextInput = function(e) {
|
||
this.keyBinding.onTextInput(e);
|
||
}, this.onCommandKey = function(e, t, n) {
|
||
this.keyBinding.onCommandKey(e, t, n);
|
||
}, this.setOverwrite = function(e) {
|
||
this.session.setOverwrite(e);
|
||
}, this.getOverwrite = function() {
|
||
return this.session.getOverwrite();
|
||
}, this.toggleOverwrite = function() {
|
||
this.session.toggleOverwrite();
|
||
}, this.setScrollSpeed = function(e) {
|
||
this.setOption("scrollSpeed", e);
|
||
}, this.getScrollSpeed = function() {
|
||
return this.getOption("scrollSpeed");
|
||
}, this.setDragDelay = function(e) {
|
||
this.setOption("dragDelay", e);
|
||
}, this.getDragDelay = function() {
|
||
return this.getOption("dragDelay");
|
||
}, this.setSelectionStyle = function(e) {
|
||
this.setOption("selectionStyle", e);
|
||
}, this.getSelectionStyle = function() {
|
||
return this.getOption("selectionStyle");
|
||
}, this.setHighlightActiveLine = function(e) {
|
||
this.setOption("highlightActiveLine", e);
|
||
}, this.getHighlightActiveLine = function() {
|
||
return this.getOption("highlightActiveLine");
|
||
}, this.setHighlightGutterLine = function(e) {
|
||
this.setOption("highlightGutterLine", e);
|
||
}, this.getHighlightGutterLine = function() {
|
||
return this.getOption("highlightGutterLine");
|
||
}, this.setHighlightSelectedWord = function(e) {
|
||
this.setOption("highlightSelectedWord", e);
|
||
}, this.getHighlightSelectedWord = function() {
|
||
return this.$highlightSelectedWord;
|
||
}, this.setAnimatedScroll = function(e) {
|
||
this.renderer.setAnimatedScroll(e);
|
||
}, this.getAnimatedScroll = function() {
|
||
return this.renderer.getAnimatedScroll();
|
||
}, this.setShowInvisibles = function(e) {
|
||
this.renderer.setShowInvisibles(e);
|
||
}, this.getShowInvisibles = function() {
|
||
return this.renderer.getShowInvisibles();
|
||
}, this.setDisplayIndentGuides = function(e) {
|
||
this.renderer.setDisplayIndentGuides(e);
|
||
}, this.getDisplayIndentGuides = function() {
|
||
return this.renderer.getDisplayIndentGuides();
|
||
}, this.setShowPrintMargin = function(e) {
|
||
this.renderer.setShowPrintMargin(e);
|
||
}, this.getShowPrintMargin = function() {
|
||
return this.renderer.getShowPrintMargin();
|
||
}, this.setPrintMarginColumn = function(e) {
|
||
this.renderer.setPrintMarginColumn(e);
|
||
}, this.getPrintMarginColumn = function() {
|
||
return this.renderer.getPrintMarginColumn();
|
||
}, this.setReadOnly = function(e) {
|
||
this.setOption("readOnly", e);
|
||
}, this.getReadOnly = function() {
|
||
return this.getOption("readOnly");
|
||
}, this.setBehavioursEnabled = function(e) {
|
||
this.setOption("behavioursEnabled", e);
|
||
}, this.getBehavioursEnabled = function() {
|
||
return this.getOption("behavioursEnabled");
|
||
}, this.setWrapBehavioursEnabled = function(e) {
|
||
this.setOption("wrapBehavioursEnabled", e);
|
||
}, this.getWrapBehavioursEnabled = function() {
|
||
return this.getOption("wrapBehavioursEnabled");
|
||
}, this.setShowFoldWidgets = function(e) {
|
||
this.setOption("showFoldWidgets", e);
|
||
}, this.getShowFoldWidgets = function() {
|
||
return this.getOption("showFoldWidgets");
|
||
}, this.setFadeFoldWidgets = function(e) {
|
||
this.setOption("fadeFoldWidgets", e);
|
||
}, this.getFadeFoldWidgets = function() {
|
||
return this.getOption("fadeFoldWidgets");
|
||
}, this.remove = function(e) {
|
||
this.selection.isEmpty() && ("left" == e ? this.selection.selectLeft() : this.selection.selectRight());
|
||
var t = this.getSelectionRange();
|
||
if (this.getBehavioursEnabled()) {
|
||
var n = this.session, i = n.getState(t.start.row), o = n.getMode().transformAction(i, "deletion", this, n, t);
|
||
if (0 == t.end.column) {
|
||
var r = n.getTextRange(t);
|
||
if ("\n" == r[r.length - 1]) {
|
||
var s = n.getLine(t.end.row);
|
||
/^\s+$/.test(s) && (t.end.column = s.length);
|
||
}
|
||
}
|
||
o && (t = o);
|
||
}
|
||
this.session.remove(t), this.clearSelection();
|
||
}, this.removeWordRight = function() {
|
||
this.selection.isEmpty() && this.selection.selectWordRight(), this.session.remove(this.getSelectionRange()),
|
||
this.clearSelection();
|
||
}, this.removeWordLeft = function() {
|
||
this.selection.isEmpty() && this.selection.selectWordLeft(), this.session.remove(this.getSelectionRange()),
|
||
this.clearSelection();
|
||
}, this.removeToLineStart = function() {
|
||
this.selection.isEmpty() && this.selection.selectLineStart(), this.session.remove(this.getSelectionRange()),
|
||
this.clearSelection();
|
||
}, this.removeToLineEnd = function() {
|
||
this.selection.isEmpty() && this.selection.selectLineEnd();
|
||
var e = this.getSelectionRange();
|
||
e.start.column == e.end.column && e.start.row == e.end.row && (e.end.column = 0,
|
||
e.end.row++), this.session.remove(e), this.clearSelection();
|
||
}, this.splitLine = function() {
|
||
this.selection.isEmpty() || (this.session.remove(this.getSelectionRange()), this.clearSelection());
|
||
var e = this.getCursorPosition();
|
||
this.insert("\n"), this.moveCursorToPosition(e);
|
||
}, this.transposeLetters = function() {
|
||
if (this.selection.isEmpty()) {
|
||
var e = this.getCursorPosition(), t = e.column;
|
||
if (0 !== t) {
|
||
var n, i, o = this.session.getLine(e.row);
|
||
t < o.length ? (n = o.charAt(t) + o.charAt(t - 1), i = new h(e.row, t - 1, e.row, t + 1)) : (n = o.charAt(t - 1) + o.charAt(t - 2),
|
||
i = new h(e.row, t - 2, e.row, t)), this.session.replace(i, n);
|
||
}
|
||
}
|
||
}, this.toLowerCase = function() {
|
||
var e = this.getSelectionRange();
|
||
this.selection.isEmpty() && this.selection.selectWord();
|
||
var t = this.getSelectionRange(), n = this.session.getTextRange(t);
|
||
this.session.replace(t, n.toLowerCase()), this.selection.setSelectionRange(e);
|
||
}, this.toUpperCase = function() {
|
||
var e = this.getSelectionRange();
|
||
this.selection.isEmpty() && this.selection.selectWord();
|
||
var t = this.getSelectionRange(), n = this.session.getTextRange(t);
|
||
this.session.replace(t, n.toUpperCase()), this.selection.setSelectionRange(e);
|
||
}, this.indent = function() {
|
||
var e = this.session, t = this.getSelectionRange();
|
||
if (t.start.row < t.end.row) {
|
||
var n = this.$getSelectedRows();
|
||
return e.indentRows(n.first, n.last, " "), void 0;
|
||
}
|
||
if (t.start.column < t.end.column) {
|
||
var i = e.getTextRange(t);
|
||
if (!/^\s+$/.test(i)) {
|
||
var n = this.$getSelectedRows();
|
||
return e.indentRows(n.first, n.last, " "), void 0;
|
||
}
|
||
}
|
||
var r = e.getLine(t.start.row), s = t.start, a = e.getTabSize(), l = e.documentToScreenColumn(s.row, s.column);
|
||
if (this.session.getUseSoftTabs()) var c = a - l % a, u = o.stringRepeat(" ", c); else {
|
||
for (var c = l % a; " " == r[t.start.column] && c; ) t.start.column--, c--;
|
||
this.selection.setSelectionRange(t), u = " ";
|
||
}
|
||
return this.insert(u);
|
||
}, this.blockIndent = function() {
|
||
var e = this.$getSelectedRows();
|
||
this.session.indentRows(e.first, e.last, " ");
|
||
}, this.blockOutdent = function() {
|
||
var e = this.session.getSelection();
|
||
this.session.outdentRows(e.getRange());
|
||
}, this.sortLines = function() {
|
||
var e = this.$getSelectedRows(), t = this.session, n = [];
|
||
for (o = e.first; o <= e.last; o++) n.push(t.getLine(o));
|
||
n.sort(function(e, t) {
|
||
return e.toLowerCase() < t.toLowerCase() ? -1 : e.toLowerCase() > t.toLowerCase() ? 1 : 0;
|
||
});
|
||
for (var i = new h(0, 0, 0, 0), o = e.first; o <= e.last; o++) {
|
||
var r = t.getLine(o);
|
||
i.start.row = o, i.end.row = o, i.end.column = r.length, t.replace(i, n[o - e.first]);
|
||
}
|
||
}, this.toggleCommentLines = function() {
|
||
var e = this.session.getState(this.getCursorPosition().row), t = this.$getSelectedRows();
|
||
this.session.getMode().toggleCommentLines(e, this.session, t.first, t.last);
|
||
}, this.toggleBlockComment = function() {
|
||
var e = this.getCursorPosition(), t = this.session.getState(e.row), n = this.getSelectionRange();
|
||
this.session.getMode().toggleBlockComment(t, this.session, n, e);
|
||
}, this.getNumberAt = function(e, t) {
|
||
var n = /[\-]?[0-9]+(?:\.[0-9]+)?/g;
|
||
n.lastIndex = 0;
|
||
for (var i = this.session.getLine(e); n.lastIndex < t; ) {
|
||
var o = n.exec(i);
|
||
if (o.index <= t && o.index + o[0].length >= t) {
|
||
var r = {
|
||
value: o[0],
|
||
start: o.index,
|
||
end: o.index + o[0].length
|
||
};
|
||
return r;
|
||
}
|
||
}
|
||
return null;
|
||
}, this.modifyNumber = function(e) {
|
||
var t = this.selection.getCursor().row, n = this.selection.getCursor().column, i = new h(t, n - 1, t, n), o = this.session.getTextRange(i);
|
||
if (!isNaN(parseFloat(o)) && isFinite(o)) {
|
||
var r = this.getNumberAt(t, n);
|
||
if (r) {
|
||
var s = r.value.indexOf(".") >= 0 ? r.start + r.value.indexOf(".") + 1 : r.end, a = r.start + r.value.length - s, l = parseFloat(r.value);
|
||
l *= Math.pow(10, a), e *= s !== r.end && s > n ? Math.pow(10, r.end - n - 1) : Math.pow(10, r.end - n),
|
||
l += e, l /= Math.pow(10, a);
|
||
var c = l.toFixed(a), u = new h(t, r.start, t, r.end);
|
||
this.session.replace(u, c), this.moveCursorTo(t, Math.max(r.start + 1, n + c.length - r.value.length));
|
||
}
|
||
}
|
||
}, this.removeLines = function() {
|
||
var e, t = this.$getSelectedRows();
|
||
e = 0 === t.first || t.last + 1 < this.session.getLength() ? new h(t.first, 0, t.last + 1, 0) : new h(t.first - 1, this.session.getLine(t.first - 1).length, t.last, this.session.getLine(t.last).length),
|
||
this.session.remove(e), this.clearSelection();
|
||
}, this.duplicateSelection = function() {
|
||
var e = this.selection, t = this.session, n = e.getRange(), i = e.isBackwards();
|
||
if (n.isEmpty()) {
|
||
var o = n.start.row;
|
||
t.duplicateLines(o, o);
|
||
} else {
|
||
var r = i ? n.start : n.end, s = t.insert(r, t.getTextRange(n), !1);
|
||
n.start = r, n.end = s, e.setSelectionRange(n, i);
|
||
}
|
||
}, this.moveLinesDown = function() {
|
||
this.$moveLines(function(e, t) {
|
||
return this.session.moveLinesDown(e, t);
|
||
});
|
||
}, this.moveLinesUp = function() {
|
||
this.$moveLines(function(e, t) {
|
||
return this.session.moveLinesUp(e, t);
|
||
});
|
||
}, this.moveText = function(e, t, n) {
|
||
return this.session.moveText(e, t, n);
|
||
}, this.copyLinesUp = function() {
|
||
this.$moveLines(function(e, t) {
|
||
return this.session.duplicateLines(e, t), 0;
|
||
});
|
||
}, this.copyLinesDown = function() {
|
||
this.$moveLines(function(e, t) {
|
||
return this.session.duplicateLines(e, t);
|
||
});
|
||
}, this.$moveLines = function(e) {
|
||
var t = this.selection;
|
||
if (!t.inMultiSelectMode || this.inVirtualSelectionMode) {
|
||
var n = t.toOrientedRange(), i = this.$getSelectedRows(n), o = e.call(this, i.first, i.last);
|
||
n.moveBy(o, 0), t.fromOrientedRange(n);
|
||
} else {
|
||
var r = t.rangeList.ranges;
|
||
t.rangeList.detach(this.session);
|
||
for (var s = r.length; s--; ) {
|
||
for (var a = s, i = r[s].collapseRows(), l = i.end.row, c = i.start.row; s--; ) {
|
||
var i = r[s].collapseRows();
|
||
if (!(c - i.end.row <= 1)) break;
|
||
c = i.end.row;
|
||
}
|
||
s++;
|
||
for (var o = e.call(this, c, l); a >= s; ) r[a].moveBy(o, 0), a--;
|
||
}
|
||
t.fromOrientedRange(t.ranges[0]), t.rangeList.attach(this.session);
|
||
}
|
||
}, this.$getSelectedRows = function() {
|
||
var e = this.getSelectionRange().collapseRows();
|
||
return {
|
||
first: e.start.row,
|
||
last: e.end.row
|
||
};
|
||
}, this.onCompositionStart = function() {
|
||
this.renderer.showComposition(this.getCursorPosition());
|
||
}, this.onCompositionUpdate = function(e) {
|
||
this.renderer.setCompositionText(e);
|
||
}, this.onCompositionEnd = function() {
|
||
this.renderer.hideComposition();
|
||
}, this.getFirstVisibleRow = function() {
|
||
return this.renderer.getFirstVisibleRow();
|
||
}, this.getLastVisibleRow = function() {
|
||
return this.renderer.getLastVisibleRow();
|
||
}, this.isRowVisible = function(e) {
|
||
return e >= this.getFirstVisibleRow() && e <= this.getLastVisibleRow();
|
||
}, this.isRowFullyVisible = function(e) {
|
||
return e >= this.renderer.getFirstFullyVisibleRow() && e <= this.renderer.getLastFullyVisibleRow();
|
||
}, this.$getVisibleRowCount = function() {
|
||
return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;
|
||
}, this.$moveByPage = function(e, t) {
|
||
var n = this.renderer, i = this.renderer.layerConfig, o = e * Math.floor(i.height / i.lineHeight);
|
||
this.$blockScrolling++, 1 == t ? this.selection.$moveSelection(function() {
|
||
this.moveCursorBy(o, 0);
|
||
}) : 0 == t && (this.selection.moveCursorBy(o, 0), this.selection.clearSelection()),
|
||
this.$blockScrolling--;
|
||
var r = n.scrollTop;
|
||
n.scrollBy(0, o * i.lineHeight), null != t && n.scrollCursorIntoView(null, .5),
|
||
n.animateScrolling(r);
|
||
}, this.selectPageDown = function() {
|
||
this.$moveByPage(1, !0);
|
||
}, this.selectPageUp = function() {
|
||
this.$moveByPage(-1, !0);
|
||
}, this.gotoPageDown = function() {
|
||
this.$moveByPage(1, !1);
|
||
}, this.gotoPageUp = function() {
|
||
this.$moveByPage(-1, !1);
|
||
}, this.scrollPageDown = function() {
|
||
this.$moveByPage(1);
|
||
}, this.scrollPageUp = function() {
|
||
this.$moveByPage(-1);
|
||
}, this.scrollToRow = function(e) {
|
||
this.renderer.scrollToRow(e);
|
||
}, this.scrollToLine = function(e, t, n, i) {
|
||
this.renderer.scrollToLine(e, t, n, i);
|
||
}, this.centerSelection = function() {
|
||
var e = this.getSelectionRange(), t = {
|
||
row: Math.floor(e.start.row + (e.end.row - e.start.row) / 2),
|
||
column: Math.floor(e.start.column + (e.end.column - e.start.column) / 2)
|
||
};
|
||
this.renderer.alignCursor(t, .5);
|
||
}, this.getCursorPosition = function() {
|
||
return this.selection.getCursor();
|
||
}, this.getCursorPositionScreen = function() {
|
||
return this.session.documentToScreenPosition(this.getCursorPosition());
|
||
}, this.getSelectionRange = function() {
|
||
return this.selection.getRange();
|
||
}, this.selectAll = function() {
|
||
this.$blockScrolling += 1, this.selection.selectAll(), this.$blockScrolling -= 1;
|
||
}, this.clearSelection = function() {
|
||
this.selection.clearSelection();
|
||
}, this.moveCursorTo = function(e, t) {
|
||
this.selection.moveCursorTo(e, t);
|
||
}, this.moveCursorToPosition = function(e) {
|
||
this.selection.moveCursorToPosition(e);
|
||
}, this.jumpToMatching = function(e) {
|
||
var t = this.getCursorPosition(), n = this.session.getBracketRange(t);
|
||
if (!n) {
|
||
if (n = this.find({
|
||
needle: /[{}()\[\]]/g,
|
||
preventScroll: !0,
|
||
start: {
|
||
row: t.row,
|
||
column: t.column - 1
|
||
}
|
||
}), !n) return;
|
||
var i = n.start;
|
||
i.row == t.row && Math.abs(i.column - t.column) < 2 && (n = this.session.getBracketRange(i));
|
||
}
|
||
i = n && n.cursor || i, i && (e ? n && n.isEqual(this.getSelectionRange()) ? this.clearSelection() : this.selection.selectTo(i.row, i.column) : (this.clearSelection(),
|
||
this.moveCursorTo(i.row, i.column)));
|
||
}, this.gotoLine = function(e, t, n) {
|
||
this.selection.clearSelection(), this.session.unfold({
|
||
row: e - 1,
|
||
column: t || 0
|
||
}), this.$blockScrolling += 1, this.exitMultiSelectMode && this.exitMultiSelectMode(),
|
||
this.moveCursorTo(e - 1, t || 0), this.$blockScrolling -= 1, this.isRowFullyVisible(e - 1) || this.scrollToLine(e - 1, !0, n);
|
||
}, this.navigateTo = function(e, t) {
|
||
this.clearSelection(), this.moveCursorTo(e, t);
|
||
}, this.navigateUp = function(e) {
|
||
if (this.selection.isMultiLine() && !this.selection.isBackwards()) {
|
||
var t = this.selection.anchor.getPosition();
|
||
return this.moveCursorToPosition(t);
|
||
}
|
||
this.selection.clearSelection(), e = e || 1, this.selection.moveCursorBy(-e, 0);
|
||
}, this.navigateDown = function(e) {
|
||
if (this.selection.isMultiLine() && this.selection.isBackwards()) {
|
||
var t = this.selection.anchor.getPosition();
|
||
return this.moveCursorToPosition(t);
|
||
}
|
||
this.selection.clearSelection(), e = e || 1, this.selection.moveCursorBy(e, 0);
|
||
}, this.navigateLeft = function(e) {
|
||
if (this.selection.isEmpty()) for (e = e || 1; e--; ) this.selection.moveCursorLeft(); else {
|
||
var t = this.getSelectionRange().start;
|
||
this.moveCursorToPosition(t);
|
||
}
|
||
this.clearSelection();
|
||
}, this.navigateRight = function(e) {
|
||
if (this.selection.isEmpty()) for (e = e || 1; e--; ) this.selection.moveCursorRight(); else {
|
||
var t = this.getSelectionRange().end;
|
||
this.moveCursorToPosition(t);
|
||
}
|
||
this.clearSelection();
|
||
}, this.navigateLineStart = function() {
|
||
this.selection.moveCursorLineStart(), this.clearSelection();
|
||
}, this.navigateLineEnd = function() {
|
||
this.selection.moveCursorLineEnd(), this.clearSelection();
|
||
}, this.navigateFileEnd = function() {
|
||
var e = this.renderer.scrollTop;
|
||
this.selection.moveCursorFileEnd(), this.clearSelection(), this.renderer.animateScrolling(e);
|
||
}, this.navigateFileStart = function() {
|
||
var e = this.renderer.scrollTop;
|
||
this.selection.moveCursorFileStart(), this.clearSelection(), this.renderer.animateScrolling(e);
|
||
}, this.navigateWordRight = function() {
|
||
this.selection.moveCursorWordRight(), this.clearSelection();
|
||
}, this.navigateWordLeft = function() {
|
||
this.selection.moveCursorWordLeft(), this.clearSelection();
|
||
}, this.replace = function(e, t) {
|
||
t && this.$search.set(t);
|
||
var n = this.$search.find(this.session), i = 0;
|
||
return n ? (this.$tryReplace(n, e) && (i = 1), null !== n && (this.selection.setSelectionRange(n),
|
||
this.renderer.scrollSelectionIntoView(n.start, n.end)), i) : i;
|
||
}, this.replaceAll = function(e, t) {
|
||
t && this.$search.set(t);
|
||
var n = this.$search.findAll(this.session), i = 0;
|
||
if (!n.length) return i;
|
||
this.$blockScrolling += 1;
|
||
var o = this.getSelectionRange();
|
||
this.clearSelection(), this.selection.moveCursorTo(0, 0);
|
||
for (var r = n.length - 1; r >= 0; --r) this.$tryReplace(n[r], e) && i++;
|
||
return this.selection.setSelectionRange(o), this.$blockScrolling -= 1, i;
|
||
}, this.$tryReplace = function(e, t) {
|
||
var n = this.session.getTextRange(e);
|
||
return t = this.$search.replace(n, t), null !== t ? (e.end = this.session.replace(e, t),
|
||
e) : null;
|
||
}, this.getLastSearchOptions = function() {
|
||
return this.$search.getOptions();
|
||
}, this.find = function(e, t, i) {
|
||
t || (t = {}), "string" == typeof e || e instanceof RegExp ? t.needle = e : "object" == typeof e && n.mixin(t, e);
|
||
var o = this.selection.getRange();
|
||
null == t.needle && (e = this.session.getTextRange(o) || this.$search.$options.needle,
|
||
e || (o = this.session.getWordRange(o.start.row, o.start.column), e = this.session.getTextRange(o)),
|
||
this.$search.set({
|
||
needle: e
|
||
})), this.$search.set(t), t.start || this.$search.set({
|
||
start: o
|
||
});
|
||
var r = this.$search.find(this.session);
|
||
return t.preventScroll ? r : r ? (this.revealRange(r, i), r) : (t.backwards ? o.start = o.end : o.end = o.start,
|
||
this.selection.setRange(o), void 0);
|
||
}, this.findNext = function(e, t) {
|
||
this.find({
|
||
skipCurrent: !0,
|
||
backwards: !1
|
||
}, e, t);
|
||
}, this.findPrevious = function(e, t) {
|
||
this.find(e, {
|
||
skipCurrent: !0,
|
||
backwards: !0
|
||
}, t);
|
||
}, this.revealRange = function(e, t) {
|
||
this.$blockScrolling += 1, this.session.unfold(e), this.selection.setSelectionRange(e),
|
||
this.$blockScrolling -= 1;
|
||
var n = this.renderer.scrollTop;
|
||
this.renderer.scrollSelectionIntoView(e.start, e.end, .5), 0 != t && this.renderer.animateScrolling(n);
|
||
}, this.undo = function() {
|
||
this.$blockScrolling++, this.session.getUndoManager().undo(), this.$blockScrolling--,
|
||
this.renderer.scrollCursorIntoView(null, .5);
|
||
}, this.redo = function() {
|
||
this.$blockScrolling++, this.session.getUndoManager().redo(), this.$blockScrolling--,
|
||
this.renderer.scrollCursorIntoView(null, .5);
|
||
}, this.destroy = function() {
|
||
this.renderer.destroy(), this._emit("destroy", this);
|
||
}, this.setAutoScrollEditorIntoView = function(e) {
|
||
if (e !== !1) {
|
||
var t, n = this, i = !1;
|
||
this.$scrollAnchor || (this.$scrollAnchor = document.createElement("div"));
|
||
var o = this.$scrollAnchor;
|
||
o.style.cssText = "position:absolute", this.container.insertBefore(o, this.container.firstChild);
|
||
var r = this.on("changeSelection", function() {
|
||
i = !0;
|
||
}), s = this.renderer.on("beforeRender", function() {
|
||
i && (t = n.renderer.container.getBoundingClientRect());
|
||
}), a = this.renderer.on("afterRender", function() {
|
||
if (i && t && n.isFocused()) {
|
||
var e = n.renderer, r = e.$cursorLayer.$pixelPos, s = e.layerConfig, a = r.top - s.offset;
|
||
i = r.top >= 0 && a + t.top < 0 ? !0 : r.top < s.height && r.top + t.top + s.lineHeight > window.innerHeight ? !1 : null,
|
||
null != i && (o.style.top = a + "px", o.style.left = r.left + "px", o.style.height = s.lineHeight + "px",
|
||
o.scrollIntoView(i)), i = t = null;
|
||
}
|
||
});
|
||
this.setAutoScrollEditorIntoView = function(e) {
|
||
e !== !0 && (delete this.setAutoScrollEditorIntoView, this.removeEventListener("changeSelection", r),
|
||
this.renderer.removeEventListener("afterRender", a), this.renderer.removeEventListener("beforeRender", s));
|
||
};
|
||
}
|
||
}, this.$resetCursorStyle = function() {
|
||
var e = this.$cursorStyle || "ace", t = this.renderer.$cursorLayer;
|
||
t && (t.setSmoothBlinking("smooth" == e), t.isBlinking = !this.$readOnly && "wide" != e);
|
||
};
|
||
}).call(v.prototype), m.defineOptions(v.prototype, "editor", {
|
||
selectionStyle: {
|
||
set: function(e) {
|
||
this.onSelectionChange(), this._emit("changeSelectionStyle", {
|
||
data: e
|
||
});
|
||
},
|
||
initialValue: "line"
|
||
},
|
||
highlightActiveLine: {
|
||
set: function() {
|
||
this.$updateHighlightActiveLine();
|
||
},
|
||
initialValue: !0
|
||
},
|
||
highlightSelectedWord: {
|
||
set: function() {
|
||
this.$onSelectionChange();
|
||
},
|
||
initialValue: !0
|
||
},
|
||
readOnly: {
|
||
set: function(e) {
|
||
this.textInput.setReadOnly(e), this.$resetCursorStyle();
|
||
},
|
||
initialValue: !1
|
||
},
|
||
cursorStyle: {
|
||
set: function() {
|
||
this.$resetCursorStyle();
|
||
},
|
||
values: [ "ace", "slim", "smooth", "wide" ],
|
||
initialValue: "ace"
|
||
},
|
||
mergeUndoDeltas: {
|
||
values: [ !1, !0, "always" ],
|
||
initialValue: !0
|
||
},
|
||
behavioursEnabled: {
|
||
initialValue: !0
|
||
},
|
||
wrapBehavioursEnabled: {
|
||
initialValue: !0
|
||
},
|
||
hScrollBarAlwaysVisible: "renderer",
|
||
vScrollBarAlwaysVisible: "renderer",
|
||
highlightGutterLine: "renderer",
|
||
animatedScroll: "renderer",
|
||
showInvisibles: "renderer",
|
||
showPrintMargin: "renderer",
|
||
printMarginColumn: "renderer",
|
||
printMargin: "renderer",
|
||
fadeFoldWidgets: "renderer",
|
||
showFoldWidgets: "renderer",
|
||
showGutter: "renderer",
|
||
displayIndentGuides: "renderer",
|
||
fontSize: "renderer",
|
||
fontFamily: "renderer",
|
||
maxLines: "renderer",
|
||
minLines: "renderer",
|
||
scrollPastEnd: "renderer",
|
||
fixedWidthGutter: "renderer",
|
||
scrollSpeed: "$mouseHandler",
|
||
dragDelay: "$mouseHandler",
|
||
dragEnabled: "$mouseHandler",
|
||
focusTimout: "$mouseHandler",
|
||
firstLineNumber: "session",
|
||
overwrite: "session",
|
||
newLineMode: "session",
|
||
useWorker: "session",
|
||
useSoftTabs: "session",
|
||
tabSize: "session",
|
||
wrap: "session",
|
||
foldStyle: "session"
|
||
}), t.Editor = v;
|
||
}), define("ace/undomanager", [ "require", "exports", "module" ], function(e, t) {
|
||
var n = function() {
|
||
this.reset();
|
||
};
|
||
(function() {
|
||
this.execute = function(e) {
|
||
var t = e.args[0];
|
||
this.$doc = e.args[1], e.merge && this.hasUndo() && (t = this.$undoStack.pop().concat(t)),
|
||
this.$undoStack.push(t), this.$redoStack = [], this.dirtyCounter < 0 && (this.dirtyCounter = 0/0),
|
||
this.dirtyCounter++;
|
||
}, this.undo = function(e) {
|
||
var t = this.$undoStack.pop(), n = null;
|
||
return t && (n = this.$doc.undoChanges(t, e), this.$redoStack.push(t), this.dirtyCounter--),
|
||
n;
|
||
}, this.redo = function(e) {
|
||
var t = this.$redoStack.pop(), n = null;
|
||
return t && (n = this.$doc.redoChanges(t, e), this.$undoStack.push(t), this.dirtyCounter++),
|
||
n;
|
||
}, this.reset = function() {
|
||
this.$undoStack = [], this.$redoStack = [], this.dirtyCounter = 0;
|
||
}, this.hasUndo = function() {
|
||
return this.$undoStack.length > 0;
|
||
}, this.hasRedo = function() {
|
||
return this.$redoStack.length > 0;
|
||
}, this.markClean = function() {
|
||
this.dirtyCounter = 0;
|
||
}, this.isClean = function() {
|
||
return 0 === this.dirtyCounter;
|
||
};
|
||
}).call(n.prototype), t.UndoManager = n;
|
||
}), define("ace/layer/gutter", [ "require", "exports", "module", "../lib/dom", "../lib/oop", "../lib/lang", "../lib/event_emitter" ], function(e, t) {
|
||
var n = e("../lib/dom"), i = e("../lib/oop"), o = e("../lib/lang"), r = e("../lib/event_emitter").EventEmitter, s = function(e) {
|
||
this.element = n.createElement("div"), this.element.className = "ace_layer ace_gutter-layer",
|
||
e.appendChild(this.element), this.setShowFoldWidgets(this.$showFoldWidgets), this.gutterWidth = 0,
|
||
this.$annotations = [], this.$updateAnnotations = this.$updateAnnotations.bind(this),
|
||
this.$cells = [];
|
||
};
|
||
(function() {
|
||
i.implement(this, r), this.setSession = function(e) {
|
||
this.session && this.session.removeEventListener("change", this.$updateAnnotations),
|
||
this.session = e, e.on("change", this.$updateAnnotations);
|
||
}, this.addGutterDecoration = function(e, t) {
|
||
window.console && console.warn && console.warn("deprecated use session.addGutterDecoration"),
|
||
this.session.addGutterDecoration(e, t);
|
||
}, this.removeGutterDecoration = function(e, t) {
|
||
window.console && console.warn && console.warn("deprecated use session.removeGutterDecoration"),
|
||
this.session.removeGutterDecoration(e, t);
|
||
}, this.setAnnotations = function(e) {
|
||
this.$annotations = [];
|
||
for (var t, n, i = 0; i < e.length; i++) {
|
||
var r = e[i], n = r.row, t = this.$annotations[n];
|
||
t || (t = this.$annotations[n] = {
|
||
text: []
|
||
});
|
||
var s = r.text;
|
||
s = s ? o.escapeHTML(s) : r.html || "", -1 === t.text.indexOf(s) && t.text.push(s);
|
||
var a = r.type;
|
||
"error" == a ? t.className = " ace_error" : "warning" == a && " ace_error" != t.className ? t.className = " ace_warning" : "info" != a || t.className || (t.className = " ace_info");
|
||
}
|
||
}, this.$updateAnnotations = function(e) {
|
||
if (this.$annotations.length) {
|
||
var t = e.data, n = t.range, i = n.start.row, o = n.end.row - i;
|
||
if (0 === o) ; else if ("removeText" == t.action || "removeLines" == t.action) this.$annotations.splice(i, o + 1, null); else {
|
||
var r = Array(o + 1);
|
||
r.unshift(i, 1), this.$annotations.splice.apply(this.$annotations, r);
|
||
}
|
||
}
|
||
}, this.update = function(e) {
|
||
for (var t = e.firstRow, i = e.lastRow, o = this.session.getNextFoldLine(t), r = o ? o.start.row : 1/0, s = this.$showFoldWidgets && this.session.foldWidgets, a = this.session.$breakpoints, l = this.session.$decorations, c = this.session.$firstLineNumber, u = 0, d = null, h = -1, p = t; ;) {
|
||
if (p > r && (p = o.end.row + 1, o = this.session.getNextFoldLine(p, o), r = o ? o.start.row : 1/0),
|
||
p > i) {
|
||
for (;this.$cells.length > h + 1; ) d = this.$cells.pop(), this.element.removeChild(d.element);
|
||
break;
|
||
}
|
||
d = this.$cells[++h], d || (d = {
|
||
element: null,
|
||
textNode: null,
|
||
foldWidget: null
|
||
}, d.element = n.createElement("div"), d.textNode = document.createTextNode(""),
|
||
d.element.appendChild(d.textNode), this.element.appendChild(d.element), this.$cells[h] = d);
|
||
var f = "ace_gutter-cell ";
|
||
a[p] && (f += a[p]), l[p] && (f += l[p]), this.$annotations[p] && (f += this.$annotations[p].className),
|
||
d.element.className != f && (d.element.className = f);
|
||
var g = this.session.getRowLength(p) * e.lineHeight + "px";
|
||
g != d.element.style.height && (d.element.style.height = g);
|
||
var m = u = p + c;
|
||
if (m != d.textNode.data && (d.textNode.data = m), s) {
|
||
var v = s[p];
|
||
null == v && (v = s[p] = this.session.getFoldWidget(p));
|
||
}
|
||
if (v) {
|
||
d.foldWidget || (d.foldWidget = n.createElement("span"), d.element.appendChild(d.foldWidget));
|
||
var f = "ace_fold-widget ace_" + v;
|
||
f += "start" == v && p == r && p < o.end.row ? " ace_closed" : " ace_open", d.foldWidget.className != f && (d.foldWidget.className = f);
|
||
var g = e.lineHeight + "px";
|
||
d.foldWidget.style.height != g && (d.foldWidget.style.height = g);
|
||
} else null != d.foldWidget && (d.element.removeChild(d.foldWidget), d.foldWidget = null);
|
||
p++;
|
||
}
|
||
this.element.style.height = e.minHeight + "px", (this.$fixedWidth || this.session.$useWrapMode) && (u = this.session.getLength());
|
||
var b = u.toString().length * e.characterWidth, y = this.$padding || this.$computePadding();
|
||
b += y.left + y.right, b === this.gutterWidth || isNaN(b) || (this.gutterWidth = b,
|
||
this.element.style.width = Math.ceil(this.gutterWidth) + "px", this._emit("changeGutterWidth", b));
|
||
}, this.$fixedWidth = !1, this.$showFoldWidgets = !0, this.setShowFoldWidgets = function(e) {
|
||
e ? n.addCssClass(this.element, "ace_folding-enabled") : n.removeCssClass(this.element, "ace_folding-enabled"),
|
||
this.$showFoldWidgets = e, this.$padding = null;
|
||
}, this.getShowFoldWidgets = function() {
|
||
return this.$showFoldWidgets;
|
||
}, this.$computePadding = function() {
|
||
if (!this.element.firstChild) return {
|
||
left: 0,
|
||
right: 0
|
||
};
|
||
var e = n.computedStyle(this.element.firstChild);
|
||
return this.$padding = {}, this.$padding.left = parseInt(e.paddingLeft) + 1 || 0,
|
||
this.$padding.right = parseInt(e.paddingRight) || 0, this.$padding;
|
||
}, this.getRegion = function(e) {
|
||
var t = this.$padding || this.$computePadding(), n = this.element.getBoundingClientRect();
|
||
return e.x < t.left + n.left ? "markers" : this.$showFoldWidgets && e.x > n.right - t.right ? "foldWidgets" : void 0;
|
||
};
|
||
}).call(s.prototype), t.Gutter = s;
|
||
}), define("ace/layer/marker", [ "require", "exports", "module", "../range", "../lib/dom" ], function(e, t) {
|
||
var n = e("../range").Range, i = e("../lib/dom"), o = function(e) {
|
||
this.element = i.createElement("div"), this.element.className = "ace_layer ace_marker-layer",
|
||
e.appendChild(this.element);
|
||
};
|
||
(function() {
|
||
this.$padding = 0, this.setPadding = function(e) {
|
||
this.$padding = e;
|
||
}, this.setSession = function(e) {
|
||
this.session = e;
|
||
}, this.setMarkers = function(e) {
|
||
this.markers = e;
|
||
}, this.update = function(e) {
|
||
var e = e || this.config;
|
||
if (e) {
|
||
this.config = e;
|
||
var t = [];
|
||
for (var n in this.markers) {
|
||
var o = this.markers[n];
|
||
if (o.range) {
|
||
var r = o.range.clipRows(e.firstRow, e.lastRow);
|
||
if (!r.isEmpty()) if (r = r.toScreenRange(this.session), o.renderer) {
|
||
var s = this.$getTop(r.start.row, e), a = this.$padding + r.start.column * e.characterWidth;
|
||
o.renderer(t, r, a, s, e);
|
||
} else "fullLine" == o.type ? this.drawFullLineMarker(t, r, o.clazz, e) : "screenLine" == o.type ? this.drawScreenLineMarker(t, r, o.clazz, e) : r.isMultiLine() ? "text" == o.type ? this.drawTextMarker(t, r, o.clazz, e) : this.drawMultiLineMarker(t, r, o.clazz, e) : this.drawSingleLineMarker(t, r, o.clazz + " ace_start", e);
|
||
} else o.update(t, this, this.session, e);
|
||
}
|
||
this.element = i.setInnerHtml(this.element, t.join(""));
|
||
}
|
||
}, this.$getTop = function(e, t) {
|
||
return (e - t.firstRowScreen) * t.lineHeight;
|
||
}, this.drawTextMarker = function(e, t, i, o, r) {
|
||
var s = t.start.row, a = new n(s, t.start.column, s, this.session.getScreenLastRowColumn(s));
|
||
for (this.drawSingleLineMarker(e, a, i + " ace_start", o, 1, r), s = t.end.row,
|
||
a = new n(s, 0, s, t.end.column), this.drawSingleLineMarker(e, a, i, o, 0, r), s = t.start.row + 1; s < t.end.row; s++) a.start.row = s,
|
||
a.end.row = s, a.end.column = this.session.getScreenLastRowColumn(s), this.drawSingleLineMarker(e, a, i, o, 1, r);
|
||
}, this.drawMultiLineMarker = function(e, t, n, i, o) {
|
||
var r = this.$padding, s = i.lineHeight, a = this.$getTop(t.start.row, i), l = r + t.start.column * i.characterWidth;
|
||
o = o || "", e.push("<div class='", n, " ace_start' style='", "height:", s, "px;", "right:0;", "top:", a, "px;", "left:", l, "px;", o, "'></div>"),
|
||
a = this.$getTop(t.end.row, i);
|
||
var c = t.end.column * i.characterWidth;
|
||
e.push("<div class='", n, "' style='", "height:", s, "px;", "width:", c, "px;", "top:", a, "px;", "left:", r, "px;", o, "'></div>"),
|
||
s = (t.end.row - t.start.row - 1) * i.lineHeight, 0 > s || (a = this.$getTop(t.start.row + 1, i),
|
||
e.push("<div class='", n, "' style='", "height:", s, "px;", "right:0;", "top:", a, "px;", "left:", r, "px;", o, "'></div>"));
|
||
}, this.drawSingleLineMarker = function(e, t, n, i, o, r) {
|
||
var s = i.lineHeight, a = (t.end.column + (o || 0) - t.start.column) * i.characterWidth, l = this.$getTop(t.start.row, i), c = this.$padding + t.start.column * i.characterWidth;
|
||
e.push("<div class='", n, "' style='", "height:", s, "px;", "width:", a, "px;", "top:", l, "px;", "left:", c, "px;", r || "", "'></div>");
|
||
}, this.drawFullLineMarker = function(e, t, n, i, o) {
|
||
var r = this.$getTop(t.start.row, i), s = i.lineHeight;
|
||
t.start.row != t.end.row && (s += this.$getTop(t.end.row, i) - r), e.push("<div class='", n, "' style='", "height:", s, "px;", "top:", r, "px;", "left:0;right:0;", o || "", "'></div>");
|
||
}, this.drawScreenLineMarker = function(e, t, n, i, o) {
|
||
var r = this.$getTop(t.start.row, i), s = i.lineHeight;
|
||
e.push("<div class='", n, "' style='", "height:", s, "px;", "top:", r, "px;", "left:0;right:0;", o || "", "'></div>");
|
||
};
|
||
}).call(o.prototype), t.Marker = o;
|
||
}), define("ace/layer/text", [ "require", "exports", "module", "../lib/oop", "../lib/dom", "../lib/lang", "../lib/useragent", "../lib/event_emitter" ], function(e, t) {
|
||
var n = e("../lib/oop"), i = e("../lib/dom"), o = e("../lib/lang"), r = e("../lib/useragent"), s = e("../lib/event_emitter").EventEmitter, a = function(e) {
|
||
this.element = i.createElement("div"), this.element.className = "ace_layer ace_text-layer",
|
||
e.appendChild(this.element), this.$characterSize = {
|
||
width: 0,
|
||
height: 0
|
||
}, this.checkForSizeChanges(), this.$pollSizeChanges();
|
||
};
|
||
(function() {
|
||
n.implement(this, s), this.EOF_CHAR = "¶", this.EOL_CHAR = "¬", this.TAB_CHAR = "→",
|
||
this.SPACE_CHAR = "·", this.$padding = 0, this.setPadding = function(e) {
|
||
this.$padding = e, this.element.style.padding = "0 " + e + "px";
|
||
}, this.getLineHeight = function() {
|
||
return this.$characterSize.height || 0;
|
||
}, this.getCharacterWidth = function() {
|
||
return this.$characterSize.width || 0;
|
||
}, this.checkForSizeChanges = function() {
|
||
var e = this.$measureSizes();
|
||
if (e && (this.$characterSize.width !== e.width || this.$characterSize.height !== e.height)) {
|
||
this.$measureNode.style.fontWeight = "bold";
|
||
var t = this.$measureSizes();
|
||
this.$measureNode.style.fontWeight = "", this.$characterSize = e, this.allowBoldFonts = t && t.width === e.width && t.height === e.height,
|
||
this._emit("changeCharacterSize", {
|
||
data: e
|
||
});
|
||
}
|
||
}, this.$pollSizeChanges = function() {
|
||
var e = this;
|
||
this.$pollSizeChangesTimer = setInterval(function() {
|
||
e.checkForSizeChanges();
|
||
}, 500);
|
||
}, this.$fontStyles = {
|
||
fontFamily: 1,
|
||
fontSize: 1,
|
||
fontWeight: 1,
|
||
fontStyle: 1,
|
||
lineHeight: 1
|
||
}, this.$measureSizes = r.isIE || r.isOldGecko ? function() {
|
||
var e = 1e3;
|
||
if (!this.$measureNode) {
|
||
var t = this.$measureNode = i.createElement("div"), n = t.style;
|
||
if (n.width = n.height = "auto", n.left = n.top = 40 * -e + "px", n.visibility = "hidden",
|
||
n.position = "fixed", n.overflow = "visible", n.whiteSpace = "nowrap", t.innerHTML = o.stringRepeat("Xy", e),
|
||
this.element.ownerDocument.body) this.element.ownerDocument.body.appendChild(t); else {
|
||
for (var r = this.element.parentNode; !i.hasCssClass(r, "ace_editor"); ) r = r.parentNode;
|
||
r.appendChild(t);
|
||
}
|
||
}
|
||
if (!this.element.offsetWidth) return null;
|
||
var n = this.$measureNode.style, s = i.computedStyle(this.element);
|
||
for (var a in this.$fontStyles) n[a] = s[a];
|
||
var l = {
|
||
height: this.$measureNode.offsetHeight,
|
||
width: this.$measureNode.offsetWidth / (2 * e)
|
||
};
|
||
return 0 == l.width || 0 == l.height ? null : l;
|
||
} : function() {
|
||
if (!this.$measureNode) {
|
||
var e = this.$measureNode = i.createElement("div"), t = e.style;
|
||
t.width = t.height = "auto", t.left = t.top = "-100px", t.visibility = "hidden",
|
||
t.position = "fixed", t.overflow = "visible", t.whiteSpace = "nowrap", e.innerHTML = o.stringRepeat("X", 100);
|
||
for (var n = this.element.parentNode; n && !i.hasCssClass(n, "ace_editor"); ) n = n.parentNode;
|
||
if (!n) return this.$measureNode = null;
|
||
n.appendChild(e);
|
||
}
|
||
var r = this.$measureNode.getBoundingClientRect(), s = {
|
||
height: r.height,
|
||
width: r.width / 100
|
||
};
|
||
return 0 == s.width || 0 == s.height ? null : s;
|
||
}, this.setSession = function(e) {
|
||
this.session = e, this.$computeTabString();
|
||
}, this.showInvisibles = !1, this.setShowInvisibles = function(e) {
|
||
return this.showInvisibles == e ? !1 : (this.showInvisibles = e, this.$computeTabString(),
|
||
!0);
|
||
}, this.displayIndentGuides = !0, this.setDisplayIndentGuides = function(e) {
|
||
return this.displayIndentGuides == e ? !1 : (this.displayIndentGuides = e, this.$computeTabString(),
|
||
!0);
|
||
}, this.$tabStrings = [], this.onChangeTabSize = this.$computeTabString = function() {
|
||
var e = this.session.getTabSize();
|
||
this.tabSize = e;
|
||
for (var t = this.$tabStrings = [ 0 ], n = 1; e + 1 > n; n++) this.showInvisibles ? t.push("<span class='ace_invisible'>" + this.TAB_CHAR + o.stringRepeat(" ", n - 1) + "</span>") : t.push(o.stringRepeat(" ", n));
|
||
if (this.displayIndentGuides) {
|
||
this.$indentGuideRe = /\s\S| \t|\t |\s$/;
|
||
var i = "ace_indent-guide";
|
||
if (this.showInvisibles) {
|
||
i += " ace_invisible";
|
||
var r = o.stringRepeat(this.SPACE_CHAR, this.tabSize), s = this.TAB_CHAR + o.stringRepeat(" ", this.tabSize - 1);
|
||
} else var r = o.stringRepeat(" ", this.tabSize), s = r;
|
||
this.$tabStrings[" "] = "<span class='" + i + "'>" + r + "</span>", this.$tabStrings[" "] = "<span class='" + i + "'>" + s + "</span>";
|
||
}
|
||
}, this.updateLines = function(e, t, n) {
|
||
(this.config.lastRow != e.lastRow || this.config.firstRow != e.firstRow) && this.scrollLines(e),
|
||
this.config = e;
|
||
for (var o = Math.max(t, e.firstRow), r = Math.min(n, e.lastRow), s = this.element.childNodes, a = 0, l = e.firstRow; o > l; l++) {
|
||
var c = this.session.getFoldLine(l);
|
||
if (c) {
|
||
if (c.containsRow(o)) {
|
||
o = c.start.row;
|
||
break;
|
||
}
|
||
l = c.end.row;
|
||
}
|
||
a++;
|
||
}
|
||
for (var l = o, c = this.session.getNextFoldLine(l), u = c ? c.start.row : 1/0; ;) {
|
||
if (l > u && (l = c.end.row + 1, c = this.session.getNextFoldLine(l, c), u = c ? c.start.row : 1/0),
|
||
l > r) break;
|
||
var d = s[a++];
|
||
if (d) {
|
||
var h = [];
|
||
this.$renderLine(h, l, !this.$useLineGroups(), l == u ? c : !1), i.setInnerHtml(d, h.join(""));
|
||
}
|
||
l++;
|
||
}
|
||
}, this.scrollLines = function(e) {
|
||
var t = this.config;
|
||
if (this.config = e, !t || t.lastRow < e.firstRow) return this.update(e);
|
||
if (e.lastRow < t.firstRow) return this.update(e);
|
||
var n = this.element;
|
||
if (t.firstRow < e.firstRow) for (var i = this.session.getFoldedRowCount(t.firstRow, e.firstRow - 1); i > 0; i--) n.removeChild(n.firstChild);
|
||
if (t.lastRow > e.lastRow) for (var i = this.session.getFoldedRowCount(e.lastRow + 1, t.lastRow); i > 0; i--) n.removeChild(n.lastChild);
|
||
if (e.firstRow < t.firstRow) {
|
||
var o = this.$renderLinesFragment(e, e.firstRow, t.firstRow - 1);
|
||
n.firstChild ? n.insertBefore(o, n.firstChild) : n.appendChild(o);
|
||
}
|
||
if (e.lastRow > t.lastRow) {
|
||
var o = this.$renderLinesFragment(e, t.lastRow + 1, e.lastRow);
|
||
n.appendChild(o);
|
||
}
|
||
}, this.$renderLinesFragment = function(e, t, n) {
|
||
for (var o = this.element.ownerDocument.createDocumentFragment(), r = t, s = this.session.getNextFoldLine(r), a = s ? s.start.row : 1/0; ;) {
|
||
if (r > a && (r = s.end.row + 1, s = this.session.getNextFoldLine(r, s), a = s ? s.start.row : 1/0),
|
||
r > n) break;
|
||
var l = i.createElement("div"), c = [];
|
||
if (this.$renderLine(c, r, !1, r == a ? s : !1), l.innerHTML = c.join(""), this.$useLineGroups()) l.className = "ace_line_group",
|
||
o.appendChild(l); else for (var u = l.childNodes; u.length; ) o.appendChild(u[0]);
|
||
r++;
|
||
}
|
||
return o;
|
||
}, this.update = function(e) {
|
||
this.config = e;
|
||
for (var t = [], n = e.firstRow, o = e.lastRow, r = n, s = this.session.getNextFoldLine(r), a = s ? s.start.row : 1/0; ;) {
|
||
if (r > a && (r = s.end.row + 1, s = this.session.getNextFoldLine(r, s), a = s ? s.start.row : 1/0),
|
||
r > o) break;
|
||
this.$useLineGroups() && t.push("<div class='ace_line_group'>"), this.$renderLine(t, r, !1, r == a ? s : !1),
|
||
this.$useLineGroups() && t.push("</div>"), r++;
|
||
}
|
||
this.element = i.setInnerHtml(this.element, t.join(""));
|
||
}, this.$textToken = {
|
||
text: !0,
|
||
rparen: !0,
|
||
lparen: !0
|
||
}, this.$renderToken = function(e, t, n, i) {
|
||
var r = this, s = /\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g, a = function(e, n, i, s) {
|
||
if (n) return r.showInvisibles ? "<span class='ace_invisible'>" + o.stringRepeat(r.SPACE_CHAR, e.length) + "</span>" : o.stringRepeat(" ", e.length);
|
||
if ("&" == e) return "&";
|
||
if ("<" == e) return "<";
|
||
if (" " == e) {
|
||
var a = r.session.getScreenTabSize(t + s);
|
||
return t += a - 1, r.$tabStrings[a];
|
||
}
|
||
if (" " == e) {
|
||
var l = r.showInvisibles ? "ace_cjk ace_invisible" : "ace_cjk", c = r.showInvisibles ? r.SPACE_CHAR : "";
|
||
return t += 1, "<span class='" + l + "' style='width:" + 2 * r.config.characterWidth + "px'>" + c + "</span>";
|
||
}
|
||
return i ? "<span class='ace_invisible ace_invalid'>" + r.SPACE_CHAR + "</span>" : (t += 1,
|
||
"<span class='ace_cjk' style='width:" + 2 * r.config.characterWidth + "px'>" + e + "</span>");
|
||
}, l = i.replace(s, a);
|
||
if (this.$textToken[n.type]) e.push(l); else {
|
||
var c = "ace_" + n.type.replace(/\./g, " ace_"), u = "";
|
||
"fold" == n.type && (u = " style='width:" + n.value.length * this.config.characterWidth + "px;' "),
|
||
e.push("<span class='", c, "'", u, ">", l, "</span>");
|
||
}
|
||
return t + i.length;
|
||
}, this.renderIndentGuide = function(e, t, n) {
|
||
var i = t.search(this.$indentGuideRe);
|
||
return 0 >= i || i >= n ? t : " " == t[0] ? (i -= i % this.tabSize, e.push(o.stringRepeat(this.$tabStrings[" "], i / this.tabSize)),
|
||
t.substr(i)) : " " == t[0] ? (e.push(o.stringRepeat(this.$tabStrings[" "], i)),
|
||
t.substr(i)) : t;
|
||
}, this.$renderWrappedLine = function(e, t, n, i) {
|
||
for (var o = 0, r = 0, s = n[0], a = 0, l = 0; l < t.length; l++) {
|
||
var c = t[l], u = c.value;
|
||
if (0 == l && this.displayIndentGuides) {
|
||
if (o = u.length, u = this.renderIndentGuide(e, u, s), !u) continue;
|
||
o -= u.length;
|
||
}
|
||
if (o + u.length < s) a = this.$renderToken(e, a, c, u), o += u.length; else {
|
||
for (;o + u.length >= s; ) a = this.$renderToken(e, a, c, u.substring(0, s - o)),
|
||
u = u.substring(s - o), o = s, i || e.push("</div>", "<div class='ace_line' style='height:", this.config.lineHeight, "px'>"),
|
||
r++, a = 0, s = n[r] || Number.MAX_VALUE;
|
||
0 != u.length && (o += u.length, a = this.$renderToken(e, a, c, u));
|
||
}
|
||
}
|
||
}, this.$renderSimpleLine = function(e, t) {
|
||
var n = 0, i = t[0], o = i.value;
|
||
this.displayIndentGuides && (o = this.renderIndentGuide(e, o)), o && (n = this.$renderToken(e, n, i, o));
|
||
for (var r = 1; r < t.length; r++) i = t[r], o = i.value, n = this.$renderToken(e, n, i, o);
|
||
}, this.$renderLine = function(e, t, n, i) {
|
||
if (i || 0 == i || (i = this.session.getFoldLine(t)), i) var o = this.$getFoldLineTokens(t, i); else var o = this.session.getTokens(t);
|
||
if (n || e.push("<div class='ace_line' style='height:", this.config.lineHeight, "px'>"),
|
||
o.length) {
|
||
var r = this.session.getRowSplitData(t);
|
||
r && r.length ? this.$renderWrappedLine(e, o, r, n) : this.$renderSimpleLine(e, o);
|
||
}
|
||
this.showInvisibles && (i && (t = i.end.row), e.push("<span class='ace_invisible'>", t == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR, "</span>")),
|
||
n || e.push("</div>");
|
||
}, this.$getFoldLineTokens = function(e, t) {
|
||
function n(e, t, n) {
|
||
for (var i = 0, r = 0; r + e[i].value.length < t; ) if (r += e[i].value.length,
|
||
i++, i == e.length) return;
|
||
if (r != t) {
|
||
var s = e[i].value.substring(t - r);
|
||
s.length > n - t && (s = s.substring(0, n - t)), o.push({
|
||
type: e[i].type,
|
||
value: s
|
||
}), r = t + s.length, i += 1;
|
||
}
|
||
for (;n > r && i < e.length; ) {
|
||
var s = e[i].value;
|
||
s.length + r > n ? o.push({
|
||
type: e[i].type,
|
||
value: s.substring(0, n - r)
|
||
}) : o.push(e[i]), r += s.length, i += 1;
|
||
}
|
||
}
|
||
var i = this.session, o = [], r = i.getTokens(e);
|
||
return t.walk(function(e, t, s, a, l) {
|
||
null != e ? o.push({
|
||
type: "fold",
|
||
value: e
|
||
}) : (l && (r = i.getTokens(t)), r.length && n(r, a, s));
|
||
}, t.end.row, this.session.getLine(t.end.row).length), o;
|
||
}, this.$useLineGroups = function() {
|
||
return this.session.getUseWrapMode();
|
||
}, this.destroy = function() {
|
||
clearInterval(this.$pollSizeChangesTimer), this.$measureNode && this.$measureNode.parentNode.removeChild(this.$measureNode),
|
||
delete this.$measureNode;
|
||
};
|
||
}).call(a.prototype), t.Text = a;
|
||
}), define("ace/layer/cursor", [ "require", "exports", "module", "../lib/dom" ], function(e, t) {
|
||
var n = e("../lib/dom"), i = function(e) {
|
||
this.element = n.createElement("div"), this.element.className = "ace_layer ace_cursor-layer",
|
||
e.appendChild(this.element), this.isVisible = !1, this.isBlinking = !0, this.blinkInterval = 1e3,
|
||
this.smoothBlinking = !1, this.cursors = [], this.cursor = this.addCursor(), n.addCssClass(this.element, "ace_hidden-cursors");
|
||
};
|
||
(function() {
|
||
this.$padding = 0, this.setPadding = function(e) {
|
||
this.$padding = e;
|
||
}, this.setSession = function(e) {
|
||
this.session = e;
|
||
}, this.setBlinking = function(e) {
|
||
e != this.isBlinking && (this.isBlinking = e, this.restartTimer());
|
||
}, this.setBlinkInterval = function(e) {
|
||
e != this.blinkInterval && (this.blinkInterval = e, this.restartTimer());
|
||
}, this.setSmoothBlinking = function(e) {
|
||
e != this.smoothBlinking && (this.smoothBlinking = e, e ? n.addCssClass(this.element, "ace_smooth-blinking") : n.removeCssClass(this.element, "ace_smooth-blinking"),
|
||
this.restartTimer());
|
||
}, this.addCursor = function() {
|
||
var e = n.createElement("div");
|
||
return e.className = "ace_cursor", this.element.appendChild(e), this.cursors.push(e),
|
||
e;
|
||
}, this.removeCursor = function() {
|
||
if (this.cursors.length > 1) {
|
||
var e = this.cursors.pop();
|
||
return e.parentNode.removeChild(e), e;
|
||
}
|
||
}, this.hideCursor = function() {
|
||
this.isVisible = !1, n.addCssClass(this.element, "ace_hidden-cursors"), this.restartTimer();
|
||
}, this.showCursor = function() {
|
||
this.isVisible = !0, n.removeCssClass(this.element, "ace_hidden-cursors"), this.restartTimer();
|
||
}, this.restartTimer = function() {
|
||
clearInterval(this.intervalId), clearTimeout(this.timeoutId), this.smoothBlinking && n.removeCssClass(this.element, "ace_smooth-blinking");
|
||
for (var e = this.cursors.length; e--; ) this.cursors[e].style.opacity = "";
|
||
if (this.isBlinking && this.blinkInterval && this.isVisible) {
|
||
this.smoothBlinking && setTimeout(function() {
|
||
n.addCssClass(this.element, "ace_smooth-blinking");
|
||
}.bind(this));
|
||
var t = function() {
|
||
this.timeoutId = setTimeout(function() {
|
||
for (var e = this.cursors.length; e--; ) this.cursors[e].style.opacity = 0;
|
||
}.bind(this), .6 * this.blinkInterval);
|
||
}.bind(this);
|
||
this.intervalId = setInterval(function() {
|
||
for (var e = this.cursors.length; e--; ) this.cursors[e].style.opacity = "";
|
||
t();
|
||
}.bind(this), this.blinkInterval), t();
|
||
}
|
||
}, this.getPixelPosition = function(e, t) {
|
||
if (!this.config || !this.session) return {
|
||
left: 0,
|
||
top: 0
|
||
};
|
||
e || (e = this.session.selection.getCursor());
|
||
var n = this.session.documentToScreenPosition(e), i = this.$padding + n.column * this.config.characterWidth, o = (n.row - (t ? this.config.firstRowScreen : 0)) * this.config.lineHeight;
|
||
return {
|
||
left: i,
|
||
top: o
|
||
};
|
||
}, this.update = function(e) {
|
||
this.config = e;
|
||
var t = this.session.$selectionMarkers, n = 0, i = 0;
|
||
(void 0 === t || 0 === t.length) && (t = [ {
|
||
cursor: null
|
||
} ]);
|
||
for (var n = 0, o = t.length; o > n; n++) {
|
||
var r = this.getPixelPosition(t[n].cursor, !0);
|
||
if (!((r.top > e.height + e.offset || r.top < -e.offset) && n > 1)) {
|
||
var s = (this.cursors[i++] || this.addCursor()).style;
|
||
s.left = r.left + "px", s.top = r.top + "px", s.width = e.characterWidth + "px",
|
||
s.height = e.lineHeight + "px";
|
||
}
|
||
}
|
||
for (;this.cursors.length > i; ) this.removeCursor();
|
||
var a = this.session.getOverwrite();
|
||
this.$setOverwrite(a), this.$pixelPos = r, this.restartTimer();
|
||
}, this.$setOverwrite = function(e) {
|
||
e != this.overwrite && (this.overwrite = e, e ? n.addCssClass(this.element, "ace_overwrite-cursors") : n.removeCssClass(this.element, "ace_overwrite-cursors"));
|
||
}, this.destroy = function() {
|
||
clearInterval(this.intervalId), clearTimeout(this.timeoutId);
|
||
};
|
||
}).call(i.prototype), t.Cursor = i;
|
||
}), define("ace/scrollbar", [ "require", "exports", "module", "./lib/oop", "./lib/dom", "./lib/event", "./lib/event_emitter" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/dom"), o = e("./lib/event"), r = e("./lib/event_emitter").EventEmitter, s = function(e, t) {
|
||
this.element = i.createElement("div"), this.element.className = "ace_scrollbar",
|
||
this.inner = i.createElement("div"), this.inner.className = "ace_scrollbar-inner",
|
||
this.element.appendChild(this.inner), e.appendChild(this.element), t.$scrollbarWidth = this.width = i.scrollbarWidth(e.ownerDocument),
|
||
t.$scrollbarWidth = this.width = i.scrollbarWidth(e.ownerDocument), this.fullWidth = this.width,
|
||
this.inner.style.width = this.element.style.width = (this.width || 15) + 5 + "px",
|
||
this.setVisible(!1), this.element.style.overflowY = "scroll", o.addListener(this.element, "scroll", this.onScrollV.bind(this)),
|
||
o.addListener(this.element, "mousedown", o.preventDefault);
|
||
}, a = function(e, t) {
|
||
this.element = i.createElement("div"), this.element.className = "ace_scrollbar-h",
|
||
this.inner = i.createElement("div"), this.inner.className = "ace_scrollbar-inner",
|
||
this.element.appendChild(this.inner), e.appendChild(this.element), this.height = t.$scrollbarWidth,
|
||
this.fullHeight = this.height, this.inner.style.height = this.element.style.height = (this.height || 15) + 5 + "px",
|
||
this.setVisible(!1), this.element.style.overflowX = "scroll", o.addListener(this.element, "scroll", this.onScrollH.bind(this)),
|
||
o.addListener(this.element, "mousedown", o.preventDefault);
|
||
};
|
||
(function() {
|
||
n.implement(this, r), this.setVisible = function(e) {
|
||
e ? (this.element.style.display = "", this.fullWidth && (this.width = this.fullWidth),
|
||
this.fullHeight && (this.height = this.fullHeight)) : (this.element.style.display = "none",
|
||
this.height = this.width = 0);
|
||
}, this.onScrollV = function() {
|
||
this.skipEvent || (this.scrollTop = this.element.scrollTop, this._emit("scroll", {
|
||
data: this.scrollTop
|
||
})), this.skipEvent = !1;
|
||
}, this.onScrollH = function() {
|
||
this.skipEvent || (this.scrollLeft = this.element.scrollLeft, this._emit("scroll", {
|
||
data: this.scrollLeft
|
||
})), this.skipEvent = !1;
|
||
}, this.getWidth = function() {
|
||
return this.width;
|
||
}, this.getHeight = function() {
|
||
return this.height;
|
||
}, this.setHeight = function(e) {
|
||
this.element.style.height = e + "px";
|
||
}, this.setWidth = function(e) {
|
||
this.element.style.width = e + "px";
|
||
}, this.setInnerHeight = function(e) {
|
||
this.inner.style.height = e + "px";
|
||
}, this.setInnerWidth = function(e) {
|
||
this.inner.style.width = e + "px";
|
||
}, this.setScrollTop = function(e) {
|
||
this.scrollTop != e && (this.skipEvent = !0, this.scrollTop = this.element.scrollTop = e);
|
||
}, this.setScrollLeft = function(e) {
|
||
this.scrollLeft != e && (this.skipEvent = !0, this.scrollLeft = this.element.scrollLeft = e);
|
||
};
|
||
}).call(s.prototype), a.prototype = s.prototype, t.ScrollBar = s, t.ScrollBarV = s,
|
||
t.ScrollBarH = a;
|
||
}), define("ace/renderloop", [ "require", "exports", "module", "./lib/event" ], function(e, t) {
|
||
var n = e("./lib/event"), i = function(e, t) {
|
||
this.onRender = e, this.pending = !1, this.changes = 0, this.window = t || window;
|
||
};
|
||
(function() {
|
||
this.schedule = function(e) {
|
||
if (this.changes = this.changes | e, !this.pending) {
|
||
this.pending = !0;
|
||
var t = this;
|
||
n.nextFrame(function() {
|
||
t.pending = !1;
|
||
for (var e; e = t.changes; ) t.changes = 0, t.onRender(e);
|
||
}, this.window);
|
||
}
|
||
};
|
||
}).call(i.prototype), t.RenderLoop = i;
|
||
}), function() {
|
||
define("ace/requirejs/text", [ "require", "exports", "module" ], function(e, t) {
|
||
t.load = function(e, t, n) {
|
||
n("", "utf8");
|
||
};
|
||
});
|
||
}(), define("ace/virtual_renderer", [ "require", "exports", "module", "./lib/oop", "./lib/dom", "./lib/useragent", "./config", "./layer/gutter", "./layer/marker", "./layer/text", "./layer/cursor", "./scrollbar", "./scrollbar", "./renderloop", "./lib/event_emitter", "./requirejs/text!./css/editor.css" ], function(e, t) {
|
||
var n = e("./lib/oop"), i = e("./lib/dom");
|
||
e("./lib/useragent");
|
||
var o = e("./config"), r = e("./layer/gutter").Gutter, s = e("./layer/marker").Marker, a = e("./layer/text").Text, l = e("./layer/cursor").Cursor, c = e("./scrollbar").ScrollBarH, u = e("./scrollbar").ScrollBarV, d = e("./renderloop").RenderLoop, h = e("./lib/event_emitter").EventEmitter, p = e("./requirejs/text!./css/editor.css");
|
||
i.importCssString(p, "ace_editor");
|
||
var f = function(e, t) {
|
||
var n = this;
|
||
this.container = e || i.createElement("div"), this.$keepTextAreaAtCursor = !0, i.addCssClass(this.container, "ace_editor"),
|
||
this.setTheme(t), this.$gutter = i.createElement("div"), this.$gutter.className = "ace_gutter",
|
||
this.container.appendChild(this.$gutter), this.scroller = i.createElement("div"),
|
||
this.scroller.className = "ace_scroller", this.container.appendChild(this.scroller),
|
||
this.content = i.createElement("div"), this.content.className = "ace_content", this.scroller.appendChild(this.content),
|
||
this.$gutterLayer = new r(this.$gutter), this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)),
|
||
this.$markerBack = new s(this.content);
|
||
var h = this.$textLayer = new a(this.content);
|
||
this.canvas = h.element, this.$markerFront = new s(this.content), this.$cursorLayer = new l(this.content),
|
||
this.$horizScroll = !1, this.$vScroll = !1, this.scrollBar = this.scrollBarV = new u(this.container, this),
|
||
this.scrollBarH = new c(this.container, this), this.scrollBarV.addEventListener("scroll", function(e) {
|
||
n.$scrollAnimation || n.session.setScrollTop(e.data - n.scrollMargin.top);
|
||
}), this.scrollBarH.addEventListener("scroll", function(e) {
|
||
n.$scrollAnimation || n.session.setScrollLeft(e.data - n.scrollMargin.left);
|
||
}), this.scrollTop = 0, this.scrollLeft = 0, this.cursorPos = {
|
||
row: 0,
|
||
column: 0
|
||
}, this.$textLayer.addEventListener("changeCharacterSize", function() {
|
||
n.updateCharacterSize(), n.onResize(!0), n._signal("changeCharacterSize");
|
||
}), this.$size = {
|
||
width: 0,
|
||
height: 0,
|
||
scrollerHeight: 0,
|
||
scrollerWidth: 0
|
||
}, this.layerConfig = {
|
||
width: 1,
|
||
padding: 0,
|
||
firstRow: 0,
|
||
firstRowScreen: 0,
|
||
lastRow: 0,
|
||
lineHeight: 0,
|
||
characterWidth: 0,
|
||
minHeight: 1,
|
||
maxHeight: 1,
|
||
offset: 0,
|
||
height: 1
|
||
}, this.scrollMargin = {
|
||
left: 0,
|
||
right: 0,
|
||
top: 0,
|
||
bottom: 0,
|
||
v: 0,
|
||
h: 0
|
||
}, this.$loop = new d(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView),
|
||
this.$loop.schedule(this.CHANGE_FULL), this.updateCharacterSize(), this.setPadding(4),
|
||
o.resetOptions(this), o._emit("renderer", this);
|
||
};
|
||
(function() {
|
||
this.CHANGE_CURSOR = 1, this.CHANGE_MARKER = 2, this.CHANGE_GUTTER = 4, this.CHANGE_SCROLL = 8,
|
||
this.CHANGE_LINES = 16, this.CHANGE_TEXT = 32, this.CHANGE_SIZE = 64, this.CHANGE_MARKER_BACK = 128,
|
||
this.CHANGE_MARKER_FRONT = 256, this.CHANGE_FULL = 512, this.CHANGE_H_SCROLL = 1024,
|
||
n.implement(this, h), this.updateCharacterSize = function() {
|
||
this.$textLayer.allowBoldFonts != this.$allowBoldFonts && (this.$allowBoldFonts = this.$textLayer.allowBoldFonts,
|
||
this.setStyle("ace_nobold", !this.$allowBoldFonts)), this.layerConfig.characterWidth = this.characterWidth = this.$textLayer.getCharacterWidth(),
|
||
this.layerConfig.lineHeight = this.lineHeight = this.$textLayer.getLineHeight(),
|
||
this.$updatePrintMargin();
|
||
}, this.setSession = function(e) {
|
||
this.session = e, this.scroller.className = "ace_scroller", this.$cursorLayer.setSession(e),
|
||
this.$markerBack.setSession(e), this.$markerFront.setSession(e), this.$gutterLayer.setSession(e),
|
||
this.$textLayer.setSession(e), this.$loop.schedule(this.CHANGE_FULL);
|
||
}, this.updateLines = function(e, t) {
|
||
void 0 === t && (t = 1/0), this.$changedLines ? (this.$changedLines.firstRow > e && (this.$changedLines.firstRow = e),
|
||
this.$changedLines.lastRow < t && (this.$changedLines.lastRow = t)) : this.$changedLines = {
|
||
firstRow: e,
|
||
lastRow: t
|
||
}, this.$changedLines.firstRow > this.layerConfig.lastRow || this.$changedLines.lastRow < this.layerConfig.firstRow || this.$loop.schedule(this.CHANGE_LINES);
|
||
}, this.onChangeTabSize = function() {
|
||
this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER), this.$textLayer.onChangeTabSize();
|
||
}, this.updateText = function() {
|
||
this.$loop.schedule(this.CHANGE_TEXT);
|
||
}, this.updateFull = function(e) {
|
||
e ? this.$renderChanges(this.CHANGE_FULL, !0) : this.$loop.schedule(this.CHANGE_FULL);
|
||
}, this.updateFontSize = function() {
|
||
this.$textLayer.checkForSizeChanges();
|
||
}, this.$changes = 0, this.onResize = function(e, t, n, i) {
|
||
if (!(this.resizing > 2)) {
|
||
this.resizing > 0 ? this.resizing++ : this.resizing = e ? 1 : 0;
|
||
var o = this.container;
|
||
i || (i = o.clientHeight || o.scrollHeight), n || (n = o.clientWidth || o.scrollWidth);
|
||
var r = this.$updateCachedSize(e, t, n, i);
|
||
if (!this.$size.scrollerHeight || !n && !i) return this.resizing = 0;
|
||
e && (this.$gutterLayer.$padding = null), e ? this.$renderChanges(r, !0) : this.$loop.schedule(r | this.$changes),
|
||
this.resizing && (this.resizing = 0);
|
||
}
|
||
}, this.$updateCachedSize = function(e, t, n, i) {
|
||
var o = 0, r = this.$size, s = {
|
||
width: r.width,
|
||
height: r.height,
|
||
scrollerHeight: r.scrollerHeight,
|
||
scrollerWidth: r.scrollerWidth
|
||
};
|
||
return i && (e || r.height != i) && (r.height = i, o = this.CHANGE_SIZE, r.scrollerHeight = r.height,
|
||
this.$horizScroll && (r.scrollerHeight -= this.scrollBarH.getHeight()), this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px",
|
||
this.session && (this.session.setScrollTop(this.getScrollTop()), o |= this.CHANGE_SCROLL)),
|
||
n && (e || r.width != n) && (o = this.CHANGE_SIZE, r.width = n, null == t && (t = this.$showGutter ? this.$gutter.offsetWidth : 0),
|
||
this.gutterWidth = t, this.scrollBarH.element.style.left = this.scroller.style.left = t + "px",
|
||
r.scrollerWidth = Math.max(0, n - t - this.scrollBarV.getWidth()), this.scrollBarH.element.style.right = this.scroller.style.right = this.scrollBarV.getWidth() + "px",
|
||
this.scroller.style.bottom = this.scrollBarH.getHeight() + "px", (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || e) && (o |= this.CHANGE_FULL)),
|
||
o && this._signal("resize", s), o;
|
||
}, this.onGutterResize = function() {
|
||
var e = this.$showGutter ? this.$gutter.offsetWidth : 0;
|
||
e != this.gutterWidth && (this.$changes |= this.$updateCachedSize(!0, e, this.$size.width, this.$size.height)),
|
||
this.session.getUseWrapMode() && this.adjustWrapLimit() ? this.$loop.schedule(this.CHANGE_FULL) : (this.$computeLayerConfig(),
|
||
this.$loop.schedule(this.CHANGE_MARKER));
|
||
}, this.adjustWrapLimit = function() {
|
||
var e = this.$size.scrollerWidth - 2 * this.$padding, t = Math.floor(e / this.characterWidth);
|
||
return this.session.adjustWrapLimit(t, this.$showPrintMargin && this.$printMarginColumn);
|
||
}, this.setAnimatedScroll = function(e) {
|
||
this.setOption("animatedScroll", e);
|
||
}, this.getAnimatedScroll = function() {
|
||
return this.$animatedScroll;
|
||
}, this.setShowInvisibles = function(e) {
|
||
this.setOption("showInvisibles", e);
|
||
}, this.getShowInvisibles = function() {
|
||
return this.getOption("showInvisibles");
|
||
}, this.getDisplayIndentGuides = function() {
|
||
return this.getOption("displayIndentGuides");
|
||
}, this.setDisplayIndentGuides = function(e) {
|
||
this.setOption("displayIndentGuides", e);
|
||
}, this.setShowPrintMargin = function(e) {
|
||
this.setOption("showPrintMargin", e);
|
||
}, this.getShowPrintMargin = function() {
|
||
return this.getOption("showPrintMargin");
|
||
}, this.setPrintMarginColumn = function(e) {
|
||
this.setOption("printMarginColumn", e);
|
||
}, this.getPrintMarginColumn = function() {
|
||
return this.getOption("printMarginColumn");
|
||
}, this.getShowGutter = function() {
|
||
return this.getOption("showGutter");
|
||
}, this.setShowGutter = function(e) {
|
||
return this.setOption("showGutter", e);
|
||
}, this.getFadeFoldWidgets = function() {
|
||
return this.getOption("fadeFoldWidgets");
|
||
}, this.setFadeFoldWidgets = function(e) {
|
||
this.setOption("fadeFoldWidgets", e);
|
||
}, this.setHighlightGutterLine = function(e) {
|
||
this.setOption("highlightGutterLine", e);
|
||
}, this.getHighlightGutterLine = function() {
|
||
return this.getOption("highlightGutterLine");
|
||
}, this.$updateGutterLineHighlight = function() {
|
||
var e = this.$cursorLayer.$pixelPos, t = this.layerConfig.lineHeight;
|
||
if (this.session.getUseWrapMode()) {
|
||
var n = this.session.selection.getCursor();
|
||
n.column = 0, e = this.$cursorLayer.getPixelPosition(n, !0), t *= this.session.getRowLength(n.row);
|
||
}
|
||
this.$gutterLineHighlight.style.top = e.top - this.layerConfig.offset + "px", this.$gutterLineHighlight.style.height = t + "px";
|
||
}, this.$updatePrintMargin = function() {
|
||
if (this.$showPrintMargin || this.$printMarginEl) {
|
||
if (!this.$printMarginEl) {
|
||
var e = i.createElement("div");
|
||
e.className = "ace_layer ace_print-margin-layer", this.$printMarginEl = i.createElement("div"),
|
||
this.$printMarginEl.className = "ace_print-margin", e.appendChild(this.$printMarginEl),
|
||
this.content.insertBefore(e, this.content.firstChild);
|
||
}
|
||
var t = this.$printMarginEl.style;
|
||
t.left = this.characterWidth * this.$printMarginColumn + this.$padding + "px", t.visibility = this.$showPrintMargin ? "visible" : "hidden",
|
||
this.session && -1 == this.session.$wrap && this.adjustWrapLimit();
|
||
}
|
||
}, this.getContainerElement = function() {
|
||
return this.container;
|
||
}, this.getMouseEventTarget = function() {
|
||
return this.content;
|
||
}, this.getTextAreaContainer = function() {
|
||
return this.container;
|
||
}, this.$moveTextAreaToCursor = function() {
|
||
if (this.$keepTextAreaAtCursor) {
|
||
var e = this.layerConfig, t = this.$cursorLayer.$pixelPos.top, n = this.$cursorLayer.$pixelPos.left;
|
||
t -= e.offset;
|
||
var i = this.lineHeight;
|
||
if (!(0 > t || t > e.height - i)) {
|
||
var o = this.characterWidth;
|
||
if (this.$composition) {
|
||
var r = this.textarea.value.replace(/^\x01+/, "");
|
||
o *= this.session.$getStringScreenWidth(r)[0] + 2, i += 2, t -= 1;
|
||
}
|
||
n -= this.scrollLeft, n > this.$size.scrollerWidth - o && (n = this.$size.scrollerWidth - o),
|
||
n -= this.scrollBar.width, this.textarea.style.height = i + "px", this.textarea.style.width = o + "px",
|
||
this.textarea.style.right = Math.max(0, this.$size.scrollerWidth - n - o) + "px",
|
||
this.textarea.style.bottom = Math.max(0, this.$size.height - t - i) + "px";
|
||
}
|
||
}
|
||
}, this.getFirstVisibleRow = function() {
|
||
return this.layerConfig.firstRow;
|
||
}, this.getFirstFullyVisibleRow = function() {
|
||
return this.layerConfig.firstRow + (0 === this.layerConfig.offset ? 0 : 1);
|
||
}, this.getLastFullyVisibleRow = function() {
|
||
var e = Math.floor((this.layerConfig.height + this.layerConfig.offset) / this.layerConfig.lineHeight);
|
||
return this.layerConfig.firstRow - 1 + e;
|
||
}, this.getLastVisibleRow = function() {
|
||
return this.layerConfig.lastRow;
|
||
}, this.$padding = null, this.setPadding = function(e) {
|
||
this.$padding = e, this.$textLayer.setPadding(e), this.$cursorLayer.setPadding(e),
|
||
this.$markerFront.setPadding(e), this.$markerBack.setPadding(e), this.$loop.schedule(this.CHANGE_FULL),
|
||
this.$updatePrintMargin();
|
||
}, this.setScrollMargin = function(e, t, n, i) {
|
||
var o = this.scrollMargin;
|
||
o.top = 0 | e, o.bottom = 0 | t, o.right = 0 | i, o.left = 0 | n, o.v = o.top + o.bottom,
|
||
o.h = o.left + o.right, this.updateFull();
|
||
}, this.getHScrollBarAlwaysVisible = function() {
|
||
return this.$hScrollBarAlwaysVisible;
|
||
}, this.setHScrollBarAlwaysVisible = function(e) {
|
||
this.setOption("hScrollBarAlwaysVisible", e);
|
||
}, this.getVScrollBarAlwaysVisible = function() {
|
||
return this.$hScrollBarAlwaysVisible;
|
||
}, this.setVScrollBarAlwaysVisible = function(e) {
|
||
this.setOption("vScrollBarAlwaysVisible", e);
|
||
}, this.$updateScrollBarV = function() {
|
||
this.scrollBarV.setInnerHeight(this.layerConfig.maxHeight + this.scrollMargin.v),
|
||
this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);
|
||
}, this.$updateScrollBarH = function() {
|
||
this.scrollBarH.setInnerWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h),
|
||
this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);
|
||
}, this.$renderChanges = function(e, t) {
|
||
return this.$changes && (e |= this.$changes, this.$changes = 0), this.session && this.container.offsetWidth && (e || t) ? this.$size.width ? (this.lineHeight || this.$textLayer.checkForSizeChanges(),
|
||
this._signal("beforeRender"), (e & this.CHANGE_FULL || e & this.CHANGE_SIZE || e & this.CHANGE_TEXT || e & this.CHANGE_LINES || e & this.CHANGE_SCROLL || e & this.CHANGE_H_SCROLL) && (e |= this.$computeLayerConfig()),
|
||
e & this.CHANGE_H_SCROLL && (this.$updateScrollBarH(), this.content.style.marginLeft = -this.scrollLeft + "px",
|
||
this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"),
|
||
e & this.CHANGE_FULL ? (this.$updateScrollBarV(), this.$updateScrollBarH(), this.$textLayer.update(this.layerConfig),
|
||
this.$showGutter && this.$gutterLayer.update(this.layerConfig), this.$markerBack.update(this.layerConfig),
|
||
this.$markerFront.update(this.layerConfig), this.$cursorLayer.update(this.layerConfig),
|
||
this.$moveTextAreaToCursor(), this.$highlightGutterLine && this.$updateGutterLineHighlight(),
|
||
this._signal("afterRender"), void 0) : e & this.CHANGE_SCROLL ? (this.$updateScrollBarV(),
|
||
e & this.CHANGE_TEXT || e & this.CHANGE_LINES ? this.$textLayer.update(this.layerConfig) : this.$textLayer.scrollLines(this.layerConfig),
|
||
this.$showGutter && this.$gutterLayer.update(this.layerConfig), this.$markerBack.update(this.layerConfig),
|
||
this.$markerFront.update(this.layerConfig), this.$cursorLayer.update(this.layerConfig),
|
||
this.$highlightGutterLine && this.$updateGutterLineHighlight(), this.$moveTextAreaToCursor(),
|
||
this._signal("afterRender"), void 0) : (e & this.CHANGE_TEXT ? (this.$textLayer.update(this.layerConfig),
|
||
this.$showGutter && this.$gutterLayer.update(this.layerConfig)) : e & this.CHANGE_LINES ? (this.$updateLines() || e & this.CHANGE_GUTTER && this.$showGutter) && this.$gutterLayer.update(this.layerConfig) : (e & this.CHANGE_TEXT || e & this.CHANGE_GUTTER) && this.$showGutter && this.$gutterLayer.update(this.layerConfig),
|
||
e & this.CHANGE_CURSOR && (this.$cursorLayer.update(this.layerConfig), this.$moveTextAreaToCursor(),
|
||
this.$highlightGutterLine && this.$updateGutterLineHighlight()), e & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT) && this.$markerFront.update(this.layerConfig),
|
||
e & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK) && this.$markerBack.update(this.layerConfig),
|
||
(e & this.CHANGE_SIZE || e & this.CHANGE_LINES) && (this.$updateScrollBarV(), this.$updateScrollBarH()),
|
||
this._signal("afterRender"), void 0)) : (this.$changes |= e, this.onResize(!0)) : (this.$changes |= e,
|
||
void 0);
|
||
}, this.$autosize = function(e) {
|
||
var e = this.session.getScreenLength() * this.lineHeight, t = this.$maxLines * this.lineHeight, n = Math.max((this.$minLines || 1) * this.lineHeight, Math.min(t, e)), i = e > t;
|
||
if (n != this.desiredHeight || this.$size.height != this.desiredHeight || i != this.$vScroll) {
|
||
i != this.$vScroll && (this.$vScroll = i, this.scrollBarV.setVisible(i));
|
||
var o = this.container.clientWidth;
|
||
this.container.style.height = n + "px", this.$updateCachedSize(!0, this.$gutterWidth, o, n),
|
||
this.desiredHeight = n;
|
||
}
|
||
}, this.$computeLayerConfig = function() {
|
||
this.$maxLines && this.lineHeight > 1 && this.$autosize();
|
||
var e = this.session, t = this.$size.height <= 2 * this.lineHeight, n = this.session.getScreenLength(), i = n * this.lineHeight, o = this.scrollTop % this.lineHeight, r = this.$size.scrollerHeight + this.lineHeight, s = this.$getLongestLine(), a = !t && (this.$hScrollBarAlwaysVisible || this.$size.scrollerWidth - s - 2 * this.$padding < 0), l = this.$horizScroll !== a;
|
||
l && (this.$horizScroll = a, this.scrollBarH.setVisible(a)), !this.$maxLines && this.$scrollPastEnd && this.scrollTop > i - this.$size.scrollerHeight && (i += Math.min((this.$size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd, this.scrollTop - i + this.$size.scrollerHeight));
|
||
var c = !t && (this.$vScrollBarAlwaysVisible || this.$size.scrollerHeight - i < 0), u = this.$vScroll !== c;
|
||
u && (this.$vScroll = c, this.scrollBarV.setVisible(c)), this.session.setScrollTop(Math.max(-this.scrollMargin.top, Math.min(this.scrollTop, i - this.$size.scrollerHeight + this.scrollMargin.v))),
|
||
this.session.setScrollLeft(Math.max(-this.scrollMargin.left, Math.min(this.scrollLeft, s + 2 * this.$padding - this.$size.scrollerWidth + this.scrollMargin.h)));
|
||
var d, h, p = Math.ceil(r / this.lineHeight) - 1, f = Math.max(0, Math.round((this.scrollTop - o) / this.lineHeight)), g = f + p, m = this.lineHeight;
|
||
f = e.screenToDocumentRow(f, 0);
|
||
var v = e.getFoldLine(f);
|
||
v && (f = v.start.row), d = e.documentToScreenRow(f, 0), h = e.getRowLength(f) * m,
|
||
g = Math.min(e.screenToDocumentRow(g, 0), e.getLength() - 1), r = this.$size.scrollerHeight + e.getRowLength(g) * m + h,
|
||
o = this.scrollTop - d * m;
|
||
var b = 0;
|
||
return (l || u) && (b = this.$updateCachedSize(!0, this.gutterWidth, this.$size.width, this.$size.height),
|
||
this._signal("scrollbarVisibilityChanged"), u && (s = this.$getLongestLine())),
|
||
this.layerConfig = {
|
||
width: s,
|
||
padding: this.$padding,
|
||
firstRow: f,
|
||
firstRowScreen: d,
|
||
lastRow: g,
|
||
lineHeight: m,
|
||
characterWidth: this.characterWidth,
|
||
minHeight: r,
|
||
maxHeight: i,
|
||
offset: o,
|
||
height: this.$size.scrollerHeight
|
||
}, this.$gutterLayer.element.style.marginTop = -o + "px", this.content.style.marginTop = -o + "px",
|
||
this.content.style.width = s + 2 * this.$padding + "px", this.content.style.height = r + "px",
|
||
b;
|
||
}, this.$updateLines = function() {
|
||
var e = this.$changedLines.firstRow, t = this.$changedLines.lastRow;
|
||
this.$changedLines = null;
|
||
var n = this.layerConfig;
|
||
return e > n.lastRow + 1 || t < n.firstRow ? void 0 : 1/0 === t ? (this.$showGutter && this.$gutterLayer.update(n),
|
||
this.$textLayer.update(n), void 0) : (this.$textLayer.updateLines(n, e, t), !0);
|
||
}, this.$getLongestLine = function() {
|
||
var e = this.session.getScreenWidth();
|
||
return this.showInvisibles && !this.session.$useWrapMode && (e += 1), Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(e * this.characterWidth));
|
||
}, this.updateFrontMarkers = function() {
|
||
this.$markerFront.setMarkers(this.session.getMarkers(!0)), this.$loop.schedule(this.CHANGE_MARKER_FRONT);
|
||
}, this.updateBackMarkers = function() {
|
||
this.$markerBack.setMarkers(this.session.getMarkers()), this.$loop.schedule(this.CHANGE_MARKER_BACK);
|
||
}, this.addGutterDecoration = function(e, t) {
|
||
this.$gutterLayer.addGutterDecoration(e, t);
|
||
}, this.removeGutterDecoration = function(e, t) {
|
||
this.$gutterLayer.removeGutterDecoration(e, t);
|
||
}, this.updateBreakpoints = function() {
|
||
this.$loop.schedule(this.CHANGE_GUTTER);
|
||
}, this.setAnnotations = function(e) {
|
||
this.$gutterLayer.setAnnotations(e), this.$loop.schedule(this.CHANGE_GUTTER);
|
||
}, this.updateCursor = function() {
|
||
this.$loop.schedule(this.CHANGE_CURSOR);
|
||
}, this.hideCursor = function() {
|
||
this.$cursorLayer.hideCursor();
|
||
}, this.showCursor = function() {
|
||
this.$cursorLayer.showCursor();
|
||
}, this.scrollSelectionIntoView = function(e, t, n) {
|
||
this.scrollCursorIntoView(e, n), this.scrollCursorIntoView(t, n);
|
||
}, this.scrollCursorIntoView = function(e, t) {
|
||
if (0 !== this.$size.scrollerHeight) {
|
||
var n = this.$cursorLayer.getPixelPosition(e), i = n.left, o = n.top, r = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;
|
||
r > o ? (t && (o -= t * this.$size.scrollerHeight), 0 == o ? o = -this.scrollMargin.top : 0 == o && (o = +this.scrollMargin.bottom),
|
||
this.session.setScrollTop(o)) : r + this.$size.scrollerHeight < o + this.lineHeight && (t && (o += t * this.$size.scrollerHeight),
|
||
this.session.setScrollTop(o + this.lineHeight - this.$size.scrollerHeight));
|
||
var s = this.scrollLeft;
|
||
s > i ? (i < this.$padding + 2 * this.layerConfig.characterWidth && (i = -this.scrollMargin.left),
|
||
this.session.setScrollLeft(i)) : s + this.$size.scrollerWidth < i + this.characterWidth ? this.session.setScrollLeft(Math.round(i + this.characterWidth - this.$size.scrollerWidth)) : s <= this.$padding && i - s < this.characterWidth && this.session.setScrollLeft(0);
|
||
}
|
||
}, this.getScrollTop = function() {
|
||
return this.session.getScrollTop();
|
||
}, this.getScrollLeft = function() {
|
||
return this.session.getScrollLeft();
|
||
}, this.getScrollTopRow = function() {
|
||
return this.scrollTop / this.lineHeight;
|
||
}, this.getScrollBottomRow = function() {
|
||
return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);
|
||
}, this.scrollToRow = function(e) {
|
||
this.session.setScrollTop(e * this.lineHeight);
|
||
}, this.alignCursor = function(e, t) {
|
||
"number" == typeof e && (e = {
|
||
row: e,
|
||
column: 0
|
||
});
|
||
var n = this.$cursorLayer.getPixelPosition(e), i = this.$size.scrollerHeight - this.lineHeight, o = n.top - i * (t || 0);
|
||
return this.session.setScrollTop(o), o;
|
||
}, this.STEPS = 8, this.$calcSteps = function(e, t) {
|
||
var n = 0, i = this.STEPS, o = [], r = function(e, t, n) {
|
||
return n * (Math.pow(e - 1, 3) + 1) + t;
|
||
};
|
||
for (n = 0; i > n; ++n) o.push(r(n / this.STEPS, e, t - e));
|
||
return o;
|
||
}, this.scrollToLine = function(e, t, n, i) {
|
||
var o = this.$cursorLayer.getPixelPosition({
|
||
row: e,
|
||
column: 0
|
||
}), r = o.top;
|
||
t && (r -= this.$size.scrollerHeight / 2);
|
||
var s = this.scrollTop;
|
||
this.session.setScrollTop(r), n !== !1 && this.animateScrolling(s, i);
|
||
}, this.animateScrolling = function(e, t) {
|
||
var n = this.scrollTop;
|
||
if (this.$animatedScroll) {
|
||
var i = this;
|
||
if (e != n) {
|
||
if (this.$scrollAnimation) {
|
||
var o = this.$scrollAnimation.steps;
|
||
if (o.length && (e = o[0], e == n)) return;
|
||
}
|
||
var r = i.$calcSteps(e, n);
|
||
this.$scrollAnimation = {
|
||
from: e,
|
||
to: n,
|
||
steps: r
|
||
}, clearInterval(this.$timer), i.session.setScrollTop(r.shift()), this.$timer = setInterval(function() {
|
||
r.length ? (i.session.setScrollTop(r.shift()), i.session.$scrollTop = n) : null != n ? (i.session.$scrollTop = -1,
|
||
i.session.setScrollTop(n), n = null) : (i.$timer = clearInterval(i.$timer), i.$scrollAnimation = null,
|
||
t && t());
|
||
}, 10);
|
||
}
|
||
}
|
||
}, this.scrollToY = function(e) {
|
||
this.scrollTop !== e && (this.$loop.schedule(this.CHANGE_SCROLL), this.scrollTop = e);
|
||
}, this.scrollToX = function(e) {
|
||
this.scrollLeft !== e && (this.scrollLeft = e), this.$loop.schedule(this.CHANGE_H_SCROLL);
|
||
}, this.scrollTo = function(e, t) {
|
||
this.session.setScrollTop(t), this.session.setScrollLeft(t);
|
||
}, this.scrollBy = function(e, t) {
|
||
t && this.session.setScrollTop(this.session.getScrollTop() + t), e && this.session.setScrollLeft(this.session.getScrollLeft() + e);
|
||
}, this.isScrollableBy = function(e, t) {
|
||
return 0 > t && this.session.getScrollTop() >= 1 - this.scrollMargin.top ? !0 : t > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - this.layerConfig.maxHeight - (this.$size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd < -1 + this.scrollMargin.bottom ? !0 : 0 > e && this.session.getScrollLeft() >= 1 - this.scrollMargin.left ? !0 : e > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - this.layerConfig.width < -1 + this.scrollMargin.right ? !0 : void 0;
|
||
}, this.pixelToScreenCoordinates = function(e, t) {
|
||
var n = this.scroller.getBoundingClientRect(), i = (e + this.scrollLeft - n.left - this.$padding) / this.characterWidth, o = Math.floor((t + this.scrollTop - n.top) / this.lineHeight), r = Math.round(i);
|
||
return {
|
||
row: o,
|
||
column: r,
|
||
side: i - r > 0 ? 1 : -1
|
||
};
|
||
}, this.screenToTextCoordinates = function(e, t) {
|
||
var n = this.scroller.getBoundingClientRect(), i = Math.round((e + this.scrollLeft - n.left - this.$padding) / this.characterWidth), o = Math.floor((t + this.scrollTop - n.top) / this.lineHeight);
|
||
return this.session.screenToDocumentPosition(o, Math.max(i, 0));
|
||
}, this.textToScreenCoordinates = function(e, t) {
|
||
var n = this.scroller.getBoundingClientRect(), i = this.session.documentToScreenPosition(e, t), o = this.$padding + Math.round(i.column * this.characterWidth), r = i.row * this.lineHeight;
|
||
return {
|
||
pageX: n.left + o - this.scrollLeft,
|
||
pageY: n.top + r - this.scrollTop
|
||
};
|
||
}, this.visualizeFocus = function() {
|
||
i.addCssClass(this.container, "ace_focus");
|
||
}, this.visualizeBlur = function() {
|
||
i.removeCssClass(this.container, "ace_focus");
|
||
}, this.showComposition = function() {
|
||
this.$composition || (this.$composition = {
|
||
keepTextAreaAtCursor: this.$keepTextAreaAtCursor,
|
||
cssText: this.textarea.style.cssText
|
||
}), this.$keepTextAreaAtCursor = !0, i.addCssClass(this.textarea, "ace_composition"),
|
||
this.textarea.style.cssText = "", this.$moveTextAreaToCursor();
|
||
}, this.setCompositionText = function() {
|
||
this.$moveTextAreaToCursor();
|
||
}, this.hideComposition = function() {
|
||
this.$composition && (i.removeCssClass(this.textarea, "ace_composition"), this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor,
|
||
this.textarea.style.cssText = this.$composition.cssText, this.$composition = null);
|
||
}, this.setTheme = function(e, t) {
|
||
function n(n) {
|
||
if (r.$themeValue != e) return t && t();
|
||
if (n.cssClass) {
|
||
i.importCssString(n.cssText, n.cssClass, r.container.ownerDocument), r.theme && i.removeCssClass(r.container, r.theme.cssClass),
|
||
r.$theme = n.cssClass, r.theme = n, i.addCssClass(r.container, n.cssClass), i.setCssClass(r.container, "ace_dark", n.isDark);
|
||
var o = "padding" in n ? n.padding : 4;
|
||
r.$padding && o != r.$padding && r.setPadding(o), r.$size && (r.$size.width = 0,
|
||
r.onResize()), r._dispatchEvent("themeLoaded", {
|
||
theme: n
|
||
}), t && t();
|
||
}
|
||
}
|
||
var r = this;
|
||
if (this.$themeValue = e, r._dispatchEvent("themeChange", {
|
||
theme: e
|
||
}), e && "string" != typeof e) n(e); else {
|
||
var s = e || "ace/theme/textmate";
|
||
o.loadModule([ "theme", s ], n);
|
||
}
|
||
}, this.getTheme = function() {
|
||
return this.$themeValue;
|
||
}, this.setStyle = function(e, t) {
|
||
i.setCssClass(this.container, e, 0 != t);
|
||
}, this.unsetStyle = function(e) {
|
||
i.removeCssClass(this.container, e);
|
||
}, this.setMouseCursor = function(e) {
|
||
this.content.style.cursor = e;
|
||
}, this.destroy = function() {
|
||
this.$textLayer.destroy(), this.$cursorLayer.destroy();
|
||
};
|
||
}).call(f.prototype), o.defineOptions(f.prototype, "renderer", {
|
||
animatedScroll: {
|
||
initialValue: !1
|
||
},
|
||
showInvisibles: {
|
||
set: function(e) {
|
||
this.$textLayer.setShowInvisibles(e) && this.$loop.schedule(this.CHANGE_TEXT);
|
||
},
|
||
initialValue: !1
|
||
},
|
||
showPrintMargin: {
|
||
set: function() {
|
||
this.$updatePrintMargin();
|
||
},
|
||
initialValue: !0
|
||
},
|
||
printMarginColumn: {
|
||
set: function() {
|
||
this.$updatePrintMargin();
|
||
},
|
||
initialValue: 80
|
||
},
|
||
printMargin: {
|
||
set: function(e) {
|
||
"number" == typeof e && (this.$printMarginColumn = e), this.$showPrintMargin = !!e,
|
||
this.$updatePrintMargin();
|
||
},
|
||
get: function() {
|
||
return this.$showPrintMargin && this.$printMarginColumn;
|
||
}
|
||
},
|
||
showGutter: {
|
||
set: function(e) {
|
||
this.$gutter.style.display = e ? "block" : "none", this.onGutterResize();
|
||
},
|
||
initialValue: !0
|
||
},
|
||
fadeFoldWidgets: {
|
||
set: function(e) {
|
||
i.setCssClass(this.$gutter, "ace_fade-fold-widgets", e);
|
||
},
|
||
initialValue: !1
|
||
},
|
||
showFoldWidgets: {
|
||
set: function(e) {
|
||
this.$gutterLayer.setShowFoldWidgets(e);
|
||
},
|
||
initialValue: !0
|
||
},
|
||
displayIndentGuides: {
|
||
set: function(e) {
|
||
this.$textLayer.setDisplayIndentGuides(e) && this.$loop.schedule(this.CHANGE_TEXT);
|
||
},
|
||
initialValue: !0
|
||
},
|
||
highlightGutterLine: {
|
||
set: function(e) {
|
||
return this.$gutterLineHighlight ? (this.$gutterLineHighlight.style.display = e ? "" : "none",
|
||
this.$cursorLayer.$pixelPos && this.$updateGutterLineHighlight(), void 0) : (this.$gutterLineHighlight = i.createElement("div"),
|
||
this.$gutterLineHighlight.className = "ace_gutter-active-line", this.$gutter.appendChild(this.$gutterLineHighlight),
|
||
void 0);
|
||
},
|
||
initialValue: !1,
|
||
value: !0
|
||
},
|
||
hScrollBarAlwaysVisible: {
|
||
set: function() {
|
||
this.$hScrollBarAlwaysVisible && this.$horizScroll || this.$loop.schedule(this.CHANGE_SCROLL);
|
||
},
|
||
initialValue: !1
|
||
},
|
||
vScrollBarAlwaysVisible: {
|
||
set: function() {
|
||
this.$vScrollBarAlwaysVisible && this.$vScroll || this.$loop.schedule(this.CHANGE_SCROLL);
|
||
},
|
||
initialValue: !1
|
||
},
|
||
fontSize: {
|
||
set: function(e) {
|
||
"number" == typeof e && (e += "px"), this.container.style.fontSize = e, this.updateFontSize();
|
||
},
|
||
initialValue: 12
|
||
},
|
||
fontFamily: {
|
||
set: function(e) {
|
||
this.container.style.fontFamily = e, this.updateFontSize();
|
||
}
|
||
},
|
||
maxLines: {
|
||
set: function() {
|
||
this.updateFull();
|
||
}
|
||
},
|
||
minLines: {
|
||
set: function() {
|
||
this.updateFull();
|
||
}
|
||
},
|
||
scrollPastEnd: {
|
||
set: function(e) {
|
||
e = +e || 0, this.$scrollPastEnd != e && (this.$scrollPastEnd = e, this.$loop.schedule(this.CHANGE_SCROLL));
|
||
},
|
||
initialValue: 0,
|
||
handlesSet: !0
|
||
},
|
||
fixedWidthGutter: {
|
||
set: function(e) {
|
||
this.$gutterLayer.$fixedWidth = !!e, this.$loop.schedule(this.CHANGE_GUTTER);
|
||
}
|
||
}
|
||
}), t.VirtualRenderer = f;
|
||
}), define("ace/mouse/multi_select_handler", [ "require", "exports", "module", "../lib/event" ], function(e, t) {
|
||
function n(e, t) {
|
||
return e.row == t.row && e.column == t.column;
|
||
}
|
||
function i(e) {
|
||
var t = e.domEvent, i = t.altKey, r = t.shiftKey, s = e.getAccelKey(), a = e.getButton();
|
||
if (e.editor.inMultiSelectMode && 2 == a) return e.editor.textInput.onContextMenu(e.domEvent),
|
||
void 0;
|
||
if (!s && !i) return 0 == a && e.editor.inMultiSelectMode && e.editor.exitMultiSelectMode(),
|
||
void 0;
|
||
var l = e.editor, c = l.selection, u = l.inMultiSelectMode, d = e.getDocumentPosition(), h = c.getCursor(), p = e.inSelection() || c.isEmpty() && n(d, h), f = e.x, g = e.y, m = function(e) {
|
||
f = e.clientX, g = e.clientY;
|
||
}, v = function() {
|
||
var e = l.renderer.pixelToScreenCoordinates(f, g), t = b.screenToDocumentPosition(e.row, e.column);
|
||
n(w, e) && n(t, c.selectionLead) || (w = e, l.selection.moveCursorToPosition(t),
|
||
l.selection.clearSelection(), l.renderer.scrollCursorIntoView(), l.removeSelectionMarkers(x),
|
||
x = c.rectangularRangeBlock(w, y), x.forEach(l.addSelectionMarker, l), l.updateSelectionMarkers());
|
||
}, b = l.session, y = l.renderer.pixelToScreenCoordinates(f, g), w = y;
|
||
if (!s || r || i || 0 != a) {
|
||
if (i && 0 == a) {
|
||
e.stop(), u && !s ? c.toSingleRange() : !u && s && c.addRange();
|
||
var x = [];
|
||
r ? (y = b.documentToScreenPosition(c.lead), v()) : (c.moveCursorToPosition(d),
|
||
c.clearSelection());
|
||
var C = function() {
|
||
clearInterval(k), l.removeSelectionMarkers(x);
|
||
for (var e = 0; e < x.length; e++) c.addRange(x[e]);
|
||
}, E = v;
|
||
o.capture(l.container, m, C);
|
||
var k = setInterval(function() {
|
||
E();
|
||
}, 20);
|
||
return e.preventDefault();
|
||
}
|
||
} else {
|
||
if (!u && p) return;
|
||
if (!u) {
|
||
var A = c.toOrientedRange();
|
||
l.addSelectionMarker(A);
|
||
}
|
||
var S = c.rangeList.rangeAtPoint(d);
|
||
l.once("mouseup", function() {
|
||
var e = c.toOrientedRange();
|
||
S && e.isEmpty() && n(S.cursor, e.cursor) ? c.substractPoint(e.cursor) : (A && (l.removeSelectionMarker(A),
|
||
c.addRange(A)), c.addRange(e));
|
||
});
|
||
}
|
||
}
|
||
var o = e("../lib/event");
|
||
t.onMouseDown = i;
|
||
}), define("ace/commands/multi_select_commands", [ "require", "exports", "module", "../keyboard/hash_handler" ], function(e, t) {
|
||
t.defaultCommands = [ {
|
||
name: "addCursorAbove",
|
||
exec: function(e) {
|
||
e.selectMoreLines(-1);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Up",
|
||
mac: "Ctrl-Alt-Up"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "addCursorBelow",
|
||
exec: function(e) {
|
||
e.selectMoreLines(1);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Down",
|
||
mac: "Ctrl-Alt-Down"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "addCursorAboveSkipCurrent",
|
||
exec: function(e) {
|
||
e.selectMoreLines(-1, !0);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Shift-Up",
|
||
mac: "Ctrl-Alt-Shift-Up"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "addCursorBelowSkipCurrent",
|
||
exec: function(e) {
|
||
e.selectMoreLines(1, !0);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Shift-Down",
|
||
mac: "Ctrl-Alt-Shift-Down"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "selectMoreBefore",
|
||
exec: function(e) {
|
||
e.selectMore(-1);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Left",
|
||
mac: "Ctrl-Alt-Left"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "selectMoreAfter",
|
||
exec: function(e) {
|
||
e.selectMore(1);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Right",
|
||
mac: "Ctrl-Alt-Right"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "selectNextBefore",
|
||
exec: function(e) {
|
||
e.selectMore(-1, !0);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Shift-Left",
|
||
mac: "Ctrl-Alt-Shift-Left"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "selectNextAfter",
|
||
exec: function(e) {
|
||
e.selectMore(1, !0);
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-Shift-Right",
|
||
mac: "Ctrl-Alt-Shift-Right"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "splitIntoLines",
|
||
exec: function(e) {
|
||
e.multiSelect.splitIntoLines();
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-L",
|
||
mac: "Ctrl-Alt-L"
|
||
},
|
||
readonly: !0
|
||
}, {
|
||
name: "alignCursors",
|
||
exec: function(e) {
|
||
e.alignCursors();
|
||
},
|
||
bindKey: {
|
||
win: "Ctrl-Alt-A",
|
||
mac: "Ctrl-Alt-A"
|
||
}
|
||
} ], t.multiSelectCommands = [ {
|
||
name: "singleSelection",
|
||
bindKey: "esc",
|
||
exec: function(e) {
|
||
e.exitMultiSelectMode();
|
||
},
|
||
readonly: !0,
|
||
isAvailable: function(e) {
|
||
return e && e.inMultiSelectMode;
|
||
}
|
||
} ];
|
||
var n = e("../keyboard/hash_handler").HashHandler;
|
||
t.keyboardHandler = new n(t.multiSelectCommands);
|
||
}), define("ace/multi_select", [ "require", "exports", "module", "./range_list", "./range", "./selection", "./mouse/multi_select_handler", "./lib/event", "./lib/lang", "./commands/multi_select_commands", "./search", "./edit_session", "./editor", "./config" ], function(e, t) {
|
||
function n(e, t, n) {
|
||
return f.$options.wrap = !0, f.$options.needle = t, f.$options.backwards = -1 == n,
|
||
f.find(e);
|
||
}
|
||
function i(e, t) {
|
||
return e.row == t.row && e.column == t.column;
|
||
}
|
||
function o(e) {
|
||
e.$multiselectOnSessionChange || (e.$onAddRange = e.$onAddRange.bind(e), e.$onRemoveRange = e.$onRemoveRange.bind(e),
|
||
e.$onMultiSelect = e.$onMultiSelect.bind(e), e.$onSingleSelect = e.$onSingleSelect.bind(e),
|
||
e.$multiselectOnSessionChange = t.onSessionChange.bind(e), e.$multiselectOnSessionChange(e),
|
||
e.on("changeSession", e.$multiselectOnSessionChange), e.on("mousedown", c), e.commands.addCommands(h.defaultCommands),
|
||
r(e));
|
||
}
|
||
function r(e) {
|
||
function t() {
|
||
i && (e.renderer.setMouseCursor(""), i = !1);
|
||
}
|
||
var n = e.textInput.getElement(), i = !1;
|
||
u.addListener(n, "keydown", function(n) {
|
||
18 != n.keyCode || n.ctrlKey || n.shiftKey || n.metaKey ? i && t() : i || (e.renderer.setMouseCursor("crosshair"),
|
||
i = !0);
|
||
}), u.addListener(n, "keyup", t), u.addListener(n, "blur", t);
|
||
}
|
||
var s = e("./range_list").RangeList, a = e("./range").Range, l = e("./selection").Selection, c = e("./mouse/multi_select_handler").onMouseDown, u = e("./lib/event"), d = e("./lib/lang"), h = e("./commands/multi_select_commands");
|
||
t.commands = h.defaultCommands.concat(h.multiSelectCommands);
|
||
var p = e("./search").Search, f = new p(), g = e("./edit_session").EditSession;
|
||
(function() {
|
||
this.getSelectionMarkers = function() {
|
||
return this.$selectionMarkers;
|
||
};
|
||
}).call(g.prototype), function() {
|
||
this.ranges = null, this.rangeList = null, this.addRange = function(e, t) {
|
||
if (e) {
|
||
if (!this.inMultiSelectMode && 0 == this.rangeCount) {
|
||
var n = this.toOrientedRange();
|
||
if (this.rangeList.add(n), this.rangeList.add(e), 2 != this.rangeList.ranges.length) return this.rangeList.removeAll(),
|
||
t || this.fromOrientedRange(e);
|
||
this.rangeList.removeAll(), this.rangeList.add(n), this.$onAddRange(n);
|
||
}
|
||
e.cursor || (e.cursor = e.end);
|
||
var i = this.rangeList.add(e);
|
||
return this.$onAddRange(e), i.length && this.$onRemoveRange(i), this.rangeCount > 1 && !this.inMultiSelectMode && (this._emit("multiSelect"),
|
||
this.inMultiSelectMode = !0, this.session.$undoSelect = !1, this.rangeList.attach(this.session)),
|
||
t || this.fromOrientedRange(e);
|
||
}
|
||
}, this.toSingleRange = function(e) {
|
||
e = e || this.ranges[0];
|
||
var t = this.rangeList.removeAll();
|
||
t.length && this.$onRemoveRange(t), e && this.fromOrientedRange(e);
|
||
}, this.substractPoint = function(e) {
|
||
var t = this.rangeList.substractPoint(e);
|
||
return t ? (this.$onRemoveRange(t), t[0]) : void 0;
|
||
}, this.mergeOverlappingRanges = function() {
|
||
var e = this.rangeList.merge();
|
||
e.length ? this.$onRemoveRange(e) : this.ranges[0] && this.fromOrientedRange(this.ranges[0]);
|
||
}, this.$onAddRange = function(e) {
|
||
this.rangeCount = this.rangeList.ranges.length, this.ranges.unshift(e), this._emit("addRange", {
|
||
range: e
|
||
});
|
||
}, this.$onRemoveRange = function(e) {
|
||
if (this.rangeCount = this.rangeList.ranges.length, 1 == this.rangeCount && this.inMultiSelectMode) {
|
||
var t = this.rangeList.ranges.pop();
|
||
e.push(t), this.rangeCount = 0;
|
||
}
|
||
for (var n = e.length; n--; ) {
|
||
var i = this.ranges.indexOf(e[n]);
|
||
this.ranges.splice(i, 1);
|
||
}
|
||
this._emit("removeRange", {
|
||
ranges: e
|
||
}), 0 == this.rangeCount && this.inMultiSelectMode && (this.inMultiSelectMode = !1,
|
||
this._emit("singleSelect"), this.session.$undoSelect = !0, this.rangeList.detach(this.session)),
|
||
t = t || this.ranges[0], t && !t.isEqual(this.getRange()) && this.fromOrientedRange(t);
|
||
}, this.$initRangeList = function() {
|
||
this.rangeList || (this.rangeList = new s(), this.ranges = [], this.rangeCount = 0);
|
||
}, this.getAllRanges = function() {
|
||
return this.rangeCount ? this.rangeList.ranges.concat() : [ this.getRange() ];
|
||
}, this.splitIntoLines = function() {
|
||
if (this.rangeCount > 1) {
|
||
var e = this.rangeList.ranges, t = e[e.length - 1], n = a.fromPoints(e[0].start, t.end);
|
||
this.toSingleRange(), this.setSelectionRange(n, t.cursor == t.start);
|
||
} else {
|
||
var n = this.getRange(), i = this.isBackwards(), o = n.start.row, r = n.end.row;
|
||
if (o == r) {
|
||
if (i) var s = n.end, l = n.start; else var s = n.start, l = n.end;
|
||
return this.addRange(a.fromPoints(l, l)), this.addRange(a.fromPoints(s, s)), void 0;
|
||
}
|
||
var c = [], u = this.getLineRange(o, !0);
|
||
u.start.column = n.start.column, c.push(u);
|
||
for (var d = o + 1; r > d; d++) c.push(this.getLineRange(d, !0));
|
||
u = this.getLineRange(r, !0), u.end.column = n.end.column, c.push(u), c.forEach(this.addRange, this);
|
||
}
|
||
}, this.toggleBlockSelection = function() {
|
||
if (this.rangeCount > 1) {
|
||
var e = this.rangeList.ranges, t = e[e.length - 1], n = a.fromPoints(e[0].start, t.end);
|
||
this.toSingleRange(), this.setSelectionRange(n, t.cursor == t.start);
|
||
} else {
|
||
var i = this.session.documentToScreenPosition(this.selectionLead), o = this.session.documentToScreenPosition(this.selectionAnchor), r = this.rectangularRangeBlock(i, o);
|
||
r.forEach(this.addRange, this);
|
||
}
|
||
}, this.rectangularRangeBlock = function(e, t, n) {
|
||
var o = [], r = e.column < t.column;
|
||
if (r) var s = e.column, l = t.column; else var s = t.column, l = e.column;
|
||
var c = e.row < t.row;
|
||
if (c) var u = e.row, d = t.row; else var u = t.row, d = e.row;
|
||
0 > s && (s = 0), 0 > u && (u = 0), u == d && (n = !0);
|
||
for (var h = u; d >= h; h++) {
|
||
var p = a.fromPoints(this.session.screenToDocumentPosition(h, s), this.session.screenToDocumentPosition(h, l));
|
||
if (p.isEmpty()) {
|
||
if (f && i(p.end, f)) break;
|
||
var f = p.end;
|
||
}
|
||
p.cursor = r ? p.start : p.end, o.push(p);
|
||
}
|
||
if (c && o.reverse(), !n) {
|
||
for (var g = o.length - 1; o[g].isEmpty() && g > 0; ) g--;
|
||
if (g > 0) for (var m = 0; o[m].isEmpty(); ) m++;
|
||
for (var v = g; v >= m; v--) o[v].isEmpty() && o.splice(v, 1);
|
||
}
|
||
return o;
|
||
};
|
||
}.call(l.prototype);
|
||
var m = e("./editor").Editor;
|
||
(function() {
|
||
this.updateSelectionMarkers = function() {
|
||
this.renderer.updateCursor(), this.renderer.updateBackMarkers();
|
||
}, this.addSelectionMarker = function(e) {
|
||
e.cursor || (e.cursor = e.end);
|
||
var t = this.getSelectionStyle();
|
||
return e.marker = this.session.addMarker(e, "ace_selection", t), this.session.$selectionMarkers.push(e),
|
||
this.session.selectionMarkerCount = this.session.$selectionMarkers.length, e;
|
||
}, this.removeSelectionMarker = function(e) {
|
||
if (e.marker) {
|
||
this.session.removeMarker(e.marker);
|
||
var t = this.session.$selectionMarkers.indexOf(e);
|
||
-1 != t && this.session.$selectionMarkers.splice(t, 1), this.session.selectionMarkerCount = this.session.$selectionMarkers.length;
|
||
}
|
||
}, this.removeSelectionMarkers = function(e) {
|
||
for (var t = this.session.$selectionMarkers, n = e.length; n--; ) {
|
||
var i = e[n];
|
||
if (i.marker) {
|
||
this.session.removeMarker(i.marker);
|
||
var o = t.indexOf(i);
|
||
-1 != o && t.splice(o, 1);
|
||
}
|
||
}
|
||
this.session.selectionMarkerCount = t.length;
|
||
}, this.$onAddRange = function(e) {
|
||
this.addSelectionMarker(e.range), this.renderer.updateCursor(), this.renderer.updateBackMarkers();
|
||
}, this.$onRemoveRange = function(e) {
|
||
this.removeSelectionMarkers(e.ranges), this.renderer.updateCursor(), this.renderer.updateBackMarkers();
|
||
}, this.$onMultiSelect = function() {
|
||
this.inMultiSelectMode || (this.inMultiSelectMode = !0, this.setStyle("ace_multiselect"),
|
||
this.keyBinding.addKeyboardHandler(h.keyboardHandler), this.commands.setDefaultHandler("exec", this.$onMultiSelectExec),
|
||
this.renderer.updateCursor(), this.renderer.updateBackMarkers());
|
||
}, this.$onSingleSelect = function() {
|
||
this.session.multiSelect.inVirtualMode || (this.inMultiSelectMode = !1, this.unsetStyle("ace_multiselect"),
|
||
this.keyBinding.removeKeyboardHandler(h.keyboardHandler), this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec),
|
||
this.renderer.updateCursor(), this.renderer.updateBackMarkers());
|
||
}, this.$onMultiSelectExec = function(e) {
|
||
var t = e.command, n = e.editor;
|
||
if (n.multiSelect) {
|
||
if (t.multiSelectAction) "forEach" == t.multiSelectAction ? i = n.forEachSelection(t, e.args) : "forEachLine" == t.multiSelectAction ? i = n.forEachSelection(t, e.args, !0) : "single" == t.multiSelectAction ? (n.exitMultiSelectMode(),
|
||
i = t.exec(n, e.args || {})) : i = t.multiSelectAction(n, e.args || {}); else {
|
||
var i = t.exec(n, e.args || {});
|
||
n.multiSelect.addRange(n.multiSelect.toOrientedRange()), n.multiSelect.mergeOverlappingRanges();
|
||
}
|
||
return i;
|
||
}
|
||
}, this.forEachSelection = function(e, t, n) {
|
||
if (!this.inVirtualSelectionMode) {
|
||
var i, o = this.session, r = this.selection, s = r.rangeList, a = r._eventRegistry;
|
||
r._eventRegistry = {};
|
||
var c = new l(o);
|
||
this.inVirtualSelectionMode = !0;
|
||
for (var u = s.ranges.length; u--; ) {
|
||
if (n) for (;u > 0 && s.ranges[u].start.row == s.ranges[u - 1].end.row; ) u--;
|
||
c.fromOrientedRange(s.ranges[u]), this.selection = o.selection = c;
|
||
var d = e.exec(this, t || {});
|
||
void 0 == !i && (i = d), c.toOrientedRange(s.ranges[u]);
|
||
}
|
||
c.detach(), this.selection = o.selection = r, this.inVirtualSelectionMode = !1,
|
||
r._eventRegistry = a, r.mergeOverlappingRanges();
|
||
var h = this.renderer.$scrollAnimation;
|
||
return this.onCursorChange(), this.onSelectionChange(), h && h.from == h.to && this.renderer.animateScrolling(h.from),
|
||
i;
|
||
}
|
||
}, this.exitMultiSelectMode = function() {
|
||
this.inMultiSelectMode && !this.inVirtualSelectionMode && this.multiSelect.toSingleRange();
|
||
}, this.getSelectedText = function() {
|
||
var e = "";
|
||
if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {
|
||
for (var t = this.multiSelect.rangeList.ranges, n = [], i = 0; i < t.length; i++) n.push(this.session.getTextRange(t[i]));
|
||
var o = this.session.getDocument().getNewLineCharacter();
|
||
e = n.join(o), e.length == (n.length - 1) * o.length && (e = "");
|
||
} else this.selection.isEmpty() || (e = this.session.getTextRange(this.getSelectionRange()));
|
||
return e;
|
||
}, this.onPaste = function(e) {
|
||
if (!this.$readOnly) {
|
||
if (this._signal("paste", e), !this.inMultiSelectMode || this.inVirtualSelectionMode) return this.insert(e);
|
||
var t = e.split(/\r\n|\r|\n/), n = this.selection.rangeList.ranges;
|
||
if (t.length > n.length || t.length < 2 || !t[1]) return this.commands.exec("insertstring", this, e);
|
||
for (var i = n.length; i--; ) {
|
||
var o = n[i];
|
||
o.isEmpty() || this.session.remove(o), this.session.insert(o.start, t[i]);
|
||
}
|
||
}
|
||
}, this.findAll = function(e, t, n) {
|
||
t = t || {}, t.needle = e || t.needle, this.$search.set(t);
|
||
var i = this.$search.findAll(this.session);
|
||
if (!i.length) return 0;
|
||
this.$blockScrolling += 1;
|
||
var o = this.multiSelect;
|
||
n || o.toSingleRange(i[0]);
|
||
for (var r = i.length; r--; ) o.addRange(i[r], !0);
|
||
return this.$blockScrolling -= 1, i.length;
|
||
}, this.selectMoreLines = function(e, t) {
|
||
var n = this.selection.toOrientedRange(), i = n.cursor == n.end, o = this.session.documentToScreenPosition(n.cursor);
|
||
this.selection.$desiredColumn && (o.column = this.selection.$desiredColumn);
|
||
var r = this.session.screenToDocumentPosition(o.row + e, o.column);
|
||
if (n.isEmpty()) var s = r; else var l = this.session.documentToScreenPosition(i ? n.end : n.start), s = this.session.screenToDocumentPosition(l.row + e, l.column);
|
||
if (i) {
|
||
var c = a.fromPoints(r, s);
|
||
c.cursor = c.start;
|
||
} else {
|
||
var c = a.fromPoints(s, r);
|
||
c.cursor = c.end;
|
||
}
|
||
if (c.desiredColumn = o.column, this.selection.inMultiSelectMode) {
|
||
if (t) var u = n.cursor;
|
||
} else this.selection.addRange(n);
|
||
this.selection.addRange(c), u && this.selection.substractPoint(u);
|
||
}, this.transposeSelections = function(e) {
|
||
for (var t = this.session, n = t.multiSelect, i = n.ranges, o = i.length; o--; ) {
|
||
var r = i[o];
|
||
if (r.isEmpty()) {
|
||
var s = t.getWordRange(r.start.row, r.start.column);
|
||
r.start.row = s.start.row, r.start.column = s.start.column, r.end.row = s.end.row,
|
||
r.end.column = s.end.column;
|
||
}
|
||
}
|
||
n.mergeOverlappingRanges();
|
||
for (var a = [], o = i.length; o--; ) {
|
||
var r = i[o];
|
||
a.unshift(t.getTextRange(r));
|
||
}
|
||
0 > e ? a.unshift(a.pop()) : a.push(a.shift());
|
||
for (var o = i.length; o--; ) {
|
||
var r = i[o], s = r.clone();
|
||
t.replace(r, a[o]), r.start.row = s.start.row, r.start.column = s.start.column;
|
||
}
|
||
}, this.selectMore = function(e, t) {
|
||
var i = this.session, o = i.multiSelect, r = o.toOrientedRange();
|
||
if (r.isEmpty()) {
|
||
var r = i.getWordRange(r.start.row, r.start.column);
|
||
return r.cursor = -1 == e ? r.start : r.end, this.multiSelect.addRange(r), void 0;
|
||
}
|
||
var s = i.getTextRange(r), a = n(i, s, e);
|
||
a && (a.cursor = -1 == e ? a.start : a.end, this.multiSelect.addRange(a)), t && this.multiSelect.substractPoint(r.cursor);
|
||
}, this.alignCursors = function() {
|
||
var e = this.session, t = e.multiSelect, n = t.ranges;
|
||
if (n.length) {
|
||
var i = -1, o = n.filter(function(e) {
|
||
return e.cursor.row == i ? !0 : (i = e.cursor.row, void 0);
|
||
});
|
||
t.$onRemoveRange(o);
|
||
var r = 0, s = 1/0, l = n.map(function(t) {
|
||
var n = t.cursor, i = e.getLine(n.row), o = i.substr(n.column).search(/\S/g);
|
||
return -1 == o && (o = 0), n.column > r && (r = n.column), s > o && (s = o), o;
|
||
});
|
||
n.forEach(function(t, n) {
|
||
var i = t.cursor, o = r - i.column, c = l[n] - s;
|
||
o > c ? e.insert(i, d.stringRepeat(" ", o - c)) : e.remove(new a(i.row, i.column, i.row, i.column - o + c)),
|
||
t.start.column = t.end.column = r, t.start.row = t.end.row = i.row, t.cursor = t.end;
|
||
}), t.fromOrientedRange(n[0]), this.renderer.updateCursor(), this.renderer.updateBackMarkers();
|
||
} else {
|
||
var c = this.selection.getRange(), u = c.start.row, h = c.end.row, p = this.session.doc.removeLines(u, h);
|
||
p = this.$reAlignText(p), this.session.doc.insertLines(u, p), c.start.column = 0,
|
||
c.end.column = p[p.length - 1].length, this.selection.setRange(c);
|
||
}
|
||
}, this.$reAlignText = function(e) {
|
||
function t(e) {
|
||
return d.stringRepeat(" ", e);
|
||
}
|
||
function n(e) {
|
||
return e[2] ? t(r) + e[2] + t(s - e[2].length + a) + e[4].replace(/^([=:])\s+/, "$1 ") : e[0];
|
||
}
|
||
function i(e) {
|
||
return e[2] ? t(r + s - e[2].length) + e[2] + t(a, " ") + e[4].replace(/^([=:])\s+/, "$1 ") : e[0];
|
||
}
|
||
function o(e) {
|
||
return e[2] ? t(r) + e[2] + t(a) + e[4].replace(/^([=:])\s+/, "$1 ") : e[0];
|
||
}
|
||
var r, s, a, l = !0, c = !0;
|
||
return e.map(function(e) {
|
||
var t = e.match(/(\s*)(.*?)(\s*)([=:].*)/);
|
||
return t ? null == r ? (r = t[1].length, s = t[2].length, a = t[3].length, t) : (r + s + a != t[1].length + t[2].length + t[3].length && (c = !1),
|
||
r != t[1].length && (l = !1), r > t[1].length && (r = t[1].length), s < t[2].length && (s = t[2].length),
|
||
a > t[3].length && (a = t[3].length), t) : [ e ];
|
||
}).map(l ? c ? i : n : o);
|
||
};
|
||
}).call(m.prototype), t.onSessionChange = function(e) {
|
||
var t = e.session;
|
||
t.multiSelect || (t.$selectionMarkers = [], t.selection.$initRangeList(), t.multiSelect = t.selection),
|
||
this.multiSelect = t.multiSelect;
|
||
var n = e.oldSession;
|
||
n && (n.multiSelect.removeEventListener("addRange", this.$onAddRange), n.multiSelect.removeEventListener("removeRange", this.$onRemoveRange),
|
||
n.multiSelect.removeEventListener("multiSelect", this.$onMultiSelect), n.multiSelect.removeEventListener("singleSelect", this.$onSingleSelect)),
|
||
t.multiSelect.on("addRange", this.$onAddRange), t.multiSelect.on("removeRange", this.$onRemoveRange),
|
||
t.multiSelect.on("multiSelect", this.$onMultiSelect), t.multiSelect.on("singleSelect", this.$onSingleSelect),
|
||
this.inMultiSelectMode != t.selection.inMultiSelectMode && (t.selection.inMultiSelectMode ? this.$onMultiSelect() : this.$onSingleSelect());
|
||
}, t.MultiSelect = o, e("./config").defineOptions(m.prototype, "editor", {
|
||
enableMultiselect: {
|
||
set: function(e) {
|
||
o(this), e ? (this.on("changeSession", this.$multiselectOnSessionChange), this.on("mousedown", c)) : (this.off("changeSession", this.$multiselectOnSessionChange),
|
||
this.off("mousedown", c));
|
||
},
|
||
value: !0
|
||
}
|
||
});
|
||
}), define("ace/worker/worker_client", [ "require", "exports", "module", "../lib/oop", "../lib/event_emitter", "../config" ], function(e, t) {
|
||
var n = e("../lib/oop"), i = e("../lib/event_emitter").EventEmitter, o = e("../config"), r = function(t, n, i) {
|
||
this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this), this.changeListener = this.changeListener.bind(this),
|
||
this.onMessage = this.onMessage.bind(this), this.onError = this.onError.bind(this),
|
||
e.nameToUrl && !e.toUrl && (e.toUrl = e.nameToUrl);
|
||
var r;
|
||
if (o.get("packaged") || !e.toUrl) r = o.moduleUrl(n, "worker"); else {
|
||
var s = this.$normalizePath;
|
||
r = s(e.toUrl("ace/worker/worker.js", null, "_"));
|
||
var a = {};
|
||
t.forEach(function(t) {
|
||
a[t] = s(e.toUrl(t, null, "_").replace(/(\.js)?(\?.*)?$/, ""));
|
||
});
|
||
}
|
||
this.$worker = new Worker(r), this.$worker.postMessage({
|
||
init: !0,
|
||
tlns: a,
|
||
module: n,
|
||
classname: i
|
||
}), this.callbackId = 1, this.callbacks = {}, this.$worker.onerror = this.onError,
|
||
this.$worker.onmessage = this.onMessage;
|
||
};
|
||
(function() {
|
||
n.implement(this, i), this.onError = function(e) {
|
||
throw window.console && console.log && console.log(e), e;
|
||
}, this.onMessage = function(e) {
|
||
var t = e.data;
|
||
switch (t.type) {
|
||
case "log":
|
||
window.console && console.log && console.log.apply(console, t.data);
|
||
break;
|
||
|
||
case "event":
|
||
this._emit(t.name, {
|
||
data: t.data
|
||
});
|
||
break;
|
||
|
||
case "call":
|
||
var n = this.callbacks[t.id];
|
||
n && (n(t.data), delete this.callbacks[t.id]);
|
||
}
|
||
}, this.$normalizePath = function(e) {
|
||
return location.host ? (e = e.replace(/^[a-z]+:\/\/[^\/]+/, ""), e = location.protocol + "//" + location.host + ("/" == e.charAt(0) ? "" : location.pathname.replace(/\/[^\/]*$/, "")) + "/" + e.replace(/^[\/]+/, "")) : e;
|
||
}, this.terminate = function() {
|
||
this._emit("terminate", {}), this.deltaQueue = null, this.$worker.terminate(), this.$worker = null,
|
||
this.$doc.removeEventListener("change", this.changeListener), this.$doc = null;
|
||
}, this.send = function(e, t) {
|
||
this.$worker.postMessage({
|
||
command: e,
|
||
args: t
|
||
});
|
||
}, this.call = function(e, t, n) {
|
||
if (n) {
|
||
var i = this.callbackId++;
|
||
this.callbacks[i] = n, t.push(i);
|
||
}
|
||
this.send(e, t);
|
||
}, this.emit = function(e, t) {
|
||
try {
|
||
this.$worker.postMessage({
|
||
event: e,
|
||
data: {
|
||
data: t.data
|
||
}
|
||
});
|
||
} catch (n) {}
|
||
}, this.attachToDocument = function(e) {
|
||
this.$doc && this.terminate(), this.$doc = e, this.call("setValue", [ e.getValue() ]),
|
||
e.on("change", this.changeListener);
|
||
}, this.changeListener = function(e) {
|
||
this.deltaQueue ? this.deltaQueue.push(e.data) : (this.deltaQueue = [ e.data ],
|
||
setTimeout(this.$sendDeltaQueue, 1));
|
||
}, this.$sendDeltaQueue = function() {
|
||
var e = this.deltaQueue;
|
||
e && (this.deltaQueue = null, e.length > 20 && e.length > this.$doc.getLength() >> 1 ? this.call("setValue", [ this.$doc.getValue() ]) : this.emit("change", {
|
||
data: e
|
||
}));
|
||
};
|
||
}).call(r.prototype);
|
||
var s = function(e, t, n) {
|
||
this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this), this.changeListener = this.changeListener.bind(this),
|
||
this.callbackId = 1, this.callbacks = {}, this.messageBuffer = [];
|
||
var r = null, s = Object.create(i), a = this;
|
||
this.$worker = {}, this.$worker.terminate = function() {}, this.$worker.postMessage = function(e) {
|
||
a.messageBuffer.push(e), r && setTimeout(l);
|
||
};
|
||
var l = function() {
|
||
var e = a.messageBuffer.shift();
|
||
e.command ? r[e.command].apply(r, e.args) : e.event && s._emit(e.event, e.data);
|
||
};
|
||
s.postMessage = function(e) {
|
||
a.onMessage({
|
||
data: e
|
||
});
|
||
}, s.callback = function(e, t) {
|
||
this.postMessage({
|
||
type: "call",
|
||
id: t,
|
||
data: e
|
||
});
|
||
}, s.emit = function(e, t) {
|
||
this.postMessage({
|
||
type: "event",
|
||
name: e,
|
||
data: t
|
||
});
|
||
}, o.loadModule([ "worker", t ], function(e) {
|
||
for (r = new e[n](s); a.messageBuffer.length; ) l();
|
||
});
|
||
};
|
||
s.prototype = r.prototype, t.UIWorkerClient = s, t.WorkerClient = r;
|
||
}), define("ace/placeholder", [ "require", "exports", "module", "./range", "./lib/event_emitter", "./lib/oop" ], function(e, t) {
|
||
var n = e("./range").Range, i = e("./lib/event_emitter").EventEmitter, o = e("./lib/oop"), r = function(e, t, n, i, o, r) {
|
||
var s = this;
|
||
this.length = t, this.session = e, this.doc = e.getDocument(), this.mainClass = o,
|
||
this.othersClass = r, this.$onUpdate = this.onUpdate.bind(this), this.doc.on("change", this.$onUpdate),
|
||
this.$others = i, this.$onCursorChange = function() {
|
||
setTimeout(function() {
|
||
s.onCursorChange();
|
||
});
|
||
}, this.$pos = n;
|
||
var a = e.getUndoManager().$undoStack || e.getUndoManager().$undostack || {
|
||
length: -1
|
||
};
|
||
this.$undoStackDepth = a.length, this.setup(), e.selection.on("changeCursor", this.$onCursorChange);
|
||
};
|
||
(function() {
|
||
o.implement(this, i), this.setup = function() {
|
||
var e = this, t = this.doc, i = this.session, o = this.$pos;
|
||
this.pos = t.createAnchor(o.row, o.column), this.markerId = i.addMarker(new n(o.row, o.column, o.row, o.column + this.length), this.mainClass, null, !1),
|
||
this.pos.on("change", function(t) {
|
||
i.removeMarker(e.markerId), e.markerId = i.addMarker(new n(t.value.row, t.value.column, t.value.row, t.value.column + e.length), e.mainClass, null, !1);
|
||
}), this.others = [], this.$others.forEach(function(n) {
|
||
var i = t.createAnchor(n.row, n.column);
|
||
e.others.push(i);
|
||
}), i.setUndoSelect(!1);
|
||
}, this.showOtherMarkers = function() {
|
||
if (!this.othersActive) {
|
||
var e = this.session, t = this;
|
||
this.othersActive = !0, this.others.forEach(function(i) {
|
||
i.markerId = e.addMarker(new n(i.row, i.column, i.row, i.column + t.length), t.othersClass, null, !1),
|
||
i.on("change", function(o) {
|
||
e.removeMarker(i.markerId), i.markerId = e.addMarker(new n(o.value.row, o.value.column, o.value.row, o.value.column + t.length), t.othersClass, null, !1);
|
||
});
|
||
});
|
||
}
|
||
}, this.hideOtherMarkers = function() {
|
||
if (this.othersActive) {
|
||
this.othersActive = !1;
|
||
for (var e = 0; e < this.others.length; e++) this.session.removeMarker(this.others[e].markerId);
|
||
}
|
||
}, this.onUpdate = function(e) {
|
||
var t = e.data, i = t.range;
|
||
if (i.start.row === i.end.row && i.start.row === this.pos.row && !this.$updating) {
|
||
this.$updating = !0;
|
||
var o = "insertText" === t.action ? i.end.column - i.start.column : i.start.column - i.end.column;
|
||
if (i.start.column >= this.pos.column && i.start.column <= this.pos.column + this.length + 1) {
|
||
var r = i.start.column - this.pos.column;
|
||
if (this.length += o, !this.session.$fromUndo) {
|
||
if ("insertText" === t.action) for (var s = this.others.length - 1; s >= 0; s--) {
|
||
var a = this.others[s], l = {
|
||
row: a.row,
|
||
column: a.column + r
|
||
};
|
||
a.row === i.start.row && i.start.column < a.column && (l.column += o), this.doc.insert(l, t.text);
|
||
} else if ("removeText" === t.action) for (var s = this.others.length - 1; s >= 0; s--) {
|
||
var a = this.others[s], l = {
|
||
row: a.row,
|
||
column: a.column + r
|
||
};
|
||
a.row === i.start.row && i.start.column < a.column && (l.column += o), this.doc.remove(new n(l.row, l.column, l.row, l.column - o));
|
||
}
|
||
i.start.column === this.pos.column && "insertText" === t.action ? setTimeout(function() {
|
||
this.pos.setPosition(this.pos.row, this.pos.column - o);
|
||
for (var e = 0; e < this.others.length; e++) {
|
||
var t = this.others[e], n = {
|
||
row: t.row,
|
||
column: t.column - o
|
||
};
|
||
t.row === i.start.row && i.start.column < t.column && (n.column += o), t.setPosition(n.row, n.column);
|
||
}
|
||
}.bind(this), 0) : i.start.column === this.pos.column && "removeText" === t.action && setTimeout(function() {
|
||
for (var e = 0; e < this.others.length; e++) {
|
||
var t = this.others[e];
|
||
t.row === i.start.row && i.start.column < t.column && t.setPosition(t.row, t.column - o);
|
||
}
|
||
}.bind(this), 0);
|
||
}
|
||
this.pos._emit("change", {
|
||
value: this.pos
|
||
});
|
||
for (var s = 0; s < this.others.length; s++) this.others[s]._emit("change", {
|
||
value: this.others[s]
|
||
});
|
||
}
|
||
this.$updating = !1;
|
||
}
|
||
}, this.onCursorChange = function(e) {
|
||
if (!this.$updating) {
|
||
var t = this.session.selection.getCursor();
|
||
t.row === this.pos.row && t.column >= this.pos.column && t.column <= this.pos.column + this.length ? (this.showOtherMarkers(),
|
||
this._emit("cursorEnter", e)) : (this.hideOtherMarkers(), this._emit("cursorLeave", e));
|
||
}
|
||
}, this.detach = function() {
|
||
this.session.removeMarker(this.markerId), this.hideOtherMarkers(), this.doc.removeEventListener("change", this.$onUpdate),
|
||
this.session.selection.removeEventListener("changeCursor", this.$onCursorChange),
|
||
this.pos.detach();
|
||
for (var e = 0; e < this.others.length; e++) this.others[e].detach();
|
||
this.session.setUndoSelect(!0);
|
||
}, this.cancel = function() {
|
||
if (-1 === this.$undoStackDepth) throw Error("Canceling placeholders only supported with undo manager attached to session.");
|
||
for (var e = this.session.getUndoManager(), t = (e.$undoStack || e.$undostack).length - this.$undoStackDepth, n = 0; t > n; n++) e.undo(!0);
|
||
};
|
||
}).call(r.prototype), t.PlaceHolder = r;
|
||
}), define("ace/mode/folding/fold_mode", [ "require", "exports", "module", "../../range" ], function(e, t) {
|
||
var n = e("../../range").Range, i = t.FoldMode = function() {};
|
||
(function() {
|
||
this.foldingStartMarker = null, this.foldingStopMarker = null, this.getFoldWidget = function(e, t, n) {
|
||
var i = e.getLine(n);
|
||
return this.foldingStartMarker.test(i) ? "start" : "markbeginend" == t && this.foldingStopMarker && this.foldingStopMarker.test(i) ? "end" : "";
|
||
}, this.getFoldWidgetRange = function() {
|
||
return null;
|
||
}, this.indentationBlock = function(e, t, i) {
|
||
var o = /\S/, r = e.getLine(t), s = r.search(o);
|
||
if (-1 != s) {
|
||
for (var a = i || r.length, l = e.getLength(), c = t, u = t; ++t < l; ) {
|
||
var d = e.getLine(t).search(o);
|
||
if (-1 != d) {
|
||
if (s >= d) break;
|
||
u = t;
|
||
}
|
||
}
|
||
if (u > c) {
|
||
var h = e.getLine(u).length;
|
||
return new n(c, a, u, h);
|
||
}
|
||
}
|
||
}, this.openingBracketBlock = function(e, t, i, o, r) {
|
||
var s = {
|
||
row: i,
|
||
column: o + 1
|
||
}, a = e.$findClosingBracket(t, s, r);
|
||
if (a) {
|
||
var l = e.foldWidgets[a.row];
|
||
return null == l && (l = this.getFoldWidget(e, a.row)), "start" == l && a.row > s.row && (a.row--,
|
||
a.column = e.getLine(a.row).length), n.fromPoints(s, a);
|
||
}
|
||
}, this.closingBracketBlock = function(e, t, i, o) {
|
||
var r = {
|
||
row: i,
|
||
column: o
|
||
}, s = e.$findOpeningBracket(t, r);
|
||
return s ? (s.column++, r.column--, n.fromPoints(s, r)) : void 0;
|
||
};
|
||
}).call(i.prototype);
|
||
}), define("ace/theme/textmate", [ "require", "exports", "module", "../requirejs/text!./textmate.css", "../lib/dom" ], function(e, t) {
|
||
t.isDark = !1, t.cssClass = "ace-tm", t.cssText = e("../requirejs/text!./textmate.css");
|
||
var n = e("../lib/dom");
|
||
n.importCssString(t.cssText, t.cssClass);
|
||
}), define("ace/ace", [ "require", "exports", "module", "./lib/fixoldbrowsers", "./lib/dom", "./lib/event", "./editor", "./edit_session", "./undomanager", "./virtual_renderer", "./multi_select", "./worker/worker_client", "./keyboard/hash_handler", "./placeholder", "./mode/folding/fold_mode", "./theme/textmate", "./config" ], function(e, t) {
|
||
e("./lib/fixoldbrowsers");
|
||
var n = e("./lib/dom"), i = e("./lib/event"), o = e("./editor").Editor, r = e("./edit_session").EditSession, s = e("./undomanager").UndoManager, a = e("./virtual_renderer").VirtualRenderer, l = e("./multi_select").MultiSelect;
|
||
e("./worker/worker_client"), e("./keyboard/hash_handler"), e("./placeholder"), e("./mode/folding/fold_mode"),
|
||
e("./theme/textmate"), t.config = e("./config"), t.require = e, t.edit = function(e) {
|
||
if ("string" == typeof e) {
|
||
var r = e, e = document.getElementById(r);
|
||
if (!e) throw new Error("ace.edit can't find div #" + r);
|
||
}
|
||
if (e.env && e.env.editor instanceof o) return e.env.editor;
|
||
var s = t.createEditSession(n.getInnerText(e));
|
||
e.innerHTML = "";
|
||
var c = new o(new a(e));
|
||
new l(c), c.setSession(s);
|
||
var u = {
|
||
document: s,
|
||
editor: c,
|
||
onResize: c.resize.bind(c, null)
|
||
};
|
||
return i.addListener(window, "resize", u.onResize), c.on("destroy", function() {
|
||
i.removeListener(window, "resize", u.onResize);
|
||
}), e.env = c.env = u, c;
|
||
}, t.createEditSession = function(e, t) {
|
||
var n = new r(e, t);
|
||
return n.setUndoManager(new s()), n;
|
||
}, t.EditSession = r, t.UndoManager = s;
|
||
}), define("ace", [ "ace/ace" ], function(e) {
|
||
return e;
|
||
}), define("constants", [], function() {
|
||
var e = {};
|
||
return e.VERSION = "3.1.2", e.MAIN_URL = "https://stackedit.io/", e.GOOGLE_ANALYTICS_ACCOUNT_ID = "UA-39556145-1",
|
||
e.GOOGLE_API_KEY = "AIzaSyAeCU8CGcSkn0z9js6iocHuPBX4f_mMWkw", e.GOOGLE_DRIVE_APP_ID = "241271498917",
|
||
e.DROPBOX_APP_KEY = "lq6mwopab8wskas", e.DROPBOX_APP_SECRET = "851fgnucpezy84t",
|
||
e.DROPBOX_RESTRICTED_APP_KEY = "sw0hlixhr8q1xk0", e.DROPBOX_RESTRICTED_APP_SECRET = "1r808p2xygs6lbg",
|
||
e.BITLY_ACCESS_TOKEN = "317e033bfd48cf31155a68a536b1860013b09c4c", e.DEFAULT_FILE_TITLE = "Title",
|
||
e.DEFAULT_FOLDER_NAME = "New folder", e.GDRIVE_DEFAULT_FILE_TITLE = "New Markdown document",
|
||
e.EDITOR_DEFAULT_PADDING = 15, e.CHECK_ONLINE_PERIOD = 12e4, e.AJAX_TIMEOUT = 3e4,
|
||
e.ASYNC_TASK_DEFAULT_TIMEOUT = 6e4, e.ASYNC_TASK_LONG_TIMEOUT = 18e4, e.USER_IDLE_THRESHOLD = 3e5,
|
||
e.IMPORT_FILE_MAX_CONTENT_SIZE = 1e5, e.IMPORT_IMG_MAX_CONTENT_SIZE = 1e7, e.TEMPORARY_FILE_INDEX = "file.tempIndex",
|
||
e.WELCOME_DOCUMENT_TITLE = "Welcome document", e.DOWNLOAD_PROXY_URL = "https://stackedit-download-proxy.herokuapp.com/",
|
||
e.PICASA_PROXY_URL = "https://stackedit-picasa-proxy.herokuapp.com/", e.SSH_PROXY_URL = "https://stackedit-ssh-proxy.herokuapp.com/",
|
||
e.HTMLTOPDF_URL = "https://stackedit-htmltopdf.herokuapp.com/", e.BASE_URL = "http://localhost/",
|
||
e.GOOGLE_CLIENT_ID = "241271498917-lev37kef013q85avc91am1gccg5g8lrb.apps.googleusercontent.com",
|
||
e.GITHUB_CLIENT_ID = "e47fef6055344579799d", e.GATEKEEPER_URL = "https://stackedit-gatekeeper-localhost.herokuapp.com/",
|
||
e.TUMBLR_PROXY_URL = "https://stackedit-tumblr-proxy-local.herokuapp.com/", e.WORDPRESS_CLIENT_ID = "23361",
|
||
e.WORDPRESS_PROXY_URL = "https://stackedit-io-wordpress-proxy.herokuapp.com/", 0 === location.hostname.indexOf("stackedit.io") ? (e.BASE_URL = e.MAIN_URL,
|
||
e.GOOGLE_CLIENT_ID = "241271498917-t4t7d07qis7oc0ahaskbif3ft6tk63cd.apps.googleusercontent.com",
|
||
e.GITHUB_CLIENT_ID = "710fc67886ab1ae8fee6", e.GATEKEEPER_URL = "https://stackedit-io-gatekeeper.herokuapp.com/",
|
||
e.TUMBLR_PROXY_URL = "https://stackedit-io-tumblr-proxy.herokuapp.com/") : 0 === location.hostname.indexOf("benweet.github.io") ? (e.BASE_URL = "http://benweet.github.io/stackedit/",
|
||
e.GOOGLE_CLIENT_ID = "241271498917-jpto9lls9fqnem1e4h6ppds9uob8rpvu.apps.googleusercontent.com",
|
||
e.GITHUB_CLIENT_ID = "fa0d09514da8377ee32e", e.GATEKEEPER_URL = "https://stackedit-gatekeeper.herokuapp.com/",
|
||
e.TUMBLR_PROXY_URL = "https://stackedit-tumblr-proxy.herokuapp.com/", e.WORDPRESS_CLIENT_ID = "3185",
|
||
e.WORDPRESS_PROXY_URL = "https://stackedit-wordpress-proxy.herokuapp.com/") : 0 === location.hostname.indexOf("benweet.insomnia247.nl") && (e.BASE_URL = "http://benweet.insomnia247.nl/stackedit/",
|
||
e.GOOGLE_CLIENT_ID = "241271498917-52hae7a08hv7ltenv7km8h7lghno9sk3.apps.googleusercontent.com",
|
||
e.GITHUB_CLIENT_ID = "d2943d6074b2d9c4a830", e.GATEKEEPER_URL = "https://stackedit-gatekeeper-insomnia.herokuapp.com/",
|
||
e.TUMBLR_PROXY_URL = "https://stackedit-tumblr-proxy-beta.herokuapp.com/"), e.THEME_LIST = {
|
||
"default": "Default",
|
||
gray: "Gray",
|
||
night: "Night",
|
||
school: "School"
|
||
}, e;
|
||
}), define("storage", [ "underscore" ], function(e) {
|
||
function t(t) {
|
||
try {
|
||
return e.compact(localStorage[t].split(";"));
|
||
} catch (n) {
|
||
return localStorage[t] = ";", [];
|
||
}
|
||
}
|
||
var n, i, o = t("file.list"), r = localStorage.version;
|
||
if (void 0 === r && (localStorage.removeItem("sync.queue"), localStorage.removeItem("sync.current"),
|
||
localStorage.removeItem("file.counter"), e.each(o, function(n) {
|
||
localStorage[n + ".publish"] = ";";
|
||
var i = t(n + ".sync");
|
||
e.each(i, function(e) {
|
||
localStorage[e + ".contentCRC"] = "0", void 0 !== localStorage[e + ".etag"] && (localStorage[e + ".titleCRC"] = "0");
|
||
});
|
||
}), r = "v1"), "v1" == r) {
|
||
var s = localStorage["sync.gdrive.lastChangeId"];
|
||
s && (localStorage["gdrive.lastChangeId"] = s, localStorage.removeItem("sync.gdrive.lastChangeId"));
|
||
var a = localStorage["sync.dropbox.lastChangeId"];
|
||
a && (localStorage["dropbox.lastChangeId"] = a, localStorage.removeItem("sync.dropbox.lastChangeId"));
|
||
var l = "gdrive", c = "dropbox", u = "sync." + l + ".", d = "sync." + c + ".";
|
||
e.each(o, function(n) {
|
||
var i = t(n + ".sync");
|
||
e.each(i, function(e) {
|
||
var t = {};
|
||
0 === e.indexOf(u) ? (t.provider = l, t.id = e.substring(u.length), t.etag = localStorage[e + ".etag"],
|
||
t.contentCRC = localStorage[e + ".contentCRC"], t.titleCRC = localStorage[e + ".titleCRC"]) : 0 === e.indexOf(d) && (t.provider = c,
|
||
t.path = decodeURIComponent(e.substring(d.length)), t.version = localStorage[e + ".version"],
|
||
t.contentCRC = localStorage[e + ".contentCRC"]), localStorage[e] = JSON.stringify(t),
|
||
localStorage.removeItem(e + ".etag"), localStorage.removeItem(e + ".version"), localStorage.removeItem(e + ".contentCRC"),
|
||
localStorage.removeItem(e + ".titleCRC");
|
||
});
|
||
}), r = "v2";
|
||
}
|
||
return "v2" == r && (e.each(o, function(t) {
|
||
e.has(localStorage, t + ".sync") || (localStorage.removeItem(t + ".title"), localStorage.removeItem(t + ".publish"),
|
||
localStorage.removeItem(t + ".content"), localStorage["file.list"].replace(";" + t + ";", ";"));
|
||
}), r = "v3"), "v3" == r && (n = localStorage["file.current"], void 0 !== n && -1 === localStorage["file.list"].indexOf(";" + n + ";") && localStorage.removeItem("file.current"),
|
||
r = "v4"), "v4" == r && (localStorage.removeItem("githubToken"), r = "v5"), "v5" == r && (e.each(o, function(n) {
|
||
var i = t(n + ".publish");
|
||
e.each(i, function(e) {
|
||
var t = JSON.parse(localStorage[e]);
|
||
"gdrive" == t.provider && (t.id = t.fileId, t.fileId = void 0, localStorage[e] = JSON.stringify(t));
|
||
});
|
||
}), r = "v6"), "v6" == r && (n = localStorage["file.current"], void 0 !== n && (localStorage[n + ".selectTime"] = new Date().getTime(),
|
||
localStorage.removeItem("file.current")), r = "v7"), "v7" == r && (e.each(e.keys(localStorage), function(t) {
|
||
var n = t.match(/(file\.\S+\.)\S+/);
|
||
n && (e.has(localStorage, n[1] + "title") || localStorage.removeItem(t));
|
||
}), r = "v8"), "v8" == r && (e.each(e.keys(localStorage), function(e) {
|
||
var t = e.match(/file\.\S+\.(editorEnd|editorStart)/);
|
||
t && localStorage.removeItem(e);
|
||
}), r = "v9"), "v9" == r && (e.has(localStorage, "settings") && (i = JSON.parse(localStorage.settings),
|
||
delete i.editorFontFamily, delete i.editorFontSize, i.template && (i.template = i.template.replace("http://benweet.github.io/stackedit/css/main-min.css", "http://benweet.github.io/stackedit/res-min/themes/default.css")),
|
||
localStorage.settings = JSON.stringify(i)), r = "v10"), "v10" == r && (e.has(localStorage, "settings") && (i = JSON.parse(localStorage.settings),
|
||
((i.extensionSettings || {}).markdownExtra || {}).extensions && i.extensionSettings.markdownExtra.extensions.push("smartypants"),
|
||
"http://stackedit-ssh-proxy.herokuapp.com/" == i.sshProxy && (i.sshProxy = "https://stackedit-ssh-proxy.herokuapp.com/"),
|
||
i.template && (i.template = i.template.replace("http://benweet.github.io/stackedit/lib/", "https://stackedit.io/libs/")),
|
||
i.template && (i.template = i.template.replace("http://benweet.github.io/stackedit/", "https://stackedit.io/")),
|
||
i.pdfTemplate && (i.pdfTemplate = i.pdfTemplate.replace("http://benweet.github.io/stackedit/lib/", "https://stackedit.io/libs/")),
|
||
i.pdfTemplate && (i.pdfTemplate = i.pdfTemplate.replace("http://benweet.github.io/stackedit/", "https://stackedit.io/")),
|
||
i.defaultContent && (i.defaultContent = i.defaultContent.replace("http://benweet.github.io/stackedit/", "https://stackedit.io/")),
|
||
i.commitMsg && (i.commitMsg = i.commitMsg.replace("http://benweet.github.io/stackedit/", "https://stackedit.io/")),
|
||
localStorage.settings = JSON.stringify(i)), r = "v11"), "v11" == r && (localStorage.removeItem("theme"),
|
||
e.has(localStorage, "settings") && (i = JSON.parse(localStorage.settings), delete i.editorFontFamily,
|
||
delete i.editorFontSize, i.template && (i.template = i.template.replace("https://stackedit.io/res-min/themes/default.css", "https://stackedit.io/res-min/themes/base.css")),
|
||
i.pdfTemplate && (i.pdfTemplate = i.pdfTemplate.replace("https://stackedit.io/res-min/themes/default.css", "https://stackedit.io/res-min/themes/base.css")),
|
||
localStorage.settings = JSON.stringify(i)), r = "v12"), ("v12" == r || "v13" == r) && (e.has(localStorage, "settings") && (i = JSON.parse(localStorage.settings),
|
||
delete i.editorFontFamily, localStorage.settings = JSON.stringify(i)), r = "v14"),
|
||
"v14" == r && (e.has(localStorage, "settings") && (i = JSON.parse(localStorage.settings),
|
||
i.template && (i.template = i.template.replace("https://stackedit.io/res-min/themes/default.css", "https://stackedit.io/res-min/themes/base.css")),
|
||
i.pdfTemplate && (i.pdfTemplate = i.pdfTemplate.replace("https://stackedit.io/res-min/themes/default.css", "https://stackedit.io/res-min/themes/base.css")),
|
||
localStorage.settings = JSON.stringify(i)), r = "v15"), "v15" == r && (localStorage.removeItem("gdrivePermissions"),
|
||
e.has(localStorage, "gdrive.lastChangeId") && (localStorage["google.gdrive0.gdrive.lastChangeId"] = localStorage["gdrive.lastChangeId"],
|
||
localStorage.removeItem("gdrive.lastChangeId")), e.has(localStorage, "settings") && (i = JSON.parse(localStorage.settings),
|
||
((i.extensionSettings || {}).markdownExtra || {}).extensions && (i.extensionSettings.markdownExtra.extensions.push("newlines"),
|
||
i.extensionSettings.markdownExtra.extensions.push("strikethrough")), localStorage.settings = JSON.stringify(i)),
|
||
r = "v16"), localStorage.version = r, localStorage;
|
||
}), function(e) {
|
||
var t;
|
||
"function" == typeof define ? define("xregexp", e) : "object" == typeof exports ? (t = e(),
|
||
("object" == typeof module ? module.exports = t : exports).XRegExp = t) : XRegExp = e();
|
||
}(function() {
|
||
var e = function(e) {
|
||
function t(e, t, n) {
|
||
var i;
|
||
if (n) if (e.__proto__) e.__proto__ = m.prototype; else for (i in m.prototype) e[i] = m.prototype[i];
|
||
return e[b] = {
|
||
captureNames: t
|
||
}, e;
|
||
}
|
||
function n(e) {
|
||
return w.replace.call(e, /([\s\S])(?=[\s\S]*\1)/g, "");
|
||
}
|
||
function i(e, i) {
|
||
if (!m.isRegExp(e)) throw new TypeError("Type RegExp expected");
|
||
var o = w.exec.call(/\/([a-z]*)$/i, String(e))[1];
|
||
return i = i || {}, i.add && (o = n(o + i.add)), i.remove && (o = w.replace.call(o, new RegExp("[" + i.remove + "]+", "g"), "")),
|
||
e = t(new RegExp(e.source, o), r(e) ? e[b].captureNames.slice(0) : null, i.addProto);
|
||
}
|
||
function o() {
|
||
return {
|
||
captureNames: null
|
||
};
|
||
}
|
||
function r(e) {
|
||
return !(!e[b] || !e[b].captureNames);
|
||
}
|
||
function s(e, t) {
|
||
if (Array.prototype.indexOf) return e.indexOf(t);
|
||
var n, i = e.length;
|
||
for (n = 0; i > n; ++n) if (e[n] === t) return n;
|
||
return -1;
|
||
}
|
||
function a(e, t) {
|
||
return $.call(e) === "[object " + t + "]";
|
||
}
|
||
function l(e, t, n) {
|
||
return w.test.call(n.indexOf("x") > -1 ? /^(?:\s+|#.*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/ : /^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/, e.slice(t));
|
||
}
|
||
function c(e, t) {
|
||
var i;
|
||
if (n(t) !== t) throw new SyntaxError("Invalid duplicate regex flag " + t);
|
||
for (e = w.replace.call(e, /^\(\?([\w$]+)\)/, function(e, i) {
|
||
if (w.test.call(/[gy]/, i)) throw new SyntaxError("Cannot use flag g or y in mode modifier " + e);
|
||
return t = n(t + i), "";
|
||
}), i = 0; i < t.length; ++i) if (!L[t.charAt(i)]) throw new SyntaxError("Unknown regex flag " + t.charAt(i));
|
||
return {
|
||
pattern: e,
|
||
flags: t
|
||
};
|
||
}
|
||
function u(e) {
|
||
return e = e || {}, a(e, "String") && (e = m.forEach(e, /[^\s,]+/, function(e) {
|
||
this[e] = !0;
|
||
}, {})), e;
|
||
}
|
||
function d(e) {
|
||
if (!/^[\w$]$/.test(e)) throw new Error("Flag must be a single character A-Za-z0-9_$");
|
||
L[e] = !0;
|
||
}
|
||
function h(e, t, n, i, o) {
|
||
for (var r, s, a = k.length, l = null; a--; ) if (s = k[a], (s.scope === i || "all" === s.scope) && (!s.flag || t.indexOf(s.flag) > -1) && (r = m.exec(e, s.regex, n, "sticky"))) {
|
||
l = {
|
||
matchLength: r[0].length,
|
||
output: s.handler.call(o, r, i, t),
|
||
reparse: s.reparse
|
||
};
|
||
break;
|
||
}
|
||
return l;
|
||
}
|
||
function p(e) {
|
||
m.cache.flush("patterns"), y.astral = e;
|
||
}
|
||
function f(e) {
|
||
RegExp.prototype.exec = (e ? x : w).exec, RegExp.prototype.test = (e ? x : w).test,
|
||
String.prototype.match = (e ? x : w).match, String.prototype.replace = (e ? x : w).replace,
|
||
String.prototype.split = (e ? x : w).split, y.natives = e;
|
||
}
|
||
function g(e) {
|
||
if (null == e) throw new TypeError("Cannot convert null or undefined to object");
|
||
return e;
|
||
}
|
||
var m, v, b = "xregexp", y = {
|
||
astral: !1,
|
||
natives: !1
|
||
}, w = {
|
||
exec: RegExp.prototype.exec,
|
||
test: RegExp.prototype.test,
|
||
match: String.prototype.match,
|
||
replace: String.prototype.replace,
|
||
split: String.prototype.split
|
||
}, x = {}, C = {}, E = {}, k = [], A = "default", S = "class", _ = {
|
||
"default": /\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,
|
||
"class": /\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|[\s\S]/
|
||
}, F = /\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g, T = w.exec.call(/()??/, "")[1] === e, D = RegExp.prototype.sticky !== e, L = {
|
||
g: !0,
|
||
i: !0,
|
||
m: !0,
|
||
y: D
|
||
}, $ = {}.toString;
|
||
return m = function(n, o) {
|
||
var r, s, a, l = {
|
||
hasNamedCapture: !1,
|
||
captureNames: []
|
||
}, u = A, d = "", p = 0;
|
||
if (m.isRegExp(n)) {
|
||
if (o !== e) throw new TypeError("Cannot supply flags when copying a RegExp");
|
||
return i(n, {
|
||
addProto: !0
|
||
});
|
||
}
|
||
if (n = n === e ? "" : String(n), o = o === e ? "" : String(o), a = n + "***" + o,
|
||
!E[a]) {
|
||
for (r = c(n, o), n = r.pattern, o = r.flags; p < n.length; ) {
|
||
do r = h(n, o, p, u, l), r && r.reparse && (n = n.slice(0, p) + r.output + n.slice(p + r.matchLength)); while (r && r.reparse);
|
||
r ? (d += r.output, p += r.matchLength || 1) : (s = m.exec(n, _[u], p, "sticky")[0],
|
||
d += s, p += s.length, "[" === s && u === A ? u = S : "]" === s && u === S && (u = A));
|
||
}
|
||
E[a] = {
|
||
pattern: w.replace.call(d, /\(\?:\)(?=\(\?:\))|^\(\?:\)|\(\?:\)$/g, ""),
|
||
flags: w.replace.call(o, /[^gimy]+/g, ""),
|
||
captures: l.hasNamedCapture ? l.captureNames : null
|
||
};
|
||
}
|
||
return a = E[a], t(new RegExp(a.pattern, a.flags), a.captures, !0);
|
||
}, m.prototype = new RegExp(), m.version = "3.0.0-pre", m.addToken = function(e, t, n) {
|
||
n = n || {};
|
||
var o, r = n.optionalFlags;
|
||
if (n.flag && d(n.flag), r) for (r = w.split.call(r, ""), o = 0; o < r.length; ++o) d(r[o]);
|
||
k.push({
|
||
regex: i(e, {
|
||
add: "g" + (D ? "y" : "")
|
||
}),
|
||
handler: t,
|
||
scope: n.scope || A,
|
||
flag: n.flag,
|
||
reparse: n.reparse
|
||
}), m.cache.flush("patterns");
|
||
}, m.cache = function(e, t) {
|
||
var n = e + "***" + (t || "");
|
||
return C[n] || (C[n] = m(e, t));
|
||
}, m.cache.flush = function(e) {
|
||
"patterns" === e ? E = {} : C = {};
|
||
}, m.escape = function(e) {
|
||
return w.replace.call(g(e), /[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||
}, m.exec = function(e, t, n, r) {
|
||
var s, a, l = "g";
|
||
return D && (r || t.sticky && r !== !1) && (l += "y"), t[b] = t[b] || o(), a = t[b][l] || (t[b][l] = i(t, {
|
||
add: l,
|
||
remove: r === !1 ? "y" : ""
|
||
})), a.lastIndex = n = n || 0, s = x.exec.call(a, e), r && s && s.index !== n && (s = null),
|
||
t.global && (t.lastIndex = s ? a.lastIndex : 0), s;
|
||
}, m.forEach = function(e, t, n, i) {
|
||
for (var o, r = 0, s = -1; o = m.exec(e, t, r); ) n.call(i, o, ++s, e, t), r = o.index + (o[0].length || 1);
|
||
return i;
|
||
}, m.globalize = function(e) {
|
||
return i(e, {
|
||
add: "g",
|
||
addProto: !0
|
||
});
|
||
}, m.install = function(e) {
|
||
e = u(e), !y.astral && e.astral && p(!0), !y.natives && e.natives && f(!0);
|
||
}, m.isInstalled = function(e) {
|
||
return !!y[e];
|
||
}, m.isRegExp = function(e) {
|
||
return "[object RegExp]" === $.call(e);
|
||
}, m.match = function(e, t, n) {
|
||
var r, s, a = t.global && "one" !== n || "all" === n, l = (a ? "g" : "") + (t.sticky ? "y" : "");
|
||
return t[b] = t[b] || o(), s = t[b][l || "noGY"] || (t[b][l || "noGY"] = i(t, {
|
||
add: l,
|
||
remove: "one" === n ? "g" : ""
|
||
})), r = w.match.call(g(e), s), t.global && (t.lastIndex = "one" === n && r ? r.index + r[0].length : 0),
|
||
a ? r || [] : r && r[0];
|
||
}, m.matchChain = function(e, t) {
|
||
return function n(e, i) {
|
||
var o, r = t[i].regex ? t[i] : {
|
||
regex: t[i]
|
||
}, s = [], a = function(e) {
|
||
if (r.backref) {
|
||
if (!(e.hasOwnProperty(r.backref) || +r.backref < e.length)) throw new ReferenceError("Backreference to undefined group: " + r.backref);
|
||
s.push(e[r.backref] || "");
|
||
} else s.push(e[0]);
|
||
};
|
||
for (o = 0; o < e.length; ++o) m.forEach(e[o], r.regex, a);
|
||
return i !== t.length - 1 && s.length ? n(s, i + 1) : s;
|
||
}([ e ], 0);
|
||
}, m.replace = function(e, t, n, r) {
|
||
var s, a = m.isRegExp(t), l = t.global && "one" !== r || "all" === r, c = (l ? "g" : "") + (t.sticky ? "y" : ""), u = t;
|
||
return a ? (t[b] = t[b] || o(), u = t[b][c || "noGY"] || (t[b][c || "noGY"] = i(t, {
|
||
add: c,
|
||
remove: "one" === r ? "g" : ""
|
||
}))) : l && (u = new RegExp(m.escape(String(t)), "g")), s = x.replace.call(g(e), u, n),
|
||
a && t.global && (t.lastIndex = 0), s;
|
||
}, m.replaceEach = function(e, t) {
|
||
var n, i;
|
||
for (n = 0; n < t.length; ++n) i = t[n], e = m.replace(e, i[0], i[1], i[2]);
|
||
return e;
|
||
}, m.split = function(e, t, n) {
|
||
return x.split.call(g(e), t, n);
|
||
}, m.test = function(e, t, n, i) {
|
||
return !!m.exec(e, t, n, i);
|
||
}, m.uninstall = function(e) {
|
||
e = u(e), y.astral && e.astral && p(!1), y.natives && e.natives && f(!1);
|
||
}, m.union = function(e, t) {
|
||
var n, i, o, r, s = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g, l = [], c = 0, u = function(e, t, o) {
|
||
var r = i[c - n];
|
||
if (t) {
|
||
if (++c, r) return "(?<" + r + ">";
|
||
} else if (o) return "\\" + (+o + n);
|
||
return e;
|
||
};
|
||
if (!a(e, "Array") || !e.length) throw new TypeError("Must provide a nonempty array of patterns to merge");
|
||
for (r = 0; r < e.length; ++r) o = e[r], m.isRegExp(o) ? (n = c, i = o[b] && o[b].captureNames || [],
|
||
l.push(w.replace.call(m(o.source).source, s, u))) : l.push(m.escape(o));
|
||
return m(l.join("|"), t);
|
||
}, x.exec = function(t) {
|
||
var n, o, r, a = this.lastIndex, l = w.exec.apply(this, arguments);
|
||
if (l) {
|
||
if (!T && l.length > 1 && s(l, "") > -1 && (o = i(this, {
|
||
remove: "g"
|
||
}), w.replace.call(String(t).slice(l.index), o, function() {
|
||
var t, n = arguments.length;
|
||
for (t = 1; n - 2 > t; ++t) arguments[t] === e && (l[t] = e);
|
||
})), this[b] && this[b].captureNames) for (r = 1; r < l.length; ++r) n = this[b].captureNames[r - 1],
|
||
n && (l[n] = l[r]);
|
||
this.global && !l[0].length && this.lastIndex > l.index && (this.lastIndex = l.index);
|
||
}
|
||
return this.global || (this.lastIndex = a), l;
|
||
}, x.test = function(e) {
|
||
return !!x.exec.call(this, e);
|
||
}, x.match = function(e) {
|
||
var t;
|
||
if (m.isRegExp(e)) {
|
||
if (e.global) return t = w.match.apply(this, arguments), e.lastIndex = 0, t;
|
||
} else e = new RegExp(e);
|
||
return x.exec.call(e, g(this));
|
||
}, x.replace = function(t, n) {
|
||
var i, o, r, l = m.isRegExp(t);
|
||
return l ? (t[b] && (o = t[b].captureNames), i = t.lastIndex) : t += "", r = a(n, "Function") ? w.replace.call(String(this), t, function() {
|
||
var i, r = arguments;
|
||
if (o) for (r[0] = new String(r[0]), i = 0; i < o.length; ++i) o[i] && (r[0][o[i]] = r[i + 1]);
|
||
return l && t.global && (t.lastIndex = r[r.length - 2] + r[0].length), n.apply(e, r);
|
||
}) : w.replace.call(null == this ? this : String(this), t, function() {
|
||
var e = arguments;
|
||
return w.replace.call(String(n), F, function(t, n, i) {
|
||
var r;
|
||
if (n) {
|
||
if (r = +n, r <= e.length - 3) return e[r] || "";
|
||
if (r = o ? s(o, n) : -1, 0 > r) throw new SyntaxError("Backreference to undefined group " + t);
|
||
return e[r + 1] || "";
|
||
}
|
||
if ("$" === i) return "$";
|
||
if ("&" === i || 0 === +i) return e[0];
|
||
if ("`" === i) return e[e.length - 1].slice(0, e[e.length - 2]);
|
||
if ("'" === i) return e[e.length - 1].slice(e[e.length - 2] + e[0].length);
|
||
if (i = +i, !isNaN(i)) {
|
||
if (i > e.length - 3) throw new SyntaxError("Backreference to undefined group " + t);
|
||
return e[i] || "";
|
||
}
|
||
throw new SyntaxError("Invalid token " + t);
|
||
});
|
||
}), l && (t.lastIndex = t.global ? 0 : i), r;
|
||
}, x.split = function(t, n) {
|
||
if (!m.isRegExp(t)) return w.split.apply(this, arguments);
|
||
var i, o = String(this), r = [], s = t.lastIndex, a = 0;
|
||
return n = (n === e ? -1 : n) >>> 0, m.forEach(o, t, function(e) {
|
||
e.index + e[0].length > a && (r.push(o.slice(a, e.index)), e.length > 1 && e.index < o.length && Array.prototype.push.apply(r, e.slice(1)),
|
||
i = e[0].length, a = e.index + i);
|
||
}), a === o.length ? (!w.test.call(t, "") || i) && r.push("") : r.push(o.slice(a)),
|
||
t.lastIndex = s, r.length > n ? r.slice(0, n) : r;
|
||
}, v = m.addToken, v(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4})|x(?![\dA-Fa-f]{2}))/, function(e, t) {
|
||
if ("B" === e[1] && t === A) return e[0];
|
||
throw new SyntaxError("Invalid escape " + e[0]);
|
||
}, {
|
||
scope: "all"
|
||
}), v(/\[(\^?)]/, function(e) {
|
||
return e[1] ? "[\\s\\S]" : "\\b\\B";
|
||
}), v(/\(\?#[^)]*\)/, function(e, t, n) {
|
||
return l(e.input, e.index + e[0].length, n) ? "" : "(?:)";
|
||
}), v(/\s+|#.*/, function(e, t, n) {
|
||
return l(e.input, e.index + e[0].length, n) ? "" : "(?:)";
|
||
}, {
|
||
flag: "x"
|
||
}), v(/\./, function() {
|
||
return "[\\s\\S]";
|
||
}, {
|
||
flag: "s"
|
||
}), v(/\\k<([\w$]+)>/, function(e) {
|
||
var t = isNaN(e[1]) ? s(this.captureNames, e[1]) + 1 : +e[1], n = e.index + e[0].length;
|
||
if (!t || t > this.captureNames.length) throw new SyntaxError("Backreference to undefined group " + e[0]);
|
||
return "\\" + t + (n === e.input.length || isNaN(e.input.charAt(n)) ? "" : "(?:)");
|
||
}), v(/\\(\d+)/, function(e, t) {
|
||
if (!(t === A && /^[1-9]/.test(e[1]) && +e[1] <= this.captureNames.length) && "0" !== e[1]) throw new SyntaxError("Cannot use octal escape or backreference to undefined group " + e[0]);
|
||
return e[0];
|
||
}, {
|
||
scope: "all"
|
||
}), v(/\(\?P?<([\w$]+)>/, function(e) {
|
||
if (!isNaN(e[1])) throw new SyntaxError("Cannot use integer as capture name " + e[0]);
|
||
if ("length" === e[1] || "__proto__" === e[1]) throw new SyntaxError("Cannot use reserved word as capture name " + e[0]);
|
||
if (s(this.captureNames, e[1]) > -1) throw new SyntaxError("Cannot use same name for multiple groups " + e[0]);
|
||
return this.captureNames.push(e[1]), this.hasNamedCapture = !0, "(";
|
||
}), v(/\((?!\?)/, function(e, t, n) {
|
||
return n.indexOf("n") > -1 ? "(?:" : (this.captureNames.push(null), "(");
|
||
}, {
|
||
optionalFlags: "n"
|
||
}), m;
|
||
}();
|
||
return function(e) {
|
||
function t(e) {
|
||
var t = /^\^/, n = /\$$/;
|
||
return t.test(e) && n.test(e.replace(/\\[\s\S]/g, "")) ? e.replace(t, "").replace(n, "") : e;
|
||
}
|
||
function n(t) {
|
||
return e.isRegExp(t) ? t[i] && t[i].captureNames ? t : e(t.source) : e(t);
|
||
}
|
||
var i = "xregexp", o = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g, r = e.union([ /\({{([\w$]+)}}\)|{{([\w$]+)}}/, o ], "g");
|
||
e.build = function(s, a, l) {
|
||
var c, u, d, h, p = /^\(\?([\w$]+)\)/.exec(s), f = {}, g = 0, m = 0, v = [ 0 ];
|
||
p && (l = l || "", p[1].replace(/./g, function(e) {
|
||
l += l.indexOf(e) > -1 ? "" : e;
|
||
}));
|
||
for (h in a) a.hasOwnProperty(h) && (d = n(a[h]), f[h] = {
|
||
pattern: t(d.source),
|
||
names: d[i].captureNames || []
|
||
});
|
||
return s = n(s), u = s[i].captureNames || [], s = s.source.replace(r, function(e, t, n, i, r) {
|
||
var s, a, l = t || n;
|
||
if (l) {
|
||
if (!f.hasOwnProperty(l)) throw new ReferenceError("Undefined property " + e);
|
||
return t ? (s = u[m], v[++m] = ++g, a = "(?<" + (s || l) + ">") : a = "(?:", c = g,
|
||
a + f[l].pattern.replace(o, function(e, t, n) {
|
||
if (t) {
|
||
if (s = f[l].names[g - c], ++g, s) return "(?<" + s + ">";
|
||
} else if (n) return "\\" + (+n + c);
|
||
return e;
|
||
}) + ")";
|
||
}
|
||
if (i) {
|
||
if (s = u[m], v[++m] = ++g, s) return "(?<" + s + ">";
|
||
} else if (r) return "\\" + v[+r];
|
||
return e;
|
||
}), e(s, l);
|
||
};
|
||
}(e), function(e) {
|
||
function t(e, t, n, i) {
|
||
return {
|
||
name: e,
|
||
value: t,
|
||
start: n,
|
||
end: i
|
||
};
|
||
}
|
||
e.matchRecursive = function(n, i, o, r, s) {
|
||
r = r || "", s = s || {};
|
||
var a, l, c, u, d, h = r.indexOf("g") > -1, p = r.indexOf("y") > -1, f = r.replace(/y/g, ""), g = s.escapeChar, m = s.valueNames, v = [], b = 0, y = 0, w = 0, x = 0;
|
||
if (i = e(i, f), o = e(o, f), g) {
|
||
if (g.length > 1) throw new Error("Cannot use more than one escape character");
|
||
g = e.escape(g), d = new RegExp("(?:" + g + "[\\S\\s]|(?:(?!" + e.union([ i, o ]).source + ")[^" + g + "])+)+", r.replace(/[^im]+/g, ""));
|
||
}
|
||
for (;;) {
|
||
if (g && (w += (e.exec(n, d, w, "sticky") || [ "" ])[0].length), c = e.exec(n, i, w),
|
||
u = e.exec(n, o, w), c && u && (c.index <= u.index ? u = null : c = null), c || u) y = (c || u).index,
|
||
w = y + (c || u)[0].length; else if (!b) break;
|
||
if (p && !b && y > x) break;
|
||
if (c) b || (a = y, l = w), ++b; else {
|
||
if (!u || !b) throw new Error("Unbalanced delimiter found in string");
|
||
if (!--b && (m ? (m[0] && a > x && v.push(t(m[0], n.slice(x, a), x, a)), m[1] && v.push(t(m[1], n.slice(a, l), a, l)),
|
||
m[2] && v.push(t(m[2], n.slice(l, y), l, y)), m[3] && v.push(t(m[3], n.slice(y, w), y, w))) : v.push(n.slice(l, y)),
|
||
x = w, !h)) break;
|
||
}
|
||
y === w && ++w;
|
||
}
|
||
return h && !p && m && m[0] && n.length > x && v.push(t(m[0], n.slice(x), x, n.length)),
|
||
v;
|
||
};
|
||
}(e), function(e) {
|
||
function t(e) {
|
||
return e.replace(/[- _]+/g, "").toLowerCase();
|
||
}
|
||
function n(e) {
|
||
for (;e.length < 4; ) e = "0" + e;
|
||
return e;
|
||
}
|
||
function i(e) {
|
||
return parseInt(e, 16);
|
||
}
|
||
function o(e) {
|
||
return parseInt(e, 10).toString(16);
|
||
}
|
||
function r(e) {
|
||
var t = /^\\[xu](.+)/.exec(e);
|
||
return t ? i(t[1]) : e.charCodeAt("\\" === e.charAt(0) ? 1 : 0);
|
||
}
|
||
function s(t) {
|
||
var i, s = "", a = -1;
|
||
return e.forEach(t, /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/, function(e) {
|
||
i = r(e[1]), i > a + 1 && (s += "\\u" + n(o(a + 1)), i > a + 2 && (s += "-\\u" + n(o(i - 1)))),
|
||
a = r(e[2] || e[1]);
|
||
}), 65535 > a && (s += "\\u" + n(o(a + 1)), 65534 > a && (s += "-\\uFFFF")), s;
|
||
}
|
||
function a(e) {
|
||
var t = "b!";
|
||
return u[e][t] || (u[e][t] = s(u[e].bmp));
|
||
}
|
||
function l(e, t) {
|
||
var n = u[e], i = "";
|
||
return n.bmp && !n.isBmpLast && (i = "[" + n.bmp + "]" + (n.astral ? "|" : "")),
|
||
n.astral && (i += n.astral), n.isBmpLast && n.bmp && (i += (n.astral ? "|" : "") + "[" + n.bmp + "]"),
|
||
t ? "(?:(?!" + i + ")(?:[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|[\x00-]))" : "(?:" + i + ")";
|
||
}
|
||
function c(e, t) {
|
||
var n = t ? "a!" : "a=";
|
||
return u[e][n] || (u[e][n] = l(e, t));
|
||
}
|
||
var u = {};
|
||
e.addToken(/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/, function(n, i, o) {
|
||
var r = "Invalid double negation ", s = "Unknown Unicode token ", l = "Unicode token missing data ", d = "Astral mode required for Unicode token ", h = "Astral mode does not support Unicode tokens within character classes", p = "P" === n[1] || !!n[2], f = o.indexOf("A") > -1 || e.isInstalled("astral"), g = t(n[4] || n[3]), m = u[g];
|
||
if ("P" === n[1] && n[2]) throw new SyntaxError(r + n[0]);
|
||
if (!u.hasOwnProperty(g)) throw new SyntaxError(s + n[0]);
|
||
if (m.inverseOf) {
|
||
if (g = t(m.inverseOf), !u.hasOwnProperty(g)) throw new ReferenceError(l + n[0] + " -> " + m.inverseOf);
|
||
m = u[g], p = !p;
|
||
}
|
||
if (!m.bmp && !f) throw new SyntaxError(d + n[0]);
|
||
if (f) {
|
||
if ("class" === i) throw new SyntaxError(h);
|
||
return c(g, p);
|
||
}
|
||
return "class" === i ? p ? a(g) : m.bmp : (p ? "[^" : "[") + m.bmp + "]";
|
||
}, {
|
||
scope: "all",
|
||
optionalFlags: "A"
|
||
}), e.addUnicodeData = function(n) {
|
||
var i, o, r = "Unicode token requires name", s = "Unicode token has no character data ";
|
||
for (o = 0; o < n.length; ++o) {
|
||
if (i = n[o], !i.name) throw new Error(r);
|
||
if (!(i.inverseOf || i.bmp || i.astral)) throw new Error(s + i.name);
|
||
u[t(i.name)] = i, i.alias && (u[t(i.alias)] = i);
|
||
}
|
||
e.cache.flush("patterns");
|
||
}, e.addUnicodeData([ {
|
||
name: "L",
|
||
alias: "Letter",
|
||
bmp: "A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><85><ED><B0><88><ED>-<2D><><ED><B0><B5><ED><B0><B7><ED><B0><B8><ED><B0><BC><ED>-<2D><><ED><B1><95><ED>-<2D><><ED><B4><95><ED>-<2D><><ED><B4><B9><ED>-<2D><><ED><B6><B7><ED><B6><BE><ED><B6><BF><ED><B8><80><ED>-<2D><><ED><B8><93><ED>-<2D><><ED><B8><97><ED>-<2D><><ED><B8><B3><ED>-<2D><><ED><B9><BC><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED><BD><95><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><8B><ED>-<2D><><ED><B0><A6><ED>-<2D><><ED><B0><BA><ED><B0><BC><ED><B0><BD><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED><B1><9D><ED>-<2D><><ED><B3><BA><ED>-<2D><><ED><BA><9C><ED>-<2D><><ED><BB><90><ED>-<2D><><ED><BC><9E><ED>-<2D><><ED><BD><80><ED>-<2D><><ED><BD><89><ED>-<2D><><ED><BE><9D><ED>-<2D><><ED><BF><83><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><B7><ED>-<2D><><ED><B2><AF><ED>-<2D><><ED><B3><A8><ED>-<2D><><ED><B4><A6><ED>-<2D><><ED><B6><B2><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BD><84><ED><BD><90><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BB><96><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><80><ED>]|[<5B><><ED><A0><8C><ED>-<2D><><ED><A1><A8><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED>-<2D><><ED><B8><9F><ED><B8><A1><ED><B8><A2><ED><B8><A4><ED><B8><A7><ED>-<2D><><ED><B8><B2><ED>-<2D><><ED><B8><B7><ED><B8><B9><ED><B8><BB><ED><B9><82><ED><B9><87><ED><B9><89><ED><B9><8B><ED>-<2D><><ED><B9><8F><ED><B9><91><ED><B9><92><ED><B9><94><ED><B9><97><ED><B9><99><ED><B9><9B><ED><B9><9D><ED><B9><9F><ED><B9><A1><ED><B9><A2><ED><B9><A4><ED>-<2D><><ED><B9><AA><ED>-<2D><><ED><B9><B2><ED>-<2D><><ED><B9><B7><ED>-<2D><><ED><B9><BC><ED><B9><BE><ED>-<2D><><ED><BA><89><ED>-<2D><><ED><BA><9B><ED>-<2D><><ED><BA><A3><ED>-<2D><><ED><BA><A9><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><94><ED>-<2D><><ED><B2><9C><ED><B2><9E><ED><B2><9F><ED><B2><A2><ED><B2><A5><ED><B2><A6><ED>-<2D><><ED><B2><AC><ED>-<2D><><ED><B2><B9><ED><B2><BB><ED>-<2D><><ED><B3><83><ED>-<2D><><ED><B4><85><ED>-<2D><><ED><B4><8A><ED>-<2D><><ED><B4><94><ED>-<2D><><ED><B4><9C><ED>-<2D><><ED><B4><B9><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><84><ED><B5><86><ED>-<2D><><ED><B5><90><ED>-<2D><><ED><BA><A5><ED>-<2D><><ED><BB><80><ED>-<2D><><ED><BB><9A><ED>-<2D><><ED><BB><BA><ED>-<2D><><ED><BC><94><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED><BD><8E><ED>-<2D><><ED><BD><AE><ED>-<2D><><ED><BE><88><ED>-<2D><><ED><BE><A8><ED>-<2D><><ED><BF><82><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
} ]);
|
||
}(e), function(e) {
|
||
if (!e.addUnicodeData) throw new ReferenceError("Unicode Base must be loaded before Unicode Blocks");
|
||
e.addUnicodeData([ {
|
||
name: "InAegean_Numbers",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InAlchemical_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InAlphabetic_Presentation_Forms",
|
||
bmp: "ff-ﭏ"
|
||
}, {
|
||
name: "InAncient_Greek_Musical_Notation",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InAncient_Greek_Numbers",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InAncient_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InArabic",
|
||
bmp: "-ۿ"
|
||
}, {
|
||
name: "InArabic_Extended_A",
|
||
bmp: "ࢠ-ࣿ"
|
||
}, {
|
||
name: "InArabic_Mathematical_Alphabetic_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InArabic_Presentation_Forms_A",
|
||
bmp: "ﭐ-﷿"
|
||
}, {
|
||
name: "InArabic_Presentation_Forms_B",
|
||
bmp: "ﹰ-"
|
||
}, {
|
||
name: "InArabic_Supplement",
|
||
bmp: "ݐ-ݿ"
|
||
}, {
|
||
name: "InArmenian",
|
||
bmp: "-֏"
|
||
}, {
|
||
name: "InArrows",
|
||
bmp: "←-⇿"
|
||
}, {
|
||
name: "InAvestan",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InBalinese",
|
||
bmp: "ᬀ-"
|
||
}, {
|
||
name: "InBamum",
|
||
bmp: "ꚠ-"
|
||
}, {
|
||
name: "InBamum_Supplement",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InBasic_Latin",
|
||
bmp: "\x00-"
|
||
}, {
|
||
name: "InBatak",
|
||
bmp: "ᯀ-᯿"
|
||
}, {
|
||
name: "InBengali",
|
||
bmp: "ঀ-"
|
||
}, {
|
||
name: "InBlock_Elements",
|
||
bmp: "▀-▟"
|
||
}, {
|
||
name: "InBopomofo",
|
||
bmp: "-ㄯ"
|
||
}, {
|
||
name: "InBopomofo_Extended",
|
||
bmp: "ㆠ-ㆿ"
|
||
}, {
|
||
name: "InBox_Drawing",
|
||
bmp: "─-╿"
|
||
}, {
|
||
name: "InBrahmi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InBraille_Patterns",
|
||
bmp: "⠀-⣿"
|
||
}, {
|
||
name: "InBuginese",
|
||
bmp: "ᨀ-᨟"
|
||
}, {
|
||
name: "InBuhid",
|
||
bmp: "ᝀ-"
|
||
}, {
|
||
name: "InByzantine_Musical_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCJK_Compatibility",
|
||
bmp: "㌀-㏿"
|
||
}, {
|
||
name: "InCJK_Compatibility_Forms",
|
||
bmp: "︰-﹏"
|
||
}, {
|
||
name: "InCJK_Compatibility_Ideographs",
|
||
bmp: "豈-"
|
||
}, {
|
||
name: "InCJK_Compatibility_Ideographs_Supplement",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCJK_Radicals_Supplement",
|
||
bmp: "⺀-"
|
||
}, {
|
||
name: "InCJK_Strokes",
|
||
bmp: "㇀-"
|
||
}, {
|
||
name: "InCJK_Symbols_and_Punctuation",
|
||
bmp: " -〿"
|
||
}, {
|
||
name: "InCJK_Unified_Ideographs",
|
||
bmp: "一-鿿"
|
||
}, {
|
||
name: "InCJK_Unified_Ideographs_Extension_A",
|
||
bmp: "㐀-䶿"
|
||
}, {
|
||
name: "InCJK_Unified_Ideographs_Extension_B",
|
||
astral: "[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCJK_Unified_Ideographs_Extension_C",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCJK_Unified_Ideographs_Extension_D",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCarian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InChakma",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCham",
|
||
bmp: "ꨀ-꩟"
|
||
}, {
|
||
name: "InCherokee",
|
||
bmp: "Ꭰ-"
|
||
}, {
|
||
name: "InCombining_Diacritical_Marks",
|
||
bmp: "̀-ͯ"
|
||
}, {
|
||
name: "InCombining_Diacritical_Marks_Supplement",
|
||
bmp: "᷀-᷿"
|
||
}, {
|
||
name: "InCombining_Diacritical_Marks_for_Symbols",
|
||
bmp: "⃐-"
|
||
}, {
|
||
name: "InCombining_Half_Marks",
|
||
bmp: "︠-︯"
|
||
}, {
|
||
name: "InCommon_Indic_Number_Forms",
|
||
bmp: "꠰-"
|
||
}, {
|
||
name: "InControl_Pictures",
|
||
bmp: "␀-"
|
||
}, {
|
||
name: "InCoptic",
|
||
bmp: "Ⲁ-⳿"
|
||
}, {
|
||
name: "InCounting_Rod_Numerals",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCuneiform",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCuneiform_Numbers_and_Punctuation",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCurrency_Symbols",
|
||
bmp: "₠-"
|
||
}, {
|
||
name: "InCypriot_Syllabary",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InCyrillic",
|
||
bmp: "Ѐ-ӿ"
|
||
}, {
|
||
name: "InCyrillic_Extended_A",
|
||
bmp: "ⷠ-ⷿ"
|
||
}, {
|
||
name: "InCyrillic_Extended_B",
|
||
bmp: "Ꙁ-ꚟ"
|
||
}, {
|
||
name: "InCyrillic_Supplement",
|
||
bmp: "Ԁ-ԯ"
|
||
}, {
|
||
name: "InDeseret",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InDevanagari",
|
||
bmp: "ऀ-ॿ"
|
||
}, {
|
||
name: "InDevanagari_Extended",
|
||
bmp: "꣠-ꣿ"
|
||
}, {
|
||
name: "InDingbats",
|
||
bmp: "✀-➿"
|
||
}, {
|
||
name: "InDomino_Tiles",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InEgyptian_Hieroglyphs",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InEmoticons",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InEnclosed_Alphanumeric_Supplement",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InEnclosed_Alphanumerics",
|
||
bmp: "①-⓿"
|
||
}, {
|
||
name: "InEnclosed_CJK_Letters_and_Months",
|
||
bmp: "㈀-㋿"
|
||
}, {
|
||
name: "InEnclosed_Ideographic_Supplement",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InEthiopic",
|
||
bmp: "ሀ-"
|
||
}, {
|
||
name: "InEthiopic_Extended",
|
||
bmp: "ⶀ-"
|
||
}, {
|
||
name: "InEthiopic_Extended_A",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InEthiopic_Supplement",
|
||
bmp: "ᎀ-"
|
||
}, {
|
||
name: "InGeneral_Punctuation",
|
||
bmp: " -"
|
||
}, {
|
||
name: "InGeometric_Shapes",
|
||
bmp: "■-◿"
|
||
}, {
|
||
name: "InGeorgian",
|
||
bmp: "Ⴀ-ჿ"
|
||
}, {
|
||
name: "InGeorgian_Supplement",
|
||
bmp: "ⴀ-"
|
||
}, {
|
||
name: "InGlagolitic",
|
||
bmp: "Ⰰ-ⱟ"
|
||
}, {
|
||
name: "InGothic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InGreek_Extended",
|
||
bmp: "ἀ-"
|
||
}, {
|
||
name: "InGreek_and_Coptic",
|
||
bmp: "Ͱ-Ͽ"
|
||
}, {
|
||
name: "InGujarati",
|
||
bmp: "-૿"
|
||
}, {
|
||
name: "InGurmukhi",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InHalfwidth_and_Fullwidth_Forms",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InHangul_Compatibility_Jamo",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InHangul_Jamo",
|
||
bmp: "ᄀ-ᇿ"
|
||
}, {
|
||
name: "InHangul_Jamo_Extended_A",
|
||
bmp: "ꥠ-"
|
||
}, {
|
||
name: "InHangul_Jamo_Extended_B",
|
||
bmp: "ힰ-"
|
||
}, {
|
||
name: "InHangul_Syllables",
|
||
bmp: "가-"
|
||
}, {
|
||
name: "InHanunoo",
|
||
bmp: "ᜠ-"
|
||
}, {
|
||
name: "InHebrew",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InHigh_Private_Use_Surrogates",
|
||
bmp: "<22><><ED>-<2D><><ED>"
|
||
}, {
|
||
name: "InHigh_Surrogates",
|
||
bmp: "<22><><ED>-<2D><><ED>"
|
||
}, {
|
||
name: "InHiragana",
|
||
bmp: "-ゟ"
|
||
}, {
|
||
name: "InIPA_Extensions",
|
||
bmp: "ɐ-ʯ"
|
||
}, {
|
||
name: "InIdeographic_Description_Characters",
|
||
bmp: "⿰-"
|
||
}, {
|
||
name: "InImperial_Aramaic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InInscriptional_Pahlavi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InInscriptional_Parthian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InJavanese",
|
||
bmp: "ꦀ-꧟"
|
||
}, {
|
||
name: "InKaithi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InKana_Supplement",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InKanbun",
|
||
bmp: "㆐-㆟"
|
||
}, {
|
||
name: "InKangxi_Radicals",
|
||
bmp: "⼀-"
|
||
}, {
|
||
name: "InKannada",
|
||
bmp: "ಀ-"
|
||
}, {
|
||
name: "InKatakana",
|
||
bmp: "゠-ヿ"
|
||
}, {
|
||
name: "InKatakana_Phonetic_Extensions",
|
||
bmp: "ㇰ-ㇿ"
|
||
}, {
|
||
name: "InKayah_Li",
|
||
bmp: "꤀-꤯"
|
||
}, {
|
||
name: "InKharoshthi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InKhmer",
|
||
bmp: "ក-"
|
||
}, {
|
||
name: "InKhmer_Symbols",
|
||
bmp: "᧠-᧿"
|
||
}, {
|
||
name: "InLao",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InLatin_Extended_Additional",
|
||
bmp: "Ḁ-ỿ"
|
||
}, {
|
||
name: "InLatin_Extended_A",
|
||
bmp: "Ā-ſ"
|
||
}, {
|
||
name: "InLatin_Extended_B",
|
||
bmp: "ƀ-ɏ"
|
||
}, {
|
||
name: "InLatin_Extended_C",
|
||
bmp: "Ⱡ-Ɀ"
|
||
}, {
|
||
name: "InLatin_Extended_D",
|
||
bmp: "꜠-ꟿ"
|
||
}, {
|
||
name: "InLatin_1_Supplement",
|
||
bmp: "-ÿ"
|
||
}, {
|
||
name: "InLepcha",
|
||
bmp: "ᰀ-ᱏ"
|
||
}, {
|
||
name: "InLetterlike_Symbols",
|
||
bmp: "℀-⅏"
|
||
}, {
|
||
name: "InLimbu",
|
||
bmp: "ᤀ-᥏"
|
||
}, {
|
||
name: "InLinear_B_Ideograms",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InLinear_B_Syllabary",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InLisu",
|
||
bmp: "ꓐ-꓿"
|
||
}, {
|
||
name: "InLow_Surrogates",
|
||
bmp: "<22><><ED>-<2D><><ED>"
|
||
}, {
|
||
name: "InLycian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InLydian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMahjong_Tiles",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMalayalam",
|
||
bmp: "ഀ-ൿ"
|
||
}, {
|
||
name: "InMandaic",
|
||
bmp: "ࡀ-"
|
||
}, {
|
||
name: "InMathematical_Alphanumeric_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMathematical_Operators",
|
||
bmp: "∀-⋿"
|
||
}, {
|
||
name: "InMeetei_Mayek",
|
||
bmp: "ꯀ-"
|
||
}, {
|
||
name: "InMeetei_Mayek_Extensions",
|
||
bmp: "ꫠ-"
|
||
}, {
|
||
name: "InMeroitic_Cursive",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMeroitic_Hieroglyphs",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMiao",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMiscellaneous_Mathematical_Symbols_A",
|
||
bmp: "⟀-⟯"
|
||
}, {
|
||
name: "InMiscellaneous_Mathematical_Symbols_B",
|
||
bmp: "⦀-⧿"
|
||
}, {
|
||
name: "InMiscellaneous_Symbols",
|
||
bmp: "☀-⛿"
|
||
}, {
|
||
name: "InMiscellaneous_Symbols_And_Pictographs",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMiscellaneous_Symbols_and_Arrows",
|
||
bmp: "⬀-⯿"
|
||
}, {
|
||
name: "InMiscellaneous_Technical",
|
||
bmp: "⌀-⏿"
|
||
}, {
|
||
name: "InModifier_Tone_Letters",
|
||
bmp: "꜀-ꜟ"
|
||
}, {
|
||
name: "InMongolian",
|
||
bmp: "᠀-"
|
||
}, {
|
||
name: "InMusical_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InMyanmar",
|
||
bmp: "က-႟"
|
||
}, {
|
||
name: "InMyanmar_Extended_A",
|
||
bmp: "ꩠ-ꩿ"
|
||
}, {
|
||
name: "InNKo",
|
||
bmp: "߀-߿"
|
||
}, {
|
||
name: "InNew_Tai_Lue",
|
||
bmp: "ᦀ-᧟"
|
||
}, {
|
||
name: "InNumber_Forms",
|
||
bmp: "⅐-"
|
||
}, {
|
||
name: "InOgham",
|
||
bmp: " -"
|
||
}, {
|
||
name: "InOl_Chiki",
|
||
bmp: "᱐-᱿"
|
||
}, {
|
||
name: "InOld_Italic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InOld_Persian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InOld_South_Arabian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InOld_Turkic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InOptical_Character_Recognition",
|
||
bmp: "⑀-"
|
||
}, {
|
||
name: "InOriya",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InOsmanya",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InPhags_pa",
|
||
bmp: "ꡀ-"
|
||
}, {
|
||
name: "InPhaistos_Disc",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InPhoenician",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InPhonetic_Extensions",
|
||
bmp: "ᴀ-ᵿ"
|
||
}, {
|
||
name: "InPhonetic_Extensions_Supplement",
|
||
bmp: "ᶀ-ᶿ"
|
||
}, {
|
||
name: "InPlaying_Cards",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InPrivate_Use_Area",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InRejang",
|
||
bmp: "ꤰ-꥟"
|
||
}, {
|
||
name: "InRumi_Numeral_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InRunic",
|
||
bmp: "ᚠ-"
|
||
}, {
|
||
name: "InSamaritan",
|
||
bmp: "ࠀ-"
|
||
}, {
|
||
name: "InSaurashtra",
|
||
bmp: "ꢀ-"
|
||
}, {
|
||
name: "InSharada",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InShavian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InSinhala",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InSmall_Form_Variants",
|
||
bmp: "﹐-"
|
||
}, {
|
||
name: "InSora_Sompeng",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InSpacing_Modifier_Letters",
|
||
bmp: "ʰ-˿"
|
||
}, {
|
||
name: "InSpecials",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InSundanese",
|
||
bmp: "ᮀ-ᮿ"
|
||
}, {
|
||
name: "InSundanese_Supplement",
|
||
bmp: "᳀-"
|
||
}, {
|
||
name: "InSuperscripts_and_Subscripts",
|
||
bmp: "⁰-"
|
||
}, {
|
||
name: "InSupplemental_Arrows_A",
|
||
bmp: "⟰-⟿"
|
||
}, {
|
||
name: "InSupplemental_Arrows_B",
|
||
bmp: "⤀-⥿"
|
||
}, {
|
||
name: "InSupplemental_Mathematical_Operators",
|
||
bmp: "⨀-⫿"
|
||
}, {
|
||
name: "InSupplemental_Punctuation",
|
||
bmp: "⸀-"
|
||
}, {
|
||
name: "InSupplementary_Private_Use_Area_A",
|
||
astral: "[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InSupplementary_Private_Use_Area_B",
|
||
astral: "[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InSyloti_Nagri",
|
||
bmp: "ꠀ-"
|
||
}, {
|
||
name: "InSyriac",
|
||
bmp: "܀-ݏ"
|
||
}, {
|
||
name: "InTagalog",
|
||
bmp: "ᜀ-ᜟ"
|
||
}, {
|
||
name: "InTagbanwa",
|
||
bmp: "ᝠ-"
|
||
}, {
|
||
name: "InTags",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InTai_Le",
|
||
bmp: "ᥐ-"
|
||
}, {
|
||
name: "InTai_Tham",
|
||
bmp: "ᨠ-"
|
||
}, {
|
||
name: "InTai_Viet",
|
||
bmp: "ꪀ-꫟"
|
||
}, {
|
||
name: "InTai_Xuan_Jing_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InTakri",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InTamil",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InTelugu",
|
||
bmp: "ఀ-౿"
|
||
}, {
|
||
name: "InThaana",
|
||
bmp: "ހ-"
|
||
}, {
|
||
name: "InThai",
|
||
bmp: "-"
|
||
}, {
|
||
name: "InTibetan",
|
||
bmp: "ༀ-"
|
||
}, {
|
||
name: "InTifinagh",
|
||
bmp: "ⴰ-⵿"
|
||
}, {
|
||
name: "InTransport_And_Map_Symbols",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InUgaritic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InUnified_Canadian_Aboriginal_Syllabics",
|
||
bmp: "᐀-ᙿ"
|
||
}, {
|
||
name: "InUnified_Canadian_Aboriginal_Syllabics_Extended",
|
||
bmp: "ᢰ-"
|
||
}, {
|
||
name: "InVai",
|
||
bmp: "ꔀ-"
|
||
}, {
|
||
name: "InVariation_Selectors",
|
||
bmp: "︀-️"
|
||
}, {
|
||
name: "InVariation_Selectors_Supplement",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "InVedic_Extensions",
|
||
bmp: "᳐-"
|
||
}, {
|
||
name: "InVertical_Forms",
|
||
bmp: "︐-"
|
||
}, {
|
||
name: "InYi_Radicals",
|
||
bmp: "꒐-"
|
||
}, {
|
||
name: "InYi_Syllables",
|
||
bmp: "ꀀ-"
|
||
}, {
|
||
name: "InYijing_Hexagram_Symbols",
|
||
bmp: "䷀-䷿"
|
||
} ]);
|
||
}(e), function(e) {
|
||
if (!e.addUnicodeData) throw new ReferenceError("Unicode Base must be loaded before Unicode Categories");
|
||
e.addUnicodeData([ {
|
||
name: "C",
|
||
alias: "Other",
|
||
isBmpLast: !0,
|
||
bmp: "\x00--Ϳ-Ԩ-ՠֈ-֎--ׯ-؝--߿-࢟ࢡࢭ-ࣣࣿॸঀ---ৼ------੶----୕------------ఀఄఴ-఼-ౚ--౷ಀಁ಄--ೝೳ-ഁഄ഻഼൏-ൖ൘-ൟ൶-൸ඁ-------ຆຉຌຎ-ຓຘຠຨຩຬ຺໎------Ᏽ--ᛱ-ᜍ᜕-ᜟ-----᠏-ᡸ---ᤝ-----------ᭌ-᭽----ᲀ-Ჿ-᳷-ᷧ-᷻----₻--↊-⏴-⏿--✀⭍-⭏⭚-⯿Ⱟⱟ-----⸼-----ㄮ-ㆻ-ㆿ-㋿䶶-䶿鿍-鿿---Ꚙ-ꚞ-ꞏꞔ-ꞟꞫ-ꟷ꠬---ꣅ--꣼-ꣿ---ꧠ--ꩼ-ꩿ----ꮿ-------﯂-﵀-﵏-﷾﷿-︧-︯-----",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><AF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><91><ED>-<2D><><ED><B1><BF><ED><B2><BD><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B3><AF><ED>-<2D><><ED><B3><BF><ED><B4><B5><ED>-<2D><><ED><B5><BF><ED>-<2D><><ED><B7><8F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><86><ED><B0><87><ED><B0><89><ED><B0><B6><ED>-<2D><><ED><B0><BB><ED><B0><BD><ED><B0><BE><ED><B1><96><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED><B4><9E><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><BF><ED>-<2D><><ED><B6><BD><ED>-<2D><><ED><B7><BF><ED><B8><84><ED>-<2D><><ED><B8><8B><ED><B8><94><ED><B8><98><ED>-<2D><><ED><B8><B7><ED>-<2D><><ED><B8><BE><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><B9><9F><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BC><B8><ED><BD><96><ED><BD><97><ED>-<2D><><ED><BD><B7><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BD><8F><ED>-<2D><><ED><BE><8E><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><8C><ED><B0><A7><ED><B0><BB><ED><B0><BE><ED><B1><8E><ED><B1><8F><ED>-<2D><><ED><B1><BF><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED><B4><86><ED>-<2D><><ED><B4><B6><ED>-<2D><><ED><B6><8F><ED>-<2D><><ED><B7><8F><ED>-<2D><><ED><B9><BF><ED>-<2D><><ED><BA><9F><ED>-<2D><><ED><BB><BF><ED><BC><9F><ED>-<2D><><ED><BC><AF><ED>-<2D><><ED><BD><BF><ED><BE><9E><ED>-<2D><><ED><BF><87><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B7><BF><ED><B8><84><ED><B8><A0><ED><B8><A3><ED><B8><A5><ED><B8><A6><ED><B8><A8><ED><B8><B3><ED><B8><B8><ED><B8><BA><ED>-<2D><><ED><B9><81><ED>-<2D><><ED><B9><86><ED><B9><88><ED><B9><8A><ED><B9><8C><ED><B9><90><ED><B9><93><ED><B9><95><ED><B9><96><ED><B9><98><ED><B9><9A><ED><B9><9C><ED><B9><9E><ED><B9><A0><ED><B9><A3><ED><B9><A5><ED><B9><A6><ED><B9><AB><ED><B9><B3><ED><B9><B8><ED><B9><BD><ED><B9><BF><ED><BA><8A><ED>-<2D><><ED><BA><A0><ED><BA><A4><ED><BA><AA><ED>-<2D><><ED><BB><AF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B9><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|[<5B><><ED><A0><86><ED><A0><87><ED><A0><8A><ED><A0><8B><ED>-<2D><><ED><A0><99><ED>-<2D><><ED><A0><AB><ED>-<2D><><ED><A0><B3><ED>-<2D><><ED><A0><BA><ED><A0><BE><ED><A0><BF><ED>-<2D><><ED><A1><BD><ED>-<2D><><ED><AC><BF><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><BF><ED><B1><81><ED><B3><B8><ED>-<2D><><ED><B3><BF><ED><B4><BE><ED><B4><BF><ED>-<2D><><ED><B5><8F><ED>-<2D><><ED><B7><BA><ED>-<2D><><ED><B9><84><ED>-<2D><><ED><B9><BF><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><AF><ED>-<2D><><ED><B2><9F><ED><B2><AF><ED><B2><B0><ED><B2><BF><ED><B3><80><ED><B3><90><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED><B4><8F><ED><B4><AF><ED>-<2D><><ED><B5><AF><ED>-<2D><><ED><B7><A5><ED>-<2D><><ED><B8><8F><ED>-<2D><><ED><B8><BF><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BC><AF><ED><BC><B6><ED>-<2D><><ED><BD><BF><ED>-<2D><><ED><BE><9F><ED><BF><85><ED>-<2D><><ED><BF><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B1><95><ED><B2><9D><ED><B2><A0><ED><B2><A1><ED><B2><A3><ED><B2><A4><ED><B2><A7><ED><B2><A8><ED><B2><AD><ED><B2><BA><ED><B2><BC><ED><B3><84><ED><B4><86><ED><B4><8B><ED><B4><8C><ED><B4><95><ED><B4><9D><ED><B4><BA><ED><B4><BF><ED><B5><85><ED>-<2D><><ED><B5><89><ED><B5><91><ED><BA><A6><ED><BA><A7><ED><BF><8C><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B3><BF><ED><B4><A7><ED><B4><A8><ED>-<2D><><ED><B5><BA><ED>-<2D><><ED><B7><BF><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BD><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B2><9E><ED><B2><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B9><BF><ED>-<2D><><ED><BA><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Cc",
|
||
alias: "Control",
|
||
bmp: "\x00--"
|
||
}, {
|
||
name: "Cf",
|
||
alias: "Format",
|
||
bmp: "------",
|
||
astral: "<22><><ED>[<5B><><ED><B0><81><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|"
|
||
}, {
|
||
name: "Cn",
|
||
alias: "Unassigned",
|
||
bmp: "Ϳ-Ԩ-ՠֈ-֎--ׯ-؝--߿-࢟ࢡࢭ-ࣣࣿॸঀ---ৼ------੶----୕------------ఀఄఴ-఼-ౚ--౷ಀಁ಄--ೝೳ-ഁഄ഻഼൏-ൖ൘-ൟ൶-൸ඁ-------ຆຉຌຎ-ຓຘຠຨຩຬ຺໎------Ᏽ--ᛱ-ᜍ᜕-ᜟ-----᠏-ᡸ---ᤝ-----------ᭌ-᭽----ᲀ-Ჿ-᳷-ᷧ-᷻--₻--↊-⏴-⏿--✀⭍-⭏⭚-⯿Ⱟⱟ-----⸼-----ㄮ-ㆻ-ㆿ-㋿䶶-䶿鿍-鿿---Ꚙ-ꚞ-ꞏꞔ-ꞟꞫ-ꟷ꠬---ꣅ--꣼-ꣿ---ꧠ--ꩼ-ꩿ----ꮿ-------﯂-﵀-﵏-﷾﷿-︧-︯----",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><80><ED>-<2D><><ED><B0><9F><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B3><BF><ED><B4><A7><ED><B4><A8><ED>-<2D><><ED><B7><BF><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BD><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><86><ED><B0><87><ED><B0><89><ED><B0><B6><ED>-<2D><><ED><B0><BB><ED><B0><BD><ED><B0><BE><ED><B1><96><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED><B4><9E><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><BF><ED>-<2D><><ED><B6><BD><ED>-<2D><><ED><B7><BF><ED><B8><84><ED>-<2D><><ED><B8><8B><ED><B8><94><ED><B8><98><ED>-<2D><><ED><B8><B7><ED>-<2D><><ED><B8><BE><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><B9><9F><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BC><B8><ED><BD><96><ED><BD><97><ED>-<2D><><ED><BD><B7><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BD><8F><ED>-<2D><><ED><BE><8E><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><AF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><8C><ED><B0><A7><ED><B0><BB><ED><B0><BE><ED><B1><8E><ED><B1><8F><ED>-<2D><><ED><B1><BF><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED><B4><86><ED>-<2D><><ED><B4><B6><ED>-<2D><><ED><B6><8F><ED>-<2D><><ED><B7><8F><ED>-<2D><><ED><B9><BF><ED>-<2D><><ED><BA><9F><ED>-<2D><><ED><BB><BF><ED><BC><9F><ED>-<2D><><ED><BC><AF><ED>-<2D><><ED><BD><BF><ED><BE><9E><ED>-<2D><><ED><BF><87><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><91><ED>-<2D><><ED><B1><BF><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B3><AF><ED>-<2D><><ED><B3><BF><ED><B4><B5><ED>-<2D><><ED><B5><BF><ED>-<2D><><ED><B7><8F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B7><BF><ED><B8><84><ED><B8><A0><ED><B8><A3><ED><B8><A5><ED><B8><A6><ED><B8><A8><ED><B8><B3><ED><B8><B8><ED><B8><BA><ED>-<2D><><ED><B9><81><ED>-<2D><><ED><B9><86><ED><B9><88><ED><B9><8A><ED><B9><8C><ED><B9><90><ED><B9><93><ED><B9><95><ED><B9><96><ED><B9><98><ED><B9><9A><ED><B9><9C><ED><B9><9E><ED><B9><A0><ED><B9><A3><ED><B9><A5><ED><B9><A6><ED><B9><AB><ED><B9><B3><ED><B9><B8><ED><B9><BD><ED><B9><BF><ED><BA><8A><ED>-<2D><><ED><BA><A0><ED><BA><A4><ED><BA><AA><ED>-<2D><><ED><BB><AF><ED>-<2D><><ED>]|[<5B><><ED><AE><BF><ED>][<5B><><ED><BF><BE><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B9><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|[<5B><><ED><A0><86><ED><A0><87><ED><A0><8A><ED><A0><8B><ED>-<2D><><ED><A0><99><ED>-<2D><><ED><A0><AB><ED>-<2D><><ED><A0><B3><ED>-<2D><><ED><A0><BA><ED><A0><BE><ED><A0><BF><ED>-<2D><><ED><A1><BD><ED>-<2D><><ED><AC><BF><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><BF><ED><B1><81><ED><B3><B8><ED>-<2D><><ED><B3><BF><ED><B4><BE><ED><B4><BF><ED>-<2D><><ED><B5><8F><ED>-<2D><><ED><B7><BA><ED>-<2D><><ED><B9><84><ED>-<2D><><ED><B9><BF><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><AF><ED>-<2D><><ED><B2><9F><ED><B2><AF><ED><B2><B0><ED><B2><BF><ED><B3><80><ED><B3><90><ED>-<2D><><ED><B3><BF><ED>-<2D><><ED><B4><8F><ED><B4><AF><ED>-<2D><><ED><B5><AF><ED>-<2D><><ED><B7><A5><ED>-<2D><><ED><B8><8F><ED>-<2D><><ED><B8><BF><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><BB><BF><ED>-<2D><><ED><BC><AF><ED><BC><B6><ED>-<2D><><ED><BD><BF><ED>-<2D><><ED><BE><9F><ED><BF><85><ED>-<2D><><ED><BF><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B1><95><ED><B2><9D><ED><B2><A0><ED><B2><A1><ED><B2><A3><ED><B2><A4><ED><B2><A7><ED><B2><A8><ED><B2><AD><ED><B2><BA><ED><B2><BC><ED><B3><84><ED><B4><86><ED><B4><8B><ED><B4><8C><ED><B4><95><ED><B4><9D><ED><B4><BA><ED><B4><BF><ED><B5><85><ED>-<2D><><ED><B5><89><ED><B5><91><ED><BA><A6><ED><BA><A7><ED><BF><8C><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B2><9E><ED><B2><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B9><BF><ED>-<2D><><ED><BA><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Co",
|
||
alias: "Private_Use",
|
||
bmp: "-",
|
||
astral: "[<5B><><ED>-<2D><><ED><AE><BE><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|[<5B><><ED><AE><BF><ED>][<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Cs",
|
||
alias: "Surrogate",
|
||
bmp: "<22><><ED>-<2D><><ED>"
|
||
}, {
|
||
name: "Ll",
|
||
alias: "Lowercase_Letter",
|
||
bmp: "a-zµß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌƍƒƕƙ-ƛƞơƣƥƨƪƫƭưƴƶƹƺƽ-ƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿɀɂɇɉɋɍɏ-ʓʕ-ʯͱͳͷͻ-ͽΐά-ώϐϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧա-ևᴀ-ᴫᵫ-ᵷᵹ-ᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷιῂ-ῄῆῇῐ-ΐῖῗῠ-ῧῲ-ῴῶῷℊℎℏℓℯℴℹℼℽⅆ-ⅉⅎↄⰰ-ⱞⱡⱥⱦⱨⱪⱬⱱⱳⱴⱶ-ⱻⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⳬⳮⳳⴀ-ⴥⴧⴭꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝱ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌꞎꞑꞓꞡꞣꞥꞧꞩꟺff-stﬓ-ﬗa-z",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><B3><ED>-<2D><><ED><B1><94><ED>-<2D><><ED><B1><A7><ED>-<2D><><ED><B2><9B><ED>-<2D><><ED><B2><B9><ED><B2><BB><ED>-<2D><><ED><B3><83><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B4><83><ED>-<2D><><ED><B4><B7><ED>-<2D><><ED><B5><AB><ED>-<2D><><ED><B6><9F><ED>-<2D><><ED><B7><93><ED>-<2D><><ED><B8><87><ED>-<2D><><ED><B8><BB><ED>-<2D><><ED><B9><AF><ED>-<2D><><ED><BA><A5><ED>-<2D><><ED><BB><9A><ED>-<2D><><ED><BB><A1><ED>-<2D><><ED><BC><94><ED>-<2D><><ED><BC><9B><ED>-<2D><><ED><BD><8E><ED>-<2D><><ED><BD><95><ED>-<2D><><ED><BE><88><ED>-<2D><><ED><BE><8F><ED>-<2D><><ED><BF><82><ED>-<2D><><ED><BF><89><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Lm",
|
||
alias: "Modifier_Letter",
|
||
bmp: "ʰ-ˁˆ-ˑˠ-ˤˬˮʹͺՙـۥۦߴߵߺࠚࠤࠨॱๆໆჼៗᡃᪧᱸ-ᱽᴬ-ᵪᵸᶛ-ᶿⁱⁿₐ-ₜⱼⱽⵯⸯ々〱-〵〻ゝゞー-ヾꀕꓸ-ꓽꘌꙿꜗ-ꜟꝰꞈꟸꟹꧏꩰꫝꫳꫴー゙゚",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Lo",
|
||
alias: "Other_Letter",
|
||
bmp: "ªºƻǀ-ǃʔא-תװ-ײؠ-ؿف-يٮٯٱ-ۓەۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪࠀ-ࠕࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॲ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๅກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎა-ჺჽ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៜᠠ-ᡂᡄ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱷᳩ-ᳬᳮ-ᳱᳵᳶℵ-ℸⴰ-ⵧⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ〆〼ぁ-ゖゟァ-ヺヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꀔꀖ-ꒌꓐ-ꓷꔀ-ꘋꘐ-ꘟꘪꘫꙮꚠ-ꛥꟻ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩯꩱ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛꫜꫠ-ꫪꫲꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎יִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼヲ-ッア-ンᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><85><ED><B0><88><ED>-<2D><><ED><B0><B5><ED><B0><B7><ED><B0><B8><ED><B0><BC><ED>-<2D><><ED><B1><95><ED>-<2D><><ED><B4><95><ED>-<2D><><ED><B4><B9><ED>-<2D><><ED><B6><B7><ED><B6><BE><ED><B6><BF><ED><B8><80><ED>-<2D><><ED><B8><93><ED>-<2D><><ED><B8><97><ED>-<2D><><ED><B8><B3><ED>-<2D><><ED><B9><BC><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED><BD><95><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><8B><ED>-<2D><><ED><B0><A6><ED>-<2D><><ED><B0><BA><ED><B0><BC><ED><B0><BD><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED><B1><9D><ED>-<2D><><ED><B3><BA><ED>-<2D><><ED><BA><9C><ED>-<2D><><ED><BB><90><ED>-<2D><><ED><BC><9E><ED>-<2D><><ED><BD><80><ED>-<2D><><ED><BD><89><ED>-<2D><><ED><BE><9D><ED>-<2D><><ED><BF><83><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><B7><ED>-<2D><><ED><B2><AF><ED>-<2D><><ED><B3><A8><ED>-<2D><><ED><B4><A6><ED>-<2D><><ED><B6><B2><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BD><84><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><80><ED>]|[<5B><><ED><A0><8C><ED>-<2D><><ED><A1><A8><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED>-<2D><><ED><B8><9F><ED><B8><A1><ED><B8><A2><ED><B8><A4><ED><B8><A7><ED>-<2D><><ED><B8><B2><ED>-<2D><><ED><B8><B7><ED><B8><B9><ED><B8><BB><ED><B9><82><ED><B9><87><ED><B9><89><ED><B9><8B><ED>-<2D><><ED><B9><8F><ED><B9><91><ED><B9><92><ED><B9><94><ED><B9><97><ED><B9><99><ED><B9><9B><ED><B9><9D><ED><B9><9F><ED><B9><A1><ED><B9><A2><ED><B9><A4><ED>-<2D><><ED><B9><AA><ED>-<2D><><ED><B9><B2><ED>-<2D><><ED><B9><B7><ED>-<2D><><ED><B9><BC><ED><B9><BE><ED>-<2D><><ED><BA><89><ED>-<2D><><ED><BA><9B><ED>-<2D><><ED><BA><A3><ED>-<2D><><ED><BA><A9><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BB><96><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Lt",
|
||
alias: "Titlecase_Letter",
|
||
bmp: "DžLjNjDzᾈ-ᾏᾘ-ᾟᾨ-ᾯᾼῌῼ"
|
||
}, {
|
||
name: "Lu",
|
||
alias: "Uppercase_Letter",
|
||
bmp: "A-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉ-ƋƎ-ƑƓƔƖ-ƘƜƝƟƠƢƤƦƧƩƬƮƯƱ-ƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃ-ɆɈɊɌɎͰͲͶΆΈ-ΊΌΎΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԱ-ՖႠ-ჅჇჍḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾℿⅅↃⰀ-ⰮⱠⱢ-ⱤⱧⱩⱫⱭ-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞠꞢꞤꞦꞨꞪA-Z",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><99><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED><B2><81><ED><B2><9C><ED><B2><9E><ED><B2><9F><ED><B2><A2><ED><B2><A5><ED><B2><A6><ED>-<2D><><ED><B2><AC><ED>-<2D><><ED><B2><B5><ED>-<2D><><ED><B3><A9><ED><B4><84><ED><B4><85><ED>-<2D><><ED><B4><8A><ED>-<2D><><ED><B4><94><ED>-<2D><><ED><B4><9C><ED><B4><B8><ED><B4><B9><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><84><ED><B5><86><ED>-<2D><><ED><B5><90><ED>-<2D><><ED><B6><85><ED>-<2D><><ED><B6><B9><ED>-<2D><><ED><B7><AD><ED>-<2D><><ED><B8><A1><ED>-<2D><><ED><B9><95><ED>-<2D><><ED><BA><89><ED>-<2D><><ED><BB><80><ED>-<2D><><ED><BB><BA><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED><BD><AE><ED>-<2D><><ED><BE><A8><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "M",
|
||
alias: "Mark",
|
||
bmp: "̀-ͯ҃-҉֑-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ࣾऀ-ःऺ-़ा-ॏ॑-ॗॢॣঁ-ঃ়া-ৄেৈো-্ৗৢৣਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑੰੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣஂா-ூெ-ைொ-்ௗఁ-ఃా-ౄె-ైొ-్ౕౖౢౣಂಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣംഃാ-ൄെ-ൈൊ-്ൗൢൣංඃ්ා-ුූෘ-ෟෲෳัิ-ฺ็-๎ັິ-ູົຼ່-ໍ༹༘༙༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏႚ-ႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝᠋-᠍ᢩᤠ-ᤫᤰ-᤻ᦰ-ᧀᧈᧉᨗ-ᨛᩕ-ᩞ᩠-᩿᩼ᬀ-ᬄ᬴-᭄᭫-᭳ᮀ-ᮂᮡ-ᮭ᯦-᯳ᰤ-᰷᳐-᳔᳒-᳨᳭ᳲ-᳴᷀-ᷦ᷼-᷿⃐-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꙯-꙲ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-꣄꣠-꣱ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀ꨩ-ꨶꩃꩌꩍꩻꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭ﬞ︀-️︠-︦",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B5><A9><ED>-<2D><><ED><B5><B2><ED>-<2D><><ED><B6><82><ED>-<2D><><ED><B6><8B><ED>-<2D><><ED><B6><AD><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED><B8><85><ED><B8><86><ED>-<2D><><ED><B8><8F><ED>-<2D><><ED><B8><BA><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BD><BE><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><82><ED>-<2D><><ED><B1><86><ED>-<2D><><ED><B2><82><ED>-<2D><><ED><B2><BA><ED>-<2D><><ED><B4><82><ED>-<2D><><ED><B4><B4><ED>-<2D><><ED><B6><82><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|𐇽|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Mc",
|
||
alias: "Spacing_Mark",
|
||
bmp: "ःऻा-ीॉ-ौॎॏংঃা-ীেৈোৌৗਃਾ-ੀઃા-ીૉોૌଂଃାୀେୈୋୌୗாிுூெ-ைொ-ௌௗఁ-ఃు-ౄಂಃಾೀ-ೄೇೈೊೋೕೖംഃാ-ീെ-ൈൊ-ൌൗංඃා-ෑෘ-ෟෲෳ༾༿ཿါာေးျြၖၗၢ-ၤၧ-ၭႃႄႇ-ႌႏႚ-ႜាើ-ៅះៈᤣ-ᤦᤩ-ᤫᤰᤱᤳ-ᤸᦰ-ᧀᧈᧉᨙ-ᨛᩕᩗᩡᩣᩤᩭ-ᩲᬄᬵᬻᬽ-ᭁᭃ᭄ᮂᮡᮦᮧ᮪ᮬᮭᯧᯪ-ᯬᯮ᯲᯳ᰤ-ᰫᰴᰵ᳡ᳲᳳ〮〯ꠣꠤꠧꢀꢁꢴ-ꣃꥒ꥓ꦃꦴꦵꦺꦻꦽ-꧀ꨯꨰꨳꨴꩍꩻꫫꫮꫯꫵꯣꯤꯦꯧꯩꯪ꯬",
|
||
astral: "<22><><ED>[<5B><><ED><B5><A5><ED><B5><A6><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><80><ED><B0><82><ED><B2><82><ED>-<2D><><ED><B2><B2><ED><B2><B7><ED><B2><B8><ED><B4><AC><ED><B6><82><ED>-<2D><><ED><B6><B5><ED><B6><BF><ED>]|<7C><><ED>[<5B><><ED><BA><AC><ED><BA><AE><ED><BA><AF><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Me",
|
||
alias: "Enclosing_Mark",
|
||
bmp: "҈҉⃝-⃠⃢-⃤꙰-꙲"
|
||
}, {
|
||
name: "Mn",
|
||
alias: "Nonspacing_Mark",
|
||
bmp: "̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣤ-ࣾऀ-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣଁ଼ିୁ-ୄ୍ୖୢୣஂீ்ా-ీె-ైొ-్ౕౖౢౣ಼ಿೆೌ್ೢೣു-ൄ്ൢൣ්ි-ුූัิ-ฺ็-๎ັິ-ູົຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍ᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼ᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᯦᮫ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᷀-ᷦ᷼-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꣄꣠-꣱ꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꨩ-ꨮꨱꨲꨵꨶꩃꩌꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︦",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED><B8><85><ED><B8><86><ED>-<2D><><ED><B8><8F><ED>-<2D><><ED><B8><BA><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B5><A9><ED>-<2D><><ED><B6><82><ED>-<2D><><ED><B6><8B><ED>-<2D><><ED><B6><AD><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><BA><AB><ED><BA><AD><ED>-<2D><><ED><BA><B5><ED>]|<7C><><ED>[<5B><><ED><B0><81><ED>-<2D><><ED><B1><86><ED><B2><80><ED><B2><81><ED>-<2D><><ED><B2><B6><ED><B2><B9><ED><B2><BA><ED>-<2D><><ED><B4><82><ED>-<2D><><ED><B4><AB><ED>-<2D><><ED><B4><B4><ED><B6><80><ED><B6><81><ED>-<2D><><ED>]|𐇽|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "N",
|
||
alias: "Number",
|
||
bmp: "0-9²³¹¼-¾٠-٩۰-۹߀-߉०-९০-৯৴-৹੦-੯૦-૯୦-୯୲-୷௦-௲౦-౯౸-౾೦-೯൦-൵๐-๙໐-໙༠-༳၀-၉႐-႙፩-፼ᛮ-ᛰ០-៩៰-៹᠐-᠙᥆-᥏᧐-᧚᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙⁰⁴-⁹₀-₉⅐-ↂↅ-↉①-⒛⓪-⓿❶-➓⳽〇〡-〩〸-〺㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꘠-꘩ꛦ-ꛯ꠰-꠵꣐-꣙꤀-꤉꧐-꧙꩐-꩙꯰-꯹0-9",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B1><9F><ED>-<2D><><ED><B4><9B><ED>-<2D><><ED><B9><87><ED><B9><BD><ED><B9><BE><ED>-<2D><><ED><BD><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B4><B3><ED>-<2D><><ED><B5><B8><ED><B6><8A><ED>-<2D><><ED><BC><A3><ED><BD><81><ED><BD><8A><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><AF><ED>-<2D><><ED><B3><B9><ED>-<2D><><ED><B4><BF><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Nd",
|
||
alias: "Decimal_Number",
|
||
bmp: "0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꩐-꩙꯰-꯹0-9",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B1><AF><ED>-<2D><><ED><B3><B9><ED>-<2D><><ED><B4><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Nl",
|
||
alias: "Letter_Number",
|
||
bmp: "ᛮ-ᛰⅠ-ↂↅ-ↈ〇〡-〩〸-〺ꛦ-ꛯ",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B5><B4><ED><BD><81><ED><BD><8A><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "No",
|
||
alias: "Other_Number",
|
||
bmp: "²³¹¼-¾৴-৹୲-୷௰-௲౸-౾൰-൵༪-༳፩-፼៰-៹᧚⁰⁴-⁹₀-₉⅐-⅟↉①-⒛⓪-⓿❶-➓⳽㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꠰-꠵",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B1><9F><ED>-<2D><><ED><B4><9B><ED>-<2D><><ED><B9><87><ED><B9><BD><ED><B9><BE><ED>-<2D><><ED><BD><9F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B4><B3><ED>-<2D><><ED><B5><B8><ED><B6><8A><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "P",
|
||
alias: "Punctuation",
|
||
bmp: "!-#%-\\x2A,-/:;\\x3F@\\x5B-\\x5D_\\x7B}¡§«¶·»¿;·՚-՟։֊־׀׃׆׳״؉؊،؍؛؞؟٪-٭۔܀-܍߷-߹࠰-࠾࡞।॥॰૰෴๏๚๛༄-༒༔༺-༽྅࿐-࿔࿙࿚၊-၏჻፠-፨᐀᙭᙮᚛᚜᛫-᛭᜵᜶។-៖៘-៚᠀-᠊᥄᥅᨞᨟᪠-᪦᪨-᪭᭚-᭠᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‐-‧‰-⁃⁅-⁑⁓-⁞⁽⁾₍₎〈〉❨-❵⟅⟆⟦-⟯⦃-⦘⧘-⧛⧼⧽⳹-⳼⳾⳿⵰⸀-⸮⸰-⸻、-〃〈-】〔-〟〰〽゠・꓾꓿꘍-꘏꙳꙾꛲-꛷꡴-꡷꣎꣏꣸-꣺꤮꤯꥟꧁-꧍꧞꧟꩜-꩟꫞꫟꫰꫱꯫﴾﴿︐-︙︰-﹒﹔-﹡﹣﹨﹪﹫!-#%-*,-/:;?@[-]_{}⦅-・",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B1><97><ED><B4><9F><ED><B4><BF><ED>-<2D><><ED><B9><98><ED><B9><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B4><82><ED><BE><9F><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><8D><ED><B2><BB><ED><B2><BC><ED>-<2D><><ED><B3><81><ED>-<2D><><ED><B5><83><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Pc",
|
||
alias: "Connector_Punctuation",
|
||
bmp: "_‿⁀⁔︳︴﹍-﹏_"
|
||
}, {
|
||
name: "Pd",
|
||
alias: "Dash_Punctuation",
|
||
bmp: "\\x2D֊־᐀᠆‐-―⸗⸚⸺⸻〜〰゠︱︲﹘﹣-"
|
||
}, {
|
||
name: "Pe",
|
||
alias: "Close_Punctuation",
|
||
bmp: "\\x29\\x5D}༻༽᚜⁆⁾₎〉❩❫❭❯❱❳❵⟆⟧⟩⟫⟭⟯⦄⦆⦈⦊⦌⦎⦐⦒⦔⦖⦘⧙⧛⧽⸣⸥⸧⸩〉》」』】〕〗〙〛〞〟﴿︘︶︸︺︼︾﹀﹂﹄﹈﹚﹜﹞)]}⦆」"
|
||
}, {
|
||
name: "Pf",
|
||
alias: "Final_Punctuation",
|
||
bmp: "»’”›⸃⸅⸊⸍⸝⸡"
|
||
}, {
|
||
name: "Pi",
|
||
alias: "Initial_Punctuation",
|
||
bmp: "«‘‛“‟‹⸂⸄⸉⸌⸜⸠"
|
||
}, {
|
||
name: "Po",
|
||
alias: "Other_Punctuation",
|
||
bmp: "!-#%-'\\x2A,\\x2E/:;\\x3F@\\x5C¡§¶·¿;·՚-՟։׀׃׆׳״؉؊،؍؛؞؟٪-٭۔܀-܍߷-߹࠰-࠾࡞।॥॰૰෴๏๚๛༄-༒༔྅࿐-࿔࿙࿚၊-၏჻፠-፨᙭᙮᛫-᛭᜵᜶។-៖៘-៚᠀-᠅᠇-᠊᥄᥅᨞᨟᪠-᪦᪨-᪭᭚-᭠᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‖‗†-‧‰-‸※-‾⁁-⁃⁇-⁑⁓⁕-⁞⳹-⳼⳾⳿⵰⸀⸁⸆-⸈⸋⸎-⸖⸘⸙⸛⸞⸟⸪-⸮⸰-⸹、-〃〽・꓾꓿꘍-꘏꙳꙾꛲-꛷꡴-꡷꣎꣏꣸-꣺꤮꤯꥟꧁-꧍꧞꧟꩜-꩟꫞꫟꫰꫱꯫︐-︖︙︰﹅﹆﹉-﹌﹐-﹒﹔-﹗﹟-﹡﹨﹪﹫!-#%-'*,./:;?@\。、・",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B1><97><ED><B4><9F><ED><B4><BF><ED>-<2D><><ED><B9><98><ED><B9><BF><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B4><82><ED><BE><9F><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><8D><ED><B2><BB><ED><B2><BC><ED>-<2D><><ED><B3><81><ED>-<2D><><ED><B5><83><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Ps",
|
||
alias: "Open_Punctuation",
|
||
bmp: "\\x28\\x5B\\x7B༺༼᚛‚„⁅⁽₍〈❨❪❬❮❰❲❴⟅⟦⟨⟪⟬⟮⦃⦅⦇⦉⦋⦍⦏⦑⦓⦕⦗⧘⧚⧼⸢⸤⸦⸨〈《「『【〔〖〘〚〝﴾︗︵︷︹︻︽︿﹁﹃﹇﹙﹛﹝([{⦅「"
|
||
}, {
|
||
name: "S",
|
||
alias: "Symbol",
|
||
bmp: "\\x24\\x2B<->\\x5E`\\x7C~¢-¦¨©¬®-±´¸×÷˂-˅˒-˟˥-˫˭˯-˿͵΄΅϶҂֏؆-؈؋؎؏۞۩۽۾߶৲৳৺৻૱୰௳-௺౿൹฿༁-༃༓༕-༗༚-༟༴༶༸྾-࿅࿇-࿌࿎࿏࿕-࿘႞႟᎐-᎙៛᥀᧞-᧿᭡-᭪᭴-᭼᾽᾿-῁῍-῏῝-῟῭-`´῾⁄⁒⁺-⁼₊-₌₠-₺℀℁℃-℆℈℉℔№-℘℞-℣℥℧℩℮℺℻⅀-⅄⅊-⅍⅏←-⌨⌫-⏳␀-␦⑀-⑊⒜-ⓩ─-⛿✁-❧➔-⟄⟇-⟥⟰-⦂⦙-⧗⧜-⧻⧾-⭌⭐-⭙⳥-⳪⺀-⺙⺛-⻳⼀-⿕⿰-⿻〄〒〓〠〶〷〾〿゛゜㆐㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉇㉐㉠-㉿㊊-㊰㋀-㋾㌀-㏿䷀-䷿꒐-꓆꜀-꜖꜠꜡꞉꞊꠨-꠫꠶-꠹꩷-꩹﬩﮲-﯁﷼﷽﹢﹤-﹦﹩$+<->^`|~¢-₩│-○<EFBFAE>",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><BE><ED><B1><80><ED>-<2D><><ED><B3><B7><ED>-<2D><><ED><B3><BC><ED>-<2D><><ED><B4><BD><ED>-<2D><><ED><B5><83><ED>-<2D><><ED><B5><A7><ED>-<2D><><ED><B9><80><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><BB><85><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><BB><81><ED><BB><9B><ED><BB><BB><ED><BC><95><ED><BC><B5><ED><BD><8F><ED><BD><AF><ED><BE><89><ED><BE><A9><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><AB><ED>-<2D><><ED><B2><93><ED>-<2D><><ED><B2><AE><ED>-<2D><><ED><B2><BE><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B3><9F><ED>-<2D><><ED><B4><AE><ED>-<2D><><ED><B5><AB><ED>-<2D><><ED><B6><9A><ED>-<2D><><ED><B8><82><ED>-<2D><><ED><B8><BA><ED>-<2D><><ED><B9><88><ED><B9><90><ED><B9><91><ED>-<2D><><ED><BC><A0><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED><BD><BC><ED>-<2D><><ED><BE><93><ED>-<2D><><ED><BF><84><ED>-<2D><><ED><BF><8A><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B3><B5><ED>-<2D><><ED><B4><A6><ED>-<2D><><ED><B5><A4><ED>-<2D><><ED><B5><AC><ED><B6><83><ED><B6><84><ED>-<2D><><ED><B6><A9><ED>-<2D><><ED><B7><9D><ED>-<2D><><ED><B9><81><ED><B9><85><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B4><BF><ED>-<2D><><ED><B6><89><ED>-<2D><><ED><B6><9B><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><BB><B0><ED>]"
|
||
}, {
|
||
name: "Sc",
|
||
alias: "Currency_Symbol",
|
||
bmp: "\\x24¢-¥֏؋৲৳৻૱௹฿៛₠-₺꠸﷼﹩$¢£¥₩"
|
||
}, {
|
||
name: "Sk",
|
||
alias: "Modifier_Symbol",
|
||
bmp: "\\x5E`¨¯´¸˂-˅˒-˟˥-˫˭˯-˿͵΄΅᾽᾿-῁῍-῏῝-῟῭-`´῾゛゜꜀-꜖꜠꜡꞉꞊﮲-﯁^` ̄"
|
||
}, {
|
||
name: "Sm",
|
||
alias: "Math_Symbol",
|
||
bmp: "\\x2B<->\\x7C~¬±×÷϶؆-؈⁄⁒⁺-⁼₊-₌℘⅀-⅄⅋←-↔↚↛↠↣↦↮⇎⇏⇒⇔⇴-⋿⌈-⌋⌠⌡⍼⎛-⎳⏜-⏡▷◁◸-◿♯⟀-⟄⟇-⟥⟰-⟿⤀-⦂⦙-⧗⧜-⧻⧾-⫿⬰-⭄⭇-⭌﬩﹢﹤-﹦+<->|~¬←-↓",
|
||
astral: "<22><><ED>[<5B><><ED><BB><B0><ED>]|<7C><><ED>[<5B><><ED><BB><81><ED><BB><9B><ED><BB><BB><ED><BC><95><ED><BC><B5><ED><BD><8F><ED><BD><AF><ED><BE><89><ED><BE><A9><ED>]"
|
||
}, {
|
||
name: "So",
|
||
alias: "Other_Symbol",
|
||
bmp: "¦©®°҂؎؏۞۩۽۾߶৺୰௳-௸௺౿൹༁-༃༓༕-༗༚-༟༴༶༸྾-࿅࿇-࿌࿎࿏࿕-࿘႞႟᎐-᎙᥀᧞-᧿᭡-᭪᭴-᭼℀℁℃-℆℈℉℔№℗℞-℣℥℧℩℮℺℻⅊⅌⅍⅏↕-↙↜-↟↡↢↤↥↧-↭↯-⇍⇐⇑⇓⇕-⇳⌀-⌇⌌-⌟⌢-⌨⌫-⍻⍽-⎚⎴-⏛⏢-⏳␀-␦⑀-⑊⒜-ⓩ─-▶▸-◀◂-◷☀-♮♰-⛿✁-❧➔-➿⠀-⣿⬀-⬯⭅⭆⭐-⭙⳥-⳪⺀-⺙⺛-⻳⼀-⿕⿰-⿻〄〒〓〠〶〷〾〿㆐㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉇㉐㉠-㉿㊊-㊰㋀-㋾㌀-㏿䷀-䷿꒐-꓆꠨-꠫꠶꠷꠹꩷-꩹﷽¦│■○<EFBFAE>",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><BE><ED><B1><80><ED>-<2D><><ED><B3><B7><ED>-<2D><><ED><B3><BC><ED>-<2D><><ED><B4><BD><ED>-<2D><><ED><B5><83><ED>-<2D><><ED><B5><A7><ED>-<2D><><ED><B9><80><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><BB><85><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B3><B5><ED>-<2D><><ED><B4><A6><ED>-<2D><><ED><B5><A4><ED>-<2D><><ED><B5><AC><ED><B6><83><ED><B6><84><ED>-<2D><><ED><B6><A9><ED>-<2D><><ED><B7><9D><ED>-<2D><><ED><B9><81><ED><B9><85><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><AB><ED>-<2D><><ED><B2><93><ED>-<2D><><ED><B2><AE><ED>-<2D><><ED><B2><BE><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B3><9F><ED>-<2D><><ED><B4><AE><ED>-<2D><><ED><B5><AB><ED>-<2D><><ED><B6><9A><ED>-<2D><><ED><B8><82><ED>-<2D><><ED><B8><BA><ED>-<2D><><ED><B9><88><ED><B9><90><ED><B9><91><ED>-<2D><><ED><BC><A0><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED><BD><BC><ED>-<2D><><ED><BE><93><ED>-<2D><><ED><BF><84><ED>-<2D><><ED><BF><8A><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B4><BF><ED>-<2D><><ED><B6><89><ED>-<2D><><ED><B6><9B><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Z",
|
||
alias: "Separator",
|
||
bmp: " - \u2028\u2029 "
|
||
}, {
|
||
name: "Zl",
|
||
alias: "Line_Separator",
|
||
bmp: "\u2028"
|
||
}, {
|
||
name: "Zp",
|
||
alias: "Paragraph_Separator",
|
||
bmp: "\u2029"
|
||
}, {
|
||
name: "Zs",
|
||
alias: "Space_Separator",
|
||
bmp: " - "
|
||
} ]);
|
||
}(e), function(e) {
|
||
if (!e.addUnicodeData) throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");
|
||
e.addUnicodeData([ {
|
||
name: "ASCII",
|
||
bmp: "\x00-"
|
||
}, {
|
||
name: "Alphabetic",
|
||
bmp: "A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͅͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևְ-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-ٗٙ-ٟٮ-ۓە-ۜۡ-ۭۨ-ۯۺ-ۼۿܐ-ܿݍ-ޱߊ-ߪߴߵߺࠀ-ࠗࠚ-ࠬࡀ-ࡘࢠࢢ-ࢬࣤ-ࣰࣩ-ࣾऀ-ऻऽ-ौॎ-ॐॕ-ॣॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হঽ-ৄেৈোৌৎৗড়ঢ়য়-ৣৰৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਾ-ੂੇੈੋੌੑਖ਼-ੜਫ਼ੰ-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽ-ૅે-ૉોૌૐૠ-ૣଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽ-ୄେୈୋୌୖୗଡ଼ଢ଼ୟ-ୣୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-ௌௐௗఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-ౌౕౖౘౙౠ-ౣಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ೄೆ-ೈೊ-ೌೕೖೞೠ-ೣೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൌൎൗൠ-ൣൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆා-ුූෘ-ෟෲෳก-ฺเ-ๆํກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆໍໜ-ໟༀཀ-ཇཉ-ཬཱ-ཱྀྈ-ྗྙ-ྼက-ံးျ-ဿၐ-ၢၥ-ၨၮ-ႆႎႜႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜓᜠ-ᜳᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-ឳា-ៈៗៜᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-ᤸᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨛᨠ-ᩞᩡ-ᩴᪧᬀ-ᬳᬵ-ᭃᭅ-ᭋᮀ-ᮩᮬ-ᮯᮺ-ᯥᯧ-ᯱᰀ-ᰵᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳳᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⒶ-ⓩⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙴ-ꙻꙿ-ꚗꚟ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠧꡀ-ꡳꢀ-ꣃꣲ-ꣷꣻꤊ-ꤪꤰ-ꥒꥠ-ꥼꦀ-ꦲꦴ-ꦿꧏꨀ-ꨶꩀ-ꩍꩠ-ꩶꩺꪀ-ꪾꫀꫂꫛ-ꫝꫠ-ꫯꫲ-ꫵꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><85><ED>-<2D><><ED><B2><B8><ED>-<2D><><ED><B3><A8><ED>-<2D><><ED><B4><B2><ED>-<2D><><ED><B6><BF><ED>-<2D><><ED>]|[<5B><><ED><A0><8C><ED>-<2D><><ED><A1><A8><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><85><ED><B0><88><ED>-<2D><><ED><B0><B5><ED><B0><B7><ED><B0><B8><ED><B0><BC><ED>-<2D><><ED><B1><95><ED>-<2D><><ED><B4><95><ED>-<2D><><ED><B4><B9><ED>-<2D><><ED><B6><B7><ED><B6><BE><ED><B6><BF><ED>-<2D><><ED><B8><83><ED><B8><85><ED><B8><86><ED>-<2D><><ED><B8><93><ED>-<2D><><ED><B8><97><ED>-<2D><><ED><B8><B3><ED>-<2D><><ED><B9><BC><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED><BD><95><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><8B><ED>-<2D><><ED><B0><A6><ED>-<2D><><ED><B0><BA><ED><B0><BC><ED><B0><BD><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED><B1><9D><ED>-<2D><><ED><B3><BA><ED>-<2D><><ED><B5><B4><ED>-<2D><><ED><BA><9C><ED>-<2D><><ED><BB><90><ED>-<2D><><ED><BC><9E><ED>-<2D><><ED><BD><8A><ED>-<2D><><ED><BE><9D><ED>-<2D><><ED><BF><83><ED>-<2D><><ED><BF><8F><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BD><84><ED>-<2D><><ED><BD><BE><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><94><ED>-<2D><><ED><B2><9C><ED><B2><9E><ED><B2><9F><ED><B2><A2><ED><B2><A5><ED><B2><A6><ED>-<2D><><ED><B2><AC><ED>-<2D><><ED><B2><B9><ED><B2><BB><ED>-<2D><><ED><B3><83><ED>-<2D><><ED><B4><85><ED>-<2D><><ED><B4><8A><ED>-<2D><><ED><B4><94><ED>-<2D><><ED><B4><9C><ED>-<2D><><ED><B4><B9><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><84><ED><B5><86><ED>-<2D><><ED><B5><90><ED>-<2D><><ED><BA><A5><ED>-<2D><><ED><BB><80><ED>-<2D><><ED><BB><9A><ED>-<2D><><ED><BB><BA><ED>-<2D><><ED><BC><94><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED><BD><8E><ED>-<2D><><ED><BD><AE><ED>-<2D><><ED><BE><88><ED>-<2D><><ED><BE><A8><ED>-<2D><><ED><BF><82><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED>-<2D><><ED><B8><9F><ED><B8><A1><ED><B8><A2><ED><B8><A4><ED><B8><A7><ED>-<2D><><ED><B8><B2><ED>-<2D><><ED><B8><B7><ED><B8><B9><ED><B8><BB><ED><B9><82><ED><B9><87><ED><B9><89><ED><B9><8B><ED>-<2D><><ED><B9><8F><ED><B9><91><ED><B9><92><ED><B9><94><ED><B9><97><ED><B9><99><ED><B9><9B><ED><B9><9D><ED><B9><9F><ED><B9><A1><ED><B9><A2><ED><B9><A4><ED>-<2D><><ED><B9><AA><ED>-<2D><><ED><B9><B2><ED>-<2D><><ED><B9><B7><ED>-<2D><><ED><B9><BC><ED><B9><BE><ED>-<2D><><ED><BA><89><ED>-<2D><><ED><BA><9B><ED>-<2D><><ED><BA><A3><ED>-<2D><><ED><BA><A9><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BB><96><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><80><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Any",
|
||
isBmpLast: !0,
|
||
bmp: "\x00-",
|
||
astral: "[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Assigned",
|
||
inverseOf: "Cn"
|
||
}, {
|
||
name: "Default_Ignorable_Code_Point",
|
||
bmp: "͏ᅟᅠ឴឵᠋-᠍---ㅤ︀-️ᅠ-",
|
||
astral: "[<5B><><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Lowercase",
|
||
bmp: "a-zªµºß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĸĺļľŀłńņňʼnŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌƍƒƕƙ-ƛƞơƣƥƨƪƫƭưƴƶƹƺƽ-ƿdžljnjǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰdzǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿɀɂɇɉɋɍɏ-ʓʕ-ʸˀˁˠ-ˤͅͱͳͷͺ-ͽΐά-ώϐϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧա-ևᴀ-ᶿḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷιῂ-ῄῆῇῐ-ΐῖῗῠ-ῧῲ-ῴῶῷⁱⁿₐ-ₜℊℎℏℓℯℴℹℼℽⅆ-ⅉⅎⅰ-ⅿↄⓐ-ⓩⰰ-ⱞⱡⱥⱦⱨⱪⱬⱱⱳⱴⱶ-ⱽⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⳬⳮⳳⴀ-ⴥⴧⴭꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌꞎꞑꞓꞡꞣꞥꞧꞩꟸ-ꟺff-stﬓ-ﬗa-z",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><B3><ED>-<2D><><ED><B1><94><ED>-<2D><><ED><B1><A7><ED>-<2D><><ED><B2><9B><ED>-<2D><><ED><B2><B9><ED><B2><BB><ED>-<2D><><ED><B3><83><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B4><83><ED>-<2D><><ED><B4><B7><ED>-<2D><><ED><B5><AB><ED>-<2D><><ED><B6><9F><ED>-<2D><><ED><B7><93><ED>-<2D><><ED><B8><87><ED>-<2D><><ED><B8><BB><ED>-<2D><><ED><B9><AF><ED>-<2D><><ED><BA><A5><ED>-<2D><><ED><BB><9A><ED>-<2D><><ED><BB><A1><ED>-<2D><><ED><BC><94><ED>-<2D><><ED><BC><9B><ED>-<2D><><ED><BD><8E><ED>-<2D><><ED><BD><95><ED>-<2D><><ED><BE><88><ED>-<2D><><ED><BE><8F><ED>-<2D><><ED><BF><82><ED>-<2D><><ED><BF><89><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Noncharacter_Code_Point",
|
||
bmp: "-",
|
||
astral: "[<5B><><ED><AC><BF><ED><AD><BF><ED><AE><BF><ED><AF><BF><ED><A0><BF><ED><A1><BF><ED><A2><BF><ED><AB><BF><ED><A5><BF><ED><A6><BF><ED><A7><BF><ED><A8><BF><ED><A3><BF><ED><AA><BF><ED><A9><BF><ED>][<5B><><ED><BF><BE><ED>]"
|
||
}, {
|
||
name: "Uppercase",
|
||
bmp: "A-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉ-ƋƎ-ƑƓƔƖ-ƘƜƝƟƠƢƤƦƧƩƬƮƯƱ-ƳƵƷƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃ-ɆɈɊɌɎͰͲͶΆΈ-ΊΌΎΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԱ-ՖႠ-ჅჇჍḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾℿⅅⅠ-ⅯↃⒶ-ⓏⰀ-ⰮⱠⱢ-ⱤⱧⱩⱫⱭ-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞠꞢꞤꞦꞨꞪA-Z",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><99><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED><B2><81><ED><B2><9C><ED><B2><9E><ED><B2><9F><ED><B2><A2><ED><B2><A5><ED><B2><A6><ED>-<2D><><ED><B2><AC><ED>-<2D><><ED><B2><B5><ED>-<2D><><ED><B3><A9><ED><B4><84><ED><B4><85><ED>-<2D><><ED><B4><8A><ED>-<2D><><ED><B4><94><ED>-<2D><><ED><B4><9C><ED><B4><B8><ED><B4><B9><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><84><ED><B5><86><ED>-<2D><><ED><B5><90><ED>-<2D><><ED><B6><85><ED>-<2D><><ED><B6><B9><ED>-<2D><><ED><B7><AD><ED>-<2D><><ED><B8><A1><ED>-<2D><><ED><B9><95><ED>-<2D><><ED><BA><89><ED>-<2D><><ED><BB><80><ED>-<2D><><ED><BB><BA><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED><BD><AE><ED>-<2D><><ED><BE><A8><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "White_Space",
|
||
bmp: " -\r
- \u2028\u2029 "
|
||
} ]);
|
||
}(e), function(e) {
|
||
if (!e.addUnicodeData) throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");
|
||
e.addUnicodeData([ {
|
||
name: "Arabic",
|
||
bmp: "-؆-؋؍-ؚ؞ؠ-ؿف-يٖ-ٟ٪-ٯٱ-ۜ۞-ۿݐ-ݿࢠࢢ-ࢬࣤ-ࣾﭐ-﯁ﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼ﹰ-ﹴﹶ-ﻼ",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED>-<2D><><ED><B8><9F><ED><B8><A1><ED><B8><A2><ED><B8><A4><ED><B8><A7><ED>-<2D><><ED><B8><B2><ED>-<2D><><ED><B8><B7><ED><B8><B9><ED><B8><BB><ED><B9><82><ED><B9><87><ED><B9><89><ED><B9><8B><ED>-<2D><><ED><B9><8F><ED><B9><91><ED><B9><92><ED><B9><94><ED><B9><97><ED><B9><99><ED><B9><9B><ED><B9><9D><ED><B9><9F><ED><B9><A1><ED><B9><A2><ED><B9><A4><ED>-<2D><><ED><B9><AA><ED>-<2D><><ED><B9><B2><ED>-<2D><><ED><B9><B7><ED>-<2D><><ED><B9><BC><ED><B9><BE><ED>-<2D><><ED><BA><89><ED>-<2D><><ED><BA><9B><ED>-<2D><><ED><BA><A3><ED>-<2D><><ED><BA><A9><ED>-<2D><><ED><BA><BB><ED><BB><B0><ED>]"
|
||
}, {
|
||
name: "Armenian",
|
||
bmp: "Ա-Ֆՙ-՟ա-և֊֏ﬓ-ﬗ"
|
||
}, {
|
||
name: "Avestan",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Balinese",
|
||
bmp: "ᬀ-ᭋ᭐-᭼"
|
||
}, {
|
||
name: "Bamum",
|
||
bmp: "ꚠ-꛷",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Batak",
|
||
bmp: "ᯀ-᯳᯼-᯿"
|
||
}, {
|
||
name: "Bengali",
|
||
bmp: "ঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-৻"
|
||
}, {
|
||
name: "Bopomofo",
|
||
bmp: "˪˫ㄅ-ㄭㆠ-ㆺ"
|
||
}, {
|
||
name: "Brahmi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Braille",
|
||
bmp: "⠀-⣿"
|
||
}, {
|
||
name: "Buginese",
|
||
bmp: "ᨀ-ᨛ᨞᨟"
|
||
}, {
|
||
name: "Buhid",
|
||
bmp: "ᝀ-ᝓ"
|
||
}, {
|
||
name: "Canadian_Aboriginal",
|
||
bmp: "᐀-ᙿᢰ-ᣵ"
|
||
}, {
|
||
name: "Carian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Chakma",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B4><B4><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Cham",
|
||
bmp: "ꨀ-ꨶꩀ-ꩍ꩐-꩙꩜-꩟"
|
||
}, {
|
||
name: "Cherokee",
|
||
bmp: "Ꭰ-Ᏼ"
|
||
}, {
|
||
name: "Common",
|
||
bmp: "\x00-@\\x5B-`\\x7B-©«-¹»-¿×÷ʹ-˟˥-˩ˬ-˿ʹ;΅·։،؛؟ـ٠-٩।॥฿࿕-࿘჻᛫-᛭᜵᜶᠂᠃᠅᳓᳡ᳩ-ᳬᳮ-ᳳᳵᳶ ---⁰⁴-⁾₀-₎₠-₺℀-℥℧-℩ℬ-ℱℳ-⅍⅏-⅟↉←-⏳␀-␦⑀-⑊①-⛿✁-⟿⤀-⭌⭐-⭙⸀-⸻⿰-⿻ -〄〆〈-〠〰-〷〼-〿゛゜゠・ー㆐-㆟㇀-㇣㈠-㉟㉿-㋏㍘-㏿䷀-䷿꜀-꜡ꞈ-꞊꠰-꠹﴾﴿﷽︐-︙︰-﹒﹔-﹦﹨-﹫!-@[-`{-・ー゙゚¢-₩│-○-<2D>",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B4><82><ED>-<2D><><ED><B4><B3><ED>-<2D><><ED><B4><BF><ED>-<2D><><ED><B6><9B><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><AB><ED>-<2D><><ED><B2><93><ED>-<2D><><ED><B2><AE><ED>-<2D><><ED><B2><BE><ED>-<2D><><ED><B3><8F><ED>-<2D><><ED><B3><9F><ED>-<2D><><ED><B4><8A><ED>-<2D><><ED><B4><AE><ED>-<2D><><ED><B5><AB><ED>-<2D><><ED><B6><9A><ED>-<2D><><ED><B7><BF><ED><B8><81><ED><B8><82><ED>-<2D><><ED><B8><BA><ED>-<2D><><ED><B9><88><ED><B9><90><ED><B9><91><ED>-<2D><><ED><BC><A0><ED>-<2D><><ED><BC><B5><ED>-<2D><><ED><BD><BC><ED>-<2D><><ED><BE><93><ED>-<2D><><ED><BF><84><ED>-<2D><><ED><BF><8A><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED><B0><81><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B1><94><ED>-<2D><><ED><B2><9C><ED><B2><9E><ED><B2><9F><ED><B2><A2><ED><B2><A5><ED><B2><A6><ED>-<2D><><ED><B2><AC><ED>-<2D><><ED><B2><B9><ED><B2><BB><ED>-<2D><><ED><B3><83><ED>-<2D><><ED><B4><85><ED>-<2D><><ED><B4><8A><ED>-<2D><><ED><B4><94><ED>-<2D><><ED><B4><9C><ED>-<2D><><ED><B4><B9><ED>-<2D><><ED><B4><BE><ED>-<2D><><ED><B5><84><ED><B5><86><ED>-<2D><><ED><B5><90><ED>-<2D><><ED><BA><A5><ED>-<2D><><ED><BF><8B><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B3><B5><ED>-<2D><><ED><B4><A6><ED>-<2D><><ED><B5><A6><ED>-<2D><><ED><B5><BA><ED><B6><83><ED><B6><84><ED>-<2D><><ED><B6><A9><ED>-<2D><><ED><B7><9D><ED>-<2D><><ED><BD><96><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><B0><BE><ED><B1><80><ED>-<2D><><ED><B3><B7><ED>-<2D><><ED><B3><BC><ED>-<2D><><ED><B4><BD><ED>-<2D><><ED><B5><83><ED>-<2D><><ED><B5><A7><ED>-<2D><><ED><B9><80><ED>-<2D><><ED><B9><8F><ED>-<2D><><ED><BB><85><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Coptic",
|
||
bmp: "Ϣ-ϯⲀ-ⳳ⳹-⳿"
|
||
}, {
|
||
name: "Cuneiform",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B1><A2><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Cypriot",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><85><ED><B0><88><ED>-<2D><><ED><B0><B5><ED><B0><B7><ED><B0><B8><ED><B0><BC><ED>]"
|
||
}, {
|
||
name: "Cyrillic",
|
||
bmp: "Ѐ-҄҇-ԧᴫᵸⷠ-ⷿꙀ-ꚗꚟ"
|
||
}, {
|
||
name: "Deseret",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Devanagari",
|
||
bmp: "ऀ-ॐ॓-ॣ०-ॷॹ-ॿ꣠-ꣻ"
|
||
}, {
|
||
name: "Egyptian_Hieroglyphs",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Ethiopic",
|
||
bmp: "ሀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፼ᎀ-᎙ⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮ"
|
||
}, {
|
||
name: "Georgian",
|
||
bmp: "Ⴀ-ჅჇჍა-ჺჼ-ჿⴀ-ⴥⴧⴭ"
|
||
}, {
|
||
name: "Glagolitic",
|
||
bmp: "Ⰰ-Ⱞⰰ-ⱞ"
|
||
}, {
|
||
name: "Gothic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Greek",
|
||
bmp: "Ͱ-ͳ͵-ͷͺ-ͽ΄ΆΈ-ΊΌΎ-ΡΣ-ϡϰ-Ͽᴦ-ᴪᵝ-ᵡᵦ-ᵪᶿἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ῄῆ-ΐῖ-Ί῝-`ῲ-ῴῶ-῾Ω",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Gujarati",
|
||
bmp: "ઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૱"
|
||
}, {
|
||
name: "Gurmukhi",
|
||
bmp: "ਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵ"
|
||
}, {
|
||
name: "Han",
|
||
bmp: "⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〻㐀-䶵一-鿌豈-舘並-龎",
|
||
astral: "[<5B><><ED>-<2D><><ED><A1><A8><ED>-<2D><><ED>][<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BC><B4><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED><BB><96><ED>-<2D><><ED>]|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Hangul",
|
||
bmp: "ᄀ-ᇿ〮〯ㄱ-ㆎ㈀-㈞㉠-㉾ꥠ-ꥼ가-힣ힰ-ퟆퟋ-ퟻᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ"
|
||
}, {
|
||
name: "Hanunoo",
|
||
bmp: "ᜠ-᜴"
|
||
}, {
|
||
name: "Hebrew",
|
||
bmp: "֑-ׇא-תװ-״יִ-זּטּ-לּמּנּסּףּפּצּ-ﭏ"
|
||
}, {
|
||
name: "Hiragana",
|
||
bmp: "ぁ-ゖゝ-ゟ",
|
||
astral: "𛀁|🈀"
|
||
}, {
|
||
name: "Imperial_Aramaic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B1><95><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Inherited",
|
||
bmp: "̀-ًͯ҅҆-ٰٕ॒॑᳐-᳔᳒-᳢᳠-᳨᳭᳴᷀-ᷦ᷼-᷿⃐-〪⃰-゙゚〭︀-️︠-︦",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B5><A9><ED>-<2D><><ED><B6><82><ED>-<2D><><ED><B6><8B><ED>-<2D><><ED>]|𐇽|<7C><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Inscriptional_Pahlavi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BD><B2><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Inscriptional_Parthian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BD><95><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Javanese",
|
||
bmp: "ꦀ-꧍ꧏ-꧙꧞꧟"
|
||
}, {
|
||
name: "Kaithi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Kannada",
|
||
bmp: "ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲ"
|
||
}, {
|
||
name: "Katakana",
|
||
bmp: "ァ-ヺヽ-ヿㇰ-ㇿ㋐-㋾㌀-㍗ヲ-ッア-ン",
|
||
astral: "𛀀"
|
||
}, {
|
||
name: "Kayah_Li",
|
||
bmp: "꤀-꤯"
|
||
}, {
|
||
name: "Kharoshthi",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B8><83><ED><B8><85><ED><B8><86><ED>-<2D><><ED><B8><93><ED>-<2D><><ED><B8><97><ED>-<2D><><ED><B8><B3><ED>-<2D><><ED><B8><BA><ED>-<2D><><ED><B9><87><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Khmer",
|
||
bmp: "ក-៝០-៩៰-៹᧠-᧿"
|
||
}, {
|
||
name: "Lao",
|
||
bmp: "ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟ"
|
||
}, {
|
||
name: "Latin",
|
||
bmp: "A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꟿff-stA-Za-z"
|
||
}, {
|
||
name: "Lepcha",
|
||
bmp: "ᰀ-᰷᰻-᱉ᱍ-ᱏ"
|
||
}, {
|
||
name: "Limbu",
|
||
bmp: "ᤀ-ᤜᤠ-ᤫᤰ-᤻᥀᥄-᥏"
|
||
}, {
|
||
name: "Linear_B",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B0><8B><ED>-<2D><><ED><B0><A6><ED>-<2D><><ED><B0><BA><ED><B0><BC><ED><B0><BD><ED>-<2D><><ED><B1><8D><ED>-<2D><><ED><B1><9D><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Lisu",
|
||
bmp: "ꓐ-꓿"
|
||
}, {
|
||
name: "Lycian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Lydian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B4><B9><ED>]"
|
||
}, {
|
||
name: "Malayalam",
|
||
bmp: "ംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൵൹-ൿ"
|
||
}, {
|
||
name: "Mandaic",
|
||
bmp: "ࡀ-࡛࡞"
|
||
}, {
|
||
name: "Meetei_Mayek",
|
||
bmp: "ꫠ-꫶ꯀ-꯭꯰-꯹"
|
||
}, {
|
||
name: "Meroitic_Cursive",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B6><B7><ED><B6><BE><ED>]"
|
||
}, {
|
||
name: "Meroitic_Hieroglyphs",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Miao",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BD><84><ED>-<2D><><ED><BD><BE><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Mongolian",
|
||
bmp: "᠀᠁᠄᠆-᠐-᠙ᠠ-ᡷᢀ-ᢪ"
|
||
}, {
|
||
name: "Myanmar",
|
||
bmp: "က-႟ꩠ-ꩻ"
|
||
}, {
|
||
name: "New_Tai_Lue",
|
||
bmp: "ᦀ-ᦫᦰ-ᧉ᧐-᧚᧞᧟"
|
||
}, {
|
||
name: "Nko",
|
||
bmp: "߀-ߺ"
|
||
}, {
|
||
name: "Ogham",
|
||
bmp: " -᚜"
|
||
}, {
|
||
name: "Ol_Chiki",
|
||
bmp: "᱐-᱿"
|
||
}, {
|
||
name: "Old_Italic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BC><9E><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Old_Persian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BF><83><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Old_South_Arabian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Old_Turkic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Oriya",
|
||
bmp: "ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୷"
|
||
}, {
|
||
name: "Osmanya",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B2><9D><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Phags_Pa",
|
||
bmp: "ꡀ-꡷"
|
||
}, {
|
||
name: "Phoenician",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B4><9B><ED>]"
|
||
}, {
|
||
name: "Rejang",
|
||
bmp: "ꤰ-꥓꥟"
|
||
}, {
|
||
name: "Runic",
|
||
bmp: "ᚠ-ᛪᛮ-ᛰ"
|
||
}, {
|
||
name: "Samaritan",
|
||
bmp: "ࠀ-࠭࠰-࠾"
|
||
}, {
|
||
name: "Saurashtra",
|
||
bmp: "ꢀ-꣄꣎-꣙"
|
||
}, {
|
||
name: "Sharada",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B7><88><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Shavian",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Sinhala",
|
||
bmp: "ංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲ-෴"
|
||
}, {
|
||
name: "Sora_Sompeng",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><B3><A8><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Sundanese",
|
||
bmp: "ᮀ-ᮿ᳀-᳇"
|
||
}, {
|
||
name: "Syloti_Nagri",
|
||
bmp: "ꠀ-꠫"
|
||
}, {
|
||
name: "Syriac",
|
||
bmp: "܀-܍-݊ݍ-ݏ"
|
||
}, {
|
||
name: "Tagalog",
|
||
bmp: "ᜀ-ᜌᜎ-᜔"
|
||
}, {
|
||
name: "Tagbanwa",
|
||
bmp: "ᝠ-ᝬᝮ-ᝰᝲᝳ"
|
||
}, {
|
||
name: "Tai_Le",
|
||
bmp: "ᥐ-ᥭᥰ-ᥴ"
|
||
}, {
|
||
name: "Tai_Tham",
|
||
bmp: "ᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪠-᪭"
|
||
}, {
|
||
name: "Tai_Viet",
|
||
bmp: "ꪀ-ꫂꫛ-꫟"
|
||
}, {
|
||
name: "Takri",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BA><B7><ED>-<2D><><ED>]"
|
||
}, {
|
||
name: "Tamil",
|
||
bmp: "ஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௺"
|
||
}, {
|
||
name: "Telugu",
|
||
bmp: "ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯౸-౿"
|
||
}, {
|
||
name: "Thaana",
|
||
bmp: "ހ-ޱ"
|
||
}, {
|
||
name: "Thai",
|
||
bmp: "ก-ฺเ-๛"
|
||
}, {
|
||
name: "Tibetan",
|
||
bmp: "ༀ-ཇཉ-ཬཱ-ྗྙ-ྼ྾-࿌࿎-࿔࿙࿚"
|
||
}, {
|
||
name: "Tifinagh",
|
||
bmp: "ⴰ-ⵧⵯ⵰⵿"
|
||
}, {
|
||
name: "Ugaritic",
|
||
astral: "<22><><ED>[<5B><><ED>-<2D><><ED><BE><9D><ED>]"
|
||
}, {
|
||
name: "Vai",
|
||
bmp: "ꔀ-ꘫ"
|
||
}, {
|
||
name: "Yi",
|
||
bmp: "ꀀ-ꒌ꒐-꓆"
|
||
} ]);
|
||
}(e), e;
|
||
}), "undefined" != typeof module && module.exports && (module.exports = printStackTrace),
|
||
printStackTrace.implementation = function() {}, printStackTrace.implementation.prototype = {
|
||
run: function(e, t) {
|
||
return e = e || this.createException(), t = t || this.mode(e), "other" === t ? this.other(arguments.callee) : this[t](e);
|
||
},
|
||
createException: function() {
|
||
try {
|
||
this.undef();
|
||
} catch (e) {
|
||
return e;
|
||
}
|
||
},
|
||
mode: function(e) {
|
||
return e.arguments && e.stack ? "chrome" : e.stack && e.sourceURL ? "safari" : e.stack && e.number ? "ie" : "string" == typeof e.message && "undefined" != typeof window && window.opera ? e.stacktrace ? e.message.indexOf("\n") > -1 && e.message.split("\n").length > e.stacktrace.split("\n").length ? "opera9" : e.stack ? e.stacktrace.indexOf("called from line") < 0 ? "opera10b" : "opera11" : "opera10a" : "opera9" : e.stack && !e.fileName ? "chrome" : e.stack ? "firefox" : "other";
|
||
},
|
||
instrumentFunction: function(e, t, n) {
|
||
e = e || window;
|
||
var i = e[t];
|
||
e[t] = function() {
|
||
return n.call(this, printStackTrace().slice(4)), e[t]._instrumented.apply(this, arguments);
|
||
}, e[t]._instrumented = i;
|
||
},
|
||
deinstrumentFunction: function(e, t) {
|
||
e[t].constructor === Function && e[t]._instrumented && e[t]._instrumented.constructor === Function && (e[t] = e[t]._instrumented);
|
||
},
|
||
chrome: function(e) {
|
||
var t = (e.stack + "\n").replace(/^\S[^\(]+?[\n$]/gm, "").replace(/^\s+(at eval )?at\s+/gm, "").replace(/^([^\(]+?)([\n$])/gm, "{anonymous}()@$1$2").replace(/^Object.<anonymous>\s*\(([^\)]+)\)/gm, "{anonymous}()@$1").split("\n");
|
||
return t.pop(), t;
|
||
},
|
||
safari: function(e) {
|
||
return e.stack.replace(/\[native code\]\n/m, "").replace(/^(?=\w+Error\:).*$\n/m, "").replace(/^@/gm, "{anonymous}()@").split("\n");
|
||
},
|
||
ie: function(e) {
|
||
var t = /^.*at (\w+) \(([^\)]+)\)$/gm;
|
||
return e.stack.replace(/at Anonymous function /gm, "{anonymous}()@").replace(/^(?=\w+Error\:).*$\n/m, "").replace(t, "$1@$2").split("\n");
|
||
},
|
||
firefox: function(e) {
|
||
return e.stack.replace(/(?:\n@:0)?\s+$/m, "").replace(/^[\(@]/gm, "{anonymous}()@").split("\n");
|
||
},
|
||
opera11: function(e) {
|
||
for (var t = "{anonymous}", n = /^.*line (\d+), column (\d+)(?: in (.+))? in (\S+):$/, i = e.stacktrace.split("\n"), o = [], r = 0, s = i.length; s > r; r += 2) {
|
||
var a = n.exec(i[r]);
|
||
if (a) {
|
||
var l = a[4] + ":" + a[1] + ":" + a[2], c = a[3] || "global code";
|
||
c = c.replace(/<anonymous function: (\S+)>/, "$1").replace(/<anonymous function>/, t),
|
||
o.push(c + "@" + l + " -- " + i[r + 1].replace(/^\s+/, ""));
|
||
}
|
||
}
|
||
return o;
|
||
},
|
||
opera10b: function(e) {
|
||
for (var t = /^(.*)@(.+):(\d+)$/, n = e.stacktrace.split("\n"), i = [], o = 0, r = n.length; r > o; o++) {
|
||
var s = t.exec(n[o]);
|
||
if (s) {
|
||
var a = s[1] ? s[1] + "()" : "global code";
|
||
i.push(a + "@" + s[2] + ":" + s[3]);
|
||
}
|
||
}
|
||
return i;
|
||
},
|
||
opera10a: function(e) {
|
||
for (var t = "{anonymous}", n = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i, i = e.stacktrace.split("\n"), o = [], r = 0, s = i.length; s > r; r += 2) {
|
||
var a = n.exec(i[r]);
|
||
if (a) {
|
||
var l = a[3] || t;
|
||
o.push(l + "()@" + a[2] + ":" + a[1] + " -- " + i[r + 1].replace(/^\s+/, ""));
|
||
}
|
||
}
|
||
return o;
|
||
},
|
||
opera9: function(e) {
|
||
for (var t = "{anonymous}", n = /Line (\d+).*script (?:in )?(\S+)/i, i = e.message.split("\n"), o = [], r = 2, s = i.length; s > r; r += 2) {
|
||
var a = n.exec(i[r]);
|
||
a && o.push(t + "()@" + a[2] + ":" + a[1] + " -- " + i[r + 1].replace(/^\s+/, ""));
|
||
}
|
||
return o;
|
||
},
|
||
other: function(e) {
|
||
for (var t, n, i = "{anonymous}", o = /function\s*([\w\-$]+)?\s*\(/i, r = [], s = 10; e && e.arguments && r.length < s; ) t = o.test(e.toString()) ? RegExp.$1 || i : i,
|
||
n = Array.prototype.slice.call(e.arguments || []), r[r.length] = t + "(" + this.stringifyArguments(n) + ")",
|
||
e = e.caller;
|
||
return r;
|
||
},
|
||
stringifyArguments: function(e) {
|
||
for (var t = [], n = Array.prototype.slice, i = 0; i < e.length; ++i) {
|
||
var o = e[i];
|
||
void 0 === o ? t[i] = "undefined" : null === o ? t[i] = "null" : o.constructor && (o.constructor === Array ? t[i] = o.length < 3 ? "[" + this.stringifyArguments(o) + "]" : "[" + this.stringifyArguments(n.call(o, 0, 1)) + "..." + this.stringifyArguments(n.call(o, -1)) + "]" : o.constructor === Object ? t[i] = "#object" : o.constructor === Function ? t[i] = "#function" : o.constructor === String ? t[i] = '"' + o + '"' : o.constructor === Number && (t[i] = o));
|
||
}
|
||
return t.join(",");
|
||
},
|
||
sourceCache: {},
|
||
ajax: function(e) {
|
||
var t = this.createXMLHTTPObject();
|
||
if (t) try {
|
||
return t.open("GET", e, !1), t.send(null), t.responseText;
|
||
} catch (n) {}
|
||
return "";
|
||
},
|
||
createXMLHTTPObject: function() {
|
||
for (var e, t = [ function() {
|
||
return new XMLHttpRequest();
|
||
}, function() {
|
||
return new ActiveXObject("Msxml2.XMLHTTP");
|
||
}, function() {
|
||
return new ActiveXObject("Msxml3.XMLHTTP");
|
||
}, function() {
|
||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||
} ], n = 0; n < t.length; n++) try {
|
||
return e = t[n](), this.createXMLHTTPObject = t[n], e;
|
||
} catch (i) {}
|
||
},
|
||
isSameDomain: function(e) {
|
||
return "undefined" != typeof location && -1 !== e.indexOf(location.hostname);
|
||
},
|
||
getSource: function(e) {
|
||
return e in this.sourceCache || (this.sourceCache[e] = this.ajax(e).split("\n")),
|
||
this.sourceCache[e];
|
||
},
|
||
guessAnonymousFunctions: function(e) {
|
||
for (var t = 0; t < e.length; ++t) {
|
||
var n = /\{anonymous\}\(.*\)@(.*)/, i = /^(.*?)(?::(\d+))(?::(\d+))?(?: -- .+)?$/, o = e[t], r = n.exec(o);
|
||
if (r) {
|
||
var s = i.exec(r[1]);
|
||
if (s) {
|
||
var a = s[1], l = s[2], c = s[3] || 0;
|
||
if (a && this.isSameDomain(a) && l) {
|
||
var u = this.guessAnonymousFunction(a, l, c);
|
||
e[t] = o.replace("{anonymous}", u);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return e;
|
||
},
|
||
guessAnonymousFunction: function(e, t) {
|
||
var n;
|
||
try {
|
||
n = this.findFunctionName(this.getSource(e), t);
|
||
} catch (i) {
|
||
n = "getSource failed with url: " + e + ", exception: " + i.toString();
|
||
}
|
||
return n;
|
||
},
|
||
findFunctionName: function(e, t) {
|
||
for (var n, i, o, r = /function\s+([^(]*?)\s*\(([^)]*)\)/, s = /['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*function\b/, a = /['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*(?:eval|new Function)\b/, l = "", c = Math.min(t, 20), u = 0; c > u; ++u) if (n = e[t - u - 1],
|
||
o = n.indexOf("//"), o >= 0 && (n = n.substr(0, o)), n) {
|
||
if (l = n + l, i = s.exec(l), i && i[1]) return i[1];
|
||
if (i = r.exec(l), i && i[1]) return i[1];
|
||
if (i = a.exec(l), i && i[1]) return i[1];
|
||
}
|
||
return "(?)";
|
||
}
|
||
}, define("stacktrace", function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.printStackTrace;
|
||
};
|
||
}(this));
|
||
|
||
var saveAs = saveAs || "undefined" != typeof navigator && navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator) || function(e) {
|
||
var t = e.document, n = function() {
|
||
return e.URL || e.webkitURL || e;
|
||
}, i = e.URL || e.webkitURL || e, o = t.createElementNS("http://www.w3.org/1999/xhtml", "a"), r = !e.externalHost && "download" in o, s = e.webkitRequestFileSystem, a = e.requestFileSystem || s || e.mozRequestFileSystem, l = function(t) {
|
||
(e.setImmediate || e.setTimeout)(function() {
|
||
throw t;
|
||
}, 0);
|
||
}, c = "application/octet-stream", u = 0, d = [], h = function() {
|
||
for (var e = d.length; e--; ) {
|
||
var t = d[e];
|
||
"string" == typeof t ? i.revokeObjectURL(t) : t.remove();
|
||
}
|
||
d.length = 0;
|
||
}, p = function(e, t, n) {
|
||
t = [].concat(t);
|
||
for (var i = t.length; i--; ) {
|
||
var o = e["on" + t[i]];
|
||
if ("function" == typeof o) try {
|
||
o.call(e, n || e);
|
||
} catch (r) {
|
||
l(r);
|
||
}
|
||
}
|
||
}, f = function(i, l) {
|
||
var h, f, g, m = this, v = i.type, b = !1, y = function() {
|
||
var e = n().createObjectURL(i);
|
||
return d.push(e), e;
|
||
}, w = function() {
|
||
p(m, "writestart progress write writeend".split(" "));
|
||
}, x = function() {
|
||
(b || !h) && (h = y(i)), f ? f.location.href = h : window.open(h, "_blank"), m.readyState = m.DONE,
|
||
w();
|
||
}, C = function(e) {
|
||
return function() {
|
||
return m.readyState !== m.DONE ? e.apply(this, arguments) : void 0;
|
||
};
|
||
}, E = {
|
||
create: !0,
|
||
exclusive: !1
|
||
};
|
||
if (m.readyState = m.INIT, l || (l = "download"), r) {
|
||
h = y(i), t = e.document, o = t.createElementNS("http://www.w3.org/1999/xhtml", "a"),
|
||
o.href = h, o.download = l;
|
||
var k = t.createEvent("MouseEvents");
|
||
return k.initMouseEvent("click", !0, !1, e, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null),
|
||
o.dispatchEvent(k), m.readyState = m.DONE, w(), void 0;
|
||
}
|
||
return e.chrome && v && v !== c && (g = i.slice || i.webkitSlice, i = g.call(i, 0, i.size, c),
|
||
b = !0), s && "download" !== l && (l += ".download"), (v === c || s) && (f = e),
|
||
a ? (u += i.size, a(e.TEMPORARY, u, C(function(e) {
|
||
e.root.getDirectory("saved", E, C(function(e) {
|
||
var t = function() {
|
||
e.getFile(l, E, C(function(e) {
|
||
e.createWriter(C(function(t) {
|
||
t.onwriteend = function(t) {
|
||
f.location.href = e.toURL(), d.push(e), m.readyState = m.DONE, p(m, "writeend", t);
|
||
}, t.onerror = function() {
|
||
var e = t.error;
|
||
e.code !== e.ABORT_ERR && x();
|
||
}, "writestart progress write abort".split(" ").forEach(function(e) {
|
||
t["on" + e] = m["on" + e];
|
||
}), t.write(i), m.abort = function() {
|
||
t.abort(), m.readyState = m.DONE;
|
||
}, m.readyState = m.WRITING;
|
||
}), x);
|
||
}), x);
|
||
};
|
||
e.getFile(l, {
|
||
create: !1
|
||
}, C(function(e) {
|
||
e.remove(), t();
|
||
}), C(function(e) {
|
||
e.code === e.NOT_FOUND_ERR ? t() : x();
|
||
}));
|
||
}), x);
|
||
}), x), void 0) : (x(), void 0);
|
||
}, g = f.prototype, m = function(e, t) {
|
||
return new f(e, t);
|
||
};
|
||
return g.abort = function() {
|
||
var e = this;
|
||
e.readyState = e.DONE, p(e, "abort");
|
||
}, g.readyState = g.INIT = 0, g.WRITING = 1, g.DONE = 2, g.error = g.onwritestart = g.onprogress = g.onwrite = g.onabort = g.onerror = g.onwriteend = null,
|
||
e.addEventListener("unload", h, !1), m;
|
||
}(this.self || this.window || this.content);
|
||
|
||
"undefined" != typeof module && (module.exports = saveAs), define("FileSaver", function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.saveAs;
|
||
};
|
||
}(this)), define("utils", [ "jquery", "underscore", "storage", "crel", "xregexp", "stacktrace", "FileSaver" ], function($, _, storage, crel, XRegExp, printStackTrace, saveAs) {
|
||
function jqElt(e) {
|
||
return _.isString(e) ? $(e) : e;
|
||
}
|
||
function inputError(e, t) {
|
||
void 0 !== t && (e.stop(!0, !0).addClass("error").delay(1e3).switchClass("error"),
|
||
t.stopPropagation());
|
||
}
|
||
var utils = {};
|
||
utils.getURLParameter = function(e) {
|
||
var t = new RegExp("(?:\\?|\\#\\!|&)" + e + "=(.+?)(?:&|\\#|$)");
|
||
try {
|
||
return decodeURIComponent(t.exec(location.search + location.hash)[1]);
|
||
} catch (n) {
|
||
return void 0;
|
||
}
|
||
}, utils.getInputValue = function(e) {
|
||
return e = jqElt(e), e.val();
|
||
}, utils.setInputValue = function(e, t) {
|
||
e = jqElt(e), e.val(t);
|
||
}, utils.getInputTextValue = function(e, t, n) {
|
||
e = jqElt(e);
|
||
var i = e.val();
|
||
return void 0 === i ? (inputError(e, t), void 0) : (i = utils.trim(i), 0 === i.length || void 0 !== n && !i.match(n) ? (inputError(e, t),
|
||
void 0) : i);
|
||
}, utils.getInputIntValue = function(e, t, n, i) {
|
||
e = jqElt(e);
|
||
var o = utils.getInputTextValue(e, t);
|
||
return void 0 === o ? void 0 : (o = parseInt(o, 10), isNaN(o) || void 0 !== n && n > o || void 0 !== i && o > i ? (inputError(e, t),
|
||
void 0) : o);
|
||
}, utils.getInputRegExpValue = function(e, t) {
|
||
e = jqElt(e);
|
||
var n = utils.getInputTextValue(e, t);
|
||
if (void 0 === n) return void 0;
|
||
try {
|
||
new RegExp(n);
|
||
} catch (i) {
|
||
return inputError(e, t), void 0;
|
||
}
|
||
return n;
|
||
}, utils.getInputJsValue = function(element, event) {
|
||
element = jqElt(element);
|
||
var value = utils.getInputTextValue(element, event);
|
||
if (void 0 === value) return void 0;
|
||
try {
|
||
eval("var test=" + value);
|
||
} catch (e) {
|
||
return inputError(element, event), void 0;
|
||
}
|
||
return value;
|
||
}, utils.getInputChecked = function(e) {
|
||
return e = jqElt(e), e.prop("checked");
|
||
}, utils.setInputChecked = function(e, t) {
|
||
e = jqElt(e), e.prop("checked", t).change();
|
||
}, utils.getInputRadio = function(e) {
|
||
return $("input:radio[name=" + e + "]:checked").prop("value");
|
||
}, utils.setInputRadio = function(e, t) {
|
||
$("input:radio[name=" + e + "][value=" + t + "]").prop("checked", !0).change();
|
||
}, utils.resetModalInputs = function() {
|
||
$(".modal input[type=text]:not([disabled]), .modal input[type=password], .modal textarea").val(""),
|
||
$(".modal input[type=checkbox]").prop("checked", !1).change();
|
||
}, utils.trim = function(e) {
|
||
return $.trim(e);
|
||
};
|
||
var nonWordChars = XRegExp("[^\\p{L}-]", "g");
|
||
utils.slugify = function(e) {
|
||
return e.toLowerCase().replace(/\s/g, "-").replace(nonWordChars, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
|
||
}, utils.checkUrl = function(e, t) {
|
||
return e ? (0 !== e.indexOf("http") && (e = "http://" + e), t && -1 === e.indexOf("/", e.length - 1) && (e += "/"),
|
||
e) : e;
|
||
}, utils.addModal = function(e, t) {
|
||
var n = crel("div", {
|
||
"class": "modal " + e
|
||
});
|
||
n.innerHTML = t, document.body.appendChild(n);
|
||
}, utils.createBackdrop = function(e, t) {
|
||
var n = crel("div", {
|
||
"class": "modal-backdrop in",
|
||
"data-toggle": e,
|
||
"data-target": t
|
||
});
|
||
return document.body.appendChild(n), n;
|
||
}, utils.popupWindow = function(e, t, n, i) {
|
||
var o = screen.width / 2 - n / 2, r = screen.height / 2 - i / 2;
|
||
return window.open(e, t, [ "toolbar=no, ", "location=no, ", "directories=no, ", "status=no, ", "menubar=no, ", "scrollbars=no, ", "resizable=no, ", "copyhistory=no, ", "width=" + n + ", ", "height=" + i + ", ", "top=" + r + ", ", "left=" + o ].join(""));
|
||
}, utils.saveAs = function(e, t) {
|
||
if (void 0 !== saveAs) _.isString(e) && (e = new Blob([ e ], {
|
||
type: "text/plain;charset=utf-8"
|
||
})), saveAs(e, t); else {
|
||
var n = "data:application/octet-stream;base64," + utils.encodeBase64(e);
|
||
window.open(n, "file");
|
||
}
|
||
}, utils.randomString = function() {
|
||
return _.random(4294967296).toString(36);
|
||
}, utils.updateCurrentTime = function() {
|
||
utils.currentTime = new Date().getTime();
|
||
}, utils.updateCurrentTime(), utils.storeAttributes = function(e) {
|
||
var t = e.syncIndex || e.publishIndex, n = _.omit(e, "syncIndex", "publishIndex", "provider");
|
||
n.provider = e.provider.providerId, storage[t] = JSON.stringify(n);
|
||
}, utils.retrieveIndexArray = function(e) {
|
||
try {
|
||
return _.compact(storage[e].split(";"));
|
||
} catch (t) {
|
||
return storage[e] = ";", [];
|
||
}
|
||
}, utils.appendIndexToArray = function(e, t) {
|
||
storage[e] += t + ";";
|
||
}, utils.removeIndexFromArray = function(e, t) {
|
||
storage[e] = storage[e].replace(";" + t + ";", ";");
|
||
}, utils.retrieveIgnoreError = function(e) {
|
||
try {
|
||
return JSON.parse(storage[e]);
|
||
} catch (t) {
|
||
return void 0;
|
||
}
|
||
};
|
||
var eventList = [];
|
||
utils.logValue = function(e) {
|
||
eventList.unshift(e), eventList.length > 5 && eventList.pop();
|
||
}, utils.logStackTrace = function() {
|
||
eventList.unshift(printStackTrace()), eventList.length > 5 && eventList.pop();
|
||
}, utils.formatEventList = function() {
|
||
var e = [];
|
||
return _.each(eventList, function(t) {
|
||
e.push("\n"), _.isString(t) ? e.push(t) : _.isArray(t) && (e.push(t[5] || ""), e.push(t[6] || ""));
|
||
}), e.join("");
|
||
}, utils.encodeBase64 = function(e) {
|
||
if (0 === e.length) return "";
|
||
var t, n, i = [], o = 0;
|
||
for (e = encodeURI(e), t = e.length; t > o; ) n = e[o], o += 1, "%" !== n ? i.push(n.charCodeAt(0)) : (n = e[o] + e[o + 1],
|
||
i.push(parseInt(n, 16)), o += 2);
|
||
var r, s, a = "=", l = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", c = [], u = i.length - i.length % 3;
|
||
for (r = 0; u > r; r += 3) s = i[r] << 16 | i[r + 1] << 8 | i[r + 2], c.push(l.charAt(s >> 18)),
|
||
c.push(l.charAt(63 & s >> 12)), c.push(l.charAt(63 & s >> 6)), c.push(l.charAt(63 & s));
|
||
switch (i.length - u) {
|
||
case 1:
|
||
s = i[r] << 16, c.push(l.charAt(s >> 18) + l.charAt(63 & s >> 12) + a + a);
|
||
break;
|
||
|
||
case 2:
|
||
s = i[r] << 16 | i[r + 1] << 8, c.push(l.charAt(s >> 18) + l.charAt(63 & s >> 12) + l.charAt(63 & s >> 6) + a);
|
||
}
|
||
return c.join("");
|
||
};
|
||
var mHash = [ 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117 ];
|
||
return utils.crc32 = function(e) {
|
||
for (var t = 0, n = -1, i = 0; i < e.length; i++) t = 255 & (n ^ e.charCodeAt(i)),
|
||
n = n >>> 8 ^ mHash[t];
|
||
return n = -1 ^ n, 0 > n && (n = 4294967295 + n + 1), n.toString(16);
|
||
}, utils;
|
||
}), define("settings", [ "underscore", "constants", "storage" ], function(e, t, n) {
|
||
var i = {
|
||
layoutOrientation: "horizontal",
|
||
lazyRendering: !0,
|
||
editorFontFamily: 'Menlo, Consolas, "Courier New", Courier, monospace',
|
||
editorFontSize: 13,
|
||
maxWidth: 960,
|
||
defaultContent: "\n\n\n> Written with [StackEdit](" + t.MAIN_URL + ").",
|
||
commitMsg: "Published with " + t.MAIN_URL,
|
||
gdriveMultiAccount: 1,
|
||
gdriveFullAccess: !0,
|
||
dropboxFullAccess: !0,
|
||
githubFullAccess: !0,
|
||
template: [ "<!DOCTYPE html>\n", "<html>\n", "<head>\n", '<meta charset="utf-8">\n', "<title><%= documentTitle %></title>\n", '<link rel="stylesheet" href="', t.MAIN_URL, 'res-min/themes/base.css" />\n', '<script type="text/javascript" src="', t.MAIN_URL, 'libs/MathJax/MathJax.js?config=TeX-AMS_HTML"></script>\n', "</head>\n", '<body><div class="container"><%= documentHTML %></div></body>\n', "</html>" ].join(""),
|
||
pdfTemplate: [ "<!DOCTYPE html>\n", "<html>\n", "<head>\n", '<meta charset="utf-8">\n', "<title><%= documentTitle %></title>\n", '<link rel="stylesheet" href="', t.MAIN_URL, 'res-min/themes/base.css" />\n', '<script type="text/x-mathjax-config">\n', 'MathJax.Hub.Config({ messageStyle: "none" });\n', "</script>\n", '<script type="text/javascript" src="', t.MAIN_URL, 'libs/MathJax/MathJax.js?config=TeX-AMS_HTML"></script>\n', "</head>\n", '<body class="pdf"><%= documentHTML %></body>\n', "</html>" ].join(""),
|
||
pdfPageSize: "A4",
|
||
sshProxy: t.SSH_PROXY_URL,
|
||
shortcuts: {},
|
||
extensionSettings: {}
|
||
};
|
||
try {
|
||
e.extend(i, JSON.parse(n.settings));
|
||
} catch (o) {}
|
||
return i;
|
||
}), define("logger", [], function() {
|
||
var e = {
|
||
log: function() {},
|
||
info: function() {},
|
||
warn: function() {},
|
||
error: function() {}
|
||
};
|
||
return /(\?|&)console($|&)/.test(location.search) ? console : e;
|
||
}), define("classes/Extension", [], function() {
|
||
function e(e, t, n, i, o) {
|
||
this.extensionId = e, this.extensionName = t, this.isOptional = n, this.disableInViewer = i,
|
||
this.disableInLight = o;
|
||
}
|
||
return e;
|
||
}), define("text", [ "module" ], function(e) {
|
||
var t, n, i, o, r, s = [ "Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.4.0" ], a = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, l = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im, c = "undefined" != typeof location && location.href, u = c && location.protocol && location.protocol.replace(/\:/, ""), d = c && location.hostname, h = c && (location.port || void 0), p = {}, f = e.config && e.config() || {};
|
||
return t = {
|
||
version: "2.0.10",
|
||
strip: function(e) {
|
||
if (e) {
|
||
e = e.replace(a, "");
|
||
var t = e.match(l);
|
||
t && (e = t[1]);
|
||
} else e = "";
|
||
return e;
|
||
},
|
||
jsEscape: function(e) {
|
||
return e.replace(/(['\\])/g, "\\$1").replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r").replace(/[\u2028]/g, "\\u2028").replace(/[\u2029]/g, "\\u2029");
|
||
},
|
||
createXhr: f.createXhr || function() {
|
||
var e, t, n;
|
||
if ("undefined" != typeof XMLHttpRequest) return new XMLHttpRequest();
|
||
if ("undefined" != typeof ActiveXObject) for (t = 0; 3 > t; t += 1) {
|
||
n = s[t];
|
||
try {
|
||
e = new ActiveXObject(n);
|
||
} catch (i) {}
|
||
if (e) {
|
||
s = [ n ];
|
||
break;
|
||
}
|
||
}
|
||
return e;
|
||
},
|
||
parseName: function(e) {
|
||
var t, n, i, o = !1, r = e.indexOf("."), s = 0 === e.indexOf("./") || 0 === e.indexOf("../");
|
||
return -1 !== r && (!s || r > 1) ? (t = e.substring(0, r), n = e.substring(r + 1, e.length)) : t = e,
|
||
i = n || t, r = i.indexOf("!"), -1 !== r && (o = "strip" === i.substring(r + 1),
|
||
i = i.substring(0, r), n ? n = i : t = i), {
|
||
moduleName: t,
|
||
ext: n,
|
||
strip: o
|
||
};
|
||
},
|
||
xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/,
|
||
useXhr: function(e, n, i, o) {
|
||
var r, s, a, l = t.xdRegExp.exec(e);
|
||
return l ? (r = l[2], s = l[3], s = s.split(":"), a = s[1], s = s[0], !(r && r !== n || s && s.toLowerCase() !== i.toLowerCase() || (a || s) && a !== o)) : !0;
|
||
},
|
||
finishLoad: function(e, n, i, o) {
|
||
i = n ? t.strip(i) : i, f.isBuild && (p[e] = i), o(i);
|
||
},
|
||
load: function(e, n, i, o) {
|
||
if (o.isBuild && !o.inlineText) return i(), void 0;
|
||
f.isBuild = o.isBuild;
|
||
var r = t.parseName(e), s = r.moduleName + (r.ext ? "." + r.ext : ""), a = n.toUrl(s), l = f.useXhr || t.useXhr;
|
||
return 0 === a.indexOf("empty:") ? (i(), void 0) : (!c || l(a, u, d, h) ? t.get(a, function(n) {
|
||
t.finishLoad(e, r.strip, n, i);
|
||
}, function(e) {
|
||
i.error && i.error(e);
|
||
}) : n([ s ], function(e) {
|
||
t.finishLoad(r.moduleName + "." + r.ext, r.strip, e, i);
|
||
}), void 0);
|
||
},
|
||
write: function(e, n, i) {
|
||
if (p.hasOwnProperty(n)) {
|
||
var o = t.jsEscape(p[n]);
|
||
i.asModule(e + "!" + n, "define(function () { return '" + o + "';});\n");
|
||
}
|
||
},
|
||
writeFile: function(e, n, i, o, r) {
|
||
var s = t.parseName(n), a = s.ext ? "." + s.ext : "", l = s.moduleName + a, c = i.toUrl(s.moduleName + a) + ".js";
|
||
t.load(l, i, function() {
|
||
var n = function(e) {
|
||
return o(c, e);
|
||
};
|
||
n.asModule = function(e, t) {
|
||
return o.asModule(e, c, t);
|
||
}, t.write(e, l, n, r);
|
||
}, r);
|
||
}
|
||
}, "node" === f.env || !f.env && "undefined" != typeof process && process.versions && process.versions.node && !process.versions["node-webkit"] ? (n = require.nodeRequire("fs"),
|
||
t.get = function(e, t, i) {
|
||
try {
|
||
var o = n.readFileSync(e, "utf8");
|
||
0 === o.indexOf("") && (o = o.substring(1)), t(o);
|
||
} catch (r) {
|
||
i(r);
|
||
}
|
||
}) : "xhr" === f.env || !f.env && t.createXhr() ? t.get = function(e, n, i, o) {
|
||
var r, s = t.createXhr();
|
||
if (s.open("GET", e, !0), o) for (r in o) o.hasOwnProperty(r) && s.setRequestHeader(r.toLowerCase(), o[r]);
|
||
f.onXhr && f.onXhr(s, e), s.onreadystatechange = function() {
|
||
var t, o;
|
||
4 === s.readyState && (t = s.status, t > 399 && 600 > t ? (o = new Error(e + " HTTP status: " + t),
|
||
o.xhr = s, i(o)) : n(s.responseText), f.onXhrComplete && f.onXhrComplete(s, e));
|
||
}, s.send(null);
|
||
} : "rhino" === f.env || !f.env && "undefined" != typeof Packages && "undefined" != typeof java ? t.get = function(e, t) {
|
||
var n, i, o = "utf-8", r = new java.io.File(e), s = java.lang.System.getProperty("line.separator"), a = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(r), o)), l = "";
|
||
try {
|
||
for (n = new java.lang.StringBuffer(), i = a.readLine(), i && i.length() && 65279 === i.charAt(0) && (i = i.substring(1)),
|
||
null !== i && n.append(i); null !== (i = a.readLine()); ) n.append(s), n.append(i);
|
||
l = String(n.toString());
|
||
} finally {
|
||
a.close();
|
||
}
|
||
t(l);
|
||
} : ("xpconnect" === f.env || !f.env && "undefined" != typeof Components && Components.classes && Components.interfaces) && (i = Components.classes,
|
||
o = Components.interfaces, Components.utils["import"]("resource://gre/modules/FileUtils.jsm"),
|
||
r = "@mozilla.org/windows-registry-key;1" in i, t.get = function(e, t) {
|
||
var n, s, a, l = {};
|
||
r && (e = e.replace(/\//g, "\\")), a = new FileUtils.File(e);
|
||
try {
|
||
n = i["@mozilla.org/network/file-input-stream;1"].createInstance(o.nsIFileInputStream),
|
||
n.init(a, 1, 0, !1), s = i["@mozilla.org/intl/converter-input-stream;1"].createInstance(o.nsIConverterInputStream),
|
||
s.init(n, "utf-8", n.available(), o.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER),
|
||
s.readString(n.available(), l), s.close(), n.close(), t(l.value);
|
||
} catch (c) {
|
||
throw new Error((a && a.path || "") + ": " + c);
|
||
}
|
||
}), t;
|
||
}), define("text!html/settingsExtensionsAccordion.html", [], function() {
|
||
return '<div class="panel">\n <div class="accordion-heading">\n <div class="checkbox pull-right">\n <label> <input id="input-enable-extension-<%= extensionId %>"\n type="checkbox"<% if(!isOptional) print(\'disabled\') %>>\n enabled\n </label>\n </div>\n <a data-toggle="collapse" data-parent=".accordion-extensions"\n class="accordion-toggle" href="#accordion-extensions-collapse-<%= extensionId %>">\n <%= extensionName %> </a>\n </div>\n <div id="accordion-extensions-collapse-<%= extensionId %>" class="collapse">\n <div class="accordion-inner clearfix"><%= settingsBlock %></div>\n </div>\n</div>\n';
|
||
}), function() {
|
||
var e = function(e, t, n, i) {
|
||
this.rawMessage = e, this.parsedLine = void 0 !== t ? t : -1, this.snippet = void 0 !== n ? n : null,
|
||
this.parsedFile = void 0 !== i ? i : null, this.updateRepr(), this.message = e;
|
||
};
|
||
e.prototype = {
|
||
name: "YamlParseException",
|
||
message: null,
|
||
parsedFile: null,
|
||
parsedLine: -1,
|
||
snippet: null,
|
||
rawMessage: null,
|
||
isDefined: function(e) {
|
||
return void 0 != e && null != e;
|
||
},
|
||
getSnippet: function() {
|
||
return this.snippet;
|
||
},
|
||
setSnippet: function(e) {
|
||
this.snippet = e, this.updateRepr();
|
||
},
|
||
getParsedFile: function() {
|
||
return this.parsedFile;
|
||
},
|
||
setParsedFile: function(e) {
|
||
this.parsedFile = e, this.updateRepr();
|
||
},
|
||
getParsedLine: function() {
|
||
return this.parsedLine;
|
||
},
|
||
setParsedLine: function(e) {
|
||
this.parsedLine = e, this.updateRepr();
|
||
},
|
||
updateRepr: function() {
|
||
this.message = this.rawMessage;
|
||
var e = !1;
|
||
"." === this.message.charAt(this.message.length - 1) && (this.message = this.message.substring(0, this.message.length - 1),
|
||
e = !0), null !== this.parsedFile && (this.message += " in " + JSON.stringify(this.parsedFile)),
|
||
this.parsedLine >= 0 && (this.message += " at line " + this.parsedLine), this.snippet && (this.message += ' (near "' + this.snippet + '")'),
|
||
e && (this.message += ".");
|
||
}
|
||
};
|
||
var t = !1, n = function() {};
|
||
n.prototype = {
|
||
parseFile: function(t, i) {
|
||
if (null == i) {
|
||
var o = this.getFileContents(t), r = null;
|
||
try {
|
||
r = this.parse(o);
|
||
} catch (s) {
|
||
throw s instanceof e && s.setParsedFile(t), s;
|
||
}
|
||
return r;
|
||
}
|
||
this.getFileContents(t, function(e) {
|
||
i(new n().parse(e));
|
||
});
|
||
},
|
||
parse: function(e) {
|
||
var t = new r();
|
||
return t.parse(e);
|
||
},
|
||
dump: function(e, t, n) {
|
||
null == t && (t = 2);
|
||
var i = new a();
|
||
return n && (i.numSpacesForIndentation = n), i.dump(e, t);
|
||
},
|
||
getXHR: function() {
|
||
if (window.XMLHttpRequest) return new XMLHttpRequest();
|
||
if (window.ActiveXObject) for (var e = [ "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ], t = 0; 4 > t; t++) try {
|
||
return new ActiveXObject(e[t]);
|
||
} catch (n) {}
|
||
return null;
|
||
},
|
||
getFileContents: function(e, n) {
|
||
if (t) {
|
||
var i = require("fs");
|
||
if (null == n) {
|
||
var o = i.readFileSync(e);
|
||
return null == o ? null : "" + o;
|
||
}
|
||
i.readFile(e, function(e, t) {
|
||
e ? n(null) : n(t);
|
||
});
|
||
} else {
|
||
var r = this.getXHR();
|
||
if (null == n) return r.open("GET", e, !1), r.send(null), 200 == r.status || 0 == r.status ? r.responseText : null;
|
||
r.onreadystatechange = function() {
|
||
4 == r.readyState && (200 == r.status || 0 == r.status ? n(r.responseText) : n(null));
|
||
}, r.open("GET", e, !0), r.send(null);
|
||
}
|
||
}
|
||
};
|
||
var i = {
|
||
stringify: function(e, t, i) {
|
||
return new n().dump(e, t, i);
|
||
},
|
||
parse: function(e) {
|
||
return new n().parse(e);
|
||
},
|
||
load: function(e, t) {
|
||
return new n().parseFile(e, t);
|
||
}
|
||
};
|
||
"undefined" != typeof exports && "undefined" != typeof module && module.exports && (exports = module.exports = i,
|
||
t = !0, function() {
|
||
var e = function(e, t) {
|
||
e.exports = i.load(t);
|
||
};
|
||
void 0 !== require.extensions && (require.extensions[".yml"] = e, require.extensions[".yaml"] = e);
|
||
}()), "undefined" != typeof window && (window.YAML = i);
|
||
var o = function() {};
|
||
o.prototype = {
|
||
i: null,
|
||
parse: function(t) {
|
||
var n = null;
|
||
if (t = this.trim(t), 0 == t.length) return "";
|
||
switch (t.charAt(0)) {
|
||
case "[":
|
||
n = this.parseSequence(t);
|
||
break;
|
||
|
||
case "{":
|
||
n = this.parseMapping(t);
|
||
break;
|
||
|
||
default:
|
||
n = this.parseScalar(t);
|
||
}
|
||
if ("" != t.substr(this.i + 1).replace(/^\s*#.*$/, "")) throw console.log("oups " + t.substr(this.i + 1)),
|
||
new e('Unexpected characters near "' + t.substr(this.i) + '".');
|
||
return n;
|
||
},
|
||
dump: function(e) {
|
||
if (void 0 == e || null == e) return "null";
|
||
if (e instanceof Date) return e.toISOString();
|
||
if ("object" == typeof e) return this.dumpObject(e);
|
||
if ("boolean" == typeof e) return e ? "true" : "false";
|
||
if (/^\d+$/.test(e)) return "string" == typeof e ? "'" + e + "'" : parseInt(e);
|
||
if (this.isNumeric(e)) return "string" == typeof e ? "'" + e + "'" : parseFloat(e);
|
||
if ("number" == typeof e) return 1/0 == e ? ".Inf" : e == -1/0 ? "-.Inf" : isNaN(e) ? ".NAN" : e;
|
||
var t = new YamlEscaper();
|
||
return t.requiresDoubleQuoting(e) ? t.escapeWithDoubleQuotes(e) : t.requiresSingleQuoting(e) ? t.escapeWithSingleQuotes(e) : "" == e ? "" : this.getTimestampRegex().test(e) ? "'" + e + "'" : this.inArray(e.toLowerCase(), [ "null", "~", "true", "false" ]) ? "'" + e + "'" : e;
|
||
},
|
||
dumpObject: function(e) {
|
||
var t, n = this.getKeys(e), i = null, o = n.length;
|
||
if (e instanceof Array) {
|
||
for (i = [], t = 0; o > t; t++) i.push(this.dump(e[n[t]]));
|
||
return "[" + i.join(", ") + "]";
|
||
}
|
||
for (i = [], t = 0; o > t; t++) i.push(this.dump(n[t]) + ": " + this.dump(e[n[t]]));
|
||
return "{ " + i.join(", ") + " }";
|
||
},
|
||
parseScalar: function(t, n, i, o, r) {
|
||
void 0 == n && (n = null), void 0 == i && (i = [ '"', "'" ]), void 0 == o && (o = 0),
|
||
void 0 == r && (r = !0);
|
||
var s = null, a = null, l = null;
|
||
if (this.inArray(t[o], i)) {
|
||
if (s = this.parseQuotedScalar(t, o), o = this.i, null !== n) {
|
||
var c = t.substr(o).replace(/^\s+/, "");
|
||
if (!this.inArray(c.charAt(0), n)) throw new e("Unexpected characters (" + t.substr(o) + ").");
|
||
}
|
||
} else {
|
||
if (n) {
|
||
if (!(l = new RegExp("^(.+?)(" + n.join("|") + ")").exec((t + "").substring(o)))) throw new e("Malformed inline YAML string (" + t + ").");
|
||
s = l[1], o += s.length;
|
||
} else s = (t + "").substring(o), o += s.length, a = s.indexOf(" #"), -1 != a && (s = s.substr(0, a).replace(/\s+$/g, ""));
|
||
s = r ? this.evaluateScalar(s) : s;
|
||
}
|
||
return this.i = o, s;
|
||
},
|
||
parseQuotedScalar: function(t, n) {
|
||
var i = null;
|
||
if (!(i = new RegExp("^" + o.REGEX_QUOTED_STRING).exec((t + "").substring(n)))) throw new e("Malformed inline YAML string (" + (t + "").substring(n) + ").");
|
||
var r = i[0].substr(1, i[0].length - 2), a = new s();
|
||
return r = '"' == (t + "").charAt(n) ? a.unescapeDoubleQuotedString(r) : a.unescapeSingleQuotedString(r),
|
||
n += i[0].length, this.i = n, r;
|
||
},
|
||
parseSequence: function(t, n) {
|
||
void 0 == n && (n = 0);
|
||
var i = [], o = t.length;
|
||
for (n += 1; o > n; ) {
|
||
switch (t.charAt(n)) {
|
||
case "[":
|
||
i.push(this.parseSequence(t, n)), n = this.i;
|
||
break;
|
||
|
||
case "{":
|
||
i.push(this.parseMapping(t, n)), n = this.i;
|
||
break;
|
||
|
||
case "]":
|
||
return this.i = n, i;
|
||
|
||
case ",":
|
||
case " ":
|
||
break;
|
||
|
||
default:
|
||
var r = this.inArray(t.charAt(n), [ '"', "'" ]), s = this.parseScalar(t, [ ",", "]" ], [ '"', "'" ], n);
|
||
if (n = this.i, !r && -1 != (s + "").indexOf(": ")) try {
|
||
s = this.parseMapping("{" + s + "}");
|
||
} catch (a) {
|
||
if (!(a instanceof e)) throw a;
|
||
}
|
||
i.push(s), n--;
|
||
}
|
||
n++;
|
||
}
|
||
throw new e('Malformed inline YAML string "' + t + '"');
|
||
},
|
||
parseMapping: function(t, n) {
|
||
void 0 == n && (n = 0);
|
||
var i = {}, o = t.length;
|
||
n += 1;
|
||
for (var r = !1, s = !1; o > n; ) {
|
||
switch (s = !1, t.charAt(n)) {
|
||
case " ":
|
||
case ",":
|
||
n++, s = !0;
|
||
break;
|
||
|
||
case "}":
|
||
return this.i = n, i;
|
||
}
|
||
if (!s) {
|
||
var a = this.parseScalar(t, [ ":", " " ], [ '"', "'" ], n, !1);
|
||
for (n = this.i, r = !1; o > n; ) {
|
||
switch (t.charAt(n)) {
|
||
case "[":
|
||
i[a] = this.parseSequence(t, n), n = this.i, r = !0;
|
||
break;
|
||
|
||
case "{":
|
||
i[a] = this.parseMapping(t, n), n = this.i, r = !0;
|
||
break;
|
||
|
||
case ":":
|
||
case " ":
|
||
break;
|
||
|
||
default:
|
||
i[a] = this.parseScalar(t, [ ",", "}" ], [ '"', "'" ], n), n = this.i, r = !0, n--;
|
||
}
|
||
if (++n, r) {
|
||
s = !0;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
throw new e('Malformed inline YAML string "' + t + '"');
|
||
},
|
||
evaluateScalar: function(e) {
|
||
e = this.trim(e);
|
||
var t = null, n = null;
|
||
return "null" == e.toLowerCase() || "" == e || "~" == e ? null : 0 == (e + "").indexOf("!str ") ? ("" + e).substring(5) : 0 == (e + "").indexOf("! ") ? parseInt(this.parseScalar((e + "").substr(2))) : /^\d+$/.test(e) ? (t = e,
|
||
n = parseInt(e), "0" == e.charAt(0) ? this.octdec(e) : "" + t == "" + n ? n : t) : "true" == (e + "").toLowerCase() ? !0 : "false" == (e + "").toLowerCase() ? !1 : this.isNumeric(e) ? "0x" == (e + "").substr(0, 2) ? this.hexdec(e) : parseFloat(e) : ".inf" == e.toLowerCase() ? 1/0 : ".nan" == e.toLowerCase() ? 0/0 : "-.inf" == e.toLowerCase() ? -1/0 : /^(-|\+)?[0-9,]+(\.[0-9]+)?$/.test(e) ? parseFloat(e.split(",").join("")) : this.getTimestampRegex().test(e) ? new Date(this.strtotime(e)) : "" + e;
|
||
},
|
||
getTimestampRegex: function() {
|
||
return new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[ ]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:.([0-9]*))?(?:[ ]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$", "gi");
|
||
},
|
||
trim: function(e) {
|
||
return (e + "").replace(/^\s+/, "").replace(/\s+$/, "");
|
||
},
|
||
isNumeric: function(e) {
|
||
return e - 0 == e && e.length > 0 && "" != e.replace(/\s+/g, "");
|
||
},
|
||
inArray: function(e, t) {
|
||
var n, i = t.length;
|
||
for (n = 0; i > n; n++) if (e == t[n]) return !0;
|
||
return !1;
|
||
},
|
||
getKeys: function(e) {
|
||
var t = [];
|
||
for (var n in e) e.hasOwnProperty(n) && t.push(n);
|
||
return t;
|
||
},
|
||
octdec: function(e) {
|
||
return parseInt((e + "").replace(/[^0-7]/gi, ""), 8);
|
||
},
|
||
hexdec: function(e) {
|
||
return e = this.trim(e), "0x" == (e + "").substr(0, 2) && (e = (e + "").substring(2)),
|
||
parseInt((e + "").replace(/[^a-f0-9]/gi, ""), 16);
|
||
},
|
||
strtotime: function(e, t) {
|
||
var n, i, o, r, s = "";
|
||
if (e = (e + "").replace(/\s{2,}|^\s|\s$/g, " ").replace(/[\t\r\n]/g, ""), "now" === e) return null === t || isNaN(t) ? new Date().getTime() || 0 : t || 0;
|
||
if (!isNaN(s = Date.parse(e))) return s || 0;
|
||
t = t ? new Date(t) : new Date(), e = e.toLowerCase();
|
||
var a = {
|
||
day: {
|
||
sun: 0,
|
||
mon: 1,
|
||
tue: 2,
|
||
wed: 3,
|
||
thu: 4,
|
||
fri: 5,
|
||
sat: 6
|
||
},
|
||
mon: [ "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec" ]
|
||
}, l = function(e) {
|
||
var n = e[2] && "ago" === e[2], i = (i = "last" === e[0] ? -1 : 1) * (n ? -1 : 1);
|
||
switch (e[0]) {
|
||
case "last":
|
||
case "next":
|
||
switch (e[1].substring(0, 3)) {
|
||
case "yea":
|
||
t.setFullYear(t.getFullYear() + i);
|
||
break;
|
||
|
||
case "wee":
|
||
t.setDate(t.getDate() + 7 * i);
|
||
break;
|
||
|
||
case "day":
|
||
t.setDate(t.getDate() + i);
|
||
break;
|
||
|
||
case "hou":
|
||
t.setHours(t.getHours() + i);
|
||
break;
|
||
|
||
case "min":
|
||
t.setMinutes(t.getMinutes() + i);
|
||
break;
|
||
|
||
case "sec":
|
||
t.setSeconds(t.getSeconds() + i);
|
||
break;
|
||
|
||
case "mon":
|
||
if ("month" === e[1]) {
|
||
t.setMonth(t.getMonth() + i);
|
||
break;
|
||
}
|
||
|
||
default:
|
||
var o = a.day[e[1].substring(0, 3)];
|
||
if ("undefined" != typeof o) {
|
||
var r = o - t.getDay();
|
||
0 === r ? r = 7 * i : r > 0 ? "last" === e[0] && (r -= 7) : "next" === e[0] && (r += 7),
|
||
t.setDate(t.getDate() + r), t.setHours(0, 0, 0, 0);
|
||
}
|
||
}
|
||
break;
|
||
|
||
default:
|
||
if (!/\d+/.test(e[0])) return !1;
|
||
switch (i *= parseInt(e[0], 10), e[1].substring(0, 3)) {
|
||
case "yea":
|
||
t.setFullYear(t.getFullYear() + i);
|
||
break;
|
||
|
||
case "mon":
|
||
t.setMonth(t.getMonth() + i);
|
||
break;
|
||
|
||
case "wee":
|
||
t.setDate(t.getDate() + 7 * i);
|
||
break;
|
||
|
||
case "day":
|
||
t.setDate(t.getDate() + i);
|
||
break;
|
||
|
||
case "hou":
|
||
t.setHours(t.getHours() + i);
|
||
break;
|
||
|
||
case "min":
|
||
t.setMinutes(t.getMinutes() + i);
|
||
break;
|
||
|
||
case "sec":
|
||
t.setSeconds(t.getSeconds() + i);
|
||
}
|
||
}
|
||
return !0;
|
||
};
|
||
if (o = e.match(/^(\d{2,4}-\d{2}-\d{2})(?:\s(\d{1,2}:\d{2}(:\d{2})?)?(?:\.(\d+))?)?$/),
|
||
null !== o) return o[2] ? o[3] || (o[2] += ":00") : o[2] = "00:00:00", r = o[1].split(/-/g),
|
||
r[1] = a.mon[r[1] - 1] || r[1], r[0] = +r[0], r[0] = r[0] >= 0 && r[0] <= 69 ? "20" + (r[0] < 10 ? "0" + r[0] : r[0] + "") : r[0] >= 70 && r[0] <= 99 ? "19" + r[0] : r[0] + "",
|
||
parseInt(this.strtotime(r[2] + " " + r[1] + " " + r[0] + " " + o[2]) + (o[4] ? o[4] : ""), 10);
|
||
var c = "([+-]?\\d+\\s(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday)|(last|next)\\s(years?|months?|weeks?|days?|hours?|min|minutes?|sec|seconds?|sun\\.?|sunday|mon\\.?|monday|tue\\.?|tuesday|wed\\.?|wednesday|thu\\.?|thursday|fri\\.?|friday|sat\\.?|saturday))(\\sago)?";
|
||
if (o = e.match(new RegExp(c, "gi")), null === o) return !1;
|
||
for (n = 0, i = o.length; i > n; n++) if (!l(o[n].split(" "))) return !1;
|
||
return t.getTime() || 0;
|
||
}
|
||
}, o.REGEX_QUOTED_STRING = "(?:\"(?:[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\"|'(?:[^']*(?:''[^']*)*)')";
|
||
var r = function(e) {
|
||
this.offset = void 0 !== e ? e : 0;
|
||
};
|
||
r.prototype = {
|
||
offset: 0,
|
||
lines: [],
|
||
currentLineNb: -1,
|
||
currentLine: "",
|
||
refs: {},
|
||
parse: function(t) {
|
||
this.currentLineNb = -1, this.currentLine = "", this.lines = this.cleanup(t).split("\n");
|
||
for (var n = null, i = null; this.moveToNextLine(); ) if (!this.isCurrentLineEmpty()) {
|
||
if (" " == this.currentLine.charAt(0)) throw new e("A YAML file cannot contain tabs as indentation.", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
var s = !1, a = !1, l = !1, c = null, u = null, d = null, h = null, p = null, f = null, g = null, m = null, v = null;
|
||
if (c = /^\-((\s+)(.+?))?\s*$/.exec(this.currentLine)) {
|
||
if (i && "mapping" == i) throw new e("You cannot define a sequence item when in a mapping", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
i = "sequence", this.isDefined(n) || (n = []), c = {
|
||
leadspaces: c[2],
|
||
value: c[3]
|
||
}, this.isDefined(c.value) && (u = /^&([^ ]+) *(.*)/.exec(c.value)) && (u = {
|
||
ref: u[1],
|
||
value: u[2]
|
||
}, s = u.ref, c.value = u.value), this.isDefined(c.value) && "" != this.trim(c.value) && "#" != c.value.replace(/^ +/, "").charAt(0) ? this.isDefined(c.leadspaces) && " " == c.leadspaces && (u = new RegExp("^(" + o.REGEX_QUOTED_STRING + "|[^ '\"{[].*?) *:(\\s+(.+?))?\\s*$").exec(c.value)) ? (u = {
|
||
key: u[1],
|
||
value: u[3]
|
||
}, d = this.getRealCurrentLineNb(), h = new r(d), h.refs = this.refs, p = c.value,
|
||
this.isNextLineIndented() || (p += "\n" + this.getNextEmbedBlock(this.getCurrentLineIndentation() + 2)),
|
||
n.push(h.parse(p)), this.refs = h.refs) : n.push(this.parseValue(c.value)) : (d = this.getRealCurrentLineNb() + 1,
|
||
h = new r(d), h.refs = this.refs, n.push(h.parse(this.getNextEmbedBlock())), this.refs = h.refs);
|
||
} else {
|
||
if (!(c = new RegExp("^(" + o.REGEX_QUOTED_STRING + "|[^ '\"[{].*?) *:(\\s+(.+?))?\\s*$").exec(this.currentLine))) {
|
||
if (2 == this.lines.length && this.isEmpty(this.lines[1])) {
|
||
try {
|
||
t = new o().parse(this.lines[0]);
|
||
} catch (b) {
|
||
throw b instanceof e && (b.setParsedLine(this.getRealCurrentLineNb() + 1), b.setSnippet(this.currentLine)),
|
||
b;
|
||
}
|
||
if (this.isObject(t)) {
|
||
var y = t[0];
|
||
if ("string" == typeof t && "*" == y.charAt(0)) {
|
||
n = [], m = t.length;
|
||
for (var w = 0; m > w; w++) n.push(this.refs[t[w].substr(1)]);
|
||
t = n;
|
||
}
|
||
}
|
||
return t;
|
||
}
|
||
throw new e("Unable to parse.", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
}
|
||
if (this.isDefined(n) || (n = {}), i && "sequence" == i) throw new e("You cannot define a mapping item when in a sequence", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
i = "mapping", c = {
|
||
key: c[1],
|
||
value: c[3]
|
||
};
|
||
try {
|
||
f = new o().parseScalar(c.key);
|
||
} catch (b) {
|
||
throw b instanceof e && (b.setParsedLine(this.getRealCurrentLineNb() + 1), b.setSnippet(this.currentLine)),
|
||
b;
|
||
}
|
||
if ("<<" == f) if (this.isDefined(c.value) && "*" == (c.value + "").charAt(0)) {
|
||
if (a = c.value.substr(1), void 0 == this.refs[a]) throw new e('Reference "' + t + '" does not exist', this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
} else {
|
||
t = this.isDefined(c.value) && "" != c.value ? c.value : this.getNextEmbedBlock(),
|
||
d = this.getRealCurrentLineNb() + 1, h = new r(d), h.refs = this.refs, g = h.parse(t),
|
||
this.refs = h.refs;
|
||
var x = [];
|
||
if (!this.isObject(g)) throw new e("YAML merge keys used with a scalar value instead of an array", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
if (this.isDefined(g[0])) {
|
||
v = this.reverseArray(g), m = v.length;
|
||
for (var w = 0; m > w; w++) {
|
||
if (v[w], !this.isObject(v[w])) throw new e("Merge items must be arrays", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
x = this.mergeObject(v[w], x);
|
||
}
|
||
} else x = this.mergeObject(x, g);
|
||
l = x;
|
||
} else this.isDefined(c.value) && (u = /^&([^ ]+) *(.*)/.exec(c.value)) && (u = {
|
||
ref: u[1],
|
||
value: u[2]
|
||
}, s = u.ref, c.value = u.value);
|
||
l ? n = l : this.isDefined(c.value) && "" != this.trim(c.value) && "#" != this.trim(c.value).charAt(0) ? a ? n = this.refs[a] : n[f] = this.parseValue(c.value) : this.isNextLineIndented() && !this.isNextLineUnIndentedCollection() ? n[f] = null : (d = this.getRealCurrentLineNb() + 1,
|
||
h = new r(d), h.refs = this.refs, n[f] = h.parse(this.getNextEmbedBlock()), this.refs = h.refs);
|
||
}
|
||
if (s) if (n instanceof Array) this.refs[s] = n[n.length - 1]; else {
|
||
var C = null;
|
||
for (var E in n) n.hasOwnProperty(E) && (C = E);
|
||
this.refs[s] = n[E];
|
||
}
|
||
}
|
||
return this.isEmpty(n) ? null : n;
|
||
},
|
||
getRealCurrentLineNb: function() {
|
||
return this.currentLineNb + this.offset;
|
||
},
|
||
getCurrentLineIndentation: function() {
|
||
return this.currentLine.length - this.currentLine.replace(/^ +/g, "").length;
|
||
},
|
||
getNextEmbedBlock: function(t) {
|
||
this.moveToNextLine();
|
||
var n = null, i = null;
|
||
if (this.isDefined(t)) n = t; else {
|
||
n = this.getCurrentLineIndentation();
|
||
var o = this.isStringUnIndentedCollectionItem(this.currentLine);
|
||
if (!this.isCurrentLineEmpty() && 0 == n && !o) throw new e("Indentation problem A", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
}
|
||
var r = [ this.currentLine.substr(n) ], s = this.isStringUnIndentedCollectionItem(this.currentLine), a = -1;
|
||
for (s === !0 && (a = 1 + /^\-((\s+)(.+?))?\s*$/.exec(this.currentLine)[2].length); this.moveToNextLine(); ) {
|
||
if (s && !this.isStringUnIndentedCollectionItem(this.currentLine) && this.getCurrentLineIndentation() != a) {
|
||
this.moveToPreviousLine();
|
||
break;
|
||
}
|
||
if (this.isCurrentLineEmpty()) this.isCurrentLineBlank() && r.push(this.currentLine.substr(n)); else {
|
||
i = this.getCurrentLineIndentation();
|
||
var l;
|
||
if (l = /^( *)$/.exec(this.currentLine)) r.push(l[1]); else {
|
||
if (!(i >= n)) {
|
||
if (0 == i) {
|
||
this.moveToPreviousLine();
|
||
break;
|
||
}
|
||
throw new e("Indentation problem B", this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
}
|
||
r.push(this.currentLine.substr(n));
|
||
}
|
||
}
|
||
}
|
||
return r.join("\n");
|
||
},
|
||
moveToNextLine: function() {
|
||
return this.currentLineNb >= this.lines.length - 1 ? !1 : (this.currentLineNb++,
|
||
this.currentLine = this.lines[this.currentLineNb], !0);
|
||
},
|
||
moveToPreviousLine: function() {
|
||
this.currentLineNb--, this.currentLine = this.lines[this.currentLineNb];
|
||
},
|
||
parseValue: function(t) {
|
||
if ("*" == (t + "").charAt(0)) {
|
||
if (t = "#" == this.trim(t).charAt(0) ? (t + "").substr(1, t.indexOf("#") - 2) : (t + "").substr(1),
|
||
void 0 == this.refs[t]) throw new e('Reference "' + t + '" does not exist', this.getRealCurrentLineNb() + 1, this.currentLine);
|
||
return this.refs[t];
|
||
}
|
||
var n = null;
|
||
if (n = /^(\||>)(\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?( +#.*)?$/.exec(t)) {
|
||
n = {
|
||
separator: n[1],
|
||
modifiers: n[2],
|
||
comments: n[3]
|
||
};
|
||
var i = this.isDefined(n.modifiers) ? n.modifiers : "";
|
||
return this.parseFoldedScalar(n.separator, i.replace(/\d+/g, ""), Math.abs(parseInt(i)));
|
||
}
|
||
try {
|
||
return new o().parse(t);
|
||
} catch (r) {
|
||
throw r instanceof e && (r.setParsedLine(this.getRealCurrentLineNb() + 1), r.setSnippet(this.currentLine)),
|
||
r;
|
||
}
|
||
},
|
||
parseFoldedScalar: function(e, t, n) {
|
||
void 0 == t && (t = ""), void 0 == n && (n = 0), e = "|" == e ? "\n" : " ";
|
||
for (var i = "", o = null, r = this.moveToNextLine(); r && this.isCurrentLineBlank(); ) i += "\n",
|
||
r = this.moveToNextLine();
|
||
if (!r) return "";
|
||
var s = null;
|
||
if (!(s = new RegExp("^(" + (n ? this.strRepeat(" ", n) : " +") + ")(.*)$").exec(this.currentLine))) return this.moveToPreviousLine(),
|
||
"";
|
||
s = {
|
||
indent: s[1],
|
||
text: s[2]
|
||
};
|
||
var a = s.indent, l = 0;
|
||
for (i += s.text + e; this.currentLineNb + 1 < this.lines.length; ) if (this.moveToNextLine(),
|
||
s = new RegExp("^( {" + a.length + ",})(.+)$").exec(this.currentLine)) s = {
|
||
indent: s[1],
|
||
text: s[2]
|
||
}, " " == e && l != s.indent && (i = i.substr(0, i.length - 1) + "\n"), l = s.indent,
|
||
o = s.indent.length - a.length, i += this.strRepeat(" ", o) + s.text + (0 != o ? "\n" : e); else {
|
||
if (!(s = /^( *)$/.exec(this.currentLine))) {
|
||
this.moveToPreviousLine();
|
||
break;
|
||
}
|
||
i += s[1].replace(new RegExp("^ {1," + a.length + "}", "g"), "") + "\n";
|
||
}
|
||
switch (" " == e && (i = i.replace(/ (\n*)$/g, "\n$1")), t) {
|
||
case "":
|
||
i = i.replace(/\n+$/g, "\n");
|
||
break;
|
||
|
||
case "+":
|
||
break;
|
||
|
||
case "-":
|
||
i = i.replace(/\n+$/g, "");
|
||
}
|
||
return i;
|
||
},
|
||
isNextLineIndented: function() {
|
||
for (var e = this.getCurrentLineIndentation(), t = this.moveToNextLine(); t && this.isCurrentLineEmpty(); ) t = this.moveToNextLine();
|
||
if (0 == t) return !1;
|
||
var n = !1;
|
||
return this.getCurrentLineIndentation() <= e && (n = !0), this.moveToPreviousLine(),
|
||
n;
|
||
},
|
||
isCurrentLineEmpty: function() {
|
||
return this.isCurrentLineBlank() || this.isCurrentLineComment();
|
||
},
|
||
isCurrentLineBlank: function() {
|
||
return "" == this.trim(this.currentLine);
|
||
},
|
||
isCurrentLineComment: function() {
|
||
var e = this.currentLine.replace(/^ +/g, "");
|
||
return "#" == e.charAt(0);
|
||
},
|
||
cleanup: function(e) {
|
||
e = e.split("\r\n").join("\n").split("\r").join("\n"), /\n$/.test(e) || (e += "\n");
|
||
for (var t = 0, n = /^\%YAML[: ][\d\.]+.*\n/; n.test(e); ) e = e.replace(n, ""),
|
||
t++;
|
||
if (this.offset += t, n = /^(#.*?\n)+/, n.test(e)) {
|
||
var i = e.replace(n, "");
|
||
this.offset += this.subStrCount(e, "\n") - this.subStrCount(i, "\n"), e = i;
|
||
}
|
||
return n = /^\-\-\-.*?\n/, n.test(e) && (i = e.replace(n, ""), this.offset += this.subStrCount(e, "\n") - this.subStrCount(i, "\n"),
|
||
e = i, e = e.replace(/\.\.\.\s*$/g, "")), e;
|
||
},
|
||
isNextLineUnIndentedCollection: function() {
|
||
for (var e = this.getCurrentLineIndentation(), t = this.moveToNextLine(); t && this.isCurrentLineEmpty(); ) t = this.moveToNextLine();
|
||
if (!1 === t) return !1;
|
||
var n = !1;
|
||
return this.getCurrentLineIndentation() == e && this.isStringUnIndentedCollectionItem(this.currentLine) && (n = !0),
|
||
this.moveToPreviousLine(), n;
|
||
},
|
||
isStringUnIndentedCollectionItem: function() {
|
||
return 0 === this.currentLine.indexOf("- ");
|
||
},
|
||
isObject: function(e) {
|
||
return "object" == typeof e && this.isDefined(e);
|
||
},
|
||
isEmpty: function(e) {
|
||
return void 0 == e || null == e || "" == e || 0 == e || "0" == e || 0 == e;
|
||
},
|
||
isDefined: function(e) {
|
||
return void 0 != e && null != e;
|
||
},
|
||
reverseArray: function(e) {
|
||
for (var t = [], n = e.length, i = n - 1; i >= 0; i--) t.push(e[i]);
|
||
return t;
|
||
},
|
||
merge: function(e, t) {
|
||
var n, i = {};
|
||
for (n in e) e.hasOwnProperty(n) && (/^\d+$/.test(n) ? i.push(e) : i[n] = e[n]);
|
||
for (n in t) t.hasOwnProperty(n) && (/^\d+$/.test(n) ? i.push(t) : i[n] = t[n]);
|
||
return i;
|
||
},
|
||
strRepeat: function(e, t) {
|
||
var n, i = "";
|
||
for (n = 0; t > n; n++) i += e;
|
||
return i;
|
||
},
|
||
subStrCount: function(e, t, n, i) {
|
||
var o = 0;
|
||
e = "" + e, t = "" + t, void 0 != n && (e = e.substr(n)), void 0 != i && (e = e.substr(0, i));
|
||
for (var r = e.length, s = t.length, a = 0; r > a; a++) t == e.substr(a, s) && o++,
|
||
a += s - 1;
|
||
return o;
|
||
},
|
||
trim: function(e) {
|
||
return (e + "").replace(/^ +/, "").replace(/ +$/, "");
|
||
}
|
||
}, YamlEscaper = function() {}, YamlEscaper.prototype = {
|
||
requiresDoubleQuoting: function(e) {
|
||
return new RegExp(YamlEscaper.REGEX_CHARACTER_TO_ESCAPE).test(e);
|
||
},
|
||
escapeWithDoubleQuotes: function(e) {
|
||
e += "";
|
||
for (var t = YamlEscaper.escapees.length, n = YamlEscaper.escaped.length, i = YamlEscaper.escaped, o = 0; t > o; ++o) o >= n && i.push("");
|
||
var r = "";
|
||
return r = e.replace(new RegExp(YamlEscaper.escapees.join("|"), "g"), function(e) {
|
||
for (var n = 0; t > n; ++n) if (e == YamlEscaper.escapees[n]) return i[n];
|
||
}), '"' + r + '"';
|
||
},
|
||
requiresSingleQuoting: function(e) {
|
||
return /[\s'":{}[\],&*#?]|^[-?|<>=!%@`]/.test(e);
|
||
},
|
||
escapeWithSingleQuotes: function(e) {
|
||
return "'" + e.replace(/'/g, "''") + "'";
|
||
}
|
||
}, YamlEscaper.REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|Â
| |â¨|â©", YamlEscaper.escapees = [ "\\\\", '\\"', '"', "\x00", "", "", "", "", "", "", "", "\b", " ", "\n", "", "\f", "\r", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Â
", " ", "â¨", "â©" ],
|
||
YamlEscaper.escaped = [ '\\"', "\\\\", '\\"', "\\0", "\\x01", "\\x02", "\\x03", "\\x04", "\\x05", "\\x06", "\\a", "\\b", "\\t", "\\n", "\\v", "\\f", "\\r", "\\x0e", "\\x0f", "\\x10", "\\x11", "\\x12", "\\x13", "\\x14", "\\x15", "\\x16", "\\x17", "\\x18", "\\x19", "\\x1a", "\\e", "\\x1c", "\\x1d", "\\x1e", "\\x1f", "\\N", "\\_", "\\L", "\\P" ];
|
||
var s = function() {};
|
||
s.prototype = {
|
||
unescapeSingleQuotedString: function(e) {
|
||
return e.replace(/''/g, "'");
|
||
},
|
||
unescapeDoubleQuotedString: function(e) {
|
||
var t = function(e) {
|
||
return new s().unescapeCharacter(e);
|
||
};
|
||
return e.replace(new RegExp(s.REGEX_ESCAPED_CHARACTER, "g"), t);
|
||
},
|
||
unescapeCharacter: function(e) {
|
||
switch (e.charAt(1)) {
|
||
case "0":
|
||
return String.fromCharCode(0);
|
||
|
||
case "a":
|
||
return String.fromCharCode(7);
|
||
|
||
case "b":
|
||
return String.fromCharCode(8);
|
||
|
||
case "t":
|
||
return " ";
|
||
|
||
case " ":
|
||
return " ";
|
||
|
||
case "n":
|
||
return "\n";
|
||
|
||
case "v":
|
||
return String.fromCharCode(11);
|
||
|
||
case "f":
|
||
return String.fromCharCode(12);
|
||
|
||
case "r":
|
||
return String.fromCharCode(13);
|
||
|
||
case "e":
|
||
return "";
|
||
|
||
case " ":
|
||
return " ";
|
||
|
||
case '"':
|
||
return '"';
|
||
|
||
case "/":
|
||
return "/";
|
||
|
||
case "\\":
|
||
return "\\";
|
||
|
||
case "N":
|
||
return "\x00
";
|
||
|
||
case "_":
|
||
return "\x00 ";
|
||
|
||
case "L":
|
||
return " (";
|
||
|
||
case "P":
|
||
return " )";
|
||
|
||
case "x":
|
||
return this.pack("n", new o().hexdec(e.substr(2, 2)));
|
||
|
||
case "u":
|
||
return this.pack("n", new o().hexdec(e.substr(2, 4)));
|
||
|
||
case "U":
|
||
return this.pack("N", new o().hexdec(e.substr(2, 8)));
|
||
}
|
||
},
|
||
pack: function(e) {
|
||
for (var t, n, i = 0, o = 1, r = "", s = 0; i < e.length; ) {
|
||
for (t = e.charAt(i), n = "", i++; i < e.length && null !== e.charAt(i).match(/[\d\*]/); ) n += e.charAt(i),
|
||
i++;
|
||
switch ("" === n && (n = "1"), t) {
|
||
case "n":
|
||
if ("*" === n && (n = arguments.length - o), n > arguments.length - o) throw new Error("Warning: pack() Type " + t + ": too few arguments");
|
||
for (s = 0; n > s; s++) r += String.fromCharCode(255 & arguments[o] >> 8), r += String.fromCharCode(255 & arguments[o]),
|
||
o++;
|
||
break;
|
||
|
||
case "N":
|
||
if ("*" === n && (n = arguments.length - o), n > arguments.length - o) throw new Error("Warning: pack() Type " + t + ": too few arguments");
|
||
for (s = 0; n > s; s++) r += String.fromCharCode(255 & arguments[o] >> 24), r += String.fromCharCode(255 & arguments[o] >> 16),
|
||
r += String.fromCharCode(255 & arguments[o] >> 8), r += String.fromCharCode(255 & arguments[o]),
|
||
o++;
|
||
break;
|
||
|
||
default:
|
||
throw new Error("Warning: pack() Type " + t + ": unknown format code");
|
||
}
|
||
}
|
||
if (o < arguments.length) throw new Error("Warning: pack(): " + (arguments.length - o) + " arguments unused");
|
||
return r;
|
||
}
|
||
}, s.REGEX_ESCAPED_CHARACTER = '\\\\([0abt nvfre "\\/\\\\N_LP]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})';
|
||
var a = function() {};
|
||
a.prototype = {
|
||
dump: function(e, t, n) {
|
||
null == t && (t = 0), null == n && (n = 0);
|
||
var i, r = "", s = n ? this.strRepeat(" ", n) : "";
|
||
if (this.numSpacesForIndentation || (this.numSpacesForIndentation = 2), 0 >= t || !this.isObject(e) || this.isEmpty(e)) i = new o(),
|
||
r += s + i.dump(e); else {
|
||
var a, l = !this.arrayEquals(this.getKeys(e), this.range(0, e.length - 1));
|
||
for (var c in e) e.hasOwnProperty(c) && (a = 0 >= t - 1 || !this.isObject(e[c]) || this.isEmpty(e[c]),
|
||
l && (i = new o()), r += s + "" + (l ? i.dump(c) + ":" : "-") + (a ? " " : "\n") + this.dump(e[c], t - 1, a ? 0 : n + this.numSpacesForIndentation) + (a ? "\n" : ""));
|
||
}
|
||
return r;
|
||
},
|
||
strRepeat: function(e, t) {
|
||
var n, i = "";
|
||
for (n = 0; t > n; n++) i += e;
|
||
return i;
|
||
},
|
||
isObject: function(e) {
|
||
return this.isDefined(e) && "object" == typeof e;
|
||
},
|
||
isEmpty: function(e) {
|
||
var t = void 0 == e || null == e || "" == e || 0 == e || "0" == e || 0 == e;
|
||
if (!(t || "object" != typeof e || e instanceof Array)) {
|
||
var n = 0;
|
||
for (var i in e) e.hasOwnProperty(i) && n++;
|
||
t = !n;
|
||
}
|
||
return t;
|
||
},
|
||
isDefined: function(e) {
|
||
return void 0 != e && null != e;
|
||
},
|
||
getKeys: function(e) {
|
||
var t = [];
|
||
for (var n in e) e.hasOwnProperty(n) && t.push(n);
|
||
return t;
|
||
},
|
||
range: function(e, t) {
|
||
if (e > t) return [];
|
||
for (var n = [], i = e; t >= i; i++) n.push(i);
|
||
return n;
|
||
},
|
||
arrayEquals: function(e, t) {
|
||
if (e.length != t.length) return !1;
|
||
for (var n = e.length, i = 0; n > i; i++) if (e[i] != t[i]) return !1;
|
||
return !0;
|
||
}
|
||
};
|
||
}(), define("yaml-js", function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.YAML;
|
||
};
|
||
}(this)), define("extensions/yamlFrontMatterParser", [ "classes/Extension", "yaml-js" ], function(e, t) {
|
||
var n, i = new e("yamlFrontMatterParser", "YAML front matter");
|
||
i.onEventMgrCreated = function(e) {
|
||
n = e;
|
||
};
|
||
var o;
|
||
i.onFileSelected = function(e) {
|
||
o = e;
|
||
};
|
||
var r = /^(\s*-{3}\s*\n([\w\W]+?)\n\s*-{3}\s*\n)?([\w\W]*)$/;
|
||
return i.onPagedownConfigure = function(e) {
|
||
var i = e.getConverter();
|
||
i.hooks.chain("preConversion", function(e) {
|
||
var i = r.exec(e), s = i[2];
|
||
if (s && (!o.frontMatter || o.frontMatter._yaml != s)) {
|
||
o.frontMatter = void 0;
|
||
try {
|
||
o.frontMatter = t.parse(s), o.frontMatter._yaml = s, o.frontMatter._frontMatter = i[1];
|
||
} catch (a) {}
|
||
}
|
||
return n.onMarkdownTrim((i[1] || "").length), i[3];
|
||
});
|
||
}, i;
|
||
}), define("text!html/markdownExtraSettingsBlock.html", [], function() {
|
||
return '<p>Adds extra features to the original Markdown syntax.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-markdownextra-tables">Tables</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-tables">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-deflist">Definition lists</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-deflist">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-attrlist">Special attributes</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-attrlist">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-footnotes">Footnotes</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-footnotes">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-smartypants">SmartyPants</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-smartypants">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-newlines">GFM newlines</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-newlines">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-intraword">GFM intra-word stars/underscores</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-intraword">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-strikethrough">GFM strikethrough</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-strikethrough">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-fencedcodegfm">GFM fenced code\n blocks</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-markdownextra-fencedcodegfm">\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-markdownextra-highlighter">Syntax highlighter</label>\n <div class="col-lg-7">\n <select id="input-markdownextra-highlighter" class="form-control"><option>None</option>\n <option value="prettify">Prettify</option>\n <option value="highlight">Highlight.js</option>\n </select>\n </div>\n </div>\n</div>\n<span class="help-block pull-right"><a target="_blank"\n href="https://github.com/jmcmanus/pagedown-extra">More info</a></span>';
|
||
}), window.PR_SHOULD_USE_CONTINUATION = !0;
|
||
|
||
var prettyPrintOne, prettyPrint;
|
||
|
||
!function() {
|
||
function e(e) {
|
||
function t(e) {
|
||
var t = e.charCodeAt(0);
|
||
if (92 !== t) return t;
|
||
var n = e.charAt(1);
|
||
return t = d[n], t ? t : n >= "0" && "7" >= n ? parseInt(e.substring(1), 8) : "u" === n || "x" === n ? parseInt(e.substring(2), 16) : e.charCodeAt(1);
|
||
}
|
||
function n(e) {
|
||
if (32 > e) return (16 > e ? "\\x0" : "\\x") + e.toString(16);
|
||
var t = String.fromCharCode(e);
|
||
return "\\" === t || "-" === t || "]" === t || "^" === t ? "\\" + t : t;
|
||
}
|
||
function i(e) {
|
||
var i = e.substring(1, e.length - 1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]", "g")), o = [], r = "^" === i[0], s = [ "[" ];
|
||
r && s.push("^");
|
||
for (var a = r ? 1 : 0, l = i.length; l > a; ++a) {
|
||
var c = i[a];
|
||
if (/\\[bdsw]/i.test(c)) s.push(c); else {
|
||
var u, d = t(c);
|
||
l > a + 2 && "-" === i[a + 1] ? (u = t(i[a + 2]), a += 2) : u = d, o.push([ d, u ]),
|
||
65 > u || d > 122 || (65 > u || d > 90 || o.push([ 32 | Math.max(65, d), 32 | Math.min(u, 90) ]),
|
||
97 > u || d > 122 || o.push([ -33 & Math.max(97, d), -33 & Math.min(u, 122) ]));
|
||
}
|
||
}
|
||
o.sort(function(e, t) {
|
||
return e[0] - t[0] || t[1] - e[1];
|
||
});
|
||
for (var h = [], p = [], a = 0; a < o.length; ++a) {
|
||
var f = o[a];
|
||
f[0] <= p[1] + 1 ? p[1] = Math.max(p[1], f[1]) : h.push(p = f);
|
||
}
|
||
for (var a = 0; a < h.length; ++a) {
|
||
var f = h[a];
|
||
s.push(n(f[0])), f[1] > f[0] && (f[1] + 1 > f[0] && s.push("-"), s.push(n(f[1])));
|
||
}
|
||
return s.push("]"), s.join("");
|
||
}
|
||
function o(e) {
|
||
for (var t = e.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)", "g")), o = t.length, a = [], l = 0, c = 0; o > l; ++l) {
|
||
var u = t[l];
|
||
if ("(" === u) ++c; else if ("\\" === u.charAt(0)) {
|
||
var d = +u.substring(1);
|
||
d && (c >= d ? a[d] = -1 : t[l] = n(d));
|
||
}
|
||
}
|
||
for (var l = 1; l < a.length; ++l) -1 === a[l] && (a[l] = ++r);
|
||
for (var l = 0, c = 0; o > l; ++l) {
|
||
var u = t[l];
|
||
if ("(" === u) ++c, a[c] || (t[l] = "(?:"); else if ("\\" === u.charAt(0)) {
|
||
var d = +u.substring(1);
|
||
d && c >= d && (t[l] = "\\" + a[d]);
|
||
}
|
||
}
|
||
for (var l = 0; o > l; ++l) "^" === t[l] && "^" !== t[l + 1] && (t[l] = "");
|
||
if (e.ignoreCase && s) for (var l = 0; o > l; ++l) {
|
||
var u = t[l], h = u.charAt(0);
|
||
u.length >= 2 && "[" === h ? t[l] = i(u) : "\\" !== h && (t[l] = u.replace(/[a-zA-Z]/g, function(e) {
|
||
var t = e.charCodeAt(0);
|
||
return "[" + String.fromCharCode(-33 & t, 32 | t) + "]";
|
||
}));
|
||
}
|
||
return t.join("");
|
||
}
|
||
for (var r = 0, s = !1, a = !1, l = 0, c = e.length; c > l; ++l) {
|
||
var u = e[l];
|
||
if (u.ignoreCase) a = !0; else if (/[a-z]/i.test(u.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ""))) {
|
||
s = !0, a = !1;
|
||
break;
|
||
}
|
||
}
|
||
for (var d = {
|
||
b: 8,
|
||
t: 9,
|
||
n: 10,
|
||
v: 11,
|
||
f: 12,
|
||
r: 13
|
||
}, h = [], l = 0, c = e.length; c > l; ++l) {
|
||
var u = e[l];
|
||
if (u.global || u.multiline) throw new Error("" + u);
|
||
h.push("(?:" + o(u) + ")");
|
||
}
|
||
return new RegExp(h.join("|"), a ? "gi" : "g");
|
||
}
|
||
function t(e, t) {
|
||
function n(e) {
|
||
switch (e.nodeType) {
|
||
case 1:
|
||
if (i.test(e.className)) return;
|
||
for (var l = e.firstChild; l; l = l.nextSibling) n(l);
|
||
var c = e.nodeName.toLowerCase();
|
||
("br" === c || "li" === c) && (o[a] = "\n", s[a << 1] = r++, s[1 | a++ << 1] = e);
|
||
break;
|
||
|
||
case 3:
|
||
case 4:
|
||
var u = e.nodeValue;
|
||
u.length && (u = t ? u.replace(/\r\n?/g, "\n") : u.replace(/[ \t\r\n]+/g, " "),
|
||
o[a] = u, s[a << 1] = r, r += u.length, s[1 | a++ << 1] = e);
|
||
}
|
||
}
|
||
var i = /(?:^|\s)nocode(?:\s|$)/, o = [], r = 0, s = [], a = 0;
|
||
return n(e), {
|
||
sourceCode: o.join("").replace(/\n$/, ""),
|
||
spans: s
|
||
};
|
||
}
|
||
function n(e, t, n, i) {
|
||
if (t) {
|
||
var o = {
|
||
sourceCode: t,
|
||
basePos: e
|
||
};
|
||
n(o), i.push.apply(i, o.decorations);
|
||
}
|
||
}
|
||
function i(e) {
|
||
for (var t = void 0, n = e.firstChild; n; n = n.nextSibling) {
|
||
var i = n.nodeType;
|
||
t = 1 === i ? t ? e : n : 3 === i ? H.test(n.nodeValue) ? e : t : t;
|
||
}
|
||
return t === e ? void 0 : t;
|
||
}
|
||
function o(t, i) {
|
||
var o, r = {};
|
||
!function() {
|
||
for (var n = t.concat(i), s = [], a = {}, l = 0, c = n.length; c > l; ++l) {
|
||
var u = n[l], d = u[3];
|
||
if (d) for (var h = d.length; --h >= 0; ) r[d.charAt(h)] = u;
|
||
var p = u[1], f = "" + p;
|
||
a.hasOwnProperty(f) || (s.push(p), a[f] = null);
|
||
}
|
||
s.push(/[\0-\uffff]/), o = e(s);
|
||
}();
|
||
var s = i.length, a = function(e) {
|
||
for (var t = e.sourceCode, l = e.basePos, u = [ l, R ], d = 0, h = t.match(o) || [], p = {}, f = 0, g = h.length; g > f; ++f) {
|
||
var m, v = h[f], b = p[v], y = void 0;
|
||
if ("string" == typeof b) m = !1; else {
|
||
var w = r[v.charAt(0)];
|
||
if (w) y = v.match(w[1]), b = w[0]; else {
|
||
for (var x = 0; s > x; ++x) if (w = i[x], y = v.match(w[1])) {
|
||
b = w[0];
|
||
break;
|
||
}
|
||
y || (b = R);
|
||
}
|
||
m = b.length >= 5 && "lang-" === b.substring(0, 5), !m || y && "string" == typeof y[1] || (m = !1,
|
||
b = B), m || (p[v] = b);
|
||
}
|
||
var C = d;
|
||
if (d += v.length, m) {
|
||
var E = y[1], k = v.indexOf(E), A = k + E.length;
|
||
y[2] && (A = v.length - y[2].length, k = A - E.length);
|
||
var S = b.substring(5);
|
||
n(l + C, v.substring(0, k), a, u), n(l + C + k, E, c(S, E), u), n(l + C + A, v.substring(A), a, u);
|
||
} else u.push(l + C, b);
|
||
}
|
||
e.decorations = u;
|
||
};
|
||
return a;
|
||
}
|
||
function r(e) {
|
||
var t = [], n = [];
|
||
e.tripleQuotedStrings ? t.push([ F, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, null, "'\"" ]) : e.multiLineStrings ? t.push([ F, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, null, "'\"`" ]) : t.push([ F, /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, null, "\"'" ]),
|
||
e.verbatimStrings && n.push([ F, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null ]);
|
||
var i = e.hashComments;
|
||
if (i && (e.cStyleComments ? (i > 1 ? t.push([ D, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, "#" ]) : t.push([ D, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/, null, "#" ]),
|
||
n.push([ F, /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/, null ])) : t.push([ D, /^#[^\r\n]*/, null, "#" ])),
|
||
e.cStyleComments && (n.push([ D, /^\/\/[^\r\n]*/, null ]), n.push([ D, /^\/\*[\s\S]*?(?:\*\/|$)/, null ])),
|
||
e.regexLiterals) {
|
||
var r = "/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/";
|
||
n.push([ "lang-regex", new RegExp("^" + j + "(" + r + ")") ]);
|
||
}
|
||
var s = e.types;
|
||
s && n.push([ L, s ]);
|
||
var a = ("" + e.keywords).replace(/^ | $/g, "");
|
||
a.length && n.push([ T, new RegExp("^(?:" + a.replace(/[\s,]+/g, "|") + ")\\b"), null ]),
|
||
t.push([ R, /^\s+/, null, " \r\n " ]);
|
||
var l = /^.[^\s\w\.$@\'\"\`\/\\]*/;
|
||
return n.push([ $, /^@[a-z_$][a-z_$@0-9]*/i, null ], [ L, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null ], [ R, /^[a-z_$][a-z_$@0-9]*/i, null ], [ $, new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*", "i"), null, "0123456789" ], [ R, /^\\[\s\S]?/, null ], [ I, l, null ]),
|
||
o(t, n);
|
||
}
|
||
function s(e, t, n) {
|
||
function i(e) {
|
||
switch (e.nodeType) {
|
||
case 1:
|
||
if (r.test(e.className)) break;
|
||
if ("br" === e.nodeName) o(e), e.parentNode && e.parentNode.removeChild(e); else for (var t = e.firstChild; t; t = t.nextSibling) i(t);
|
||
break;
|
||
|
||
case 3:
|
||
case 4:
|
||
if (n) {
|
||
var l = e.nodeValue, c = l.match(s);
|
||
if (c) {
|
||
var u = l.substring(0, c.index);
|
||
e.nodeValue = u;
|
||
var d = l.substring(c.index + c[0].length);
|
||
if (d) {
|
||
var h = e.parentNode;
|
||
h.insertBefore(a.createTextNode(d), e.nextSibling);
|
||
}
|
||
o(e), u || e.parentNode.removeChild(e);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
function o(e) {
|
||
function t(e, n) {
|
||
var i = n ? e.cloneNode(!1) : e, o = e.parentNode;
|
||
if (o) {
|
||
var r = t(o, 1), s = e.nextSibling;
|
||
r.appendChild(i);
|
||
for (var a = s; a; a = s) s = a.nextSibling, r.appendChild(a);
|
||
}
|
||
return i;
|
||
}
|
||
for (;!e.nextSibling; ) if (e = e.parentNode, !e) return;
|
||
for (var n, i = t(e.nextSibling, 0); (n = i.parentNode) && 1 === n.nodeType; ) i = n;
|
||
c.push(i);
|
||
}
|
||
for (var r = /(?:^|\s)nocode(?:\s|$)/, s = /\r\n?|\n/, a = e.ownerDocument, l = a.createElement("li"); e.firstChild; ) l.appendChild(e.firstChild);
|
||
for (var c = [ l ], u = 0; u < c.length; ++u) i(c[u]);
|
||
t === (0 | t) && c[0].setAttribute("value", t);
|
||
var d = a.createElement("ol");
|
||
d.className = "linenums";
|
||
for (var h = Math.max(0, 0 | t - 1) || 0, u = 0, p = c.length; p > u; ++u) l = c[u],
|
||
l.className = "L" + (u + h) % 10, l.firstChild || l.appendChild(a.createTextNode(" ")),
|
||
d.appendChild(l);
|
||
e.appendChild(d);
|
||
}
|
||
function a(e) {
|
||
var t = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
|
||
t = t && +t[1] <= 8;
|
||
var n = /\n/g, i = e.sourceCode, o = i.length, r = 0, s = e.spans, a = s.length, l = 0, c = e.decorations, u = c.length, d = 0;
|
||
c[u] = o;
|
||
var h, p;
|
||
for (p = h = 0; u > p; ) c[p] !== c[p + 2] ? (c[h++] = c[p++], c[h++] = c[p++]) : p += 2;
|
||
for (u = h, p = h = 0; u > p; ) {
|
||
for (var f = c[p], g = c[p + 1], m = p + 2; u >= m + 2 && c[m + 1] === g; ) m += 2;
|
||
c[h++] = f, c[h++] = g, p = m;
|
||
}
|
||
u = c.length = h;
|
||
var v, b = e.sourceNode;
|
||
b && (v = b.style.display, b.style.display = "none");
|
||
try {
|
||
for (;a > l; ) {
|
||
s[l];
|
||
var y, w = s[l + 2] || o, x = c[d + 2] || o, m = Math.min(w, x), C = s[l + 1];
|
||
if (1 !== C.nodeType && (y = i.substring(r, m))) {
|
||
t && (y = y.replace(n, "\r")), C.nodeValue = y;
|
||
var E = C.ownerDocument, k = E.createElement("span");
|
||
k.className = c[d + 1];
|
||
var A = C.parentNode;
|
||
A.replaceChild(k, C), k.appendChild(C), w > r && (s[l + 1] = C = E.createTextNode(i.substring(m, w)),
|
||
A.insertBefore(C, k.nextSibling));
|
||
}
|
||
r = m, r >= w && (l += 2), r >= x && (d += 2);
|
||
}
|
||
} finally {
|
||
b && (b.style.display = v);
|
||
}
|
||
}
|
||
function l(e, t) {
|
||
for (var n = t.length; --n >= 0; ) {
|
||
var i = t[n];
|
||
W.hasOwnProperty(i) ? p.console && console.warn("cannot override language handler %s", i) : W[i] = e;
|
||
}
|
||
}
|
||
function c(e, t) {
|
||
return e && W.hasOwnProperty(e) || (e = /^\s*</.test(t) ? "default-markup" : "default-code"),
|
||
W[e];
|
||
}
|
||
function u(e) {
|
||
var n = e.langExtension;
|
||
try {
|
||
var i = t(e.sourceNode, e.pre), o = i.sourceCode;
|
||
e.sourceCode = o, e.spans = i.spans, e.basePos = 0, c(n, o)(e), a(e);
|
||
} catch (r) {
|
||
p.console && console.log(r && r.stack ? r.stack : r);
|
||
}
|
||
}
|
||
function d(e, t, n) {
|
||
var i = document.createElement("pre");
|
||
i.innerHTML = e, n && s(i, n, !0);
|
||
var o = {
|
||
langExtension: t,
|
||
numberLines: n,
|
||
sourceNode: i,
|
||
pre: 1
|
||
};
|
||
return u(o), i.innerHTML;
|
||
}
|
||
function h(e) {
|
||
function t(e) {
|
||
return document.getElementsByTagName(e);
|
||
}
|
||
function n() {
|
||
for (var t = p.PR_SHOULD_USE_CONTINUATION ? d.now() + 250 : 1/0; f < r.length && d.now() < t; f++) {
|
||
var o = r[f], a = o.className;
|
||
if (m.test(a) && !v.test(a)) {
|
||
for (var l = !1, c = o.parentNode; c; c = c.parentNode) {
|
||
var x = c.tagName;
|
||
if (w.test(x) && c.className && m.test(c.className)) {
|
||
l = !0;
|
||
break;
|
||
}
|
||
}
|
||
if (!l) {
|
||
o.className += " prettyprinted";
|
||
var C, E = a.match(g);
|
||
!E && (C = i(o)) && y.test(C.tagName) && (E = C.className.match(g)), E && (E = E[1]);
|
||
var k;
|
||
if (b.test(o.tagName)) k = 1; else {
|
||
var A = o.currentStyle, S = A ? A.whiteSpace : document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(o, null).getPropertyValue("white-space") : 0;
|
||
k = S && "pre" === S.substring(0, 3);
|
||
}
|
||
var _ = o.className.match(/\blinenums\b(?::(\d+))?/);
|
||
_ = _ ? _[1] && _[1].length ? +_[1] : !0 : !1, _ && s(o, _, k), h = {
|
||
langExtension: E,
|
||
sourceNode: o,
|
||
numberLines: _,
|
||
pre: k
|
||
}, u(h);
|
||
}
|
||
}
|
||
}
|
||
f < r.length ? setTimeout(n, 250) : e && e();
|
||
}
|
||
for (var o = [ t("pre"), t("code"), t("xmp") ], r = [], a = 0; a < o.length; ++a) for (var l = 0, c = o[a].length; c > l; ++l) r.push(o[a][l]);
|
||
o = null;
|
||
var d = Date;
|
||
d.now || (d = {
|
||
now: function() {
|
||
return +new Date();
|
||
}
|
||
});
|
||
var h, f = 0, g = /\blang(?:uage)?-([\w.]+)(?!\S)/, m = /\bprettyprint\b/, v = /\bprettyprinted\b/, b = /pre|xmp/i, y = /^code$/i, w = /^(?:pre|code|xmp)$/i;
|
||
n();
|
||
}
|
||
var p = window, f = [ "break,continue,do,else,for,if,return,while" ], g = [ f, "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile" ], m = [ g, "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof" ], v = [ m, "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where" ], b = [ m, "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient" ], y = [ b, "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where" ], w = "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes", x = [ m, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN" ], C = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END", E = [ f, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None" ], k = [ f, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END" ], A = [ f, "case,done,elif,esac,eval,fi,function,in,local,set,then,until" ], S = [ v, y, x, C + E, k, A ], _ = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/, F = "str", T = "kwd", D = "com", L = "typ", $ = "lit", I = "pun", R = "pln", M = "tag", N = "dec", B = "src", P = "atn", O = "atv", z = "nocode", j = "(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*", H = /\S/, U = r({
|
||
keywords: S,
|
||
hashComments: !0,
|
||
cStyleComments: !0,
|
||
multiLineStrings: !0,
|
||
regexLiterals: !0
|
||
}), W = {};
|
||
l(U, [ "default-code" ]), l(o([], [ [ R, /^[^<?]+/ ], [ N, /^<!\w[^>]*(?:>|$)/ ], [ D, /^<\!--[\s\S]*?(?:-\->|$)/ ], [ "lang-", /^<\?([\s\S]+?)(?:\?>|$)/ ], [ "lang-", /^<%([\s\S]+?)(?:%>|$)/ ], [ I, /^(?:<[%?]|[%?]>)/ ], [ "lang-", /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i ], [ "lang-js", /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i ], [ "lang-css", /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i ], [ "lang-in.tag", /^(<\/?[a-z][^<>]*>)/i ] ]), [ "default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl" ]),
|
||
l(o([ [ R, /^[\s]+/, null, " \r\n" ], [ O, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, "\"'" ] ], [ [ M, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i ], [ P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i ], [ "lang-uq.val", /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/ ], [ I, /^[=<>\/]+/ ], [ "lang-js", /^on\w+\s*=\s*\"([^\"]+)\"/i ], [ "lang-js", /^on\w+\s*=\s*\'([^\']+)\'/i ], [ "lang-js", /^on\w+\s*=\s*([^\"\'>\s]+)/i ], [ "lang-css", /^style\s*=\s*\"([^\"]+)\"/i ], [ "lang-css", /^style\s*=\s*\'([^\']+)\'/i ], [ "lang-css", /^style\s*=\s*([^\"\'>\s]+)/i ] ]), [ "in.tag" ]),
|
||
l(o([], [ [ O, /^[\s\S]+/ ] ]), [ "uq.val" ]), l(r({
|
||
keywords: v,
|
||
hashComments: !0,
|
||
cStyleComments: !0,
|
||
types: _
|
||
}), [ "c", "cc", "cpp", "cxx", "cyc", "m" ]), l(r({
|
||
keywords: "null,true,false"
|
||
}), [ "json" ]), l(r({
|
||
keywords: y,
|
||
hashComments: !0,
|
||
cStyleComments: !0,
|
||
verbatimStrings: !0,
|
||
types: _
|
||
}), [ "cs" ]), l(r({
|
||
keywords: b,
|
||
cStyleComments: !0
|
||
}), [ "java" ]), l(r({
|
||
keywords: A,
|
||
hashComments: !0,
|
||
multiLineStrings: !0
|
||
}), [ "bsh", "csh", "sh" ]), l(r({
|
||
keywords: E,
|
||
hashComments: !0,
|
||
multiLineStrings: !0,
|
||
tripleQuotedStrings: !0
|
||
}), [ "cv", "py" ]), l(r({
|
||
keywords: C,
|
||
hashComments: !0,
|
||
multiLineStrings: !0,
|
||
regexLiterals: !0
|
||
}), [ "perl", "pl", "pm" ]), l(r({
|
||
keywords: k,
|
||
hashComments: !0,
|
||
multiLineStrings: !0,
|
||
regexLiterals: !0
|
||
}), [ "rb" ]), l(r({
|
||
keywords: x,
|
||
cStyleComments: !0,
|
||
regexLiterals: !0
|
||
}), [ "js" ]), l(r({
|
||
keywords: w,
|
||
hashComments: 3,
|
||
cStyleComments: !0,
|
||
multilineStrings: !0,
|
||
tripleQuotedStrings: !0,
|
||
regexLiterals: !0
|
||
}), [ "coffee" ]), l(o([], [ [ F, /^[\s\S]+/ ] ]), [ "regex" ]);
|
||
var q = p.PR = {
|
||
createSimpleLexer: o,
|
||
registerLangHandler: l,
|
||
sourceDecorator: r,
|
||
PR_ATTRIB_NAME: P,
|
||
PR_ATTRIB_VALUE: O,
|
||
PR_COMMENT: D,
|
||
PR_DECLARATION: N,
|
||
PR_KEYWORD: T,
|
||
PR_LITERAL: $,
|
||
PR_NOCODE: z,
|
||
PR_PLAIN: R,
|
||
PR_PUNCTUATION: I,
|
||
PR_SOURCE: B,
|
||
PR_STRING: F,
|
||
PR_TAG: M,
|
||
PR_TYPE: L,
|
||
prettyPrintOne: p.prettyPrintOne = d,
|
||
prettyPrint: p.prettyPrint = h
|
||
};
|
||
"function" == typeof define && define.amd && define("google-code-prettify", [], function() {
|
||
return q;
|
||
});
|
||
}();
|
||
|
||
var hljs = new function() {
|
||
function e(e) {
|
||
return e.replace(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">");
|
||
}
|
||
function t(e) {
|
||
for (var t = e.firstChild; t; t = t.nextSibling) {
|
||
if ("CODE" == t.nodeName.toUpperCase()) return t;
|
||
if (3 != t.nodeType || !t.nodeValue.match(/\s+/)) break;
|
||
}
|
||
}
|
||
function n(e, t) {
|
||
return Array.prototype.map.call(e.childNodes, function(e) {
|
||
return 3 == e.nodeType ? t ? e.nodeValue.replace(/\n/g, "") : e.nodeValue : "BR" == e.nodeName.toUpperCase() ? "\n" : n(e, t);
|
||
}).join("");
|
||
}
|
||
function i(e) {
|
||
var t = (e.className + " " + (e.parentNode ? e.parentNode.className : "")).split(/\s+/);
|
||
t = t.map(function(e) {
|
||
return e.replace(/^language-/, "");
|
||
});
|
||
for (var n = 0; n < t.length; n++) if (p[t[n]] || "no-highlight" == t[n]) return t[n];
|
||
}
|
||
function o(e) {
|
||
var t = [];
|
||
return function n(e, i) {
|
||
for (var o = e.firstChild; o; o = o.nextSibling) 3 == o.nodeType ? i += o.nodeValue.length : "BR" == o.nodeName.toUpperCase() ? i += 1 : 1 == o.nodeType && (t.push({
|
||
event: "start",
|
||
offset: i,
|
||
node: o
|
||
}), i = n(o, i), t.push({
|
||
event: "stop",
|
||
offset: i,
|
||
node: o
|
||
}));
|
||
return i;
|
||
}(e, 0), t;
|
||
}
|
||
function r(t, n, i) {
|
||
function o() {
|
||
return t.length && n.length ? t[0].offset != n[0].offset ? t[0].offset < n[0].offset ? t : n : "start" == n[0].event ? t : n : t.length ? t : n;
|
||
}
|
||
function r(t) {
|
||
function n(t) {
|
||
return " " + t.nodeName + '="' + e(t.value) + '"';
|
||
}
|
||
c += "<" + t.nodeName.toLowerCase() + Array.prototype.map.call(t.attributes, n).join("") + ">";
|
||
}
|
||
function s(e) {
|
||
c += "</" + e.nodeName.toLowerCase() + ">";
|
||
}
|
||
function a(e) {
|
||
("start" == e.event ? r : s)(e.node);
|
||
}
|
||
for (var l = 0, c = "", u = []; t.length || n.length; ) {
|
||
var d = o();
|
||
if (c += e(i.substr(l, d[0].offset - l)), l = d[0].offset, d == t) {
|
||
u.reverse().forEach(s);
|
||
do a(d.splice(0, 1)[0]), d = o(); while (d == t && d.length && d[0].offset == l);
|
||
u.reverse().forEach(r);
|
||
} else "start" == d[0].event ? u.push(d[0].node) : u.pop(), a(d.splice(0, 1)[0]);
|
||
}
|
||
return c + e(i.substr(l));
|
||
}
|
||
function s(e) {
|
||
function t(e) {
|
||
return e && e.source || e;
|
||
}
|
||
function n(n, i) {
|
||
return RegExp(t(n), "m" + (e.cI ? "i" : "") + (i ? "g" : ""));
|
||
}
|
||
function i(o, r) {
|
||
function s(t, n) {
|
||
e.cI && (n = n.toLowerCase()), n.split(" ").forEach(function(e) {
|
||
var n = e.split("|");
|
||
l[n[0]] = [ t, n[1] ? Number(n[1]) : 1 ], a.push(n[0]);
|
||
});
|
||
}
|
||
if (!o.compiled) {
|
||
o.compiled = !0;
|
||
var a = [];
|
||
if (o.k) {
|
||
var l = {};
|
||
if (o.lR = n(o.l || "\\b" + hljs.IR + "\\b(?!\\.)", !0), "string" == typeof o.k) s("keyword", o.k); else for (var c in o.k) o.k.hasOwnProperty(c) && s(c, o.k[c]);
|
||
o.k = l;
|
||
}
|
||
r && (o.bWK && (o.b = "\\b(" + a.join("|") + ")\\b(?!\\.)\\s*"), o.bR = n(o.b ? o.b : "\\B|\\b"),
|
||
o.e || o.eW || (o.e = "\\B|\\b"), o.e && (o.eR = n(o.e)), o.tE = t(o.e) || "", o.eW && r.tE && (o.tE += (o.e ? "|" : "") + r.tE)),
|
||
o.i && (o.iR = n(o.i)), void 0 === o.r && (o.r = 1), o.c || (o.c = []);
|
||
for (var u = 0; u < o.c.length; u++) "self" == o.c[u] && (o.c[u] = o), i(o.c[u], o);
|
||
o.starts && i(o.starts, r);
|
||
for (var d = [], u = 0; u < o.c.length; u++) d.push(t(o.c[u].b));
|
||
o.tE && d.push(t(o.tE)), o.i && d.push(t(o.i)), o.t = d.length ? n(d.join("|"), !0) : {
|
||
exec: function() {
|
||
return null;
|
||
}
|
||
};
|
||
}
|
||
}
|
||
i(e);
|
||
}
|
||
function a(t, n, i, o) {
|
||
function r(e, t) {
|
||
for (var n = 0; n < t.c.length; n++) {
|
||
var i = t.c[n].bR.exec(e);
|
||
if (i && 0 == i.index) return t.c[n];
|
||
}
|
||
}
|
||
function c(e, t) {
|
||
return e.e && e.eR.test(t) ? e : e.eW ? c(e.parent, t) : void 0;
|
||
}
|
||
function u(e, t) {
|
||
return !i && t.i && t.iR.test(e);
|
||
}
|
||
function d(e, t) {
|
||
var n = b.cI ? t[0].toLowerCase() : t[0];
|
||
return e.k.hasOwnProperty(n) && e.k[n];
|
||
}
|
||
function h() {
|
||
var t = e(C);
|
||
if (!y.k) return t;
|
||
var n = "", i = 0;
|
||
y.lR.lastIndex = 0;
|
||
for (var o = y.lR.exec(t); o; ) {
|
||
n += t.substr(i, o.index - i);
|
||
var r = d(y, o);
|
||
r ? (k += r[1], n += '<span class="' + r[0] + '">' + o[0] + "</span>") : n += o[0],
|
||
i = y.lR.lastIndex, o = y.lR.exec(t);
|
||
}
|
||
return n + t.substr(i);
|
||
}
|
||
function f() {
|
||
if (y.sL && !p[y.sL]) return e(C);
|
||
var t = "continuous" == y.subLanguageMode ? y.top : void 0, n = y.sL ? a(y.sL, C, !0, t) : l(C);
|
||
return y.r > 0 && (k += n.keyword_count, E += n.r), y.top = n.top, '<span class="' + n.language + '">' + n.value + "</span>";
|
||
}
|
||
function g() {
|
||
return void 0 !== y.sL ? f() : h();
|
||
}
|
||
function m(t, n) {
|
||
var i = t.cN ? '<span class="' + t.cN + '">' : "";
|
||
t.rB ? (w += i, C = "") : t.eB ? (w += e(n) + i, C = "") : (w += i, C = n), y = Object.create(t, {
|
||
parent: {
|
||
value: y
|
||
}
|
||
});
|
||
}
|
||
function v(t, n) {
|
||
if (C += t, void 0 === n) return w += g(), 0;
|
||
var i = r(n, y);
|
||
if (i) return w += g(), m(i, n), i.rB ? 0 : n.length;
|
||
var o = c(y, n);
|
||
if (o) {
|
||
var s = y;
|
||
s.rE || s.eE || (C += n), w += g();
|
||
do y.cN && (w += "</span>"), E += y.r, y = y.parent; while (y != o.parent);
|
||
return s.eE && (w += e(n)), C = "", o.starts && m(o.starts, ""), s.rE ? 0 : n.length;
|
||
}
|
||
if (u(n, y)) throw new Error('Illegal lexem "' + n + '" for mode "' + (y.cN || "<unnamed>") + '"');
|
||
return C += n, n.length || 1;
|
||
}
|
||
var b = p[t];
|
||
if (!b) throw new Error('Unknown language: "' + t + '"');
|
||
s(b);
|
||
for (var y = o || b, w = "", x = y; x != b; x = x.parent) x.cN && (w = '<span class="' + x.cN + '">' + w);
|
||
var C = "", E = 0, k = 0;
|
||
try {
|
||
for (var A, S, _ = 0; ;) {
|
||
if (y.t.lastIndex = _, A = y.t.exec(n), !A) break;
|
||
S = v(n.substr(_, A.index - _), A[0]), _ = A.index + S;
|
||
}
|
||
v(n.substr(_));
|
||
for (var x = y; x.parent; x = x.parent) x.cN && (w += "</span>");
|
||
return {
|
||
r: E,
|
||
keyword_count: k,
|
||
value: w,
|
||
language: t,
|
||
top: y
|
||
};
|
||
} catch (F) {
|
||
if (-1 != F.message.indexOf("Illegal")) return {
|
||
r: 0,
|
||
keyword_count: 0,
|
||
value: e(n)
|
||
};
|
||
throw F;
|
||
}
|
||
}
|
||
function l(t) {
|
||
var n = {
|
||
keyword_count: 0,
|
||
r: 0,
|
||
value: e(t)
|
||
}, i = n;
|
||
for (var o in p) if (p.hasOwnProperty(o)) {
|
||
var r = a(o, t, !1);
|
||
r.language = o, r.keyword_count + r.r > i.keyword_count + i.r && (i = r), r.keyword_count + r.r > n.keyword_count + n.r && (i = n,
|
||
n = r);
|
||
}
|
||
return i.language && (n.second_best = i), n;
|
||
}
|
||
function c(e, t, n) {
|
||
return t && (e = e.replace(/^((<[^>]+>|\t)+)/gm, function(e, n) {
|
||
return n.replace(/\t/g, t);
|
||
})), n && (e = e.replace(/\n/g, "<br>")), e;
|
||
}
|
||
function u(e, t, s) {
|
||
var u = n(e, s), d = i(e);
|
||
if ("no-highlight" != d) {
|
||
var h = d ? a(d, u, !0) : l(u);
|
||
d = h.language;
|
||
var p = o(e);
|
||
if (p.length) {
|
||
var f = document.createElementNS("http://www.w3.org/1999/xhtml", "pre");
|
||
f.innerHTML = h.value, h.value = r(p, o(f), u);
|
||
}
|
||
h.value = c(h.value, t, s);
|
||
var g = e.className;
|
||
g.match("(\\s|^)(language-)?" + d + "(\\s|$)") || (g = g ? g + " " + d : d), e.innerHTML = h.value,
|
||
e.className = g, e.result = {
|
||
language: d,
|
||
kw: h.keyword_count,
|
||
re: h.r
|
||
}, h.second_best && (e.second_best = {
|
||
language: h.second_best.language,
|
||
kw: h.second_best.keyword_count,
|
||
re: h.second_best.r
|
||
});
|
||
}
|
||
}
|
||
function d() {
|
||
d.called || (d.called = !0, Array.prototype.map.call(document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml", "pre"), t).filter(Boolean).forEach(function(e) {
|
||
u(e, hljs.tabReplace);
|
||
}));
|
||
}
|
||
function h() {
|
||
window.addEventListener("DOMContentLoaded", d, !1), window.addEventListener("load", d, !1);
|
||
}
|
||
var p = {};
|
||
this.LANGUAGES = p, this.highlight = a, this.highlightAuto = l, this.fixMarkup = c,
|
||
this.highlightBlock = u, this.initHighlighting = d, this.initHighlightingOnLoad = h,
|
||
this.IR = "[a-zA-Z][a-zA-Z0-9_]*", this.UIR = "[a-zA-Z_][a-zA-Z0-9_]*", this.NR = "\\b\\d+(\\.\\d+)?",
|
||
this.CNR = "(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
|
||
this.BNR = "\\b(0b[01]+)", this.RSR = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
|
||
this.BE = {
|
||
b: "\\\\[\\s\\S]",
|
||
r: 0
|
||
}, this.ASM = {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
i: "\\n",
|
||
c: [ this.BE ],
|
||
r: 0
|
||
}, this.QSM = {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
i: "\\n",
|
||
c: [ this.BE ],
|
||
r: 0
|
||
}, this.CLCM = {
|
||
cN: "comment",
|
||
b: "//",
|
||
e: "$"
|
||
}, this.CBLCLM = {
|
||
cN: "comment",
|
||
b: "/\\*",
|
||
e: "\\*/"
|
||
}, this.HCM = {
|
||
cN: "comment",
|
||
b: "#",
|
||
e: "$"
|
||
}, this.NM = {
|
||
cN: "number",
|
||
b: this.NR,
|
||
r: 0
|
||
}, this.CNM = {
|
||
cN: "number",
|
||
b: this.CNR,
|
||
r: 0
|
||
}, this.BNM = {
|
||
cN: "number",
|
||
b: this.BNR,
|
||
r: 0
|
||
}, this.REGEXP_MODE = {
|
||
cN: "regexp",
|
||
b: /\//,
|
||
e: /\/[gim]*/,
|
||
i: /\n/,
|
||
c: [ this.BE, {
|
||
b: /\[/,
|
||
e: /\]/,
|
||
r: 0,
|
||
c: [ this.BE ]
|
||
} ]
|
||
}, this.inherit = function(e, t) {
|
||
var n = {};
|
||
for (var i in e) n[i] = e[i];
|
||
if (t) for (var i in t) n[i] = t[i];
|
||
return n;
|
||
};
|
||
}();
|
||
|
||
hljs.LANGUAGES.bash = function(e) {
|
||
var t = {
|
||
cN: "variable",
|
||
b: /\$[\w\d#@][\w\d_]*/
|
||
}, n = {
|
||
cN: "variable",
|
||
b: /\$\{(.*?)\}/
|
||
}, i = {
|
||
cN: "string",
|
||
b: /"/,
|
||
e: /"/,
|
||
c: [ e.BE, t, n, {
|
||
cN: "variable",
|
||
b: /\$\(/,
|
||
e: /\)/,
|
||
c: e.BE
|
||
} ],
|
||
r: 0
|
||
}, o = {
|
||
cN: "string",
|
||
b: /'/,
|
||
e: /'/,
|
||
r: 0
|
||
};
|
||
return {
|
||
l: /-?[a-z]+/,
|
||
k: {
|
||
keyword: "if then else elif fi for break continue while in do done exit return set declare case esac export exec",
|
||
literal: "true false",
|
||
built_in: "printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",
|
||
operator: "-ne -eq -lt -gt -f -d -e -s -l -a"
|
||
},
|
||
c: [ {
|
||
cN: "shebang",
|
||
b: /^#![^\n]+sh\s*$/,
|
||
r: 10
|
||
}, {
|
||
cN: "function",
|
||
b: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
|
||
rB: !0,
|
||
c: [ {
|
||
cN: "title",
|
||
b: /\w[\w\d_]*/
|
||
} ],
|
||
r: 0
|
||
}, e.HCM, e.NM, i, o, t, n ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.erlang = function(e) {
|
||
var t = "[a-z'][a-zA-Z0-9_']*", n = "(" + t + ":" + t + "|" + t + ")", i = {
|
||
keyword: "after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun let not of orelse|10 query receive rem try when xor",
|
||
literal: "false true"
|
||
}, o = {
|
||
cN: "comment",
|
||
b: "%",
|
||
e: "$",
|
||
r: 0
|
||
}, r = {
|
||
cN: "number",
|
||
b: "\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",
|
||
r: 0
|
||
}, s = {
|
||
b: "fun\\s+" + t + "/\\d+"
|
||
}, a = {
|
||
b: n + "\\(",
|
||
e: "\\)",
|
||
rB: !0,
|
||
r: 0,
|
||
c: [ {
|
||
cN: "function_name",
|
||
b: n,
|
||
r: 0
|
||
}, {
|
||
b: "\\(",
|
||
e: "\\)",
|
||
eW: !0,
|
||
rE: !0,
|
||
r: 0
|
||
} ]
|
||
}, l = {
|
||
cN: "tuple",
|
||
b: "{",
|
||
e: "}",
|
||
r: 0
|
||
}, c = {
|
||
cN: "variable",
|
||
b: "\\b_([A-Z][A-Za-z0-9_]*)?",
|
||
r: 0
|
||
}, u = {
|
||
cN: "variable",
|
||
b: "[A-Z][a-zA-Z0-9_]*",
|
||
r: 0
|
||
}, d = {
|
||
b: "#" + e.UIR,
|
||
r: 0,
|
||
rB: !0,
|
||
c: [ {
|
||
cN: "record_name",
|
||
b: "#" + e.UIR,
|
||
r: 0
|
||
}, {
|
||
b: "{",
|
||
e: "}",
|
||
r: 0
|
||
} ]
|
||
}, h = {
|
||
k: i,
|
||
b: "(fun|receive|if|try|case)",
|
||
e: "end"
|
||
};
|
||
h.c = [ o, s, e.inherit(e.ASM, {
|
||
cN: ""
|
||
}), h, a, e.QSM, r, l, c, u, d ];
|
||
var p = [ o, s, h, a, e.QSM, r, l, c, u, d ];
|
||
a.c[1].c = p, l.c = p, d.c[1].c = p;
|
||
var f = {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
c: p
|
||
};
|
||
return {
|
||
k: i,
|
||
i: "(</|\\*=|\\+=|-=|/=|/\\*|\\*/|\\(\\*|\\*\\))",
|
||
c: [ {
|
||
cN: "function",
|
||
b: "^" + t + "\\s*\\(",
|
||
e: "->",
|
||
rB: !0,
|
||
i: "\\(|#|//|/\\*|\\\\|:",
|
||
c: [ f, {
|
||
cN: "title",
|
||
b: t
|
||
} ],
|
||
starts: {
|
||
e: ";|\\.",
|
||
k: i,
|
||
c: p
|
||
}
|
||
}, o, {
|
||
cN: "pp",
|
||
b: "^-",
|
||
e: "\\.",
|
||
r: 0,
|
||
eE: !0,
|
||
rB: !0,
|
||
l: "-" + e.IR,
|
||
k: "-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior",
|
||
c: [ f ]
|
||
}, r, e.QSM, d, c, u, l ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.cs = function(e) {
|
||
return {
|
||
k: "abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield",
|
||
c: [ {
|
||
cN: "comment",
|
||
b: "///",
|
||
e: "$",
|
||
rB: !0,
|
||
c: [ {
|
||
cN: "xmlDocTag",
|
||
b: "///|<!--|-->"
|
||
}, {
|
||
cN: "xmlDocTag",
|
||
b: "</?",
|
||
e: ">"
|
||
} ]
|
||
}, e.CLCM, e.CBLCLM, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$",
|
||
k: "if else elif endif define undef warning error line region endregion pragma checksum"
|
||
}, {
|
||
cN: "string",
|
||
b: '@"',
|
||
e: '"',
|
||
c: [ {
|
||
b: '""'
|
||
} ]
|
||
}, e.ASM, e.QSM, e.CNM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.brainfuck = function() {
|
||
return {
|
||
c: [ {
|
||
cN: "comment",
|
||
b: "[^\\[\\]\\.,\\+\\-<> \r\n]",
|
||
rE: !0,
|
||
e: "[\\[\\]\\.,\\+\\-<> \r\n]",
|
||
r: 0
|
||
}, {
|
||
cN: "title",
|
||
b: "[\\[\\]]",
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "[\\.,]",
|
||
r: 0
|
||
}, {
|
||
cN: "literal",
|
||
b: "[\\+\\-]"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.ruby = function(e) {
|
||
var t = "[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?", n = "[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?", i = {
|
||
keyword: "and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include"
|
||
}, o = {
|
||
cN: "yardoctag",
|
||
b: "@[A-Za-z]+"
|
||
}, r = [ {
|
||
cN: "comment",
|
||
b: "#",
|
||
e: "$",
|
||
c: [ o ]
|
||
}, {
|
||
cN: "comment",
|
||
b: "^\\=begin",
|
||
e: "^\\=end",
|
||
c: [ o ],
|
||
r: 10
|
||
}, {
|
||
cN: "comment",
|
||
b: "^__END__",
|
||
e: "\\n$"
|
||
} ], s = {
|
||
cN: "subst",
|
||
b: "#\\{",
|
||
e: "}",
|
||
l: t,
|
||
k: i
|
||
}, a = [ e.BE, s ], l = [ {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: a,
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: a,
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?\\(",
|
||
e: "\\)",
|
||
c: a
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?\\[",
|
||
e: "\\]",
|
||
c: a
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?{",
|
||
e: "}",
|
||
c: a
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?<",
|
||
e: ">",
|
||
c: a,
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?/",
|
||
e: "/",
|
||
c: a,
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?%",
|
||
e: "%",
|
||
c: a,
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?-",
|
||
e: "-",
|
||
c: a,
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: "%[qw]?\\|",
|
||
e: "\\|",
|
||
c: a,
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: /\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/
|
||
} ], c = {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: " |$|;",
|
||
k: "def",
|
||
c: [ {
|
||
cN: "title",
|
||
b: n,
|
||
l: t,
|
||
k: i
|
||
}, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
l: t,
|
||
k: i
|
||
} ].concat(r)
|
||
}, u = r.concat(l.concat([ {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "$|;",
|
||
k: "class module",
|
||
c: [ {
|
||
cN: "title",
|
||
b: "[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",
|
||
r: 0
|
||
}, {
|
||
cN: "inheritance",
|
||
b: "<\\s*",
|
||
c: [ {
|
||
cN: "parent",
|
||
b: "(" + e.IR + "::)?" + e.IR
|
||
} ]
|
||
} ].concat(r)
|
||
}, c, {
|
||
cN: "constant",
|
||
b: "(::)?(\\b[A-Z]\\w*(::)?)+",
|
||
r: 0
|
||
}, {
|
||
cN: "symbol",
|
||
b: ":",
|
||
c: l.concat([ {
|
||
b: n
|
||
} ]),
|
||
r: 0
|
||
}, {
|
||
cN: "symbol",
|
||
b: t + ":",
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
|
||
r: 0
|
||
}, {
|
||
cN: "variable",
|
||
b: "(\\$\\W)|((\\$|\\@\\@?)(\\w+))"
|
||
}, {
|
||
b: "(" + e.RSR + ")\\s*",
|
||
c: r.concat([ {
|
||
cN: "regexp",
|
||
b: "/",
|
||
e: "/[a-z]*",
|
||
i: "\\n",
|
||
c: [ e.BE, s ]
|
||
}, {
|
||
cN: "regexp",
|
||
b: "%r{",
|
||
e: "}[a-z]*",
|
||
i: "\\n",
|
||
c: [ e.BE, s ]
|
||
}, {
|
||
cN: "regexp",
|
||
b: "%r\\(",
|
||
e: "\\)[a-z]*",
|
||
i: "\\n",
|
||
c: [ e.BE, s ]
|
||
}, {
|
||
cN: "regexp",
|
||
b: "%r!",
|
||
e: "![a-z]*",
|
||
i: "\\n",
|
||
c: [ e.BE, s ]
|
||
}, {
|
||
cN: "regexp",
|
||
b: "%r\\[",
|
||
e: "\\][a-z]*",
|
||
i: "\\n",
|
||
c: [ e.BE, s ]
|
||
} ]),
|
||
r: 0
|
||
} ]));
|
||
return s.c = u, c.c[1].c = u, {
|
||
l: t,
|
||
k: i,
|
||
c: u
|
||
};
|
||
}(hljs), hljs.LANGUAGES.rust = function(e) {
|
||
var t = {
|
||
cN: "title",
|
||
b: e.UIR
|
||
}, n = {
|
||
cN: "number",
|
||
b: "\\b(0[xb][A-Za-z0-9_]+|[0-9_]+(\\.[0-9_]+)?([uif](8|16|32|64)?)?)",
|
||
r: 0
|
||
}, i = "assert bool break char check claim comm const cont copy dir do drop else enum extern export f32 f64 fail false float fn for i16 i32 i64 i8 if impl int let log loop match mod move mut priv pub pure ref return self static str struct task true trait type u16 u32 u64 u8 uint unsafe use vec while";
|
||
return {
|
||
k: i,
|
||
i: "</",
|
||
c: [ e.CLCM, e.CBLCLM, e.inherit(e.QSM, {
|
||
i: null
|
||
}), e.ASM, n, {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "(\\(|<)",
|
||
k: "fn",
|
||
c: [ t ]
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "#\\[",
|
||
e: "\\]"
|
||
}, {
|
||
bWK: !0,
|
||
e: "(=|<)",
|
||
k: "type",
|
||
c: [ t ],
|
||
i: "\\S"
|
||
}, {
|
||
bWK: !0,
|
||
e: "({|<)",
|
||
k: "trait enum",
|
||
c: [ t ],
|
||
i: "\\S"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.ruleslanguage = function(e) {
|
||
return {
|
||
k: {
|
||
keyword: "BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEMASK|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN DELETE SAVE SAVE_UPDATE CLEAR DETERMINANT LABEL REPORT REVENUE ABORT CALL DONE LEAVE EACH IN LIST NOVALUE FROM TOTAL CHARGE BLOCK AND OR CSV_FILE BILL_PERIOD RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ABORT WARN NUMDAYS RATE_CODE READ_DATE STAGING",
|
||
built_in: "IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"
|
||
},
|
||
c: [ e.CLCM, e.CBLCLM, e.ASM, e.QSM, e.CNM, {
|
||
cN: "array",
|
||
b: "#[a-zA-Z .]+"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.rib = function(e) {
|
||
return {
|
||
k: "ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",
|
||
i: "</",
|
||
c: [ e.HCM, e.CNM, e.ASM, e.QSM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.diff = function() {
|
||
return {
|
||
c: [ {
|
||
cN: "chunk",
|
||
b: "^\\@\\@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +\\@\\@$",
|
||
r: 10
|
||
}, {
|
||
cN: "chunk",
|
||
b: "^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$",
|
||
r: 10
|
||
}, {
|
||
cN: "chunk",
|
||
b: "^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$",
|
||
r: 10
|
||
}, {
|
||
cN: "header",
|
||
b: "Index: ",
|
||
e: "$"
|
||
}, {
|
||
cN: "header",
|
||
b: "=====",
|
||
e: "=====$"
|
||
}, {
|
||
cN: "header",
|
||
b: "^\\-\\-\\-",
|
||
e: "$"
|
||
}, {
|
||
cN: "header",
|
||
b: "^\\*{3} ",
|
||
e: "$"
|
||
}, {
|
||
cN: "header",
|
||
b: "^\\+\\+\\+",
|
||
e: "$"
|
||
}, {
|
||
cN: "header",
|
||
b: "\\*{5}",
|
||
e: "\\*{5}$"
|
||
}, {
|
||
cN: "addition",
|
||
b: "^\\+",
|
||
e: "$"
|
||
}, {
|
||
cN: "deletion",
|
||
b: "^\\-",
|
||
e: "$"
|
||
}, {
|
||
cN: "change",
|
||
b: "^\\!",
|
||
e: "$"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.haml = function() {
|
||
return {
|
||
cI: !0,
|
||
c: [ {
|
||
cN: "doctype",
|
||
b: "^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",
|
||
r: 10
|
||
}, {
|
||
cN: "comment",
|
||
b: "^\\s*(-#|/).*$",
|
||
r: 0
|
||
}, {
|
||
b: "^\\s*-(?!#)",
|
||
starts: {
|
||
e: "\\n",
|
||
sL: "ruby"
|
||
},
|
||
r: 0
|
||
}, {
|
||
cN: "tag",
|
||
b: "^\\s*%",
|
||
c: [ {
|
||
cN: "title",
|
||
b: "\\w+",
|
||
r: 0
|
||
}, {
|
||
cN: "value",
|
||
b: "[#\\.]\\w+",
|
||
r: 0
|
||
}, {
|
||
b: "{\\s*",
|
||
e: "\\s*}",
|
||
eE: !0,
|
||
c: [ {
|
||
b: ":\\w+\\s*=>",
|
||
e: ",\\s+",
|
||
rB: !0,
|
||
eW: !0,
|
||
r: 0,
|
||
c: [ {
|
||
cN: "symbol",
|
||
b: ":\\w+",
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
r: 0
|
||
}, {
|
||
b: "\\w+",
|
||
r: 0
|
||
} ]
|
||
} ],
|
||
r: 0
|
||
}, {
|
||
b: "\\(\\s*",
|
||
e: "\\s*\\)",
|
||
eE: !0,
|
||
c: [ {
|
||
b: "\\w+\\s*=",
|
||
e: "\\s+",
|
||
rB: !0,
|
||
eW: !0,
|
||
r: 0,
|
||
c: [ {
|
||
cN: "attribute",
|
||
b: "\\w+",
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
r: 0
|
||
}, {
|
||
b: "\\w+",
|
||
r: 0
|
||
} ]
|
||
} ],
|
||
r: 0
|
||
} ],
|
||
r: 10
|
||
}, {
|
||
cN: "bullet",
|
||
b: "^\\s*[=~]\\s*",
|
||
r: 0
|
||
}, {
|
||
b: "#{",
|
||
starts: {
|
||
e: "}",
|
||
sL: "ruby"
|
||
},
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.javascript = function(e) {
|
||
return {
|
||
k: {
|
||
keyword: "in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const",
|
||
literal: "true false null undefined NaN Infinity"
|
||
},
|
||
c: [ e.ASM, e.QSM, e.CLCM, e.CBLCLM, e.CNM, {
|
||
b: "(" + e.RSR + "|\\b(case|return|throw)\\b)\\s*",
|
||
k: "return throw case",
|
||
c: [ e.CLCM, e.CBLCLM, e.REGEXP_MODE, {
|
||
b: /</,
|
||
e: />;/,
|
||
sL: "xml"
|
||
} ],
|
||
r: 0
|
||
}, {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: /{/,
|
||
k: "function",
|
||
c: [ {
|
||
cN: "title",
|
||
b: /[A-Za-z$_][0-9A-Za-z$_]*/
|
||
}, {
|
||
cN: "params",
|
||
b: /\(/,
|
||
e: /\)/,
|
||
c: [ e.CLCM, e.CBLCLM ],
|
||
i: /["'\(]/
|
||
} ],
|
||
i: /\[|%/
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.glsl = function(e) {
|
||
return {
|
||
k: {
|
||
keyword: "atomic_uint attribute bool break bvec2 bvec3 bvec4 case centroid coherent const continue default discard dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 do double dvec2 dvec3 dvec4 else flat float for highp if iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray in inout int invariant isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 layout lowp mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 mediump noperspective out patch precision readonly restrict return sample sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow smooth struct subroutine switch uimage1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint uniform usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D usamplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 varying vec2 vec3 vec4 void volatile while writeonly",
|
||
built_in: "gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffsetgl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_PerVertex gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicCounter atomicCounterDecrement atomicCounterIncrement barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow gl_TextureMatrix gl_TextureMatrixInverse",
|
||
literal: "true false"
|
||
},
|
||
i: '"',
|
||
c: [ e.CLCM, e.CBLCLM, e.CNM, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.rsl = function(e) {
|
||
return {
|
||
k: {
|
||
keyword: "float color point normal vector matrix while for if do return else break extern continue",
|
||
built_in: "abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"
|
||
},
|
||
i: "</",
|
||
c: [ e.CLCM, e.CBLCLM, e.QSM, e.ASM, e.CNM, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$"
|
||
}, {
|
||
cN: "shader",
|
||
bWK: !0,
|
||
e: "\\(",
|
||
k: "surface displacement light volume imager"
|
||
}, {
|
||
cN: "shading",
|
||
bWK: !0,
|
||
e: "\\(",
|
||
k: "illuminate illuminance gather"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.lua = function(e) {
|
||
var t = "\\[=*\\[", n = "\\]=*\\]", i = {
|
||
b: t,
|
||
e: n,
|
||
c: [ "self" ]
|
||
}, o = [ {
|
||
cN: "comment",
|
||
b: "--(?!" + t + ")",
|
||
e: "$"
|
||
}, {
|
||
cN: "comment",
|
||
b: "--" + t,
|
||
e: n,
|
||
c: [ i ],
|
||
r: 10
|
||
} ];
|
||
return {
|
||
l: e.UIR,
|
||
k: {
|
||
keyword: "and break do else elseif end false for if in local nil not or repeat return then true until while",
|
||
built_in: "_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"
|
||
},
|
||
c: o.concat([ {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "\\)",
|
||
k: "function",
|
||
c: [ {
|
||
cN: "title",
|
||
b: "([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"
|
||
}, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
eW: !0,
|
||
c: o
|
||
} ].concat(o)
|
||
}, e.CNM, e.ASM, e.QSM, {
|
||
cN: "string",
|
||
b: t,
|
||
e: n,
|
||
c: [ i ],
|
||
r: 10
|
||
} ])
|
||
};
|
||
}(hljs), hljs.LANGUAGES.xml = function() {
|
||
var e = "[A-Za-z0-9\\._:-]+", t = {
|
||
eW: !0,
|
||
r: 0,
|
||
c: [ {
|
||
cN: "attribute",
|
||
b: e,
|
||
r: 0
|
||
}, {
|
||
b: '="',
|
||
rB: !0,
|
||
e: '"',
|
||
c: [ {
|
||
cN: "value",
|
||
b: '"',
|
||
eW: !0
|
||
} ]
|
||
}, {
|
||
b: "='",
|
||
rB: !0,
|
||
e: "'",
|
||
c: [ {
|
||
cN: "value",
|
||
b: "'",
|
||
eW: !0
|
||
} ]
|
||
}, {
|
||
b: "=",
|
||
c: [ {
|
||
cN: "value",
|
||
b: "[^\\s/>]+"
|
||
} ]
|
||
} ]
|
||
};
|
||
return {
|
||
cI: !0,
|
||
c: [ {
|
||
cN: "pi",
|
||
b: "<\\?",
|
||
e: "\\?>",
|
||
r: 10
|
||
}, {
|
||
cN: "doctype",
|
||
b: "<!DOCTYPE",
|
||
e: ">",
|
||
r: 10,
|
||
c: [ {
|
||
b: "\\[",
|
||
e: "\\]"
|
||
} ]
|
||
}, {
|
||
cN: "comment",
|
||
b: "<!--",
|
||
e: "-->",
|
||
r: 10
|
||
}, {
|
||
cN: "cdata",
|
||
b: "<\\!\\[CDATA\\[",
|
||
e: "\\]\\]>",
|
||
r: 10
|
||
}, {
|
||
cN: "tag",
|
||
b: "<style(?=\\s|>|$)",
|
||
e: ">",
|
||
k: {
|
||
title: "style"
|
||
},
|
||
c: [ t ],
|
||
starts: {
|
||
e: "</style>",
|
||
rE: !0,
|
||
sL: "css"
|
||
}
|
||
}, {
|
||
cN: "tag",
|
||
b: "<script(?=\\s|>|$)",
|
||
e: ">",
|
||
k: {
|
||
title: "script"
|
||
},
|
||
c: [ t ],
|
||
starts: {
|
||
e: "</script>",
|
||
rE: !0,
|
||
sL: "javascript"
|
||
}
|
||
}, {
|
||
b: "<%",
|
||
e: "%>",
|
||
sL: "vbscript"
|
||
}, {
|
||
cN: "tag",
|
||
b: "</?",
|
||
e: "/?>",
|
||
r: 0,
|
||
c: [ {
|
||
cN: "title",
|
||
b: "[^ /><]+"
|
||
}, t ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.markdown = function() {
|
||
return {
|
||
c: [ {
|
||
cN: "header",
|
||
b: "^#{1,3}",
|
||
e: "$"
|
||
}, {
|
||
cN: "header",
|
||
b: "^.+?\\n[=-]{2,}$"
|
||
}, {
|
||
b: "<",
|
||
e: ">",
|
||
sL: "xml",
|
||
r: 0
|
||
}, {
|
||
cN: "bullet",
|
||
b: "^([*+-]|(\\d+\\.))\\s+"
|
||
}, {
|
||
cN: "strong",
|
||
b: "[*_]{2}.+?[*_]{2}"
|
||
}, {
|
||
cN: "emphasis",
|
||
b: "\\*.+?\\*"
|
||
}, {
|
||
cN: "emphasis",
|
||
b: "_.+?_",
|
||
r: 0
|
||
}, {
|
||
cN: "blockquote",
|
||
b: "^>\\s+",
|
||
e: "$"
|
||
}, {
|
||
cN: "code",
|
||
b: "`.+?`"
|
||
}, {
|
||
cN: "code",
|
||
b: "^ ",
|
||
e: "$",
|
||
r: 0
|
||
}, {
|
||
cN: "horizontal_rule",
|
||
b: "^-{3,}",
|
||
e: "$"
|
||
}, {
|
||
b: "\\[.+?\\]\\(.+?\\)",
|
||
rB: !0,
|
||
c: [ {
|
||
cN: "link_label",
|
||
b: "\\[.+\\]"
|
||
}, {
|
||
cN: "link_url",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
eB: !0,
|
||
eE: !0
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.css = function(e) {
|
||
var t = "[a-zA-Z-][a-zA-Z0-9_-]*", n = {
|
||
cN: "function",
|
||
b: t + "\\(",
|
||
e: "\\)",
|
||
c: [ "self", e.NM, e.ASM, e.QSM ]
|
||
};
|
||
return {
|
||
cI: !0,
|
||
i: "[=/|']",
|
||
c: [ e.CBLCLM, {
|
||
cN: "id",
|
||
b: "\\#[A-Za-z0-9_-]+"
|
||
}, {
|
||
cN: "class",
|
||
b: "\\.[A-Za-z0-9_-]+",
|
||
r: 0
|
||
}, {
|
||
cN: "attr_selector",
|
||
b: "\\[",
|
||
e: "\\]",
|
||
i: "$"
|
||
}, {
|
||
cN: "pseudo",
|
||
b: ":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"
|
||
}, {
|
||
cN: "at_rule",
|
||
b: "@(font-face|page)",
|
||
l: "[a-z-]+",
|
||
k: "font-face page"
|
||
}, {
|
||
cN: "at_rule",
|
||
b: "@",
|
||
e: "[{;]",
|
||
c: [ {
|
||
cN: "keyword",
|
||
b: /\S+/
|
||
}, {
|
||
b: /\s/,
|
||
eW: !0,
|
||
eE: !0,
|
||
r: 0,
|
||
c: [ n, e.ASM, e.QSM, e.NM ]
|
||
} ]
|
||
}, {
|
||
cN: "tag",
|
||
b: t,
|
||
r: 0
|
||
}, {
|
||
cN: "rules",
|
||
b: "{",
|
||
e: "}",
|
||
i: "[^\\s]",
|
||
r: 0,
|
||
c: [ e.CBLCLM, {
|
||
cN: "rule",
|
||
b: "[^\\s]",
|
||
rB: !0,
|
||
e: ";",
|
||
eW: !0,
|
||
c: [ {
|
||
cN: "attribute",
|
||
b: "[A-Z\\_\\.\\-]+",
|
||
e: ":",
|
||
eE: !0,
|
||
i: "[^\\s]",
|
||
starts: {
|
||
cN: "value",
|
||
eW: !0,
|
||
eE: !0,
|
||
c: [ n, e.NM, e.QSM, e.ASM, e.CBLCLM, {
|
||
cN: "hexcolor",
|
||
b: "#[0-9A-Fa-f]+"
|
||
}, {
|
||
cN: "important",
|
||
b: "!important"
|
||
} ]
|
||
}
|
||
} ]
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.lisp = function(e) {
|
||
var t = "[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*", n = "(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s)(\\+|\\-)?\\d+)?", i = {
|
||
cN: "shebang",
|
||
b: "^#!",
|
||
e: "$"
|
||
}, o = {
|
||
cN: "literal",
|
||
b: "\\b(t{1}|nil)\\b"
|
||
}, r = [ {
|
||
cN: "number",
|
||
b: n,
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "#b[0-1]+(/[0-1]+)?"
|
||
}, {
|
||
cN: "number",
|
||
b: "#o[0-7]+(/[0-7]+)?"
|
||
}, {
|
||
cN: "number",
|
||
b: "#x[0-9a-f]+(/[0-9a-f]+)?"
|
||
}, {
|
||
cN: "number",
|
||
b: "#c\\(" + n + " +" + n,
|
||
e: "\\)"
|
||
} ], s = {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: [ e.BE ],
|
||
r: 0
|
||
}, a = {
|
||
cN: "comment",
|
||
b: ";",
|
||
e: "$"
|
||
}, l = {
|
||
cN: "variable",
|
||
b: "\\*",
|
||
e: "\\*"
|
||
}, c = {
|
||
cN: "keyword",
|
||
b: "[:&]" + t
|
||
}, u = {
|
||
b: "\\(",
|
||
e: "\\)",
|
||
c: [ "self", o, s ].concat(r)
|
||
}, d = {
|
||
cN: "quoted",
|
||
b: "['`]\\(",
|
||
e: "\\)",
|
||
c: r.concat([ s, l, c, u ])
|
||
}, h = {
|
||
cN: "quoted",
|
||
b: "\\(quote ",
|
||
e: "\\)",
|
||
k: {
|
||
title: "quote"
|
||
},
|
||
c: r.concat([ s, l, c, u ])
|
||
}, p = {
|
||
cN: "list",
|
||
b: "\\(",
|
||
e: "\\)"
|
||
}, f = {
|
||
eW: !0,
|
||
r: 0
|
||
};
|
||
return p.c = [ {
|
||
cN: "title",
|
||
b: t
|
||
}, f ], f.c = [ d, h, p, o ].concat(r).concat([ s, a, l, c ]), {
|
||
i: /\S/,
|
||
c: r.concat([ i, o, s, a, d, h, p ])
|
||
};
|
||
}(hljs), hljs.LANGUAGES.profile = function(e) {
|
||
return {
|
||
c: [ e.CNM, {
|
||
cN: "built_in",
|
||
b: "{",
|
||
e: "}$",
|
||
eB: !0,
|
||
eE: !0,
|
||
c: [ e.ASM, e.QSM ],
|
||
r: 0
|
||
}, {
|
||
cN: "filename",
|
||
b: "[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",
|
||
e: ":",
|
||
eE: !0
|
||
}, {
|
||
cN: "header",
|
||
b: "(ncalls|tottime|cumtime)",
|
||
e: "$",
|
||
k: "ncalls tottime|10 cumtime|10 filename",
|
||
r: 10
|
||
}, {
|
||
cN: "summary",
|
||
b: "function calls",
|
||
e: "$",
|
||
c: [ e.CNM ],
|
||
r: 10
|
||
}, e.ASM, e.QSM, {
|
||
cN: "function",
|
||
b: "\\(",
|
||
e: "\\)$",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR,
|
||
r: 0
|
||
} ],
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.http = function() {
|
||
return {
|
||
i: "\\S",
|
||
c: [ {
|
||
cN: "status",
|
||
b: "^HTTP/[0-9\\.]+",
|
||
e: "$",
|
||
c: [ {
|
||
cN: "number",
|
||
b: "\\b\\d{3}\\b"
|
||
} ]
|
||
}, {
|
||
cN: "request",
|
||
b: "^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",
|
||
rB: !0,
|
||
e: "$",
|
||
c: [ {
|
||
cN: "string",
|
||
b: " ",
|
||
e: " ",
|
||
eB: !0,
|
||
eE: !0
|
||
} ]
|
||
}, {
|
||
cN: "attribute",
|
||
b: "^\\w",
|
||
e: ": ",
|
||
eE: !0,
|
||
i: "\\n|\\s|=",
|
||
starts: {
|
||
cN: "string",
|
||
e: "$"
|
||
}
|
||
}, {
|
||
b: "\\n\\n",
|
||
starts: {
|
||
sL: "",
|
||
eW: !0
|
||
}
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.java = function(e) {
|
||
return {
|
||
k: "false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws",
|
||
c: [ {
|
||
cN: "javadoc",
|
||
b: "/\\*\\*",
|
||
e: "\\*/",
|
||
c: [ {
|
||
cN: "javadoctag",
|
||
b: "(^|\\s)@[A-Za-z]+"
|
||
} ],
|
||
r: 10
|
||
}, e.CLCM, e.CBLCLM, e.ASM, e.QSM, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "{",
|
||
k: "class interface",
|
||
eE: !0,
|
||
i: ":",
|
||
c: [ {
|
||
bWK: !0,
|
||
k: "extends implements",
|
||
r: 10
|
||
}, {
|
||
cN: "title",
|
||
b: e.UIR
|
||
} ]
|
||
}, e.CNM, {
|
||
cN: "annotation",
|
||
b: "@[A-Za-z]+"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.fsharp = function(e) {
|
||
return {
|
||
k: "abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",
|
||
c: [ {
|
||
cN: "string",
|
||
b: '@"',
|
||
e: '"',
|
||
c: [ {
|
||
b: '""'
|
||
} ]
|
||
}, {
|
||
cN: "string",
|
||
b: '"""',
|
||
e: '"""'
|
||
}, {
|
||
cN: "comment",
|
||
b: "\\(\\*",
|
||
e: "\\*\\)"
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "\\(|=|$",
|
||
k: "type",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR
|
||
} ]
|
||
}, {
|
||
cN: "annotation",
|
||
b: "\\[<",
|
||
e: ">\\]"
|
||
}, {
|
||
cN: "attribute",
|
||
b: "\\B('[A-Za-z])\\b",
|
||
c: [ e.BE ]
|
||
}, e.CLCM, e.inherit(e.QSM, {
|
||
i: null
|
||
}), e.CNM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.php = function(e) {
|
||
var t = {
|
||
cN: "variable",
|
||
b: "\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"
|
||
}, n = [ e.inherit(e.ASM, {
|
||
i: null
|
||
}), e.inherit(e.QSM, {
|
||
i: null
|
||
}), {
|
||
cN: "string",
|
||
b: 'b"',
|
||
e: '"',
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "string",
|
||
b: "b'",
|
||
e: "'",
|
||
c: [ e.BE ]
|
||
} ], i = [ e.BNM, e.CNM ], o = {
|
||
cN: "title",
|
||
b: e.UIR
|
||
};
|
||
return {
|
||
cI: !0,
|
||
l: e.UIR,
|
||
k: "and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return implements parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try this switch continue endfor endif declare unset true false namespace trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",
|
||
c: [ e.CLCM, e.HCM, {
|
||
cN: "comment",
|
||
b: "/\\*",
|
||
e: "\\*/",
|
||
c: [ {
|
||
cN: "phpdoc",
|
||
b: "\\s@[A-Za-z]+"
|
||
} ]
|
||
}, {
|
||
cN: "comment",
|
||
b: "__halt_compiler.+?;",
|
||
eW: !0,
|
||
k: "__halt_compiler",
|
||
l: e.UIR
|
||
}, {
|
||
cN: "string",
|
||
b: "<<<['\"]?\\w+['\"]?$",
|
||
e: "^\\w+;",
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "<\\?php",
|
||
r: 10
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "\\?>"
|
||
}, t, {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "{",
|
||
k: "function",
|
||
i: "\\$|\\[|%",
|
||
c: [ o, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
c: [ "self", t, e.CBLCLM ].concat(n).concat(i)
|
||
} ]
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "{",
|
||
k: "class",
|
||
i: "[:\\(\\$]",
|
||
c: [ {
|
||
bWK: !0,
|
||
eW: !0,
|
||
k: "extends",
|
||
c: [ o ]
|
||
}, o ]
|
||
}, {
|
||
b: "=>"
|
||
} ].concat(n).concat(i)
|
||
};
|
||
}(hljs), hljs.LANGUAGES.haskell = function(e) {
|
||
var t = {
|
||
cN: "comment",
|
||
b: "--",
|
||
e: "$"
|
||
}, n = {
|
||
cN: "comment",
|
||
c: [ "self" ],
|
||
b: "{-",
|
||
e: "-}"
|
||
}, i = {
|
||
cN: "pragma",
|
||
b: "{-#",
|
||
e: "#-}"
|
||
}, o = {
|
||
cN: "preprocessor",
|
||
b: "^#",
|
||
e: "$"
|
||
}, r = {
|
||
cN: "type",
|
||
b: "\\b[A-Z][\\w']*",
|
||
r: 0
|
||
}, s = {
|
||
cN: "container",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
i: '"',
|
||
c: [ i, t, n, o, {
|
||
cN: "type",
|
||
b: "\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"
|
||
}, {
|
||
cN: "title",
|
||
b: "[_a-z][\\w']*"
|
||
} ]
|
||
}, a = {
|
||
cN: "container",
|
||
b: "{",
|
||
e: "}",
|
||
c: s.c
|
||
};
|
||
return {
|
||
k: "let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",
|
||
c: [ {
|
||
cN: "module",
|
||
b: "\\bmodule ",
|
||
e: "where",
|
||
k: "module where",
|
||
c: [ s, n ],
|
||
i: "\\W\\.|;"
|
||
}, {
|
||
cN: "import",
|
||
b: "\\bimport ",
|
||
e: "$",
|
||
k: "import qualified as hiding",
|
||
c: [ s, t, n ],
|
||
i: "\\W\\.|;"
|
||
}, {
|
||
cN: "class",
|
||
b: "\\b(class |instance )",
|
||
e: "where",
|
||
k: "class family instance where",
|
||
c: [ r, s, n ]
|
||
}, {
|
||
cN: "typedef",
|
||
b: "\\b(data |(new)?type )",
|
||
e: "$",
|
||
k: "data family type newtype deriving",
|
||
c: [ i, t, n, r, s, a ]
|
||
}, {
|
||
cN: "default",
|
||
b: "\\bdefault ",
|
||
e: "$",
|
||
k: "default",
|
||
c: [ r, s, t, n ]
|
||
}, {
|
||
cN: "infix",
|
||
b: "\\b(infix |infixl |infixr )",
|
||
e: "$",
|
||
k: "infix infixl infixr",
|
||
c: [ e.CNM, t, n ]
|
||
}, {
|
||
cN: "foreign",
|
||
b: "\\bforeign ",
|
||
e: "$",
|
||
k: "foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",
|
||
c: [ r, e.QSM, t, n ]
|
||
}, {
|
||
cN: "shebang",
|
||
b: "#!\\/usr\\/bin\\/env runhaskell",
|
||
e: "$"
|
||
}, i, t, n, o, e.QSM, e.CNM, r, {
|
||
cN: "title",
|
||
b: "^[_a-z][\\w']*"
|
||
}, {
|
||
b: "->|<-"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES["1c"] = function(e) {
|
||
var t = "[a-zA-Zа-яА-Я][a-zA-Z0-9_а-яА-Я]*", n = "возврат дата для если и или иначе иначеесли исключение конецесли конецпопытки конецпроцедуры конецфункции конеццикла константа не перейти перем перечисление по пока попытка прервать продолжить процедура строка тогда фс функция цикл число экспорт", i = "ansitooem oemtoansi ввестивидсубконто ввестидату ввестизначение ввестиперечисление ввестипериод ввестиплансчетов ввестистроку ввестичисло вопрос восстановитьзначение врег выбранныйплансчетов вызватьисключение датагод датамесяц датачисло добавитьмесяц завершитьработусистемы заголовоксистемы записьжурналарегистрации запуститьприложение зафиксироватьтранзакцию значениевстроку значениевстрокувнутр значениевфайл значениеизстроки значениеизстрокивнутр значениеизфайла имякомпьютера имяпользователя каталогвременныхфайлов каталогиб каталогпользователя каталогпрограммы кодсимв командасистемы конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лев лог лог10 макс максимальноеколичествосубконто мин монопольныйрежим названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найти найтипомеченныенаудаление найтиссылки началопериодаби началостандартногоинтервала начатьтранзакцию начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода нрег обработкаожидания окр описаниеошибки основнойжурналрасчетов основнойплансчетов основнойязык открытьформу открытьформумодально отменитьтранзакцию очиститьокносообщений периодстр полноеимяпользователя получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта прав праводоступа предупреждение префиксавтонумерации пустаястрока пустоезначение рабочаядаттьпустоезначение рабочаядата разделительстраниц разделительстрок разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо сигнал симв символтабуляции создатьобъект сокрл сокрлп сокрп сообщить состояние сохранитьзначение сред статусвозврата стрдлина стрзаменить стрколичествострок стрполучитьстроку стрчисловхождений сформироватьпозициюдокумента счетпокоду текущаядата текущеевремя типзначения типзначениястр удалитьобъекты установитьтана установитьтапо фиксшаблон формат цел шаблон", o = {
|
||
cN: "dquote",
|
||
b: '""'
|
||
}, r = {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"|$',
|
||
c: [ o ],
|
||
r: 0
|
||
}, s = {
|
||
cN: "string",
|
||
b: "\\|",
|
||
e: '"|$',
|
||
c: [ o ]
|
||
};
|
||
return {
|
||
cI: !0,
|
||
l: t,
|
||
k: {
|
||
keyword: n,
|
||
built_in: i
|
||
},
|
||
c: [ e.CLCM, e.NM, r, s, {
|
||
cN: "function",
|
||
b: "(процедура|функция)",
|
||
e: "$",
|
||
l: t,
|
||
k: "процедура функция",
|
||
c: [ {
|
||
cN: "title",
|
||
b: t
|
||
}, {
|
||
cN: "tail",
|
||
eW: !0,
|
||
c: [ {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
l: t,
|
||
k: "знач",
|
||
c: [ r, s ]
|
||
}, {
|
||
cN: "export",
|
||
b: "экспорт",
|
||
eW: !0,
|
||
l: t,
|
||
k: "экспорт",
|
||
c: [ e.CLCM ]
|
||
} ]
|
||
}, e.CLCM ]
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$"
|
||
}, {
|
||
cN: "date",
|
||
b: "'\\d{2}\\.\\d{2}\\.(\\d{2}|\\d{4})'"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.python = function(e) {
|
||
var t = {
|
||
cN: "prompt",
|
||
b: /^(>>>|\.\.\.) /
|
||
}, n = [ {
|
||
cN: "string",
|
||
b: /(u|b)?r?'''/,
|
||
e: /'''/,
|
||
c: [ t ],
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: /(u|b)?r?"""/,
|
||
e: /"""/,
|
||
c: [ t ],
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: /(u|r|ur)'/,
|
||
e: /'/,
|
||
c: [ e.BE ],
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: /(u|r|ur)"/,
|
||
e: /"/,
|
||
c: [ e.BE ],
|
||
r: 10
|
||
}, {
|
||
cN: "string",
|
||
b: /(b|br)'/,
|
||
e: /'/,
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "string",
|
||
b: /(b|br)"/,
|
||
e: /"/,
|
||
c: [ e.BE ]
|
||
} ].concat([ e.ASM, e.QSM ]), i = {
|
||
cN: "title",
|
||
b: e.UIR
|
||
}, o = {
|
||
cN: "params",
|
||
b: /\(/,
|
||
e: /\)/,
|
||
c: [ "self", e.CNM, t ].concat(n)
|
||
}, r = {
|
||
bWK: !0,
|
||
e: /:/,
|
||
i: /[${=;\n]/,
|
||
c: [ i, o ],
|
||
r: 10
|
||
};
|
||
return {
|
||
k: {
|
||
keyword: "and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",
|
||
built_in: "Ellipsis NotImplemented"
|
||
},
|
||
i: /(<\/|->|\?)/,
|
||
c: n.concat([ t, e.HCM, e.inherit(r, {
|
||
cN: "function",
|
||
k: "def"
|
||
}), e.inherit(r, {
|
||
cN: "class",
|
||
k: "class"
|
||
}), e.CNM, {
|
||
cN: "decorator",
|
||
b: /@/,
|
||
e: /$/
|
||
}, {
|
||
b: /\b(print|exec)\(/
|
||
} ])
|
||
};
|
||
}(hljs), hljs.LANGUAGES.smalltalk = function(e) {
|
||
var t = "[a-z][a-zA-Z0-9_]*", n = {
|
||
cN: "char",
|
||
b: "\\$.{1}"
|
||
}, i = {
|
||
cN: "symbol",
|
||
b: "#" + e.UIR
|
||
};
|
||
return {
|
||
k: "self super nil true false thisContext",
|
||
c: [ {
|
||
cN: "comment",
|
||
b: '"',
|
||
e: '"',
|
||
r: 0
|
||
}, e.ASM, {
|
||
cN: "class",
|
||
b: "\\b[A-Z][A-Za-z0-9_]*",
|
||
r: 0
|
||
}, {
|
||
cN: "method",
|
||
b: t + ":"
|
||
}, e.CNM, i, n, {
|
||
cN: "localvars",
|
||
b: "\\|\\s*" + t + "(\\s+" + t + ")*\\s*\\|"
|
||
}, {
|
||
cN: "array",
|
||
b: "\\#\\(",
|
||
e: "\\)",
|
||
c: [ e.ASM, n, e.CNM, i ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.tex = function() {
|
||
var e = {
|
||
cN: "command",
|
||
b: "\\\\[a-zA-Zа-яА-я]+[\\*]?"
|
||
}, t = {
|
||
cN: "command",
|
||
b: "\\\\[^a-zA-Zа-яА-я0-9]"
|
||
}, n = {
|
||
cN: "special",
|
||
b: "[{}\\[\\]\\&#~]",
|
||
r: 0
|
||
};
|
||
return {
|
||
c: [ {
|
||
b: "\\\\[a-zA-Zа-яА-я]+[\\*]? *= *-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?",
|
||
rB: !0,
|
||
c: [ e, t, {
|
||
cN: "number",
|
||
b: " *=",
|
||
e: "-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?",
|
||
eB: !0
|
||
} ],
|
||
r: 10
|
||
}, e, t, n, {
|
||
cN: "formula",
|
||
b: "\\$\\$",
|
||
e: "\\$\\$",
|
||
c: [ e, t, n ],
|
||
r: 0
|
||
}, {
|
||
cN: "formula",
|
||
b: "\\$",
|
||
e: "\\$",
|
||
c: [ e, t, n ],
|
||
r: 0
|
||
}, {
|
||
cN: "comment",
|
||
b: "%",
|
||
e: "$",
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.actionscript = function(e) {
|
||
var t = "[a-zA-Z_$][a-zA-Z0-9_$]*", n = "([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)", i = {
|
||
cN: "rest_arg",
|
||
b: "[.]{3}",
|
||
e: t,
|
||
r: 10
|
||
}, o = {
|
||
cN: "title",
|
||
b: t
|
||
};
|
||
return {
|
||
k: {
|
||
keyword: "as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",
|
||
literal: "true false null undefined"
|
||
},
|
||
c: [ e.ASM, e.QSM, e.CLCM, e.CBLCLM, e.CNM, {
|
||
cN: "package",
|
||
bWK: !0,
|
||
e: "{",
|
||
k: "package",
|
||
c: [ o ]
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "{",
|
||
k: "class interface",
|
||
c: [ {
|
||
bWK: !0,
|
||
k: "extends implements"
|
||
}, o ]
|
||
}, {
|
||
cN: "preprocessor",
|
||
bWK: !0,
|
||
e: ";",
|
||
k: "import include"
|
||
}, {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "[{;]",
|
||
k: "function",
|
||
i: "\\S",
|
||
c: [ o, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
c: [ e.ASM, e.QSM, e.CLCM, e.CBLCLM, i ]
|
||
}, {
|
||
cN: "type",
|
||
b: ":",
|
||
e: n,
|
||
r: 10
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.sql = function(e) {
|
||
return {
|
||
cI: !0,
|
||
c: [ {
|
||
cN: "operator",
|
||
b: "(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b(?!:)",
|
||
e: ";",
|
||
eW: !0,
|
||
k: {
|
||
keyword: "all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row",
|
||
aggregate: "count sum min max avg"
|
||
},
|
||
c: [ {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ e.BE, {
|
||
b: "''"
|
||
} ],
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: [ e.BE, {
|
||
b: '""'
|
||
} ],
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "`",
|
||
e: "`",
|
||
c: [ e.BE ]
|
||
}, e.CNM ]
|
||
}, e.CBLCLM, {
|
||
cN: "comment",
|
||
b: "--",
|
||
e: "$"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.handlebars = function() {
|
||
var e = "each in with if else unless bindattr action collection debugger log outlet template unbound view yield";
|
||
return {
|
||
cI: !0,
|
||
sL: "xml",
|
||
subLanguageMode: "continuous",
|
||
c: [ {
|
||
cN: "expression",
|
||
b: "{{",
|
||
e: "}}",
|
||
c: [ {
|
||
cN: "begin-block",
|
||
b: "#[a-zA-Z .]+",
|
||
k: e
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"'
|
||
}, {
|
||
cN: "end-block",
|
||
b: "\\/[a-zA-Z .]+",
|
||
k: e
|
||
}, {
|
||
cN: "variable",
|
||
b: "[a-zA-Z.]+",
|
||
k: e
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.vala = function(e) {
|
||
return {
|
||
k: {
|
||
keyword: "char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",
|
||
built_in: "DBus GLib CCode Gee Object",
|
||
literal: "false true null"
|
||
},
|
||
c: [ {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "{",
|
||
k: "class interface delegate namespace",
|
||
i: "[^,:\\n\\s\\.]",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR
|
||
} ]
|
||
}, e.CLCM, e.CBLCLM, {
|
||
cN: "string",
|
||
b: '"""',
|
||
e: '"""',
|
||
r: 5
|
||
}, e.ASM, e.QSM, e.CNM, {
|
||
cN: "preprocessor",
|
||
b: "^#",
|
||
e: "$",
|
||
r: 2
|
||
}, {
|
||
cN: "constant",
|
||
b: " [A-Z_]+ ",
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.ini = function(e) {
|
||
return {
|
||
cI: !0,
|
||
i: "[^\\s]",
|
||
c: [ {
|
||
cN: "comment",
|
||
b: ";",
|
||
e: "$"
|
||
}, {
|
||
cN: "title",
|
||
b: "^\\[",
|
||
e: "\\]"
|
||
}, {
|
||
cN: "setting",
|
||
b: "^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",
|
||
e: "$",
|
||
c: [ {
|
||
cN: "value",
|
||
eW: !0,
|
||
k: "on off true false yes no",
|
||
c: [ e.QSM, e.NM ],
|
||
r: 0
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.livecodeserver = function(e) {
|
||
var t = {
|
||
cN: "variable",
|
||
b: "\\b[gtps][A-Z]+[A-Za-z0-9_\\-]*\\b|\\$_[A-Z]+",
|
||
r: 0
|
||
}, n = [ e.inherit(e.ASM), e.inherit(e.QSM) ], i = [ e.inherit(e.CBLCLM), {
|
||
cN: "comment",
|
||
b: "--",
|
||
e: "$"
|
||
}, {
|
||
cN: "comment",
|
||
b: "[^:]//",
|
||
e: "\\n"
|
||
}, {
|
||
cN: "comment",
|
||
b: "#",
|
||
e: "\\n"
|
||
} ], o = [ e.BNM, e.CNM ], r = [ {
|
||
cN: "title",
|
||
b: "\\b_*rig[A-Z]+[A-Za-z0-9_\\-]*"
|
||
}, {
|
||
cN: "title",
|
||
b: "\\b_[a-z0-9\\-]+"
|
||
} ];
|
||
return {
|
||
cI: !1,
|
||
k: {
|
||
keyword: "after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if",
|
||
constant: "SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",
|
||
operator: "div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",
|
||
built_in: "put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg base64Decode base64Encode baseConvert binaryDecode binaryEncode byteToNum cachedURL cachedURLs charToNum cipherNames commandNames compound compress constantNames cos date dateFormat decompress directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames global globals hasMemory hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec millisecs millisecond milliseconds min monthNames num number numToByte numToChar offset open openfiles openProcesses openProcessIDs openSockets paramCount param params peerAddress pendingMessages platform processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_Execute revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sec secs seconds sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName tick ticks time to toLower toUpper transpose trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus value variableNames version waitDepth weekdayNames wordOffset add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load multiply socket process post seek rel relative read from process rename replace require resetAll revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split subtract union unload wait write"
|
||
},
|
||
c: [ t, {
|
||
cN: "keyword",
|
||
b: "\\bend\\sif\\b"
|
||
}, {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "$",
|
||
k: "function",
|
||
c: [ t, {
|
||
cN: "title",
|
||
b: "\\b([A-Za-z0-9_\\-]+)\\b"
|
||
} ].concat(n).concat(o).concat(r)
|
||
}, {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "$",
|
||
k: "end",
|
||
c: [ {
|
||
cN: "title",
|
||
b: "\\b([A-Za-z0-9_\\-]+)\\b"
|
||
} ].concat(r)
|
||
}, {
|
||
cN: "command",
|
||
bWK: !0,
|
||
e: "$",
|
||
k: "command on",
|
||
c: [ t, {
|
||
cN: "title",
|
||
b: "\\b([A-Za-z0-9_\\-]+)\\b"
|
||
} ].concat(n).concat(o).concat(r)
|
||
}, {
|
||
cN: "command",
|
||
bWK: !0,
|
||
e: "$",
|
||
k: "end",
|
||
c: [ {
|
||
cN: "title",
|
||
b: "\\b([A-Za-z0-9_\\-]+)\\b"
|
||
} ].concat(r)
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "<\\?rev|<\\?lc|<\\?livecode",
|
||
r: 10
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "<\\?"
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "\\?>"
|
||
} ].concat(i).concat(n).concat(o).concat(r),
|
||
i: ";$|^\\[|^="
|
||
};
|
||
}(hljs), hljs.LANGUAGES.d = function(e) {
|
||
var t = {
|
||
keyword: "abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",
|
||
built_in: "bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",
|
||
literal: "false null true"
|
||
}, n = "(0|[1-9][\\d_]*)", i = "(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)", o = "0[bB][01_]+", r = "([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)", s = "0[xX]" + r, a = "([eE][+-]?" + i + ")", l = "(" + i + "(\\.\\d*|" + a + ")|\\d+\\." + i + i + "|\\." + n + a + "?)", c = "(0[xX](" + r + "\\." + r + "|\\.?" + r + ")[pP][+-]?" + i + ")", u = "(" + n + "|" + o + "|" + s + ")", d = "(" + c + "|" + l + ")", h = "\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};", p = {
|
||
cN: "number",
|
||
b: "\\b" + u + "(L|u|U|Lu|LU|uL|UL)?",
|
||
r: 0
|
||
}, f = {
|
||
cN: "number",
|
||
b: "\\b(" + d + "([fF]|L|i|[fF]i|Li)?|" + u + "(i|[fF]i|Li))",
|
||
r: 0
|
||
}, g = {
|
||
cN: "string",
|
||
b: "'(" + h + "|.)",
|
||
e: "'",
|
||
i: "."
|
||
}, m = {
|
||
b: h,
|
||
r: 0
|
||
}, v = {
|
||
cN: "string",
|
||
b: '"',
|
||
c: [ m ],
|
||
e: '"[cwd]?',
|
||
r: 0
|
||
}, b = {
|
||
cN: "string",
|
||
b: '[rq]"',
|
||
e: '"[cwd]?',
|
||
r: 5
|
||
}, y = {
|
||
cN: "string",
|
||
b: "`",
|
||
e: "`[cwd]?"
|
||
}, w = {
|
||
cN: "string",
|
||
b: 'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',
|
||
r: 10
|
||
}, x = {
|
||
cN: "string",
|
||
b: 'q"\\{',
|
||
e: '\\}"'
|
||
}, C = {
|
||
cN: "shebang",
|
||
b: "^#!",
|
||
e: "$",
|
||
r: 5
|
||
}, E = {
|
||
cN: "preprocessor",
|
||
b: "#(line)",
|
||
e: "$",
|
||
r: 5
|
||
}, k = {
|
||
cN: "keyword",
|
||
b: "@[a-zA-Z_][a-zA-Z_\\d]*"
|
||
}, A = {
|
||
cN: "comment",
|
||
b: "\\/\\+",
|
||
c: [ "self" ],
|
||
e: "\\+\\/",
|
||
r: 10
|
||
};
|
||
return {
|
||
l: e.UIR,
|
||
k: t,
|
||
c: [ e.CLCM, e.CBLCLM, A, w, v, b, y, x, f, p, g, C, E, k ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.vbnet = function(e) {
|
||
return {
|
||
cI: !0,
|
||
k: {
|
||
keyword: "addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor",
|
||
built_in: "boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort",
|
||
literal: "true false nothing"
|
||
},
|
||
i: "//|{|}|endif|gosub|variant|wend",
|
||
c: [ e.inherit(e.QSM, {
|
||
c: [ {
|
||
b: '""'
|
||
} ]
|
||
}), {
|
||
cN: "comment",
|
||
b: "'",
|
||
e: "$",
|
||
rB: !0,
|
||
c: [ {
|
||
cN: "xmlDocTag",
|
||
b: "'''|<!--|-->"
|
||
}, {
|
||
cN: "xmlDocTag",
|
||
b: "</?",
|
||
e: ">"
|
||
} ]
|
||
}, e.CNM, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$",
|
||
k: "if else elseif end region externalsource"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.axapta = function(e) {
|
||
return {
|
||
k: "false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod",
|
||
c: [ e.CLCM, e.CBLCLM, e.ASM, e.QSM, e.CNM, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$"
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "{",
|
||
i: ":",
|
||
k: "class interface",
|
||
c: [ {
|
||
cN: "inheritance",
|
||
bWK: !0,
|
||
k: "extends implements",
|
||
r: 10
|
||
}, {
|
||
cN: "title",
|
||
b: e.UIR
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.perl = function(e) {
|
||
var t = "getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when", n = {
|
||
cN: "subst",
|
||
b: "[$@]\\{",
|
||
e: "\\}",
|
||
k: t,
|
||
r: 10
|
||
}, i = {
|
||
cN: "variable",
|
||
b: "\\$\\d"
|
||
}, o = {
|
||
cN: "variable",
|
||
b: "[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)"
|
||
}, r = [ e.BE, n, i, o ], s = {
|
||
b: "->",
|
||
c: [ {
|
||
b: e.IR
|
||
}, {
|
||
b: "{",
|
||
e: "}"
|
||
} ]
|
||
}, a = {
|
||
cN: "comment",
|
||
b: "^(__END__|__DATA__)",
|
||
e: "\\n$",
|
||
r: 5
|
||
}, l = [ i, o, e.HCM, a, {
|
||
cN: "comment",
|
||
b: "^\\=\\w",
|
||
e: "\\=cut",
|
||
eW: !0
|
||
}, s, {
|
||
cN: "string",
|
||
b: "q[qwxr]?\\s*\\(",
|
||
e: "\\)",
|
||
c: r,
|
||
r: 5
|
||
}, {
|
||
cN: "string",
|
||
b: "q[qwxr]?\\s*\\[",
|
||
e: "\\]",
|
||
c: r,
|
||
r: 5
|
||
}, {
|
||
cN: "string",
|
||
b: "q[qwxr]?\\s*\\{",
|
||
e: "\\}",
|
||
c: r,
|
||
r: 5
|
||
}, {
|
||
cN: "string",
|
||
b: "q[qwxr]?\\s*\\|",
|
||
e: "\\|",
|
||
c: r,
|
||
r: 5
|
||
}, {
|
||
cN: "string",
|
||
b: "q[qwxr]?\\s*\\<",
|
||
e: "\\>",
|
||
c: r,
|
||
r: 5
|
||
}, {
|
||
cN: "string",
|
||
b: "qw\\s+q",
|
||
e: "q",
|
||
c: r,
|
||
r: 5
|
||
}, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ e.BE ],
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: r,
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "`",
|
||
e: "`",
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "string",
|
||
b: "{\\w+}",
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "-?\\w+\\s*\\=\\>",
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
|
||
r: 0
|
||
}, {
|
||
b: "(" + e.RSR + "|\\b(split|return|print|reverse|grep)\\b)\\s*",
|
||
k: "split return print reverse grep",
|
||
r: 0,
|
||
c: [ e.HCM, a, {
|
||
cN: "regexp",
|
||
b: "(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",
|
||
r: 10
|
||
}, {
|
||
cN: "regexp",
|
||
b: "(m|qr)?/",
|
||
e: "/[a-z]*",
|
||
c: [ e.BE ],
|
||
r: 0
|
||
} ]
|
||
}, {
|
||
cN: "sub",
|
||
bWK: !0,
|
||
e: "(\\s*\\(.*?\\))?[;{]",
|
||
k: "sub",
|
||
r: 5
|
||
}, {
|
||
cN: "operator",
|
||
b: "-\\w\\b",
|
||
r: 0
|
||
} ];
|
||
return n.c = l, s.c[1].c = l, {
|
||
k: t,
|
||
c: l
|
||
};
|
||
}(hljs), hljs.LANGUAGES.scala = function(e) {
|
||
var t = {
|
||
cN: "annotation",
|
||
b: "@[A-Za-z]+"
|
||
}, n = {
|
||
cN: "string",
|
||
b: 'u?r?"""',
|
||
e: '"""',
|
||
r: 10
|
||
};
|
||
return {
|
||
k: "type yield lazy override def with val var false true sealed abstract private trait object null if for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws",
|
||
c: [ {
|
||
cN: "javadoc",
|
||
b: "/\\*\\*",
|
||
e: "\\*/",
|
||
c: [ {
|
||
cN: "javadoctag",
|
||
b: "@[A-Za-z]+"
|
||
} ],
|
||
r: 10
|
||
}, e.CLCM, e.CBLCLM, n, e.ASM, e.QSM, {
|
||
cN: "class",
|
||
b: "((case )?class |object |trait )",
|
||
e: "({|$)",
|
||
i: ":",
|
||
k: "case class trait object",
|
||
c: [ {
|
||
bWK: !0,
|
||
k: "extends with",
|
||
r: 10
|
||
}, {
|
||
cN: "title",
|
||
b: e.UIR
|
||
}, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
c: [ e.ASM, e.QSM, n, t ]
|
||
} ]
|
||
}, e.CNM, t ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.cmake = function(e) {
|
||
return {
|
||
cI: !0,
|
||
k: {
|
||
keyword: "add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_minimum_required cmake_policy configure_file create_test_sourcelist define_property else elseif enable_language enable_testing endforeach endfunction endif endmacro endwhile execute_process export find_file find_library find_package find_path find_program fltk_wrap_ui foreach function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property if include include_directories include_external_msproject include_regular_expression install link_directories load_cache load_command macro mark_as_advanced message option output_required_files project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_link_libraries try_compile try_run unset variable_watch while build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or",
|
||
operator: "equal less greater strless strgreater strequal matches"
|
||
},
|
||
c: [ {
|
||
cN: "envvar",
|
||
b: "\\${",
|
||
e: "}"
|
||
}, e.HCM, e.QSM, e.NM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.ocaml = function(e) {
|
||
return {
|
||
k: {
|
||
keyword: "and as assert asr begin class constraint do done downto else end exception external false for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new object of open or private rec ref sig struct then to true try type val virtual when while with parser value",
|
||
built_in: "bool char float int list unit array exn option int32 int64 nativeint format4 format6 lazy_t in_channel out_channel string"
|
||
},
|
||
i: /\/\//,
|
||
c: [ {
|
||
cN: "string",
|
||
b: '"""',
|
||
e: '"""'
|
||
}, {
|
||
cN: "comment",
|
||
b: "\\(\\*",
|
||
e: "\\*\\)",
|
||
c: [ "self" ]
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "\\(|=|$",
|
||
k: "type",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR
|
||
} ]
|
||
}, {
|
||
cN: "annotation",
|
||
b: "\\[<",
|
||
e: ">\\]"
|
||
}, e.CBLCLM, e.inherit(e.ASM, {
|
||
i: null
|
||
}), e.inherit(e.QSM, {
|
||
i: null
|
||
}), e.CNM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.objectivec = function(e) {
|
||
var t = {
|
||
keyword: "int float while private char catch export sizeof typedef const struct for union unsigned long volatile static protected bool mutable if public do return goto void enum else break extern asm case short default double throw register explicit signed typename try this switch continue wchar_t inline readonly assign property self synchronized end synthesize id optional required nonatomic super unichar finally dynamic IBOutlet IBAction selector strong weak readonly",
|
||
literal: "false true FALSE TRUE nil YES NO NULL",
|
||
built_in: "NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"
|
||
};
|
||
return {
|
||
k: t,
|
||
i: "</",
|
||
c: [ e.CLCM, e.CBLCLM, e.CNM, e.QSM, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "[^\\\\]'",
|
||
i: "[^\\\\][^']"
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "#import",
|
||
e: "$",
|
||
c: [ {
|
||
cN: "title",
|
||
b: '"',
|
||
e: '"'
|
||
}, {
|
||
cN: "title",
|
||
b: "<",
|
||
e: ">"
|
||
} ]
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$"
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
e: "({|$)",
|
||
k: "interface class protocol implementation",
|
||
c: [ {
|
||
cN: "id",
|
||
b: e.UIR
|
||
} ]
|
||
}, {
|
||
cN: "variable",
|
||
b: "\\." + e.UIR,
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.avrasm = function(e) {
|
||
return {
|
||
cI: !0,
|
||
k: {
|
||
keyword: "adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",
|
||
built_in: "r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf"
|
||
},
|
||
c: [ e.CBLCLM, {
|
||
cN: "comment",
|
||
b: ";",
|
||
e: "$"
|
||
}, e.CNM, e.BNM, {
|
||
cN: "number",
|
||
b: "\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"
|
||
}, e.QSM, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "[^\\\\]'",
|
||
i: "[^\\\\][^']"
|
||
}, {
|
||
cN: "label",
|
||
b: "^[A-Za-z0-9_.$]+:"
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$"
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "\\.[a-zA-Z]+"
|
||
}, {
|
||
cN: "localvars",
|
||
b: "@[0-9]+"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.vhdl = function(e) {
|
||
return {
|
||
cI: !0,
|
||
k: {
|
||
keyword: "abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable vmode vprop vunit wait when while with xnor xor",
|
||
typename: "boolean bit character severity_level integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_ulogic std_ulogic_vector std_logic std_logic_vector unsigned signed boolean_vector integer_vector real_vector time_vector"
|
||
},
|
||
i: "{",
|
||
c: [ e.CBLCLM, {
|
||
cN: "comment",
|
||
b: "--",
|
||
e: "$"
|
||
}, e.QSM, e.CNM, {
|
||
cN: "literal",
|
||
b: "'(U|X|0|1|Z|W|L|H|-)'",
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "attribute",
|
||
b: "'[A-Za-z](_?[A-Za-z0-9])*",
|
||
c: [ e.BE ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.coffeescript = function(e) {
|
||
var t = {
|
||
keyword: "in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",
|
||
literal: "true false null undefined yes no on off",
|
||
reserved: "case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",
|
||
built_in: "npm require console print module exports global window document"
|
||
}, n = "[A-Za-z$_][0-9A-Za-z$_]*", i = {
|
||
cN: "title",
|
||
b: n
|
||
}, o = {
|
||
cN: "subst",
|
||
b: "#\\{",
|
||
e: "}",
|
||
k: t
|
||
}, r = [ e.BNM, e.inherit(e.CNM, {
|
||
starts: {
|
||
e: "(\\s*/)?",
|
||
r: 0
|
||
}
|
||
}), {
|
||
cN: "string",
|
||
b: "'''",
|
||
e: "'''",
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ e.BE ],
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"""',
|
||
e: '"""',
|
||
c: [ e.BE, o ]
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: [ e.BE, o ],
|
||
r: 0
|
||
}, {
|
||
cN: "regexp",
|
||
b: "///",
|
||
e: "///",
|
||
c: [ e.HCM ]
|
||
}, {
|
||
cN: "regexp",
|
||
b: "//[gim]*",
|
||
r: 0
|
||
}, {
|
||
cN: "regexp",
|
||
b: "/\\S(\\\\.|[^\\n])*?/[gim]*(?=\\s|\\W|$)"
|
||
}, {
|
||
cN: "property",
|
||
b: "@" + n
|
||
}, {
|
||
b: "`",
|
||
e: "`",
|
||
eB: !0,
|
||
eE: !0,
|
||
sL: "javascript"
|
||
} ];
|
||
return o.c = r, {
|
||
k: t,
|
||
c: r.concat([ {
|
||
cN: "comment",
|
||
b: "###",
|
||
e: "###"
|
||
}, e.HCM, {
|
||
cN: "function",
|
||
b: "(" + n + "\\s*=\\s*)?(\\(.*\\))?\\s*[-=]>",
|
||
e: "[-=]>",
|
||
rB: !0,
|
||
c: [ i, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
rB: !0,
|
||
c: [ {
|
||
b: /\(/,
|
||
e: /\)/,
|
||
k: t,
|
||
c: [ "self" ].concat(r)
|
||
} ]
|
||
} ]
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
k: "class",
|
||
e: "$",
|
||
i: "[:\\[\\]]",
|
||
c: [ {
|
||
bWK: !0,
|
||
k: "extends",
|
||
eW: !0,
|
||
i: ":",
|
||
c: [ i ]
|
||
}, i ]
|
||
}, {
|
||
cN: "attribute",
|
||
b: n + ":",
|
||
e: ":",
|
||
rB: !0,
|
||
eE: !0
|
||
} ])
|
||
};
|
||
}(hljs), hljs.LANGUAGES.mizar = function() {
|
||
return {
|
||
k: [ "environ vocabularies notations constructors definitions registrations theorems schemes requirements", "begin end definition registration cluster existence pred func defpred deffunc theorem proof", "let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from", "be being by means equals implies iff redefine define now not or attr is mode suppose per cases set", "thesis contradiction scheme reserve struct", "correctness compatibility coherence symmetry assymetry reflexivity irreflexivity", "connectedness uniqueness commutativity idempotence involutiveness projectivity" ].join(" "),
|
||
c: [ {
|
||
cN: "comment",
|
||
b: "::",
|
||
e: "$"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.nginx = function(e) {
|
||
var t = [ {
|
||
cN: "variable",
|
||
b: "\\$\\d+"
|
||
}, {
|
||
cN: "variable",
|
||
b: "\\${",
|
||
e: "}"
|
||
}, {
|
||
cN: "variable",
|
||
b: "[\\$\\@]" + e.UIR
|
||
} ], n = {
|
||
eW: !0,
|
||
l: "[a-z/_]+",
|
||
k: {
|
||
built_in: "on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"
|
||
},
|
||
r: 0,
|
||
i: "=>",
|
||
c: [ e.HCM, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: [ e.BE ].concat(t),
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ e.BE ].concat(t),
|
||
r: 0
|
||
}, {
|
||
cN: "url",
|
||
b: "([a-z]+):/",
|
||
e: "\\s",
|
||
eW: !0,
|
||
eE: !0
|
||
}, {
|
||
cN: "regexp",
|
||
b: "\\s\\^",
|
||
e: "\\s|{|;",
|
||
rE: !0,
|
||
c: [ e.BE ].concat(t)
|
||
}, {
|
||
cN: "regexp",
|
||
b: "~\\*?\\s+",
|
||
e: "\\s|{|;",
|
||
rE: !0,
|
||
c: [ e.BE ].concat(t)
|
||
}, {
|
||
cN: "regexp",
|
||
b: "\\*(\\.[a-z\\-]+)+",
|
||
c: [ e.BE ].concat(t)
|
||
}, {
|
||
cN: "regexp",
|
||
b: "([a-z\\-]+\\.)+\\*",
|
||
c: [ e.BE ].concat(t)
|
||
}, {
|
||
cN: "number",
|
||
b: "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"
|
||
}, {
|
||
cN: "number",
|
||
b: "\\b\\d+[kKmMgGdshdwy]*\\b",
|
||
r: 0
|
||
} ].concat(t)
|
||
};
|
||
return {
|
||
c: [ e.HCM, {
|
||
b: e.UIR + "\\s",
|
||
e: ";|{",
|
||
rB: !0,
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR,
|
||
starts: n
|
||
} ],
|
||
r: 0
|
||
} ],
|
||
i: "[^\\s\\}]"
|
||
};
|
||
}(hljs), hljs.LANGUAGES["erlang-repl"] = function(e) {
|
||
return {
|
||
k: {
|
||
special_functions: "spawn spawn_link self",
|
||
reserved: "after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"
|
||
},
|
||
c: [ {
|
||
cN: "prompt",
|
||
b: "^[0-9]+> ",
|
||
r: 10
|
||
}, {
|
||
cN: "comment",
|
||
b: "%",
|
||
e: "$"
|
||
}, {
|
||
cN: "number",
|
||
b: "\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",
|
||
r: 0
|
||
}, e.ASM, e.QSM, {
|
||
cN: "constant",
|
||
b: "\\?(::)?([A-Z]\\w*(::)?)+"
|
||
}, {
|
||
cN: "arrow",
|
||
b: "->"
|
||
}, {
|
||
cN: "ok",
|
||
b: "ok"
|
||
}, {
|
||
cN: "exclamation_mark",
|
||
b: "!"
|
||
}, {
|
||
cN: "function_or_atom",
|
||
b: "(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",
|
||
r: 0
|
||
}, {
|
||
cN: "variable",
|
||
b: "[A-Z][a-zA-Z0-9_']*",
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.r = function(e) {
|
||
var t = "([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";
|
||
return {
|
||
c: [ e.HCM, {
|
||
b: t,
|
||
l: t,
|
||
k: {
|
||
keyword: "function if in break next repeat else for return switch while try tryCatch|10 stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...|10",
|
||
literal: "NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"
|
||
},
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "0[xX][0-9a-fA-F]+[Li]?\\b",
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "\\d+(?:[eE][+\\-]?\\d*)?L\\b",
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "\\d+\\.(?!\\d)(?:i\\b)?",
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",
|
||
r: 0
|
||
}, {
|
||
cN: "number",
|
||
b: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",
|
||
r: 0
|
||
}, {
|
||
b: "`",
|
||
e: "`",
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: [ e.BE ],
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ e.BE ],
|
||
r: 0
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.json = function(e) {
|
||
var t = {
|
||
literal: "true false null"
|
||
}, n = [ e.QSM, e.CNM ], i = {
|
||
cN: "value",
|
||
e: ",",
|
||
eW: !0,
|
||
eE: !0,
|
||
c: n,
|
||
k: t
|
||
}, o = {
|
||
b: "{",
|
||
e: "}",
|
||
c: [ {
|
||
cN: "attribute",
|
||
b: '\\s*"',
|
||
e: '"\\s*:\\s*',
|
||
eB: !0,
|
||
eE: !0,
|
||
c: [ e.BE ],
|
||
i: "\\n",
|
||
starts: i
|
||
} ],
|
||
i: "\\S"
|
||
}, r = {
|
||
b: "\\[",
|
||
e: "\\]",
|
||
c: [ e.inherit(i, {
|
||
cN: null
|
||
}) ],
|
||
i: "\\S"
|
||
};
|
||
return n.splice(n.length, 0, o, r), {
|
||
c: n,
|
||
k: t,
|
||
i: "\\S"
|
||
};
|
||
}(hljs), hljs.LANGUAGES.django = function() {
|
||
var e = {
|
||
cN: "filter",
|
||
b: /\|[A-Za-z]+\:?/,
|
||
k: "truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone",
|
||
c: [ {
|
||
cN: "argument",
|
||
b: /"/,
|
||
e: /"/
|
||
}, {
|
||
cN: "argument",
|
||
b: /'/,
|
||
e: /'/
|
||
} ]
|
||
};
|
||
return {
|
||
cI: !0,
|
||
sL: "xml",
|
||
subLanguageMode: "continuous",
|
||
c: [ {
|
||
cN: "template_comment",
|
||
b: /{%\s*comment\s*%}/,
|
||
e: /{%\s*endcomment\s*%}/
|
||
}, {
|
||
cN: "template_comment",
|
||
b: /{#/,
|
||
e: /#}/
|
||
}, {
|
||
cN: "template_tag",
|
||
b: /{%/,
|
||
e: /%}/,
|
||
k: "comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor in ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup by as ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim",
|
||
c: [ e ]
|
||
}, {
|
||
cN: "variable",
|
||
b: /{{/,
|
||
e: /}}/,
|
||
c: [ e ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.delphi = function(e) {
|
||
var t = "and safecall cdecl then string exports library not pascal set virtual file in array label packed end. index while const raise for to implementation with except overload destructor downto finally program exit unit inherited override if type until function do begin repeat goto nil far initialization object else var uses external resourcestring interface end finalization class asm mod case on shr shl of register xorwrite threadvar try record near stored constructor stdcall inline div out or procedure", n = "safecall stdcall pascal stored const implementation finalization except to finally program inherited override then exports string read not mod shr try div shl set library message packed index for near overload label downto exit public goto interface asm on of constructor or private array unit raise destructor var type until function else external with case default record while protected property procedure published and cdecl do threadvar file in if end virtual write far out begin repeat nil initialization object uses resourcestring class register xorwrite inline static", i = {
|
||
cN: "comment",
|
||
b: "{",
|
||
e: "}",
|
||
r: 0
|
||
}, o = {
|
||
cN: "comment",
|
||
b: "\\(\\*",
|
||
e: "\\*\\)",
|
||
r: 10
|
||
}, r = {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ {
|
||
b: "''"
|
||
} ],
|
||
r: 0
|
||
}, s = {
|
||
cN: "string",
|
||
b: "(#\\d+)+"
|
||
}, a = {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "[:;]",
|
||
k: "function constructor|10 destructor|10 procedure|10",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.IR
|
||
}, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
k: t,
|
||
c: [ r, s ]
|
||
}, i, o ]
|
||
};
|
||
return {
|
||
cI: !0,
|
||
k: t,
|
||
i: '("|\\$[G-Zg-z]|\\/\\*|</)',
|
||
c: [ i, o, e.CLCM, r, s, e.NM, a, {
|
||
cN: "class",
|
||
b: "=\\bclass\\b",
|
||
e: "end;",
|
||
k: n,
|
||
c: [ r, s, i, o, e.CLCM, a ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.vbscript = function(e) {
|
||
return {
|
||
cI: !0,
|
||
k: {
|
||
keyword: "call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto",
|
||
built_in: "lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err",
|
||
literal: "true false null nothing empty"
|
||
},
|
||
i: "//",
|
||
c: [ e.inherit(e.QSM, {
|
||
c: [ {
|
||
b: '""'
|
||
} ]
|
||
}), {
|
||
cN: "comment",
|
||
b: "'",
|
||
e: "$"
|
||
}, e.CNM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.mel = function(e) {
|
||
return {
|
||
k: "int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",
|
||
i: "</",
|
||
c: [ e.CNM, e.ASM, e.QSM, {
|
||
cN: "string",
|
||
b: "`",
|
||
e: "`",
|
||
c: [ e.BE ]
|
||
}, {
|
||
cN: "variable",
|
||
b: "\\$\\d",
|
||
r: 5
|
||
}, {
|
||
cN: "variable",
|
||
b: "[\\$\\%\\@\\*](\\^\\w\\b|#\\w+|[^\\s\\w{]|{\\w+}|\\w+)"
|
||
}, e.CLCM, e.CBLCLM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.dos = function() {
|
||
return {
|
||
cI: !0,
|
||
k: {
|
||
flow: "if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",
|
||
keyword: "shift cd dir echo setlocal endlocal set pause copy",
|
||
stream: "prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux",
|
||
winutils: "ping net ipconfig taskkill xcopy ren del"
|
||
},
|
||
c: [ {
|
||
cN: "envvar",
|
||
b: "%%[^ ]"
|
||
}, {
|
||
cN: "envvar",
|
||
b: "%[^ ]+?%"
|
||
}, {
|
||
cN: "envvar",
|
||
b: "![^ ]+?!"
|
||
}, {
|
||
cN: "number",
|
||
b: "\\b\\d+",
|
||
r: 0
|
||
}, {
|
||
cN: "comment",
|
||
b: "@?rem",
|
||
e: "$"
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.apache = function(e) {
|
||
var t = {
|
||
cN: "number",
|
||
b: "[\\$%]\\d+"
|
||
};
|
||
return {
|
||
cI: !0,
|
||
c: [ e.HCM, {
|
||
cN: "tag",
|
||
b: "</?",
|
||
e: ">"
|
||
}, {
|
||
cN: "keyword",
|
||
b: /\w+/,
|
||
r: 0,
|
||
k: {
|
||
common: "order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"
|
||
},
|
||
starts: {
|
||
e: /$/,
|
||
r: 0,
|
||
k: {
|
||
literal: "on off all"
|
||
},
|
||
c: [ {
|
||
cN: "sqbracket",
|
||
b: "\\s\\[",
|
||
e: "\\]$"
|
||
}, {
|
||
cN: "cbracket",
|
||
b: "[\\$%]\\{",
|
||
e: "\\}",
|
||
c: [ "self", t ]
|
||
}, t, e.QSM ]
|
||
}
|
||
} ],
|
||
i: /\S/
|
||
};
|
||
}(hljs), hljs.LANGUAGES.scss = function(e) {
|
||
var t = "[a-zA-Z-][a-zA-Z0-9_-]*", n = {
|
||
cN: "function",
|
||
b: t + "\\(",
|
||
e: "\\)",
|
||
c: [ "self", e.NM, e.ASM, e.QSM ]
|
||
}, i = {
|
||
cN: "hexcolor",
|
||
b: "#[0-9A-Fa-f]+"
|
||
};
|
||
return {
|
||
cN: "attribute",
|
||
b: "[A-Z\\_\\.\\-]+",
|
||
e: ":",
|
||
eE: !0,
|
||
i: "[^\\s]",
|
||
starts: {
|
||
cN: "value",
|
||
eW: !0,
|
||
eE: !0,
|
||
c: [ n, i, e.NM, e.QSM, e.ASM, e.CBLCLM, {
|
||
cN: "important",
|
||
b: "!important"
|
||
} ]
|
||
}
|
||
}, {
|
||
cI: !0,
|
||
i: "[=/|']",
|
||
c: [ e.CLCM, e.CBLCLM, {
|
||
cN: "function",
|
||
b: t + "\\(",
|
||
e: "\\)",
|
||
c: [ "self", e.NM, e.ASM, e.QSM ]
|
||
}, {
|
||
cN: "id",
|
||
b: "\\#[A-Za-z0-9_-]+",
|
||
r: 0
|
||
}, {
|
||
cN: "class",
|
||
b: "\\.[A-Za-z0-9_-]+",
|
||
r: 0
|
||
}, {
|
||
cN: "attr_selector",
|
||
b: "\\[",
|
||
e: "\\]",
|
||
i: "$"
|
||
}, {
|
||
cN: "tag",
|
||
b: "\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",
|
||
r: 0
|
||
}, {
|
||
cN: "pseudo",
|
||
b: ":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"
|
||
}, {
|
||
cN: "pseudo",
|
||
b: "::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"
|
||
}, {
|
||
cN: "attribute",
|
||
b: "\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",
|
||
i: "[^\\s]"
|
||
}, {
|
||
cN: "value",
|
||
b: "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
|
||
}, {
|
||
cN: "value",
|
||
b: ":",
|
||
e: ";",
|
||
c: [ i, e.NM, e.QSM, e.ASM, {
|
||
cN: "important",
|
||
b: "!important"
|
||
} ]
|
||
}, {
|
||
cN: "at_rule",
|
||
b: "@",
|
||
e: "[{;]",
|
||
k: "mixin include extend for if else each while charset import debug media page content font-face namespace warn",
|
||
c: [ n, e.QSM, e.ASM, i, e.NM, {
|
||
cN: "preprocessor",
|
||
b: "\\s[A-Za-z0-9_.-]+",
|
||
r: 0
|
||
} ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.applescript = function(e) {
|
||
var t = e.inherit(e.QSM, {
|
||
i: ""
|
||
}), n = {
|
||
cN: "title",
|
||
b: e.UIR
|
||
}, i = {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)",
|
||
c: [ "self", e.CNM, t ]
|
||
}, o = [ {
|
||
cN: "comment",
|
||
b: "--",
|
||
e: "$"
|
||
}, {
|
||
cN: "comment",
|
||
b: "\\(\\*",
|
||
e: "\\*\\)",
|
||
c: [ "self", {
|
||
b: "--",
|
||
e: "$"
|
||
} ]
|
||
}, e.HCM ];
|
||
return {
|
||
k: {
|
||
keyword: "about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the then third through thru timeout times to transaction try until where while whose with without",
|
||
constant: "AppleScript false linefeed return pi quote result space tab true",
|
||
type: "alias application boolean class constant date file integer list number real record string text",
|
||
command: "activate beep count delay launch log offset read round run say summarize write",
|
||
property: "character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"
|
||
},
|
||
c: [ t, e.CNM, {
|
||
cN: "type",
|
||
b: "\\bPOSIX file\\b"
|
||
}, {
|
||
cN: "command",
|
||
b: "\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"
|
||
}, {
|
||
cN: "constant",
|
||
b: "\\b(text item delimiters|current application|missing value)\\b"
|
||
}, {
|
||
cN: "keyword",
|
||
b: "\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference))\\b"
|
||
}, {
|
||
cN: "property",
|
||
b: "\\b(POSIX path|(date|time) string|quoted form)\\b"
|
||
}, {
|
||
cN: "function_start",
|
||
bWK: !0,
|
||
k: "on",
|
||
i: "[${=;\\n]",
|
||
c: [ n, i ]
|
||
} ].concat(o),
|
||
i: "//"
|
||
};
|
||
}(hljs), hljs.LANGUAGES.lasso = function(e) {
|
||
var t = "[a-zA-Z_][a-zA-Z0-9_.]*", n = "<\\?(lasso(script)?|=)", i = "\\]|\\?>", o = {
|
||
literal: "true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",
|
||
built_in: "array date decimal duration integer map pair string tag xml null bytes list queue set stack staticarray tie local var variable global data self inherited",
|
||
keyword: "error_code error_msg error_pop error_push error_reset cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"
|
||
}, r = {
|
||
cN: "comment",
|
||
b: "<!--",
|
||
e: "-->",
|
||
r: 0
|
||
}, s = {
|
||
cN: "preprocessor",
|
||
b: "\\[noprocess\\]",
|
||
starts: {
|
||
cN: "markup",
|
||
e: "\\[/noprocess\\]",
|
||
rE: !0,
|
||
c: [ r ]
|
||
}
|
||
}, a = {
|
||
cN: "preprocessor",
|
||
b: "\\[/noprocess|" + n
|
||
}, l = {
|
||
cN: "variable",
|
||
b: "'" + t + "'"
|
||
}, c = [ e.CLCM, {
|
||
cN: "javadoc",
|
||
b: "/\\*\\*!",
|
||
e: "\\*/"
|
||
}, e.CBLCLM, e.inherit(e.CNM, {
|
||
b: e.CNR + "|-?(infinity|nan)\\b"
|
||
}), e.inherit(e.ASM, {
|
||
i: null
|
||
}), e.inherit(e.QSM, {
|
||
i: null
|
||
}), {
|
||
cN: "string",
|
||
b: "`",
|
||
e: "`"
|
||
}, {
|
||
cN: "variable",
|
||
b: "[#$]" + t
|
||
}, {
|
||
cN: "variable",
|
||
b: "#",
|
||
e: "\\d+",
|
||
i: "\\W"
|
||
}, {
|
||
cN: "tag",
|
||
b: "::\\s*",
|
||
e: t,
|
||
i: "\\W"
|
||
}, {
|
||
cN: "attribute",
|
||
b: "\\.\\.\\.|-" + e.UIR
|
||
}, {
|
||
cN: "subst",
|
||
b: "->\\s*",
|
||
c: [ l ]
|
||
}, {
|
||
cN: "subst",
|
||
b: ":=|[-+*/%=<>&|!?\\\\]+",
|
||
r: 0
|
||
}, {
|
||
cN: "built_in",
|
||
b: "\\.\\.?",
|
||
r: 0,
|
||
c: [ l ]
|
||
}, {
|
||
cN: "class",
|
||
bWK: !0,
|
||
k: "define",
|
||
rE: !0,
|
||
e: "\\(|=>",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR + "(=(?!>))?"
|
||
} ]
|
||
} ];
|
||
return {
|
||
cI: !0,
|
||
l: t + "|&[lg]t;",
|
||
k: o,
|
||
c: [ {
|
||
cN: "preprocessor",
|
||
b: i,
|
||
r: 0,
|
||
starts: {
|
||
cN: "markup",
|
||
e: "\\[|" + n,
|
||
rE: !0,
|
||
c: [ r ]
|
||
}
|
||
}, s, a, {
|
||
cN: "preprocessor",
|
||
b: "\\[no_square_brackets",
|
||
starts: {
|
||
e: "\\[/no_square_brackets\\]",
|
||
l: t + "|&[lg]t;",
|
||
k: o,
|
||
c: [ {
|
||
cN: "preprocessor",
|
||
b: i,
|
||
r: 0,
|
||
starts: {
|
||
cN: "markup",
|
||
e: n,
|
||
rE: !0,
|
||
c: [ r ]
|
||
}
|
||
}, s, a ].concat(c)
|
||
}
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "\\[",
|
||
r: 0
|
||
}, {
|
||
cN: "shebang",
|
||
b: "^#!.+lasso9\\b",
|
||
r: 10
|
||
} ].concat(c)
|
||
};
|
||
}(hljs), hljs.LANGUAGES.cpp = function(e) {
|
||
var t = {
|
||
keyword: "false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex",
|
||
built_in: "std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr"
|
||
};
|
||
return {
|
||
k: t,
|
||
i: "</",
|
||
c: [ e.CLCM, e.CBLCLM, e.QSM, {
|
||
cN: "string",
|
||
b: "'\\\\?.",
|
||
e: "'",
|
||
i: "."
|
||
}, {
|
||
cN: "number",
|
||
b: "\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"
|
||
}, e.CNM, {
|
||
cN: "preprocessor",
|
||
b: "#",
|
||
e: "$",
|
||
c: [ {
|
||
b: "<",
|
||
e: ">",
|
||
i: "\\n"
|
||
}, e.CLCM ]
|
||
}, {
|
||
cN: "stl_container",
|
||
b: "\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",
|
||
e: ">",
|
||
k: t,
|
||
r: 10,
|
||
c: [ "self" ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.matlab = function(e) {
|
||
var t = [ e.CNM, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "'",
|
||
c: [ e.BE, {
|
||
b: "''"
|
||
} ],
|
||
r: 0
|
||
} ];
|
||
return {
|
||
k: {
|
||
keyword: "break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",
|
||
built_in: "sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"
|
||
},
|
||
i: '(//|"|#|/\\*|\\s+/\\w+)',
|
||
c: [ {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "$",
|
||
k: "function",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR
|
||
}, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)"
|
||
}, {
|
||
cN: "params",
|
||
b: "\\[",
|
||
e: "\\]"
|
||
} ]
|
||
}, {
|
||
cN: "transposed_variable",
|
||
b: "[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",
|
||
e: ""
|
||
}, {
|
||
cN: "matrix",
|
||
b: "\\[",
|
||
e: "\\]'*[\\.']*",
|
||
c: t
|
||
}, {
|
||
cN: "cell",
|
||
b: "\\{",
|
||
e: "\\}'*[\\.']*",
|
||
c: t
|
||
}, {
|
||
cN: "comment",
|
||
b: "\\%",
|
||
e: "$"
|
||
} ].concat(t)
|
||
};
|
||
}(hljs), hljs.LANGUAGES.scilab = function(e) {
|
||
var t = [ e.CNM, {
|
||
cN: "string",
|
||
b: "'|\"",
|
||
e: "'|\"",
|
||
c: [ e.BE, {
|
||
b: "''"
|
||
} ],
|
||
r: 0
|
||
} ];
|
||
return {
|
||
k: {
|
||
keyword: "abort break case clear catch continue do elseif else endfunction end for functionglobal if pause return resume select try then while%f %F %t %T %pi %eps %inf %nan %e %i %z %s",
|
||
built_in: "abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp errorexec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isemptyisinfisnan isvector lasterror length load linspace list listfiles log10 log2 logmax min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand realround sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tantype typename warning zeros matrix"
|
||
},
|
||
i: '("|#|/\\*|\\s+/\\w+)',
|
||
c: [ {
|
||
cN: "function",
|
||
bWK: !0,
|
||
e: "$",
|
||
k: "function endfunction|10",
|
||
c: [ {
|
||
cN: "title",
|
||
b: e.UIR
|
||
}, {
|
||
cN: "params",
|
||
b: "\\(",
|
||
e: "\\)"
|
||
} ]
|
||
}, {
|
||
cN: "transposed_variable",
|
||
b: "[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",
|
||
e: ""
|
||
}, {
|
||
cN: "matrix",
|
||
b: "\\[",
|
||
e: "\\]'*[\\.']*",
|
||
c: t
|
||
}, {
|
||
cN: "comment",
|
||
b: "//",
|
||
e: "$"
|
||
} ].concat(t)
|
||
};
|
||
}(hljs), hljs.LANGUAGES.makefile = function(e) {
|
||
var t = {
|
||
cN: "variable",
|
||
b: /\$\(/,
|
||
e: /\)/,
|
||
c: e.BE
|
||
};
|
||
return {
|
||
c: [ e.HCM, {
|
||
b: /^\w+\s*\W*=/,
|
||
rB: !0,
|
||
r: 0,
|
||
starts: {
|
||
cN: "constant",
|
||
e: /\s*\W*=/,
|
||
eE: !0,
|
||
starts: {
|
||
e: /$/,
|
||
r: 0,
|
||
c: [ t ]
|
||
}
|
||
}
|
||
}, {
|
||
cN: "title",
|
||
b: /^[\w]+:\s*$/
|
||
}, {
|
||
cN: "phony",
|
||
b: /^\.PHONY:/,
|
||
e: /$/,
|
||
k: ".PHONY",
|
||
l: /[\.\w]+/
|
||
}, {
|
||
b: /^\t+/,
|
||
e: /$/,
|
||
c: [ e.QSM, t ]
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.asciidoc = function() {
|
||
return {
|
||
c: [ {
|
||
cN: "comment",
|
||
b: "^/{4,}\\n",
|
||
e: "\\n/{4,}$",
|
||
r: 10
|
||
}, {
|
||
cN: "comment",
|
||
b: "^//",
|
||
e: "$",
|
||
r: 0
|
||
}, {
|
||
cN: "title",
|
||
b: "^\\.\\w.*$"
|
||
}, {
|
||
b: "^[=\\*]{4,}\\n",
|
||
e: "\\n^[=\\*]{4,}$",
|
||
r: 10
|
||
}, {
|
||
cN: "header",
|
||
b: "^(={1,5}) .+?( \\1)?$",
|
||
r: 10
|
||
}, {
|
||
cN: "header",
|
||
b: "^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$",
|
||
r: 10
|
||
}, {
|
||
cN: "attribute",
|
||
b: "^:.+?:",
|
||
e: "\\s",
|
||
eE: !0,
|
||
r: 10
|
||
}, {
|
||
cN: "attribute",
|
||
b: "^\\[.+?\\]$",
|
||
r: 0
|
||
}, {
|
||
cN: "blockquote",
|
||
b: "^_{4,}\\n",
|
||
e: "\\n_{4,}$",
|
||
r: 10
|
||
}, {
|
||
cN: "code",
|
||
b: "^[\\-\\.]{4,}\\n",
|
||
e: "\\n[\\-\\.]{4,}$",
|
||
r: 10
|
||
}, {
|
||
b: "^\\+{4,}\\n",
|
||
e: "\\n\\+{4,}$",
|
||
c: [ {
|
||
b: "<",
|
||
e: ">",
|
||
sL: "xml",
|
||
r: 0
|
||
} ],
|
||
r: 10
|
||
}, {
|
||
cN: "bullet",
|
||
b: "^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"
|
||
}, {
|
||
cN: "label",
|
||
b: "^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",
|
||
r: 10
|
||
}, {
|
||
cN: "strong",
|
||
b: "\\B\\*(?![\\*\\s])",
|
||
e: "(\\n{2}|\\*)",
|
||
c: [ {
|
||
b: "\\\\*\\w",
|
||
r: 0
|
||
} ]
|
||
}, {
|
||
cN: "emphasis",
|
||
b: "\\B'(?!['\\s])",
|
||
e: "(\\n{2}|')",
|
||
c: [ {
|
||
b: "\\\\'\\w",
|
||
r: 0
|
||
} ],
|
||
r: 0
|
||
}, {
|
||
cN: "emphasis",
|
||
b: "_(?![_\\s])",
|
||
e: "(\\n{2}|_)",
|
||
r: 0
|
||
}, {
|
||
cN: "smartquote",
|
||
b: "``.+?''",
|
||
r: 10
|
||
}, {
|
||
cN: "smartquote",
|
||
b: "`.+?'",
|
||
r: 10
|
||
}, {
|
||
cN: "code",
|
||
b: "(`.+?`|\\+.+?\\+)",
|
||
r: 0
|
||
}, {
|
||
cN: "code",
|
||
b: "^[ \\t]",
|
||
e: "$",
|
||
r: 0
|
||
}, {
|
||
cN: "horizontal_rule",
|
||
b: "^'{3,}[ \\t]*$",
|
||
r: 10
|
||
}, {
|
||
b: "(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",
|
||
rB: !0,
|
||
c: [ {
|
||
b: "(link|image:?):",
|
||
r: 0
|
||
}, {
|
||
cN: "link_url",
|
||
b: "\\w",
|
||
e: "[^\\[]+",
|
||
r: 0
|
||
}, {
|
||
cN: "link_label",
|
||
b: "\\[",
|
||
e: "\\]",
|
||
eB: !0,
|
||
eE: !0,
|
||
r: 0
|
||
} ],
|
||
r: 10
|
||
} ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.parser3 = function(e) {
|
||
return {
|
||
sL: "xml",
|
||
r: 0,
|
||
c: [ {
|
||
cN: "comment",
|
||
b: "^#",
|
||
e: "$"
|
||
}, {
|
||
cN: "comment",
|
||
b: "\\^rem{",
|
||
e: "}",
|
||
r: 10,
|
||
c: [ {
|
||
b: "{",
|
||
e: "}",
|
||
c: [ "self" ]
|
||
} ]
|
||
}, {
|
||
cN: "preprocessor",
|
||
b: "^@(?:BASE|USE|CLASS|OPTIONS)$",
|
||
r: 10
|
||
}, {
|
||
cN: "title",
|
||
b: "@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"
|
||
}, {
|
||
cN: "variable",
|
||
b: "\\$\\{?[\\w\\-\\.\\:]+\\}?"
|
||
}, {
|
||
cN: "keyword",
|
||
b: "\\^[\\w\\-\\.\\:]+"
|
||
}, {
|
||
cN: "number",
|
||
b: "\\^#[0-9a-fA-F]+"
|
||
}, e.CNM ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.clojure = function(e) {
|
||
var t = {
|
||
built_in: "def cond apply if-not if-let if not not= = < < > <= <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for doseq dosync dotimes and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import intern refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! import use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if throw printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time ns assert re-find re-groups rand-int rand mod locking assert-valid-fdecl alias namespace resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! memfn to-array future future-call into-array aset gen-class reduce merge map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"
|
||
}, n = "[a-zA-Z_0-9\\!\\.\\?\\-\\+\\*\\/\\<\\=\\>\\&\\#\\$';]+", i = "[\\s:\\(\\{]+\\d+(\\.\\d+)?", o = {
|
||
cN: "number",
|
||
b: i,
|
||
r: 0
|
||
}, r = {
|
||
cN: "string",
|
||
b: '"',
|
||
e: '"',
|
||
c: [ e.BE ],
|
||
r: 0
|
||
}, s = {
|
||
cN: "comment",
|
||
b: ";",
|
||
e: "$",
|
||
r: 0
|
||
}, a = {
|
||
cN: "collection",
|
||
b: "[\\[\\{]",
|
||
e: "[\\]\\}]"
|
||
}, l = {
|
||
cN: "comment",
|
||
b: "\\^" + n
|
||
}, c = {
|
||
cN: "comment",
|
||
b: "\\^\\{",
|
||
e: "\\}"
|
||
}, u = {
|
||
cN: "attribute",
|
||
b: "[:]" + n
|
||
}, d = {
|
||
cN: "list",
|
||
b: "\\(",
|
||
e: "\\)"
|
||
}, h = {
|
||
eW: !0,
|
||
k: {
|
||
literal: "true false nil"
|
||
},
|
||
r: 0
|
||
}, p = {
|
||
k: t,
|
||
l: n,
|
||
cN: "title",
|
||
b: n,
|
||
starts: h
|
||
};
|
||
return d.c = [ {
|
||
cN: "comment",
|
||
b: "comment"
|
||
}, p, h ], h.c = [ d, r, l, c, s, u, a, o ], a.c = [ d, r, l, s, u, a, o ], {
|
||
i: /\S/,
|
||
c: [ s, d ]
|
||
};
|
||
}(hljs), hljs.LANGUAGES.go = function(e) {
|
||
var t = {
|
||
keyword: "break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer",
|
||
constant: "true false iota nil",
|
||
typename: "bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",
|
||
built_in: "append cap close complex copy imag len make new panic print println real recover delete"
|
||
};
|
||
return {
|
||
k: t,
|
||
i: "</",
|
||
c: [ e.CLCM, e.CBLCLM, e.QSM, {
|
||
cN: "string",
|
||
b: "'",
|
||
e: "[^\\\\]'",
|
||
r: 0
|
||
}, {
|
||
cN: "string",
|
||
b: "`",
|
||
e: "`"
|
||
}, {
|
||
cN: "number",
|
||
b: "[^a-zA-Z_0-9](\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s)(\\+|\\-)?\\d+)?",
|
||
r: 0
|
||
}, e.CNM ]
|
||
};
|
||
}(hljs), define("highlightjs", function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.hljs;
|
||
};
|
||
}(this));
|
||
|
||
var Markdown;
|
||
|
||
if (Markdown = "object" == typeof exports && "function" == typeof require ? exports : {},
|
||
function() {
|
||
function e(e) {
|
||
return e;
|
||
}
|
||
function t() {
|
||
return !1;
|
||
}
|
||
function n() {}
|
||
function i() {}
|
||
n.prototype = {
|
||
chain: function(t, n) {
|
||
var i = this[t];
|
||
if (!i) throw new Error("unknown hook " + t);
|
||
this[t] = i === e ? n : function() {
|
||
var e = Array.prototype.slice.call(arguments, 0);
|
||
return e[0] = i.apply(null, e), n.apply(null, e);
|
||
};
|
||
},
|
||
set: function(e, t) {
|
||
if (!this[e]) throw new Error("unknown hook " + e);
|
||
this[e] = t;
|
||
},
|
||
addNoop: function(t) {
|
||
this[t] = e;
|
||
},
|
||
addFalse: function(e) {
|
||
this[e] = t;
|
||
}
|
||
}, Markdown.HookCollection = n, i.prototype = {
|
||
set: function(e, t) {
|
||
this["s_" + e] = t;
|
||
},
|
||
get: function(e) {
|
||
return this["s_" + e];
|
||
}
|
||
}, Markdown.Converter = function() {
|
||
function e(e) {
|
||
return e = e.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm, function(e, t, n, i, o, r) {
|
||
return t = t.toLowerCase(), M.set(t, E(n)), o ? i : (r && N.set(t, r.replace(/"/g, """)),
|
||
"");
|
||
});
|
||
}
|
||
function t(e) {
|
||
return e = e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm, o),
|
||
e = e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm, o),
|
||
e = e.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, o), e = e.replace(/\n\n[ ]{0,3}(<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g, o),
|
||
e = e.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, o);
|
||
}
|
||
function o(e, t) {
|
||
var n = t;
|
||
return n = n.replace(/^\n+/, ""), n = n.replace(/\n+$/g, ""), n = "\n\n~K" + (B.push(n) - 1) + "K\n\n";
|
||
}
|
||
function r(e, n) {
|
||
e = R.preBlockGamut(e, O), e = p(e);
|
||
var i = "<hr />\n";
|
||
return e = e.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, i), e = e.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm, i),
|
||
e = e.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm, i), e = f(e), e = m(e), e = x(e),
|
||
e = R.postBlockGamut(e, O), e = t(e), e = C(e, n);
|
||
}
|
||
function s(e) {
|
||
return e = R.preSpanGamut(e), e = b(e), e = a(e), e = k(e), e = u(e), e = l(e),
|
||
e = S(e), e = e.replace(/~P/g, "://"), e = E(e), e = I._DoItalicsAndBold ? I._DoItalicsAndBold(e) : w(e),
|
||
e = e.replace(/ +\n/g, " <br>\n"), e = R.postSpanGamut(e);
|
||
}
|
||
function a(e) {
|
||
var t = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|<!(--(?:|(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;
|
||
return e = e.replace(t, function(e) {
|
||
var t = e.replace(/(.)<\/?code>(?=.)/g, "$1`");
|
||
return t = L(t, "!" == e.charAt(1) ? "\\`*_/" : "\\`*_");
|
||
});
|
||
}
|
||
function l(e) {
|
||
return e = e.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, c),
|
||
e = e.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()<?((?:\([^)]*\)|[^()\s])*?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, c),
|
||
e = e.replace(/(\[([^\[\]]+)\])()()()()()/g, c);
|
||
}
|
||
function c(e, t, n, i, o, r, s, a) {
|
||
void 0 == a && (a = "");
|
||
var l = t, c = n.replace(/:\/\//g, "~P"), u = i.toLowerCase(), h = o, p = a;
|
||
if ("" == h) if ("" == u && (u = c.toLowerCase().replace(/ ?\n/g, " ")), h = "#" + u,
|
||
void 0 != M.get(u)) h = M.get(u), void 0 != N.get(u) && (p = N.get(u)); else {
|
||
if (!(l.search(/\(\s*\)$/m) > -1)) return l;
|
||
h = "";
|
||
}
|
||
h = D(h), h = L(h, "*_");
|
||
var f = '<a href="' + h + '"';
|
||
return "" != p && (p = d(p), p = L(p, "*_"), f += ' title="' + p + '"'), f += ">" + c + "</a>";
|
||
}
|
||
function u(e) {
|
||
return e = e.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, h), e = e.replace(/(!\[(.*?)\]\s?\([ \t]*()<?(\S+?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, h);
|
||
}
|
||
function d(e) {
|
||
return e.replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """);
|
||
}
|
||
function h(e, t, n, i, o, r, s, a) {
|
||
var l = t, c = n, u = i.toLowerCase(), h = o, p = a;
|
||
if (p || (p = ""), "" == h) {
|
||
if ("" == u && (u = c.toLowerCase().replace(/ ?\n/g, " ")), h = "#" + u, void 0 == M.get(u)) return l;
|
||
h = M.get(u), void 0 != N.get(u) && (p = N.get(u));
|
||
}
|
||
c = L(d(c), "*_[]()"), h = L(h, "*_");
|
||
var f = '<img src="' + h + '" alt="' + c + '"';
|
||
return p = d(p), p = L(p, "*_"), f += ' title="' + p + '"', f += " />";
|
||
}
|
||
function p(e) {
|
||
return e = e.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm, function(e, t) {
|
||
return "<h1>" + s(t) + "</h1>\n\n";
|
||
}), e = e.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, function(e, t) {
|
||
return "<h2>" + s(t) + "</h2>\n\n";
|
||
}), e = e.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, function(e, t, n) {
|
||
var i = t.length;
|
||
return "<h" + i + ">" + s(n) + "</h" + i + ">\n\n";
|
||
});
|
||
}
|
||
function f(e, t) {
|
||
e += "~0";
|
||
var n = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;
|
||
return P ? e = e.replace(n, function(e, n, i) {
|
||
var o = n, r = i.search(/[*+-]/g) > -1 ? "ul" : "ol", s = g(o, r, t);
|
||
return s = s.replace(/\s+$/, ""), s = "<" + r + ">" + s + "</" + r + ">\n";
|
||
}) : (n = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,
|
||
e = e.replace(n, function(e, t, n, i) {
|
||
var o = t, r = n, s = i.search(/[*+-]/g) > -1 ? "ul" : "ol", a = g(r, s);
|
||
return a = o + "<" + s + ">\n" + a + "</" + s + ">\n";
|
||
})), e = e.replace(/~0/, "");
|
||
}
|
||
function g(e, t, n) {
|
||
P++, e = e.replace(/\n{2,}$/, "\n"), e += "~0";
|
||
var i = z[t], o = new RegExp("(^[ \\t]*)(" + i + ")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1(" + i + ")[ \\t]+))", "gm"), a = !1;
|
||
return e = e.replace(o, function(e, t, i, o) {
|
||
var l = o, c = /\n\n$/.test(l), u = c || l.search(/\n{2,}/) > -1;
|
||
return u || a ? l = r(F(l), !0) : (l = f(F(l), !0), l = l.replace(/\n$/, ""), n || (l = s(l))),
|
||
a = c, "<li>" + l + "</li>\n";
|
||
}), e = e.replace(/~0/g, ""), P--, e;
|
||
}
|
||
function m(e) {
|
||
return e += "~0", e = e.replace(/(?:\n\n|^\n?)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g, function(e, t, n) {
|
||
var i = t, o = n;
|
||
return i = y(F(i)), i = T(i), i = i.replace(/^\n+/g, ""), i = i.replace(/\n+$/g, ""),
|
||
i = "<pre><code>" + i + "\n</code></pre>", "\n\n" + i + "\n\n" + o;
|
||
}), e = e.replace(/~0/, "");
|
||
}
|
||
function v(e) {
|
||
return e = e.replace(/(^\n+|\n+$)/g, ""), "\n\n~K" + (B.push(e) - 1) + "K\n\n";
|
||
}
|
||
function b(e) {
|
||
return e = e.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function(e, t, n, i) {
|
||
var o = i;
|
||
return o = o.replace(/^([ \t]*)/g, ""), o = o.replace(/[ \t]*$/g, ""), o = y(o),
|
||
o = o.replace(/:\/\//g, "~P"), t + "<code>" + o + "</code>";
|
||
});
|
||
}
|
||
function y(e) {
|
||
return e = e.replace(/&/g, "&"), e = e.replace(/</g, "<"), e = e.replace(/>/g, ">"),
|
||
e = L(e, "*_{}[]\\", !1);
|
||
}
|
||
function w(e) {
|
||
return e = e.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g, "$1<strong>$3</strong>$4"),
|
||
e = e.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g, "$1<em>$3</em>$4");
|
||
}
|
||
function x(e) {
|
||
return e = e.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, function(e, t) {
|
||
var n = t;
|
||
return n = n.replace(/^[ \t]*>[ \t]?/gm, "~0"), n = n.replace(/~0/g, ""), n = n.replace(/^[ \t]+$/gm, ""),
|
||
n = r(n), n = n.replace(/(^|\n)/g, "$1 "), n = n.replace(/(\s*<pre>[^\r]+?<\/pre>)/gm, function(e, t) {
|
||
var n = t;
|
||
return n = n.replace(/^ /gm, "~0"), n = n.replace(/~0/g, "");
|
||
}), v("<blockquote>\n" + n + "\n</blockquote>");
|
||
});
|
||
}
|
||
function C(e, t) {
|
||
e = e.replace(/^\n+/g, ""), e = e.replace(/\n+$/g, "");
|
||
for (var n = e.split(/\n{2,}/g), i = [], o = /~K(\d+)K/, r = n.length, a = 0; r > a; a++) {
|
||
var l = n[a];
|
||
o.test(l) ? i.push(l) : /\S/.test(l) && (l = s(l), l = l.replace(/^([ \t]*)/g, "<p>"),
|
||
l += "</p>", i.push(l));
|
||
}
|
||
if (!t) {
|
||
r = i.length;
|
||
for (var a = 0; r > a; a++) for (var c = !0; c; ) c = !1, i[a] = i[a].replace(/~K(\d+)K/g, function(e, t) {
|
||
return c = !0, B[t];
|
||
});
|
||
}
|
||
return i.join("\n\n");
|
||
}
|
||
function E(e) {
|
||
return e = e.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&"), e = e.replace(/<(?![a-z\/?!]|~D)/gi, "<");
|
||
}
|
||
function k(e) {
|
||
return e = e.replace(/\\(\\)/g, $), e = e.replace(/\\([`*_{}\[\]()>#+-.!])/g, $);
|
||
}
|
||
function A(e, t, n, i) {
|
||
if (t) return e;
|
||
if (")" !== i.charAt(i.length - 1)) return "<" + n + i + ">";
|
||
for (var o = i.match(/[()]/g), r = 0, s = 0; s < o.length; s++) "(" === o[s] ? 0 >= r ? r = 1 : r++ : r--;
|
||
var a = "";
|
||
if (0 > r) {
|
||
var l = new RegExp("\\){1," + -r + "}$");
|
||
i = i.replace(l, function(e) {
|
||
return a = e, "";
|
||
});
|
||
}
|
||
if (a) {
|
||
var c = i.charAt(i.length - 1);
|
||
W.test(c) || (a = c + a, i = i.substr(0, i.length - 1));
|
||
}
|
||
return "<" + n + i + ">" + a;
|
||
}
|
||
function S(e) {
|
||
e = e.replace(U, A);
|
||
var t = function(e, t) {
|
||
return '<a href="' + t + '">' + R.plainLinkText(t) + "</a>";
|
||
};
|
||
return e = e.replace(/<((https?|ftp):[^'">\s]+)>/gi, t);
|
||
}
|
||
function _(e) {
|
||
return e = e.replace(/~E(\d+)E/g, function(e, t) {
|
||
var n = parseInt(t);
|
||
return String.fromCharCode(n);
|
||
});
|
||
}
|
||
function F(e) {
|
||
return e = e.replace(/^(\t|[ ]{1,4})/gm, "~0"), e = e.replace(/~0/g, "");
|
||
}
|
||
function T(e) {
|
||
if (!/\t/.test(e)) return e;
|
||
var t, n = [ " ", " ", " ", " " ], i = 0;
|
||
return e.replace(/[\n\t]/g, function(e, o) {
|
||
return "\n" === e ? (i = o + 1, e) : (t = (o - i) % 4, i = o + 1, n[t]);
|
||
});
|
||
}
|
||
function D(e) {
|
||
return e ? (e.length, e.replace(q, function(e) {
|
||
return "~D" == e ? "%24" : ":" == e ? ":" : "%" + e.charCodeAt(0).toString(16);
|
||
})) : "";
|
||
}
|
||
function L(e, t, n) {
|
||
var i = "([" + t.replace(/([\[\]\\])/g, "\\$1") + "])";
|
||
n && (i = "\\\\" + i);
|
||
var o = new RegExp(i, "g");
|
||
return e = e.replace(o, $);
|
||
}
|
||
function $(e, t) {
|
||
var n = t.charCodeAt(0);
|
||
return "~E" + n + "E";
|
||
}
|
||
var I = {};
|
||
this.setOptions = function(e) {
|
||
I = e;
|
||
};
|
||
var R = this.hooks = new n();
|
||
R.addNoop("plainLinkText"), R.addNoop("preConversion"), R.addNoop("postNormalization"),
|
||
R.addNoop("preBlockGamut"), R.addNoop("postBlockGamut"), R.addNoop("preSpanGamut"),
|
||
R.addNoop("postSpanGamut"), R.addNoop("postConversion");
|
||
var M, N, B, P;
|
||
this.makeHtml = function(n) {
|
||
if (M) throw new Error("Recursive call to converter.makeHtml");
|
||
return M = new i(), N = new i(), B = [], P = 0, n = R.preConversion(n), n = n.replace(/~/g, "~T"),
|
||
n = n.replace(/\$/g, "~D"), n = n.replace(/\r\n/g, "\n"), n = n.replace(/\r/g, "\n"),
|
||
n = "\n\n" + n + "\n\n", n = T(n), n = n.replace(/^[ \t]+$/gm, ""), n = R.postNormalization(n),
|
||
n = t(n), n = e(n), n = r(n), n = _(n), n = n.replace(/~D/g, "$$"), n = n.replace(/~T/g, "~"),
|
||
n = R.postConversion(n), B = N = M = null, n;
|
||
};
|
||
var O = function(e) {
|
||
return r(e);
|
||
}, z = {
|
||
ol: "\\d+[.]",
|
||
ul: "[*+-]"
|
||
}, j = "[-A-Z0-9+&@#/%?=~_|[\\]()!:,.;]", H = "[-A-Z0-9+&@#/%=~_|[\\])]", U = new RegExp('(="|<)?\\b(https?|ftp)(://' + j + "*" + H + ")(?=$|\\W)", "gi"), W = new RegExp(H, "i"), q = /(?:["'*()[\]:]|~D)/g;
|
||
};
|
||
}(), define("bower-libs/pagedown-ace/Markdown.Converter", function() {}), function() {
|
||
function e() {}
|
||
function t(e, t) {
|
||
this.buttonBar = u.getElementById("wmd-button-bar" + e), this.preview = u.getElementById("wmd-preview" + e),
|
||
this.input = t;
|
||
}
|
||
function n(t) {
|
||
var n = this, i = t.input;
|
||
this.init = function() {
|
||
var e = "undefined" != typeof require ? require("ace/range").Range : ace.require("ace/range").Range;
|
||
!function(t) {
|
||
n.before = i.session.getTextRange(new e(0, 0, t.start.row, t.start.column)), n.selection = i.session.getTextRange(),
|
||
n.after = i.session.getTextRange(new e(t.end.row, t.end.column, Number.MAX_VALUE, Number.MAX_VALUE));
|
||
}(i.selection.getRange()), this.text = [ this.before, this.selection, this.after ].join(""),
|
||
this.length = this.text.length, this.setInputAreaSelectionStartEnd(), this.scrollTop = i.renderer.getScrollTop();
|
||
}, this.setInputAreaSelection = function() {
|
||
var e = "undefined" != typeof require ? require("ace/range").Range : ace.require("ace/range").Range;
|
||
i.selection.setSelectionRange(function(t, n) {
|
||
return new e(t.row, t.column, n.row, n.column);
|
||
}(i.session.doc.indexToPosition(n.start), i.session.doc.indexToPosition(n.end))),
|
||
i.renderer.scrollToY(n.scrollTop), i.focus();
|
||
}, this.setInputAreaSelectionStartEnd = function() {
|
||
n.start = n.before.length, n.end = n.after.length;
|
||
}, this.restore = function() {
|
||
for (var e = 0, t = n.before.length; t > e && n.before.charCodeAt(e) === n.text.charCodeAt(e); ) e++;
|
||
for (var o = 0, r = n.after.length, s = n.after.length - 1, a = n.text.length - 1; r > o && n.after.charCodeAt(s - o) === n.text.charCodeAt(a - o); ) o++;
|
||
var l = "undefined" != typeof require ? require("ace/range").Range : ace.require("ace/range").Range, c = function(e, t) {
|
||
return new l(e.row, e.column, t.row, t.column);
|
||
}(i.session.doc.indexToPosition(e), i.session.doc.indexToPosition(n.length - o));
|
||
i.session.replace(c, n.text.substring(e, a - o + 1)), this.setInputAreaSelection();
|
||
}, this.getChunks = function() {
|
||
var t = new e();
|
||
return t.before = n.before, t.startTag = "", t.selection = n.selection, t.endTag = "",
|
||
t.after = n.after, t.scrollTop = n.scrollTop, t;
|
||
}, this.setChunks = function(e) {
|
||
e.before = e.before + e.startTag, e.after = e.endTag + e.after, this.start = e.before.length,
|
||
this.end = e.before.length + e.selection.length, this.text = e.before + e.selection + e.after,
|
||
this.scrollTop = e.scrollTop;
|
||
}, this.init();
|
||
}
|
||
function i(e, t, n, i) {
|
||
var o, r, s, a = 3e3, c = "delayed", d = function() {
|
||
var e = 0;
|
||
return window.innerHeight ? e = window.pageYOffset : u.documentElement && u.documentElement.scrollTop ? e = u.documentElement.scrollTop : u.body && (e = u.body.scrollTop),
|
||
e;
|
||
}, h = function() {
|
||
if (t.preview) {
|
||
var n = t.input.getValue();
|
||
if (!n || n != s) {
|
||
s = n;
|
||
var i = new Date().getTime();
|
||
n = e.makeHtml(n);
|
||
var o = new Date().getTime();
|
||
r = o - i, C(n);
|
||
}
|
||
}
|
||
};
|
||
void 0 !== i && (h = i(h));
|
||
var p = function() {
|
||
if (o && (clearTimeout(o), o = void 0), "manual" !== c) {
|
||
var e = 0;
|
||
"delayed" === c && (e = r), e > a && (e = a), o = setTimeout(h, e);
|
||
}
|
||
}, g = function(e) {
|
||
return e.scrollHeight <= e.clientHeight ? 1 : e.scrollTop / (e.scrollHeight - e.clientHeight);
|
||
}, m = function() {
|
||
t.preview && (t.preview.scrollTop = (t.preview.scrollHeight - t.preview.clientHeight) * g(t.preview));
|
||
};
|
||
this.refresh = function(e) {
|
||
e ? (s = "", h()) : p();
|
||
}, this.processingTime = function() {
|
||
return r;
|
||
};
|
||
var v, b = !0, y = function(e) {
|
||
var n = t.preview, i = n.parentNode, o = n.nextSibling;
|
||
i.removeChild(n), n.innerHTML = e, o ? i.insertBefore(n, o) : i.appendChild(n);
|
||
}, w = function(e) {
|
||
t.preview.innerHTML = e;
|
||
}, x = function(e) {
|
||
if (v) return v(e);
|
||
try {
|
||
w(e), v = w;
|
||
} catch (t) {
|
||
v = y, v(e);
|
||
}
|
||
}, C = function(e) {
|
||
var i = l.getTop(t.input) - d();
|
||
if (t.preview && (x(e), n()), m(), b) return b = !1, void 0;
|
||
var o = l.getTop(t.input) - d();
|
||
f.isIE ? setTimeout(function() {
|
||
window.scrollBy(0, o - i);
|
||
}, 0) : window.scrollBy(0, o - i);
|
||
}, E = function() {
|
||
t.input.session.on("change", p), t.preview && (t.preview.scrollTop = 0);
|
||
};
|
||
E();
|
||
}
|
||
function o(e, t, i, o, r, s, a, l) {
|
||
function c(e) {
|
||
if (0 !== e.length) {
|
||
var t = e.pop();
|
||
b.commands.addCommand({
|
||
name: a(t),
|
||
bindKey: m[t],
|
||
exec: function() {
|
||
d(y[t]);
|
||
}
|
||
}), c(e);
|
||
}
|
||
}
|
||
function d(e) {
|
||
b.focus();
|
||
var r = "wmd-link-button" == e.id || "wmd-image-button" == e.id;
|
||
if (e.textOp) {
|
||
i && !r && i.setCommandMode();
|
||
var s = new n(t);
|
||
if (!s) return;
|
||
var a = s.getChunks(), l = function() {
|
||
b.focus(), a && s.setChunks(a), s.restore(), o.refresh();
|
||
}, c = e.textOp(a, l);
|
||
c || l();
|
||
}
|
||
e.execute && e.execute(i);
|
||
}
|
||
function h(e, n) {
|
||
var i = "0px", o = "-20px", r = "-40px", s = e.getElementsByTagName("span")[0];
|
||
n ? (s.style.backgroundPosition = e.XShift + " " + i, e.onmouseover = function() {
|
||
s.style.backgroundPosition = this.XShift + " " + r;
|
||
}, e.onmouseout = function() {
|
||
s.style.backgroundPosition = this.XShift + " " + i;
|
||
}, f.isIE && (e.onmousedown = function() {
|
||
u.activeElement && u.activeElement !== t.input || (t.ieCachedRange = document.selection.createRange(),
|
||
t.ieCachedScrollTop = t.input.renderer.getScrollTop());
|
||
}), e.isHelp || (e.onclick = function() {
|
||
return this.onmouseout && this.onmouseout(), d(this), !1;
|
||
}), e.className = e.className.replace(/ disabled/g, "")) : (s.style.backgroundPosition = e.XShift + " " + o,
|
||
e.onmouseover = e.onmouseout = e.onclick = function() {}, e.className += " disabled");
|
||
}
|
||
function p(e) {
|
||
return "string" == typeof e && (e = r[e]), function() {
|
||
e.apply(r, arguments);
|
||
};
|
||
}
|
||
function g() {
|
||
var n = t.buttonBar, i = document.createElement("ul");
|
||
i.id = "wmd-button-row" + e, i.className = "wmd-button-row", i = n.appendChild(i);
|
||
var o = 0, r = function(t, n, r, s) {
|
||
var a = document.createElement("li");
|
||
a.className = "wmd-button", a.style.left = o + "px", o += 25;
|
||
var l = document.createElement("span");
|
||
return a.id = t + e, a.appendChild(l), a.title = n, a.XShift = r, s && (a.textOp = s),
|
||
h(a, !0), i.appendChild(a), a;
|
||
}, l = function(t) {
|
||
var n = document.createElement("li");
|
||
n.className = "wmd-spacer wmd-spacer" + t, n.id = "wmd-spacer" + t + e, i.appendChild(n),
|
||
o += 25;
|
||
};
|
||
if (y.bold = r("wmd-bold-button", v("bold"), "0px", p("doBold")), y.italic = r("wmd-italic-button", v("italic"), "-20px", p("doItalic")),
|
||
l(1), y.link = r("wmd-link-button", v("link"), "-40px", p(function(e, t) {
|
||
return this.doLinkOrImage(e, t, !1);
|
||
})), y.quote = r("wmd-quote-button", v("quote"), "-60px", p("doBlockquote")), y.code = r("wmd-code-button", v("code"), "-80px", p("doCode")),
|
||
y.image = r("wmd-image-button", v("image"), "-100px", p(function(e, t) {
|
||
return this.doLinkOrImage(e, t, !0);
|
||
})), l(2), y.olist = r("wmd-olist-button", v("olist"), "-120px", p(function(e, t) {
|
||
this.doList(e, t, !0);
|
||
})), y.ulist = r("wmd-ulist-button", v("ulist"), "-140px", p(function(e, t) {
|
||
this.doList(e, t, !1);
|
||
})), y.heading = r("wmd-heading-button", v("heading"), "-160px", p("doHeading")),
|
||
y.hr = r("wmd-hr-button", v("hr"), "-180px", p("doHorizontalRule")), l(3), y.undo = r("wmd-undo-button", v("undo"), "-200px", null),
|
||
y.undo.execute = function() {
|
||
b.session.getUndoManager().undo();
|
||
}, y.redo = r("wmd-redo-button", v("redo"), "-220px", null), y.redo.execute = function() {
|
||
b.session.getUndoManager().redo();
|
||
}, s) {
|
||
var c = document.createElement("li"), u = document.createElement("span");
|
||
c.appendChild(u), c.className = "wmd-button wmd-help-button", c.id = "wmd-help-button" + e,
|
||
c.XShift = "-240px", c.isHelp = !0, c.style.right = "0px", c.title = a("help"),
|
||
c.onclick = s.handler, h(c, !0), i.appendChild(c), y.help = c;
|
||
}
|
||
w.setUndoRedoButtonStates(), b.session.on("change", function() {
|
||
w.setUndoRedoButtonStates();
|
||
});
|
||
}
|
||
var v = function(e) {
|
||
return a(e) + " " + l(e);
|
||
}, b = t.input, y = {};
|
||
this.setUndoRedoButtonStates = function() {
|
||
setTimeout(function() {
|
||
h(y.undo, b.session.getUndoManager().hasUndo()), h(y.redo, b.session.getUndoManager().hasRedo());
|
||
}, 50);
|
||
};
|
||
var w = this;
|
||
g();
|
||
var x = "keydown";
|
||
f.isOpera && (x = "keypress"), c([ "bold", "italic", "link", "quote", "code", "image", "olist", "ulist", "heading", "hr" ]),
|
||
this.buttons = y, this.setButtonState = h;
|
||
}
|
||
function r(e, t) {
|
||
this.hooks = e, this.getString = t;
|
||
}
|
||
function s(e) {
|
||
return e.replace(/^\s*(.*?)(?:\s+"(.+)")?\s*$/, function(e, t, n) {
|
||
return t = t.replace(/\?.*$/, function(e) {
|
||
return e.replace(/\+/g, " ");
|
||
}), t = decodeURIComponent(t), t = encodeURI(t).replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29"),
|
||
t = t.replace(/\?.*$/, function(e) {
|
||
return e.replace(/\+/g, "%2b");
|
||
}), n && (n = n.trim ? n.trim() : n.replace(/^\s*/, "").replace(/\s*$/, ""), n = n.replace(/"/g, "quot;").replace(/\(/g, "(").replace(/\)/g, ")").replace(/</g, "<").replace(/>/g, ">")),
|
||
n ? t + ' "' + n + '"' : t;
|
||
});
|
||
}
|
||
var a = {}, l = {}, c = {}, u = window.document, d = window.RegExp, h = window.navigator, p = {
|
||
lineLength: 72
|
||
}, f = {
|
||
isIE: /msie/.test(h.userAgent.toLowerCase()),
|
||
isIE_5or6: /msie 6/.test(h.userAgent.toLowerCase()) || /msie 5/.test(h.userAgent.toLowerCase()),
|
||
isOpera: /opera/.test(h.userAgent.toLowerCase())
|
||
}, g = {
|
||
bold: "Strong <strong>",
|
||
boldexample: "strong text",
|
||
italic: "Emphasis <em>",
|
||
italicexample: "emphasized text",
|
||
link: "Hyperlink <a>",
|
||
linkdescription: "enter link description here",
|
||
linkdialog: '<p><b>Insert Hyperlink</b></p><p>http://example.com/ "optional title"</p>',
|
||
quote: "Blockquote <blockquote>",
|
||
quoteexample: "Blockquote",
|
||
code: "Code Sample <pre><code>",
|
||
codeexample: "enter code here",
|
||
image: "Image <img>",
|
||
imagedescription: "enter image description here",
|
||
imagedialog: "<p><b>Insert Image</b></p><p>http://example.com/images/diagram.jpg \"optional title\"<br><br>Need <a href='http://www.google.com/search?q=free+image+hosting' target='_blank'>free image hosting?</a></p>",
|
||
olist: "Numbered List <ol>",
|
||
ulist: "Bulleted List <ul>",
|
||
litem: "List item",
|
||
heading: "Heading <h1>/<h2>",
|
||
headingexample: "Heading",
|
||
hr: "Horizontal Rule <hr>",
|
||
undo: "Undo -",
|
||
redo: "Redo -",
|
||
help: "Markdown Editing Help"
|
||
}, m = {
|
||
bold: {
|
||
win: "Ctrl-B",
|
||
mac: "Command-B|Ctrl-B"
|
||
},
|
||
italic: {
|
||
win: "Ctrl-I",
|
||
mac: "Command-I|Ctrl-I"
|
||
},
|
||
link: {
|
||
win: "Ctrl-L",
|
||
mac: "Command-L|Ctrl-L"
|
||
},
|
||
quote: {
|
||
win: "Ctrl-Q",
|
||
mac: "Command-Q|Ctrl-Q"
|
||
},
|
||
code: {
|
||
win: "Ctrl-K",
|
||
mac: "Command-K|Ctrl-K"
|
||
},
|
||
image: {
|
||
win: "Ctrl-G",
|
||
mac: "Command-G|Ctrl-G"
|
||
},
|
||
olist: {
|
||
win: "Ctrl-O",
|
||
mac: "Command-O|Ctrl-O"
|
||
},
|
||
ulist: {
|
||
win: "Ctrl-U",
|
||
mac: "Command-U|Ctrl-U"
|
||
},
|
||
heading: {
|
||
win: "Ctrl-H",
|
||
mac: "Command-H|Ctrl-H"
|
||
},
|
||
hr: {
|
||
win: "Ctrl-R",
|
||
mac: "Command-R|Ctrl-R"
|
||
},
|
||
undo: {
|
||
win: "Ctrl-Z",
|
||
mac: "Command-Z"
|
||
},
|
||
redo: {
|
||
win: "Ctrl-Y|Ctrl-Shift-Z",
|
||
mac: "Command-Y|Command-Shift-Z"
|
||
}
|
||
}, v = "http://", b = "http://";
|
||
Markdown.Editor = function(e, n, s) {
|
||
if (s = s || {}, "function" == typeof s.handler && (s = {
|
||
helpButton: s
|
||
}), s.strings = s.strings || {}, s.helpButton && (s.strings.help = s.strings.help || s.helpButton.title),
|
||
s.keyStrokes) for (var a in s.keyStrokes) m[a] = s.keyStrokes[a];
|
||
var l = function(e) {
|
||
return s.strings[e] || g[e];
|
||
};
|
||
n = n || "";
|
||
var c = this.hooks = new Markdown.HookCollection();
|
||
c.addNoop("onPreviewRefresh"), c.addNoop("postBlockquoteCreation"), c.addFalse("insertImageDialog"),
|
||
c.addFalse("insertLinkDialog"), this.getConverter = function() {
|
||
return e;
|
||
};
|
||
var u, d, h = this;
|
||
this.run = function(a, p) {
|
||
if (!u) {
|
||
u = new t(n, a);
|
||
var f, g = new r(c, l), v = new i(e, u, function() {
|
||
c.onPreviewRefresh();
|
||
}, p), b = "undefined" != typeof require ? require("ace/lib/useragent") : ace.require("ace/lib/useragent"), y = function(e) {
|
||
var t = m[e][b.isMac ? "mac" : "win"], n = t.indexOf("|");
|
||
return t.substring(0, n > 0 ? n : t.length);
|
||
};
|
||
f = new o(n, u, d, v, g, s.helpButton, l, y), f.setUndoRedoButtonStates();
|
||
var w = h.refreshPreview = function() {
|
||
v.refresh(!0);
|
||
};
|
||
w(), h.uiManager = f;
|
||
}
|
||
};
|
||
}, e.prototype.findTags = function(e, t) {
|
||
var n, i = this;
|
||
e && (n = a.extendRegExp(e, "", "$"), this.before = this.before.replace(n, function(e) {
|
||
return i.startTag = i.startTag + e, "";
|
||
}), n = a.extendRegExp(e, "^", ""), this.selection = this.selection.replace(n, function(e) {
|
||
return i.startTag = i.startTag + e, "";
|
||
})), t && (n = a.extendRegExp(t, "", "$"), this.selection = this.selection.replace(n, function(e) {
|
||
return i.endTag = e + i.endTag, "";
|
||
}), n = a.extendRegExp(t, "^", ""), this.after = this.after.replace(n, function(e) {
|
||
return i.endTag = e + i.endTag, "";
|
||
}));
|
||
}, e.prototype.trimWhitespace = function(e) {
|
||
var t, n, i = this;
|
||
e ? t = n = "" : (t = function(e) {
|
||
return i.before += e, "";
|
||
}, n = function(e) {
|
||
return i.after = e + i.after, "";
|
||
}), this.selection = this.selection.replace(/^(\s*)/, t).replace(/(\s*)$/, n);
|
||
}, e.prototype.skipLines = function(e, t, n) {
|
||
void 0 === e && (e = 1), void 0 === t && (t = 1), e++, t++;
|
||
var i, o;
|
||
if (navigator.userAgent.match(/Chrome/) && "X".match(/()./), this.selection = this.selection.replace(/(^\n*)/, ""),
|
||
this.startTag = this.startTag + d.$1, this.selection = this.selection.replace(/(\n*$)/, ""),
|
||
this.endTag = this.endTag + d.$1, this.startTag = this.startTag.replace(/(^\n*)/, ""),
|
||
this.before = this.before + d.$1, this.endTag = this.endTag.replace(/(\n*$)/, ""),
|
||
this.after = this.after + d.$1, this.before) {
|
||
for (i = o = ""; e--; ) i += "\\n?", o += "\n";
|
||
n && (i = "\\n*"), this.before = this.before.replace(new d(i + "$", ""), o);
|
||
}
|
||
if (this.after) {
|
||
for (i = o = ""; t--; ) i += "\\n?", o += "\n";
|
||
n && (i = "\\n*"), this.after = this.after.replace(new d(i, ""), o);
|
||
}
|
||
}, a.isVisible = function(e) {
|
||
return window.getComputedStyle ? "none" !== window.getComputedStyle(e, null).getPropertyValue("display") : e.currentStyle ? "none" !== e.currentStyle.display : void 0;
|
||
}, a.addEvent = function(e, t, n) {
|
||
e.attachEvent ? e.attachEvent("on" + t, n) : e.addEventListener(t, n, !1);
|
||
}, a.removeEvent = function(e, t, n) {
|
||
e.detachEvent ? e.detachEvent("on" + t, n) : e.removeEventListener(t, n, !1);
|
||
}, a.fixEolChars = function(e) {
|
||
return e = e.replace(/\r\n/g, "\n"), e = e.replace(/\r/g, "\n");
|
||
}, a.extendRegExp = function(e, t, n) {
|
||
(null === t || void 0 === t) && (t = ""), (null === n || void 0 === n) && (n = "");
|
||
var i, o = e.toString();
|
||
return o = o.replace(/\/([gim]*)$/, function(e, t) {
|
||
return i = t, "";
|
||
}), o = o.replace(/(^\/|\/$)/g, ""), o = t + o + n, new d(o, i);
|
||
}, l.getTop = function(e, t) {
|
||
var n = e.offsetTop;
|
||
if (!t) for (;e = e.offsetParent; ) n += e.offsetTop;
|
||
return n;
|
||
}, l.getHeight = function(e) {
|
||
return e.offsetHeight || e.scrollHeight;
|
||
}, l.getWidth = function(e) {
|
||
return e.offsetWidth || e.scrollWidth;
|
||
}, l.getPageSize = function() {
|
||
var e, t, n, i;
|
||
self.innerHeight && self.scrollMaxY ? (e = u.body.scrollWidth, t = self.innerHeight + self.scrollMaxY) : u.body.scrollHeight > u.body.offsetHeight ? (e = u.body.scrollWidth,
|
||
t = u.body.scrollHeight) : (e = u.body.offsetWidth, t = u.body.offsetHeight), self.innerHeight ? (n = self.innerWidth,
|
||
i = self.innerHeight) : u.documentElement && u.documentElement.clientHeight ? (n = u.documentElement.clientWidth,
|
||
i = u.documentElement.clientHeight) : u.body && (n = u.body.clientWidth, i = u.body.clientHeight);
|
||
var o = Math.max(e, n), r = Math.max(t, i);
|
||
return [ o, r, n, i ];
|
||
}, c.createBackground = function() {
|
||
var e = u.createElement("div"), t = e.style;
|
||
e.className = "wmd-prompt-background", t.position = "absolute", t.top = "0", t.zIndex = "1000",
|
||
f.isIE ? t.filter = "alpha(opacity=50)" : t.opacity = "0.5";
|
||
var n = l.getPageSize();
|
||
return t.height = n[1] + "px", f.isIE ? (t.left = u.documentElement.scrollLeft,
|
||
t.width = u.documentElement.clientWidth) : (t.left = "0", t.width = "100%"), u.body.appendChild(e),
|
||
e;
|
||
}, c.prompt = function(e, t, n) {
|
||
var i, o;
|
||
void 0 === t && (t = "");
|
||
var r = function(e) {
|
||
var t = e.charCode || e.keyCode;
|
||
27 === t && s(!0);
|
||
}, s = function(e) {
|
||
a.removeEvent(u.body, "keydown", r);
|
||
var t = o.value;
|
||
return e ? t = null : (t = t.replace(/^http:\/\/(https?|ftp):\/\//, "$1://"), /^(?:https?|ftp):\/\//.test(t) || (t = "http://" + t)),
|
||
i.parentNode.removeChild(i), n(t), !1;
|
||
}, c = function() {
|
||
i = u.createElement("div"), i.className = "wmd-prompt-dialog", i.style.padding = "10px;",
|
||
i.style.position = "fixed", i.style.width = "400px", i.style.zIndex = "1001";
|
||
var n = u.createElement("div");
|
||
n.innerHTML = e, n.style.padding = "5px", i.appendChild(n);
|
||
var c = u.createElement("form"), d = c.style;
|
||
c.onsubmit = function() {
|
||
return s(!1);
|
||
}, d.padding = "0", d.margin = "0", d.cssFloat = "left", d.width = "100%", d.textAlign = "center",
|
||
d.position = "relative", i.appendChild(c), o = u.createElement("input"), o.type = "text",
|
||
o.value = t, d = o.style, d.display = "block", d.width = "80%", d.marginLeft = d.marginRight = "auto",
|
||
c.appendChild(o);
|
||
var h = u.createElement("input");
|
||
h.type = "button", h.onclick = function() {
|
||
return s(!1);
|
||
}, h.value = "OK", d = h.style, d.margin = "10px", d.display = "inline", d.width = "7em";
|
||
var p = u.createElement("input");
|
||
p.type = "button", p.onclick = function() {
|
||
return s(!0);
|
||
}, p.value = "Cancel", d = p.style, d.margin = "10px", d.display = "inline", d.width = "7em",
|
||
c.appendChild(h), c.appendChild(p), a.addEvent(u.body, "keydown", r), i.style.top = "50%",
|
||
i.style.left = "50%", i.style.display = "block", f.isIE_5or6 && (i.style.position = "absolute",
|
||
i.style.top = u.documentElement.scrollTop + 200 + "px", i.style.left = "50%"), u.body.appendChild(i),
|
||
i.style.marginTop = -(l.getHeight(i) / 2) + "px", i.style.marginLeft = -(l.getWidth(i) / 2) + "px";
|
||
};
|
||
setTimeout(function() {
|
||
c();
|
||
var e = t.length;
|
||
if (void 0 !== o.selectionStart) o.selectionStart = 0, o.selectionEnd = e; else if (o.createTextRange) {
|
||
var n = o.createTextRange();
|
||
n.collapse(!1), n.moveStart("character", -e), n.moveEnd("character", e), n.select();
|
||
}
|
||
o.focus();
|
||
}, 0);
|
||
};
|
||
var y = r.prototype;
|
||
y.prefixes = "(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)",
|
||
y.unwrap = function(e) {
|
||
var t = new d("([^\\n])\\n(?!(\\n|" + this.prefixes + "))", "g");
|
||
e.selection = e.selection.replace(t, "$1 $2");
|
||
}, y.wrap = function(e, t) {
|
||
this.unwrap(e);
|
||
var n = new d("(.{1," + t + "})( +|$\\n?)", "gm"), i = this;
|
||
e.selection = e.selection.replace(n, function(e, t) {
|
||
return new d("^" + i.prefixes, "").test(e) ? e : t + "\n";
|
||
}), e.selection = e.selection.replace(/\s+$/, "");
|
||
}, y.doBold = function(e, t) {
|
||
return this.doBorI(e, t, 2, this.getString("boldexample"));
|
||
}, y.doItalic = function(e, t) {
|
||
return this.doBorI(e, t, 1, this.getString("italicexample"));
|
||
}, y.doBorI = function(e, t, n, i) {
|
||
e.trimWhitespace(), e.selection = e.selection.replace(/\n{2,}/g, "\n");
|
||
var o = /(\**$)/.exec(e.before)[0], r = /(^\**)/.exec(e.after)[0], s = Math.min(o.length, r.length);
|
||
if (s >= n && (2 != s || 1 != n)) e.before = e.before.replace(d("[*]{" + n + "}$", ""), ""),
|
||
e.after = e.after.replace(d("^[*]{" + n + "}", ""), ""); else if (!e.selection && r) {
|
||
e.after = e.after.replace(/^([*_]*)/, ""), e.before = e.before.replace(/(\s?)$/, "");
|
||
var a = d.$1;
|
||
e.before = e.before + r + a;
|
||
} else {
|
||
e.selection || r || (e.selection = i);
|
||
var l = 1 >= n ? "*" : "**";
|
||
e.before = e.before + l, e.after = l + e.after;
|
||
}
|
||
}, y.stripLinkDefs = function(e, t) {
|
||
return e = e.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm, function(e, n, i, o, r) {
|
||
return t[n] = e.replace(/\s*$/, ""), o ? (t[n] = e.replace(/["(](.+?)[")]$/, ""),
|
||
o + r) : "";
|
||
});
|
||
}, y.addLinkDef = function(e, t) {
|
||
var n = 0, i = {};
|
||
e.before = this.stripLinkDefs(e.before, i), e.selection = this.stripLinkDefs(e.selection, i),
|
||
e.after = this.stripLinkDefs(e.after, i);
|
||
var o = "", r = /(\[)((?:\[[^\]]*\]|[^\[\]])*)(\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g, s = function(e) {
|
||
n++, e = e.replace(/^[ ]{0,3}\[(\d+)\]:/, " [" + n + "]:"), o += "\n" + e;
|
||
}, a = function(e, t, o, l, c, u) {
|
||
return o = o.replace(r, a), i[c] ? (s(i[c]), t + o + l + n + u) : e;
|
||
};
|
||
e.before = e.before.replace(r, a), t ? s(t) : e.selection = e.selection.replace(r, a);
|
||
var l = n;
|
||
return e.after = e.after.replace(r, a), e.after && (e.after = e.after.replace(/\n*$/, "")),
|
||
e.after || (e.selection = e.selection.replace(/\n*$/, "")), e.after += "\n\n" + o,
|
||
l;
|
||
}, y.doLinkOrImage = function(e, t, n) {
|
||
e.trimWhitespace(), e.findTags(/\s*!?\[/, /\][ ]?(?:\n[ ]*)?(\[.*?\])?/);
|
||
var i;
|
||
if (!(e.endTag.length > 1 && e.startTag.length > 0)) {
|
||
if (e.selection = e.startTag + e.selection + e.endTag, e.startTag = e.endTag = "",
|
||
/\n\n/.test(e.selection)) return this.addLinkDef(e, null), void 0;
|
||
var o = this, r = function(r) {
|
||
if (i.parentNode.removeChild(i), null !== r) {
|
||
e.selection = (" " + e.selection).replace(/([^\\](?:\\\\)*)(?=[[\]])/g, "$1\\").substr(1);
|
||
var a = " [999]: " + s(r), l = o.addLinkDef(e, a);
|
||
e.startTag = n ? "![" : "[", e.endTag = "][" + l + "]", e.selection || (e.selection = n ? o.getString("imagedescription") : o.getString("linkdescription"));
|
||
}
|
||
t();
|
||
};
|
||
return i = c.createBackground(), n ? this.hooks.insertImageDialog(r) || c.prompt(this.getString("imagedialog"), v, r) : this.hooks.insertLinkDialog(r) || c.prompt(this.getString("linkdialog"), b, r),
|
||
!0;
|
||
}
|
||
e.startTag = e.startTag.replace(/!?\[/, ""), e.endTag = "", this.addLinkDef(e, null);
|
||
}, y.doAutoindent = function(e) {
|
||
var t = this, n = !1;
|
||
e.before = e.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/, "\n\n"), e.before = e.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/, "\n\n"),
|
||
e.before = e.before.replace(/(\n|^)[ \t]+\n$/, "\n\n"), e.selection || /^[ \t]*(?:\n|$)/.test(e.after) || (e.after = e.after.replace(/^[^\n]*/, function(t) {
|
||
return e.selection = t, "";
|
||
}), n = !0), /(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(e.before) && t.doList && t.doList(e),
|
||
/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(e.before) && t.doBlockquote && t.doBlockquote(e),
|
||
/(\n|^)(\t|[ ]{4,}).*\n$/.test(e.before) && t.doCode && t.doCode(e), n && (e.after = e.selection + e.after,
|
||
e.selection = "");
|
||
}, y.doBlockquote = function(e) {
|
||
e.selection = e.selection.replace(/^(\n*)([^\r]+?)(\n*)$/, function(t, n, i, o) {
|
||
return e.before += n, e.after = o + e.after, i;
|
||
}), e.before = e.before.replace(/(>[ \t]*)$/, function(t, n) {
|
||
return e.selection = n + e.selection, "";
|
||
}), e.selection = e.selection.replace(/^(\s|>)+$/, ""), e.selection = e.selection || this.getString("quoteexample");
|
||
var t, n = "", i = "";
|
||
if (e.before) {
|
||
for (var o = e.before.replace(/\n$/, "").split("\n"), r = !1, s = 0; s < o.length; s++) {
|
||
var a = !1;
|
||
t = o[s], r = r && t.length > 0, /^>/.test(t) ? (a = !0, !r && t.length > 1 && (r = !0)) : a = /^[ \t]*$/.test(t) ? !0 : r,
|
||
a ? n += t + "\n" : (i += n + t, n = "\n");
|
||
}
|
||
/(^|\n)>/.test(n) || (i += n, n = "");
|
||
}
|
||
e.startTag = n, e.before = i;
|
||
var l = function(t) {
|
||
var n = t ? "> " : "";
|
||
e.startTag && (e.startTag = e.startTag.replace(/\n((>|\s)*)\n$/, function(e, t) {
|
||
return "\n" + t.replace(/^[ ]{0,3}>?[ \t]*$/gm, n) + "\n";
|
||
})), e.endTag && (e.endTag = e.endTag.replace(/^\n((>|\s)*)\n/, function(e, t) {
|
||
return "\n" + t.replace(/^[ ]{0,3}>?[ \t]*$/gm, n) + "\n";
|
||
}));
|
||
};
|
||
/^(?![ ]{0,3}>)/m.test(e.selection) ? (this.wrap(e, p.lineLength - 2), e.selection = e.selection.replace(/^/gm, "> "),
|
||
l(!0), e.skipLines()) : (e.selection = e.selection.replace(/^[ ]{0,3}> ?/gm, ""),
|
||
this.unwrap(e), l(!1), !/^(\n|^)[ ]{0,3}>/.test(e.selection) && e.startTag && (e.startTag = e.startTag.replace(/\n{0,2}$/, "\n\n")),
|
||
!/(\n|^)[ ]{0,3}>.*$/.test(e.selection) && e.endTag && (e.endTag = e.endTag.replace(/^\n{0,2}/, "\n\n"))),
|
||
e.selection = this.hooks.postBlockquoteCreation(e.selection), /\n/.test(e.selection) || (e.selection = e.selection.replace(/^(> *)/, function(t, n) {
|
||
return e.startTag += n, "";
|
||
}));
|
||
}, y.doCode = function(e) {
|
||
var t = /\S[ ]*$/.test(e.before), n = /^[ ]*\S/.test(e.after);
|
||
if (!n && !t || /\n/.test(e.selection)) {
|
||
e.before = e.before.replace(/[ ]{4}$/, function(t) {
|
||
return e.selection = t + e.selection, "";
|
||
});
|
||
var i = 1, o = 1;
|
||
/(\n|^)(\t|[ ]{4,}).*\n$/.test(e.before) && (i = 0), /^\n(\t|[ ]{4,})/.test(e.after) && (o = 0),
|
||
e.skipLines(i, o), e.selection ? /^[ ]{0,3}\S/m.test(e.selection) ? /\n/.test(e.selection) ? e.selection = e.selection.replace(/^/gm, " ") : e.before += " " : e.selection = e.selection.replace(/^(?:[ ]{4}|[ ]{0,3}\t)/gm, "") : (e.startTag = " ",
|
||
e.selection = this.getString("codeexample"));
|
||
} else e.trimWhitespace(), e.findTags(/`/, /`/), e.startTag || e.endTag ? e.endTag && !e.startTag ? (e.before += e.endTag,
|
||
e.endTag = "") : e.startTag = e.endTag = "" : (e.startTag = e.endTag = "`", e.selection || (e.selection = this.getString("codeexample")));
|
||
}, y.doList = function(e, t, n) {
|
||
var i = /(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/, o = /^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/, r = "-", s = 1, a = function() {
|
||
var e;
|
||
return n ? (e = " " + s + ". ", s++) : e = " " + r + " ", e;
|
||
}, l = function(e) {
|
||
return void 0 === n && (n = /^\s*\d/.test(e)), e = e.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm, function() {
|
||
return a();
|
||
});
|
||
};
|
||
if (e.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/, null), !e.before || /\n$/.test(e.before) || /^\n/.test(e.startTag) || (e.before += e.startTag,
|
||
e.startTag = ""), e.startTag) {
|
||
var c = /\d+[.]/.test(e.startTag);
|
||
if (e.startTag = "", e.selection = e.selection.replace(/\n[ ]{4}/g, "\n"), this.unwrap(e),
|
||
e.skipLines(), c && (e.after = e.after.replace(o, l)), n == c) return;
|
||
}
|
||
var u = 1;
|
||
e.before = e.before.replace(i, function(e) {
|
||
return /^\s*([*+-])/.test(e) && (r = d.$1), u = /[^\n]\n\n[^\n]/.test(e) ? 1 : 0,
|
||
l(e);
|
||
}), e.selection || (e.selection = this.getString("litem"));
|
||
var h = a(), f = 1;
|
||
e.after = e.after.replace(o, function(e) {
|
||
return f = /[^\n]\n\n[^\n]/.test(e) ? 1 : 0, l(e);
|
||
}), e.trimWhitespace(!0), e.skipLines(u, f, !0), e.startTag = h;
|
||
var g = h.replace(/./g, " ");
|
||
this.wrap(e, p.lineLength - g.length), e.selection = e.selection.replace(/\n/g, "\n" + g);
|
||
}, y.doHeading = function(e) {
|
||
if (e.selection = e.selection.replace(/\s+/g, " "), e.selection = e.selection.replace(/(^\s+|\s+$)/g, ""),
|
||
!e.selection) return e.startTag = "## ", e.selection = this.getString("headingexample"),
|
||
e.endTag = " ##", void 0;
|
||
var t = 0;
|
||
e.findTags(/#+[ ]*/, /[ ]*#+/), /#+/.test(e.startTag) && (t = d.lastMatch.length),
|
||
e.startTag = e.endTag = "", e.findTags(null, /\s?(-+|=+)/), /=+/.test(e.endTag) && (t = 1),
|
||
/-+/.test(e.endTag) && (t = 2), e.startTag = e.endTag = "", e.skipLines(1, 1);
|
||
var n = 0 == t ? 2 : t - 1;
|
||
if (n > 0) {
|
||
var i = n >= 2 ? "-" : "=", o = e.selection.length;
|
||
for (o > p.lineLength && (o = p.lineLength), e.endTag = "\n"; o--; ) e.endTag += i;
|
||
}
|
||
}, y.doHorizontalRule = function(e) {
|
||
e.startTag = "----------\n", e.selection = "", e.skipLines(2, 1, !0);
|
||
};
|
||
}(), define("pagedown-ace", function() {}), function() {
|
||
function e(e) {
|
||
return e.replace(/^\s+|\s+$/g, "");
|
||
}
|
||
function t(e) {
|
||
return e.replace(/\s+$/g, "");
|
||
}
|
||
function n(e) {
|
||
return e.replace(new RegExp("^(\\t|[ ]{1,4})", "gm"), "");
|
||
}
|
||
function i(e, t) {
|
||
return -1 != e.indexOf(t);
|
||
}
|
||
function o(e, t) {
|
||
return e.replace(/<[^>]*>?/gi, function(e) {
|
||
return e.match(t) ? e : "";
|
||
});
|
||
}
|
||
function r(e, t) {
|
||
for (var n = {}, i = 0; i < e.length; i++) n[e[i]] = e[i];
|
||
for (i = 0; i < t.length; i++) n[t[i]] = t[i];
|
||
var o = [];
|
||
for (var r in n) n.hasOwnProperty(r) && o.push(n[r]);
|
||
return o;
|
||
}
|
||
function s(e) {
|
||
return "" != e.charAt(0) && (e = "" + e), "" != e.charAt(e.length - 1) && (e += ""),
|
||
e;
|
||
}
|
||
function a(e) {
|
||
return "" == e.charAt(0) && (e = e.substr(1)), "" == e.charAt(e.length - 1) && (e = e.substr(0, e.length - 1)),
|
||
e;
|
||
}
|
||
function l(e, t) {
|
||
return o(c(e, t), g);
|
||
}
|
||
function c(e, t) {
|
||
var n = t.blockGamutHookCallback(e);
|
||
return n = h(n), n = n.replace(/~D/g, "$$").replace(/~T/g, "~"), n = t.previousPostConversion(n);
|
||
}
|
||
function u(e) {
|
||
return e.replace(/\\\|/g, "~I").replace(/\\:/g, "~i");
|
||
}
|
||
function d(e) {
|
||
return e.replace(/~I/g, "|").replace(/~i/g, ":");
|
||
}
|
||
function h(e) {
|
||
return e = e.replace(/~E(\d+)E/g, function(e, t) {
|
||
var n = parseInt(t);
|
||
return String.fromCharCode(n);
|
||
});
|
||
}
|
||
function p(e) {
|
||
return e.toLowerCase().replace(/\s+/g, "-").replace(/[^\w\-]+/g, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
|
||
}
|
||
function f(e, t) {
|
||
var n = t;
|
||
return n = n.replace(/&\#8220;/g, '"'), n = n.replace(/&\#8221;/g, '"'), n = n.replace(/&\#8216;/g, "'"),
|
||
n = n.replace(/&\#8217;/g, "'"), n = n.replace(/&\#8212;/g, "---"), n = n.replace(/&\#8211;/g, "--"),
|
||
n = n.replace(/&\#8230;/g, "...");
|
||
}
|
||
var g = new RegExp([ "^(<\\/?(a|abbr|acronym|applet|area|b|basefont|", "bdo|big|button|cite|code|del|dfn|em|figcaption|", "font|i|iframe|img|input|ins|kbd|label|map|", "mark|meter|object|param|progress|q|ruby|rp|rt|s|", "samp|script|select|small|span|strike|strong|", "sub|sup|textarea|time|tt|u|var|wbr)[^>]*>|", "<(br)\\s?\\/?>)$" ].join(""), "i");
|
||
Array.indexOf || (Array.prototype.indexOf = function(e) {
|
||
for (var t = 0; t < this.length; t++) if (this[t] == e) return t;
|
||
return -1;
|
||
}), Markdown.Extra = function() {
|
||
this.converter = null, this.hashBlocks = [], this.footnotes = {}, this.usedFootnotes = [],
|
||
this.attributeBlocks = !1, this.googleCodePrettify = !1, this.highlightJs = !1,
|
||
this.tableClass = "", this.tabWidth = 4;
|
||
}, Markdown.Extra.init = function(e, t) {
|
||
var n = new Markdown.Extra(), o = [], r = [], s = [], a = [ "unHashExtraBlocks" ];
|
||
return t = t || {}, t.extensions = t.extensions || [ "all" ], i(t.extensions, "all") && (t.extensions = [ "tables", "fenced_code_gfm", "def_list", "attr_list", "footnotes", "smartypants", "strikethrough", "newlines" ]),
|
||
r.push("wrapHeaders"), i(t.extensions, "attr_list") && (o.push("hashFcbAttributeBlocks"),
|
||
r.push("hashHeaderAttributeBlocks"), a.push("applyAttributeBlocks"), n.attributeBlocks = !0),
|
||
i(t.extensions, "fenced_code_gfm") && (r.push("fencedCodeBlocks"), o.push("fencedCodeBlocks")),
|
||
i(t.extensions, "tables") && r.push("tables"), i(t.extensions, "def_list") && r.push("definitionLists"),
|
||
i(t.extensions, "footnotes") && (o.push("stripFootnoteDefinitions"), r.push("doFootnotes"),
|
||
a.push("printFootnotes")), i(t.extensions, "smartypants") && a.push("runSmartyPants"),
|
||
i(t.extensions, "strikethrough") && s.push("strikethrough"), i(t.extensions, "newlines") && s.push("newlines"),
|
||
e.hooks.chain("postNormalization", function(e) {
|
||
return n.doTransform(o, e) + "\n";
|
||
}), e.hooks.chain("preBlockGamut", function(e, t) {
|
||
return n.blockGamutHookCallback = t, e = u(e), e = n.doTransform(r, e) + "\n", e = d(e);
|
||
}), e.hooks.chain("postSpanGamut", function(e) {
|
||
return n.doTransform(s, e);
|
||
}), n.previousPostConversion = e.hooks.postConversion, e.hooks.chain("postConversion", function(e) {
|
||
return e = n.doTransform(a, e), n.hashBlocks = [], n.footnotes = {}, n.usedFootnotes = [],
|
||
e;
|
||
}), "highlighter" in t && (n.googleCodePrettify = "prettify" === t.highlighter,
|
||
n.highlightJs = "highlight" === t.highlighter), "table_class" in t && (n.tableClass = t.table_class),
|
||
n.converter = e, n;
|
||
}, Markdown.Extra.prototype.doTransform = function(e, t) {
|
||
for (var n = 0; n < e.length; n++) t = this[e[n]](t);
|
||
return t;
|
||
}, Markdown.Extra.prototype.hashExtraBlock = function(e) {
|
||
return "\n<p>~X" + (this.hashBlocks.push(e) - 1) + "X</p>\n";
|
||
}, Markdown.Extra.prototype.hashExtraInline = function(e) {
|
||
return "~X" + (this.hashBlocks.push(e) - 1) + "X";
|
||
}, Markdown.Extra.prototype.unHashExtraBlocks = function(e) {
|
||
function t() {
|
||
var i = !1;
|
||
e = e.replace(/(?:<p>)?~X(\d+)X(?:<\/p>)?/g, function(e, t) {
|
||
i = !0;
|
||
var o = parseInt(t, 10);
|
||
return n.hashBlocks[o];
|
||
}), i === !0 && t();
|
||
}
|
||
var n = this;
|
||
return t(), e;
|
||
}, Markdown.Extra.prototype.wrapHeaders = function(e) {
|
||
function t(e) {
|
||
return "\n" + e + "\n";
|
||
}
|
||
return e = e.replace(/^.+[ \t]*\n=+[ \t]*\n+/gm, t), e = e.replace(/^.+[ \t]*\n-+[ \t]*\n+/gm, t),
|
||
e = e.replace(/^\#{1,6}[ \t]*.+?[ \t]*\#*\n+/gm, t);
|
||
};
|
||
var m = "\\{[ \\t]*((?:[#.][-_:a-zA-Z0-9]+[ \\t]*)+)\\}", v = new RegExp("^(#{1,6}.*#{0,6})[ \\t]+" + m + "[ \\t]*(?:\\n|0x03)", "gm"), b = new RegExp("^(.*)[ \\t]+" + m + "[ \\t]*\\n" + "(?=[\\-|=]+\\s*(?:\\n|0x03))", "gm"), y = new RegExp("^(```[^{\\n]*)[ \\t]+" + m + "[ \\t]*\\n" + "(?=([\\s\\S]*?)\\n```\\s*(\\n|0x03))", "gm");
|
||
Markdown.Extra.prototype.hashHeaderAttributeBlocks = function(e) {
|
||
function t(e, t, i) {
|
||
return "<p>~XX" + (n.hashBlocks.push(i) - 1) + "XX</p>\n" + t + "\n";
|
||
}
|
||
var n = this;
|
||
return e = e.replace(v, t), e = e.replace(b, t);
|
||
}, Markdown.Extra.prototype.hashFcbAttributeBlocks = function(e) {
|
||
function t(e, t, i) {
|
||
return "<p>~XX" + (n.hashBlocks.push(i) - 1) + "XX</p>\n" + t + "\n";
|
||
}
|
||
var n = this;
|
||
return e.replace(y, t);
|
||
}, Markdown.Extra.prototype.applyAttributeBlocks = function(e) {
|
||
var t = this, n = new RegExp('<p>~XX(\\d+)XX</p>[\\s]*(?:<(h[1-6]|pre)(?: +class="(\\S+)")?(>[\\s\\S]*?</\\2>))', "gm");
|
||
return e = e.replace(n, function(e, n, i, o, s) {
|
||
if (!i) return "";
|
||
for (var a = parseInt(n, 10), l = t.hashBlocks[a], c = l.match(/#[^\s#.]+/g) || [], u = c[0] ? ' id="' + c[0].substr(1, c[0].length - 1) + '"' : "", d = l.match(/\.[^\s#.]+/g) || [], h = 0; h < d.length; h++) d[h] = d[h].substr(1, d[h].length - 1);
|
||
var p = "";
|
||
return o && (d = r(d, [ o ])), d.length > 0 && (p = ' class="' + d.join(" ") + '"'),
|
||
"<" + i + u + p + s;
|
||
});
|
||
}, Markdown.Extra.prototype.tables = function(t) {
|
||
function n(t, n, o, r) {
|
||
n = n.replace(/^ *[|]/m, ""), o = o.replace(/^ *[|]/m, ""), r = r.replace(/^ *[|]/gm, ""),
|
||
n = n.replace(/[|] *$/m, ""), o = o.replace(/[|] *$/m, ""), r = r.replace(/[|] *$/gm, ""),
|
||
alignspecs = o.split(/ *[|] */), align = [];
|
||
for (var s = 0; s < alignspecs.length; s++) {
|
||
var a = alignspecs[s];
|
||
align[s] = a.match(/^ *-+: *$/m) ? ' style="text-align:right;"' : a.match(/^ *:-+: *$/m) ? ' style="text-align:center;"' : a.match(/^ *:-+ *$/m) ? ' style="text-align:left;"' : "";
|
||
}
|
||
var c = n.split(/ *[|] */), u = c.length, d = i.tableClass ? ' class="' + i.tableClass + '"' : "", h = [ "<table", d, ">\n", "<thead>\n", "<tr>\n" ].join("");
|
||
for (s = 0; u > s; s++) {
|
||
var p = l(e(c[s]), i);
|
||
h += [ " <th", align[s], ">", p, "</th>\n" ].join("");
|
||
}
|
||
h += "</tr>\n</thead>\n";
|
||
var f = r.split("\n");
|
||
for (s = 0; s < f.length; s++) if (!f[s].match(/^\s*$/)) {
|
||
for (var g = f[s].split(/ *[|] */), m = u - g.length, v = 0; m > v; v++) g.push("");
|
||
for (h += "<tr>\n", v = 0; u > v; v++) {
|
||
var b = l(e(g[v]), i);
|
||
h += [ " <td", align[v], ">", b, "</td>\n" ].join("");
|
||
}
|
||
h += "</tr>\n";
|
||
}
|
||
return h += "</table>\n", i.hashExtraBlock(h);
|
||
}
|
||
var i = this, o = new RegExp([ "^", "[ ]{0,3}", "[|]", "(.+)\\n", "[ ]{0,3}", "[|]([ ]*[-:]+[-| :]*)\\n", "(", "(?:[ ]*[|].*\\n?)*", ")", "(?:\\n|$)" ].join(""), "gm"), r = new RegExp([ "^", "[ ]{0,3}", "(\\S.*[|].*)\\n", "[ ]{0,3}", "([-:]+[ ]*[|][-| :]*)\\n", "(", "(?:.*[|].*\\n?)*", ")", "(?:\\n|$)" ].join(""), "gm");
|
||
return t = t.replace(o, n), t = t.replace(r, n);
|
||
}, Markdown.Extra.prototype.stripFootnoteDefinitions = function(e) {
|
||
var t = this;
|
||
return e = e.replace(/\n[ ]{0,3}\[\^(.+?)\]\:[ \t]*\n?([\s\S]*?)\n{1,2}((?=\n[ ]{0,3}\S)|$)/g, function(e, n, i) {
|
||
return n = p(n), i += "\n", i = i.replace(/^[ ]{0,3}/g, ""), t.footnotes[n] = i,
|
||
"\n";
|
||
});
|
||
}, Markdown.Extra.prototype.doFootnotes = function(e) {
|
||
var t = this;
|
||
if (t.isConvertingFootnote === !0) return e;
|
||
var n = 0;
|
||
return e = e.replace(/\[\^(.+?)\]/g, function(e, i) {
|
||
var o = p(i), r = t.footnotes[o];
|
||
if (void 0 === r) return e;
|
||
n++, t.usedFootnotes.push(o);
|
||
var s = '<a href="#fn:' + o + '" id="fnref:' + o + '" title="See footnote" class="footnote">' + n + "</a>";
|
||
return t.hashExtraInline(s);
|
||
});
|
||
}, Markdown.Extra.prototype.printFootnotes = function(e) {
|
||
var t = this;
|
||
if (0 === t.usedFootnotes.length) return e;
|
||
e += '\n\n<div class="footnotes">\n<hr>\n<ol>\n\n';
|
||
for (var n = 0; n < t.usedFootnotes.length; n++) {
|
||
var i = t.usedFootnotes[n], o = t.footnotes[i];
|
||
t.isConvertingFootnote = !0;
|
||
var r = l(o, t);
|
||
delete t.isConvertingFootnote, e += '<li id="fn:' + i + '">' + r + ' <a href="#fnref:' + i + '" title="Return to article" class="reversefootnote">↩</a></li>\n\n';
|
||
}
|
||
return e += "</ol>\n</div>";
|
||
}, Markdown.Extra.prototype.fencedCodeBlocks = function(e) {
|
||
function t(e) {
|
||
return e = e.replace(/&/g, "&"), e = e.replace(/</g, "<"), e = e.replace(/>/g, ">"),
|
||
e = e.replace(/~D/g, "$$"), e = e.replace(/~T/g, "~");
|
||
}
|
||
var n = this;
|
||
return e = e.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function(e, i, o) {
|
||
var r = i, s = o, a = n.googleCodePrettify ? ' class="prettyprint"' : "", l = "";
|
||
r && (l = n.googleCodePrettify || n.highlightJs ? ' class="language-' + r + '"' : ' class="' + r + '"');
|
||
var c = [ "<pre", a, "><code", l, ">", t(s), "</code></pre>" ].join("");
|
||
return n.hashExtraBlock(c);
|
||
});
|
||
}, Markdown.Extra.prototype.educatePants = function(e) {
|
||
var t = this, n = "", i = 0;
|
||
e.replace(/(?:<!--[\s\S]*?-->)|(<)([a-zA-Z1-6]+)([^\n]*?>)([\s\S]*?)(<\/\2>)/g, function(o, r, s, a, l, c, u) {
|
||
var d = e.substring(i, u);
|
||
return n += t.applyPants(d), t.smartyPantsLastChar = n.substring(n.length - 1),
|
||
i = u + o.length, r ? (/code|kbd|pre|script|noscript|iframe|math|ins|del|pre/i.test(s) ? t.smartyPantsLastChar = l.substring(l.length - 1) : l = t.educatePants(l),
|
||
n += r + s + a + l + c, void 0) : (n += o, void 0);
|
||
});
|
||
var o = e.substring(i);
|
||
return n += t.applyPants(o), t.smartyPantsLastChar = n.substring(n.length - 1),
|
||
n;
|
||
}, Markdown.Extra.prototype.applyPants = function(e) {
|
||
return e = e.replace(/---/g, "—").replace(/--/g, "–"), e = e.replace(/\.\.\./g, "…").replace(/\.\s\.\s\./g, "…"),
|
||
e = e.replace(/``/g, "“").replace(/''/g, "”"), /^'$/.test(e) ? /\S/.test(this.smartyPantsLastChar) ? "’" : "‘" : /^"$/.test(e) ? /\S/.test(this.smartyPantsLastChar) ? "”" : "“" : (e = e.replace(/^'(?=[!"#\$\%'()*+,\-.\/:;<=>?\@\[\\]\^_`{|}~]\B)/, "’"),
|
||
e = e.replace(/^"(?=[!"#\$\%'()*+,\-.\/:;<=>?\@\[\\]\^_`{|}~]\B)/, "”"), e = e.replace(/"'(?=\w)/g, "“‘"),
|
||
e = e.replace(/'"(?=\w)/g, "‘“"), e = e.replace(/'(?=\d{2}s)/g, "’"),
|
||
e = e.replace(/(\s| |--|&[mn]dash;|&\#8211;|&\#8212;|&\#x201[34];)'(?=\w)/g, "$1‘"),
|
||
e = e.replace(/([^\s\[\{\(\-])'/g, "$1’"), e = e.replace(/'(?=\s|s\b)/g, "’"),
|
||
e = e.replace(/'/g, "‘"), e = e.replace(/(\s| |--|&[mn]dash;|&\#8211;|&\#8212;|&\#x201[34];)"(?=\w)/g, "$1“"),
|
||
e = e.replace(/([^\s\[\{\(\-])"/g, "$1”"), e = e.replace(/"(?=\s)/g, "”"),
|
||
e = e.replace(/"/gi, "“"));
|
||
}, Markdown.Extra.prototype.runSmartyPants = function(e) {
|
||
return this.smartyPantsLastChar = "", e = this.educatePants(e), e = e.replace(/(<([a-zA-Z1-6]+)\b([^\n>]*?)(\/)?>)/g, f);
|
||
}, Markdown.Extra.prototype.definitionLists = function(t) {
|
||
var n = new RegExp([ "(\\x02\\n?|\\n\\n)", "(?:", "(", "(", "[ ]{0,3}", "((?:[ \\t]*\\S.*\\n)+)", "\\n?", "[ ]{0,3}:[ ]+", ")", "([\\s\\S]+?)", "(", "(?=\\0x03)", "|", "(?=", "\\n{2,}", "(?=\\S)", "(?!", "[ ]{0,3}", "(?:\\S.*\\n)+?", "\\n?", "[ ]{0,3}:[ ]+", ")", "(?!", "[ ]{0,3}:[ ]+", ")", ")", ")", ")", ")" ].join(""), "gm"), i = this;
|
||
return t = s(t), t = t.replace(n, function(t, n, o) {
|
||
var r = e(i.processDefListItems(o));
|
||
return r = "<dl>\n" + r + "\n</dl>", n + i.hashExtraBlock(r) + "\n\n";
|
||
}), a(t);
|
||
}, Markdown.Extra.prototype.processDefListItems = function(i) {
|
||
var o = this, r = new RegExp([ "(\\x02\\n?|\\n\\n+)", "(", "[ ]{0,3}", "(?![:][ ]|[ ])", "(?:\\S.*\\n)+?", ")", "(?=\\n?[ ]{0,3}:[ ])" ].join(""), "gm"), u = new RegExp([ "\\n(\\n+)?", "(", "[ ]{0,3}", "[:][ ]+", ")", "([\\s\\S]+?)", "(?=\\n*", "(?:", "\\n[ ]{0,3}[:][ ]|", "<dt>|\\x03", ")", ")" ].join(""), "gm");
|
||
return i = s(i), i = i.replace(/\n{2,}(?=\\x03)/, "\n"), i = i.replace(r, function(t, n, i) {
|
||
for (var r = e(i).split("\n"), s = "", a = 0; a < r.length; a++) {
|
||
var c = r[a];
|
||
c = l(e(c), o), s += "\n<dt>" + c + "</dt>";
|
||
}
|
||
return s + "\n";
|
||
}), i = i.replace(u, function(e, i, r, s) {
|
||
return i || s.match(/\n{2,}/) ? (s = Array(r.length + 1).join(" ") + s, s = n(s) + "\n\n",
|
||
s = "\n" + c(s, o) + "\n") : (s = t(s), s = l(n(s), o)), "\n<dd>" + s + "</dd>\n";
|
||
}), a(i);
|
||
}, Markdown.Extra.prototype.strikethrough = function(e) {
|
||
return e.replace(/([\W_]|^)~T~T(?=\S)([^\r]*?\S[\*_]*)~T~T([\W_]|$)/g, "$1<del>$2</del>$3");
|
||
}, Markdown.Extra.prototype.newlines = function(e) {
|
||
return e.replace(/(<(?:br|\/li)>)?\n/g, function(e, t) {
|
||
return t ? e : " <br>\n";
|
||
});
|
||
};
|
||
}(), define("pagedown-extra", function() {}), define("extensions/markdownExtra", [ "jquery", "underscore", "utils", "classes/Extension", "text!html/markdownExtraSettingsBlock.html", "google-code-prettify", "highlightjs", "pagedown-extra" ], function(e, t, n, i, o, r, s) {
|
||
var a = new i("markdownExtra", "Markdown Extra", !0);
|
||
a.settingsBlock = o, a.defaultConfig = {
|
||
extensions: [ "fenced_code_gfm", "tables", "def_list", "attr_list", "footnotes", "smartypants", "strikethrough", "newlines" ],
|
||
intraword: !0,
|
||
highlighter: "prettify"
|
||
}, a.onLoadSettings = function() {
|
||
function e(e) {
|
||
return t.some(a.config.extensions, function(t) {
|
||
return t == e;
|
||
});
|
||
}
|
||
n.setInputChecked("#input-markdownextra-fencedcodegfm", e("fenced_code_gfm")), n.setInputChecked("#input-markdownextra-tables", e("tables")),
|
||
n.setInputChecked("#input-markdownextra-deflist", e("def_list")), n.setInputChecked("#input-markdownextra-attrlist", e("attr_list")),
|
||
n.setInputChecked("#input-markdownextra-footnotes", e("footnotes")), n.setInputChecked("#input-markdownextra-smartypants", e("smartypants")),
|
||
n.setInputChecked("#input-markdownextra-strikethrough", e("strikethrough")), n.setInputChecked("#input-markdownextra-newlines", e("newlines")),
|
||
n.setInputChecked("#input-markdownextra-intraword", a.config.intraword), n.setInputValue("#input-markdownextra-highlighter", a.config.highlighter);
|
||
}, a.onSaveSettings = function(e) {
|
||
e.extensions = [], n.getInputChecked("#input-markdownextra-fencedcodegfm") && e.extensions.push("fenced_code_gfm"),
|
||
n.getInputChecked("#input-markdownextra-tables") && e.extensions.push("tables"),
|
||
n.getInputChecked("#input-markdownextra-deflist") && e.extensions.push("def_list"),
|
||
n.getInputChecked("#input-markdownextra-attrlist") && e.extensions.push("attr_list"),
|
||
n.getInputChecked("#input-markdownextra-footnotes") && e.extensions.push("footnotes"),
|
||
n.getInputChecked("#input-markdownextra-smartypants") && e.extensions.push("smartypants"),
|
||
n.getInputChecked("#input-markdownextra-strikethrough") && e.extensions.push("strikethrough"),
|
||
n.getInputChecked("#input-markdownextra-newlines") && e.extensions.push("newlines"),
|
||
e.intraword = n.getInputChecked("#input-markdownextra-intraword"), e.highlighter = n.getInputValue("#input-markdownextra-highlighter");
|
||
};
|
||
var l;
|
||
return a.onEventMgrCreated = function(e) {
|
||
l = e;
|
||
}, a.onPagedownConfigure = function(e) {
|
||
var n = e.getConverter();
|
||
if (a.config.intraword === !0) {
|
||
var i = {
|
||
_DoItalicsAndBold: function(e) {
|
||
return e = e.replace(/([^\w*]|^)(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\2(?=[^\w*]|$)/g, "$1<strong>$3</strong>"),
|
||
e = e.replace(/([^\w*]|^)(\*|_)(?=\S)(.+?)(?=\S)\2(?=[^\w*]|$)/g, "$1<em>$3</em>");
|
||
}
|
||
};
|
||
n.setOptions(i);
|
||
}
|
||
var o = {
|
||
extensions: a.config.extensions
|
||
};
|
||
if ("highlight" == a.config.highlighter) {
|
||
o.highlighter = "prettify";
|
||
var l = document.getElementById("preview-contents");
|
||
e.hooks.chain("onPreviewRefresh", function() {
|
||
t.each(l.querySelectorAll(".prettyprint > code"), function(e) {
|
||
s.highlightBlock(e);
|
||
});
|
||
});
|
||
} else "prettify" == a.config.highlighter && (o.highlighter = "prettify", e.hooks.chain("onPreviewRefresh", r.prettyPrint));
|
||
Markdown.Extra.init(n, o);
|
||
}, a;
|
||
}), define("text!html/mathJaxSettingsBlock.html", [], function() {
|
||
return '<p>Allows StackEdit to interpret LaTeX mathematical expressions.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-mathjax-config-tex">TeX configuration</label>\n <div class="col-lg-7">\n <input type="text" id="input-mathjax-config-tex" class="form-control">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-mathjax-config-tex2jax">tex2jax configuration</label>\n <div class="col-lg-7">\n <input type="text" id="input-mathjax-config-tex2jax" class="form-control">\n </div>\n </div>\n</div>\n<span class="help-block pull-right"><a target="_blank" href="http://docs.mathjax.org/en/latest/options/index.html">More info</a></span>';
|
||
}), define("text!libs/mathjax_config.js", [], function() {
|
||
return 'MathJax.Hub.Config({\n "HTML-CSS": {\n preferredFont: "TeX",\n availableFonts: [\n "STIX",\n "TeX"\n ],\n linebreaks: {\n automatic: true\n },\n EqnChunk: 10,\n imageFont: null\n },\n tex2jax: <%= tex2jax || \'{ inlineMath: [["$","$"],["\\\\\\\\\\\\\\\\(","\\\\\\\\\\\\\\\\)"]], displayMath: [["$$","$$"],["\\\\\\\\[","\\\\\\\\]"]], processEscapes: true }\' %>,\n TeX: $.extend({\n noUndefined: {\n attributes: {\n mathcolor: "red",\n mathbackground: "#FFEEEE",\n mathsize: "90%"\n }\n },\n Safe: {\n allow: {\n URLs: "safe",\n classes: "safe",\n cssIDs: "safe",\n styles: "safe",\n fontsize: "all"\n }\n }\n }, <%= tex %>),\n messageStyle: "none"\n});\n';
|
||
}), define("libs/mathjax_init", [ "settings", "text!libs/mathjax_config.js" ], function(e, t) {
|
||
var n = document.createElement("script");
|
||
n.type = "text/x-mathjax-config", n.innerHTML = _.template(t, {
|
||
tex: e.extensionSettings.mathJax ? e.extensionSettings.mathJax.tex : "undefined",
|
||
tex2jax: e.extensionSettings.mathJax ? e.extensionSettings.mathJax.tex2jax : void 0
|
||
}), document.getElementsByTagName("head")[0].appendChild(n);
|
||
}), define("extensions/mathJax", [ "utils", "classes/Extension", "text!html/mathJaxSettingsBlock.html", "mathjax" ], function(e, t, n) {
|
||
function i(e, t, n) {
|
||
var i = u.slice(e, t + 1).join("").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||
for (w.Browser.isMSIE && (i = i.replace(/(%[^\n]*)\n/g, "$1<br/>\n")); t > e; ) u[t] = "",
|
||
t--;
|
||
u[e] = "@@" + g.length + "@@", n && (i = n(i)), g.push(i), d = h = p = null;
|
||
}
|
||
function o(e) {
|
||
d = h = p = null, g = [];
|
||
var t;
|
||
/`/.test(e) ? (e = e.replace(/~/g, "~T").replace(/(^|[^\\])(`+)([^\n]*?[^`\n])\2(?!`)/gm, function(e) {
|
||
return e.replace(/\$/g, "~D");
|
||
}), t = function(e) {
|
||
return e.replace(/~([TD])/g, function(e, t) {
|
||
return {
|
||
T: "~",
|
||
D: "$"
|
||
}[t];
|
||
});
|
||
}) : t = function(e) {
|
||
return e;
|
||
}, u = x(e.replace(/\r\n?/g, "\n"), C);
|
||
for (var e = 1, n = u.length; n > e; e += 2) {
|
||
var o = u[e];
|
||
"@" === o.charAt(0) ? (u[e] = "@@" + g.length + "@@", g.push(o)) : d ? o === h ? f ? p = e : i(d, e, t) : o.match(/\n.*\n/) ? (p && (e = p,
|
||
i(d, e, t)), d = h = p = null, f = 0) : "{" === o ? f++ : "}" === o && f && f-- : o === y || "$$" === o ? (d = e,
|
||
h = o, f = 0) : "begin" === o.substr(1, 5) && (d = e, h = "\\end" + o.substr(6),
|
||
f = 0);
|
||
}
|
||
return p && i(d, p, t), t(u.join(""));
|
||
}
|
||
function r(e) {
|
||
return e = e.replace(/@@(\d+)@@/g, function(e, t) {
|
||
return g[t];
|
||
}), g = null, e;
|
||
}
|
||
function s() {
|
||
v = !1, w.cancelTypeset = !1, w.Queue([ "Typeset", w, b ]), w.Queue(c);
|
||
}
|
||
function a() {
|
||
!v && (v = !0, w.Cancel(), w.Queue(s));
|
||
}
|
||
var l = new t("mathJax", "MathJax", !0);
|
||
l.settingsBlock = n, l.defaultConfig = {
|
||
tex: "{}",
|
||
tex2jax: '{ inlineMath: [["$","$"],["\\\\\\\\(","\\\\\\\\)"]], displayMath: [["$$","$$"],["\\\\[","\\\\]"]], processEscapes: true }'
|
||
}, l.onLoadSettings = function() {
|
||
e.setInputValue("#input-mathjax-config-tex", l.config.tex), e.setInputValue("#input-mathjax-config-tex2jax", l.config.tex2jax);
|
||
}, l.onSaveSettings = function(t, n) {
|
||
t.tex = e.getInputJsValue("#input-mathjax-config-tex", n), t.tex2jax = e.getInputJsValue("#input-mathjax-config-tex2jax", n);
|
||
}, l.onPagedownConfigure = function(e) {
|
||
b = document.getElementById("preview-contents");
|
||
var t = e.getConverter();
|
||
t.hooks.chain("preConversion", o), t.hooks.chain("postConversion", r);
|
||
};
|
||
var c;
|
||
l.onAsyncPreview = function(e) {
|
||
c = e, a();
|
||
};
|
||
var u, d, h, p, f, g, m = !1, v = !1, b = null, y = "$", w = MathJax.Hub;
|
||
w.Queue(function() {
|
||
m = !0, w.processUpdateTime = 50, w.Config({
|
||
"HTML-CSS": {
|
||
EqnChunk: 10,
|
||
EqnChunkFactor: 1
|
||
},
|
||
SVG: {
|
||
EqnChunk: 10,
|
||
EqnChunkFactor: 1
|
||
}
|
||
});
|
||
});
|
||
var x, C = /(\$\$?|\\(?:begin|end)\{[a-z]*\*?\}|\\[\\{}$]|[{}]|(?:\n\s*)+|@@\d+@@)/i;
|
||
return x = 3 === "aba".split(/(b)/).length ? function(e, t) {
|
||
return e.split(t);
|
||
} : function(e, t) {
|
||
var n, i = [];
|
||
if (!t.global) {
|
||
n = t.toString();
|
||
var o = "";
|
||
n = n.replace(/^\/(.*)\/([im]*)$/, function(e, t, n) {
|
||
return o = n, t;
|
||
}), t = RegExp(n, o + "g");
|
||
}
|
||
for (var r = t.lastIndex = 0; n = t.exec(e); ) i.push(e.substring(r, n.index)),
|
||
i.push.apply(i, n.slice(1)), r = n.index + n[0].length;
|
||
return i.push(e.substring(r)), i;
|
||
}, function() {
|
||
var e = MathJax.Hub;
|
||
if (!e.Cancel) {
|
||
e.cancelTypeset = !1, e.Register.StartupHook("HTML-CSS Jax Config", function() {
|
||
var t = MathJax.OutputJax["HTML-CSS"], n = t.Translate;
|
||
t.Augment({
|
||
Translate: function(i, o) {
|
||
if (e.cancelTypeset || o.cancelled) throw Error("MathJax Canceled");
|
||
return n.call(t, i, o);
|
||
}
|
||
});
|
||
}), e.Register.StartupHook("SVG Jax Config", function() {
|
||
var t = MathJax.OutputJax.SVG, n = t.Translate;
|
||
t.Augment({
|
||
Translate: function(i, o) {
|
||
if (e.cancelTypeset || o.cancelled) throw Error("MathJax Canceled");
|
||
return n.call(t, i, o);
|
||
}
|
||
});
|
||
}), e.Register.StartupHook("TeX Jax Config", function() {
|
||
var t = MathJax.InputJax.TeX, n = t.Translate;
|
||
t.Augment({
|
||
Translate: function(i, o) {
|
||
if (e.cancelTypeset || o.cancelled) throw Error("MathJax Canceled");
|
||
return n.call(t, i, o);
|
||
}
|
||
});
|
||
});
|
||
var t = e.processError;
|
||
e.processError = function(n, i, o) {
|
||
return "MathJax Canceled" !== n.message ? t.call(e, n, i, o) : (MathJax.Message.Clear(0, 0),
|
||
i.jaxIDs = [], i.jax = {}, i.scripts = [], i.i = i.j = 0, i.cancelled = !0, null);
|
||
}, e.Cancel = function() {
|
||
this.cancelTypeset = !0;
|
||
};
|
||
}
|
||
}(), l;
|
||
}), define("extensions/markdownSectionParser", [ "underscore", "extensions/markdownExtra", "extensions/mathJax", "classes/Extension" ], function(e, t, n, i) {
|
||
var o, r = new i("markdownSectionParser", "Markdown section parser");
|
||
return r.onEventMgrCreated = function(e) {
|
||
o = e;
|
||
}, r.onPagedownConfigure = function(i) {
|
||
var r = "^.+[ \\t]*\\n=+[ \\t]*\\n+|^.+[ \\t]*\\n-+[ \\t]*\\n+|^\\#{1,6}[ \\t]*.+?[ \\t]*\\#*\\n+";
|
||
t.enabled && e.some(t.config.extensions, function(e) {
|
||
return "fenced_code_gfm" == e;
|
||
}) && (r = "^```.*\\n[\\s\\S]*?\\n```|" + r), n.enabled && (r = "^[ \\t]*\\n\\$\\$[\\s\\S]*?\\$\\$|" + r,
|
||
r = "^[ \\t]*\\n\\\\\\\\[[\\s\\S]*?\\\\\\\\]|" + r, r = "^[ \\t]*\\n\\\\?\\\\begin\\{[a-z]*\\*?\\}[\\s\\S]*?\\\\end\\{[a-z]*\\*?\\}|" + r),
|
||
r = new RegExp(r, "gm");
|
||
var s = i.getConverter();
|
||
s.hooks.chain("preConversion", function(t) {
|
||
function n(e, t) {
|
||
var n = i.substring(a, t);
|
||
s.push({
|
||
text: n,
|
||
textWithDelimiter: '\n<div class="se-section-delimiter"></div>\n\n' + n + "\n"
|
||
});
|
||
}
|
||
o.previewStartTime = new Date();
|
||
var i = t + "\n\n", s = [], a = 0;
|
||
return i.replace(r, function(e, t) {
|
||
n(a, t), a = t;
|
||
}), n(a, t.length), o.onSectionsCreated(s), e.reduce(s, function(e, t) {
|
||
return e + t.textWithDelimiter;
|
||
}, "");
|
||
});
|
||
}, r;
|
||
}), define("text!html/partialRenderingSettingsBlock.html", [], function() {
|
||
return "<p>Renders modified sections only.</p>\n<blockquote>\n <b>NOTE:</b> Document sections are based on title elements (h1, h2...). Therefore if\n your document does not contain any title, performance will not be increased.\n</blockquote>";
|
||
}), define("extensions/partialRendering", [ "underscore", "crel", "extensions/markdownExtra", "classes/Extension", "text!html/partialRenderingSettingsBlock.html" ], function(e, t, n, i, o) {
|
||
function r(t, n) {
|
||
if (g = [], f = [], d = void 0, m === !0 || u != n) return m = !1, u = n, f = p,
|
||
p = t, g = t, void 0;
|
||
var i = p.length;
|
||
e.some(p, function(e, n) {
|
||
return n >= t.length || e.text != t[n].text ? (i = n, !0) : void 0;
|
||
});
|
||
var o = -p.length;
|
||
e.some(p.slice().reverse(), function(e, n) {
|
||
return n >= t.length || e.text != t[t.length - n - 1].text ? (o = -n, !0) : void 0;
|
||
}), i - o > p.length && (o = i - p.length);
|
||
var r = p.slice(0, i);
|
||
g = t.slice(i, t.length + o);
|
||
var s = p.slice(p.length + o, p.length);
|
||
d = e.first(s), f = p.slice(i, p.length + o), p = r.concat(g).concat(s);
|
||
}
|
||
function s(e) {
|
||
var t = e.id.substring(3);
|
||
x[t] = e;
|
||
}
|
||
function a() {
|
||
function n(n) {
|
||
for (var i = t("div", {
|
||
id: "wmd-preview-section-" + n.id,
|
||
"class": "wmd-preview-section preview-content"
|
||
}), r = !1; o; ) {
|
||
var a = o.nextSibling;
|
||
if (r === !0 && "DIV" == o.tagName && "se-section-delimiter" == o.className) break;
|
||
r = !0, "DIV" == o.tagName && "footnotes" == o.className ? e.each(o.querySelectorAll("ol > li"), s) : i.appendChild(o),
|
||
o = a;
|
||
}
|
||
return i;
|
||
}
|
||
e.each(f, function(e) {
|
||
var t = document.getElementById("wmd-preview-section-" + e.id);
|
||
w.removeChild(t);
|
||
});
|
||
var i = document.getElementById("wmd-preview"), o = i.firstChild, r = document.createDocumentFragment();
|
||
e.each(g, function(e) {
|
||
r.appendChild(n(e));
|
||
}), i.innerHTML = "";
|
||
var a = y;
|
||
void 0 !== d && (a = document.getElementById("wmd-preview-section-" + d.id)), w.insertBefore(r, a),
|
||
y.innerHTML = "";
|
||
var l = [];
|
||
if (b === !0) {
|
||
var c = t("ol");
|
||
e.each(w.querySelectorAll("a.footnote"), function(e, t) {
|
||
e.textContent = t + 1;
|
||
var n = e.id.substring(6);
|
||
l.push(n), c.appendChild(x[n].cloneNode(!0));
|
||
}), l.length > 0 && y.appendChild(t("div", {
|
||
"class": "footnotes"
|
||
}, t("hr"), c)), x = e.pick(x, l);
|
||
}
|
||
}
|
||
var l = new i("partialRendering", "Partial Rendering", !0);
|
||
l.settingsBlock = o;
|
||
var c, u, d, h = 0, p = [], f = [], g = [], m = !1, v = !1, b = !1;
|
||
l.onSectionsCreated = function(t) {
|
||
var n = [], i = "\n";
|
||
b = !1, e.each(t, function(e) {
|
||
var t = e.textWithDelimiter + "\n";
|
||
v && (t = t.replace(/^```.*\n[\s\S]*?\n```|\n[ ]{0,3}\[\^(.+?)\]\:[ \t]*\n?([\s\S]*?)\n{1,2}((?=\n[ ]{0,3}\S)|$)/gm, function(e, t) {
|
||
return t ? (b = !0, i += e.replace(/^\s*\n/gm, "") + "\n", "") : e;
|
||
})), t = t.replace(/^```.*\n[\s\S]*?\n```|^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm, function(e, t) {
|
||
return t ? (i += e.replace(/^\s*\n/gm, "") + "\n", "") : e;
|
||
}), n.push({
|
||
id: ++h,
|
||
text: t + "\n"
|
||
});
|
||
}), r(n, i);
|
||
};
|
||
var y, w, x = {};
|
||
return l.onPagedownConfigure = function(t) {
|
||
c = t.getConverter(), c.hooks.chain("preConversion", function() {
|
||
var t = e.map(g, function(e) {
|
||
return e.text;
|
||
});
|
||
return t.push(u + "\n\n"), t.join("");
|
||
}), t.hooks.chain("onPreviewRefresh", function() {
|
||
a();
|
||
});
|
||
}, l.onInit = function() {
|
||
n.enabled && e.some(n.config.extensions, function(e) {
|
||
return "footnotes" == e;
|
||
}) && (v = !0);
|
||
}, l.onReady = function() {
|
||
y = t("div", {
|
||
id: "wmd-preview-section-footnotes",
|
||
"class": "preview-content"
|
||
}), w = document.getElementById("preview-contents"), w.appendChild(y);
|
||
}, l.onFileSelected = function() {
|
||
m = !0;
|
||
}, l;
|
||
}), define("text!html/buttonMarkdownSyntax.html", [], function() {
|
||
return '<button class="btn btn-info dropdown-toggle button-markdown-syntax" title="Markdown syntax" data-toggle="dropdown">\n <i class="icon-help-circled"></i>\n</button>\n<div class="dropdown-menu pull-right">\n <h3>Markdown syntax</h3>\n <div class="markdown-syntax">\n<h4>Phrase Emphasis</h4>\n\n<pre><code>*italic* **bold**\n_italic_ __bold__\n</code></pre>\n\n<h4>Links</h4>\n\n<p>Inline:</p>\n\n<pre><code>An [example](http://url.com/ "Title")\n</code></pre>\n\n<p>Reference-style labels (titles are optional):</p>\n\n<pre><code>An [example][id]. Then, anywhere\nelse in the doc, define the link:\n\n [id]: http://example.com/ "Title"\n</code></pre>\n\n<h4>Images</h4>\n\n<p>Inline (titles are optional):</p>\n\n<pre><code>\n</code></pre>\n\n<p>Reference-style:</p>\n\n<pre><code>![alt text][id]\n\n[id]: /url/to/img.jpg "Title"\n</code></pre>\n\n<h4>Headers</h4>\n\n<p>Setext-style:</p>\n\n<pre><code>Header 1\n========\n\nHeader 2\n--------\n</code></pre>\n\n<p>atx-style (closing #\'s are optional):</p>\n\n<pre><code># Header 1 #\n\n## Header 2 ##\n\n###### Header 6\n</code></pre>\n\n<h4>Lists</h4>\n\n<p>Ordered, without paragraphs:</p>\n\n<pre><code>1. Foo\n2. Bar\n</code></pre>\n\n<p>Unordered, with paragraphs:</p>\n\n<pre><code>* A list item.\n\n With multiple paragraphs.\n\n* Bar\n</code></pre>\n\n<p>You can nest them:</p>\n\n<pre><code>* Abacus\n * answer\n* Bubbles\n 1. bunk\n 2. bupkis\n * BELITTLER\n 3. burper\n* Cunning\n</code></pre>\n\n<h4>Blockquotes</h4>\n\n<pre><code>> Email-style angle brackets\n> are used for blockquotes.\n\n> > And, they can be nested.\n\n> #### Headers in blockquotes\n> \n> * You can quote a list.\n> * Etc.\n</code></pre>\n\n<h4>Code Spans</h4>\n\n<pre><code>`<code>` spans are delimited\nby backticks.\n\nYou can include literal backticks\nlike `` `this` ``.\n</code></pre>\n\n<h4>Preformatted Code Blocks</h4>\n\n<p>Indent every line of a code block by at least 4 spaces or 1 tab.</p>\n\n<pre><code>This is a normal paragraph.\n\n This is a preformatted\n code block.\n</code></pre>\n\n<h4>Horizontal Rules</h4>\n\n<p>Three or more dashes or asterisks:</p>\n\n<pre><code>---\n\n* * *\n\n- - - - \n</code></pre>\n\n<h4>Manual Line Breaks</h4>\n\n<p>End a line with two or more spaces:</p>\n\n<pre><code>Roses are red, \nViolets are blue.\n</code></pre>\n\n<blockquote>Based on the <a target="_blank" href="https://github.com/fletcher/MultiMarkdown/blob/master/Documentation/Markdown%20Syntax.md">Markdown syntax guide</a>, by Fletcher T. Penney.</blockquote>\n </div>\n</div>\n';
|
||
}), define("extensions/buttonMarkdownSyntax", [ "jquery", "classes/Extension", "text!html/buttonMarkdownSyntax.html" ], function(e, t, n) {
|
||
var i = new t("buttonMarkdownSyntax", 'Button "Markdown syntax', !0, !0);
|
||
return i.settingsBlock = '<p>Adds a "Markdown syntax" button over the preview.</p>',
|
||
i.onCreatePreviewButton = function() {
|
||
return n;
|
||
}, i;
|
||
}), define("extensions/googleAnalytics", [ "jquery", "underscore", "constants", "utils", "classes/Extension", "settings" ], function(e, t, n, i, o, r) {
|
||
function s() {
|
||
i.currentTime - d > 18e4 && (_gaq.push([ "_trackPageview" ]), d = i.currentTime);
|
||
}
|
||
var a = new o("googleAnalytics", "Google Analytics", !0);
|
||
a.settingsBlock = "<p>Sends anonymous statistics about usage and errors to help improve StackEdit.</p>";
|
||
var l = !1, c = !1;
|
||
window._gaq = [];
|
||
var u = function() {
|
||
if (l === !1 && c === !1) {
|
||
var t = "/ga.js";
|
||
location.search.match(/(\?|&)console/) && (t = "/u/ga_debug.js"), e.ajax({
|
||
url: "https://ssl.google-analytics.com" + t,
|
||
dataType: "script"
|
||
}).done(function() {
|
||
l = !0;
|
||
});
|
||
}
|
||
}, d = 0;
|
||
a.onPeriodicRun = function() {
|
||
s();
|
||
}, a.onReady = function() {
|
||
_gaq.push([ "_setAccount", n.GOOGLE_ANALYTICS_ACCOUNT_ID ]), s(), _gaq.push([ "_trackEvent", "About", "version", n.VERSION ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "layoutOrientation", "" + r.layoutOrientation ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "theme", "" + window.theme ]), _gaq.push([ "_trackEvent", "Settings", "lazyRendering", "" + r.lazyRendering ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "editorFontFamily", "" + r.editorFontFamily ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "editorFontSize", "" + r.editorFontSize ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "defaultContent backlink", "" + (-1 !== r.defaultContent.indexOf(n.MAIN_URL)) ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "commitMsg backlink", "" + (-1 !== r.commitMsg.indexOf(n.MAIN_URL)) ]),
|
||
_gaq.push([ "_trackEvent", "Settings", "sshProxy unchanged", "" + (r.sshProxy == n.SSH_PROXY_URL) ]),
|
||
t.each(r.extensionSettings, function(e, t) {
|
||
_gaq.push([ "_trackEvent", "Extensions", t + " enabled", "" + (e.enabled === !0) ]);
|
||
}), window.onerror = function(e, t, n) {
|
||
_gaq.push([ "_trackEvent", "Error", e, t + ":" + n + i.formatEventList() ]);
|
||
}, u();
|
||
}, a.onOfflineChanged = function(e) {
|
||
c = e, u();
|
||
};
|
||
var h = 0;
|
||
return a.onSyncRunning = function(e) {
|
||
e === !0 && (h = new Date().getTime());
|
||
}, a.onPublishRunning = function(e) {
|
||
e === !0 && (h = new Date().getTime());
|
||
}, a.onSyncSuccess = function() {
|
||
var e = new Date().getTime();
|
||
_gaq.push([ "_trackTiming", "Sync", "SyncTime", e - h ]);
|
||
}, a.onSyncImportSuccess = function(e, t) {
|
||
_gaq.push([ "_trackEvent", "Sync", "SyncImport" ]), _gaq.push([ "_trackEvent", "Sync", "SyncImport provider", t.providerId ]);
|
||
}, a.onSyncExportSuccess = function(e, t) {
|
||
_gaq.push([ "_trackEvent", "Sync", "SyncExport" ]), _gaq.push([ "_trackEvent", "Sync", "SyncExport provider", t.provider.providerId ]);
|
||
}, a.onPublishSuccess = function(e) {
|
||
var n = new Date().getTime();
|
||
_gaq.push([ "_trackTiming", "Publish", "PublishSuccess", n - h ]), t.each(e.publishLocations, function(e) {
|
||
_gaq.push([ "_trackEvent", "Publish", "PublishSuccess provider", e.provider.providerId ]);
|
||
});
|
||
}, a.onNewPublishSuccess = function(e, t) {
|
||
_gaq.push([ "_trackEvent", "Publish", "NewPublish provider", t.provider.providerId ]);
|
||
}, a.onError = function(e) {
|
||
!t.isString(e) && e.message && _gaq.push([ "_trackEvent", "Error", "message", e.message + i.formatEventList() ]);
|
||
}, a;
|
||
}), define("text!html/dialogAbout.html", [], function() {
|
||
return '<div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>\n <img data-stackedit-src="logo-promo-128.png" width="316"\n height="64" />\n </div>\n <div class="modal-body">\n <dl>\n <dt>About:</dt>\n <dd>\n <a target="_blank" href="https://github.com/benweet/stackedit/">GitHub\n project</a> /\n <a target="_blank" href="https://github.com/benweet/stackedit/issues">issue\n tracker</a>\n <br />\n <a target="_blank" href="https://chrome.google.com/webstore/detail/stackedit/iiooodelglhkcpgbajoejffhijaclcdg">Chrome\n app</a> (thanks for your review!)\n <br />\n <a target="_blank" href="https://twitter.com/stackedit/">Follow on Twitter</a>\n <br />\n <a target="_blank" href="https://www.facebook.com/stackedit/">Follow\n on Facebook</a>\n <br />\n <a target="_blank" href="https://plus.google.com/110816046787593496375"\n rel="publisher">Follow on Google+</a>\n <br />\n </dd>\n </dl>\n <dl>\n <dt>Developers:</dt>\n <dd>\n <a target="_blank" href="http://www.benoitschweblin.com">Benoit\n Schweblin</a><br /> Pete Eigel (contributor)\n </dd>\n </dl>\n <dl>\n <dt>Credit:</dt>\n <dd>\n <% _.each(libraries, function(url, name) { %> <a target="_blank"\n href="<%= url %>"><%= name %></a><br /> <% }); %>\n </dd>\n </dl>\n <dl>\n <dt>Related projects:</dt>\n <dd>\n <% _.each(projects, function(url, name) { %> <a target="_blank"\n href="<%= url %>"><%= name %></a><br /> <% }); %>\n </dd>\n </dl>\n <dl>\n <dt>Support StackEdit:</dt>\n <dd>\n <a target="_blank" href="https://www.gittip.com/stackedit/"><img class="btn-gittip" data-stackedit-src="gittip.png" /></a>\n </dd>\n </dl>\n <p>\n StackEdit <%= version %> — <a target="_blank" href="privacy_policy.html">Privacy Policy</a><br /> Copyright 2013 <a\n target="_blank" href="http://www.benoitschweblin.com">Benoit\n Schweblin</a><br /> Licensed under an <a target="_blank"\n href="http://www.apache.org/licenses/LICENSE-2.0">Apache\n License</a>\n </p>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>\n </div>\n </div>\n</div>\n';
|
||
}), define("extensions/dialogAbout", [ "underscore", "constants", "utils", "classes/Extension", "text!html/dialogAbout.html" ], function(e, t, n, i, o) {
|
||
var r = new i("dialogAbout", 'Dialog "About"'), s = {
|
||
ACE: "http://ace.c9.io/",
|
||
Bootstrap: "http://getbootstrap.com/",
|
||
"Bootstrap Tour": "http://bootstraptour.com/",
|
||
crel: "https://github.com/KoryNunn/crel",
|
||
"Dropbox-js": "https://github.com/dropbox/dropbox-js",
|
||
"FileSaver.js": "https://github.com/eligrey/FileSaver.js/",
|
||
Fontello: "http://fontello.com/",
|
||
"Font Awesome and others...": "res/libs/fontello/LICENSE.txt",
|
||
Gatekeeper: "https://github.com/prose/gatekeeper",
|
||
"Github.js": "https://github.com/michael/github",
|
||
"Highlight.js": "http://softwaremaniacs.org/soft/highlight/en/",
|
||
jGrowl: "https://github.com/stanlemon/jGrowl/",
|
||
jQuery: "http://jquery.com/",
|
||
"lz-string": "http://pieroxy.net/blog/pages/lz-string/index.html",
|
||
MathJax: "http://www.mathjax.org/",
|
||
Mousetrap: "http://craig.is/killing/mice",
|
||
"PageDown ACE": "https://github.com/benweet/pagedown-ace",
|
||
"PageDown Extra": "https://github.com/jmcmanus/pagedown-extra/",
|
||
Prettify: "https://code.google.com/p/google-code-prettify/",
|
||
RequireJS: "http://requirejs.org/",
|
||
"RequireJS LESS plugin": "https://github.com/guybedford/require-less",
|
||
"stacktrace.js": "http://stacktracejs.com/",
|
||
"to-markdown": "https://github.com/domchristie/to-markdown",
|
||
"Typo.js": "https://github.com/cfinke/Typo.js",
|
||
"UI Layout": "http://layout.jquery-dev.net/",
|
||
"Underscore.js": "http://underscorejs.org/",
|
||
waitForImages: "https://github.com/alexanderdickson/waitForImages",
|
||
XRegExp: "https://github.com/slevithan/xregexp",
|
||
"yaml.js": "https://github.com/jeremyfa/yaml.js"
|
||
}, a = {
|
||
"StackEdit Download Proxy": "https://github.com/benweet/stackedit-download-proxy",
|
||
"StackEdit HTMLtoPDF": "https://github.com/benweet/stackedit-htmltopdf",
|
||
"StackEdit Picasa Proxy": "https://github.com/benweet/stackedit-picasa-proxy",
|
||
"StackEdit SSH Proxy": "https://github.com/benweet/stackedit-ssh-proxy",
|
||
"StackEdit Tumblr Proxy": "https://github.com/benweet/stackedit-tumblr-proxy",
|
||
"StackEdit WordPress Proxy": "https://github.com/benweet/stackedit-wordpress-proxy"
|
||
};
|
||
return r.onReady = function() {
|
||
n.addModal("modal-about", e.template(o, {
|
||
libraries: s,
|
||
projects: a,
|
||
version: t.VERSION
|
||
}));
|
||
}, r;
|
||
}), define("text!html/dialogManagePublicationLocation.html", [], function() {
|
||
return '<div class="input-group">\n <span class="input-group-addon" title="<%= publishAttributes.provider.providerName %>">\n <i class="icon-provider-<%= publishAttributes.provider.providerId %>"></i>\n </span> <input class="form-control" type="text"\n value="<%= publishDesc %>" disabled />\n <div class="input-group-btn">\n <a class="btn btn-link remove-button" title="Remove this location"\n data-publish-index="<%= publishAttributes.publishIndex %>"><i\n class="icon-trash"></i></a>\n </div>\n</div>\n';
|
||
}), define("extensions/dialogManagePublication", [ "jquery", "underscore", "classes/Extension", "text!html/dialogManagePublicationLocation.html" ], function(e, t, n, i) {
|
||
var o, r = new n("dialogManagePublication", 'Dialog "Manage publication"', !1, !0);
|
||
r.onEventMgrCreated = function(e) {
|
||
o = e;
|
||
};
|
||
var s, a, l, c, u = function(n) {
|
||
if (void 0 === n || n === s) {
|
||
t.size(s.publishLocations) > 0 ? (l.removeClass("hide"), c.addClass("hide")) : (l.addClass("hide"),
|
||
c.removeClass("hide"));
|
||
var r = t.reduce(s.publishLocations, function(e, n) {
|
||
var o = t.omit(n, "provider", "publishIndex", "sharingLink");
|
||
return o.password && (o.password = "********"), o = JSON.stringify(o).replace(/{|}|"/g, "").replace(/,/g, ", "),
|
||
e + t.template(i, {
|
||
publishAttributes: n,
|
||
publishDesc: o
|
||
});
|
||
}, "");
|
||
a.innerHTML = r, t.each(a.querySelectorAll(".remove-button"), function(t) {
|
||
var n = e(t), i = s.publishLocations[n.data("publishIndex")];
|
||
n.click(function() {
|
||
s.removePublishLocation(i), o.onPublishRemoved(s, i);
|
||
});
|
||
});
|
||
}
|
||
};
|
||
return r.onFileSelected = function(e) {
|
||
s = e, u(e);
|
||
}, r.onNewPublishSuccess = u, r.onPublishRemoved = u, r.onReady = function() {
|
||
var t = document.querySelector(".modal-manage-publish");
|
||
a = t.querySelector(".publish-list"), l = e(t.querySelectorAll(".msg-publish-list")),
|
||
c = e(t.querySelectorAll(".msg-no-publish"));
|
||
}, r;
|
||
}), define("text!html/dialogManageSynchronizationLocation.html", [], function() {
|
||
return '<div class="input-group">\n <span class="input-group-addon"\n title="<%= syncAttributes.provider.providerName %><%= syncAttributes.isRealtime ? \' (real time)\' : \'\' %>">\n <i\n class="icon-provider-<%= syncAttributes.provider.providerId %><%= syncAttributes.isRealtime ? \' realtime\' : \'\' %>"></i>\n </span> <input class="form-control" type="text"\n value="<%= syncDesc %>" disabled />\n <div class="input-group-btn">\n <a class="btn btn-link remove-button" title="Remove this location"\n data-sync-index="<%= syncAttributes.syncIndex %>"><i class="icon-trash"></i></a>\n </div>\n</div>\n';
|
||
}), define("extensions/dialogManageSynchronization", [ "jquery", "underscore", "classes/Extension", "text!html/dialogManageSynchronizationLocation.html" ], function(e, t, n, i) {
|
||
var o, r = new n("dialogManageSynchronization", 'Dialog "Manage synchronization"', !1, !0);
|
||
r.onEventMgrCreated = function(e) {
|
||
o = e;
|
||
};
|
||
var s;
|
||
r.onSynchronizerCreated = function(e) {
|
||
s = e;
|
||
};
|
||
var a, l, c, u, d = function(n) {
|
||
if (void 0 === n || n === a) {
|
||
t.size(a.syncLocations) > 0 ? (c.removeClass("hide"), u.addClass("hide")) : (c.addClass("hide"),
|
||
u.removeClass("hide"));
|
||
var r = t.reduce(a.syncLocations, function(e, n) {
|
||
return e + t.template(i, {
|
||
syncAttributes: n,
|
||
syncDesc: n.id || n.path
|
||
});
|
||
}, "");
|
||
l.innerHTML = r, t.each(l.querySelectorAll(".remove-button"), function(t) {
|
||
var n = e(t), i = a.syncLocations[n.data("syncIndex")];
|
||
n.click(function() {
|
||
s.tryStopRealtimeSync(), a.removeSyncLocation(i), o.onSyncRemoved(a, i);
|
||
});
|
||
});
|
||
}
|
||
};
|
||
return r.onFileSelected = function(e) {
|
||
a = e, d(e);
|
||
}, r.onSyncExportSuccess = d, r.onSyncRemoved = d, r.onReady = function() {
|
||
var t = document.querySelector(".modal-manage-sync");
|
||
l = t.querySelector(".sync-list"), c = e(t.querySelectorAll(".msg-sync-list")),
|
||
u = e(t.querySelectorAll(".msg-no-sync"));
|
||
}, r;
|
||
}), define("text!html/dialogManageSharingLocation.html", [], function() {
|
||
return '<div class="input-group">\n <a href="<%= link %>" class="input-group-addon" title="Sharing location"><i\n class="icon-provider-stackedit"></i></a> <input class="form-control" type="text"\n value="<%= link %>" disabled />\n</div>\n';
|
||
}), define("extensions/dialogManageSharing", [ "jquery", "underscore", "classes/Extension", "text!html/dialogManageSharingLocation.html" ], function(e, t, n, i) {
|
||
var o, r, s, a, l = new n("dialogManageSharing", 'Button "Share"', !1, !0), c = function(e) {
|
||
if (void 0 === e || e === o) {
|
||
var n = t.reduce(o.publishLocations, function(e, n) {
|
||
return n.sharingLink && (e += t.template(i, {
|
||
link: n.sharingLink
|
||
})), e;
|
||
}, "");
|
||
r.innerHTML = n, s.toggleClass("hide", 0 === n.length), a.toggleClass("hide", 0 !== n.length);
|
||
}
|
||
};
|
||
return l.onFileSelected = function(e) {
|
||
o = e, c(e);
|
||
}, l.onNewPublishSuccess = c, l.onPublishRemoved = c, l.onReady = function() {
|
||
var t = document.querySelector(".modal-manage-sharing");
|
||
r = t.querySelector(".share-list"), s = e(t.querySelectorAll(".msg-share-list")),
|
||
a = e(t.querySelectorAll(".msg-no-share"));
|
||
}, l;
|
||
}), function() {
|
||
var e = this, t = {}, n = !1;
|
||
"undefined" != typeof module && module.exports ? (module.exports = t, e.toMarkdown = t,
|
||
n = !0) : e.toMarkdown = t, t.converter = function(e) {
|
||
e && e.elements && $.isArray(e.elements) && (c = c.concat(e.elements)), this.makeMd = function(e, t) {
|
||
var o;
|
||
if (n) {
|
||
var r = require("jsdom");
|
||
r.env({
|
||
html: e,
|
||
scripts: [ "http://code.jquery.com/jquery-1.6.4.min.js" ],
|
||
done: function(n, o) {
|
||
"function" == typeof t && t(i(e, o.$));
|
||
}
|
||
});
|
||
} else o = i(e, $);
|
||
return o;
|
||
};
|
||
};
|
||
var i = function(e, t) {
|
||
e = e.replace(/(\d+)\. /g, "$1\\. ");
|
||
var n = t("<div/>"), i = n.html(e);
|
||
i.find("*:not(pre, code)").contents().filter(function() {
|
||
return 3 === this.nodeType && /^\s+$/.test(this.nodeValue);
|
||
}).remove();
|
||
for (var o = [], r = 0, a = c.length; a > r; r++) o.push(c[r].selector);
|
||
for (o = o.join(","); i.find(o).length; ) for (var r = 0, a = c.length; a > r; r++) $matches = i.find(c[r].selector + ':not(:has("' + o + '"))'),
|
||
$matches.each(function(e, n) {
|
||
var i = t(n);
|
||
i.before(c[r].replacement(i.html(), i)).remove();
|
||
});
|
||
return s(i.html());
|
||
}, o = function(e) {
|
||
return e.replace(/^[\n\r\f]+|[\n\r\f]+$/g, "");
|
||
}, r = function(e) {
|
||
return String(e).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"');
|
||
}, s = function(e) {
|
||
return e = e.replace(/^[\t\r\n]+|[\t\r\n]+$/g, ""), e = e.replace(/\n\s+\n/g, "\n\n"),
|
||
e = e.replace(/\n{3,}/g, "\n\n"), e = r(e);
|
||
}, a = function(e) {
|
||
return e = o(e), e ? "**" + e + "**" : "";
|
||
}, l = function(e) {
|
||
return e = o(e), e ? "_" + e + "_" : "";
|
||
}, c = [ {
|
||
selector: "p",
|
||
replacement: function(e) {
|
||
return e = $.trim(e), e ? "\n\n" + e + "\n\n" : "";
|
||
}
|
||
}, {
|
||
selector: "br",
|
||
replacement: function() {
|
||
return "\n";
|
||
}
|
||
}, {
|
||
selector: "h1,h2,h3,h4,h5,h6",
|
||
replacement: function(e, t) {
|
||
e = $.trim(e);
|
||
for (var n = t.prop("nodeName").charAt(1), i = "", o = 0; n > o; o++) i += "#";
|
||
return e ? "\n\n" + i + " " + e + "\n\n" : "";
|
||
}
|
||
}, {
|
||
selector: "hr",
|
||
replacement: function() {
|
||
return "\n\n* * *\n\n";
|
||
}
|
||
}, {
|
||
selector: "a[href]",
|
||
replacement: function(e, t) {
|
||
if (e) {
|
||
e = o(e);
|
||
var n = t.attr("href"), i = t.attr("title") || "";
|
||
return "[" + e + "]" + "(" + n + (i ? ' "' + i + '"' : "") + ")";
|
||
}
|
||
return !1;
|
||
}
|
||
}, {
|
||
selector: "b",
|
||
replacement: a
|
||
}, {
|
||
selector: "strong",
|
||
replacement: a
|
||
}, {
|
||
selector: "i",
|
||
replacement: l
|
||
}, {
|
||
selector: "em",
|
||
replacement: l
|
||
}, {
|
||
selector: "code",
|
||
replacement: function(e) {
|
||
return e = o(e), e ? "`" + e + "`" : "";
|
||
}
|
||
}, {
|
||
selector: "img",
|
||
replacement: function(e, t) {
|
||
var n = t.attr("alt") || "", i = t.attr("src") || "", o = t.attr("title") || "";
|
||
return "![" + n + "]" + "(" + i + (o ? ' "' + o + '"' : "") + ")";
|
||
}
|
||
}, {
|
||
selector: "pre",
|
||
replacement: function(e) {
|
||
return /^\s*\`/.test(e) ? (e = e.replace(/\`/g, ""), " " + e.replace(/\n/g, "\n ")) : "";
|
||
}
|
||
}, {
|
||
selector: "li",
|
||
replacement: function(e, t) {
|
||
e = e.replace(/^\s+|\s+$/, "").replace(/\n/gm, "\n ");
|
||
var n = "* ", i = "", o = t.parent(), r = o.contents().filter(function() {
|
||
return 1 === this.nodeType && "LI" === this.nodeName || 3 === this.nodeType;
|
||
}), s = r.index(t) + 1;
|
||
return n = o.is("ol") ? s + ". " : "* ", s == r.length && (t.parents("li").length || (i = "\n"),
|
||
e = e.replace(/\s+$/, ""), t.unwrap()), n + e + i + "\n";
|
||
}
|
||
}, {
|
||
selector: "blockquote",
|
||
replacement: function(e) {
|
||
return e = e = $.trim(e).replace(/\n{3,}/g, "\n\n"), e = e.replace(/\n/g, "\n> "),
|
||
"> " + e;
|
||
}
|
||
} ];
|
||
}(), define("toMarkdown", [ "jquery" ], function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.toMarkdown;
|
||
};
|
||
}(this)), define("extensions/dialogOpenHarddrive", [ "jquery", "underscore", "constants", "utils", "classes/Extension", "toMarkdown" ], function(e, t, n, i, o, r) {
|
||
function s(i) {
|
||
i.stopPropagation(), i.preventDefault();
|
||
var o = (i.dataTransfer || i.target).files;
|
||
e(".modal-import-harddrive-markdown, .modal-import-harddrive-html").modal("hide"),
|
||
t.each(o, function(t) {
|
||
if (!e(i.target).is("#wmd-input *") || !t.name.match(/.(jpe?g|png|gif)$/i)) {
|
||
var o = new FileReader();
|
||
o.onload = function(e) {
|
||
return function(t) {
|
||
var n = t.target.result;
|
||
if (n.match(/\uFFFD/)) return h.onError(e.name + " is a binary file."), void 0;
|
||
if (n = p ? p(n) : n, void 0 === n) return h.onError(e.name + " is not a valid HTML file."),
|
||
void 0;
|
||
var i = e.name, o = i.lastIndexOf(".");
|
||
i = -1 !== o ? i.substring(0, o) : i;
|
||
var r = u.createFile(i, n);
|
||
u.selectFile(r);
|
||
};
|
||
}(t);
|
||
var r = t.slice(0, n.IMPORT_FILE_MAX_CONTENT_SIZE);
|
||
o.readAsText(r);
|
||
}
|
||
});
|
||
}
|
||
function a(e) {
|
||
p = void 0, s(e);
|
||
}
|
||
function l(e) {
|
||
p = g, s(e);
|
||
}
|
||
function c(e) {
|
||
e.stopPropagation(), e.preventDefault(), e.dataTransfer.dropEffect = "copy";
|
||
}
|
||
var u, d = new o("dialogOpenHarddrive", 'Dialog "Open from"');
|
||
d.onFileMgrCreated = function(e) {
|
||
u = e;
|
||
};
|
||
var h;
|
||
d.onEventMgrCreated = function(e) {
|
||
h = e;
|
||
};
|
||
var p, f, g = function(e) {
|
||
return f.makeMd(e);
|
||
};
|
||
return d.onReady = function() {
|
||
f = new r.converter(), e("#input-file-import-harddrive-markdown").change(a), e("#dropzone-import-harddrive-markdown, #wmd-input").each(function() {
|
||
this.addEventListener("dragover", c, !1), this.addEventListener("drop", a, !1);
|
||
}), e("#input-file-import-harddrive-html").change(l), e("#dropzone-import-harddrive-html").each(function() {
|
||
this.addEventListener("dragover", c, !1), this.addEventListener("drop", l, !1);
|
||
}), e(".action-convert-html").click(function(e) {
|
||
var t = i.getInputTextValue("#input-convert-html", e);
|
||
if (void 0 !== t) {
|
||
if (t = f.makeMd(t), void 0 === t) return h.onError("Invalid HTML code."), void 0;
|
||
var n = u.createFile(void 0, t);
|
||
u.selectFile(n);
|
||
}
|
||
});
|
||
}, d;
|
||
}), define("extensions/documentTitle", [ "jquery", "underscore", "classes/Extension" ], function(e, t, n) {
|
||
var i, o = new n("documentTitle", "Document Title");
|
||
o.onLayoutCreated = function(e) {
|
||
i = e;
|
||
};
|
||
var r, s, a = t.debounce(function(t) {
|
||
if (t === r) {
|
||
var n = r.title;
|
||
document.title = "StackEdit — " + n, s.html(r.composeTitle()), e(".file-title").text(n),
|
||
e(".input-file-title").val(n), i && i.resizeAll();
|
||
}
|
||
}, 50);
|
||
return o.onFileSelected = function(e) {
|
||
r = e, a(e);
|
||
}, o.onTitleChanged = a, o.onSyncExportSuccess = a, o.onSyncRemoved = a, o.onNewPublishSuccess = a,
|
||
o.onPublishRemoved = a, o.onReady = a, o.onReady = function() {
|
||
s = e(".file-title-navbar"), s.hover(function() {
|
||
var e = s[0].scrollWidth - s.outerWidth();
|
||
s.stop(!0, !0).animate({
|
||
scrollLeft: e
|
||
}, 15 * e, "linear");
|
||
}, function() {
|
||
s.stop(!0, !0).scrollLeft(0);
|
||
}).click(function() {
|
||
s.stop(!0, !0).scrollLeft(0);
|
||
});
|
||
}, o;
|
||
}), function(e, t) {
|
||
function n(e, t, n) {
|
||
return e.addEventListener ? (e.addEventListener(t, n, !1), void 0) : (e.attachEvent("on" + t, n),
|
||
void 0);
|
||
}
|
||
function i(e) {
|
||
if ("keypress" == e.type) {
|
||
var t = String.fromCharCode(e.which);
|
||
return e.shiftKey || (t = t.toLowerCase()), t;
|
||
}
|
||
return k[e.which] ? k[e.which] : A[e.which] ? A[e.which] : String.fromCharCode(e.which).toLowerCase();
|
||
}
|
||
function o(e, t) {
|
||
return e.sort().join(",") === t.sort().join(",");
|
||
}
|
||
function r(e) {
|
||
e = e || {};
|
||
var t, n = !1;
|
||
for (t in D) e[t] ? n = !0 : D[t] = 0;
|
||
n || (I = !1);
|
||
}
|
||
function s(e, t, n, i, r, s) {
|
||
var a, l, c = [], u = n.type;
|
||
if (!F[e]) return [];
|
||
for ("keyup" == u && p(e) && (t = [ e ]), a = 0; a < F[e].length; ++a) if (l = F[e][a],
|
||
(i || !l.seq || D[l.seq] == l.level) && u == l.action && ("keypress" == u && !n.metaKey && !n.ctrlKey || o(t, l.modifiers))) {
|
||
var d = !i && l.combo == r, h = i && l.seq == i && l.level == s;
|
||
(d || h) && F[e].splice(a, 1), c.push(l);
|
||
}
|
||
return c;
|
||
}
|
||
function a(e) {
|
||
var t = [];
|
||
return e.shiftKey && t.push("shift"), e.altKey && t.push("alt"), e.ctrlKey && t.push("ctrl"),
|
||
e.metaKey && t.push("meta"), t;
|
||
}
|
||
function l(e) {
|
||
return e.preventDefault ? (e.preventDefault(), void 0) : (e.returnValue = !1, void 0);
|
||
}
|
||
function c(e) {
|
||
return e.stopPropagation ? (e.stopPropagation(), void 0) : (e.cancelBubble = !0,
|
||
void 0);
|
||
}
|
||
function u(e, t, n, i) {
|
||
M.stopCallback(t, t.target || t.srcElement, n, i) || e(t, n) === !1 && (l(t), c(t));
|
||
}
|
||
function d(e, t, n) {
|
||
var i, o = s(e, t, n), a = {}, l = 0, c = !1;
|
||
for (i = 0; i < o.length; ++i) o[i].seq && (l = Math.max(l, o[i].level));
|
||
for (i = 0; i < o.length; ++i) if (o[i].seq) {
|
||
if (o[i].level != l) continue;
|
||
c = !0, a[o[i].seq] = 1, u(o[i].callback, n, o[i].combo, o[i].seq);
|
||
} else c || u(o[i].callback, n, o[i].combo);
|
||
var d = "keypress" == n.type && $;
|
||
n.type != I || p(e) || d || r(a), $ = c && "keydown" == n.type;
|
||
}
|
||
function h(e) {
|
||
"number" != typeof e.which && (e.which = e.keyCode);
|
||
var t = i(e);
|
||
if (t) return "keyup" == e.type && L === t ? (L = !1, void 0) : (M.handleKey(t, a(e), e),
|
||
void 0);
|
||
}
|
||
function p(e) {
|
||
return "shift" == e || "ctrl" == e || "alt" == e || "meta" == e;
|
||
}
|
||
function f() {
|
||
clearTimeout(E), E = setTimeout(r, 1e3);
|
||
}
|
||
function g() {
|
||
if (!C) {
|
||
C = {};
|
||
for (var e in k) e > 95 && 112 > e || k.hasOwnProperty(e) && (C[k[e]] = e);
|
||
}
|
||
return C;
|
||
}
|
||
function m(e, t, n) {
|
||
return n || (n = g()[e] ? "keydown" : "keypress"), "keypress" == n && t.length && (n = "keydown"),
|
||
n;
|
||
}
|
||
function v(e, t, n, o) {
|
||
function s(t) {
|
||
return function() {
|
||
I = t, ++D[e], f();
|
||
};
|
||
}
|
||
function a(t) {
|
||
u(n, t, e), "keyup" !== o && (L = i(t)), setTimeout(r, 10);
|
||
}
|
||
D[e] = 0;
|
||
for (var l = 0; l < t.length; ++l) {
|
||
var c = l + 1 === t.length, d = c ? a : s(o || y(t[l + 1]).action);
|
||
w(t[l], d, o, e, l);
|
||
}
|
||
}
|
||
function b(e) {
|
||
return "+" === e ? [ "+" ] : e.split("+");
|
||
}
|
||
function y(e, t) {
|
||
var n, i, o, r = [];
|
||
for (n = b(e), o = 0; o < n.length; ++o) i = n[o], _[i] && (i = _[i]), t && "keypress" != t && S[i] && (i = S[i],
|
||
r.push("shift")), p(i) && r.push(i);
|
||
return t = m(i, r, t), {
|
||
key: i,
|
||
modifiers: r,
|
||
action: t
|
||
};
|
||
}
|
||
function w(e, t, n, i, o) {
|
||
T[e + ":" + n] = t, e = e.replace(/\s+/g, " ");
|
||
var r, a = e.split(" ");
|
||
return a.length > 1 ? (v(e, a, t, n), void 0) : (r = y(e, n), F[r.key] = F[r.key] || [],
|
||
s(r.key, r.modifiers, {
|
||
type: r.action
|
||
}, i, e, o), F[r.key][i ? "unshift" : "push"]({
|
||
callback: t,
|
||
modifiers: r.modifiers,
|
||
action: r.action,
|
||
seq: i,
|
||
level: o,
|
||
combo: e
|
||
}), void 0);
|
||
}
|
||
function x(e, t, n) {
|
||
for (var i = 0; i < e.length; ++i) w(e[i], t, n);
|
||
}
|
||
for (var C, E, k = {
|
||
8: "backspace",
|
||
9: "tab",
|
||
13: "enter",
|
||
16: "shift",
|
||
17: "ctrl",
|
||
18: "alt",
|
||
20: "capslock",
|
||
27: "esc",
|
||
32: "space",
|
||
33: "pageup",
|
||
34: "pagedown",
|
||
35: "end",
|
||
36: "home",
|
||
37: "left",
|
||
38: "up",
|
||
39: "right",
|
||
40: "down",
|
||
45: "ins",
|
||
46: "del",
|
||
91: "meta",
|
||
93: "meta",
|
||
224: "meta"
|
||
}, A = {
|
||
106: "*",
|
||
107: "+",
|
||
109: "-",
|
||
110: ".",
|
||
111: "/",
|
||
186: ";",
|
||
187: "=",
|
||
188: ",",
|
||
189: "-",
|
||
190: ".",
|
||
191: "/",
|
||
192: "`",
|
||
219: "[",
|
||
220: "\\",
|
||
221: "]",
|
||
222: "'"
|
||
}, S = {
|
||
"~": "`",
|
||
"!": "1",
|
||
"@": "2",
|
||
"#": "3",
|
||
$: "4",
|
||
"%": "5",
|
||
"^": "6",
|
||
"&": "7",
|
||
"*": "8",
|
||
"(": "9",
|
||
")": "0",
|
||
_: "-",
|
||
"+": "=",
|
||
":": ";",
|
||
'"': "'",
|
||
"<": ",",
|
||
">": ".",
|
||
"?": "/",
|
||
"|": "\\"
|
||
}, _ = {
|
||
option: "alt",
|
||
command: "meta",
|
||
"return": "enter",
|
||
escape: "esc",
|
||
mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? "meta" : "ctrl"
|
||
}, F = {}, T = {}, D = {}, L = !1, $ = !1, I = !1, R = 1; 20 > R; ++R) k[111 + R] = "f" + R;
|
||
for (R = 0; 9 >= R; ++R) k[R + 96] = R;
|
||
n(t, "keypress", h), n(t, "keydown", h), n(t, "keyup", h);
|
||
var M = {
|
||
bind: function(e, t, n) {
|
||
return e = e instanceof Array ? e : [ e ], x(e, t, n), this;
|
||
},
|
||
unbind: function(e, t) {
|
||
return M.bind(e, function() {}, t);
|
||
},
|
||
trigger: function(e, t) {
|
||
return T[e + ":" + t] && T[e + ":" + t]({}, e), this;
|
||
},
|
||
reset: function() {
|
||
return F = {}, T = {}, this;
|
||
},
|
||
stopCallback: function(e, t) {
|
||
return (" " + t.className + " ").indexOf(" mousetrap ") > -1 ? !1 : "INPUT" == t.tagName || "SELECT" == t.tagName || "TEXTAREA" == t.tagName || t.isContentEditable;
|
||
},
|
||
handleKey: d
|
||
};
|
||
e.Mousetrap = M, "function" == typeof define && define.amd && define("mousetrap", M);
|
||
}(window, document), define("classes/FileDescriptor", [ "underscore", "utils", "storage", "ace/range" ], function(e, t, n, i) {
|
||
function o(t, i, o, s) {
|
||
this.fileIndex = t, this._title = i || n[t + ".title"], this._editorScrollTop = parseInt(n[t + ".editorScrollTop"]) || 0,
|
||
this._editorSelectRange = function() {
|
||
try {
|
||
var i = n[t + ".editorSelectRange"].split(";");
|
||
return i = e.map(i, function(e) {
|
||
return parseInt(e);
|
||
}), new r(i[0], i[1], i[2], i[3]);
|
||
} catch (o) {
|
||
return new r(0, 0, 0, 0);
|
||
}
|
||
}(), this._editorEnd = parseInt(n[t + ".editorEnd"]) || 0, this._previewScrollTop = parseInt(n[t + ".previewScrollTop"]) || 0,
|
||
this._selectTime = parseInt(n[t + ".selectTime"]) || 0, this.syncLocations = o || {},
|
||
this.publishLocations = s || {}, Object.defineProperty(this, "title", {
|
||
get: function() {
|
||
return this._title;
|
||
},
|
||
set: function(e) {
|
||
this._title = e, n[this.fileIndex + ".title"] = e;
|
||
}
|
||
}), Object.defineProperty(this, "content", {
|
||
get: function() {
|
||
return n[this.fileIndex + ".content"];
|
||
},
|
||
set: function(e) {
|
||
n[this.fileIndex + ".content"] = e;
|
||
}
|
||
}), Object.defineProperty(this, "editorScrollTop", {
|
||
get: function() {
|
||
return this._editorScrollTop;
|
||
},
|
||
set: function(e) {
|
||
this._editorScrollTop = e, n[this.fileIndex + ".editorScrollTop"] = e;
|
||
}
|
||
}), Object.defineProperty(this, "editorSelectRange", {
|
||
get: function() {
|
||
return this._editorSelectRange;
|
||
},
|
||
set: function(e) {
|
||
this._editorSelectRange = e, n[this.fileIndex + ".editorSelectRange"] = [ e.start.row, e.start.column, e.end.row, e.end.column ].join(";");
|
||
}
|
||
}), Object.defineProperty(this, "previewScrollTop", {
|
||
get: function() {
|
||
return this._previewScrollTop;
|
||
},
|
||
set: function(e) {
|
||
this._previewScrollTop = e, n[this.fileIndex + ".previewScrollTop"] = e;
|
||
}
|
||
}), Object.defineProperty(this, "selectTime", {
|
||
get: function() {
|
||
return this._selectTime;
|
||
},
|
||
set: function(e) {
|
||
this._selectTime = e, n[this.fileIndex + ".selectTime"] = e;
|
||
}
|
||
});
|
||
}
|
||
var r = i.Range;
|
||
return o.prototype.addSyncLocation = function(e) {
|
||
t.storeAttributes(e), t.appendIndexToArray(this.fileIndex + ".sync", e.syncIndex),
|
||
this.syncLocations[e.syncIndex] = e;
|
||
}, o.prototype.removeSyncLocation = function(e) {
|
||
t.removeIndexFromArray(this.fileIndex + ".sync", e.syncIndex), delete this.syncLocations[e.syncIndex],
|
||
n.removeItem(e.syncIndex);
|
||
}, o.prototype.addPublishLocation = function(e) {
|
||
t.storeAttributes(e), t.appendIndexToArray(this.fileIndex + ".publish", e.publishIndex),
|
||
this.publishLocations[e.publishIndex] = e;
|
||
}, o.prototype.removePublishLocation = function(e) {
|
||
t.removeIndexFromArray(this.fileIndex + ".publish", e.publishIndex), delete this.publishLocations[e.publishIndex],
|
||
n.removeItem(e.publishIndex);
|
||
}, o.prototype.composeTitle = function() {
|
||
var t = [];
|
||
return e.chain(this.syncLocations).sortBy(function(e) {
|
||
return e.provider.providerId;
|
||
}).each(function(e) {
|
||
var n = "icon-provider-" + e.provider.providerId;
|
||
e.isRealtime === !0 && (n += " realtime"), t.push('<i class="' + n + '"></i>');
|
||
}), 0 !== e.size(this.syncLocations) && t.push('<i class="icon-refresh title-icon-category"></i>'),
|
||
e.chain(this.publishLocations).sortBy(function(e) {
|
||
return e.provider.providerId;
|
||
}).each(function(e) {
|
||
var n = "icon-provider-" + e.provider.providerId;
|
||
e.isRealtime === !0 && (n += " realtime"), t.push('<i class="' + n + '"></i>');
|
||
}), 0 !== e.size(this.publishLocations) && t.push('<i class="icon-share title-icon-category"></i>'),
|
||
t.push(e.escape(this.title)), t.join("");
|
||
}, o;
|
||
}), define("fileSystem", [ "underscore", "utils", "classes/FileDescriptor", "storage" ], function(e, t, n) {
|
||
var i = {};
|
||
return e.each(t.retrieveIndexArray("file.list"), function(e) {
|
||
i[e] = new n(e);
|
||
}), i;
|
||
}), define("text!html/documentSelectorSettingsBlock.html", [], function() {
|
||
return '<p>Allows toggling document with keyboard shortcuts.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-5 control-label" for="select-document-selector-orderby">Order\n by</label>\n <div class="col-lg-6">\n <select id="select-document-selector-orderby" class="form-control">\n <option value="title">Document title</option>\n <option value="mru">Most recently used</option>\n </select>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-5 control-label"\n for="input-document-selector-shortcut-previous">"Previous"\n shortcut <a href="http://craig.is/killing/mice#keys" target="_blank">(?)</a></label>\n <div class="col-lg-6">\n <input type="text" id="input-document-selector-shortcut-previous"\n class="form-control">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-5 control-label"\n for="input-document-selector-shortcut-next">"Next"\n shortcut <a href="http://craig.is/killing/mice#keys" target="_blank">(?)</a></label>\n <div class="col-lg-6">\n <input type="text" id="input-document-selector-shortcut-next"\n class="form-control">\n </div>\n </div>\n</div>';
|
||
}), define("extensions/documentSelector", [ "jquery", "underscore", "crel", "utils", "classes/Extension", "mousetrap", "fileSystem", "text!html/documentSelectorSettingsBlock.html" ], function(e, t, n, i, o, r, s, a) {
|
||
var l = new o("documentSelector", "Document Selector", !0, !0);
|
||
l.settingsBlock = a, l.defaultConfig = {
|
||
orderBy: "mru",
|
||
shortcutPrevious: "Ctrl+[",
|
||
shortcutNext: "Ctrl+]"
|
||
}, l.onLoadSettings = function() {
|
||
i.setInputValue("#select-document-selector-orderby", l.config.orderBy), i.setInputValue("#input-document-selector-shortcut-previous", l.config.shortcutPrevious),
|
||
i.setInputValue("#input-document-selector-shortcut-next", l.config.shortcutNext);
|
||
}, l.onSaveSettings = function(e, t) {
|
||
e.orderBy = i.getInputValue("#select-document-selector-orderby"), e.shortcutPrevious = i.getInputTextValue("#input-document-selector-shortcut-previous", t),
|
||
e.shortcutNext = i.getInputTextValue("#input-document-selector-shortcut-next", t);
|
||
};
|
||
var c;
|
||
l.onAceCreated = function(e) {
|
||
c = e;
|
||
};
|
||
var u;
|
||
l.onFileMgrCreated = function(e) {
|
||
u = e;
|
||
};
|
||
var d, h, p, f, g, m, v, b = [ '<li class="<%= isCurrent ? "disabled" : "" %>" data-file-index="<%= fileDesc.fileIndex %>">', ' <a href="#">', " <%= fileDesc.composeTitle() %>", " </a>", "</li>" ].join(""), y = t.debounce(function() {
|
||
var n = t.chain(s).sortBy(f).reduce(function(e, n) {
|
||
return e + t.template(b, {
|
||
fileDesc: n,
|
||
isCurrent: n === g
|
||
});
|
||
}, "").value();
|
||
d.innerHTML = n, p = [], h = {}, t.each(d.querySelectorAll("li"), function(t) {
|
||
var n = e(t);
|
||
p.push(n);
|
||
var i = s[n.data("fileIndex")];
|
||
h[i.fileIndex] = n, n.find("a").click(function() {
|
||
m = void 0, n.hasClass("disabled") ? void 0 !== c ? c.focus() : v.focus() : u.selectFile(i);
|
||
});
|
||
});
|
||
}, 50);
|
||
return l.onFileSelected = function(e) {
|
||
g = e, y();
|
||
}, l.onFileCreated = y, l.onFileDeleted = y, l.onTitleChanged = y, l.onSyncExportSuccess = y,
|
||
l.onSyncRemoved = y, l.onNewPublishSuccess = y, l.onPublishRemoved = y, l.onReady = function() {
|
||
v = e("#wmd-input"), "title" == l.config.orderBy ? f = function(e) {
|
||
return e.title.toLowerCase();
|
||
} : "mru" == l.config.orderBy && (f = function(e) {
|
||
return -e.selectTime;
|
||
}), d = n("ul", {
|
||
"class": "dropdown-menu dropdown-file-selector"
|
||
}), document.querySelector(".ui-layout-resizer-north").appendChild(n("div", n("div", {
|
||
"data-toggle": "dropdown"
|
||
}), d));
|
||
var i = e(d).dropdown(), o = e(".document-panel .collapse-button");
|
||
o.prop("title", t.template("<%= title %> <%= shortcutPrevious %> <%= shortcutNext %>", {
|
||
title: o.prop("title"),
|
||
shortcutPrevious: l.config.shortcutPrevious,
|
||
shortcutNext: l.config.shortcutNext
|
||
}));
|
||
var s = l.config.shortcutPrevious.toLowerCase();
|
||
r.bind(s, function() {
|
||
void 0 === m && (i.dropdown("toggle"), m = h[g.fileIndex]);
|
||
var e = t.indexOf(p, m) - 1;
|
||
return -2 === e && (e = -1), m = p[(e + p.length) % p.length], t.defer(function() {
|
||
m.find("a").focus();
|
||
}), !1;
|
||
});
|
||
var a = l.config.shortcutNext.toLowerCase();
|
||
r.bind(l.config.shortcutNext.toLowerCase(), function() {
|
||
void 0 === m && (i.dropdown("toggle"), m = h[g.fileIndex]);
|
||
var e = t.indexOf(p, m) + 1;
|
||
return m = p[e % p.length], t.defer(function() {
|
||
m.find("a").focus();
|
||
}), !1;
|
||
});
|
||
var c = s.indexOf("+"), u = -1 === c ? s : s.substring(0, c), b = a.indexOf("+"), y = -1 === b ? a : a.substring(0, b);
|
||
r.bind([ u, y ], function() {
|
||
void 0 !== m && m.find("a").click();
|
||
}, "keyup");
|
||
}, l;
|
||
}), define("classes/FolderDescriptor", [ "underscore", "utils", "storage", "fileSystem" ], function(e, t, n, i) {
|
||
function o(o, r) {
|
||
this.folderIndex = o, this._name = r || n[o + ".name"], this.fileList = {}, e.each(t.retrieveIndexArray(o + ".files"), function(e) {
|
||
try {
|
||
var n = i[e];
|
||
n.folder = this, this.fileList[e] = n;
|
||
} catch (r) {
|
||
t.removeIndexFromArray(o + ".files", e);
|
||
}
|
||
}, this), Object.defineProperty(this, "name", {
|
||
get: function() {
|
||
return this._name;
|
||
},
|
||
set: function(e) {
|
||
this._name = e, n[this.folderIndex + ".name"] = e;
|
||
}
|
||
});
|
||
}
|
||
return o.prototype.addFile = function(e) {
|
||
e.folder = this, t.appendIndexToArray(this.folderIndex + ".files", e.fileIndex),
|
||
this.fileList[e.fileIndex] = e;
|
||
}, o.prototype.removeFile = function(e) {
|
||
e.folder = void 0, t.removeIndexFromArray(this.folderIndex + ".files", e.fileIndex),
|
||
delete this.fileList[e.fileIndex];
|
||
}, o;
|
||
}), define("folderList", [ "underscore", "utils", "classes/FolderDescriptor", "storage" ], function(e, t, n) {
|
||
var i = {};
|
||
return e.each(t.retrieveIndexArray("folder.list"), function(e) {
|
||
i[e] = new n(e);
|
||
}), i;
|
||
}), define("extensions/documentPanel", [ "jquery", "underscore", "utils", "classes/Extension", "folderList", "fileSystem" ], function(e, t, n, i, o, r) {
|
||
function s(n) {
|
||
if (n != y) {
|
||
if (y = n, b.scrollTop = 0, !n) return p.addClass("hide"), d.removeClass("hide"),
|
||
void 0;
|
||
var i = n.toLowerCase().split(/\s+/);
|
||
t.each(h.querySelectorAll(".file"), function(n) {
|
||
var o = e(n), r = o.text().toLowerCase();
|
||
o.toggle(!t.some(i, function(e) {
|
||
return -1 === r.indexOf(e);
|
||
}));
|
||
}), p.removeClass("hide"), d.addClass("hide");
|
||
}
|
||
}
|
||
var a, l = new i("documentPanel", "Document Panel");
|
||
l.onFileMgrCreated = function(e) {
|
||
a = e;
|
||
};
|
||
var c, u, d, h, p, f, g = [ '<a href="#"', ' class="list-group-item folder clearfix"', ' data-folder-index="<%= folderDesc.folderIndex %>"', ' data-toggle="collapse"', ' data-target=".document-panel .file-list.<%= id %>">', ' <div class="pull-right file-count">', " <%= _.size(folderDesc.fileList) %>", " </div>", ' <i class="icon-folder"></i> <%= folderDesc.name %>', "</a>", '<div class="file-list collapse <%= id %> clearfix">', " <%= fileListHtml %>", "</div>" ].join(""), m = [ '<a href="#"', ' class="list-group-item file<%= fileDesc === selectedFileDesc ? " active" : "" %>"', ' data-file-index="<%= fileDesc.fileIndex %>"', ' data-toggle="collapse"', ' data-target=".document-panel">', " <%= fileDesc.composeTitle() %>", "</a>" ].join(""), v = t.debounce(function() {
|
||
var n = t.filter(r, function(e) {
|
||
return void 0 === e.folder;
|
||
}), i = t.chain(n).sortBy(function(e) {
|
||
return e.title.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + "<li>" + t.template(m, {
|
||
fileDesc: n,
|
||
selectedFileDesc: f
|
||
}) + "</li>";
|
||
}, "").value();
|
||
i = i && '<ul class="nav">' + i + "</ul>", t.chain(o).sortBy(function(e) {
|
||
return e.name.toLowerCase();
|
||
}).each(function(e) {
|
||
var n = t.chain(e.fileList).sortBy(function(e) {
|
||
return e.title.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + "<li>" + t.template(m, {
|
||
fileDesc: n,
|
||
selectedFileDesc: f
|
||
}) + "</li>";
|
||
}, "").value();
|
||
n = n && '<ul class="nav">' + n + "</ul>", i += t.template(g, {
|
||
folderDesc: e,
|
||
fileListHtml: n,
|
||
id: e.folderIndex.replace(".", "")
|
||
});
|
||
}), u.innerHTML = i;
|
||
var s = t.chain(r).sortBy(function(e) {
|
||
return e.title.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + "<li>" + t.template(m, {
|
||
fileDesc: n,
|
||
selectedFileDesc: f
|
||
}) + "</li>";
|
||
}, "").value();
|
||
s = '<ul class="nav">' + s + "</ul>", h.innerHTML = s, t.each(c.querySelectorAll(".file"), function(t) {
|
||
var n = e(t);
|
||
n.click(function() {
|
||
var e = r[n.data("fileIndex")];
|
||
e && e !== f && a.selectFile(e);
|
||
});
|
||
});
|
||
}, 50);
|
||
l.onFileSelected = function(e) {
|
||
f = e, v();
|
||
}, l.onFileCreated = v, l.onFileDeleted = v, l.onTitleChanged = v, l.onSyncExportSuccess = v,
|
||
l.onSyncRemoved = v, l.onNewPublishSuccess = v, l.onPublishRemoved = v, l.onFoldersChanged = v;
|
||
var b, y = "";
|
||
return l.onReady = function() {
|
||
c = document.querySelector(".document-panel"), b = c.querySelector(".panel-content"),
|
||
u = c.querySelector(".document-list"), d = e(u), h = c.querySelector(".document-list-filtered"),
|
||
p = e(h), e(c).on("show.bs.collapse", function(t) {
|
||
if (t.target === c) {
|
||
var n = f.folder;
|
||
void 0 !== n && e(c.querySelector(".file-list." + n.folderIndex.replace(".", ""))).collapse("show");
|
||
}
|
||
}).on("shown.bs.collapse", function(e) {
|
||
if (e.target === c) {
|
||
t.val(""), s("");
|
||
var n = u.querySelector(".file.active");
|
||
n && (b.scrollTop += n.getBoundingClientRect().top - 120);
|
||
}
|
||
});
|
||
var t = e(c.querySelector(".search-bar .form-control"));
|
||
t.bind("propertychange keyup input paste", function() {
|
||
s(t.val());
|
||
});
|
||
}, l;
|
||
}), define("extensions/documentManager", [ "jquery", "underscore", "constants", "utils", "storage", "classes/Extension", "classes/FolderDescriptor", "folderList", "fileSystem" ], function(e, t, n, i, o, r, s, a, l) {
|
||
function c() {
|
||
D = [], T = [], t.each(b.querySelectorAll('input[type="checkbox"]:checked'), function(t) {
|
||
var n = e(t.parentNode.parentNode), i = a[n.data("folderIndex")], o = l[n.data("fileIndex")];
|
||
void 0 !== i ? D.push(i) : void 0 !== o && T.push(o);
|
||
});
|
||
}
|
||
function u() {
|
||
if (0 === t.size(T)) return d(), void 0;
|
||
var n = t.chain(T).sortBy(function(e) {
|
||
return e.title.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + t.template(F, {
|
||
fileDesc: n
|
||
});
|
||
}, "").value();
|
||
y.innerHTML = '<ul class="file-list nav">' + n + "</ul>", e(v.querySelectorAll(".document-list")).addClass("hide"),
|
||
e(v.querySelectorAll(".confirm-delete, .selected-document-list")).removeClass("hide");
|
||
}
|
||
function d() {
|
||
t.each(T, function(e) {
|
||
e.folder && e.folder.removeFile(e), p.deleteFile(e);
|
||
}), t.each(D, function(e) {
|
||
i.removeIndexFromArray("folder.list", e.folderIndex), o.removeItem(e.folderIndex + ".name"),
|
||
o.removeItem(e.folderIndex + ".files"), delete a[e.folderIndex];
|
||
}), g.onFoldersChanged();
|
||
}
|
||
function h() {
|
||
c(), w.toggleClass("disabled", 0 === t.size(a) || 0 === t.size(T)), x.toggleClass("disabled", 0 === t.size(D) && 0 === t.size(T));
|
||
}
|
||
var p, f = new r("documentManager", "Document Manager", !1, !0);
|
||
f.onFileMgrCreated = function(e) {
|
||
p = e;
|
||
};
|
||
var g;
|
||
f.onEventMgrCreated = function(e) {
|
||
g = e;
|
||
};
|
||
var m, v, b, y, w, x, C, E, k, A = [ '<a href="#" class="list-group-item folder clearfix" data-folder-index="<%= folderDesc.folderIndex %>" data-toggle="collapse" data-target=".modal-document-manager .file-list.<%= id %>">', '<label class="checkbox" title="Select"><input type="checkbox"></label>', '<button class="btn btn-default button-delete" title="Delete"><i class="icon-trash"></i></button>', '<button class="btn btn-default button-rename" title="Rename"><i class="icon-pencil"></i></button>', '<div class="pull-right file-count"><%= _.size(folderDesc.fileList) %></div>', '<div class="name"><i class="icon-folder"></i> ', "<%= folderDesc.name %></div>", '<input type="text" class="input-rename form-control hide"></a>', '<div class="file-list collapse <%= id %> clearfix"><%= fileListHtml %></div>' ].join(""), S = [ '<li class="list-group-item file clearfix" data-file-index="<%= fileDesc.fileIndex %>">', '<label class="checkbox" title="Select"><input type="checkbox"></label>', '<button class="btn btn-default button-delete" title="Delete"><i class="icon-trash"></i></button>', '<button class="btn btn-default button-rename" title="Rename"><i class="icon-pencil"></i></button>', '<div class="name"><%= fileDesc.composeTitle() %></div>', '<input type="text" class="input-rename form-control hide"></li>' ].join(""), _ = [ '<a href="#" class="list-group-item folder clearfix" data-folder-index="<%= folderDesc.folderIndex %>">', '<div class="pull-right file-count"><%= _.size(folderDesc.fileList) %></div>', '<div class="name"><i class="icon-forward"></i> ', "<%= folderDesc.name %></div></a>" ].join(""), F = [ '<li class="list-group-item file clearfix">', '<div class="name"><%= fileDesc.composeTitle() %></div></li>' ].join(""), T = [], D = [], L = t.debounce(function() {
|
||
if (m !== !1) {
|
||
h(), E.text(t.size(l)), k.text(t.size(a) + 1), C = t.filter(l, function(e) {
|
||
return void 0 === e.folder;
|
||
});
|
||
var n = [ '<a href="#" class="list-group-item folder root-folder clearfix" data-toggle="collapse" data-target=".modal-document-manager .file-list.root-folder">', '<label class="checkbox" title="Select"><input type="checkbox"></label>', '<div class="pull-right file-count">', t.size(C), "</div>", '<div class="name"><i class="icon-folder"></i> ', "ROOT folder</div></a>" ].join(""), i = t.chain(C).sortBy(function(e) {
|
||
return e.title.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + t.template(S, {
|
||
fileDesc: n
|
||
});
|
||
}, "").value();
|
||
i = i && '<ul class="nav">' + i + "</ul>", n += '<div class="file-list collapse root-folder clearfix">' + i + "</div>",
|
||
t.chain(a).sortBy(function(e) {
|
||
return e.name.toLowerCase();
|
||
}).each(function(e) {
|
||
var i = t.chain(e.fileList).sortBy(function(e) {
|
||
return e.title.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + t.template(S, {
|
||
fileDesc: n
|
||
});
|
||
}, "").value();
|
||
i = i && '<ul class="nav">' + i + "</ul>", n += t.template(A, {
|
||
folderDesc: e,
|
||
fileListHtml: i,
|
||
id: e.folderIndex.replace(".", "")
|
||
});
|
||
}), b.innerHTML = n, t.each(b.querySelectorAll(".button-delete"), function(t) {
|
||
var n = e(t);
|
||
n.click(function(e) {
|
||
e.stopPropagation();
|
||
var t = n.parent(), i = a[t.data("folderIndex")], o = l[t.data("fileIndex")];
|
||
T = [], D = [], i ? (D.push(i), T = i.fileList) : o && T.push(o), u();
|
||
});
|
||
}), t.each(b.querySelectorAll(".button-rename"), function(t) {
|
||
var n = e(t);
|
||
n.click(function(e) {
|
||
e.stopPropagation();
|
||
var t, i = n.parent(), o = a[i.data("folderIndex")], r = l[i.data("fileIndex")];
|
||
o ? t = o.name : r && (t = r.title), i.find(".name").addClass("hide"), i.find(".input-rename").removeClass("hide").val(t)[0].select();
|
||
});
|
||
}), t.each(b.querySelectorAll(".input-rename"), function(t) {
|
||
function n() {
|
||
var t = i.parent(), n = e.trim(i.val()), o = a[t.data("folderIndex")], r = l[t.data("fileIndex")];
|
||
n && o && n != o.name ? (o.name = n, g.onFoldersChanged()) : n && r && n != r.title ? (r.title = n,
|
||
g.onTitleChanged(r)) : (i.addClass("hide"), t.find(".name").removeClass("hide"));
|
||
}
|
||
var i = e(t);
|
||
i.blur(function() {
|
||
n();
|
||
}).keyup(function(e) {
|
||
13 == e.keyCode && (n(), e.stopPropagation()), 27 == e.keyCode && (i.val(""), n(),
|
||
e.stopPropagation());
|
||
});
|
||
}), t.each(b.querySelectorAll(".file .checkbox"), function(t) {
|
||
var n = e(t);
|
||
n.click(function(e) {
|
||
e.stopPropagation();
|
||
}).find("[type=checkbox]").change(function() {
|
||
n.parents(".list-group").find(".folder [type=checkbox]").prop("checked", !1);
|
||
});
|
||
}), t.each(b.querySelectorAll(".folder .checkbox"), function(t) {
|
||
var n = e(t);
|
||
n.click(function(e) {
|
||
e.stopPropagation();
|
||
}).find("[type=checkbox]").change(function() {
|
||
n.parent().next().find("[type=checkbox]").prop("checked", this.checked);
|
||
});
|
||
}), e(b.querySelectorAll("[type=checkbox]")).change(h), e(b.querySelectorAll(".root-folder")).click();
|
||
}
|
||
}, 50);
|
||
return f.onFileCreated = L, f.onFileDeleted = L, f.onTitleChanged = L, f.onSyncExportSuccess = L,
|
||
f.onSyncRemoved = L, f.onNewPublishSuccess = L, f.onPublishRemoved = L, f.onFoldersChanged = L,
|
||
f.onReady = function() {
|
||
v = document.querySelector(".modal-document-manager"), b = v.querySelector(".list-group.document-list"),
|
||
E = e(v.querySelectorAll(".document-count")), k = e(v.querySelectorAll(".folder-count")),
|
||
y = v.querySelector(".list-group.selected-document-list");
|
||
var r = v.querySelector(".list-group.select-folder-list");
|
||
e(v).on("show.bs.modal", function() {
|
||
m = !0, L();
|
||
}).on("hide.bs.modal", function() {
|
||
m = !1;
|
||
}), e(v.querySelectorAll(".action-create-folder")).click(function() {
|
||
var r;
|
||
do r = "folder." + i.randomString(); while (t.has(a, r));
|
||
o[r + ".name"] = n.DEFAULT_FOLDER_NAME;
|
||
var l = new s(r, n.DEFAULT_FOLDER_NAME);
|
||
i.appendIndexToArray("folder.list", r), a[r] = l, g.onFoldersChanged();
|
||
var c = e(v.querySelector('[data-folder-index="' + r + '"] .button-rename')).click();
|
||
v.scrollTop += c.offset().top - 50;
|
||
}), e(v.querySelectorAll(".action-select-all")).click(function() {
|
||
e(b.querySelectorAll('input[type="checkbox"]')).prop("checked", !0);
|
||
}), e(v.querySelectorAll(".action-unselect-all")).click(function() {
|
||
e(b.querySelectorAll('input[type="checkbox"]')).prop("checked", !1);
|
||
});
|
||
var l = e(v.querySelectorAll(".action-delete-items")).click(function() {
|
||
x.hasClass("disabled") || (c(), u());
|
||
});
|
||
x = l.parent(), e(v.querySelectorAll(".action-delete-items-confirm")).click(function() {
|
||
d(), e(v.querySelectorAll(".document-list")).removeClass("hide"), e(v.querySelectorAll(".confirm-delete, .selected-document-list")).addClass("hide");
|
||
});
|
||
var h = e(v.querySelectorAll(".action-move-items")).click(function() {
|
||
if (!w.hasClass("disabled")) {
|
||
c();
|
||
var n = [ '<a href="#" class="list-group-item folder clearfix">', '<div class="pull-right file-count">', t.size(C), "</div>", '<div class="name"><i class="icon-forward"></i> ', "ROOT folder</div></a>" ].join("");
|
||
n += t.chain(a).sortBy(function(e) {
|
||
return e.name.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + t.template(_, {
|
||
folderDesc: n
|
||
});
|
||
}, "").value(), r.innerHTML = n, t.each(r.querySelectorAll(".folder"), function(n) {
|
||
n = e(n), n.click(function() {
|
||
var i = a[n.data("folderIndex")];
|
||
t.each(T, function(e) {
|
||
e.folder && e.folder.removeFile(e), i && i.addFile(e);
|
||
}), g.onFoldersChanged(), e(v.querySelectorAll(".document-list")).removeClass("hide"),
|
||
e(v.querySelectorAll(".choose-folder, .select-folder-list")).addClass("hide");
|
||
});
|
||
}), e(v.querySelectorAll(".document-list")).addClass("hide"), e(v.querySelectorAll(".choose-folder, .select-folder-list")).removeClass("hide");
|
||
}
|
||
});
|
||
w = h.parent(), e(v.querySelectorAll(".action-cancel")).click(function() {
|
||
e(v.querySelectorAll(".document-list")).removeClass("hide"), e(v.querySelectorAll(".confirm-delete, .choose-folder, .selected-document-list, .select-folder-list")).addClass("hide");
|
||
});
|
||
}, f;
|
||
}), define("extensions/workingIndicator", [ "jquery", "underscore", "classes/Extension" ], function(e, t, n) {
|
||
var i, o, r = new n("workingIndicator", "Working Indicator");
|
||
return r.onAsyncRunning = function(e) {
|
||
i.toggleClass("working", e), o.toggleClass("hide", !e);
|
||
}, r.onReady = function() {
|
||
i = e(document.body), o = e('<div class="hide">'), e(".working-indicator").append(o);
|
||
for (var t = 0; 3 > t; t++) o.append(e('<div class="bar">').css({
|
||
"animation-delay": (15 * t / 100).toPrecision(3) + "s",
|
||
"-webkit-animation-delay": (15 * t / 100).toPrecision(3) + "s"
|
||
}));
|
||
}, r;
|
||
}), function(e) {
|
||
var t = function() {
|
||
return !1 === e.support.boxModel && e.support.objectAll && $support.leadingWhitespace;
|
||
}();
|
||
e.jGrowl = function(t, n) {
|
||
0 == e("#jGrowl").size() && e('<div id="jGrowl"></div>').addClass(n && n.position ? n.position : e.jGrowl.defaults.position).appendTo("body"),
|
||
e("#jGrowl").jGrowl(t, n);
|
||
}, e.fn.jGrowl = function(t, n) {
|
||
if (e.isFunction(this.each)) {
|
||
var i = arguments;
|
||
return this.each(function() {
|
||
void 0 == e(this).data("jGrowl.instance") && (e(this).data("jGrowl.instance", e.extend(new e.fn.jGrowl(), {
|
||
notifications: [],
|
||
element: null,
|
||
interval: null
|
||
})), e(this).data("jGrowl.instance").startup(this)), e.isFunction(e(this).data("jGrowl.instance")[t]) ? e(this).data("jGrowl.instance")[t].apply(e(this).data("jGrowl.instance"), e.makeArray(i).slice(1)) : e(this).data("jGrowl.instance").create(t, n);
|
||
});
|
||
}
|
||
}, e.extend(e.fn.jGrowl.prototype, {
|
||
defaults: {
|
||
pool: 0,
|
||
header: "",
|
||
group: "",
|
||
sticky: !1,
|
||
position: "top-right",
|
||
glue: "after",
|
||
theme: "default",
|
||
themeState: "highlight",
|
||
corners: "10px",
|
||
check: 250,
|
||
life: 3e3,
|
||
closeDuration: "normal",
|
||
openDuration: "normal",
|
||
easing: "swing",
|
||
closer: !0,
|
||
closeTemplate: "×",
|
||
closerTemplate: "<div>[ close all ]</div>",
|
||
log: function() {},
|
||
beforeOpen: function() {},
|
||
afterOpen: function() {},
|
||
open: function() {},
|
||
beforeClose: function() {},
|
||
close: function() {},
|
||
animateOpen: {
|
||
opacity: "show"
|
||
},
|
||
animateClose: {
|
||
opacity: "hide"
|
||
}
|
||
},
|
||
notifications: [],
|
||
element: null,
|
||
interval: null,
|
||
create: function(t, n) {
|
||
var n = e.extend({}, this.defaults, n);
|
||
"undefined" != typeof n.speed && (n.openDuration = n.speed, n.closeDuration = n.speed),
|
||
this.notifications.push({
|
||
message: t,
|
||
options: n
|
||
}), n.log.apply(this.element, [ this.element, t, n ]);
|
||
},
|
||
render: function(t) {
|
||
var n = this, i = t.message, o = t.options;
|
||
o.themeState = "" == o.themeState ? "" : "ui-state-" + o.themeState;
|
||
var t = e('<div class="jGrowl-notification ' + o.themeState + " ui-corner-all" + (void 0 != o.group && "" != o.group ? " " + o.group : "") + '">' + '<div class="jGrowl-close">' + o.closeTemplate + "</div>" + '<div class="jGrowl-header">' + o.header + "</div>" + '<div class="jGrowl-message">' + i + "</div></div>").data("jGrowl", o).addClass(o.theme).children("div.jGrowl-close").bind("click.jGrowl", function() {
|
||
e(this).parent().trigger("jGrowl.beforeClose");
|
||
}).parent();
|
||
e(t).bind("mouseover.jGrowl", function() {
|
||
e("div.jGrowl-notification", n.element).data("jGrowl.pause", !0);
|
||
}).bind("mouseout.jGrowl", function() {
|
||
e("div.jGrowl-notification", n.element).data("jGrowl.pause", !1);
|
||
}).bind("jGrowl.beforeOpen", function() {
|
||
0 != o.beforeOpen.apply(t, [ t, i, o, n.element ]) && e(this).trigger("jGrowl.open");
|
||
}).bind("jGrowl.open", function() {
|
||
0 != o.open.apply(t, [ t, i, o, n.element ]) && ("after" == o.glue ? e("div.jGrowl-notification:last", n.element).after(t) : e("div.jGrowl-notification:first", n.element).before(t),
|
||
e(this).animate(o.animateOpen, o.openDuration, o.easing, function() {
|
||
e.support.opacity === !1 && this.style.removeAttribute("filter"), null != e(this).data("jGrowl") && (e(this).data("jGrowl").created = new Date()),
|
||
e(this).trigger("jGrowl.afterOpen");
|
||
}));
|
||
}).bind("jGrowl.afterOpen", function() {
|
||
o.afterOpen.apply(t, [ t, i, o, n.element ]);
|
||
}).bind("jGrowl.beforeClose", function() {
|
||
0 != o.beforeClose.apply(t, [ t, i, o, n.element ]) && e(this).trigger("jGrowl.close");
|
||
}).bind("jGrowl.close", function() {
|
||
e(this).data("jGrowl.pause", !0), e(this).animate(o.animateClose, o.closeDuration, o.easing, function() {
|
||
e.isFunction(o.close) ? o.close.apply(t, [ t, i, o, n.element ]) !== !1 && e(this).remove() : e(this).remove();
|
||
});
|
||
}).trigger("jGrowl.beforeOpen"), "" != o.corners && void 0 != e.fn.corner && e(t).corner(o.corners),
|
||
e("div.jGrowl-notification:parent", n.element).size() > 1 && 0 == e("div.jGrowl-closer", n.element).size() && 0 != this.defaults.closer && e(this.defaults.closerTemplate).addClass("jGrowl-closer " + this.defaults.themeState + " ui-corner-all").addClass(this.defaults.theme).appendTo(n.element).animate(this.defaults.animateOpen, this.defaults.speed, this.defaults.easing).bind("click.jGrowl", function() {
|
||
e(this).siblings().trigger("jGrowl.beforeClose"), e.isFunction(n.defaults.closer) && n.defaults.closer.apply(e(this).parent()[0], [ e(this).parent()[0] ]);
|
||
});
|
||
},
|
||
update: function() {
|
||
e(this.element).find("div.jGrowl-notification:parent").each(function() {
|
||
void 0 != e(this).data("jGrowl") && void 0 != e(this).data("jGrowl").created && e(this).data("jGrowl").created.getTime() + parseInt(e(this).data("jGrowl").life) < new Date().getTime() && 1 != e(this).data("jGrowl").sticky && (void 0 == e(this).data("jGrowl.pause") || 1 != e(this).data("jGrowl.pause")) && e(this).trigger("jGrowl.beforeClose");
|
||
}), this.notifications.length > 0 && (0 == this.defaults.pool || e(this.element).find("div.jGrowl-notification:parent").size() < this.defaults.pool) && this.render(this.notifications.shift()),
|
||
e(this.element).find("div.jGrowl-notification:parent").size() < 2 && e(this.element).find("div.jGrowl-closer").animate(this.defaults.animateClose, this.defaults.speed, this.defaults.easing, function() {
|
||
e(this).remove();
|
||
});
|
||
},
|
||
startup: function(n) {
|
||
this.element = e(n).addClass("jGrowl").append('<div class="jGrowl-notification"></div>'),
|
||
this.interval = setInterval(function() {
|
||
e(n).data("jGrowl.instance").update();
|
||
}, parseInt(this.defaults.check)), t && e(this.element).addClass("ie6");
|
||
},
|
||
shutdown: function() {
|
||
e(this.element).removeClass("jGrowl").find("div.jGrowl-notification").remove(),
|
||
clearInterval(this.interval);
|
||
},
|
||
close: function() {
|
||
e(this.element).find("div.jGrowl-notification").each(function() {
|
||
e(this).trigger("jGrowl.beforeClose");
|
||
});
|
||
}
|
||
}), e.jGrowl.defaults = e.fn.jGrowl.prototype.defaults;
|
||
}(jQuery), define("jgrowl", [ "jquery" ], function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.jQuery.jGrowl;
|
||
};
|
||
}(this)), define("text!html/notificationsSettingsBlock.html", [], function() {
|
||
return '<p>Shows notification messages in the bottom-right corner of the\n screen.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-notifications-timeout">Timeout</label>\n <div class="col-lg-7 form-inline">\n <input type="text" id="input-notifications-timeout"\n class="col-lg-5 form-control"> <span class="help-inline">ms</span>\n </div>\n </div>\n</div>';
|
||
}), define("extensions/notifications", [ "jquery", "underscore", "utils", "logger", "classes/Extension", "jgrowl", "text!html/notificationsSettingsBlock.html" ], function(e, t, n, i, o, r, s) {
|
||
function a() {
|
||
p === !1 && (r.defaults.life = u.config.timeout, r.defaults.closer = !1, r.defaults.closeTemplate = "",
|
||
r.defaults.position = "bottom-right", p = !0);
|
||
}
|
||
function l(e, n, o) {
|
||
if (i.info(e), a(), e) {
|
||
var s = e.indexOf("|");
|
||
(-1 === s || (e = e.substring(0, s))) && (o = o || {}, n = n || "icon-info-circled",
|
||
r("<i class='icon-white " + n + "'></i> " + t.escape(e).replace(/\n/g, "<br/>"), o));
|
||
}
|
||
}
|
||
function c() {
|
||
f !== !1 && (d.toggleClass("hide", !g), h.toggleClass("hide", g));
|
||
}
|
||
var u = new o("notifications", "Notifications");
|
||
u.settingsBlock = s, u.defaultConfig = {
|
||
timeout: 8e3
|
||
}, u.onLoadSettings = function() {
|
||
n.setInputValue("#input-notifications-timeout", u.config.timeout);
|
||
}, u.onSaveSettings = function(e, t) {
|
||
e.timeout = n.getInputIntValue("#input-notifications-timeout", t, 1, 6e4);
|
||
};
|
||
var d, h, p = !1, f = !1;
|
||
u.onReady = function() {
|
||
f = !0, d = e(".navbar .offline-status"), h = e(".navbar .extension-buttons"), c();
|
||
}, u.onMessage = function(e) {
|
||
l(e);
|
||
}, u.onError = function(e) {
|
||
i.error(e), t.isString(e) ? l(e, "icon-attention") : t.isObject(e) && l(e.message, "icon-attention");
|
||
};
|
||
var g = !1;
|
||
return u.onOfflineChanged = function(e) {
|
||
g = e, c(), g === !0 ? l("You are offline.", "icon-attention-circled msg-offline") : l("You are back online!", "icon-signal");
|
||
}, u.onSyncImportSuccess = function(e, n) {
|
||
var i = t.map(e, function(e) {
|
||
return e.title;
|
||
}).join(", ");
|
||
l(i + " imported successfully from " + n.providerName + ".");
|
||
}, u.onSyncExportSuccess = function(e, t) {
|
||
l('"' + e.title + '" will now be synchronized on ' + t.provider.providerName + ".");
|
||
}, u.onSyncRemoved = function(e, t) {
|
||
l(t.provider.providerName + " synchronized location has been removed.");
|
||
}, u.onPublishSuccess = function(e) {
|
||
l('"' + e.title + '" successfully published.');
|
||
}, u.onNewPublishSuccess = function(e, t) {
|
||
l('"' + e.title + '" is now published on ' + t.provider.providerName + ".");
|
||
}, u.onPublishRemoved = function(e, t) {
|
||
l(t.provider.providerName + " publish location has been removed.");
|
||
}, u;
|
||
}), define("text!html/buttonToc.html", [], function() {
|
||
return '<button class="btn btn-info dropdown-toggle" title="Table of contents" data-toggle="dropdown">\n <i class="icon-list"></i>\n</button>\n<div class="dropdown-menu pull-right">\n <h3>Table of contents</h3>\n <div class="table-of-contents">\n </div>\n</div>\n';
|
||
}), define("text!html/tocSettingsBlock.html", [], function() {
|
||
return '<p>Generates a table of contents when a [TOC] marker is found.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-toc-marker">Marker\n RegExp</label>\n <div class="col-lg-7">\n \n <input type="text" id="input-toc-marker" class="col-lg-4 form-control">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-toc-maxdepth">Max depth</label>\n <div class="col-lg-7 form-inline">\n <input type="text" id="input-toc-maxdepth"\n class="col-lg-5 form-control" placeholder="6">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-toc-button">Button over preview</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-toc-button">\n </div>\n </div>\n </div>\n \n</div>';
|
||
}), define("extensions/toc", [ "jquery", "underscore", "utils", "classes/Extension", "text!html/buttonToc.html", "text!html/tocSettingsBlock.html" ], function(e, t, n, i, o, r) {
|
||
function s(e, t, n) {
|
||
this.tagName = e, this.anchor = t, this.text = n, this.children = [];
|
||
}
|
||
function a(e, n) {
|
||
function i() {
|
||
void 0 !== o && (o.children.length > 0 && (o.children = a(o.children, n + 1)), l.push(o));
|
||
}
|
||
n = n || 1;
|
||
var o, r = "H" + n, l = [];
|
||
return t.each(e, function(e) {
|
||
e.tagName != r ? n !== c.config.maxDepth && (void 0 === o && (o = new s()), o.children.push(e)) : (i(),
|
||
o = e);
|
||
}), i(), l;
|
||
}
|
||
function l() {
|
||
function e(e) {
|
||
for (var o = e.id || n.slugify(e.textContent) || "title", r = o, s = 0; t.has(i, r); ) r = o + "-" + ++s;
|
||
return i[r] = !0, e.id = r, r;
|
||
}
|
||
var i = {}, o = [];
|
||
return t.each(u.querySelectorAll("h1, h2, h3, h4, h5, h6"), function(t) {
|
||
o.push(new s(t.tagName, e(t), t.textContent));
|
||
}), o = a(o), '<div class="toc">\n<ul>\n' + o.join("") + "</ul>\n</div>\n";
|
||
}
|
||
var c = new i("toc", "Table of Contents", !0);
|
||
c.settingsBlock = r, c.defaultConfig = {
|
||
marker: "\\[(TOC|toc)\\]",
|
||
maxDepth: 6,
|
||
button: !0
|
||
}, c.onLoadSettings = function() {
|
||
n.setInputValue("#input-toc-marker", c.config.marker), n.setInputValue("#input-toc-maxdepth", c.config.maxDepth),
|
||
n.setInputChecked("#input-toc-button", c.config.button);
|
||
}, c.onSaveSettings = function(e, t) {
|
||
e.marker = n.getInputRegExpValue("#input-toc-marker", t), e.maxDepth = n.getInputIntValue("#input-toc-maxdepth"),
|
||
e.button = n.getInputChecked("#input-toc-button");
|
||
}, c.onCreatePreviewButton = function() {
|
||
return c.config.button ? o : void 0;
|
||
}, s.prototype.childrenToString = function() {
|
||
if (0 === this.children.length) return "";
|
||
var e = "<ul>\n";
|
||
return t.each(this.children, function(t) {
|
||
e += t.toString();
|
||
}), e += "</ul>\n";
|
||
}, s.prototype.toString = function() {
|
||
var e = "<li>";
|
||
return this.anchor && this.text && (e += '<a href="#' + this.anchor + '">' + this.text + "</a>"),
|
||
e += this.childrenToString() + "</li>\n";
|
||
};
|
||
var u;
|
||
return c.onPagedownConfigure = function(e) {
|
||
u = document.getElementById("preview-contents");
|
||
var n = new RegExp("^" + c.config.marker + "$");
|
||
e.hooks.chain("onPreviewRefresh", function() {
|
||
var e = document.querySelectorAll(".table-of-contents, .toc"), i = l();
|
||
t.each(u.getElementsByTagName("p"), function(e) {
|
||
n.test(e.innerHTML) && (e.innerHTML = i);
|
||
}), t.each(e, function(e) {
|
||
e.innerHTML = i;
|
||
});
|
||
});
|
||
}, c;
|
||
}), define("extensions/emailConverter", [ "classes/Extension" ], function(e) {
|
||
var t = new e("emailConverter", "Markdown Email", !0);
|
||
return t.settingsBlock = "<p>Converts email adresses in the form <email@example.com> into clickable links.</p>",
|
||
t.onPagedownConfigure = function(e) {
|
||
e.getConverter().hooks.chain("postConversion", function(e) {
|
||
return e.replace(/<(mailto\:)?([^\s>]+@[^\s>]+\.\S+?)>/g, function(e, t, n) {
|
||
return '<a href="mailto:' + n + '">' + n + "</a>";
|
||
});
|
||
});
|
||
}, t;
|
||
}), define("text!html/scrollLinkSettingsBlock.html", [], function() {
|
||
return "<p>Binds together editor and preview scrollbars.</p>\n<blockquote>\n <b>NOTE:</b> The mapping between Markdown and HTML is based on the\n position of the title elements (h1, h2...) in the page. Therefore if\n your document does not contain any title, the mapping will be linear and\n consequently less accurate.\n</blockquote>";
|
||
}), define("extensions/scrollLink", [ "jquery", "underscore", "classes/Extension", "text!html/scrollLinkSettingsBlock.html" ], function(e, t, n, i) {
|
||
var o = new n("scrollLink", "Scroll Link", !0, !0);
|
||
o.settingsBlock = i;
|
||
var r;
|
||
o.onAceCreated = function(e) {
|
||
r = e;
|
||
};
|
||
var s;
|
||
o.onSectionsCreated = function(e) {
|
||
s = e;
|
||
};
|
||
var a = 0;
|
||
o.onMarkdownTrim = function(e) {
|
||
a = e;
|
||
};
|
||
var l, c, u, d, h, p = [], f = [], g = t.debounce(function() {
|
||
function n(e) {
|
||
var t = m;
|
||
if (void 0 !== e) {
|
||
var n = document.createTextNode(e);
|
||
c.empty().append(n), t += c.prop("scrollHeight");
|
||
}
|
||
var i = o + t;
|
||
p.push({
|
||
startOffset: o,
|
||
endOffset: i,
|
||
height: t
|
||
}), o = i;
|
||
}
|
||
p = [];
|
||
var i = 0, o = 0, g = a, m = 0;
|
||
if (window.lightMode) {
|
||
c.innerWidth(l.innerWidth()), t.each(s, function(e, t) {
|
||
var i = e.text;
|
||
t !== s.length - 1 ? 0 === i.length && (i = void 0) : /\n$/.test(i) && (i += "\n"),
|
||
n(i);
|
||
});
|
||
var v = t.last(p).endOffset, b = l[0].scrollHeight, y = b / v;
|
||
p = t.map(p, function(e) {
|
||
return {
|
||
startOffset: e.startOffset * y,
|
||
endOffset: e.endOffset * y,
|
||
height: e.height * y
|
||
};
|
||
});
|
||
} else t.each(s, function(e) {
|
||
i += e.text.length + g, g = 0;
|
||
var t = r.session.doc.indexToPosition(i), n = r.session.documentToScreenPosition(t.row, t.column), s = n.row * r.renderer.lineHeight, a = s - o;
|
||
p.push({
|
||
startOffset: o,
|
||
endOffset: s,
|
||
height: a
|
||
}), o = s;
|
||
});
|
||
f = [];
|
||
var w, C = u.scrollTop();
|
||
u.find(".preview-content > .se-section-delimiter").each(function() {
|
||
if (void 0 === w) return w = 0, void 0;
|
||
var t = e(this), n = t.position().top + C;
|
||
f.push({
|
||
startOffset: w,
|
||
endOffset: n,
|
||
height: n - w
|
||
}), w = n;
|
||
});
|
||
var E = u.prop("scrollHeight");
|
||
f.push({
|
||
startOffset: w,
|
||
endOffset: E,
|
||
height: E - w
|
||
}), d = -10, h = -10, x();
|
||
}, 500), m = !1, v = !1, b = !1, y = !1, w = e("<div>"), x = t.throttle(function() {
|
||
function e(e, n, i) {
|
||
var o, r = t.find(n, function(t, n) {
|
||
return o = n, e < t.endOffset;
|
||
});
|
||
if (void 0 !== r) {
|
||
var s = (e - r.startOffset) / (r.height || 1), a = i[o];
|
||
return a.startOffset + a.height * s;
|
||
}
|
||
}
|
||
if (0 === p.length || p.length !== f.length) return x(), void 0;
|
||
var n = window.lightMode ? l.scrollTop() : r.renderer.getScrollTop();
|
||
0 > n && (n = 0);
|
||
var i, o = u.scrollTop();
|
||
if (m === !0) {
|
||
if (Math.abs(n - d) <= 9) return;
|
||
if (m = !1, d = n, i = e(n, p, f), i = t.min([ i, u.prop("scrollHeight") - u.outerHeight() ]),
|
||
Math.abs(i - o) <= 9) return h = o, void 0;
|
||
u.stop(!0).animate({
|
||
scrollTop: i
|
||
}, {
|
||
easing: "easeOutSine",
|
||
duration: 200,
|
||
step: function(e) {
|
||
y = !0, h = o + e;
|
||
},
|
||
done: function() {
|
||
t.defer(function() {
|
||
y = !1;
|
||
});
|
||
}
|
||
});
|
||
} else if (v === !0) {
|
||
if (Math.abs(o - h) <= 9) return;
|
||
if (v = !1, h = o, i = e(o, f, p), window.lightMode ? i = t.min([ i, l.prop("scrollHeight") - l.outerHeight() ]) : (i = t.min([ i, r.session.getScreenLength() * r.renderer.lineHeight + r.renderer.scrollMargin.bottom - r.renderer.$size.scrollerHeight ]),
|
||
0 > i && (i = 0)), Math.abs(i - n) <= 9) return d = n, void 0;
|
||
window.lightMode ? l.stop(!0).animate({
|
||
scrollTop: i
|
||
}, {
|
||
easing: "easeOutSine",
|
||
duration: 200,
|
||
step: function(e) {
|
||
b = !0, d = n + e;
|
||
},
|
||
done: function() {
|
||
t.defer(function() {
|
||
b = !1;
|
||
});
|
||
}
|
||
}) : w.stop(!0).css("value", 0).animate({
|
||
value: i - n
|
||
}, {
|
||
easing: "easeOutSine",
|
||
duration: 200,
|
||
step: function(e) {
|
||
b = !0, d = n + e, r.session.setScrollTop(d);
|
||
},
|
||
done: function() {
|
||
t.defer(function() {
|
||
b = !1;
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}, 100);
|
||
o.onLayoutResize = function() {
|
||
m = !0, g();
|
||
}, o.onFileClosed = function() {
|
||
p = [];
|
||
};
|
||
var C = !1;
|
||
o.onReady = function() {
|
||
u = e(".preview-container"), l = e("#wmd-input"), c = e(".textarea-helper"), u.scroll(function() {
|
||
y === !1 && C === !1 && (v = !0, m = !1, x()), C = !1;
|
||
});
|
||
var t = function() {
|
||
b === !1 && (m = !0, v = !1, x());
|
||
};
|
||
window.lightMode ? l.scroll(t) : r.session.on("changeScrollTop", t);
|
||
};
|
||
var E;
|
||
return o.onPagedownConfigure = function(t) {
|
||
E = e("#preview-contents"), t.getConverter().hooks.chain("postConversion", function(e) {
|
||
return E.height(E.height()), e;
|
||
});
|
||
}, o.onPreviewFinished = function() {
|
||
var e = E.height();
|
||
E.height("auto");
|
||
var t = E.height();
|
||
m = !0, e > t && (C = !0), g();
|
||
}, o;
|
||
}), define("extensions/buttonFocusMode", [ "jquery", "underscore", "crel", "storage", "classes/Extension" ], function(e, t, n, i, o) {
|
||
function r() {
|
||
if (c !== !1 && u !== !0) {
|
||
var e = a.selection.getCursor(), t = a.session.documentToScreenPosition(e.row, e.column);
|
||
a.session.setScrollTop((t.row + .5) * a.renderer.lineHeight - a.renderer.$size.scrollerHeight / 2);
|
||
}
|
||
}
|
||
var s = new o("buttonFocusMode", 'Button "Focus Mode"', !0, !0, !0);
|
||
s.settingsBlock = "When typing, scrolls automatically the editor to always have the caret centered verticaly.";
|
||
var a;
|
||
s.onAceCreated = function(e) {
|
||
a = e;
|
||
};
|
||
var l, c = !1, u = !1;
|
||
return s.onReady = function() {
|
||
a.getSession().selection.on("changeCursor", r), a.container.addEventListener("keydown", function() {
|
||
u = !1;
|
||
}, !0), a.container.addEventListener("mousedown", function() {
|
||
u = !0;
|
||
}, !0), "on" == i.focusMode && l.click();
|
||
}, s.onCreateEditorButton = function() {
|
||
return l = e([ '<button class="btn btn-info" title="Focus Mode" data-toggle="button">', ' <i class="icon-target"></i>', "</button>" ].join("")),
|
||
l.click(function() {
|
||
t.defer(function() {
|
||
c = l.is(".active"), i.focusMode = c ? "on" : "off", u = !1, a.focus(), r();
|
||
});
|
||
}), l[0];
|
||
}, s;
|
||
}), define("text!html/buttonSyncSettingsBlock.html", [], function() {
|
||
return '<p>Adds a "Synchronize documents" button in the navigation bar.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-5 control-label" for="input-sync-period">Sync\n period (0: manual)</label>\n <div class="col-lg-6 form-inline">\n <input type="text" id="input-sync-period"\n class="col-lg-5 form-control" placeholder="180000"> ms\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-5 control-label"\n for="input-sync-shortcut">Sync\n shortcut <a href="http://craig.is/killing/mice#keys" target="_blank">(?)</a></label>\n <div class="col-lg-6">\n <input type="text" id="input-sync-shortcut"\n class="form-control">\n </div>\n </div>\n</div>';
|
||
}), define("extensions/buttonSync", [ "jquery", "underscore", "crel", "utils", "classes/Extension", "mousetrap", "text!html/buttonSyncSettingsBlock.html" ], function(e, t, n, i, o, r, s) {
|
||
var a = new o("buttonSync", 'Button "Synchronize"', !1, !0);
|
||
a.settingsBlock = s, a.defaultConfig = {
|
||
syncPeriod: 18e4,
|
||
syncShortcut: "mod+s"
|
||
}, a.onLoadSettings = function() {
|
||
i.setInputValue("#input-sync-period", a.config.syncPeriod), i.setInputValue("#input-sync-shortcut", a.config.syncShortcut);
|
||
}, a.onSaveSettings = function(e, t) {
|
||
e.syncPeriod = i.getInputIntValue("#input-sync-period", t, 0), e.syncShortcut = i.getInputTextValue("#input-sync-shortcut", t);
|
||
};
|
||
var l;
|
||
a.onSynchronizerCreated = function(e) {
|
||
l = e;
|
||
};
|
||
var c, u = !1, d = !1, h = function() {
|
||
void 0 !== c && (u === !0 || l.hasSync() === !1 || d ? c.addClass("disabled") : c.removeClass("disabled"));
|
||
}, p = 0;
|
||
return a.onPeriodicRun = function() {
|
||
!a.config.syncPeriod || p + a.config.syncPeriod > i.currentTime || l.sync() && (p = i.currentTime);
|
||
}, a.onCreateButton = function() {
|
||
var t = n("button", {
|
||
"class": "btn btn-success button-synchronize",
|
||
title: "Synchronize all"
|
||
}, n("i", {
|
||
"class": "icon-refresh"
|
||
}));
|
||
return c = e(t), c.click(function() {
|
||
c.hasClass("disabled") || l.sync() && (p = i.currentTime);
|
||
}), t;
|
||
}, a.onReady = h, a.onFileCreated = h, a.onFileDeleted = h, a.onSyncImportSuccess = h,
|
||
a.onSyncExportSuccess = h, a.onSyncRemoved = h, a.onSyncRunning = function(e) {
|
||
u = e, h();
|
||
}, a.onOfflineChanged = function(e) {
|
||
d = e, h();
|
||
}, a.onReady = function() {
|
||
r.bind(a.config.syncShortcut, function(e) {
|
||
l.sync() && (p = i.currentTime), e.preventDefault();
|
||
});
|
||
}, a;
|
||
}), define("extensions/buttonPublish", [ "jquery", "underscore", "crel", "classes/Extension" ], function(e, t, n, i) {
|
||
function o() {
|
||
void 0 !== r && (c === !0 || u === !1 || d === !0 ? r.addClass("disabled") : r.removeClass("disabled"));
|
||
}
|
||
var r, s, a, l = new i("buttonPublish", 'Button "Publish"'), c = !1, u = !1, d = !1;
|
||
l.onPublisherCreated = function(e) {
|
||
a = e;
|
||
}, l.onCreateButton = function() {
|
||
var t = n("button", {
|
||
"class": "btn btn-success button-publish",
|
||
title: "Update document publication"
|
||
}, n("i", {
|
||
"class": "icon-share"
|
||
}));
|
||
return r = e(t).click(function() {
|
||
r.hasClass("disabled") || a.publish();
|
||
}), t;
|
||
}, l.onPublishRunning = function(e) {
|
||
c = e, o();
|
||
}, l.onOfflineChanged = function(e) {
|
||
d = e, o();
|
||
};
|
||
var h = function() {
|
||
u = 0 === t.size(s.publishLocations) ? !1 : !0, o();
|
||
};
|
||
return l.onFileSelected = function(e) {
|
||
s = e, h();
|
||
}, l.onPublishRemoved = h, l.onNewPublishSuccess = h, l;
|
||
}), define("text!html/buttonStat.html", [], function() {
|
||
return '<button class="btn btn-info dropdown-toggle" title="Document statistics" data-toggle="dropdown">\n <i class="icon-chart-bar"></i>\n</button>\n<div class="dropdown-menu pull-right">\n <h3>Statistics</h3>\n <div class="stat">\n <div>\n <%= name1 %>: <span id="span-stat-value1"></span>\n </div>\n <div>\n <%= name2 %>: <span id="span-stat-value2"></span>\n </div>\n <div>\n <%= name3 %>: <span id="span-stat-value3"></span>\n </div>\n </div>\n</div>\n';
|
||
}), define("text!html/buttonStatSettingsBlock.html", [], function() {
|
||
return '<p>Adds a "Document statistics" button over the preview.</p>\n<div class="form-horizontal">\n <div class="form-group form-inline">\n <label class="label-text" for="input-stat-name1">Title</label> <input\n id="input-stat-name1" type="text" class="form-control col-lg-3"> <label\n class="label-text" for="input-stat-value1">RegExp</label> <input\n id="input-stat-value1" type="text" class="form-control col-lg-4">\n </div>\n <div class="form-group form-inline">\n <label class="label-text" for="input-stat-name2">Title</label> <input\n id="input-stat-name2" type="text" class="form-control col-lg-3"> <label\n class="label-text" for="input-stat-value2">RegExp</label> <input\n id="input-stat-value2" type="text" class="form-control col-lg-4">\n </div>\n <div class="form-group form-inline">\n <label class="label-text" for="input-stat-name3">Title</label> <input\n id="input-stat-name3" type="text" class="form-control col-lg-3"> <label\n class="label-text" for="input-stat-value3">RegExp</label> <input\n id="input-stat-value3" type="text" class="form-control col-lg-4">\n </div>\n</div>\n';
|
||
}), define("extensions/buttonStat", [ "jquery", "underscore", "utils", "classes/Extension", "text!html/buttonStat.html", "text!html/buttonStatSettingsBlock.html" ], function(e, t, n, i, o, r) {
|
||
var s = new i("buttonStat", 'Button "Statistics"', !0, !0);
|
||
s.settingsBlock = r, s.defaultConfig = {
|
||
name1: "Characters",
|
||
value1: "\\S",
|
||
name2: "Words",
|
||
value2: "\\S+",
|
||
name3: "Paragraphs",
|
||
value3: "\\S.*"
|
||
}, s.onLoadSettings = function() {
|
||
t.each([ 1, 2, 3 ], function(e) {
|
||
n.setInputValue("#input-stat-name" + e, s.config["name" + e]), n.setInputValue("#input-stat-value" + e, s.config["value" + e]);
|
||
});
|
||
}, s.onSaveSettings = function(e, i) {
|
||
t.each([ 1, 2, 3 ], function(t) {
|
||
e["name" + t] = n.getInputTextValue("#input-stat-name" + t, i), e["value" + t] = n.getInputRegExpValue("#input-stat-value" + t, i);
|
||
});
|
||
}, s.onCreatePreviewButton = function() {
|
||
return t.template(o, s.config);
|
||
};
|
||
var a, l, c, u;
|
||
return s.onReady = function() {
|
||
a = document.getElementById("preview-contents"), l = document.getElementById("span-stat-value1"),
|
||
c = document.getElementById("span-stat-value2"), u = document.getElementById("span-stat-value3");
|
||
}, s.onPreviewFinished = function() {
|
||
for (var e = a.cloneNode(!0), t = e.getElementsByTagName("script"), n = t.length - 1; n >= 0; n--) {
|
||
var i = t[n];
|
||
i.parentNode.removeChild(i);
|
||
}
|
||
var o = e.textContent;
|
||
l.textContent = (o.match(new RegExp(s.config.value1, "g")) || []).length, c.textContent = (o.match(new RegExp(s.config.value2, "g")) || []).length,
|
||
u.textContent = (o.match(new RegExp(s.config.value3, "g")) || []).length;
|
||
}, s;
|
||
}), define("text!html/buttonHtmlCode.html", [], function() {
|
||
return '<button class="btn btn-info dropdown-toggle action-html-code" title="HTML code" data-toggle="dropdown">\n <i class="icon-code"></i>\n</button>\n<div class="dropdown-menu pull-right">\n <h3>HTML code</h3>\n <textarea id="input-html-code" class="form-control"></textarea>\n</div>\n';
|
||
}), define("text!html/buttonHtmlCodeSettingsBlock.html", [], function() {
|
||
return '<p>Adds a "HTML code" button over the preview.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label" for="textarea-html-code-template">Template\n <a href="#" class="tooltip-template">(?)</a>\n </label>\n <div class="col-lg-7">\n <textarea id="textarea-html-code-template" class="form-control"></textarea>\n </div>\n </div>\n</div>';
|
||
}), define("extensions/buttonHtmlCode", [ "jquery", "underscore", "utils", "classes/Extension", "text!html/buttonHtmlCode.html", "text!html/buttonHtmlCodeSettingsBlock.html" ], function(e, t, n, i, o, r) {
|
||
var s = new i("buttonHtmlCode", 'Button "HTML code"', !0, !0);
|
||
s.settingsBlock = r, s.defaultConfig = {
|
||
template: "<%= documentHTML %>"
|
||
}, s.onLoadSettings = function() {
|
||
n.setInputValue("#textarea-html-code-template", s.config.template);
|
||
}, s.onSaveSettings = function(e) {
|
||
e.template = n.getInputValue("#textarea-html-code-template");
|
||
};
|
||
var a;
|
||
s.onEventMgrCreated = function(e) {
|
||
a = e;
|
||
}, s.onCreatePreviewButton = function() {
|
||
return o;
|
||
};
|
||
var l;
|
||
s.onFileSelected = function(e) {
|
||
l = e;
|
||
};
|
||
var c;
|
||
return s.onPreviewFinished = function(e) {
|
||
try {
|
||
var n = t.template(s.config.template, {
|
||
documentTitle: l.title,
|
||
documentMarkdown: l.content,
|
||
strippedDocumentMarkdown: l.content.substring(l.frontMatter ? l.frontMatter._frontMatter.length : 0),
|
||
documentHTML: e,
|
||
frontMatter: l.frontMatter,
|
||
publishAttributes: void 0
|
||
});
|
||
c.value = n;
|
||
} catch (i) {
|
||
return a.onError(i), i.message;
|
||
}
|
||
}, s.onReady = function() {
|
||
c = document.getElementById("input-html-code"), e(".action-html-code").click(function() {
|
||
t.defer(function() {
|
||
e("#input-html-code").each(function() {
|
||
e(this).is(":hidden") || this.select();
|
||
});
|
||
});
|
||
});
|
||
}, s;
|
||
}), define("text!html/buttonViewer.html", [], function() {
|
||
return '<a href="viewer" class="btn btn-info dropdown-toggle"\n title="Open in viewer">\n <i class="icon-resize-full"></i>\n</a>\n';
|
||
}), define("extensions/buttonViewer", [ "jquery", "classes/Extension", "text!html/buttonViewer.html" ], function(e, t, n) {
|
||
var i = new t("buttonViewer", 'Button "Viewer"', !0, !0);
|
||
return i.settingsBlock = '<p>Adds a "Viewer" button over the preview.</p>', i.onCreatePreviewButton = function() {
|
||
return n;
|
||
}, i;
|
||
}), !jQuery) throw new Error("Bootstrap requires jQuery");
|
||
|
||
+function(e) {
|
||
function t() {
|
||
var e = document.createElement("bootstrap"), t = {
|
||
WebkitTransition: "webkitTransitionEnd",
|
||
MozTransition: "transitionend",
|
||
OTransition: "oTransitionEnd otransitionend",
|
||
transition: "transitionend"
|
||
};
|
||
for (var n in t) if (void 0 !== e.style[n]) return {
|
||
end: t[n]
|
||
};
|
||
}
|
||
e.fn.emulateTransitionEnd = function(t) {
|
||
var n = !1, i = this;
|
||
e(this).one(e.support.transition.end, function() {
|
||
n = !0;
|
||
});
|
||
var o = function() {
|
||
n || e(i).trigger(e.support.transition.end);
|
||
};
|
||
return setTimeout(o, t), this;
|
||
}, e(function() {
|
||
e.support.transition = t();
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
var t = '[data-dismiss="alert"]', n = function(n) {
|
||
e(n).on("click", t, this.close);
|
||
};
|
||
n.prototype.close = function(t) {
|
||
function n() {
|
||
r.trigger("closed.bs.alert").remove();
|
||
}
|
||
var i = e(this), o = i.attr("data-target");
|
||
o || (o = i.attr("href"), o = o && o.replace(/.*(?=#[^\s]*$)/, ""));
|
||
var r = e(o);
|
||
t && t.preventDefault(), r.length || (r = i.hasClass("alert") ? i : i.parent()),
|
||
r.trigger(t = e.Event("close.bs.alert")), t.isDefaultPrevented() || (r.removeClass("in"),
|
||
e.support.transition && r.hasClass("fade") ? r.one(e.support.transition.end, n).emulateTransitionEnd(150) : n());
|
||
};
|
||
var i = e.fn.alert;
|
||
e.fn.alert = function(t) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.alert");
|
||
o || i.data("bs.alert", o = new n(this)), "string" == typeof t && o[t].call(i);
|
||
});
|
||
}, e.fn.alert.Constructor = n, e.fn.alert.noConflict = function() {
|
||
return e.fn.alert = i, this;
|
||
}, e(document).on("click.bs.alert.data-api", t, n.prototype.close);
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(n, i) {
|
||
this.$element = e(n), this.options = e.extend({}, t.DEFAULTS, i);
|
||
};
|
||
t.DEFAULTS = {
|
||
loadingText: "loading..."
|
||
}, t.prototype.setState = function(e) {
|
||
var t = "disabled", n = this.$element, i = n.is("input") ? "val" : "html", o = n.data();
|
||
e += "Text", o.resetText || n.data("resetText", n[i]()), n[i](o[e] || this.options[e]),
|
||
setTimeout(function() {
|
||
"loadingText" == e ? n.addClass(t).attr(t, t) : n.removeClass(t).removeAttr(t);
|
||
}, 0);
|
||
}, t.prototype.toggle = function() {
|
||
var e = this.$element.closest('[data-toggle="buttons"]');
|
||
if (e.length) {
|
||
var t = this.$element.find("input").prop("checked", !this.$element.hasClass("active")).trigger("change");
|
||
"radio" === t.prop("type") && e.find(".active").removeClass("active");
|
||
}
|
||
this.$element.toggleClass("active");
|
||
};
|
||
var n = e.fn.button;
|
||
e.fn.button = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.button"), r = "object" == typeof n && n;
|
||
o || i.data("bs.button", o = new t(this, r)), "toggle" == n ? o.toggle() : n && o.setState(n);
|
||
});
|
||
}, e.fn.button.Constructor = t, e.fn.button.noConflict = function() {
|
||
return e.fn.button = n, this;
|
||
}, e(document).on("click.bs.button.data-api", "[data-toggle^=button]", function(t) {
|
||
var n = e(t.target);
|
||
n.hasClass("btn") || (n = n.closest(".btn")), n.button("toggle"), t.preventDefault();
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(t, n) {
|
||
this.$element = e(t), this.$indicators = this.$element.find(".carousel-indicators"),
|
||
this.options = n, this.paused = this.sliding = this.interval = this.$active = this.$items = null,
|
||
"hover" == this.options.pause && this.$element.on("mouseenter", e.proxy(this.pause, this)).on("mouseleave", e.proxy(this.cycle, this));
|
||
};
|
||
t.DEFAULTS = {
|
||
interval: 5e3,
|
||
pause: "hover",
|
||
wrap: !0
|
||
}, t.prototype.cycle = function(t) {
|
||
return t || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(e.proxy(this.next, this), this.options.interval)),
|
||
this;
|
||
}, t.prototype.getActiveIndex = function() {
|
||
return this.$active = this.$element.find(".item.active"), this.$items = this.$active.parent().children(),
|
||
this.$items.index(this.$active);
|
||
}, t.prototype.to = function(t) {
|
||
var n = this, i = this.getActiveIndex();
|
||
return t > this.$items.length - 1 || 0 > t ? void 0 : this.sliding ? this.$element.one("slid", function() {
|
||
n.to(t);
|
||
}) : i == t ? this.pause().cycle() : this.slide(t > i ? "next" : "prev", e(this.$items[t]));
|
||
}, t.prototype.pause = function(t) {
|
||
return t || (this.paused = !0), this.$element.find(".next, .prev").length && e.support.transition.end && (this.$element.trigger(e.support.transition.end),
|
||
this.cycle(!0)), this.interval = clearInterval(this.interval), this;
|
||
}, t.prototype.next = function() {
|
||
return this.sliding ? void 0 : this.slide("next");
|
||
}, t.prototype.prev = function() {
|
||
return this.sliding ? void 0 : this.slide("prev");
|
||
}, t.prototype.slide = function(t, n) {
|
||
var i = this.$element.find(".item.active"), o = n || i[t](), r = this.interval, s = "next" == t ? "left" : "right", a = "next" == t ? "first" : "last", l = this;
|
||
if (!o.length) {
|
||
if (!this.options.wrap) return;
|
||
o = this.$element.find(".item")[a]();
|
||
}
|
||
this.sliding = !0, r && this.pause();
|
||
var c = e.Event("slide.bs.carousel", {
|
||
relatedTarget: o[0],
|
||
direction: s
|
||
});
|
||
if (!o.hasClass("active")) {
|
||
if (this.$indicators.length && (this.$indicators.find(".active").removeClass("active"),
|
||
this.$element.one("slid", function() {
|
||
var t = e(l.$indicators.children()[l.getActiveIndex()]);
|
||
t && t.addClass("active");
|
||
})), e.support.transition && this.$element.hasClass("slide")) {
|
||
if (this.$element.trigger(c), c.isDefaultPrevented()) return;
|
||
o.addClass(t), o[0].offsetWidth, i.addClass(s), o.addClass(s), i.one(e.support.transition.end, function() {
|
||
o.removeClass([ t, s ].join(" ")).addClass("active"), i.removeClass([ "active", s ].join(" ")),
|
||
l.sliding = !1, setTimeout(function() {
|
||
l.$element.trigger("slid");
|
||
}, 0);
|
||
}).emulateTransitionEnd(600);
|
||
} else {
|
||
if (this.$element.trigger(c), c.isDefaultPrevented()) return;
|
||
i.removeClass("active"), o.addClass("active"), this.sliding = !1, this.$element.trigger("slid");
|
||
}
|
||
return r && this.cycle(), this;
|
||
}
|
||
};
|
||
var n = e.fn.carousel;
|
||
e.fn.carousel = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.carousel"), r = e.extend({}, t.DEFAULTS, i.data(), "object" == typeof n && n), s = "string" == typeof n ? n : r.slide;
|
||
o || i.data("bs.carousel", o = new t(this, r)), "number" == typeof n ? o.to(n) : s ? o[s]() : r.interval && o.pause().cycle();
|
||
});
|
||
}, e.fn.carousel.Constructor = t, e.fn.carousel.noConflict = function() {
|
||
return e.fn.carousel = n, this;
|
||
}, e(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function(t) {
|
||
var n, i = e(this), o = e(i.attr("data-target") || (n = i.attr("href")) && n.replace(/.*(?=#[^\s]+$)/, "")), r = e.extend({}, o.data(), i.data()), s = i.attr("data-slide-to");
|
||
s && (r.interval = !1), o.carousel(r), (s = i.attr("data-slide-to")) && o.data("bs.carousel").to(s),
|
||
t.preventDefault();
|
||
}), e(window).on("load", function() {
|
||
e('[data-ride="carousel"]').each(function() {
|
||
var t = e(this);
|
||
t.carousel(t.data());
|
||
});
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(n, i) {
|
||
this.$element = e(n), this.options = e.extend({}, t.DEFAULTS, i), this.transitioning = null,
|
||
this.options.parent && (this.$parent = e(this.options.parent)), this.options.toggle && this.toggle();
|
||
};
|
||
t.DEFAULTS = {
|
||
toggle: !0
|
||
}, t.prototype.dimension = function() {
|
||
var e = this.$element.hasClass("width");
|
||
return e ? "width" : "height";
|
||
}, t.prototype.show = function() {
|
||
if (!this.transitioning && !this.$element.hasClass("in")) {
|
||
var t = e.Event("show.bs.collapse");
|
||
if (this.$element.trigger(t), !t.isDefaultPrevented()) {
|
||
var n = this.$parent && this.$parent.find("> .panel > .in");
|
||
if (n && n.length) {
|
||
var i = n.data("bs.collapse");
|
||
if (i && i.transitioning) return;
|
||
n.collapse("hide"), i || n.data("bs.collapse", null);
|
||
}
|
||
var o = this.dimension();
|
||
this.$element.removeClass("collapse").addClass("collapsing")[o](0), this.transitioning = 1;
|
||
var r = function() {
|
||
this.$element.removeClass("collapsing").addClass("in")[o]("auto"), this.transitioning = 0,
|
||
this.$element.trigger("shown.bs.collapse");
|
||
};
|
||
if (!e.support.transition) return r.call(this);
|
||
var s = e.camelCase([ "scroll", o ].join("-"));
|
||
this.$element.one(e.support.transition.end, e.proxy(r, this)).emulateTransitionEnd(350)[o](this.$element[0][s]);
|
||
}
|
||
}
|
||
}, t.prototype.hide = function() {
|
||
if (!this.transitioning && this.$element.hasClass("in")) {
|
||
var t = e.Event("hide.bs.collapse");
|
||
if (this.$element.trigger(t), !t.isDefaultPrevented()) {
|
||
var n = this.dimension();
|
||
this.$element[n](this.$element[n]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),
|
||
this.transitioning = 1;
|
||
var i = function() {
|
||
this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse");
|
||
};
|
||
return e.support.transition ? (this.$element[n](0).one(e.support.transition.end, e.proxy(i, this)).emulateTransitionEnd(350),
|
||
void 0) : i.call(this);
|
||
}
|
||
}
|
||
}, t.prototype.toggle = function() {
|
||
this[this.$element.hasClass("in") ? "hide" : "show"]();
|
||
};
|
||
var n = e.fn.collapse;
|
||
e.fn.collapse = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.collapse"), r = e.extend({}, t.DEFAULTS, i.data(), "object" == typeof n && n);
|
||
o || i.data("bs.collapse", o = new t(this, r)), "string" == typeof n && o[n]();
|
||
});
|
||
}, e.fn.collapse.Constructor = t, e.fn.collapse.noConflict = function() {
|
||
return e.fn.collapse = n, this;
|
||
}, e(document).on("click.bs.collapse.data-api", "[data-toggle=collapse]", function(t) {
|
||
var n, i = e(this), o = i.attr("data-target") || t.preventDefault() || (n = i.attr("href")) && n.replace(/.*(?=#[^\s]+$)/, ""), r = e(o), s = r.data("bs.collapse"), a = s ? "toggle" : i.data(), l = i.attr("data-parent"), c = l && e(l);
|
||
s && s.transitioning || (c && c.find('[data-toggle=collapse][data-parent="' + l + '"]').not(i).addClass("collapsed"),
|
||
i[r.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), r.collapse(a);
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
function t() {
|
||
e(i).remove(), e(o).each(function(t) {
|
||
var i = n(e(this));
|
||
i.hasClass("open") && (i.trigger(t = e.Event("hide.bs.dropdown")), t.isDefaultPrevented() || i.removeClass("open").trigger("hidden.bs.dropdown"));
|
||
});
|
||
}
|
||
function n(t) {
|
||
var n = t.attr("data-target");
|
||
n || (n = t.attr("href"), n = n && /#/.test(n) && n.replace(/.*(?=#[^\s]*$)/, ""));
|
||
var i = n && e(n);
|
||
return i && i.length ? i : t.parent();
|
||
}
|
||
var i = ".dropdown-backdrop", o = "[data-toggle=dropdown]", r = function(t) {
|
||
e(t).on("click.bs.dropdown", this.toggle);
|
||
};
|
||
r.prototype.toggle = function(i) {
|
||
var o = e(this);
|
||
if (!o.is(".disabled, :disabled")) {
|
||
var r = n(o), s = r.hasClass("open");
|
||
if (t(), !s) {
|
||
if ("ontouchstart" in document.documentElement && !r.closest(".navbar-nav").length && e('<div class="dropdown-backdrop"/>').insertAfter(e(this)).on("click", t),
|
||
r.trigger(i = e.Event("show.bs.dropdown")), i.isDefaultPrevented()) return;
|
||
r.toggleClass("open").trigger("shown.bs.dropdown"), o.focus();
|
||
}
|
||
return !1;
|
||
}
|
||
}, r.prototype.keydown = function(t) {
|
||
if (/(38|40|27)/.test(t.keyCode)) {
|
||
var i = e(this);
|
||
if (t.preventDefault(), t.stopPropagation(), !i.is(".disabled, :disabled")) {
|
||
var r = n(i), s = r.hasClass("open");
|
||
if (!s || s && 27 == t.keyCode) return 27 == t.which && r.find(o).focus(), i.click();
|
||
var a = e("[role=menu] li:not(.divider):visible a", r);
|
||
if (a.length) {
|
||
var l = a.index(a.filter(":focus"));
|
||
38 == t.keyCode && l > 0 && l--, 40 == t.keyCode && l < a.length - 1 && l++, ~l || (l = 0),
|
||
a.eq(l).focus();
|
||
}
|
||
}
|
||
}
|
||
};
|
||
var s = e.fn.dropdown;
|
||
e.fn.dropdown = function(t) {
|
||
return this.each(function() {
|
||
var n = e(this), i = n.data("dropdown");
|
||
i || n.data("dropdown", i = new r(this)), "string" == typeof t && i[t].call(n);
|
||
});
|
||
}, e.fn.dropdown.Constructor = r, e.fn.dropdown.noConflict = function() {
|
||
return e.fn.dropdown = s, this;
|
||
}, e(document).on("click.bs.dropdown.data-api", t).on("click.bs.dropdown.data-api", ".dropdown form", function(e) {
|
||
e.stopPropagation();
|
||
}).on("click.bs.dropdown.data-api", o, r.prototype.toggle).on("keydown.bs.dropdown.data-api", o + ", [role=menu]", r.prototype.keydown);
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(t, n) {
|
||
this.options = n, this.$element = e(t), this.$backdrop = this.isShown = null, this.options.remote && this.$element.load(this.options.remote);
|
||
};
|
||
t.DEFAULTS = {
|
||
backdrop: !0,
|
||
keyboard: !0,
|
||
show: !0
|
||
}, t.prototype.toggle = function(e) {
|
||
return this[this.isShown ? "hide" : "show"](e);
|
||
}, t.prototype.show = function(t) {
|
||
var n = this, i = e.Event("show.bs.modal", {
|
||
relatedTarget: t
|
||
});
|
||
this.$element.trigger(i), this.isShown || i.isDefaultPrevented() || (this.isShown = !0,
|
||
this.escape(), this.$element.on("click.dismiss.modal", '[data-dismiss="modal"]', e.proxy(this.hide, this)),
|
||
this.backdrop(function() {
|
||
var i = e.support.transition && n.$element.hasClass("fade");
|
||
n.$element.parent().length || n.$element.appendTo(document.body), n.$element.show(),
|
||
i && n.$element[0].offsetWidth, n.$element.addClass("in").attr("aria-hidden", !1),
|
||
n.enforceFocus();
|
||
var o = e.Event("shown.bs.modal", {
|
||
relatedTarget: t
|
||
});
|
||
i ? n.$element.find(".modal-dialog").one(e.support.transition.end, function() {
|
||
n.$element.focus().trigger(o);
|
||
}).emulateTransitionEnd(300) : n.$element.focus().trigger(o);
|
||
}));
|
||
}, t.prototype.hide = function(t) {
|
||
t && t.preventDefault(), t = e.Event("hide.bs.modal"), this.$element.trigger(t),
|
||
this.isShown && !t.isDefaultPrevented() && (this.isShown = !1, this.escape(), e(document).off("focusin.bs.modal"),
|
||
this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.modal"),
|
||
e.support.transition && this.$element.hasClass("fade") ? this.$element.one(e.support.transition.end, e.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal());
|
||
}, t.prototype.enforceFocus = function() {
|
||
e(document).off("focusin.bs.modal").on("focusin.bs.modal", e.proxy(function(e) {
|
||
this.$element[0] === e.target || this.$element.has(e.target).length || this.$element.focus();
|
||
}, this));
|
||
}, t.prototype.escape = function() {
|
||
this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", e.proxy(function(e) {
|
||
27 == e.which && this.hide();
|
||
}, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal");
|
||
}, t.prototype.hideModal = function() {
|
||
var e = this;
|
||
this.$element.hide(), this.backdrop(function() {
|
||
e.removeBackdrop(), e.$element.trigger("hidden.bs.modal");
|
||
});
|
||
}, t.prototype.removeBackdrop = function() {
|
||
this.$backdrop && this.$backdrop.remove(), this.$backdrop = null;
|
||
}, t.prototype.backdrop = function(t) {
|
||
var n = this.$element.hasClass("fade") ? "fade" : "";
|
||
if (this.isShown && this.options.backdrop) {
|
||
var i = e.support.transition && n;
|
||
if (this.$backdrop = e('<div class="modal-backdrop ' + n + '" />').appendTo(document.body),
|
||
this.$element.on("click.dismiss.modal", e.proxy(function(e) {
|
||
e.target === e.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this));
|
||
}, this)), i && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !t) return;
|
||
i ? this.$backdrop.one(e.support.transition.end, t).emulateTransitionEnd(150) : t();
|
||
} else !this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), e.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(e.support.transition.end, t).emulateTransitionEnd(150) : t()) : t && t();
|
||
};
|
||
var n = e.fn.modal;
|
||
e.fn.modal = function(n, i) {
|
||
return this.each(function() {
|
||
var o = e(this), r = o.data("bs.modal"), s = e.extend({}, t.DEFAULTS, o.data(), "object" == typeof n && n);
|
||
r || o.data("bs.modal", r = new t(this, s)), "string" == typeof n ? r[n](i) : s.show && r.show(i);
|
||
});
|
||
}, e.fn.modal.Constructor = t, e.fn.modal.noConflict = function() {
|
||
return e.fn.modal = n, this;
|
||
}, e(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(t) {
|
||
var n = e(this), i = n.attr("href"), o = e(n.attr("data-target") || i && i.replace(/.*(?=#[^\s]+$)/, "")), r = o.data("modal") ? "toggle" : e.extend({
|
||
remote: !/#/.test(i) && i
|
||
}, o.data(), n.data());
|
||
t.preventDefault(), o.modal(r, this).one("hide", function() {
|
||
n.is(":visible") && n.focus();
|
||
});
|
||
}), e(document).on("show.bs.modal", ".modal", function() {
|
||
e(document.body).addClass("modal-open");
|
||
}).on("hidden.bs.modal", ".modal", function() {
|
||
e(document.body).removeClass("modal-open");
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(e, t) {
|
||
this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null,
|
||
this.init("tooltip", e, t);
|
||
};
|
||
t.DEFAULTS = {
|
||
animation: !0,
|
||
placement: "top",
|
||
selector: !1,
|
||
template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
|
||
trigger: "hover focus",
|
||
title: "",
|
||
delay: 0,
|
||
html: !1,
|
||
container: !1
|
||
}, t.prototype.init = function(t, n, i) {
|
||
this.enabled = !0, this.type = t, this.$element = e(n), this.options = this.getOptions(i);
|
||
for (var o = this.options.trigger.split(" "), r = o.length; r--; ) {
|
||
var s = o[r];
|
||
if ("click" == s) this.$element.on("click." + this.type, this.options.selector, e.proxy(this.toggle, this)); else if ("manual" != s) {
|
||
var a = "hover" == s ? "mouseenter" : "focus", l = "hover" == s ? "mouseleave" : "blur";
|
||
this.$element.on(a + "." + this.type, this.options.selector, e.proxy(this.enter, this)),
|
||
this.$element.on(l + "." + this.type, this.options.selector, e.proxy(this.leave, this));
|
||
}
|
||
}
|
||
this.options.selector ? this._options = e.extend({}, this.options, {
|
||
trigger: "manual",
|
||
selector: ""
|
||
}) : this.fixTitle();
|
||
}, t.prototype.getDefaults = function() {
|
||
return t.DEFAULTS;
|
||
}, t.prototype.getOptions = function(t) {
|
||
return t = e.extend({}, this.getDefaults(), this.$element.data(), t), t.delay && "number" == typeof t.delay && (t.delay = {
|
||
show: t.delay,
|
||
hide: t.delay
|
||
}), t;
|
||
}, t.prototype.getDelegateOptions = function() {
|
||
var t = {}, n = this.getDefaults();
|
||
return this._options && e.each(this._options, function(e, i) {
|
||
n[e] != i && (t[e] = i);
|
||
}), t;
|
||
}, t.prototype.enter = function(t) {
|
||
var n = t instanceof this.constructor ? t : e(t.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
|
||
return clearTimeout(n.timeout), n.hoverState = "in", n.options.delay && n.options.delay.show ? (n.timeout = setTimeout(function() {
|
||
"in" == n.hoverState && n.show();
|
||
}, n.options.delay.show), void 0) : n.show();
|
||
}, t.prototype.leave = function(t) {
|
||
var n = t instanceof this.constructor ? t : e(t.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type);
|
||
return clearTimeout(n.timeout), n.hoverState = "out", n.options.delay && n.options.delay.hide ? (n.timeout = setTimeout(function() {
|
||
"out" == n.hoverState && n.hide();
|
||
}, n.options.delay.hide), void 0) : n.hide();
|
||
}, t.prototype.show = function() {
|
||
var t = e.Event("show.bs." + this.type);
|
||
if (this.hasContent() && this.enabled) {
|
||
if (this.$element.trigger(t), t.isDefaultPrevented()) return;
|
||
var n = this.tip();
|
||
this.setContent(), this.options.animation && n.addClass("fade");
|
||
var i = "function" == typeof this.options.placement ? this.options.placement.call(this, n[0], this.$element[0]) : this.options.placement, o = /\s?auto?\s?/i, r = o.test(i);
|
||
r && (i = i.replace(o, "") || "top"), n.detach().css({
|
||
top: 0,
|
||
left: 0,
|
||
display: "block"
|
||
}).addClass(i), this.options.container ? n.appendTo(this.options.container) : n.insertAfter(this.$element);
|
||
var s = this.getPosition(), a = n[0].offsetWidth, l = n[0].offsetHeight;
|
||
if (r) {
|
||
var c = this.$element.parent(), u = i, d = document.documentElement.scrollTop || document.body.scrollTop, h = "body" == this.options.container ? window.innerWidth : c.outerWidth(), p = "body" == this.options.container ? window.innerHeight : c.outerHeight(), f = "body" == this.options.container ? 0 : c.offset().left;
|
||
i = "bottom" == i && s.top + s.height + l - d > p ? "top" : "top" == i && s.top - d - l < 0 ? "bottom" : "right" == i && s.right + a > h ? "left" : "left" == i && s.left - a < f ? "right" : i,
|
||
n.removeClass(u).addClass(i);
|
||
}
|
||
var g = this.getCalculatedOffset(i, s, a, l);
|
||
this.applyPlacement(g, i), this.$element.trigger("shown.bs." + this.type);
|
||
}
|
||
}, t.prototype.applyPlacement = function(e, t) {
|
||
var n, i = this.tip(), o = i[0].offsetWidth, r = i[0].offsetHeight, s = parseInt(i.css("margin-top"), 10), a = parseInt(i.css("margin-left"), 10);
|
||
isNaN(s) && (s = 0), isNaN(a) && (a = 0), e.top = e.top + s, e.left = e.left + a,
|
||
i.offset(e).addClass("in");
|
||
var l = i[0].offsetWidth, c = i[0].offsetHeight;
|
||
if ("top" == t && c != r && (n = !0, e.top = e.top + r - c), /bottom|top/.test(t)) {
|
||
var u = 0;
|
||
e.left < 0 && (u = -2 * e.left, e.left = 0, i.offset(e), l = i[0].offsetWidth, c = i[0].offsetHeight),
|
||
this.replaceArrow(u - o + l, l, "left");
|
||
} else this.replaceArrow(c - r, c, "top");
|
||
n && i.offset(e);
|
||
}, t.prototype.replaceArrow = function(e, t, n) {
|
||
this.arrow().css(n, e ? 50 * (1 - e / t) + "%" : "");
|
||
}, t.prototype.setContent = function() {
|
||
var e = this.tip(), t = this.getTitle();
|
||
e.find(".tooltip-inner")[this.options.html ? "html" : "text"](t), e.removeClass("fade in top bottom left right");
|
||
}, t.prototype.hide = function() {
|
||
function t() {
|
||
"in" != n.hoverState && i.detach();
|
||
}
|
||
var n = this, i = this.tip(), o = e.Event("hide.bs." + this.type);
|
||
return this.$element.trigger(o), o.isDefaultPrevented() ? void 0 : (i.removeClass("in"),
|
||
e.support.transition && this.$tip.hasClass("fade") ? i.one(e.support.transition.end, t).emulateTransitionEnd(150) : t(),
|
||
this.$element.trigger("hidden.bs." + this.type), this);
|
||
}, t.prototype.fixTitle = function() {
|
||
var e = this.$element;
|
||
(e.attr("title") || "string" != typeof e.attr("data-original-title")) && e.attr("data-original-title", e.attr("title") || "").attr("title", "");
|
||
}, t.prototype.hasContent = function() {
|
||
return this.getTitle();
|
||
}, t.prototype.getPosition = function() {
|
||
var t = this.$element[0];
|
||
return e.extend({}, "function" == typeof t.getBoundingClientRect ? t.getBoundingClientRect() : {
|
||
width: t.offsetWidth,
|
||
height: t.offsetHeight
|
||
}, this.$element.offset());
|
||
}, t.prototype.getCalculatedOffset = function(e, t, n, i) {
|
||
return "bottom" == e ? {
|
||
top: t.top + t.height,
|
||
left: t.left + t.width / 2 - n / 2
|
||
} : "top" == e ? {
|
||
top: t.top - i,
|
||
left: t.left + t.width / 2 - n / 2
|
||
} : "left" == e ? {
|
||
top: t.top + t.height / 2 - i / 2,
|
||
left: t.left - n
|
||
} : {
|
||
top: t.top + t.height / 2 - i / 2,
|
||
left: t.left + t.width
|
||
};
|
||
}, t.prototype.getTitle = function() {
|
||
var e, t = this.$element, n = this.options;
|
||
return e = t.attr("data-original-title") || ("function" == typeof n.title ? n.title.call(t[0]) : n.title);
|
||
}, t.prototype.tip = function() {
|
||
return this.$tip = this.$tip || e(this.options.template);
|
||
}, t.prototype.arrow = function() {
|
||
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow");
|
||
}, t.prototype.validate = function() {
|
||
this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null);
|
||
}, t.prototype.enable = function() {
|
||
this.enabled = !0;
|
||
}, t.prototype.disable = function() {
|
||
this.enabled = !1;
|
||
}, t.prototype.toggleEnabled = function() {
|
||
this.enabled = !this.enabled;
|
||
}, t.prototype.toggle = function(t) {
|
||
var n = t ? e(t.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type) : this;
|
||
n.tip().hasClass("in") ? n.leave(n) : n.enter(n);
|
||
}, t.prototype.destroy = function() {
|
||
this.hide().$element.off("." + this.type).removeData("bs." + this.type);
|
||
};
|
||
var n = e.fn.tooltip;
|
||
e.fn.tooltip = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.tooltip"), r = "object" == typeof n && n;
|
||
o || i.data("bs.tooltip", o = new t(this, r)), "string" == typeof n && o[n]();
|
||
});
|
||
}, e.fn.tooltip.Constructor = t, e.fn.tooltip.noConflict = function() {
|
||
return e.fn.tooltip = n, this;
|
||
};
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(e, t) {
|
||
this.init("popover", e, t);
|
||
};
|
||
if (!e.fn.tooltip) throw new Error("Popover requires tooltip.js");
|
||
t.DEFAULTS = e.extend({}, e.fn.tooltip.Constructor.DEFAULTS, {
|
||
placement: "right",
|
||
trigger: "click",
|
||
content: "",
|
||
template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
|
||
}), t.prototype = e.extend({}, e.fn.tooltip.Constructor.prototype), t.prototype.constructor = t,
|
||
t.prototype.getDefaults = function() {
|
||
return t.DEFAULTS;
|
||
}, t.prototype.setContent = function() {
|
||
var e = this.tip(), t = this.getTitle(), n = this.getContent();
|
||
e.find(".popover-title")[this.options.html ? "html" : "text"](t), e.find(".popover-content")[this.options.html ? "html" : "text"](n),
|
||
e.removeClass("fade top bottom left right in"), e.find(".popover-title").html() || e.find(".popover-title").hide();
|
||
}, t.prototype.hasContent = function() {
|
||
return this.getTitle() || this.getContent();
|
||
}, t.prototype.getContent = function() {
|
||
var e = this.$element, t = this.options;
|
||
return e.attr("data-content") || ("function" == typeof t.content ? t.content.call(e[0]) : t.content);
|
||
}, t.prototype.arrow = function() {
|
||
return this.$arrow = this.$arrow || this.tip().find(".arrow");
|
||
}, t.prototype.tip = function() {
|
||
return this.$tip || (this.$tip = e(this.options.template)), this.$tip;
|
||
};
|
||
var n = e.fn.popover;
|
||
e.fn.popover = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.popover"), r = "object" == typeof n && n;
|
||
o || i.data("bs.popover", o = new t(this, r)), "string" == typeof n && o[n]();
|
||
});
|
||
}, e.fn.popover.Constructor = t, e.fn.popover.noConflict = function() {
|
||
return e.fn.popover = n, this;
|
||
};
|
||
}(window.jQuery), +function(e) {
|
||
function t(n, i) {
|
||
var o, r = e.proxy(this.process, this);
|
||
this.$element = e(n).is("body") ? e(window) : e(n), this.$body = e("body"), this.$scrollElement = this.$element.on("scroll.bs.scroll-spy.data-api", r),
|
||
this.options = e.extend({}, t.DEFAULTS, i), this.selector = (this.options.target || (o = e(n).attr("href")) && o.replace(/.*(?=#[^\s]+$)/, "") || "") + " .nav li > a",
|
||
this.offsets = e([]), this.targets = e([]), this.activeTarget = null, this.refresh(),
|
||
this.process();
|
||
}
|
||
t.DEFAULTS = {
|
||
offset: 10
|
||
}, t.prototype.refresh = function() {
|
||
var t = this.$element[0] == window ? "offset" : "position";
|
||
this.offsets = e([]), this.targets = e([]);
|
||
var n = this;
|
||
this.$body.find(this.selector).map(function() {
|
||
var i = e(this), o = i.data("target") || i.attr("href"), r = /^#\w/.test(o) && e(o);
|
||
return r && r.length && [ [ r[t]().top + (!e.isWindow(n.$scrollElement.get(0)) && n.$scrollElement.scrollTop()), o ] ] || null;
|
||
}).sort(function(e, t) {
|
||
return e[0] - t[0];
|
||
}).each(function() {
|
||
n.offsets.push(this[0]), n.targets.push(this[1]);
|
||
});
|
||
}, t.prototype.process = function() {
|
||
var e, t = this.$scrollElement.scrollTop() + this.options.offset, n = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight, i = n - this.$scrollElement.height(), o = this.offsets, r = this.targets, s = this.activeTarget;
|
||
if (t >= i) return s != (e = r.last()[0]) && this.activate(e);
|
||
for (e = o.length; e--; ) s != r[e] && t >= o[e] && (!o[e + 1] || t <= o[e + 1]) && this.activate(r[e]);
|
||
}, t.prototype.activate = function(t) {
|
||
this.activeTarget = t, e(this.selector).parents(".active").removeClass("active");
|
||
var n = this.selector + '[data-target="' + t + '"],' + this.selector + '[href="' + t + '"]', i = e(n).parents("li").addClass("active");
|
||
i.parent(".dropdown-menu").length && (i = i.closest("li.dropdown").addClass("active")),
|
||
i.trigger("activate");
|
||
};
|
||
var n = e.fn.scrollspy;
|
||
e.fn.scrollspy = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.scrollspy"), r = "object" == typeof n && n;
|
||
o || i.data("bs.scrollspy", o = new t(this, r)), "string" == typeof n && o[n]();
|
||
});
|
||
}, e.fn.scrollspy.Constructor = t, e.fn.scrollspy.noConflict = function() {
|
||
return e.fn.scrollspy = n, this;
|
||
}, e(window).on("load", function() {
|
||
e('[data-spy="scroll"]').each(function() {
|
||
var t = e(this);
|
||
t.scrollspy(t.data());
|
||
});
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(t) {
|
||
this.element = e(t);
|
||
};
|
||
t.prototype.show = function() {
|
||
var t = this.element, n = t.closest("ul:not(.dropdown-menu)"), i = t.attr("data-target");
|
||
if (i || (i = t.attr("href"), i = i && i.replace(/.*(?=#[^\s]*$)/, "")), !t.parent("li").hasClass("active")) {
|
||
var o = n.find(".active:last a")[0], r = e.Event("show.bs.tab", {
|
||
relatedTarget: o
|
||
});
|
||
if (t.trigger(r), !r.isDefaultPrevented()) {
|
||
var s = e(i);
|
||
this.activate(t.parent("li"), n), this.activate(s, s.parent(), function() {
|
||
t.trigger({
|
||
type: "shown.bs.tab",
|
||
relatedTarget: o
|
||
});
|
||
});
|
||
}
|
||
}
|
||
}, t.prototype.activate = function(t, n, i) {
|
||
function o() {
|
||
r.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),
|
||
t.addClass("active"), s ? (t[0].offsetWidth, t.addClass("in")) : t.removeClass("fade"),
|
||
t.parent(".dropdown-menu") && t.closest("li.dropdown").addClass("active"), i && i();
|
||
}
|
||
var r = n.find("> .active"), s = i && e.support.transition && r.hasClass("fade");
|
||
s ? r.one(e.support.transition.end, o).emulateTransitionEnd(150) : o(), r.removeClass("in");
|
||
};
|
||
var n = e.fn.tab;
|
||
e.fn.tab = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.tab");
|
||
o || i.data("bs.tab", o = new t(this)), "string" == typeof n && o[n]();
|
||
});
|
||
}, e.fn.tab.Constructor = t, e.fn.tab.noConflict = function() {
|
||
return e.fn.tab = n, this;
|
||
}, e(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function(t) {
|
||
t.preventDefault(), e(this).tab("show");
|
||
});
|
||
}(window.jQuery), +function(e) {
|
||
var t = function(n, i) {
|
||
this.options = e.extend({}, t.DEFAULTS, i), this.$window = e(window).on("scroll.bs.affix.data-api", e.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", e.proxy(this.checkPositionWithEventLoop, this)),
|
||
this.$element = e(n), this.affixed = this.unpin = null, this.checkPosition();
|
||
};
|
||
t.RESET = "affix affix-top affix-bottom", t.DEFAULTS = {
|
||
offset: 0
|
||
}, t.prototype.checkPositionWithEventLoop = function() {
|
||
setTimeout(e.proxy(this.checkPosition, this), 1);
|
||
}, t.prototype.checkPosition = function() {
|
||
if (this.$element.is(":visible")) {
|
||
var n = e(document).height(), i = this.$window.scrollTop(), o = this.$element.offset(), r = this.options.offset, s = r.top, a = r.bottom;
|
||
"object" != typeof r && (a = s = r), "function" == typeof s && (s = r.top()), "function" == typeof a && (a = r.bottom());
|
||
var l = null != this.unpin && i + this.unpin <= o.top ? !1 : null != a && o.top + this.$element.height() >= n - a ? "bottom" : null != s && s >= i ? "top" : !1;
|
||
this.affixed !== l && (this.unpin && this.$element.css("top", ""), this.affixed = l,
|
||
this.unpin = "bottom" == l ? o.top - i : null, this.$element.removeClass(t.RESET).addClass("affix" + (l ? "-" + l : "")),
|
||
"bottom" == l && this.$element.offset({
|
||
top: document.body.offsetHeight - a - this.$element.height()
|
||
}));
|
||
}
|
||
};
|
||
var n = e.fn.affix;
|
||
e.fn.affix = function(n) {
|
||
return this.each(function() {
|
||
var i = e(this), o = i.data("bs.affix"), r = "object" == typeof n && n;
|
||
o || i.data("bs.affix", o = new t(this, r)), "string" == typeof n && o[n]();
|
||
});
|
||
}, e.fn.affix.Constructor = t, e.fn.affix.noConflict = function() {
|
||
return e.fn.affix = n, this;
|
||
}, e(window).on("load", function() {
|
||
e('[data-spy="affix"]').each(function() {
|
||
var t = e(this), n = t.data();
|
||
n.offset = n.offset || {}, n.offsetBottom && (n.offset.bottom = n.offsetBottom),
|
||
n.offsetTop && (n.offset.top = n.offsetTop), t.affix(n);
|
||
});
|
||
});
|
||
}(window.jQuery), define("bootstrap", function() {}), function(e, t) {
|
||
var n, i;
|
||
return i = t.document, n = function() {
|
||
function n(n) {
|
||
this._options = e.extend({
|
||
name: "tour",
|
||
container: "body",
|
||
keyboard: !0,
|
||
storage: t.localStorage,
|
||
debug: !1,
|
||
backdrop: !1,
|
||
redirect: !0,
|
||
orphan: !1,
|
||
basePath: "",
|
||
template: "<div class='popover'> <div class='arrow'></div> <h3 class='popover-title'></h3> <div class='popover-content'></div> <div class='popover-navigation'> <div class='btn-group'> <button class='btn btn-sm btn-default' data-role='prev'>« Prev</button> <button class='btn btn-sm btn-default' data-role='next'>Next »</button> </div> <button class='btn btn-sm btn-default' data-role='end'>End tour</button> </div> </div>",
|
||
afterSetState: function() {},
|
||
afterGetState: function() {},
|
||
afterRemoveState: function() {},
|
||
onStart: function() {},
|
||
onEnd: function() {},
|
||
onShow: function() {},
|
||
onShown: function() {},
|
||
onHide: function() {},
|
||
onHidden: function() {},
|
||
onNext: function() {},
|
||
onPrev: function() {}
|
||
}, n), this._force = !1, this._inited = !1, this._steps = [], this.backdrop = {
|
||
overlay: null,
|
||
$element: null,
|
||
$background: null,
|
||
backgroundShown: !1,
|
||
overlayElementShown: !1
|
||
};
|
||
}
|
||
return n.prototype.setState = function(e, t) {
|
||
var n, i;
|
||
if (this._options.storage) {
|
||
i = "" + this._options.name + "_" + e;
|
||
try {
|
||
this._options.storage.setItem(i, t);
|
||
} catch (o) {
|
||
n = o, n.code === DOMException.QUOTA_EXCEEDED_ERR && this.debug("LocalStorage quota exceeded. setState failed.");
|
||
}
|
||
return this._options.afterSetState(i, t);
|
||
}
|
||
return null == this._state && (this._state = {}), this._state[e] = t;
|
||
}, n.prototype.removeState = function(e) {
|
||
var t;
|
||
return this._options.storage ? (t = "" + this._options.name + "_" + e, this._options.storage.removeItem(t),
|
||
this._options.afterRemoveState(t)) : null != this._state ? delete this._state[e] : void 0;
|
||
}, n.prototype.getState = function(e) {
|
||
var t, n;
|
||
return this._options.storage ? (t = "" + this._options.name + "_" + e, n = this._options.storage.getItem(t)) : null != this._state && (n = this._state[e]),
|
||
(void 0 === n || "null" === n) && (n = null), this._options.afterGetState(e, n),
|
||
n;
|
||
}, n.prototype.addSteps = function(e) {
|
||
var t, n, i, o;
|
||
for (o = [], n = 0, i = e.length; i > n; n++) t = e[n], o.push(this.addStep(t));
|
||
return o;
|
||
}, n.prototype.addStep = function(e) {
|
||
return this._steps.push(e);
|
||
}, n.prototype.getStep = function(t) {
|
||
return null != this._steps[t] ? e.extend({
|
||
id: "step-" + t,
|
||
path: "",
|
||
placement: "right",
|
||
title: "",
|
||
content: "<p></p>",
|
||
next: t === this._steps.length - 1 ? -1 : t + 1,
|
||
prev: t - 1,
|
||
animation: !0,
|
||
container: this._options.container,
|
||
backdrop: this._options.backdrop,
|
||
redirect: this._options.redirect,
|
||
orphan: this._options.orphan,
|
||
template: this._options.template,
|
||
onShow: this._options.onShow,
|
||
onShown: this._options.onShown,
|
||
onHide: this._options.onHide,
|
||
onHidden: this._options.onHidden,
|
||
onNext: this._options.onNext,
|
||
onPrev: this._options.onPrev
|
||
}, this._steps[t]) : void 0;
|
||
}, n.prototype.init = function(e) {
|
||
var t = this;
|
||
return this._force = e, this.ended() ? this._debug("Tour ended, init prevented.") : (this.setCurrentStep(),
|
||
this._setupMouseNavigation(), this._setupKeyboardNavigation(), this._onResize(function() {
|
||
return t.showStep(t._current);
|
||
}), null !== this._current && this.showStep(this._current), this._inited = !0, this);
|
||
}, n.prototype.start = function(e) {
|
||
var t;
|
||
return null == e && (e = !1), this._inited || this.init(e), null === this._current ? (t = this._makePromise(null != this._options.onStart ? this._options.onStart(this) : void 0),
|
||
this._callOnPromiseDone(t, this.showStep, 0)) : void 0;
|
||
}, n.prototype.next = function() {
|
||
var e;
|
||
return this.ended() ? this._debug("Tour ended, next prevented.") : (e = this.hideStep(this._current),
|
||
this._callOnPromiseDone(e, this._showNextStep));
|
||
}, n.prototype.prev = function() {
|
||
var e;
|
||
return this.ended() ? this._debug("Tour ended, prev prevented.") : (e = this.hideStep(this._current),
|
||
this._callOnPromiseDone(e, this._showPrevStep));
|
||
}, n.prototype.goTo = function(e) {
|
||
var t;
|
||
return this.ended() ? this._debug("Tour ended, goTo prevented.") : (t = this.hideStep(this._current),
|
||
this._callOnPromiseDone(t, this.showStep, e));
|
||
}, n.prototype.end = function() {
|
||
var n, o, r = this;
|
||
return n = function() {
|
||
return e(i).off("click.tour-" + r._options.name), e(i).off("keyup.tour-" + r._options.name),
|
||
e(t).off("resize.tour-" + r._options.name), r.setState("end", "yes"), r._inited = !1,
|
||
r._force = !1, null != r._options.onEnd ? r._options.onEnd(r) : void 0;
|
||
}, o = this.hideStep(this._current), this._callOnPromiseDone(o, n);
|
||
}, n.prototype.ended = function() {
|
||
return !this._force && !!this.getState("end");
|
||
}, n.prototype.restart = function() {
|
||
return this.removeState("current_step"), this.removeState("end"), this.setCurrentStep(0),
|
||
this.start();
|
||
}, n.prototype.hideStep = function(t) {
|
||
var n, i, o, r = this;
|
||
return (o = this.getStep(t)) ? (i = this._makePromise(null != o.onHide ? o.onHide(this, t) : void 0),
|
||
n = function() {
|
||
var t;
|
||
return t = r._isOrphan(o) ? e("body") : e(o.element), t.popover("destroy"), o.reflex && t.css("cursor", "").off("click.tour-" + r._options.name),
|
||
o.backdrop && r._hideBackdrop(), null != o.onHidden ? o.onHidden(r) : void 0;
|
||
}, this._callOnPromiseDone(i, n), i) : void 0;
|
||
}, n.prototype.showStep = function(t) {
|
||
var n, o, r, s, a = this;
|
||
return (s = this.getStep(t)) ? (r = t < this._current, n = this._makePromise(null != s.onShow ? s.onShow(this, t) : void 0),
|
||
o = function() {
|
||
var n, o;
|
||
if (a.setCurrentStep(t), o = e.isFunction(s.path) ? s.path.call() : a._options.basePath + s.path,
|
||
n = [ i.location.pathname, i.location.hash ].join(""), a._isRedirect(o, n)) return a._redirect(s, o),
|
||
void 0;
|
||
if (a._isOrphan(s)) {
|
||
if (!s.orphan) return a._debug("Skip the orphan step " + (a._current + 1) + ". Orphan option is false and the element doesn't exist or is hidden."),
|
||
r ? a._showPrevStep() : a._showNextStep(), void 0;
|
||
a._debug("Show the orphan step " + (a._current + 1) + ". Orphans option is true.");
|
||
}
|
||
return s.backdrop && a._showBackdrop(a._isOrphan(s) ? void 0 : s.element), a._scrollIntoView(s.element, function() {
|
||
return null != s.element && s.backdrop && a._showOverlayElement(s.element), a._showPopover(s, t),
|
||
null != s.onShown && s.onShown(a), a._debug("Step " + (a._current + 1) + " of " + a._steps.length);
|
||
});
|
||
}, this._callOnPromiseDone(n, o), n) : void 0;
|
||
}, n.prototype.setCurrentStep = function(e) {
|
||
return null != e ? (this._current = e, this.setState("current_step", e)) : (this._current = this.getState("current_step"),
|
||
this._current = null === this._current ? null : parseInt(this._current, 10)), this;
|
||
}, n.prototype._showNextStep = function() {
|
||
var e, t, n, i = this;
|
||
return n = this.getStep(this._current), t = function() {
|
||
return i.showStep(n.next);
|
||
}, e = this._makePromise(null != n.onNext ? n.onNext(this) : void 0), this._callOnPromiseDone(e, t);
|
||
}, n.prototype._showPrevStep = function() {
|
||
var e, t, n, i = this;
|
||
return n = this.getStep(this._current), t = function() {
|
||
return i.showStep(n.prev);
|
||
}, e = this._makePromise(null != n.onPrev ? n.onPrev(this) : void 0), this._callOnPromiseDone(e, t);
|
||
}, n.prototype._debug = function(e) {
|
||
return this._options.debug ? t.console.log("Bootstrap Tour '" + this._options.name + "' | " + e) : void 0;
|
||
}, n.prototype._isRedirect = function(e, t) {
|
||
return null != e && "" !== e && e.replace(/\?.*$/, "").replace(/\/?$/, "") !== t.replace(/\/?$/, "");
|
||
}, n.prototype._redirect = function(t, n) {
|
||
return e.isFunction(t.redirect) ? t.redirect.call(this, n) : t.redirect === !0 ? (this._debug("Redirect to " + n),
|
||
i.location.href = n) : void 0;
|
||
}, n.prototype._isOrphan = function(t) {
|
||
return null == t.element || !e(t.element).length || e(t.element).is(":hidden") && "http://www.w3.org/2000/svg" !== e(t.element)[0].namespaceURI;
|
||
}, n.prototype._showPopover = function(t, n) {
|
||
var i, o, r, s, a, l, c = this;
|
||
return l = e.extend({}, this._options), r = e.isFunction(t.template) ? e(t.template(n, t)) : e(t.template),
|
||
o = r.find(".popover-navigation"), a = this._isOrphan(t), a && (t.element = "body",
|
||
t.placement = "top", r = r.addClass("orphan")), i = e(t.element), r.addClass("tour-" + this._options.name),
|
||
t.options && e.extend(l, t.options), t.reflex && i.css("cursor", "pointer").on("click.tour-" + this._options.name, function() {
|
||
return c._current < c._steps.length - 1 ? c.next() : c.end();
|
||
}), t.prev < 0 && o.find("*[data-role=prev]").addClass("disabled"), t.next < 0 && o.find("*[data-role=next]").addClass("disabled"),
|
||
t.template = r.clone().wrap("<div>").parent().html(), i.popover({
|
||
placement: t.placement,
|
||
trigger: "manual",
|
||
title: t.title,
|
||
content: t.content,
|
||
html: !0,
|
||
animation: t.animation,
|
||
container: t.container,
|
||
template: t.template,
|
||
selector: t.element
|
||
}).popover("show"), s = i.data("bs.popover") ? i.data("bs.popover").tip() : i.data("popover").tip(),
|
||
s.attr("id", t.id), this._reposition(s, t), a ? this._center(s) : void 0;
|
||
}, n.prototype._reposition = function(t, n) {
|
||
var o, r, s, a, l, c, u;
|
||
if (a = t[0].offsetWidth, r = t[0].offsetHeight, u = t.offset(), l = u.left, c = u.top,
|
||
o = e(i).outerHeight() - u.top - t.outerHeight(), 0 > o && (u.top = u.top + o),
|
||
s = e("html").outerWidth() - u.left - t.outerWidth(), 0 > s && (u.left = u.left + s),
|
||
u.top < 0 && (u.top = 0), u.left < 0 && (u.left = 0), t.offset(u), "bottom" === n.placement || "top" === n.placement) {
|
||
if (l !== u.left) return this._replaceArrow(t, 2 * (u.left - l), a, "left");
|
||
} else if (c !== u.top) return this._replaceArrow(t, 2 * (u.top - c), r, "top");
|
||
}, n.prototype._center = function(n) {
|
||
return n.css("top", e(t).outerHeight() / 2 - n.outerHeight() / 2);
|
||
}, n.prototype._replaceArrow = function(e, t, n, i) {
|
||
return e.find(".arrow").css(i, t ? 50 * (1 - t / n) + "%" : "");
|
||
}, n.prototype._scrollIntoView = function(n, i) {
|
||
var o, r, s, a, l, c = this;
|
||
return n ? (o = e(n), r = e(t), s = o.offset().top, l = r.height(), a = Math.max(0, s - l / 2),
|
||
this._debug("Scroll into view. ScrollTop: " + a + ". Element offset: " + s + ". Window height: " + l + "."),
|
||
e("body").stop().animate({
|
||
scrollTop: Math.ceil(a)
|
||
}, function() {
|
||
return i(), c._debug("Scroll into view. Animation end element offset: " + o.offset().top + ". Window height: " + r.height() + ".");
|
||
})) : i();
|
||
}, n.prototype._onResize = function(n, i) {
|
||
return e(t).on("resize.tour-" + this._options.name, function() {
|
||
return clearTimeout(i), i = setTimeout(n, 100);
|
||
});
|
||
}, n.prototype._setupMouseNavigation = function() {
|
||
var t = this;
|
||
return e(i).off("click.tour-" + this._options.name, ".popover.tour-" + this._options.name + " *[data-role=next]:not(.disabled)").on("click.tour-" + this._options.name, ".popover.tour-" + this._options.name + " *[data-role=next]:not(.disabled)", function(e) {
|
||
return e.preventDefault(), t.next();
|
||
}), e(i).off("click.tour-" + this._options.name, ".popover.tour-" + this._options.name + " *[data-role=prev]:not(.disabled)").on("click.tour-" + this._options.name, ".popover.tour-" + this._options.name + " *[data-role=prev]:not(.disabled)", function(e) {
|
||
return e.preventDefault(), t.prev();
|
||
}), e(i).off("click.tour-" + this._options.name, ".popover.tour-" + this._options.name + " *[data-role=end]").on("click.tour-" + this._options.name, ".popover.tour-" + this._options.name + " *[data-role=end]", function(e) {
|
||
return e.preventDefault(), t.end();
|
||
});
|
||
}, n.prototype._setupKeyboardNavigation = function() {
|
||
var t = this;
|
||
if (this._options.keyboard) return e(i).on("keyup.tour-" + this._options.name, function(e) {
|
||
if (e.which) switch (e.which) {
|
||
case 39:
|
||
return e.preventDefault(), t._current < t._steps.length - 1 ? t.next() : t.end();
|
||
|
||
case 37:
|
||
if (e.preventDefault(), t._current > 0) return t.prev();
|
||
break;
|
||
|
||
case 27:
|
||
return e.preventDefault(), t.end();
|
||
}
|
||
});
|
||
}, n.prototype._makePromise = function(t) {
|
||
return t && e.isFunction(t.then) ? t : null;
|
||
}, n.prototype._callOnPromiseDone = function(e, t, n) {
|
||
var i = this;
|
||
return e ? e.then(function() {
|
||
return t.call(i, n);
|
||
}) : t.call(this, n);
|
||
}, n.prototype._showBackdrop = function() {
|
||
return this.backdrop.backgroundShown ? void 0 : (this.backdrop = e("<div/>", {
|
||
"class": "tour-backdrop"
|
||
}), this.backdrop.backgroundShown = !0, e("body").append(this.backdrop));
|
||
}, n.prototype._hideBackdrop = function() {
|
||
return this._hideOverlayElement(), this._hideBackground();
|
||
}, n.prototype._hideBackground = function() {
|
||
return this.backdrop.remove(), this.backdrop.overlay = null, this.backdrop.backgroundShown = !1;
|
||
}, n.prototype._showOverlayElement = function(t) {
|
||
var n, i, o;
|
||
if (!this.backdrop.overlayElementShown) return this.backdrop.overlayElementShown = !0,
|
||
i = e(t), n = e("<div/>"), o = i.offset(), o.top = o.top, o.left = o.left, n.width(i.innerWidth()).height(i.innerHeight()).addClass("tour-step-background").offset(o),
|
||
i.addClass("tour-step-backdrop"), e("body").append(n), this.backdrop.$element = i,
|
||
this.backdrop.$background = n;
|
||
}, n.prototype._hideOverlayElement = function() {
|
||
return this.backdrop.overlayElementShown ? (this.backdrop.$element.removeClass("tour-step-backdrop"),
|
||
this.backdrop.$background.remove(), this.backdrop.$element = null, this.backdrop.$background = null,
|
||
this.backdrop.overlayElementShown = !1) : void 0;
|
||
}, n;
|
||
}(), t.Tour = n;
|
||
}(jQuery, window), define("bootstrap-tour", [ "bootstrap" ], function(e) {
|
||
return function() {
|
||
var t;
|
||
return t || e.Tour;
|
||
};
|
||
}(this)), define("extensions/welcomeTour", [ "underscore", "jquery", "storage", "classes/Extension", "bootstrap-tour" ], function(e, t, n, i, o) {
|
||
var r = new i("welcomeTour", "Welcome tour", !1, !0);
|
||
return r.onReady = function() {
|
||
var i = new o({
|
||
keyboard: !1,
|
||
storage: {
|
||
getItem: function() {},
|
||
setItem: function() {},
|
||
removeItem: function() {}
|
||
},
|
||
onEnd: function() {
|
||
n.welcomeTour = "done";
|
||
var e = t(".button-markdown-syntax").parent().tooltip({
|
||
html: !0,
|
||
container: t(".extension-preview-buttons"),
|
||
placement: "bottom",
|
||
trigger: "manual",
|
||
title: "Need help with Markdown syntax?"
|
||
}).tooltip("show").addClass("info-tooltip");
|
||
e.one("click", function() {
|
||
e.tooltip("hide").removeClass("info-tooltip");
|
||
}), setTimeout(function() {
|
||
e.tooltip("hide").removeClass("info-tooltip");
|
||
}, 3e4);
|
||
},
|
||
template: [ '<div class="popover tour">', ' <div class="arrow"></div>', ' <h3 class="popover-title"></h3>', ' <div class="popover-content"></div>', ' <nav class="popover-navigation">', ' <button class="btn btn-primary" data-role="next">Next</button>', ' <button class="btn btn-default" data-role="end">Got it!</button>', " </nav>", "</div>" ].join("")
|
||
});
|
||
i.addSteps([ {
|
||
element: ".navbar-inner",
|
||
title: "Welcome to StackEdit!",
|
||
content: [ '<i class="icon-lock pull-left"></i>', '<p><strong>You are using the new secured platform.</strong> If you want to recover your documents from the old platform <a target="_blank" href="http://benweet.github.io/stackedit/recovery.html">click here</a>.</p>', "Please click <code>Next</code> to take a quick tour." ].join(""),
|
||
placement: "bottom"
|
||
}, {
|
||
element: ".navbar-inner > .nav .action-create-file, .navbar .right-buttons-dropdown > .nav > .btn:not(:hidden)",
|
||
title: "New document",
|
||
content: 'Click the <i class="icon-file"></i> <code>New document</code> button to create a new document.',
|
||
placement: "left",
|
||
reflex: !0
|
||
}, {
|
||
element: ".document-panel .collapse-button",
|
||
title: "Toggle document",
|
||
content: [ '<p>Click the <i class="icon-folder-open"></i> <code>Select document</code> button to switch to another document.</p>', "Use <code>Ctrl+[</code> and <code>Ctrl+]</code> shortcuts to toggle quickly." ].join(""),
|
||
placement: "left",
|
||
reflex: !0
|
||
}, {
|
||
element: ".menu-panel .collapse-button",
|
||
title: "Menu",
|
||
content: [ '<p>Use the <i class="icon-provider-stackedit"></i> menu to synchronize your document on <i class="icon-provider-gdrive"></i> <code>Google Drive</code> or <i class="icon-provider-dropbox"></i> <code>Dropbox</code>.</p>', 'Use also this menu to publish your document on <i class="icon-provider-github"></i> <code>GitHub</code>, <i class="icon-provider-blogger"></i> <code>Blogger</code>...' ].join(""),
|
||
placement: "right",
|
||
reflex: !0
|
||
}, {
|
||
element: ".navbar-inner > .nav .button-synchronize, .navbar .right-buttons-dropdown > .nav > .btn:not(:hidden)",
|
||
title: "Synchronize",
|
||
content: '<p>Once imported or exported, use the <i class="icon-refresh"></i> <code>Synchronize</code> button to force the synchronization</p>This is done automatically every 3 minutes.',
|
||
placement: "left",
|
||
reflex: !0
|
||
}, {
|
||
element: ".navbar-inner > .nav .button-publish, .navbar .right-buttons-dropdown > .nav > .btn:not(:hidden)",
|
||
title: "Update publication",
|
||
content: 'Once published, use the <i class="icon-share"></i> <code>Publish</code> button to update the publication.',
|
||
placement: "left",
|
||
reflex: !0
|
||
}, {
|
||
element: ".navbar-inner",
|
||
title: "Happy StackWriting!",
|
||
content: [ 'Enjoy, and don\'t forget to rate <b>StackEdit</b> on <a target="_blank" href="https://chrome.google.com/webstore/detail/stackedit/iiooodelglhkcpgbajoejffhijaclcdg/reviews">Chrome Web Store</a>...' ].join(""),
|
||
placement: "bottom"
|
||
} ]), e.has(n, "welcomeTour") || i.start(), t(".action-welcome-tour").click(function() {
|
||
i.restart();
|
||
});
|
||
}, r;
|
||
}), define("text!bower-libs/Typo.js/typo/typo.js", [], function() {
|
||
return '\'use strict\';\n\n/**\n * Typo is a JavaScript implementation of a spellchecker using hunspell-style \n * dictionaries.\n */\n\n/**\n * Typo constructor.\n *\n * @param {String} [dictionary] The locale code of the dictionary being used. e.g.,\n * "en_US". This is only used to auto-load dictionaries.\n * @param {String} [affData] The data from the dictionary\'s .aff file. If omitted\n * and the first argument is supplied, in "chrome" platform,\n * the .aff file will be loaded automatically from\n * lib/typo/dictionaries/[dictionary]/[dictionary].aff\n * In other platform, it will be loaded from\n * [setting.path]/dictionaries/[dictionary]/[dictionary].aff\n * @param {String} [wordsData] The data from the dictionary\'s .dic file. If omitted,\n * and the first argument is supplied, in "chrome" platform,\n * the .dic file will be loaded automatically from\n * lib/typo/dictionaries/[dictionary]/[dictionary].dic\n * In other platform, it will be loaded from\n * [setting.path]/dictionaries/[dictionary]/[dictionary].dic\n * @param {Object} [settings] Constructor settings. Available properties are:\n * {String} [platform]: "chrome" for Chrome Extension or other\n * value for the usual web.\n * {String} [path]: path to load dictionary from in non-chrome\n * environment.\n * {Object} [flags]: flag information.\n *\n *\n * @returns {Typo} A Typo object.\n */\n\nvar Typo = function (dictionary, affData, wordsData, settings) {\n settings = settings || {};\n \n /** Determines the method used for auto-loading .aff and .dic files. **/\n this.platform = settings.platform || "chrome"; \n \n this.dictionary = null;\n \n this.rules = {};\n this.dictionaryTable = {};\n \n this.compoundRules = [];\n this.compoundRuleCodes = {};\n \n this.replacementTable = [];\n \n this.flags = settings.flags || {}; \n \n if (dictionary) {\n this.dictionary = dictionary;\n \n if (this.platform == "chrome") {\n if (!affData) affData = this._readFile(chrome.extension.getURL("lib/typo/dictionaries/" + dictionary + "/" + dictionary + ".aff"));\n if (!wordsData) wordsData = this._readFile(chrome.extension.getURL("lib/typo/dictionaries/" + dictionary + "/" + dictionary + ".dic"));\n } else {\n var path = settings.dictionaryPath || \'\';\n \n if (!affData) affData = this._readFile(path + "/" + dictionary + "/" + dictionary + ".aff");\n if (!wordsData) wordsData = this._readFile(path + "/" + dictionary + "/" + dictionary + ".dic");\n }\n \n this.rules = this._parseAFF(affData);\n \n // Save the rule codes that are used in compound rules.\n this.compoundRuleCodes = {};\n \n for (var i = 0, _len = this.compoundRules.length; i < _len; i++) {\n var rule = this.compoundRules[i];\n \n for (var j = 0, _jlen = rule.length; j < _jlen; j++) {\n this.compoundRuleCodes[rule[j]] = [];\n }\n }\n \n // If we add this ONLYINCOMPOUND flag to this.compoundRuleCodes, then _parseDIC\n // will do the work of saving the list of words that are compound-only.\n if ("ONLYINCOMPOUND" in this.flags) {\n this.compoundRuleCodes[this.flags.ONLYINCOMPOUND] = [];\n }\n \n this.dictionaryTable = this._parseDIC(wordsData);\n \n // Get rid of any codes from the compound rule codes that are never used \n // (or that were special regex characters). Not especially necessary... \n for (var i in this.compoundRuleCodes) {\n if (this.compoundRuleCodes[i].length == 0) {\n delete this.compoundRuleCodes[i];\n }\n }\n \n // Build the full regular expressions for each compound rule.\n // I have a feeling (but no confirmation yet) that this method of \n // testing for compound words is probably slow.\n for (var i = 0, _len = this.compoundRules.length; i < _len; i++) {\n var ruleText = this.compoundRules[i];\n \n var expressionText = "";\n \n for (var j = 0, _jlen = ruleText.length; j < _jlen; j++) {\n var character = ruleText[j];\n \n if (character in this.compoundRuleCodes) {\n expressionText += "(" + this.compoundRuleCodes[character].join("|") + ")";\n }\n else {\n expressionText += character;\n }\n }\n \n this.compoundRules[i] = new RegExp(expressionText, "i");\n }\n }\n \n return this;\n};\n\nTypo.prototype = {\n /**\n * Loads a Typo instance from a hash of all of the Typo properties.\n *\n * @param object obj A hash of Typo properties, probably gotten from a JSON.parse(JSON.stringify(typo_instance)).\n */\n \n load : function (obj) {\n for (var i in obj) {\n this[i] = obj[i];\n }\n \n return this;\n },\n \n /**\n * Read the contents of a file.\n * \n * @param {String} path The path (relative) to the file.\n * @param {String} [charset="ISO8859-1"] The expected charset of the file\n * @returns string The file data.\n */\n \n _readFile : function (path, charset) {\n if (!charset) charset = "ISO8859-1";\n \n var req = new XMLHttpRequest();\n req.open("GET", path, false);\n \n if (req.overrideMimeType)\n req.overrideMimeType("text/plain; charset=" + charset);\n \n req.send(null);\n \n return req.responseText;\n },\n \n /**\n * Parse the rules out from a .aff file.\n *\n * @param {String} data The contents of the affix file.\n * @returns object The rules from the file.\n */\n \n _parseAFF : function (data) {\n var rules = {};\n \n // Remove comment lines\n data = this._removeAffixComments(data);\n \n var lines = data.split("\\n");\n \n for (var i = 0, _len = lines.length; i < _len; i++) {\n var line = lines[i];\n \n var definitionParts = line.split(/\\s+/);\n \n var ruleType = definitionParts[0];\n \n if (ruleType == "PFX" || ruleType == "SFX") {\n var ruleCode = definitionParts[1];\n var combineable = definitionParts[2];\n var numEntries = parseInt(definitionParts[3], 10);\n \n var entries = [];\n \n for (var j = i + 1, _jlen = i + 1 + numEntries; j < _jlen; j++) {\n var line = lines[j];\n \n var lineParts = line.split(/\\s+/);\n var charactersToRemove = lineParts[2];\n \n var additionParts = lineParts[3].split("/");\n \n var charactersToAdd = additionParts[0];\n if (charactersToAdd === "0") charactersToAdd = "";\n \n var continuationClasses = this.parseRuleCodes(additionParts[1]);\n \n var regexToMatch = lineParts[4];\n \n var entry = {};\n entry.add = charactersToAdd;\n \n if (continuationClasses.length > 0) entry.continuationClasses = continuationClasses;\n \n if (regexToMatch !== ".") {\n if (ruleType === "SFX") {\n entry.match = new RegExp(regexToMatch + "$");\n }\n else {\n entry.match = new RegExp("^" + regexToMatch);\n }\n }\n \n if (charactersToRemove != "0") {\n if (ruleType === "SFX") {\n entry.remove = new RegExp(charactersToRemove + "$");\n }\n else {\n entry.remove = charactersToRemove;\n }\n }\n \n entries.push(entry);\n }\n \n rules[ruleCode] = { "type" : ruleType, "combineable" : (combineable == "Y"), "entries" : entries };\n \n i += numEntries;\n }\n else if (ruleType === "COMPOUNDRULE") {\n var numEntries = parseInt(definitionParts[1], 10);\n \n for (var j = i + 1, _jlen = i + 1 + numEntries; j < _jlen; j++) {\n var line = lines[j];\n \n var lineParts = line.split(/\\s+/);\n this.compoundRules.push(lineParts[1]);\n }\n \n i += numEntries;\n }\n else if (ruleType === "REP") {\n var lineParts = line.split(/\\s+/);\n \n if (lineParts.length === 3) {\n this.replacementTable.push([ lineParts[1], lineParts[2] ]);\n }\n }\n else {\n // ONLYINCOMPOUND\n // COMPOUNDMIN\n // FLAG\n // KEEPCASE\n // NEEDAFFIX\n \n this.flags[ruleType] = definitionParts[1];\n }\n }\n \n return rules;\n },\n \n /**\n * Removes comment lines and then cleans up blank lines and trailing whitespace.\n *\n * @param {String} data The data from an affix file.\n * @return {String} The cleaned-up data.\n */\n \n _removeAffixComments : function (data) {\n // Remove comments\n data = data.replace(/#.*$/mg, "");\n \n // Trim each line\n data = data.replace(/^\\s\\s*/m, \'\').replace(/\\s\\s*$/m, \'\');\n \n // Remove blank lines.\n data = data.replace(/\\n{2,}/g, "\\n");\n \n // Trim the entire string\n data = data.replace(/^\\s\\s*/, \'\').replace(/\\s\\s*$/, \'\');\n \n return data;\n },\n \n /**\n * Parses the words out from the .dic file.\n *\n * @param {String} data The data from the dictionary file.\n * @returns object The lookup table containing all of the words and\n * word forms from the dictionary.\n */\n \n _parseDIC : function (data) {\n data = this._removeDicComments(data);\n \n var lines = data.split("\\n");\n var dictionaryTable = {};\n \n function addWord(word, rules) {\n // Some dictionaries will list the same word multiple times with different rule sets.\n if (!(word in dictionaryTable) || typeof dictionaryTable[word] != \'object\') {\n dictionaryTable[word] = [];\n }\n \n dictionaryTable[word].push(rules);\n }\n \n // The first line is the number of words in the dictionary.\n for (var i = 1, _len = lines.length; i < _len; i++) {\n var line = lines[i];\n \n var parts = line.split("/", 2);\n \n var word = parts[0];\n\n // Now for each affix rule, generate that form of the word.\n if (parts.length > 1) {\n var ruleCodesArray = this.parseRuleCodes(parts[1]);\n \n // Save the ruleCodes for compound word situations.\n if (!("NEEDAFFIX" in this.flags) || ruleCodesArray.indexOf(this.flags.NEEDAFFIX) == -1) {\n addWord(word, ruleCodesArray);\n }\n \n for (var j = 0, _jlen = ruleCodesArray.length; j < _jlen; j++) {\n var code = ruleCodesArray[j];\n \n var rule = this.rules[code];\n \n if (rule) {\n var newWords = this._applyRule(word, rule);\n \n for (var ii = 0, _iilen = newWords.length; ii < _iilen; ii++) {\n var newWord = newWords[ii];\n \n addWord(newWord, []);\n \n if (rule.combineable) {\n for (var k = j + 1; k < _jlen; k++) {\n var combineCode = ruleCodesArray[k];\n \n var combineRule = this.rules[combineCode];\n \n if (combineRule) {\n if (combineRule.combineable && (rule.type != combineRule.type)) {\n var otherNewWords = this._applyRule(newWord, combineRule);\n \n for (var iii = 0, _iiilen = otherNewWords.length; iii < _iiilen; iii++) {\n var otherNewWord = otherNewWords[iii];\n addWord(otherNewWord, []);\n }\n }\n }\n }\n }\n }\n }\n \n if (code in this.compoundRuleCodes) {\n this.compoundRuleCodes[code].push(word);\n }\n }\n }\n else {\n addWord(word, []);\n }\n }\n \n return dictionaryTable;\n },\n \n \n /**\n * Removes comment lines and then cleans up blank lines and trailing whitespace.\n *\n * @param {String} data The data from a .dic file.\n * @return {String} The cleaned-up data.\n */\n \n _removeDicComments : function (data) {\n // I can\'t find any official documentation on it, but at least the de_DE\n // dictionary uses tab-indented lines as comments.\n \n // Remove comments\n data = data.replace(/^\\t.*$/mg, "");\n \n return data;\n \n // Trim each line\n data = data.replace(/^\\s\\s*/m, \'\').replace(/\\s\\s*$/m, \'\');\n \n // Remove blank lines.\n data = data.replace(/\\n{2,}/g, "\\n");\n \n // Trim the entire string\n data = data.replace(/^\\s\\s*/, \'\').replace(/\\s\\s*$/, \'\');\n \n return data;\n },\n \n parseRuleCodes : function (textCodes) {\n if (!textCodes) {\n return [];\n }\n else if (!("FLAG" in this.flags)) {\n return textCodes.split("");\n }\n else if (this.flags.FLAG === "long") {\n var flags = [];\n \n for (var i = 0, _len = textCodes.length; i < _len; i += 2) {\n flags.push(textCodes.substr(i, 2));\n }\n \n return flags;\n }\n else if (this.flags.FLAG === "num") {\n return textCode.split(",");\n }\n },\n \n /**\n * Applies an affix rule to a word.\n *\n * @param {String} word The base word.\n * @param {Object} rule The affix rule.\n * @returns {String[]} The new words generated by the rule.\n */\n \n _applyRule : function (word, rule) {\n var entries = rule.entries;\n var newWords = [];\n \n for (var i = 0, _len = entries.length; i < _len; i++) {\n var entry = entries[i];\n \n if (!entry.match || word.match(entry.match)) {\n var newWord = word;\n \n if (entry.remove) {\n newWord = newWord.replace(entry.remove, "");\n }\n \n if (rule.type === "SFX") {\n newWord = newWord + entry.add;\n }\n else {\n newWord = entry.add + newWord;\n }\n \n newWords.push(newWord);\n \n if ("continuationClasses" in entry) {\n for (var j = 0, _jlen = entry.continuationClasses.length; j < _jlen; j++) {\n var continuationRule = this.rules[entry.continuationClasses[j]];\n \n if (continuationRule) {\n newWords = newWords.concat(this._applyRule(newWord, continuationRule));\n }\n /*\n else {\n // This shouldn\'t happen, but it does, at least in the de_DE dictionary.\n // I think the author mistakenly supplied lower-case rule codes instead \n // of upper-case.\n }\n */\n }\n }\n }\n }\n \n return newWords;\n },\n \n /**\n * Checks whether a word or a capitalization variant exists in the current dictionary.\n * The word is trimmed and several variations of capitalizations are checked.\n * If you want to check a word without any changes made to it, call checkExact()\n *\n * @see http://blog.stevenlevithan.com/archives/faster-trim-javascript re:trimming function\n *\n * @param {String} aWord The word to check.\n * @returns {Boolean}\n */\n \n check : function (aWord) {\n // Remove leading and trailing whitespace\n var trimmedWord = aWord.replace(/^\\s\\s*/, \'\').replace(/\\s\\s*$/, \'\');\n \n if (this.checkExact(trimmedWord)) {\n return true;\n }\n \n // The exact word is not in the dictionary.\n if (trimmedWord.toUpperCase() === trimmedWord) {\n // The word was supplied in all uppercase.\n // Check for a capitalized form of the word.\n var capitalizedWord = trimmedWord[0] + trimmedWord.substring(1).toLowerCase();\n \n if (this.hasFlag(capitalizedWord, "KEEPCASE")) {\n // Capitalization variants are not allowed for this word.\n return false;\n }\n \n if (this.checkExact(capitalizedWord)) {\n return true;\n }\n }\n \n var lowercaseWord = trimmedWord.toLowerCase();\n \n if (lowercaseWord !== trimmedWord) {\n if (this.hasFlag(lowercaseWord, "KEEPCASE")) {\n // Capitalization variants are not allowed for this word.\n return false;\n }\n \n // Check for a lowercase form\n if (this.checkExact(lowercaseWord)) {\n return true;\n }\n }\n \n return false;\n },\n \n /**\n * Checks whether a word exists in the current dictionary.\n *\n * @param {String} word The word to check.\n * @returns {Boolean}\n */\n \n checkExact : function (word) {\n var ruleCodes = this.dictionaryTable[word];\n \n if (typeof ruleCodes === \'undefined\') {\n // Check if this might be a compound word.\n if ("COMPOUNDMIN" in this.flags && word.length >= this.flags.COMPOUNDMIN) {\n for (var i = 0, _len = this.compoundRules.length; i < _len; i++) {\n if (word.match(this.compoundRules[i])) {\n return true;\n }\n }\n }\n \n return false;\n }\n else {\n for (var i = 0, _len = ruleCodes.length; i < _len; i++) {\n if (!this.hasFlag(word, "ONLYINCOMPOUND", ruleCodes[i])) {\n return true;\n }\n }\n \n return false;\n }\n },\n \n /**\n * Looks up whether a given word is flagged with a given flag.\n *\n * @param {String} word The word in question.\n * @param {String} flag The flag in question.\n * @return {Boolean}\n */\n \n hasFlag : function (word, flag, wordFlags) {\n if (flag in this.flags) {\n if (typeof wordFlags === \'undefined\') {\n var wordFlags = Array.prototype.concat.apply([], this.dictionaryTable[word]);\n }\n \n if (wordFlags && wordFlags.indexOf(this.flags[flag]) !== -1) {\n return true;\n }\n }\n \n return false;\n },\n \n /**\n * Returns a list of suggestions for a misspelled word.\n *\n * @see http://www.norvig.com/spell-correct.html for the basis of this suggestor.\n * This suggestor is primitive, but it works.\n *\n * @param {String} word The misspelling.\n * @param {Number} [limit=5] The maximum number of suggestions to return.\n * @returns {String[]} The array of suggestions.\n */\n \n alphabet : "",\n \n suggest : function (word, limit) {\n if (!limit) limit = 5;\n \n if (this.check(word)) return [];\n \n // Check the replacement table.\n for (var i = 0, _len = this.replacementTable.length; i < _len; i++) {\n var replacementEntry = this.replacementTable[i];\n \n if (word.indexOf(replacementEntry[0]) !== -1) {\n var correctedWord = word.replace(replacementEntry[0], replacementEntry[1]);\n \n if (this.check(correctedWord)) {\n return [ correctedWord ];\n }\n }\n }\n \n var self = this;\n self.alphabet = "abcdefghijklmnopqrstuvwxyz";\n \n /*\n if (!self.alphabet) {\n // Use the alphabet as implicitly defined by the words in the dictionary.\n var alphaHash = {};\n \n for (var i in self.dictionaryTable) {\n for (var j = 0, _len = i.length; j < _len; j++) {\n alphaHash[i[j]] = true;\n }\n }\n \n for (var i in alphaHash) {\n self.alphabet += i;\n }\n \n var alphaArray = self.alphabet.split("");\n alphaArray.sort();\n self.alphabet = alphaArray.join("");\n }\n */\n \n function edits1(words) {\n var rv = [];\n \n for (var ii = 0, _iilen = words.length; ii < _iilen; ii++) {\n var word = words[ii];\n \n var splits = [];\n \n for (var i = 0, _len = word.length + 1; i < _len; i++) {\n splits.push([ word.substring(0, i), word.substring(i, word.length) ]);\n }\n \n var deletes = [];\n \n for (var i = 0, _len = splits.length; i < _len; i++) {\n var s = splits[i];\n \n if (s[1]) {\n deletes.push(s[0] + s[1].substring(1));\n }\n }\n \n var transposes = [];\n \n for (var i = 0, _len = splits.length; i < _len; i++) {\n var s = splits[i];\n \n if (s[1].length > 1) {\n transposes.push(s[0] + s[1][1] + s[1][0] + s[1].substring(2));\n }\n }\n \n var replaces = [];\n \n for (var i = 0, _len = splits.length; i < _len; i++) {\n var s = splits[i];\n \n if (s[1]) {\n for (var j = 0, _jlen = self.alphabet.length; j < _jlen; j++) {\n replaces.push(s[0] + self.alphabet[j] + s[1].substring(1));\n }\n }\n }\n \n var inserts = [];\n \n for (var i = 0, _len = splits.length; i < _len; i++) {\n var s = splits[i];\n \n if (s[1]) {\n for (var j = 0, _jlen = self.alphabet.length; j < _jlen; j++) {\n replaces.push(s[0] + self.alphabet[j] + s[1]);\n }\n }\n }\n \n rv = rv.concat(deletes);\n rv = rv.concat(transposes);\n rv = rv.concat(replaces);\n rv = rv.concat(inserts);\n }\n \n return rv;\n }\n \n function known(words) {\n var rv = [];\n \n for (var i = 0; i < words.length; i++) {\n if (self.check(words[i])) {\n rv.push(words[i]);\n }\n }\n \n return rv;\n }\n \n function correct(word) {\n // Get the edit-distance-1 and edit-distance-2 forms of this word.\n var ed1 = edits1([word]);\n var ed2 = edits1(ed1);\n \n var corrections = known(ed1).concat(known(ed2));\n \n // Sort the edits based on how many different ways they were created.\n var weighted_corrections = {};\n \n for (var i = 0, _len = corrections.length; i < _len; i++) {\n if (!(corrections[i] in weighted_corrections)) {\n weighted_corrections[corrections[i]] = 1;\n }\n else {\n weighted_corrections[corrections[i]] += 1;\n }\n }\n \n var sorted_corrections = [];\n \n for (var i in weighted_corrections) {\n sorted_corrections.push([ i, weighted_corrections[i] ]);\n }\n \n function sorter(a, b) {\n if (a[1] < b[1]) {\n return -1;\n }\n \n return 1;\n }\n \n sorted_corrections.sort(sorter).reverse();\n \n var rv = [];\n \n for (var i = 0, _len = Math.min(limit, sorted_corrections.length); i < _len; i++) {\n if (!self.hasFlag(sorted_corrections[i][0], "NOSUGGEST")) {\n rv.push(sorted_corrections[i][0]);\n }\n }\n \n return rv;\n }\n \n return correct(word);\n }\n};\n';
|
||
}), define("text!bower-libs/lz-string/libs/lz-string-1.3.3.js", [], function() {
|
||
return '// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.3.3\nvar LZString = {\n \n \n // private property\n _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",\n _f : String.fromCharCode,\n \n compressToBase64 : function (input) {\n if (input == null) return "";\n var output = "";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n \n input = LZString.compress(input);\n \n while (i < input.length*2) {\n \n if (i%2==0) {\n chr1 = input.charCodeAt(i/2) >> 8;\n chr2 = input.charCodeAt(i/2) & 255;\n if (i/2+1 < input.length) \n chr3 = input.charCodeAt(i/2+1) >> 8;\n else \n chr3 = NaN;\n } else {\n chr1 = input.charCodeAt((i-1)/2) & 255;\n if ((i+1)/2 < input.length) {\n chr2 = input.charCodeAt((i+1)/2) >> 8;\n chr3 = input.charCodeAt((i+1)/2) & 255;\n } else \n chr2=chr3=NaN;\n }\n i+=3;\n \n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n \n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n \n output = output +\n LZString._keyStr.charAt(enc1) + LZString._keyStr.charAt(enc2) +\n LZString._keyStr.charAt(enc3) + LZString._keyStr.charAt(enc4);\n \n }\n \n return output;\n },\n \n decompressFromBase64 : function (input) {\n if (input == null) return "";\n var output = "",\n ol = 0, \n output_,\n chr1, chr2, chr3,\n enc1, enc2, enc3, enc4,\n i = 0, f=LZString._f;\n \n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, "");\n \n while (i < input.length) {\n \n enc1 = LZString._keyStr.indexOf(input.charAt(i++));\n enc2 = LZString._keyStr.indexOf(input.charAt(i++));\n enc3 = LZString._keyStr.indexOf(input.charAt(i++));\n enc4 = LZString._keyStr.indexOf(input.charAt(i++));\n \n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n \n if (ol%2==0) {\n output_ = chr1 << 8;\n \n if (enc3 != 64) {\n output += f(output_ | chr2);\n }\n if (enc4 != 64) {\n output_ = chr3 << 8;\n }\n } else {\n output = output + f(output_ | chr1);\n \n if (enc3 != 64) {\n output_ = chr2 << 8;\n }\n if (enc4 != 64) {\n output += f(output_ | chr3);\n }\n }\n ol+=3;\n }\n \n return LZString.decompress(output);\n \n },\n\n compressToUTF16 : function (input) {\n if (input == null) return "";\n var output = "",\n i,c,\n current,\n status = 0,\n f = LZString._f;\n \n input = LZString.compress(input);\n \n for (i=0 ; i<input.length ; i++) {\n c = input.charCodeAt(i);\n switch (status++) {\n case 0:\n output += f((c >> 1)+32);\n current = (c & 1) << 14;\n break;\n case 1:\n output += f((current + (c >> 2))+32);\n current = (c & 3) << 13;\n break;\n case 2:\n output += f((current + (c >> 3))+32);\n current = (c & 7) << 12;\n break;\n case 3:\n output += f((current + (c >> 4))+32);\n current = (c & 15) << 11;\n break;\n case 4:\n output += f((current + (c >> 5))+32);\n current = (c & 31) << 10;\n break;\n case 5:\n output += f((current + (c >> 6))+32);\n current = (c & 63) << 9;\n break;\n case 6:\n output += f((current + (c >> 7))+32);\n current = (c & 127) << 8;\n break;\n case 7:\n output += f((current + (c >> 8))+32);\n current = (c & 255) << 7;\n break;\n case 8:\n output += f((current + (c >> 9))+32);\n current = (c & 511) << 6;\n break;\n case 9:\n output += f((current + (c >> 10))+32);\n current = (c & 1023) << 5;\n break;\n case 10:\n output += f((current + (c >> 11))+32);\n current = (c & 2047) << 4;\n break;\n case 11:\n output += f((current + (c >> 12))+32);\n current = (c & 4095) << 3;\n break;\n case 12:\n output += f((current + (c >> 13))+32);\n current = (c & 8191) << 2;\n break;\n case 13:\n output += f((current + (c >> 14))+32);\n current = (c & 16383) << 1;\n break;\n case 14:\n output += f((current + (c >> 15))+32, (c & 32767)+32);\n status = 0;\n break;\n }\n }\n \n return output + f(current + 32);\n },\n \n\n decompressFromUTF16 : function (input) {\n if (input == null) return "";\n var output = "",\n current,c,\n status=0,\n i = 0,\n f = LZString._f;\n \n while (i < input.length) {\n c = input.charCodeAt(i) - 32;\n \n switch (status++) {\n case 0:\n current = c << 1;\n break;\n case 1:\n output += f(current | (c >> 14));\n current = (c&16383) << 2;\n break;\n case 2:\n output += f(current | (c >> 13));\n current = (c&8191) << 3;\n break;\n case 3:\n output += f(current | (c >> 12));\n current = (c&4095) << 4;\n break;\n case 4:\n output += f(current | (c >> 11));\n current = (c&2047) << 5;\n break;\n case 5:\n output += f(current | (c >> 10));\n current = (c&1023) << 6;\n break;\n case 6:\n output += f(current | (c >> 9));\n current = (c&511) << 7;\n break;\n case 7:\n output += f(current | (c >> 8));\n current = (c&255) << 8;\n break;\n case 8:\n output += f(current | (c >> 7));\n current = (c&127) << 9;\n break;\n case 9:\n output += f(current | (c >> 6));\n current = (c&63) << 10;\n break;\n case 10:\n output += f(current | (c >> 5));\n current = (c&31) << 11;\n break;\n case 11:\n output += f(current | (c >> 4));\n current = (c&15) << 12;\n break;\n case 12:\n output += f(current | (c >> 3));\n current = (c&7) << 13;\n break;\n case 13:\n output += f(current | (c >> 2));\n current = (c&3) << 14;\n break;\n case 14:\n output += f(current | (c >> 1));\n current = (c&1) << 15;\n break;\n case 15:\n output += f(current | c);\n status=0;\n break;\n }\n \n \n i++;\n }\n \n return LZString.decompress(output);\n //return output;\n \n },\n\n\n \n compress: function (uncompressed) {\n if (uncompressed == null) return "";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c="",\n context_wc="",\n context_w="",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data_string="", \n context_data_val=0, \n context_data_position=0,\n ii,\n f=LZString._f;\n \n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n \n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n \n \n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n \n // Output the code for w.\n if (context_w !== "") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n \n \n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n \n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == 15) {\n context_data_position = 0;\n context_data_string += f(context_data_val);\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n \n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == 15) {\n context_data_string += f(context_data_val);\n break;\n }\n else context_data_position++;\n }\n return context_data_string;\n },\n \n decompress: function (compressed) {\n if (compressed == null) return "";\n if (compressed == "") return null;\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = "",\n result = "",\n i,\n w,\n bits, resb, maxpower, power,\n c,\n f = LZString._f,\n data = {string:compressed, val:compressed.charCodeAt(0), position:32768, index:1};\n \n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n \n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = 32768;\n data.val = data.string.charCodeAt(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n \n switch (next = bits) {\n case 0: \n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = 32768;\n data.val = data.string.charCodeAt(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1: \n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = 32768;\n data.val = data.string.charCodeAt(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2: \n return "";\n }\n dictionary[3] = c;\n w = result = c;\n while (true) {\n if (data.index > data.string.length) {\n return "";\n }\n \n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = 32768;\n data.val = data.string.charCodeAt(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0: \n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = 32768;\n data.val = data.string.charCodeAt(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1: \n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = 32768;\n data.val = data.string.charCodeAt(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2: \n return result;\n }\n \n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n \n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result += entry;\n \n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n \n w = entry;\n \n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n \n }\n }\n};\n\nif( typeof module !== \'undefined\' && module != null ) {\n module.exports = LZString\n}\n';
|
||
}), define("text!workers/spellCheckWorker.js", [], function() {
|
||
return "/*jshint worker:true */\nvar dictionary;\n\n/*jshint evil:true, unused:false */\nself.init = function(typoJS, LZString, lang, aff, dic) {\n eval([\n typoJS,\n LZString,\n 'aff = LZString.decompressFromUTF16(aff);',\n 'dic = LZString.decompressFromUTF16(dic);',\n 'dictionary = new Typo(lang, aff, dic);'\n ].join('\\n'));\n};\n/*jshint evil:false, unused:true */\n\nvar timeoutId;\nself.check = function(words) {\n // Check function has priority over Suggest function\n // This prevents Suggest to run if called just before Check\n timeoutId && clearTimeout(timeoutId);\n for (var i = 0; i < words.length; i++) {\n var word = words[i];\n word.check = dictionary.check(word.value);\n }\n postMessage(JSON.stringify(['check', words]));\n};\n\nvar word;\n\nfunction delayedSuggest() {\n timeoutId = undefined;\n var suggestions = dictionary.suggest(word);\n postMessage(JSON.stringify(['suggest', suggestions]));\n}\n\nself.suggest = function(wordParam) {\n word = wordParam;\n timeoutId = setTimeout(delayedSuggest, 50);\n};\n";
|
||
}), define("text!html/spellCheckSettingsBlock.html", [], function() {
|
||
return '<p>Underlines mispelled words in the editor.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-5 control-label" for="select-spell-check-locale">Language</label>\n <div class="col-lg-6">\n <select id="select-spell-check-locale" class="form-control">\n <option value="en_US">English (United States)</option>\n <option value="fr_FR">French (France)</option>\n <option value="de_DE">German (Germany)</option>\n <option value="es_ES">Spanish (Spain)</option>\n </select>\n </div>\n </div>\n</div>';
|
||
}), define("extensions/spellCheck", [ "jquery", "underscore", "crel", "utils", "classes/Extension", "xregexp", "text!bower-libs/Typo.js/typo/typo.js", "text!bower-libs/lz-string/libs/lz-string-1.3.3.js", "text!workers/spellCheckWorker.js", "text!html/spellCheckSettingsBlock.html" ], function(e, t, n, i, o, r, s, a, l, c) {
|
||
function u(e) {
|
||
var n = v.session.getTokens(e).slice(), i = 0, o = this;
|
||
o.checkToken = function() {
|
||
if (0 === n.length) return !b && (b = setTimeout(d, 5)), void 0;
|
||
var r = n.shift(), s = [];
|
||
return /code|code_block|link|reference|string|keyword|tag|markup\.underline/.test(r.type) || r.value.replace(w, function(e, t) {
|
||
s.push({
|
||
value: e,
|
||
offset: t + i
|
||
});
|
||
}), i += r.value.length, 0 === s.length ? (o.checkToken(), void 0) : (g.onmessage = function(n) {
|
||
var i = JSON.parse(n.data);
|
||
if ("check" == i[0]) {
|
||
var r = i[1];
|
||
if (!o.stopped) {
|
||
var s = require("ace/range").Range;
|
||
t.each(r, function(t) {
|
||
if (!t.check) {
|
||
var n = new s(e, t.offset, e, t.offset + t.value.length), i = v.session.addMarker(n, "misspelled", "typo", !0), o = v.session.getMarkers(!0)[i];
|
||
x.push(o);
|
||
}
|
||
}), o.checkToken();
|
||
}
|
||
}
|
||
}, g.postMessage(JSON.stringify([ "check", s ])), void 0);
|
||
};
|
||
}
|
||
function d() {
|
||
b = void 0, y && (y.stopped = !0), y = new u(C++), y.checkToken();
|
||
}
|
||
function h() {
|
||
y && (y.stopped = !0), b && clearTimeout(b), b = void 0;
|
||
}
|
||
function p() {
|
||
if (m !== !1 && void 0 !== v) {
|
||
var e = [];
|
||
t.each(x, function(t) {
|
||
t.range.start.row < C ? e.push(t) : v.session.removeMarker(t.id);
|
||
}), x = e, b = setTimeout(d, 2e3);
|
||
}
|
||
}
|
||
var f = new o("spellCheck", "Spell Check", !0, !0, !0);
|
||
f.settingsBlock = c, f.defaultConfig = {
|
||
locale: "en_US"
|
||
}, f.onLoadSettings = function() {
|
||
i.setInputValue("#select-spell-check-locale", f.config.locale);
|
||
}, f.onSaveSettings = function(e) {
|
||
e.locale = i.getInputValue("#select-spell-check-locale");
|
||
};
|
||
var g, m = !1;
|
||
f.onInit = function() {
|
||
g = new Worker("res/worker.js"), g.postMessage(l), require([ "text!../libs/dictionaries/" + f.config.locale + ".dic.lz", "text!../libs/dictionaries/" + f.config.locale + ".aff.lz" ], function(e, t) {
|
||
g.postMessage(JSON.stringify([ "init", s, a, f.config.locale, t, e ])), m = !0,
|
||
p();
|
||
});
|
||
};
|
||
var v, b, y, w = r("\\p{L}+(?:'\\p{L}+)*", "g"), x = [], C = 0, E = !1;
|
||
return f.onFileClose = function() {
|
||
h(), E = !1;
|
||
}, f.onFileOpen = function() {
|
||
E = !0, C = 0, h(), p();
|
||
}, f.onAceCreated = function(e) {
|
||
v = e, v.session.on("change", function(e) {
|
||
if (E === !0) {
|
||
var t = e.data.range.start.row;
|
||
C > t && (C = t), h(), p();
|
||
}
|
||
});
|
||
}, f;
|
||
}), define("text!html/userCustomSettingsBlock.html", [], function() {
|
||
return '<p>Allows users to implement their own extension.</p>\n<div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label" for="textarea-usercustom-code">JavaScript code\n <a href="#" class="tooltip-usercustom-extension">(?)</a>\n </label>\n <div class="col-lg-7">\n <textarea id="textarea-usercustom-code" class="form-control"></textarea>\n </div>\n </div>\n</div>\n<span class="help-block pull-right"><a target="_blank" href="https://github.com/benweet/stackedit/blob/master/doc/developer-guide.md#developer-guide">More info</a></span>';
|
||
}), define("extensions/userCustom", [ "jquery", "underscore", "utils", "classes/Extension", "fileSystem", "settings", "text!html/userCustomSettingsBlock.html" ], function($, _, utils, Extension, fileSystem, settings, userCustomSettingsBlockHTML) {
|
||
var userCustom = new Extension("userCustom", "UserCustom extension", !0);
|
||
userCustom.settingsBlock = userCustomSettingsBlockHTML, userCustom.defaultConfig = {
|
||
code: ""
|
||
};
|
||
var fileMgr;
|
||
userCustom.onFileMgrCreated = function(e) {
|
||
fileMgr = e;
|
||
};
|
||
var synchronizer;
|
||
userCustom.onSynchronizerCreated = function(e) {
|
||
synchronizer = e;
|
||
};
|
||
var publisher;
|
||
userCustom.onPublisherCreated = function(e) {
|
||
publisher = e;
|
||
};
|
||
var eventMgr;
|
||
return userCustom.onEventMgrCreated = function(e) {
|
||
eventMgr = e;
|
||
}, userCustom.onLoadSettings = function() {
|
||
utils.setInputValue("#textarea-usercustom-code", userCustom.config.code);
|
||
}, userCustom.onSaveSettings = function(newConfig, event) {
|
||
newConfig.code = utils.getInputValue("#textarea-usercustom-code");
|
||
try {
|
||
eval(newConfig.code);
|
||
} catch (e) {
|
||
eventMgr.onError(e), utils.getInputTextValue("#textarea-usercustom-code", event, /^$/);
|
||
}
|
||
}, userCustom.onInit = function() {
|
||
try {
|
||
eval(userCustom.config.code);
|
||
} catch (e) {
|
||
console.error(e);
|
||
}
|
||
}, userCustom;
|
||
}), function(e) {
|
||
var t = "waitForImages";
|
||
e.waitForImages = {
|
||
hasImageProperties: [ "backgroundImage", "listStyleImage", "borderImage", "borderCornerImage" ]
|
||
}, e.expr[":"].uncached = function(t) {
|
||
if (!e(t).is('img[src!=""]')) return !1;
|
||
var n = new Image();
|
||
return n.src = t.src, !n.complete;
|
||
}, e.fn.waitForImages = function(n, i, o) {
|
||
var r = 0, s = 0;
|
||
if (e.isPlainObject(arguments[0]) && (o = arguments[0].waitForAll, i = arguments[0].each,
|
||
n = arguments[0].finished), n = n || e.noop, i = i || e.noop, o = !!o, !e.isFunction(n) || !e.isFunction(i)) throw new TypeError("An invalid callback was supplied.");
|
||
return this.each(function() {
|
||
var a = e(this), l = [], c = e.waitForImages.hasImageProperties || [], u = /url\(\s*(['"]?)(.*?)\1\s*\)/g;
|
||
o ? a.find("*").andSelf().each(function() {
|
||
var t = e(this);
|
||
t.is("img:uncached") && l.push({
|
||
src: t.attr("src"),
|
||
element: t[0]
|
||
}), e.each(c, function(e, n) {
|
||
var i, o = t.css(n);
|
||
if (!o) return !0;
|
||
for (;i = u.exec(o); ) l.push({
|
||
src: i[2],
|
||
element: t[0]
|
||
});
|
||
});
|
||
}) : a.find("img:uncached").each(function() {
|
||
l.push({
|
||
src: this.src,
|
||
element: this
|
||
});
|
||
}), r = l.length, s = 0, 0 === r && n.call(a[0]), e.each(l, function(o, l) {
|
||
var c = new Image();
|
||
e(c).bind("load." + t + " error." + t, function(e) {
|
||
return s++, i.call(l.element, s, r, "load" == e.type), s == r ? (n.call(a[0]), !1) : void 0;
|
||
}), c.src = l.src;
|
||
});
|
||
});
|
||
};
|
||
}(jQuery), define("jquery-waitforimages", function() {}), define("eventMgr", [ "jquery", "underscore", "crel", "utils", "logger", "classes/Extension", "settings", "text!html/settingsExtensionsAccordion.html", "extensions/yamlFrontMatterParser", "extensions/markdownSectionParser", "extensions/partialRendering", "extensions/buttonMarkdownSyntax", "extensions/googleAnalytics", "extensions/dialogAbout", "extensions/dialogManagePublication", "extensions/dialogManageSynchronization", "extensions/dialogManageSharing", "extensions/dialogOpenHarddrive", "extensions/documentTitle", "extensions/documentSelector", "extensions/documentPanel", "extensions/documentManager", "extensions/workingIndicator", "extensions/notifications", "extensions/markdownExtra", "extensions/toc", "extensions/mathJax", "extensions/emailConverter", "extensions/scrollLink", "extensions/buttonFocusMode", "extensions/buttonSync", "extensions/buttonPublish", "extensions/buttonStat", "extensions/buttonHtmlCode", "extensions/buttonViewer", "extensions/welcomeTour", "extensions/spellCheck", "extensions/userCustom", "bootstrap", "jquery-waitforimages" ], function(e, t, n, i, o, r, s, a) {
|
||
function l(e) {
|
||
return t.chain(h).map(function(t) {
|
||
return t.enabled && t[e];
|
||
}).compact().value();
|
||
}
|
||
function c(e) {
|
||
return f[e] = l(e), function() {
|
||
o.log(e, arguments);
|
||
var n = arguments;
|
||
t.each(f[e], function(e) {
|
||
try {
|
||
e.apply(null, n);
|
||
} catch (i) {
|
||
console.error(t.isObject(i) ? i.stack : i);
|
||
}
|
||
});
|
||
};
|
||
}
|
||
function u(e) {
|
||
d[e] = c(e);
|
||
}
|
||
var d = {}, h = t.chain(arguments).map(function(e) {
|
||
return e instanceof r && e;
|
||
}).compact().value(), p = s.extensionSettings || {};
|
||
t.each(h, function(e) {
|
||
e.config = t.extend({}, e.defaultConfig, p[e.extensionId]), e.enabled = window.viewerMode === !0 && e.disableInViewer === !0 ? !1 : window.lightMode === !0 && e.disableInLight === !0 ? !1 : !e.isOptional || void 0 === e.config.enabled || e.config.enabled === !0;
|
||
});
|
||
var f = {};
|
||
d.addListener = function(e, t) {
|
||
try {
|
||
f[e].push(t);
|
||
} catch (n) {
|
||
console.error("No event listener called " + e);
|
||
}
|
||
}, c("onInit")(), d.onLoadSettings = function() {
|
||
o.log("onLoadSettings"), t.each(h, function(t) {
|
||
var n = !t.isOptional || void 0 === t.config.enabled || t.config.enabled === !0;
|
||
i.setInputChecked(e("#input-enable-extension-" + t.extensionId), n);
|
||
var o = t.onLoadSettings;
|
||
o && o();
|
||
});
|
||
}, d.onSaveSettings = function(e, n) {
|
||
o.log("onSaveSettings"), t.each(h, function(o) {
|
||
var r = t.extend({}, o.defaultConfig);
|
||
r.enabled = i.getInputChecked("#input-enable-extension-" + o.extensionId);
|
||
var s = o.onSaveSettings;
|
||
s && s(r, n), e[o.extensionId] = r;
|
||
});
|
||
}, u("onMessage"), u("onError"), u("onOfflineChanged"), u("onUserActive"), u("onAsyncRunning"),
|
||
u("onPeriodicRun"), u("onFileMgrCreated"), u("onSynchronizerCreated"), u("onPublisherCreated"),
|
||
u("onEventMgrCreated"), u("onFileCreated"), u("onFileDeleted"), u("onFileSelected"),
|
||
u("onFileOpen"), u("onFileClosed"), u("onContentChanged"), u("onTitleChanged"),
|
||
u("onFoldersChanged"), u("onSyncRunning"), u("onSyncSuccess"), u("onSyncImportSuccess"),
|
||
u("onSyncExportSuccess"), u("onSyncRemoved"), u("onPublishRunning"), u("onPublishSuccess"),
|
||
u("onNewPublishSuccess"), u("onPublishRemoved"), u("onLayoutConfigure"), u("onLayoutCreated"),
|
||
u("onLayoutResize"), u("onPagedownConfigure"), u("onSectionsCreated"), u("onMarkdownTrim"),
|
||
u("onAceCreated");
|
||
var g, m, v = c("onPreviewFinished"), b = l("onAsyncPreview");
|
||
d.onAsyncPreview = function() {
|
||
function e(n) {
|
||
var r = n.length ? n.shift() : function() {
|
||
o.log("Preview time: " + (new Date() - d.previewStartTime)), t.defer(function() {
|
||
var e = "";
|
||
t.each(g.children, function(t) {
|
||
e += t.innerHTML;
|
||
}), e = e.replace(/^<div class="se-section-delimiter"><\/div>\n\n/gm, ""), v(i.trim(e));
|
||
});
|
||
};
|
||
r(function() {
|
||
e(n);
|
||
});
|
||
}
|
||
o.log("onAsyncPreview"), o.log("Conversion time: " + (new Date() - d.previewStartTime)),
|
||
e(b.concat([ function(e) {
|
||
m.waitForImages(e);
|
||
} ]));
|
||
};
|
||
var y = c("onReady");
|
||
return d.onReady = function() {
|
||
g = document.getElementById("preview-contents"), m = e(g);
|
||
var i = function(e) {
|
||
var i = n("div", {
|
||
"class": "btn-group"
|
||
}), o = e();
|
||
return t.isString(o) ? i.innerHTML = o : t.isElement(o) && i.appendChild(o), i;
|
||
};
|
||
if (window.viewerMode === !1) {
|
||
var r = t.chain(h).sortBy(function(e) {
|
||
return e.extensionName.toLowerCase();
|
||
}).reduce(function(e, n) {
|
||
return e + (n.settingsBlock ? t.template(a, {
|
||
extensionId: n.extensionId,
|
||
extensionName: n.extensionName,
|
||
isOptional: n.isOptional,
|
||
settingsBlock: n.settingsBlock
|
||
}) : "");
|
||
}, "").value();
|
||
document.querySelector(".accordion-extensions").innerHTML = r, o.log("onCreateButton");
|
||
var s = l("onCreateButton"), c = document.createDocumentFragment();
|
||
t.each(s, function(e) {
|
||
c.appendChild(i(e));
|
||
}), document.querySelector(".extension-buttons").appendChild(c), o.log("onCreateEditorButton");
|
||
var u = l("onCreateEditorButton"), d = document.createDocumentFragment();
|
||
t.each(u, function(e) {
|
||
d.appendChild(i(e));
|
||
});
|
||
var p = document.querySelector(".extension-editor-buttons");
|
||
p.appendChild(d);
|
||
}
|
||
o.log("onCreatePreviewButton");
|
||
var f = l("onCreatePreviewButton"), v = document.createDocumentFragment();
|
||
t.each(f, function(e) {
|
||
v.appendChild(i(e));
|
||
});
|
||
var b = document.querySelector(".extension-preview-buttons");
|
||
b.appendChild(v);
|
||
var w = e(b), x = w.width();
|
||
w.find(".btn-group").each(function() {
|
||
var t = e(this);
|
||
t.find(".dropdown-menu").css({
|
||
right: -x + t.width() + t.position().left
|
||
});
|
||
}), y();
|
||
}, d.onEventMgrCreated(d), d;
|
||
}), define("text!html/settingsShortcutEntry.html", [], function() {
|
||
return '<div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-shortcut-<%= shortcut.name %>"><%= shortcut.title %></label>\n <div class="col-lg-8 form-inline">\n <input type="text" id="input-settings-shortcut-<%= shortcut.name %>"\n class="form-control col-lg-4">\n <label class="col-lg-2 control-label"\n for="input-settings-shortcut-<%= shortcut.name %>-mac">Mac</label>\n <input type="text"\n id="input-settings-shortcut-<%= shortcut.name %>-mac"\n class="form-control col-lg-4">\n </div>\n</div>\n';
|
||
}), define("shortcutMgr", [ "underscore", "eventMgr", "settings", "utils", "text!html/settingsShortcutEntry.html" ], function(e, t, n, i, o) {
|
||
var r = {}, s = {
|
||
bold: {
|
||
title: "Strong",
|
||
defaultKey: {
|
||
win: "Ctrl-B",
|
||
mac: "Command-B|Ctrl-B"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
italic: {
|
||
title: "Emphasis",
|
||
defaultKey: {
|
||
win: "Ctrl-I",
|
||
mac: "Command-I|Ctrl-I"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
link: {
|
||
title: "Hyperlink",
|
||
defaultKey: {
|
||
win: "Ctrl-L",
|
||
mac: "Command-L|Ctrl-L"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
quote: {
|
||
title: "Blockquote",
|
||
defaultKey: {
|
||
win: "Ctrl-Q",
|
||
mac: "Command-Q|Ctrl-Q"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
code: {
|
||
title: "Code Sample",
|
||
defaultKey: {
|
||
win: "Ctrl-K",
|
||
mac: "Command-K|Ctrl-K"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
image: {
|
||
title: "Image",
|
||
defaultKey: {
|
||
win: "Ctrl-G",
|
||
mac: "Command-G|Ctrl-G"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
olist: {
|
||
title: "Numbered List",
|
||
defaultKey: {
|
||
win: "Ctrl-O",
|
||
mac: "Command-O|Ctrl-O"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
ulist: {
|
||
title: "Bulleted List",
|
||
defaultKey: {
|
||
win: "Ctrl-U",
|
||
mac: "Command-U|Ctrl-U"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
heading: {
|
||
title: "Heading",
|
||
defaultKey: {
|
||
win: "Ctrl-H",
|
||
mac: "Command-H|Ctrl-H"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
hr: {
|
||
title: "Horizontal Rule",
|
||
defaultKey: {
|
||
win: "Ctrl-R",
|
||
mac: "Command-R|Ctrl-R"
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
undo: {
|
||
title: "Undo",
|
||
defaultKey: {
|
||
win: "Ctrl-Z",
|
||
mac: "Command-Z"
|
||
},
|
||
exec: function(e) {
|
||
e.undo();
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
redo: {
|
||
title: "Redo",
|
||
defaultKey: {
|
||
win: "Ctrl-Y|Ctrl-Shift-Z",
|
||
mac: "Command-Y|Command-Shift-Z"
|
||
},
|
||
exec: function(e) {
|
||
e.redo();
|
||
},
|
||
isPageDown: !0
|
||
},
|
||
selectall: {
|
||
title: "Select All",
|
||
defaultKey: {
|
||
win: "Ctrl-A",
|
||
mac: "Command-A"
|
||
},
|
||
exec: function(e) {
|
||
e.selectAll();
|
||
},
|
||
readOnly: !0
|
||
},
|
||
removeline: {
|
||
title: "Remove Line",
|
||
defaultKey: {
|
||
win: "Ctrl-D",
|
||
mac: "Command-D"
|
||
},
|
||
exec: function(e) {
|
||
e.removeLines();
|
||
},
|
||
multiSelectAction: "forEachLine"
|
||
},
|
||
duplicateSelection: {
|
||
title: "Duplicate Selection",
|
||
defaultKey: {
|
||
win: "Ctrl-Shift-D",
|
||
mac: "Command-Shift-D"
|
||
},
|
||
exec: function(e) {
|
||
e.duplicateSelection();
|
||
},
|
||
multiSelectAction: "forEach"
|
||
},
|
||
sortlines: {
|
||
title: "Sort Lines",
|
||
defaultKey: {
|
||
win: "Ctrl-Alt-S",
|
||
mac: "Command-Alt-S"
|
||
},
|
||
exec: function(e) {
|
||
e.sortLines();
|
||
},
|
||
multiSelectAction: "forEachLine"
|
||
},
|
||
modifyNumberUp: {
|
||
title: "Number Up",
|
||
defaultKey: {
|
||
win: "Ctrl-Shift-Up",
|
||
mac: "Alt-Shift-Up"
|
||
},
|
||
exec: function(e) {
|
||
e.modifyNumber(1);
|
||
},
|
||
multiSelectAction: "forEach"
|
||
},
|
||
modifyNumberDown: {
|
||
title: "Number Down",
|
||
defaultKey: {
|
||
win: "Ctrl-Shift-Down",
|
||
mac: "Alt-Shift-Down"
|
||
},
|
||
exec: function(e) {
|
||
e.modifyNumber(-1);
|
||
},
|
||
multiSelectAction: "forEach"
|
||
},
|
||
find: {
|
||
title: "Find",
|
||
defaultKey: {
|
||
win: "Ctrl-F",
|
||
mac: "Command-F"
|
||
},
|
||
exec: function(e) {
|
||
var t = require("ace/config");
|
||
t.loadModule("ace/ext/searchbox", function(t) {
|
||
t.Search(e);
|
||
});
|
||
},
|
||
readOnly: !0
|
||
},
|
||
replace: {
|
||
title: "Replace",
|
||
defaultKey: {
|
||
win: "Ctrl-Shift-F",
|
||
mac: "Command-Option-F"
|
||
},
|
||
exec: function(e) {
|
||
var t = require("ace/config");
|
||
t.loadModule("ace/ext/searchbox", function(t) {
|
||
t.Search(e, !0);
|
||
});
|
||
},
|
||
readOnly: !0
|
||
},
|
||
findnext: {
|
||
title: "Find Next",
|
||
defaultKey: {
|
||
win: "Ctrl-P",
|
||
mac: "Command-P"
|
||
},
|
||
exec: function(e) {
|
||
e.findNext();
|
||
},
|
||
readOnly: !0
|
||
},
|
||
findprevious: {
|
||
title: "Find Previous",
|
||
defaultKey: {
|
||
win: "Ctrl-Shift-P",
|
||
mac: "Command-Shift-P"
|
||
},
|
||
exec: function(e) {
|
||
e.findPrevious();
|
||
},
|
||
readOnly: !0
|
||
},
|
||
togglerecording: {
|
||
title: "Toggle Recording",
|
||
defaultKey: {
|
||
win: "Ctrl-Alt-E",
|
||
mac: "Command-Option-E"
|
||
},
|
||
exec: function(e) {
|
||
e.commands.toggleRecording(e);
|
||
},
|
||
readOnly: !0
|
||
},
|
||
replaymacro: {
|
||
title: "Replay Macro",
|
||
defaultKey: {
|
||
win: "Ctrl-Shift-E",
|
||
mac: "Command-Shift-E"
|
||
},
|
||
exec: function(e) {
|
||
e.commands.replay(e);
|
||
},
|
||
readOnly: !0
|
||
}
|
||
};
|
||
return e.each(s, function(e, t) {
|
||
e.name = t, e.bindKey = n.shortcuts[t] || e.defaultKey;
|
||
}), r.configureAce = function(t) {
|
||
e.each(s, function(n) {
|
||
n.exec && t.commands.addCommand(e.pick(n, "name", "bindKey", "exec", "readOnly", "multiSelectAction"));
|
||
});
|
||
}, r.getPagedownKeyStrokes = function() {
|
||
return e.chain(s).where({
|
||
isPageDown: !0
|
||
}).map(function(e) {
|
||
return [ e.name, e.bindKey ];
|
||
}).object().value();
|
||
}, r.addSettingEntries = function() {
|
||
var t = e.reduce(s, function(t, n) {
|
||
return t + e.template(o, {
|
||
shortcut: n
|
||
});
|
||
}, ""), n = document.querySelector("#tabpane-settings-shortcuts .form-horizontal");
|
||
n && (n.innerHTML = t);
|
||
}, r.loadSettings = function() {
|
||
e.each(s, function(e) {
|
||
i.setInputValue("#input-settings-shortcut-" + e.name, e.bindKey.win), i.setInputValue("#input-settings-shortcut-" + e.name + "-mac", e.bindKey.mac);
|
||
});
|
||
}, r.saveSettings = function(t) {
|
||
t.shortcuts = {}, e.each(s, function(e, n) {
|
||
var o = {};
|
||
o.win = i.getInputValue("#input-settings-shortcut-" + e.name), o.mac = i.getInputValue("#input-settings-shortcut-" + e.name + "-mac"),
|
||
t.shortcuts[n] = o;
|
||
});
|
||
}, r;
|
||
}), define("text!html/bodyIndex.html", [], function() {
|
||
return '<div class="navbar navbar-default ui-layout-north">\n <div class="navbar-inner">\n <div class="nav left-space"></div>\n <div class="nav right-space pull-right"></div>\n <div class="left-buttons-dropdown dropdown">\n <div class="nav">\n <button class="btn btn-success" data-toggle="dropdown"\n title="Show buttons">\n <i class="icon-th-large"></i>\n </button>\n <div class="dropdown-menu">\n </div>\n </div>\n </div>\n <ul class="nav left-buttons">\n <li class="wmd-button-group1 btn-group"></li>\n </ul>\n <ul class="nav left-buttons">\n <li class="wmd-button-group2 btn-group"></li>\n </ul>\n <ul class="nav left-buttons">\n <li class="wmd-button-group3 btn-group"></li>\n </ul>\n <ul class="nav left-buttons">\n <li class="wmd-button-group4 btn-group"></li>\n </ul>\n <div class="right-buttons-dropdown dropdown">\n <div class="nav pull-right">\n <button class="btn btn-success" data-toggle="dropdown"\n title="Show buttons">\n <i class="icon-th-large"></i>\n </button>\n <div class="dropdown-menu">\n </div>\n </div>\n </div>\n <ul class="nav pull-right right-buttons">\n <li class="btn-group"><button\n class="btn btn-success action-create-file" title="New document">\n <i class="icon-file"></i>\n </button>\n <button class="btn btn-success action-remove-file-confirm" title="Delete document">\n <i class="icon-trash"></i>\n </button></li>\n </ul>\n <ul class="nav pull-right right-buttons">\n <li class="offline-status hide">\n <div class="text-danger">\n <i class="icon-attention-circled"></i>offline\n </div>\n </li>\n <li class="extension-buttons"></li>\n </ul>\n <ul class="nav pull-right">\n <li><div class="working-indicator"></div></li>\n <li><a class="btn btn-success file-title-navbar" href="#"\n title="Rename document"> </a></li>\n <li><div class="input-file-title-container"><input type="text"\n class="col-lg-4 form-control hide input-file-title"\n placeholder="Document title" /></div></li>\n </ul>\n </div>\n</div>\n<div id="wmd-input" class="ui-layout-center"></div>\n<div class="ui-layout-east preview-container"></div>\n<div class="ui-layout-south preview-container"></div>\n<div id="wmd-button-bar" class="hide"></div>\n\n<div class="menu-panel collapse width">\n <button class="btn collapse-button" data-toggle="collapse"\n data-target=".menu-panel" title="Menu">\n <img\n data-stackedit-src="menu-icon.png" width="24" height="24" />\n </button>\n <div class="panel-content">\n <div class="list-group">\n <a href="viewer" title="StackEdit Viewer"\n class="list-group-item"><i class="icon-resize-full"></i>\n StackEdit Viewer</a> <a href="#" data-toggle="collapse"\n data-target=".collapse-open-from" class="list-group-item"><i\n class="icon-hdd"></i> Open from...</a>\n <div class="sub-menu collapse collapse-open-from clearfix">\n <ul class="nav">\n <li><a data-toggle="modal" data-target=".modal-import-url"\n class="action-reset-input" href="#">Open from URL</a></li>\n <li><a data-toggle="modal"\n data-target=".modal-import-harddrive-markdown"\n class="action-reset-input" href="#">Import from hard drive</a></li>\n <li><a data-toggle="modal"\n data-target=".modal-import-harddrive-html"\n class="action-reset-input" href="#">Convert HTML to Markdown</a></li>\n </ul>\n </div>\n\n <a href="#" data-toggle="collapse" data-target=".collapse-save-as"\n class="list-group-item"><i class="icon-hdd"></i> Save as...</a>\n <div class="sub-menu collapse collapse-save-as clearfix">\n <ul class="nav">\n <li><a class="action-download-md" href="#">Save as\n Markdown</a></li>\n <li><a class="action-download-html" href="#">Save as HTML</a></li>\n <li><a class="action-download-template" href="#">Save\n using template</a></li>\n <li><a class="action-download-pdf" href="#">Save as PDF</a></li>\n </ul>\n </div>\n </div>\n <div class=dropdown-header>SYNCHRONIZE</div>\n <div class="list-group">\n <a href="#" data-toggle="collapse"\n data-target=".collapse-sync-gdrive" class="list-group-item submenu-sync-gdrive"><i\n class="icon-provider-gdrive"></i> Google Drive</a>\n <div class="sub-menu collapse collapse-sync-gdrive clearfix">\n <ul class="nav">\n <li><a href="#" class="action-sync-import-gdrive"\n data-toggle="collapse" data-target=".menu-panel">Import from\n Google Drive</a></li>\n <li><a href="#" class="action-sync-export-dialog-gdrive">Export\n to Google Drive</a></li>\n </ul>\n </div>\n <a href="#" data-toggle="collapse"\n data-target=".collapse-sync-gdrivesec" class="list-group-item submenu-sync-gdrivesec"><i\n class="icon-provider-gdrive"></i> Google Drive (2nd account)</a>\n <div class="sub-menu collapse collapse-sync-gdrivesec clearfix">\n <ul class="nav">\n <li><a href="#" class="action-sync-import-gdrivesec"\n data-toggle="collapse" data-target=".menu-panel">Import from\n Google Drive</a></li>\n <li><a href="#" class="action-sync-export-dialog-gdrivesec">Export\n to Google Drive</a></li>\n </ul>\n </div>\n <a href="#" data-toggle="collapse"\n data-target=".collapse-sync-gdriveter" class="list-group-item submenu-sync-gdriveter"><i\n class="icon-provider-gdrive"></i> Google Drive (3rd account)</a>\n <div class="sub-menu collapse collapse-sync-gdriveter clearfix">\n <ul class="nav">\n <li><a href="#" class="action-sync-import-gdriveter"\n data-toggle="collapse" data-target=".menu-panel">Import from\n Google Drive</a></li>\n <li><a href="#" class="action-sync-export-dialog-gdriveter">Export\n to Google Drive</li>\n </ul>\n </div>\n <a href="#" data-toggle="collapse"\n data-target=".collapse-sync-dropbox" class="list-group-item"><i\n class="icon-provider-dropbox"></i> Dropbox</a>\n <div class="sub-menu collapse collapse-sync-dropbox clearfix">\n <ul class="nav">\n <li><a class="action-sync-import-dropbox" href="#"\n data-toggle="collapse" data-target=".menu-panel">Import from\n Dropbox</a></li>\n <li><a href="#" class="action-sync-export-dialog-dropbox">Export\n to Dropbox</a></li>\n </ul>\n </div>\n <a href="#" data-toggle="modal" data-target=".modal-manage-sync"\n class="action-reset-input list-group-item"><i\n class="icon-refresh"></i> Manage synchronization</a>\n </div>\n <div class=dropdown-header>PUBLISH</div>\n <div class="list-group">\n <a href="#" data-toggle="collapse" data-target=".collapse-publish-on"\n class="list-group-item"><i class="icon-share"></i> Publish on...</a>\n <div class="sub-menu collapse collapse-publish-on clearfix">\n <ul class="nav">\n </ul>\n </div>\n <a href="#" data-toggle="modal" data-target=".modal-manage-publish"\n class="action-reset-input list-group-item"><i class="icon-share"></i>\n Manage publication</a>\n <a href="#" data-toggle="modal" data-target=".modal-manage-sharing"\n class="action-reset-input list-group-item"><i class="icon-provider-stackedit"></i>\n Sharing...</a>\n </div>\n <ul class="nav">\n <li><a href="#" data-toggle="modal"\n data-target=".modal-settings" class="action-load-settings"><i\n class="icon-cog"></i> Settings</a></li>\n <li><a href="#" data-toggle="modal" data-target=".modal-about"><i\n class="icon-help-circled"></i> About</a></li>\n </ul>\n\n </div>\n</div>\n\n\n<div class="document-panel collapse width">\n <button class="btn collapse-button" data-toggle="collapse"\n data-target=".document-panel" title="Select document">\n <i class="icon-folder-open"></i>\n </button>\n <div class="search-bar clearfix">\n <div class="input-group">\n <span class="input-group-addon"><i class="icon-search"></i></span><input\n type="text" class="form-control"></input>\n <div class="input-group-btn">\n <a data-toggle="modal" data-target=".modal-document-manager"\n class="btn btn-link" title="Manage documents"><i\n class="icon-layers"></i></a>\n </div>\n </div>\n </div>\n <div class="panel-content">\n <div class="list-group document-list"></div>\n <div class="list-group document-list-filtered hide"></div>\n </div>\n</div>\n\n\n<div class="modal modal-document-manager">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Manage documents</h3>\n </div>\n <div class="modal-body">\n <div></div>\n <ul class="nav nav-pills document-list">\n <li class="pull-right dropdown"><a href="#"\n data-toggle="dropdown"><i class="icon-check"></i> Selection <b\n class="caret"></b></a>\n <ul class="dropdown-menu">\n <li><a href="#" class="action-select-all"><i\n class="icon-check"></i> Select all</a></li>\n <li><a href="#" class="action-unselect-all"><i\n class="icon-check-empty"></i> Unselect all</a></li>\n <li class="divider"></li>\n <li><a href="#" class="action-move-items"><i\n class="icon-forward"></i> Move to folder</a></li>\n <li><a href="#" class="action-delete-items"><i\n class="icon-trash"></i> Delete</a></li>\n </ul></li>\n <li class="pull-right"><a href="#"\n class="action-create-folder"> <i class="icon-folder"></i>\n Create folder\n </a></li>\n <li class="disabled"><a><i class="icon-file"></i> <span\n class="document-count"></span></a></li>\n <li class="disabled"><a><i class="icon-folder"></i> <span\n class="folder-count"></span></a></li>\n </ul>\n <div class="list-group document-list"></div>\n <p class="confirm-delete hide">The following documents will be\n deleted locally:</p>\n <p class="choose-folder hide">Please choose a destination\n folder:</p>\n <div class="list-group selected-document-list hide"></div>\n <div class="list-group select-folder-list hide"></div>\n </div>\n <div class="modal-footer">\n <a href="#"\n class="btn btn-default confirm-delete choose-folder action-cancel hide">Cancel</a>\n <a href="#"\n class="btn btn-primary confirm-delete action-delete-items-confirm hide">OK</a>\n <a href="#" class="btn btn-primary document-list"\n data-dismiss="modal">Close</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-insert-link">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Hyperlink</h3>\n </div>\n <div class="modal-body">\n <p>Please provide the link URL and an optional title:</p>\n <div class="input-group">\n <span class="input-group-addon"><i class="icon-globe"></i></span><input\n id="input-insert-link" type="text" class="col-lg-5 form-control"\n placeholder=\'http://example.com/ "optional title"\'></input>\n </div>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" class="btn btn-primary action-insert-link"\n data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-insert-image">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Image</h3>\n </div>\n <div class="modal-body">\n <p>Please provide the image URL and an optional title:</p>\n <div class="input-group">\n <span class="input-group-addon"><i class="icon-picture"></i></span><input\n id="input-insert-image" type="text" class="col-lg-5 form-control"\n placeholder=\'http://example.com/image.jpg "optional title"\'></input>\n </div>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default action-import-image-gplus"\n data-dismiss="modal"><i class="icon-provider-gplus"></i> Import\n from Google+</a> <a href="#" class="btn btn-default"\n data-dismiss="modal">Cancel</a> <a href="#"\n class="btn btn-primary action-insert-image" data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-import-image">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Google+ image import</h3>\n </div>\n <div class="modal-body">\n <div class="form-horizontal">\n <div class="form-group">\n <div class="col-lg-7">\n <img>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-import-image-title">Title (optional)</label>\n <div class="col-lg-7">\n <input type="text" id="input-import-image-title"\n placeholder="Image title" class="form-control">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-import-image-size">Size limit (optional)</label>\n <div class="col-lg-7 form-inline">\n <input type="text" id="input-import-image-size" placeholder="0"\n class="col-lg-3 form-control"> px\n </div>\n </div>\n </div>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" class="btn btn-primary action-import-image"\n data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-remove-file-confirm">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Delete</h3>\n </div>\n <div class="modal-body">\n <p>\n Are you sure you want to delete "<span class="file-title"></span>"?\n </p>\n <blockquote>\n <b>NOTE:</b> This will not delete the file on synchronized\n locations.\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" class="btn btn-primary action-remove-file"\n data-dismiss="modal">Delete</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-import-url">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Open from URL</h3>\n </div>\n <div class="modal-body">\n <p>Please provide a link to a Markdown document.</p>\n <div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-3 control-label" for="input-import-url">URL</label>\n <div class="col-lg-8">\n <input type="text" id="input-import-url"\n placeholder="http://www.abc.com/xyz.md" class="form-control">\n </div>\n </div>\n </div>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" data-dismiss="modal"\n class="btn btn-primary action-import-url">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-import-harddrive-markdown">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Import from hard drive</h3>\n </div>\n <div class="modal-body">\n <p>Please select your Markdown files here:</p>\n <p>\n <input type="file" id="input-file-import-harddrive-markdown"\n multiple class="form-control" />\n </p>\n <p>Or drag and drop your Markdown files here:</p>\n <p id="dropzone-import-harddrive-markdown" class="drop-zone">Drop\n files here</p>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-import-harddrive-html">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Convert HTML to Markdown</h3>\n </div>\n <div class="modal-body">\n <p>Please select your HTML files here:</p>\n <p>\n <input type="file" id="input-file-import-harddrive-html" multiple\n class="form-control" />\n </p>\n <p>Or drag and drop your HTML files here:</p>\n <p id="dropzone-import-harddrive-html" class="drop-zone">Drop\n files here</p>\n <p>Or insert your HTML code here:</p>\n <textarea id="input-convert-html" class="form-control"></textarea>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Close</a> <a\n href="#" class="btn btn-primary action-convert-html"\n data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-upload-gdrive">\n</div>\n<div class="modal modal-upload-gdrivesec">\n</div>\n<div class="modal modal-upload-gdriveter">\n</div>\n\n\n<div class="modal modal-upload-dropbox">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Export to Dropbox</h3>\n </div>\n <div class="modal-body">\n <p>\n This will save "<span class="file-title"></span>" to your <i\n class="icon-provider-dropbox"></i>\n <code>Dropbox</code>\n account and keep it synchronized.\n </p>\n <div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-3 control-label"\n for="input-sync-export-dropbox-path">File path</label>\n <div class="col-lg-8">\n <input type="text" id="input-sync-export-dropbox-path"\n placeholder="/path/to/My Document.md" class="form-control">\n <span class="help-block"> File path is composed of both\n folder and filename. </span>\n </div>\n </div>\n </div>\n <blockquote>\n <b>NOTE:</b>\n <ul>\n <li>Dropbox file path does not depend on document title.</li>\n <li>The title of your document will not be synchronized.</li>\n <li>Destination folder must exist.</li>\n <li>Any existing file at this location will be overwritten.</li>\n </ul>\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" data-dismiss="modal"\n class="btn btn-primary action-sync-export-dropbox">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-manage-sync">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Synchronization</h3>\n </div>\n <div class="modal-body">\n <p class="msg-sync-list hide">\n "<span class="file-title"></span>" is synchronized with the\n following location(s):\n </p>\n <div class="msg-sync-list sync-list hide"></div>\n <blockquote class="msg-sync-list hide">\n <b>NOTE:</b> Removing a synchronized location will not delete any\n file.\n </blockquote>\n <p class="msg-no-sync hide">"<span class="file-title"></span>" is not synchronized yet.</p>\n <blockquote class="msg-no-sync hide">\n <b>Tip:</b> You can add synchronized locations by\n exporting your document using <i class="icon-provider-gdrive"></i>\n <code>Google Drive</code>\n or <i class="icon-provider-dropbox"></i>\n <code>Dropbox</code>\n sub-menu.\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-publish">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">\n Publish on <span class="publish-provider-name"></span>\n </h3>\n </div>\n <div class="modal-body">\n <div class="form-horizontal">\n <div class="form-group modal-publish-ssh">\n <label class="col-lg-4 control-label" for="input-publish-ssh-host">Host</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-ssh-host"\n placeholder="host.name.or.ip" class="form-control"> <span\n class="help-block"> Host must be accessible publicly,\n unless you are hosting your own <a target="_blank"\n href="https://github.com/benweet/stackedit-ssh-proxy">SSH\n proxy</a>.\n </span>\n </div>\n </div>\n <div class="form-group modal-publish-ssh">\n <label class="col-lg-4 control-label" for="input-publish-ssh-port">Port\n (optional)</label>\n <div class="col-lg-2">\n <input type="text" id="input-publish-ssh-port" placeholder="22"\n class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-ssh">\n <label class="col-lg-4 control-label"\n for="input-publish-ssh-username">Username</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-ssh-username"\n placeholder="username" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-ssh">\n <label class="col-lg-4 control-label"\n for="input-publish-ssh-password">Password</label>\n <div class="col-lg-7">\n <input type="password" id="input-publish-ssh-password"\n placeholder="password" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-github">\n <label class="col-lg-4 control-label"\n for="input-publish-github-reponame">Repository</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-github-reponame"\n placeholder="repository-name" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-github">\n <label class="col-lg-4 control-label"\n for="input-publish-github-username">Username (optional)</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-github-username"\n placeholder="username" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-github">\n <label class="col-lg-4 control-label"\n for="input-publish-github-branch">Branch</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-github-branch"\n placeholder="branch-name" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-ssh modal-publish-github">\n <label class="col-lg-4 control-label"\n for="input-publish-file-path">File path</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-file-path"\n placeholder="path/to/file.md" class="form-control">\n <span class="help-block"> File path is composed of both\n folder and filename. </span>\n </div>\n </div>\n <div class="form-group modal-publish-gist">\n <label class="col-lg-4 control-label" for="input-publish-filename">Filename</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-filename"\n placeholder="filename" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-gist">\n <label class="col-lg-4 control-label" for="input-publish-gist-id">Existing\n ID (optional)</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-gist-id"\n placeholder="GistID" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-gist">\n <label class="col-lg-4 control-label"\n for="input-publish-gist-public">Public</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-publish-gist-public"\n checked="checked" />\n </div>\n </div>\n </div>\n <div class="form-group modal-publish-blogger">\n <label class="col-lg-4 control-label"\n for="input-publish-blogger-url">Blog URL</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-blogger-url"\n placeholder="http://exemple.blogger.com/" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-tumblr">\n <label class="col-lg-4 control-label"\n for="input-publish-tumblr-hostname">Blog hostname</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-tumblr-hostname"\n placeholder="exemple.tumblr.com" class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-wordpress">\n <label class="col-lg-4 control-label"\n for="input-publish-tumblr-hostname">WordPress site</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-wordpress-site"\n placeholder="exemple.wordpress.com" class="form-control">\n <span class="help-block"> <a target="_blank"\n href="http://jetpack.me/">Jetpack plugin</a> is required for\n self-hosted sites.\n </span>\n </div>\n </div>\n <div\n class="form-group modal-publish-blogger modal-publish-tumblr modal-publish-wordpress">\n <label class="col-lg-4 control-label" for="input-publish-postid">Update\n existing post ID (optional)</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-postid" placeholder="PostID"\n class="form-control">\n </div>\n </div>\n <div class="form-group modal-publish-dropbox">\n <label class="col-lg-4 control-label"\n for="input-publish-dropbox-path">File path</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-dropbox-path"\n placeholder="/path/to/My Document.html" class="form-control">\n <span class="help-block"> File path is composed of both\n folder and filename. </span>\n </div>\n </div>\n <div class="form-group modal-publish-gdrive">\n <label class="col-lg-4 control-label"\n for="input-publish-gdrive-fileid">File ID (optional)</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-gdrive-fileid"\n placeholder="FileID" class="form-control"> <span\n class="help-block">If no file ID is supplied, a new file\n will be created in your Google Drive root folder. You can move\n the file afterwards within Google Drive.</span>\n </div>\n </div>\n <div class="form-group modal-publish-gdrive">\n <label class="col-lg-4 control-label"\n for="input-publish-gdrive-filename">Force filename\n (optional)</label>\n <div class="col-lg-7">\n <input type="text" id="input-publish-gdrive-filename"\n placeholder="Filename" class="form-control"> <span\n class="help-block">If no file name is supplied, the\n document title will be used.</span>\n </div>\n </div>\n\n <div class="form-group">\n <label class="col-lg-4 control-label">Format</label>\n <div class="col-lg-7">\n <div class="radio">\n <label> <input type="radio" name="radio-publish-format"\n value="markdown"> Markdown\n </label>\n </div>\n <div class="radio">\n <label> <input type="radio" name="radio-publish-format"\n value="html"> HTML\n </label>\n </div>\n <div class="radio">\n <label> <input type="radio" name="radio-publish-format"\n value="template"> Template\n </label>\n </div>\n </div>\n </div>\n <div class="collapse publish-custom-template-collapse">\n <div class="form-group">\n <div class="col-lg-4"></div>\n <div class="col-lg-7">\n <div class="checkbox">\n <label> <input type="checkbox"\n id="checkbox-publish-custom-template"> Custom template\n </label> <a href="#" class="tooltip-template">(?)</a>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="col-lg-4"></div>\n <div class="col-lg-7">\n <textarea class="form-control"\n id="textarea-publish-custom-template"></textarea>\n </div>\n </div>\n </div>\n </div>\n <blockquote class="front-matter-info modal-publish-blogger modal-publish-tumblr modal-publish-wordpress">\n <p><b>Tip:</b> You can use a\n <a href="http://jekyllrb.com/docs/frontmatter/"\n target="_blank">YAML front matter</a> to specify the title and the tags/labels of your publication.</p>\n <p><b>Interpreted variables:</b> <code>title</code>, <code>tags</code>, <code>published</code>, <code>date</code>.</p>\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" data-dismiss="modal"\n class="btn btn-primary action-process-publish">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-manage-publish">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Publication</h3>\n </div>\n <div class="modal-body">\n <p class="msg-publish-list hide">\n "<span class="file-title"></span>" is published on the following\n location(s):\n </p>\n <div class="msg-publish-list publish-list hide"></div>\n <blockquote class="msg-publish-list hide">\n <b>NOTE:</b> Removing a publish location will not delete the actual publication.\n </blockquote>\n <p class="msg-no-publish hide">\n "<span class="file-title"></span>" is not published yet.\n </p>\n <blockquote class="msg-no-publish hide">\n <b>Tip:</b> You can add publications using the <i class="icon-share"></i> <code>Publish on</code> sub-menu.\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-manage-sharing">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Sharing</h3>\n </div>\n <div class="modal-body">\n <p class="msg-share-list hide">\n "<span class="file-title"></span>" can be shared using the following link(s):\n </p>\n <div class="msg-share-list share-list hide"></div>\n <p class="msg-no-share hide">To share this document within StackEdit you need first to <a\n href="#" class="action-publish-gist" data-dismiss="modal">publish it as a Gist</a> in\n Markdown format.\n </p>\n <blockquote>\n <b>Tip:</b> You can open any URL within StackEdit using <a\n href="viewer#!url=https://raw.github.com/benweet/stackedit/master/README.md"\n title="Sharing example"><code>viewer#!url=</code></a>.\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-settings">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Settings</h3>\n <ul class="nav nav-tabs">\n <li class="active"><a class="action-load-settings"\n href="#tabpane-settings-editor" data-toggle="tab">Editor</a></li>\n <li><a class="action-load-settings"\n href="#tabpane-settings-services" data-toggle="tab">Services</a></li>\n <li><a class="action-load-settings"\n href="#tabpane-settings-shortcuts" data-toggle="tab">Shortcuts</a></li>\n <li><a class="action-load-settings"\n href="#tabpane-settings-extensions" data-toggle="tab">Extensions</a></li>\n <li><a class="action-load-settings"\n href="#tabpane-settings-utils" data-toggle="tab">Utils</a></li>\n </ul>\n </div>\n <div class="modal-body">\n\n <div class="tab-content clearfix">\n <div class="tab-pane active" id="tabpane-settings-editor">\n <div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label">Layout orientation</label>\n <div class="col-lg-7">\n <div class="radio">\n <label> <input type="radio"\n name="radio-layout-orientation" value="horizontal">\n Horizontal\n </label>\n </div>\n <div class="radio">\n <label> <input type="radio"\n name="radio-layout-orientation" value="vertical">\n Vertical\n </label>\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-settings-theme">Theme</label>\n <div class="col-lg-7">\n <select id="input-settings-theme" class="form-control">\n </select>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-lazy-rendering">Lazy rendering <a\n href="#" class="tooltip-lazy-rendering">(?)</a>\n </label>\n <div class="col-lg-7">\n <div class="checkbox">\n <input type="checkbox" id="input-settings-lazy-rendering" />\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-editor-font-family">Editor font</label>\n <div class="col-lg-8 form-inline">\n <input type="text" id="input-settings-editor-font-family"\n class="form-control col-lg-7"> <input type="text"\n id="input-settings-editor-font-size"\n class="form-control col-lg-2"> px <span\n class="help-block"> Only monospaced fonts are\n supported.</span>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-max-width">Max width</label>\n <div class="col-lg-8 form-inline">\n <input type="text" id="input-settings-max-width"\n class="form-control col-lg-3"> px\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="textarea-settings-default-content">Default content\n <a href="#" class="tooltip-default-content">(?)</a>\n </label>\n <div class="col-lg-7">\n <textarea id="textarea-settings-default-content"\n class="form-control"></textarea>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label">Mode</label>\n <div class="col-lg-7">\n <div class="radio">\n <label> <input type="radio"\n name="radio-settings-mode" value="_ace_">\n Normal (ACE)\n </label>\n </div>\n <div class="radio">\n <label> <input type="radio"\n name="radio-settings-mode" value="_light_">\n Light (textarea)\n </label>\n </div>\n <div class="radio">\n <label> <input type="radio"\n name="radio-settings-mode" value="_light_rtl_">\n Light + Right-to-left\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="tab-pane" id="tabpane-settings-services">\n <div class="form-horizontal">\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-gdrive-multiaccount">Google Drive multi-accounts</a>\n </label>\n <div class="col-lg-7">\n <select id="input-settings-gdrive-multiaccount" class="form-control">\n <option value="1">1 account</option>\n <option value="2">2 accounts</option>\n <option value="3">3 accounts</option>\n </select>\n <span class="help-block"><b>Please sign in first with Google.</b> Once linked with your Google accounts, changing account is not possible unless you reset the application.</span>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label">Permissions</label>\n <div class="col-lg-7">\n <div class="checkbox">\n <label>\n <input type="checkbox" id="input-settings-gdrive-full-access" />\n Allow StackEdit to open any document in Google Drive\n </label> <span class="help-block">Existing authorization has to be revoked in\n <a href="https://www.google.com/settings/dashboard" target="_blank">Google Dashboard</a>\n for this change to take effect.</span>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="col-lg-4"></div>\n <div class="col-lg-7">\n <div class="checkbox">\n <label>\n <input type="checkbox" id="input-settings-dropbox-full-access" />\n Allow StackEdit to open any document in Dropbox\n </label> <span class="help-block">If unchecked, access will be restricted to folder\n <b>/Applications/StackEdit</b> for existing files.</span>\n </div>\n </div>\n </div>\n <div class="form-group">\n <div class="col-lg-4"></div>\n <div class="col-lg-7">\n <div class="checkbox">\n <label>\n <input type="checkbox" id="input-settings-github-full-access" />\n Allow StackEdit to access private repositories in GitHub\n </label> <span class="help-block">Existing authorization has to be revoked in\n <a href="https://github.com/settings/applications" target="_blank">GitHub settings</a>\n for this change to take effect.</span>\n </div>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-publish-commit-msg">GitHub commit message</label>\n <div class="col-lg-7">\n <input type="text" id="input-settings-publish-commit-msg"\n class="form-control">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="input-settings-ssh-proxy">SSH proxy</label>\n <div class="col-lg-7">\n <input type="text" id="input-settings-ssh-proxy"\n class="form-control">\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="textarea-settings-publish-template">Default\n template <a href="#" class="tooltip-template">(?)</a>\n </label>\n <div class="col-lg-7">\n <textarea id="textarea-settings-publish-template"\n class="form-control"></textarea>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label"\n for="textarea-settings-pdf-template">PDF\n template <a href="#" class="tooltip-template">(?)</a>\n </label>\n <div class="col-lg-7">\n <textarea id="textarea-settings-pdf-template"\n class="form-control"></textarea>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-4 control-label" for="input-settings-pdf-page-size">PDF page size</label>\n <div class="col-lg-7">\n <select id="input-settings-pdf-page-size" class="form-control">\n <option value="A3">A3</option>\n <option value="A4">A4</option>\n <option value="Legal">Legal</option>\n <option value="Letter">Letter</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n <div class="tab-pane" id="tabpane-settings-shortcuts">\n <div class="form-horizontal">\n </div>\n </div>\n <div class="tab-pane" id="tabpane-settings-extensions">\n <div class="panel-group accordion-extensions"></div>\n <span class="help-block pull-right"><a target="_blank"\n href="https://github.com/benweet/stackedit/blob/master/doc/developer-guide.md#developer-guide">Create\n your own extension...</a></span>\n </div>\n <div class="tab-pane" id="tabpane-settings-utils">\n <div class="tab-pane-button-container">\n <a href="#" class="btn btn-block btn-primary action-welcome-file"\n data-dismiss="modal"><i class="icon-help-circled"></i>\n Welcome document</a> <a href="#"\n class="btn btn-block btn-primary action-welcome-tour"\n data-dismiss="modal" data-dismiss="modal"><i\n class="icon-help-circled"></i> Welcome tour</a>\n </div>\n <div class="tab-pane-button-container">\n <a href="#"\n class="btn btn-block btn-primary action-import-docs-settings"><i\n class="icon-cog-alt"></i> Import docs & settings</a> <a href="#"\n class="btn btn-block btn-primary action-export-docs-settings"\n data-dismiss="modal"><i class="icon-cog-alt"></i>\n Export docs & settings</a> <input type="file"\n id="input-file-import-docs-settings" class="hide">\n </div>\n <div class="tab-pane-button-container">\n <a href="#"\n class="btn btn-block btn-primary action-default-settings"\n data-dismiss="modal"><i class="icon-wrench"></i>\n Load default settings</a> <a href="#" class="btn btn-block btn-primary"\n data-dismiss="modal" data-toggle="modal"\n data-target=".modal-app-reset"><i\n class="icon-fire"></i> Reset application</a> <a target="_blank" href="recovery.html" class="btn btn-block btn-primary"><i\n class="icon-medkit"></i> StackEdit recovery</a>\n </div>\n <span class="help-block text-center"><a target="_blank"\n href="http://benweet.github.io/stackedit/recovery.html">Old platform recovery</a></span>\n </div>\n </div>\n\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" class="btn btn-primary action-apply-settings"\n data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-non-unique">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <h3 class="modal-title">Ooops...</h3>\n </div>\n <div class="modal-body">\n <p>StackEdit has stopped because another instance was running in\n the same browser.</p>\n <blockquote>If you want to reopen StackEdit, click on\n "Reload".</blockquote>\n </div>\n <div class="modal-footer">\n <a href="javascript:window.location.reload();"\n class="btn btn-primary">Reload</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-redirect-confirm">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <h3 class="modal-title">Redirection</h3>\n </div>\n <div class="modal-body">\n <p class="redirect-msg"></p>\n <blockquote>Please click <b>OK</b> to proceed.</blockquote>\n </div>\n <div class="modal-footer">\n <a class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a class="btn btn-primary action-redirect-confirm" data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-app-reset">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <h3 class="modal-title">Reset application</h3>\n </div>\n <div class="modal-body">\n <p>This will delete all your local documents.</p>\n <blockquote>Are you sure?</blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" class="btn btn-primary action-app-reset"\n data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="modal modal-import-docs-settings">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <h3 class="modal-title">Import documents and settings</h3>\n </div>\n <div class="modal-body">\n <p>This will delete all existing local documents.</p>\n <blockquote>Are you sure?</blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" class="btn btn-primary action-import-docs-settings-confirm"\n data-dismiss="modal">OK</a>\n </div>\n </div>\n </div>\n</div>\n\n\n<div class="lock-ui hide"></div>\n<div id="dropboxjs" data-app-key="x0k2l8puemfvg0o"></div>\n<div class="textarea-helper"></div>';
|
||
}), define("text!html/bodyViewer.html", [], function() {
|
||
return '\n<div class="navbar navbar-default ui-layout-north">\n <div class="navbar-inner">\n <div class="nav right-space pull-right"></div>\n\n <ul class="nav pull-right">\n <li class="btn-group">\n <button class="btn btn-success action-edit-document hide"\n title="Edit this document">\n <i class="icon-pencil"></i>\n </button>\n </li>\n <li class="btn-group">\n <button class="btn btn-success dropdown-toggle"\n data-toggle="dropdown" title="Save this document">\n <i class="icon-download"></i>\n </button>\n <ul class="dropdown-menu">\n <li><a class="action-download-md" href="#">Save as\n Markdown</a></li>\n <li><a class="action-download-html" href="#">Save as HTML</a></li>\n <li><a class="action-download-template" href="#">Save\n using template</a></li>\n <li><a class="action-download-pdf" href="#">Save as PDF</a></li>\n </ul>\n </li>\n </ul>\n <ul class="nav pull-right">\n <li><div class="working-indicator"></div></li>\n <li><span class="btn btn-success file-title-navbar"></span></li>\n </ul>\n </div>\n</div>\n<div id="wmd-button-bar" class="hide"></div>\n<div id="wmd-input" class="hide"></div>\n<div class="ui-layout-center preview-container"></div>\n\n<div class="menu-panel collapse width">\n <button class="btn collapse-button action-open-stackedit"\n title="Open StackEdit">\n <img\n data-stackedit-src="menu-icon.png" width="24" height="24" />\n </button>\n</div>\n\n<div class="document-panel collapse width">\n <button class="btn collapse-button" data-toggle="collapse"\n data-target=".document-panel" title="Select document">\n <i class="icon-folder-open"></i>\n </button>\n <div class="search-bar clearfix">\n <div class="input-group">\n <span class="input-group-addon"><i class="icon-search"></i></span><input\n type="text" class="form-control"></input>\n <div class="input-group-btn">\n <a data-toggle="modal" data-target=".modal-document-manager"\n class="btn btn-link" title="Manage documents"><i\n class="icon-layers"></i></a>\n </div>\n </div>\n </div>\n <div class="panel-content">\n <div class="list-group document-list"></div>\n <div class="list-group document-list-filtered hide"></div>\n </div>\n</div>\n\n<div class="modal modal-non-unique">\n <div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <h3 class="modal-title">Ooops...</h3>\n </div>\n <div class="modal-body">\n <p>StackEdit has stopped because another instance was running in\n the same browser.</p>\n <blockquote>If you want to reopen StackEdit, click on\n "Reload".</blockquote>\n </div>\n <div class="modal-footer">\n <a href="javascript:window.location.reload();"\n class="btn btn-primary">Reload</a>\n </div>\n </div>\n </div>\n</div>\n';
|
||
}), define("text!html/settingsTemplateTooltip.html", [], function() {
|
||
return 'Available variables:\n<br>\n<ul>\n <li>\n <b>documentTitle</b>: document title</li>\n <li>\n <b>documentMarkdown</b>: document in Markdown format</li>\n <li>\n <b>strippedDocumentMarkdown</b>: document without front matter</li>\n <li>\n <b>documentHTML</b>: document in HTML format</li>\n <li>\n <b>frontMatter</b>: YAML front matter object (undefined if not present)</li>\n <li>\n <b>publishAttributes</b>: attributes of the publish location (undefined if\n not publishing)</li>\n</ul>\n<b>Examples:</b>\n<br /><title><%= documentTitle %></title>\n<br /><div><%- documentHTML %></div>\n<br /><%\n<br />if(publishAttributes.provider.providerId == "github") print(documentMarkdown);\n<br\n/>%>\n<br />\n<br />\n<a target="_blank" href="http://underscorejs.org/#template">More\n info</a>\n<br />\n<br />\n<b class="text-danger">\n <i class="icon-attention"></i>Careful! Template is subject to malicious code. Don\'t copy/paste untrusted\n content.</b>';
|
||
}), define("text!html/settingsUserCustomExtensionTooltip.html", [], function() {
|
||
return 'Extension variable name:\n<b>userCustom</b>\n<br>\n<br>\n<b>Example:</b>\n<br />\nuserCustom.onPreviewFinished = function() {\n<br />\n eventMgr.onMessage("Finished!");\n<br />\n};\n<br />\n<br />\n<a target="_blank"\n href="https://github.com/benweet/stackedit/blob/master/doc/developer-guide.md#architecture">More\n info</a>\n<br />\n<br />\n<b class="text-danger"><i class="icon-attention"></i> Careful! This is subject to malicious code. Don\'t copy/paste untrusted content.</b>';
|
||
}), function(e, t) {
|
||
function n(t, n) {
|
||
var o, r, s, a = t.nodeName.toLowerCase();
|
||
return "area" === a ? (o = t.parentNode, r = o.name, t.href && r && "map" === o.nodeName.toLowerCase() ? (s = e("img[usemap=#" + r + "]")[0],
|
||
!!s && i(s)) : !1) : (/input|select|textarea|button|object/.test(a) ? !t.disabled : "a" === a ? t.href || n : n) && i(t);
|
||
}
|
||
function i(t) {
|
||
return e.expr.filters.visible(t) && !e(t).parents().addBack().filter(function() {
|
||
return "hidden" === e.css(this, "visibility");
|
||
}).length;
|
||
}
|
||
var o = 0, r = /^ui-id-\d+$/;
|
||
e.ui = e.ui || {}, e.extend(e.ui, {
|
||
version: "1.10.3",
|
||
keyCode: {
|
||
BACKSPACE: 8,
|
||
COMMA: 188,
|
||
DELETE: 46,
|
||
DOWN: 40,
|
||
END: 35,
|
||
ENTER: 13,
|
||
ESCAPE: 27,
|
||
HOME: 36,
|
||
LEFT: 37,
|
||
NUMPAD_ADD: 107,
|
||
NUMPAD_DECIMAL: 110,
|
||
NUMPAD_DIVIDE: 111,
|
||
NUMPAD_ENTER: 108,
|
||
NUMPAD_MULTIPLY: 106,
|
||
NUMPAD_SUBTRACT: 109,
|
||
PAGE_DOWN: 34,
|
||
PAGE_UP: 33,
|
||
PERIOD: 190,
|
||
RIGHT: 39,
|
||
SPACE: 32,
|
||
TAB: 9,
|
||
UP: 38
|
||
}
|
||
}), e.fn.extend({
|
||
focus: function(t) {
|
||
return function(n, i) {
|
||
return "number" == typeof n ? this.each(function() {
|
||
var t = this;
|
||
setTimeout(function() {
|
||
e(t).focus(), i && i.call(t);
|
||
}, n);
|
||
}) : t.apply(this, arguments);
|
||
};
|
||
}(e.fn.focus),
|
||
scrollParent: function() {
|
||
var t;
|
||
return t = e.ui.ie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? this.parents().filter(function() {
|
||
return /(relative|absolute|fixed)/.test(e.css(this, "position")) && /(auto|scroll)/.test(e.css(this, "overflow") + e.css(this, "overflow-y") + e.css(this, "overflow-x"));
|
||
}).eq(0) : this.parents().filter(function() {
|
||
return /(auto|scroll)/.test(e.css(this, "overflow") + e.css(this, "overflow-y") + e.css(this, "overflow-x"));
|
||
}).eq(0), /fixed/.test(this.css("position")) || !t.length ? e(document) : t;
|
||
},
|
||
zIndex: function(n) {
|
||
if (n !== t) return this.css("zIndex", n);
|
||
if (this.length) for (var i, o, r = e(this[0]); r.length && r[0] !== document; ) {
|
||
if (i = r.css("position"), ("absolute" === i || "relative" === i || "fixed" === i) && (o = parseInt(r.css("zIndex"), 10),
|
||
!isNaN(o) && 0 !== o)) return o;
|
||
r = r.parent();
|
||
}
|
||
return 0;
|
||
},
|
||
uniqueId: function() {
|
||
return this.each(function() {
|
||
this.id || (this.id = "ui-id-" + ++o);
|
||
});
|
||
},
|
||
removeUniqueId: function() {
|
||
return this.each(function() {
|
||
r.test(this.id) && e(this).removeAttr("id");
|
||
});
|
||
}
|
||
}), e.extend(e.expr[":"], {
|
||
data: e.expr.createPseudo ? e.expr.createPseudo(function(t) {
|
||
return function(n) {
|
||
return !!e.data(n, t);
|
||
};
|
||
}) : function(t, n, i) {
|
||
return !!e.data(t, i[3]);
|
||
},
|
||
focusable: function(t) {
|
||
return n(t, !isNaN(e.attr(t, "tabindex")));
|
||
},
|
||
tabbable: function(t) {
|
||
var i = e.attr(t, "tabindex"), o = isNaN(i);
|
||
return (o || i >= 0) && n(t, !o);
|
||
}
|
||
}), e("<a>").outerWidth(1).jquery || e.each([ "Width", "Height" ], function(n, i) {
|
||
function o(t, n, i, o) {
|
||
return e.each(r, function() {
|
||
n -= parseFloat(e.css(t, "padding" + this)) || 0, i && (n -= parseFloat(e.css(t, "border" + this + "Width")) || 0),
|
||
o && (n -= parseFloat(e.css(t, "margin" + this)) || 0);
|
||
}), n;
|
||
}
|
||
var r = "Width" === i ? [ "Left", "Right" ] : [ "Top", "Bottom" ], s = i.toLowerCase(), a = {
|
||
innerWidth: e.fn.innerWidth,
|
||
innerHeight: e.fn.innerHeight,
|
||
outerWidth: e.fn.outerWidth,
|
||
outerHeight: e.fn.outerHeight
|
||
};
|
||
e.fn["inner" + i] = function(n) {
|
||
return n === t ? a["inner" + i].call(this) : this.each(function() {
|
||
e(this).css(s, o(this, n) + "px");
|
||
});
|
||
}, e.fn["outer" + i] = function(t, n) {
|
||
return "number" != typeof t ? a["outer" + i].call(this, t) : this.each(function() {
|
||
e(this).css(s, o(this, t, !0, n) + "px");
|
||
});
|
||
};
|
||
}), e.fn.addBack || (e.fn.addBack = function(e) {
|
||
return this.add(null == e ? this.prevObject : this.prevObject.filter(e));
|
||
}), e("<a>").data("a-b", "a").removeData("a-b").data("a-b") && (e.fn.removeData = function(t) {
|
||
return function(n) {
|
||
return arguments.length ? t.call(this, e.camelCase(n)) : t.call(this);
|
||
};
|
||
}(e.fn.removeData)), e.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),
|
||
e.support.selectstart = "onselectstart" in document.createElement("div"), e.fn.extend({
|
||
disableSelection: function() {
|
||
return this.bind((e.support.selectstart ? "selectstart" : "mousedown") + ".ui-disableSelection", function(e) {
|
||
e.preventDefault();
|
||
});
|
||
},
|
||
enableSelection: function() {
|
||
return this.unbind(".ui-disableSelection");
|
||
}
|
||
}), e.extend(e.ui, {
|
||
plugin: {
|
||
add: function(t, n, i) {
|
||
var o, r = e.ui[t].prototype;
|
||
for (o in i) r.plugins[o] = r.plugins[o] || [], r.plugins[o].push([ n, i[o] ]);
|
||
},
|
||
call: function(e, t, n) {
|
||
var i, o = e.plugins[t];
|
||
if (o && e.element[0].parentNode && 11 !== e.element[0].parentNode.nodeType) for (i = 0; i < o.length; i++) e.options[o[i][0]] && o[i][1].apply(e.element, n);
|
||
}
|
||
},
|
||
hasScroll: function(t, n) {
|
||
if ("hidden" === e(t).css("overflow")) return !1;
|
||
var i = n && "left" === n ? "scrollLeft" : "scrollTop", o = !1;
|
||
return t[i] > 0 ? !0 : (t[i] = 1, o = t[i] > 0, t[i] = 0, o);
|
||
}
|
||
});
|
||
}(jQuery), define("jquery-ui-core", function() {}), function(e, t) {
|
||
var n = 0, i = Array.prototype.slice, o = e.cleanData;
|
||
e.cleanData = function(t) {
|
||
for (var n, i = 0; null != (n = t[i]); i++) try {
|
||
e(n).triggerHandler("remove");
|
||
} catch (r) {}
|
||
o(t);
|
||
}, e.widget = function(t, n, i) {
|
||
var o, r, s, a, l = {}, c = t.split(".")[0];
|
||
t = t.split(".")[1], o = c + "-" + t, i || (i = n, n = e.Widget), e.expr[":"][o.toLowerCase()] = function(t) {
|
||
return !!e.data(t, o);
|
||
}, e[c] = e[c] || {}, r = e[c][t], s = e[c][t] = function(e, t) {
|
||
return this._createWidget ? (arguments.length && this._createWidget(e, t), void 0) : new s(e, t);
|
||
}, e.extend(s, r, {
|
||
version: i.version,
|
||
_proto: e.extend({}, i),
|
||
_childConstructors: []
|
||
}), a = new n(), a.options = e.widget.extend({}, a.options), e.each(i, function(t, i) {
|
||
return e.isFunction(i) ? (l[t] = function() {
|
||
var e = function() {
|
||
return n.prototype[t].apply(this, arguments);
|
||
}, o = function(e) {
|
||
return n.prototype[t].apply(this, e);
|
||
};
|
||
return function() {
|
||
var t, n = this._super, r = this._superApply;
|
||
return this._super = e, this._superApply = o, t = i.apply(this, arguments), this._super = n,
|
||
this._superApply = r, t;
|
||
};
|
||
}(), void 0) : (l[t] = i, void 0);
|
||
}), s.prototype = e.widget.extend(a, {
|
||
widgetEventPrefix: r ? a.widgetEventPrefix : t
|
||
}, l, {
|
||
constructor: s,
|
||
namespace: c,
|
||
widgetName: t,
|
||
widgetFullName: o
|
||
}), r ? (e.each(r._childConstructors, function(t, n) {
|
||
var i = n.prototype;
|
||
e.widget(i.namespace + "." + i.widgetName, s, n._proto);
|
||
}), delete r._childConstructors) : n._childConstructors.push(s), e.widget.bridge(t, s);
|
||
}, e.widget.extend = function(n) {
|
||
for (var o, r, s = i.call(arguments, 1), a = 0, l = s.length; l > a; a++) for (o in s[a]) r = s[a][o],
|
||
s[a].hasOwnProperty(o) && r !== t && (n[o] = e.isPlainObject(r) ? e.isPlainObject(n[o]) ? e.widget.extend({}, n[o], r) : e.widget.extend({}, r) : r);
|
||
return n;
|
||
}, e.widget.bridge = function(n, o) {
|
||
var r = o.prototype.widgetFullName || n;
|
||
e.fn[n] = function(s) {
|
||
var a = "string" == typeof s, l = i.call(arguments, 1), c = this;
|
||
return s = !a && l.length ? e.widget.extend.apply(null, [ s ].concat(l)) : s, a ? this.each(function() {
|
||
var i, o = e.data(this, r);
|
||
return o ? e.isFunction(o[s]) && "_" !== s.charAt(0) ? (i = o[s].apply(o, l), i !== o && i !== t ? (c = i && i.jquery ? c.pushStack(i.get()) : i,
|
||
!1) : void 0) : e.error("no such method '" + s + "' for " + n + " widget instance") : e.error("cannot call methods on " + n + " prior to initialization; " + "attempted to call method '" + s + "'");
|
||
}) : this.each(function() {
|
||
var t = e.data(this, r);
|
||
t ? t.option(s || {})._init() : e.data(this, r, new o(s, this));
|
||
}), c;
|
||
};
|
||
}, e.Widget = function() {}, e.Widget._childConstructors = [], e.Widget.prototype = {
|
||
widgetName: "widget",
|
||
widgetEventPrefix: "",
|
||
defaultElement: "<div>",
|
||
options: {
|
||
disabled: !1,
|
||
create: null
|
||
},
|
||
_createWidget: function(t, i) {
|
||
i = e(i || this.defaultElement || this)[0], this.element = e(i), this.uuid = n++,
|
||
this.eventNamespace = "." + this.widgetName + this.uuid, this.options = e.widget.extend({}, this.options, this._getCreateOptions(), t),
|
||
this.bindings = e(), this.hoverable = e(), this.focusable = e(), i !== this && (e.data(i, this.widgetFullName, this),
|
||
this._on(!0, this.element, {
|
||
remove: function(e) {
|
||
e.target === i && this.destroy();
|
||
}
|
||
}), this.document = e(i.style ? i.ownerDocument : i.document || i), this.window = e(this.document[0].defaultView || this.document[0].parentWindow)),
|
||
this._create(), this._trigger("create", null, this._getCreateEventData()), this._init();
|
||
},
|
||
_getCreateOptions: e.noop,
|
||
_getCreateEventData: e.noop,
|
||
_create: e.noop,
|
||
_init: e.noop,
|
||
destroy: function() {
|
||
this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),
|
||
this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled " + "ui-state-disabled"),
|
||
this.bindings.unbind(this.eventNamespace), this.hoverable.removeClass("ui-state-hover"),
|
||
this.focusable.removeClass("ui-state-focus");
|
||
},
|
||
_destroy: e.noop,
|
||
widget: function() {
|
||
return this.element;
|
||
},
|
||
option: function(n, i) {
|
||
var o, r, s, a = n;
|
||
if (0 === arguments.length) return e.widget.extend({}, this.options);
|
||
if ("string" == typeof n) if (a = {}, o = n.split("."), n = o.shift(), o.length) {
|
||
for (r = a[n] = e.widget.extend({}, this.options[n]), s = 0; s < o.length - 1; s++) r[o[s]] = r[o[s]] || {},
|
||
r = r[o[s]];
|
||
if (n = o.pop(), i === t) return r[n] === t ? null : r[n];
|
||
r[n] = i;
|
||
} else {
|
||
if (i === t) return this.options[n] === t ? null : this.options[n];
|
||
a[n] = i;
|
||
}
|
||
return this._setOptions(a), this;
|
||
},
|
||
_setOptions: function(e) {
|
||
var t;
|
||
for (t in e) this._setOption(t, e[t]);
|
||
return this;
|
||
},
|
||
_setOption: function(e, t) {
|
||
return this.options[e] = t, "disabled" === e && (this.widget().toggleClass(this.widgetFullName + "-disabled ui-state-disabled", !!t).attr("aria-disabled", t),
|
||
this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus")),
|
||
this;
|
||
},
|
||
enable: function() {
|
||
return this._setOption("disabled", !1);
|
||
},
|
||
disable: function() {
|
||
return this._setOption("disabled", !0);
|
||
},
|
||
_on: function(t, n, i) {
|
||
var o, r = this;
|
||
"boolean" != typeof t && (i = n, n = t, t = !1), i ? (n = o = e(n), this.bindings = this.bindings.add(n)) : (i = n,
|
||
n = this.element, o = this.widget()), e.each(i, function(i, s) {
|
||
function a() {
|
||
return t || r.options.disabled !== !0 && !e(this).hasClass("ui-state-disabled") ? ("string" == typeof s ? r[s] : s).apply(r, arguments) : void 0;
|
||
}
|
||
"string" != typeof s && (a.guid = s.guid = s.guid || a.guid || e.guid++);
|
||
var l = i.match(/^(\w+)\s*(.*)$/), c = l[1] + r.eventNamespace, u = l[2];
|
||
u ? o.delegate(u, c, a) : n.bind(c, a);
|
||
});
|
||
},
|
||
_off: function(e, t) {
|
||
t = (t || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace,
|
||
e.unbind(t).undelegate(t);
|
||
},
|
||
_delay: function(e, t) {
|
||
function n() {
|
||
return ("string" == typeof e ? i[e] : e).apply(i, arguments);
|
||
}
|
||
var i = this;
|
||
return setTimeout(n, t || 0);
|
||
},
|
||
_hoverable: function(t) {
|
||
this.hoverable = this.hoverable.add(t), this._on(t, {
|
||
mouseenter: function(t) {
|
||
e(t.currentTarget).addClass("ui-state-hover");
|
||
},
|
||
mouseleave: function(t) {
|
||
e(t.currentTarget).removeClass("ui-state-hover");
|
||
}
|
||
});
|
||
},
|
||
_focusable: function(t) {
|
||
this.focusable = this.focusable.add(t), this._on(t, {
|
||
focusin: function(t) {
|
||
e(t.currentTarget).addClass("ui-state-focus");
|
||
},
|
||
focusout: function(t) {
|
||
e(t.currentTarget).removeClass("ui-state-focus");
|
||
}
|
||
});
|
||
},
|
||
_trigger: function(t, n, i) {
|
||
var o, r, s = this.options[t];
|
||
if (i = i || {}, n = e.Event(n), n.type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(),
|
||
n.target = this.element[0], r = n.originalEvent) for (o in r) o in n || (n[o] = r[o]);
|
||
return this.element.trigger(n, i), !(e.isFunction(s) && s.apply(this.element[0], [ n ].concat(i)) === !1 || n.isDefaultPrevented());
|
||
}
|
||
}, e.each({
|
||
show: "fadeIn",
|
||
hide: "fadeOut"
|
||
}, function(t, n) {
|
||
e.Widget.prototype["_" + t] = function(i, o, r) {
|
||
"string" == typeof o && (o = {
|
||
effect: o
|
||
});
|
||
var s, a = o ? o === !0 || "number" == typeof o ? n : o.effect || n : t;
|
||
o = o || {}, "number" == typeof o && (o = {
|
||
duration: o
|
||
}), s = !e.isEmptyObject(o), o.complete = r, o.delay && i.delay(o.delay), s && e.effects && e.effects.effect[a] ? i[t](o) : a !== t && i[a] ? i[a](o.duration, o.easing, r) : i.queue(function(n) {
|
||
e(this)[t](), r && r.call(i[0]), n();
|
||
});
|
||
};
|
||
});
|
||
}(jQuery), define("jquery-ui-widget", function() {}), function(e) {
|
||
var t = !1;
|
||
e(document).mouseup(function() {
|
||
t = !1;
|
||
}), e.widget("ui.mouse", {
|
||
version: "1.10.3",
|
||
options: {
|
||
cancel: "input,textarea,button,select,option",
|
||
distance: 1,
|
||
delay: 0
|
||
},
|
||
_mouseInit: function() {
|
||
var t = this;
|
||
this.element.bind("mousedown." + this.widgetName, function(e) {
|
||
return t._mouseDown(e);
|
||
}).bind("click." + this.widgetName, function(n) {
|
||
return !0 === e.data(n.target, t.widgetName + ".preventClickEvent") ? (e.removeData(n.target, t.widgetName + ".preventClickEvent"),
|
||
n.stopImmediatePropagation(), !1) : void 0;
|
||
}), this.started = !1;
|
||
},
|
||
_mouseDestroy: function() {
|
||
this.element.unbind("." + this.widgetName), this._mouseMoveDelegate && e(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate);
|
||
},
|
||
_mouseDown: function(n) {
|
||
if (!t) {
|
||
this._mouseStarted && this._mouseUp(n), this._mouseDownEvent = n;
|
||
var i = this, o = 1 === n.which, r = "string" == typeof this.options.cancel && n.target.nodeName ? e(n.target).closest(this.options.cancel).length : !1;
|
||
return o && !r && this._mouseCapture(n) ? (this.mouseDelayMet = !this.options.delay,
|
||
this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
|
||
i.mouseDelayMet = !0;
|
||
}, this.options.delay)), this._mouseDistanceMet(n) && this._mouseDelayMet(n) && (this._mouseStarted = this._mouseStart(n) !== !1,
|
||
!this._mouseStarted) ? (n.preventDefault(), !0) : (!0 === e.data(n.target, this.widgetName + ".preventClickEvent") && e.removeData(n.target, this.widgetName + ".preventClickEvent"),
|
||
this._mouseMoveDelegate = function(e) {
|
||
return i._mouseMove(e);
|
||
}, this._mouseUpDelegate = function(e) {
|
||
return i._mouseUp(e);
|
||
}, e(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate),
|
||
n.preventDefault(), t = !0, !0)) : !0;
|
||
}
|
||
},
|
||
_mouseMove: function(t) {
|
||
return e.ui.ie && (!document.documentMode || document.documentMode < 9) && !t.button ? this._mouseUp(t) : this._mouseStarted ? (this._mouseDrag(t),
|
||
t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, t) !== !1,
|
||
this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted);
|
||
},
|
||
_mouseUp: function(t) {
|
||
return e(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate),
|
||
this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && e.data(t.target, this.widgetName + ".preventClickEvent", !0),
|
||
this._mouseStop(t)), !1;
|
||
},
|
||
_mouseDistanceMet: function(e) {
|
||
return Math.max(Math.abs(this._mouseDownEvent.pageX - e.pageX), Math.abs(this._mouseDownEvent.pageY - e.pageY)) >= this.options.distance;
|
||
},
|
||
_mouseDelayMet: function() {
|
||
return this.mouseDelayMet;
|
||
},
|
||
_mouseStart: function() {},
|
||
_mouseDrag: function() {},
|
||
_mouseStop: function() {},
|
||
_mouseCapture: function() {
|
||
return !0;
|
||
}
|
||
});
|
||
}(jQuery), define("jquery-ui-mouse", function() {}), function(e) {
|
||
e.widget("ui.draggable", e.ui.mouse, {
|
||
version: "1.10.3",
|
||
widgetEventPrefix: "drag",
|
||
options: {
|
||
addClasses: !0,
|
||
appendTo: "parent",
|
||
axis: !1,
|
||
connectToSortable: !1,
|
||
containment: !1,
|
||
cursor: "auto",
|
||
cursorAt: !1,
|
||
grid: !1,
|
||
handle: !1,
|
||
helper: "original",
|
||
iframeFix: !1,
|
||
opacity: !1,
|
||
refreshPositions: !1,
|
||
revert: !1,
|
||
revertDuration: 500,
|
||
scope: "default",
|
||
scroll: !0,
|
||
scrollSensitivity: 20,
|
||
scrollSpeed: 20,
|
||
snap: !1,
|
||
snapMode: "both",
|
||
snapTolerance: 20,
|
||
stack: !1,
|
||
zIndex: !1,
|
||
drag: null,
|
||
start: null,
|
||
stop: null
|
||
},
|
||
_create: function() {
|
||
"original" !== this.options.helper || /^(?:r|a|f)/.test(this.element.css("position")) || (this.element[0].style.position = "relative"),
|
||
this.options.addClasses && this.element.addClass("ui-draggable"), this.options.disabled && this.element.addClass("ui-draggable-disabled"),
|
||
this._mouseInit();
|
||
},
|
||
_destroy: function() {
|
||
this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),
|
||
this._mouseDestroy();
|
||
},
|
||
_mouseCapture: function(t) {
|
||
var n = this.options;
|
||
return this.helper || n.disabled || e(t.target).closest(".ui-resizable-handle").length > 0 ? !1 : (this.handle = this._getHandle(t),
|
||
this.handle ? (e(n.iframeFix === !0 ? "iframe" : n.iframeFix).each(function() {
|
||
e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({
|
||
width: this.offsetWidth + "px",
|
||
height: this.offsetHeight + "px",
|
||
position: "absolute",
|
||
opacity: "0.001",
|
||
zIndex: 1e3
|
||
}).css(e(this).offset()).appendTo("body");
|
||
}), !0) : !1);
|
||
},
|
||
_mouseStart: function(t) {
|
||
var n = this.options;
|
||
return this.helper = this._createHelper(t), this.helper.addClass("ui-draggable-dragging"),
|
||
this._cacheHelperProportions(), e.ui.ddmanager && (e.ui.ddmanager.current = this),
|
||
this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(),
|
||
this.offsetParent = this.helper.offsetParent(), this.offsetParentCssPosition = this.offsetParent.css("position"),
|
||
this.offset = this.positionAbs = this.element.offset(), this.offset = {
|
||
top: this.offset.top - this.margins.top,
|
||
left: this.offset.left - this.margins.left
|
||
}, this.offset.scroll = !1, e.extend(this.offset, {
|
||
click: {
|
||
left: t.pageX - this.offset.left,
|
||
top: t.pageY - this.offset.top
|
||
},
|
||
parent: this._getParentOffset(),
|
||
relative: this._getRelativeOffset()
|
||
}), this.originalPosition = this.position = this._generatePosition(t), this.originalPageX = t.pageX,
|
||
this.originalPageY = t.pageY, n.cursorAt && this._adjustOffsetFromHelper(n.cursorAt),
|
||
this._setContainment(), this._trigger("start", t) === !1 ? (this._clear(), !1) : (this._cacheHelperProportions(),
|
||
e.ui.ddmanager && !n.dropBehaviour && e.ui.ddmanager.prepareOffsets(this, t), this._mouseDrag(t, !0),
|
||
e.ui.ddmanager && e.ui.ddmanager.dragStart(this, t), !0);
|
||
},
|
||
_mouseDrag: function(t, n) {
|
||
if ("fixed" === this.offsetParentCssPosition && (this.offset.parent = this._getParentOffset()),
|
||
this.position = this._generatePosition(t), this.positionAbs = this._convertPositionTo("absolute"),
|
||
!n) {
|
||
var i = this._uiHash();
|
||
if (this._trigger("drag", t, i) === !1) return this._mouseUp({}), !1;
|
||
this.position = i.position;
|
||
}
|
||
return this.options.axis && "y" === this.options.axis || (this.helper[0].style.left = this.position.left + "px"),
|
||
this.options.axis && "x" === this.options.axis || (this.helper[0].style.top = this.position.top + "px"),
|
||
e.ui.ddmanager && e.ui.ddmanager.drag(this, t), !1;
|
||
},
|
||
_mouseStop: function(t) {
|
||
var n = this, i = !1;
|
||
return e.ui.ddmanager && !this.options.dropBehaviour && (i = e.ui.ddmanager.drop(this, t)),
|
||
this.dropped && (i = this.dropped, this.dropped = !1), "original" !== this.options.helper || e.contains(this.element[0].ownerDocument, this.element[0]) ? ("invalid" === this.options.revert && !i || "valid" === this.options.revert && i || this.options.revert === !0 || e.isFunction(this.options.revert) && this.options.revert.call(this.element, i) ? e(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
|
||
n._trigger("stop", t) !== !1 && n._clear();
|
||
}) : this._trigger("stop", t) !== !1 && this._clear(), !1) : !1;
|
||
},
|
||
_mouseUp: function(t) {
|
||
return e("div.ui-draggable-iframeFix").each(function() {
|
||
this.parentNode.removeChild(this);
|
||
}), e.ui.ddmanager && e.ui.ddmanager.dragStop(this, t), e.ui.mouse.prototype._mouseUp.call(this, t);
|
||
},
|
||
cancel: function() {
|
||
return this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this._clear(),
|
||
this;
|
||
},
|
||
_getHandle: function(t) {
|
||
return this.options.handle ? !!e(t.target).closest(this.element.find(this.options.handle)).length : !0;
|
||
},
|
||
_createHelper: function(t) {
|
||
var n = this.options, i = e.isFunction(n.helper) ? e(n.helper.apply(this.element[0], [ t ])) : "clone" === n.helper ? this.element.clone().removeAttr("id") : this.element;
|
||
return i.parents("body").length || i.appendTo("parent" === n.appendTo ? this.element[0].parentNode : n.appendTo),
|
||
i[0] === this.element[0] || /(fixed|absolute)/.test(i.css("position")) || i.css("position", "absolute"),
|
||
i;
|
||
},
|
||
_adjustOffsetFromHelper: function(t) {
|
||
"string" == typeof t && (t = t.split(" ")), e.isArray(t) && (t = {
|
||
left: +t[0],
|
||
top: +t[1] || 0
|
||
}), "left" in t && (this.offset.click.left = t.left + this.margins.left), "right" in t && (this.offset.click.left = this.helperProportions.width - t.right + this.margins.left),
|
||
"top" in t && (this.offset.click.top = t.top + this.margins.top), "bottom" in t && (this.offset.click.top = this.helperProportions.height - t.bottom + this.margins.top);
|
||
},
|
||
_getParentOffset: function() {
|
||
var t = this.offsetParent.offset();
|
||
return "absolute" === this.cssPosition && this.scrollParent[0] !== document && e.contains(this.scrollParent[0], this.offsetParent[0]) && (t.left += this.scrollParent.scrollLeft(),
|
||
t.top += this.scrollParent.scrollTop()), (this.offsetParent[0] === document.body || this.offsetParent[0].tagName && "html" === this.offsetParent[0].tagName.toLowerCase() && e.ui.ie) && (t = {
|
||
top: 0,
|
||
left: 0
|
||
}), {
|
||
top: t.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
|
||
left: t.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
|
||
};
|
||
},
|
||
_getRelativeOffset: function() {
|
||
if ("relative" === this.cssPosition) {
|
||
var e = this.element.position();
|
||
return {
|
||
top: e.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
|
||
left: e.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
|
||
};
|
||
}
|
||
return {
|
||
top: 0,
|
||
left: 0
|
||
};
|
||
},
|
||
_cacheMargins: function() {
|
||
this.margins = {
|
||
left: parseInt(this.element.css("marginLeft"), 10) || 0,
|
||
top: parseInt(this.element.css("marginTop"), 10) || 0,
|
||
right: parseInt(this.element.css("marginRight"), 10) || 0,
|
||
bottom: parseInt(this.element.css("marginBottom"), 10) || 0
|
||
};
|
||
},
|
||
_cacheHelperProportions: function() {
|
||
this.helperProportions = {
|
||
width: this.helper.outerWidth(),
|
||
height: this.helper.outerHeight()
|
||
};
|
||
},
|
||
_setContainment: function() {
|
||
var t, n, i, o = this.options;
|
||
return o.containment ? "window" === o.containment ? (this.containment = [ e(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, e(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, e(window).scrollLeft() + e(window).width() - this.helperProportions.width - this.margins.left, e(window).scrollTop() + (e(window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ],
|
||
void 0) : "document" === o.containment ? (this.containment = [ 0, 0, e(document).width() - this.helperProportions.width - this.margins.left, (e(document).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ],
|
||
void 0) : o.containment.constructor === Array ? (this.containment = o.containment,
|
||
void 0) : ("parent" === o.containment && (o.containment = this.helper[0].parentNode),
|
||
n = e(o.containment), i = n[0], i && (t = "hidden" !== n.css("overflow"), this.containment = [ (parseInt(n.css("borderLeftWidth"), 10) || 0) + (parseInt(n.css("paddingLeft"), 10) || 0), (parseInt(n.css("borderTopWidth"), 10) || 0) + (parseInt(n.css("paddingTop"), 10) || 0), (t ? Math.max(i.scrollWidth, i.offsetWidth) : i.offsetWidth) - (parseInt(n.css("borderRightWidth"), 10) || 0) - (parseInt(n.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (t ? Math.max(i.scrollHeight, i.offsetHeight) : i.offsetHeight) - (parseInt(n.css("borderBottomWidth"), 10) || 0) - (parseInt(n.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom ],
|
||
this.relative_container = n), void 0) : (this.containment = null, void 0);
|
||
},
|
||
_convertPositionTo: function(t, n) {
|
||
n || (n = this.position);
|
||
var i = "absolute" === t ? 1 : -1, o = "absolute" !== this.cssPosition || this.scrollParent[0] !== document && e.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent;
|
||
return this.offset.scroll || (this.offset.scroll = {
|
||
top: o.scrollTop(),
|
||
left: o.scrollLeft()
|
||
}), {
|
||
top: n.top + this.offset.relative.top * i + this.offset.parent.top * i - ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : this.offset.scroll.top) * i,
|
||
left: n.left + this.offset.relative.left * i + this.offset.parent.left * i - ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : this.offset.scroll.left) * i
|
||
};
|
||
},
|
||
_generatePosition: function(t) {
|
||
var n, i, o, r, s = this.options, a = "absolute" !== this.cssPosition || this.scrollParent[0] !== document && e.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent, l = t.pageX, c = t.pageY;
|
||
return this.offset.scroll || (this.offset.scroll = {
|
||
top: a.scrollTop(),
|
||
left: a.scrollLeft()
|
||
}), this.originalPosition && (this.containment && (this.relative_container ? (i = this.relative_container.offset(),
|
||
n = [ this.containment[0] + i.left, this.containment[1] + i.top, this.containment[2] + i.left, this.containment[3] + i.top ]) : n = this.containment,
|
||
t.pageX - this.offset.click.left < n[0] && (l = n[0] + this.offset.click.left),
|
||
t.pageY - this.offset.click.top < n[1] && (c = n[1] + this.offset.click.top), t.pageX - this.offset.click.left > n[2] && (l = n[2] + this.offset.click.left),
|
||
t.pageY - this.offset.click.top > n[3] && (c = n[3] + this.offset.click.top)), s.grid && (o = s.grid[1] ? this.originalPageY + Math.round((c - this.originalPageY) / s.grid[1]) * s.grid[1] : this.originalPageY,
|
||
c = n ? o - this.offset.click.top >= n[1] || o - this.offset.click.top > n[3] ? o : o - this.offset.click.top >= n[1] ? o - s.grid[1] : o + s.grid[1] : o,
|
||
r = s.grid[0] ? this.originalPageX + Math.round((l - this.originalPageX) / s.grid[0]) * s.grid[0] : this.originalPageX,
|
||
l = n ? r - this.offset.click.left >= n[0] || r - this.offset.click.left > n[2] ? r : r - this.offset.click.left >= n[0] ? r - s.grid[0] : r + s.grid[0] : r)),
|
||
{
|
||
top: c - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : this.offset.scroll.top),
|
||
left: l - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : this.offset.scroll.left)
|
||
};
|
||
},
|
||
_clear: function() {
|
||
this.helper.removeClass("ui-draggable-dragging"), this.helper[0] === this.element[0] || this.cancelHelperRemoval || this.helper.remove(),
|
||
this.helper = null, this.cancelHelperRemoval = !1;
|
||
},
|
||
_trigger: function(t, n, i) {
|
||
return i = i || this._uiHash(), e.ui.plugin.call(this, t, [ n, i ]), "drag" === t && (this.positionAbs = this._convertPositionTo("absolute")),
|
||
e.Widget.prototype._trigger.call(this, t, n, i);
|
||
},
|
||
plugins: {},
|
||
_uiHash: function() {
|
||
return {
|
||
helper: this.helper,
|
||
position: this.position,
|
||
originalPosition: this.originalPosition,
|
||
offset: this.positionAbs
|
||
};
|
||
}
|
||
}), e.ui.plugin.add("draggable", "connectToSortable", {
|
||
start: function(t, n) {
|
||
var i = e(this).data("ui-draggable"), o = i.options, r = e.extend({}, n, {
|
||
item: i.element
|
||
});
|
||
i.sortables = [], e(o.connectToSortable).each(function() {
|
||
var n = e.data(this, "ui-sortable");
|
||
n && !n.options.disabled && (i.sortables.push({
|
||
instance: n,
|
||
shouldRevert: n.options.revert
|
||
}), n.refreshPositions(), n._trigger("activate", t, r));
|
||
});
|
||
},
|
||
stop: function(t, n) {
|
||
var i = e(this).data("ui-draggable"), o = e.extend({}, n, {
|
||
item: i.element
|
||
});
|
||
e.each(i.sortables, function() {
|
||
this.instance.isOver ? (this.instance.isOver = 0, i.cancelHelperRemoval = !0, this.instance.cancelHelperRemoval = !1,
|
||
this.shouldRevert && (this.instance.options.revert = this.shouldRevert), this.instance._mouseStop(t),
|
||
this.instance.options.helper = this.instance.options._helper, "original" === i.options.helper && this.instance.currentItem.css({
|
||
top: "auto",
|
||
left: "auto"
|
||
})) : (this.instance.cancelHelperRemoval = !1, this.instance._trigger("deactivate", t, o));
|
||
});
|
||
},
|
||
drag: function(t, n) {
|
||
var i = e(this).data("ui-draggable"), o = this;
|
||
e.each(i.sortables, function() {
|
||
var r = !1, s = this;
|
||
this.instance.positionAbs = i.positionAbs, this.instance.helperProportions = i.helperProportions,
|
||
this.instance.offset.click = i.offset.click, this.instance._intersectsWith(this.instance.containerCache) && (r = !0,
|
||
e.each(i.sortables, function() {
|
||
return this.instance.positionAbs = i.positionAbs, this.instance.helperProportions = i.helperProportions,
|
||
this.instance.offset.click = i.offset.click, this !== s && this.instance._intersectsWith(this.instance.containerCache) && e.contains(s.instance.element[0], this.instance.element[0]) && (r = !1),
|
||
r;
|
||
})), r ? (this.instance.isOver || (this.instance.isOver = 1, this.instance.currentItem = e(o).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", !0),
|
||
this.instance.options._helper = this.instance.options.helper, this.instance.options.helper = function() {
|
||
return n.helper[0];
|
||
}, t.target = this.instance.currentItem[0], this.instance._mouseCapture(t, !0),
|
||
this.instance._mouseStart(t, !0, !0), this.instance.offset.click.top = i.offset.click.top,
|
||
this.instance.offset.click.left = i.offset.click.left, this.instance.offset.parent.left -= i.offset.parent.left - this.instance.offset.parent.left,
|
||
this.instance.offset.parent.top -= i.offset.parent.top - this.instance.offset.parent.top,
|
||
i._trigger("toSortable", t), i.dropped = this.instance.element, i.currentItem = i.element,
|
||
this.instance.fromOutside = i), this.instance.currentItem && this.instance._mouseDrag(t)) : this.instance.isOver && (this.instance.isOver = 0,
|
||
this.instance.cancelHelperRemoval = !0, this.instance.options.revert = !1, this.instance._trigger("out", t, this.instance._uiHash(this.instance)),
|
||
this.instance._mouseStop(t, !0), this.instance.options.helper = this.instance.options._helper,
|
||
this.instance.currentItem.remove(), this.instance.placeholder && this.instance.placeholder.remove(),
|
||
i._trigger("fromSortable", t), i.dropped = !1);
|
||
});
|
||
}
|
||
}), e.ui.plugin.add("draggable", "cursor", {
|
||
start: function() {
|
||
var t = e("body"), n = e(this).data("ui-draggable").options;
|
||
t.css("cursor") && (n._cursor = t.css("cursor")), t.css("cursor", n.cursor);
|
||
},
|
||
stop: function() {
|
||
var t = e(this).data("ui-draggable").options;
|
||
t._cursor && e("body").css("cursor", t._cursor);
|
||
}
|
||
}), e.ui.plugin.add("draggable", "opacity", {
|
||
start: function(t, n) {
|
||
var i = e(n.helper), o = e(this).data("ui-draggable").options;
|
||
i.css("opacity") && (o._opacity = i.css("opacity")), i.css("opacity", o.opacity);
|
||
},
|
||
stop: function(t, n) {
|
||
var i = e(this).data("ui-draggable").options;
|
||
i._opacity && e(n.helper).css("opacity", i._opacity);
|
||
}
|
||
}), e.ui.plugin.add("draggable", "scroll", {
|
||
start: function() {
|
||
var t = e(this).data("ui-draggable");
|
||
t.scrollParent[0] !== document && "HTML" !== t.scrollParent[0].tagName && (t.overflowOffset = t.scrollParent.offset());
|
||
},
|
||
drag: function(t) {
|
||
var n = e(this).data("ui-draggable"), i = n.options, o = !1;
|
||
n.scrollParent[0] !== document && "HTML" !== n.scrollParent[0].tagName ? (i.axis && "x" === i.axis || (n.overflowOffset.top + n.scrollParent[0].offsetHeight - t.pageY < i.scrollSensitivity ? n.scrollParent[0].scrollTop = o = n.scrollParent[0].scrollTop + i.scrollSpeed : t.pageY - n.overflowOffset.top < i.scrollSensitivity && (n.scrollParent[0].scrollTop = o = n.scrollParent[0].scrollTop - i.scrollSpeed)),
|
||
i.axis && "y" === i.axis || (n.overflowOffset.left + n.scrollParent[0].offsetWidth - t.pageX < i.scrollSensitivity ? n.scrollParent[0].scrollLeft = o = n.scrollParent[0].scrollLeft + i.scrollSpeed : t.pageX - n.overflowOffset.left < i.scrollSensitivity && (n.scrollParent[0].scrollLeft = o = n.scrollParent[0].scrollLeft - i.scrollSpeed))) : (i.axis && "x" === i.axis || (t.pageY - e(document).scrollTop() < i.scrollSensitivity ? o = e(document).scrollTop(e(document).scrollTop() - i.scrollSpeed) : e(window).height() - (t.pageY - e(document).scrollTop()) < i.scrollSensitivity && (o = e(document).scrollTop(e(document).scrollTop() + i.scrollSpeed))),
|
||
i.axis && "y" === i.axis || (t.pageX - e(document).scrollLeft() < i.scrollSensitivity ? o = e(document).scrollLeft(e(document).scrollLeft() - i.scrollSpeed) : e(window).width() - (t.pageX - e(document).scrollLeft()) < i.scrollSensitivity && (o = e(document).scrollLeft(e(document).scrollLeft() + i.scrollSpeed)))),
|
||
o !== !1 && e.ui.ddmanager && !i.dropBehaviour && e.ui.ddmanager.prepareOffsets(n, t);
|
||
}
|
||
}), e.ui.plugin.add("draggable", "snap", {
|
||
start: function() {
|
||
var t = e(this).data("ui-draggable"), n = t.options;
|
||
t.snapElements = [], e(n.snap.constructor !== String ? n.snap.items || ":data(ui-draggable)" : n.snap).each(function() {
|
||
var n = e(this), i = n.offset();
|
||
this !== t.element[0] && t.snapElements.push({
|
||
item: this,
|
||
width: n.outerWidth(),
|
||
height: n.outerHeight(),
|
||
top: i.top,
|
||
left: i.left
|
||
});
|
||
});
|
||
},
|
||
drag: function(t, n) {
|
||
var i, o, r, s, a, l, c, u, d, h, p = e(this).data("ui-draggable"), f = p.options, g = f.snapTolerance, m = n.offset.left, v = m + p.helperProportions.width, b = n.offset.top, y = b + p.helperProportions.height;
|
||
for (d = p.snapElements.length - 1; d >= 0; d--) a = p.snapElements[d].left, l = a + p.snapElements[d].width,
|
||
c = p.snapElements[d].top, u = c + p.snapElements[d].height, a - g > v || m > l + g || c - g > y || b > u + g || !e.contains(p.snapElements[d].item.ownerDocument, p.snapElements[d].item) ? (p.snapElements[d].snapping && p.options.snap.release && p.options.snap.release.call(p.element, t, e.extend(p._uiHash(), {
|
||
snapItem: p.snapElements[d].item
|
||
})), p.snapElements[d].snapping = !1) : ("inner" !== f.snapMode && (i = Math.abs(c - y) <= g,
|
||
o = Math.abs(u - b) <= g, r = Math.abs(a - v) <= g, s = Math.abs(l - m) <= g, i && (n.position.top = p._convertPositionTo("relative", {
|
||
top: c - p.helperProportions.height,
|
||
left: 0
|
||
}).top - p.margins.top), o && (n.position.top = p._convertPositionTo("relative", {
|
||
top: u,
|
||
left: 0
|
||
}).top - p.margins.top), r && (n.position.left = p._convertPositionTo("relative", {
|
||
top: 0,
|
||
left: a - p.helperProportions.width
|
||
}).left - p.margins.left), s && (n.position.left = p._convertPositionTo("relative", {
|
||
top: 0,
|
||
left: l
|
||
}).left - p.margins.left)), h = i || o || r || s, "outer" !== f.snapMode && (i = Math.abs(c - b) <= g,
|
||
o = Math.abs(u - y) <= g, r = Math.abs(a - m) <= g, s = Math.abs(l - v) <= g, i && (n.position.top = p._convertPositionTo("relative", {
|
||
top: c,
|
||
left: 0
|
||
}).top - p.margins.top), o && (n.position.top = p._convertPositionTo("relative", {
|
||
top: u - p.helperProportions.height,
|
||
left: 0
|
||
}).top - p.margins.top), r && (n.position.left = p._convertPositionTo("relative", {
|
||
top: 0,
|
||
left: a
|
||
}).left - p.margins.left), s && (n.position.left = p._convertPositionTo("relative", {
|
||
top: 0,
|
||
left: l - p.helperProportions.width
|
||
}).left - p.margins.left)), !p.snapElements[d].snapping && (i || o || r || s || h) && p.options.snap.snap && p.options.snap.snap.call(p.element, t, e.extend(p._uiHash(), {
|
||
snapItem: p.snapElements[d].item
|
||
})), p.snapElements[d].snapping = i || o || r || s || h);
|
||
}
|
||
}), e.ui.plugin.add("draggable", "stack", {
|
||
start: function() {
|
||
var t, n = this.data("ui-draggable").options, i = e.makeArray(e(n.stack)).sort(function(t, n) {
|
||
return (parseInt(e(t).css("zIndex"), 10) || 0) - (parseInt(e(n).css("zIndex"), 10) || 0);
|
||
});
|
||
i.length && (t = parseInt(e(i[0]).css("zIndex"), 10) || 0, e(i).each(function(n) {
|
||
e(this).css("zIndex", t + n);
|
||
}), this.css("zIndex", t + i.length));
|
||
}
|
||
}), e.ui.plugin.add("draggable", "zIndex", {
|
||
start: function(t, n) {
|
||
var i = e(n.helper), o = e(this).data("ui-draggable").options;
|
||
i.css("zIndex") && (o._zIndex = i.css("zIndex")), i.css("zIndex", o.zIndex);
|
||
},
|
||
stop: function(t, n) {
|
||
var i = e(this).data("ui-draggable").options;
|
||
i._zIndex && e(n.helper).css("zIndex", i._zIndex);
|
||
}
|
||
});
|
||
}(jQuery), define("jquery-ui-draggable", function() {}), function(e, t) {
|
||
var n = "ui-effects-";
|
||
e.effects = {
|
||
effect: {}
|
||
}, function(e, t) {
|
||
function n(e, t, n) {
|
||
var i = d[t.type] || {};
|
||
return null == e ? n || !t.def ? null : t.def : (e = i.floor ? ~~e : parseFloat(e),
|
||
isNaN(e) ? t.def : i.mod ? (e + i.mod) % i.mod : 0 > e ? 0 : i.max < e ? i.max : e);
|
||
}
|
||
function i(t) {
|
||
var n = c(), i = n._rgba = [];
|
||
return t = t.toLowerCase(), f(l, function(e, o) {
|
||
var r, s = o.re.exec(t), a = s && o.parse(s), l = o.space || "rgba";
|
||
return a ? (r = n[l](a), n[u[l].cache] = r[u[l].cache], i = n._rgba = r._rgba, !1) : void 0;
|
||
}), i.length ? ("0,0,0,0" === i.join() && e.extend(i, r.transparent), n) : r[t];
|
||
}
|
||
function o(e, t, n) {
|
||
return n = (n + 1) % 1, 1 > 6 * n ? e + 6 * (t - e) * n : 1 > 2 * n ? t : 2 > 3 * n ? e + 6 * (t - e) * (2 / 3 - n) : e;
|
||
}
|
||
var r, s = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", a = /^([\-+])=\s*(\d+\.?\d*)/, l = [ {
|
||
re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
|
||
parse: function(e) {
|
||
return [ e[1], e[2], e[3], e[4] ];
|
||
}
|
||
}, {
|
||
re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
|
||
parse: function(e) {
|
||
return [ 2.55 * e[1], 2.55 * e[2], 2.55 * e[3], e[4] ];
|
||
}
|
||
}, {
|
||
re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
|
||
parse: function(e) {
|
||
return [ parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16) ];
|
||
}
|
||
}, {
|
||
re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
|
||
parse: function(e) {
|
||
return [ parseInt(e[1] + e[1], 16), parseInt(e[2] + e[2], 16), parseInt(e[3] + e[3], 16) ];
|
||
}
|
||
}, {
|
||
re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
|
||
space: "hsla",
|
||
parse: function(e) {
|
||
return [ e[1], e[2] / 100, e[3] / 100, e[4] ];
|
||
}
|
||
} ], c = e.Color = function(t, n, i, o) {
|
||
return new e.Color.fn.parse(t, n, i, o);
|
||
}, u = {
|
||
rgba: {
|
||
props: {
|
||
red: {
|
||
idx: 0,
|
||
type: "byte"
|
||
},
|
||
green: {
|
||
idx: 1,
|
||
type: "byte"
|
||
},
|
||
blue: {
|
||
idx: 2,
|
||
type: "byte"
|
||
}
|
||
}
|
||
},
|
||
hsla: {
|
||
props: {
|
||
hue: {
|
||
idx: 0,
|
||
type: "degrees"
|
||
},
|
||
saturation: {
|
||
idx: 1,
|
||
type: "percent"
|
||
},
|
||
lightness: {
|
||
idx: 2,
|
||
type: "percent"
|
||
}
|
||
}
|
||
}
|
||
}, d = {
|
||
"byte": {
|
||
floor: !0,
|
||
max: 255
|
||
},
|
||
percent: {
|
||
max: 1
|
||
},
|
||
degrees: {
|
||
mod: 360,
|
||
floor: !0
|
||
}
|
||
}, h = c.support = {}, p = e("<p>")[0], f = e.each;
|
||
p.style.cssText = "background-color:rgba(1,1,1,.5)", h.rgba = p.style.backgroundColor.indexOf("rgba") > -1,
|
||
f(u, function(e, t) {
|
||
t.cache = "_" + e, t.props.alpha = {
|
||
idx: 3,
|
||
type: "percent",
|
||
def: 1
|
||
};
|
||
}), c.fn = e.extend(c.prototype, {
|
||
parse: function(o, s, a, l) {
|
||
if (o === t) return this._rgba = [ null, null, null, null ], this;
|
||
(o.jquery || o.nodeType) && (o = e(o).css(s), s = t);
|
||
var d = this, h = e.type(o), p = this._rgba = [];
|
||
return s !== t && (o = [ o, s, a, l ], h = "array"), "string" === h ? this.parse(i(o) || r._default) : "array" === h ? (f(u.rgba.props, function(e, t) {
|
||
p[t.idx] = n(o[t.idx], t);
|
||
}), this) : "object" === h ? (o instanceof c ? f(u, function(e, t) {
|
||
o[t.cache] && (d[t.cache] = o[t.cache].slice());
|
||
}) : f(u, function(t, i) {
|
||
var r = i.cache;
|
||
f(i.props, function(e, t) {
|
||
if (!d[r] && i.to) {
|
||
if ("alpha" === e || null == o[e]) return;
|
||
d[r] = i.to(d._rgba);
|
||
}
|
||
d[r][t.idx] = n(o[e], t, !0);
|
||
}), d[r] && e.inArray(null, d[r].slice(0, 3)) < 0 && (d[r][3] = 1, i.from && (d._rgba = i.from(d[r])));
|
||
}), this) : void 0;
|
||
},
|
||
is: function(e) {
|
||
var t = c(e), n = !0, i = this;
|
||
return f(u, function(e, o) {
|
||
var r, s = t[o.cache];
|
||
return s && (r = i[o.cache] || o.to && o.to(i._rgba) || [], f(o.props, function(e, t) {
|
||
return null != s[t.idx] ? n = s[t.idx] === r[t.idx] : void 0;
|
||
})), n;
|
||
}), n;
|
||
},
|
||
_space: function() {
|
||
var e = [], t = this;
|
||
return f(u, function(n, i) {
|
||
t[i.cache] && e.push(n);
|
||
}), e.pop();
|
||
},
|
||
transition: function(e, t) {
|
||
var i = c(e), o = i._space(), r = u[o], s = 0 === this.alpha() ? c("transparent") : this, a = s[r.cache] || r.to(s._rgba), l = a.slice();
|
||
return i = i[r.cache], f(r.props, function(e, o) {
|
||
var r = o.idx, s = a[r], c = i[r], u = d[o.type] || {};
|
||
null !== c && (null === s ? l[r] = c : (u.mod && (c - s > u.mod / 2 ? s += u.mod : s - c > u.mod / 2 && (s -= u.mod)),
|
||
l[r] = n((c - s) * t + s, o)));
|
||
}), this[o](l);
|
||
},
|
||
blend: function(t) {
|
||
if (1 === this._rgba[3]) return this;
|
||
var n = this._rgba.slice(), i = n.pop(), o = c(t)._rgba;
|
||
return c(e.map(n, function(e, t) {
|
||
return (1 - i) * o[t] + i * e;
|
||
}));
|
||
},
|
||
toRgbaString: function() {
|
||
var t = "rgba(", n = e.map(this._rgba, function(e, t) {
|
||
return null == e ? t > 2 ? 1 : 0 : e;
|
||
});
|
||
return 1 === n[3] && (n.pop(), t = "rgb("), t + n.join() + ")";
|
||
},
|
||
toHslaString: function() {
|
||
var t = "hsla(", n = e.map(this.hsla(), function(e, t) {
|
||
return null == e && (e = t > 2 ? 1 : 0), t && 3 > t && (e = Math.round(100 * e) + "%"),
|
||
e;
|
||
});
|
||
return 1 === n[3] && (n.pop(), t = "hsl("), t + n.join() + ")";
|
||
},
|
||
toHexString: function(t) {
|
||
var n = this._rgba.slice(), i = n.pop();
|
||
return t && n.push(~~(255 * i)), "#" + e.map(n, function(e) {
|
||
return e = (e || 0).toString(16), 1 === e.length ? "0" + e : e;
|
||
}).join("");
|
||
},
|
||
toString: function() {
|
||
return 0 === this._rgba[3] ? "transparent" : this.toRgbaString();
|
||
}
|
||
}), c.fn.parse.prototype = c.fn, u.hsla.to = function(e) {
|
||
if (null == e[0] || null == e[1] || null == e[2]) return [ null, null, null, e[3] ];
|
||
var t, n, i = e[0] / 255, o = e[1] / 255, r = e[2] / 255, s = e[3], a = Math.max(i, o, r), l = Math.min(i, o, r), c = a - l, u = a + l, d = .5 * u;
|
||
return t = l === a ? 0 : i === a ? 60 * (o - r) / c + 360 : o === a ? 60 * (r - i) / c + 120 : 60 * (i - o) / c + 240,
|
||
n = 0 === c ? 0 : .5 >= d ? c / u : c / (2 - u), [ Math.round(t) % 360, n, d, null == s ? 1 : s ];
|
||
}, u.hsla.from = function(e) {
|
||
if (null == e[0] || null == e[1] || null == e[2]) return [ null, null, null, e[3] ];
|
||
var t = e[0] / 360, n = e[1], i = e[2], r = e[3], s = .5 >= i ? i * (1 + n) : i + n - i * n, a = 2 * i - s;
|
||
return [ Math.round(255 * o(a, s, t + 1 / 3)), Math.round(255 * o(a, s, t)), Math.round(255 * o(a, s, t - 1 / 3)), r ];
|
||
}, f(u, function(i, o) {
|
||
var r = o.props, s = o.cache, l = o.to, u = o.from;
|
||
c.fn[i] = function(i) {
|
||
if (l && !this[s] && (this[s] = l(this._rgba)), i === t) return this[s].slice();
|
||
var o, a = e.type(i), d = "array" === a || "object" === a ? i : arguments, h = this[s].slice();
|
||
return f(r, function(e, t) {
|
||
var i = d["object" === a ? e : t.idx];
|
||
null == i && (i = h[t.idx]), h[t.idx] = n(i, t);
|
||
}), u ? (o = c(u(h)), o[s] = h, o) : c(h);
|
||
}, f(r, function(t, n) {
|
||
c.fn[t] || (c.fn[t] = function(o) {
|
||
var r, s = e.type(o), l = "alpha" === t ? this._hsla ? "hsla" : "rgba" : i, c = this[l](), u = c[n.idx];
|
||
return "undefined" === s ? u : ("function" === s && (o = o.call(this, u), s = e.type(o)),
|
||
null == o && n.empty ? this : ("string" === s && (r = a.exec(o), r && (o = u + parseFloat(r[2]) * ("+" === r[1] ? 1 : -1))),
|
||
c[n.idx] = o, this[l](c)));
|
||
});
|
||
});
|
||
}), c.hook = function(t) {
|
||
var n = t.split(" ");
|
||
f(n, function(t, n) {
|
||
e.cssHooks[n] = {
|
||
set: function(t, o) {
|
||
var r, s, a = "";
|
||
if ("transparent" !== o && ("string" !== e.type(o) || (r = i(o)))) {
|
||
if (o = c(r || o), !h.rgba && 1 !== o._rgba[3]) {
|
||
for (s = "backgroundColor" === n ? t.parentNode : t; ("" === a || "transparent" === a) && s && s.style; ) try {
|
||
a = e.css(s, "backgroundColor"), s = s.parentNode;
|
||
} catch (l) {}
|
||
o = o.blend(a && "transparent" !== a ? a : "_default");
|
||
}
|
||
o = o.toRgbaString();
|
||
}
|
||
try {
|
||
t.style[n] = o;
|
||
} catch (l) {}
|
||
}
|
||
}, e.fx.step[n] = function(t) {
|
||
t.colorInit || (t.start = c(t.elem, n), t.end = c(t.end), t.colorInit = !0), e.cssHooks[n].set(t.elem, t.start.transition(t.end, t.pos));
|
||
};
|
||
});
|
||
}, c.hook(s), e.cssHooks.borderColor = {
|
||
expand: function(e) {
|
||
var t = {};
|
||
return f([ "Top", "Right", "Bottom", "Left" ], function(n, i) {
|
||
t["border" + i + "Color"] = e;
|
||
}), t;
|
||
}
|
||
}, r = e.Color.names = {
|
||
aqua: "#00ffff",
|
||
black: "#000000",
|
||
blue: "#0000ff",
|
||
fuchsia: "#ff00ff",
|
||
gray: "#808080",
|
||
green: "#008000",
|
||
lime: "#00ff00",
|
||
maroon: "#800000",
|
||
navy: "#000080",
|
||
olive: "#808000",
|
||
purple: "#800080",
|
||
red: "#ff0000",
|
||
silver: "#c0c0c0",
|
||
teal: "#008080",
|
||
white: "#ffffff",
|
||
yellow: "#ffff00",
|
||
transparent: [ null, null, null, 0 ],
|
||
_default: "#ffffff"
|
||
};
|
||
}(jQuery), function() {
|
||
function n(t) {
|
||
var n, i, o = t.ownerDocument.defaultView ? t.ownerDocument.defaultView.getComputedStyle(t, null) : t.currentStyle, r = {};
|
||
if (o && o.length && o[0] && o[o[0]]) for (i = o.length; i--; ) n = o[i], "string" == typeof o[n] && (r[e.camelCase(n)] = o[n]); else for (n in o) "string" == typeof o[n] && (r[n] = o[n]);
|
||
return r;
|
||
}
|
||
function i(t, n) {
|
||
var i, o, s = {};
|
||
for (i in n) o = n[i], t[i] !== o && (r[i] || (e.fx.step[i] || !isNaN(parseFloat(o))) && (s[i] = o));
|
||
return s;
|
||
}
|
||
var o = [ "add", "remove", "toggle" ], r = {
|
||
border: 1,
|
||
borderBottom: 1,
|
||
borderColor: 1,
|
||
borderLeft: 1,
|
||
borderRight: 1,
|
||
borderTop: 1,
|
||
borderWidth: 1,
|
||
margin: 1,
|
||
padding: 1
|
||
};
|
||
e.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function(t, n) {
|
||
e.fx.step[n] = function(e) {
|
||
("none" !== e.end && !e.setAttr || 1 === e.pos && !e.setAttr) && (jQuery.style(e.elem, n, e.end),
|
||
e.setAttr = !0);
|
||
};
|
||
}), e.fn.addBack || (e.fn.addBack = function(e) {
|
||
return this.add(null == e ? this.prevObject : this.prevObject.filter(e));
|
||
}), e.effects.animateClass = function(t, r, s, a) {
|
||
var l = e.speed(r, s, a);
|
||
return this.queue(function() {
|
||
var r, s = e(this), a = s.attr("class") || "", c = l.children ? s.find("*").addBack() : s;
|
||
c = c.map(function() {
|
||
var t = e(this);
|
||
return {
|
||
el: t,
|
||
start: n(this)
|
||
};
|
||
}), r = function() {
|
||
e.each(o, function(e, n) {
|
||
t[n] && s[n + "Class"](t[n]);
|
||
});
|
||
}, r(), c = c.map(function() {
|
||
return this.end = n(this.el[0]), this.diff = i(this.start, this.end), this;
|
||
}), s.attr("class", a), c = c.map(function() {
|
||
var t = this, n = e.Deferred(), i = e.extend({}, l, {
|
||
queue: !1,
|
||
complete: function() {
|
||
n.resolve(t);
|
||
}
|
||
});
|
||
return this.el.animate(this.diff, i), n.promise();
|
||
}), e.when.apply(e, c.get()).done(function() {
|
||
r(), e.each(arguments, function() {
|
||
var t = this.el;
|
||
e.each(this.diff, function(e) {
|
||
t.css(e, "");
|
||
});
|
||
}), l.complete.call(s[0]);
|
||
});
|
||
});
|
||
}, e.fn.extend({
|
||
addClass: function(t) {
|
||
return function(n, i, o, r) {
|
||
return i ? e.effects.animateClass.call(this, {
|
||
add: n
|
||
}, i, o, r) : t.apply(this, arguments);
|
||
};
|
||
}(e.fn.addClass),
|
||
removeClass: function(t) {
|
||
return function(n, i, o, r) {
|
||
return arguments.length > 1 ? e.effects.animateClass.call(this, {
|
||
remove: n
|
||
}, i, o, r) : t.apply(this, arguments);
|
||
};
|
||
}(e.fn.removeClass),
|
||
toggleClass: function(n) {
|
||
return function(i, o, r, s, a) {
|
||
return "boolean" == typeof o || o === t ? r ? e.effects.animateClass.call(this, o ? {
|
||
add: i
|
||
} : {
|
||
remove: i
|
||
}, r, s, a) : n.apply(this, arguments) : e.effects.animateClass.call(this, {
|
||
toggle: i
|
||
}, o, r, s);
|
||
};
|
||
}(e.fn.toggleClass),
|
||
switchClass: function(t, n, i, o, r) {
|
||
return e.effects.animateClass.call(this, {
|
||
add: n,
|
||
remove: t
|
||
}, i, o, r);
|
||
}
|
||
});
|
||
}(), function() {
|
||
function i(t, n, i, o) {
|
||
return e.isPlainObject(t) && (n = t, t = t.effect), t = {
|
||
effect: t
|
||
}, null == n && (n = {}), e.isFunction(n) && (o = n, i = null, n = {}), ("number" == typeof n || e.fx.speeds[n]) && (o = i,
|
||
i = n, n = {}), e.isFunction(i) && (o = i, i = null), n && e.extend(t, n), i = i || n.duration,
|
||
t.duration = e.fx.off ? 0 : "number" == typeof i ? i : i in e.fx.speeds ? e.fx.speeds[i] : e.fx.speeds._default,
|
||
t.complete = o || n.complete, t;
|
||
}
|
||
function o(t) {
|
||
return !t || "number" == typeof t || e.fx.speeds[t] ? !0 : "string" != typeof t || e.effects.effect[t] ? e.isFunction(t) ? !0 : "object" != typeof t || t.effect ? !1 : !0 : !0;
|
||
}
|
||
e.extend(e.effects, {
|
||
version: "1.10.3",
|
||
save: function(e, t) {
|
||
for (var i = 0; i < t.length; i++) null !== t[i] && e.data(n + t[i], e[0].style[t[i]]);
|
||
},
|
||
restore: function(e, i) {
|
||
var o, r;
|
||
for (r = 0; r < i.length; r++) null !== i[r] && (o = e.data(n + i[r]), o === t && (o = ""),
|
||
e.css(i[r], o));
|
||
},
|
||
setMode: function(e, t) {
|
||
return "toggle" === t && (t = e.is(":hidden") ? "show" : "hide"), t;
|
||
},
|
||
getBaseline: function(e, t) {
|
||
var n, i;
|
||
switch (e[0]) {
|
||
case "top":
|
||
n = 0;
|
||
break;
|
||
|
||
case "middle":
|
||
n = .5;
|
||
break;
|
||
|
||
case "bottom":
|
||
n = 1;
|
||
break;
|
||
|
||
default:
|
||
n = e[0] / t.height;
|
||
}
|
||
switch (e[1]) {
|
||
case "left":
|
||
i = 0;
|
||
break;
|
||
|
||
case "center":
|
||
i = .5;
|
||
break;
|
||
|
||
case "right":
|
||
i = 1;
|
||
break;
|
||
|
||
default:
|
||
i = e[1] / t.width;
|
||
}
|
||
return {
|
||
x: i,
|
||
y: n
|
||
};
|
||
},
|
||
createWrapper: function(t) {
|
||
if (t.parent().is(".ui-effects-wrapper")) return t.parent();
|
||
var n = {
|
||
width: t.outerWidth(!0),
|
||
height: t.outerHeight(!0),
|
||
"float": t.css("float")
|
||
}, i = e("<div></div>").addClass("ui-effects-wrapper").css({
|
||
fontSize: "100%",
|
||
background: "transparent",
|
||
border: "none",
|
||
margin: 0,
|
||
padding: 0
|
||
}), o = {
|
||
width: t.width(),
|
||
height: t.height()
|
||
}, r = document.activeElement;
|
||
try {
|
||
r.id;
|
||
} catch (s) {
|
||
r = document.body;
|
||
}
|
||
return t.wrap(i), (t[0] === r || e.contains(t[0], r)) && e(r).focus(), i = t.parent(),
|
||
"static" === t.css("position") ? (i.css({
|
||
position: "relative"
|
||
}), t.css({
|
||
position: "relative"
|
||
})) : (e.extend(n, {
|
||
position: t.css("position"),
|
||
zIndex: t.css("z-index")
|
||
}), e.each([ "top", "left", "bottom", "right" ], function(e, i) {
|
||
n[i] = t.css(i), isNaN(parseInt(n[i], 10)) && (n[i] = "auto");
|
||
}), t.css({
|
||
position: "relative",
|
||
top: 0,
|
||
left: 0,
|
||
right: "auto",
|
||
bottom: "auto"
|
||
})), t.css(o), i.css(n).show();
|
||
},
|
||
removeWrapper: function(t) {
|
||
var n = document.activeElement;
|
||
return t.parent().is(".ui-effects-wrapper") && (t.parent().replaceWith(t), (t[0] === n || e.contains(t[0], n)) && e(n).focus()),
|
||
t;
|
||
},
|
||
setTransition: function(t, n, i, o) {
|
||
return o = o || {}, e.each(n, function(e, n) {
|
||
var r = t.cssUnit(n);
|
||
r[0] > 0 && (o[n] = r[0] * i + r[1]);
|
||
}), o;
|
||
}
|
||
}), e.fn.extend({
|
||
effect: function() {
|
||
function t(t) {
|
||
function i() {
|
||
e.isFunction(r) && r.call(o[0]), e.isFunction(t) && t();
|
||
}
|
||
var o = e(this), r = n.complete, a = n.mode;
|
||
(o.is(":hidden") ? "hide" === a : "show" === a) ? (o[a](), i()) : s.call(o[0], n, i);
|
||
}
|
||
var n = i.apply(this, arguments), o = n.mode, r = n.queue, s = e.effects.effect[n.effect];
|
||
return e.fx.off || !s ? o ? this[o](n.duration, n.complete) : this.each(function() {
|
||
n.complete && n.complete.call(this);
|
||
}) : r === !1 ? this.each(t) : this.queue(r || "fx", t);
|
||
},
|
||
show: function(e) {
|
||
return function(t) {
|
||
if (o(t)) return e.apply(this, arguments);
|
||
var n = i.apply(this, arguments);
|
||
return n.mode = "show", this.effect.call(this, n);
|
||
};
|
||
}(e.fn.show),
|
||
hide: function(e) {
|
||
return function(t) {
|
||
if (o(t)) return e.apply(this, arguments);
|
||
var n = i.apply(this, arguments);
|
||
return n.mode = "hide", this.effect.call(this, n);
|
||
};
|
||
}(e.fn.hide),
|
||
toggle: function(e) {
|
||
return function(t) {
|
||
if (o(t) || "boolean" == typeof t) return e.apply(this, arguments);
|
||
var n = i.apply(this, arguments);
|
||
return n.mode = "toggle", this.effect.call(this, n);
|
||
};
|
||
}(e.fn.toggle),
|
||
cssUnit: function(t) {
|
||
var n = this.css(t), i = [];
|
||
return e.each([ "em", "px", "%", "pt" ], function(e, t) {
|
||
n.indexOf(t) > 0 && (i = [ parseFloat(n), t ]);
|
||
}), i;
|
||
}
|
||
});
|
||
}(), function() {
|
||
var t = {};
|
||
e.each([ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function(e, n) {
|
||
t[n] = function(t) {
|
||
return Math.pow(t, e + 2);
|
||
};
|
||
}), e.extend(t, {
|
||
Sine: function(e) {
|
||
return 1 - Math.cos(e * Math.PI / 2);
|
||
},
|
||
Circ: function(e) {
|
||
return 1 - Math.sqrt(1 - e * e);
|
||
},
|
||
Elastic: function(e) {
|
||
return 0 === e || 1 === e ? e : -Math.pow(2, 8 * (e - 1)) * Math.sin((80 * (e - 1) - 7.5) * Math.PI / 15);
|
||
},
|
||
Back: function(e) {
|
||
return e * e * (3 * e - 2);
|
||
},
|
||
Bounce: function(e) {
|
||
for (var t, n = 4; e < ((t = Math.pow(2, --n)) - 1) / 11; ) ;
|
||
return 1 / Math.pow(4, 3 - n) - 7.5625 * Math.pow((3 * t - 2) / 22 - e, 2);
|
||
}
|
||
}), e.each(t, function(t, n) {
|
||
e.easing["easeIn" + t] = n, e.easing["easeOut" + t] = function(e) {
|
||
return 1 - n(1 - e);
|
||
}, e.easing["easeInOut" + t] = function(e) {
|
||
return .5 > e ? n(2 * e) / 2 : 1 - n(-2 * e + 2) / 2;
|
||
};
|
||
});
|
||
}();
|
||
}(jQuery), define("jquery-ui-effect", function() {}), function(e) {
|
||
e.effects.effect.slide = function(t, n) {
|
||
var i, o = e(this), r = [ "position", "top", "bottom", "left", "right", "width", "height" ], s = e.effects.setMode(o, t.mode || "show"), a = "show" === s, l = t.direction || "left", c = "up" === l || "down" === l ? "top" : "left", u = "up" === l || "left" === l, d = {};
|
||
e.effects.save(o, r), o.show(), i = t.distance || o["top" === c ? "outerHeight" : "outerWidth"](!0),
|
||
e.effects.createWrapper(o).css({
|
||
overflow: "hidden"
|
||
}), a && o.css(c, u ? isNaN(i) ? "-" + i : -i : i), d[c] = (a ? u ? "+=" : "-=" : u ? "-=" : "+=") + i,
|
||
o.animate(d, {
|
||
queue: !1,
|
||
duration: t.duration,
|
||
easing: t.easing,
|
||
complete: function() {
|
||
"hide" === s && o.hide(), e.effects.restore(o, r), e.effects.removeWrapper(o), n();
|
||
}
|
||
});
|
||
};
|
||
}(jQuery), define("jquery-ui-effect-slide", function() {}), function($) {
|
||
var min = Math.min, max = Math.max, round = Math.floor, isStr = function(e) {
|
||
return "string" === $.type(e);
|
||
}, runPluginCallbacks = function(Instance, a_fn) {
|
||
function g(e) {
|
||
return e;
|
||
}
|
||
if ($.isArray(a_fn)) for (var i = 0, c = a_fn.length; c > i; i++) {
|
||
var fn = a_fn[i];
|
||
try {
|
||
isStr(fn) && (fn = eval(fn)), $.isFunction(fn) && g(fn)(Instance);
|
||
} catch (ex) {}
|
||
}
|
||
};
|
||
$.layout = {
|
||
version: "1.3.rc30.79",
|
||
revision: .033007,
|
||
browser: {},
|
||
effects: {
|
||
slide: {
|
||
all: {
|
||
duration: "fast"
|
||
},
|
||
north: {
|
||
direction: "up"
|
||
},
|
||
south: {
|
||
direction: "down"
|
||
},
|
||
east: {
|
||
direction: "right"
|
||
},
|
||
west: {
|
||
direction: "left"
|
||
}
|
||
},
|
||
drop: {
|
||
all: {
|
||
duration: "slow"
|
||
},
|
||
north: {
|
||
direction: "up"
|
||
},
|
||
south: {
|
||
direction: "down"
|
||
},
|
||
east: {
|
||
direction: "right"
|
||
},
|
||
west: {
|
||
direction: "left"
|
||
}
|
||
},
|
||
scale: {
|
||
all: {
|
||
duration: "fast"
|
||
}
|
||
},
|
||
blind: {},
|
||
clip: {},
|
||
explode: {},
|
||
fade: {},
|
||
fold: {},
|
||
puff: {},
|
||
size: {
|
||
all: {
|
||
easing: "swing"
|
||
}
|
||
}
|
||
},
|
||
config: {
|
||
optionRootKeys: "effects,panes,north,south,west,east,center".split(","),
|
||
allPanes: "north,south,west,east,center".split(","),
|
||
borderPanes: "north,south,west,east".split(","),
|
||
oppositeEdge: {
|
||
north: "south",
|
||
south: "north",
|
||
east: "west",
|
||
west: "east"
|
||
},
|
||
offscreenCSS: {
|
||
left: "-99999px",
|
||
right: "auto"
|
||
},
|
||
offscreenReset: "offscreenReset",
|
||
hidden: {
|
||
visibility: "hidden"
|
||
},
|
||
visible: {
|
||
visibility: "visible"
|
||
},
|
||
resizers: {
|
||
cssReq: {
|
||
position: "absolute",
|
||
padding: 0,
|
||
margin: 0,
|
||
fontSize: "1px",
|
||
textAlign: "left",
|
||
overflow: "hidden"
|
||
},
|
||
cssDemo: {
|
||
background: "#DDD",
|
||
border: "none"
|
||
}
|
||
},
|
||
togglers: {
|
||
cssReq: {
|
||
position: "absolute",
|
||
display: "block",
|
||
padding: 0,
|
||
margin: 0,
|
||
overflow: "hidden",
|
||
textAlign: "center",
|
||
fontSize: "1px",
|
||
cursor: "pointer",
|
||
zIndex: 1
|
||
},
|
||
cssDemo: {
|
||
background: "#AAA"
|
||
}
|
||
},
|
||
content: {
|
||
cssReq: {
|
||
position: "relative"
|
||
},
|
||
cssDemo: {
|
||
overflow: "auto",
|
||
padding: "10px"
|
||
},
|
||
cssDemoPane: {
|
||
overflow: "hidden",
|
||
padding: 0
|
||
}
|
||
},
|
||
panes: {
|
||
cssReq: {
|
||
position: "absolute",
|
||
margin: 0
|
||
},
|
||
cssDemo: {
|
||
padding: "10px",
|
||
background: "#FFF",
|
||
border: "1px solid #BBB",
|
||
overflow: "auto"
|
||
}
|
||
},
|
||
north: {
|
||
side: "top",
|
||
sizeType: "Height",
|
||
dir: "horz",
|
||
cssReq: {
|
||
top: 0,
|
||
bottom: "auto",
|
||
left: 0,
|
||
right: 0,
|
||
width: "auto"
|
||
}
|
||
},
|
||
south: {
|
||
side: "bottom",
|
||
sizeType: "Height",
|
||
dir: "horz",
|
||
cssReq: {
|
||
top: "auto",
|
||
bottom: 0,
|
||
left: 0,
|
||
right: 0,
|
||
width: "auto"
|
||
}
|
||
},
|
||
east: {
|
||
side: "right",
|
||
sizeType: "Width",
|
||
dir: "vert",
|
||
cssReq: {
|
||
left: "auto",
|
||
right: 0,
|
||
top: "auto",
|
||
bottom: "auto",
|
||
height: "auto"
|
||
}
|
||
},
|
||
west: {
|
||
side: "left",
|
||
sizeType: "Width",
|
||
dir: "vert",
|
||
cssReq: {
|
||
left: 0,
|
||
right: "auto",
|
||
top: "auto",
|
||
bottom: "auto",
|
||
height: "auto"
|
||
}
|
||
},
|
||
center: {
|
||
dir: "center",
|
||
cssReq: {
|
||
left: "auto",
|
||
right: "auto",
|
||
top: "auto",
|
||
bottom: "auto",
|
||
height: "auto",
|
||
width: "auto"
|
||
}
|
||
}
|
||
},
|
||
callbacks: {},
|
||
getParentPaneElem: function(e) {
|
||
var t = $(e), n = t.data("layout") || t.data("parentLayout");
|
||
if (n) {
|
||
var i = n.container;
|
||
if (i.data("layoutPane")) return i;
|
||
var o = i.closest("." + $.layout.defaults.panes.paneClass);
|
||
if (o.data("layoutPane")) return o;
|
||
}
|
||
return null;
|
||
},
|
||
getParentPaneInstance: function(e) {
|
||
var t = $.layout.getParentPaneElem(e);
|
||
return t ? t.data("layoutPane") : null;
|
||
},
|
||
getParentLayoutInstance: function(e) {
|
||
var t = $.layout.getParentPaneElem(e);
|
||
return t ? t.data("parentLayout") : null;
|
||
},
|
||
getEventObject: function(e) {
|
||
return "object" == typeof e && e.stopPropagation ? e : null;
|
||
},
|
||
parsePaneName: function(e) {
|
||
var t = $.layout.getEventObject(e), n = e;
|
||
return t && (t.stopPropagation(), n = $(this).data("layoutEdge")), n && !/^(west|east|north|south|center)$/.test(n) && ($.layout.msg('LAYOUT ERROR - Invalid pane-name: "' + n + '"'),
|
||
n = "error"), n;
|
||
},
|
||
plugins: {
|
||
draggable: !!$.fn.draggable,
|
||
effects: {
|
||
core: !!$.effects,
|
||
slide: $.effects && ($.effects.slide || $.effects.effect && $.effects.effect.slide)
|
||
}
|
||
},
|
||
onCreate: [],
|
||
onLoad: [],
|
||
onReady: [],
|
||
onDestroy: [],
|
||
onUnload: [],
|
||
afterOpen: [],
|
||
afterClose: [],
|
||
scrollbarWidth: function() {
|
||
return window.scrollbarWidth || $.layout.getScrollbarSize("width");
|
||
},
|
||
scrollbarHeight: function() {
|
||
return window.scrollbarHeight || $.layout.getScrollbarSize("height");
|
||
},
|
||
getScrollbarSize: function(e) {
|
||
var t = $('<div style="position: absolute; top: -10000px; left: -10000px; width: 100px; height: 100px; overflow: scroll;"></div>').appendTo("body"), n = {
|
||
width: t.css("width") - t[0].clientWidth,
|
||
height: t.height() - t[0].clientHeight
|
||
};
|
||
return t.remove(), window.scrollbarWidth = n.width, window.scrollbarHeight = n.height,
|
||
e.match(/^(width|height)$/) ? n[e] : n;
|
||
},
|
||
showInvisibly: function(e, t) {
|
||
if (e && e.length && (t || "none" === e.css("display"))) {
|
||
var n = e[0].style, i = {
|
||
display: n.display || "",
|
||
visibility: n.visibility || ""
|
||
};
|
||
return e.css({
|
||
display: "block",
|
||
visibility: "hidden"
|
||
}), i;
|
||
}
|
||
return {};
|
||
},
|
||
getElementDimensions: function(e, t) {
|
||
var n, i, o, r = {
|
||
css: {},
|
||
inset: {}
|
||
}, s = r.css, a = {
|
||
bottom: 0
|
||
}, l = $.layout.cssNum, c = e.offset();
|
||
return r.offsetLeft = c.left, r.offsetTop = c.top, t || (t = {}), $.each("Left,Right,Top,Bottom".split(","), function(l, c) {
|
||
n = s["border" + c] = $.layout.borderWidth(e, c), i = s["padding" + c] = $.layout.cssNum(e, "padding" + c),
|
||
o = c.toLowerCase(), r.inset[o] = t[o] >= 0 ? t[o] : i, a[o] = r.inset[o] + n;
|
||
}), s.width = e.width(), s.height = e.height(), s.top = l(e, "top", !0), s.bottom = l(e, "bottom", !0),
|
||
s.left = l(e, "left", !0), s.right = l(e, "right", !0), r.outerWidth = e.outerWidth(),
|
||
r.outerHeight = e.outerHeight(), r.innerWidth = max(0, r.outerWidth - a.left - a.right),
|
||
r.innerHeight = max(0, r.outerHeight - a.top - a.bottom), r.layoutWidth = e.innerWidth(),
|
||
r.layoutHeight = e.innerHeight(), r;
|
||
},
|
||
getElementStyles: function(e, t) {
|
||
var n, i, o, r, s, a, l = {}, c = e[0].style, u = t.split(","), d = "Top,Bottom,Left,Right".split(","), h = "Color,Style,Width".split(",");
|
||
for (r = 0; r < u.length; r++) if (n = u[r], n.match(/(border|padding|margin)$/)) for (s = 0; 4 > s; s++) if (i = d[s],
|
||
"border" === n) for (a = 0; 3 > a; a++) o = h[a], l[n + i + o] = c[n + i + o]; else l[n + i] = c[n + i]; else l[n] = c[n];
|
||
return l;
|
||
},
|
||
cssWidth: function(e, t) {
|
||
if (0 >= t) return 0;
|
||
var n = $.layout.browser.boxModel ? $.support.boxSizing ? e.css("boxSizing") : "content-box" : "border-box", i = $.layout.borderWidth, o = $.layout.cssNum, r = t;
|
||
return "border-box" !== n && (r -= i(e, "Left") + i(e, "Right")), "content-box" === n && (r -= o(e, "paddingLeft") + o(e, "paddingRight")),
|
||
max(0, r);
|
||
},
|
||
cssHeight: function(e, t) {
|
||
if (0 >= t) return 0;
|
||
var n = $.layout.browser.boxModel ? $.support.boxSizing ? e.css("boxSizing") : "content-box" : "border-box", i = $.layout.borderWidth, o = $.layout.cssNum, r = t;
|
||
return "border-box" !== n && (r -= i(e, "Top") + i(e, "Bottom")), "content-box" === n && (r -= o(e, "paddingTop") + o(e, "paddingBottom")),
|
||
max(0, r);
|
||
},
|
||
cssNum: function(e, t, n) {
|
||
e.jquery || (e = $(e));
|
||
var i = $.layout.showInvisibly(e), o = $.css(e[0], t, !0), r = n && "auto" == o ? o : Math.round(parseFloat(o) || 0);
|
||
return e.css(i), r;
|
||
},
|
||
borderWidth: function(e, t) {
|
||
e.jquery && (e = e[0]);
|
||
var n = "border" + t.substr(0, 1).toUpperCase() + t.substr(1);
|
||
return "none" === $.css(e, n + "Style", !0) ? 0 : Math.round(parseFloat($.css(e, n + "Width", !0)) || 0);
|
||
},
|
||
isMouseOverElem: function(e, t) {
|
||
var n = $(t || this), i = n.offset(), o = i.top, r = i.left, s = r + n.outerWidth(), a = o + n.outerHeight(), l = e.pageX, c = e.pageY;
|
||
return $.layout.browser.msie && 0 > l && 0 > c || l >= r && s >= l && c >= o && a >= c;
|
||
},
|
||
msg: function(e, t, n, i) {
|
||
function o() {
|
||
var e = $.support.fixedPosition ? "fixed" : "absolute", t = $('<div id="layoutLogger" style="position: ' + e + '; top: 5px; z-index: 999999; max-width: 25%; overflow: hidden; border: 1px solid #000; border-radius: 5px; background: #FBFBFB; box-shadow: 0 2px 10px rgba(0,0,0,0.3);">' + '<div style="font-size: 13px; font-weight: bold; padding: 5px 10px; background: #F6F6F6; border-radius: 5px 5px 0 0; cursor: move;">' + '<span style="float: right; padding-left: 7px; cursor: pointer;" title="Remove Console" onclick="$(this).closest(\'#layoutLogger\').remove()">X</span>Layout console.log</div>' + '<ul style="font-size: 13px; font-weight: none; list-style: none; margin: 0; padding: 0 0 2px;"></ul>' + "</div>").appendTo("body");
|
||
return t.css("left", $(window).width() - t.outerWidth() - 5), $.ui.draggable && t.draggable({
|
||
handle: ":first-child"
|
||
}), t;
|
||
}
|
||
if ($.isPlainObject(e) && window.debugData) {
|
||
"string" == typeof t ? (i = n, n = t) : "object" == typeof n && (i = n, n = null);
|
||
var r = n || "log( <object> )", s = $.extend({
|
||
sort: !1,
|
||
returnHTML: !1,
|
||
display: !1
|
||
}, i);
|
||
t === !0 || s.display ? debugData(e, r, s) : window.console && console.log(debugData(e, r, s));
|
||
} else if (t) alert(e); else if (window.console) console.log(e); else {
|
||
var a = "#layoutLogger", l = $(a);
|
||
l.length || (l = o()), l.children("ul").append('<li style="padding: 4px 10px; margin: 0; border-top: 1px solid #CCC;">' + e.replace(/\</g, "<").replace(/\>/g, ">") + "</li>");
|
||
}
|
||
}
|
||
};
|
||
var u = navigator.userAgent.toLowerCase(), m = /(chrome)[ \/]([\w.]+)/.exec(u) || /(webkit)[ \/]([\w.]+)/.exec(u) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(u) || /(msie) ([\w.]+)/.exec(u) || u.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(u) || [], b = m[1] || "", v = m[2] || 0, ie = "msie" === b;
|
||
$.layout.browser = {
|
||
version: v,
|
||
safari: "webkit" === b,
|
||
webkit: "chrome" === b,
|
||
msie: ie,
|
||
isIE6: ie && 6 == v,
|
||
boxModel: !ie || $.support.boxModel !== !1
|
||
}, b && ($.layout.browser[b] = !0), ie && $(function() {
|
||
$.layout.browser.boxModel = $.support.boxModel;
|
||
}), $.layout.defaults = {
|
||
name: "",
|
||
containerClass: "ui-layout-container",
|
||
inset: null,
|
||
scrollToBookmarkOnLoad: !0,
|
||
resizeWithWindow: !0,
|
||
resizeWithWindowDelay: 200,
|
||
resizeWithWindowMaxDelay: 0,
|
||
maskPanesEarly: !1,
|
||
onresizeall_start: null,
|
||
onresizeall_end: null,
|
||
onload_start: null,
|
||
onload_end: null,
|
||
onunload_start: null,
|
||
onunload_end: null,
|
||
initPanes: !0,
|
||
showErrorMessages: !0,
|
||
showDebugMessages: !1,
|
||
zIndex: null,
|
||
zIndexes: {
|
||
pane_normal: 0,
|
||
content_mask: 1,
|
||
resizer_normal: 2,
|
||
pane_sliding: 100,
|
||
pane_animate: 1e3,
|
||
resizer_drag: 1e4
|
||
},
|
||
errors: {
|
||
pane: "pane",
|
||
selector: "selector",
|
||
addButtonError: "Error Adding Button\nInvalid ",
|
||
containerMissing: "UI Layout Initialization Error\nThe specified layout-container does not exist.",
|
||
centerPaneMissing: "UI Layout Initialization Error\nThe center-pane element does not exist.\nThe center-pane is a required element.",
|
||
noContainerHeight: "UI Layout Initialization Warning\nThe layout-container \"CONTAINER\" has no height.\nTherefore the layout is 0-height and hence 'invisible'!",
|
||
callbackError: "UI Layout Callback Error\nThe EVENT callback is not a valid function."
|
||
},
|
||
panes: {
|
||
applyDemoStyles: !1,
|
||
closable: !0,
|
||
resizable: !0,
|
||
slidable: !0,
|
||
initClosed: !1,
|
||
initHidden: !1,
|
||
contentSelector: ".ui-layout-content",
|
||
contentIgnoreSelector: ".ui-layout-ignore",
|
||
findNestedContent: !1,
|
||
paneClass: "ui-layout-pane",
|
||
resizerClass: "ui-layout-resizer",
|
||
togglerClass: "ui-layout-toggler",
|
||
buttonClass: "ui-layout-button",
|
||
minSize: 0,
|
||
maxSize: 0,
|
||
spacing_open: 6,
|
||
spacing_closed: 6,
|
||
togglerLength_open: 50,
|
||
togglerLength_closed: 50,
|
||
togglerAlign_open: "center",
|
||
togglerAlign_closed: "center",
|
||
togglerContent_open: "",
|
||
togglerContent_closed: "",
|
||
resizerDblClickToggle: !0,
|
||
autoResize: !0,
|
||
autoReopen: !0,
|
||
resizerDragOpacity: 1,
|
||
maskContents: !1,
|
||
maskObjects: !1,
|
||
maskZindex: null,
|
||
resizingGrid: !1,
|
||
livePaneResizing: !1,
|
||
liveContentResizing: !1,
|
||
liveResizingTolerance: 1,
|
||
sliderCursor: "pointer",
|
||
slideTrigger_open: "click",
|
||
slideTrigger_close: "mouseleave",
|
||
slideDelay_open: 300,
|
||
slideDelay_close: 300,
|
||
hideTogglerOnSlide: !1,
|
||
preventQuickSlideClose: $.layout.browser.webkit,
|
||
preventPrematureSlideClose: !1,
|
||
tips: {
|
||
Open: "Open",
|
||
Close: "Close",
|
||
Resize: "Resize",
|
||
Slide: "Slide Open",
|
||
Pin: "Pin",
|
||
Unpin: "Un-Pin",
|
||
noRoomToOpen: "Not enough room to show this panel.",
|
||
minSizeWarning: "Panel has reached its minimum size",
|
||
maxSizeWarning: "Panel has reached its maximum size"
|
||
},
|
||
showOverflowOnHover: !1,
|
||
enableCursorHotkey: !0,
|
||
customHotkeyModifier: "SHIFT",
|
||
fxName: "slide",
|
||
fxSpeed: null,
|
||
fxSettings: {},
|
||
fxOpacityFix: !0,
|
||
animatePaneSizing: !1,
|
||
children: null,
|
||
containerSelector: "",
|
||
initChildren: !0,
|
||
destroyChildren: !0,
|
||
resizeChildren: !0,
|
||
triggerEventsOnLoad: !1,
|
||
triggerEventsDuringLiveResize: !0,
|
||
onshow_start: null,
|
||
onshow_end: null,
|
||
onhide_start: null,
|
||
onhide_end: null,
|
||
onopen_start: null,
|
||
onopen_end: null,
|
||
onclose_start: null,
|
||
onclose_end: null,
|
||
onresize_start: null,
|
||
onresize_end: null,
|
||
onsizecontent_start: null,
|
||
onsizecontent_end: null,
|
||
onswap_start: null,
|
||
onswap_end: null,
|
||
ondrag_start: null,
|
||
ondrag_end: null
|
||
},
|
||
north: {
|
||
paneSelector: ".ui-layout-north",
|
||
size: "auto",
|
||
resizerCursor: "n-resize",
|
||
customHotkey: ""
|
||
},
|
||
south: {
|
||
paneSelector: ".ui-layout-south",
|
||
size: "auto",
|
||
resizerCursor: "s-resize",
|
||
customHotkey: ""
|
||
},
|
||
east: {
|
||
paneSelector: ".ui-layout-east",
|
||
size: 200,
|
||
resizerCursor: "e-resize",
|
||
customHotkey: ""
|
||
},
|
||
west: {
|
||
paneSelector: ".ui-layout-west",
|
||
size: 200,
|
||
resizerCursor: "w-resize",
|
||
customHotkey: ""
|
||
},
|
||
center: {
|
||
paneSelector: ".ui-layout-center",
|
||
minWidth: 0,
|
||
minHeight: 0
|
||
}
|
||
}, $.layout.optionsMap = {
|
||
layout: "name,instanceKey,stateManagement,effects,inset,zIndexes,errors,zIndex,scrollToBookmarkOnLoad,showErrorMessages,maskPanesEarly,outset,resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay,onresizeall,onresizeall_start,onresizeall_end,onload,onload_start,onload_end,onunload,onunload_start,onunload_end".split(","),
|
||
center: "paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad,showOverflowOnHover,maskContents,maskObjects,liveContentResizing,containerSelector,children,initChildren,resizeChildren,destroyChildren,onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end".split(","),
|
||
noDefault: "paneSelector,resizerCursor,customHotkey".split(",")
|
||
}, $.layout.transformData = function(e, t) {
|
||
var n, i, o, r, s, a, l, c = t ? {
|
||
panes: {},
|
||
center: {}
|
||
} : {};
|
||
if ("object" != typeof e) return c;
|
||
for (i in e) for (n = c, s = e[i], o = i.split("__"), l = o.length - 1, a = 0; l >= a; a++) r = o[a],
|
||
a === l ? n[r] = $.isPlainObject(s) ? $.layout.transformData(s) : s : (n[r] || (n[r] = {}),
|
||
n = n[r]);
|
||
return c;
|
||
}, $.layout.backwardCompatibility = {
|
||
map: {
|
||
applyDefaultStyles: "applyDemoStyles",
|
||
childOptions: "children",
|
||
initChildLayout: "initChildren",
|
||
destroyChildLayout: "destroyChildren",
|
||
resizeChildLayout: "resizeChildren",
|
||
resizeNestedLayout: "resizeChildren",
|
||
resizeWhileDragging: "livePaneResizing",
|
||
resizeContentWhileDragging: "liveContentResizing",
|
||
triggerEventsWhileDragging: "triggerEventsDuringLiveResize",
|
||
maskIframesOnResize: "maskContents",
|
||
useStateCookie: "stateManagement.enabled",
|
||
"cookie.autoLoad": "stateManagement.autoLoad",
|
||
"cookie.autoSave": "stateManagement.autoSave",
|
||
"cookie.keys": "stateManagement.stateKeys",
|
||
"cookie.name": "stateManagement.cookie.name",
|
||
"cookie.domain": "stateManagement.cookie.domain",
|
||
"cookie.path": "stateManagement.cookie.path",
|
||
"cookie.expires": "stateManagement.cookie.expires",
|
||
"cookie.secure": "stateManagement.cookie.secure",
|
||
noRoomToOpenTip: "tips.noRoomToOpen",
|
||
togglerTip_open: "tips.Close",
|
||
togglerTip_closed: "tips.Open",
|
||
resizerTip: "tips.Resize",
|
||
sliderTip: "tips.Slide"
|
||
},
|
||
renameOptions: function(e) {
|
||
function t(t, n) {
|
||
for (var i, o = t.split("."), r = o.length - 1, s = {
|
||
branch: e,
|
||
key: o[r]
|
||
}, a = 0; r > a; a++) i = o[a], s.branch = void 0 == s.branch[i] ? n ? s.branch[i] = {} : {} : s.branch[i];
|
||
return s;
|
||
}
|
||
var n, i, o, r = $.layout.backwardCompatibility.map;
|
||
for (var s in r) n = t(s), o = n.branch[n.key], void 0 !== o && (i = t(r[s], !0),
|
||
i.branch[i.key] = o, delete n.branch[n.key]);
|
||
},
|
||
renameAllOptions: function(e) {
|
||
var t = $.layout.backwardCompatibility.renameOptions;
|
||
return t(e), e.defaults && ("object" != typeof e.panes && (e.panes = {}), $.extend(!0, e.panes, e.defaults),
|
||
delete e.defaults), e.panes && t(e.panes), $.each($.layout.config.allPanes, function(n, i) {
|
||
e[i] && t(e[i]);
|
||
}), e;
|
||
}
|
||
}, $.fn.layout = function(opts) {
|
||
function keyDown(e) {
|
||
if (!e) return !0;
|
||
var t = e.keyCode;
|
||
if (33 > t) return !0;
|
||
var n, i, o, r, s = {
|
||
38: "north",
|
||
40: "south",
|
||
37: "west",
|
||
39: "east"
|
||
}, a = (e.altKey, e.shiftKey), l = e.ctrlKey, c = l && t >= 37 && 40 >= t;
|
||
return c && options[s[t]].enableCursorHotkey ? r = s[t] : (l || a) && $.each(_c.borderPanes, function(e, s) {
|
||
return n = options[s], i = n.customHotkey, o = n.customHotkeyModifier, (a && "SHIFT" == o || l && "CTRL" == o || l && a) && i && t === (isNaN(i) || 9 >= i ? i.toUpperCase().charCodeAt(0) : i) ? (r = s,
|
||
!1) : void 0;
|
||
}), r && $Ps[r] && options[r].closable && !state[r].isHidden ? (toggle(r), e.stopPropagation(),
|
||
e.returnValue = !1, !1) : !0;
|
||
}
|
||
function allowOverflow(e) {
|
||
if (isInitialized()) {
|
||
this && this.tagName && (e = this);
|
||
var t;
|
||
if (isStr(e) ? t = $Ps[e] : $(e).data("layoutRole") ? t = $(e) : $(e).parents().each(function() {
|
||
return $(this).data("layoutRole") ? (t = $(this), !1) : void 0;
|
||
}), t && t.length) {
|
||
var n = t.data("layoutEdge"), i = state[n];
|
||
if (i.cssSaved && resetOverflow(n), i.isSliding || i.isResizing || i.isClosed) return i.cssSaved = !1,
|
||
void 0;
|
||
var o = {
|
||
zIndex: options.zIndexes.resizer_normal + 1
|
||
}, r = {}, s = t.css("overflow"), a = t.css("overflowX"), l = t.css("overflowY");
|
||
"visible" != s && (r.overflow = s, o.overflow = "visible"), a && !a.match(/(visible|auto)/) && (r.overflowX = a,
|
||
o.overflowX = "visible"), l && !l.match(/(visible|auto)/) && (r.overflowY = a, o.overflowY = "visible"),
|
||
i.cssSaved = r, t.css(o), $.each(_c.allPanes, function(e, t) {
|
||
t != n && resetOverflow(t);
|
||
});
|
||
}
|
||
}
|
||
}
|
||
function resetOverflow(e) {
|
||
if (isInitialized()) {
|
||
this && this.tagName && (e = this);
|
||
var t;
|
||
if (isStr(e) ? t = $Ps[e] : $(e).data("layoutRole") ? t = $(e) : $(e).parents().each(function() {
|
||
return $(this).data("layoutRole") ? (t = $(this), !1) : void 0;
|
||
}), t && t.length) {
|
||
var n = t.data("layoutEdge"), i = state[n], o = i.cssSaved || {};
|
||
i.isSliding || i.isResizing || t.css("zIndex", options.zIndexes.pane_normal), t.css(o),
|
||
i.cssSaved = !1;
|
||
}
|
||
}
|
||
}
|
||
var browser = $.layout.browser, _c = $.layout.config, cssW = $.layout.cssWidth, cssH = $.layout.cssHeight, elDims = $.layout.getElementDimensions, styles = $.layout.getElementStyles, evtObj = $.layout.getEventObject, evtPane = $.layout.parsePaneName, options = $.extend(!0, {}, $.layout.defaults), effects = options.effects = $.extend(!0, {}, $.layout.effects), state = {
|
||
id: "layout" + $.now(),
|
||
initialized: !1,
|
||
paneResizing: !1,
|
||
panesSliding: {},
|
||
container: {
|
||
innerWidth: 0,
|
||
innerHeight: 0,
|
||
outerWidth: 0,
|
||
outerHeight: 0,
|
||
layoutWidth: 0,
|
||
layoutHeight: 0
|
||
},
|
||
north: {
|
||
childIdx: 0
|
||
},
|
||
south: {
|
||
childIdx: 0
|
||
},
|
||
east: {
|
||
childIdx: 0
|
||
},
|
||
west: {
|
||
childIdx: 0
|
||
},
|
||
center: {
|
||
childIdx: 0
|
||
}
|
||
}, children = {
|
||
north: null,
|
||
south: null,
|
||
east: null,
|
||
west: null,
|
||
center: null
|
||
}, timer = {
|
||
data: {},
|
||
set: function(e, t, n) {
|
||
timer.clear(e), timer.data[e] = setTimeout(t, n);
|
||
},
|
||
clear: function(e) {
|
||
var t = timer.data;
|
||
t[e] && (clearTimeout(t[e]), delete t[e]);
|
||
}
|
||
}, _log = function(e, t, n) {
|
||
var i = options;
|
||
return (i.showErrorMessages && !n || n && i.showDebugMessages) && $.layout.msg(i.name + " / " + e, t !== !1),
|
||
!1;
|
||
}, _runCallbacks = function(evtName, pane, skipBoundEvents) {
|
||
function g(e) {
|
||
return e;
|
||
}
|
||
var hasPane = pane && isStr(pane), s = hasPane ? state[pane] : state, o = hasPane ? options[pane] : options, lName = options.name, lng = evtName + (evtName.match(/_/) ? "" : "_end"), shrt = lng.match(/_end$/) ? lng.substr(0, lng.length - 4) : "", fn = o[lng] || o[shrt], retVal = "NC", args = [], $P;
|
||
if (hasPane || "boolean" !== $.type(pane) || (skipBoundEvents = pane, pane = ""),
|
||
fn) try {
|
||
isStr(fn) && (fn.match(/,/) ? (args = fn.split(","), fn = eval(args[0])) : fn = eval(fn)),
|
||
$.isFunction(fn) && (retVal = args.length ? g(fn)(args[1]) : hasPane ? g(fn)(pane, $Ps[pane], s, o, lName) : g(fn)(Instance, s, o, lName));
|
||
} catch (ex) {
|
||
_log(options.errors.callbackError.replace(/EVENT/, $.trim((pane || "") + " " + lng)), !1),
|
||
"string" === $.type(ex) && string.length && _log("Exception: " + ex, !1);
|
||
}
|
||
return skipBoundEvents || retVal === !1 || (hasPane ? ($P = $Ps[pane], o = options[pane],
|
||
s = state[pane], $P.triggerHandler("layoutpane" + lng, [ pane, $P, s, o, lName ]),
|
||
shrt && $P.triggerHandler("layoutpane" + shrt, [ pane, $P, s, o, lName ])) : ($N.triggerHandler("layout" + lng, [ Instance, s, o, lName ]),
|
||
shrt && $N.triggerHandler("layout" + shrt, [ Instance, s, o, lName ]))), hasPane && "onresize_end" === evtName && resizeChildren(pane + "", !0),
|
||
retVal;
|
||
}, _fixIframe = function(e) {
|
||
if (!browser.mozilla) {
|
||
var t = $Ps[e];
|
||
"IFRAME" === state[e].tagName ? t.css(_c.hidden).css(_c.visible) : t.find("IFRAME").css(_c.hidden).css(_c.visible);
|
||
}
|
||
}, cssSize = function(e, t) {
|
||
var n = "horz" == _c[e].dir ? cssH : cssW;
|
||
return n($Ps[e], t);
|
||
}, cssMinDims = function(e) {
|
||
var t = $Ps[e], n = _c[e].dir, i = {
|
||
minWidth: 1001 - cssW(t, 1e3),
|
||
minHeight: 1001 - cssH(t, 1e3)
|
||
};
|
||
return "horz" === n && (i.minSize = i.minHeight), "vert" === n && (i.minSize = i.minWidth),
|
||
i;
|
||
}, setOuterWidth = function(e, t, n) {
|
||
var i, o = e;
|
||
isStr(e) ? o = $Ps[e] : e.jquery || (o = $(e)), i = cssW(o, t), o.css({
|
||
width: i
|
||
}), i > 0 ? n && o.data("autoHidden") && o.innerHeight() > 0 && (o.show().data("autoHidden", !1),
|
||
browser.mozilla || o.css(_c.hidden).css(_c.visible)) : n && !o.data("autoHidden") && o.hide().data("autoHidden", !0);
|
||
}, setOuterHeight = function(e, t, n) {
|
||
var i, o = e;
|
||
isStr(e) ? o = $Ps[e] : e.jquery || (o = $(e)), i = cssH(o, t), o.css({
|
||
height: i,
|
||
visibility: "visible"
|
||
}), i > 0 && o.innerWidth() > 0 ? n && o.data("autoHidden") && (o.show().data("autoHidden", !1),
|
||
browser.mozilla || o.css(_c.hidden).css(_c.visible)) : n && !o.data("autoHidden") && o.hide().data("autoHidden", !0);
|
||
}, _parseSize = function(e, t, n) {
|
||
if (n || (n = _c[e].dir), isStr(t) && t.match(/%/) && (t = "100%" === t ? -1 : parseInt(t, 10) / 100),
|
||
0 === t) return 0;
|
||
if (t >= 1) return parseInt(t, 10);
|
||
var i = options, o = 0;
|
||
if ("horz" == n ? o = sC.innerHeight - ($Ps.north ? i.north.spacing_open : 0) - ($Ps.south ? i.south.spacing_open : 0) : "vert" == n && (o = sC.innerWidth - ($Ps.west ? i.west.spacing_open : 0) - ($Ps.east ? i.east.spacing_open : 0)),
|
||
-1 === t) return o;
|
||
if (t > 0) return round(o * t);
|
||
if ("center" == e) return 0;
|
||
var r = "horz" === n ? "height" : "width", s = $Ps[e], a = "height" === r ? $Cs[e] : !1, l = $.layout.showInvisibly(s), c = s.css(r), u = a ? a.css(r) : 0;
|
||
return s.css(r, "auto"), a && a.css(r, "auto"), t = "height" === r ? s.outerHeight() : s.outerWidth(),
|
||
s.css(r, c).css(l), a && a.css(r, u), t;
|
||
}, getPaneSize = function(e, t) {
|
||
var n = $Ps[e], i = options[e], o = state[e], r = t ? i.spacing_open : 0, s = t ? i.spacing_closed : 0;
|
||
return !n || o.isHidden ? 0 : o.isClosed || o.isSliding && t ? s : "horz" === _c[e].dir ? n.outerHeight() + r : n.outerWidth() + r;
|
||
}, setSizeLimits = function(e, t) {
|
||
if (isInitialized()) {
|
||
var n = options[e], i = state[e], o = _c[e], r = o.dir, s = (o.sizeType.toLowerCase(),
|
||
void 0 != t ? t : i.isSliding), a = ($Ps[e], n.spacing_open), l = _c.oppositeEdge[e], c = state[l], u = $Ps[l], d = !u || c.isVisible === !1 || c.isSliding ? 0 : "horz" == r ? u.outerHeight() : u.outerWidth(), h = (!u || c.isHidden ? 0 : options[l][c.isClosed !== !1 ? "spacing_closed" : "spacing_open"]) || 0, p = "horz" == r ? sC.innerHeight : sC.innerWidth, f = cssMinDims("center"), g = "horz" == r ? max(options.center.minHeight, f.minHeight) : max(options.center.minWidth, f.minWidth), m = p - a - (s ? 0 : _parseSize("center", g, r) + d + h), v = i.minSize = max(_parseSize(e, n.minSize), cssMinDims(e).minSize), b = i.maxSize = min(n.maxSize ? _parseSize(e, n.maxSize) : 1e5, m), y = i.resizerPosition = {}, w = sC.inset.top, x = sC.inset.left, C = sC.innerWidth, E = sC.innerHeight, k = n.spacing_open;
|
||
switch (e) {
|
||
case "north":
|
||
y.min = w + v, y.max = w + b;
|
||
break;
|
||
|
||
case "west":
|
||
y.min = x + v, y.max = x + b;
|
||
break;
|
||
|
||
case "south":
|
||
y.min = w + E - b - k, y.max = w + E - v - k;
|
||
break;
|
||
|
||
case "east":
|
||
y.min = x + C - b - k, y.max = x + C - v - k;
|
||
}
|
||
}
|
||
}, calcNewCenterPaneDims = function() {
|
||
var e = {
|
||
top: getPaneSize("north", !0),
|
||
bottom: getPaneSize("south", !0),
|
||
left: getPaneSize("west", !0),
|
||
right: getPaneSize("east", !0),
|
||
width: 0,
|
||
height: 0
|
||
};
|
||
return e.width = sC.innerWidth - e.left - e.right, e.height = sC.innerHeight - e.bottom - e.top,
|
||
e.top += sC.inset.top, e.bottom += sC.inset.bottom, e.left += sC.inset.left, e.right += sC.inset.right,
|
||
e;
|
||
}, getHoverClasses = function(e, t) {
|
||
var n = $(e), i = n.data("layoutRole"), o = n.data("layoutEdge"), r = options[o], s = r[i + "Class"], a = "-" + o, l = "-open", c = "-closed", u = "-sliding", d = "-hover ", h = n.hasClass(s + c) ? c : l, p = h === c ? l : c, f = s + d + (s + a + d) + (s + h + d) + (s + a + h + d);
|
||
return t && (f += s + p + d + (s + a + p + d)), "resizer" == i && n.hasClass(s + u) && (f += s + u + d + (s + a + u + d)),
|
||
$.trim(f);
|
||
}, addHover = function(e, t) {
|
||
var n = $(t || this);
|
||
e && "toggler" === n.data("layoutRole") && e.stopPropagation(), n.addClass(getHoverClasses(n));
|
||
}, removeHover = function(e, t) {
|
||
var n = $(t || this);
|
||
n.removeClass(getHoverClasses(n, !0));
|
||
}, onResizerEnter = function() {
|
||
var e = $(this).data("layoutEdge"), t = state[e];
|
||
t.isClosed || t.isResizing || state.paneResizing || ($.fn.disableSelection && $("body").disableSelection(),
|
||
options.maskPanesEarly && showMasks(e, {
|
||
resizing: !0
|
||
}));
|
||
}, onResizerLeave = function(e, t) {
|
||
var n = t || this, i = $(n).data("layoutEdge"), o = i + "ResizerLeave";
|
||
timer.clear(i + "_openSlider"), timer.clear(o), t ? state.paneResizing || ($.fn.enableSelection && $("body").enableSelection(),
|
||
options.maskPanesEarly && hideMasks()) : timer.set(o, function() {
|
||
onResizerLeave(e, n);
|
||
}, 200);
|
||
}, _create = function() {
|
||
initOptions();
|
||
var e = options, t = state;
|
||
return t.creatingLayout = !0, runPluginCallbacks(Instance, $.layout.onCreate), !1 === _runCallbacks("onload_start") ? "cancel" : (_initContainer(),
|
||
initHotkeys(), $(window).bind("unload." + sID, unload), runPluginCallbacks(Instance, $.layout.onLoad),
|
||
e.initPanes && _initLayoutElements(), delete t.creatingLayout, state.initialized);
|
||
}, isInitialized = function() {
|
||
return state.initialized || state.creatingLayout ? !0 : _initLayoutElements();
|
||
}, _initLayoutElements = function(e) {
|
||
var t = options;
|
||
if (!$N.is(":visible")) return !e && browser.webkit && "BODY" === $N[0].tagName && setTimeout(function() {
|
||
_initLayoutElements(!0);
|
||
}, 50), !1;
|
||
if (!getPane("center").length) return _log(t.errors.centerPaneMissing);
|
||
if (state.creatingLayout = !0, $.extend(sC, elDims($N, t.inset)), initPanes(), t.scrollToBookmarkOnLoad) {
|
||
var n = self.location;
|
||
n.hash && n.replace(n.hash);
|
||
}
|
||
return Instance.hasParentLayout ? t.resizeWithWindow = !1 : t.resizeWithWindow && $(window).bind("resize." + sID, windowResize),
|
||
delete state.creatingLayout, state.initialized = !0, runPluginCallbacks(Instance, $.layout.onReady),
|
||
_runCallbacks("onload_end"), !0;
|
||
}, createChildren = function(e, t) {
|
||
var n = evtPane.call(this, e), i = $Ps[n];
|
||
if (i) {
|
||
var o = $Cs[n], r = state[n], s = options[n], a = options.stateManagement || {}, l = t ? s.children = t : s.children;
|
||
if ($.isPlainObject(l)) l = [ l ]; else if (!l || !$.isArray(l)) return;
|
||
$.each(l, function(e, t) {
|
||
if ($.isPlainObject(t)) {
|
||
var s = t.containerSelector ? i.find(t.containerSelector) : o || i;
|
||
s.each(function() {
|
||
var e = $(this), i = e.data("layout");
|
||
if (!i) {
|
||
if (setInstanceKey({
|
||
container: e,
|
||
options: t
|
||
}, r), a.includeChildren && state.stateData[n]) {
|
||
var o = state.stateData[n].children || {}, s = o[t.instanceKey], l = t.stateManagement || (t.stateManagement = {
|
||
autoLoad: !0
|
||
});
|
||
l.autoLoad === !0 && s && (l.autoSave = !1, l.includeChildren = !0, l.autoLoad = $.extend(!0, {}, s));
|
||
}
|
||
i = e.layout(t), i && refreshChildren(n, i);
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
}, setInstanceKey = function(e, t) {
|
||
var n = e.container, i = e.options, o = i.stateManagement, r = i.instanceKey || n.data("layoutInstanceKey");
|
||
return r || (r = (o && o.cookie ? o.cookie.name : "") || i.name), r = r ? r.replace(/[^\w-]/gi, "_").replace(/_{2,}/g, "_") : "layout" + ++t.childIdx,
|
||
i.instanceKey = r, n.data("layoutInstanceKey", r), r;
|
||
}, refreshChildren = function(e, t) {
|
||
var n, i = $Ps[e], o = children[e], r = state[e];
|
||
$.isPlainObject(o) && ($.each(o, function(e, t) {
|
||
t.destroyed && delete o[e];
|
||
}), $.isEmptyObject(o) && (o = children[e] = null)), t || o || (t = i.data("layout")),
|
||
t && (t.hasParentLayout = !0, n = t.options, setInstanceKey(t, r), o || (o = children[e] = {}),
|
||
o[n.instanceKey] = t.container.data("layout")), Instance[e].children = children[e],
|
||
t || createChildren(e);
|
||
}, windowResize = function() {
|
||
var e = options, t = Number(e.resizeWithWindowDelay);
|
||
10 > t && (t = 100), timer.clear("winResize"), timer.set("winResize", function() {
|
||
timer.clear("winResize"), timer.clear("winResizeRepeater");
|
||
var t = elDims($N, e.inset);
|
||
(t.innerWidth !== sC.innerWidth || t.innerHeight !== sC.innerHeight) && resizeAll();
|
||
}, t), timer.data.winResizeRepeater || setWindowResizeRepeater();
|
||
}, setWindowResizeRepeater = function() {
|
||
var e = Number(options.resizeWithWindowMaxDelay);
|
||
e > 0 && timer.set("winResizeRepeater", function() {
|
||
setWindowResizeRepeater(), resizeAll();
|
||
}, e);
|
||
}, unload = function() {
|
||
_runCallbacks("onunload_start"), runPluginCallbacks(Instance, $.layout.onUnload),
|
||
_runCallbacks("onunload_end");
|
||
}, _initContainer = function() {
|
||
var e, t, n = $N[0], i = $("html"), o = sC.tagName = n.tagName, r = sC.id = n.id, s = sC.className = n.className, a = options, l = a.name, c = "position,margin,padding,border", u = "layoutCSS", d = {}, h = "hidden", p = $N.data("parentLayout"), f = $N.data("layoutEdge"), g = p && f, m = $.layout.cssNum;
|
||
sC.selector = $N.selector.split(".slice")[0], sC.ref = (a.name ? a.name + " layout / " : "") + o + (r ? "#" + r : s ? ".[" + s + "]" : ""),
|
||
sC.isBody = "BODY" === o, g || sC.isBody || (e = $N.closest("." + $.layout.defaults.panes.paneClass),
|
||
p = e.data("parentLayout"), f = e.data("layoutEdge"), g = p && f), $N.data({
|
||
layout: Instance,
|
||
layoutContainer: sID
|
||
}).addClass(a.containerClass);
|
||
var v = {
|
||
destroy: "",
|
||
initPanes: "",
|
||
resizeAll: "resizeAll",
|
||
resize: "resizeAll"
|
||
};
|
||
for (l in v) $N.bind("layout" + l.toLowerCase() + "." + sID, Instance[v[l] || l]);
|
||
g && (Instance.hasParentLayout = !0, p.refreshChildren(f, Instance)), $N.data(u) || (sC.isBody ? ($N.data(u, $.extend(styles($N, c), {
|
||
height: $N.css("height"),
|
||
overflow: $N.css("overflow"),
|
||
overflowX: $N.css("overflowX"),
|
||
overflowY: $N.css("overflowY")
|
||
})), i.data(u, $.extend(styles(i, "padding"), {
|
||
height: "auto",
|
||
overflow: i.css("overflow"),
|
||
overflowX: i.css("overflowX"),
|
||
overflowY: i.css("overflowY")
|
||
}))) : $N.data(u, styles($N, c + ",top,bottom,left,right,width,height,overflow,overflowX,overflowY")));
|
||
try {
|
||
if (d = {
|
||
overflow: h,
|
||
overflowX: h,
|
||
overflowY: h
|
||
}, $N.css(d), a.inset && !$.isPlainObject(a.inset) && (t = parseInt(a.inset, 10) || 0,
|
||
a.inset = {
|
||
top: t,
|
||
bottom: t,
|
||
left: t,
|
||
right: t
|
||
}), sC.isBody) a.outset ? $.isPlainObject(a.outset) || (t = parseInt(a.outset, 10) || 0,
|
||
a.outset = {
|
||
top: t,
|
||
bottom: t,
|
||
left: t,
|
||
right: t
|
||
}) : a.outset = {
|
||
top: m(i, "paddingTop"),
|
||
bottom: m(i, "paddingBottom"),
|
||
left: m(i, "paddingLeft"),
|
||
right: m(i, "paddingRight")
|
||
}, i.css(d).css({
|
||
height: "100%",
|
||
border: "none",
|
||
padding: 0,
|
||
margin: 0
|
||
}), browser.isIE6 ? ($N.css({
|
||
width: "100%",
|
||
height: "100%",
|
||
border: "none",
|
||
padding: 0,
|
||
margin: 0,
|
||
position: "relative"
|
||
}), a.inset || (a.inset = elDims($N).inset)) : ($N.css({
|
||
width: "auto",
|
||
height: "auto",
|
||
margin: 0,
|
||
position: "absolute"
|
||
}), $N.css(a.outset)), $.extend(sC, elDims($N, a.inset)); else {
|
||
var b = $N.css("position");
|
||
b && b.match(/(fixed|absolute|relative)/) || $N.css("position", "relative"), $N.is(":visible") && ($.extend(sC, elDims($N, a.inset)),
|
||
sC.innerHeight < 1 && _log(a.errors.noContainerHeight.replace(/CONTAINER/, sC.ref)));
|
||
}
|
||
m($N, "minWidth") && $N.parent().css("overflowX", "auto"), m($N, "minHeight") && $N.parent().css("overflowY", "auto");
|
||
} catch (y) {}
|
||
}, initHotkeys = function(e) {
|
||
e = e ? e.split(",") : _c.borderPanes, $.each(e, function(e, t) {
|
||
var n = options[t];
|
||
return n.enableCursorHotkey || n.customHotkey ? ($(document).bind("keydown." + sID, keyDown),
|
||
!1) : void 0;
|
||
});
|
||
}, initOptions = function() {
|
||
function e(e) {
|
||
var t = options[e], n = options.panes;
|
||
t.fxSettings || (t.fxSettings = {}), n.fxSettings || (n.fxSettings = {}), $.each([ "_open", "_close", "_size" ], function(i, o) {
|
||
var r = "fxName" + o, s = "fxSpeed" + o, a = "fxSettings" + o, l = t[r] = t[r] || n[r] || t.fxName || n.fxName || "none", c = $.effects && ($.effects[l] || $.effects.effect && $.effects.effect[l]);
|
||
"none" !== l && options.effects[l] && c || (l = t[r] = "none");
|
||
var u = options.effects[l] || {}, d = u.all || null, h = u[e] || null;
|
||
t[s] = t[s] || n[s] || t.fxSpeed || n.fxSpeed || null, t[a] = $.extend(!0, {}, d, h, n.fxSettings, t.fxSettings, n[a], t[a]);
|
||
}), delete t.fxName, delete t.fxSpeed, delete t.fxSettings;
|
||
}
|
||
var t, n, i, o, r, s, a;
|
||
if (opts = $.layout.transformData(opts, !0), opts = $.layout.backwardCompatibility.renameAllOptions(opts),
|
||
!$.isEmptyObject(opts.panes)) {
|
||
for (t = $.layout.optionsMap.noDefault, r = 0, s = t.length; s > r; r++) i = t[r],
|
||
delete opts.panes[i];
|
||
for (t = $.layout.optionsMap.layout, r = 0, s = t.length; s > r; r++) i = t[r],
|
||
delete opts.panes[i];
|
||
}
|
||
t = $.layout.optionsMap.layout;
|
||
var l = $.layout.config.optionRootKeys;
|
||
for (i in opts) o = opts[i], $.inArray(i, l) < 0 && $.inArray(i, t) < 0 && (opts.panes[i] || (opts.panes[i] = $.isPlainObject(o) ? $.extend(!0, {}, o) : o),
|
||
delete opts[i]);
|
||
$.extend(!0, options, opts), $.each(_c.allPanes, function(o, r) {
|
||
if (_c[r] = $.extend(!0, {}, _c.panes, _c[r]), n = options.panes, a = options[r],
|
||
"center" === r) for (t = $.layout.optionsMap.center, o = 0, s = t.length; s > o; o++) i = t[o],
|
||
opts.center[i] || !opts.panes[i] && a[i] || (a[i] = n[i]); else a = options[r] = $.extend(!0, {}, n, a),
|
||
e(r), a.resizerClass || (a.resizerClass = "ui-layout-resizer"), a.togglerClass || (a.togglerClass = "ui-layout-toggler");
|
||
a.paneClass || (a.paneClass = "ui-layout-pane");
|
||
});
|
||
var c = opts.zIndex, u = options.zIndexes;
|
||
c > 0 && (u.pane_normal = c, u.content_mask = max(c + 1, u.content_mask), u.resizer_normal = max(c + 2, u.resizer_normal)),
|
||
delete options.panes;
|
||
}, getPane = function(e) {
|
||
var t = options[e].paneSelector;
|
||
if ("#" === t.substr(0, 1)) return $N.find(t).eq(0);
|
||
var n = $N.children(t).eq(0);
|
||
return n.length ? n : $N.children("form:first").children(t).eq(0);
|
||
}, initPanes = function(e) {
|
||
evtPane(e), $.each(_c.allPanes, function(e, t) {
|
||
addPane(t, !0);
|
||
}), initHandles(), $.each(_c.borderPanes, function(e, t) {
|
||
$Ps[t] && state[t].isVisible && (setSizeLimits(t), makePaneFit(t));
|
||
}), sizeMidPanes("center"), $.each(_c.allPanes, function(e, t) {
|
||
afterInitPane(t);
|
||
});
|
||
}, addPane = function(e, t) {
|
||
if (t || isInitialized()) {
|
||
var n, i, o, r = options[e], s = state[e], a = _c[e], l = a.dir, c = (s.fx, r.spacing_open || 0,
|
||
"center" === e), u = {}, d = $Ps[e];
|
||
if (d ? removePane(e, !1, !0, !1) : $Cs[e] = !1, d = $Ps[e] = getPane(e), !d.length) return $Ps[e] = !1,
|
||
void 0;
|
||
if (!d.data("layoutCSS")) {
|
||
var h = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border";
|
||
d.data("layoutCSS", styles(d, h));
|
||
}
|
||
Instance[e] = {
|
||
name: e,
|
||
pane: $Ps[e],
|
||
content: $Cs[e],
|
||
options: options[e],
|
||
state: state[e],
|
||
children: children[e]
|
||
}, d.data({
|
||
parentLayout: Instance,
|
||
layoutPane: Instance[e],
|
||
layoutEdge: e,
|
||
layoutRole: "pane"
|
||
}).css(a.cssReq).css("zIndex", options.zIndexes.pane_normal).css(r.applyDemoStyles ? a.cssDemo : {}).addClass(r.paneClass + " " + r.paneClass + "-" + e).bind("mouseenter." + sID, addHover).bind("mouseleave." + sID, removeHover);
|
||
var p, f = {
|
||
hide: "",
|
||
show: "",
|
||
toggle: "",
|
||
close: "",
|
||
open: "",
|
||
slideOpen: "",
|
||
slideClose: "",
|
||
slideToggle: "",
|
||
size: "sizePane",
|
||
sizePane: "sizePane",
|
||
sizeContent: "",
|
||
sizeHandles: "",
|
||
enableClosable: "",
|
||
disableClosable: "",
|
||
enableSlideable: "",
|
||
disableSlideable: "",
|
||
enableResizable: "",
|
||
disableResizable: "",
|
||
swapPanes: "swapPanes",
|
||
swap: "swapPanes",
|
||
move: "swapPanes",
|
||
removePane: "removePane",
|
||
remove: "removePane",
|
||
createChildren: "",
|
||
resizeChildren: "",
|
||
resizeAll: "resizeAll",
|
||
resizeLayout: "resizeAll"
|
||
};
|
||
for (p in f) d.bind("layoutpane" + p.toLowerCase() + "." + sID, Instance[f[p] || p]);
|
||
initContent(e, !1), c || (n = s.size = _parseSize(e, r.size), i = _parseSize(e, r.minSize) || 1,
|
||
o = _parseSize(e, r.maxSize) || 1e5, n > 0 && (n = max(min(n, o), i)), s.autoResize = r.autoResize,
|
||
s.isClosed = !1, s.isSliding = !1, s.isResizing = !1, s.isHidden = !1, s.pins || (s.pins = [])),
|
||
s.tagName = d[0].tagName, s.edge = e, s.noRoom = !1, s.isVisible = !0, setPanePosition(e),
|
||
"horz" === l ? u.height = cssH(d, n) : "vert" === l && (u.width = cssW(d, n)), d.css(u),
|
||
"horz" != l && sizeMidPanes(e, !0), state.initialized && (initHandles(e), initHotkeys(e)),
|
||
r.initClosed && r.closable && !r.initHidden ? close(e, !0, !0) : r.initHidden || r.initClosed ? hide(e) : s.noRoom || d.css("display", "block"),
|
||
d.css("visibility", "visible"), r.showOverflowOnHover && d.hover(allowOverflow, resetOverflow),
|
||
state.initialized && afterInitPane(e);
|
||
}
|
||
}, afterInitPane = function(e) {
|
||
var t = $Ps[e], n = state[e], i = options[e];
|
||
t && (t.data("layout") && refreshChildren(e, t.data("layout")), n.isVisible && (state.initialized ? resizeAll() : sizeContent(e),
|
||
i.triggerEventsOnLoad ? _runCallbacks("onresize_end", e) : resizeChildren(e, !0)),
|
||
i.initChildren && i.children && createChildren(e));
|
||
}, setPanePosition = function(e) {
|
||
e = e ? e.split(",") : _c.borderPanes, $.each(e, function(e, t) {
|
||
var n = $Ps[t], i = $Rs[t], o = (options[t], state[t]), r = _c[t].side, s = {};
|
||
if (n) {
|
||
switch (t) {
|
||
case "north":
|
||
s.top = sC.inset.top, s.left = sC.inset.left, s.right = sC.inset.right;
|
||
break;
|
||
|
||
case "south":
|
||
s.bottom = sC.inset.bottom, s.left = sC.inset.left, s.right = sC.inset.right;
|
||
break;
|
||
|
||
case "west":
|
||
s.left = sC.inset.left;
|
||
break;
|
||
|
||
case "east":
|
||
s.right = sC.inset.right;
|
||
break;
|
||
|
||
case "center": }
|
||
n.css(s), i && o.isClosed ? i.css(r, sC.inset[r]) : i && !o.isHidden && i.css(r, sC.inset[r] + getPaneSize(t));
|
||
}
|
||
});
|
||
}, initHandles = function(e) {
|
||
e = e ? e.split(",") : _c.borderPanes, $.each(e, function(e, t) {
|
||
var n = $Ps[t];
|
||
if ($Rs[t] = !1, $Ts[t] = !1, n) {
|
||
var i = options[t], o = state[t], r = (_c[t], "#" === i.paneSelector.substr(0, 1) ? i.paneSelector.substr(1) : ""), s = i.resizerClass, a = i.togglerClass, l = (o.isVisible ? i.spacing_open : i.spacing_closed,
|
||
"-" + t), c = (o.isVisible ? "-open" : "-closed", Instance[t]), u = c.resizer = $Rs[t] = $("<div></div>"), d = c.toggler = i.closable ? $Ts[t] = $("<div></div>") : !1;
|
||
!o.isVisible && i.slidable && u.attr("title", i.tips.Slide).css("cursor", i.sliderCursor),
|
||
u.attr("id", r ? r + "-resizer" : "").data({
|
||
parentLayout: Instance,
|
||
layoutPane: Instance[t],
|
||
layoutEdge: t,
|
||
layoutRole: "resizer"
|
||
}).css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal).css(i.applyDemoStyles ? _c.resizers.cssDemo : {}).addClass(s + " " + s + l).hover(addHover, removeHover).hover(onResizerEnter, onResizerLeave).appendTo($N),
|
||
i.resizerDblClickToggle && u.bind("dblclick." + sID, toggle), d && (d.attr("id", r ? r + "-toggler" : "").data({
|
||
parentLayout: Instance,
|
||
layoutPane: Instance[t],
|
||
layoutEdge: t,
|
||
layoutRole: "toggler"
|
||
}).css(_c.togglers.cssReq).css(i.applyDemoStyles ? _c.togglers.cssDemo : {}).addClass(a + " " + a + l).hover(addHover, removeHover).bind("mouseenter", onResizerEnter).appendTo(u),
|
||
i.togglerContent_open && $("<span>" + i.togglerContent_open + "</span>").data({
|
||
layoutEdge: t,
|
||
layoutRole: "togglerContent"
|
||
}).data("layoutRole", "togglerContent").data("layoutEdge", t).addClass("content content-open").css("display", "none").appendTo(d),
|
||
i.togglerContent_closed && $("<span>" + i.togglerContent_closed + "</span>").data({
|
||
layoutEdge: t,
|
||
layoutRole: "togglerContent"
|
||
}).addClass("content content-closed").css("display", "none").appendTo(d), enableClosable(t)),
|
||
initResizable(t), o.isVisible ? setAsOpen(t) : (setAsClosed(t), bindStartSlidingEvents(t, !0));
|
||
}
|
||
}), sizeHandles();
|
||
}, initContent = function(e, t) {
|
||
if (isInitialized()) {
|
||
var n, i = options[e], o = i.contentSelector, r = Instance[e], s = $Ps[e];
|
||
o && (n = r.content = $Cs[e] = i.findNestedContent ? s.find(o).eq(0) : s.children(o).eq(0)),
|
||
n && n.length ? (n.data("layoutRole", "content"), n.data("layoutCSS") || n.data("layoutCSS", styles(n, "height")),
|
||
n.css(_c.content.cssReq), i.applyDemoStyles && (n.css(_c.content.cssDemo), s.css(_c.content.cssDemoPane)),
|
||
s.css("overflowX").match(/(scroll|auto)/) && s.css("overflow", "hidden"), state[e].content = {},
|
||
t !== !1 && sizeContent(e)) : r.content = $Cs[e] = !1;
|
||
}
|
||
}, initResizable = function(e) {
|
||
var t = $.layout.plugins.draggable;
|
||
e = e ? e.split(",") : _c.borderPanes, $.each(e, function(e, i) {
|
||
var o = options[i];
|
||
if (!t || !$Ps[i] || !o.resizable) return o.resizable = !1, !0;
|
||
var r, s, a = state[i], l = options.zIndexes, c = _c[i], u = "horz" == c.dir ? "top" : "left", d = ($Ps[i],
|
||
$Rs[i]), h = o.resizerClass, p = 0, f = h + "-drag", g = h + "-" + i + "-drag", m = h + "-dragging", v = h + "-" + i + "-dragging", b = h + "-dragging-limit", y = h + "-" + i + "-dragging-limit", w = !1;
|
||
a.isClosed || d.attr("title", o.tips.Resize).css("cursor", o.resizerCursor), d.draggable({
|
||
containment: $N[0],
|
||
axis: "horz" == c.dir ? "y" : "x",
|
||
delay: 0,
|
||
distance: 1,
|
||
grid: o.resizingGrid,
|
||
helper: "clone",
|
||
opacity: o.resizerDragOpacity,
|
||
addClasses: !1,
|
||
zIndex: l.resizer_drag,
|
||
start: function(e, t) {
|
||
return o = options[i], a = state[i], s = o.livePaneResizing, !1 === _runCallbacks("ondrag_start", i) ? !1 : (a.isResizing = !0,
|
||
state.paneResizing = i, timer.clear(i + "_closeSlider"), setSizeLimits(i), r = a.resizerPosition,
|
||
p = t.position[u], d.addClass(f + " " + g), w = !1, $("body").disableSelection(),
|
||
showMasks(i, {
|
||
resizing: !0
|
||
}), void 0);
|
||
},
|
||
drag: function(e, t) {
|
||
w || (t.helper.addClass(m + " " + v).css({
|
||
right: "auto",
|
||
bottom: "auto"
|
||
}).children().css("visibility", "hidden"), w = !0, a.isSliding && $Ps[i].css("zIndex", l.pane_sliding));
|
||
var c = 0;
|
||
t.position[u] < r.min ? (t.position[u] = r.min, c = -1) : t.position[u] > r.max && (t.position[u] = r.max,
|
||
c = 1), c ? (t.helper.addClass(b + " " + y), window.defaultStatus = c > 0 && i.match(/(north|west)/) || 0 > c && i.match(/(south|east)/) ? o.tips.maxSizeWarning : o.tips.minSizeWarning) : (t.helper.removeClass(b + " " + y),
|
||
window.defaultStatus = ""), s && Math.abs(t.position[u] - p) >= o.liveResizingTolerance && (p = t.position[u],
|
||
n(e, t, i));
|
||
},
|
||
stop: function(e, t) {
|
||
$("body").enableSelection(), window.defaultStatus = "", d.removeClass(f + " " + g),
|
||
a.isResizing = !1, state.paneResizing = !1, n(e, t, i, !0);
|
||
}
|
||
});
|
||
});
|
||
var n = function(e, t, n, i) {
|
||
var o, r = t.position, s = _c[n], a = options[n], l = state[n];
|
||
switch (n) {
|
||
case "north":
|
||
o = r.top;
|
||
break;
|
||
|
||
case "west":
|
||
o = r.left;
|
||
break;
|
||
|
||
case "south":
|
||
o = sC.layoutHeight - r.top - a.spacing_open;
|
||
break;
|
||
|
||
case "east":
|
||
o = sC.layoutWidth - r.left - a.spacing_open;
|
||
}
|
||
var c = o - sC.inset[s.side];
|
||
if (i) !1 !== _runCallbacks("ondrag_end", n) && manualSizePane(n, c, !1, !0), hideMasks(!0),
|
||
l.isSliding && showMasks(n, {
|
||
resizing: !0
|
||
}); else {
|
||
if (Math.abs(c - l.size) < a.liveResizingTolerance) return;
|
||
manualSizePane(n, c, !1, !0), sizeMasks();
|
||
}
|
||
};
|
||
}, sizeMask = function() {
|
||
var e = $(this), t = e.data("layoutMask"), n = state[t];
|
||
"IFRAME" == n.tagName && n.isVisible && e.css({
|
||
top: n.offsetTop,
|
||
left: n.offsetLeft,
|
||
width: n.outerWidth,
|
||
height: n.outerHeight
|
||
});
|
||
}, sizeMasks = function() {
|
||
$Ms.each(sizeMask);
|
||
}, showMasks = function(e, t) {
|
||
var n, i, o = _c[e], r = [ "center" ], s = options.zIndexes, a = $.extend({
|
||
objectsOnly: !1,
|
||
animation: !1,
|
||
resizing: !0,
|
||
sliding: state[e].isSliding
|
||
}, t);
|
||
a.resizing && r.push(e), a.sliding && r.push(_c.oppositeEdge[e]), "horz" === o.dir && (r.push("west"),
|
||
r.push("east")), $.each(r, function(e, t) {
|
||
i = state[t], n = options[t], i.isVisible && (n.maskObjects || !a.objectsOnly && n.maskContents) && getMasks(t).each(function() {
|
||
sizeMask.call(this), this.style.zIndex = i.isSliding ? s.pane_sliding + 1 : s.pane_normal + 1,
|
||
this.style.display = "block";
|
||
});
|
||
});
|
||
}, hideMasks = function(e) {
|
||
if (e || !state.paneResizing) $Ms.hide(); else if (!e && !$.isEmptyObject(state.panesSliding)) for (var t, n, i = $Ms.length - 1; i >= 0; i--) n = $Ms.eq(i),
|
||
t = n.data("layoutMask"), options[t].maskObjects || n.hide();
|
||
}, getMasks = function(e) {
|
||
for (var t, n = $([]), i = 0, o = $Ms.length; o > i; i++) t = $Ms.eq(i), t.data("layoutMask") === e && (n = n.add(t));
|
||
return n.length ? n : createMasks(e);
|
||
}, createMasks = function(e) {
|
||
var t, n, i, o, r, s = $Ps[e], a = state[e], l = options[e], c = options.zIndexes, u = $([]);
|
||
if (!l.maskContents && !l.maskObjects) return u;
|
||
for (r = 0; r < (l.maskObjects ? 2 : 1); r++) t = l.maskObjects && 0 == r, n = document.createElement(t ? "iframe" : "div"),
|
||
i = $(n).data("layoutMask", e), n.className = "ui-layout-mask ui-layout-mask-" + e,
|
||
o = n.style, o.display = "block", o.position = "absolute", o.background = "#FFF",
|
||
t && (n.frameborder = 0, n.src = "about:blank", o.opacity = 0, o.filter = "Alpha(Opacity='0')",
|
||
o.border = 0), "IFRAME" == a.tagName ? (o.zIndex = c.pane_normal + 1, $N.append(n)) : (i.addClass("ui-layout-mask-inside-pane"),
|
||
o.zIndex = l.maskZindex || c.content_mask, o.top = 0, o.left = 0, o.width = "100%",
|
||
o.height = "100%", s.append(n)), u = u.add(n), $Ms = $Ms.add(n);
|
||
return u;
|
||
}, destroy = function(e, t) {
|
||
$(window).unbind("." + sID), $(document).unbind("." + sID), "object" == typeof e ? evtPane(e) : t = e,
|
||
$N.clearQueue().removeData("layout").removeData("layoutContainer").removeClass(options.containerClass).unbind("." + sID),
|
||
$Ms.remove(), $.each(_c.allPanes, function(e, n) {
|
||
removePane(n, !1, !0, t);
|
||
});
|
||
var n = "layoutCSS";
|
||
$N.data(n) && !$N.data("layoutRole") && $N.css($N.data(n)).removeData(n), "BODY" === sC.tagName && ($N = $("html")).data(n) && $N.css($N.data(n)).removeData(n),
|
||
runPluginCallbacks(Instance, $.layout.onDestroy), unload();
|
||
for (var i in Instance) i.match(/^(container|options)$/) || delete Instance[i];
|
||
return Instance.destroyed = !0, Instance;
|
||
}, removePane = function(e, t, n, i) {
|
||
if (isInitialized()) {
|
||
var o = evtPane.call(this, e), r = $Ps[o], s = $Cs[o], a = $Rs[o], l = $Ts[o];
|
||
r && $.isEmptyObject(r.data()) && (r = !1), s && $.isEmptyObject(s.data()) && (s = !1),
|
||
a && $.isEmptyObject(a.data()) && (a = !1), l && $.isEmptyObject(l.data()) && (l = !1),
|
||
r && r.stop(!0, !0);
|
||
var c = options[o], u = state[o], d = "layout", h = "layoutCSS", p = children[o], f = $.isPlainObject(p) && !$.isEmptyObject(p), g = void 0 !== i ? i : c.destroyChildren;
|
||
if (f && g && ($.each(p, function(e, t) {
|
||
t.destroyed || t.destroy(!0), t.destroyed && delete p[e];
|
||
}), $.isEmptyObject(p) && (p = children[o] = null, f = !1)), r && t && !f) r.remove(); else if (r && r[0]) {
|
||
var m = c.paneClass, v = m + "-" + o, b = "-open", y = "-sliding", w = "-closed", x = [ m, m + b, m + w, m + y, v, v + b, v + w, v + y ];
|
||
$.merge(x, getHoverClasses(r, !0)), r.removeClass(x.join(" ")).removeData("parentLayout").removeData("layoutPane").removeData("layoutRole").removeData("layoutEdge").removeData("autoHidden").unbind("." + sID),
|
||
f && s ? (s.width(s.width()), $.each(p, function(e, t) {
|
||
t.resizeAll();
|
||
})) : s && s.css(s.data(h)).removeData(h).removeData("layoutRole"), r.data(d) || r.css(r.data(h)).removeData(h);
|
||
}
|
||
l && l.remove(), a && a.remove(), Instance[o] = $Ps[o] = $Cs[o] = $Rs[o] = $Ts[o] = !1,
|
||
u = {
|
||
removed: !0
|
||
}, n || resizeAll();
|
||
}
|
||
}, _hidePane = function(e) {
|
||
var t = $Ps[e], n = options[e], i = t[0].style;
|
||
n.useOffscreenClose ? (t.data(_c.offscreenReset) || t.data(_c.offscreenReset, {
|
||
left: i.left,
|
||
right: i.right
|
||
}), t.css(_c.offscreenCSS)) : t.hide().removeData(_c.offscreenReset);
|
||
}, _showPane = function(e) {
|
||
var t = $Ps[e], n = options[e], i = _c.offscreenCSS, o = t.data(_c.offscreenReset), r = t[0].style;
|
||
t.show().removeData(_c.offscreenReset), n.useOffscreenClose && o && (r.left == i.left && (r.left = o.left),
|
||
r.right == i.right && (r.right = o.right));
|
||
}, hide = function(e, t) {
|
||
if (isInitialized()) {
|
||
var n = evtPane.call(this, e), i = options[n], o = state[n], r = $Ps[n], s = $Rs[n];
|
||
r && !o.isHidden && (state.initialized && !1 === _runCallbacks("onhide_start", n) || (o.isSliding = !1,
|
||
delete state.panesSliding[n], s && s.hide(), !state.initialized || o.isClosed ? (o.isClosed = !0,
|
||
o.isHidden = !0, o.isVisible = !1, state.initialized || _hidePane(n), sizeMidPanes("horz" === _c[n].dir ? "" : "center"),
|
||
(state.initialized || i.triggerEventsOnLoad) && _runCallbacks("onhide_end", n)) : (o.isHiding = !0,
|
||
close(n, !1, t))));
|
||
}
|
||
}, show = function(e, t, n, i) {
|
||
if (isInitialized()) {
|
||
var o = evtPane.call(this, e), r = (options[o], state[o]), s = $Ps[o];
|
||
$Rs[o], s && r.isHidden && !1 !== _runCallbacks("onshow_start", o) && (r.isShowing = !0,
|
||
r.isSliding = !1, delete state.panesSliding[o], t === !1 ? close(o, !0) : open(o, !1, n, i));
|
||
}
|
||
}, toggle = function(e, t) {
|
||
if (isInitialized()) {
|
||
var n = evtObj(e), i = evtPane.call(this, e), o = state[i];
|
||
n && n.stopImmediatePropagation(), o.isHidden ? show(i) : o.isClosed ? open(i, !!t) : close(i);
|
||
}
|
||
}, _closePane = function(e, t) {
|
||
var n = ($Ps[e], state[e]);
|
||
_hidePane(e), n.isClosed = !0, n.isVisible = !1, t && setAsClosed(e);
|
||
}, close = function(e, t, n, i) {
|
||
function o() {
|
||
h.isMoving = !1, bindStartSlidingEvents(r, !0);
|
||
var e = _c.oppositeEdge[r];
|
||
state[e].noRoom && (setSizeLimits(e), makePaneFit(e)), i || !state.initialized && !d.triggerEventsOnLoad || (a || _runCallbacks("onclose_end", r),
|
||
a && _runCallbacks("onshow_end", r), l && _runCallbacks("onhide_end", r));
|
||
}
|
||
var r = evtPane.call(this, e);
|
||
if (!state.initialized && $Ps[r]) return _closePane(r, !0), void 0;
|
||
if (isInitialized()) {
|
||
var s, a, l, c, u = $Ps[r], d = ($Rs[r], $Ts[r], options[r]), h = state[r];
|
||
_c[r], $N.queue(function(e) {
|
||
if (!u || !d.closable && !h.isShowing && !h.isHiding || !t && h.isClosed && !h.isShowing) return e();
|
||
var i = !h.isShowing && !1 === _runCallbacks("onclose_start", r);
|
||
return a = h.isShowing, l = h.isHiding, c = h.isSliding, delete h.isShowing, delete h.isHiding,
|
||
i ? e() : (s = !n && !h.isClosed && "none" != d.fxName_close, h.isMoving = !0, h.isClosed = !0,
|
||
h.isVisible = !1, l ? h.isHidden = !0 : a && (h.isHidden = !1), h.isSliding ? bindStopSlidingEvents(r, !1) : sizeMidPanes("horz" === _c[r].dir ? "" : "center", !1),
|
||
setAsClosed(r), s ? (lockPaneForFX(r, !0), u.hide(d.fxName_close, d.fxSettings_close, d.fxSpeed_close, function() {
|
||
lockPaneForFX(r, !1), h.isClosed && o(), e();
|
||
})) : (_hidePane(r), o(), e()), void 0);
|
||
});
|
||
}
|
||
}, setAsClosed = function(e) {
|
||
if ($Rs[e]) {
|
||
var t = ($Ps[e], $Rs[e]), n = $Ts[e], i = options[e], o = (state[e], _c[e].side), r = i.resizerClass, s = i.togglerClass, a = "-" + e, l = "-open", c = "-sliding", u = "-closed";
|
||
t.css(o, sC.inset[o]).removeClass(r + l + " " + r + a + l).removeClass(r + c + " " + r + a + c).addClass(r + u + " " + r + a + u),
|
||
i.resizable && $.layout.plugins.draggable && t.draggable("disable").removeClass("ui-state-disabled").css("cursor", "default").attr("title", ""),
|
||
n && (n.removeClass(s + l + " " + s + a + l).addClass(s + u + " " + s + a + u).attr("title", i.tips.Open),
|
||
n.children(".content-open").hide(), n.children(".content-closed").css("display", "block")),
|
||
syncPinBtns(e, !1), state.initialized && sizeHandles();
|
||
}
|
||
}, open = function(e, t, n, i) {
|
||
function o() {
|
||
u.isMoving = !1, _fixIframe(a), u.isSliding || sizeMidPanes("vert" == _c[a].dir ? "center" : "", !1),
|
||
setAsOpen(a);
|
||
}
|
||
if (isInitialized()) {
|
||
var r, s, a = evtPane.call(this, e), l = $Ps[a], c = ($Rs[a], $Ts[a], options[a]), u = state[a];
|
||
_c[a], $N.queue(function(e) {
|
||
if (!l || !c.resizable && !c.closable && !u.isShowing || u.isVisible && !u.isSliding) return e();
|
||
if (u.isHidden && !u.isShowing) return e(), show(a, !0), void 0;
|
||
u.autoResize && u.size != c.size ? sizePane(a, c.size, !0, !0, !0) : setSizeLimits(a, t);
|
||
var d = _runCallbacks("onopen_start", a);
|
||
return "abort" === d ? e() : ("NC" !== d && setSizeLimits(a, t), u.minSize > u.maxSize ? (syncPinBtns(a, !1),
|
||
!i && c.tips.noRoomToOpen && alert(c.tips.noRoomToOpen), e()) : (t ? bindStopSlidingEvents(a, !0) : u.isSliding ? bindStopSlidingEvents(a, !1) : c.slidable && bindStartSlidingEvents(a, !1),
|
||
u.noRoom = !1, makePaneFit(a), s = u.isShowing, delete u.isShowing, r = !n && u.isClosed && "none" != c.fxName_open,
|
||
u.isMoving = !0, u.isVisible = !0, u.isClosed = !1, s && (u.isHidden = !1), r ? (lockPaneForFX(a, !0),
|
||
l.show(c.fxName_open, c.fxSettings_open, c.fxSpeed_open, function() {
|
||
lockPaneForFX(a, !1), u.isVisible && o(), e();
|
||
})) : (_showPane(a), o(), e()), void 0));
|
||
});
|
||
}
|
||
}, setAsOpen = function(e, t) {
|
||
var n = $Ps[e], i = $Rs[e], o = $Ts[e], r = options[e], s = state[e], a = _c[e].side, l = r.resizerClass, c = r.togglerClass, u = "-" + e, d = "-open", h = "-closed", p = "-sliding";
|
||
i.css(a, sC.inset[a] + getPaneSize(e)).removeClass(l + h + " " + l + u + h).addClass(l + d + " " + l + u + d),
|
||
s.isSliding ? i.addClass(l + p + " " + l + u + p) : i.removeClass(l + p + " " + l + u + p),
|
||
removeHover(0, i), r.resizable && $.layout.plugins.draggable ? i.draggable("enable").css("cursor", r.resizerCursor).attr("title", r.tips.Resize) : s.isSliding || i.css("cursor", "default"),
|
||
o && (o.removeClass(c + h + " " + c + u + h).addClass(c + d + " " + c + u + d).attr("title", r.tips.Close),
|
||
removeHover(0, o), o.children(".content-closed").hide(), o.children(".content-open").css("display", "block")),
|
||
syncPinBtns(e, !s.isSliding), $.extend(s, elDims(n)), state.initialized && (sizeHandles(),
|
||
sizeContent(e, !0)), !t && (state.initialized || r.triggerEventsOnLoad) && n.is(":visible") && (_runCallbacks("onopen_end", e),
|
||
s.isShowing && _runCallbacks("onshow_end", e), state.initialized && _runCallbacks("onresize_end", e));
|
||
}, slideOpen = function(e) {
|
||
function t() {
|
||
o.isClosed ? o.isMoving || open(i, !0) : bindStopSlidingEvents(i, !0);
|
||
}
|
||
if (isInitialized()) {
|
||
var n = evtObj(e), i = evtPane.call(this, e), o = state[i], r = options[i].slideDelay_open;
|
||
n && n.stopImmediatePropagation(), o.isClosed && n && "mouseenter" === n.type && r > 0 ? timer.set(i + "_openSlider", t, r) : t();
|
||
}
|
||
}, slideClose = function(e) {
|
||
function t() {
|
||
r.isClosed ? bindStopSlidingEvents(i, !1) : r.isMoving || close(i);
|
||
}
|
||
if (isInitialized()) {
|
||
var n = evtObj(e), i = evtPane.call(this, e), o = options[i], r = state[i], s = r.isMoving ? 1e3 : 300;
|
||
if (!r.isClosed && !r.isResizing) if ("click" === o.slideTrigger_close) t(); else {
|
||
if (o.preventQuickSlideClose && r.isMoving) return;
|
||
if (o.preventPrematureSlideClose && n && $.layout.isMouseOverElem(n, $Ps[i])) return;
|
||
n ? timer.set(i + "_closeSlider", t, max(o.slideDelay_close, s)) : t();
|
||
}
|
||
}
|
||
}, slideToggle = function(e) {
|
||
var t = evtPane.call(this, e);
|
||
toggle(t, !0);
|
||
}, lockPaneForFX = function(e, t) {
|
||
var n = $Ps[e], i = state[e], o = options[e], r = options.zIndexes;
|
||
t ? (showMasks(e, {
|
||
animation: !0,
|
||
objectsOnly: !0
|
||
}), n.css({
|
||
zIndex: r.pane_animate
|
||
}), "south" == e ? n.css({
|
||
top: sC.inset.top + sC.innerHeight - n.outerHeight()
|
||
}) : "east" == e && n.css({
|
||
left: sC.inset.left + sC.innerWidth - n.outerWidth()
|
||
})) : (hideMasks(), n.css({
|
||
zIndex: i.isSliding ? r.pane_sliding : r.pane_normal
|
||
}), "south" == e ? n.css({
|
||
top: "auto"
|
||
}) : "east" != e || n.css("left").match(/\-99999/) || n.css({
|
||
left: "auto"
|
||
}), browser.msie && o.fxOpacityFix && "slide" != o.fxName_open && n.css("filter") && 1 == n.css("opacity") && n[0].style.removeAttribute("filter"));
|
||
}, bindStartSlidingEvents = function(e, t) {
|
||
var n = options[e], i = ($Ps[e], $Rs[e]), o = n.slideTrigger_open.toLowerCase();
|
||
!i || t && !n.slidable || (o.match(/mouseover/) ? o = n.slideTrigger_open = "mouseenter" : o.match(/(click|dblclick|mouseenter)/) || (o = n.slideTrigger_open = "click"),
|
||
n.resizerDblClickToggle && o.match(/click/) && i[t ? "unbind" : "bind"]("dblclick." + sID, toggle),
|
||
i[t ? "bind" : "unbind"](o + "." + sID, slideOpen).css("cursor", t ? n.sliderCursor : "default").attr("title", t ? n.tips.Slide : ""));
|
||
}, bindStopSlidingEvents = function(e, t) {
|
||
function n(t) {
|
||
timer.clear(e + "_closeSlider"), t.stopPropagation();
|
||
}
|
||
var i = options[e], o = state[e], r = (_c[e], options.zIndexes), s = i.slideTrigger_close.toLowerCase(), a = t ? "bind" : "unbind", l = $Ps[e], c = $Rs[e];
|
||
timer.clear(e + "_closeSlider"), t ? (o.isSliding = !0, state.panesSliding[e] = !0,
|
||
bindStartSlidingEvents(e, !1)) : (o.isSliding = !1, delete state.panesSliding[e]),
|
||
l.css("zIndex", t ? r.pane_sliding : r.pane_normal), c.css("zIndex", t ? r.pane_sliding + 2 : r.resizer_normal),
|
||
s.match(/(click|mouseleave)/) || (s = i.slideTrigger_close = "mouseleave"), c[a](s, slideClose),
|
||
"mouseleave" === s && (l[a]("mouseleave." + sID, slideClose), c[a]("mouseenter." + sID, n),
|
||
l[a]("mouseenter." + sID, n)), t ? "click" !== s || i.resizable || (c.css("cursor", t ? i.sliderCursor : "default"),
|
||
c.attr("title", t ? i.tips.Close : "")) : timer.clear(e + "_closeSlider");
|
||
}, makePaneFit = function(e, t, n, i) {
|
||
var o = options[e], r = state[e], s = _c[e], a = $Ps[e], l = $Rs[e], c = "vert" === s.dir, u = !1;
|
||
if (("center" === e || c && r.noVerticalRoom) && (u = r.maxHeight >= 0, u && r.noRoom ? (_showPane(e),
|
||
l && l.show(), r.isVisible = !0, r.noRoom = !1, c && (r.noVerticalRoom = !1), _fixIframe(e)) : u || r.noRoom || (_hidePane(e),
|
||
l && l.hide(), r.isVisible = !1, r.noRoom = !0)), "center" === e) ; else if (r.minSize <= r.maxSize) {
|
||
if (u = !0, r.size > r.maxSize) sizePane(e, r.maxSize, n, !0, i); else if (r.size < r.minSize) sizePane(e, r.minSize, n, !0, i); else if (l && r.isVisible && a.is(":visible")) {
|
||
var d = r.size + sC.inset[s.side];
|
||
$.layout.cssNum(l, s.side) != d && l.css(s.side, d);
|
||
}
|
||
r.noRoom && (r.wasOpen && o.closable ? o.autoReopen ? open(e, !1, !0, !0) : r.noRoom = !1 : show(e, r.wasOpen, !0, !0));
|
||
} else r.noRoom || (r.noRoom = !0, r.wasOpen = !r.isClosed && !r.isSliding, r.isClosed || (o.closable ? close(e, !0, !0) : hide(e, !0)));
|
||
}, manualSizePane = function(e, t, n, i, o) {
|
||
if (isInitialized()) {
|
||
var r = evtPane.call(this, e), s = options[r], a = state[r], l = o || s.livePaneResizing && !a.isResizing;
|
||
a.autoResize = !1, sizePane(r, t, n, i, l);
|
||
}
|
||
}, sizePane = function(e, t, n, i, o) {
|
||
function r() {
|
||
for (var e = "width" === f ? d.outerWidth() : d.outerHeight(), i = [ {
|
||
pane: l,
|
||
count: 1,
|
||
target: t,
|
||
actual: e,
|
||
correct: t === e,
|
||
attempt: t,
|
||
cssSize: a
|
||
} ], r = i[0], c = {}, m = "Inaccurate size after resizing the " + l + "-pane."; !(r.correct || (c = {
|
||
pane: l,
|
||
count: r.count + 1,
|
||
target: t
|
||
}, c.attempt = r.actual > t ? max(0, r.attempt - (r.actual - t)) : max(0, r.attempt + (t - r.actual)),
|
||
c.cssSize = cssSize(l, c.attempt), d.css(f, c.cssSize), c.actual = "width" == f ? d.outerWidth() : d.outerHeight(),
|
||
c.correct = t === c.actual, 1 === i.length && (_log(m, !1, !0), _log(r, !1, !0)),
|
||
_log(c, !1, !0), i.length > 3)); ) i.push(c), r = i[i.length - 1];
|
||
u.size = t, $.extend(u, elDims(d)), u.isVisible && d.is(":visible") && (h && h.css(p, t + sC.inset[p]),
|
||
sizeContent(l)), !n && !g && state.initialized && u.isVisible && _runCallbacks("onresize_end", l),
|
||
n || (u.isSliding || sizeMidPanes("horz" == _c[l].dir ? "" : "center", g, o), sizeHandles());
|
||
var v = _c.oppositeEdge[l];
|
||
s > t && state[v].noRoom && (setSizeLimits(v), makePaneFit(v, !1, n)), i.length > 1 && _log(m + "\nSee the Error Console for details.", !0, !0);
|
||
}
|
||
if (isInitialized()) {
|
||
var s, a, l = evtPane.call(this, e), c = options[l], u = state[l], d = $Ps[l], h = $Rs[l], p = _c[l].side, f = _c[l].sizeType.toLowerCase(), g = u.isResizing && !c.triggerEventsDuringLiveResize, m = i !== !0 && c.animatePaneSizing;
|
||
$N.queue(function(e) {
|
||
if (setSizeLimits(l), s = u.size, t = _parseSize(l, t), t = max(t, _parseSize(l, c.minSize)),
|
||
t = min(t, u.maxSize), t < u.minSize) return e(), makePaneFit(l, !1, n), void 0;
|
||
if (!o && t === s) return e();
|
||
if (u.newSize = t, !n && state.initialized && u.isVisible && _runCallbacks("onresize_start", l),
|
||
a = cssSize(l, t), m && d.is(":visible")) {
|
||
var i = $.layout.effects.size[l] || $.layout.effects.size.all, h = c.fxSettings_size.easing || i.easing, p = options.zIndexes, g = {};
|
||
g[f] = a + "px", u.isMoving = !0, d.css({
|
||
zIndex: p.pane_animate
|
||
}).show().animate(g, c.fxSpeed_size, h, function() {
|
||
d.css({
|
||
zIndex: u.isSliding ? p.pane_sliding : p.pane_normal
|
||
}), u.isMoving = !1, delete u.newSize, r(), e();
|
||
});
|
||
} else d.css(f, a), delete u.newSize, d.is(":visible") ? r() : (u.size = t, $.extend(u, elDims(d))),
|
||
e();
|
||
});
|
||
}
|
||
}, sizeMidPanes = function(e, t, n) {
|
||
e = (e ? e : "east,west,center").split(","), $.each(e, function(e, i) {
|
||
if ($Ps[i]) {
|
||
var o = options[i], r = state[i], s = $Ps[i], a = ($Rs[i], !0), l = {}, c = $.layout.showInvisibly(s), u = calcNewCenterPaneDims();
|
||
if ($.extend(r, elDims(s)), "center" === i) {
|
||
if (!n && r.isVisible && u.width === r.outerWidth && u.height === r.outerHeight) return s.css(c),
|
||
!0;
|
||
if ($.extend(r, cssMinDims(i), {
|
||
maxWidth: u.width,
|
||
maxHeight: u.height
|
||
}), l = u, r.newWidth = l.width, r.newHeight = l.height, l.width = cssW(s, l.width),
|
||
l.height = cssH(s, l.height), a = l.width >= 0 && l.height >= 0, !state.initialized && o.minWidth > u.width) {
|
||
var d = o.minWidth - r.outerWidth, h = options.east.minSize || 0, p = options.west.minSize || 0, f = state.east.size, g = state.west.size, m = f, v = g;
|
||
if (d > 0 && state.east.isVisible && f > h && (m = max(f - h, f - d), d -= f - m),
|
||
d > 0 && state.west.isVisible && g > p && (v = max(g - p, g - d), d -= g - v), 0 === d) return f && f != h && sizePane("east", m, !0, !0, n),
|
||
g && g != p && sizePane("west", v, !0, !0, n), sizeMidPanes("center", t, n), s.css(c),
|
||
void 0;
|
||
}
|
||
} else {
|
||
if (r.isVisible && !r.noVerticalRoom && $.extend(r, elDims(s), cssMinDims(i)), !n && !r.noVerticalRoom && u.height === r.outerHeight) return s.css(c),
|
||
!0;
|
||
l.top = u.top, l.bottom = u.bottom, r.newSize = u.height, l.height = cssH(s, u.height),
|
||
r.maxHeight = l.height, a = r.maxHeight >= 0, a || (r.noVerticalRoom = !0);
|
||
}
|
||
if (a ? (!t && state.initialized && _runCallbacks("onresize_start", i), s.css(l),
|
||
"center" !== i && sizeHandles(i), !r.noRoom || r.isClosed || r.isHidden || makePaneFit(i),
|
||
r.isVisible && ($.extend(r, elDims(s)), state.initialized && sizeContent(i))) : !r.noRoom && r.isVisible && makePaneFit(i),
|
||
s.css(c), delete r.newSize, delete r.newWidth, delete r.newHeight, !r.isVisible) return !0;
|
||
if ("center" === i) {
|
||
var b = browser.isIE6 || !browser.boxModel;
|
||
$Ps.north && (b || "IFRAME" == state.north.tagName) && $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)),
|
||
$Ps.south && (b || "IFRAME" == state.south.tagName) && $Ps.south.css("width", cssW($Ps.south, sC.innerWidth));
|
||
}
|
||
!t && state.initialized && _runCallbacks("onresize_end", i);
|
||
}
|
||
});
|
||
}, resizeAll = function(e) {
|
||
var t = sC.innerWidth, n = sC.innerHeight;
|
||
if (evtPane(e), $N.is(":visible")) {
|
||
if (!state.initialized) return _initLayoutElements(), void 0;
|
||
if (e === !0 && $.isPlainObject(options.outset) && $N.css(options.outset), $.extend(sC, elDims($N, options.inset)),
|
||
sC.outerHeight) {
|
||
if (e === !0 && setPanePosition(), !1 === _runCallbacks("onresizeall_start")) return !1;
|
||
var i, o, r;
|
||
sC.innerHeight < n, sC.innerWidth < t, $.each([ "south", "north", "east", "west" ], function(e, t) {
|
||
$Ps[t] && (o = options[t], r = state[t], r.autoResize && r.size != o.size ? sizePane(t, o.size, !0, !0, !0) : (setSizeLimits(t),
|
||
makePaneFit(t, !1, !0, !0)));
|
||
}), sizeMidPanes("", !0, !0), sizeHandles(), $.each(_c.allPanes, function(e, t) {
|
||
i = $Ps[t], i && state[t].isVisible && _runCallbacks("onresize_end", t);
|
||
}), _runCallbacks("onresizeall_end");
|
||
}
|
||
}
|
||
}, resizeChildren = function(e, t) {
|
||
var n = evtPane.call(this, e);
|
||
if (options[n].resizeChildren) {
|
||
t || refreshChildren(n);
|
||
var i = children[n];
|
||
$.isPlainObject(i) && $.each(i, function(e, t) {
|
||
t.destroyed || t.resizeAll();
|
||
});
|
||
}
|
||
}, sizeContent = function(e, t) {
|
||
if (isInitialized()) {
|
||
var n = evtPane.call(this, e);
|
||
n = n ? n.split(",") : _c.allPanes, $.each(n, function(e, n) {
|
||
function i(e) {
|
||
return max(l.css.paddingBottom, parseInt(e.css("marginBottom"), 10) || 0);
|
||
}
|
||
function o() {
|
||
var e = options[n].contentIgnoreSelector, t = s.nextAll().not(".ui-layout-mask").not(e || ":lt(0)"), o = t.filter(":visible"), r = o.filter(":last");
|
||
c = {
|
||
top: s[0].offsetTop,
|
||
height: s.outerHeight(),
|
||
numFooters: t.length,
|
||
hiddenFooters: t.length - o.length,
|
||
spaceBelow: 0
|
||
}, c.spaceAbove = c.top, c.bottom = c.top + c.height, c.spaceBelow = r.length ? r[0].offsetTop + r.outerHeight() - c.bottom + i(r) : i(s);
|
||
}
|
||
var r = $Ps[n], s = $Cs[n], a = options[n], l = state[n], c = l.content;
|
||
if (!r || !s || !r.is(":visible")) return !0;
|
||
if ((s.length || (initContent(n, !1), s)) && !1 !== _runCallbacks("onsizecontent_start", n)) {
|
||
(!l.isMoving && !l.isResizing || a.liveContentResizing || t || void 0 == c.top) && (o(),
|
||
c.hiddenFooters > 0 && "hidden" === r.css("overflow") && (r.css("overflow", "visible"),
|
||
o(), r.css("overflow", "hidden")));
|
||
var u = l.innerHeight - (c.spaceAbove - l.css.paddingTop) - (c.spaceBelow - l.css.paddingBottom);
|
||
s.is(":visible") && c.height == u || (setOuterHeight(s, u, !0), c.height = u), state.initialized && _runCallbacks("onsizecontent_end", n);
|
||
}
|
||
});
|
||
}
|
||
}, sizeHandles = function(e) {
|
||
var t = evtPane.call(this, e);
|
||
t = t ? t.split(",") : _c.borderPanes, $.each(t, function(e, t) {
|
||
var n, i = options[t], o = state[t], r = $Ps[t], s = $Rs[t], a = $Ts[t];
|
||
if (r && s) {
|
||
var l, c, u, d = _c[t].dir, h = o.isClosed ? "_closed" : "_open", p = i["spacing" + h], f = i["togglerAlign" + h], g = i["togglerLength" + h];
|
||
if (0 === p) return s.hide(), void 0;
|
||
if (o.noRoom || o.isHidden || s.show(), "horz" === d ? (l = sC.innerWidth, o.resizerLength = l,
|
||
c = $.layout.cssNum(r, "left"), s.css({
|
||
width: cssW(s, l),
|
||
height: cssH(s, p),
|
||
left: c > -9999 ? c : sC.inset.left
|
||
})) : (l = r.outerHeight(), o.resizerLength = l, s.css({
|
||
height: cssH(s, l),
|
||
width: cssW(s, p),
|
||
top: sC.inset.top + getPaneSize("north", !0)
|
||
})), removeHover(i, s), a) {
|
||
if (0 === g || o.isSliding && i.hideTogglerOnSlide) return a.hide(), void 0;
|
||
if (a.show(), !(g > 0) || "100%" === g || g > l) g = l, u = 0; else if (isStr(f)) switch (f) {
|
||
case "top":
|
||
case "left":
|
||
u = 0;
|
||
break;
|
||
|
||
case "bottom":
|
||
case "right":
|
||
u = l - g;
|
||
break;
|
||
|
||
case "middle":
|
||
case "center":
|
||
default:
|
||
u = round((l - g) / 2);
|
||
} else {
|
||
var m = parseInt(f, 10);
|
||
u = f >= 0 ? m : l - g + m;
|
||
}
|
||
if ("horz" === d) {
|
||
var v = cssW(a, g);
|
||
a.css({
|
||
width: v,
|
||
height: cssH(a, p),
|
||
left: u,
|
||
top: 0
|
||
}), a.children(".content").each(function() {
|
||
n = $(this), n.css("marginLeft", round((v - n.outerWidth()) / 2));
|
||
});
|
||
} else {
|
||
var b = cssH(a, g);
|
||
a.css({
|
||
height: b,
|
||
width: cssW(a, p),
|
||
top: u,
|
||
left: 0
|
||
}), a.children(".content").each(function() {
|
||
n = $(this), n.css("marginTop", round((b - n.outerHeight()) / 2));
|
||
});
|
||
}
|
||
removeHover(0, a);
|
||
}
|
||
state.initialized || !i.initHidden && !o.isHidden || (s.hide(), a && a.hide());
|
||
}
|
||
});
|
||
}, enableClosable = function(e) {
|
||
if (isInitialized()) {
|
||
var t = evtPane.call(this, e), n = $Ts[t], i = options[t];
|
||
n && (i.closable = !0, n.bind("click." + sID, function(e) {
|
||
e.stopPropagation(), toggle(t);
|
||
}).css("visibility", "visible").css("cursor", "pointer").attr("title", state[t].isClosed ? i.tips.Open : i.tips.Close).show());
|
||
}
|
||
}, disableClosable = function(e, t) {
|
||
if (isInitialized()) {
|
||
var n = evtPane.call(this, e), i = $Ts[n];
|
||
i && (options[n].closable = !1, state[n].isClosed && open(n, !1, !0), i.unbind("." + sID).css("visibility", t ? "hidden" : "visible").css("cursor", "default").attr("title", ""));
|
||
}
|
||
}, enableSlidable = function(e) {
|
||
if (isInitialized()) {
|
||
var t = evtPane.call(this, e), n = $Rs[t];
|
||
n && n.data("draggable") && (options[t].slidable = !0, state[t].isClosed && bindStartSlidingEvents(t, !0));
|
||
}
|
||
}, disableSlidable = function(e) {
|
||
if (isInitialized()) {
|
||
var t = evtPane.call(this, e), n = $Rs[t];
|
||
n && (options[t].slidable = !1, state[t].isSliding ? close(t, !1, !0) : (bindStartSlidingEvents(t, !1),
|
||
n.css("cursor", "default").attr("title", ""), removeHover(null, n[0])));
|
||
}
|
||
}, enableResizable = function(e) {
|
||
if (isInitialized()) {
|
||
var t = evtPane.call(this, e), n = $Rs[t], i = options[t];
|
||
n && n.data("draggable") && (i.resizable = !0, n.draggable("enable"), state[t].isClosed || n.css("cursor", i.resizerCursor).attr("title", i.tips.Resize));
|
||
}
|
||
}, disableResizable = function(e) {
|
||
if (isInitialized()) {
|
||
var t = evtPane.call(this, e), n = $Rs[t];
|
||
n && n.data("draggable") && (options[t].resizable = !1, n.draggable("disable").css("cursor", "default").attr("title", ""),
|
||
removeHover(null, n[0]));
|
||
}
|
||
}, swapPanes = function(e, t) {
|
||
function n(e) {
|
||
var t = $Ps[e], n = $Cs[e];
|
||
return t ? {
|
||
pane: e,
|
||
P: t ? t[0] : !1,
|
||
C: n ? n[0] : !1,
|
||
state: $.extend(!0, {}, state[e]),
|
||
options: $.extend(!0, {}, options[e])
|
||
} : !1;
|
||
}
|
||
function i(e, t) {
|
||
if (e) {
|
||
var n, i, o = e.P, r = e.C, s = e.pane, l = _c[t], c = $.extend(!0, {}, state[t]), u = options[t], d = {
|
||
resizerCursor: u.resizerCursor
|
||
};
|
||
$.each("fxName,fxSpeed,fxSettings".split(","), function(e, t) {
|
||
d[t + "_open"] = u[t + "_open"], d[t + "_close"] = u[t + "_close"], d[t + "_size"] = u[t + "_size"];
|
||
}), $Ps[t] = $(o).data({
|
||
layoutPane: Instance[t],
|
||
layoutEdge: t
|
||
}).css(_c.hidden).css(l.cssReq), $Cs[t] = r ? $(r) : !1, options[t] = $.extend(!0, {}, e.options, d),
|
||
state[t] = $.extend(!0, {}, e.state), n = new RegExp(u.paneClass + "-" + s, "g"),
|
||
o.className = o.className.replace(n, u.paneClass + "-" + t), initHandles(t), l.dir != _c[s].dir ? (i = a[t] || 0,
|
||
setSizeLimits(t), i = max(i, state[t].minSize), manualSizePane(t, i, !0, !0)) : $Rs[t].css(l.side, sC.inset[l.side] + (state[t].isVisible ? getPaneSize(t) : 0)),
|
||
e.state.isVisible && !c.isVisible ? setAsOpen(t, !0) : (setAsClosed(t), bindStartSlidingEvents(t, !0)),
|
||
e = null;
|
||
}
|
||
}
|
||
if (isInitialized()) {
|
||
var o = evtPane.call(this, e);
|
||
if (state[o].edge = t, state[t].edge = o, !1 === _runCallbacks("onswap_start", o) || !1 === _runCallbacks("onswap_start", t)) return state[o].edge = o,
|
||
state[t].edge = t, void 0;
|
||
var r = n(o), s = n(t), a = {};
|
||
a[o] = r ? r.state.size : 0, a[t] = s ? s.state.size : 0, $Ps[o] = !1, $Ps[t] = !1,
|
||
state[o] = {}, state[t] = {}, $Ts[o] && $Ts[o].remove(), $Ts[t] && $Ts[t].remove(),
|
||
$Rs[o] && $Rs[o].remove(), $Rs[t] && $Rs[t].remove(), $Rs[o] = $Rs[t] = $Ts[o] = $Ts[t] = !1,
|
||
i(r, t), i(s, o), r = s = a = null, $Ps[o] && $Ps[o].css(_c.visible), $Ps[t] && $Ps[t].css(_c.visible),
|
||
resizeAll(), _runCallbacks("onswap_end", o), _runCallbacks("onswap_end", t);
|
||
}
|
||
}, syncPinBtns = function(e, t) {
|
||
$.layout.plugins.buttons && $.each(state[e].pins, function(n, i) {
|
||
$.layout.buttons.setPinState(Instance, $(i), e, t);
|
||
});
|
||
}, $N = $(this).eq(0);
|
||
if (!$N.length) return _log(options.errors.containerMissing);
|
||
if ($N.data("layoutContainer") && $N.data("layout")) return $N.data("layout");
|
||
var $Ps = {}, $Cs = {}, $Rs = {}, $Ts = {}, $Ms = $([]), sC = state.container, sID = state.id, Instance = {
|
||
options: options,
|
||
state: state,
|
||
container: $N,
|
||
panes: $Ps,
|
||
contents: $Cs,
|
||
resizers: $Rs,
|
||
togglers: $Ts,
|
||
hide: hide,
|
||
show: show,
|
||
toggle: toggle,
|
||
open: open,
|
||
close: close,
|
||
slideOpen: slideOpen,
|
||
slideClose: slideClose,
|
||
slideToggle: slideToggle,
|
||
setSizeLimits: setSizeLimits,
|
||
_sizePane: sizePane,
|
||
sizePane: manualSizePane,
|
||
sizeContent: sizeContent,
|
||
swapPanes: swapPanes,
|
||
showMasks: showMasks,
|
||
hideMasks: hideMasks,
|
||
initContent: initContent,
|
||
addPane: addPane,
|
||
removePane: removePane,
|
||
createChildren: createChildren,
|
||
refreshChildren: refreshChildren,
|
||
enableClosable: enableClosable,
|
||
disableClosable: disableClosable,
|
||
enableSlidable: enableSlidable,
|
||
disableSlidable: disableSlidable,
|
||
enableResizable: enableResizable,
|
||
disableResizable: disableResizable,
|
||
allowOverflow: allowOverflow,
|
||
resetOverflow: resetOverflow,
|
||
destroy: destroy,
|
||
initPanes: isInitialized,
|
||
resizeAll: resizeAll,
|
||
runCallbacks: _runCallbacks,
|
||
hasParentLayout: !1,
|
||
children: children,
|
||
north: !1,
|
||
south: !1,
|
||
west: !1,
|
||
east: !1,
|
||
center: !1
|
||
};
|
||
return "cancel" === _create() ? null : Instance;
|
||
};
|
||
}(jQuery), function(e) {
|
||
e.ui || (e.ui = {}), e.ui.cookie = {
|
||
acceptsCookies: !!navigator.cookieEnabled,
|
||
read: function(t) {
|
||
for (var n, i = document.cookie, o = i ? i.split(";") : [], r = 0, s = o.length; s > r; r++) if (n = e.trim(o[r]).split("="),
|
||
n[0] == t) return decodeURIComponent(n[1]);
|
||
return null;
|
||
},
|
||
write: function(t, n, i) {
|
||
var o = "", r = "", s = !1, a = i || {}, l = a.expires || null, c = e.type(l);
|
||
"date" === c ? r = l : "string" === c && l > 0 && (l = parseInt(l, 10), c = "number"),
|
||
"number" === c && (r = new Date(), l > 0 ? r.setDate(r.getDate() + l) : (r.setFullYear(1970),
|
||
s = !0)), r && (o += ";expires=" + r.toUTCString()), a.path && (o += ";path=" + a.path),
|
||
a.domain && (o += ";domain=" + a.domain), a.secure && (o += ";secure"), document.cookie = t + "=" + (s ? "" : encodeURIComponent(n)) + o;
|
||
},
|
||
clear: function(t) {
|
||
e.ui.cookie.write(t, "", {
|
||
expires: -1
|
||
});
|
||
}
|
||
}, e.cookie || (e.cookie = function(t, n, i) {
|
||
var o = e.ui.cookie;
|
||
if (null === n) o.clear(t); else {
|
||
if (void 0 === n) return o.read(t);
|
||
o.write(t, n, i);
|
||
}
|
||
}), e.layout.plugins.stateManagement = !0, e.layout.config.optionRootKeys.push("stateManagement"),
|
||
e.layout.defaults.stateManagement = {
|
||
enabled: !1,
|
||
autoSave: !0,
|
||
autoLoad: !0,
|
||
animateLoad: !0,
|
||
includeChildren: !0,
|
||
stateKeys: "north.size,south.size,east.size,west.size,north.isClosed,south.isClosed,east.isClosed,west.isClosed,north.isHidden,south.isHidden,east.isHidden,west.isHidden",
|
||
cookie: {
|
||
name: "",
|
||
domain: "",
|
||
path: "",
|
||
expires: "",
|
||
secure: !1
|
||
}
|
||
}, e.layout.optionsMap.layout.push("stateManagement"), e.layout.state = {
|
||
saveCookie: function(t, n, i) {
|
||
var o = t.options, r = o.stateManagement, s = e.extend(!0, {}, r.cookie, i || null), a = t.state.stateData = t.readState(n || r.stateKeys);
|
||
return e.ui.cookie.write(s.name || o.name || "Layout", e.layout.state.encodeJSON(a), s),
|
||
e.extend(!0, {}, a);
|
||
},
|
||
deleteCookie: function(t) {
|
||
var n = t.options;
|
||
e.ui.cookie.clear(n.stateManagement.cookie.name || n.name || "Layout");
|
||
},
|
||
readCookie: function(t) {
|
||
var n = t.options, i = e.ui.cookie.read(n.stateManagement.cookie.name || n.name || "Layout");
|
||
return i ? e.layout.state.decodeJSON(i) : {};
|
||
},
|
||
loadCookie: function(t) {
|
||
var n = e.layout.state.readCookie(t);
|
||
return n && (t.state.stateData = e.extend(!0, {}, n), t.loadState(n)), n;
|
||
},
|
||
loadState: function(t, n, i) {
|
||
if (e.isPlainObject(n) && !e.isEmptyObject(n)) {
|
||
n = t.state.stateData = e.layout.transformData(n);
|
||
var o = t.options.stateManagement;
|
||
if (i = e.extend({
|
||
animateLoad: !1,
|
||
includeChildren: o.includeChildren
|
||
}, i), t.state.initialized) {
|
||
var r, a, l, c, u, d = !i.animateLoad;
|
||
if (e.each(e.layout.config.borderPanes, function(i, o) {
|
||
r = n[o], e.isPlainObject(r) && (s = r.size, a = r.initClosed, l = r.initHidden,
|
||
ar = r.autoResize, c = t.state[o], u = c.isVisible, ar && (c.autoResize = ar), u || t._sizePane(o, s, !1, !1, !1),
|
||
l === !0 ? t.hide(o, d) : a === !0 ? t.close(o, !1, d) : a === !1 ? t.open(o, !1, d) : l === !1 && t.show(o, !1, d),
|
||
u && t._sizePane(o, s, !1, !1, d));
|
||
}), i.includeChildren) {
|
||
var h, p;
|
||
e.each(t.children, function(t, i) {
|
||
h = n[t] ? n[t].children : 0, h && i && e.each(i, function(e, t) {
|
||
p = h[e], t && p && t.loadState(p);
|
||
});
|
||
});
|
||
}
|
||
} else {
|
||
var r = e.extend(!0, {}, n);
|
||
e.each(e.layout.config.allPanes, function(e, t) {
|
||
r[t] && delete r[t].children;
|
||
}), e.extend(!0, t.options, r);
|
||
}
|
||
}
|
||
},
|
||
readState: function(t, n) {
|
||
"string" === e.type(n) && (n = {
|
||
keys: n
|
||
}), n || (n = {});
|
||
var i, o, r, s, a, l, c, u = t.options.stateManagement, d = n.includeChildren, h = void 0 !== d ? d : u.includeChildren, p = n.stateKeys || u.stateKeys, f = {
|
||
isClosed: "initClosed",
|
||
isHidden: "initHidden"
|
||
}, g = t.state, m = e.layout.config.allPanes, v = {};
|
||
e.isArray(p) && (p = p.join(",")), p = p.replace(/__/g, ".").split(",");
|
||
for (var b = 0, y = p.length; y > b; b++) i = p[b].split("."), o = i[0], r = i[1],
|
||
e.inArray(o, m) < 0 || (s = g[o][r], void 0 != s && ("isClosed" == r && g[o].isSliding && (s = !0),
|
||
(v[o] || (v[o] = {}))[f[r] ? f[r] : r] = s));
|
||
return h && e.each(m, function(n, i) {
|
||
l = t.children[i], a = g.stateData[i], e.isPlainObject(l) && !e.isEmptyObject(l) && (c = v[i] || (v[i] = {}),
|
||
c.children || (c.children = {}), e.each(l, function(t, n) {
|
||
n.state.initialized ? c.children[t] = e.layout.state.readState(n) : a && a.children && a.children[t] && (c.children[t] = e.extend(!0, {}, a.children[t]));
|
||
}));
|
||
}), v;
|
||
},
|
||
encodeJSON: function(t) {
|
||
function n(t) {
|
||
var i, o, r, s = [], a = 0, l = e.isArray(t);
|
||
for (i in t) o = t[i], r = typeof o, "string" == r ? o = '"' + o + '"' : "object" == r && (o = n(o)),
|
||
s[a++] = (l ? "" : '"' + i + '":') + o;
|
||
return (l ? "[" : "{") + s.join(",") + (l ? "]" : "}");
|
||
}
|
||
return n(t);
|
||
},
|
||
decodeJSON: function(t) {
|
||
try {
|
||
return e.parseJSON ? e.parseJSON(t) : window.eval("(" + t + ")") || {};
|
||
} catch (n) {
|
||
return {};
|
||
}
|
||
},
|
||
_create: function(t) {
|
||
var n = e.layout.state, i = t.options, o = i.stateManagement;
|
||
if (e.extend(t, {
|
||
readCookie: function() {
|
||
return n.readCookie(t);
|
||
},
|
||
deleteCookie: function() {
|
||
n.deleteCookie(t);
|
||
},
|
||
saveCookie: function(e, i) {
|
||
return n.saveCookie(t, e, i);
|
||
},
|
||
loadCookie: function() {
|
||
return n.loadCookie(t);
|
||
},
|
||
loadState: function(e, i) {
|
||
n.loadState(t, e, i);
|
||
},
|
||
readState: function(e) {
|
||
return n.readState(t, e);
|
||
},
|
||
encodeJSON: n.encodeJSON,
|
||
decodeJSON: n.decodeJSON
|
||
}), t.state.stateData = {}, o.autoLoad) if (e.isPlainObject(o.autoLoad)) e.isEmptyObject(o.autoLoad) || t.loadState(o.autoLoad); else if (o.enabled) if (e.isFunction(o.autoLoad)) {
|
||
var r = {};
|
||
try {
|
||
r = o.autoLoad(t, t.state, t.options, t.options.name || "");
|
||
} catch (s) {}
|
||
r && e.isPlainObject(r) && !e.isEmptyObject(r) && t.loadState(r);
|
||
} else t.loadCookie();
|
||
},
|
||
_unload: function(t) {
|
||
var n = t.options.stateManagement;
|
||
if (n.enabled && n.autoSave) if (e.isFunction(n.autoSave)) try {
|
||
n.autoSave(t, t.state, t.options, t.options.name || "");
|
||
} catch (i) {} else t.saveCookie();
|
||
}
|
||
}, e.layout.onCreate.push(e.layout.state._create), e.layout.onUnload.push(e.layout.state._unload),
|
||
e.layout.plugins.buttons = !0, e.layout.defaults.autoBindCustomButtons = !1, e.layout.optionsMap.layout.push("autoBindCustomButtons"),
|
||
e.layout.buttons = {
|
||
init: function(t) {
|
||
var n, i = "ui-layout-button-", o = t.options.name || "";
|
||
e.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function(r, s) {
|
||
e.each(e.layout.config.borderPanes, function(r, a) {
|
||
e("." + i + s + "-" + a).each(function() {
|
||
n = e(this).data("layoutName") || e(this).attr("layoutName"), (void 0 == n || n === o) && t.bindButton(this, s, a);
|
||
});
|
||
});
|
||
});
|
||
},
|
||
get: function(t, n, i, o) {
|
||
var r = e(n), s = t.options, a = s.errors.addButtonError;
|
||
if (r.length) if (e.inArray(i, e.layout.config.borderPanes) < 0) e.layout.msg(a + " " + s.errors.pane + ": " + i, !0),
|
||
r = e(""); else {
|
||
var l = s[i].buttonClass + "-" + o;
|
||
r.addClass(l + " " + l + "-" + i).data("layoutName", s.name);
|
||
} else e.layout.msg(a + " " + s.errors.selector + ": " + n, !0);
|
||
return r;
|
||
},
|
||
bind: function(t, n, i, o) {
|
||
var r = e.layout.buttons;
|
||
switch (i.toLowerCase()) {
|
||
case "toggle":
|
||
r.addToggle(t, n, o);
|
||
break;
|
||
|
||
case "open":
|
||
r.addOpen(t, n, o);
|
||
break;
|
||
|
||
case "close":
|
||
r.addClose(t, n, o);
|
||
break;
|
||
|
||
case "pin":
|
||
r.addPin(t, n, o);
|
||
break;
|
||
|
||
case "toggle-slide":
|
||
r.addToggle(t, n, o, !0);
|
||
break;
|
||
|
||
case "open-slide":
|
||
r.addOpen(t, n, o, !0);
|
||
}
|
||
return t;
|
||
},
|
||
addToggle: function(t, n, i, o) {
|
||
return e.layout.buttons.get(t, n, i, "toggle").click(function(e) {
|
||
t.toggle(i, !!o), e.stopPropagation();
|
||
}), t;
|
||
},
|
||
addOpen: function(t, n, i, o) {
|
||
return e.layout.buttons.get(t, n, i, "open").attr("title", t.options[i].tips.Open).click(function(e) {
|
||
t.open(i, !!o), e.stopPropagation();
|
||
}), t;
|
||
},
|
||
addClose: function(t, n, i) {
|
||
return e.layout.buttons.get(t, n, i, "close").attr("title", t.options[i].tips.Close).click(function(e) {
|
||
t.close(i), e.stopPropagation();
|
||
}), t;
|
||
},
|
||
addPin: function(t, n, i) {
|
||
var o = e.layout.buttons, r = o.get(t, n, i, "pin");
|
||
if (r.length) {
|
||
var s = t.state[i];
|
||
r.click(function(n) {
|
||
o.setPinState(t, e(this), i, s.isSliding || s.isClosed), s.isSliding || s.isClosed ? t.open(i) : t.close(i),
|
||
n.stopPropagation();
|
||
}), o.setPinState(t, r, i, !s.isClosed && !s.isSliding), s.pins.push(n);
|
||
}
|
||
return t;
|
||
},
|
||
setPinState: function(e, t, n, i) {
|
||
var o = t.attr("pin");
|
||
if (!o || i !== ("down" == o)) {
|
||
var r = e.options[n], s = r.buttonClass + "-pin", a = s + "-" + n, l = s + "-up " + a + "-up", c = s + "-down " + a + "-down";
|
||
t.attr("pin", i ? "down" : "up").attr("title", i ? r.tips.Unpin : r.tips.Pin).removeClass(i ? l : c).addClass(i ? c : l);
|
||
}
|
||
},
|
||
syncPinBtns: function(t, n, i) {
|
||
e.each(t.state[n].pins, function(o, r) {
|
||
e.layout.buttons.setPinState(t, e(r), n, i);
|
||
});
|
||
},
|
||
_load: function(t) {
|
||
var n = e.layout.buttons;
|
||
e.extend(t, {
|
||
bindButton: function(e, i, o) {
|
||
return n.bind(t, e, i, o);
|
||
},
|
||
addToggleBtn: function(e, i, o) {
|
||
return n.addToggle(t, e, i, o);
|
||
},
|
||
addOpenBtn: function(e, i, o) {
|
||
return n.addOpen(t, e, i, o);
|
||
},
|
||
addCloseBtn: function(e, i) {
|
||
return n.addClose(t, e, i);
|
||
},
|
||
addPinBtn: function(e, i) {
|
||
return n.addPin(t, e, i);
|
||
}
|
||
});
|
||
for (var i = 0; 4 > i; i++) {
|
||
var o = e.layout.config.borderPanes[i];
|
||
t.state[o].pins = [];
|
||
}
|
||
t.options.autoBindCustomButtons && n.init(t);
|
||
},
|
||
_unload: function() {}
|
||
}, e.layout.onLoad.push(e.layout.buttons._load), e.layout.plugins.browserZoom = !0,
|
||
e.layout.defaults.browserZoomCheckInterval = 1e3, e.layout.optionsMap.layout.push("browserZoomCheckInterval"),
|
||
e.layout.browserZoom = {
|
||
_init: function(t) {
|
||
e.layout.browserZoom.ratio() !== !1 && e.layout.browserZoom._setTimer(t);
|
||
},
|
||
_setTimer: function(t) {
|
||
if (!t.destroyed) {
|
||
var n = t.options, i = t.state, o = t.hasParentLayout ? 5e3 : Math.max(n.browserZoomCheckInterval, 100);
|
||
setTimeout(function() {
|
||
if (!t.destroyed && n.resizeWithWindow) {
|
||
var o = e.layout.browserZoom.ratio();
|
||
o !== i.browserZoom && (i.browserZoom = o, t.resizeAll()), e.layout.browserZoom._setTimer(t);
|
||
}
|
||
}, o);
|
||
}
|
||
},
|
||
ratio: function() {
|
||
function t(e, t) {
|
||
return (100 * (parseInt(e, 10) / parseInt(t, 10))).toFixed();
|
||
}
|
||
var n, i, o, r = window, s = screen, a = document, l = a.documentElement || a.body, c = e.layout.browser, u = c.version;
|
||
return c.msie && u > 8 || !c.msie ? !1 : s.deviceXDPI && s.systemXDPI ? t(s.deviceXDPI, s.systemXDPI) : c.webkit && (n = a.body.getBoundingClientRect) ? t(n.left - n.right, a.body.offsetWidth) : c.webkit && (i = r.outerWidth) ? t(i, r.innerWidth) : (i = s.width) && (o = l.clientWidth) ? t(i, o) : !1;
|
||
}
|
||
}, e.layout.onReady.push(e.layout.browserZoom._init);
|
||
}(jQuery), define("uilayout", function() {}), function() {
|
||
function e() {}
|
||
function t(e) {
|
||
this.buttonBar = d.getElementById("wmd-button-bar" + e), this.preview = d.getElementById("wmd-preview" + e),
|
||
this.input = d.getElementById("wmd-input" + e);
|
||
}
|
||
function n(e, t) {
|
||
var n, o, r, s = this, a = [], c = 0, u = "none", d = function(e, t) {
|
||
u != e && (u = e, t || p()), g.isIE && "moving" == u ? r = null : o = setTimeout(h, 1);
|
||
}, h = function(e) {
|
||
r = new i(t, e), o = void 0;
|
||
};
|
||
this.setCommandMode = function() {
|
||
u = "command", p(), o = setTimeout(h, 0);
|
||
}, this.canUndo = function() {
|
||
return c > 1;
|
||
}, this.canRedo = function() {
|
||
return a[c + 1] ? !0 : !1;
|
||
}, this.undo = function() {
|
||
s.canUndo() && (n ? (n.restore(), n = null) : (a[c] = new i(t), a[--c].restore(),
|
||
e && e())), u = "none", t.input.focus(), h();
|
||
}, this.redo = function() {
|
||
s.canRedo() && (a[++c].restore(), e && e()), u = "none", t.input.focus(), h();
|
||
};
|
||
var p = function() {
|
||
var o = r || new i(t);
|
||
return o ? "moving" == u ? (n || (n = o), void 0) : (n && (a[c - 1].text != n.text && (a[c++] = n),
|
||
n = null), a[c++] = o, a[c + 1] = null, e && e(), void 0) : !1;
|
||
}, f = function(e) {
|
||
if (!e.ctrlKey && !e.metaKey) {
|
||
var t = e.keyCode;
|
||
t >= 33 && 40 >= t || t >= 63232 && 63235 >= t ? d("moving") : 8 == t || 46 == t || 127 == t ? d("deleting") : 13 == t ? d("newlines") : 27 == t ? d("escape") : (16 > t || t > 20) && 91 != t && d("typing");
|
||
}
|
||
}, m = function() {
|
||
l.addEvent(t.input, "keypress", function(e) {
|
||
!e.ctrlKey && !e.metaKey || e.altKey || 89 != e.keyCode && 90 != e.keyCode || e.preventDefault();
|
||
});
|
||
var e = function() {
|
||
(g.isIE || r && r.text != t.input.value) && void 0 == o && (u = "paste", p(), h());
|
||
};
|
||
l.addEvent(t.input, "keydown", f), l.addEvent(t.input, "mousedown", function() {
|
||
d("moving");
|
||
}), t.input.onpaste = e, t.input.ondrop = e;
|
||
}, v = function() {
|
||
m(), h(!0);
|
||
};
|
||
this.reinit = function(e, t, i, s) {
|
||
a = [], c = 0, u = "none", n = void 0, o = void 0, h(), r.text = e, r.start = t,
|
||
r.end = i, r.scrollTop = s, r.setInputAreaSelection(), p();
|
||
}, this.setMode = d, v();
|
||
}
|
||
function i(t, n) {
|
||
var i = this, o = t.input;
|
||
this.init = function() {
|
||
l.isVisible(o) && (n || !d.activeElement || d.activeElement === o) && (this.setInputAreaSelectionStartEnd(),
|
||
this.scrollTop = o.scrollTop, (!this.text && o.selectionStart || 0 === o.selectionStart) && (this.text = o.value));
|
||
}, this.setInputAreaSelection = function() {
|
||
if (l.isVisible(o)) if (void 0 === o.selectionStart || g.isOpera) {
|
||
if (d.selection) {
|
||
if (d.activeElement && d.activeElement !== o) return;
|
||
o.focus();
|
||
var e = o.createTextRange();
|
||
e.moveStart("character", -o.value.length), e.moveEnd("character", -o.value.length),
|
||
e.moveEnd("character", i.end), e.moveStart("character", i.start), e.select();
|
||
}
|
||
} else o.focus(), o.selectionStart = i.start, o.selectionEnd = i.end, o.scrollTop = i.scrollTop;
|
||
}, this.setInputAreaSelectionStartEnd = function() {
|
||
if (t.ieCachedRange || !o.selectionStart && 0 !== o.selectionStart) {
|
||
if (d.selection) {
|
||
i.text = l.fixEolChars(o.value);
|
||
var e = t.ieCachedRange || d.selection.createRange(), n = l.fixEolChars(e.text), r = "", s = r + n + r;
|
||
e.text = s;
|
||
var a = l.fixEolChars(o.value);
|
||
e.moveStart("character", -s.length), e.text = n, i.start = a.indexOf(r), i.end = a.lastIndexOf(r) - r.length;
|
||
var c = i.text.length - l.fixEolChars(o.value).length;
|
||
if (c) {
|
||
for (e.moveStart("character", -n.length); c--; ) n += "\n", i.end += 1;
|
||
e.text = n;
|
||
}
|
||
t.ieCachedRange && (i.scrollTop = t.ieCachedScrollTop), t.ieCachedRange = null,
|
||
this.setInputAreaSelection();
|
||
}
|
||
} else i.start = o.selectionStart, i.end = o.selectionEnd;
|
||
}, this.restore = function() {
|
||
void 0 != i.text && i.text != o.value && (o.value = i.text), this.setInputAreaSelection(),
|
||
o.scrollTop = i.scrollTop;
|
||
}, this.getChunks = function() {
|
||
var t = new e();
|
||
return t.before = l.fixEolChars(i.text.substring(0, i.start)), t.startTag = "",
|
||
t.selection = l.fixEolChars(i.text.substring(i.start, i.end)), t.endTag = "", t.after = l.fixEolChars(i.text.substring(i.end)),
|
||
t.scrollTop = i.scrollTop, t;
|
||
}, this.setChunks = function(e) {
|
||
e.before = e.before + e.startTag, e.after = e.endTag + e.after, this.start = e.before.length,
|
||
this.end = e.before.length + e.selection.length, this.text = e.before + e.selection + e.after,
|
||
this.scrollTop = e.scrollTop;
|
||
}, this.init();
|
||
}
|
||
function o(e, t, n, i) {
|
||
var o, r, s, a = 3e3, u = "delayed", h = function(e, t) {
|
||
l.addEvent(e, "input", t), e.onpaste = t, e.ondrop = t, l.addEvent(e, "keypress", t),
|
||
l.addEvent(e, "keydown", t);
|
||
}, p = function() {
|
||
var e = 0;
|
||
return window.innerHeight ? e = window.pageYOffset : d.documentElement && d.documentElement.scrollTop ? e = d.documentElement.scrollTop : d.body && (e = d.body.scrollTop),
|
||
e;
|
||
}, f = function() {
|
||
if (t.preview) {
|
||
var n = t.input.value;
|
||
if (!n || n != s) {
|
||
s = n;
|
||
var i = new Date().getTime();
|
||
n = e.makeHtml(n);
|
||
var o = new Date().getTime();
|
||
r = o - i, k(n);
|
||
}
|
||
}
|
||
};
|
||
void 0 !== i && (f = i(f));
|
||
var m = function() {
|
||
if (o && (clearTimeout(o), o = void 0), "manual" !== u) {
|
||
var e = 0;
|
||
"delayed" === u && (e = r), e > a && (e = a), o = setTimeout(f, e);
|
||
}
|
||
}, v = function(e) {
|
||
return e.scrollHeight <= e.clientHeight ? 1 : e.scrollTop / (e.scrollHeight - e.clientHeight);
|
||
}, b = function() {
|
||
t.preview && (t.preview.scrollTop = (t.preview.scrollHeight - t.preview.clientHeight) * v(t.preview));
|
||
};
|
||
this.refresh = function(e) {
|
||
e ? (s = "", f()) : m();
|
||
}, this.processingTime = function() {
|
||
return r;
|
||
};
|
||
var y, w = !0, x = function(e) {
|
||
var n = t.preview, i = n.parentNode, o = n.nextSibling;
|
||
i.removeChild(n), n.innerHTML = e, o ? i.insertBefore(n, o) : i.appendChild(n);
|
||
}, C = function(e) {
|
||
t.preview.innerHTML = e;
|
||
}, E = function(e) {
|
||
if (y) return y(e);
|
||
try {
|
||
C(e), y = C;
|
||
} catch (t) {
|
||
y = x, y(e);
|
||
}
|
||
}, k = function(e) {
|
||
var i = c.getTop(t.input) - p();
|
||
if (t.preview && (E(e), n()), b(), w) return w = !1, void 0;
|
||
var o = c.getTop(t.input) - p();
|
||
g.isIE ? setTimeout(function() {
|
||
window.scrollBy(0, o - i);
|
||
}, 0) : window.scrollBy(0, o - i);
|
||
}, A = function() {
|
||
h(t.input, m), t.preview && (t.preview.scrollTop = 0);
|
||
};
|
||
A();
|
||
}
|
||
function r(e, t, n, o, r, s, a) {
|
||
function c(e) {
|
||
v.focus();
|
||
var r = "wmd-link-button" == e.id || "wmd-image-button" == e.id;
|
||
if (e.textOp) {
|
||
n && !r && n.setCommandMode();
|
||
var s = new i(t);
|
||
if (!s) return;
|
||
var a = s.getChunks(), l = function() {
|
||
v.focus(), a && s.setChunks(a), s.restore(), o.refresh();
|
||
}, c = e.textOp(a, l);
|
||
c || (l(), r || v.dispatchEvent(new Event("input")));
|
||
}
|
||
e.execute && e.execute(n);
|
||
}
|
||
function u(e, n) {
|
||
var i = "0px", o = "-20px", r = "-40px", s = e.getElementsByTagName("span")[0];
|
||
n ? (s.style.backgroundPosition = e.XShift + " " + i, e.onmouseover = function() {
|
||
s.style.backgroundPosition = this.XShift + " " + r;
|
||
}, e.onmouseout = function() {
|
||
s.style.backgroundPosition = this.XShift + " " + i;
|
||
}, g.isIE && (e.onmousedown = function() {
|
||
d.activeElement && d.activeElement !== t.input || (t.ieCachedRange = document.selection.createRange(),
|
||
t.ieCachedScrollTop = t.input.scrollTop);
|
||
}), e.isHelp || (e.onclick = function() {
|
||
return this.onmouseout && this.onmouseout(), c(this), !1;
|
||
}), e.className = e.className.replace(/ disabled/g, "")) : (s.style.backgroundPosition = e.XShift + " " + o,
|
||
e.onmouseover = e.onmouseout = e.onclick = function() {}, e.className += " disabled");
|
||
}
|
||
function h(e) {
|
||
return "string" == typeof e && (e = r[e]), function() {
|
||
e.apply(r, arguments);
|
||
};
|
||
}
|
||
function f() {
|
||
var n = t.buttonBar, i = document.createElement("ul");
|
||
i.id = "wmd-button-row" + e, i.className = "wmd-button-row", i = n.appendChild(i);
|
||
var o = 0, r = function(t, n, r, s) {
|
||
var a = document.createElement("li");
|
||
a.className = "wmd-button", a.style.left = o + "px", o += 25;
|
||
var l = document.createElement("span");
|
||
return a.id = t + e, a.appendChild(l), a.title = n, a.XShift = r, s && (a.textOp = s),
|
||
u(a, !0), i.appendChild(a), a;
|
||
}, l = function(t) {
|
||
var n = document.createElement("li");
|
||
n.className = "wmd-spacer wmd-spacer" + t, n.id = "wmd-spacer" + t + e, i.appendChild(n),
|
||
o += 25;
|
||
};
|
||
b.bold = r("wmd-bold-button", a("bold"), "0px", h("doBold")), b.italic = r("wmd-italic-button", a("italic"), "-20px", h("doItalic")),
|
||
l(1), b.link = r("wmd-link-button", a("link"), "-40px", h(function(e, t) {
|
||
return this.doLinkOrImage(e, t, !1);
|
||
})), b.quote = r("wmd-quote-button", a("quote"), "-60px", h("doBlockquote")), b.code = r("wmd-code-button", a("code"), "-80px", h("doCode")),
|
||
b.image = r("wmd-image-button", a("image"), "-100px", h(function(e, t) {
|
||
return this.doLinkOrImage(e, t, !0);
|
||
})), l(2), b.olist = r("wmd-olist-button", a("olist"), "-120px", h(function(e, t) {
|
||
this.doList(e, t, !0);
|
||
})), b.ulist = r("wmd-ulist-button", a("ulist"), "-140px", h(function(e, t) {
|
||
this.doList(e, t, !1);
|
||
})), b.heading = r("wmd-heading-button", a("heading"), "-160px", h("doHeading")),
|
||
b.hr = r("wmd-hr-button", a("hr"), "-180px", h("doHorizontalRule")), l(3), b.undo = r("wmd-undo-button", a("undo"), "-200px", null),
|
||
b.undo.execute = function(e) {
|
||
e && e.undo();
|
||
};
|
||
var c = /win/.test(p.platform.toLowerCase()) ? a("redo") : a("redomac");
|
||
if (b.redo = r("wmd-redo-button", c, "-220px", null), b.redo.execute = function(e) {
|
||
e && e.redo();
|
||
}, s) {
|
||
var d = document.createElement("li"), f = document.createElement("span");
|
||
d.appendChild(f), d.className = "wmd-button wmd-help-button", d.id = "wmd-help-button" + e,
|
||
d.XShift = "-240px", d.isHelp = !0, d.style.right = "0px", d.title = a("help"),
|
||
d.onclick = s.handler, u(d, !0), i.appendChild(d), b.help = d;
|
||
}
|
||
m();
|
||
}
|
||
function m() {
|
||
n && (u(b.undo, n.canUndo()), u(b.redo, n.canRedo()));
|
||
}
|
||
var v = t.input, b = {};
|
||
f();
|
||
var y = "keydown";
|
||
g.isOpera && (y = "keypress"), l.addEvent(v, y, function(e) {
|
||
if ((e.ctrlKey || e.metaKey) && !e.altKey) {
|
||
var t = e.charCode || e.keyCode, i = String.fromCharCode(t).toLowerCase();
|
||
switch (i) {
|
||
case "b":
|
||
c(b.bold);
|
||
break;
|
||
|
||
case "i":
|
||
c(b.italic);
|
||
break;
|
||
|
||
case "l":
|
||
c(b.link);
|
||
break;
|
||
|
||
case "q":
|
||
c(b.quote);
|
||
break;
|
||
|
||
case "k":
|
||
c(b.code);
|
||
break;
|
||
|
||
case "g":
|
||
c(b.image);
|
||
break;
|
||
|
||
case "o":
|
||
c(b.olist);
|
||
break;
|
||
|
||
case "u":
|
||
c(b.ulist);
|
||
break;
|
||
|
||
case "h":
|
||
c(b.heading);
|
||
break;
|
||
|
||
case "r":
|
||
c(b.hr);
|
||
break;
|
||
|
||
case "y":
|
||
c(b.redo);
|
||
break;
|
||
|
||
case "z":
|
||
e.shiftKey ? c(b.redo) : c(b.undo);
|
||
break;
|
||
|
||
case "v":
|
||
return n.setMode("typing"), void 0;
|
||
|
||
case "x":
|
||
return n.setMode("deleting"), void 0;
|
||
|
||
default:
|
||
return;
|
||
}
|
||
e.preventDefault && e.preventDefault(), window.event && (window.event.returnValue = !1);
|
||
}
|
||
}), l.addEvent(v, "keyup", function(e) {
|
||
if (e.shiftKey && !e.ctrlKey && !e.metaKey) {
|
||
var t = e.charCode || e.keyCode;
|
||
if (13 === t) {
|
||
var n = {};
|
||
n.textOp = h("doAutoindent"), c(n);
|
||
}
|
||
}
|
||
}), g.isIE && l.addEvent(v, "keydown", function(e) {
|
||
var t = e.keyCode;
|
||
return 27 === t ? !1 : void 0;
|
||
}), this.setUndoRedoButtonStates = m, this.buttons = b, this.setButtonState = u;
|
||
}
|
||
function s(e, t) {
|
||
this.hooks = e, this.getString = t;
|
||
}
|
||
function a(e) {
|
||
return e.replace(/^\s*(.*?)(?:\s+"(.+)")?\s*$/, function(e, t, n) {
|
||
return t = t.replace(/\?.*$/, function(e) {
|
||
return e.replace(/\+/g, " ");
|
||
}), t = decodeURIComponent(t), t = encodeURI(t).replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29"),
|
||
t = t.replace(/\?.*$/, function(e) {
|
||
return e.replace(/\+/g, "%2b");
|
||
}), n && (n = n.trim ? n.trim() : n.replace(/^\s*/, "").replace(/\s*$/, ""), n = n.replace(/"/g, "quot;").replace(/\(/g, "(").replace(/\)/g, ")").replace(/</g, "<").replace(/>/g, ">")),
|
||
n ? t + ' "' + n + '"' : t;
|
||
});
|
||
}
|
||
var l = {}, c = {}, u = {}, d = window.document, h = window.RegExp, p = window.navigator, f = {
|
||
lineLength: 72
|
||
}, g = {
|
||
isIE: /msie/.test(p.userAgent.toLowerCase()),
|
||
isIE_5or6: /msie 6/.test(p.userAgent.toLowerCase()) || /msie 5/.test(p.userAgent.toLowerCase()),
|
||
isOpera: /opera/.test(p.userAgent.toLowerCase())
|
||
}, m = {
|
||
bold: "Strong <strong> Ctrl+B",
|
||
boldexample: "strong text",
|
||
italic: "Emphasis <em> Ctrl+I",
|
||
italicexample: "emphasized text",
|
||
link: "Hyperlink <a> Ctrl+L",
|
||
linkdescription: "enter link description here",
|
||
linkdialog: '<p><b>Insert Hyperlink</b></p><p>http://example.com/ "optional title"</p>',
|
||
quote: "Blockquote <blockquote> Ctrl+Q",
|
||
quoteexample: "Blockquote",
|
||
code: "Code Sample <pre><code> Ctrl+K",
|
||
codeexample: "enter code here",
|
||
image: "Image <img> Ctrl+G",
|
||
imagedescription: "enter image description here",
|
||
imagedialog: "<p><b>Insert Image</b></p><p>http://example.com/images/diagram.jpg \"optional title\"<br><br>Need <a href='http://www.google.com/search?q=free+image+hosting' target='_blank'>free image hosting?</a></p>",
|
||
olist: "Numbered List <ol> Ctrl+O",
|
||
ulist: "Bulleted List <ul> Ctrl+U",
|
||
litem: "List item",
|
||
heading: "Heading <h1>/<h2> Ctrl+H",
|
||
headingexample: "Heading",
|
||
hr: "Horizontal Rule <hr> Ctrl+R",
|
||
undo: "Undo - Ctrl+Z",
|
||
redo: "Redo - Ctrl+Y",
|
||
redomac: "Redo - Ctrl+Shift+Z",
|
||
help: "Markdown Editing Help"
|
||
}, v = "http://", b = "http://";
|
||
Markdown.EditorLight = function(e, i, a) {
|
||
a = a || {}, "function" == typeof a.handler && (a = {
|
||
helpButton: a
|
||
}), a.strings = a.strings || {}, a.helpButton && (a.strings.help = a.strings.help || a.helpButton.title);
|
||
var l = function(e) {
|
||
return a.strings[e] || m[e];
|
||
};
|
||
i = i || "";
|
||
var c = this.hooks = new Markdown.HookCollection();
|
||
c.addNoop("onPreviewRefresh"), c.addNoop("postBlockquoteCreation"), c.addFalse("insertImageDialog"),
|
||
c.addFalse("insertLinkDialog"), this.getConverter = function() {
|
||
return e;
|
||
};
|
||
var u, h, p = this;
|
||
this.run = function(f) {
|
||
if (!u) {
|
||
u = new t(i);
|
||
var g, m = new s(c, l), v = new o(e, u, function() {
|
||
c.onPreviewRefresh();
|
||
}, f);
|
||
/\?noundo/.test(d.location.href) || (h = new n(function() {
|
||
v.refresh(), g && g.setUndoRedoButtonStates();
|
||
}, u), this.textOperation = function(e) {
|
||
h.setCommandMode(), e(), p.refreshPreview();
|
||
}), g = new r(i, u, h, v, m, a.helpButton, l), g.setUndoRedoButtonStates(), p.refreshPreview = function() {
|
||
v.refresh(!0);
|
||
}, p.undoManager = h, p.uiManager = g;
|
||
}
|
||
};
|
||
}, e.prototype.findTags = function(e, t) {
|
||
var n, i = this;
|
||
e && (n = l.extendRegExp(e, "", "$"), this.before = this.before.replace(n, function(e) {
|
||
return i.startTag = i.startTag + e, "";
|
||
}), n = l.extendRegExp(e, "^", ""), this.selection = this.selection.replace(n, function(e) {
|
||
return i.startTag = i.startTag + e, "";
|
||
})), t && (n = l.extendRegExp(t, "", "$"), this.selection = this.selection.replace(n, function(e) {
|
||
return i.endTag = e + i.endTag, "";
|
||
}), n = l.extendRegExp(t, "^", ""), this.after = this.after.replace(n, function(e) {
|
||
return i.endTag = e + i.endTag, "";
|
||
}));
|
||
}, e.prototype.trimWhitespace = function(e) {
|
||
var t, n, i = this;
|
||
e ? t = n = "" : (t = function(e) {
|
||
return i.before += e, "";
|
||
}, n = function(e) {
|
||
return i.after = e + i.after, "";
|
||
}), this.selection = this.selection.replace(/^(\s*)/, t).replace(/(\s*)$/, n);
|
||
}, e.prototype.skipLines = function(e, t, n) {
|
||
void 0 === e && (e = 1), void 0 === t && (t = 1), e++, t++;
|
||
var i, o;
|
||
if (navigator.userAgent.match(/Chrome/) && "X".match(/()./), this.selection = this.selection.replace(/(^\n*)/, ""),
|
||
this.startTag = this.startTag + h.$1, this.selection = this.selection.replace(/(\n*$)/, ""),
|
||
this.endTag = this.endTag + h.$1, this.startTag = this.startTag.replace(/(^\n*)/, ""),
|
||
this.before = this.before + h.$1, this.endTag = this.endTag.replace(/(\n*$)/, ""),
|
||
this.after = this.after + h.$1, this.before) {
|
||
for (i = o = ""; e--; ) i += "\\n?", o += "\n";
|
||
n && (i = "\\n*"), this.before = this.before.replace(new h(i + "$", ""), o);
|
||
}
|
||
if (this.after) {
|
||
for (i = o = ""; t--; ) i += "\\n?", o += "\n";
|
||
n && (i = "\\n*"), this.after = this.after.replace(new h(i, ""), o);
|
||
}
|
||
}, l.isVisible = function(e) {
|
||
return window.getComputedStyle ? "none" !== window.getComputedStyle(e, null).getPropertyValue("display") : e.currentStyle ? "none" !== e.currentStyle.display : void 0;
|
||
}, l.addEvent = function(e, t, n) {
|
||
e.attachEvent ? e.attachEvent("on" + t, n) : e.addEventListener(t, n, !1);
|
||
}, l.removeEvent = function(e, t, n) {
|
||
e.detachEvent ? e.detachEvent("on" + t, n) : e.removeEventListener(t, n, !1);
|
||
}, l.fixEolChars = function(e) {
|
||
return e = e.replace(/\r\n/g, "\n"), e = e.replace(/\r/g, "\n");
|
||
}, l.extendRegExp = function(e, t, n) {
|
||
(null === t || void 0 === t) && (t = ""), (null === n || void 0 === n) && (n = "");
|
||
var i, o = e.toString();
|
||
return o = o.replace(/\/([gim]*)$/, function(e, t) {
|
||
return i = t, "";
|
||
}), o = o.replace(/(^\/|\/$)/g, ""), o = t + o + n, new h(o, i);
|
||
}, c.getTop = function(e, t) {
|
||
var n = e.offsetTop;
|
||
if (!t) for (;e = e.offsetParent; ) n += e.offsetTop;
|
||
return n;
|
||
}, c.getHeight = function(e) {
|
||
return e.offsetHeight || e.scrollHeight;
|
||
}, c.getWidth = function(e) {
|
||
return e.offsetWidth || e.scrollWidth;
|
||
}, c.getPageSize = function() {
|
||
var e, t, n, i;
|
||
self.innerHeight && self.scrollMaxY ? (e = d.body.scrollWidth, t = self.innerHeight + self.scrollMaxY) : d.body.scrollHeight > d.body.offsetHeight ? (e = d.body.scrollWidth,
|
||
t = d.body.scrollHeight) : (e = d.body.offsetWidth, t = d.body.offsetHeight), self.innerHeight ? (n = self.innerWidth,
|
||
i = self.innerHeight) : d.documentElement && d.documentElement.clientHeight ? (n = d.documentElement.clientWidth,
|
||
i = d.documentElement.clientHeight) : d.body && (n = d.body.clientWidth, i = d.body.clientHeight);
|
||
var o = Math.max(e, n), r = Math.max(t, i);
|
||
return [ o, r, n, i ];
|
||
}, u.createBackground = function() {
|
||
var e = d.createElement("div"), t = e.style;
|
||
e.className = "wmd-prompt-background", t.position = "absolute", t.top = "0", t.zIndex = "1000",
|
||
g.isIE ? t.filter = "alpha(opacity=50)" : t.opacity = "0.5";
|
||
var n = c.getPageSize();
|
||
return t.height = n[1] + "px", g.isIE ? (t.left = d.documentElement.scrollLeft,
|
||
t.width = d.documentElement.clientWidth) : (t.left = "0", t.width = "100%"), d.body.appendChild(e),
|
||
e;
|
||
}, u.prompt = function(e, t, n) {
|
||
var i, o;
|
||
void 0 === t && (t = "");
|
||
var r = function(e) {
|
||
var t = e.charCode || e.keyCode;
|
||
27 === t && s(!0);
|
||
}, s = function(e) {
|
||
l.removeEvent(d.body, "keydown", r);
|
||
var t = o.value;
|
||
return e ? t = null : (t = t.replace(/^http:\/\/(https?|ftp):\/\//, "$1://"), /^(?:https?|ftp):\/\//.test(t) || (t = "http://" + t)),
|
||
i.parentNode.removeChild(i), n(t), !1;
|
||
}, a = function() {
|
||
i = d.createElement("div"), i.className = "wmd-prompt-dialog", i.style.padding = "10px;",
|
||
i.style.position = "fixed", i.style.width = "400px", i.style.zIndex = "1001";
|
||
var n = d.createElement("div");
|
||
n.innerHTML = e, n.style.padding = "5px", i.appendChild(n);
|
||
var a = d.createElement("form"), u = a.style;
|
||
a.onsubmit = function() {
|
||
return s(!1);
|
||
}, u.padding = "0", u.margin = "0", u.cssFloat = "left", u.width = "100%", u.textAlign = "center",
|
||
u.position = "relative", i.appendChild(a), o = d.createElement("input"), o.type = "text",
|
||
o.value = t, u = o.style, u.display = "block", u.width = "80%", u.marginLeft = u.marginRight = "auto",
|
||
a.appendChild(o);
|
||
var h = d.createElement("input");
|
||
h.type = "button", h.onclick = function() {
|
||
return s(!1);
|
||
}, h.value = "OK", u = h.style, u.margin = "10px", u.display = "inline", u.width = "7em";
|
||
var p = d.createElement("input");
|
||
p.type = "button", p.onclick = function() {
|
||
return s(!0);
|
||
}, p.value = "Cancel", u = p.style, u.margin = "10px", u.display = "inline", u.width = "7em",
|
||
a.appendChild(h), a.appendChild(p), l.addEvent(d.body, "keydown", r), i.style.top = "50%",
|
||
i.style.left = "50%", i.style.display = "block", g.isIE_5or6 && (i.style.position = "absolute",
|
||
i.style.top = d.documentElement.scrollTop + 200 + "px", i.style.left = "50%"), d.body.appendChild(i),
|
||
i.style.marginTop = -(c.getHeight(i) / 2) + "px", i.style.marginLeft = -(c.getWidth(i) / 2) + "px";
|
||
};
|
||
setTimeout(function() {
|
||
a();
|
||
var e = t.length;
|
||
if (void 0 !== o.selectionStart) o.selectionStart = 0, o.selectionEnd = e; else if (o.createTextRange) {
|
||
var n = o.createTextRange();
|
||
n.collapse(!1), n.moveStart("character", -e), n.moveEnd("character", e), n.select();
|
||
}
|
||
o.focus();
|
||
}, 0);
|
||
};
|
||
var y = s.prototype;
|
||
y.prefixes = "(?:\\s{4,}|\\s*>|\\s*-\\s+|\\s*\\d+\\.|=|\\+|-|_|\\*|#|\\s*\\[[^\n]]+\\]:)",
|
||
y.unwrap = function(e) {
|
||
var t = new h("([^\\n])\\n(?!(\\n|" + this.prefixes + "))", "g");
|
||
e.selection = e.selection.replace(t, "$1 $2");
|
||
}, y.wrap = function(e, t) {
|
||
this.unwrap(e);
|
||
var n = new h("(.{1," + t + "})( +|$\\n?)", "gm"), i = this;
|
||
e.selection = e.selection.replace(n, function(e, t) {
|
||
return new h("^" + i.prefixes, "").test(e) ? e : t + "\n";
|
||
}), e.selection = e.selection.replace(/\s+$/, "");
|
||
}, y.doBold = function(e, t) {
|
||
return this.doBorI(e, t, 2, this.getString("boldexample"));
|
||
}, y.doItalic = function(e, t) {
|
||
return this.doBorI(e, t, 1, this.getString("italicexample"));
|
||
}, y.doBorI = function(e, t, n, i) {
|
||
e.trimWhitespace(), e.selection = e.selection.replace(/\n{2,}/g, "\n");
|
||
var o = /(\**$)/.exec(e.before)[0], r = /(^\**)/.exec(e.after)[0], s = Math.min(o.length, r.length);
|
||
if (s >= n && (2 != s || 1 != n)) e.before = e.before.replace(h("[*]{" + n + "}$", ""), ""),
|
||
e.after = e.after.replace(h("^[*]{" + n + "}", ""), ""); else if (!e.selection && r) {
|
||
e.after = e.after.replace(/^([*_]*)/, ""), e.before = e.before.replace(/(\s?)$/, "");
|
||
var a = h.$1;
|
||
e.before = e.before + r + a;
|
||
} else {
|
||
e.selection || r || (e.selection = i);
|
||
var l = 1 >= n ? "*" : "**";
|
||
e.before = e.before + l, e.after = l + e.after;
|
||
}
|
||
}, y.stripLinkDefs = function(e, t) {
|
||
return e = e.replace(/^[ ]{0,3}\[(\d+)\]:[ \t]*\n?[ \t]*<?(\S+?)>?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|$)/gm, function(e, n, i, o, r) {
|
||
return t[n] = e.replace(/\s*$/, ""), o ? (t[n] = e.replace(/["(](.+?)[")]$/, ""),
|
||
o + r) : "";
|
||
});
|
||
}, y.addLinkDef = function(e, t) {
|
||
var n = 0, i = {};
|
||
e.before = this.stripLinkDefs(e.before, i), e.selection = this.stripLinkDefs(e.selection, i),
|
||
e.after = this.stripLinkDefs(e.after, i);
|
||
var o = "", r = /(\[)((?:\[[^\]]*\]|[^\[\]])*)(\][ ]?(?:\n[ ]*)?\[)(\d+)(\])/g, s = function(e) {
|
||
n++, e = e.replace(/^[ ]{0,3}\[(\d+)\]:/, " [" + n + "]:"), o += "\n" + e;
|
||
}, a = function(e, t, o, l, c, u) {
|
||
return o = o.replace(r, a), i[c] ? (s(i[c]), t + o + l + n + u) : e;
|
||
};
|
||
e.before = e.before.replace(r, a), t ? s(t) : e.selection = e.selection.replace(r, a);
|
||
var l = n;
|
||
return e.after = e.after.replace(r, a), e.after && (e.after = e.after.replace(/\n*$/, "")),
|
||
e.after || (e.selection = e.selection.replace(/\n*$/, "")), e.after += "\n\n" + o,
|
||
l;
|
||
}, y.doLinkOrImage = function(e, t, n) {
|
||
e.trimWhitespace(), e.findTags(/\s*!?\[/, /\][ ]?(?:\n[ ]*)?(\[.*?\])?/);
|
||
var i;
|
||
if (!(e.endTag.length > 1 && e.startTag.length > 0)) {
|
||
if (e.selection = e.startTag + e.selection + e.endTag, e.startTag = e.endTag = "",
|
||
/\n\n/.test(e.selection)) return this.addLinkDef(e, null), void 0;
|
||
var o = this, r = function(r) {
|
||
if (i.parentNode.removeChild(i), null !== r) {
|
||
e.selection = (" " + e.selection).replace(/([^\\](?:\\\\)*)(?=[[\]])/g, "$1\\").substr(1);
|
||
var s = " [999]: " + a(r), l = o.addLinkDef(e, s);
|
||
e.startTag = n ? "![" : "[", e.endTag = "][" + l + "]", e.selection || (e.selection = n ? o.getString("imagedescription") : o.getString("linkdescription"));
|
||
}
|
||
t();
|
||
};
|
||
return i = u.createBackground(), n ? this.hooks.insertImageDialog(r) || u.prompt(this.getString("imagedialog"), v, r) : this.hooks.insertLinkDialog(r) || u.prompt(this.getString("linkdialog"), b, r),
|
||
!0;
|
||
}
|
||
e.startTag = e.startTag.replace(/!?\[/, ""), e.endTag = "", this.addLinkDef(e, null);
|
||
}, y.doAutoindent = function(e) {
|
||
var t = this, n = !1;
|
||
e.before = e.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/, "\n\n"), e.before = e.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/, "\n\n"),
|
||
e.before = e.before.replace(/(\n|^)[ \t]+\n$/, "\n\n"), e.selection || /^[ \t]*(?:\n|$)/.test(e.after) || (e.after = e.after.replace(/^[^\n]*/, function(t) {
|
||
return e.selection = t, "";
|
||
}), n = !0), /(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(e.before) && t.doList && t.doList(e),
|
||
/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(e.before) && t.doBlockquote && t.doBlockquote(e),
|
||
/(\n|^)(\t|[ ]{4,}).*\n$/.test(e.before) && t.doCode && t.doCode(e), n && (e.after = e.selection + e.after,
|
||
e.selection = "");
|
||
}, y.doBlockquote = function(e) {
|
||
e.selection = e.selection.replace(/^(\n*)([^\r]+?)(\n*)$/, function(t, n, i, o) {
|
||
return e.before += n, e.after = o + e.after, i;
|
||
}), e.before = e.before.replace(/(>[ \t]*)$/, function(t, n) {
|
||
return e.selection = n + e.selection, "";
|
||
}), e.selection = e.selection.replace(/^(\s|>)+$/, ""), e.selection = e.selection || this.getString("quoteexample");
|
||
var t, n = "", i = "";
|
||
if (e.before) {
|
||
for (var o = e.before.replace(/\n$/, "").split("\n"), r = !1, s = 0; s < o.length; s++) {
|
||
var a = !1;
|
||
t = o[s], r = r && t.length > 0, /^>/.test(t) ? (a = !0, !r && t.length > 1 && (r = !0)) : a = /^[ \t]*$/.test(t) ? !0 : r,
|
||
a ? n += t + "\n" : (i += n + t, n = "\n");
|
||
}
|
||
/(^|\n)>/.test(n) || (i += n, n = "");
|
||
}
|
||
e.startTag = n, e.before = i, e.after && (e.after = e.after.replace(/^\n?/, "\n")),
|
||
e.after = e.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/, function(t) {
|
||
return e.endTag = t, "";
|
||
});
|
||
var l = function(t) {
|
||
var n = t ? "> " : "";
|
||
e.startTag && (e.startTag = e.startTag.replace(/\n((>|\s)*)\n$/, function(e, t) {
|
||
return "\n" + t.replace(/^[ ]{0,3}>?[ \t]*$/gm, n) + "\n";
|
||
})), e.endTag && (e.endTag = e.endTag.replace(/^\n((>|\s)*)\n/, function(e, t) {
|
||
return "\n" + t.replace(/^[ ]{0,3}>?[ \t]*$/gm, n) + "\n";
|
||
}));
|
||
};
|
||
/^(?![ ]{0,3}>)/m.test(e.selection) ? (this.wrap(e, f.lineLength - 2), e.selection = e.selection.replace(/^/gm, "> "),
|
||
l(!0), e.skipLines()) : (e.selection = e.selection.replace(/^[ ]{0,3}> ?/gm, ""),
|
||
this.unwrap(e), l(!1), !/^(\n|^)[ ]{0,3}>/.test(e.selection) && e.startTag && (e.startTag = e.startTag.replace(/\n{0,2}$/, "\n\n")),
|
||
!/(\n|^)[ ]{0,3}>.*$/.test(e.selection) && e.endTag && (e.endTag = e.endTag.replace(/^\n{0,2}/, "\n\n"))),
|
||
e.selection = this.hooks.postBlockquoteCreation(e.selection), /\n/.test(e.selection) || (e.selection = e.selection.replace(/^(> *)/, function(t, n) {
|
||
return e.startTag += n, "";
|
||
}));
|
||
}, y.doCode = function(e) {
|
||
var t = /\S[ ]*$/.test(e.before), n = /^[ ]*\S/.test(e.after);
|
||
if (!n && !t || /\n/.test(e.selection)) {
|
||
e.before = e.before.replace(/[ ]{4}$/, function(t) {
|
||
return e.selection = t + e.selection, "";
|
||
});
|
||
var i = 1, o = 1;
|
||
/(\n|^)(\t|[ ]{4,}).*\n$/.test(e.before) && (i = 0), /^\n(\t|[ ]{4,})/.test(e.after) && (o = 0),
|
||
e.skipLines(i, o), e.selection ? /^[ ]{0,3}\S/m.test(e.selection) ? /\n/.test(e.selection) ? e.selection = e.selection.replace(/^/gm, " ") : e.before += " " : e.selection = e.selection.replace(/^(?:[ ]{4}|[ ]{0,3}\t)/gm, "") : (e.startTag = " ",
|
||
e.selection = this.getString("codeexample"));
|
||
} else e.trimWhitespace(), e.findTags(/`/, /`/), e.startTag || e.endTag ? e.endTag && !e.startTag ? (e.before += e.endTag,
|
||
e.endTag = "") : e.startTag = e.endTag = "" : (e.startTag = e.endTag = "`", e.selection || (e.selection = this.getString("codeexample")));
|
||
}, y.doList = function(e, t, n) {
|
||
var i = /(\n|^)(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*$/, o = /^\n*(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/, r = "-", s = 1, a = function() {
|
||
var e;
|
||
return n ? (e = " " + s + ". ", s++) : e = " " + r + " ", e;
|
||
}, l = function(e) {
|
||
return void 0 === n && (n = /^\s*\d/.test(e)), e = e.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm, function() {
|
||
return a();
|
||
});
|
||
};
|
||
if (e.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/, null), !e.before || /\n$/.test(e.before) || /^\n/.test(e.startTag) || (e.before += e.startTag,
|
||
e.startTag = ""), e.startTag) {
|
||
var c = /\d+[.]/.test(e.startTag);
|
||
if (e.startTag = "", e.selection = e.selection.replace(/\n[ ]{4}/g, "\n"), this.unwrap(e),
|
||
e.skipLines(), c && (e.after = e.after.replace(o, l)), n == c) return;
|
||
}
|
||
var u = 1;
|
||
e.before = e.before.replace(i, function(e) {
|
||
return /^\s*([*+-])/.test(e) && (r = h.$1), u = /[^\n]\n\n[^\n]/.test(e) ? 1 : 0,
|
||
l(e);
|
||
}), e.selection || (e.selection = this.getString("litem"));
|
||
var d = a(), p = 1;
|
||
e.after = e.after.replace(o, function(e) {
|
||
return p = /[^\n]\n\n[^\n]/.test(e) ? 1 : 0, l(e);
|
||
}), e.trimWhitespace(!0), e.skipLines(u, p, !0), e.startTag = d;
|
||
var g = d.replace(/./g, " ");
|
||
this.wrap(e, f.lineLength - g.length), e.selection = e.selection.replace(/\n/g, "\n" + g);
|
||
}, y.doHeading = function(e) {
|
||
if (e.selection = e.selection.replace(/\s+/g, " "), e.selection = e.selection.replace(/(^\s+|\s+$)/g, ""),
|
||
!e.selection) return e.startTag = "## ", e.selection = this.getString("headingexample"),
|
||
e.endTag = " ##", void 0;
|
||
var t = 0;
|
||
e.findTags(/#+[ ]*/, /[ ]*#+/), /#+/.test(e.startTag) && (t = h.lastMatch.length),
|
||
e.startTag = e.endTag = "", e.findTags(null, /\s?(-+|=+)/), /=+/.test(e.endTag) && (t = 1),
|
||
/-+/.test(e.endTag) && (t = 2), e.startTag = e.endTag = "", e.skipLines(1, 1);
|
||
var n = 0 == t ? 2 : t - 1;
|
||
if (n > 0) {
|
||
var i = n >= 2 ? "-" : "=", o = e.selection.length;
|
||
for (o > f.lineLength && (o = f.lineLength), e.endTag = "\n"; o--; ) e.endTag += i;
|
||
}
|
||
}, y.doHorizontalRule = function(e) {
|
||
e.startTag = "----------\n", e.selection = "", e.skipLines(2, 1, !0);
|
||
};
|
||
}(), define("pagedown-light", function() {}), define("ace/mode/css_highlight_rules", [ "require", "exports", "module", "../lib/oop", "../lib/lang", "./text_highlight_rules" ], function(e, t) {
|
||
var n = e("../lib/oop");
|
||
e("../lib/lang");
|
||
var i = e("./text_highlight_rules").TextHighlightRules, o = t.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index", r = t.supportFunction = "rgb|rgba|url|attr|counter|counters", s = t.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero", a = t.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow", l = t.supportConstantFonts = "arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace", c = t.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))", u = t.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b", d = t.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b", h = function() {
|
||
var e = this.createKeywordMapper({
|
||
"support.function": r,
|
||
"support.constant": s,
|
||
"support.type": o,
|
||
"support.constant.color": a,
|
||
"support.constant.fonts": l
|
||
}, "text", !0);
|
||
this.$rules = {
|
||
start: [ {
|
||
token: "comment",
|
||
regex: "\\/\\*",
|
||
push: "comment"
|
||
}, {
|
||
token: "paren.lparen",
|
||
regex: "\\{",
|
||
push: "ruleset"
|
||
}, {
|
||
token: "string",
|
||
regex: "@.*?{",
|
||
push: "media"
|
||
}, {
|
||
token: "keyword",
|
||
regex: "#[a-z0-9-_]+"
|
||
}, {
|
||
token: "variable",
|
||
regex: "\\.[a-z0-9-_]+"
|
||
}, {
|
||
token: "string",
|
||
regex: ":[a-z0-9-_]+"
|
||
}, {
|
||
token: "constant",
|
||
regex: "[a-z0-9-_]+"
|
||
}, {
|
||
caseInsensitive: !0
|
||
} ],
|
||
media: [ {
|
||
token: "comment",
|
||
regex: "\\/\\*",
|
||
push: "comment"
|
||
}, {
|
||
token: "paren.lparen",
|
||
regex: "\\{",
|
||
push: "ruleset"
|
||
}, {
|
||
token: "string",
|
||
regex: "\\}",
|
||
next: "pop"
|
||
}, {
|
||
token: "keyword",
|
||
regex: "#[a-z0-9-_]+"
|
||
}, {
|
||
token: "variable",
|
||
regex: "\\.[a-z0-9-_]+"
|
||
}, {
|
||
token: "string",
|
||
regex: ":[a-z0-9-_]+"
|
||
}, {
|
||
token: "constant",
|
||
regex: "[a-z0-9-_]+"
|
||
}, {
|
||
caseInsensitive: !0
|
||
} ],
|
||
comment: [ {
|
||
token: "comment",
|
||
regex: "\\*\\/",
|
||
next: "pop"
|
||
}, {
|
||
defaultToken: "comment"
|
||
} ],
|
||
ruleset: [ {
|
||
token: "paren.rparen",
|
||
regex: "\\}",
|
||
next: "pop"
|
||
}, {
|
||
token: "comment",
|
||
regex: "\\/\\*",
|
||
push: "comment"
|
||
}, {
|
||
token: "string",
|
||
regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
|
||
}, {
|
||
token: "string",
|
||
regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
|
||
}, {
|
||
token: [ "constant.numeric", "keyword" ],
|
||
regex: "(" + c + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"
|
||
}, {
|
||
token: "constant.numeric",
|
||
regex: c
|
||
}, {
|
||
token: "constant.numeric",
|
||
regex: "#[a-f0-9]{6}"
|
||
}, {
|
||
token: "constant.numeric",
|
||
regex: "#[a-f0-9]{3}"
|
||
}, {
|
||
token: [ "punctuation", "entity.other.attribute-name.pseudo-element.css" ],
|
||
regex: u
|
||
}, {
|
||
token: [ "punctuation", "entity.other.attribute-name.pseudo-class.css" ],
|
||
regex: d
|
||
}, {
|
||
token: [ "support.function", "string", "support.function" ],
|
||
regex: "(url\\()(.*)(\\))"
|
||
}, {
|
||
token: e,
|
||
regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
|
||
}, {
|
||
caseInsensitive: !0
|
||
} ]
|
||
}, this.normalizeRules();
|
||
};
|
||
n.inherits(h, i), t.CssHighlightRules = h;
|
||
}), define("ace/mode/doc_comment_highlight_rules", [ "require", "exports", "module", "../lib/oop", "./text_highlight_rules" ], function(e, t) {
|
||
var n = e("../lib/oop"), i = e("./text_highlight_rules").TextHighlightRules, o = function() {
|
||
this.$rules = {
|
||
start: [ {
|
||
token: "comment.doc.tag",
|
||
regex: "@[\\w\\d_]+"
|
||
}, {
|
||
token: "comment.doc.tag",
|
||
regex: "\\bTODO\\b"
|
||
}, {
|
||
defaultToken: "comment.doc"
|
||
} ]
|
||
};
|
||
};
|
||
n.inherits(o, i), o.getStartRule = function(e) {
|
||
return {
|
||
token: "comment.doc",
|
||
regex: "\\/\\*(?=\\*)",
|
||
next: e
|
||
};
|
||
}, o.getEndRule = function(e) {
|
||
return {
|
||
token: "comment.doc",
|
||
regex: "\\*\\/",
|
||
next: e
|
||
};
|
||
}, t.DocCommentHighlightRules = o;
|
||
}), define("ace/mode/javascript_highlight_rules", [ "require", "exports", "module", "../lib/oop", "./doc_comment_highlight_rules", "./text_highlight_rules" ], function(e, t) {
|
||
var n = e("../lib/oop"), i = e("./doc_comment_highlight_rules").DocCommentHighlightRules, o = e("./text_highlight_rules").TextHighlightRules, r = function() {
|
||
var e = this.createKeywordMapper({
|
||
"variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",
|
||
keyword: "const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static",
|
||
"storage.type": "const|let|var|function",
|
||
"constant.language": "null|Infinity|NaN|undefined",
|
||
"support.function": "alert",
|
||
"constant.language.boolean": "true|false"
|
||
}, "identifier"), t = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void", n = "[a-zA-Z\\$_¡-][a-zA-Z\\d\\$_¡-]*\\b", o = "\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";
|
||
this.$rules = {
|
||
no_regex: [ {
|
||
token: "comment",
|
||
regex: "\\/\\/",
|
||
next: "line_comment"
|
||
}, i.getStartRule("doc-start"), {
|
||
token: "comment",
|
||
regex: /\/\*/,
|
||
next: "comment"
|
||
}, {
|
||
token: "string",
|
||
regex: "'(?=.)",
|
||
next: "qstring"
|
||
}, {
|
||
token: "string",
|
||
regex: '"(?=.)',
|
||
next: "qqstring"
|
||
}, {
|
||
token: "constant.numeric",
|
||
regex: /0[xX][0-9a-fA-F]+\b/
|
||
}, {
|
||
token: "constant.numeric",
|
||
regex: /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
|
||
}, {
|
||
token: [ "storage.type", "punctuation.operator", "support.function", "punctuation.operator", "entity.name.function", "text", "keyword.operator" ],
|
||
regex: "(" + n + ")(\\.)(prototype)(\\.)(" + n + ")(\\s*)(=)",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ],
|
||
regex: "(" + n + ")(\\.)(" + n + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ],
|
||
regex: "(" + n + ")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ],
|
||
regex: "(" + n + ")(\\.)(" + n + ")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ],
|
||
regex: "(function)(\\s+)(" + n + ")(\\s*)(\\()",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ],
|
||
regex: "(" + n + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: [ "text", "text", "storage.type", "text", "paren.lparen" ],
|
||
regex: "(:)(\\s*)(function)(\\s*)(\\()",
|
||
next: "function_arguments"
|
||
}, {
|
||
token: "keyword",
|
||
regex: "(?:" + t + ")\\b",
|
||
next: "start"
|
||
}, {
|
||
token: [ "punctuation.operator", "support.function" ],
|
||
regex: /(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/
|
||
}, {
|
||
token: [ "punctuation.operator", "support.function.dom" ],
|
||
regex: /(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/
|
||
}, {
|
||
token: [ "punctuation.operator", "support.constant" ],
|
||
regex: /(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/
|
||
}, {
|
||
token: [ "storage.type", "punctuation.operator", "support.function.firebug" ],
|
||
regex: /(console)(\.)(warn|info|log|error|time|timeEnd|assert)\b/
|
||
}, {
|
||
token: e,
|
||
regex: n
|
||
}, {
|
||
token: "keyword.operator",
|
||
regex: /--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,
|
||
next: "start"
|
||
}, {
|
||
token: "punctuation.operator",
|
||
regex: /\?|\:|\,|\;|\./,
|
||
next: "start"
|
||
}, {
|
||
token: "paren.lparen",
|
||
regex: /[\[({]/,
|
||
next: "start"
|
||
}, {
|
||
token: "paren.rparen",
|
||
regex: /[\])}]/
|
||
}, {
|
||
token: "keyword.operator",
|
||
regex: /\/=?/,
|
||
next: "start"
|
||
}, {
|
||
token: "comment",
|
||
regex: /^#!.*$/
|
||
} ],
|
||
start: [ i.getStartRule("doc-start"), {
|
||
token: "comment",
|
||
regex: "\\/\\*",
|
||
next: "comment_regex_allowed"
|
||
}, {
|
||
token: "comment",
|
||
regex: "\\/\\/",
|
||
next: "line_comment_regex_allowed"
|
||
}, {
|
||
token: "string.regexp",
|
||
regex: "\\/",
|
||
next: "regex"
|
||
}, {
|
||
token: "text",
|
||
regex: "\\s+|^$",
|
||
next: "start"
|
||
}, {
|
||
token: "empty",
|
||
regex: "",
|
||
next: "no_regex"
|
||
} ],
|
||
regex: [ {
|
||
token: "regexp.keyword.operator",
|
||
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
|
||
}, {
|
||
token: "string.regexp",
|
||
regex: "/\\w*",
|
||
next: "no_regex"
|
||
}, {
|
||
token: "invalid",
|
||
regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?]/
|
||
}, {
|
||
token: "constant.language.delimiter",
|
||
regex: /\|/
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: /\[\^?/,
|
||
next: "regex_character_class"
|
||
}, {
|
||
token: "empty",
|
||
regex: "$",
|
||
next: "no_regex"
|
||
}, {
|
||
defaultToken: "string.regexp"
|
||
} ],
|
||
regex_character_class: [ {
|
||
token: "regexp.keyword.operator",
|
||
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: "]",
|
||
next: "regex"
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: "-"
|
||
}, {
|
||
token: "empty",
|
||
regex: "$",
|
||
next: "no_regex"
|
||
}, {
|
||
defaultToken: "string.regexp.charachterclass"
|
||
} ],
|
||
function_arguments: [ {
|
||
token: "variable.parameter",
|
||
regex: n
|
||
}, {
|
||
token: "punctuation.operator",
|
||
regex: "[, ]+"
|
||
}, {
|
||
token: "punctuation.operator",
|
||
regex: "$"
|
||
}, {
|
||
token: "empty",
|
||
regex: "",
|
||
next: "no_regex"
|
||
} ],
|
||
comment_regex_allowed: [ {
|
||
token: "comment",
|
||
regex: "\\*\\/",
|
||
next: "start"
|
||
}, {
|
||
defaultToken: "comment"
|
||
} ],
|
||
comment: [ {
|
||
token: "comment",
|
||
regex: "\\*\\/",
|
||
next: "no_regex"
|
||
}, {
|
||
defaultToken: "comment"
|
||
} ],
|
||
line_comment_regex_allowed: [ {
|
||
token: "comment",
|
||
regex: "$|^",
|
||
next: "start"
|
||
}, {
|
||
defaultToken: "comment"
|
||
} ],
|
||
line_comment: [ {
|
||
token: "comment",
|
||
regex: "$|^",
|
||
next: "no_regex"
|
||
}, {
|
||
defaultToken: "comment"
|
||
} ],
|
||
qqstring: [ {
|
||
token: "constant.language.escape",
|
||
regex: o
|
||
}, {
|
||
token: "string",
|
||
regex: "\\\\$",
|
||
next: "qqstring"
|
||
}, {
|
||
token: "string",
|
||
regex: '"|$',
|
||
next: "no_regex"
|
||
}, {
|
||
defaultToken: "string"
|
||
} ],
|
||
qstring: [ {
|
||
token: "constant.language.escape",
|
||
regex: o
|
||
}, {
|
||
token: "string",
|
||
regex: "\\\\$",
|
||
next: "qstring"
|
||
}, {
|
||
token: "string",
|
||
regex: "'|$",
|
||
next: "no_regex"
|
||
}, {
|
||
defaultToken: "string"
|
||
} ]
|
||
}, this.embedRules(i, "doc-", [ i.getEndRule("no_regex") ]);
|
||
};
|
||
n.inherits(r, o), t.JavaScriptHighlightRules = r;
|
||
}), define("ace/mode/xml_util", [ "require", "exports", "module" ], function(e, t) {
|
||
function n(e) {
|
||
return [ {
|
||
token: "string",
|
||
regex: '"',
|
||
next: e + "_qqstring"
|
||
}, {
|
||
token: "string",
|
||
regex: "'",
|
||
next: e + "_qstring"
|
||
} ];
|
||
}
|
||
function i(e, t) {
|
||
return [ {
|
||
token: "string",
|
||
regex: e,
|
||
next: t
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
|
||
}, {
|
||
defaultToken: "string"
|
||
} ];
|
||
}
|
||
t.tag = function(e, t, o, r) {
|
||
e[t] = [ {
|
||
token: "text",
|
||
regex: "\\s+"
|
||
}, {
|
||
token: r ? function(e) {
|
||
return r[e] ? "meta.tag.tag-name." + r[e] : "meta.tag.tag-name";
|
||
} : "meta.tag.tag-name",
|
||
regex: "[-_a-zA-Z0-9:]+",
|
||
next: t + "_embed_attribute_list"
|
||
}, {
|
||
token: "empty",
|
||
regex: "",
|
||
next: t + "_embed_attribute_list"
|
||
} ], e[t + "_qstring"] = i("'", t + "_embed_attribute_list"), e[t + "_qqstring"] = i('"', t + "_embed_attribute_list"),
|
||
e[t + "_embed_attribute_list"] = [ {
|
||
token: "meta.tag.r",
|
||
regex: "/?>",
|
||
next: o
|
||
}, {
|
||
token: "keyword.operator",
|
||
regex: "="
|
||
}, {
|
||
token: "entity.other.attribute-name",
|
||
regex: "[-_a-zA-Z0-9:]+"
|
||
}, {
|
||
token: "constant.numeric",
|
||
regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
|
||
}, {
|
||
token: "text",
|
||
regex: "\\s+"
|
||
} ].concat(n(t));
|
||
};
|
||
}), define("ace/mode/xml_highlight_rules", [ "require", "exports", "module", "../lib/oop", "./xml_util", "./text_highlight_rules" ], function(e, t) {
|
||
var n = e("../lib/oop");
|
||
e("./xml_util");
|
||
var i = e("./text_highlight_rules").TextHighlightRules, o = function() {
|
||
this.$rules = {
|
||
start: [ {
|
||
token: "punctuation.string.begin",
|
||
regex: "<\\!\\[CDATA\\[",
|
||
next: "cdata"
|
||
}, {
|
||
token: [ "punctuation.instruction.begin", "keyword.instruction" ],
|
||
regex: "(<\\?)(xml)(?=[\\s])",
|
||
next: "xml_declaration"
|
||
}, {
|
||
token: [ "punctuation.instruction.begin", "keyword.instruction" ],
|
||
regex: "(<\\?)([-_a-zA-Z0-9]+)",
|
||
next: "instruction"
|
||
}, {
|
||
token: "comment",
|
||
regex: "<\\!--",
|
||
next: "comment"
|
||
}, {
|
||
token: [ "punctuation.doctype.begin", "meta.tag.doctype" ],
|
||
regex: "(<\\!)(DOCTYPE)(?=[\\s])",
|
||
next: "doctype"
|
||
}, {
|
||
include: "tag"
|
||
}, {
|
||
include: "reference"
|
||
} ],
|
||
xml_declaration: [ {
|
||
include: "attributes"
|
||
}, {
|
||
include: "instruction"
|
||
} ],
|
||
instruction: [ {
|
||
token: "punctuation.instruction.end",
|
||
regex: "\\?>",
|
||
next: "start"
|
||
} ],
|
||
doctype: [ {
|
||
include: "space"
|
||
}, {
|
||
include: "string"
|
||
}, {
|
||
token: "punctuation.doctype.end",
|
||
regex: ">",
|
||
next: "start"
|
||
}, {
|
||
token: "xml-pe",
|
||
regex: "[-_a-zA-Z0-9:]+"
|
||
}, {
|
||
token: "punctuation.begin",
|
||
regex: "\\[",
|
||
push: "declarations"
|
||
} ],
|
||
declarations: [ {
|
||
token: "text",
|
||
regex: "\\s+"
|
||
}, {
|
||
token: "punctuation.end",
|
||
regex: "]",
|
||
next: "pop"
|
||
}, {
|
||
token: [ "punctuation.begin", "keyword" ],
|
||
regex: "(<\\!)([-_a-zA-Z0-9]+)",
|
||
push: [ {
|
||
token: "text",
|
||
regex: "\\s+"
|
||
}, {
|
||
token: "punctuation.end",
|
||
regex: ">",
|
||
next: "pop"
|
||
}, {
|
||
include: "string"
|
||
} ]
|
||
} ],
|
||
cdata: [ {
|
||
token: "string.end",
|
||
regex: "\\]\\]>",
|
||
next: "start"
|
||
}, {
|
||
token: "text",
|
||
regex: "\\s+"
|
||
}, {
|
||
token: "text",
|
||
regex: "(?:[^\\]]|\\](?!\\]>))+"
|
||
} ],
|
||
comment: [ {
|
||
token: "comment",
|
||
regex: "-->",
|
||
next: "start"
|
||
}, {
|
||
defaultToken: "comment"
|
||
} ],
|
||
tag: [ {
|
||
token: [ "meta.tag.punctuation.begin", "meta.tag.name" ],
|
||
regex: "(<)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)",
|
||
next: [ {
|
||
include: "attributes"
|
||
}, {
|
||
token: "meta.tag.punctuation.end",
|
||
regex: "/?>",
|
||
next: "start"
|
||
} ]
|
||
}, {
|
||
token: [ "meta.tag.punctuation.begin", "meta.tag.name" ],
|
||
regex: "(</)((?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+)",
|
||
next: [ {
|
||
include: "space"
|
||
}, {
|
||
token: "meta.tag.punctuation.end",
|
||
regex: ">",
|
||
next: "start"
|
||
} ]
|
||
} ],
|
||
space: [ {
|
||
token: "text",
|
||
regex: "\\s+"
|
||
} ],
|
||
reference: [ {
|
||
token: "constant.language.escape",
|
||
regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
|
||
}, {
|
||
token: "invalid.illegal",
|
||
regex: "&"
|
||
} ],
|
||
string: [ {
|
||
token: "string",
|
||
regex: "'",
|
||
push: "qstring_inner"
|
||
}, {
|
||
token: "string",
|
||
regex: '"',
|
||
push: "qqstring_inner"
|
||
} ],
|
||
qstring_inner: [ {
|
||
token: "string",
|
||
regex: "'",
|
||
next: "pop"
|
||
}, {
|
||
include: "reference"
|
||
}, {
|
||
defaultToken: "string"
|
||
} ],
|
||
qqstring_inner: [ {
|
||
token: "string",
|
||
regex: '"',
|
||
next: "pop"
|
||
}, {
|
||
include: "reference"
|
||
}, {
|
||
defaultToken: "string"
|
||
} ],
|
||
attributes: [ {
|
||
token: "entity.other.attribute-name",
|
||
regex: "(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+"
|
||
}, {
|
||
token: "keyword.operator.separator",
|
||
regex: "="
|
||
}, {
|
||
include: "space"
|
||
}, {
|
||
include: "string"
|
||
} ]
|
||
}, this.constructor === o && this.normalizeRules();
|
||
};
|
||
(function() {
|
||
this.embedTagRules = function(e, t, n) {
|
||
this.$rules.tag.unshift({
|
||
token: [ "meta.tag.punctuation.begin", "meta.tag.name." + n ],
|
||
regex: "(<)(" + n + ")",
|
||
next: [ {
|
||
include: "space"
|
||
}, {
|
||
include: "attributes"
|
||
}, {
|
||
token: "meta.tag.punctuation.end",
|
||
regex: "/?>",
|
||
next: t + "start"
|
||
} ]
|
||
}), this.$rules[n + "-end"] = [ {
|
||
include: "space"
|
||
}, {
|
||
token: "meta.tag.punctuation.end",
|
||
regex: ">",
|
||
next: "start",
|
||
onMatch: function(e, t, n) {
|
||
return n.splice(0), this.token;
|
||
}
|
||
} ], this.embedRules(e, t, [ {
|
||
token: [ "meta.tag.punctuation.begin", "meta.tag.name." + n ],
|
||
regex: "(</)(" + n + ")",
|
||
next: n + "-end"
|
||
}, {
|
||
token: "string.begin",
|
||
regex: "<\\!\\[CDATA\\["
|
||
}, {
|
||
token: "string.end",
|
||
regex: "\\]\\]>"
|
||
} ]);
|
||
};
|
||
}).call(i.prototype), n.inherits(o, i), t.XmlHighlightRules = o;
|
||
}), define("ace/mode/html_highlight_rules", [ "require", "exports", "module", "../lib/oop", "../lib/lang", "./css_highlight_rules", "./javascript_highlight_rules", "./xml_highlight_rules" ], function(e, t) {
|
||
var n = e("../lib/oop"), i = e("../lib/lang"), o = e("./css_highlight_rules").CssHighlightRules, r = e("./javascript_highlight_rules").JavaScriptHighlightRules, s = e("./xml_highlight_rules").XmlHighlightRules, a = i.createMap({
|
||
a: "anchor",
|
||
button: "form",
|
||
form: "form",
|
||
img: "image",
|
||
input: "form",
|
||
label: "form",
|
||
option: "form",
|
||
script: "script",
|
||
select: "form",
|
||
textarea: "form",
|
||
style: "style",
|
||
table: "table",
|
||
tbody: "table",
|
||
td: "table",
|
||
tfoot: "table",
|
||
th: "table",
|
||
tr: "table"
|
||
}), l = function() {
|
||
s.call(this), this.addRules({
|
||
attributes: [ {
|
||
include: "space"
|
||
}, {
|
||
token: "entity.other.attribute-name",
|
||
regex: "[-_a-zA-Z0-9:]+"
|
||
}, {
|
||
token: "keyword.operator.separator",
|
||
regex: "=",
|
||
push: [ {
|
||
include: "space"
|
||
}, {
|
||
token: "string",
|
||
regex: "[^<>='\"`\\s]+",
|
||
next: "pop"
|
||
}, {
|
||
token: "empty",
|
||
regex: "",
|
||
next: "pop"
|
||
} ]
|
||
}, {
|
||
include: "string"
|
||
} ],
|
||
tag: [ {
|
||
token: function(e, t) {
|
||
var n = a[t];
|
||
return [ "meta.tag.punctuation.begin", "meta.tag.name" + (n ? "." + n : "") ];
|
||
},
|
||
regex: "(<)([-_a-zA-Z0-9:]+)",
|
||
next: "start_tag_stuff"
|
||
}, {
|
||
token: function(e, t) {
|
||
var n = a[t];
|
||
return [ "meta.tag.punctuation.begin", "meta.tag.name" + (n ? "." + n : "") ];
|
||
},
|
||
regex: "(</)([-_a-zA-Z0-9:]+)",
|
||
next: "end_tag_stuff"
|
||
} ],
|
||
start_tag_stuff: [ {
|
||
include: "attributes"
|
||
}, {
|
||
token: "meta.tag.punctuation.end",
|
||
regex: "/?>",
|
||
next: "start"
|
||
} ],
|
||
end_tag_stuff: [ {
|
||
include: "space"
|
||
}, {
|
||
token: "meta.tag.punctuation.end",
|
||
regex: ">",
|
||
next: "start"
|
||
} ]
|
||
}), this.embedTagRules(o, "css-", "style"), this.embedTagRules(r, "js-", "script"),
|
||
this.constructor === l && this.normalizeRules();
|
||
};
|
||
n.inherits(l, s), t.HtmlHighlightRules = l;
|
||
}), define("libs/ace_mode_highlight_rules", [ "require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules", "ace/mode/html_highlight_rules" ], function(e, t) {
|
||
var n = e("ace/lib/oop"), i = e("ace/mode/text_highlight_rules").TextHighlightRules, o = e("ace/mode/html_highlight_rules").HtmlHighlightRules, r = function() {
|
||
o.call(this), this.$rules.start.unshift({
|
||
token: "empty_line",
|
||
regex: "^$",
|
||
next: "allowBlock"
|
||
}, {
|
||
token: "markup.heading.multi.1",
|
||
regex: "^=+(?=\\s*$)"
|
||
}, {
|
||
token: "markup.heading.multi.2",
|
||
regex: "^\\-+(?=\\s*$)"
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: /^#{1,6}(?=\s*[^ #]|\s+#.)/,
|
||
next: "header"
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: "^```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",
|
||
next: "githubblock"
|
||
}, {
|
||
token: [ "constant.language.escape", "blockquote" ],
|
||
regex: "(^\\s*>\\s*(?:[*+-]|\\d+\\.)?)(\\s+)",
|
||
next: "blockquote"
|
||
}, {
|
||
token: "constant",
|
||
regex: "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",
|
||
next: "allowBlock"
|
||
}, {
|
||
token: [ "constant.language.escape", "markup.list" ],
|
||
regex: "(^\\s{0,3}(?:[*+-]|\\d+\\.))(\\s+)",
|
||
next: "listblock-start"
|
||
}, {
|
||
token: "constant.language.escape",
|
||
regex: "\\$\\$|\\\\\\\\\\[|\\\\\\\\\\\\\\\\\\(",
|
||
next: "mathblock"
|
||
}, {
|
||
token: [ "keyword", "text" ],
|
||
regex: "(\\\\?\\\\begin)(\\{[a-z]*\\*?\\})",
|
||
next: "latexblock"
|
||
}, {
|
||
include: "basic"
|
||
}), this.addRules({
|
||
basic: [ {
|
||
token: "constant.language.escape",
|
||
regex: /\\[\\`*_{}\[\]()#+\-.!]/
|
||
}, {
|
||
token: "text",
|
||
regex: "\\\\\\$"
|
||
}, {
|
||
token: [ "constant.language.escape", "keyword", "constant.language.escape" ],
|
||
regex: "(\\$)(.*?)(\\$)"
|
||
}, {
|
||
token: [ "constant.language.escape", "code", "constant.language.escape" ],
|
||
regex: "(`+)(.*?[^`])(\\1)"
|
||
}, {
|
||
token: [ "constant.language.escape", "reference", "constant.language.escape", "link", "description", "constant.language.escape" ],
|
||
regex: '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'
|
||
}, {
|
||
token: [ "constant.language.escape", "markup.underline", "constant.language.escape", "reference", "constant.language.escape" ],
|
||
regex: "(\\[)((?:[[^\\]]*\\]|[^\\[\\]])*)(\\][ ]?(?:\\n[ ]*)?\\[)(.*?)(\\])"
|
||
}, {
|
||
token: [ "constant.language.escape", "markup.underline", "constant.language.escape", "link", "description", "constant.language.escape" ],
|
||
regex: '(\\[)(\\[[^\\]]*\\]|[^\\[\\]]*)(\\]\\([ \\t]*)(<?(?:(?:[^\\(]*?\\([^\\)]*?\\)\\S*?)|(?:.*?))>?)((?:[ ]*"(?:.*?)"[ \\t]*)?)(\\))'
|
||
}, {
|
||
token: [ "constant.language.escape", "strong", "constant.language.escape" ],
|
||
regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"
|
||
}, {
|
||
token: [ "constant.language.escape", "emphasis", "constant.language.escape" ],
|
||
regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"
|
||
}, {
|
||
token: [ "text", "url", "text" ],
|
||
regex: "(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"
|
||
} ],
|
||
allowBlock: [ {
|
||
token: [ "text", "code_block" ],
|
||
regex: "^( {4}|\\t)(.+)",
|
||
next: "allowBlock"
|
||
}, {
|
||
token: "empty",
|
||
regex: "",
|
||
next: "start"
|
||
} ],
|
||
header: [ {
|
||
regex: "$",
|
||
next: "start"
|
||
}, {
|
||
include: "basic"
|
||
}, {
|
||
defaultToken: "markup.heading"
|
||
} ],
|
||
"listblock-start": [ {
|
||
token: "checkbox",
|
||
regex: /(?:\[[ x]\])?/,
|
||
next: "listblock"
|
||
} ],
|
||
listblock: [ {
|
||
token: "empty_line",
|
||
regex: "^$",
|
||
next: "start"
|
||
}, {
|
||
token: [ "constant.language.escape", "markup.list" ],
|
||
regex: "(^\\s{0,3}(?:[*+-]|\\d+\\.))(\\s+)",
|
||
next: "listblock-start"
|
||
}, {
|
||
include: "basic",
|
||
noEscape: !0
|
||
}, {
|
||
defaultToken: "markup.list"
|
||
} ],
|
||
blockquote: [ {
|
||
token: "empty_line",
|
||
regex: "^\\s*$",
|
||
next: "start"
|
||
}, {
|
||
token: [ "constant.language.escape", "blockquote" ],
|
||
regex: "(^\\s*>\\s*(?:[*+-]|\\d+\\.)?)(\\s+)",
|
||
next: "blockquote"
|
||
}, {
|
||
include: "basic",
|
||
noEscape: !0
|
||
}, {
|
||
defaultToken: "blockquote"
|
||
} ],
|
||
githubblock: [ {
|
||
token: "constant.language.escape",
|
||
regex: "^```",
|
||
next: "start"
|
||
}, {
|
||
token: "code_block",
|
||
regex: ".+"
|
||
} ],
|
||
mathblock: [ {
|
||
token: "constant.language.escape",
|
||
regex: "\\$\\$|\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\)",
|
||
next: "start"
|
||
}, {
|
||
include: "latex"
|
||
} ],
|
||
latexblock: [ {
|
||
token: [ "keyword", "text" ],
|
||
regex: "(\\\\?\\\\end)(\\{[a-z]*\\*?\\})",
|
||
next: "start"
|
||
}, {
|
||
include: "latex"
|
||
} ],
|
||
latex: [ {
|
||
token: "keyword",
|
||
regex: "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"
|
||
}, {
|
||
token: "lparen",
|
||
regex: "[[({]"
|
||
}, {
|
||
token: "rparen",
|
||
regex: "[\\])}]"
|
||
}, {
|
||
token: "comment",
|
||
regex: "%.*$"
|
||
} ]
|
||
}), this.normalizeRules();
|
||
};
|
||
n.inherits(r, i), t.MarkdownHighlightRules = r;
|
||
}), define("ace/mode/folding/markdown", [ "require", "exports", "module", "../../lib/oop", "./fold_mode", "../../range" ], function(e, t) {
|
||
var n = e("../../lib/oop"), i = e("./fold_mode").FoldMode, o = e("../../range").Range, r = t.FoldMode = function() {};
|
||
n.inherits(r, i), function() {
|
||
this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/, this.getFoldWidget = function(e, t, n) {
|
||
var i = e.getLine(n);
|
||
return this.foldingStartMarker.test(i) ? "`" == i[0] ? "start" == e.bgTokenizer.getState(n) ? "end" : "start" : "start" : "";
|
||
}, this.getFoldWidgetRange = function(e, t, n) {
|
||
function i(t) {
|
||
return d = e.getTokens(t)[0], d && 0 === d.type.lastIndexOf(h, 0);
|
||
}
|
||
function r() {
|
||
var e = d.value[0];
|
||
return "=" == e ? 6 : "-" == e ? 5 : 7 - d.value.search(/[^#]/);
|
||
}
|
||
var s = e.getLine(n), a = s.length, l = e.getLength(), c = n, u = n;
|
||
if (s.match(this.foldingStartMarker)) {
|
||
if ("`" == s[0]) {
|
||
if ("start" !== e.bgTokenizer.getState(n)) {
|
||
for (;++n < l && (s = e.getLine(n), !("`" == s[0] & "```" == s.substring(0, 3))); ) ;
|
||
return new o(c, a, n, 0);
|
||
}
|
||
for (;n-- > 0 && (s = e.getLine(n), !("`" == s[0] & "```" == s.substring(0, 3))); ) ;
|
||
return new o(n, s.length, c, 0);
|
||
}
|
||
var d, h = "markup.heading";
|
||
if (i(n)) {
|
||
for (var p = r(); ++n < l; ) if (i(n)) {
|
||
var f = r();
|
||
if (f >= p) break;
|
||
}
|
||
if (u = n - (d && -1 != [ "=", "-" ].indexOf(d.value[0]) ? 2 : 1), u > c) for (;u > c && /^\s*$/.test(e.getLine(u)); ) u--;
|
||
if (u > c) {
|
||
var g = e.getLine(u).length;
|
||
return new o(c, a, u, g);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
}.call(r.prototype);
|
||
}), define("libs/ace_mode", [ "require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/tokenizer", "./ace_mode_highlight_rules", "ace/mode/folding/markdown", "eventMgr", "ace/range" ], function(e, t) {
|
||
var n = e("ace/lib/oop"), i = e("ace/mode/text").Mode, o = e("ace/tokenizer").Tokenizer, r = e("./ace_mode_highlight_rules").MarkdownHighlightRules;
|
||
e("ace/mode/folding/markdown").FoldMode;
|
||
var s = e("eventMgr"), a = e("ace/range").Range, l = void 0;
|
||
s.addListener("onAceCreated", function(e) {
|
||
l = e;
|
||
});
|
||
var c = function() {
|
||
var e = new r();
|
||
this.$tokenizer = new o(e.getRules()), this.$embeds = e.getEmbeds();
|
||
};
|
||
n.inherits(c, i);
|
||
var u = !1;
|
||
(function() {
|
||
this.type = "text", this.lineCommentStart = ">", this.getNextLineIndent = function(e, t) {
|
||
if (u === !0 && ("listblock" == e || "listblock-start" == e) && /^\s*(?:[-+*]|\d+\.)\s+$/.test(t)) {
|
||
var n = l.$getSelectedRows();
|
||
if (n.last > 1) {
|
||
var i = new a(n.last - 2, l.session.getLine(n.last - 2).length, n.last - 1, l.session.getLine(n.last - 1).length), o = l.session.getTextRange(i);
|
||
/^\s*(?:[-+*]|\d+\.)\s+$/.test(o) && l.session.remove(i);
|
||
}
|
||
return u = !1, this.$getIndent(t);
|
||
}
|
||
if (u = !1, "listblock" == e) {
|
||
var r = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);
|
||
if (!r) return "";
|
||
var s = r[2];
|
||
return s || (s = parseInt(r[3], 10) + 1 + "."), u = !0, r[1] + s + r[4];
|
||
}
|
||
return this.$getIndent(t);
|
||
};
|
||
}).call(c.prototype), t.Mode = c;
|
||
}), define("ace/ext/spellcheck", [ "require", "exports", "module", "../lib/event", "../editor", "../config" ], function(e, t) {
|
||
var n = e("../lib/event");
|
||
t.contextMenuHandler = function(e) {
|
||
var t = e.target, i = t.textInput.getElement();
|
||
if (t.selection.isEmpty()) {
|
||
var o = t.getCursorPosition(), r = t.session.getWordRange(o.row, o.column), s = t.session.getTextRange(r);
|
||
if (t.session.tokenRe.lastIndex = 0, t.session.tokenRe.test(s)) {
|
||
var a = "", l = s + " " + a;
|
||
i.value = l, i.setSelectionRange(s.length, s.length + 1), i.setSelectionRange(0, 0),
|
||
i.setSelectionRange(0, s.length);
|
||
var c = !1;
|
||
n.addListener(i, "keydown", function u() {
|
||
n.removeListener(i, "keydown", u), c = !0;
|
||
}), t.textInput.setInputHandler(function(e) {
|
||
if (console.log(e, l, i.selectionStart, i.selectionEnd), e == l) return "";
|
||
if (0 === e.lastIndexOf(l, 0)) return e.slice(l.length);
|
||
if (e.substr(i.selectionEnd) == l) return e.slice(0, -l.length);
|
||
if (e.slice(-2) == a) {
|
||
var n = e.slice(0, -2);
|
||
if (" " == n.slice(-1)) return c ? n.substring(0, i.selectionEnd) : (n = n.slice(0, -1),
|
||
t.session.replace(r, n), "");
|
||
}
|
||
return e;
|
||
});
|
||
}
|
||
}
|
||
};
|
||
var i = e("../editor").Editor;
|
||
e("../config").defineOptions(i.prototype, "editor", {
|
||
spellcheck: {
|
||
set: function(e) {
|
||
var n = this.textInput.getElement();
|
||
n.spellcheck = !!e, e ? this.on("nativecontextmenu", t.contextMenuHandler) : this.removeListener("nativecontextmenu", t.contextMenuHandler);
|
||
},
|
||
value: !0
|
||
}
|
||
});
|
||
}), define("ace/ext/searchbox", [ "require", "exports", "module", "../lib/dom", "../lib/lang", "../lib/event", "../requirejs/text!./searchbox.css", "../keyboard/hash_handler", "../lib/keys" ], function(e, t) {
|
||
var n = e("../lib/dom"), i = e("../lib/lang"), o = e("../lib/event"), r = e("../requirejs/text!./searchbox.css"), s = e("../keyboard/hash_handler").HashHandler, a = e("../lib/keys");
|
||
n.importCssString(r, "ace_searchbox");
|
||
var l = '<div class="ace_search right"> <button type="button" action="hide" class="ace_searchbtn_close"></button> <div class="ace_search_form"> <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input> <button type="button" action="findNext" class="ace_searchbtn next"></button> <button type="button" action="findPrev" class="ace_searchbtn prev"></button> </div> <div class="ace_replace_form"> <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input> <button type="button" action="replaceAndFindNext" class="ace_replacebtn">Replace</button> <button type="button" action="replaceAll" class="ace_replacebtn">All</button> </div> <div class="ace_search_options"> <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span> <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span> <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span> </div></div>'.replace(/>\s+/g, ">"), c = function(e) {
|
||
var t = n.createElement("div");
|
||
t.innerHTML = l, this.element = t.firstChild, this.$init(), this.setEditor(e);
|
||
};
|
||
(function() {
|
||
this.setEditor = function(e) {
|
||
e.searchBox = this, e.container.appendChild(this.element), this.editor = e;
|
||
}, this.$initElements = function(e) {
|
||
this.searchBox = e.querySelector(".ace_search_form"), this.replaceBox = e.querySelector(".ace_replace_form"),
|
||
this.searchOptions = e.querySelector(".ace_search_options"), this.regExpOption = e.querySelector("[action=toggleRegexpMode]"),
|
||
this.caseSensitiveOption = e.querySelector("[action=toggleCaseSensitive]"), this.wholeWordOption = e.querySelector("[action=toggleWholeWords]"),
|
||
this.searchInput = this.searchBox.querySelector(".ace_search_field"), this.replaceInput = this.replaceBox.querySelector(".ace_search_field");
|
||
}, this.$init = function() {
|
||
var e = this.element;
|
||
this.$initElements(e);
|
||
var t = this;
|
||
o.addListener(e, "mousedown", function(e) {
|
||
setTimeout(function() {
|
||
t.activeInput.focus();
|
||
}, 0), o.stopPropagation(e);
|
||
}), o.addListener(e, "click", function(e) {
|
||
var n = e.target || e.srcElement, i = n.getAttribute("action");
|
||
i && t[i] ? t[i]() : t.$searchBarKb.commands[i] && t.$searchBarKb.commands[i].exec(t),
|
||
o.stopPropagation(e);
|
||
}), o.addCommandKeyListener(e, function(e, n, i) {
|
||
var r = a.keyCodeToString(i), s = t.$searchBarKb.findKeyCommand(n, r);
|
||
s && s.exec && (s.exec(t), o.stopEvent(e));
|
||
}), this.$onChange = i.delayedCall(function() {
|
||
t.find(!1, !1);
|
||
}), o.addListener(this.searchInput, "input", function() {
|
||
t.$onChange.schedule(20);
|
||
}), o.addListener(this.searchInput, "focus", function() {
|
||
t.activeInput = t.searchInput, t.searchInput.value && t.highlight();
|
||
}), o.addListener(this.replaceInput, "focus", function() {
|
||
t.activeInput = t.replaceInput, t.searchInput.value && t.highlight();
|
||
});
|
||
}, this.$closeSearchBarKb = new s([ {
|
||
bindKey: "Esc",
|
||
name: "closeSearchBar",
|
||
exec: function(e) {
|
||
e.searchBox.hide();
|
||
}
|
||
} ]), this.$searchBarKb = new s(), this.$searchBarKb.bindKeys({
|
||
"Ctrl-f|Command-f|Ctrl-H|Command-Option-F": function(e) {
|
||
var t = e.isReplace = !e.isReplace;
|
||
e.replaceBox.style.display = t ? "" : "none", e[t ? "replaceInput" : "searchInput"].focus();
|
||
},
|
||
"Ctrl-G|Command-G": function(e) {
|
||
e.findNext();
|
||
},
|
||
"Ctrl-Shift-G|Command-Shift-G": function(e) {
|
||
e.findPrev();
|
||
},
|
||
esc: function(e) {
|
||
setTimeout(function() {
|
||
e.hide();
|
||
});
|
||
},
|
||
Return: function(e) {
|
||
e.activeInput == e.replaceInput && e.replace(), e.findNext();
|
||
},
|
||
"Shift-Return": function(e) {
|
||
e.activeInput == e.replaceInput && e.replace(), e.findPrev();
|
||
},
|
||
Tab: function(e) {
|
||
(e.activeInput == e.replaceInput ? e.searchInput : e.replaceInput).focus();
|
||
}
|
||
}), this.$searchBarKb.addCommands([ {
|
||
name: "toggleRegexpMode",
|
||
bindKey: {
|
||
win: "Alt-R|Alt-/",
|
||
mac: "Ctrl-Alt-R|Ctrl-Alt-/"
|
||
},
|
||
exec: function(e) {
|
||
e.regExpOption.checked = !e.regExpOption.checked, e.$syncOptions();
|
||
}
|
||
}, {
|
||
name: "toggleCaseSensitive",
|
||
bindKey: {
|
||
win: "Alt-C|Alt-I",
|
||
mac: "Ctrl-Alt-R|Ctrl-Alt-I"
|
||
},
|
||
exec: function(e) {
|
||
e.caseSensitiveOption.checked = !e.caseSensitiveOption.checked, e.$syncOptions();
|
||
}
|
||
}, {
|
||
name: "toggleWholeWords",
|
||
bindKey: {
|
||
win: "Alt-B|Alt-W",
|
||
mac: "Ctrl-Alt-B|Ctrl-Alt-W"
|
||
},
|
||
exec: function(e) {
|
||
e.wholeWordOption.checked = !e.wholeWordOption.checked, e.$syncOptions();
|
||
}
|
||
} ]), this.$syncOptions = function() {
|
||
n.setCssClass(this.regExpOption, "checked", this.regExpOption.checked), n.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked),
|
||
n.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked),
|
||
this.find(!1, !1);
|
||
}, this.highlight = function(e) {
|
||
this.editor.session.highlight(e || this.editor.$search.$options.re), this.editor.renderer.updateBackMarkers();
|
||
}, this.find = function(e, t) {
|
||
var i = this.editor.find(this.searchInput.value, {
|
||
skipCurrent: e,
|
||
backwards: t,
|
||
wrap: !0,
|
||
regExp: this.regExpOption.checked,
|
||
caseSensitive: this.caseSensitiveOption.checked,
|
||
wholeWord: this.wholeWordOption.checked
|
||
}), o = !i && this.searchInput.value;
|
||
n.setCssClass(this.searchBox, "ace_nomatch", o), this.editor._emit("findSearchBox", {
|
||
match: !o
|
||
}), this.highlight();
|
||
}, this.findNext = function() {
|
||
this.find(!0, !1);
|
||
}, this.findPrev = function() {
|
||
this.find(!0, !0);
|
||
}, this.replace = function() {
|
||
this.editor.getReadOnly() || this.editor.replace(this.replaceInput.value);
|
||
}, this.replaceAndFindNext = function() {
|
||
this.editor.getReadOnly() || (this.editor.replace(this.replaceInput.value), this.findNext());
|
||
}, this.replaceAll = function() {
|
||
this.editor.getReadOnly() || this.editor.replaceAll(this.replaceInput.value);
|
||
}, this.hide = function() {
|
||
this.element.style.display = "none", this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),
|
||
this.editor.focus();
|
||
}, this.show = function(e, t) {
|
||
this.element.style.display = "", this.replaceBox.style.display = t ? "" : "none",
|
||
this.isReplace = t, e && (this.searchInput.value = e), this.searchInput.focus(),
|
||
this.searchInput.select(), this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);
|
||
};
|
||
}).call(c.prototype), t.SearchBox = c, t.Search = function(e, t) {
|
||
var n = e.searchBox || new c(e);
|
||
n.show(e.session.getTextRange(), t);
|
||
};
|
||
}), define("core", [ "jquery", "underscore", "crel", "ace", "constants", "utils", "storage", "settings", "eventMgr", "shortcutMgr", "mousetrap", "text!html/bodyIndex.html", "text!html/bodyViewer.html", "text!html/settingsTemplateTooltip.html", "text!html/settingsUserCustomExtensionTooltip.html", "storage", "uilayout", "pagedown-ace", "pagedown-light", "libs/ace_mode", "ace/requirejs/text!ace/css/editor.css", "ace/requirejs/text!ace/theme/textmate.css", "ace/ext/spellcheck", "ace/ext/searchbox" ], function(e, t, n, i, o, r, s, a, l, c, u, d, h, p, f) {
|
||
function g() {
|
||
D = !0, L = !0;
|
||
var e = r.currentTime;
|
||
e > I + 1e3 && (I = e, l.onUserActive());
|
||
}
|
||
function m() {
|
||
return r.currentTime - I > o.USER_IDLE_THRESHOLD && (L = !1), L && $;
|
||
}
|
||
function v() {
|
||
if (D !== !1 && $ !== !1) {
|
||
void 0 === F && (F = r.randomString(), s.frontWindowId = F);
|
||
var t = s.frontWindowId;
|
||
t != F && ($ = !1, void 0 !== _ && clearInterval(_), e(".modal").modal("hide"),
|
||
e(".modal-non-unique").modal("show"), window.close());
|
||
}
|
||
}
|
||
function b() {
|
||
R === !0 && (R = !1, l.onOfflineChanged(!1));
|
||
}
|
||
function y() {
|
||
R === !0 && navigator.onLine === !0 && M + o.CHECK_ONLINE_PERIOD < r.currentTime && (M = r.currentTime,
|
||
e.ajax({
|
||
url: "//www.google.com/jsapi",
|
||
timeout: o.AJAX_TIMEOUT,
|
||
dataType: "script"
|
||
}).done(function() {
|
||
b();
|
||
}));
|
||
}
|
||
function w() {
|
||
r.setInputRadio("radio-layout-orientation", a.layoutOrientation), r.setInputValue(N, window.theme),
|
||
N.change(), r.setInputChecked("#input-settings-lazy-rendering", a.lazyRendering),
|
||
r.setInputValue("#input-settings-editor-font-family", a.editorFontFamily), r.setInputValue("#input-settings-editor-font-size", a.editorFontSize),
|
||
r.setInputValue("#input-settings-max-width", a.maxWidth), r.setInputValue("#textarea-settings-default-content", a.defaultContent),
|
||
r.setInputRadio("radio-settings-mode", s.mode || "_ace_"), r.setInputValue("#input-settings-publish-commit-msg", a.commitMsg),
|
||
r.setInputValue("#input-settings-gdrive-multiaccount", a.gdriveMultiAccount), r.setInputChecked("#input-settings-gdrive-full-access", a.gdriveFullAccess),
|
||
r.setInputChecked("#input-settings-dropbox-full-access", a.dropboxFullAccess), r.setInputChecked("#input-settings-github-full-access", a.githubFullAccess),
|
||
r.setInputValue("#textarea-settings-publish-template", a.template), r.setInputValue("#textarea-settings-pdf-template", a.pdfTemplate),
|
||
r.setInputValue("#input-settings-pdf-page-size", a.pdfPageSize), r.setInputValue("#input-settings-ssh-proxy", a.sshProxy),
|
||
c.loadSettings(), l.onLoadSettings();
|
||
}
|
||
function x(t) {
|
||
var n = {};
|
||
n.layoutOrientation = r.getInputRadio("radio-layout-orientation");
|
||
var i = r.getInputValue(N);
|
||
n.lazyRendering = r.getInputChecked("#input-settings-lazy-rendering"), n.editorFontFamily = r.getInputTextValue("#input-settings-editor-font-family", t),
|
||
n.editorFontSize = r.getInputIntValue("#input-settings-editor-font-size", t, 1, 99),
|
||
n.maxWidth = r.getInputIntValue("#input-settings-max-width", t, 1), n.defaultContent = r.getInputValue("#textarea-settings-default-content");
|
||
var o = r.getInputRadio("radio-settings-mode");
|
||
n.commitMsg = r.getInputTextValue("#input-settings-publish-commit-msg", t), n.gdriveMultiAccount = r.getInputIntValue("#input-settings-gdrive-multiaccount"),
|
||
n.gdriveFullAccess = r.getInputChecked("#input-settings-gdrive-full-access"), n.dropboxFullAccess = r.getInputChecked("#input-settings-dropbox-full-access"),
|
||
n.githubFullAccess = r.getInputChecked("#input-settings-github-full-access"), n.template = r.getInputTextValue("#textarea-settings-publish-template", t),
|
||
n.pdfTemplate = r.getInputTextValue("#textarea-settings-pdf-template", t), n.pdfPageSize = r.getInputValue("#input-settings-pdf-page-size"),
|
||
n.sshProxy = r.checkUrl(r.getInputTextValue("#input-settings-ssh-proxy", t), !0),
|
||
c.saveSettings(n), n.extensionSettings = {}, l.onSaveSettings(n.extensionSettings, t),
|
||
t.isPropagationStopped() || (a.dropboxFullAccess !== n.dropboxFullAccess && s.removeItem("dropbox.lastChangeId"),
|
||
e.extend(a, n), s.settings = JSON.stringify(a), s.themeV3 = i, s.mode = o);
|
||
}
|
||
function C(e) {
|
||
e === !0 || B.state.north.isClosed ? (P.hide(), O.hide()) : (P.show(), O.show());
|
||
}
|
||
function E(e) {
|
||
e === !0 || B.state.east.isClosed ? z.hide() : z.show();
|
||
}
|
||
function k() {
|
||
j = i.edit("wmd-input"), j.setOption("spellcheck", !0), j.renderer.setShowGutter(!1),
|
||
j.renderer.setPrintMarginColumn(!1), j.renderer.setPadding(o.EDITOR_DEFAULT_PADDING),
|
||
j.session.setUseWrapMode(!0), j.session.setNewLineMode("unix"), j.session.setMode("libs/ace_mode"),
|
||
j.session.$selectLongWords = !0, function(e) {
|
||
function n(n) {
|
||
var i = e.lines[n];
|
||
0 !== i.length && 0 === i[0].type.indexOf("markup.heading.multi") && t.each(e.lines[n - 1], function(e) {
|
||
e.type = "markup.heading.prev.multi";
|
||
});
|
||
}
|
||
function i() {
|
||
if (e.running) {
|
||
for (var t = new Date(), o = e.currentLine, r = -1, s = e.doc; e.lines[o]; ) o++;
|
||
var a = o, l = s.getLength(), c = 0;
|
||
for (e.running = !1; l > o; ) {
|
||
e.$tokenizeRow(o), r = o;
|
||
do n(o), o++; while (e.lines[o]);
|
||
if (c++, 0 === c % 5 && new Date() - t > 20) return e.running = setTimeout(i, 20),
|
||
e.currentLine = o, void 0;
|
||
}
|
||
e.currentLine = o, r >= a && e.fireUpdateEvent(a, r);
|
||
}
|
||
}
|
||
e.$worker = function() {
|
||
e.lines.splice(0, e.lines.length), e.states.splice(0, e.states.length), e.currentLine = 0,
|
||
i();
|
||
};
|
||
}(j.session.bgTokenizer), c.configureAce(j), l.onAceCreated(j);
|
||
}
|
||
function A() {
|
||
var t = {
|
||
closable: !0,
|
||
resizable: !1,
|
||
slidable: !1,
|
||
livePaneResizing: !0,
|
||
enableCursorHotkey: !1,
|
||
resizerDblClickToggle: !1,
|
||
resizeWithWindow: !1,
|
||
north__spacing_open: 1,
|
||
north__spacing_closed: 1,
|
||
spacing_open: 35,
|
||
spacing_closed: 35,
|
||
togglerLength_open: 60,
|
||
togglerLength_closed: 60,
|
||
stateManagement__enabled: !1,
|
||
north__minSize: 49,
|
||
center__minWidth: 250,
|
||
center__minHeight: 180,
|
||
fxSettings: {
|
||
easing: "easeInOutQuad",
|
||
duration: 350
|
||
},
|
||
onopen: function() {
|
||
C(), E();
|
||
},
|
||
onclose_start: function(e) {
|
||
"north" == e ? C(!0) : "east" == e && E(!0);
|
||
},
|
||
onresize_end: function(e) {
|
||
if (void 0 !== j && "center" == e) {
|
||
j.resize();
|
||
var t = (j.renderer.$size.scrollerHeight - j.renderer.lineHeight) / 2;
|
||
0 > t && (t = 0), j.renderer.setScrollMargin(0, t, 0, 0), setTimeout(function() {
|
||
var e = (j.renderer.$size.scrollerWidth - a.maxWidth) / 2;
|
||
e < o.EDITOR_DEFAULT_PADDING && (e = o.EDITOR_DEFAULT_PADDING), e !== j.renderer.$padding && (j.renderer.setPadding(e),
|
||
j.resize(!0));
|
||
}, 5);
|
||
}
|
||
l.onLayoutResize(e);
|
||
}
|
||
};
|
||
l.onLayoutConfigure(t), "horizontal" == a.layoutOrientation ? (e(".ui-layout-south").remove(),
|
||
e(".preview-container").html('<div id="preview-contents"><div id="wmd-preview" class="preview-content"></div></div>'),
|
||
B = e("body").layout(e.extend(t, {
|
||
east__resizable: !0,
|
||
east__size: .5,
|
||
east__minSize: 300
|
||
}))) : "vertical" == a.layoutOrientation && (e(".ui-layout-east").remove(), e(".preview-container").html('<div id="preview-contents"><div id="wmd-preview" class="preview-content"></div></div>'),
|
||
B = e("body").layout(e.extend(t, {
|
||
south__resizable: !0,
|
||
south__size: .5,
|
||
south__minSize: 200
|
||
}))), a.maxWidth && e("#preview-contents").css("max-width", a.maxWidth + 30 + "px"),
|
||
e(".navbar").click(function() {
|
||
B.allowOverflow("north");
|
||
}), e(".ui-layout-toggler-south").addClass("btn btn-info").html('<i class="icon-none"></i>'),
|
||
e(".ui-layout-toggler-east").addClass("btn btn-info").html('<i class="icon-none"></i>');
|
||
var n = e(".ui-layout-toggler-north").addClass("btn btn-info").html('<i class="icon-th"></i>'), i = e('<div class="resizer-decorator">');
|
||
z = e('<div class="extension-preview-buttons">'), H = e('<div class="extension-editor-buttons">'),
|
||
window.viewerMode || "horizontal" == a.layoutOrientation ? (e(".ui-layout-resizer-north").append(z),
|
||
e(".ui-layout-resizer-east").append(i).append(n).append(H)) : e(".ui-layout-resizer-south").append(i).append(z).append(H).append(n),
|
||
C(), E(), l.onLayoutCreated(B);
|
||
}
|
||
function S() {
|
||
if (!window.viewerMode) {
|
||
var e = U.width() - 5;
|
||
J + Q + et + tt > e ? (V.show().find(".dropdown-menu").append(q), J + Q + et + nt > e ? G.show().find(".dropdown-menu").append(W) : G.hide().after(W)) : (G.hide().after(W),
|
||
V.hide().after(q));
|
||
}
|
||
B.resizeAll();
|
||
}
|
||
var _, F, T = {}, D = !1, L = !1, $ = !0, I = 0, R = !1, M = r.currentTime;
|
||
T.setOffline = function() {
|
||
M = r.currentTime, R === !1 && (R = !0, l.onOfflineChanged(!0));
|
||
};
|
||
var N, B, P, O, z, j, H, U, W, q, G, V, K, X, Y, Z, J = 86, Q = 366, et = 571, tt = 203, nt = 42, it = require("ace/undomanager").UndoManager;
|
||
T.initEditor = function(n) {
|
||
function i() {
|
||
var e = X.val();
|
||
void 0 !== j && (e = j.getValue()), void 0 !== Z && Z != e && (Y.content = e, l.onContentChanged(Y)),
|
||
Z = e;
|
||
}
|
||
void 0 !== Y && l.onFileClosed(Y), Y = n, Z = void 0;
|
||
var o = Y.content;
|
||
if (void 0 !== j ? (j.setValue(o, -1), j.getSession().setUndoManager(new it())) : X.val(o),
|
||
void 0 !== K) return j && j.selection.setSelectionRange(Y.editorSelectRange), j ? j.focus() : X.focus(),
|
||
K.refreshPreview(), void 0;
|
||
var s = e(".preview-container");
|
||
if (window.lightMode) X.scroll(function() {
|
||
void 0 !== Z && (Y.editorScrollTop = e(this).scrollTop());
|
||
}), X.bind("keyup mouseup", function() {
|
||
void 0 !== Z && (Y.editorStart = this.selectionStart, Y.editorEnd = this.selectionEnd);
|
||
}); else {
|
||
var u = t.debounce(function() {
|
||
void 0 !== Z && (Y.editorScrollTop = j.renderer.getScrollTop());
|
||
}, 100);
|
||
j.session.on("changeScrollTop", u);
|
||
var d = t.debounce(function() {
|
||
void 0 !== Z && (Y.editorSelectRange = j.getSelectionRange());
|
||
}, 100);
|
||
j.session.selection.on("changeSelection", d), j.session.selection.on("changeCursor", d);
|
||
}
|
||
s.scroll(function() {
|
||
void 0 !== Z && (Y.previewScrollTop = s.scrollTop());
|
||
});
|
||
var h = new Markdown.Converter(), p = {
|
||
_DoItalicsAndBold: function(e) {
|
||
return e = e.replace(/(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\1/g, "<strong>$2</strong>"),
|
||
e = e.replace(/(\*|_)(?=\S)(.+?)(?=\S)\1/g, "<em>$2</em>");
|
||
}
|
||
};
|
||
h.setOptions(p);
|
||
var f;
|
||
K = window.lightMode ? new Markdown.EditorLight(h) : new Markdown.Editor(h, void 0, {
|
||
keyStrokes: c.getPagedownKeyStrokes()
|
||
}), K.hooks.set("insertLinkDialog", function(t) {
|
||
return T.insertLinkCallback = t, r.resetModalInputs(), e(".modal-insert-link").modal(),
|
||
!0;
|
||
}), K.hooks.set("insertImageDialog", function(t) {
|
||
return T.insertLinkCallback = t, T.catchModal ? !0 : (r.resetModalInputs(), e(".modal-insert-image").modal(),
|
||
!0);
|
||
}), f = a.lazyRendering === !0 ? function(e) {
|
||
var n = t.debounce(e, 500);
|
||
return function() {
|
||
void 0 === Z ? (e(), l.onFileOpen(Y), s.scrollTop(Y.previewScrollTop), window.lightMode ? X.scrollTop(Y.editorScrollTop) : t.defer(function() {
|
||
j.renderer.scrollToY(Y.editorScrollTop);
|
||
})) : n(), i();
|
||
};
|
||
} : function(e) {
|
||
return function() {
|
||
e(), void 0 === Z && (l.onFileOpen(Y), s.scrollTop(Y.previewScrollTop), window.lightMode ? X.scrollTop(Y.editorScrollTop) : t.defer(function() {
|
||
j.renderer.scrollToY(Y.editorScrollTop);
|
||
})), i();
|
||
};
|
||
}, l.onPagedownConfigure(K), K.hooks.chain("onPreviewRefresh", l.onAsyncPreview),
|
||
window.lightMode ? (K.run(f), K.undoManager.reinit(o, Y.editorStart, Y.editorEnd, Y.editorScrollTop),
|
||
X.focus()) : (K.run(j, f), j.selection.setSelectionRange(Y.editorSelectRange), j.focus()),
|
||
e(".wmd-button-row li").addClass("btn btn-success").css("left", 0).find("span").hide();
|
||
var g = e(".wmd-button-group1");
|
||
e("#wmd-bold-button").append(e('<i class="icon-bold">')).appendTo(g), e("#wmd-italic-button").append(e('<i class="icon-italic">')).appendTo(g),
|
||
g = e(".wmd-button-group2"), e("#wmd-link-button").append(e('<i class="icon-globe">')).appendTo(g),
|
||
e("#wmd-quote-button").append(e('<i class="icon-indent-right">')).appendTo(g), e("#wmd-code-button").append(e('<i class="icon-code">')).appendTo(g),
|
||
e("#wmd-image-button").append(e('<i class="icon-picture">')).appendTo(g), g = e(".wmd-button-group3"),
|
||
e("#wmd-olist-button").append(e('<i class="icon-list-numbered">')).appendTo(g),
|
||
e("#wmd-ulist-button").append(e('<i class="icon-list-bullet">')).appendTo(g), e("#wmd-heading-button").append(e('<i class="icon-text-height">')).appendTo(g),
|
||
e("#wmd-hr-button").append(e('<i class="icon-ellipsis">')).appendTo(g), g = e(".wmd-button-group4"),
|
||
e("#wmd-undo-button").append(e('<i class="icon-reply">')).appendTo(g), e("#wmd-redo-button").append(e('<i class="icon-forward">')).appendTo(g);
|
||
};
|
||
var ot, rt;
|
||
T.redirectConfirm = function(t, n, i) {
|
||
ot = n, rt = i, e(".modal-redirect-confirm .redirect-msg").html(t), e(".modal-redirect-confirm").modal("show");
|
||
};
|
||
var st = !1, at = !1;
|
||
return T.onReady = function() {
|
||
document.body.innerHTML = window.viewerMode === !0 ? h : d, U = e(".navbar"), W = U.find(".left-buttons"),
|
||
q = U.find(".right-buttons"), G = U.find(".left-buttons-dropdown"), V = U.find(".right-buttons-dropdown"),
|
||
e(window).bind("resize", S), c.addSettingEntries(), e(window).on("offline", T.setOffline),
|
||
e(window).on("online", b), navigator.onLine === !1 && T.setOffline(), e(document).mousemove(g).keypress(g),
|
||
e(".dropdown-submenu > a").click(function(e) {
|
||
e.stopPropagation();
|
||
}), P = e(".menu-panel").collapse({
|
||
toggle: !1
|
||
});
|
||
var t;
|
||
P.on("show.bs.collapse", function(n) {
|
||
n.target === P[0] ? (at = !0, t = r.createBackdrop("collapse", ".menu-panel"), P.addClass("move-to-front"),
|
||
setTimeout(function() {
|
||
P.trigger(e.support.transition.end);
|
||
}, 50)) : P.find(".in").collapse("hide");
|
||
}).on("hide.bs.collapse", function(e) {
|
||
e.target === P[0] && (at = !1, t.parentNode.removeChild(t), P.removeClass("move-to-front"),
|
||
j ? j.focus() : X.focus());
|
||
}).on("hidden.bs.collapse", function(e) {
|
||
e.target === P[0] && P.find(".in").collapse("hide");
|
||
}), O = e(".document-panel").collapse({
|
||
toggle: !1
|
||
});
|
||
var n;
|
||
O.on("show.bs.collapse", function(t) {
|
||
t.target === O[0] ? (st = !0, n = r.createBackdrop("collapse", ".document-panel"),
|
||
O.addClass("move-to-front"), setTimeout(function() {
|
||
O.trigger(e.support.transition.end);
|
||
}, 50)) : O.find(".in").collapse("hide");
|
||
}).on("hide.bs.collapse", function(e) {
|
||
e.target === O[0] && (st = !1, n.parentNode.removeChild(n), O.removeClass("move-to-front"),
|
||
j ? j.focus() : X.focus());
|
||
}).on("hidden.bs.collapse", function(e) {
|
||
e.target === O[0] && O.find(".in").collapse("hide");
|
||
}), window.lightMode && e("#wmd-input").replaceWith(function() {
|
||
return e('<textarea id="wmd-input">').addClass(this.className).addClass("form-control");
|
||
}), X = e("#wmd-input, .textarea-helper").css({
|
||
"font-family": a.editorFontFamily,
|
||
"font-size": a.editorFontSize + "px",
|
||
"line-height": Math.round(a.editorFontSize * (20 / 12)) + "px"
|
||
}), window.lightMode || (k(), X.find(".ace_content").css({
|
||
"background-size": "64px " + Math.round(a.editorFontSize * (20 / 12)) + "px"
|
||
})), A(), _ = window.setInterval(function() {
|
||
r.updateCurrentTime(), v(), (m() === !0 || window.viewerMode === !0) && (l.onPeriodicRun(),
|
||
y());
|
||
}, 1e3), l.onReady(), S();
|
||
}, l.addListener("onReady", function() {
|
||
function n(e) {
|
||
if (e = e || "default", d != e) {
|
||
var t = "less!themes/" + e;
|
||
-1 !== window.baseDir.indexOf("-min") && (t = "css!themes/" + e), requirejs.undef(t),
|
||
require([ t ]), d = e;
|
||
}
|
||
}
|
||
function i(n, i) {
|
||
t.each(document.querySelectorAll(n), function(n) {
|
||
var o = e(n);
|
||
o.tooltip({
|
||
html: !0,
|
||
container: o.parents(".modal-content"),
|
||
placement: "right",
|
||
trigger: "manual",
|
||
title: i
|
||
}).click(function() {
|
||
var n = this;
|
||
g && g[0] === n || t.defer(function() {
|
||
e(document).on("click.close-tooltip", function() {
|
||
g && g.tooltip("hide"), g = void 0, e(document).off("click.close-tooltip");
|
||
}), g = e(n).tooltip("show");
|
||
});
|
||
});
|
||
});
|
||
}
|
||
window.viewerMode || "vertical" != a.layoutOrientation || z.css("right", parseInt(z.css("right")) + H.width());
|
||
var c = !1;
|
||
e(".modal").on("show.bs.modal", function() {
|
||
P.collapse("hide"), O.collapse("hide"), c = !0;
|
||
}).on("shown.bs.modal", function() {
|
||
var t = e(this);
|
||
setTimeout(function() {
|
||
t.find(".btn:first").focus(), t.find("button:first").focus(), t.find("input:enabled:visible:first").focus();
|
||
}, 50);
|
||
}).on("hidden.bs.modal", function() {
|
||
c = !1, j ? j.focus() : X.focus(), n(window.theme);
|
||
}).keyup(function(t) {
|
||
13 != t.which || e(t.target).is("textarea") || e(this).find(".modal-footer a:last").click();
|
||
}), e(".collapse-save-as a").click(function() {
|
||
P.collapse("hide");
|
||
}), u.stopCallback = function(t, n) {
|
||
return at || st || c || e(n).is("input, select, textarea:not(.ace_text-input)");
|
||
}, e(".action-insert-link").click(function(t) {
|
||
var n = r.getInputTextValue(e("#input-insert-link"), t);
|
||
void 0 !== n && (T.insertLinkCallback(n), T.insertLinkCallback = void 0);
|
||
}), e(".action-insert-image").click(function(t) {
|
||
var n = r.getInputTextValue(e("#input-insert-image"), t);
|
||
void 0 !== n && (T.insertLinkCallback(n), T.insertLinkCallback = void 0);
|
||
}), e(".modal-insert-link, .modal-insert-image").on("hidden.bs.modal", function() {
|
||
void 0 !== T.insertLinkCallback && (T.insertLinkCallback(null), T.insertLinkCallback = void 0);
|
||
}), e(".action-load-settings").click(function() {
|
||
w();
|
||
}), e(".action-apply-settings").click(function(e) {
|
||
x(e), e.isPropagationStopped() || window.location.reload();
|
||
});
|
||
var d = window.theme;
|
||
N = e("#input-settings-theme"), N.on("change", function() {
|
||
n(this.value);
|
||
}), e(".action-import-docs-settings").click(function() {
|
||
e("#input-file-import-docs-settings").click();
|
||
});
|
||
var h;
|
||
e("#input-file-import-docs-settings").change(function(n) {
|
||
var i = (n.dataTransfer || n.target).files;
|
||
e(".modal-settings").modal("hide"), t.each(i, function(t) {
|
||
var n = new FileReader();
|
||
n.onload = function(t) {
|
||
return function(n) {
|
||
try {
|
||
h = JSON.parse(n.target.result);
|
||
var i = parseInt(h.version.match(/^v(\d+)$/)[1], 10), o = parseInt(s.version.match(/^v(\d+)$/)[1], 10);
|
||
i > o ? l.onError("Incompatible version. Please upgrade StackEdit.") : e(".modal-import-docs-settings").modal("show");
|
||
} catch (r) {
|
||
l.onError("Wrong format: " + t.name);
|
||
}
|
||
e("#input-file-import-docs-settings").val("");
|
||
};
|
||
}(t), n.readAsText(t);
|
||
});
|
||
}), e(".action-import-docs-settings-confirm").click(function() {
|
||
s.clear();
|
||
var e = /^file\.|^focusMode$|^folder\.|^publish\.|^settings$|^sync\.|^google\.|^themeV3$|^mode$|^version$|^welcomeTour$/;
|
||
t.each(h, function(t, n) {
|
||
e.test(n) && (s[n] = t);
|
||
}), window.location.reload();
|
||
}), e(".action-export-docs-settings").click(function() {
|
||
r.saveAs(JSON.stringify(s), "StackEdit local storage.json");
|
||
}), e(".action-default-settings").click(function() {
|
||
s.removeItem("settings"), s.removeItem("theme"), window.location.reload();
|
||
}), e(".action-app-reset").click(function() {
|
||
s.clear(), window.location.reload();
|
||
}), e(".action-reset-input").click(function() {
|
||
r.resetModalInputs();
|
||
});
|
||
var g;
|
||
if (i(".tooltip-lazy-rendering", "Disable preview rendering while typing in order to offload CPU. Refresh preview after 500 ms of inactivity."),
|
||
i(".tooltip-default-content", [ "Thanks for supporting StackEdit by adding a backlink in your documents!<br/><br/>", '<b class="text-danger">NOTE: Backlinks in Stack Exchange Q/A are not welcome.</b>' ].join("")),
|
||
i(".tooltip-usercustom-extension", f), i(".tooltip-template", p), e("div.dropdown-menu").click(function(e) {
|
||
e.stopPropagation();
|
||
}), e(".modal-non-unique").modal({
|
||
backdrop: "static",
|
||
keyboard: !1,
|
||
show: !1
|
||
}), e(".action-redirect-confirm").click(function() {
|
||
rt = void 0, ot();
|
||
}), e(".modal-redirect-confirm").on("hidden.bs.modal", function() {
|
||
t.defer(function() {
|
||
rt && rt();
|
||
});
|
||
}), t.each(document.querySelectorAll("img"), function(t) {
|
||
var n = e(t), i = n.data("stackeditSrc");
|
||
i && n.attr("src", window.baseDir + "/img/" + i);
|
||
}), window.viewerMode === !1) {
|
||
var m = t.reduce(o.THEME_LIST, function(e, t, n) {
|
||
return e + '<option value="' + n + '">' + t + "</option>";
|
||
}, "");
|
||
document.getElementById("input-settings-theme").innerHTML = m;
|
||
}
|
||
}), T;
|
||
}), define("text!WELCOME.md", [], function() {
|
||
return 'Welcome to StackEdit! {#welcome}\n=====================\n\n\nHello, I am your first Markdown document within **StackEdit**[^stackedit]. Don\'t delete me, I can be helpful. I can be recovered anyway in the `Utils` tab of the <i class="icon-cog"></i> `Settings` dialog.\n\n----------\n\n\nDocuments\n---------\n\n**StackEdit** stores your documents in your browser local storage, which means all your documents are automatically saved locally and are accessible offline.\n\n> **NOTE:** This also means that your documents are not shared between different browsers or computers and that clearing your browser\'s data may **delete all of them!**\n\n#### <i class="icon-file"></i> Create a document\n\nYou can create a new document by clicking the <i class="icon-file"></i> button in the navigation bar. This will switch from the current document to the new one.\n\n#### <i class="icon-folder-open"></i> Switch to another document\n\nYou can list all your local documents and switch from one to another by clicking the <i class="icon-folder-open"></i> button in the navigation bar.\n\n#### <i class="icon-pencil"></i> Rename a document\n\nYou can rename the current document by clicking the document title in the navigation bar.\n\n#### <i class="icon-trash"></i> Delete a document\n\nYou can delete the current document by clicking the <i class="icon-trash"></i> button in the navigation bar.\n\n#### <i class="icon-hdd"></i> Save a document\n\nYou can save the current document to a file using the <i class="icon-hdd"></i> `Save as...` sub-menu.\n\n> **NOTE:** See [<i class="icon-share"></i> Publish a document](#publish-a-document) section for a description of the different outputs.\n\n\n----------\n\n\nSynchronization\n---------------\n\n**StackEdit** can be combined with **Google Drive** and **Dropbox** to have your documents centralized in the *Cloud*. The synchronization mechanism will take care of uploading your modifications or downloading the latest version of your documents.\n\n> **NOTE:**\n> \n> - Full access to **Google Drive** or **Dropbox** is required to be able to import any document in StackEdit.\n> - Imported documents are downloaded in your browser and are not transmitted to a server.\n> - If you experience problems exporting documents to Google Drive, check and optionally disable browser extensions, such as Disconnect.\n\n#### <i class="icon-download"></i> Import a document\n\nYou can import a document from the *Cloud* by going to the <i class="icon-provider-gdrive"></i> `Google Drive` or the <i class="icon-provider-dropbox"></i> `Dropbox` sub-menu and by clicking `Import from...`. Once imported, your document will be automatically synchronized with the **Google Drive** / **Dropbox** file.\n\n#### <i class="icon-upload"></i> Export a document\n\nYou can export any document by going to the <i class="icon-provider-gdrive"></i> `Google Drive` or the <i class="icon-provider-dropbox"></i> `Dropbox` sub-menu and by clicking `Export to...`. Even if your document is already synchronized with **Google Drive** or **Dropbox**, you can export it to a another location. **StackEdit** can synchronize one document with multiple locations.\n\n#### <i class="icon-refresh"></i> Synchronize a document\n\nOnce your document is linked to a **Google Drive** or a **Dropbox** file, **StackEdit** will periodically (every 3 minutes) synchronize it by downloading/uploading any modification. Any conflict will be detected, and a local copy of your document will be created as a backup if necessary.\n\nIf you just have modified your document and you want to force the synchronization, click the <i class="icon-refresh"></i> button in the navigation bar.\n\n> **NOTE:** The <i class="icon-refresh"></i> button is disabled when:\n> \n> - you are offline,\n> - or the document is not synchronized with any location,\n> - or the document has not been modified since the last synchronization.\n\n#### <i class="icon-refresh"></i> Manage document synchronization\n\nSince one document can be synchronized with multiple locations, you can list and manage synchronized locations by clicking <i class="icon-refresh"></i> `Manage synchronization` in the <i class="icon-provider-stackedit"></i> menu. This will open a dialog box allowing you to add or remove synchronization links that are associated to your document.\n\n> **NOTE:** If you delete the file from **Google Drive** or from **Dropbox**, the document will no longer be synchronized with that location.\n\n----------\n\n\nPublication\n-----------\n\nOnce you are happy with your document, you can publish it on different websites directly from **StackEdit**. As for now, **StackEdit** can publish on **Blogger**, **Dropbox**, **Gist**, **GitHub**, **Google Drive**, **Tumblr**, **WordPress** and on any SSH server.\n\n#### <i class="icon-share"></i> Publish a document\n\nYou can publish your document by going to the <i class="icon-share"></i> `Publish on` sub-menu and by choosing a website. In the dialog box, you can choose the publication format:\n\n- Markdown, to publish the Markdown text on a website that can interpret it (**GitHub** for instance),\n- HTML, to publish the document converted into HTML (on a blog for instance),\n- Template, to have a full control of the output.\n\n> **NOTE:** The default template is a simple webpage wrapping your document in HTML format. You can customize it in the `Services` tab of the <i class="icon-cog"></i> `Settings` dialog.\n\n#### <i class="icon-share"></i> Update a publication\n\nAfter publishing, **StackEdit** will keep your document linked to that publish location so that you can update it easily. Once you have modified your document and you want to update your publication, click on the <i class="icon-share"></i> button in the navigation bar.\n\n> **NOTE:** The <i class="icon-share"></i> button is disabled when:\n> \n> - you are offline,\n> - or the document has not been published anywhere.\n\n#### <i class="icon-share"></i> Manage document publication\n\nSince one document can be published on multiple locations, you can list and manage publish locations by clicking <i class="icon-share"></i> `Manage publication` in the <i class="icon-provider-stackedit"></i> menu. This will open a dialog box allowing you to remove publication links that are associated to your document.\n\n> **NOTE:** In some cases, if you remove the file from the website or the post from the blog, the document will no longer be published on that location.\n\n----------\n\n\nMarkdown Extra\n--------------\n\n**StackEdit** supports **Markdown Extra**, which extends **Markdown** syntax with some nice features.\n\n> **NOTE:** You can disable any **Markdown Extra** feature in the `Extensions` tab of the <i class="icon-cog"></i> `Settings` dialog.\n\n\n### Tables\n\n**Markdown Extra** has a special syntax for tables:\n\nItem | Value\n--------- | -----\nComputer | \\$1600\nPhone | \\$12\nPipe | \\$1\n\nYou can specify column alignment with one or two colons:\n\n| Item | Value | Qty |\n| :-------- | ------:| :--: |\n| Computer | \\$1600 | 5 |\n| Phone | \\$12 | 12 |\n| Pipe | \\$1 | 234 |\n\n\n### Definition Lists\n\n**Markdown Extra** has a special syntax for definition lists too:\n\nTerm 1\nTerm 2\n: Definition A\n: Definition B\n\nTerm 3\n\n: Definition C\n\n: Definition D\n\n > part of definition D\n\n\n### Fenced code blocks\n\nGitHub\'s fenced code blocks are also supported with **Prettify** syntax highlighting:\n\n```\n// Foo\nvar bar = 0;\n```\n\n> **NOTE:** To use **Highlight.js** instead of **Prettify**, just configure the `Markdown Extra` extension in the <i class="icon-cog"></i> `Settings` dialog.\n\n\n### Special Attributes\n\nWith **Markdown Extra**, you can specify `class` and `id` attributes on headers and fenced code blocks just like this:\n\n##### Header example {#my-header}\n\n``` {#my-id .my-class}\nvar foo = bar;\n```\n\nThen you can create cross-references like this: [beginning of the document](#welcome).\n\n\n### Footnotes\n\nYou can create footnotes like this[^footnote].\n\n [^footnote]: Here is the *text* of the **footnote**.\n\n\n### SmartyPants\n\nSmartyPants converts ASCII punctuation characters into "smart" typographic punctuation HTML entities. For example:\n\n| | ASCII | HTML |\n ------------------|------------------------------------------|-------------------------------------\n| Single backticks | `\'Isn\'t this fun?\'` | ‘Isn’t this fun?’ |\n| Quotes | `"Isn\'t this fun?"` | “Isn’t this fun?” |\n| Dashes | `-- is an en-dash and --- is an em-dash` | – is an en-dash and — is an em-dash |\n\n\n### Table of contents\n\nYou can insert a table of contents using the marker `[TOC]`:\n\n[TOC]\n\n\n### MathJax\n \nYou can render *LaTeX* mathematical expressions using **MathJax**, as on [math.stackexchange.com][1]:\n\nThe *Gamma function* satisfying $\\Gamma(n) = (n-1)!\\quad\\forall\nn\\in\\mathbb N$ is via the Euler integral\n\n$$\n\\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,.\n$$\n\n> **NOTE:** When exporting, make sure you include MathJax to render mathematical expression correctly. Your page/template should include something like: \n\n```\n<script type="text/javascript" src="https://stackedit.io/libs/MathJax/MathJax.js?config=TeX-AMS_HTML"></script>\n```\n\n> **NOTE:** You can find more information:\n>\n> - about **Markdown** syntax [here][2],\n> - about **Markdown Extra** extension [here][3],\n> - about **LaTeX** mathematical expressions [here][4],\n> - about **Prettify** syntax highlighting [here][5],\n> - about **Highlight.js** syntax highlighting [here][6].\n\nWritten with [StackEdit](https://stackedit.io/).\n\n [^stackedit]: StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.\n\n\n [1]: http://math.stackexchange.com/\n [2]: http://daringfireball.net/projects/markdown/syntax "Markdown"\n [3]: https://github.com/jmcmanus/pagedown-extra "Pagedown Extra"\n [4]: http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference\n [5]: https://code.google.com/p/google-code-prettify/\n [6]: http://highlightjs.org/';
|
||
}), define("fileMgr", [ "jquery", "underscore", "constants", "core", "utils", "storage", "settings", "eventMgr", "fileSystem", "classes/FileDescriptor", "text!WELCOME.md" ], function(e, t, n, i, o, r, s, a, l, c, u) {
|
||
var d = {};
|
||
d.currentFile = void 0, d.selectFile = function(o) {
|
||
if (o = o || d.currentFile, void 0 === o) {
|
||
var r = t.size(l);
|
||
o = 0 === r ? d.createFile(n.WELCOME_DOCUMENT_TITLE, u) : t.max(l, function(e) {
|
||
return e.selectTime || 0;
|
||
});
|
||
}
|
||
d.currentFile !== o && (d.currentFile = o, o.selectTime = new Date().getTime(),
|
||
a.onFileSelected(o), e(".action-edit-document").toggleClass("hide", o.fileIndex != n.TEMPORARY_FILE_INDEX)),
|
||
i.initEditor(o);
|
||
}, d.createFile = function(e, i, u, d) {
|
||
if (i = void 0 !== i ? i : s.defaultContent, !e) {
|
||
e = n.DEFAULT_FILE_TITLE;
|
||
for (var h = 2, p = function(t) {
|
||
return t.title == e;
|
||
}; t.some(l, p); ) e = n.DEFAULT_FILE_TITLE + h++;
|
||
}
|
||
var f = n.TEMPORARY_FILE_INDEX;
|
||
if (!d) do f = "file." + o.randomString(); while (t.has(l, f));
|
||
u = u || {};
|
||
var g = t.reduce(u, function(e, t) {
|
||
return o.storeAttributes(t), e + t.syncIndex + ";";
|
||
}, ";");
|
||
r[f + ".title"] = e, r[f + ".content"] = i, r[f + ".sync"] = g, r[f + ".publish"] = ";";
|
||
var m = new c(f, e, u);
|
||
return d || (o.appendIndexToArray("file.list", f), l[f] = m, a.onFileCreated(m)),
|
||
m;
|
||
}, d.deleteFile = function(e) {
|
||
e = e || d.currentFile, e.folder && (e.folder.removeFile(e), a.onFoldersChanged()),
|
||
o.removeIndexFromArray("file.list", e.fileIndex), delete l[e.fileIndex], d.currentFile === e && (d.currentFile = void 0,
|
||
d.selectFile()), t.each(e.syncLocations, function(e) {
|
||
r.removeItem(e.syncIndex);
|
||
}), t.each(e.publishLocations, function(e) {
|
||
r.removeItem(e.publishIndex);
|
||
}), r.removeItem(e.fileIndex + ".title"), r.removeItem(e.fileIndex + ".content"),
|
||
r.removeItem(e.fileIndex + ".sync"), r.removeItem(e.fileIndex + ".publish"), r.removeItem(e.fileIndex + ".selectTime"),
|
||
r.removeItem(e.fileIndex + ".editorStart"), r.removeItem(e.fileIndex + ".editorEnd"),
|
||
r.removeItem(e.fileIndex + ".editorScrollTop"), r.removeItem(e.fileIndex + ".previewScrollTop"),
|
||
a.onFileDeleted(e);
|
||
}, d.getFileFromSyncIndex = function(e) {
|
||
return t.find(l, function(n) {
|
||
return t.has(n.syncLocations, e);
|
||
});
|
||
}, d.getSyncAttributes = function(e) {
|
||
var t = d.getFileFromSyncIndex(e);
|
||
return t && t.syncLocations[e];
|
||
}, d.getFileFromPublishIndex = function(e) {
|
||
return t.find(l, function(n) {
|
||
return t.has(n.publishLocations, e);
|
||
});
|
||
};
|
||
var h;
|
||
return a.addListener("onAceCreated", function(e) {
|
||
h = e;
|
||
}), a.addListener("onReady", function() {
|
||
function i() {
|
||
s.addClass("hide"), r.removeClass("hide");
|
||
var t = e.trim(s.val()), n = d.currentFile;
|
||
t && t != n.title && (n.title = t, a.onTitleChanged(n)), s.val(n.title), h ? h.focus() : o.focus();
|
||
}
|
||
var o = e("#wmd-input");
|
||
d.selectFile();
|
||
var r = e(".file-title-navbar"), s = e(".input-file-title");
|
||
e(".action-create-file").click(function() {
|
||
var e = d.createFile();
|
||
d.selectFile(e), r.click();
|
||
}), e(".action-remove-file-confirm").click(function() {
|
||
e(".modal-remove-file-confirm").modal("show");
|
||
}), e(".action-remove-file").click(function() {
|
||
d.deleteFile();
|
||
}), r.click(function() {
|
||
if (window.viewerMode !== !0) {
|
||
r.addClass("hide");
|
||
var e = s.removeClass("hide");
|
||
t.defer(function() {
|
||
e.focus().get(0).select();
|
||
});
|
||
}
|
||
}), s.blur(function() {
|
||
i();
|
||
}).keyup(function(e) {
|
||
13 == e.keyCode && i(), 27 == e.keyCode && (s.val(""), i());
|
||
}), e(".action-open-stackedit").click(function() {
|
||
window.location.href = ".";
|
||
}), e(".action-edit-document").click(function() {
|
||
var e = o.val();
|
||
void 0 !== h && (e = h.getValue());
|
||
var t = d.currentFile.title, n = d.createFile(t, e);
|
||
d.selectFile(n), window.location.href = ".";
|
||
}), e(".action-welcome-file").click(function() {
|
||
var e = d.createFile(n.WELCOME_DOCUMENT_TITLE, u);
|
||
d.selectFile(e);
|
||
});
|
||
}), a.onFileMgrCreated(d), d;
|
||
}), define("classes/Provider", [], function() {
|
||
function e(e, t) {
|
||
this.providerId = e, this.providerName = t, this.isPublishEnabled = !0;
|
||
}
|
||
return e;
|
||
}), define("classes/AsyncTask", [ "underscore", "constants", "utils", "eventMgr" ], function(e, t, n, i) {
|
||
function o(e) {
|
||
this.finished = !1, this.timeout = t.ASYNC_TASK_DEFAULT_TIMEOUT, this.retryCounter = 0,
|
||
this.runCallbacks = [], this.successCallbacks = [], this.errorCallbacks = [], this.force = e;
|
||
}
|
||
function r() {
|
||
if (c === !0) return l + u.timeout < n.currentTime && u.error(new Error("A timeout occurred.")),
|
||
void 0;
|
||
if (void 0 === u) {
|
||
if (0 === a.length || !a[0].force && h === !1) return;
|
||
u = a.shift(), l = n.currentTime, d === !1 && (d = !0, i.onAsyncRunning(!0));
|
||
}
|
||
l <= n.currentTime && (c = !0, u.chain());
|
||
}
|
||
function s(t, n, o) {
|
||
try {
|
||
e.each(n, function(e) {
|
||
e(o);
|
||
});
|
||
} finally {
|
||
t.finished = !0, u === t && (u = void 0, c = !1), 0 === a.length ? (d = !1, i.onAsyncRunning(!1)) : r();
|
||
}
|
||
}
|
||
var a = [];
|
||
o.prototype.onRun = function(e) {
|
||
this.runCallbacks.push(e);
|
||
}, o.prototype.onSuccess = function(e) {
|
||
this.successCallbacks.push(e);
|
||
}, o.prototype.onError = function(e) {
|
||
this.errorCallbacks.push(e);
|
||
};
|
||
var l = 0;
|
||
o.prototype.chain = function(e) {
|
||
if (l = n.currentTime, n.logStackTrace(), this.finished !== !0) {
|
||
if (void 0 === this.queue && (this.queue = this.runCallbacks.slice()), void 0 !== e) return e(),
|
||
void 0;
|
||
if (0 === this.queue.length) return s(this, this.successCallbacks), void 0;
|
||
var t = this.queue.shift();
|
||
t();
|
||
}
|
||
}, o.prototype.error = function(e) {
|
||
if (n.logStackTrace(), this.finished !== !0) throw e = e || new Error("Unknown error"),
|
||
e.message && i.onError(e), s(this, this.errorCallbacks, e), e;
|
||
};
|
||
var c = !1;
|
||
o.prototype.retry = function(e, t) {
|
||
if (this.finished !== !0) {
|
||
if (t = t || 5, this.queue = void 0, this.retryCounter >= t) return this.error(e),
|
||
void 0;
|
||
var i = 1e3 * Math.pow(2, this.retryCounter++);
|
||
l = n.currentTime + i, c = !1, r();
|
||
}
|
||
}, o.prototype.enqueue = function() {
|
||
a.push(this), r();
|
||
};
|
||
var u, d = !1, h = !1;
|
||
return i.addListener("onUserActive", function() {
|
||
h = !0;
|
||
}), i.addListener("onPeriodicRun", r), o;
|
||
}), define("helpers/dropboxHelper", [ "jquery", "underscore", "constants", "core", "storage", "logger", "settings", "eventMgr", "classes/AsyncTask" ], function(e, t, n, i, o, r, s, a, l) {
|
||
function c(t) {
|
||
t.onRun(function() {
|
||
return m === !0 ? (p = void 0, t.error(new Error("Operation not available in offline mode.|stopPublish")),
|
||
void 0) : void 0 !== p ? (t.chain(), void 0) : (e.ajax({
|
||
url: "libs/dropbox.min.js",
|
||
dataType: "script",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function() {
|
||
p = new Dropbox.Client({
|
||
key: s.dropboxFullAccess === !0 ? n.DROPBOX_APP_KEY : n.DROPBOX_RESTRICTED_APP_KEY,
|
||
secret: s.dropboxFullAccess === !0 ? n.DROPBOX_APP_SECRET : n.DROPBOX_RESTRICTED_APP_SECRET
|
||
}), p.authDriver(new Dropbox.AuthDriver.Popup({
|
||
receiverUrl: n.BASE_URL + "html/dropbox-oauth-receiver.html",
|
||
rememberUser: !0
|
||
})), t.chain();
|
||
}).fail(function(e) {
|
||
var n = {
|
||
status: e.status,
|
||
responseText: e.statusText
|
||
};
|
||
d(n, t);
|
||
}), void 0);
|
||
});
|
||
}
|
||
function u(e) {
|
||
e.onRun(function() {
|
||
function t() {
|
||
i.redirectConfirm("You are being redirected to <strong>Dropbox</strong> authorization page.", function() {
|
||
e.chain(o);
|
||
}, function() {
|
||
e.error(new Error("Operation canceled."));
|
||
});
|
||
}
|
||
function o() {
|
||
r === !1 ? e.timeout = n.ASYNC_TASK_LONG_TIMEOUT : p.reset(), p.authenticate({
|
||
interactive: !r
|
||
}, function(n, i) {
|
||
return i.isAuthenticated() === !0 ? (f = !0, e.chain(), void 0) : r === !0 ? (r = !1,
|
||
e.chain(t), void 0) : (e.error(new Error("Access to Dropbox account is not authorized.")),
|
||
void 0);
|
||
});
|
||
}
|
||
if (f === !0) return e.chain(), void 0;
|
||
var r = !0;
|
||
e.chain(o);
|
||
});
|
||
}
|
||
function d(e, n) {
|
||
var s = !0;
|
||
if (e) if (r.error(e), "string" == typeof e) s = e; else {
|
||
if (s = "Dropbox error (" + e.status + ": " + e.responseText + ").", 401 === e.status || 403 === e.status) return f = !1,
|
||
s = "Access to Dropbox account is not authorized.", n.retry(new Error(s), 1), void 0;
|
||
if (400 === e.status && -1 !== e.responseText.indexOf("oauth_nonce")) return t.each(t.keys(o), function(e) {
|
||
0 === e.indexOf("dropbox-auth") && o.removeItem(e);
|
||
}), f = !1, n.retry(new Error(s), 1), void 0;
|
||
e.status <= 0 && (p = void 0, f = !1, i.setOffline(), s = "|stopPublish");
|
||
}
|
||
n.error(new Error(s));
|
||
}
|
||
function h(t) {
|
||
t.onRun(function() {
|
||
function o() {
|
||
i.redirectConfirm("You are being redirected to <strong>Dropbox Chooser</strong> page.", function() {
|
||
t.chain();
|
||
}, function() {
|
||
t.error(new Error("Operation canceled."));
|
||
});
|
||
}
|
||
return v === !0 ? (t.chain(), void 0) : (e.ajax({
|
||
url: "https://www.dropbox.com/static/api/1/dropbox.js",
|
||
dataType: "script",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function() {
|
||
v = !0, t.chain(o);
|
||
}).fail(function(e) {
|
||
var n = {
|
||
status: e.status,
|
||
responseText: e.statusText
|
||
};
|
||
d(n, t);
|
||
}), void 0);
|
||
});
|
||
}
|
||
var p, f = !1, g = {}, m = !1;
|
||
a.addListener("onOfflineChanged", function(e) {
|
||
m = e;
|
||
}), g.upload = function(e, t, n) {
|
||
var i, o = new l();
|
||
c(o), u(o), o.onRun(function() {
|
||
p.writeFile(e, t, function(t, n) {
|
||
return t ? (400 === t.status && (t = 'Could not upload document into path "' + e + '".'),
|
||
d(t, o), void 0) : (i = n, o.chain(), void 0);
|
||
});
|
||
}), o.onSuccess(function() {
|
||
n(void 0, i);
|
||
}), o.onError(function(e) {
|
||
n(e);
|
||
}), o.enqueue();
|
||
}, g.checkChanges = function(e, t) {
|
||
var n = [], i = e || 0, o = new l();
|
||
c(o), u(o), o.onRun(function() {
|
||
function e() {
|
||
p.pullChanges(i, function(t, r) {
|
||
return t ? (d(t, o), void 0) : (i = r.cursor(), void 0 !== r.changes && (n = n.concat(r.changes)),
|
||
r.shouldPullAgain ? o.chain(e) : o.chain(), void 0);
|
||
});
|
||
}
|
||
o.chain(e);
|
||
}), o.onSuccess(function() {
|
||
t(void 0, n, i);
|
||
}), o.onError(function(e) {
|
||
t(e);
|
||
}), o.enqueue();
|
||
}, g.downloadMetadata = function(e, t) {
|
||
var n = [], i = new l();
|
||
c(i), u(i), i.onRun(function() {
|
||
function t() {
|
||
if (0 === e.length) return i.chain(), void 0;
|
||
var o = e[0];
|
||
p.stat(o, function(o, r) {
|
||
return r ? (n.push(r), e.shift(), i.chain(t), void 0) : (d(o, i), void 0);
|
||
});
|
||
}
|
||
i.chain(t);
|
||
}), i.onSuccess(function() {
|
||
t(void 0, n);
|
||
}), i.onError(function(e) {
|
||
t(e);
|
||
}), i.enqueue();
|
||
}, g.downloadContent = function(e, t) {
|
||
var n = [], i = new l();
|
||
c(i), u(i), i.onRun(function() {
|
||
function t() {
|
||
if (0 === e.length) return i.chain(), void 0;
|
||
var o = e[0];
|
||
n.push(o);
|
||
var r;
|
||
return o.isFile === !0 ? r = o : void 0 !== o.wasRemoved && (r = o.stat), r ? (p.readFile(r.path, function(n, o) {
|
||
return o ? (r.content = o, e.shift(), i.chain(t), void 0) : (d(n, i), void 0);
|
||
}), void 0) : (e.shift(), i.chain(t), void 0);
|
||
}
|
||
i.chain(t);
|
||
}), i.onSuccess(function() {
|
||
t(void 0, n);
|
||
}), i.onError(function(e) {
|
||
t(e);
|
||
}), i.enqueue();
|
||
};
|
||
var v = !1;
|
||
return g.picker = function(e) {
|
||
var t = [], i = new l();
|
||
i.timeout = n.ASYNC_TASK_LONG_TIMEOUT, c(i), h(i), i.onRun(function() {
|
||
var e = {};
|
||
e.multiselect = !0, e.linkType = "direct", e.success = function(e) {
|
||
for (var n = 0; n < e.length; n++) {
|
||
var o = e[n].link;
|
||
o = o.replace(/.*\/view\/[^\/]*/, ""), t.push(decodeURI(o));
|
||
}
|
||
i.chain();
|
||
}, e.cancel = function() {
|
||
i.chain();
|
||
}, Dropbox.choose(e);
|
||
}), i.onSuccess(function() {
|
||
e(void 0, t);
|
||
}), i.onError(function(t) {
|
||
e(t);
|
||
}), i.enqueue();
|
||
}, g;
|
||
}), define("providers/dropboxProvider", [ "underscore", "utils", "storage", "classes/Provider", "eventMgr", "fileMgr", "helpers/dropboxHelper" ], function(e, t, n, i, o, r, s) {
|
||
function a(e) {
|
||
return void 0 === e ? void 0 : e.match(/^[^\\<>:"\|?\*]+$/) ? 0 !== e.indexOf("/") ? "/" + e : e : (o.onError('"' + e + '" contains invalid characters.'),
|
||
void 0);
|
||
}
|
||
function l(e) {
|
||
return "sync." + d + "." + encodeURIComponent(e.toLowerCase());
|
||
}
|
||
function c(e, n, i) {
|
||
var o = {};
|
||
return o.provider = h, o.path = e, o.version = n, o.contentCRC = t.crc32(i), o.syncIndex = l(e),
|
||
o;
|
||
}
|
||
function u(t) {
|
||
s.downloadMetadata(t, function(t, n) {
|
||
t || s.downloadContent(n, function(t, n) {
|
||
if (!t) {
|
||
var i = [];
|
||
e.each(n, function(e) {
|
||
var t = c(e.path, e.versionTag, e.content), n = {};
|
||
n[t.syncIndex] = t;
|
||
var o = r.createFile(e.name, e.content, n);
|
||
r.selectFile(o), i.push(o);
|
||
}), 0 !== i.length && o.onSyncImportSuccess(i, h);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
var d = "dropbox", h = new i(d, "Dropbox");
|
||
return h.defaultPublishFormat = "template", h.importFiles = function() {
|
||
s.picker(function(t, n) {
|
||
if (!t && 0 !== n.length) {
|
||
var i = [];
|
||
e.each(n, function(e) {
|
||
var t = l(e), n = r.getFileFromSyncIndex(t);
|
||
return void 0 !== n ? (o.onError('"' + n.title + '" was already imported.'), void 0) : (i.push(e),
|
||
void 0);
|
||
}), u(i);
|
||
}
|
||
});
|
||
}, h.exportFile = function(e, n, i, u) {
|
||
var d = t.getInputTextValue("#input-sync-export-dropbox-path", e);
|
||
if (d = a(d), void 0 === d) return u(!0), void 0;
|
||
var h = l(d), p = r.getFileFromSyncIndex(h);
|
||
if (void 0 !== p) {
|
||
var f = p.title;
|
||
return o.onError('File path is already synchronized with "' + f + '".'), u(!0),
|
||
void 0;
|
||
}
|
||
s.upload(d, i, function(e, t) {
|
||
if (e) return u(e), void 0;
|
||
var n = c(t.path, t.versionTag, i);
|
||
u(void 0, n);
|
||
});
|
||
}, h.syncUp = function(e, t, n, i, o, r) {
|
||
var a = o.contentCRC;
|
||
return t == a ? (r(void 0, !1), void 0) : (s.upload(o.path, e, function(e, n) {
|
||
return e ? (r(e, !0), void 0) : (o.version = n.versionTag, o.contentCRC = t, r(void 0, !0),
|
||
void 0);
|
||
}), void 0);
|
||
}, h.syncDown = function(i) {
|
||
var a = n[d + ".lastChangeId"];
|
||
s.checkChanges(a, function(a, c, u) {
|
||
if (a) return i(a), void 0;
|
||
var h = [];
|
||
e.each(c, function(e) {
|
||
var t = l(e.path), n = r.getSyncAttributes(t);
|
||
return void 0 !== n ? (e.syncAttributes = n, e.wasRemoved === !0 ? (h.push(e), void 0) : (n.version != e.stat.versionTag && h.push(e),
|
||
void 0)) : void 0;
|
||
}), s.downloadContent(h, function(s, a) {
|
||
return s ? (i(s), void 0) : (e.each(a, function(e) {
|
||
var n = e.syncAttributes, i = n.syncIndex, s = r.getFileFromSyncIndex(i);
|
||
if (void 0 !== s) {
|
||
var a = s.title;
|
||
if (e.wasRemoved === !0) return o.onError('"' + a + '" has been removed from Dropbox.'),
|
||
s.removeSyncLocation(n), o.onSyncRemoved(s, n), void 0;
|
||
var l = s.content, c = n.contentCRC != t.crc32(l), u = e.stat, d = t.crc32(u.content), h = n.contentCRC != d, p = l != u.content;
|
||
p === !0 && c === !0 && h === !0 && (r.createFile(a + " (backup)", l), o.onMessage('Conflict detected on "' + a + '". A backup has been created locally.')),
|
||
p && h === !0 && (s.content = u.content, o.onContentChanged(s), o.onMessage('"' + a + '" has been updated from Dropbox.'),
|
||
r.currentFile === s && r.selectFile()), n.version = u.versionTag, n.contentCRC = d,
|
||
t.storeAttributes(n);
|
||
}
|
||
}), n[d + ".lastChangeId"] = u, i(), void 0);
|
||
});
|
||
});
|
||
}, h.publish = function(e, t, n, i, o) {
|
||
var r = a(e.path);
|
||
return void 0 === r ? (o(!0), void 0) : (s.upload(r, i, o), void 0);
|
||
}, h.newPublishAttributes = function(e) {
|
||
var n = {};
|
||
return n.path = t.getInputTextValue("#input-publish-dropbox-path", e), e.isPropagationStopped() ? void 0 : n;
|
||
}, h;
|
||
}), define("helpers/googleHelper", [ "underscore", "jquery", "constants", "core", "utils", "storage", "logger", "settings", "eventMgr", "classes/AsyncTask" ], function(e, t, n, i, o, r, s, a, l, c) {
|
||
function u(t) {
|
||
var n = {
|
||
profile: !0
|
||
}, i = !0;
|
||
e.each((r[t + ".permissions"] || "").split(";"), function(e) {
|
||
e && (n[e] = !0);
|
||
}), this.setRefreshFlag = function() {
|
||
i = !0;
|
||
}, this.isAuthorized = function(t) {
|
||
return i === !1 && e.has(n, t);
|
||
}, this.add = function(o) {
|
||
n[o] = !0, r[t + ".permissions"] = e.keys(n).join(";"), i = !1;
|
||
}, this.getListWithNew = function(t) {
|
||
var i = e.keys(n);
|
||
return e.has(n, t) || i.push(t), i;
|
||
};
|
||
var o = r[t + ".userId"];
|
||
this.setUserId = function(e) {
|
||
o = e, r[t + ".userId"] = o;
|
||
}, this.getUserId = function() {
|
||
return o;
|
||
};
|
||
}
|
||
function d(e) {
|
||
e.onRun(function() {
|
||
return y === !0 ? (m = !1, e.error(new Error("Operation not available in offline mode.|stopPublish")),
|
||
void 0) : m === !0 ? (e.chain(), void 0) : (window.delayedFunction = function() {
|
||
gapi.load("client,drive-realtime", function() {
|
||
gapi.client.load("drive", "v2", function() {
|
||
m = !0, e.chain();
|
||
});
|
||
});
|
||
}, t.ajax({
|
||
url: "https://apis.google.com/js/api.js?onload=runDelayedFunction",
|
||
dataType: "script",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).fail(function(t) {
|
||
var n = {
|
||
code: t.status,
|
||
message: t.statusText
|
||
};
|
||
f(n, e);
|
||
}), void 0);
|
||
});
|
||
}
|
||
function h(o, r, s) {
|
||
var a = v[s];
|
||
a || (a = new u(s), v[s] = a), o.onRun(function() {
|
||
function s() {
|
||
t.ajax({
|
||
url: "https://www.googleapis.com/oauth2/v1/tokeninfo",
|
||
data: {
|
||
access_token: d.access_token
|
||
},
|
||
timeout: n.AJAX_TIMEOUT,
|
||
type: "GET"
|
||
}).done(function(e) {
|
||
a.getUserId() && a.getUserId() != e.user_id ? u() : (a.setUserId(e.user_id), a.add(r),
|
||
a.token = d, o.chain());
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
f(t, o);
|
||
});
|
||
}
|
||
function l() {
|
||
if (g > 5) return o.error(new Error("Unable to authenticate user " + a.getUserId() + ", please sign in with Google.")),
|
||
void 0;
|
||
h === !1 && (o.timeout = n.ASYNC_TASK_LONG_TIMEOUT);
|
||
var t = e.chain(w).pick(a.getListWithNew(r)).flatten().value();
|
||
gapi.auth.authorize({
|
||
client_id: n.GOOGLE_CLIENT_ID,
|
||
scope: t,
|
||
immediate: h,
|
||
authuser: h === !1 ? "" : g
|
||
}, function(e) {
|
||
d = gapi.auth.getToken(), gapi.auth.setToken(p), !e || e.error ? m === !0 && h === !0 ? (h = !1,
|
||
o.chain(c)) : o.error(new Error("Access to Google account is not authorized.")) : (h === !0 && g++,
|
||
o.chain(s));
|
||
});
|
||
}
|
||
function c() {
|
||
return h === !0 ? (o.chain(l), void 0) : (i.redirectConfirm("You are being redirected to <strong>Google</strong> authorization page.", function() {
|
||
o.chain(l);
|
||
}, function() {
|
||
o.error(new Error("Operation canceled."));
|
||
}), void 0);
|
||
}
|
||
function u() {
|
||
return h = !0, a.token && a.isAuthorized(r) ? (o.chain(), void 0) : (a.getUserId() || (h = !1),
|
||
o.chain(c), void 0);
|
||
}
|
||
var d, h, p = gapi.auth.getToken(), g = 0;
|
||
u();
|
||
});
|
||
}
|
||
function p(e, t) {
|
||
var n = gapi.auth.getToken(), i = v[e];
|
||
gapi.auth.setToken(i.token), t(), gapi.auth.setToken(n);
|
||
}
|
||
function f(t, n) {
|
||
var o;
|
||
if (t) if (s.error(t), "string" == typeof t) o = t; else {
|
||
if (o = "Google error (" + t.code + ": " + t.message + ").", t.code >= 500 && t.code < 600) return n.retry(new Error(o)),
|
||
void 0;
|
||
if (401 === t.code || 403 === t.code || "token_refresh_required" == t.code) return e.each(v, function(e) {
|
||
e.setRefreshFlag();
|
||
}), o = "Access to Google account is not authorized.", n.retry(new Error(o), 1),
|
||
void 0;
|
||
(0 === t.code || -1 === t.code) && (m = !1, e.each(v, function(e) {
|
||
e.setRefreshFlag();
|
||
}), i.setOffline(), o = "|stopPublish");
|
||
}
|
||
n.error(new Error(o));
|
||
}
|
||
function g(e) {
|
||
e.onRun(function() {
|
||
return x === !0 ? (e.chain(), void 0) : (t.ajax({
|
||
url: "//www.google.com/jsapi",
|
||
data: {
|
||
key: n.GOOGLE_API_KEY
|
||
},
|
||
dataType: "script",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function() {
|
||
google.load("picker", "1", {
|
||
callback: function() {
|
||
e.chain();
|
||
}
|
||
}), x = !0;
|
||
}).fail(function(t) {
|
||
var n = {
|
||
code: t.status,
|
||
message: t.statusText
|
||
};
|
||
f(n, e);
|
||
}), void 0);
|
||
});
|
||
}
|
||
var m = !1, v = {}, b = {}, y = !1;
|
||
l.addListener("onOfflineChanged", function(e) {
|
||
y = e;
|
||
});
|
||
var w = {
|
||
profile: [ "https://www.googleapis.com/auth/userinfo.profile" ],
|
||
gdrive: [ "https://www.googleapis.com/auth/drive.install", a.gdriveFullAccess === !0 ? "https://www.googleapis.com/auth/drive" : "https://www.googleapis.com/auth/drive.file" ],
|
||
blogger: [ "https://www.googleapis.com/auth/blogger" ],
|
||
picasa: [ "https://picasaweb.google.com/data/" ]
|
||
};
|
||
b.refreshGdriveToken = function(e) {
|
||
var t = new c();
|
||
d(t);
|
||
var n = v[e];
|
||
n && n.setRefreshFlag(), h(t, "gdrive", e), t.enqueue();
|
||
}, b.upload = function(e, t, n, i, s, a, l, u) {
|
||
var g, m = new c();
|
||
d(m), h(m, "gdrive", l), m.onRun(function() {
|
||
var a = "-------314159265358979323846", c = "\r\n--" + a + "\r\n", u = "\r\n--" + a + "--";
|
||
s = s || "text/x-markdown";
|
||
var d = {
|
||
title: n,
|
||
mimeType: s
|
||
};
|
||
t && (d.parents = [ {
|
||
kind: "drive#fileLink",
|
||
id: t
|
||
} ]);
|
||
var h = "/upload/drive/v2/files", v = "POST";
|
||
e && (h += "/" + e, v = "PUT");
|
||
var b = {
|
||
"Content-Type": 'multipart/mixed; boundary="' + a + '"'
|
||
}, y = o.encodeBase64(i), w = [ c, "Content-Type: application/json\r\n\r\n", JSON.stringify(d), c, "Content-Type: ", s, "\r\n", "Content-Transfer-Encoding: base64\r\n", "\r\n", y, u ].join("");
|
||
p(l, function() {
|
||
var t = gapi.client.request({
|
||
path: h,
|
||
method: v,
|
||
params: {
|
||
uploadType: "multipart"
|
||
},
|
||
headers: b,
|
||
body: w
|
||
});
|
||
t.execute(function(t) {
|
||
if (t && t.id) return g = t, g.content = i, m.chain(), void 0;
|
||
var n = t.error;
|
||
void 0 !== n && void 0 !== e && (404 === n.code ? n = 'File ID "' + e + '" not found on Google Drive.|removePublish' : 412 === n.code && (r.removeItem(l + ".gdrive.lastChangeId"),
|
||
n = 'Conflict on file ID "' + e + '". Please restart the synchronization.')), f(n, m);
|
||
});
|
||
});
|
||
}), m.onSuccess(function() {
|
||
u(void 0, g);
|
||
}), m.onError(function(e) {
|
||
u(e);
|
||
}), m.enqueue();
|
||
}, b.rename = function(e, t, n, i) {
|
||
var o, r = new c();
|
||
d(r), h(r, "gdrive", n), r.onRun(function() {
|
||
var i = {
|
||
title: t
|
||
};
|
||
p(n, function() {
|
||
var t = gapi.client.drive.files.patch({
|
||
fileId: e,
|
||
resource: i
|
||
});
|
||
t.execute(function(t) {
|
||
if (t && t.id) return o = t, r.chain(), void 0;
|
||
var n = t.error;
|
||
void 0 !== n && void 0 !== e && 404 === n.code && (n = 'File ID "' + e + '" not found on Google Drive.|removePublish'),
|
||
f(n, r);
|
||
});
|
||
});
|
||
}), r.onSuccess(function() {
|
||
i(void 0, o);
|
||
}), r.onError(function(e) {
|
||
i(e);
|
||
}), r.enqueue();
|
||
}, b.createRealtimeFile = function(e, t, n, i) {
|
||
var o, r = new c();
|
||
d(r), h(r, "gdrive", n), r.onRun(function() {
|
||
var i = {
|
||
title: t,
|
||
mimeType: "application/vnd.google-apps.drive-sdk"
|
||
};
|
||
void 0 !== e && (i.parents = [ {
|
||
kind: "drive#fileLink",
|
||
id: e
|
||
} ]), p(n, function() {
|
||
var e = gapi.client.drive.files.insert({
|
||
resource: i
|
||
});
|
||
e.execute(function(e) {
|
||
return e && e.id ? (o = e, r.chain(), void 0) : (f(e.error, r), void 0);
|
||
});
|
||
});
|
||
}), r.onSuccess(function() {
|
||
i(void 0, o);
|
||
}), r.onError(function(e) {
|
||
i(e);
|
||
}), r.enqueue();
|
||
}, b.checkChanges = function(e, t, n) {
|
||
var i = [], o = e || 0, r = new c();
|
||
d(r), h(r, "gdrive", t), r.onRun(function() {
|
||
function e() {
|
||
p(t, function() {
|
||
var t;
|
||
t = void 0 === n ? gapi.client.drive.changes.list({
|
||
startChangeId: o + 1
|
||
}) : gapi.client.drive.changes.list({
|
||
pageToken: n
|
||
}), t.execute(function(t) {
|
||
return t && t.largestChangeId ? (o = t.largestChangeId, n = t.nextPageToken, void 0 !== t.items && (i = i.concat(t.items)),
|
||
void 0 !== n ? r.chain(e) : r.chain(), void 0) : (f(t.error, r), void 0);
|
||
});
|
||
});
|
||
}
|
||
var n;
|
||
r.chain(e);
|
||
}), r.onSuccess(function() {
|
||
n(void 0, i, o);
|
||
}), r.onError(function(e) {
|
||
n(e);
|
||
}), r.enqueue();
|
||
}, b.downloadMetadata = function(e, i, o, r) {
|
||
var s = [], a = new c();
|
||
d(a), r || h(a, "gdrive", i), a.onRun(function() {
|
||
function o() {
|
||
if (0 === e.length) return a.chain(), void 0;
|
||
var r = e[0], l = {}, c = v[i];
|
||
c && c.token && (l.Authorization = "Bearer " + c.token.access_token), t.ajax({
|
||
url: "https://www.googleapis.com/drive/v2/files/" + r,
|
||
headers: l,
|
||
data: {
|
||
key: n.GOOGLE_API_KEY
|
||
},
|
||
dataType: "json",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function(t) {
|
||
s.push(t), e.shift(), a.chain(o);
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
404 === t.code && (t = 'File ID "' + r + '" not found on Google Drive.'), f(t, a);
|
||
});
|
||
}
|
||
a.chain(o);
|
||
}), a.onSuccess(function() {
|
||
o(void 0, s);
|
||
}), a.onError(function(e) {
|
||
o(e);
|
||
}), a.enqueue();
|
||
}, b.downloadContent = function(e, i, o, r) {
|
||
var s = [], a = new c();
|
||
a.timeout = n.ASYNC_TASK_LONG_TIMEOUT, d(a), r || h(a, "gdrive", i), a.onRun(function() {
|
||
function o() {
|
||
if (0 === e.length) return a.chain(), void 0;
|
||
var r = e[0];
|
||
s.push(r);
|
||
var l;
|
||
if ("drive#file" == r.kind ? l = r : "drive#change" == r.kind && (l = r.file), !l) return e.shift(),
|
||
a.chain(o), void 0;
|
||
if (0 === l.mimeType.indexOf("application/vnd.google-apps.drive-sdk")) return l.content = "",
|
||
l.isRealtime = !0, e.shift(), a.chain(o), void 0;
|
||
var c = {}, u = v[i];
|
||
u && u.token && (c.Authorization = "Bearer " + u.token.access_token), t.ajax({
|
||
url: l.downloadUrl,
|
||
headers: c,
|
||
data: {
|
||
key: n.GOOGLE_API_KEY
|
||
},
|
||
dataType: "text",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function(t) {
|
||
l.content = t, e.shift(), a.chain(o);
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
f(t, a);
|
||
});
|
||
}
|
||
a.chain(o);
|
||
}), a.onSuccess(function() {
|
||
o(void 0, s);
|
||
}), a.onError(function(e) {
|
||
o(e);
|
||
}), a.enqueue();
|
||
}, b.loadRealtime = function(e, t, n, i, o) {
|
||
var r, s = new c();
|
||
d(s), h(s, "gdrive", n), s.onRun(function() {
|
||
var i = v[n];
|
||
gapi.auth.setToken(i.token), gapi.drive.realtime.load(e, function(e) {
|
||
r = e, s.chain();
|
||
}, function(e) {
|
||
var n = e.createString(t);
|
||
e.getRoot().set("content", n);
|
||
}, function(e) {
|
||
o(e), s.error(new Error(e.message));
|
||
});
|
||
}), s.onSuccess(function() {
|
||
i(void 0, r);
|
||
}), s.onError(function(e) {
|
||
i(e);
|
||
}), s.enqueue();
|
||
}, b.uploadImg = function(e, i, o, r) {
|
||
var s, a = "google.picasa0", l = new c();
|
||
d(l), h(l, "picasa", a), l.onRun(function() {
|
||
var r = {
|
||
Slug: e
|
||
};
|
||
e.match(/.jpe?g$/i) ? r["Content-Type"] = "image/jpeg" : e.match(/.png$/i) ? r["Content-Type"] = "image/png" : e.match(/.gif$/i) && (r["Content-Type"] = "image/gif");
|
||
var c = v[a];
|
||
c && c.token && (r.Authorization = "Bearer " + c.token.access_token), t.ajax({
|
||
url: n.PICASA_PROXY_URL + "upload/" + o,
|
||
headers: r,
|
||
data: i,
|
||
processData: !1,
|
||
dataType: "xml",
|
||
timeout: n.AJAX_TIMEOUT,
|
||
type: "POST"
|
||
}).done(function(e) {
|
||
s = e, l.chain();
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
200 == t.code && (t.message = e.responseText), f(t, l);
|
||
});
|
||
}), l.onSuccess(function() {
|
||
r(void 0, s);
|
||
}), l.onError(function(e) {
|
||
r(e);
|
||
}), l.enqueue();
|
||
};
|
||
var x = !1;
|
||
return b.picker = function(e, i, r) {
|
||
function s() {
|
||
void 0 !== a && (a.setVisible(!1), t(".modal-backdrop, .picker").remove());
|
||
}
|
||
var a, l = [], u = new c();
|
||
u.timeout = n.ASYNC_TASK_LONG_TIMEOUT, d(u), ("doc" == i || "folder" == i) && h(u, "gdrive", r),
|
||
g(u), u.onRun(function() {
|
||
var e = v[r], c = new google.picker.PickerBuilder();
|
||
c.setAppId(n.GOOGLE_DRIVE_APP_ID);
|
||
var d;
|
||
"doc" == i ? (d = new google.picker.DocsView(google.picker.ViewId.DOCS), d.setParent("root"),
|
||
d.setIncludeFolders(!0), d.setMimeTypes([ "text/x-markdown", "text/plain", "application/octet-stream", "application/vnd.google-apps.drive-sdk." + n.GOOGLE_DRIVE_APP_ID ].join(",")),
|
||
c.enableFeature(google.picker.Feature.NAV_HIDDEN), c.enableFeature(google.picker.Feature.MULTISELECT_ENABLED),
|
||
c.addView(d), e && e.token && c.setOAuthToken(e.token.access_token)) : "folder" == i ? (d = new google.picker.DocsView(google.picker.ViewId.FOLDERS),
|
||
d.setParent("root"), d.setIncludeFolders(!0), d.setSelectFolderEnabled(!0), d.setMimeTypes("application/vnd.google-apps.folder"),
|
||
c.enableFeature(google.picker.Feature.NAV_HIDDEN), c.addView(d), e && e.token && c.setOAuthToken(e.token.access_token)) : "img" == i && (d = new google.picker.PhotosView(),
|
||
d.setType("flat"), c.addView(d), d = new google.picker.PhotosView(), d.setType("ofuser"),
|
||
c.addView(d), c.addView(google.picker.ViewId.PHOTO_UPLOAD)), c.setCallback(function(e) {
|
||
(e.action == google.picker.Action.PICKED || e.action == google.picker.Action.CANCEL) && (e.action == google.picker.Action.PICKED && (l = e.docs),
|
||
s(), u.chain());
|
||
}), a = c.build(), t(o.createBackdrop()).click(function() {
|
||
s(), u.chain();
|
||
}), a.setVisible(!0);
|
||
}), u.onSuccess(function() {
|
||
e(void 0, l);
|
||
}), u.onError(function(t) {
|
||
s(), e(t);
|
||
}), u.enqueue();
|
||
}, b.uploadBlogger = function(e, i, o, r, s, a, l, u, p) {
|
||
var g = "google.blogger0", m = new c();
|
||
d(m), h(m, "blogger", g), m.onRun(function() {
|
||
function c() {
|
||
var e = "https://www.googleapis.com/blogger/v3/blogs/" + i + "/posts/", s = {
|
||
kind: "blogger#post",
|
||
blog: {
|
||
id: i
|
||
},
|
||
labels: r,
|
||
title: l,
|
||
content: u
|
||
}, a = "POST";
|
||
void 0 !== o && (e += o, s.id = o, a = "PUT"), t.ajax({
|
||
url: e,
|
||
data: JSON.stringify(s),
|
||
headers: p,
|
||
type: a,
|
||
contentType: "application/json",
|
||
dataType: "json",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function(e) {
|
||
o = e.id, m.chain(d);
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
404 === t.code && void 0 !== o && (t = "Post " + o + " not found on Blogger.|removePublish"),
|
||
f(t, m);
|
||
});
|
||
}
|
||
function d() {
|
||
var e = "https://www.googleapis.com/blogger/v3/blogs/" + i + "/posts/" + o;
|
||
s ? e += "/revert" : (e += "/publish", a && (e += "?publishDate=" + a.toISOString())),
|
||
t.ajax({
|
||
url: e,
|
||
headers: p,
|
||
type: "POST",
|
||
dataType: "json",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function() {
|
||
m.chain();
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
404 === t.code && (t = "Post " + o + " not found on Blogger.|removePublish"), f(t, m);
|
||
});
|
||
}
|
||
function h() {
|
||
return void 0 !== i ? (m.chain(c), void 0) : (t.ajax({
|
||
url: "https://www.googleapis.com/blogger/v3/blogs/byurl",
|
||
data: {
|
||
url: e
|
||
},
|
||
headers: p,
|
||
dataType: "json",
|
||
timeout: n.AJAX_TIMEOUT
|
||
}).done(function(e) {
|
||
i = e.id, m.chain(c);
|
||
}).fail(function(t) {
|
||
var n = {
|
||
code: t.status,
|
||
message: t.statusText
|
||
};
|
||
404 === n.code && (n = 'Blog "' + e + '" not found on Blogger.|removePublish'),
|
||
f(n, m);
|
||
}), void 0);
|
||
}
|
||
var p = {}, b = v[g];
|
||
b && b.token && (p.Authorization = "Bearer " + b.token.access_token), m.chain(h);
|
||
}), m.onSuccess(function() {
|
||
p(void 0, i, o);
|
||
}), m.onError(function(e) {
|
||
p(e);
|
||
}), m.enqueue();
|
||
}, window.delayedFunction = void 0, window.runDelayedFunction = function() {
|
||
void 0 !== window.delayedFunction && window.delayedFunction();
|
||
}, b;
|
||
}), define("text!html/dialogExportGdrive.html", [], function() {
|
||
return '<div class="modal-dialog">\n <div class="modal-content">\n\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal"\n aria-hidden="true">×</button>\n <h3 class="modal-title">Export to <%= providerName %></h3>\n </div>\n <div class="modal-body">\n <p>\n This will save "<span class="file-title"></span>" to your <i\n class="icon-provider-<%= providerId %>"></i>\n <code><%= providerName %></code>\n account and keep it synchronized.\n </p>\n <div class="collapse form-horizontal sync-export-<%= providerId %>-options-collapse">\n <div class="form-group">\n <label class="col-lg-3 control-label"\n for="input-sync-export-<%= providerId %>-parentid">Folder ID\n (optional)</label>\n <div class="col-lg-8">\n <div class="input-group">\n <input type="text" id="input-sync-export-<%= providerId %>-parentid"\n placeholder="FolderID" class="form-control">\n <div class="input-group-btn">\n <a class="btn btn-link export-<%= providerId %>-choose-folder"\n title="Choose folder" data-dismiss="modal"><i\n class="icon-folder-open"></i></a>\n </div>\n </div>\n <span class="help-block"> If no folder ID is supplied, the\n file will be created in your root folder. </span>\n </div>\n </div>\n <div class="form-group">\n <div class="col-lg-3 control-label"></div>\n <div class="col-lg-8">\n <label> <input id="input-sync-export-<%= providerId %>-realtime"\n type="checkbox"> Create a real time collaborative\n document\n </label>\n <span class="help-block"> Collaborative documents cannot be open outside\n StackEdit nor have multiple synchronized locations. </span>\n </div>\n </div>\n <div class="form-group">\n <label class="col-lg-3 control-label"\n for="input-sync-export-<%= providerId %>-fileid">Existing file ID\n (optional)</label>\n <div class="col-lg-8">\n <input type="text" id="input-sync-export-<%= providerId %>-fileid"\n placeholder="FileID" class="form-control"> <span\n class="help-block"> This will overwrite the existing file\n on the server. </span>\n </div>\n </div>\n </div>\n <p class="align-right"><a href="#" data-toggle="collapse" data-target=".sync-export-<%= providerId %>-options-collapse">Options...</a></p>\n <blockquote>\n <b>Tip:</b> You can move or rename the file afterwards within Google\n Drive.\n </blockquote>\n </div>\n <div class="modal-footer">\n <a href="#" class="btn btn-default" data-dismiss="modal">Cancel</a>\n <a href="#" data-dismiss="modal"\n class="btn btn-primary action-sync-export-<%= providerId %>">OK</a>\n </div>\n </div>\n</div>\n';
|
||
}), define("providers/gdriveProviderBuilder", [ "jquery", "underscore", "constants", "utils", "storage", "logger", "classes/Provider", "settings", "eventMgr", "fileMgr", "helpers/googleHelper", "text!html/dialogExportGdrive.html" ], function(e, t, n, i, o, r, s, a, l, c, u, d) {
|
||
return function(h, p, f) {
|
||
function g(e) {
|
||
return "sync." + h + "." + e;
|
||
}
|
||
function m(e, t, n, o) {
|
||
var r = {};
|
||
return r.provider = y, r.id = e, r.etag = t, r.contentCRC = i.crc32(n), r.titleCRC = i.crc32(o),
|
||
r.syncIndex = g(e), r;
|
||
}
|
||
function v(e) {
|
||
u.downloadMetadata(e, b, function(e, n) {
|
||
e || u.downloadContent(n, b, function(e, n) {
|
||
if (!e) {
|
||
var i, o = [];
|
||
t.each(n, function(e) {
|
||
var t = m(e.id, e.etag, e.content, e.title);
|
||
t.isRealtime = e.isRealtime;
|
||
var n = {};
|
||
n[t.syncIndex] = t, i = c.createFile(e.title, e.content, n), o.push(i);
|
||
}), void 0 !== i && (l.onSyncImportSuccess(o, y), c.selectFile(i));
|
||
}
|
||
});
|
||
});
|
||
}
|
||
var b = "google.gdrive" + f, y = new s(h, p);
|
||
y.defaultPublishFormat = "template", y.exportPreferencesInputIds = [ h + "-parentid", h + "-realtime" ],
|
||
y.importFiles = function() {
|
||
u.picker(function(e, n) {
|
||
if (!e && 0 !== n.length) {
|
||
var i = [];
|
||
t.each(n, function(e) {
|
||
var t = g(e.id), n = c.getFileFromSyncIndex(t);
|
||
return void 0 !== n ? (l.onError('"' + n.title + '" was already imported.'), void 0) : (i.push(e.id),
|
||
void 0);
|
||
}), v(i);
|
||
}
|
||
}, "doc", b);
|
||
}, y.exportFile = function(e, t, n, o) {
|
||
var r = i.getInputTextValue("#input-sync-export-" + h + "-fileid");
|
||
if (r) {
|
||
var s = g(r), a = c.getFileFromSyncIndex(s);
|
||
if (void 0 !== a) return l.onError('File ID is already synchronized with "' + a.title + '".'),
|
||
o(!0), void 0;
|
||
}
|
||
var d = i.getInputTextValue("#input-sync-export-" + h + "-parentid");
|
||
u.upload(r, d, t, n, void 0, void 0, b, function(e, i) {
|
||
if (e) return o(e), void 0;
|
||
var r = m(i.id, i.etag, n, t);
|
||
o(void 0, r);
|
||
});
|
||
}, y.exportRealtimeFile = function(e, t, n, o) {
|
||
var r = i.getInputTextValue("#input-sync-export-" + h + "-parentid");
|
||
u.createRealtimeFile(r, t, b, function(e, i) {
|
||
if (e) return o(e), void 0;
|
||
var r = m(i.id, i.etag, n, t);
|
||
o(void 0, r);
|
||
});
|
||
}, y.syncUp = function(e, t, n, i, o, r) {
|
||
return t == o.contentCRC && i == o.titleCRC ? (r(void 0, !1), void 0) : (u.upload(o.id, void 0, n, e, void 0, o.etag, b, function(e, n) {
|
||
return e ? (r(e, !0), void 0) : (o.etag = n.etag, o.contentCRC = t, o.titleCRC = i,
|
||
r(void 0, !0), void 0);
|
||
}), void 0);
|
||
}, y.syncUpRealtime = function(e, t, n, i, o, r) {
|
||
return i == o.titleCRC ? (r(void 0, !1), void 0) : (u.rename(o.id, n, b, function(e, t) {
|
||
return e ? (r(e, !0), void 0) : (o.etag = t.etag, o.titleCRC = i, r(void 0, !0),
|
||
void 0);
|
||
}), void 0);
|
||
}, y.syncDown = function(e) {
|
||
var n = parseInt(o[b + ".gdrive.lastChangeId"], 10);
|
||
u.checkChanges(n, b, function(n, r, s) {
|
||
if (n) return e(n), void 0;
|
||
var a = [];
|
||
t.each(r, function(e) {
|
||
var t = g(e.fileId), n = c.getSyncAttributes(t);
|
||
return void 0 !== n ? (e.syncAttributes = n, e.deleted === !0 ? (a.push(e), void 0) : (n.etag != e.file.etag && a.push(e),
|
||
void 0)) : void 0;
|
||
}), u.downloadContent(a, b, function(n, r) {
|
||
return n ? (e(n), void 0) : (t.each(r, function(e) {
|
||
var t = e.syncAttributes, n = t.syncIndex, o = c.getFileFromSyncIndex(n);
|
||
if (void 0 !== o) {
|
||
var r = o.title;
|
||
if (e.deleted === !0) return l.onError('"' + r + '" has been removed from ' + p + "."),
|
||
o.removeSyncLocation(t), l.onSyncRemoved(o, t), t.isRealtime === !0 && c.currentFile === o && y.stopRealtimeSync(),
|
||
void 0;
|
||
var s = t.titleCRC != i.crc32(r), a = o.content, u = t.contentCRC != i.crc32(a), d = e.file, h = i.crc32(d.title), f = t.titleCRC != h, g = r != d.title, m = i.crc32(d.content), v = t.contentCRC != m, b = a != d.content;
|
||
(g === !0 && s === !0 && f === !0 || !t.isRealtime && b === !0 && u === !0 && v === !0) && (c.createFile(r + " (backup)", a),
|
||
l.onMessage('Conflict detected on "' + r + '". A backup has been created locally.')),
|
||
g && f === !0 && (o.title = d.title, l.onTitleChanged(o), l.onMessage('"' + r + '" has been renamed to "' + d.title + '" on ' + p + ".")),
|
||
!t.isRealtime && b && v === !0 && (o.content = d.content, l.onContentChanged(o),
|
||
l.onMessage('"' + d.title + '" has been updated from ' + p + "."), c.currentFile === o && c.selectFile()),
|
||
t.etag = d.etag, t.isRealtime || (t.contentCRC = m), t.titleCRC = h, i.storeAttributes(t);
|
||
}
|
||
}), o[b + ".gdrive.lastChangeId"] = s, e(), void 0);
|
||
});
|
||
});
|
||
}, y.publish = function(e, t, n, i, o) {
|
||
var r = "markdown" != e.format ? "text/html" : void 0;
|
||
u.upload(e.id, void 0, e.fileName || n, i, r, void 0, b, function(t, n) {
|
||
return t ? (o(t), void 0) : (e.id = n.id, o(), void 0);
|
||
});
|
||
}, y.newPublishAttributes = function(e) {
|
||
var t = {};
|
||
return t.id = i.getInputTextValue("#input-publish-" + h + "-fileid"), t.fileName = i.getInputTextValue("#input-publish-" + h + "-filename"),
|
||
e.isPropagationStopped() ? void 0 : t;
|
||
};
|
||
var w, x, C, E;
|
||
l.addListener("onPagedownConfigure", function(e) {
|
||
w = e;
|
||
});
|
||
var k, A, S = !0;
|
||
l.addListener("onAceCreated", function(e) {
|
||
A = e, A.session.on("change", function() {
|
||
k && k.string && k.string.setText(A.getValue());
|
||
});
|
||
});
|
||
var _ = require("ace/range").Range;
|
||
return y.startRealtimeSync = function(e, n) {
|
||
var o = {};
|
||
k = o, u.loadRealtime(n.id, e.content, b, function(s, a) {
|
||
function u() {
|
||
n.contentCRC = i.crc32(h.getText()), i.storeAttributes(n);
|
||
}
|
||
if (!s && a) {
|
||
if (o.isStopped === !0) return a.close(), void 0;
|
||
r.log("Starting Google Drive realtime synchronization"), o.document = a;
|
||
var d = a.getModel(), h = d.getRoot().get("content"), p = t.debounce(w.refreshPreview, 100);
|
||
h.addEventListener(gapi.drive.realtime.EventType.TEXT_INSERTED, function(e) {
|
||
if (void 0 !== A && (S === !1 || e.isLocal === !1)) {
|
||
var t = A.session.doc.indexToPosition(e.index);
|
||
A.session.insert(t, e.text), S = !0;
|
||
}
|
||
e.isLocal === !1 && (r.log("Google Drive realtime document updated from server"),
|
||
u(), void 0 === A && p());
|
||
}), h.addEventListener(gapi.drive.realtime.EventType.TEXT_DELETED, function(e) {
|
||
if (void 0 !== A && (S === !1 || e.isLocal === !1)) {
|
||
var t = function(e, t) {
|
||
return new _(e.row, e.column, t.row, t.column);
|
||
}(A.session.doc.indexToPosition(e.index), A.session.doc.indexToPosition(e.index + e.text.length));
|
||
A.session.remove(t), S = !0;
|
||
}
|
||
e.isLocal === !1 && (r.log("Google Drive realtime document updated from server"),
|
||
u(), void 0 === A && p());
|
||
}), a.addEventListener(gapi.drive.realtime.EventType.DOCUMENT_SAVE_STATE_CHANGED, function(e) {
|
||
e.isPending === !1 && e.isSaving === !1 && (r.log("Google Drive realtime document successfully saved on server"),
|
||
u());
|
||
});
|
||
var f = e.content, g = n.contentCRC != i.crc32(f), m = h.getText(), v = i.crc32(m), b = n.contentCRC != v, y = f != m;
|
||
y === !0 && g === !0 && (b === !0 ? (c.createFile(e.title + " (backup)", f), l.onMessage('Conflict detected on "' + e.title + '". A backup has been created locally.')) : h.setText(f)),
|
||
void 0 === A && (o.binding = gapi.drive.realtime.databinding.bindString(h, document.getElementById("wmd-input"))),
|
||
b === !0 && (r.log("Google Drive realtime document updated from server"), void 0 !== A && A.setValue(m, -1),
|
||
u(), void 0 === A && p()), void 0 !== A && (o.string = h), x = w.uiManager.buttons.undo.execute,
|
||
C = w.uiManager.buttons.redo.execute, E = w.uiManager.setUndoRedoButtonStates, w.uiManager.buttons.undo.execute = function() {
|
||
d.canUndo && (S = !1, d.undo());
|
||
}, w.uiManager.buttons.redo.execute = function() {
|
||
d.canRedo && (S = !1, d.redo());
|
||
}, w.uiManager.setUndoRedoButtonStates = function() {
|
||
setTimeout(function() {
|
||
w.uiManager.setButtonState(w.uiManager.buttons.undo, d.canUndo), w.uiManager.setButtonState(w.uiManager.buttons.redo, d.canRedo);
|
||
}, 50);
|
||
}, w.uiManager.setUndoRedoButtonStates(), d.addEventListener(gapi.drive.realtime.EventType.UNDO_REDO_STATE_CHANGED, function() {
|
||
w.uiManager.setUndoRedoButtonStates();
|
||
});
|
||
}
|
||
}, function(t) {
|
||
console.error(t), "token_refresh_required" == t.type ? u.refreshGdriveToken(b) : "not_found" == t.type ? (l.onError('"' + e.title + '" has been removed from ' + p + "."),
|
||
e.removeSyncLocation(n), l.onSyncRemoved(e, n), y.stopRealtimeSync()) : t.isFatal && (l.onError("An error has forced real time synchronization to stop."),
|
||
y.stopRealtimeSync());
|
||
});
|
||
}, y.stopRealtimeSync = function() {
|
||
r.log("Stopping Google Drive realtime synchronization"), void 0 !== k && (k.isStopped = !0,
|
||
k.binding && k.binding.unbind(), k.document && k.document.close(), k = void 0),
|
||
void 0 !== E && (w.uiManager.buttons.undo.execute = x, w.uiManager.buttons.redo.execute = C,
|
||
w.uiManager.setUndoRedoButtonStates = E, w.uiManager.setUndoRedoButtonStates());
|
||
}, y.isPublishEnabled = a.gdriveMultiAccount > f, l.addListener("onReady", function() {
|
||
e(".submenu-sync-" + h).toggle(a.gdriveMultiAccount > f);
|
||
var r = document.querySelector(".modal-upload-" + h);
|
||
r && (r.innerHTML = t.template(d, {
|
||
providerId: h,
|
||
providerName: p
|
||
})), e(".export-" + h + "-choose-folder").click(function() {
|
||
u.picker(function(t, n) {
|
||
t || 0 === n.length || (e(".modal-upload-" + h).modal(), i.setInputValue("#input-sync-export-" + h + "-parentid", n[0].id));
|
||
}, "folder", b);
|
||
});
|
||
var s = e("#input-sync-export-" + h + "-realtime"), y = e("#input-sync-export-" + h + "-fileid");
|
||
e("#input-sync-export-" + h + "-realtime").change(function() {
|
||
y.prop("disabled", s.prop("checked"));
|
||
});
|
||
var w = i.retrieveIgnoreError(h + ".state");
|
||
if (void 0 !== w && w.userId == o[b + ".userId"]) if (o.removeItem(h + ".state"),
|
||
"create" == w.action) u.upload(void 0, w.folderId, n.GDRIVE_DEFAULT_FILE_TITLE, a.defaultContent, void 0, void 0, b, function(e, t) {
|
||
if (!e) {
|
||
var n = m(t.id, t.etag, t.content, t.title), i = {};
|
||
i[n.syncIndex] = n;
|
||
var o = c.createFile(t.title, t.content, i);
|
||
c.selectFile(o), l.onMessage('"' + t.title + '" created successfully on ' + p + ".");
|
||
}
|
||
}); else if ("open" == w.action) {
|
||
var x = [];
|
||
t.each(w.ids, function(e) {
|
||
var t = g(e), n = c.getFileFromSyncIndex(t);
|
||
void 0 !== n ? n !== c.currentFile && c.selectFile(n) : x.push(e);
|
||
}), v(x);
|
||
}
|
||
}), y;
|
||
};
|
||
}), define("providers/gdriveProvider", [ "providers/gdriveProviderBuilder" ], function(e) {
|
||
return e("gdrive", "Google Drive", 0);
|
||
}), define("providers/gdrivesecProvider", [ "providers/gdriveProviderBuilder" ], function(e) {
|
||
return e("gdrivesec", "Google Drive (2nd account)", 1);
|
||
}), define("providers/gdriveterProvider", [ "providers/gdriveProviderBuilder" ], function(e) {
|
||
return e("gdriveter", "Google Drive (3rd account)", 2);
|
||
}), define("synchronizer", [ "jquery", "underscore", "utils", "storage", "eventMgr", "fileSystem", "fileMgr", "classes/Provider", "providers/dropboxProvider", "providers/gdriveProvider", "providers/gdrivesecProvider", "providers/gdriveterProvider" ], function(e, t, n, i, o, r, s, a) {
|
||
function l(e) {
|
||
if (0 === E.length) return c(e), void 0;
|
||
var t = E.pop(), i = t.provider.syncUp;
|
||
t.isRealtime === !0 && (i = t.provider.syncUpRealtime), i(y, w, x, C, t, function(i, o) {
|
||
return o === !0 && (A = !0), i ? (e(i), void 0) : (o && n.storeAttributes(t), l(e),
|
||
void 0);
|
||
});
|
||
}
|
||
function c(e) {
|
||
if (0 === k.length) return u(e), void 0;
|
||
var i = k.pop();
|
||
return E = t.values(i.syncLocations), 0 === E.length ? (c(e), void 0) : (y = i.content,
|
||
w = n.crc32(y), x = i.title, C = n.crc32(x), l(e), void 0);
|
||
}
|
||
function u(e) {
|
||
A === !0 ? (A = !1, k = t.values(r), c(e)) : e();
|
||
}
|
||
function d(e) {
|
||
if (0 === S.length) return e(), void 0;
|
||
var t = S.pop();
|
||
return v.hasSync(t) ? (t.syncDown(function(t) {
|
||
return t ? (e(t), void 0) : (d(e), void 0);
|
||
}), void 0) : (d(e), void 0);
|
||
}
|
||
function h(e) {
|
||
S = t.values(b), d(e);
|
||
}
|
||
function p(e) {
|
||
T = t.some(e.syncLocations, function(e) {
|
||
return D = e, e.isRealtime;
|
||
}) ? e : void 0, g();
|
||
}
|
||
function f(e) {
|
||
e === !1 ? (L = !0, g()) : (v.tryStopRealtimeSync(), L = !1);
|
||
}
|
||
function g() {
|
||
void 0 !== T && L === !0 && D.provider.startRealtimeSync(T, D);
|
||
}
|
||
function m(i) {
|
||
n.resetModalInputs();
|
||
var o = n.retrieveIgnoreError(i.providerId + ".exportPreferences");
|
||
o && t.each(i.exportPreferencesInputIds, function(e) {
|
||
var i = o[e];
|
||
t.isBoolean(i) ? n.setInputChecked("#input-sync-export-" + e, i) : n.setInputValue("#input-sync-export-" + e, i);
|
||
}), e(".modal-upload-" + i.providerId).modal();
|
||
}
|
||
var v = {}, b = t.chain(arguments).map(function(e) {
|
||
return e instanceof a && [ e.providerId, e ];
|
||
}).compact().object().value();
|
||
t.each(r, function(e) {
|
||
t.each(n.retrieveIndexArray(e.fileIndex + ".sync"), function(t) {
|
||
try {
|
||
var r = JSON.parse(i[t]);
|
||
r.syncIndex = t;
|
||
var s = b[r.provider];
|
||
if (!s) throw new Error("Invalid provider ID: " + r.provider);
|
||
r.provider = s, e.syncLocations[t] = r;
|
||
} catch (a) {
|
||
o.onError(a), n.removeIndexFromArray(e.fileIndex + ".sync", t), i.removeItem(t);
|
||
}
|
||
});
|
||
}), v.hasSync = function(e) {
|
||
return t.some(r, function(n) {
|
||
return t.some(n.syncLocations, function(t) {
|
||
return void 0 === e || t.provider === e;
|
||
});
|
||
});
|
||
};
|
||
var y, w, x, C, E = [], k = [], A = !1, S = [], _ = !1;
|
||
o.addListener("onOfflineChanged", function(e) {
|
||
_ = e;
|
||
});
|
||
var F = !1;
|
||
v.sync = function() {
|
||
function e(e) {
|
||
return void 0 !== e ? (F = !1, o.onSyncRunning(!1), !0) : !1;
|
||
}
|
||
return F === !0 || _ === !0 ? !1 : (F = !0, o.onSyncRunning(!0), A = !0, h(function(t) {
|
||
e(t) || u(function(t) {
|
||
e(t) || (F = !1, o.onSyncRunning(!1), o.onSyncSuccess());
|
||
});
|
||
}), !0);
|
||
};
|
||
var T, D, L = !0;
|
||
return v.tryStopRealtimeSync = function() {
|
||
void 0 !== T && L === !0 && D.provider.stopRealtimeSync();
|
||
}, window.viewerMode === !1 && (o.addListener("onFileOpen", p), o.addListener("onFileClosed", v.tryStopRealtimeSync),
|
||
o.addListener("onOfflineChanged", f)), o.addListener("onReady", function() {
|
||
t.each(b, function(r) {
|
||
e(".action-sync-import-" + r.providerId).click(function(e) {
|
||
r.importFiles(e);
|
||
}), e(".action-sync-export-dialog-" + r.providerId).click(function() {
|
||
m(r);
|
||
}), e(".action-sync-export-" + r.providerId).click(function(e) {
|
||
var a = n.getInputChecked("#input-sync-export-" + r.providerId + "-realtime"), l = s.currentFile;
|
||
if (a) {
|
||
if (t.size(l.syncLocations) > 0) return o.onError("Real time collaborative document can't be synchronized with multiple locations"),
|
||
void 0;
|
||
r.exportRealtimeFile(e, l.title, l.content, function(e, t) {
|
||
e || (t.isRealtime = !0, l.addSyncLocation(t), o.onSyncExportSuccess(l, t), T = l,
|
||
D = t, g());
|
||
});
|
||
} else {
|
||
if (t.size(l.syncLocations) > 0 && t.first(t.values(l.syncLocations)).isRealtime) return o.onError("Real time collaborative document can't be synchronized with multiple locations"),
|
||
void 0;
|
||
r.exportFile(e, l.title, l.content, function(e, t) {
|
||
e || (l.addSyncLocation(t), o.onSyncExportSuccess(l, t));
|
||
});
|
||
}
|
||
var c = {};
|
||
t.each(r.exportPreferencesInputIds, function(e) {
|
||
var t = document.getElementById("input-sync-export-" + e);
|
||
c[e] = "checkbox" == t.type ? t.checked : t.value;
|
||
}), i[r.providerId + ".exportPreferences"] = JSON.stringify(c);
|
||
});
|
||
});
|
||
}), o.onSynchronizerCreated(v), v;
|
||
}), define("providers/downloadProvider", [ "jquery", "constants", "eventMgr", "utils", "fileMgr", "classes/Provider", "classes/AsyncTask" ], function(e, t, n, i, o, r, s) {
|
||
var a = new r("download");
|
||
return a.sharingAttributes = [ "url" ], a.importPublic = function(n, i) {
|
||
var o, r, a = new s(!0);
|
||
a.onRun(function() {
|
||
var i = n.url, s = i.lastIndexOf("/");
|
||
return -1 === s ? (a.error(new Error("Invalid URL parameter.")), void 0) : (o = i.substring(s + 1),
|
||
e.ajax({
|
||
url: t.DOWNLOAD_PROXY_URL + "download?url=" + i,
|
||
type: "GET",
|
||
dataType: "text",
|
||
timeout: t.AJAX_TIMEOUT
|
||
}).done(function(e) {
|
||
r = e, a.chain();
|
||
}).fail(function() {
|
||
a.error(new Error("Unable to access URL " + i));
|
||
}), void 0);
|
||
}), a.onSuccess(function() {
|
||
i(void 0, o, r);
|
||
}), a.onError(function(e) {
|
||
i(e);
|
||
}), a.enqueue();
|
||
}, n.addListener("onReady", function() {
|
||
e(".action-import-url").click(function(e) {
|
||
var t = i.getInputTextValue("#input-import-url", e);
|
||
t && a.importPublic({
|
||
url: t
|
||
}, function(e, t, n) {
|
||
if (!e) {
|
||
var i = o.createFile(t, n);
|
||
o.selectFile(i);
|
||
}
|
||
});
|
||
});
|
||
}), a;
|
||
}), define("helpers/githubHelper", [ "jquery", "constants", "core", "utils", "storage", "logger", "settings", "eventMgr", "classes/AsyncTask" ], function(e, t, n, i, o, r, s, a, l) {
|
||
function c(n) {
|
||
n.onRun(function() {
|
||
return g === !0 ? (h = !1, n.error(new Error("Operation not available in offline mode.|stopPublish")),
|
||
void 0) : h === !0 ? (n.chain(), void 0) : (e.ajax({
|
||
url: "libs/github.js",
|
||
dataType: "script",
|
||
timeout: t.AJAX_TIMEOUT
|
||
}).done(function() {
|
||
h = !0, n.chain();
|
||
}).fail(function(e) {
|
||
var t = {
|
||
error: e.status,
|
||
message: e.statusText
|
||
};
|
||
d(t, n);
|
||
}), void 0);
|
||
});
|
||
}
|
||
function u(r) {
|
||
var a, l;
|
||
r.onRun(function() {
|
||
function c() {
|
||
n.redirectConfirm("You are being redirected to <strong>GitHub</strong> authorization page.", function() {
|
||
r.chain(u);
|
||
}, function() {
|
||
r.error(new Error("Operation canceled."));
|
||
});
|
||
}
|
||
function u() {
|
||
o.removeItem("githubCode");
|
||
var e = s.githubFullAccess ? "repo,gist" : "public_repo,gist";
|
||
a = i.popupWindow("html/github-oauth-client.html?client_id=" + t.GITHUB_CLIENT_ID + "&scope=" + e, "stackedit-github-oauth", 960, 600),
|
||
a.focus(), l = setInterval(function() {
|
||
if (a.closed === !0) {
|
||
if (clearInterval(l), a = void 0, l = void 0, g = o.githubCode, void 0 === g) return r.error(new Error(f)),
|
||
void 0;
|
||
o.removeItem("githubCode"), r.chain(d);
|
||
}
|
||
}, 500);
|
||
}
|
||
function d() {
|
||
e.getJSON(t.GATEKEEPER_URL + "authenticate/" + g, function(e) {
|
||
void 0 !== e.token ? (h = e.token, o.githubToken = h, p = new Github({
|
||
token: h,
|
||
auth: "oauth"
|
||
}), r.chain()) : r.error(new Error(f));
|
||
});
|
||
}
|
||
if (void 0 !== p) return r.chain(), void 0;
|
||
var h = o.githubToken;
|
||
if (void 0 !== h) return p = new Github({
|
||
token: h,
|
||
auth: "oauth"
|
||
}), r.chain(), void 0;
|
||
var f = "Failed to retrieve a token from GitHub.";
|
||
r.timeout = t.ASYNC_TASK_LONG_TIMEOUT;
|
||
var g;
|
||
r.chain(c);
|
||
}), r.onError(function() {
|
||
void 0 !== l && clearInterval(l), void 0 !== a && a.close();
|
||
});
|
||
}
|
||
function d(e, t) {
|
||
var i;
|
||
if (e) if (r.error(e), "string" == typeof e) i = e; else {
|
||
if (i = "Could not publish on GitHub.", 401 === e.error || 403 === e.error) return p = void 0,
|
||
o.removeItem("githubToken"), i = "Access to GitHub account is not authorized.",
|
||
t.retry(new Error(i), 1), void 0;
|
||
e.error <= 0 && (h = !1, p = void 0, n.setOffline(), i = "|stopPublish");
|
||
}
|
||
t.error(new Error(i));
|
||
}
|
||
var h, p, f = {}, g = !1;
|
||
return a.addListener("onOfflineChanged", function(e) {
|
||
g = e;
|
||
}), f.upload = function(e, t, n, i, o, r, s) {
|
||
var a = new l();
|
||
c(a), u(a), a.onRun(function() {
|
||
function s() {
|
||
var e = p.getUser();
|
||
e.show(void 0, function(e, n) {
|
||
return e ? (d(e, a), void 0) : (t = n.login, a.chain(l), void 0);
|
||
});
|
||
}
|
||
function l() {
|
||
var s = p.getRepo(t, e);
|
||
s.write(n, i, o, r, function(e) {
|
||
return e ? (d(e, a), void 0) : (a.chain(), void 0);
|
||
});
|
||
}
|
||
t ? a.chain(l) : a.chain(s);
|
||
}), a.onSuccess(function() {
|
||
s();
|
||
}), a.onError(function(e) {
|
||
s(e);
|
||
}), a.enqueue();
|
||
}, f.uploadGist = function(e, t, n, i, o, r) {
|
||
var s = new l();
|
||
c(s), u(s), s.onRun(function() {
|
||
var r = p.getGist(e), a = {};
|
||
a[t] = {
|
||
content: o
|
||
};
|
||
var l = r.update;
|
||
void 0 === e && (l = r.create), l({
|
||
description: i,
|
||
"public": n,
|
||
files: a
|
||
}, function(t, n) {
|
||
return t ? (404 === t.error && void 0 !== e && (t = "Gist " + e + " not found on GitHub.|removePublish"),
|
||
d(t, s), void 0) : (e = n.id, s.chain(), void 0);
|
||
});
|
||
}), s.onSuccess(function() {
|
||
r(void 0, e);
|
||
}), s.onError(function(e) {
|
||
r(e);
|
||
}), s.enqueue();
|
||
}, f.downloadGist = function(e, t, n) {
|
||
var i = new l(!0);
|
||
c(i);
|
||
var o, r;
|
||
i.onRun(function() {
|
||
var n = new Github({}), s = n.getGist(e);
|
||
s.read(function(n, s) {
|
||
if (n) return i.error(new Error("Error trying to access Gist " + e + ".")), void 0;
|
||
o = s.description;
|
||
var a = s.files[t];
|
||
return void 0 === a ? (i.error(new Error("Gist " + e + ' does not contain "' + t + '".')),
|
||
void 0) : (r = a.content, i.chain(), void 0);
|
||
});
|
||
}), i.onSuccess(function() {
|
||
n(void 0, o, r);
|
||
}), i.onError(function(e) {
|
||
n(e);
|
||
}), i.enqueue();
|
||
}, f;
|
||
}), define("providers/gistProvider", [ "utils", "classes/Provider", "helpers/githubHelper" ], function(e, t, n) {
|
||
var i = new t("gist", "Gist");
|
||
return i.publishPreferencesInputIds = [ "gist-public" ], i.sharingAttributes = [ "gistId", "filename" ],
|
||
i.publish = function(e, t, i, o, r) {
|
||
n.uploadGist(e.gistId, e.filename, e.isPublic, i, o, function(t, n) {
|
||
return t ? (r(t), void 0) : (e.gistId = n, r(), void 0);
|
||
});
|
||
}, i.newPublishAttributes = function(t) {
|
||
var n = {};
|
||
return n.gistId = e.getInputTextValue("#input-publish-gist-id"), n.filename = e.getInputTextValue("#input-publish-filename", t),
|
||
n.isPublic = e.getInputChecked("#input-publish-gist-public"), t.isPropagationStopped() ? void 0 : n;
|
||
}, i.importPublic = function(e, t) {
|
||
n.downloadGist(e.gistId, e.filename, t);
|
||
}, i;
|
||
}), define("sharing", [ "jquery", "underscore", "constants", "utils", "eventMgr", "fileMgr", "classes/AsyncTask", "classes/Provider", "providers/downloadProvider", "providers/gistProvider" ], function(e, t, n, i, o, r, s, a) {
|
||
var l = {}, c = t.chain(arguments).map(function(e) {
|
||
return e instanceof a && [ e.providerId, e ];
|
||
}).compact().object().value(), u = !1;
|
||
return o.addListener("onOfflineChanged", function(e) {
|
||
u = e;
|
||
}), l.createLink = function(i, r) {
|
||
function a() {
|
||
r();
|
||
}
|
||
var l = c[i.provider.providerId];
|
||
if (void 0 !== i.sharingLink || void 0 === l || "markdown" != i.format) return r(),
|
||
void 0;
|
||
var d, h = new s();
|
||
h.onRun(function() {
|
||
if (u === !0) return h.chain(), void 0;
|
||
var r = [ n.MAIN_URL, "viewer#!provider=", l.providerId ];
|
||
t.each(l.sharingAttributes, function(e) {
|
||
r.push("&"), r.push(e), r.push("="), r.push(encodeURIComponent(i[e]));
|
||
}), r = r.join(""), e.getJSON("https://api-ssl.bitly.com/v3/shorten", {
|
||
access_token: n.BITLY_ACCESS_TOKEN,
|
||
longUrl: r
|
||
}, function(e) {
|
||
e.data ? (d = e.data.url, i.sharingLink = d) : (o.onError("An error occured while creating sharing link."),
|
||
i.sharingLink = r), h.chain();
|
||
});
|
||
}), h.onSuccess(a), h.onError(a), h.enqueue();
|
||
}, o.addListener("onReady", function() {
|
||
if (window.viewerMode !== !1) {
|
||
var n = i.getURLParameter("provider");
|
||
void 0 === n && (n = "download");
|
||
var o = c[n];
|
||
if (void 0 !== o) {
|
||
var s = {};
|
||
t.each(o.sharingAttributes, function(e) {
|
||
var t = i.getURLParameter(e);
|
||
return t ? (s[e] = t, void 0) : (s = void 0, void 0);
|
||
}), void 0 !== s && (e("#preview-contents, .navbar .file-title-navbar").hide(),
|
||
o.importPublic(s, function(t, n, i) {
|
||
if (e("#preview-contents, .navbar .file-title-navbar").show(), !t) {
|
||
var o = r.createFile(n, i, void 0, !0);
|
||
r.selectFile(o);
|
||
}
|
||
}));
|
||
}
|
||
}
|
||
}), l;
|
||
}), define("providers/bloggerProvider", [ "underscore", "utils", "classes/Provider", "helpers/googleHelper" ], function(e, t, n, i) {
|
||
var o = new n("blogger", "Blogger");
|
||
return o.defaultPublishFormat = "html", o.publishPreferencesInputIds = [ "blogger-url" ],
|
||
o.publish = function(t, n, o, r, s) {
|
||
var a = t.labelList || [];
|
||
n && void 0 !== n.tags && (a = n.tags), e.isString(a) && (a = e.compact(a.split(/[\s,]/)));
|
||
var l = n && n.published === !1, c = n && n.date;
|
||
i.uploadBlogger(t.blogUrl, t.blogId, t.postId, a, l, c, o, r, function(e, n, i) {
|
||
return e ? (s(e), void 0) : (t.blogId = n, t.postId = i, s(), void 0);
|
||
});
|
||
}, o.newPublishAttributes = function(e) {
|
||
var n = {}, i = t.getInputTextValue("#input-publish-blogger-url", e);
|
||
return void 0 !== i && (n.blogUrl = t.checkUrl(i)), n.postId = t.getInputTextValue("#input-publish-postid"),
|
||
e.isPropagationStopped() ? void 0 : n;
|
||
}, o;
|
||
}), define("providers/githubProvider", [ "utils", "classes/Provider", "settings", "helpers/githubHelper" ], function(e, t, n, i) {
|
||
var o = new t("github", "GitHub");
|
||
return o.publishPreferencesInputIds = [ "github-reponame", "github-username", "github-branch" ],
|
||
o.publish = function(e, t, o, r, s) {
|
||
var a = n.commitMsg;
|
||
i.upload(e.repository, e.username, e.branch, e.path, r, a, s);
|
||
}, o.newPublishAttributes = function(t) {
|
||
var n = {};
|
||
return n.repository = e.getInputTextValue("#input-publish-github-reponame", t),
|
||
n.username = e.getInputTextValue("#input-publish-github-username"), n.branch = e.getInputTextValue("#input-publish-github-branch", t),
|
||
n.path = e.getInputTextValue("#input-publish-file-path", t), t.isPropagationStopped() ? void 0 : n;
|
||
}, o;
|
||
}), define("helpers/sshHelper", [ "jquery", "constants", "core", "logger", "eventMgr", "settings", "classes/AsyncTask" ], function(e, t, n, i, o, r, s) {
|
||
function a(e) {
|
||
e.onRun(function() {
|
||
return u === !0 ? (e.error(new Error("Operation not available in offline mode.|stopPublish")),
|
||
void 0) : (e.chain(), void 0);
|
||
});
|
||
}
|
||
function l(e, t) {
|
||
var o;
|
||
e && (i.error(e), "string" == typeof e ? o = "SSH error: " + e + "." : (o = "Could not publish on SSH server.",
|
||
e.code <= 0 && (n.setOffline(), o = "|stopPublish"))), t.error(new Error(o));
|
||
}
|
||
var c = {}, u = !1;
|
||
return o.addListener("onOfflineChanged", function(e) {
|
||
u = e;
|
||
}), c.upload = function(n, i, o, c, u, d, h, p) {
|
||
var f = new s();
|
||
a(f), f.onRun(function() {
|
||
var s = r.sshProxy + "upload", a = {
|
||
host: n,
|
||
port: i,
|
||
username: o,
|
||
password: c,
|
||
path: u,
|
||
title: d,
|
||
content: h
|
||
};
|
||
e.ajax({
|
||
url: s,
|
||
data: a,
|
||
type: "POST",
|
||
dataType: "json",
|
||
timeout: t.AJAX_TIMEOUT
|
||
}).done(function(e) {
|
||
return void 0 === e.error ? (f.chain(), void 0) : (l(e.error, f), void 0);
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
l(t, f);
|
||
});
|
||
}), f.onSuccess(function() {
|
||
p();
|
||
}), f.onError(function(e) {
|
||
p(e);
|
||
}), f.enqueue();
|
||
}, c;
|
||
}), define("providers/sshProvider", [ "utils", "classes/Provider", "helpers/sshHelper" ], function(e, t, n) {
|
||
var i = new t("ssh", "SSH server");
|
||
return i.publishPreferencesInputIds = [ "ssh-host", "ssh-port", "ssh-username", "ssh-password" ],
|
||
i.publish = function(e, t, i, o, r) {
|
||
n.upload(e.host, e.port, e.username, e.password, e.path, i, o, r);
|
||
}, i.newPublishAttributes = function(t) {
|
||
var n = {};
|
||
return n.host = e.getInputTextValue("#input-publish-ssh-host", t, /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/),
|
||
n.port = e.getInputIntValue("#input-publish-ssh-port", void 0, 0), n.username = e.getInputTextValue("#input-publish-ssh-username", t),
|
||
n.password = e.getInputTextValue("#input-publish-ssh-password", t), n.path = e.getInputTextValue("#input-publish-file-path", t),
|
||
t.isPropagationStopped() ? void 0 : n;
|
||
}, i;
|
||
}), define("helpers/tumblrHelper", [ "jquery", "constants", "core", "utils", "storage", "logger", "eventMgr", "classes/AsyncTask" ], function(e, t, n, i, o, r, s, a) {
|
||
function l(e) {
|
||
e.onRun(function() {
|
||
return p === !0 ? (e.error(new Error("Operation not available in offline mode.|stopPublish")),
|
||
void 0) : (e.chain(), void 0);
|
||
});
|
||
}
|
||
function c(r) {
|
||
var s, a;
|
||
r.onRun(function() {
|
||
function l() {
|
||
e.getJSON(t.TUMBLR_PROXY_URL + "request_token", function(e) {
|
||
void 0 !== e.oauth_token ? (g = e, r.chain(c)) : r.error(new Error(f));
|
||
});
|
||
}
|
||
function c() {
|
||
n.redirectConfirm("You are being redirected to <strong>Tumblr</strong> authorization page.", function() {
|
||
r.chain(u);
|
||
}, function() {
|
||
r.error(new Error("Operation canceled."));
|
||
});
|
||
}
|
||
function u() {
|
||
o.removeItem("tumblrVerifier"), s = i.popupWindow("html/tumblr-oauth-client.html?oauth_token=" + g.oauth_token, "stackedit-tumblr-oauth", 800, 600),
|
||
s.focus(), a = setInterval(function() {
|
||
if (s.closed === !0) {
|
||
if (clearInterval(a), s = void 0, a = void 0, g.oauth_verifier = o.tumblrVerifier,
|
||
void 0 === g.oauth_verifier) return r.error(new Error(f)), void 0;
|
||
o.removeItem("tumblrVerifier"), r.chain(h);
|
||
}
|
||
}, 500);
|
||
}
|
||
function h() {
|
||
e.getJSON(t.TUMBLR_PROXY_URL + "access_token", g, function(e) {
|
||
void 0 !== e.access_token && void 0 !== e.access_token_secret ? (o.tumblrOauthParams = JSON.stringify(e),
|
||
d = e, r.chain()) : r.error(new Error(f));
|
||
});
|
||
}
|
||
if (void 0 !== d) return r.chain(), void 0;
|
||
var p = o.tumblrOauthParams;
|
||
if (void 0 !== p) return d = JSON.parse(p), r.chain(), void 0;
|
||
var f = "Failed to retrieve a token from Tumblr.";
|
||
r.timeout = t.ASYNC_TASK_LONG_TIMEOUT;
|
||
var g;
|
||
r.chain(l);
|
||
}), r.onError(function() {
|
||
void 0 !== a && clearInterval(a), void 0 !== s && s.close();
|
||
});
|
||
}
|
||
function u(e, t) {
|
||
var i;
|
||
if (e) if (r.error(e), "string" == typeof e) i = e; else {
|
||
if (i = "Could not publish on Tumblr.", 401 === e.code || 403 === e.code) return d = void 0,
|
||
o.removeItem("tumblrOauthParams"), i = "Access to Tumblr account is not authorized.",
|
||
t.retry(new Error(i), 1), void 0;
|
||
e.code <= 0 && (n.setOffline(), i = "|stopPublish");
|
||
}
|
||
t.error(new Error(i));
|
||
}
|
||
var d, h = {}, p = !1;
|
||
return s.addListener("onOfflineChanged", function(e) {
|
||
p = e;
|
||
}), h.upload = function(n, i, o, r, s, h, p, f, g) {
|
||
var m = new a();
|
||
l(m), c(m), m.onRun(function() {
|
||
var a = e.extend({
|
||
blog_hostname: n,
|
||
post_id: i,
|
||
tags: o,
|
||
format: r,
|
||
state: s,
|
||
date: h,
|
||
title: p,
|
||
content: f
|
||
}, d);
|
||
e.ajax({
|
||
url: t.TUMBLR_PROXY_URL + "post",
|
||
data: a,
|
||
type: "POST",
|
||
dataType: "json",
|
||
timeout: t.AJAX_TIMEOUT
|
||
}).done(function(e) {
|
||
i = e.id, m.chain();
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
404 === t.code && void 0 !== i && (t = "Post " + i + " not found on Tumblr.|removePublish"),
|
||
u(t, m);
|
||
});
|
||
}), m.onSuccess(function() {
|
||
g(void 0, i);
|
||
}), m.onError(function(e) {
|
||
g(e);
|
||
}), m.enqueue();
|
||
}, h;
|
||
}), define("providers/tumblrProvider", [ "underscore", "settings", "utils", "classes/Provider", "helpers/tumblrHelper" ], function(e, t, n, i, o) {
|
||
var r = new i("tumblr", "Tumblr");
|
||
return r.publishPreferencesInputIds = [ "tumblr-hostname" ], r.publish = function(n, i, r, s, a) {
|
||
var l = n.tags || [];
|
||
i && void 0 !== i.tags && (l = i.tags), e.isString(l) && (l = e.compact(l.split(/[\s,]/)));
|
||
var c = function() {
|
||
if ("html" == n.format) return "html";
|
||
if ("template" == n.format) {
|
||
var e = n.customTmpl || t.template;
|
||
if (-1 !== e.indexOf("documentHTML")) return "html";
|
||
}
|
||
return "markdown";
|
||
}(), u = i && i.published === !1 ? "draft" : "published", d = i && i.date;
|
||
o.upload(n.blogHostname, n.postId, l.join(","), c, u, d, r, s, function(e, t) {
|
||
return e ? (a(e), void 0) : (n.postId = t, a(), void 0);
|
||
});
|
||
}, r.newPublishAttributes = function(e) {
|
||
var t = {};
|
||
return t.blogHostname = n.getInputTextValue("#input-publish-tumblr-hostname", e, /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/),
|
||
t.postId = n.getInputTextValue("#input-publish-postid"), e.isPropagationStopped() ? void 0 : t;
|
||
}, r;
|
||
}), define("helpers/wordpressHelper", [ "jquery", "constants", "core", "utils", "storage", "logger", "eventMgr", "classes/AsyncTask" ], function(e, t, n, i, o, r, s, a) {
|
||
function l(e) {
|
||
e.onRun(function() {
|
||
return p === !0 ? (e.error(new Error("Operation not available in offline mode.|stopPublish")),
|
||
void 0) : (e.chain(), void 0);
|
||
});
|
||
}
|
||
function c(r) {
|
||
var s, a;
|
||
r.onRun(function() {
|
||
function l() {
|
||
n.redirectConfirm("You are being redirected to <strong>WordPress</strong> authorization page.", function() {
|
||
r.chain(c);
|
||
}, function() {
|
||
r.error(new Error("Operation canceled."));
|
||
});
|
||
}
|
||
function c() {
|
||
o.removeItem("wordpressCode"), s = i.popupWindow("html/wordpress-oauth-client.html?client_id=" + t.WORDPRESS_CLIENT_ID, "stackedit-wordpress-oauth", 960, 600),
|
||
s.focus(), a = setInterval(function() {
|
||
if (s.closed === !0) {
|
||
if (clearInterval(a), s = void 0, a = void 0, p = o.wordpressCode, void 0 === p) return r.error(new Error(h)),
|
||
void 0;
|
||
o.removeItem("wordpressCode"), r.chain(u);
|
||
}
|
||
}, 500);
|
||
}
|
||
function u() {
|
||
e.getJSON(t.WORDPRESS_PROXY_URL + "authenticate/" + p, function(e) {
|
||
void 0 !== e.token ? (d = e.token, o.wordpressToken = d, r.chain()) : r.error(new Error(h));
|
||
});
|
||
}
|
||
if (d = o.wordpressToken, void 0 !== d) return r.chain(), void 0;
|
||
var h = "Failed to retrieve a token from Wordpress.";
|
||
r.timeout = t.ASYNC_TASK_LONG_TIMEOUT;
|
||
var p;
|
||
r.chain(l);
|
||
}), r.onError(function() {
|
||
void 0 !== a && clearInterval(a), void 0 !== s && s.close();
|
||
});
|
||
}
|
||
function u(e, t) {
|
||
var i;
|
||
if (e) if (r.error(e), "string" == typeof e) i = e; else {
|
||
if (i = "Could not publish on WordPress.", 400 === e.code && "invalid_token" == e.message || 401 === e.code || 403 === e.code) return o.removeItem("wordpressToken"),
|
||
i = "Access to WordPress account is not authorized.", t.retry(new Error(i), 1),
|
||
void 0;
|
||
e.code <= 0 && (n.setOffline(), i = "|stopPublish");
|
||
}
|
||
t.error(new Error(i));
|
||
}
|
||
var d, h = {}, p = !1;
|
||
return s.addListener("onOfflineChanged", function(e) {
|
||
p = e;
|
||
}), h.upload = function(n, i, o, r, s, h, p, f) {
|
||
var g = new a();
|
||
l(g), c(g), g.onRun(function() {
|
||
var a = t.WORDPRESS_PROXY_URL + "post", l = {
|
||
token: d,
|
||
site: n,
|
||
postId: i,
|
||
tags: o,
|
||
status: r,
|
||
date: s,
|
||
title: h,
|
||
content: p
|
||
};
|
||
e.ajax({
|
||
url: a,
|
||
data: l,
|
||
type: "POST",
|
||
dataType: "json",
|
||
timeout: t.AJAX_TIMEOUT
|
||
}).done(function(e) {
|
||
if (e.body.ID) return i = e.body.ID, g.chain(), void 0;
|
||
var t = {
|
||
code: e.code,
|
||
message: e.body.error
|
||
};
|
||
404 === t.code && ("unknown_blog" == t.message ? t = 'Site "' + n + '" not found on WordPress.|removePublish' : "unknown_post" == t.message && (t = "Post " + i + " not found on WordPress.|removePublish")),
|
||
u(t, g);
|
||
}).fail(function(e) {
|
||
var t = {
|
||
code: e.status,
|
||
message: e.statusText
|
||
};
|
||
u(t, g);
|
||
});
|
||
}), g.onSuccess(function() {
|
||
f(void 0, i);
|
||
}), g.onError(function(e) {
|
||
f(e);
|
||
}), g.enqueue();
|
||
}, h;
|
||
}), define("providers/wordpressProvider", [ "underscore", "utils", "classes/Provider", "helpers/wordpressHelper" ], function(e, t, n, i) {
|
||
var o = new n("wordpress", "WordPress");
|
||
return o.defaultPublishFormat = "html", o.publishPreferencesInputIds = [ "wordpress-site" ],
|
||
o.publish = function(t, n, o, r, s) {
|
||
var a = t.tags || [];
|
||
n && void 0 !== n.tags && (a = n.tags);
|
||
var l = n && n.published === !1 ? "draft" : "publish", c = n && n.date;
|
||
e.isString(a) && (a = e.compact(a.split(/[\s,]/))), i.upload(t.site, t.postId, a.join(","), l, c, o, r, function(e, n) {
|
||
return e ? (s(e), void 0) : (t.postId = n, s(), void 0);
|
||
});
|
||
}, o.newPublishAttributes = function(e) {
|
||
var n = {};
|
||
return n.site = t.getInputTextValue("#input-publish-wordpress-site", e, /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/),
|
||
n.postId = t.getInputTextValue("#input-publish-postid"), e.isPropagationStopped() ? void 0 : n;
|
||
}, o;
|
||
}), define("publisher", [ "jquery", "underscore", "constants", "utils", "storage", "settings", "eventMgr", "fileSystem", "fileMgr", "sharing", "classes/Provider", "classes/AsyncTask", "providers/bloggerProvider", "providers/dropboxProvider", "providers/gistProvider", "providers/githubProvider", "providers/gdriveProvider", "providers/gdrivesecProvider", "providers/gdriveterProvider", "providers/sshProvider", "providers/tumblrProvider", "providers/wordpressProvider" ], function(e, t, n, i, o, r, s, a, l, c, u, d) {
|
||
function h(e, t, n) {
|
||
return void 0 === t.format && (t.format = i.getInputRadio("radio-publish-format"),
|
||
"template" == t.format && i.getInputChecked("#checkbox-publish-custom-template") && (t.customTmpl = i.getInputValue("#textarea-publish-custom-template"))),
|
||
"markdown" == t.format ? e.content : "html" == t.format ? n : v.applyTemplate(e, t, n);
|
||
}
|
||
function p(e, t) {
|
||
if (0 === C.length) return e(t), void 0;
|
||
var n = C.pop(), i = h(y, n, w), o = (y.frontMatter || {}).title || y.title;
|
||
n.provider.publish(n, y.frontMatter, o, i, function(i) {
|
||
if (void 0 !== i) {
|
||
var o = i.toString();
|
||
if (-1 !== o.indexOf("|removePublish") && (y.removePublishLocation(n), s.onPublishRemoved(y, n)),
|
||
-1 !== o.indexOf("|stopPublish")) return e(i), void 0;
|
||
}
|
||
p(e, t || i);
|
||
});
|
||
}
|
||
function f(e, n) {
|
||
var r;
|
||
do r = "publish." + i.randomString(); while (t.has(o, r));
|
||
n.publishIndex = r, e.addPublishLocation(n), s.onNewPublishSuccess(e, n);
|
||
}
|
||
function g(n) {
|
||
var o = n.defaultPublishFormat || "markdown";
|
||
A = n, e(".publish-provider-name").text(n.providerName), e('.modal-publish [class*=" modal-publish-"]').hide().filter(".modal-publish-" + n.providerId).show(),
|
||
i.resetModalInputs(), i.setInputRadio("radio-publish-format", o), i.setInputChecked("#checkbox-publish-custom-template", !1),
|
||
i.setInputValue("#textarea-publish-custom-template", r.template);
|
||
var s = i.retrieveIgnoreError(n.providerId + ".publishPreferences");
|
||
s && (t.each(n.publishPreferencesInputIds, function(e) {
|
||
var n = s[e];
|
||
t.isBoolean(n) ? i.setInputChecked("#input-publish-" + e, n) : i.setInputValue("#input-publish-" + e, n);
|
||
}), i.setInputRadio("radio-publish-format", s.format), i.setInputChecked("#checkbox-publish-custom-template", void 0 !== s.customTmpl),
|
||
i.setInputValue("#textarea-publish-custom-template", s.customTmpl || r.template)),
|
||
e(".modal-publish").modal();
|
||
}
|
||
function m(e) {
|
||
var n = A, i = n.newPublishAttributes(e);
|
||
if (void 0 !== i) {
|
||
var r = l.currentFile, s = x, a = h(r, i, s), u = r.frontMatter && r.frontMatter.title || r.title;
|
||
n.publish(i, r.frontMatter, u, a, function(e) {
|
||
void 0 === e && (i.provider = n, c.createLink(i, function() {
|
||
f(r, i);
|
||
}));
|
||
});
|
||
var d = {};
|
||
t.each(n.publishPreferencesInputIds, function(e) {
|
||
var t = document.getElementById("input-publish-" + e);
|
||
d[e] = "checkbox" == t.type ? t.checked : t.value;
|
||
}), d.format = i.format, d.customTmpl = i.customTmpl, o[n.providerId + ".publishPreferences"] = JSON.stringify(d);
|
||
}
|
||
}
|
||
var v = {}, b = t.chain(arguments).map(function(e) {
|
||
return e instanceof u && e.isPublishEnabled === !0 && [ e.providerId, e ];
|
||
}).compact().object().value();
|
||
t.each(a, function(e) {
|
||
t.each(i.retrieveIndexArray(e.fileIndex + ".publish"), function(t) {
|
||
try {
|
||
var n = JSON.parse(o[t]);
|
||
n.publishIndex = t;
|
||
var r = b[n.provider];
|
||
if (!r) throw new Error("Invalid provider ID: " + n.provider);
|
||
n.provider = r, e.publishLocations[t] = n;
|
||
} catch (a) {
|
||
s.onError(a), i.removeIndexFromArray(e.fileIndex + ".publish", t), o.removeItem(t);
|
||
}
|
||
});
|
||
}), v.applyTemplate = function(e, n, i) {
|
||
try {
|
||
var o = n && n.customTmpl || r.template;
|
||
return t.template(o, {
|
||
documentTitle: e.title,
|
||
documentMarkdown: e.content,
|
||
strippedDocumentMarkdown: e.content.substring(e.frontMatter ? e.frontMatter._frontMatter.length : 0),
|
||
documentHTML: i,
|
||
frontMatter: e.frontMatter,
|
||
publishAttributes: n
|
||
});
|
||
} catch (a) {
|
||
return s.onError(a), a.message;
|
||
}
|
||
};
|
||
var y, w, x, C = [];
|
||
s.addListener("onPreviewFinished", function(e) {
|
||
x = e;
|
||
});
|
||
var E = !1;
|
||
s.addListener("onOfflineChanged", function(e) {
|
||
E = e;
|
||
});
|
||
var k = !1;
|
||
v.publish = function() {
|
||
k !== !0 && E !== !0 && (k = !0, s.onPublishRunning(!0), y = l.currentFile, w = x,
|
||
C = t.values(y.publishLocations), p(function(e) {
|
||
k = !1, s.onPublishRunning(!1), void 0 === e && s.onPublishSuccess(y);
|
||
}));
|
||
};
|
||
var A, S = [ "<li>", ' <a href="#"', ' class="action-init-publish-<%= provider.providerId %>">', ' <i class="icon-provider-<%= provider.providerId %>"></i> <%= provider.providerName %>', " </a>", "</li>" ].join("");
|
||
return s.addListener("onReady", function() {
|
||
if (window.viewerMode === !1) {
|
||
var o = document.querySelector(".menu-panel .collapse-publish-on .nav"), a = t.reduce(b, function(e, n) {
|
||
return e + t.template(S, {
|
||
provider: n
|
||
});
|
||
}, "");
|
||
o.innerHTML = a, t.each(b, function(t) {
|
||
e(o.querySelector(".action-init-publish-" + t.providerId)).click(function() {
|
||
g(t);
|
||
}), e(".action-publish-" + t.providerId).click(function() {
|
||
g(t);
|
||
});
|
||
});
|
||
}
|
||
e(".action-process-publish").click(m);
|
||
var c = e(".publish-custom-template-collapse").collapse({
|
||
toggle: !1
|
||
}), u = e("#textarea-publish-custom-template"), h = t.debounce(function() {
|
||
c.collapse("template" == i.getInputRadio("radio-publish-format") ? "show" : "hide");
|
||
}, 100);
|
||
e("#checkbox-publish-custom-template").change(function() {
|
||
u.prop("disabled", !this.checked);
|
||
}), e("input:radio[name=radio-publish-format]").change(function() {
|
||
h();
|
||
}), e(".modal-publish").on("hidden.bs.modal", function() {
|
||
c.collapse("hide");
|
||
}), e(".action-download-md").click(function() {
|
||
var e = l.currentFile.content, t = l.currentFile.title;
|
||
i.saveAs(e, t + ".md");
|
||
}), e(".action-download-html").click(function() {
|
||
var e = l.currentFile.title;
|
||
i.saveAs(x, e + ".html");
|
||
}), e(".action-download-template").click(function() {
|
||
var e = l.currentFile, t = v.applyTemplate(e, void 0, x);
|
||
i.saveAs(t, e.title + (-1 === r.template.indexOf("documentHTML") ? ".md" : ".html"));
|
||
}), e(".action-download-pdf").click(function() {
|
||
var e, t = l.currentFile, o = v.applyTemplate(t, {
|
||
customTmpl: r.pdfTemplate
|
||
}, x), a = new d();
|
||
a.onRun(function() {
|
||
if (E === !0) return s.onError("Operation not available in offline mode."), a.chain(),
|
||
void 0;
|
||
var t = new XMLHttpRequest();
|
||
t.open("POST", n.HTMLTOPDF_URL, !0), t.setRequestHeader("Content-type", "application/x-www-form-urlencoded"),
|
||
t.setRequestHeader("page-size", r.pdfPageSize), t.responseType = "blob", t.onreadystatechange = function() {
|
||
4 == this.readyState && (200 == this.status ? e = this.response : s.onError("Error when trying to generate PDF: " + this.status),
|
||
a.chain());
|
||
}, t.send(o);
|
||
}), a.onSuccess(function() {
|
||
void 0 !== e && i.saveAs(e, l.currentFile.title + ".pdf");
|
||
}), a.enqueue();
|
||
});
|
||
}), s.onPublisherCreated(v), v;
|
||
}), define("providers/gplusProvider", [ "jquery", "underscore", "utils", "storage", "classes/Provider", "eventMgr", "helpers/googleHelper" ], function(e, t, n, i, o, r, s) {
|
||
function a(e, n) {
|
||
var i;
|
||
return t.find(e.thumbnails, function(e) {
|
||
var t = !1;
|
||
return e.url.replace(/^(.*[\/=]s)\d.*?(\/[^\/]+)?$/, function(e, o, r) {
|
||
i = o + n + (r || ""), t = !0;
|
||
}), t;
|
||
}), i;
|
||
}
|
||
function l() {
|
||
return c.thumbnails ? (n.resetModalInputs(), e(".modal-import-image img").prop("src", a(c, 128)),
|
||
n.setInputValue("#input-import-image-title", c.name), p && n.setInputValue("#input-import-image-size", p.size),
|
||
e(".modal-import-image").modal(), void 0) : (r.onError("Image " + c.name + " is not accessible."),
|
||
u(!0), void 0);
|
||
}
|
||
var c, u, d = "gplus", h = new o(d, "Google+"), p = n.retrieveIgnoreError(d + ".importImagePreferences");
|
||
return h.importImage = function(e) {
|
||
u = e, s.picker(function(t, n) {
|
||
return t || 0 === n.length ? (e(t), void 0) : (c = n[0], l(), void 0);
|
||
}, "img");
|
||
}, h.uploadImage = function(t, n, i) {
|
||
u = i, s.uploadImg(t, n, "default", function(n, o) {
|
||
return n || !o ? (i(n), void 0) : (c = {
|
||
name: t,
|
||
thumbnails: []
|
||
}, e(o).find("thumbnail").each(function() {
|
||
c.thumbnails.push({
|
||
url: e(this).attr("url")
|
||
});
|
||
}), l(), void 0);
|
||
});
|
||
}, r.addListener("onReady", function() {
|
||
e(".action-import-image").click(function() {
|
||
var e = n.getInputIntValue("#input-import-image-size", void 0, 0) || 0, t = n.getInputTextValue("#input-import-image-title"), o = a(c, e);
|
||
t && (o += ' "' + t + '"'), u(void 0, o), p = {}, e && (p.size = e), i[d + ".importImagePreferences"] = JSON.stringify(p);
|
||
});
|
||
}), h;
|
||
}), define("mediaImporter", [ "jquery", "underscore", "constants", "classes/Provider", "core", "eventMgr", "providers/gplusProvider" ], function(e, t, n, i, o, r) {
|
||
var s = {}, a = t.chain(arguments).map(function(e) {
|
||
return e instanceof i && [ e.providerId, e ];
|
||
}).compact().object().value();
|
||
return r.addListener("onReady", function() {
|
||
function i(i) {
|
||
var r = (i.dataTransfer || i.target).files, s = t.first(r);
|
||
if (s.name.match(/.(jpe?g|png|gif)$/i)) {
|
||
i.stopPropagation(), i.preventDefault();
|
||
var l = new FileReader();
|
||
l.onload = function(t) {
|
||
return function(n) {
|
||
var i = new Uint8Array(n.target.result);
|
||
a.gplus.uploadImage(t.name, i, function(t, n) {
|
||
if (!t) {
|
||
o.catchModal = !0, e("#wmd-image-button").click(), o.catchModal = !1;
|
||
var i = o.insertLinkCallback;
|
||
o.insertLinkCallback = void 0, i(n || null);
|
||
}
|
||
});
|
||
};
|
||
}(s);
|
||
var c = s.slice(0, n.IMPORT_IMG_MAX_CONTENT_SIZE);
|
||
l.readAsArrayBuffer(c);
|
||
}
|
||
}
|
||
function r(e) {
|
||
e.stopPropagation(), e.preventDefault(), e.dataTransfer.dropEffect = "copy";
|
||
}
|
||
t.each(a, function(t) {
|
||
e(".action-import-image-" + t.providerId).click(function() {
|
||
var e = o.insertLinkCallback;
|
||
o.insertLinkCallback = void 0, t.importImage(function(t, n) {
|
||
return t ? (e(null), void 0) : (e(n || null), void 0);
|
||
});
|
||
});
|
||
}), e("#wmd-input").each(function() {
|
||
this.addEventListener("dragover", r, !1), this.addEventListener("drop", i, !1);
|
||
});
|
||
}), s;
|
||
}), define("css/css", [], function() {
|
||
if ("undefined" == typeof window) return {
|
||
load: function(e, t, n) {
|
||
n();
|
||
}
|
||
};
|
||
var e = document.getElementsByTagName("head")[0], t = window.navigator.userAgent.match(/Trident\/([^ ;]*)|AppleWebKit\/([^ ;]*)|Opera\/([^ ;]*)|rv\:([^ ;]*)(.*?)Gecko\/([^ ;]*)|MSIE\s([^ ;]*)/) || 0, n = !1, i = !0;
|
||
t[1] || t[7] ? n = parseInt(t[1]) < 6 || parseInt(t[7]) <= 9 : t[2] ? i = !1 : t[4] && (n = parseInt(t[4]) < 18);
|
||
var o = {};
|
||
o.pluginBuilder = "./css-builder";
|
||
var r, s = function() {
|
||
r = document.createElement("style"), e.appendChild(r);
|
||
}, a = function(e, t) {
|
||
s();
|
||
var n = r.styleSheet || r.sheet;
|
||
if (n && n.addImport) n.addImport(e), r.onload = t; else {
|
||
r.textContent = '@import "' + e + '";';
|
||
var i = setInterval(function() {
|
||
try {
|
||
r.sheet.cssRules, clearInterval(i), t();
|
||
} catch (e) {}
|
||
}, 10);
|
||
}
|
||
}, l = function(t, n) {
|
||
var o = document.createElement("link");
|
||
if (o.type = "text/css", o.rel = "stylesheet", i) o.onload = function() {
|
||
o.onload = function() {}, setTimeout(n, 7);
|
||
}; else var r = setInterval(function() {
|
||
for (var e = 0; e < document.styleSheets.length; e++) {
|
||
var t = document.styleSheets[e];
|
||
if (t.href == o.href) return clearInterval(r), n();
|
||
}
|
||
}, 10);
|
||
o.href = t, e.appendChild(o);
|
||
};
|
||
return o.normalize = function(e, t) {
|
||
return ".css" == e.substr(e.length - 4, 4) && (e = e.substr(0, e.length - 4)), t(e);
|
||
}, o.load = function(e, t, i) {
|
||
(n ? a : l)(t.toUrl(e + ".css"), i);
|
||
}, o;
|
||
}), define("css", [ "css/css" ], function(e) {
|
||
return e;
|
||
}), requirejs.config({
|
||
waitSeconds: 0,
|
||
packages: [ {
|
||
name: "ace",
|
||
location: "bower-libs/ace/lib/ace",
|
||
main: "ace"
|
||
}, {
|
||
name: "css",
|
||
location: "bower-libs/require-css",
|
||
main: "css"
|
||
}, {
|
||
name: "less",
|
||
location: "bower-libs/require-less",
|
||
main: "less"
|
||
} ],
|
||
paths: {
|
||
jquery: "bower-libs/jquery/jquery",
|
||
underscore: "bower-libs/underscore/underscore",
|
||
crel: "bower-libs/crel/crel",
|
||
jgrowl: "bower-libs/jgrowl/jquery.jgrowl",
|
||
mousetrap: "bower-libs/mousetrap/mousetrap",
|
||
"mousetrap-record": "bower-libs/mousetrap/plugins/record/mousetrap-record",
|
||
toMarkdown: "bower-libs/to-markdown/src/to-markdown",
|
||
text: "bower-libs/requirejs-text/text",
|
||
mathjax: "../libs/MathJax/MathJax.js?config=TeX-AMS_HTML",
|
||
bootstrap: "bower-libs/bootstrap/dist/js/bootstrap",
|
||
requirejs: "bower-libs/requirejs/require",
|
||
"google-code-prettify": "bower-libs/google-code-prettify/src/prettify",
|
||
highlightjs: "libs/highlight/highlight.pack",
|
||
"jquery-waitforimages": "bower-libs/waitForImages/src/jquery.waitforimages",
|
||
"jquery-ui": "bower-libs/jquery-ui/ui/jquery-ui",
|
||
"jquery-ui-core": "bower-libs/jquery-ui/ui/jquery.ui.core",
|
||
"jquery-ui-widget": "bower-libs/jquery-ui/ui/jquery.ui.widget",
|
||
"jquery-ui-mouse": "bower-libs/jquery-ui/ui/jquery.ui.mouse",
|
||
"jquery-ui-draggable": "bower-libs/jquery-ui/ui/jquery.ui.draggable",
|
||
"jquery-ui-effect": "bower-libs/jquery-ui/ui/jquery.ui.effect",
|
||
"jquery-ui-effect-slide": "bower-libs/jquery-ui/ui/jquery.ui.effect-slide",
|
||
uilayout: "libs/layout",
|
||
FileSaver: "bower-libs/FileSaver/FileSaver",
|
||
stacktrace: "bower-libs/stacktrace/stacktrace",
|
||
"requirejs-text": "bower-libs/requirejs-text/text",
|
||
"bootstrap-tour": "bower-libs/bootstrap-tour/build/js/bootstrap-tour",
|
||
css_browser_selector: "bower-libs/css_browser_selector/css_browser_selector",
|
||
"jquery-mousewheel": "bower-libs/jquery-mousewheel/jquery.mousewheel",
|
||
"pagedown-ace": "bower-libs/pagedown-ace/Markdown.Editor",
|
||
"pagedown-light": "libs/Markdown.Editor.light",
|
||
"pagedown-extra": "bower-libs/pagedown-extra/Markdown.Extra",
|
||
"ace/requirejs/text": "libs/ace_text",
|
||
"ace/commands/default_commands": "libs/ace_commands",
|
||
"require-css": "bower-libs/require-css/css",
|
||
xregexp: "bower-libs/xregexp/xregexp-all",
|
||
yaml: "bower-libs/yaml.js",
|
||
"yaml.js": "bower-libs/yaml.js",
|
||
"yaml-js": "bower-libs/yaml.js/bin/yaml",
|
||
Typo: "bower-libs/Typo.js",
|
||
"Typo.js": "bower-libs/Typo.js",
|
||
css: "bower-libs/require-css/css",
|
||
"css-builder": "bower-libs/require-css/css-builder",
|
||
normalize: "bower-libs/require-css/normalize"
|
||
},
|
||
shim: {
|
||
underscore: {
|
||
exports: "_"
|
||
},
|
||
mathjax: [ "libs/mathjax_init" ],
|
||
jgrowl: {
|
||
deps: [ "jquery" ],
|
||
exports: "jQuery.jGrowl"
|
||
},
|
||
mousetrap: {
|
||
exports: "Mousetrap"
|
||
},
|
||
"yaml-js": {
|
||
exports: "YAML"
|
||
},
|
||
"bootstrap-record": [ "mousetrap" ],
|
||
toMarkdown: {
|
||
deps: [ "jquery" ],
|
||
exports: "toMarkdown"
|
||
},
|
||
stacktrace: {
|
||
exports: "printStackTrace"
|
||
},
|
||
FileSaver: {
|
||
exports: "saveAs"
|
||
},
|
||
highlightjs: {
|
||
exports: "hljs"
|
||
},
|
||
"bootstrap-tour": {
|
||
deps: [ "bootstrap" ],
|
||
exports: "Tour"
|
||
},
|
||
bootstrap: [ "jquery" ],
|
||
"jquery-waitforimages": [ "jquery" ],
|
||
"jquery-mousewheel": [ "jquery" ],
|
||
uilayout: [ "jquery-ui-effect-slide" ],
|
||
"jquery-ui-effect-slide": [ "jquery-ui-effect" ],
|
||
"jquery-ui-effect": [ "jquery-ui-draggable" ],
|
||
"jquery-ui-draggable": [ "jquery-ui-mouse" ],
|
||
"jquery-ui-mouse": [ "jquery-ui-widget" ],
|
||
"jquery-ui-widget": [ "jquery-ui-core" ],
|
||
"jquery-ui-core": [ "jquery" ],
|
||
"pagedown-extra": [ "pagedown-ace" ],
|
||
"pagedown-ace": [ "bower-libs/pagedown-ace/Markdown.Converter" ],
|
||
"pagedown-light": [ "bower-libs/pagedown-ace/Markdown.Converter" ]
|
||
}
|
||
});
|
||
|
||
try {
|
||
var test = "seLocalStorageCheck";
|
||
localStorage.setItem(test, test), localStorage.removeItem(test);
|
||
var obj = {};
|
||
Object.defineProperty(obj, "prop", {
|
||
get: function() {},
|
||
set: function() {}
|
||
});
|
||
} catch (e) {
|
||
throw alert("Your browser is not supported, sorry!"), e;
|
||
}
|
||
|
||
window.viewerMode = /(^| )viewer($| )/.test(document.body.className), window.lightMode = window.viewerMode || /_light_/.test(localStorage.mode) || /(\?|&)light($|&)/.test(location.search) || function(e) {
|
||
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0, 4)) ? !0 : void 0;
|
||
}(navigator.userAgent || navigator.vendor || window.opera), window.theme = localStorage.themeV3 || "default";
|
||
|
||
var themeModule = "less!themes/" + window.theme;
|
||
|
||
-1 !== window.baseDir.indexOf("-min") && (themeModule = "css!themes/" + window.theme),
|
||
require([ "jquery", "core", "eventMgr", "synchronizer", "publisher", "mediaImporter", "css", themeModule ], function(e, t, n) {
|
||
window.noStart || e(function() {
|
||
/_rtl_/.test(localStorage.mode) && e(document.body).addClass("rtl"), t.onReady(),
|
||
window.applicationCache && window.applicationCache.addEventListener("updateready", function() {
|
||
window.applicationCache.status === window.applicationCache.UPDATEREADY && (window.applicationCache.swapCache(),
|
||
n.onMessage("New version available!\nJust refresh the page to upgrade."));
|
||
}, !1);
|
||
});
|
||
}), define("main", function() {}); |